diff --git a/.github/helper/documentation.py b/.github/helper/documentation.py index 83346045f89..d07c880684e 100644 --- a/.github/helper/documentation.py +++ b/.github/helper/documentation.py @@ -10,6 +10,7 @@ WEBSITE_REPOS = [ DOCUMENTATION_DOMAINS = [ "docs.erpnext.com", + "docs.frappe.io", "frappeframework.com", ] diff --git a/.github/helper/install.sh b/.github/helper/install.sh index 915a4637999..30389734429 100644 --- a/.github/helper/install.sh +++ b/.github/helper/install.sh @@ -6,7 +6,7 @@ cd ~ || exit sudo apt update sudo apt remove mysql-server mysql-client -sudo apt install libcups2-dev redis-server mariadb-client-10.6 +sudo apt install libcups2-dev redis-server mariadb-client pip install frappe-bench @@ -44,13 +44,9 @@ fi install_whktml() { - if [ "$(lsb_release -rs)" = "22.04" ]; then - wget -O /tmp/wkhtmltox.deb https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb - sudo apt install /tmp/wkhtmltox.deb - else - echo "Please update this script to support wkhtmltopdf for $(lsb_release -ds)" - exit 1 - fi + wget -O /tmp/wkhtmltox.deb https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb + sudo apt install /tmp/wkhtmltox.deb + } install_whktml & wkpid=$! diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 00000000000..c043f44b6fe --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,4 @@ +changelog: + exclude: + labels: + - skip-release-notes diff --git a/.github/workflows/label-base-on-title.yml b/.github/workflows/label-base-on-title.yml new file mode 100644 index 00000000000..4e811edf99a --- /dev/null +++ b/.github/workflows/label-base-on-title.yml @@ -0,0 +1,30 @@ +name: "Auto-label PRs based on title" + +on: + pull_request_target: + types: [opened, reopened] + +jobs: + add-label-if-prefix-matches: + permissions: + contents: read + pull-requests: write + runs-on: ubuntu-latest + steps: + - name: Check PR title and add label if it matches prefixes + uses: actions/github-script@v7 + continue-on-error: true + with: + script: | + const title = context.payload.pull_request.title.toLowerCase(); + const prefixes = ['chore', 'ci', 'style', 'test', 'refactor']; + + // Check if the PR title starts with any of the prefixes + if (prefixes.some(prefix => title.startsWith(prefix))) { + await github.rest.issues.addLabels({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.payload.pull_request.number, + labels: ['skip-release-notes'] + }); + } diff --git a/.github/workflows/patch.yml b/.github/workflows/patch.yml index 21dd3d48794..ffaa6b5e7df 100644 --- a/.github/workflows/patch.yml +++ b/.github/workflows/patch.yml @@ -57,7 +57,7 @@ jobs: run: echo "127.0.0.1 test_site" | sudo tee -a /etc/hosts - name: Cache pip - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('**/*requirements.txt', '**/pyproject.toml') }} @@ -66,7 +66,7 @@ jobs: ${{ runner.os }}- - name: Cache node modules - uses: actions/cache@v2 + uses: actions/cache@v4 env: cache-name: cache-node-modules with: @@ -81,7 +81,7 @@ jobs: id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - - uses: actions/cache@v2 + - uses: actions/cache@v4 id: yarn-cache with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} diff --git a/.github/workflows/server-tests-mariadb.yml b/.github/workflows/server-tests-mariadb.yml index 720f0e0ed35..8f2dfe0c0e8 100644 --- a/.github/workflows/server-tests-mariadb.yml +++ b/.github/workflows/server-tests-mariadb.yml @@ -76,7 +76,7 @@ jobs: run: echo "127.0.0.1 test_site" | sudo tee -a /etc/hosts - name: Cache pip - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('**/*requirements.txt', '**/pyproject.toml') }} @@ -85,7 +85,7 @@ jobs: ${{ runner.os }}- - name: Cache node modules - uses: actions/cache@v2 + uses: actions/cache@v4 env: cache-name: cache-node-modules with: @@ -100,7 +100,7 @@ jobs: id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - - uses: actions/cache@v2 + - uses: actions/cache@v4 id: yarn-cache with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} diff --git a/.github/workflows/server-tests-postgres.yml b/.github/workflows/server-tests-postgres.yml index a6887066570..2470438aa7c 100644 --- a/.github/workflows/server-tests-postgres.yml +++ b/.github/workflows/server-tests-postgres.yml @@ -66,7 +66,7 @@ jobs: run: echo "127.0.0.1 test_site" | sudo tee -a /etc/hosts - name: Cache pip - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('**/*requirements.txt', '**/pyproject.toml') }} @@ -75,7 +75,7 @@ jobs: ${{ runner.os }}- - name: Cache node modules - uses: actions/cache@v2 + uses: actions/cache@v4 env: cache-name: cache-node-modules with: @@ -90,7 +90,7 @@ jobs: id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - - uses: actions/cache@v2 + - uses: actions/cache@v4 id: yarn-cache with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7375ca14727..13cbf66a5af 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,5 +1,5 @@ exclude: 'node_modules|.git' -default_stages: [commit] +default_stages: [pre-commit] fail_fast: false diff --git a/CODEOWNERS b/CODEOWNERS index 9077c6783c7..4a19fc871b5 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -4,21 +4,21 @@ # the repo. Unless a later match takes precedence, erpnext/accounts/ @deepeshgarg007 @ruthra-kumar -erpnext/assets/ @anandbaburajan @deepeshgarg007 +erpnext/assets/ @khushi8112 @deepeshgarg007 erpnext/regional @deepeshgarg007 @ruthra-kumar erpnext/selling @deepeshgarg007 @ruthra-kumar erpnext/support/ @deepeshgarg007 pos* -erpnext/buying/ @rohitwaghchaure @s-aga-r -erpnext/maintenance/ @rohitwaghchaure @s-aga-r -erpnext/manufacturing/ @rohitwaghchaure @s-aga-r -erpnext/quality_management/ @rohitwaghchaure @s-aga-r -erpnext/stock/ @rohitwaghchaure @s-aga-r -erpnext/subcontracting @rohitwaghchaure @s-aga-r +erpnext/buying/ @rohitwaghchaure +erpnext/maintenance/ @rohitwaghchaure +erpnext/manufacturing/ @rohitwaghchaure +erpnext/quality_management/ @rohitwaghchaure +erpnext/stock/ @rohitwaghchaure +erpnext/subcontracting @rohitwaghchaure erpnext/controllers/ @deepeshgarg007 @rohitwaghchaure erpnext/patches/ @deepeshgarg007 .github/ @deepeshgarg007 -pyproject.toml @phot0n +pyproject.toml @akhilnarang diff --git a/README.md b/README.md index 44bd7296881..3b703d97831 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ New passwords will be created for the ERPNext "Administrator" user, the MariaDB ## Learning and community -1. [Frappe School](https://frappe.school) - Learn Frappe Framework and ERPNext from the various courses by the maintainers or from the community. +1. [Frappe School](https://school.frappe.io) - Learn Frappe Framework and ERPNext from the various courses by the maintainers or from the community. 2. [Official documentation](https://docs.erpnext.com/) - Extensive documentation for ERPNext. 3. [Discussion Forum](https://discuss.erpnext.com/) - Engage with community of ERPNext users and service providers. 4. [Telegram Group](https://erpnext_public.t.me) - Get instant help from huge community of users. diff --git a/erpnext/__init__.py b/erpnext/__init__.py index 70fd15175cb..a48e84c7257 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -4,7 +4,7 @@ import inspect import frappe from frappe.utils.user import is_website_user -__version__ = "15.28.2" +__version__ = "15.54.3" def get_default_company(user=None): diff --git a/erpnext/accounts/deferred_revenue.py b/erpnext/accounts/deferred_revenue.py index a48ce9b4c63..a88764cf1b2 100644 --- a/erpnext/accounts/deferred_revenue.py +++ b/erpnext/accounts/deferred_revenue.py @@ -58,7 +58,7 @@ def build_conditions(process_type, account, company): ) if account: - conditions += f"AND {deferred_account}='{account}'" + conditions += f"AND {deferred_account}={frappe.db.escape(account)}" elif company: conditions += f"AND p.company = {frappe.db.escape(company)}" diff --git a/erpnext/accounts/doctype/account/account.json b/erpnext/accounts/doctype/account/account.json index e87b59ea9cb..5f906b54aaa 100644 --- a/erpnext/accounts/doctype/account/account.json +++ b/erpnext/accounts/doctype/account/account.json @@ -121,14 +121,14 @@ "label": "Account Type", "oldfieldname": "account_type", "oldfieldtype": "Select", - "options": "\nAccumulated Depreciation\nAsset Received But Not Billed\nBank\nCash\nChargeable\nCapital Work in Progress\nCost of Goods Sold\nCurrent Asset\nCurrent Liability\nDepreciation\nDirect Expense\nDirect Income\nEquity\nExpense Account\nExpenses Included In Asset Valuation\nExpenses Included In Valuation\nFixed Asset\nIncome Account\nIndirect Expense\nIndirect Income\nLiability\nPayable\nReceivable\nRound Off\nStock\nStock Adjustment\nStock Received But Not Billed\nService Received But Not Billed\nTax\nTemporary", + "options": "\nAccumulated Depreciation\nAsset Received But Not Billed\nBank\nCash\nChargeable\nCapital Work in Progress\nCost of Goods Sold\nCurrent Asset\nCurrent Liability\nDepreciation\nDirect Expense\nDirect Income\nEquity\nExpense Account\nExpenses Included In Asset Valuation\nExpenses Included In Valuation\nFixed Asset\nIncome Account\nIndirect Expense\nIndirect Income\nLiability\nPayable\nReceivable\nRound Off\nRound Off for Opening\nStock\nStock Adjustment\nStock Received But Not Billed\nService Received But Not Billed\nTax\nTemporary", "search_index": 1 }, { "description": "Rate at which this tax is applied", "fieldname": "tax_rate", "fieldtype": "Float", - "label": "Rate", + "label": "Tax Rate", "oldfieldname": "tax_rate", "oldfieldtype": "Currency" }, @@ -191,7 +191,7 @@ "idx": 1, "is_tree": 1, "links": [], - "modified": "2024-06-27 16:23:04.444354", + "modified": "2024-08-19 15:19:11.095045", "modified_by": "Administrator", "module": "Accounts", "name": "Account", diff --git a/erpnext/accounts/doctype/account/account.py b/erpnext/accounts/doctype/account/account.py index 1a5ee36b95a..3e026e104ad 100644 --- a/erpnext/accounts/doctype/account/account.py +++ b/erpnext/accounts/doctype/account/account.py @@ -4,7 +4,7 @@ import frappe from frappe import _, throw -from frappe.utils import cint, cstr +from frappe.utils import add_to_date, cint, cstr, pretty_date from frappe.utils.nestedset import NestedSet, get_ancestors_of, get_descendants_of import erpnext @@ -60,6 +60,7 @@ class Account(NestedSet): "Payable", "Receivable", "Round Off", + "Round Off for Opening", "Stock", "Stock Adjustment", "Stock Received But Not Billed", @@ -103,14 +104,12 @@ class Account(NestedSet): self.name = get_autoname_with_number(self.account_number, self.account_name, self.company) def validate(self): - from erpnext.accounts.utils import validate_field_number - if frappe.local.flags.allow_unverified_charts: return self.validate_parent() self.validate_parent_child_account_type() self.validate_root_details() - validate_field_number("Account", self.name, self.account_number, self.company, "account_number") + self.validate_account_number() self.validate_group_or_ledger() self.set_root_and_report_type() self.validate_mandatory() @@ -311,6 +310,22 @@ class Account(NestedSet): if frappe.db.get_value("GL Entry", {"account": self.name}): frappe.throw(_("Currency can not be changed after making entries using some other currency")) + def validate_account_number(self, account_number=None): + if not account_number: + account_number = self.account_number + + if account_number: + account_with_same_number = frappe.db.get_value( + "Account", + {"account_number": account_number, "company": self.company, "name": ["!=", self.name]}, + ) + if account_with_same_number: + frappe.throw( + _("Account Number {0} already used in account {1}").format( + account_number, account_with_same_number + ) + ) + def create_account_for_child_company(self, parent_acc_name_map, descendants, parent_acc_name): for company in descendants: company_bold = frappe.bold(company) @@ -464,21 +479,9 @@ def get_account_autoname(account_number, account_name, company): return " - ".join(parts) -def validate_account_number(name, account_number, company): - if account_number: - account_with_same_number = frappe.db.get_value( - "Account", {"account_number": account_number, "company": company, "name": ["!=", name]} - ) - if account_with_same_number: - frappe.throw( - _("Account Number {0} already used in account {1}").format( - account_number, account_with_same_number - ) - ) - - @frappe.whitelist() def update_account_number(name, account_name, account_number=None, from_descendant=False): + _ensure_idle_system() account = frappe.get_cached_doc("Account", name) if not account: return @@ -499,7 +502,7 @@ def update_account_number(name, account_name, account_number=None, from_descenda "name", ) - if old_name: + if old_name and not from_descendant: # same account in parent company exists allow_child_account_creation = _("Allow Account Creation Against Child Company") @@ -517,7 +520,7 @@ def update_account_number(name, account_name, account_number=None, from_descenda frappe.throw(message, title=_("Rename Not Allowed")) - validate_account_number(name, account_number, account.company) + account.validate_account_number(account_number) if account_number: frappe.db.set_value("Account", name, "account_number", account_number.strip()) else: @@ -540,6 +543,7 @@ def update_account_number(name, account_name, account_number=None, from_descenda @frappe.whitelist() def merge_account(old, new): + _ensure_idle_system() # Validate properties before merging new_account = frappe.get_cached_doc("Account", new) old_account = frappe.get_cached_doc("Account", old) @@ -593,3 +597,31 @@ def sync_update_account_number_in_child( for d in frappe.db.get_values("Account", filters=filters, fieldname=["company", "name"], as_dict=True): update_account_number(d["name"], account_name, account_number, from_descendant=True) + + +def _ensure_idle_system(): + # Don't allow renaming if accounting entries are actively being updated, there are two main reasons: + # 1. Correctness: It's next to impossible to ensure that renamed account is not being used *right now*. + # 2. Performance: Renaming requires locking out many tables entirely and severely degrades performance. + + if frappe.flags.in_test: + return + + last_gl_update = None + try: + # We also lock inserts to GL entry table with for_update here. + last_gl_update = frappe.db.get_value("GL Entry", {}, "modified", for_update=True, wait=False) + except frappe.QueryTimeoutError: + # wait=False fails immediately if there's an active transaction. + last_gl_update = add_to_date(None, seconds=-1) + + if not last_gl_update: + return + + if last_gl_update > add_to_date(None, minutes=-5): + frappe.throw( + _( + "Last GL Entry update was done {}. This operation is not allowed while system is actively being used. Please wait for 5 minutes before retrying." + ).format(pretty_date(last_gl_update)), + title=_("System In Use"), + ) diff --git a/erpnext/accounts/doctype/account/account_tree.js b/erpnext/accounts/doctype/account/account_tree.js index 49d5396c0f3..a61fcb4f530 100644 --- a/erpnext/accounts/doctype/account/account_tree.js +++ b/erpnext/accounts/doctype/account/account_tree.js @@ -237,19 +237,22 @@ frappe.treeview_settings["Account"] = { }, post_render: function (treeview) { frappe.treeview_settings["Account"].treeview["tree"] = treeview.tree; - treeview.page.set_primary_action( - __("New"), - function () { - let root_company = treeview.page.fields_dict.root_company.get_value(); - - if (root_company) { - frappe.throw(__("Please add the account to root level Company - {0}"), [root_company]); - } else { - treeview.new_node(); - } - }, - "add" - ); + if (treeview.can_create) { + treeview.page.set_primary_action( + __("New"), + function () { + let root_company = treeview.page.fields_dict.root_company.get_value(); + if (root_company) { + frappe.throw(__("Please add the account to root level Company - {0}"), [ + root_company, + ]); + } else { + treeview.new_node(); + } + }, + "add" + ); + } }, toolbar: [ { 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 2768f321ff6..1c81f07cee3 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 @@ -116,6 +116,7 @@ def identify_is_group(child): return is_group +@frappe.whitelist() def get_chart(chart_template, existing_company=None): chart = {} if existing_company: diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/bf_plan_comptable.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/bf_plan_comptable.json new file mode 100644 index 00000000000..b7fcc55bd42 --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/bf_plan_comptable.json @@ -0,0 +1,1919 @@ +{ + "country_code": "bf", + "name": "Syscohada - Plan Comptable", + "tree": { + "1-Comptes de ressources durables": { + "10-Capital": { + "101-Capital social": { + "1011-Capital souscrit, non appel\u00e9": {}, + "1012-Capital souscrit, appel\u00e9, non vers\u00e9": {}, + "1013-Capital souscrit, appel\u00e9, vers\u00e9, non amorti": {}, + "1014-Capital souscrit, appel\u00e9, vers\u00e9, amorti": {}, + "1018-Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": {} + }, + "102-Capital par dotation": { + "1021-Dotation initiale": {}, + "1022-Dotations compl\u00e9mentaires": {}, + "1028-Autres dotations": {} + }, + "103-Capital personnel": {}, + "104-Compte de l\u2019exploitant": { + "1041-Apports temporaires": {}, + "1042-Op\u00e9rations courantes": {}, + "1043-R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": {}, + "1047-Pr\u00e9l\u00e8vements d\u2019autoconsommation": {}, + "1048-Autres pr\u00e9l\u00e8vements": {} + }, + "105-Primes li\u00e9es au capital social": { + "1051-Primes d\u2019\u00e9mission": {}, + "1052-Primes d\u2019apport": {}, + "1053-Primes de fusion": {}, + "1054-Primes de conversion": {}, + "1058-Autres primes": {} + }, + "106-\u00c9carts de r\u00e9\u00e9valuation": { + "1061-\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": {}, + "1062-\u00c9carts de r\u00e9\u00e9valuation libre": {} + }, + "109-Apporteurs, capital souscrit, non appel\u00e9": {} + }, + "11-R\u00e9serves": { + "111-R\u00e9serve l\u00e9gale": {}, + "112-R\u00e9serves statutaires ou contractuelles": {}, + "113-R\u00e9serves r\u00e9glement\u00e9es": { + "1131-R\u00e9serves de plus-values nettes \u00e0 long terme": {}, + "1132-R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {}, + "1133-R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": {}, + "1134-R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": {}, + "1135-Autres r\u00e9serves r\u00e9glement\u00e9es": {} + }, + "118-Autres r\u00e9serves": { + "1181-R\u00e9serves facultatives": {}, + "1188-R\u00e9serves diverses": {} + } + }, + "12-Report \u00e0 nouveau": { + "121-Report \u00e0 nouveau cr\u00e9diteur": {}, + "129-Report \u00e0 nouveau d\u00e9biteur": { + "1291-Perte nette \u00e0 reporter": {}, + "1292-Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": {} + } + }, + "13-R\u00e9sultat net de l\u2019exercice": { + "130-R\u00e9sultat en instance d\u2019affectation": { + "1301-R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": {}, + "1309-R\u00e9sultat en instance d\u2019affectation : perte": {} + }, + "131-R\u00e9sultat net : b\u00e9n\u00e9fice": {}, + "132-Marge commerciale (MC)": {}, + "133-Valeur ajout\u00e9e (VA)": {}, + "134-Exc\u00e9dent brut d\u2019exploitation (EBE)": {}, + "135-R\u00e9sultat d\u2019exploitation (RE)": {}, + "136-R\u00e9sultat financier (RF)": {}, + "137-R\u00e9sultat des activit\u00e9s ordinaires (RAO)": {}, + "138-R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "1381-R\u00e9sultat de fusion": {}, + "1382-R\u00e9sultat d\u2019apport partiel d\u2019actif": {}, + "1383-R\u00e9sultat de scission": {}, + "1384-R\u00e9sultat de liquidation": {} + }, + "139-R\u00e9sultat net : perte": {} + }, + "14-Subventions d\u2019investissement": { + "141-Subventions d\u2019\u00e9quipement": { + "1411-\u00c9tat": {}, + "1412-R\u00e9gions": {}, + "1413-D\u00e9partements": {}, + "1414-Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": {}, + "1415-Entit\u00e9s publiques ou mixtes": {}, + "1416-Entit\u00e9s et organismes priv\u00e9s": {}, + "1417-Organismes internationaux": {}, + "1418-Autres": {} + }, + "148-Autres subventions d\u2019investissement": {} + }, + "15-Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "151-Amortissements d\u00e9rogatoires": {}, + "152-Plus-values de cession \u00e0 r\u00e9investir": {}, + "153-Fonds r\u00e9glement\u00e9s": { + "1531-Fonds National": {}, + "1532-Pr\u00e9l\u00e8vement pour le Budget": {} + }, + "154-Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": {}, + "155-Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "1551-Reconstitution des gisements miniers et p\u00e9troliers": {} + }, + "156-Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "1561-Hausse de prix": {}, + "1562-Fluctuation des cours": {} + }, + "157-Provisions pour investissement": {}, + "158-Autres provisions et fonds r\u00e9glement\u00e9s": {} + }, + "16-Emprunts et dettes assimil\u00e9es": { + "161-Emprunts obligataires": { + "1611-Emprunts obligataires ordinaires": {}, + "1612-Emprunts obligataires convertibles en actions": {}, + "1613-Emprunts obligataires remboursables en actions": {}, + "1618-Autres emprunts obligataires": {} + }, + "162-Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "163-Avances re\u00e7ues de l\u2019\u00c9tat": {}, + "164-Avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "165-D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "1651-D\u00e9p\u00f4ts": {}, + "1652-Cautionnements": {} + }, + "166-Int\u00e9r\u00eats courus": { + "1661-Sur emprunts obligataires": {}, + "1662-Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "1663-Sur avances re\u00e7ues de l\u2019\u00c9tat": {}, + "1664-Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "1665-Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": {}, + "1667-Sur avances assorties de conditions particuli\u00e8res": {}, + "1668-Sur autres emprunts et dettes": {} + }, + "167-Avances assorties de conditions particuli\u00e8res": { + "1671-Avances bloqu\u00e9es pour augmentation du capital": {}, + "1672-Avances conditionn\u00e9es par l\u2019\u00c9tat": {}, + "1673-Avances conditionn\u00e9es par les autres organismes africains": {}, + "1674-Avances conditionn\u00e9es par les organismes internationaux": {} + }, + "168-Autres emprunts et dettes": { + "1681-Rentes viag\u00e8res capitalis\u00e9es": {}, + "1682-Billets de fonds": {}, + "1683-Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": {}, + "1684-Emprunts participatifs": {}, + "1685-Participation des travailleurs aux b\u00e9n\u00e9fices": {}, + "1686-Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": {} + } + }, + "17-Dettes de location acquisition": { + "172-Dettes de location acquisition / cr\u00e9dit bail immobilier": {}, + "173-Dettes de location acquisition / cr\u00e9dit bail mobilier": {}, + "174-Dettes de location acquisition / location de vente": {}, + "176-Int\u00e9r\u00eats courus": { + "1762-Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": {}, + "1763-Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": {}, + "1764-Sur dettes de location acquisition / location-vente": {}, + "1768-Sur autres dettes de location acquisition": {} + }, + "178-Autres dettes de location acquisition": {} + }, + "18-Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "181-Dettes li\u00e9es \u00e0 des participations": { + "1811-Dettes li\u00e9es \u00e0 des participations (groupe)": {}, + "1812-Dettes li\u00e9es \u00e0 des participations (hors groupe)": {} + }, + "182-Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "183-Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": {}, + "184-Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "185-Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "186-Comptes de liaison charges": {}, + "187-Comptes de liaison produits": {}, + "188-Comptes de liaison des soci\u00e9t\u00e9s en participation": {} + }, + "19-Provisions pour risques et charges": { + "191-Provisions pour litiges": {}, + "192-Provisions pour garanties donn\u00e9es aux clients": {}, + "193-Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": {}, + "194-Provisions pour pertes de change": {}, + "195-Provisions pour imp\u00f4ts": {}, + "196-Provisions pour pensions et obligations similaires": { + "1961-Provisions pour pensions et obligations similaires engagement de retraite": {}, + "1962-Actif du r\u00e9gime de retraite": {} + }, + "197-Provisions pour restructuration": {}, + "198-Autres provisions pour risques et charges": { + "1981-Provisions pour amendes et p\u00e9nalit\u00e9s": {}, + "1983-Provisions pour propre assureur": {}, + "1984-Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "1985-Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": {}, + "1988-Provisions pour divers risques et charges": {} + } + }, + "root_type": "Equity" + }, + "2-Comptes d\u2019actif immobilis\u00e9": { + "21-Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "211-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "212-Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "2121-Brevets": { + "account_type": "Fixed Asset" + }, + "2122-Licences": { + "account_type": "Fixed Asset" + }, + "2123-Concessions de service public": { + "account_type": "Fixed Asset" + }, + "2128-Autres concessions et droits similaires": { + "account_type": "Fixed Asset" + } + }, + "213-Logiciels et sites internet": { + "account_type": "Fixed Asset", + "2131-Logiciels": { + "account_type": "Fixed Asset" + }, + "2132-Sites internet": { + "account_type": "Fixed Asset" + } + }, + "214-Marques": { + "account_type": "Fixed Asset" + }, + "215-Fonds commercial": { + "account_type": "Fixed Asset" + }, + "216-Droit au bail": { + "account_type": "Fixed Asset" + }, + "217-Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset" + }, + "218-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "2181-Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset" + }, + "2182-Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset" + }, + "2183-Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset" + }, + "2184-Co\u00fbts des franchises": { + "account_type": "Fixed Asset" + }, + "2188-Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset" + } + }, + "219-Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "2191-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "2193-Logiciels et internet": { + "account_type": "Fixed Asset" + }, + "2198-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset" + } + } + }, + "22-Terrains": { + "account_type": "Fixed Asset", + "221-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "2211-Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset" + }, + "2212-Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset" + }, + "2218-Autres terrains": { + "account_type": "Fixed Asset" + } + }, + "222-Terrains nus": { + "account_type": "Fixed Asset", + "2221-Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset" + }, + "2228-Autres terrains nus": { + "account_type": "Fixed Asset" + } + }, + "223-Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "2231-Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset" + }, + "2232-Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset" + }, + "2234-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset" + }, + "2235-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset" + }, + "2238-Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset" + } + }, + "224-Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "2241-Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset" + }, + "2245-Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset" + }, + "2248-Autres travaux": { + "account_type": "Fixed Asset" + } + }, + "225-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "2251-Carri\u00e8res": { + "account_type": "Fixed Asset" + } + }, + "226-Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "2261-Parkings": { + "account_type": "Fixed Asset" + } + }, + "227-Terrains mis en concession": { + "account_type": "Fixed Asset" + }, + "228-Autres terrains": { + "account_type": "Fixed Asset", + "2281-Terrains immeubles de placement": { + "account_type": "Fixed Asset" + }, + "2285-Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset" + }, + "2286-Terrains de location acquisition": { + "account_type": "Fixed Asset" + }, + "2288-Divers terrains": { + "account_type": "Fixed Asset" + } + }, + "229-Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "2291-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset" + }, + "2292-Terrains nus": { + "account_type": "Fixed Asset" + }, + "2295-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset" + }, + "2298-Autres terrains": { + "account_type": "Fixed Asset" + } + } + }, + "23-B\u00e2timents, installations techniques et agencements": { + "231-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "2311-B\u00e2timents industriels": {}, + "2312-B\u00e2timents agricoles": {}, + "2313-B\u00e2timents administratifs et commerciaux": {}, + "2314-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2315-B\u00e2timents immeubles de placement": {}, + "2316-B\u00e2timents de location acquisition": {} + }, + "232-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "2321-B\u00e2timents industriels": {}, + "2322-B\u00e2timents agricoles": {}, + "2323-B\u00e2timents administratifs et commerciaux": {}, + "2324-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2325-B\u00e2timents immeubles de placement": {}, + "2326-B\u00e2timents de location acquisition": {} + }, + "233-Ouvrages d\u2019infrastructure": { + "2331-Voies de terre": {}, + "2332-Voies de fer": {}, + "2333-Voies d\u2019eau": {}, + "2334-Barrages, Digues": {}, + "2335-Pistes d\u2019a\u00e9rodrome": {}, + "2338-Autres ouvrages d\u2019infrastructures": {} + }, + "234-Am\u00e9nagements, agencements et installations techniques": { + "2341-Installations complexes sp\u00e9cialis\u00e9es sur sol propre": {}, + "2342-Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": {}, + "2343-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": {}, + "2344-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": {}, + "2345-Am\u00e9nagements et agencements des b\u00e2timents": {} + }, + "235-Am\u00e9nagements de bureaux": { + "2351-Installations g\u00e9n\u00e9rales": {}, + "2358-Autres am\u00e9nagements de bureaux": {} + }, + "237-B\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "238-Autres installations et agencements": {}, + "239-B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "2391-B\u00e2timents en cours": {}, + "2392-Installations en cours": {}, + "2393-Ouvrages d\u2019infrastructure en cours": {}, + "2394-Am\u00e9nagements et agencements et installations techniques en cours": {}, + "2395-Am\u00e9nagements de bureaux en cours": {}, + "2398-Autres installations et agencements en cours": {} + } + }, + "24-Mat\u00e9riel, mobilier et actifs biologiques": { + "241-Mat\u00e9riel et outillage industriel et commercial": { + "2411-Mat\u00e9riel industriel": {}, + "2412-Outillage industriel": {}, + "2413-Mat\u00e9riel commercial": {}, + "2414-Outillage commercial": {}, + "2416-Mat\u00e9riel & outillage industriel et commercial de location-acquisition": {} + }, + "242-Mat\u00e9riel et outillage agricole": { + "2421-Mat\u00e9riel agricole": {}, + "2422-Outillage agricole": {}, + "2426-Mat\u00e9riel & outillage agricole de location-acquisition": {} + }, + "243-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "244-Mat\u00e9riel et mobilier": { + "2441-Mat\u00e9riel de bureau": {}, + "2442-Mat\u00e9riel informatique": {}, + "2443-Mat\u00e9riel bureautique": {}, + "2444-Mobilier de bureau": {}, + "2445-Mat\u00e9riel et mobilier immeubles de placement": {}, + "2446-Mat\u00e9riel et mobilier de location acquisition": {}, + "2447-Mat\u00e9riel et mobilier des logements du personnel": {} + }, + "245-Mat\u00e9riel de transport": { + "2451-Mat\u00e9riel automobile": {}, + "2452-Mat\u00e9riel ferroviaire": {}, + "2453-Mat\u00e9riel fluvial, lagunaire": {}, + "2454-Mat\u00e9riel naval": {}, + "2455-Mat\u00e9riel a\u00e9rien": {}, + "2456-Mat\u00e9riel de transport de location-acquisition": {}, + "2457-Mat\u00e9riel hippomobile": {}, + "2458-Autres mat\u00e9riels de transport": {} + }, + "246-Actifs biologiques": { + "2461-Cheptel, animaux de trait": {}, + "2462-Cheptel, animaux reproducteurs": {}, + "2463-Animaux de garde": {}, + "2465-Plantations agricoles": {}, + "2468-Autres actifs biologiques": {} + }, + "247-Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "2471-Agencements et am\u00e9nagements du mat\u00e9riel": {}, + "2472-Agencements et am\u00e9nagements des actifs biologiques": {}, + "2478-Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": {} + }, + "248-Autres mat\u00e9riels et mobiliers": { + "2481-Collections et \u0153uvres d\u2019art": {}, + "2488-Divers mat\u00e9riels mobiliers": {} + }, + "249-Mat\u00e9riels et actifs biologiques en cours": { + "2491-Mat\u00e9riel et outillage industriel et commercial": {}, + "2492-Mat\u00e9riel et outillage agricole": {}, + "2493-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2494-Mat\u00e9riel et mobilier de bureau": {}, + "2495-Mat\u00e9riel de transport": {}, + "2496-Actifs biologiques": {}, + "2497-Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": {}, + "2498-Autres mat\u00e9riels et actifs biologiques en cours": {} + } + }, + "25-Avances et acomptes vers\u00e9s sur immobilisations": { + "251-Avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "252-Avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "26-Titres de participation": { + "261-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "262-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "263-Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "265-Participations dans des organismes professionnels": {}, + "266-Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {}, + "268-Autres titres de participation": {} + }, + "27-Autres immobilisations financi\u00e8res": { + "271-Pr\u00eats et cr\u00e9ances": { + "2711-Pr\u00eats participatifs": {}, + "2712-Pr\u00eats aux associ\u00e9s": {}, + "2713-Billets de fonds": {}, + "2714-Titres pr\u00eat\u00e9s": {}, + "2718-Autres pr\u00eats et cr\u00e9ances": {} + }, + "272-Pr\u00eats au personnel": { + "2721-Pr\u00eats immobiliers": {}, + "2722-Pr\u00eats mobiliers et d\u2019installation": {}, + "2728-Autres pr\u00eats au personnel": {} + }, + "273-Cr\u00e9ances sur l\u2019\u00c9tat": { + "2731-Retenues de garantie": {}, + "2733-Fonds r\u00e9glement\u00e9": {}, + "2734-Cr\u00e9ances sur le conc\u00e9dant": {}, + "2738-Autres cr\u00e9ances sur l\u2019\u00c9tat": {} + }, + "274-Titres immobilis\u00e9s": { + "2741-Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": {}, + "2742-Titres participatifs": {}, + "2743-Certificats d\u2019investissement": {}, + "2744-Parts de fonds commun de placement (FCP)": {}, + "2745-Obligations": {}, + "2746-Actions ou parts propres": {}, + "2748-Autres titres immobilis\u00e9s": {} + }, + "275-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "2751-D\u00e9p\u00f4ts pour loyers d\u2019avance": {}, + "2752-D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": {}, + "2753-D\u00e9p\u00f4ts pour l\u2019eau": {}, + "2754-D\u00e9p\u00f4ts pour le gaz": {}, + "2755-D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": {}, + "2756-Cautionnements sur march\u00e9s publics": {}, + "2757-Cautionnements sur autres op\u00e9rations": {}, + "2758-Autres d\u00e9p\u00f4ts et cautionnements": {} + }, + "276-Int\u00e9r\u00eats courus": { + "2761-Pr\u00eats et cr\u00e9ances non commerciales": {}, + "2762-Pr\u00eats au personnel": {}, + "2763-Cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2764-Titres immobilis\u00e9s": {}, + "2765-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2767-Cr\u00e9ances rattach\u00e9es \u00e0 des participations": {}, + "2768-Immobilisations financi\u00e8res diverses": {} + }, + "277-Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "2771-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": {}, + "2772-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": {}, + "2773-Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "2774-Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {} + }, + "278-Immobilisations financi\u00e8res diverses": { + "2781-Cr\u00e9ances diverses groupe": {}, + "2782-Cr\u00e9ances diverses hors groupe": {}, + "2784-Banques d\u00e9p\u00f4ts \u00e0 terme": {}, + "2785-Or et m\u00e9taux pr\u00e9cieux": {}, + "2788-Autres immobilisations financi\u00e8res": {} + } + }, + "28-Amortissements": { + "account_type": "Accumulated Depreciation", + "281-Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "2811-Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation" + }, + "2812-Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation" + }, + "2813-Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation" + }, + "2814-Amortissements des marques": { + "account_type": "Accumulated Depreciation" + }, + "2815-Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation" + }, + "2816-Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation" + }, + "2817-Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation" + }, + "2818-Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation" + } + }, + "282-Amortissements des terrains": { + "2824-Amortissements des travaux de mise en valeur des terrains": {} + }, + "283-Amortissements des b\u00e2timents, installations techniques et agencements": { + "2831-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2832-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2833-Amortissements des ouvrages d\u2019infrastructure": {}, + "2834-Amortissements des am\u00e9nagements, agencements et installations techniques": {}, + "2835-Amortissements des am\u00e9nagements de bureaux": {}, + "2837-Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2838-Amortissements des autres installations et agencements": {} + }, + "284-Amortissements du mat\u00e9riel": { + "2841-Amortissements du mat\u00e9riel et outillage industriel et commercial": {}, + "2842-Amortissements du mat\u00e9riel et outillage agricole": {}, + "2843-Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2844-Amortissements du mat\u00e9riel et mobilier": {}, + "2845-Amortissements du mat\u00e9riel de transport": {}, + "2846-Amortissements des actifs biologiques": {}, + "2847-Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2848-Amortissements des autres mat\u00e9riels": {} + } + }, + "29-D\u00e9pr\u00e9ciations des immobilisations": { + "291-D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "2911-D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": {}, + "2912-D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": {}, + "2913-D\u00e9pr\u00e9ciations des logiciels et sites internet": {}, + "2914-D\u00e9pr\u00e9ciations des marques": {}, + "2915-D\u00e9pr\u00e9ciations du fonds commercial": {}, + "2916-D\u00e9pr\u00e9ciations du droit au bail": {}, + "2917-D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": {}, + "2918-D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": {}, + "2919-D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": {} + }, + "292-D\u00e9pr\u00e9ciations des terrains": { + "2921-D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": {}, + "2922-D\u00e9pr\u00e9ciations des terrains nus": {}, + "2923-D\u00e9pr\u00e9ciations des terrains b\u00e2tis": {}, + "2924-D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": {}, + "2925-D\u00e9pr\u00e9ciations des terrains de gisement": {}, + "2926-D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": {}, + "2927-D\u00e9pr\u00e9ciations des terrains mis en concession": {}, + "2928-D\u00e9pr\u00e9ciations des autres terrains": {}, + "2929-D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": {} + }, + "293-D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "2931-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2932-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2933-D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": {}, + "2934-D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": {}, + "2935-D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": {}, + "2937-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2938-D\u00e9pr\u00e9ciations des autres installations et agencements": {}, + "2939-D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": {} + }, + "294-D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "2941-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": {}, + "2942-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": {}, + "2943-D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2944-D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": {}, + "2945-D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": {}, + "2946-D\u00e9pr\u00e9ciations des actifs biologiques": {}, + "2947-D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2948-D\u00e9pr\u00e9ciations des autres mat\u00e9riels": {}, + "2949-D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": {} + }, + "295-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "2951-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "2952-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "296-D\u00e9pr\u00e9ciations des titres de participation": { + "2961-D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "2962-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "2963-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "2965-D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": {}, + "2966-D\u00e9pr\u00e9ciations des parts dans des GIE": {}, + "2968-D\u00e9pr\u00e9ciations des autres titres de participation": {} + }, + "297-D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "2971-D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": {}, + "2972-D\u00e9pr\u00e9ciations des pr\u00eats au personnel": {}, + "2973-D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2974-D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": {}, + "2975-D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2977-D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": {}, + "2978-D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": {} + } + }, + "root_type": "Asset" + }, + "3-Comptes de Stocks": { + "31-Marchandises": { + "311-Marchandises A": { + "3111-Marchandises A1": {}, + "3112-Marchandises A2": {} + }, + "312-Marchandises B": { + "3121-Marchandises B1": {}, + "3122-Marchandises B2": {} + }, + "313-Actifs biologiques": { + "3131-Animaux": {}, + "3132-V\u00e9g\u00e9taux": {} + }, + "318-Marchandises hors activit\u00e9s ordinaires (HAO)": {} + }, + "32-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "321-Mati\u00e8res A": {}, + "322-Mati\u00e8res B": {}, + "323-Fournitures (A, B)": {} + }, + "33-Autres approvisionnements": { + "331-Mati\u00e8res consommables": {}, + "332-Fournitures d\u2019atelier et d\u2019usine": {}, + "333-Fournitures de magasin": {}, + "334-Fournitures de bureau": {}, + "335-Emballages": { + "3351-Emballages perdus": {}, + "3352-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "3353-Emballages \u00e0 usage mixte": {}, + "3358-Autres emballages": {} + }, + "338-Autres mati\u00e8res": {} + }, + "34-Produits en cours": { + "341-Produits en cours": { + "3411-Produits en cours P1": {}, + "3412-Produits en cours P2": {} + }, + "342-Travaux en cours": { + "3421-Travaux en cours T1": {}, + "3422-Travaux en cours T2": {} + }, + "343-Produits interm\u00e9diaires en cours": { + "3431-Produits interm\u00e9diaires A": {}, + "3432-Produits interm\u00e9diaires B": {} + }, + "344-Produits r\u00e9siduels en cours": { + "3441-Produits r\u00e9siduels A": {}, + "3442-Produits r\u00e9siduels B": {} + }, + "345-Actifs biologiques en cours": { + "3451-Animaux": {}, + "3452-V\u00e9g\u00e9taux": {} + } + }, + "35-Services en cours": { + "351-\u00c9tudes en cours": { + "3511-\u00c9tudes en cours E1": {}, + "3512-\u00c9tudes en cours E2": {} + }, + "352-Prestations de services en cours": { + "3521-Prestations de services S1": {}, + "3522-Prestations de services S2": {} + } + }, + "36-Produits finis": { + "361-Produits finis A": {}, + "362-Produits finis B": {}, + "363-Actifs biologiques": { + "3631-Animaux": {}, + "3632-V\u00e9g\u00e9taux": {}, + "3638-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "37-Produits interm\u00e9diaires et r\u00e9siduels": { + "371-Produits interm\u00e9diaires": { + "3711-Produits interm\u00e9diaires A": {}, + "3712-Produits interm\u00e9diaires B": {} + }, + "372-Produits r\u00e9siduels": { + "3721-D\u00e9chets": {}, + "3722-Rebuts": {}, + "3723-Mati\u00e8res de R\u00e9cup\u00e9ration": {} + }, + "373-Actifs biologiques": { + "3731-Animaux": {}, + "3732-V\u00e9g\u00e9taux": {}, + "3738-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "38-Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "381-Marchandises en cours de route": {}, + "382-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": {}, + "383-Autres approvisionnements en cours de route": {}, + "386-Produits finis en cours de route": {}, + "387-Stock en consignation ou en d\u00e9p\u00f4t": { + "3871-Stock en consignation": {}, + "3872-Stock en d\u00e9p\u00f4t": {} + }, + "388-Stock provenant d\u2019immobilisations mises hors service ou au rebut": {} + }, + "39-D\u00e9pr\u00e9ciations des stocks et encours de production": { + "391-D\u00e9pr\u00e9ciations des stocks de marchandises": {}, + "392-D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "393-D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": {}, + "394-D\u00e9pr\u00e9ciations des productions en cours": {}, + "395-D\u00e9pr\u00e9ciations des services en cours": {}, + "396-D\u00e9pr\u00e9ciations des stocks de produits finis": {}, + "397-D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": {}, + "398-D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": {} + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "409-Fournisseurs d\u00e9biteurs": { + "4091-Fournisseurs Avances et acomptes vers\u00e9s": {}, + "4092-Fournisseurs Groupe avances et acomptes vers\u00e9s": {}, + "4093-Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": {}, + "4094-Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": {}, + "4098-Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": {} + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "411-Clients": { + "4111-Clients": { + "account_type": "Receivable" + }, + "4112-Clients groupe": { + "account_type": "Receivable" + }, + "4114-Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable" + }, + "4115-Clients, organismes internationaux": { + "account_type": "Receivable" + }, + "4116-Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable" + }, + "4117-Client, retenues de garantie": { + "account_type": "Receivable" + }, + "4118-Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "412-Clients, effets \u00e0 recevoir en portefeuille": { + "4121-Clients, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4122-Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4124-\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4125-Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "413-Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "4131-Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable" + }, + "4132-Clients, effets impay\u00e9s": { + "account_type": "Receivable" + }, + "4133-Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable" + }, + "4138-Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "414-Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "4141-Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4142-Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable" + }, + "4146-Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4147-Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "415-Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable" + }, + "416-Cr\u00e9ances clients litigieuses ou douteuses": { + "4161-Cr\u00e9ances litigieuses": { + "account_type": "Receivable" + }, + "4162-Cr\u00e9ances douteuses": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "418-Clients, produits \u00e0 recevoir": { + "4181-Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable" + }, + "4186-Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "421-Personnel, avances et acomptes": { + "4211-Personnel, avances": {}, + "4212-Personnel, acomptes": {}, + "4213-Frais avanc\u00e9s et fournitures au personnel": {} + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "4311-Prestations familiales": {}, + "4312-Accidents de travail": {}, + "4313-Caisse de retraite obligatoire": {}, + "4314-Caisse de retraite facultative": {}, + "4318-Autres cotisations sociales": {} + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "4331-Mutuelle": {}, + "4332-Assurances retraite": {}, + "4333-Assurances et organismes de sant\u00e9": {} + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4387-Produits \u00e0 recevoir": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "443-\u00c9tat, TVA factur\u00e9e": { + "4431-TVA factur\u00e9e sur ventes": {}, + "4432-TVA factur\u00e9e sur prestations de services": {}, + "4433-TVA factur\u00e9e sur travaux": {}, + "4434-TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": {}, + "4435-TVA sur factures \u00e0 \u00e9tablir": {} + }, + "445-\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "4451-TVA r\u00e9cup\u00e9rable sur immobilisations": {}, + "4452-TVA r\u00e9cup\u00e9rable sur achats": {}, + "4453-TVA r\u00e9cup\u00e9rable sur transport": {}, + "4454-TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": {}, + "4455-TVA r\u00e9cup\u00e9rable sur factures non parvenues": {}, + "4456-TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": {} + }, + "448-\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "4486-Charges \u00e0 payer": {}, + "4487-Produits \u00e0 recevoir": {} + }, + "449-\u00c9tat, cr\u00e9ances et dettes diverses": { + "4491-\u00c9tat, obligations cautionn\u00e9es": {}, + "4492-\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": {}, + "4493-\u00c9tat, fonds de dotation \u00e0 recevoir": {}, + "4494-\u00c9tat, subventions investissement \u00e0 recevoir": {}, + "4495-\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": {}, + "4496-\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": {}, + "4497-\u00c9tat, avances sur subventions": {}, + "4499-\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": {} + } + }, + "45-Organismes internationaux (ACTIF)": { + "451-Op\u00e9rations avec les organismes africains": {}, + "452-Op\u00e9rations avec les autres organismes internationaux": {}, + "458-Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "4581-Organismes internationaux, fonds de dotation \u00e0 recevoir": {}, + "4582-Organismes internationaux, subventions \u00e0 recevoir": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "4613-Apporteurs, capital appel\u00e9, non vers\u00e9": {}, + "4614-Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": {}, + "4618-Apporteurs, titres \u00e0 \u00e9changer": {} + }, + "467-Apporteurs, restant d\u00fb sur capital appel\u00e9": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "4721-Cr\u00e9ances sur cessions de titres de placement": {}, + "4726-Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": {} + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "4731-Mandants": {}, + "4732-Mandataires": {}, + "4733-Commettants": {}, + "4734-Commissionnaires": {}, + "4739-\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "4747-Compte de r\u00e9partition p\u00e9riodique des produits": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "4751-Compte actif": { + "account_type": "Temporary" + } + }, + "476-Charges constat\u00e9es d\u2019avance": {}, + "478-\u00c9carts de conversion actif": { + "4781-Diminution des cr\u00e9ances d\u2019exploitation": {}, + "4782-Diminution des cr\u00e9ances financi\u00e8res": {}, + "4783-Augmentation des dettes d\u2019exploitation": {}, + "4784-Augmentation des dettes financi\u00e8res": {}, + "4786-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4788-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "485-Cr\u00e9ances sur cessions d\u2019immobilisations": { + "4851-En compte, immobilisations incorporelles": {}, + "4852-En compte, immobilisations corporelles": {}, + "4853-Effets \u00e0 recevoir, immobilisations incorporelles": {}, + "4854-Effets \u00e0 recevoir, immobilisations corporelles": {}, + "4855-Effets escompt\u00e9s non \u00e9chus": {}, + "4857-Retenues de garantie": {}, + "4858-Factures \u00e0 \u00e9tablir": {} + }, + "488-Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": {} + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "491-D\u00e9pr\u00e9ciations des comptes clients": { + "4911-Cr\u00e9ances litigieuses": {}, + "4912-Cr\u00e9ances douteuses": {} + }, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {}, + "496-D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "4962-Associ\u00e9s, comptes courants": {}, + "4963-Associ\u00e9s, op\u00e9rations faites en commun": {}, + "4966-Groupe, comptes courants": {} + }, + "497-D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": {}, + "498-D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "4985-Cr\u00e9ances sur cessions d\u2019immobilisations": {}, + "4986-Cr\u00e9ances sur cessions de titres de placement": {}, + "4988-Autres cr\u00e9ances HAO": {} + }, + "499-Provisions pour risques \u00e0 court terme": { + "4991-Sur op\u00e9rations d\u2019exploitation": {}, + "4997-Sur op\u00e9rations financi\u00e8res": {}, + "4998-Sur op\u00e9rations HAO": {} + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "401-Fournisseurs, dettes en compte": { + "4011-Fournisseurs": { + "account_type": "Payable" + }, + "4012-Fournisseurs groupe": { + "account_type": "Payable" + }, + "4013-Fournisseurs sous-traitants": { + "account_type": "Payable" + }, + "4016-Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable" + }, + "4017-Fournisseur, retenues de garantie": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "402-Fournisseurs, effets \u00e0 payer": { + "4021-Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable" + }, + "4022-Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable" + }, + "4023-Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "404-Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "4041-Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4042-Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable" + }, + "4046-Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4047-Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "408-Fournisseurs, factures non parvenues": { + "4081-Fournisseurs": { + "account_type": "Stock Received But Not Billed" + }, + "4082-Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed" + }, + "4083-Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed" + }, + "4086-Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "419-Clients cr\u00e9diteurs": { + "4191-Clients, avances et acomptes re\u00e7us": {}, + "4192-Clients groupe, avances et acomptes re\u00e7us": {}, + "4194-Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": {}, + "4198-Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": {} + } + }, + "42-Personnel (PASSIF)": { + "422-Personnel, r\u00e9mun\u00e9rations dues": {}, + "423-Personnel, oppositions, saisies-arr\u00eats": { + "4231-Personnel, oppositions": {}, + "4232-Personnel, saisies-arr\u00eats": {}, + "4233-Personnel, avis \u00e0 tiers d\u00e9tenteur": {} + }, + "424-Personnel, \u0153uvres sociales internes": { + "4241-Assistance m\u00e9dicale": {}, + "4242-Allocations familiales": {}, + "4245-Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": {}, + "4248-Autres \u0153uvres sociales internes": {} + }, + "425-Repr\u00e9sentants du personnel": { + "4251-D\u00e9l\u00e9gu\u00e9s du personnel": {}, + "4252-Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": {}, + "4258-Autres repr\u00e9sentants du personnel": {} + }, + "426-Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "4261-Participation aux b\u00e9n\u00e9fices": {}, + "4264-Participation au capital": {} + }, + "427-Personnel d\u00e9p\u00f4ts": {}, + "428-Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "4281-Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": {}, + "4286-Autres charges \u00e0 payer": {}, + "4287-Produits \u00e0 recevoir": {} + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4381-Charges sociales sur gratifications \u00e0 payer": {}, + "4382-Charges sociales sur cong\u00e9s \u00e0 payer": {}, + "4386-Autres charges \u00e0 payer": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "441-\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": {}, + "442-\u00c9tat, autres imp\u00f4ts et taxes": { + "4421-Imp\u00f4ts et taxes d\u2019\u00c9tat": {}, + "4422-Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": {}, + "4423-Imp\u00f4ts et taxes recouvrables sur des obligataires": {}, + "4424-Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": {}, + "4426-Droits de douane": {}, + "4428-Autres imp\u00f4ts et taxes": {} + }, + "444-\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "4441-\u00c9tat, TVA due": {}, + "4449-\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": {} + }, + "446-\u00c9tat, autres taxes sur le chiffre d\u2019affaires": {}, + "447-\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "4471-Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": {}, + "4472-Imp\u00f4ts sur salaires": {}, + "4473-Contribution nationale": {}, + "4474-Contribution nationale de solidarit\u00e9": {}, + "4478-Autres imp\u00f4ts et contributions": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "4611-Apporteurs, apports en nature": {}, + "4612-Apporteurs, apports en num\u00e9raire": {}, + "4615-Apporteurs, versements re\u00e7us sur augmentation de capital": {}, + "4616-Apporteurs, versements anticip\u00e9s": {}, + "4617-Apporteurs d\u00e9faillants": {}, + "4619-Apporteurs, capital \u00e0 rembourser": {} + }, + "462-Associ\u00e9s, comptes courants": { + "4621-Principal": {}, + "4626-Int\u00e9r\u00eats courus": {} + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "4631-Op\u00e9rations courantes": {}, + "4636-Int\u00e9r\u00eats courus": {} + }, + "465-Associ\u00e9s, dividendes \u00e0 payer": {}, + "466-Groupe, comptes courants": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "4711-D\u00e9biteurs divers": {}, + "4712-Cr\u00e9diteurs divers": {}, + "4713-Obligataires": {}, + "4715-R\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "4716-Compte d\u2019affacturage": {}, + "4717-D\u00e9biteurs divers retenues de garantie": {}, + "4718-Apport, compte de fusion et op\u00e9rations assimil\u00e9es": {}, + "4719-Bons de souscription d\u2019actions et d\u2019obligations": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "4746-Compte de r\u00e9partition p\u00e9riodique des charges": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "4752-Compte passif": {} + }, + "477-Produits constat\u00e9s d\u2019avance": {}, + "479-\u00c9carts de conversion passif": { + "4791-Augmentation des cr\u00e9ances d\u2019exploitation": {}, + "4792-Augmentation des cr\u00e9ances financi\u00e8res": {}, + "4793-Diminution des dettes d\u2019exploitation": {}, + "4794-Diminution des dettes financi\u00e8res": {}, + "4797-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4798-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "481-Fournisseurs d\u2019investissements": { + "4811-Immobilisations incorporelles": {}, + "4812-Immobilisations corporelles": {}, + "4813-Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": {}, + "4816-R\u00e9serve de propri\u00e9t\u00e9": {}, + "4817-Retenues de garantie": {}, + "4818-Factures non parvenues": {} + }, + "482-Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "4821-Immobilisations incorporelles": {}, + "4822-Immobilisations corporelles": {} + }, + "484-Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "4887-Produits": {} + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (PASSIF)": { + "490-D\u00e9pr\u00e9ciations des comptes fournisseurs": {}, + "492-D\u00e9pr\u00e9ciations des comptes personnel": {}, + "493-D\u00e9pr\u00e9ciations des comptes organismes sociaux": {}, + "494-D\u00e9pr\u00e9ciations des comptes \u00c9tat et collectivit\u00e9s publiques": {}, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {} + }, + "root_type": "Liability" + }, + "5-Comptes de tr\u00e9sorerie": { + "50-Titres de placement": { + "501-Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "5011-Titres du Tr\u00e9sor \u00e0 court terme": {}, + "5012-Titres d\u2019organismes financiers": {}, + "5013-Bons de caisse \u00e0 court terme": {}, + "5016-Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": {} + }, + "502-Actions": { + "5021-Actions ou parts propres": {}, + "5022-Actions cot\u00e9es": {}, + "5023-Actions non cot\u00e9es": {}, + "5024-Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": {}, + "5025-Autres actions": {}, + "5026-Frais d\u2019acquisition des actions": {} + }, + "503-Obligations": { + "5031-Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": {}, + "5032-Obligations cot\u00e9es": {}, + "5033-Obligations non cot\u00e9es": {}, + "5035-Autres obligations": {}, + "5036-Frais d\u2019acquisition des obligations": {} + }, + "504-Bons de souscription": { + "5042-Bons de souscription d\u2019actions": {}, + "5043-Bons de souscription d\u2019obligations": {} + }, + "505-Titres n\u00e9gociables hors r\u00e9gion": {}, + "506-Int\u00e9r\u00eats courus": { + "5061-Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": {}, + "5062-Actions": {}, + "5063-Obligations": {} + }, + "508-Autres titres de placement et cr\u00e9ances assimil\u00e9es": {} + }, + "51-Valeurs \u00e0 encaisser": { + "511-Effets \u00e0 encaisser": {}, + "512-Effets \u00e0 l\u2019encaissement": {}, + "513-Ch\u00e8ques \u00e0 encaisser": {}, + "514-Ch\u00e8ques \u00e0 l\u2019encaissement": {}, + "515-Cartes de cr\u00e9dit \u00e0 encaisser": {}, + "518-Autres valeurs \u00e0 l\u2019encaissement": { + "5181-Warrants": {}, + "5182-Billets de fonds": {}, + "5185-Ch\u00e8ques de voyage": {}, + "5186-Coupons \u00e9chus": {}, + "5187-Int\u00e9r\u00eats \u00e9chus des obligations": {} + } + }, + "52-Banques": { + "521-Banques locales": { + "5211-Banques en monnaie nationale": { + "account_type": "Bank" + }, + "5215-Banques en devises": { + "account_type": "Bank" + }, + "account_type": "Bank" + }, + "522-Banques autres \u00c9tats r\u00e9gion": {}, + "523-Banques autres \u00c9tats zone mon\u00e9taire": {}, + "524-Banques hors zone mon\u00e9taire": {}, + "525-Banques d\u00e9p\u00f4t \u00e0 terme": {}, + "526-Banques, int\u00e9r\u00eats courus": { + "5261-Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": {}, + "5267-Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": {} + } + }, + "53-\u00c9tablissements financiers et assimil\u00e9s": { + "531-Ch\u00e8ques postaux": {}, + "532-Tr\u00e9sor": {}, + "533-Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": {}, + "536-\u00c9tablissements financiers, int\u00e9r\u00eats courus": {}, + "538-Autres organismes financiers": {} + }, + "54-Instruments de tr\u00e9sorerie": { + "541-Options de taux d\u2019int\u00e9r\u00eat": {}, + "542-Options de taux de change": {}, + "543-Options de taux boursiers": {}, + "544-Instruments de march\u00e9s \u00e0 terme": {}, + "545-Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": {} + }, + "55-Instruments de monnaie \u00e9lectronique": { + "551-Monnaie \u00e9lectronique carte carburant": {}, + "552-Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": {}, + "553-Monnaie \u00e9lectronique carte p\u00e9age": {}, + "554-Porte-monnaie \u00e9lectronique": {}, + "558-Autres instruments de monnaies \u00e9lectroniques": {} + }, + "56-Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "561-Cr\u00e9dits de tr\u00e9sorerie": {}, + "564-Escompte de cr\u00e9dits de campagne": {}, + "565-Escompte de cr\u00e9dits ordinaires": {}, + "566-Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": {} + }, + "57-Caisse": { + "571-Caisse si\u00e8ge social": { + "5711-Caisse en monnaie nationale": {}, + "5712-Caisse en devises": {} + }, + "572-Caisse succursale A": { + "5721-En monnaie nationale": {}, + "5722-En devises": {} + }, + "573-Caisse succursale B": { + "5731-En monnaie nationale": {}, + "5732-En devises": {} + } + }, + "58-R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "581-R\u00e9gies d\u2019avance": {}, + "582-Accr\u00e9ditifs": {}, + "585-Virements de fonds": {}, + "588-Autres virements internes": {} + }, + "59-D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "590-D\u00e9pr\u00e9ciations des titres de placement": {}, + "591-D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": {}, + "592-D\u00e9pr\u00e9ciations des comptes banques": {}, + "593-D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": {}, + "594-D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": {}, + "599-Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": {} + }, + "root_type": "Asset" + }, + "6-Comptes de charges des activit\u00e9s ordinaires": { + "60-Achats et variations de stocks": { + "601-Achats de marchandises": { + "6011-Dans la R\u00e9gion": {}, + "6012-Hors R\u00e9gion": {}, + "6013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6015-Frais sur achats": {}, + "6019-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "602-Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "6021-Dans la R\u00e9gion": {}, + "6022-Hors R\u00e9gion": {}, + "6023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6025-Frais sur achats": {}, + "6029-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "603-Variations des stocks de biens achet\u00e9s": { + "6031-Variations des stocks de marchandises": {}, + "6032-Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "6033-Variations des stocks d\u2019autres approvisionnements": {} + }, + "604-Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "6041-Mati\u00e8res consommables": {}, + "6042-Mati\u00e8res combustibles": {}, + "6043-Produits d\u2019entretien": {}, + "6044-Fournitures d\u2019atelier et d\u2019usine": {}, + "6045-Frais sur achat": {}, + "6046-Fournitures de magasin": {}, + "6047-Fournitures de bureau": {}, + "6049-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "605-Autres achats": { + "6051-Fournitures non stockables Eau": {}, + "6052-Fournitures non stockables \u00c9lectricit\u00e9": {}, + "6053-Fournitures non stockables Autres \u00e9nergies": {}, + "6054-Fournitures d\u2019entretien non stockables": {}, + "6055-Fournitures de bureau non stockables": {}, + "6056-Achats de petit mat\u00e9riel et outillage": {}, + "6057-Achats d\u2019\u00e9tudes et prestations de services": {}, + "6058-Achats de travaux, mat\u00e9riels et \u00e9quipements": {}, + "6059-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "608-Achats d\u2019emballages": { + "6081-Emballages perdus": {}, + "6082-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "6083-Emballages \u00e0 usage mixte": {}, + "6085-Frais sur achats": {}, + "6089-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + } + }, + "61-Transports": { + "612-Transports sur ventes": {}, + "613-Transports pour le compte de tiers": {}, + "614-Transports du personnel": {}, + "616-Transports de plis": {}, + "618-Autres frais de transport": { + "6181-Voyages et d\u00e9placements": {}, + "6182-Transports entre \u00e9tablissements ou chantiers": {}, + "6183-Transports administratifs": {} + } + }, + "62-Services ext\u00e9rieurs": { + "621-Sous-traitance g\u00e9n\u00e9rale": {}, + "622-Locations, charges locatives": { + "6221-Locations de terrains": {}, + "6222-Locations de b\u00e2timents": {}, + "6223-Locations de mat\u00e9riels et outillages": {}, + "6224-Malis sur emballages": {}, + "6225-Locations d\u2019emballages": {}, + "6226-Fermages et loyers du foncier": {}, + "6228-Locations et charges locatives diverses": {} + }, + "623-Redevances de location acquisition": { + "6232-Cr\u00e9dit-bail immobilier": {}, + "6233-Cr\u00e9dit-bail mobilier": {}, + "6234-Location-vente": {}, + "6238-Autres contrats de location acquisition": {} + }, + "624-Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "6241-Entretien et r\u00e9parations des biens immobiliers": {}, + "6242-Entretien et r\u00e9parations des biens mobiliers": {}, + "6243-Maintenance": {}, + "6244-Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "6248-Autres entretiens et r\u00e9parations": {} + }, + "625-Primes d\u2019assurance": { + "6251-Assurances multirisques": {}, + "6252-Assurances mat\u00e9riel de transport": {}, + "6253-Assurances risques d\u2019exploitation": {}, + "6254-Assurances responsabilit\u00e9 du producteur": {}, + "6255-Assurances insolvabilit\u00e9 clients": {}, + "6257-Assurances transport sur ventes": {}, + "6258-Autres primes d\u2019assurances": {} + }, + "626-\u00c9tudes, recherches et documentation": { + "6261-\u00c9tudes et recherches": {}, + "6265-Documentation g\u00e9n\u00e9rale": {}, + "6266-Documentation technique": {} + }, + "627-Publicit\u00e9, publications, relations publiques": { + "6271-Annonces, insertions": {}, + "6272-Catalogues, imprim\u00e9s publicitaires": {}, + "6273-\u00c9chantillons": {}, + "6274-Foires et expositions": {}, + "6275-Publications": {}, + "6276-Cadeaux \u00e0 la client\u00e8le": {}, + "6277-Frais de colloques, s\u00e9minaires, conf\u00e9rences": {}, + "6278-Autres charges de publicit\u00e9 et relations publiques": {} + }, + "628-Frais de t\u00e9l\u00e9communications": { + "6281-Frais de t\u00e9l\u00e9phone": {}, + "6282-Frais de t\u00e9lex": {}, + "6283-Frais de t\u00e9l\u00e9copie": {}, + "6288-Autres frais de t\u00e9l\u00e9communications": {} + } + }, + "63-Autres services ext\u00e9rieurs": { + "631-Frais bancaires": { + "6311-Frais sur titres (vente, garde)": {}, + "6312-Frais sur effets": {}, + "6313-Location de coffres": {}, + "6314-Commissions d\u2019affacturage": {}, + "6315-Commissions sur cartes de cr\u00e9dit": {}, + "6316-Frais d\u2019\u00e9mission d\u2019emprunts": {}, + "6317-Frais sur instruments monnaie \u00e9lectronique": {}, + "6318-Autres frais bancaires": {} + }, + "632-R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "6322-Commissions et courtages sur ventes": {}, + "6324-Honoraires des professions r\u00e9glement\u00e9es": {}, + "6325-Frais d\u2019actes et de contentieux": {}, + "6326-R\u00e9mun\u00e9rations d\u2019affacturage": {}, + "6327-R\u00e9mun\u00e9rations des autres prestataires de services": {}, + "6328-Divers frais": {} + }, + "633-Frais de formation du personnel": {}, + "634-Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "6342-Redevances pour brevets, licences": {}, + "6343-Redevances pour logiciels": {}, + "6344-Redevances pour marques": {}, + "6345-Redevances pour sites internet": {}, + "6346-Redevances pour concessions, droits et valeurs similaires": {} + }, + "635-Cotisations": { + "6351-Cotisations": {}, + "6358-Concours divers": {} + }, + "637-R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "6371-Personnel int\u00e9rimaire": {}, + "6372-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "638-Autres charges externes": { + "6381-Frais de recrutement du personnel": {}, + "6382-Frais de d\u00e9m\u00e9nagement": {}, + "6383-R\u00e9ceptions": {}, + "6384-Missions": {}, + "6385-Charges de copropri\u00e9t\u00e9": {} + } + }, + "64-Imp\u00f4ts et taxes": { + "641-Imp\u00f4ts et taxes directs": { + "6411-Imp\u00f4ts fonciers et taxes annexes": {}, + "6412-Patentes, licences et taxes annexes": {}, + "6413-Taxes sur appointements et salaires": {}, + "6414-Taxes d\u2019apprentissage": {}, + "6415-Formation professionnelle continue": {}, + "6418-Autres imp\u00f4ts et taxes directs": {} + }, + "645-Imp\u00f4ts et taxes indirects": {}, + "646-Droits d\u2019enregistrement": { + "6461-Droits de mutation": {}, + "6462-Droits de timbre": {}, + "6463-Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": {}, + "6464-Vignettes": {}, + "6468-Autres droits": {} + }, + "647-P\u00e9nalit\u00e9s, amendes fiscales": { + "6471-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": {}, + "6472-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": {}, + "6473-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": {}, + "6474-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": {}, + "6478-Autres p\u00e9nalit\u00e9s et amendes fiscales": {} + }, + "648-Autres imp\u00f4ts et taxes": {} + }, + "65-Autres charges": { + "651-Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "6511-Clients": {}, + "6515-Autres d\u00e9biteurs": {} + }, + "652-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "6521-Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": {}, + "6525-Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "654-Valeurs comptables des cessions courantes d\u2019immobilisations": { + "6541-Immobilisations incorporelles": {}, + "6542-Immobilisations corporelles": {} + }, + "656-Perte de change sur cr\u00e9ances et dettes commerciale": {}, + "657-P\u00e9nalit\u00e9s et amendes p\u00e9nales": {}, + "658-Charges diverses": { + "6581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "6582-Dons": {}, + "6583-M\u00e9c\u00e9nat": {}, + "6588-Autres charges diverses": {} + }, + "659-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "6591-Sur risques \u00e0 court terme": {}, + "6593-Sur stocks": {}, + "6594-Sur cr\u00e9ances": {}, + "6598-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": {} + } + }, + "66-Charges de personnel": { + "661-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "6611-Appointements salaires et commissions": {}, + "6612-Primes et gratifications": {}, + "6613-Cong\u00e9s pay\u00e9s": {}, + "6614-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6615-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6616-Suppl\u00e9ment familial": {}, + "6617-Avantages en nature": {}, + "6618-Autres r\u00e9mun\u00e9rations directes": {} + }, + "662-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "6621-Appointements salaires et commissions": {}, + "6622-Primes et gratifications": {}, + "6623-Cong\u00e9s pay\u00e9s": {}, + "6624-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6625-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6626-Suppl\u00e9ment familial": {}, + "6627-Avantages en nature": {}, + "6628-Autres r\u00e9mun\u00e9rations directes": {} + }, + "663-Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "6631-Indemnit\u00e9s de logement": {}, + "6632-Indemnit\u00e9s de repr\u00e9sentation": {}, + "6633-Indemnit\u00e9s d\u2019expatriation": {}, + "6634-Indemnit\u00e9s de transport": {}, + "6638-Autres indemnit\u00e9s et avantages divers": {} + }, + "664-Charges sociales": { + "6641-Charges sociales sur r\u00e9mun\u00e9ration du personnel national": {}, + "6642-Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": {} + }, + "666-R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "6661-R\u00e9mun\u00e9ration du travail de l\u2019exploitant": {}, + "6662-Charges sociales": {} + }, + "667-R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "6671-Personnel int\u00e9rimaire": {}, + "6672-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "668-Autres charges sociales": { + "6681-Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": {}, + "6682-Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": {}, + "6683-Versements et contributions aux autres \u0153uvres sociales": {}, + "6684-M\u00e9decine du travail et pharmacie": {}, + "6685-Assurances et organismes de sant\u00e9": {}, + "6686-Assurances retraite et fonds de pension": {}, + "6687-Majorations et p\u00e9nalit\u00e9s sociales": {}, + "6688-Charges sociales diverses": {} + } + }, + "67-Frais financiers et charges assimil\u00e9es": { + "671-Int\u00e9r\u00eats des emprunts": { + "6711-Emprunts obligataires": {}, + "6712-Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "6713-Dettes li\u00e9es \u00e0 des participations": {}, + "6714-Primes de remboursement des obligations": {} + }, + "672-Int\u00e9r\u00eats dans loyers de location acquisition": { + "6722-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": {}, + "6723-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": {}, + "6724-Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": {}, + "6728-Int\u00e9r\u00eats dans loyers des autres locations acquisition": {} + }, + "673-Escomptes accord\u00e9s": {}, + "674-Autres int\u00e9r\u00eats": { + "6741-Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": {}, + "6742-Comptes courants bloqu\u00e9s": {}, + "6743-Int\u00e9r\u00eats sur obligations cautionn\u00e9es": {}, + "6744-Int\u00e9r\u00eats sur dettes commerciales": {}, + "6745-Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": {}, + "6748-Int\u00e9r\u00eats sur dettes diverses": {} + }, + "675-Escomptes des effets de commerce": {}, + "676-Pertes de change financi\u00e8res": {}, + "677-Pertes sur titres de placement": { + "6771-Pertes sur cessions de titres de placement": {}, + "6772-Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {} + }, + "678-Pertes et charges sur risques financiers": { + "6781-Sur rentes viag\u00e8res": {}, + "6782-Sur op\u00e9rations financi\u00e8res": {}, + "6784-Sur instruments de tr\u00e9sorerie": {} + }, + "679-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "6791-Sur risques financiers": {}, + "6795-Sur titres de placement": {}, + "6798-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "68-Dotations aux amortissements": { + "681-Dotations aux amortissements d\u2019exploitation": { + "6812-Dotations aux amortissements des immobilisations incorporelles": {}, + "6813-Dotations aux amortissements des immobilisations corporelles": {} + } + }, + "69-Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "691-Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "6911-Dotations aux provisions pour risques et charges": {}, + "6913-Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": {}, + "6914-Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": {} + }, + "697-Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "6971-Dotations aux provisions pour risques et charges": {}, + "6972-Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": {} + } + }, + "root_type": "Expense" + }, + "7-Comptes de produits des activit\u00e9s ordinaires": { + "70-Ventes": { + "701-Ventes de marchandises": { + "7011-Dans la R\u00e9gion": {}, + "7012-Hors R\u00e9gion": {}, + "7013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7015-Sur internet": {}, + "7019-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "702-Ventes de produits finis": { + "7021-Dans la R\u00e9gion": {}, + "7022-Hors R\u00e9gion": {}, + "7023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7025-Sur internet": {}, + "7029-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "703-Ventes de produits interm\u00e9diaires": { + "7031-Dans la R\u00e9gion": {}, + "7032-Hors R\u00e9gion": {}, + "7033-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7034-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7035-Sur internet": {}, + "7039-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "704-Ventes de produits r\u00e9siduels": { + "7041-Dans la R\u00e9gion": {}, + "7042-Hors R\u00e9gion": {}, + "7043-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7044-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7045-Sur internet": {}, + "7049-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "705-Travaux factur\u00e9s": { + "7051-Dans la R\u00e9gion": {}, + "7052-Hors R\u00e9gion": {}, + "7053-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7054-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7055-Sur internet": {}, + "7059-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "706-Services vendus": { + "7061-Dans la R\u00e9gion": {}, + "7062-Hors R\u00e9gion": {}, + "7063-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7064-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7065-Sur internet": {}, + "7069-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "707-Produits accessoires": { + "7071-Ports, emballages perdus et autres frais factur\u00e9s": {}, + "7072-Commissions et courtages": {}, + "7073-Locations": {}, + "7074-Bonis sur reprises et cessions d\u2019emballages": {}, + "7075-Mise \u00e0 disposition de personnel": {}, + "7076-Redevances pour brevets, logiciels, marques et droits similaires": {}, + "7077-Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": {}, + "7078-Autres produits accessoires": {} + } + }, + "71-Subventions d\u2019exploitation": { + "711-Sur produits \u00e0 l\u2019exportation": {}, + "712-Sur produits \u00e0 l\u2019importation": {}, + "713-Sur produits de p\u00e9r\u00e9quation": {}, + "714-Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": {}, + "718-Autres subventions d\u2019exploitation": { + "7181-Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": {}, + "7182-Vers\u00e9es par les organismes internationaux": {}, + "7183-Vers\u00e9es par des tiers": {} + } + }, + "72-Production immobilis\u00e9e": { + "721-Immobilisations incorporelles": {}, + "722-Immobilisations corporelles": { + "7221-Immobilisations corporelles (hors actifs biologiques)": {}, + "7222-Immobilisations corporelles (actifs biologiques)": {} + }, + "724-Production auto-consomm\u00e9e": {}, + "726-Immobilisations financi\u00e8res": {} + }, + "73-Variations des stocks de biens et de services produits": { + "734-Variations des stocks de produits en cours": { + "7341-Produits en cours": {}, + "7342-Travaux en cours": {} + }, + "735-Variations des en-cours de services": { + "7351-\u00c9tudes en cours": {}, + "7352-Prestations de services en cours": {} + }, + "736-Variations des stocks de produits finis": {}, + "737-Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "7371-Produits interm\u00e9diaires": {}, + "7372-Produits r\u00e9siduels": {} + } + }, + "75-Autres produits": { + "751-Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": {}, + "752-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "7521-Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": {}, + "7525-B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "754-Produits des cessions courantes d\u2019immobilisations": { + "7541-Immobilisations incorporelles": {}, + "7542-Immobilisations corporelles": {} + }, + "756-Gains de change sur cr\u00e9ances et dettes commerciales": {}, + "758-Produits divers": { + "7581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "7582-Indemnit\u00e9s d\u2019assurances re\u00e7ues": {}, + "7588-Autres produits divers": {} + }, + "759-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "7591-Sur risques \u00e0 court terme": {}, + "7593-Sur stocks": {}, + "7594-Sur cr\u00e9ances": {}, + "7598-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": {} + } + }, + "77-Revenus financiers et produits assimil\u00e9s": { + "771-Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "7712-Int\u00e9r\u00eats de pr\u00eats": {}, + "7713-Int\u00e9r\u00eats sur cr\u00e9ances diverses": {} + }, + "772-Revenus de participations et autres titres immobilis\u00e9s": { + "7721-Revenus des titres de participation": {}, + "7722-Revenus autres titres immobilis\u00e9s": {} + }, + "773-Escomptes obtenus": {}, + "774-Revenus de placement": { + "7745-Revenus des obligations": {}, + "7746-Revenus des titres de placement": {} + }, + "775-Int\u00e9r\u00eats dans loyers de location acquisition": {}, + "776-Gains de change financiers": {}, + "777-Gains sur cessions de titres de placement": {}, + "778-Gains sur risques financiers": { + "7781-Sur rentes viag\u00e8res": {}, + "7782-Sur op\u00e9rations financi\u00e8res": {}, + "7784-Sur instruments de tr\u00e9sorerie": {} + }, + "779-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "7791-Sur risques financiers": {}, + "7795-Sur titres de placement": {}, + "7798-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "78-Transferts de charges": { + "781-Transferts de charges d\u2019exploitation": {}, + "787-Transferts de charges financi\u00e8res": {} + }, + "79-Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "791-Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "7911-Pour risques et charges": {}, + "7913-Des immobilisations incorporelles": {}, + "7914-Des immobilisations corporelles": {} + }, + "797-Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "7971-Pour risques et charges": {}, + "7972-Des immobilisations financi\u00e8res": {} + }, + "798-Reprises d\u2019amortissements": {}, + "799-Reprises de subventions d\u2019investissement": {} + }, + "root_type": "Income" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "81-Valeurs comptables des cessions d\u2019immobilisations": { + "811-Immobilisations incorporelles": {}, + "812-Immobilisations corporelles": {}, + "816-Immobilisations financi\u00e8res": {} + }, + "83-Charges hors activit\u00e9s ordinaires": { + "831-Charges HAO constat\u00e9es": {}, + "833-Charges li\u00e9es aux op\u00e9rations de restructuration": {}, + "834-Pertes sur cr\u00e9ances HAO": {}, + "835-Dons et lib\u00e9ralit\u00e9s accord\u00e9s": {}, + "836-Abandons de cr\u00e9ances consentis": {}, + "837-Charges li\u00e9es aux op\u00e9rations de liquidation": {}, + "839-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "85-Dotations hors activit\u00e9s ordinaires": { + "851-Dotations aux provisions r\u00e9glement\u00e9es": {}, + "852-Dotations aux amortissements HAO": {}, + "853-Dotations aux d\u00e9pr\u00e9ciations HAO": {}, + "854-Dotations aux provisions pour risques et charges HAO": {}, + "858-Autres dotations HAO": {} + }, + "87-Participation des travailleurs": { + "871-Participation l\u00e9gale aux b\u00e9n\u00e9fices": {}, + "874-Participation contractuelle aux b\u00e9n\u00e9fices": {}, + "878-Autres participations": {} + }, + "89-Imp\u00f4ts sur le r\u00e9sultat": { + "891-Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "8911-Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": {}, + "8912-Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": {}, + "8913-Activit\u00e9s exerc\u00e9es hors R\u00e9gion": {} + }, + "892-Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": {}, + "895-Imp\u00f4t minimum forfaitaire IMF": {}, + "899-D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "8991-D\u00e9gr\u00e8vements": {}, + "8994-Annulations pour pertes r\u00e9troactives": {} + } + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "82-Produits des cessions d\u2019immobilisations": { + "821-Immobilisations incorporelles": {}, + "822-Immobilisations corporelles": {}, + "826-Immobilisations financi\u00e8res": {} + }, + "84-Produits hors activit\u00e9s ordinaires": { + "841-Produits HAO constat\u00e9s": {}, + "843-Produits li\u00e9s aux op\u00e9rations de restructuration": {}, + "844-Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": {}, + "845-Dons et lib\u00e9ralit\u00e9s obtenus": {}, + "846-Abandons de cr\u00e9ances obtenus": {}, + "847-Produits li\u00e9s aux op\u00e9rations de liquidation": {}, + "848-Transferts de charges HAO": {}, + "849-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "86-Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "861-Reprises de provisions r\u00e9glement\u00e9es": {}, + "862-Reprises d\u2019amortissements HAO": {}, + "863-Reprises de d\u00e9pr\u00e9ciations HAO": {}, + "864-Reprises de provisions pour risques et charges HAO": {}, + "868-Autres reprises HAO": {} + }, + "88-Subventions d\u2019\u00e9quilibre": { + "881-\u00c9tat": {}, + "884-Collectivit\u00e9s publiques": {}, + "886-Groupe": {}, + "888-Autres": {} + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/bf_plan_comptable_avec_code.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/bf_plan_comptable_avec_code.json new file mode 100644 index 00000000000..59a6e348116 --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/bf_plan_comptable_avec_code.json @@ -0,0 +1,4208 @@ +{ + "country_code": "bf", + "name": "Syscohada - Plan Comptable avec code", + "tree": { + "Comptes de ressources durables": { + "Capital": { + "Capital social": { + "Capital souscrit, non appel\u00e9": { + "account_number": "1011" + }, + "Capital souscrit, appel\u00e9, non vers\u00e9": { + "account_number": "1012" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, non amorti": { + "account_number": "1013" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, amorti": { + "account_number": "1014" + }, + "Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": { + "account_number": "1018" + }, + "account_number": "101" + }, + "Capital par dotation": { + "Dotation initiale": { + "account_number": "1021" + }, + "Dotations compl\u00e9mentaires": { + "account_number": "1022" + }, + "Autres dotations": { + "account_number": "1028" + }, + "account_number": "102" + }, + "Capital personnel": { + "account_number": "103" + }, + "Compte de l\u2019exploitant": { + "Apports temporaires": { + "account_number": "1041" + }, + "Op\u00e9rations courantes": { + "account_number": "1042" + }, + "R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": { + "account_number": "1043" + }, + "Pr\u00e9l\u00e8vements d\u2019autoconsommation": { + "account_number": "1047" + }, + "Autres pr\u00e9l\u00e8vements": { + "account_number": "1048" + }, + "account_number": "104" + }, + "Primes li\u00e9es au capital social": { + "Primes d\u2019\u00e9mission": { + "account_number": "1051" + }, + "Primes d\u2019apport": { + "account_number": "1052" + }, + "Primes de fusion": { + "account_number": "1053" + }, + "Primes de conversion": { + "account_number": "1054" + }, + "Autres primes": { + "account_number": "1058" + }, + "account_number": "105" + }, + "\u00c9carts de r\u00e9\u00e9valuation": { + "\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": { + "account_number": "1061" + }, + "\u00c9carts de r\u00e9\u00e9valuation libre": { + "account_number": "1062" + }, + "account_number": "106" + }, + "Apporteurs, capital souscrit, non appel\u00e9": { + "account_number": "109" + }, + "account_number": "10" + }, + "R\u00e9serves": { + "R\u00e9serve l\u00e9gale": { + "account_number": "111" + }, + "R\u00e9serves statutaires ou contractuelles": { + "account_number": "112" + }, + "R\u00e9serves r\u00e9glement\u00e9es": { + "R\u00e9serves de plus-values nettes \u00e0 long terme": { + "account_number": "1131" + }, + "R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "1132" + }, + "R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": { + "account_number": "1133" + }, + "R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": { + "account_number": "1134" + }, + "Autres r\u00e9serves r\u00e9glement\u00e9es": { + "account_number": "1135" + }, + "account_number": "113" + }, + "Autres r\u00e9serves": { + "R\u00e9serves facultatives": { + "account_number": "1181" + }, + "R\u00e9serves diverses": { + "account_number": "1188" + }, + "account_number": "118" + }, + "account_number": "11" + }, + "Report \u00e0 nouveau": { + "Report \u00e0 nouveau cr\u00e9diteur": { + "account_number": "121" + }, + "Report \u00e0 nouveau d\u00e9biteur": { + "Perte nette \u00e0 reporter": { + "account_number": "1291" + }, + "Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": { + "account_number": "1292" + }, + "account_number": "129" + }, + "account_number": "12" + }, + "R\u00e9sultat net de l\u2019exercice": { + "R\u00e9sultat en instance d\u2019affectation": { + "R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": { + "account_number": "1301" + }, + "R\u00e9sultat en instance d\u2019affectation : perte": { + "account_number": "1309" + }, + "account_number": "130" + }, + "R\u00e9sultat net : b\u00e9n\u00e9fice": { + "account_number": "131" + }, + "Marge commerciale (MC)": { + "account_number": "132" + }, + "Valeur ajout\u00e9e (VA)": { + "account_number": "133" + }, + "Exc\u00e9dent brut d\u2019exploitation (EBE)": { + "account_number": "134" + }, + "R\u00e9sultat d\u2019exploitation (RE)": { + "account_number": "135" + }, + "R\u00e9sultat financier (RF)": { + "account_number": "136" + }, + "R\u00e9sultat des activit\u00e9s ordinaires (RAO)": { + "account_number": "137" + }, + "R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "R\u00e9sultat de fusion": { + "account_number": "1381" + }, + "R\u00e9sultat d\u2019apport partiel d\u2019actif": { + "account_number": "1382" + }, + "R\u00e9sultat de scission": { + "account_number": "1383" + }, + "R\u00e9sultat de liquidation": { + "account_number": "1384" + }, + "account_number": "138" + }, + "R\u00e9sultat net : perte": { + "account_number": "139" + }, + "account_number": "13" + }, + "Subventions d\u2019investissement": { + "Subventions d\u2019\u00e9quipement": { + "\u00c9tat": { + "account_number": "1411" + }, + "R\u00e9gions": { + "account_number": "1412" + }, + "D\u00e9partements": { + "account_number": "1413" + }, + "Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": { + "account_number": "1414" + }, + "Entit\u00e9s publiques ou mixtes": { + "account_number": "1415" + }, + "Entit\u00e9s et organismes priv\u00e9s": { + "account_number": "1416" + }, + "Organismes internationaux": { + "account_number": "1417" + }, + "Autres": { + "account_number": "1418" + }, + "account_number": "141" + }, + "Autres subventions d\u2019investissement": { + "account_number": "148" + }, + "account_number": "14" + }, + "Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "Amortissements d\u00e9rogatoires": { + "account_number": "151" + }, + "Plus-values de cession \u00e0 r\u00e9investir": { + "account_number": "152" + }, + "Fonds r\u00e9glement\u00e9s": { + "Fonds National": { + "account_number": "1531" + }, + "Pr\u00e9l\u00e8vement pour le Budget": { + "account_number": "1532" + }, + "account_number": "153" + }, + "Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": { + "account_number": "154" + }, + "Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "Reconstitution des gisements miniers et p\u00e9troliers": { + "account_number": "1551" + }, + "account_number": "155" + }, + "Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "Hausse de prix": { + "account_number": "1561" + }, + "Fluctuation des cours": { + "account_number": "1562" + }, + "account_number": "156" + }, + "Provisions pour investissement": { + "account_number": "157" + }, + "Autres provisions et fonds r\u00e9glement\u00e9s": { + "account_number": "158" + }, + "account_number": "15" + }, + "Emprunts et dettes assimil\u00e9es": { + "Emprunts obligataires": { + "Emprunts obligataires ordinaires": { + "account_number": "1611" + }, + "Emprunts obligataires convertibles en actions": { + "account_number": "1612" + }, + "Emprunts obligataires remboursables en actions": { + "account_number": "1613" + }, + "Autres emprunts obligataires": { + "account_number": "1618" + }, + "account_number": "161" + }, + "Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "162" + }, + "Avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "163" + }, + "Avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "164" + }, + "D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "D\u00e9p\u00f4ts": { + "account_number": "1651" + }, + "Cautionnements": { + "account_number": "1652" + }, + "account_number": "165" + }, + "Int\u00e9r\u00eats courus": { + "Sur emprunts obligataires": { + "account_number": "1661" + }, + "Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "1662" + }, + "Sur avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "1663" + }, + "Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "1664" + }, + "Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "account_number": "1665" + }, + "Sur avances assorties de conditions particuli\u00e8res": { + "account_number": "1667" + }, + "Sur autres emprunts et dettes": { + "account_number": "1668" + }, + "account_number": "166" + }, + "Avances assorties de conditions particuli\u00e8res": { + "Avances bloqu\u00e9es pour augmentation du capital": { + "account_number": "1671" + }, + "Avances conditionn\u00e9es par l\u2019\u00c9tat": { + "account_number": "1672" + }, + "Avances conditionn\u00e9es par les autres organismes africains": { + "account_number": "1673" + }, + "Avances conditionn\u00e9es par les organismes internationaux": { + "account_number": "1674" + }, + "account_number": "167" + }, + "Autres emprunts et dettes": { + "Rentes viag\u00e8res capitalis\u00e9es": { + "account_number": "1681" + }, + "Billets de fonds": { + "account_number": "1682" + }, + "Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": { + "account_number": "1683" + }, + "Emprunts participatifs": { + "account_number": "1684" + }, + "Participation des travailleurs aux b\u00e9n\u00e9fices": { + "account_number": "1685" + }, + "Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": { + "account_number": "1686" + }, + "account_number": "168" + }, + "account_number": "16" + }, + "Dettes de location acquisition": { + "Dettes de location acquisition / cr\u00e9dit bail immobilier": { + "account_number": "172" + }, + "Dettes de location acquisition / cr\u00e9dit bail mobilier": { + "account_number": "173" + }, + "Dettes de location acquisition / location de vente": { + "account_number": "174" + }, + "Int\u00e9r\u00eats courus": { + "Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "1762" + }, + "Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "1763" + }, + "Sur dettes de location acquisition / location-vente": { + "account_number": "1764" + }, + "Sur autres dettes de location acquisition": { + "account_number": "1768" + }, + "account_number": "176" + }, + "Autres dettes de location acquisition": { + "account_number": "178" + }, + "account_number": "17" + }, + "Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "Dettes li\u00e9es \u00e0 des participations": { + "Dettes li\u00e9es \u00e0 des participations (groupe)": { + "account_number": "1811" + }, + "Dettes li\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "1812" + }, + "account_number": "181" + }, + "Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "182" + }, + "Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": { + "account_number": "183" + }, + "Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "184" + }, + "Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "185" + }, + "Comptes de liaison charges": { + "account_number": "186" + }, + "Comptes de liaison produits": { + "account_number": "187" + }, + "Comptes de liaison des soci\u00e9t\u00e9s en participation": { + "account_number": "188" + }, + "account_number": "18" + }, + "Provisions pour risques et charges": { + "Provisions pour litiges": { + "account_number": "191" + }, + "Provisions pour garanties donn\u00e9es aux clients": { + "account_number": "192" + }, + "Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": { + "account_number": "193" + }, + "Provisions pour pertes de change": { + "account_number": "194" + }, + "Provisions pour imp\u00f4ts": { + "account_number": "195" + }, + "Provisions pour pensions et obligations similaires": { + "Provisions pour pensions et obligations similaires engagement de retraite": { + "account_number": "1961" + }, + "Actif du r\u00e9gime de retraite": { + "account_number": "1962" + }, + "account_number": "196" + }, + "Provisions pour restructuration": { + "account_number": "197" + }, + "Autres provisions pour risques et charges": { + "Provisions pour amendes et p\u00e9nalit\u00e9s": { + "account_number": "1981" + }, + "Provisions pour propre assureur": { + "account_number": "1983" + }, + "Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "1984" + }, + "Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": { + "account_number": "1985" + }, + "Provisions pour divers risques et charges": { + "account_number": "1988" + }, + "account_number": "198" + }, + "account_number": "19" + }, + "root_type": "Equity", + "account_number": "1" + }, + "Comptes d\u2019actif immobilis\u00e9": { + "Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "211" + }, + "Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "Brevets": { + "account_type": "Fixed Asset", + "account_number": "2121" + }, + "Licences": { + "account_type": "Fixed Asset", + "account_number": "2122" + }, + "Concessions de service public": { + "account_type": "Fixed Asset", + "account_number": "2123" + }, + "Autres concessions et droits similaires": { + "account_type": "Fixed Asset", + "account_number": "2128" + }, + "account_number": "212" + }, + "Logiciels et sites internet": { + "account_type": "Fixed Asset", + "Logiciels": { + "account_type": "Fixed Asset", + "account_number": "2131" + }, + "Sites internet": { + "account_type": "Fixed Asset", + "account_number": "2132" + }, + "account_number": "213" + }, + "Marques": { + "account_type": "Fixed Asset", + "account_number": "214" + }, + "Fonds commercial": { + "account_type": "Fixed Asset", + "account_number": "215" + }, + "Droit au bail": { + "account_type": "Fixed Asset", + "account_number": "216" + }, + "Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset", + "account_number": "217" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset", + "account_number": "2181" + }, + "Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset", + "account_number": "2182" + }, + "Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset", + "account_number": "2183" + }, + "Co\u00fbts des franchises": { + "account_type": "Fixed Asset", + "account_number": "2184" + }, + "Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset", + "account_number": "2188" + }, + "account_number": "218" + }, + "Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "2191" + }, + "Logiciels et internet": { + "account_type": "Fixed Asset", + "account_number": "2193" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "account_number": "2198" + }, + "account_number": "219" + }, + "account_number": "21" + }, + "Terrains": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset", + "account_number": "2211" + }, + "Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset", + "account_number": "2212" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2218" + }, + "account_number": "221" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset", + "account_number": "2221" + }, + "Autres terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2228" + }, + "account_number": "222" + }, + "Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset", + "account_number": "2231" + }, + "Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset", + "account_number": "2232" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2234" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2235" + }, + "Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "account_number": "2238" + }, + "account_number": "223" + }, + "Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset", + "account_number": "2241" + }, + "Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset", + "account_number": "2245" + }, + "Autres travaux": { + "account_type": "Fixed Asset", + "account_number": "2248" + }, + "account_number": "224" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "Carri\u00e8res": { + "account_type": "Fixed Asset", + "account_number": "2251" + }, + "account_number": "225" + }, + "Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "Parkings": { + "account_type": "Fixed Asset", + "account_number": "2261" + }, + "account_number": "226" + }, + "Terrains mis en concession": { + "account_type": "Fixed Asset", + "account_number": "227" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "Terrains immeubles de placement": { + "account_type": "Fixed Asset", + "account_number": "2281" + }, + "Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset", + "account_number": "2285" + }, + "Terrains de location acquisition": { + "account_type": "Fixed Asset", + "account_number": "2286" + }, + "Divers terrains": { + "account_type": "Fixed Asset", + "account_number": "2288" + }, + "account_number": "228" + }, + "Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "account_number": "2291" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2292" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "account_number": "2295" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2298" + }, + "account_number": "229" + }, + "account_number": "22" + }, + "B\u00e2timents, installations techniques et agencements": { + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "B\u00e2timents industriels": { + "account_number": "2311" + }, + "B\u00e2timents agricoles": { + "account_number": "2312" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2313" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2314" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2315" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2316" + }, + "account_number": "231" + }, + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "B\u00e2timents industriels": { + "account_number": "2321" + }, + "B\u00e2timents agricoles": { + "account_number": "2322" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2323" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2324" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2325" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2326" + }, + "account_number": "232" + }, + "Ouvrages d\u2019infrastructure": { + "Voies de terre": { + "account_number": "2331" + }, + "Voies de fer": { + "account_number": "2332" + }, + "Voies d\u2019eau": { + "account_number": "2333" + }, + "Barrages, Digues": { + "account_number": "2334" + }, + "Pistes d\u2019a\u00e9rodrome": { + "account_number": "2335" + }, + "Autres ouvrages d\u2019infrastructures": { + "account_number": "2338" + }, + "account_number": "233" + }, + "Am\u00e9nagements, agencements et installations techniques": { + "Installations complexes sp\u00e9cialis\u00e9es sur sol propre": { + "account_number": "2341" + }, + "Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": { + "account_number": "2342" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": { + "account_number": "2343" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": { + "account_number": "2344" + }, + "Am\u00e9nagements et agencements des b\u00e2timents": { + "account_number": "2345" + }, + "account_number": "234" + }, + "Am\u00e9nagements de bureaux": { + "Installations g\u00e9n\u00e9rales": { + "account_number": "2351" + }, + "Autres am\u00e9nagements de bureaux": { + "account_number": "2358" + }, + "account_number": "235" + }, + "B\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "237" + }, + "Autres installations et agencements": { + "account_number": "238" + }, + "B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "B\u00e2timents en cours": { + "account_number": "2391" + }, + "Installations en cours": { + "account_number": "2392" + }, + "Ouvrages d\u2019infrastructure en cours": { + "account_number": "2393" + }, + "Am\u00e9nagements et agencements et installations techniques en cours": { + "account_number": "2394" + }, + "Am\u00e9nagements de bureaux en cours": { + "account_number": "2395" + }, + "Autres installations et agencements en cours": { + "account_number": "2398" + }, + "account_number": "239" + }, + "account_number": "23" + }, + "Mat\u00e9riel, mobilier et actifs biologiques": { + "Mat\u00e9riel et outillage industriel et commercial": { + "Mat\u00e9riel industriel": { + "account_number": "2411" + }, + "Outillage industriel": { + "account_number": "2412" + }, + "Mat\u00e9riel commercial": { + "account_number": "2413" + }, + "Outillage commercial": { + "account_number": "2414" + }, + "Mat\u00e9riel & outillage industriel et commercial de location-acquisition": { + "account_number": "2416" + }, + "account_number": "241" + }, + "Mat\u00e9riel et outillage agricole": { + "Mat\u00e9riel agricole": { + "account_number": "2421" + }, + "Outillage agricole": { + "account_number": "2422" + }, + "Mat\u00e9riel & outillage agricole de location-acquisition": { + "account_number": "2426" + }, + "account_number": "242" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "243" + }, + "Mat\u00e9riel et mobilier": { + "Mat\u00e9riel de bureau": { + "account_number": "2441" + }, + "Mat\u00e9riel informatique": { + "account_number": "2442" + }, + "Mat\u00e9riel bureautique": { + "account_number": "2443" + }, + "Mobilier de bureau": { + "account_number": "2444" + }, + "Mat\u00e9riel et mobilier immeubles de placement": { + "account_number": "2445" + }, + "Mat\u00e9riel et mobilier de location acquisition": { + "account_number": "2446" + }, + "Mat\u00e9riel et mobilier des logements du personnel": { + "account_number": "2447" + }, + "account_number": "244" + }, + "Mat\u00e9riel de transport": { + "Mat\u00e9riel automobile": { + "account_number": "2451" + }, + "Mat\u00e9riel ferroviaire": { + "account_number": "2452" + }, + "Mat\u00e9riel fluvial, lagunaire": { + "account_number": "2453" + }, + "Mat\u00e9riel naval": { + "account_number": "2454" + }, + "Mat\u00e9riel a\u00e9rien": { + "account_number": "2455" + }, + "Mat\u00e9riel de transport de location-acquisition": { + "account_number": "2456" + }, + "Mat\u00e9riel hippomobile": { + "account_number": "2457" + }, + "Autres mat\u00e9riels de transport": { + "account_number": "2458" + }, + "account_number": "245" + }, + "Actifs biologiques": { + "Cheptel, animaux de trait": { + "account_number": "2461" + }, + "Cheptel, animaux reproducteurs": { + "account_number": "2462" + }, + "Animaux de garde": { + "account_number": "2463" + }, + "Plantations agricoles": { + "account_number": "2465" + }, + "Autres actifs biologiques": { + "account_number": "2468" + }, + "account_number": "246" + }, + "Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "Agencements et am\u00e9nagements du mat\u00e9riel": { + "account_number": "2471" + }, + "Agencements et am\u00e9nagements des actifs biologiques": { + "account_number": "2472" + }, + "Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2478" + }, + "account_number": "247" + }, + "Autres mat\u00e9riels et mobiliers": { + "Collections et \u0153uvres d\u2019art": { + "account_number": "2481" + }, + "Divers mat\u00e9riels mobiliers": { + "account_number": "2488" + }, + "account_number": "248" + }, + "Mat\u00e9riels et actifs biologiques en cours": { + "Mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2491" + }, + "Mat\u00e9riel et outillage agricole": { + "account_number": "2492" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2493" + }, + "Mat\u00e9riel et mobilier de bureau": { + "account_number": "2494" + }, + "Mat\u00e9riel de transport": { + "account_number": "2495" + }, + "Actifs biologiques": { + "account_number": "2496" + }, + "Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2497" + }, + "Autres mat\u00e9riels et actifs biologiques en cours": { + "account_number": "2498" + }, + "account_number": "249" + }, + "account_number": "24" + }, + "Avances et acomptes vers\u00e9s sur immobilisations": { + "Avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "251" + }, + "Avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "252" + }, + "account_number": "25" + }, + "Titres de participation": { + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "261" + }, + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "262" + }, + "Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "263" + }, + "Participations dans des organismes professionnels": { + "account_number": "265" + }, + "Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "266" + }, + "Autres titres de participation": { + "account_number": "268" + }, + "account_number": "26" + }, + "Autres immobilisations financi\u00e8res": { + "Pr\u00eats et cr\u00e9ances": { + "Pr\u00eats participatifs": { + "account_number": "2711" + }, + "Pr\u00eats aux associ\u00e9s": { + "account_number": "2712" + }, + "Billets de fonds": { + "account_number": "2713" + }, + "Titres pr\u00eat\u00e9s": { + "account_number": "2714" + }, + "Autres pr\u00eats et cr\u00e9ances": { + "account_number": "2718" + }, + "account_number": "271" + }, + "Pr\u00eats au personnel": { + "Pr\u00eats immobiliers": { + "account_number": "2721" + }, + "Pr\u00eats mobiliers et d\u2019installation": { + "account_number": "2722" + }, + "Autres pr\u00eats au personnel": { + "account_number": "2728" + }, + "account_number": "272" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "Retenues de garantie": { + "account_number": "2731" + }, + "Fonds r\u00e9glement\u00e9": { + "account_number": "2733" + }, + "Cr\u00e9ances sur le conc\u00e9dant": { + "account_number": "2734" + }, + "Autres cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2738" + }, + "account_number": "273" + }, + "Titres immobilis\u00e9s": { + "Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": { + "account_number": "2741" + }, + "Titres participatifs": { + "account_number": "2742" + }, + "Certificats d\u2019investissement": { + "account_number": "2743" + }, + "Parts de fonds commun de placement (FCP)": { + "account_number": "2744" + }, + "Obligations": { + "account_number": "2745" + }, + "Actions ou parts propres": { + "account_number": "2746" + }, + "Autres titres immobilis\u00e9s": { + "account_number": "2748" + }, + "account_number": "274" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "D\u00e9p\u00f4ts pour loyers d\u2019avance": { + "account_number": "2751" + }, + "D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": { + "account_number": "2752" + }, + "D\u00e9p\u00f4ts pour l\u2019eau": { + "account_number": "2753" + }, + "D\u00e9p\u00f4ts pour le gaz": { + "account_number": "2754" + }, + "D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": { + "account_number": "2755" + }, + "Cautionnements sur march\u00e9s publics": { + "account_number": "2756" + }, + "Cautionnements sur autres op\u00e9rations": { + "account_number": "2757" + }, + "Autres d\u00e9p\u00f4ts et cautionnements": { + "account_number": "2758" + }, + "account_number": "275" + }, + "Int\u00e9r\u00eats courus": { + "Pr\u00eats et cr\u00e9ances non commerciales": { + "account_number": "2761" + }, + "Pr\u00eats au personnel": { + "account_number": "2762" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2763" + }, + "Titres immobilis\u00e9s": { + "account_number": "2764" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2765" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "account_number": "2767" + }, + "Immobilisations financi\u00e8res diverses": { + "account_number": "2768" + }, + "account_number": "276" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": { + "account_number": "2771" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "2772" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "2773" + }, + "Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "2774" + }, + "account_number": "277" + }, + "Immobilisations financi\u00e8res diverses": { + "Cr\u00e9ances diverses groupe": { + "account_number": "2781" + }, + "Cr\u00e9ances diverses hors groupe": { + "account_number": "2782" + }, + "Banques d\u00e9p\u00f4ts \u00e0 terme": { + "account_number": "2784" + }, + "Or et m\u00e9taux pr\u00e9cieux": { + "account_number": "2785" + }, + "Autres immobilisations financi\u00e8res": { + "account_number": "2788" + }, + "account_number": "278" + }, + "account_number": "27" + }, + "Amortissements": { + "account_type": "Accumulated Depreciation", + "Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation", + "account_number": "2811" + }, + "Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation", + "account_number": "2812" + }, + "Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation", + "account_number": "2813" + }, + "Amortissements des marques": { + "account_type": "Accumulated Depreciation", + "account_number": "2814" + }, + "Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation", + "account_number": "2815" + }, + "Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation", + "account_number": "2816" + }, + "Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation", + "account_number": "2817" + }, + "Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation", + "account_number": "2818" + }, + "account_number": "281" + }, + "Amortissements des terrains": { + "Amortissements des travaux de mise en valeur des terrains": { + "account_number": "2824" + }, + "account_number": "282" + }, + "Amortissements des b\u00e2timents, installations techniques et agencements": { + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2831" + }, + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2832" + }, + "Amortissements des ouvrages d\u2019infrastructure": { + "account_number": "2833" + }, + "Amortissements des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2834" + }, + "Amortissements des am\u00e9nagements de bureaux": { + "account_number": "2835" + }, + "Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2837" + }, + "Amortissements des autres installations et agencements": { + "account_number": "2838" + }, + "account_number": "283" + }, + "Amortissements du mat\u00e9riel": { + "Amortissements du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2841" + }, + "Amortissements du mat\u00e9riel et outillage agricole": { + "account_number": "2842" + }, + "Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2843" + }, + "Amortissements du mat\u00e9riel et mobilier": { + "account_number": "2844" + }, + "Amortissements du mat\u00e9riel de transport": { + "account_number": "2845" + }, + "Amortissements des actifs biologiques": { + "account_number": "2846" + }, + "Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2847" + }, + "Amortissements des autres mat\u00e9riels": { + "account_number": "2848" + }, + "account_number": "284" + }, + "account_number": "28" + }, + "D\u00e9pr\u00e9ciations des immobilisations": { + "D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": { + "account_number": "2911" + }, + "D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": { + "account_number": "2912" + }, + "D\u00e9pr\u00e9ciations des logiciels et sites internet": { + "account_number": "2913" + }, + "D\u00e9pr\u00e9ciations des marques": { + "account_number": "2914" + }, + "D\u00e9pr\u00e9ciations du fonds commercial": { + "account_number": "2915" + }, + "D\u00e9pr\u00e9ciations du droit au bail": { + "account_number": "2916" + }, + "D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": { + "account_number": "2917" + }, + "D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": { + "account_number": "2918" + }, + "D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": { + "account_number": "2919" + }, + "account_number": "291" + }, + "D\u00e9pr\u00e9ciations des terrains": { + "D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": { + "account_number": "2921" + }, + "D\u00e9pr\u00e9ciations des terrains nus": { + "account_number": "2922" + }, + "D\u00e9pr\u00e9ciations des terrains b\u00e2tis": { + "account_number": "2923" + }, + "D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": { + "account_number": "2924" + }, + "D\u00e9pr\u00e9ciations des terrains de gisement": { + "account_number": "2925" + }, + "D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": { + "account_number": "2926" + }, + "D\u00e9pr\u00e9ciations des terrains mis en concession": { + "account_number": "2927" + }, + "D\u00e9pr\u00e9ciations des autres terrains": { + "account_number": "2928" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": { + "account_number": "2929" + }, + "account_number": "292" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2931" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2932" + }, + "D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": { + "account_number": "2933" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2934" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": { + "account_number": "2935" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2937" + }, + "D\u00e9pr\u00e9ciations des autres installations et agencements": { + "account_number": "2938" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": { + "account_number": "2939" + }, + "account_number": "293" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2941" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": { + "account_number": "2942" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2943" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": { + "account_number": "2944" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": { + "account_number": "2945" + }, + "D\u00e9pr\u00e9ciations des actifs biologiques": { + "account_number": "2946" + }, + "D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2947" + }, + "D\u00e9pr\u00e9ciations des autres mat\u00e9riels": { + "account_number": "2948" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": { + "account_number": "2949" + }, + "account_number": "294" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "2951" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "2952" + }, + "account_number": "295" + }, + "D\u00e9pr\u00e9ciations des titres de participation": { + "D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "2961" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "2962" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "2963" + }, + "D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": { + "account_number": "2965" + }, + "D\u00e9pr\u00e9ciations des parts dans des GIE": { + "account_number": "2966" + }, + "D\u00e9pr\u00e9ciations des autres titres de participation": { + "account_number": "2968" + }, + "account_number": "296" + }, + "D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": { + "account_number": "2971" + }, + "D\u00e9pr\u00e9ciations des pr\u00eats au personnel": { + "account_number": "2972" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2973" + }, + "D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": { + "account_number": "2974" + }, + "D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2975" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "account_number": "2977" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": { + "account_number": "2978" + }, + "account_number": "297" + }, + "account_number": "29" + }, + "root_type": "Asset", + "account_number": "2" + }, + "Comptes de Stocks": { + "Marchandises": { + "Marchandises A": { + "Marchandises A1": { + "account_number": "3111" + }, + "Marchandises A2": { + "account_number": "3112" + }, + "account_number": "311" + }, + "Marchandises B": { + "Marchandises B1": { + "account_number": "3121" + }, + "Marchandises B2": { + "account_number": "3122" + }, + "account_number": "312" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3131" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3132" + }, + "account_number": "313" + }, + "Marchandises hors activit\u00e9s ordinaires (HAO)": { + "account_number": "318" + }, + "account_number": "31" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Mati\u00e8res A": { + "account_number": "321" + }, + "Mati\u00e8res B": { + "account_number": "322" + }, + "Fournitures (A, B)": { + "account_number": "323" + }, + "account_number": "32" + }, + "Autres approvisionnements": { + "Mati\u00e8res consommables": { + "account_number": "331" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "332" + }, + "Fournitures de magasin": { + "account_number": "333" + }, + "Fournitures de bureau": { + "account_number": "334" + }, + "Emballages": { + "Emballages perdus": { + "account_number": "3351" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "3352" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "3353" + }, + "Autres emballages": { + "account_number": "3358" + }, + "account_number": "335" + }, + "Autres mati\u00e8res": { + "account_number": "338" + }, + "account_number": "33" + }, + "Produits en cours": { + "Produits en cours": { + "Produits en cours P1": { + "account_number": "3411" + }, + "Produits en cours P2": { + "account_number": "3412" + }, + "account_number": "341" + }, + "Travaux en cours": { + "Travaux en cours T1": { + "account_number": "3421" + }, + "Travaux en cours T2": { + "account_number": "3422" + }, + "account_number": "342" + }, + "Produits interm\u00e9diaires en cours": { + "Produits interm\u00e9diaires A": { + "account_number": "3431" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3432" + }, + "account_number": "343" + }, + "Produits r\u00e9siduels en cours": { + "Produits r\u00e9siduels A": { + "account_number": "3441" + }, + "Produits r\u00e9siduels B": { + "account_number": "3442" + }, + "account_number": "344" + }, + "Actifs biologiques en cours": { + "Animaux": { + "account_number": "3451" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3452" + }, + "account_number": "345" + }, + "account_number": "34" + }, + "Services en cours": { + "\u00c9tudes en cours": { + "\u00c9tudes en cours E1": { + "account_number": "3511" + }, + "\u00c9tudes en cours E2": { + "account_number": "3512" + }, + "account_number": "351" + }, + "Prestations de services en cours": { + "Prestations de services S1": { + "account_number": "3521" + }, + "Prestations de services S2": { + "account_number": "3522" + } + }, + "account_number": "35" + }, + "Produits finis": { + "Produits finis A": { + "account_number": "361" + }, + "Produits finis B": { + "account_number": "362" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3631" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3632" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3638" + }, + "account_number": "363" + }, + "account_number": "36" + }, + "Produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "Produits interm\u00e9diaires A": { + "account_number": "3711" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3712" + }, + "account_number": "371" + }, + "Produits r\u00e9siduels": { + "D\u00e9chets": { + "account_number": "3721" + }, + "Rebuts": { + "account_number": "3722" + }, + "Mati\u00e8res de R\u00e9cup\u00e9ration": { + "account_number": "3723" + }, + "account_number": "372" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3731" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3732" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3738" + }, + "account_number": "373" + }, + "account_number": "37" + }, + "Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "Marchandises en cours de route": { + "account_number": "381" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": { + "account_number": "382" + }, + "Autres approvisionnements en cours de route": { + "account_number": "383" + }, + "Produits finis en cours de route": { + "account_number": "386" + }, + "Stock en consignation ou en d\u00e9p\u00f4t": { + "Stock en consignation": { + "account_number": "3871" + }, + "Stock en d\u00e9p\u00f4t": { + "account_number": "3872" + }, + "account_number": "387" + }, + "Stock provenant d\u2019immobilisations mises hors service ou au rebut": { + "account_number": "388" + }, + "account_number": "38" + }, + "D\u00e9pr\u00e9ciations des stocks et encours de production": { + "D\u00e9pr\u00e9ciations des stocks de marchandises": { + "account_number": "391" + }, + "D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "392" + }, + "D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": { + "account_number": "393" + }, + "D\u00e9pr\u00e9ciations des productions en cours": { + "account_number": "394" + }, + "D\u00e9pr\u00e9ciations des services en cours": { + "account_number": "395" + }, + "D\u00e9pr\u00e9ciations des stocks de produits finis": { + "account_number": "396" + }, + "D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "account_number": "397" + }, + "D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_number": "398" + }, + "account_number": "39" + }, + "root_type": "Asset", + "account_number": "3" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "Fournisseurs d\u00e9biteurs": { + "Fournisseurs Avances et acomptes vers\u00e9s": { + "account_number": "4091" + }, + "Fournisseurs Groupe avances et acomptes vers\u00e9s": { + "account_number": "4092" + }, + "Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": { + "account_number": "4093" + }, + "Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": { + "account_number": "4094" + }, + "Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": { + "account_number": "4098" + }, + "account_number": "409" + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "Clients": { + "Clients": { + "account_type": "Receivable", + "account_number": "4111" + }, + "Clients groupe": { + "account_type": "Receivable", + "account_number": "4112" + }, + "Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable", + "account_number": "4114" + }, + "Clients, organismes internationaux": { + "account_type": "Receivable", + "account_number": "4115" + }, + "Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable", + "account_number": "4116" + }, + "Client, retenues de garantie": { + "account_type": "Receivable", + "account_number": "4117" + }, + "Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable", + "account_number": "4118" + }, + "account_type": "Receivable", + "account_number": "411" + }, + "Clients, effets \u00e0 recevoir en portefeuille": { + "Clients, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4121" + }, + "Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4122" + }, + "\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4124" + }, + "Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4125" + }, + "account_type": "Receivable", + "account_number": "412" + }, + "Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4131" + }, + "Clients, effets impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4132" + }, + "Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4133" + }, + "Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4138" + }, + "account_type": "Receivable", + "account_number": "413" + }, + "Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4141" + }, + "Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4142" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4146" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4147" + }, + "account_type": "Receivable", + "account_number": "414" + }, + "Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable", + "account_number": "415" + }, + "Cr\u00e9ances clients litigieuses ou douteuses": { + "Cr\u00e9ances litigieuses": { + "account_type": "Receivable", + "account_number": "4161" + }, + "Cr\u00e9ances douteuses": { + "account_type": "Receivable", + "account_number": "4162" + }, + "account_type": "Receivable", + "account_number": "416" + }, + "Clients, produits \u00e0 recevoir": { + "Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable", + "account_number": "4181" + }, + "Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable", + "account_number": "4186" + }, + "account_type": "Receivable", + "account_number": "418" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "Personnel, avances et acomptes": { + "Personnel, avances": { + "account_number": "4211" + }, + "Personnel, acomptes": { + "account_number": "4212" + }, + "Frais avanc\u00e9s et fournitures au personnel": { + "account_number": "4213" + }, + "account_number": "421" + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "Prestations familiales": { + "account_number": "4311" + }, + "Accidents de travail": { + "account_number": "4312" + }, + "Caisse de retraite obligatoire": { + "account_number": "4313" + }, + "Caisse de retraite facultative": { + "account_number": "4314" + }, + "Autres cotisations sociales": { + "account_number": "4318" + } + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "Mutuelle": { + "account_number": "4331" + }, + "Assurances retraite": { + "account_number": "4332" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "4333" + } + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Produits \u00e0 recevoir": { + "account_number": "4387" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "\u00c9tat, TVA factur\u00e9e": { + "TVA factur\u00e9e sur ventes": { + "account_number": "4431" + }, + "TVA factur\u00e9e sur prestations de services": { + "account_number": "4432" + }, + "TVA factur\u00e9e sur travaux": { + "account_number": "4433" + }, + "TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": { + "account_number": "4434" + }, + "TVA sur factures \u00e0 \u00e9tablir": { + "account_number": "4435" + }, + "account_number": "443" + }, + "\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "TVA r\u00e9cup\u00e9rable sur immobilisations": { + "account_number": "4451" + }, + "TVA r\u00e9cup\u00e9rable sur achats": { + "account_number": "4452" + }, + "TVA r\u00e9cup\u00e9rable sur transport": { + "account_number": "4453" + }, + "TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": { + "account_number": "4454" + }, + "TVA r\u00e9cup\u00e9rable sur factures non parvenues": { + "account_number": "4455" + }, + "TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": { + "account_number": "4456" + }, + "account_number": "445" + }, + "\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges \u00e0 payer": { + "account_number": "4486" + }, + "Produits \u00e0 recevoir": { + "account_number": "4487" + }, + "account_number": "448" + }, + "\u00c9tat, cr\u00e9ances et dettes diverses": { + "\u00c9tat, obligations cautionn\u00e9es": { + "account_number": "4491" + }, + "\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": { + "account_number": "4492" + }, + "\u00c9tat, fonds de dotation \u00e0 recevoir": { + "account_number": "4493" + }, + "\u00c9tat, subventions investissement \u00e0 recevoir": { + "account_number": "4494" + }, + "\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": { + "account_number": "4495" + }, + "\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": { + "account_number": "4496" + }, + "\u00c9tat, avances sur subventions": { + "account_number": "4497" + }, + "\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": { + "account_number": "4499" + }, + "account_number": "449" + } + }, + "45-Organismes internationaux (ACTIF)": { + "Op\u00e9rations avec les organismes africains": { + "account_number": "451" + }, + "Op\u00e9rations avec les autres organismes internationaux": { + "account_number": "452" + }, + "Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "Organismes internationaux, fonds de dotation \u00e0 recevoir": { + "account_number": "4581" + }, + "Organismes internationaux, subventions \u00e0 recevoir": { + "account_number": "4582" + }, + "account_number": "458" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "Apporteurs, capital appel\u00e9, non vers\u00e9": { + "account_number": "4613" + }, + "Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": { + "account_number": "4614" + }, + "Apporteurs, titres \u00e0 \u00e9changer": { + "account_number": "4618" + } + }, + "Apporteurs, restant d\u00fb sur capital appel\u00e9": { + "account_number": "467" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4721" + }, + "Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": { + "account_number": "4726" + } + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "Mandants": { + "account_number": "4731" + }, + "Mandataires": { + "account_number": "4732" + }, + "Commettants": { + "account_number": "4733" + }, + "Commissionnaires": { + "account_number": "4734" + }, + "\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": { + "account_number": "4739" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "Compte de r\u00e9partition p\u00e9riodique des produits": { + "account_number": "4747" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "Compte actif": { + "account_type": "Temporary", + "account_number": "4751" + } + }, + "Charges constat\u00e9es d\u2019avance": { + "account_number": "476" + }, + "478-\u00c9carts de conversion actif": { + "Diminution des cr\u00e9ances d\u2019exploitation": { + "account_number": "4781" + }, + "Diminution des cr\u00e9ances financi\u00e8res": { + "account_number": "4782" + }, + "Augmentation des dettes d\u2019exploitation": { + "account_number": "4783" + }, + "Augmentation des dettes financi\u00e8res": { + "account_number": "4784" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4786" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4788" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "En compte, immobilisations incorporelles": { + "account_number": "4851" + }, + "En compte, immobilisations corporelles": { + "account_number": "4852" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_number": "4853" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_number": "4854" + }, + "Effets escompt\u00e9s non \u00e9chus": { + "account_number": "4855" + }, + "Retenues de garantie": { + "account_number": "4857" + }, + "Factures \u00e0 \u00e9tablir": { + "account_number": "4858" + }, + "account_number": "485" + }, + "Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": { + "account_number": "488" + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "D\u00e9pr\u00e9ciations des comptes clients": { + "Cr\u00e9ances litigieuses": { + "account_number": "4911" + }, + "Cr\u00e9ances douteuses": { + "account_number": "4912" + }, + "account_number": "491" + }, + "D\u00e9pr\u00e9ciations des comptes organismes internationaux": { + "account_number": "495" + }, + "D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "Associ\u00e9s, comptes courants": { + "account_number": "4962" + }, + "Associ\u00e9s, op\u00e9rations faites en commun": { + "account_number": "4963" + }, + "Groupe, comptes courants": { + "account_number": "4966" + }, + "account_number": "496" + }, + "D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": { + "account_number": "497" + }, + "D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "account_number": "4985" + }, + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4986" + }, + "Autres cr\u00e9ances HAO": { + "account_number": "4988" + }, + "account_number": "498" + }, + "Provisions pour risques \u00e0 court terme": { + "Sur op\u00e9rations d\u2019exploitation": { + "account_number": "4991" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "4997" + }, + "Sur op\u00e9rations HAO": { + "account_number": "4998" + }, + "account_number": "499" + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "Fournisseurs, dettes en compte": { + "Fournisseurs": { + "account_type": "Payable", + "account_number": "4011" + }, + "Fournisseurs groupe": { + "account_type": "Payable", + "account_number": "4012" + }, + "Fournisseurs sous-traitants": { + "account_type": "Payable", + "account_number": "4013" + }, + "Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable", + "account_number": "4016" + }, + "Fournisseur, retenues de garantie": { + "account_type": "Payable", + "account_number": "4017" + }, + "account_type": "Payable", + "account_number": "401" + }, + "Fournisseurs, effets \u00e0 payer": { + "Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4021" + }, + "Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4022" + }, + "Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4023" + }, + "account_type": "Payable", + "account_number": "402" + }, + "Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4041" + }, + "Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4042" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4046" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4047" + }, + "account_type": "Payable", + "account_number": "404" + }, + "Fournisseurs, factures non parvenues": { + "Fournisseurs": { + "account_type": "Stock Received But Not Billed", + "account_number": "4081" + }, + "Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed", + "account_number": "4082" + }, + "Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed", + "account_number": "4083" + }, + "Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed", + "account_number": "4086" + }, + "account_type": "Stock Received But Not Billed", + "account_number": "408" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "Clients cr\u00e9diteurs": { + "Clients, avances et acomptes re\u00e7us": { + "account_number": "4191" + }, + "Clients groupe, avances et acomptes re\u00e7us": { + "account_number": "4192" + }, + "Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": { + "account_number": "4194" + }, + "Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": { + "account_number": "4198" + }, + "account_number": "419" + } + }, + "42-Personnel (PASSIF)": { + "Personnel, r\u00e9mun\u00e9rations dues": { + "account_number": "422" + }, + "Personnel, oppositions, saisies-arr\u00eats": { + "Personnel, oppositions": { + "account_number": "4231" + }, + "Personnel, saisies-arr\u00eats": { + "account_number": "4232" + }, + "Personnel, avis \u00e0 tiers d\u00e9tenteur": { + "account_number": "4233" + }, + "account_number": "423" + }, + "Personnel, \u0153uvres sociales internes": { + "Assistance m\u00e9dicale": { + "account_number": "4241" + }, + "Allocations familiales": { + "account_number": "4242" + }, + "Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": { + "account_number": "4245" + }, + "Autres \u0153uvres sociales internes": { + "account_number": "4248" + }, + "account_number": "424" + }, + "Repr\u00e9sentants du personnel": { + "D\u00e9l\u00e9gu\u00e9s du personnel": { + "account_number": "4251" + }, + "Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": { + "account_number": "4252" + }, + "Autres repr\u00e9sentants du personnel": { + "account_number": "4258" + }, + "account_number": "425" + }, + "Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "Participation aux b\u00e9n\u00e9fices": { + "account_number": "4261" + }, + "Participation au capital": { + "account_number": "4264" + }, + "account_number": "426" + }, + "Personnel d\u00e9p\u00f4ts": { + "account_number": "427" + }, + "Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": { + "account_number": "4281" + }, + "Autres charges \u00e0 payer": { + "account_number": "4286" + }, + "Produits \u00e0 recevoir": { + "account_number": "4287" + }, + "account_number": "428" + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges sociales sur gratifications \u00e0 payer": { + "account_number": "4381" + }, + "Charges sociales sur cong\u00e9s \u00e0 payer": { + "account_number": "4382" + }, + "Autres charges \u00e0 payer": { + "account_number": "4386" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": { + "account_number": "441" + }, + "\u00c9tat, autres imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes d\u2019\u00c9tat": { + "account_number": "4421" + }, + "Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": { + "account_number": "4422" + }, + "Imp\u00f4ts et taxes recouvrables sur des obligataires": { + "account_number": "4423" + }, + "Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": { + "account_number": "4424" + }, + "Droits de douane": { + "account_number": "4426" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "4428" + }, + "account_number": "442" + }, + "\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "\u00c9tat, TVA due": { + "account_number": "4441" + }, + "\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": { + "account_number": "4449" + }, + "account_number": "444" + }, + "\u00c9tat, autres taxes sur le chiffre d\u2019affaires": { + "account_number": "446" + }, + "\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": { + "account_number": "4471" + }, + "Imp\u00f4ts sur salaires": { + "account_number": "4472" + }, + "Contribution nationale": { + "account_number": "4473" + }, + "Contribution nationale de solidarit\u00e9": { + "account_number": "4474" + }, + "Autres imp\u00f4ts et contributions": { + "account_number": "4478" + }, + "account_number": "447" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "Apporteurs, apports en nature": { + "account_number": "4611" + }, + "Apporteurs, apports en num\u00e9raire": { + "account_number": "4612" + }, + "Apporteurs, versements re\u00e7us sur augmentation de capital": { + "account_number": "4615" + }, + "Apporteurs, versements anticip\u00e9s": { + "account_number": "4616" + }, + "Apporteurs d\u00e9faillants": { + "account_number": "4617" + }, + "Apporteurs, capital \u00e0 rembourser": { + "account_number": "4619" + } + }, + "462-Associ\u00e9s, comptes courants": { + "Principal": { + "account_number": "4621" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4626" + } + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "Op\u00e9rations courantes": { + "account_number": "4631" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4636" + } + }, + "Associ\u00e9s, dividendes \u00e0 payer": { + "account_number": "465" + }, + "Groupe, comptes courants": { + "account_number": "466" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "D\u00e9biteurs divers": { + "account_number": "4711" + }, + "Cr\u00e9diteurs divers": { + "account_number": "4712" + }, + "Obligataires": { + "account_number": "4713" + }, + "R\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "4715" + }, + "Compte d\u2019affacturage": { + "account_number": "4716" + }, + "D\u00e9biteurs divers retenues de garantie": { + "account_number": "4717" + }, + "Apport, compte de fusion et op\u00e9rations assimil\u00e9es": { + "account_number": "4718" + }, + "Bons de souscription d\u2019actions et d\u2019obligations": { + "account_number": "4719" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "Compte de r\u00e9partition p\u00e9riodique des charges": { + "account_number": "4746" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "Compte passif": { + "account_number": "4752" + } + }, + "Produits constat\u00e9s d\u2019avance": { + "account_number": "477" + }, + "479-\u00c9carts de conversion passif": { + "Augmentation des cr\u00e9ances d\u2019exploitation": { + "account_number": "4791" + }, + "Augmentation des cr\u00e9ances financi\u00e8res": { + "account_number": "4792" + }, + "Diminution des dettes d\u2019exploitation": { + "account_number": "4793" + }, + "Diminution des dettes financi\u00e8res": { + "account_number": "4794" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4797" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4798" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "Fournisseurs d\u2019investissements": { + "Immobilisations incorporelles": { + "account_number": "4811" + }, + "Immobilisations corporelles": { + "account_number": "4812" + }, + "Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": { + "account_number": "4813" + }, + "R\u00e9serve de propri\u00e9t\u00e9": { + "account_number": "4816" + }, + "Retenues de garantie": { + "account_number": "4817" + }, + "Factures non parvenues": { + "account_number": "4818" + }, + "account_number": "481" + }, + "Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "Immobilisations incorporelles": { + "account_number": "4821" + }, + "Immobilisations corporelles": { + "account_number": "4822" + }, + "account_number": "482" + }, + "Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "Produits": { + "account_number": "4887" + }, + "account_number": "484" + } + }, + "root_type": "Liability" + }, + "Comptes de tr\u00e9sorerie": { + "Titres de placement": { + "Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "Titres du Tr\u00e9sor \u00e0 court terme": { + "account_number": "5011" + }, + "Titres d\u2019organismes financiers": { + "account_number": "5012" + }, + "Bons de caisse \u00e0 court terme": { + "account_number": "5013" + }, + "Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": { + "account_number": "5016" + }, + "account_number": "501" + }, + "Actions": { + "Actions ou parts propres": { + "account_number": "5021" + }, + "Actions cot\u00e9es": { + "account_number": "5022" + }, + "Actions non cot\u00e9es": { + "account_number": "5023" + }, + "Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": { + "account_number": "5024" + }, + "Autres actions": { + "account_number": "5025" + }, + "Frais d\u2019acquisition des actions": { + "account_number": "5026" + }, + "account_number": "502" + }, + "Obligations": { + "Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": { + "account_number": "5031" + }, + "Obligations cot\u00e9es": { + "account_number": "5032" + }, + "Obligations non cot\u00e9es": { + "account_number": "5033" + }, + "Autres obligations": { + "account_number": "5035" + }, + "Frais d\u2019acquisition des obligations": { + "account_number": "5036" + }, + "account_number": "503" + }, + "Bons de souscription": { + "Bons de souscription d\u2019actions": { + "account_number": "5042" + }, + "Bons de souscription d\u2019obligations": { + "account_number": "5043" + }, + "account_number": "504" + }, + "Titres n\u00e9gociables hors r\u00e9gion": { + "account_number": "505" + }, + "Int\u00e9r\u00eats courus": { + "Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": { + "account_number": "5061" + }, + "Actions": { + "account_number": "5062" + }, + "Obligations": { + "account_number": "5063" + }, + "account_number": "506" + }, + "Autres titres de placement et cr\u00e9ances assimil\u00e9es": { + "account_number": "508" + }, + "account_number": "50" + }, + "Valeurs \u00e0 encaisser": { + "Effets \u00e0 encaisser": { + "account_number": "511" + }, + "Effets \u00e0 l\u2019encaissement": { + "account_number": "512" + }, + "Ch\u00e8ques \u00e0 encaisser": { + "account_number": "513" + }, + "Ch\u00e8ques \u00e0 l\u2019encaissement": { + "account_number": "514" + }, + "Cartes de cr\u00e9dit \u00e0 encaisser": { + "account_number": "515" + }, + "Autres valeurs \u00e0 l\u2019encaissement": { + "Warrants": { + "account_number": "5181" + }, + "Billets de fonds": { + "account_number": "5182" + }, + "Ch\u00e8ques de voyage": { + "account_number": "5185" + }, + "Coupons \u00e9chus": { + "account_number": "5186" + }, + "Int\u00e9r\u00eats \u00e9chus des obligations": { + "account_number": "5187" + }, + "account_number": "518" + }, + "account_number": "51" + }, + "Banques": { + "Banques locales": { + "Banques en monnaie nationale": { + "account_type": "Bank", + "account_number": "5211" + }, + "Banques en devises": { + "account_type": "Bank", + "account_number": "5215" + }, + "account_type": "Bank", + "account_number": "521" + }, + "Banques autres \u00c9tats r\u00e9gion": { + "account_number": "522" + }, + "Banques autres \u00c9tats zone mon\u00e9taire": { + "account_number": "523" + }, + "Banques hors zone mon\u00e9taire": { + "account_number": "524" + }, + "Banques d\u00e9p\u00f4t \u00e0 terme": { + "account_number": "525" + }, + "Banques, int\u00e9r\u00eats courus": { + "Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": { + "account_number": "5261" + }, + "Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": { + "account_number": "5267" + }, + "account_number": "526" + }, + "account_number": "52" + }, + "\u00c9tablissements financiers et assimil\u00e9s": { + "Ch\u00e8ques postaux": { + "account_number": "531" + }, + "Tr\u00e9sor": { + "account_number": "532" + }, + "Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": { + "account_number": "533" + }, + "\u00c9tablissements financiers, int\u00e9r\u00eats courus": { + "account_number": "536" + }, + "Autres organismes financiers": { + "account_number": "538" + }, + "account_number": "53" + }, + "Instruments de tr\u00e9sorerie": { + "Options de taux d\u2019int\u00e9r\u00eat": { + "account_number": "541" + }, + "Options de taux de change": { + "account_number": "542" + }, + "Options de taux boursiers": { + "account_number": "543" + }, + "Instruments de march\u00e9s \u00e0 terme": { + "account_number": "544" + }, + "Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": { + "account_number": "545" + }, + "account_number": "54" + }, + "Instruments de monnaie \u00e9lectronique": { + "Monnaie \u00e9lectronique carte carburant": { + "account_number": "551" + }, + "Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": { + "account_number": "552" + }, + "Monnaie \u00e9lectronique carte p\u00e9age": { + "account_number": "553" + }, + "Porte-monnaie \u00e9lectronique": { + "account_number": "554" + }, + "Autres instruments de monnaies \u00e9lectroniques": { + "account_number": "558" + }, + "account_number": "55" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "Cr\u00e9dits de tr\u00e9sorerie": { + "account_number": "561" + }, + "Escompte de cr\u00e9dits de campagne": { + "account_number": "564" + }, + "Escompte de cr\u00e9dits ordinaires": { + "account_number": "565" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": { + "account_number": "566" + }, + "account_number": "56" + }, + "Caisse": { + "Caisse si\u00e8ge social": { + "Caisse en monnaie nationale": { + "account_number": "5711" + }, + "Caisse en devises": { + "account_number": "5712" + }, + "account_number": "571" + }, + "Caisse succursale A": { + "En monnaie nationale": { + "account_number": "5721" + }, + "En devises": { + "account_number": "5722" + }, + "account_number": "572" + }, + "Caisse succursale B": { + "En monnaie nationale": { + "account_number": "5731" + }, + "En devises": { + "account_number": "5732" + }, + "account_number": "573" + }, + "account_number": "57" + }, + "R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "R\u00e9gies d\u2019avance": { + "account_number": "581" + }, + "Accr\u00e9ditifs": { + "account_number": "582" + }, + "Virements de fonds": { + "account_number": "585" + }, + "Autres virements internes": { + "account_number": "588" + }, + "account_number": "58" + }, + "D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "D\u00e9pr\u00e9ciations des titres de placement": { + "account_number": "590" + }, + "D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": { + "account_number": "591" + }, + "D\u00e9pr\u00e9ciations des comptes banques": { + "account_number": "592" + }, + "D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": { + "account_number": "593" + }, + "D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": { + "account_number": "594" + }, + "Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": { + "account_number": "599" + }, + "account_number": "59" + }, + "root_type": "Asset", + "account_number": "5" + }, + "Comptes de charges des activit\u00e9s ordinaires": { + "Achats et variations de stocks": { + "Achats de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "6011" + }, + "Hors R\u00e9gion": { + "account_number": "6012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6014" + }, + "Frais sur achats": { + "account_number": "6015" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6019" + }, + "account_number": "601" + }, + "Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Dans la R\u00e9gion": { + "account_number": "6021" + }, + "Hors R\u00e9gion": { + "account_number": "6022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6024" + }, + "Frais sur achats": { + "account_number": "6025" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6029" + }, + "account_number": "602" + }, + "Variations des stocks de biens achet\u00e9s": { + "Variations des stocks de marchandises": { + "account_number": "6031" + }, + "Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "6032" + }, + "Variations des stocks d\u2019autres approvisionnements": { + "account_number": "6033" + }, + "account_number": "603" + }, + "Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "Mati\u00e8res consommables": { + "account_number": "6041" + }, + "Mati\u00e8res combustibles": { + "account_number": "6042" + }, + "Produits d\u2019entretien": { + "account_number": "6043" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "6044" + }, + "Frais sur achat": { + "account_number": "6045" + }, + "Fournitures de magasin": { + "account_number": "6046" + }, + "Fournitures de bureau": { + "account_number": "6047" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6049" + }, + "account_number": "604" + }, + "Autres achats": { + "Fournitures non stockables Eau": { + "account_number": "6051" + }, + "Fournitures non stockables \u00c9lectricit\u00e9": { + "account_number": "6052" + }, + "Fournitures non stockables Autres \u00e9nergies": { + "account_number": "6053" + }, + "Fournitures d\u2019entretien non stockables": { + "account_number": "6054" + }, + "Fournitures de bureau non stockables": { + "account_number": "6055" + }, + "Achats de petit mat\u00e9riel et outillage": { + "account_number": "6056" + }, + "Achats d\u2019\u00e9tudes et prestations de services": { + "account_number": "6057" + }, + "Achats de travaux, mat\u00e9riels et \u00e9quipements": { + "account_number": "6058" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6059" + }, + "account_number": "605" + }, + "Achats d\u2019emballages": { + "Emballages perdus": { + "account_number": "6081" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "6082" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "6083" + }, + "Frais sur achats": { + "account_number": "6085" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6089" + }, + "account_number": "608" + }, + "account_number": "60" + }, + "Transports": { + "Transports sur ventes": { + "account_number": "612" + }, + "Transports pour le compte de tiers": { + "account_number": "613" + }, + "Transports du personnel": { + "account_number": "614" + }, + "Transports de plis": { + "account_number": "616" + }, + "Autres frais de transport": { + "Voyages et d\u00e9placements": { + "account_number": "6181" + }, + "Transports entre \u00e9tablissements ou chantiers": { + "account_number": "6182" + }, + "Transports administratifs": { + "account_number": "6183" + }, + "account_number": "618" + }, + "account_number": "61" + }, + "Services ext\u00e9rieurs": { + "Sous-traitance g\u00e9n\u00e9rale": { + "account_number": "621" + }, + "Locations, charges locatives": { + "Locations de terrains": { + "account_number": "6221" + }, + "Locations de b\u00e2timents": { + "account_number": "6222" + }, + "Locations de mat\u00e9riels et outillages": { + "account_number": "6223" + }, + "Malis sur emballages": { + "account_number": "6224" + }, + "Locations d\u2019emballages": { + "account_number": "6225" + }, + "Fermages et loyers du foncier": { + "account_number": "6226" + }, + "Locations et charges locatives diverses": { + "account_number": "6228" + }, + "account_number": "622" + }, + "Redevances de location acquisition": { + "Cr\u00e9dit-bail immobilier": { + "account_number": "6232" + }, + "Cr\u00e9dit-bail mobilier": { + "account_number": "6233" + }, + "Location-vente": { + "account_number": "6234" + }, + "Autres contrats de location acquisition": { + "account_number": "6238" + }, + "account_number": "623" + }, + "Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "Entretien et r\u00e9parations des biens immobiliers": { + "account_number": "6241" + }, + "Entretien et r\u00e9parations des biens mobiliers": { + "account_number": "6242" + }, + "Maintenance": { + "account_number": "6243" + }, + "Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "6244" + }, + "Autres entretiens et r\u00e9parations": { + "account_number": "6248" + }, + "account_number": "624" + }, + "Primes d\u2019assurance": { + "Assurances multirisques": { + "account_number": "6251" + }, + "Assurances mat\u00e9riel de transport": { + "account_number": "6252" + }, + "Assurances risques d\u2019exploitation": { + "account_number": "6253" + }, + "Assurances responsabilit\u00e9 du producteur": { + "account_number": "6254" + }, + "Assurances insolvabilit\u00e9 clients": { + "account_number": "6255" + }, + "Assurances transport sur ventes": { + "account_number": "6257" + }, + "Autres primes d\u2019assurances": { + "account_number": "6258" + }, + "account_number": "625" + }, + "\u00c9tudes, recherches et documentation": { + "\u00c9tudes et recherches": { + "account_number": "6261" + }, + "Documentation g\u00e9n\u00e9rale": { + "account_number": "6265" + }, + "Documentation technique": { + "account_number": "6266" + }, + "account_number": "626" + }, + "Publicit\u00e9, publications, relations publiques": { + "Annonces, insertions": { + "account_number": "6271" + }, + "Catalogues, imprim\u00e9s publicitaires": { + "account_number": "6272" + }, + "\u00c9chantillons": { + "account_number": "6273" + }, + "Foires et expositions": { + "account_number": "6274" + }, + "Publications": { + "account_number": "6275" + }, + "Cadeaux \u00e0 la client\u00e8le": { + "account_number": "6276" + }, + "Frais de colloques, s\u00e9minaires, conf\u00e9rences": { + "account_number": "6277" + }, + "Autres charges de publicit\u00e9 et relations publiques": { + "account_number": "6278" + }, + "account_number": "627" + }, + "Frais de t\u00e9l\u00e9communications": { + "Frais de t\u00e9l\u00e9phone": { + "account_number": "6281" + }, + "Frais de t\u00e9lex": { + "account_number": "6282" + }, + "Frais de t\u00e9l\u00e9copie": { + "account_number": "6283" + }, + "Autres frais de t\u00e9l\u00e9communications": { + "account_number": "6288" + }, + "account_number": "628" + }, + "account_number": "62" + }, + "Autres services ext\u00e9rieurs": { + "Frais bancaires": { + "Frais sur titres (vente, garde)": { + "account_number": "6311" + }, + "Frais sur effets": { + "account_number": "6312" + }, + "Location de coffres": { + "account_number": "6313" + }, + "Commissions d\u2019affacturage": { + "account_number": "6314" + }, + "Commissions sur cartes de cr\u00e9dit": { + "account_number": "6315" + }, + "Frais d\u2019\u00e9mission d\u2019emprunts": { + "account_number": "6316" + }, + "Frais sur instruments monnaie \u00e9lectronique": { + "account_number": "6317" + }, + "Autres frais bancaires": { + "account_number": "6318" + }, + "account_number": "631" + }, + "R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "Commissions et courtages sur ventes": { + "account_number": "6322" + }, + "Honoraires des professions r\u00e9glement\u00e9es": { + "account_number": "6324" + }, + "Frais d\u2019actes et de contentieux": { + "account_number": "6325" + }, + "R\u00e9mun\u00e9rations d\u2019affacturage": { + "account_number": "6326" + }, + "R\u00e9mun\u00e9rations des autres prestataires de services": { + "account_number": "6327" + }, + "Divers frais": { + "account_number": "6328" + }, + "account_number": "632" + }, + "Frais de formation du personnel": { + "account_number": "633" + }, + "Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "Redevances pour brevets, licences": { + "account_number": "6342" + }, + "Redevances pour logiciels": { + "account_number": "6343" + }, + "Redevances pour marques": { + "account_number": "6344" + }, + "Redevances pour sites internet": { + "account_number": "6345" + }, + "Redevances pour concessions, droits et valeurs similaires": { + "account_number": "6346" + }, + "account_number": "634" + }, + "Cotisations": { + "Cotisations": { + "account_number": "6351" + }, + "Concours divers": { + "account_number": "6358" + }, + "account_number": "635" + }, + "R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "Personnel int\u00e9rimaire": { + "account_number": "6371" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6372" + }, + "account_number": "637" + }, + "Autres charges externes": { + "Frais de recrutement du personnel": { + "account_number": "6381" + }, + "Frais de d\u00e9m\u00e9nagement": { + "account_number": "6382" + }, + "R\u00e9ceptions": { + "account_number": "6383" + }, + "Missions": { + "account_number": "6384" + }, + "Charges de copropri\u00e9t\u00e9": { + "account_number": "6385" + }, + "account_number": "638" + }, + "account_number": "63" + }, + "Imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes directs": { + "Imp\u00f4ts fonciers et taxes annexes": { + "account_number": "6411" + }, + "Patentes, licences et taxes annexes": { + "account_number": "6412" + }, + "Taxes sur appointements et salaires": { + "account_number": "6413" + }, + "Taxes d\u2019apprentissage": { + "account_number": "6414" + }, + "Formation professionnelle continue": { + "account_number": "6415" + }, + "Autres imp\u00f4ts et taxes directs": { + "account_number": "6418" + }, + "account_number": "641" + }, + "Imp\u00f4ts et taxes indirects": { + "account_number": "645" + }, + "Droits d\u2019enregistrement": { + "Droits de mutation": { + "account_number": "6461" + }, + "Droits de timbre": { + "account_number": "6462" + }, + "Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": { + "account_number": "6463" + }, + "Vignettes": { + "account_number": "6464" + }, + "Autres droits": { + "account_number": "6468" + }, + "account_number": "646" + }, + "P\u00e9nalit\u00e9s, amendes fiscales": { + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": { + "account_number": "6471" + }, + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": { + "account_number": "6472" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": { + "account_number": "6473" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": { + "account_number": "6474" + }, + "Autres p\u00e9nalit\u00e9s et amendes fiscales": { + "account_number": "6478" + }, + "account_number": "647" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "648" + }, + "account_number": "64" + }, + "Autres charges": { + "Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "Clients": { + "account_number": "6511" + }, + "Autres d\u00e9biteurs": { + "account_number": "6515" + }, + "account_number": "651" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "6521" + }, + "Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "6525" + }, + "account_number": "652" + }, + "Valeurs comptables des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "6541" + }, + "Immobilisations corporelles": { + "account_number": "6542" + }, + "account_number": "654" + }, + "Perte de change sur cr\u00e9ances et dettes commerciale": { + "account_number": "656" + }, + "P\u00e9nalit\u00e9s et amendes p\u00e9nales": { + "account_number": "657" + }, + "Charges diverses": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "6581" + }, + "Dons": { + "account_number": "6582" + }, + "M\u00e9c\u00e9nat": { + "account_number": "6583" + }, + "Autres charges diverses": { + "account_number": "6588" + }, + "account_number": "658" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "6591" + }, + "Sur stocks": { + "account_number": "6593" + }, + "Sur cr\u00e9ances": { + "account_number": "6594" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": { + "account_number": "6598" + }, + "account_number": "659" + }, + "account_number": "65" + }, + "Charges de personnel": { + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "Appointements salaires et commissions": { + "account_number": "6611" + }, + "Primes et gratifications": { + "account_number": "6612" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6613" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6614" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6615" + }, + "Suppl\u00e9ment familial": { + "account_number": "6616" + }, + "Avantages en nature": { + "account_number": "6617" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6618" + }, + "account_number": "661" + }, + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "Appointements salaires et commissions": { + "account_number": "6621" + }, + "Primes et gratifications": { + "account_number": "6622" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6623" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6624" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6625" + }, + "Suppl\u00e9ment familial": { + "account_number": "6626" + }, + "Avantages en nature": { + "account_number": "6627" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6628" + }, + "account_number": "662" + }, + "Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "Indemnit\u00e9s de logement": { + "account_number": "6631" + }, + "Indemnit\u00e9s de repr\u00e9sentation": { + "account_number": "6632" + }, + "Indemnit\u00e9s d\u2019expatriation": { + "account_number": "6633" + }, + "Indemnit\u00e9s de transport": { + "account_number": "6634" + }, + "Autres indemnit\u00e9s et avantages divers": { + "account_number": "6638" + }, + "account_number": "663" + }, + "Charges sociales": { + "Charges sociales sur r\u00e9mun\u00e9ration du personnel national": { + "account_number": "6641" + }, + "Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": { + "account_number": "6642" + }, + "account_number": "664" + }, + "R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "R\u00e9mun\u00e9ration du travail de l\u2019exploitant": { + "account_number": "6661" + }, + "Charges sociales": { + "account_number": "6662" + }, + "account_number": "666" + }, + "R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "Personnel int\u00e9rimaire": { + "account_number": "6671" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6672" + }, + "account_number": "667" + }, + "Autres charges sociales": { + "Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": { + "account_number": "6681" + }, + "Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": { + "account_number": "6682" + }, + "Versements et contributions aux autres \u0153uvres sociales": { + "account_number": "6683" + }, + "M\u00e9decine du travail et pharmacie": { + "account_number": "6684" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "6685" + }, + "Assurances retraite et fonds de pension": { + "account_number": "6686" + }, + "Majorations et p\u00e9nalit\u00e9s sociales": { + "account_number": "6687" + }, + "Charges sociales diverses": { + "account_number": "6688" + }, + "account_number": "668" + }, + "account_number": "66" + }, + "Frais financiers et charges assimil\u00e9es": { + "Int\u00e9r\u00eats des emprunts": { + "Emprunts obligataires": { + "account_number": "6711" + }, + "Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "6712" + }, + "Dettes li\u00e9es \u00e0 des participations": { + "account_number": "6713" + }, + "Primes de remboursement des obligations": { + "account_number": "6714" + }, + "account_number": "671" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "6722" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "6723" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": { + "account_number": "6724" + }, + "Int\u00e9r\u00eats dans loyers des autres locations acquisition": { + "account_number": "6728" + }, + "account_number": "672" + }, + "Escomptes accord\u00e9s": { + "account_number": "673" + }, + "Autres int\u00e9r\u00eats": { + "Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": { + "account_number": "6741" + }, + "Comptes courants bloqu\u00e9s": { + "account_number": "6742" + }, + "Int\u00e9r\u00eats sur obligations cautionn\u00e9es": { + "account_number": "6743" + }, + "Int\u00e9r\u00eats sur dettes commerciales": { + "account_number": "6744" + }, + "Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": { + "account_number": "6745" + }, + "Int\u00e9r\u00eats sur dettes diverses": { + "account_number": "6748" + }, + "account_number": "674" + }, + "Escomptes des effets de commerce": { + "account_number": "675" + }, + "Pertes de change financi\u00e8res": { + "account_number": "676" + }, + "Pertes sur titres de placement": { + "Pertes sur cessions de titres de placement": { + "account_number": "6771" + }, + "Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "6772" + }, + "account_number": "677" + }, + "Pertes et charges sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "6781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "6782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "6784" + }, + "account_number": "678" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "6791" + }, + "Sur titres de placement": { + "account_number": "6795" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "6798" + }, + "account_number": "679" + }, + "account_number": "67" + }, + "Dotations aux amortissements": { + "Dotations aux amortissements d\u2019exploitation": { + "Dotations aux amortissements des immobilisations incorporelles": { + "account_number": "6812" + }, + "Dotations aux amortissements des immobilisations corporelles": { + "account_number": "6813" + }, + "account_number": "681" + }, + "account_number": "68" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6911" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "account_number": "6913" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": { + "account_number": "6914" + }, + "account_number": "691" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6971" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": { + "account_number": "6972" + }, + "account_number": "697" + }, + "account_number": "69" + }, + "root_type": "Expense", + "account_number": "6" + }, + "Comptes de produits des activit\u00e9s ordinaires": { + "Ventes": { + "Ventes de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "7011" + }, + "Hors R\u00e9gion": { + "account_number": "7012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7014" + }, + "Sur internet": { + "account_number": "7015" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7019" + }, + "account_number": "701" + }, + "Ventes de produits finis": { + "Dans la R\u00e9gion": { + "account_number": "7021" + }, + "Hors R\u00e9gion": { + "account_number": "7022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7024" + }, + "Sur internet": { + "account_number": "7025" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7029" + }, + "account_number": "702" + }, + "Ventes de produits interm\u00e9diaires": { + "Dans la R\u00e9gion": { + "account_number": "7031" + }, + "Hors R\u00e9gion": { + "account_number": "7032" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7033" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7034" + }, + "Sur internet": { + "account_number": "7035" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7039" + }, + "account_number": "703" + }, + "Ventes de produits r\u00e9siduels": { + "Dans la R\u00e9gion": { + "account_number": "7041" + }, + "Hors R\u00e9gion": { + "account_number": "7042" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7043" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7044" + }, + "Sur internet": { + "account_number": "7045" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7049" + }, + "account_number": "704" + }, + "Travaux factur\u00e9s": { + "Dans la R\u00e9gion": { + "account_number": "7051" + }, + "Hors R\u00e9gion": { + "account_number": "7052" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7053" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7054" + }, + "Sur internet": { + "account_number": "7055" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7059" + }, + "account_number": "705" + }, + "Services vendus": { + "Dans la R\u00e9gion": { + "account_number": "7061" + }, + "Hors R\u00e9gion": { + "account_number": "7062" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7063" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7064" + }, + "Sur internet": { + "account_number": "7065" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7069" + }, + "account_number": "706" + }, + "Produits accessoires": { + "Ports, emballages perdus et autres frais factur\u00e9s": { + "account_number": "7071" + }, + "Commissions et courtages": { + "account_number": "7072" + }, + "Locations": { + "account_number": "7073" + }, + "Bonis sur reprises et cessions d\u2019emballages": { + "account_number": "7074" + }, + "Mise \u00e0 disposition de personnel": { + "account_number": "7075" + }, + "Redevances pour brevets, logiciels, marques et droits similaires": { + "account_number": "7076" + }, + "Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": { + "account_number": "7077" + }, + "Autres produits accessoires": { + "account_number": "7078" + }, + "account_number": "707" + }, + "account_number": "70" + }, + "Subventions d\u2019exploitation": { + "Sur produits \u00e0 l\u2019exportation": { + "account_number": "711" + }, + "Sur produits \u00e0 l\u2019importation": { + "account_number": "712" + }, + "Sur produits de p\u00e9r\u00e9quation": { + "account_number": "713" + }, + "Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": { + "account_number": "714" + }, + "Autres subventions d\u2019exploitation": { + "Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": { + "account_number": "7181" + }, + "Vers\u00e9es par les organismes internationaux": { + "account_number": "7182" + }, + "Vers\u00e9es par des tiers": { + "account_number": "7183" + }, + "account_number": "718" + }, + "account_number": "71" + }, + "Production immobilis\u00e9e": { + "Immobilisations incorporelles": { + "account_number": "721" + }, + "Immobilisations corporelles": { + "Immobilisations corporelles (hors actifs biologiques)": { + "account_number": "7221" + }, + "Immobilisations corporelles (actifs biologiques)": { + "account_number": "7222" + }, + "account_number": "722" + }, + "Production auto-consomm\u00e9e": { + "account_number": "724" + }, + "Immobilisations financi\u00e8res": { + "account_number": "726" + }, + "account_number": "72" + }, + "Variations des stocks de biens et de services produits": { + "Variations des stocks de produits en cours": { + "Produits en cours": { + "account_number": "7341" + }, + "Travaux en cours": { + "account_number": "7342" + }, + "account_number": "734" + }, + "Variations des en-cours de services": { + "\u00c9tudes en cours": { + "account_number": "7351" + }, + "Prestations de services en cours": { + "account_number": "7352" + }, + "account_number": "735" + }, + "Variations des stocks de produits finis": { + "account_number": "736" + }, + "Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "account_number": "7371" + }, + "Produits r\u00e9siduels": { + "account_number": "7372" + }, + "account_number": "737" + }, + "account_number": "73" + }, + "Autres produits": { + "Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "account_number": "751" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "7521" + }, + "B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "7525" + }, + "account_number": "752" + }, + "Produits des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "7541" + }, + "Immobilisations corporelles": { + "account_number": "7542" + }, + "account_number": "754" + }, + "Gains de change sur cr\u00e9ances et dettes commerciales": { + "account_number": "756" + }, + "Produits divers": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "7581" + }, + "Indemnit\u00e9s d\u2019assurances re\u00e7ues": { + "account_number": "7582" + }, + "Autres produits divers": { + "account_number": "7588" + }, + "account_number": "758" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "7591" + }, + "Sur stocks": { + "account_number": "7593" + }, + "Sur cr\u00e9ances": { + "account_number": "7594" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "account_number": "7598" + }, + "account_number": "759" + }, + "account_number": "75" + }, + "Revenus financiers et produits assimil\u00e9s": { + "Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "Int\u00e9r\u00eats de pr\u00eats": { + "account_number": "7712" + }, + "Int\u00e9r\u00eats sur cr\u00e9ances diverses": { + "account_number": "7713" + }, + "account_number": "771" + }, + "Revenus de participations et autres titres immobilis\u00e9s": { + "Revenus des titres de participation": { + "account_number": "7721" + }, + "Revenus autres titres immobilis\u00e9s": { + "account_number": "7722" + }, + "account_number": "772" + }, + "Escomptes obtenus": { + "account_number": "773" + }, + "Revenus de placement": { + "Revenus des obligations": { + "account_number": "7745" + }, + "Revenus des titres de placement": { + "account_number": "7746" + }, + "account_number": "774" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "account_number": "775" + }, + "Gains de change financiers": { + "account_number": "776" + }, + "Gains sur cessions de titres de placement": { + "account_number": "777" + }, + "Gains sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "7781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "7782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "7784" + }, + "account_number": "778" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "7791" + }, + "Sur titres de placement": { + "account_number": "7795" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "7798" + }, + "account_number": "779" + }, + "account_number": "77" + }, + "Transferts de charges": { + "Transferts de charges d\u2019exploitation": { + "account_number": "781" + }, + "Transferts de charges financi\u00e8res": { + "account_number": "787" + }, + "account_number": "78" + }, + "Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Pour risques et charges": { + "account_number": "7911" + }, + "Des immobilisations incorporelles": { + "account_number": "7913" + }, + "Des immobilisations corporelles": { + "account_number": "7914" + }, + "account_number": "791" + }, + "Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "Pour risques et charges": { + "account_number": "7971" + }, + "Des immobilisations financi\u00e8res": { + "account_number": "7972" + }, + "account_number": "797" + }, + "Reprises d\u2019amortissements": { + "account_number": "798" + }, + "Reprises de subventions d\u2019investissement": { + "account_number": "799" + }, + "account_number": "79" + }, + "root_type": "Income", + "account_number": "7" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "Valeurs comptables des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "811" + }, + "Immobilisations corporelles": { + "account_number": "812" + }, + "Immobilisations financi\u00e8res": { + "account_number": "816" + }, + "account_number": "81" + }, + "Charges hors activit\u00e9s ordinaires": { + "Charges HAO constat\u00e9es": { + "account_number": "831" + }, + "Charges li\u00e9es aux op\u00e9rations de restructuration": { + "account_number": "833" + }, + "Pertes sur cr\u00e9ances HAO": { + "account_number": "834" + }, + "Dons et lib\u00e9ralit\u00e9s accord\u00e9s": { + "account_number": "835" + }, + "Abandons de cr\u00e9ances consentis": { + "account_number": "836" + }, + "Charges li\u00e9es aux op\u00e9rations de liquidation": { + "account_number": "837" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "839" + }, + "account_number": "83" + }, + "Dotations hors activit\u00e9s ordinaires": { + "Dotations aux provisions r\u00e9glement\u00e9es": { + "account_number": "851" + }, + "Dotations aux amortissements HAO": { + "account_number": "852" + }, + "Dotations aux d\u00e9pr\u00e9ciations HAO": { + "account_number": "853" + }, + "Dotations aux provisions pour risques et charges HAO": { + "account_number": "854" + }, + "Autres dotations HAO": { + "account_number": "858" + }, + "account_number": "85" + }, + "Participation des travailleurs": { + "Participation l\u00e9gale aux b\u00e9n\u00e9fices": { + "account_number": "871" + }, + "Participation contractuelle aux b\u00e9n\u00e9fices": { + "account_number": "874" + }, + "Autres participations": { + "account_number": "878" + }, + "account_number": "87" + }, + "Imp\u00f4ts sur le r\u00e9sultat": { + "Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": { + "account_number": "8911" + }, + "Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": { + "account_number": "8912" + }, + "Activit\u00e9s exerc\u00e9es hors R\u00e9gion": { + "account_number": "8913" + }, + "account_number": "891" + }, + "Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "account_number": "892" + }, + "Imp\u00f4t minimum forfaitaire IMF": { + "account_number": "895" + }, + "D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "D\u00e9gr\u00e8vements": { + "account_number": "8991" + }, + "Annulations pour pertes r\u00e9troactives": { + "account_number": "8994" + }, + "account_number": "899" + }, + "account_number": "89" + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "Produits des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "821" + }, + "Immobilisations corporelles": { + "account_number": "822" + }, + "Immobilisations financi\u00e8res": { + "account_number": "826" + }, + "account_number": "82" + }, + "Produits hors activit\u00e9s ordinaires": { + "Produits HAO constat\u00e9s": { + "account_number": "841" + }, + "Produits li\u00e9s aux op\u00e9rations de restructuration": { + "account_number": "843" + }, + "Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": { + "account_number": "844" + }, + "Dons et lib\u00e9ralit\u00e9s obtenus": { + "account_number": "845" + }, + "Abandons de cr\u00e9ances obtenus": { + "account_number": "846" + }, + "Produits li\u00e9s aux op\u00e9rations de liquidation": { + "account_number": "847" + }, + "Transferts de charges HAO": { + "account_number": "848" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "849" + }, + "account_number": "84" + }, + "Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "Reprises de provisions r\u00e9glement\u00e9es": { + "account_number": "861" + }, + "Reprises d\u2019amortissements HAO": { + "account_number": "862" + }, + "Reprises de d\u00e9pr\u00e9ciations HAO": { + "account_number": "863" + }, + "Reprises de provisions pour risques et charges HAO": { + "account_number": "864" + }, + "Autres reprises HAO": { + "account_number": "868" + }, + "account_number": "86" + }, + "Subventions d\u2019\u00e9quilibre": { + "\u00c9tat": { + "account_number": "881" + }, + "Collectivit\u00e9s publiques": { + "account_number": "884" + }, + "Groupe": { + "account_number": "886" + }, + "Autres": { + "account_number": "888" + }, + "account_number": "88" + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/bj_plan_comptable.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/bj_plan_comptable.json new file mode 100644 index 00000000000..4381e21b0c4 --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/bj_plan_comptable.json @@ -0,0 +1,1919 @@ +{ + "country_code": "bj", + "name": "Syscohada - Plan Comptable", + "tree": { + "1-Comptes de ressources durables": { + "10-Capital": { + "101-Capital social": { + "1011-Capital souscrit, non appel\u00e9": {}, + "1012-Capital souscrit, appel\u00e9, non vers\u00e9": {}, + "1013-Capital souscrit, appel\u00e9, vers\u00e9, non amorti": {}, + "1014-Capital souscrit, appel\u00e9, vers\u00e9, amorti": {}, + "1018-Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": {} + }, + "102-Capital par dotation": { + "1021-Dotation initiale": {}, + "1022-Dotations compl\u00e9mentaires": {}, + "1028-Autres dotations": {} + }, + "103-Capital personnel": {}, + "104-Compte de l\u2019exploitant": { + "1041-Apports temporaires": {}, + "1042-Op\u00e9rations courantes": {}, + "1043-R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": {}, + "1047-Pr\u00e9l\u00e8vements d\u2019autoconsommation": {}, + "1048-Autres pr\u00e9l\u00e8vements": {} + }, + "105-Primes li\u00e9es au capital social": { + "1051-Primes d\u2019\u00e9mission": {}, + "1052-Primes d\u2019apport": {}, + "1053-Primes de fusion": {}, + "1054-Primes de conversion": {}, + "1058-Autres primes": {} + }, + "106-\u00c9carts de r\u00e9\u00e9valuation": { + "1061-\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": {}, + "1062-\u00c9carts de r\u00e9\u00e9valuation libre": {} + }, + "109-Apporteurs, capital souscrit, non appel\u00e9": {} + }, + "11-R\u00e9serves": { + "111-R\u00e9serve l\u00e9gale": {}, + "112-R\u00e9serves statutaires ou contractuelles": {}, + "113-R\u00e9serves r\u00e9glement\u00e9es": { + "1131-R\u00e9serves de plus-values nettes \u00e0 long terme": {}, + "1132-R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {}, + "1133-R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": {}, + "1134-R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": {}, + "1135-Autres r\u00e9serves r\u00e9glement\u00e9es": {} + }, + "118-Autres r\u00e9serves": { + "1181-R\u00e9serves facultatives": {}, + "1188-R\u00e9serves diverses": {} + } + }, + "12-Report \u00e0 nouveau": { + "121-Report \u00e0 nouveau cr\u00e9diteur": {}, + "129-Report \u00e0 nouveau d\u00e9biteur": { + "1291-Perte nette \u00e0 reporter": {}, + "1292-Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": {} + } + }, + "13-R\u00e9sultat net de l\u2019exercice": { + "130-R\u00e9sultat en instance d\u2019affectation": { + "1301-R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": {}, + "1309-R\u00e9sultat en instance d\u2019affectation : perte": {} + }, + "131-R\u00e9sultat net : b\u00e9n\u00e9fice": {}, + "132-Marge commerciale (MC)": {}, + "133-Valeur ajout\u00e9e (VA)": {}, + "134-Exc\u00e9dent brut d\u2019exploitation (EBE)": {}, + "135-R\u00e9sultat d\u2019exploitation (RE)": {}, + "136-R\u00e9sultat financier (RF)": {}, + "137-R\u00e9sultat des activit\u00e9s ordinaires (RAO)": {}, + "138-R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "1381-R\u00e9sultat de fusion": {}, + "1382-R\u00e9sultat d\u2019apport partiel d\u2019actif": {}, + "1383-R\u00e9sultat de scission": {}, + "1384-R\u00e9sultat de liquidation": {} + }, + "139-R\u00e9sultat net : perte": {} + }, + "14-Subventions d\u2019investissement": { + "141-Subventions d\u2019\u00e9quipement": { + "1411-\u00c9tat": {}, + "1412-R\u00e9gions": {}, + "1413-D\u00e9partements": {}, + "1414-Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": {}, + "1415-Entit\u00e9s publiques ou mixtes": {}, + "1416-Entit\u00e9s et organismes priv\u00e9s": {}, + "1417-Organismes internationaux": {}, + "1418-Autres": {} + }, + "148-Autres subventions d\u2019investissement": {} + }, + "15-Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "151-Amortissements d\u00e9rogatoires": {}, + "152-Plus-values de cession \u00e0 r\u00e9investir": {}, + "153-Fonds r\u00e9glement\u00e9s": { + "1531-Fonds National": {}, + "1532-Pr\u00e9l\u00e8vement pour le Budget": {} + }, + "154-Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": {}, + "155-Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "1551-Reconstitution des gisements miniers et p\u00e9troliers": {} + }, + "156-Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "1561-Hausse de prix": {}, + "1562-Fluctuation des cours": {} + }, + "157-Provisions pour investissement": {}, + "158-Autres provisions et fonds r\u00e9glement\u00e9s": {} + }, + "16-Emprunts et dettes assimil\u00e9es": { + "161-Emprunts obligataires": { + "1611-Emprunts obligataires ordinaires": {}, + "1612-Emprunts obligataires convertibles en actions": {}, + "1613-Emprunts obligataires remboursables en actions": {}, + "1618-Autres emprunts obligataires": {} + }, + "162-Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "163-Avances re\u00e7ues de l\u2019\u00c9tat": {}, + "164-Avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "165-D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "1651-D\u00e9p\u00f4ts": {}, + "1652-Cautionnements": {} + }, + "166-Int\u00e9r\u00eats courus": { + "1661-Sur emprunts obligataires": {}, + "1662-Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "1663-Sur avances re\u00e7ues de l\u2019\u00c9tat": {}, + "1664-Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "1665-Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": {}, + "1667-Sur avances assorties de conditions particuli\u00e8res": {}, + "1668-Sur autres emprunts et dettes": {} + }, + "167-Avances assorties de conditions particuli\u00e8res": { + "1671-Avances bloqu\u00e9es pour augmentation du capital": {}, + "1672-Avances conditionn\u00e9es par l\u2019\u00c9tat": {}, + "1673-Avances conditionn\u00e9es par les autres organismes africains": {}, + "1674-Avances conditionn\u00e9es par les organismes internationaux": {} + }, + "168-Autres emprunts et dettes": { + "1681-Rentes viag\u00e8res capitalis\u00e9es": {}, + "1682-Billets de fonds": {}, + "1683-Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": {}, + "1684-Emprunts participatifs": {}, + "1685-Participation des travailleurs aux b\u00e9n\u00e9fices": {}, + "1686-Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": {} + } + }, + "17-Dettes de location acquisition": { + "172-Dettes de location acquisition / cr\u00e9dit bail immobilier": {}, + "173-Dettes de location acquisition / cr\u00e9dit bail mobilier": {}, + "174-Dettes de location acquisition / location de vente": {}, + "176-Int\u00e9r\u00eats courus": { + "1762-Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": {}, + "1763-Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": {}, + "1764-Sur dettes de location acquisition / location-vente": {}, + "1768-Sur autres dettes de location acquisition": {} + }, + "178-Autres dettes de location acquisition": {} + }, + "18-Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "181-Dettes li\u00e9es \u00e0 des participations": { + "1811-Dettes li\u00e9es \u00e0 des participations (groupe)": {}, + "1812-Dettes li\u00e9es \u00e0 des participations (hors groupe)": {} + }, + "182-Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "183-Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": {}, + "184-Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "185-Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "186-Comptes de liaison charges": {}, + "187-Comptes de liaison produits": {}, + "188-Comptes de liaison des soci\u00e9t\u00e9s en participation": {} + }, + "19-Provisions pour risques et charges": { + "191-Provisions pour litiges": {}, + "192-Provisions pour garanties donn\u00e9es aux clients": {}, + "193-Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": {}, + "194-Provisions pour pertes de change": {}, + "195-Provisions pour imp\u00f4ts": {}, + "196-Provisions pour pensions et obligations similaires": { + "1961-Provisions pour pensions et obligations similaires engagement de retraite": {}, + "1962-Actif du r\u00e9gime de retraite": {} + }, + "197-Provisions pour restructuration": {}, + "198-Autres provisions pour risques et charges": { + "1981-Provisions pour amendes et p\u00e9nalit\u00e9s": {}, + "1983-Provisions pour propre assureur": {}, + "1984-Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "1985-Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": {}, + "1988-Provisions pour divers risques et charges": {} + } + }, + "root_type": "Equity" + }, + "2-Comptes d\u2019actif immobilis\u00e9": { + "21-Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "211-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "212-Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "2121-Brevets": { + "account_type": "Fixed Asset" + }, + "2122-Licences": { + "account_type": "Fixed Asset" + }, + "2123-Concessions de service public": { + "account_type": "Fixed Asset" + }, + "2128-Autres concessions et droits similaires": { + "account_type": "Fixed Asset" + } + }, + "213-Logiciels et sites internet": { + "account_type": "Fixed Asset", + "2131-Logiciels": { + "account_type": "Fixed Asset" + }, + "2132-Sites internet": { + "account_type": "Fixed Asset" + } + }, + "214-Marques": { + "account_type": "Fixed Asset" + }, + "215-Fonds commercial": { + "account_type": "Fixed Asset" + }, + "216-Droit au bail": { + "account_type": "Fixed Asset" + }, + "217-Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset" + }, + "218-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "2181-Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset" + }, + "2182-Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset" + }, + "2183-Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset" + }, + "2184-Co\u00fbts des franchises": { + "account_type": "Fixed Asset" + }, + "2188-Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset" + } + }, + "219-Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "2191-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "2193-Logiciels et internet": { + "account_type": "Fixed Asset" + }, + "2198-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset" + } + } + }, + "22-Terrains": { + "account_type": "Fixed Asset", + "221-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "2211-Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset" + }, + "2212-Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset" + }, + "2218-Autres terrains": { + "account_type": "Fixed Asset" + } + }, + "222-Terrains nus": { + "account_type": "Fixed Asset", + "2221-Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset" + }, + "2228-Autres terrains nus": { + "account_type": "Fixed Asset" + } + }, + "223-Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "2231-Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset" + }, + "2232-Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset" + }, + "2234-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset" + }, + "2235-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset" + }, + "2238-Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset" + } + }, + "224-Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "2241-Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset" + }, + "2245-Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset" + }, + "2248-Autres travaux": { + "account_type": "Fixed Asset" + } + }, + "225-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "2251-Carri\u00e8res": { + "account_type": "Fixed Asset" + } + }, + "226-Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "2261-Parkings": { + "account_type": "Fixed Asset" + } + }, + "227-Terrains mis en concession": { + "account_type": "Fixed Asset" + }, + "228-Autres terrains": { + "account_type": "Fixed Asset", + "2281-Terrains immeubles de placement": { + "account_type": "Fixed Asset" + }, + "2285-Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset" + }, + "2286-Terrains de location acquisition": { + "account_type": "Fixed Asset" + }, + "2288-Divers terrains": { + "account_type": "Fixed Asset" + } + }, + "229-Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "2291-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset" + }, + "2292-Terrains nus": { + "account_type": "Fixed Asset" + }, + "2295-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset" + }, + "2298-Autres terrains": { + "account_type": "Fixed Asset" + } + } + }, + "23-B\u00e2timents, installations techniques et agencements": { + "231-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "2311-B\u00e2timents industriels": {}, + "2312-B\u00e2timents agricoles": {}, + "2313-B\u00e2timents administratifs et commerciaux": {}, + "2314-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2315-B\u00e2timents immeubles de placement": {}, + "2316-B\u00e2timents de location acquisition": {} + }, + "232-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "2321-B\u00e2timents industriels": {}, + "2322-B\u00e2timents agricoles": {}, + "2323-B\u00e2timents administratifs et commerciaux": {}, + "2324-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2325-B\u00e2timents immeubles de placement": {}, + "2326-B\u00e2timents de location acquisition": {} + }, + "233-Ouvrages d\u2019infrastructure": { + "2331-Voies de terre": {}, + "2332-Voies de fer": {}, + "2333-Voies d\u2019eau": {}, + "2334-Barrages, Digues": {}, + "2335-Pistes d\u2019a\u00e9rodrome": {}, + "2338-Autres ouvrages d\u2019infrastructures": {} + }, + "234-Am\u00e9nagements, agencements et installations techniques": { + "2341-Installations complexes sp\u00e9cialis\u00e9es sur sol propre": {}, + "2342-Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": {}, + "2343-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": {}, + "2344-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": {}, + "2345-Am\u00e9nagements et agencements des b\u00e2timents": {} + }, + "235-Am\u00e9nagements de bureaux": { + "2351-Installations g\u00e9n\u00e9rales": {}, + "2358-Autres am\u00e9nagements de bureaux": {} + }, + "237-B\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "238-Autres installations et agencements": {}, + "239-B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "2391-B\u00e2timents en cours": {}, + "2392-Installations en cours": {}, + "2393-Ouvrages d\u2019infrastructure en cours": {}, + "2394-Am\u00e9nagements et agencements et installations techniques en cours": {}, + "2395-Am\u00e9nagements de bureaux en cours": {}, + "2398-Autres installations et agencements en cours": {} + } + }, + "24-Mat\u00e9riel, mobilier et actifs biologiques": { + "241-Mat\u00e9riel et outillage industriel et commercial": { + "2411-Mat\u00e9riel industriel": {}, + "2412-Outillage industriel": {}, + "2413-Mat\u00e9riel commercial": {}, + "2414-Outillage commercial": {}, + "2416-Mat\u00e9riel & outillage industriel et commercial de location-acquisition": {} + }, + "242-Mat\u00e9riel et outillage agricole": { + "2421-Mat\u00e9riel agricole": {}, + "2422-Outillage agricole": {}, + "2426-Mat\u00e9riel & outillage agricole de location-acquisition": {} + }, + "243-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "244-Mat\u00e9riel et mobilier": { + "2441-Mat\u00e9riel de bureau": {}, + "2442-Mat\u00e9riel informatique": {}, + "2443-Mat\u00e9riel bureautique": {}, + "2444-Mobilier de bureau": {}, + "2445-Mat\u00e9riel et mobilier immeubles de placement": {}, + "2446-Mat\u00e9riel et mobilier de location acquisition": {}, + "2447-Mat\u00e9riel et mobilier des logements du personnel": {} + }, + "245-Mat\u00e9riel de transport": { + "2451-Mat\u00e9riel automobile": {}, + "2452-Mat\u00e9riel ferroviaire": {}, + "2453-Mat\u00e9riel fluvial, lagunaire": {}, + "2454-Mat\u00e9riel naval": {}, + "2455-Mat\u00e9riel a\u00e9rien": {}, + "2456-Mat\u00e9riel de transport de location-acquisition": {}, + "2457-Mat\u00e9riel hippomobile": {}, + "2458-Autres mat\u00e9riels de transport": {} + }, + "246-Actifs biologiques": { + "2461-Cheptel, animaux de trait": {}, + "2462-Cheptel, animaux reproducteurs": {}, + "2463-Animaux de garde": {}, + "2465-Plantations agricoles": {}, + "2468-Autres actifs biologiques": {} + }, + "247-Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "2471-Agencements et am\u00e9nagements du mat\u00e9riel": {}, + "2472-Agencements et am\u00e9nagements des actifs biologiques": {}, + "2478-Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": {} + }, + "248-Autres mat\u00e9riels et mobiliers": { + "2481-Collections et \u0153uvres d\u2019art": {}, + "2488-Divers mat\u00e9riels mobiliers": {} + }, + "249-Mat\u00e9riels et actifs biologiques en cours": { + "2491-Mat\u00e9riel et outillage industriel et commercial": {}, + "2492-Mat\u00e9riel et outillage agricole": {}, + "2493-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2494-Mat\u00e9riel et mobilier de bureau": {}, + "2495-Mat\u00e9riel de transport": {}, + "2496-Actifs biologiques": {}, + "2497-Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": {}, + "2498-Autres mat\u00e9riels et actifs biologiques en cours": {} + } + }, + "25-Avances et acomptes vers\u00e9s sur immobilisations": { + "251-Avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "252-Avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "26-Titres de participation": { + "261-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "262-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "263-Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "265-Participations dans des organismes professionnels": {}, + "266-Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {}, + "268-Autres titres de participation": {} + }, + "27-Autres immobilisations financi\u00e8res": { + "271-Pr\u00eats et cr\u00e9ances": { + "2711-Pr\u00eats participatifs": {}, + "2712-Pr\u00eats aux associ\u00e9s": {}, + "2713-Billets de fonds": {}, + "2714-Titres pr\u00eat\u00e9s": {}, + "2718-Autres pr\u00eats et cr\u00e9ances": {} + }, + "272-Pr\u00eats au personnel": { + "2721-Pr\u00eats immobiliers": {}, + "2722-Pr\u00eats mobiliers et d\u2019installation": {}, + "2728-Autres pr\u00eats au personnel": {} + }, + "273-Cr\u00e9ances sur l\u2019\u00c9tat": { + "2731-Retenues de garantie": {}, + "2733-Fonds r\u00e9glement\u00e9": {}, + "2734-Cr\u00e9ances sur le conc\u00e9dant": {}, + "2738-Autres cr\u00e9ances sur l\u2019\u00c9tat": {} + }, + "274-Titres immobilis\u00e9s": { + "2741-Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": {}, + "2742-Titres participatifs": {}, + "2743-Certificats d\u2019investissement": {}, + "2744-Parts de fonds commun de placement (FCP)": {}, + "2745-Obligations": {}, + "2746-Actions ou parts propres": {}, + "2748-Autres titres immobilis\u00e9s": {} + }, + "275-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "2751-D\u00e9p\u00f4ts pour loyers d\u2019avance": {}, + "2752-D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": {}, + "2753-D\u00e9p\u00f4ts pour l\u2019eau": {}, + "2754-D\u00e9p\u00f4ts pour le gaz": {}, + "2755-D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": {}, + "2756-Cautionnements sur march\u00e9s publics": {}, + "2757-Cautionnements sur autres op\u00e9rations": {}, + "2758-Autres d\u00e9p\u00f4ts et cautionnements": {} + }, + "276-Int\u00e9r\u00eats courus": { + "2761-Pr\u00eats et cr\u00e9ances non commerciales": {}, + "2762-Pr\u00eats au personnel": {}, + "2763-Cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2764-Titres immobilis\u00e9s": {}, + "2765-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2767-Cr\u00e9ances rattach\u00e9es \u00e0 des participations": {}, + "2768-Immobilisations financi\u00e8res diverses": {} + }, + "277-Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "2771-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": {}, + "2772-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": {}, + "2773-Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "2774-Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {} + }, + "278-Immobilisations financi\u00e8res diverses": { + "2781-Cr\u00e9ances diverses groupe": {}, + "2782-Cr\u00e9ances diverses hors groupe": {}, + "2784-Banques d\u00e9p\u00f4ts \u00e0 terme": {}, + "2785-Or et m\u00e9taux pr\u00e9cieux": {}, + "2788-Autres immobilisations financi\u00e8res": {} + } + }, + "28-Amortissements": { + "account_type": "Accumulated Depreciation", + "281-Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "2811-Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation" + }, + "2812-Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation" + }, + "2813-Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation" + }, + "2814-Amortissements des marques": { + "account_type": "Accumulated Depreciation" + }, + "2815-Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation" + }, + "2816-Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation" + }, + "2817-Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation" + }, + "2818-Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation" + } + }, + "282-Amortissements des terrains": { + "2824-Amortissements des travaux de mise en valeur des terrains": {} + }, + "283-Amortissements des b\u00e2timents, installations techniques et agencements": { + "2831-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2832-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2833-Amortissements des ouvrages d\u2019infrastructure": {}, + "2834-Amortissements des am\u00e9nagements, agencements et installations techniques": {}, + "2835-Amortissements des am\u00e9nagements de bureaux": {}, + "2837-Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2838-Amortissements des autres installations et agencements": {} + }, + "284-Amortissements du mat\u00e9riel": { + "2841-Amortissements du mat\u00e9riel et outillage industriel et commercial": {}, + "2842-Amortissements du mat\u00e9riel et outillage agricole": {}, + "2843-Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2844-Amortissements du mat\u00e9riel et mobilier": {}, + "2845-Amortissements du mat\u00e9riel de transport": {}, + "2846-Amortissements des actifs biologiques": {}, + "2847-Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2848-Amortissements des autres mat\u00e9riels": {} + } + }, + "29-D\u00e9pr\u00e9ciations des immobilisations": { + "291-D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "2911-D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": {}, + "2912-D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": {}, + "2913-D\u00e9pr\u00e9ciations des logiciels et sites internet": {}, + "2914-D\u00e9pr\u00e9ciations des marques": {}, + "2915-D\u00e9pr\u00e9ciations du fonds commercial": {}, + "2916-D\u00e9pr\u00e9ciations du droit au bail": {}, + "2917-D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": {}, + "2918-D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": {}, + "2919-D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": {} + }, + "292-D\u00e9pr\u00e9ciations des terrains": { + "2921-D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": {}, + "2922-D\u00e9pr\u00e9ciations des terrains nus": {}, + "2923-D\u00e9pr\u00e9ciations des terrains b\u00e2tis": {}, + "2924-D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": {}, + "2925-D\u00e9pr\u00e9ciations des terrains de gisement": {}, + "2926-D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": {}, + "2927-D\u00e9pr\u00e9ciations des terrains mis en concession": {}, + "2928-D\u00e9pr\u00e9ciations des autres terrains": {}, + "2929-D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": {} + }, + "293-D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "2931-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2932-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2933-D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": {}, + "2934-D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": {}, + "2935-D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": {}, + "2937-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2938-D\u00e9pr\u00e9ciations des autres installations et agencements": {}, + "2939-D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": {} + }, + "294-D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "2941-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": {}, + "2942-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": {}, + "2943-D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2944-D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": {}, + "2945-D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": {}, + "2946-D\u00e9pr\u00e9ciations des actifs biologiques": {}, + "2947-D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2948-D\u00e9pr\u00e9ciations des autres mat\u00e9riels": {}, + "2949-D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": {} + }, + "295-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "2951-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "2952-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "296-D\u00e9pr\u00e9ciations des titres de participation": { + "2961-D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "2962-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "2963-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "2965-D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": {}, + "2966-D\u00e9pr\u00e9ciations des parts dans des GIE": {}, + "2968-D\u00e9pr\u00e9ciations des autres titres de participation": {} + }, + "297-D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "2971-D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": {}, + "2972-D\u00e9pr\u00e9ciations des pr\u00eats au personnel": {}, + "2973-D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2974-D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": {}, + "2975-D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2977-D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": {}, + "2978-D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": {} + } + }, + "root_type": "Asset" + }, + "3-Comptes de Stocks": { + "31-Marchandises": { + "311-Marchandises A": { + "3111-Marchandises A1": {}, + "3112-Marchandises A2": {} + }, + "312-Marchandises B": { + "3121-Marchandises B1": {}, + "3122-Marchandises B2": {} + }, + "313-Actifs biologiques": { + "3131-Animaux": {}, + "3132-V\u00e9g\u00e9taux": {} + }, + "318-Marchandises hors activit\u00e9s ordinaires (HAO)": {} + }, + "32-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "321-Mati\u00e8res A": {}, + "322-Mati\u00e8res B": {}, + "323-Fournitures (A, B)": {} + }, + "33-Autres approvisionnements": { + "331-Mati\u00e8res consommables": {}, + "332-Fournitures d\u2019atelier et d\u2019usine": {}, + "333-Fournitures de magasin": {}, + "334-Fournitures de bureau": {}, + "335-Emballages": { + "3351-Emballages perdus": {}, + "3352-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "3353-Emballages \u00e0 usage mixte": {}, + "3358-Autres emballages": {} + }, + "338-Autres mati\u00e8res": {} + }, + "34-Produits en cours": { + "341-Produits en cours": { + "3411-Produits en cours P1": {}, + "3412-Produits en cours P2": {} + }, + "342-Travaux en cours": { + "3421-Travaux en cours T1": {}, + "3422-Travaux en cours T2": {} + }, + "343-Produits interm\u00e9diaires en cours": { + "3431-Produits interm\u00e9diaires A": {}, + "3432-Produits interm\u00e9diaires B": {} + }, + "344-Produits r\u00e9siduels en cours": { + "3441-Produits r\u00e9siduels A": {}, + "3442-Produits r\u00e9siduels B": {} + }, + "345-Actifs biologiques en cours": { + "3451-Animaux": {}, + "3452-V\u00e9g\u00e9taux": {} + } + }, + "35-Services en cours": { + "351-\u00c9tudes en cours": { + "3511-\u00c9tudes en cours E1": {}, + "3512-\u00c9tudes en cours E2": {} + }, + "352-Prestations de services en cours": { + "3521-Prestations de services S1": {}, + "3522-Prestations de services S2": {} + } + }, + "36-Produits finis": { + "361-Produits finis A": {}, + "362-Produits finis B": {}, + "363-Actifs biologiques": { + "3631-Animaux": {}, + "3632-V\u00e9g\u00e9taux": {}, + "3638-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "37-Produits interm\u00e9diaires et r\u00e9siduels": { + "371-Produits interm\u00e9diaires": { + "3711-Produits interm\u00e9diaires A": {}, + "3712-Produits interm\u00e9diaires B": {} + }, + "372-Produits r\u00e9siduels": { + "3721-D\u00e9chets": {}, + "3722-Rebuts": {}, + "3723-Mati\u00e8res de R\u00e9cup\u00e9ration": {} + }, + "373-Actifs biologiques": { + "3731-Animaux": {}, + "3732-V\u00e9g\u00e9taux": {}, + "3738-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "38-Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "381-Marchandises en cours de route": {}, + "382-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": {}, + "383-Autres approvisionnements en cours de route": {}, + "386-Produits finis en cours de route": {}, + "387-Stock en consignation ou en d\u00e9p\u00f4t": { + "3871-Stock en consignation": {}, + "3872-Stock en d\u00e9p\u00f4t": {} + }, + "388-Stock provenant d\u2019immobilisations mises hors service ou au rebut": {} + }, + "39-D\u00e9pr\u00e9ciations des stocks et encours de production": { + "391-D\u00e9pr\u00e9ciations des stocks de marchandises": {}, + "392-D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "393-D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": {}, + "394-D\u00e9pr\u00e9ciations des productions en cours": {}, + "395-D\u00e9pr\u00e9ciations des services en cours": {}, + "396-D\u00e9pr\u00e9ciations des stocks de produits finis": {}, + "397-D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": {}, + "398-D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": {} + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "409-Fournisseurs d\u00e9biteurs": { + "4091-Fournisseurs Avances et acomptes vers\u00e9s": {}, + "4092-Fournisseurs Groupe avances et acomptes vers\u00e9s": {}, + "4093-Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": {}, + "4094-Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": {}, + "4098-Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": {} + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "411-Clients": { + "4111-Clients": { + "account_type": "Receivable" + }, + "4112-Clients groupe": { + "account_type": "Receivable" + }, + "4114-Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable" + }, + "4115-Clients, organismes internationaux": { + "account_type": "Receivable" + }, + "4116-Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable" + }, + "4117-Client, retenues de garantie": { + "account_type": "Receivable" + }, + "4118-Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "412-Clients, effets \u00e0 recevoir en portefeuille": { + "4121-Clients, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4122-Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4124-\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4125-Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "413-Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "4131-Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable" + }, + "4132-Clients, effets impay\u00e9s": { + "account_type": "Receivable" + }, + "4133-Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable" + }, + "4138-Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "414-Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "4141-Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4142-Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable" + }, + "4146-Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4147-Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "415-Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable" + }, + "416-Cr\u00e9ances clients litigieuses ou douteuses": { + "4161-Cr\u00e9ances litigieuses": { + "account_type": "Receivable" + }, + "4162-Cr\u00e9ances douteuses": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "418-Clients, produits \u00e0 recevoir": { + "4181-Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable" + }, + "4186-Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "421-Personnel, avances et acomptes": { + "4211-Personnel, avances": {}, + "4212-Personnel, acomptes": {}, + "4213-Frais avanc\u00e9s et fournitures au personnel": {} + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "4311-Prestations familiales": {}, + "4312-Accidents de travail": {}, + "4313-Caisse de retraite obligatoire": {}, + "4314-Caisse de retraite facultative": {}, + "4318-Autres cotisations sociales": {} + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "4331-Mutuelle": {}, + "4332-Assurances retraite": {}, + "4333-Assurances et organismes de sant\u00e9": {} + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4387-Produits \u00e0 recevoir": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "443-\u00c9tat, TVA factur\u00e9e": { + "4431-TVA factur\u00e9e sur ventes": {}, + "4432-TVA factur\u00e9e sur prestations de services": {}, + "4433-TVA factur\u00e9e sur travaux": {}, + "4434-TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": {}, + "4435-TVA sur factures \u00e0 \u00e9tablir": {} + }, + "445-\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "4451-TVA r\u00e9cup\u00e9rable sur immobilisations": {}, + "4452-TVA r\u00e9cup\u00e9rable sur achats": {}, + "4453-TVA r\u00e9cup\u00e9rable sur transport": {}, + "4454-TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": {}, + "4455-TVA r\u00e9cup\u00e9rable sur factures non parvenues": {}, + "4456-TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": {} + }, + "448-\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "4486-Charges \u00e0 payer": {}, + "4487-Produits \u00e0 recevoir": {} + }, + "449-\u00c9tat, cr\u00e9ances et dettes diverses": { + "4491-\u00c9tat, obligations cautionn\u00e9es": {}, + "4492-\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": {}, + "4493-\u00c9tat, fonds de dotation \u00e0 recevoir": {}, + "4494-\u00c9tat, subventions investissement \u00e0 recevoir": {}, + "4495-\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": {}, + "4496-\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": {}, + "4497-\u00c9tat, avances sur subventions": {}, + "4499-\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": {} + } + }, + "45-Organismes internationaux (ACTIF)": { + "451-Op\u00e9rations avec les organismes africains": {}, + "452-Op\u00e9rations avec les autres organismes internationaux": {}, + "458-Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "4581-Organismes internationaux, fonds de dotation \u00e0 recevoir": {}, + "4582-Organismes internationaux, subventions \u00e0 recevoir": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "4613-Apporteurs, capital appel\u00e9, non vers\u00e9": {}, + "4614-Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": {}, + "4618-Apporteurs, titres \u00e0 \u00e9changer": {} + }, + "467-Apporteurs, restant d\u00fb sur capital appel\u00e9": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "4721-Cr\u00e9ances sur cessions de titres de placement": {}, + "4726-Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": {} + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "4731-Mandants": {}, + "4732-Mandataires": {}, + "4733-Commettants": {}, + "4734-Commissionnaires": {}, + "4739-\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "4747-Compte de r\u00e9partition p\u00e9riodique des produits": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "4751-Compte actif": { + "account_type": "Temporary" + } + }, + "476-Charges constat\u00e9es d\u2019avance": {}, + "478-\u00c9carts de conversion actif": { + "4781-Diminution des cr\u00e9ances d\u2019exploitation": {}, + "4782-Diminution des cr\u00e9ances financi\u00e8res": {}, + "4783-Augmentation des dettes d\u2019exploitation": {}, + "4784-Augmentation des dettes financi\u00e8res": {}, + "4786-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4788-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "485-Cr\u00e9ances sur cessions d\u2019immobilisations": { + "4851-En compte, immobilisations incorporelles": {}, + "4852-En compte, immobilisations corporelles": {}, + "4853-Effets \u00e0 recevoir, immobilisations incorporelles": {}, + "4854-Effets \u00e0 recevoir, immobilisations corporelles": {}, + "4855-Effets escompt\u00e9s non \u00e9chus": {}, + "4857-Retenues de garantie": {}, + "4858-Factures \u00e0 \u00e9tablir": {} + }, + "488-Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": {} + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "491-D\u00e9pr\u00e9ciations des comptes clients": { + "4911-Cr\u00e9ances litigieuses": {}, + "4912-Cr\u00e9ances douteuses": {} + }, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {}, + "496-D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "4962-Associ\u00e9s, comptes courants": {}, + "4963-Associ\u00e9s, op\u00e9rations faites en commun": {}, + "4966-Groupe, comptes courants": {} + }, + "497-D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": {}, + "498-D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "4985-Cr\u00e9ances sur cessions d\u2019immobilisations": {}, + "4986-Cr\u00e9ances sur cessions de titres de placement": {}, + "4988-Autres cr\u00e9ances HAO": {} + }, + "499-Provisions pour risques \u00e0 court terme": { + "4991-Sur op\u00e9rations d\u2019exploitation": {}, + "4997-Sur op\u00e9rations financi\u00e8res": {}, + "4998-Sur op\u00e9rations HAO": {} + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "401-Fournisseurs, dettes en compte": { + "4011-Fournisseurs": { + "account_type": "Payable" + }, + "4012-Fournisseurs groupe": { + "account_type": "Payable" + }, + "4013-Fournisseurs sous-traitants": { + "account_type": "Payable" + }, + "4016-Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable" + }, + "4017-Fournisseur, retenues de garantie": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "402-Fournisseurs, effets \u00e0 payer": { + "4021-Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable" + }, + "4022-Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable" + }, + "4023-Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "404-Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "4041-Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4042-Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable" + }, + "4046-Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4047-Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "408-Fournisseurs, factures non parvenues": { + "4081-Fournisseurs": { + "account_type": "Stock Received But Not Billed" + }, + "4082-Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed" + }, + "4083-Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed" + }, + "4086-Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "419-Clients cr\u00e9diteurs": { + "4191-Clients, avances et acomptes re\u00e7us": {}, + "4192-Clients groupe, avances et acomptes re\u00e7us": {}, + "4194-Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": {}, + "4198-Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": {} + } + }, + "42-Personnel (PASSIF)": { + "422-Personnel, r\u00e9mun\u00e9rations dues": {}, + "423-Personnel, oppositions, saisies-arr\u00eats": { + "4231-Personnel, oppositions": {}, + "4232-Personnel, saisies-arr\u00eats": {}, + "4233-Personnel, avis \u00e0 tiers d\u00e9tenteur": {} + }, + "424-Personnel, \u0153uvres sociales internes": { + "4241-Assistance m\u00e9dicale": {}, + "4242-Allocations familiales": {}, + "4245-Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": {}, + "4248-Autres \u0153uvres sociales internes": {} + }, + "425-Repr\u00e9sentants du personnel": { + "4251-D\u00e9l\u00e9gu\u00e9s du personnel": {}, + "4252-Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": {}, + "4258-Autres repr\u00e9sentants du personnel": {} + }, + "426-Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "4261-Participation aux b\u00e9n\u00e9fices": {}, + "4264-Participation au capital": {} + }, + "427-Personnel d\u00e9p\u00f4ts": {}, + "428-Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "4281-Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": {}, + "4286-Autres charges \u00e0 payer": {}, + "4287-Produits \u00e0 recevoir": {} + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4381-Charges sociales sur gratifications \u00e0 payer": {}, + "4382-Charges sociales sur cong\u00e9s \u00e0 payer": {}, + "4386-Autres charges \u00e0 payer": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "441-\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": {}, + "442-\u00c9tat, autres imp\u00f4ts et taxes": { + "4421-Imp\u00f4ts et taxes d\u2019\u00c9tat": {}, + "4422-Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": {}, + "4423-Imp\u00f4ts et taxes recouvrables sur des obligataires": {}, + "4424-Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": {}, + "4426-Droits de douane": {}, + "4428-Autres imp\u00f4ts et taxes": {} + }, + "444-\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "4441-\u00c9tat, TVA due": {}, + "4449-\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": {} + }, + "446-\u00c9tat, autres taxes sur le chiffre d\u2019affaires": {}, + "447-\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "4471-Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": {}, + "4472-Imp\u00f4ts sur salaires": {}, + "4473-Contribution nationale": {}, + "4474-Contribution nationale de solidarit\u00e9": {}, + "4478-Autres imp\u00f4ts et contributions": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "4611-Apporteurs, apports en nature": {}, + "4612-Apporteurs, apports en num\u00e9raire": {}, + "4615-Apporteurs, versements re\u00e7us sur augmentation de capital": {}, + "4616-Apporteurs, versements anticip\u00e9s": {}, + "4617-Apporteurs d\u00e9faillants": {}, + "4619-Apporteurs, capital \u00e0 rembourser": {} + }, + "462-Associ\u00e9s, comptes courants": { + "4621-Principal": {}, + "4626-Int\u00e9r\u00eats courus": {} + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "4631-Op\u00e9rations courantes": {}, + "4636-Int\u00e9r\u00eats courus": {} + }, + "465-Associ\u00e9s, dividendes \u00e0 payer": {}, + "466-Groupe, comptes courants": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "4711-D\u00e9biteurs divers": {}, + "4712-Cr\u00e9diteurs divers": {}, + "4713-Obligataires": {}, + "4715-R\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "4716-Compte d\u2019affacturage": {}, + "4717-D\u00e9biteurs divers retenues de garantie": {}, + "4718-Apport, compte de fusion et op\u00e9rations assimil\u00e9es": {}, + "4719-Bons de souscription d\u2019actions et d\u2019obligations": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "4746-Compte de r\u00e9partition p\u00e9riodique des charges": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "4752-Compte passif": {} + }, + "477-Produits constat\u00e9s d\u2019avance": {}, + "479-\u00c9carts de conversion passif": { + "4791-Augmentation des cr\u00e9ances d\u2019exploitation": {}, + "4792-Augmentation des cr\u00e9ances financi\u00e8res": {}, + "4793-Diminution des dettes d\u2019exploitation": {}, + "4794-Diminution des dettes financi\u00e8res": {}, + "4797-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4798-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "481-Fournisseurs d\u2019investissements": { + "4811-Immobilisations incorporelles": {}, + "4812-Immobilisations corporelles": {}, + "4813-Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": {}, + "4816-R\u00e9serve de propri\u00e9t\u00e9": {}, + "4817-Retenues de garantie": {}, + "4818-Factures non parvenues": {} + }, + "482-Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "4821-Immobilisations incorporelles": {}, + "4822-Immobilisations corporelles": {} + }, + "484-Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "4887-Produits": {} + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (PASSIF)": { + "490-D\u00e9pr\u00e9ciations des comptes fournisseurs": {}, + "492-D\u00e9pr\u00e9ciations des comptes personnel": {}, + "493-D\u00e9pr\u00e9ciations des comptes organismes sociaux": {}, + "494-D\u00e9pr\u00e9ciations des comptes \u00c9tat et collectivit\u00e9s publiques": {}, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {} + }, + "root_type": "Liability" + }, + "5-Comptes de tr\u00e9sorerie": { + "50-Titres de placement": { + "501-Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "5011-Titres du Tr\u00e9sor \u00e0 court terme": {}, + "5012-Titres d\u2019organismes financiers": {}, + "5013-Bons de caisse \u00e0 court terme": {}, + "5016-Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": {} + }, + "502-Actions": { + "5021-Actions ou parts propres": {}, + "5022-Actions cot\u00e9es": {}, + "5023-Actions non cot\u00e9es": {}, + "5024-Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": {}, + "5025-Autres actions": {}, + "5026-Frais d\u2019acquisition des actions": {} + }, + "503-Obligations": { + "5031-Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": {}, + "5032-Obligations cot\u00e9es": {}, + "5033-Obligations non cot\u00e9es": {}, + "5035-Autres obligations": {}, + "5036-Frais d\u2019acquisition des obligations": {} + }, + "504-Bons de souscription": { + "5042-Bons de souscription d\u2019actions": {}, + "5043-Bons de souscription d\u2019obligations": {} + }, + "505-Titres n\u00e9gociables hors r\u00e9gion": {}, + "506-Int\u00e9r\u00eats courus": { + "5061-Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": {}, + "5062-Actions": {}, + "5063-Obligations": {} + }, + "508-Autres titres de placement et cr\u00e9ances assimil\u00e9es": {} + }, + "51-Valeurs \u00e0 encaisser": { + "511-Effets \u00e0 encaisser": {}, + "512-Effets \u00e0 l\u2019encaissement": {}, + "513-Ch\u00e8ques \u00e0 encaisser": {}, + "514-Ch\u00e8ques \u00e0 l\u2019encaissement": {}, + "515-Cartes de cr\u00e9dit \u00e0 encaisser": {}, + "518-Autres valeurs \u00e0 l\u2019encaissement": { + "5181-Warrants": {}, + "5182-Billets de fonds": {}, + "5185-Ch\u00e8ques de voyage": {}, + "5186-Coupons \u00e9chus": {}, + "5187-Int\u00e9r\u00eats \u00e9chus des obligations": {} + } + }, + "52-Banques": { + "521-Banques locales": { + "5211-Banques en monnaie nationale": { + "account_type": "Bank" + }, + "5215-Banques en devises": { + "account_type": "Bank" + }, + "account_type": "Bank" + }, + "522-Banques autres \u00c9tats r\u00e9gion": {}, + "523-Banques autres \u00c9tats zone mon\u00e9taire": {}, + "524-Banques hors zone mon\u00e9taire": {}, + "525-Banques d\u00e9p\u00f4t \u00e0 terme": {}, + "526-Banques, int\u00e9r\u00eats courus": { + "5261-Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": {}, + "5267-Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": {} + } + }, + "53-\u00c9tablissements financiers et assimil\u00e9s": { + "531-Ch\u00e8ques postaux": {}, + "532-Tr\u00e9sor": {}, + "533-Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": {}, + "536-\u00c9tablissements financiers, int\u00e9r\u00eats courus": {}, + "538-Autres organismes financiers": {} + }, + "54-Instruments de tr\u00e9sorerie": { + "541-Options de taux d\u2019int\u00e9r\u00eat": {}, + "542-Options de taux de change": {}, + "543-Options de taux boursiers": {}, + "544-Instruments de march\u00e9s \u00e0 terme": {}, + "545-Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": {} + }, + "55-Instruments de monnaie \u00e9lectronique": { + "551-Monnaie \u00e9lectronique carte carburant": {}, + "552-Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": {}, + "553-Monnaie \u00e9lectronique carte p\u00e9age": {}, + "554-Porte-monnaie \u00e9lectronique": {}, + "558-Autres instruments de monnaies \u00e9lectroniques": {} + }, + "56-Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "561-Cr\u00e9dits de tr\u00e9sorerie": {}, + "564-Escompte de cr\u00e9dits de campagne": {}, + "565-Escompte de cr\u00e9dits ordinaires": {}, + "566-Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": {} + }, + "57-Caisse": { + "571-Caisse si\u00e8ge social": { + "5711-Caisse en monnaie nationale": {}, + "5712-Caisse en devises": {} + }, + "572-Caisse succursale A": { + "5721-En monnaie nationale": {}, + "5722-En devises": {} + }, + "573-Caisse succursale B": { + "5731-En monnaie nationale": {}, + "5732-En devises": {} + } + }, + "58-R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "581-R\u00e9gies d\u2019avance": {}, + "582-Accr\u00e9ditifs": {}, + "585-Virements de fonds": {}, + "588-Autres virements internes": {} + }, + "59-D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "590-D\u00e9pr\u00e9ciations des titres de placement": {}, + "591-D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": {}, + "592-D\u00e9pr\u00e9ciations des comptes banques": {}, + "593-D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": {}, + "594-D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": {}, + "599-Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": {} + }, + "root_type": "Asset" + }, + "6-Comptes de charges des activit\u00e9s ordinaires": { + "60-Achats et variations de stocks": { + "601-Achats de marchandises": { + "6011-Dans la R\u00e9gion": {}, + "6012-Hors R\u00e9gion": {}, + "6013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6015-Frais sur achats": {}, + "6019-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "602-Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "6021-Dans la R\u00e9gion": {}, + "6022-Hors R\u00e9gion": {}, + "6023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6025-Frais sur achats": {}, + "6029-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "603-Variations des stocks de biens achet\u00e9s": { + "6031-Variations des stocks de marchandises": {}, + "6032-Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "6033-Variations des stocks d\u2019autres approvisionnements": {} + }, + "604-Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "6041-Mati\u00e8res consommables": {}, + "6042-Mati\u00e8res combustibles": {}, + "6043-Produits d\u2019entretien": {}, + "6044-Fournitures d\u2019atelier et d\u2019usine": {}, + "6045-Frais sur achat": {}, + "6046-Fournitures de magasin": {}, + "6047-Fournitures de bureau": {}, + "6049-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "605-Autres achats": { + "6051-Fournitures non stockables Eau": {}, + "6052-Fournitures non stockables \u00c9lectricit\u00e9": {}, + "6053-Fournitures non stockables Autres \u00e9nergies": {}, + "6054-Fournitures d\u2019entretien non stockables": {}, + "6055-Fournitures de bureau non stockables": {}, + "6056-Achats de petit mat\u00e9riel et outillage": {}, + "6057-Achats d\u2019\u00e9tudes et prestations de services": {}, + "6058-Achats de travaux, mat\u00e9riels et \u00e9quipements": {}, + "6059-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "608-Achats d\u2019emballages": { + "6081-Emballages perdus": {}, + "6082-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "6083-Emballages \u00e0 usage mixte": {}, + "6085-Frais sur achats": {}, + "6089-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + } + }, + "61-Transports": { + "612-Transports sur ventes": {}, + "613-Transports pour le compte de tiers": {}, + "614-Transports du personnel": {}, + "616-Transports de plis": {}, + "618-Autres frais de transport": { + "6181-Voyages et d\u00e9placements": {}, + "6182-Transports entre \u00e9tablissements ou chantiers": {}, + "6183-Transports administratifs": {} + } + }, + "62-Services ext\u00e9rieurs": { + "621-Sous-traitance g\u00e9n\u00e9rale": {}, + "622-Locations, charges locatives": { + "6221-Locations de terrains": {}, + "6222-Locations de b\u00e2timents": {}, + "6223-Locations de mat\u00e9riels et outillages": {}, + "6224-Malis sur emballages": {}, + "6225-Locations d\u2019emballages": {}, + "6226-Fermages et loyers du foncier": {}, + "6228-Locations et charges locatives diverses": {} + }, + "623-Redevances de location acquisition": { + "6232-Cr\u00e9dit-bail immobilier": {}, + "6233-Cr\u00e9dit-bail mobilier": {}, + "6234-Location-vente": {}, + "6238-Autres contrats de location acquisition": {} + }, + "624-Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "6241-Entretien et r\u00e9parations des biens immobiliers": {}, + "6242-Entretien et r\u00e9parations des biens mobiliers": {}, + "6243-Maintenance": {}, + "6244-Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "6248-Autres entretiens et r\u00e9parations": {} + }, + "625-Primes d\u2019assurance": { + "6251-Assurances multirisques": {}, + "6252-Assurances mat\u00e9riel de transport": {}, + "6253-Assurances risques d\u2019exploitation": {}, + "6254-Assurances responsabilit\u00e9 du producteur": {}, + "6255-Assurances insolvabilit\u00e9 clients": {}, + "6257-Assurances transport sur ventes": {}, + "6258-Autres primes d\u2019assurances": {} + }, + "626-\u00c9tudes, recherches et documentation": { + "6261-\u00c9tudes et recherches": {}, + "6265-Documentation g\u00e9n\u00e9rale": {}, + "6266-Documentation technique": {} + }, + "627-Publicit\u00e9, publications, relations publiques": { + "6271-Annonces, insertions": {}, + "6272-Catalogues, imprim\u00e9s publicitaires": {}, + "6273-\u00c9chantillons": {}, + "6274-Foires et expositions": {}, + "6275-Publications": {}, + "6276-Cadeaux \u00e0 la client\u00e8le": {}, + "6277-Frais de colloques, s\u00e9minaires, conf\u00e9rences": {}, + "6278-Autres charges de publicit\u00e9 et relations publiques": {} + }, + "628-Frais de t\u00e9l\u00e9communications": { + "6281-Frais de t\u00e9l\u00e9phone": {}, + "6282-Frais de t\u00e9lex": {}, + "6283-Frais de t\u00e9l\u00e9copie": {}, + "6288-Autres frais de t\u00e9l\u00e9communications": {} + } + }, + "63-Autres services ext\u00e9rieurs": { + "631-Frais bancaires": { + "6311-Frais sur titres (vente, garde)": {}, + "6312-Frais sur effets": {}, + "6313-Location de coffres": {}, + "6314-Commissions d\u2019affacturage": {}, + "6315-Commissions sur cartes de cr\u00e9dit": {}, + "6316-Frais d\u2019\u00e9mission d\u2019emprunts": {}, + "6317-Frais sur instruments monnaie \u00e9lectronique": {}, + "6318-Autres frais bancaires": {} + }, + "632-R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "6322-Commissions et courtages sur ventes": {}, + "6324-Honoraires des professions r\u00e9glement\u00e9es": {}, + "6325-Frais d\u2019actes et de contentieux": {}, + "6326-R\u00e9mun\u00e9rations d\u2019affacturage": {}, + "6327-R\u00e9mun\u00e9rations des autres prestataires de services": {}, + "6328-Divers frais": {} + }, + "633-Frais de formation du personnel": {}, + "634-Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "6342-Redevances pour brevets, licences": {}, + "6343-Redevances pour logiciels": {}, + "6344-Redevances pour marques": {}, + "6345-Redevances pour sites internet": {}, + "6346-Redevances pour concessions, droits et valeurs similaires": {} + }, + "635-Cotisations": { + "6351-Cotisations": {}, + "6358-Concours divers": {} + }, + "637-R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "6371-Personnel int\u00e9rimaire": {}, + "6372-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "638-Autres charges externes": { + "6381-Frais de recrutement du personnel": {}, + "6382-Frais de d\u00e9m\u00e9nagement": {}, + "6383-R\u00e9ceptions": {}, + "6384-Missions": {}, + "6385-Charges de copropri\u00e9t\u00e9": {} + } + }, + "64-Imp\u00f4ts et taxes": { + "641-Imp\u00f4ts et taxes directs": { + "6411-Imp\u00f4ts fonciers et taxes annexes": {}, + "6412-Patentes, licences et taxes annexes": {}, + "6413-Taxes sur appointements et salaires": {}, + "6414-Taxes d\u2019apprentissage": {}, + "6415-Formation professionnelle continue": {}, + "6418-Autres imp\u00f4ts et taxes directs": {} + }, + "645-Imp\u00f4ts et taxes indirects": {}, + "646-Droits d\u2019enregistrement": { + "6461-Droits de mutation": {}, + "6462-Droits de timbre": {}, + "6463-Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": {}, + "6464-Vignettes": {}, + "6468-Autres droits": {} + }, + "647-P\u00e9nalit\u00e9s, amendes fiscales": { + "6471-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": {}, + "6472-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": {}, + "6473-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": {}, + "6474-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": {}, + "6478-Autres p\u00e9nalit\u00e9s et amendes fiscales": {} + }, + "648-Autres imp\u00f4ts et taxes": {} + }, + "65-Autres charges": { + "651-Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "6511-Clients": {}, + "6515-Autres d\u00e9biteurs": {} + }, + "652-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "6521-Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": {}, + "6525-Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "654-Valeurs comptables des cessions courantes d\u2019immobilisations": { + "6541-Immobilisations incorporelles": {}, + "6542-Immobilisations corporelles": {} + }, + "656-Perte de change sur cr\u00e9ances et dettes commerciale": {}, + "657-P\u00e9nalit\u00e9s et amendes p\u00e9nales": {}, + "658-Charges diverses": { + "6581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "6582-Dons": {}, + "6583-M\u00e9c\u00e9nat": {}, + "6588-Autres charges diverses": {} + }, + "659-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "6591-Sur risques \u00e0 court terme": {}, + "6593-Sur stocks": {}, + "6594-Sur cr\u00e9ances": {}, + "6598-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": {} + } + }, + "66-Charges de personnel": { + "661-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "6611-Appointements salaires et commissions": {}, + "6612-Primes et gratifications": {}, + "6613-Cong\u00e9s pay\u00e9s": {}, + "6614-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6615-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6616-Suppl\u00e9ment familial": {}, + "6617-Avantages en nature": {}, + "6618-Autres r\u00e9mun\u00e9rations directes": {} + }, + "662-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "6621-Appointements salaires et commissions": {}, + "6622-Primes et gratifications": {}, + "6623-Cong\u00e9s pay\u00e9s": {}, + "6624-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6625-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6626-Suppl\u00e9ment familial": {}, + "6627-Avantages en nature": {}, + "6628-Autres r\u00e9mun\u00e9rations directes": {} + }, + "663-Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "6631-Indemnit\u00e9s de logement": {}, + "6632-Indemnit\u00e9s de repr\u00e9sentation": {}, + "6633-Indemnit\u00e9s d\u2019expatriation": {}, + "6634-Indemnit\u00e9s de transport": {}, + "6638-Autres indemnit\u00e9s et avantages divers": {} + }, + "664-Charges sociales": { + "6641-Charges sociales sur r\u00e9mun\u00e9ration du personnel national": {}, + "6642-Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": {} + }, + "666-R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "6661-R\u00e9mun\u00e9ration du travail de l\u2019exploitant": {}, + "6662-Charges sociales": {} + }, + "667-R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "6671-Personnel int\u00e9rimaire": {}, + "6672-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "668-Autres charges sociales": { + "6681-Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": {}, + "6682-Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": {}, + "6683-Versements et contributions aux autres \u0153uvres sociales": {}, + "6684-M\u00e9decine du travail et pharmacie": {}, + "6685-Assurances et organismes de sant\u00e9": {}, + "6686-Assurances retraite et fonds de pension": {}, + "6687-Majorations et p\u00e9nalit\u00e9s sociales": {}, + "6688-Charges sociales diverses": {} + } + }, + "67-Frais financiers et charges assimil\u00e9es": { + "671-Int\u00e9r\u00eats des emprunts": { + "6711-Emprunts obligataires": {}, + "6712-Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "6713-Dettes li\u00e9es \u00e0 des participations": {}, + "6714-Primes de remboursement des obligations": {} + }, + "672-Int\u00e9r\u00eats dans loyers de location acquisition": { + "6722-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": {}, + "6723-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": {}, + "6724-Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": {}, + "6728-Int\u00e9r\u00eats dans loyers des autres locations acquisition": {} + }, + "673-Escomptes accord\u00e9s": {}, + "674-Autres int\u00e9r\u00eats": { + "6741-Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": {}, + "6742-Comptes courants bloqu\u00e9s": {}, + "6743-Int\u00e9r\u00eats sur obligations cautionn\u00e9es": {}, + "6744-Int\u00e9r\u00eats sur dettes commerciales": {}, + "6745-Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": {}, + "6748-Int\u00e9r\u00eats sur dettes diverses": {} + }, + "675-Escomptes des effets de commerce": {}, + "676-Pertes de change financi\u00e8res": {}, + "677-Pertes sur titres de placement": { + "6771-Pertes sur cessions de titres de placement": {}, + "6772-Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {} + }, + "678-Pertes et charges sur risques financiers": { + "6781-Sur rentes viag\u00e8res": {}, + "6782-Sur op\u00e9rations financi\u00e8res": {}, + "6784-Sur instruments de tr\u00e9sorerie": {} + }, + "679-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "6791-Sur risques financiers": {}, + "6795-Sur titres de placement": {}, + "6798-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "68-Dotations aux amortissements": { + "681-Dotations aux amortissements d\u2019exploitation": { + "6812-Dotations aux amortissements des immobilisations incorporelles": {}, + "6813-Dotations aux amortissements des immobilisations corporelles": {} + } + }, + "69-Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "691-Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "6911-Dotations aux provisions pour risques et charges": {}, + "6913-Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": {}, + "6914-Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": {} + }, + "697-Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "6971-Dotations aux provisions pour risques et charges": {}, + "6972-Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": {} + } + }, + "root_type": "Expense" + }, + "7-Comptes de produits des activit\u00e9s ordinaires": { + "70-Ventes": { + "701-Ventes de marchandises": { + "7011-Dans la R\u00e9gion": {}, + "7012-Hors R\u00e9gion": {}, + "7013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7015-Sur internet": {}, + "7019-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "702-Ventes de produits finis": { + "7021-Dans la R\u00e9gion": {}, + "7022-Hors R\u00e9gion": {}, + "7023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7025-Sur internet": {}, + "7029-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "703-Ventes de produits interm\u00e9diaires": { + "7031-Dans la R\u00e9gion": {}, + "7032-Hors R\u00e9gion": {}, + "7033-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7034-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7035-Sur internet": {}, + "7039-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "704-Ventes de produits r\u00e9siduels": { + "7041-Dans la R\u00e9gion": {}, + "7042-Hors R\u00e9gion": {}, + "7043-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7044-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7045-Sur internet": {}, + "7049-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "705-Travaux factur\u00e9s": { + "7051-Dans la R\u00e9gion": {}, + "7052-Hors R\u00e9gion": {}, + "7053-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7054-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7055-Sur internet": {}, + "7059-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "706-Services vendus": { + "7061-Dans la R\u00e9gion": {}, + "7062-Hors R\u00e9gion": {}, + "7063-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7064-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7065-Sur internet": {}, + "7069-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "707-Produits accessoires": { + "7071-Ports, emballages perdus et autres frais factur\u00e9s": {}, + "7072-Commissions et courtages": {}, + "7073-Locations": {}, + "7074-Bonis sur reprises et cessions d\u2019emballages": {}, + "7075-Mise \u00e0 disposition de personnel": {}, + "7076-Redevances pour brevets, logiciels, marques et droits similaires": {}, + "7077-Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": {}, + "7078-Autres produits accessoires": {} + } + }, + "71-Subventions d\u2019exploitation": { + "711-Sur produits \u00e0 l\u2019exportation": {}, + "712-Sur produits \u00e0 l\u2019importation": {}, + "713-Sur produits de p\u00e9r\u00e9quation": {}, + "714-Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": {}, + "718-Autres subventions d\u2019exploitation": { + "7181-Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": {}, + "7182-Vers\u00e9es par les organismes internationaux": {}, + "7183-Vers\u00e9es par des tiers": {} + } + }, + "72-Production immobilis\u00e9e": { + "721-Immobilisations incorporelles": {}, + "722-Immobilisations corporelles": { + "7221-Immobilisations corporelles (hors actifs biologiques)": {}, + "7222-Immobilisations corporelles (actifs biologiques)": {} + }, + "724-Production auto-consomm\u00e9e": {}, + "726-Immobilisations financi\u00e8res": {} + }, + "73-Variations des stocks de biens et de services produits": { + "734-Variations des stocks de produits en cours": { + "7341-Produits en cours": {}, + "7342-Travaux en cours": {} + }, + "735-Variations des en-cours de services": { + "7351-\u00c9tudes en cours": {}, + "7352-Prestations de services en cours": {} + }, + "736-Variations des stocks de produits finis": {}, + "737-Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "7371-Produits interm\u00e9diaires": {}, + "7372-Produits r\u00e9siduels": {} + } + }, + "75-Autres produits": { + "751-Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": {}, + "752-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "7521-Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": {}, + "7525-B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "754-Produits des cessions courantes d\u2019immobilisations": { + "7541-Immobilisations incorporelles": {}, + "7542-Immobilisations corporelles": {} + }, + "756-Gains de change sur cr\u00e9ances et dettes commerciales": {}, + "758-Produits divers": { + "7581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "7582-Indemnit\u00e9s d\u2019assurances re\u00e7ues": {}, + "7588-Autres produits divers": {} + }, + "759-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "7591-Sur risques \u00e0 court terme": {}, + "7593-Sur stocks": {}, + "7594-Sur cr\u00e9ances": {}, + "7598-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": {} + } + }, + "77-Revenus financiers et produits assimil\u00e9s": { + "771-Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "7712-Int\u00e9r\u00eats de pr\u00eats": {}, + "7713-Int\u00e9r\u00eats sur cr\u00e9ances diverses": {} + }, + "772-Revenus de participations et autres titres immobilis\u00e9s": { + "7721-Revenus des titres de participation": {}, + "7722-Revenus autres titres immobilis\u00e9s": {} + }, + "773-Escomptes obtenus": {}, + "774-Revenus de placement": { + "7745-Revenus des obligations": {}, + "7746-Revenus des titres de placement": {} + }, + "775-Int\u00e9r\u00eats dans loyers de location acquisition": {}, + "776-Gains de change financiers": {}, + "777-Gains sur cessions de titres de placement": {}, + "778-Gains sur risques financiers": { + "7781-Sur rentes viag\u00e8res": {}, + "7782-Sur op\u00e9rations financi\u00e8res": {}, + "7784-Sur instruments de tr\u00e9sorerie": {} + }, + "779-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "7791-Sur risques financiers": {}, + "7795-Sur titres de placement": {}, + "7798-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "78-Transferts de charges": { + "781-Transferts de charges d\u2019exploitation": {}, + "787-Transferts de charges financi\u00e8res": {} + }, + "79-Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "791-Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "7911-Pour risques et charges": {}, + "7913-Des immobilisations incorporelles": {}, + "7914-Des immobilisations corporelles": {} + }, + "797-Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "7971-Pour risques et charges": {}, + "7972-Des immobilisations financi\u00e8res": {} + }, + "798-Reprises d\u2019amortissements": {}, + "799-Reprises de subventions d\u2019investissement": {} + }, + "root_type": "Income" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "81-Valeurs comptables des cessions d\u2019immobilisations": { + "811-Immobilisations incorporelles": {}, + "812-Immobilisations corporelles": {}, + "816-Immobilisations financi\u00e8res": {} + }, + "83-Charges hors activit\u00e9s ordinaires": { + "831-Charges HAO constat\u00e9es": {}, + "833-Charges li\u00e9es aux op\u00e9rations de restructuration": {}, + "834-Pertes sur cr\u00e9ances HAO": {}, + "835-Dons et lib\u00e9ralit\u00e9s accord\u00e9s": {}, + "836-Abandons de cr\u00e9ances consentis": {}, + "837-Charges li\u00e9es aux op\u00e9rations de liquidation": {}, + "839-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "85-Dotations hors activit\u00e9s ordinaires": { + "851-Dotations aux provisions r\u00e9glement\u00e9es": {}, + "852-Dotations aux amortissements HAO": {}, + "853-Dotations aux d\u00e9pr\u00e9ciations HAO": {}, + "854-Dotations aux provisions pour risques et charges HAO": {}, + "858-Autres dotations HAO": {} + }, + "87-Participation des travailleurs": { + "871-Participation l\u00e9gale aux b\u00e9n\u00e9fices": {}, + "874-Participation contractuelle aux b\u00e9n\u00e9fices": {}, + "878-Autres participations": {} + }, + "89-Imp\u00f4ts sur le r\u00e9sultat": { + "891-Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "8911-Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": {}, + "8912-Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": {}, + "8913-Activit\u00e9s exerc\u00e9es hors R\u00e9gion": {} + }, + "892-Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": {}, + "895-Imp\u00f4t minimum forfaitaire IMF": {}, + "899-D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "8991-D\u00e9gr\u00e8vements": {}, + "8994-Annulations pour pertes r\u00e9troactives": {} + } + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "82-Produits des cessions d\u2019immobilisations": { + "821-Immobilisations incorporelles": {}, + "822-Immobilisations corporelles": {}, + "826-Immobilisations financi\u00e8res": {} + }, + "84-Produits hors activit\u00e9s ordinaires": { + "841-Produits HAO constat\u00e9s": {}, + "843-Produits li\u00e9s aux op\u00e9rations de restructuration": {}, + "844-Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": {}, + "845-Dons et lib\u00e9ralit\u00e9s obtenus": {}, + "846-Abandons de cr\u00e9ances obtenus": {}, + "847-Produits li\u00e9s aux op\u00e9rations de liquidation": {}, + "848-Transferts de charges HAO": {}, + "849-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "86-Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "861-Reprises de provisions r\u00e9glement\u00e9es": {}, + "862-Reprises d\u2019amortissements HAO": {}, + "863-Reprises de d\u00e9pr\u00e9ciations HAO": {}, + "864-Reprises de provisions pour risques et charges HAO": {}, + "868-Autres reprises HAO": {} + }, + "88-Subventions d\u2019\u00e9quilibre": { + "881-\u00c9tat": {}, + "884-Collectivit\u00e9s publiques": {}, + "886-Groupe": {}, + "888-Autres": {} + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/bj_plan_comptable_avec_code.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/bj_plan_comptable_avec_code.json new file mode 100644 index 00000000000..9b7d9a4fcab --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/bj_plan_comptable_avec_code.json @@ -0,0 +1,4208 @@ +{ + "country_code": "bj", + "name": "Syscohada - Plan Comptable avec code", + "tree": { + "Comptes de ressources durables": { + "Capital": { + "Capital social": { + "Capital souscrit, non appel\u00e9": { + "account_number": "1011" + }, + "Capital souscrit, appel\u00e9, non vers\u00e9": { + "account_number": "1012" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, non amorti": { + "account_number": "1013" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, amorti": { + "account_number": "1014" + }, + "Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": { + "account_number": "1018" + }, + "account_number": "101" + }, + "Capital par dotation": { + "Dotation initiale": { + "account_number": "1021" + }, + "Dotations compl\u00e9mentaires": { + "account_number": "1022" + }, + "Autres dotations": { + "account_number": "1028" + }, + "account_number": "102" + }, + "Capital personnel": { + "account_number": "103" + }, + "Compte de l\u2019exploitant": { + "Apports temporaires": { + "account_number": "1041" + }, + "Op\u00e9rations courantes": { + "account_number": "1042" + }, + "R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": { + "account_number": "1043" + }, + "Pr\u00e9l\u00e8vements d\u2019autoconsommation": { + "account_number": "1047" + }, + "Autres pr\u00e9l\u00e8vements": { + "account_number": "1048" + }, + "account_number": "104" + }, + "Primes li\u00e9es au capital social": { + "Primes d\u2019\u00e9mission": { + "account_number": "1051" + }, + "Primes d\u2019apport": { + "account_number": "1052" + }, + "Primes de fusion": { + "account_number": "1053" + }, + "Primes de conversion": { + "account_number": "1054" + }, + "Autres primes": { + "account_number": "1058" + }, + "account_number": "105" + }, + "\u00c9carts de r\u00e9\u00e9valuation": { + "\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": { + "account_number": "1061" + }, + "\u00c9carts de r\u00e9\u00e9valuation libre": { + "account_number": "1062" + }, + "account_number": "106" + }, + "Apporteurs, capital souscrit, non appel\u00e9": { + "account_number": "109" + }, + "account_number": "10" + }, + "R\u00e9serves": { + "R\u00e9serve l\u00e9gale": { + "account_number": "111" + }, + "R\u00e9serves statutaires ou contractuelles": { + "account_number": "112" + }, + "R\u00e9serves r\u00e9glement\u00e9es": { + "R\u00e9serves de plus-values nettes \u00e0 long terme": { + "account_number": "1131" + }, + "R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "1132" + }, + "R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": { + "account_number": "1133" + }, + "R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": { + "account_number": "1134" + }, + "Autres r\u00e9serves r\u00e9glement\u00e9es": { + "account_number": "1135" + }, + "account_number": "113" + }, + "Autres r\u00e9serves": { + "R\u00e9serves facultatives": { + "account_number": "1181" + }, + "R\u00e9serves diverses": { + "account_number": "1188" + }, + "account_number": "118" + }, + "account_number": "11" + }, + "Report \u00e0 nouveau": { + "Report \u00e0 nouveau cr\u00e9diteur": { + "account_number": "121" + }, + "Report \u00e0 nouveau d\u00e9biteur": { + "Perte nette \u00e0 reporter": { + "account_number": "1291" + }, + "Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": { + "account_number": "1292" + }, + "account_number": "129" + }, + "account_number": "12" + }, + "R\u00e9sultat net de l\u2019exercice": { + "R\u00e9sultat en instance d\u2019affectation": { + "R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": { + "account_number": "1301" + }, + "R\u00e9sultat en instance d\u2019affectation : perte": { + "account_number": "1309" + }, + "account_number": "130" + }, + "R\u00e9sultat net : b\u00e9n\u00e9fice": { + "account_number": "131" + }, + "Marge commerciale (MC)": { + "account_number": "132" + }, + "Valeur ajout\u00e9e (VA)": { + "account_number": "133" + }, + "Exc\u00e9dent brut d\u2019exploitation (EBE)": { + "account_number": "134" + }, + "R\u00e9sultat d\u2019exploitation (RE)": { + "account_number": "135" + }, + "R\u00e9sultat financier (RF)": { + "account_number": "136" + }, + "R\u00e9sultat des activit\u00e9s ordinaires (RAO)": { + "account_number": "137" + }, + "R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "R\u00e9sultat de fusion": { + "account_number": "1381" + }, + "R\u00e9sultat d\u2019apport partiel d\u2019actif": { + "account_number": "1382" + }, + "R\u00e9sultat de scission": { + "account_number": "1383" + }, + "R\u00e9sultat de liquidation": { + "account_number": "1384" + }, + "account_number": "138" + }, + "R\u00e9sultat net : perte": { + "account_number": "139" + }, + "account_number": "13" + }, + "Subventions d\u2019investissement": { + "Subventions d\u2019\u00e9quipement": { + "\u00c9tat": { + "account_number": "1411" + }, + "R\u00e9gions": { + "account_number": "1412" + }, + "D\u00e9partements": { + "account_number": "1413" + }, + "Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": { + "account_number": "1414" + }, + "Entit\u00e9s publiques ou mixtes": { + "account_number": "1415" + }, + "Entit\u00e9s et organismes priv\u00e9s": { + "account_number": "1416" + }, + "Organismes internationaux": { + "account_number": "1417" + }, + "Autres": { + "account_number": "1418" + }, + "account_number": "141" + }, + "Autres subventions d\u2019investissement": { + "account_number": "148" + }, + "account_number": "14" + }, + "Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "Amortissements d\u00e9rogatoires": { + "account_number": "151" + }, + "Plus-values de cession \u00e0 r\u00e9investir": { + "account_number": "152" + }, + "Fonds r\u00e9glement\u00e9s": { + "Fonds National": { + "account_number": "1531" + }, + "Pr\u00e9l\u00e8vement pour le Budget": { + "account_number": "1532" + }, + "account_number": "153" + }, + "Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": { + "account_number": "154" + }, + "Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "Reconstitution des gisements miniers et p\u00e9troliers": { + "account_number": "1551" + }, + "account_number": "155" + }, + "Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "Hausse de prix": { + "account_number": "1561" + }, + "Fluctuation des cours": { + "account_number": "1562" + }, + "account_number": "156" + }, + "Provisions pour investissement": { + "account_number": "157" + }, + "Autres provisions et fonds r\u00e9glement\u00e9s": { + "account_number": "158" + }, + "account_number": "15" + }, + "Emprunts et dettes assimil\u00e9es": { + "Emprunts obligataires": { + "Emprunts obligataires ordinaires": { + "account_number": "1611" + }, + "Emprunts obligataires convertibles en actions": { + "account_number": "1612" + }, + "Emprunts obligataires remboursables en actions": { + "account_number": "1613" + }, + "Autres emprunts obligataires": { + "account_number": "1618" + }, + "account_number": "161" + }, + "Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "162" + }, + "Avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "163" + }, + "Avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "164" + }, + "D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "D\u00e9p\u00f4ts": { + "account_number": "1651" + }, + "Cautionnements": { + "account_number": "1652" + }, + "account_number": "165" + }, + "Int\u00e9r\u00eats courus": { + "Sur emprunts obligataires": { + "account_number": "1661" + }, + "Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "1662" + }, + "Sur avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "1663" + }, + "Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "1664" + }, + "Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "account_number": "1665" + }, + "Sur avances assorties de conditions particuli\u00e8res": { + "account_number": "1667" + }, + "Sur autres emprunts et dettes": { + "account_number": "1668" + }, + "account_number": "166" + }, + "Avances assorties de conditions particuli\u00e8res": { + "Avances bloqu\u00e9es pour augmentation du capital": { + "account_number": "1671" + }, + "Avances conditionn\u00e9es par l\u2019\u00c9tat": { + "account_number": "1672" + }, + "Avances conditionn\u00e9es par les autres organismes africains": { + "account_number": "1673" + }, + "Avances conditionn\u00e9es par les organismes internationaux": { + "account_number": "1674" + }, + "account_number": "167" + }, + "Autres emprunts et dettes": { + "Rentes viag\u00e8res capitalis\u00e9es": { + "account_number": "1681" + }, + "Billets de fonds": { + "account_number": "1682" + }, + "Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": { + "account_number": "1683" + }, + "Emprunts participatifs": { + "account_number": "1684" + }, + "Participation des travailleurs aux b\u00e9n\u00e9fices": { + "account_number": "1685" + }, + "Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": { + "account_number": "1686" + }, + "account_number": "168" + }, + "account_number": "16" + }, + "Dettes de location acquisition": { + "Dettes de location acquisition / cr\u00e9dit bail immobilier": { + "account_number": "172" + }, + "Dettes de location acquisition / cr\u00e9dit bail mobilier": { + "account_number": "173" + }, + "Dettes de location acquisition / location de vente": { + "account_number": "174" + }, + "Int\u00e9r\u00eats courus": { + "Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "1762" + }, + "Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "1763" + }, + "Sur dettes de location acquisition / location-vente": { + "account_number": "1764" + }, + "Sur autres dettes de location acquisition": { + "account_number": "1768" + }, + "account_number": "176" + }, + "Autres dettes de location acquisition": { + "account_number": "178" + }, + "account_number": "17" + }, + "Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "Dettes li\u00e9es \u00e0 des participations": { + "Dettes li\u00e9es \u00e0 des participations (groupe)": { + "account_number": "1811" + }, + "Dettes li\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "1812" + }, + "account_number": "181" + }, + "Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "182" + }, + "Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": { + "account_number": "183" + }, + "Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "184" + }, + "Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "185" + }, + "Comptes de liaison charges": { + "account_number": "186" + }, + "Comptes de liaison produits": { + "account_number": "187" + }, + "Comptes de liaison des soci\u00e9t\u00e9s en participation": { + "account_number": "188" + }, + "account_number": "18" + }, + "Provisions pour risques et charges": { + "Provisions pour litiges": { + "account_number": "191" + }, + "Provisions pour garanties donn\u00e9es aux clients": { + "account_number": "192" + }, + "Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": { + "account_number": "193" + }, + "Provisions pour pertes de change": { + "account_number": "194" + }, + "Provisions pour imp\u00f4ts": { + "account_number": "195" + }, + "Provisions pour pensions et obligations similaires": { + "Provisions pour pensions et obligations similaires engagement de retraite": { + "account_number": "1961" + }, + "Actif du r\u00e9gime de retraite": { + "account_number": "1962" + }, + "account_number": "196" + }, + "Provisions pour restructuration": { + "account_number": "197" + }, + "Autres provisions pour risques et charges": { + "Provisions pour amendes et p\u00e9nalit\u00e9s": { + "account_number": "1981" + }, + "Provisions pour propre assureur": { + "account_number": "1983" + }, + "Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "1984" + }, + "Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": { + "account_number": "1985" + }, + "Provisions pour divers risques et charges": { + "account_number": "1988" + }, + "account_number": "198" + }, + "account_number": "19" + }, + "root_type": "Equity", + "account_number": "1" + }, + "Comptes d\u2019actif immobilis\u00e9": { + "Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "211" + }, + "Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "Brevets": { + "account_type": "Fixed Asset", + "account_number": "2121" + }, + "Licences": { + "account_type": "Fixed Asset", + "account_number": "2122" + }, + "Concessions de service public": { + "account_type": "Fixed Asset", + "account_number": "2123" + }, + "Autres concessions et droits similaires": { + "account_type": "Fixed Asset", + "account_number": "2128" + }, + "account_number": "212" + }, + "Logiciels et sites internet": { + "account_type": "Fixed Asset", + "Logiciels": { + "account_type": "Fixed Asset", + "account_number": "2131" + }, + "Sites internet": { + "account_type": "Fixed Asset", + "account_number": "2132" + }, + "account_number": "213" + }, + "Marques": { + "account_type": "Fixed Asset", + "account_number": "214" + }, + "Fonds commercial": { + "account_type": "Fixed Asset", + "account_number": "215" + }, + "Droit au bail": { + "account_type": "Fixed Asset", + "account_number": "216" + }, + "Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset", + "account_number": "217" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset", + "account_number": "2181" + }, + "Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset", + "account_number": "2182" + }, + "Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset", + "account_number": "2183" + }, + "Co\u00fbts des franchises": { + "account_type": "Fixed Asset", + "account_number": "2184" + }, + "Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset", + "account_number": "2188" + }, + "account_number": "218" + }, + "Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "2191" + }, + "Logiciels et internet": { + "account_type": "Fixed Asset", + "account_number": "2193" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "account_number": "2198" + }, + "account_number": "219" + }, + "account_number": "21" + }, + "Terrains": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset", + "account_number": "2211" + }, + "Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset", + "account_number": "2212" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2218" + }, + "account_number": "221" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset", + "account_number": "2221" + }, + "Autres terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2228" + }, + "account_number": "222" + }, + "Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset", + "account_number": "2231" + }, + "Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset", + "account_number": "2232" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2234" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2235" + }, + "Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "account_number": "2238" + }, + "account_number": "223" + }, + "Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset", + "account_number": "2241" + }, + "Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset", + "account_number": "2245" + }, + "Autres travaux": { + "account_type": "Fixed Asset", + "account_number": "2248" + }, + "account_number": "224" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "Carri\u00e8res": { + "account_type": "Fixed Asset", + "account_number": "2251" + }, + "account_number": "225" + }, + "Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "Parkings": { + "account_type": "Fixed Asset", + "account_number": "2261" + }, + "account_number": "226" + }, + "Terrains mis en concession": { + "account_type": "Fixed Asset", + "account_number": "227" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "Terrains immeubles de placement": { + "account_type": "Fixed Asset", + "account_number": "2281" + }, + "Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset", + "account_number": "2285" + }, + "Terrains de location acquisition": { + "account_type": "Fixed Asset", + "account_number": "2286" + }, + "Divers terrains": { + "account_type": "Fixed Asset", + "account_number": "2288" + }, + "account_number": "228" + }, + "Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "account_number": "2291" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2292" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "account_number": "2295" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2298" + }, + "account_number": "229" + }, + "account_number": "22" + }, + "B\u00e2timents, installations techniques et agencements": { + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "B\u00e2timents industriels": { + "account_number": "2311" + }, + "B\u00e2timents agricoles": { + "account_number": "2312" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2313" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2314" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2315" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2316" + }, + "account_number": "231" + }, + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "B\u00e2timents industriels": { + "account_number": "2321" + }, + "B\u00e2timents agricoles": { + "account_number": "2322" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2323" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2324" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2325" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2326" + }, + "account_number": "232" + }, + "Ouvrages d\u2019infrastructure": { + "Voies de terre": { + "account_number": "2331" + }, + "Voies de fer": { + "account_number": "2332" + }, + "Voies d\u2019eau": { + "account_number": "2333" + }, + "Barrages, Digues": { + "account_number": "2334" + }, + "Pistes d\u2019a\u00e9rodrome": { + "account_number": "2335" + }, + "Autres ouvrages d\u2019infrastructures": { + "account_number": "2338" + }, + "account_number": "233" + }, + "Am\u00e9nagements, agencements et installations techniques": { + "Installations complexes sp\u00e9cialis\u00e9es sur sol propre": { + "account_number": "2341" + }, + "Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": { + "account_number": "2342" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": { + "account_number": "2343" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": { + "account_number": "2344" + }, + "Am\u00e9nagements et agencements des b\u00e2timents": { + "account_number": "2345" + }, + "account_number": "234" + }, + "Am\u00e9nagements de bureaux": { + "Installations g\u00e9n\u00e9rales": { + "account_number": "2351" + }, + "Autres am\u00e9nagements de bureaux": { + "account_number": "2358" + }, + "account_number": "235" + }, + "B\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "237" + }, + "Autres installations et agencements": { + "account_number": "238" + }, + "B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "B\u00e2timents en cours": { + "account_number": "2391" + }, + "Installations en cours": { + "account_number": "2392" + }, + "Ouvrages d\u2019infrastructure en cours": { + "account_number": "2393" + }, + "Am\u00e9nagements et agencements et installations techniques en cours": { + "account_number": "2394" + }, + "Am\u00e9nagements de bureaux en cours": { + "account_number": "2395" + }, + "Autres installations et agencements en cours": { + "account_number": "2398" + }, + "account_number": "239" + }, + "account_number": "23" + }, + "Mat\u00e9riel, mobilier et actifs biologiques": { + "Mat\u00e9riel et outillage industriel et commercial": { + "Mat\u00e9riel industriel": { + "account_number": "2411" + }, + "Outillage industriel": { + "account_number": "2412" + }, + "Mat\u00e9riel commercial": { + "account_number": "2413" + }, + "Outillage commercial": { + "account_number": "2414" + }, + "Mat\u00e9riel & outillage industriel et commercial de location-acquisition": { + "account_number": "2416" + }, + "account_number": "241" + }, + "Mat\u00e9riel et outillage agricole": { + "Mat\u00e9riel agricole": { + "account_number": "2421" + }, + "Outillage agricole": { + "account_number": "2422" + }, + "Mat\u00e9riel & outillage agricole de location-acquisition": { + "account_number": "2426" + }, + "account_number": "242" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "243" + }, + "Mat\u00e9riel et mobilier": { + "Mat\u00e9riel de bureau": { + "account_number": "2441" + }, + "Mat\u00e9riel informatique": { + "account_number": "2442" + }, + "Mat\u00e9riel bureautique": { + "account_number": "2443" + }, + "Mobilier de bureau": { + "account_number": "2444" + }, + "Mat\u00e9riel et mobilier immeubles de placement": { + "account_number": "2445" + }, + "Mat\u00e9riel et mobilier de location acquisition": { + "account_number": "2446" + }, + "Mat\u00e9riel et mobilier des logements du personnel": { + "account_number": "2447" + }, + "account_number": "244" + }, + "Mat\u00e9riel de transport": { + "Mat\u00e9riel automobile": { + "account_number": "2451" + }, + "Mat\u00e9riel ferroviaire": { + "account_number": "2452" + }, + "Mat\u00e9riel fluvial, lagunaire": { + "account_number": "2453" + }, + "Mat\u00e9riel naval": { + "account_number": "2454" + }, + "Mat\u00e9riel a\u00e9rien": { + "account_number": "2455" + }, + "Mat\u00e9riel de transport de location-acquisition": { + "account_number": "2456" + }, + "Mat\u00e9riel hippomobile": { + "account_number": "2457" + }, + "Autres mat\u00e9riels de transport": { + "account_number": "2458" + }, + "account_number": "245" + }, + "Actifs biologiques": { + "Cheptel, animaux de trait": { + "account_number": "2461" + }, + "Cheptel, animaux reproducteurs": { + "account_number": "2462" + }, + "Animaux de garde": { + "account_number": "2463" + }, + "Plantations agricoles": { + "account_number": "2465" + }, + "Autres actifs biologiques": { + "account_number": "2468" + }, + "account_number": "246" + }, + "Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "Agencements et am\u00e9nagements du mat\u00e9riel": { + "account_number": "2471" + }, + "Agencements et am\u00e9nagements des actifs biologiques": { + "account_number": "2472" + }, + "Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2478" + }, + "account_number": "247" + }, + "Autres mat\u00e9riels et mobiliers": { + "Collections et \u0153uvres d\u2019art": { + "account_number": "2481" + }, + "Divers mat\u00e9riels mobiliers": { + "account_number": "2488" + }, + "account_number": "248" + }, + "Mat\u00e9riels et actifs biologiques en cours": { + "Mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2491" + }, + "Mat\u00e9riel et outillage agricole": { + "account_number": "2492" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2493" + }, + "Mat\u00e9riel et mobilier de bureau": { + "account_number": "2494" + }, + "Mat\u00e9riel de transport": { + "account_number": "2495" + }, + "Actifs biologiques": { + "account_number": "2496" + }, + "Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2497" + }, + "Autres mat\u00e9riels et actifs biologiques en cours": { + "account_number": "2498" + }, + "account_number": "249" + }, + "account_number": "24" + }, + "Avances et acomptes vers\u00e9s sur immobilisations": { + "Avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "251" + }, + "Avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "252" + }, + "account_number": "25" + }, + "Titres de participation": { + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "261" + }, + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "262" + }, + "Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "263" + }, + "Participations dans des organismes professionnels": { + "account_number": "265" + }, + "Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "266" + }, + "Autres titres de participation": { + "account_number": "268" + }, + "account_number": "26" + }, + "Autres immobilisations financi\u00e8res": { + "Pr\u00eats et cr\u00e9ances": { + "Pr\u00eats participatifs": { + "account_number": "2711" + }, + "Pr\u00eats aux associ\u00e9s": { + "account_number": "2712" + }, + "Billets de fonds": { + "account_number": "2713" + }, + "Titres pr\u00eat\u00e9s": { + "account_number": "2714" + }, + "Autres pr\u00eats et cr\u00e9ances": { + "account_number": "2718" + }, + "account_number": "271" + }, + "Pr\u00eats au personnel": { + "Pr\u00eats immobiliers": { + "account_number": "2721" + }, + "Pr\u00eats mobiliers et d\u2019installation": { + "account_number": "2722" + }, + "Autres pr\u00eats au personnel": { + "account_number": "2728" + }, + "account_number": "272" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "Retenues de garantie": { + "account_number": "2731" + }, + "Fonds r\u00e9glement\u00e9": { + "account_number": "2733" + }, + "Cr\u00e9ances sur le conc\u00e9dant": { + "account_number": "2734" + }, + "Autres cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2738" + }, + "account_number": "273" + }, + "Titres immobilis\u00e9s": { + "Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": { + "account_number": "2741" + }, + "Titres participatifs": { + "account_number": "2742" + }, + "Certificats d\u2019investissement": { + "account_number": "2743" + }, + "Parts de fonds commun de placement (FCP)": { + "account_number": "2744" + }, + "Obligations": { + "account_number": "2745" + }, + "Actions ou parts propres": { + "account_number": "2746" + }, + "Autres titres immobilis\u00e9s": { + "account_number": "2748" + }, + "account_number": "274" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "D\u00e9p\u00f4ts pour loyers d\u2019avance": { + "account_number": "2751" + }, + "D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": { + "account_number": "2752" + }, + "D\u00e9p\u00f4ts pour l\u2019eau": { + "account_number": "2753" + }, + "D\u00e9p\u00f4ts pour le gaz": { + "account_number": "2754" + }, + "D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": { + "account_number": "2755" + }, + "Cautionnements sur march\u00e9s publics": { + "account_number": "2756" + }, + "Cautionnements sur autres op\u00e9rations": { + "account_number": "2757" + }, + "Autres d\u00e9p\u00f4ts et cautionnements": { + "account_number": "2758" + }, + "account_number": "275" + }, + "Int\u00e9r\u00eats courus": { + "Pr\u00eats et cr\u00e9ances non commerciales": { + "account_number": "2761" + }, + "Pr\u00eats au personnel": { + "account_number": "2762" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2763" + }, + "Titres immobilis\u00e9s": { + "account_number": "2764" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2765" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "account_number": "2767" + }, + "Immobilisations financi\u00e8res diverses": { + "account_number": "2768" + }, + "account_number": "276" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": { + "account_number": "2771" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "2772" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "2773" + }, + "Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "2774" + }, + "account_number": "277" + }, + "Immobilisations financi\u00e8res diverses": { + "Cr\u00e9ances diverses groupe": { + "account_number": "2781" + }, + "Cr\u00e9ances diverses hors groupe": { + "account_number": "2782" + }, + "Banques d\u00e9p\u00f4ts \u00e0 terme": { + "account_number": "2784" + }, + "Or et m\u00e9taux pr\u00e9cieux": { + "account_number": "2785" + }, + "Autres immobilisations financi\u00e8res": { + "account_number": "2788" + }, + "account_number": "278" + }, + "account_number": "27" + }, + "Amortissements": { + "account_type": "Accumulated Depreciation", + "Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation", + "account_number": "2811" + }, + "Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation", + "account_number": "2812" + }, + "Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation", + "account_number": "2813" + }, + "Amortissements des marques": { + "account_type": "Accumulated Depreciation", + "account_number": "2814" + }, + "Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation", + "account_number": "2815" + }, + "Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation", + "account_number": "2816" + }, + "Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation", + "account_number": "2817" + }, + "Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation", + "account_number": "2818" + }, + "account_number": "281" + }, + "Amortissements des terrains": { + "Amortissements des travaux de mise en valeur des terrains": { + "account_number": "2824" + }, + "account_number": "282" + }, + "Amortissements des b\u00e2timents, installations techniques et agencements": { + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2831" + }, + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2832" + }, + "Amortissements des ouvrages d\u2019infrastructure": { + "account_number": "2833" + }, + "Amortissements des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2834" + }, + "Amortissements des am\u00e9nagements de bureaux": { + "account_number": "2835" + }, + "Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2837" + }, + "Amortissements des autres installations et agencements": { + "account_number": "2838" + }, + "account_number": "283" + }, + "Amortissements du mat\u00e9riel": { + "Amortissements du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2841" + }, + "Amortissements du mat\u00e9riel et outillage agricole": { + "account_number": "2842" + }, + "Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2843" + }, + "Amortissements du mat\u00e9riel et mobilier": { + "account_number": "2844" + }, + "Amortissements du mat\u00e9riel de transport": { + "account_number": "2845" + }, + "Amortissements des actifs biologiques": { + "account_number": "2846" + }, + "Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2847" + }, + "Amortissements des autres mat\u00e9riels": { + "account_number": "2848" + }, + "account_number": "284" + }, + "account_number": "28" + }, + "D\u00e9pr\u00e9ciations des immobilisations": { + "D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": { + "account_number": "2911" + }, + "D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": { + "account_number": "2912" + }, + "D\u00e9pr\u00e9ciations des logiciels et sites internet": { + "account_number": "2913" + }, + "D\u00e9pr\u00e9ciations des marques": { + "account_number": "2914" + }, + "D\u00e9pr\u00e9ciations du fonds commercial": { + "account_number": "2915" + }, + "D\u00e9pr\u00e9ciations du droit au bail": { + "account_number": "2916" + }, + "D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": { + "account_number": "2917" + }, + "D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": { + "account_number": "2918" + }, + "D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": { + "account_number": "2919" + }, + "account_number": "291" + }, + "D\u00e9pr\u00e9ciations des terrains": { + "D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": { + "account_number": "2921" + }, + "D\u00e9pr\u00e9ciations des terrains nus": { + "account_number": "2922" + }, + "D\u00e9pr\u00e9ciations des terrains b\u00e2tis": { + "account_number": "2923" + }, + "D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": { + "account_number": "2924" + }, + "D\u00e9pr\u00e9ciations des terrains de gisement": { + "account_number": "2925" + }, + "D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": { + "account_number": "2926" + }, + "D\u00e9pr\u00e9ciations des terrains mis en concession": { + "account_number": "2927" + }, + "D\u00e9pr\u00e9ciations des autres terrains": { + "account_number": "2928" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": { + "account_number": "2929" + }, + "account_number": "292" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2931" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2932" + }, + "D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": { + "account_number": "2933" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2934" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": { + "account_number": "2935" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2937" + }, + "D\u00e9pr\u00e9ciations des autres installations et agencements": { + "account_number": "2938" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": { + "account_number": "2939" + }, + "account_number": "293" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2941" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": { + "account_number": "2942" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2943" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": { + "account_number": "2944" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": { + "account_number": "2945" + }, + "D\u00e9pr\u00e9ciations des actifs biologiques": { + "account_number": "2946" + }, + "D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2947" + }, + "D\u00e9pr\u00e9ciations des autres mat\u00e9riels": { + "account_number": "2948" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": { + "account_number": "2949" + }, + "account_number": "294" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "2951" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "2952" + }, + "account_number": "295" + }, + "D\u00e9pr\u00e9ciations des titres de participation": { + "D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "2961" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "2962" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "2963" + }, + "D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": { + "account_number": "2965" + }, + "D\u00e9pr\u00e9ciations des parts dans des GIE": { + "account_number": "2966" + }, + "D\u00e9pr\u00e9ciations des autres titres de participation": { + "account_number": "2968" + }, + "account_number": "296" + }, + "D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": { + "account_number": "2971" + }, + "D\u00e9pr\u00e9ciations des pr\u00eats au personnel": { + "account_number": "2972" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2973" + }, + "D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": { + "account_number": "2974" + }, + "D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2975" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "account_number": "2977" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": { + "account_number": "2978" + }, + "account_number": "297" + }, + "account_number": "29" + }, + "root_type": "Asset", + "account_number": "2" + }, + "Comptes de Stocks": { + "Marchandises": { + "Marchandises A": { + "Marchandises A1": { + "account_number": "3111" + }, + "Marchandises A2": { + "account_number": "3112" + }, + "account_number": "311" + }, + "Marchandises B": { + "Marchandises B1": { + "account_number": "3121" + }, + "Marchandises B2": { + "account_number": "3122" + }, + "account_number": "312" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3131" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3132" + }, + "account_number": "313" + }, + "Marchandises hors activit\u00e9s ordinaires (HAO)": { + "account_number": "318" + }, + "account_number": "31" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Mati\u00e8res A": { + "account_number": "321" + }, + "Mati\u00e8res B": { + "account_number": "322" + }, + "Fournitures (A, B)": { + "account_number": "323" + }, + "account_number": "32" + }, + "Autres approvisionnements": { + "Mati\u00e8res consommables": { + "account_number": "331" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "332" + }, + "Fournitures de magasin": { + "account_number": "333" + }, + "Fournitures de bureau": { + "account_number": "334" + }, + "Emballages": { + "Emballages perdus": { + "account_number": "3351" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "3352" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "3353" + }, + "Autres emballages": { + "account_number": "3358" + }, + "account_number": "335" + }, + "Autres mati\u00e8res": { + "account_number": "338" + }, + "account_number": "33" + }, + "Produits en cours": { + "Produits en cours": { + "Produits en cours P1": { + "account_number": "3411" + }, + "Produits en cours P2": { + "account_number": "3412" + }, + "account_number": "341" + }, + "Travaux en cours": { + "Travaux en cours T1": { + "account_number": "3421" + }, + "Travaux en cours T2": { + "account_number": "3422" + }, + "account_number": "342" + }, + "Produits interm\u00e9diaires en cours": { + "Produits interm\u00e9diaires A": { + "account_number": "3431" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3432" + }, + "account_number": "343" + }, + "Produits r\u00e9siduels en cours": { + "Produits r\u00e9siduels A": { + "account_number": "3441" + }, + "Produits r\u00e9siduels B": { + "account_number": "3442" + }, + "account_number": "344" + }, + "Actifs biologiques en cours": { + "Animaux": { + "account_number": "3451" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3452" + }, + "account_number": "345" + }, + "account_number": "34" + }, + "Services en cours": { + "\u00c9tudes en cours": { + "\u00c9tudes en cours E1": { + "account_number": "3511" + }, + "\u00c9tudes en cours E2": { + "account_number": "3512" + }, + "account_number": "351" + }, + "Prestations de services en cours": { + "Prestations de services S1": { + "account_number": "3521" + }, + "Prestations de services S2": { + "account_number": "3522" + } + }, + "account_number": "35" + }, + "Produits finis": { + "Produits finis A": { + "account_number": "361" + }, + "Produits finis B": { + "account_number": "362" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3631" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3632" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3638" + }, + "account_number": "363" + }, + "account_number": "36" + }, + "Produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "Produits interm\u00e9diaires A": { + "account_number": "3711" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3712" + }, + "account_number": "371" + }, + "Produits r\u00e9siduels": { + "D\u00e9chets": { + "account_number": "3721" + }, + "Rebuts": { + "account_number": "3722" + }, + "Mati\u00e8res de R\u00e9cup\u00e9ration": { + "account_number": "3723" + }, + "account_number": "372" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3731" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3732" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3738" + }, + "account_number": "373" + }, + "account_number": "37" + }, + "Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "Marchandises en cours de route": { + "account_number": "381" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": { + "account_number": "382" + }, + "Autres approvisionnements en cours de route": { + "account_number": "383" + }, + "Produits finis en cours de route": { + "account_number": "386" + }, + "Stock en consignation ou en d\u00e9p\u00f4t": { + "Stock en consignation": { + "account_number": "3871" + }, + "Stock en d\u00e9p\u00f4t": { + "account_number": "3872" + }, + "account_number": "387" + }, + "Stock provenant d\u2019immobilisations mises hors service ou au rebut": { + "account_number": "388" + }, + "account_number": "38" + }, + "D\u00e9pr\u00e9ciations des stocks et encours de production": { + "D\u00e9pr\u00e9ciations des stocks de marchandises": { + "account_number": "391" + }, + "D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "392" + }, + "D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": { + "account_number": "393" + }, + "D\u00e9pr\u00e9ciations des productions en cours": { + "account_number": "394" + }, + "D\u00e9pr\u00e9ciations des services en cours": { + "account_number": "395" + }, + "D\u00e9pr\u00e9ciations des stocks de produits finis": { + "account_number": "396" + }, + "D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "account_number": "397" + }, + "D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_number": "398" + }, + "account_number": "39" + }, + "root_type": "Asset", + "account_number": "3" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "Fournisseurs d\u00e9biteurs": { + "Fournisseurs Avances et acomptes vers\u00e9s": { + "account_number": "4091" + }, + "Fournisseurs Groupe avances et acomptes vers\u00e9s": { + "account_number": "4092" + }, + "Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": { + "account_number": "4093" + }, + "Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": { + "account_number": "4094" + }, + "Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": { + "account_number": "4098" + }, + "account_number": "409" + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "Clients": { + "Clients": { + "account_type": "Receivable", + "account_number": "4111" + }, + "Clients groupe": { + "account_type": "Receivable", + "account_number": "4112" + }, + "Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable", + "account_number": "4114" + }, + "Clients, organismes internationaux": { + "account_type": "Receivable", + "account_number": "4115" + }, + "Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable", + "account_number": "4116" + }, + "Client, retenues de garantie": { + "account_type": "Receivable", + "account_number": "4117" + }, + "Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable", + "account_number": "4118" + }, + "account_type": "Receivable", + "account_number": "411" + }, + "Clients, effets \u00e0 recevoir en portefeuille": { + "Clients, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4121" + }, + "Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4122" + }, + "\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4124" + }, + "Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4125" + }, + "account_type": "Receivable", + "account_number": "412" + }, + "Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4131" + }, + "Clients, effets impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4132" + }, + "Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4133" + }, + "Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4138" + }, + "account_type": "Receivable", + "account_number": "413" + }, + "Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4141" + }, + "Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4142" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4146" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4147" + }, + "account_type": "Receivable", + "account_number": "414" + }, + "Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable", + "account_number": "415" + }, + "Cr\u00e9ances clients litigieuses ou douteuses": { + "Cr\u00e9ances litigieuses": { + "account_type": "Receivable", + "account_number": "4161" + }, + "Cr\u00e9ances douteuses": { + "account_type": "Receivable", + "account_number": "4162" + }, + "account_type": "Receivable", + "account_number": "416" + }, + "Clients, produits \u00e0 recevoir": { + "Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable", + "account_number": "4181" + }, + "Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable", + "account_number": "4186" + }, + "account_type": "Receivable", + "account_number": "418" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "Personnel, avances et acomptes": { + "Personnel, avances": { + "account_number": "4211" + }, + "Personnel, acomptes": { + "account_number": "4212" + }, + "Frais avanc\u00e9s et fournitures au personnel": { + "account_number": "4213" + }, + "account_number": "421" + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "Prestations familiales": { + "account_number": "4311" + }, + "Accidents de travail": { + "account_number": "4312" + }, + "Caisse de retraite obligatoire": { + "account_number": "4313" + }, + "Caisse de retraite facultative": { + "account_number": "4314" + }, + "Autres cotisations sociales": { + "account_number": "4318" + } + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "Mutuelle": { + "account_number": "4331" + }, + "Assurances retraite": { + "account_number": "4332" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "4333" + } + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Produits \u00e0 recevoir": { + "account_number": "4387" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "\u00c9tat, TVA factur\u00e9e": { + "TVA factur\u00e9e sur ventes": { + "account_number": "4431" + }, + "TVA factur\u00e9e sur prestations de services": { + "account_number": "4432" + }, + "TVA factur\u00e9e sur travaux": { + "account_number": "4433" + }, + "TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": { + "account_number": "4434" + }, + "TVA sur factures \u00e0 \u00e9tablir": { + "account_number": "4435" + }, + "account_number": "443" + }, + "\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "TVA r\u00e9cup\u00e9rable sur immobilisations": { + "account_number": "4451" + }, + "TVA r\u00e9cup\u00e9rable sur achats": { + "account_number": "4452" + }, + "TVA r\u00e9cup\u00e9rable sur transport": { + "account_number": "4453" + }, + "TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": { + "account_number": "4454" + }, + "TVA r\u00e9cup\u00e9rable sur factures non parvenues": { + "account_number": "4455" + }, + "TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": { + "account_number": "4456" + }, + "account_number": "445" + }, + "\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges \u00e0 payer": { + "account_number": "4486" + }, + "Produits \u00e0 recevoir": { + "account_number": "4487" + }, + "account_number": "448" + }, + "\u00c9tat, cr\u00e9ances et dettes diverses": { + "\u00c9tat, obligations cautionn\u00e9es": { + "account_number": "4491" + }, + "\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": { + "account_number": "4492" + }, + "\u00c9tat, fonds de dotation \u00e0 recevoir": { + "account_number": "4493" + }, + "\u00c9tat, subventions investissement \u00e0 recevoir": { + "account_number": "4494" + }, + "\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": { + "account_number": "4495" + }, + "\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": { + "account_number": "4496" + }, + "\u00c9tat, avances sur subventions": { + "account_number": "4497" + }, + "\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": { + "account_number": "4499" + }, + "account_number": "449" + } + }, + "45-Organismes internationaux (ACTIF)": { + "Op\u00e9rations avec les organismes africains": { + "account_number": "451" + }, + "Op\u00e9rations avec les autres organismes internationaux": { + "account_number": "452" + }, + "Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "Organismes internationaux, fonds de dotation \u00e0 recevoir": { + "account_number": "4581" + }, + "Organismes internationaux, subventions \u00e0 recevoir": { + "account_number": "4582" + }, + "account_number": "458" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "Apporteurs, capital appel\u00e9, non vers\u00e9": { + "account_number": "4613" + }, + "Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": { + "account_number": "4614" + }, + "Apporteurs, titres \u00e0 \u00e9changer": { + "account_number": "4618" + } + }, + "Apporteurs, restant d\u00fb sur capital appel\u00e9": { + "account_number": "467" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4721" + }, + "Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": { + "account_number": "4726" + } + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "Mandants": { + "account_number": "4731" + }, + "Mandataires": { + "account_number": "4732" + }, + "Commettants": { + "account_number": "4733" + }, + "Commissionnaires": { + "account_number": "4734" + }, + "\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": { + "account_number": "4739" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "Compte de r\u00e9partition p\u00e9riodique des produits": { + "account_number": "4747" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "Compte actif": { + "account_type": "Temporary", + "account_number": "4751" + } + }, + "Charges constat\u00e9es d\u2019avance": { + "account_number": "476" + }, + "478-\u00c9carts de conversion actif": { + "Diminution des cr\u00e9ances d\u2019exploitation": { + "account_number": "4781" + }, + "Diminution des cr\u00e9ances financi\u00e8res": { + "account_number": "4782" + }, + "Augmentation des dettes d\u2019exploitation": { + "account_number": "4783" + }, + "Augmentation des dettes financi\u00e8res": { + "account_number": "4784" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4786" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4788" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "En compte, immobilisations incorporelles": { + "account_number": "4851" + }, + "En compte, immobilisations corporelles": { + "account_number": "4852" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_number": "4853" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_number": "4854" + }, + "Effets escompt\u00e9s non \u00e9chus": { + "account_number": "4855" + }, + "Retenues de garantie": { + "account_number": "4857" + }, + "Factures \u00e0 \u00e9tablir": { + "account_number": "4858" + }, + "account_number": "485" + }, + "Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": { + "account_number": "488" + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "D\u00e9pr\u00e9ciations des comptes clients": { + "Cr\u00e9ances litigieuses": { + "account_number": "4911" + }, + "Cr\u00e9ances douteuses": { + "account_number": "4912" + }, + "account_number": "491" + }, + "D\u00e9pr\u00e9ciations des comptes organismes internationaux": { + "account_number": "495" + }, + "D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "Associ\u00e9s, comptes courants": { + "account_number": "4962" + }, + "Associ\u00e9s, op\u00e9rations faites en commun": { + "account_number": "4963" + }, + "Groupe, comptes courants": { + "account_number": "4966" + }, + "account_number": "496" + }, + "D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": { + "account_number": "497" + }, + "D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "account_number": "4985" + }, + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4986" + }, + "Autres cr\u00e9ances HAO": { + "account_number": "4988" + }, + "account_number": "498" + }, + "Provisions pour risques \u00e0 court terme": { + "Sur op\u00e9rations d\u2019exploitation": { + "account_number": "4991" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "4997" + }, + "Sur op\u00e9rations HAO": { + "account_number": "4998" + }, + "account_number": "499" + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "Fournisseurs, dettes en compte": { + "Fournisseurs": { + "account_type": "Payable", + "account_number": "4011" + }, + "Fournisseurs groupe": { + "account_type": "Payable", + "account_number": "4012" + }, + "Fournisseurs sous-traitants": { + "account_type": "Payable", + "account_number": "4013" + }, + "Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable", + "account_number": "4016" + }, + "Fournisseur, retenues de garantie": { + "account_type": "Payable", + "account_number": "4017" + }, + "account_type": "Payable", + "account_number": "401" + }, + "Fournisseurs, effets \u00e0 payer": { + "Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4021" + }, + "Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4022" + }, + "Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4023" + }, + "account_type": "Payable", + "account_number": "402" + }, + "Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4041" + }, + "Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4042" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4046" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4047" + }, + "account_type": "Payable", + "account_number": "404" + }, + "Fournisseurs, factures non parvenues": { + "Fournisseurs": { + "account_type": "Stock Received But Not Billed", + "account_number": "4081" + }, + "Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed", + "account_number": "4082" + }, + "Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed", + "account_number": "4083" + }, + "Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed", + "account_number": "4086" + }, + "account_type": "Stock Received But Not Billed", + "account_number": "408" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "Clients cr\u00e9diteurs": { + "Clients, avances et acomptes re\u00e7us": { + "account_number": "4191" + }, + "Clients groupe, avances et acomptes re\u00e7us": { + "account_number": "4192" + }, + "Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": { + "account_number": "4194" + }, + "Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": { + "account_number": "4198" + }, + "account_number": "419" + } + }, + "42-Personnel (PASSIF)": { + "Personnel, r\u00e9mun\u00e9rations dues": { + "account_number": "422" + }, + "Personnel, oppositions, saisies-arr\u00eats": { + "Personnel, oppositions": { + "account_number": "4231" + }, + "Personnel, saisies-arr\u00eats": { + "account_number": "4232" + }, + "Personnel, avis \u00e0 tiers d\u00e9tenteur": { + "account_number": "4233" + }, + "account_number": "423" + }, + "Personnel, \u0153uvres sociales internes": { + "Assistance m\u00e9dicale": { + "account_number": "4241" + }, + "Allocations familiales": { + "account_number": "4242" + }, + "Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": { + "account_number": "4245" + }, + "Autres \u0153uvres sociales internes": { + "account_number": "4248" + }, + "account_number": "424" + }, + "Repr\u00e9sentants du personnel": { + "D\u00e9l\u00e9gu\u00e9s du personnel": { + "account_number": "4251" + }, + "Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": { + "account_number": "4252" + }, + "Autres repr\u00e9sentants du personnel": { + "account_number": "4258" + }, + "account_number": "425" + }, + "Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "Participation aux b\u00e9n\u00e9fices": { + "account_number": "4261" + }, + "Participation au capital": { + "account_number": "4264" + }, + "account_number": "426" + }, + "Personnel d\u00e9p\u00f4ts": { + "account_number": "427" + }, + "Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": { + "account_number": "4281" + }, + "Autres charges \u00e0 payer": { + "account_number": "4286" + }, + "Produits \u00e0 recevoir": { + "account_number": "4287" + }, + "account_number": "428" + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges sociales sur gratifications \u00e0 payer": { + "account_number": "4381" + }, + "Charges sociales sur cong\u00e9s \u00e0 payer": { + "account_number": "4382" + }, + "Autres charges \u00e0 payer": { + "account_number": "4386" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": { + "account_number": "441" + }, + "\u00c9tat, autres imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes d\u2019\u00c9tat": { + "account_number": "4421" + }, + "Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": { + "account_number": "4422" + }, + "Imp\u00f4ts et taxes recouvrables sur des obligataires": { + "account_number": "4423" + }, + "Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": { + "account_number": "4424" + }, + "Droits de douane": { + "account_number": "4426" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "4428" + }, + "account_number": "442" + }, + "\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "\u00c9tat, TVA due": { + "account_number": "4441" + }, + "\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": { + "account_number": "4449" + }, + "account_number": "444" + }, + "\u00c9tat, autres taxes sur le chiffre d\u2019affaires": { + "account_number": "446" + }, + "\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": { + "account_number": "4471" + }, + "Imp\u00f4ts sur salaires": { + "account_number": "4472" + }, + "Contribution nationale": { + "account_number": "4473" + }, + "Contribution nationale de solidarit\u00e9": { + "account_number": "4474" + }, + "Autres imp\u00f4ts et contributions": { + "account_number": "4478" + }, + "account_number": "447" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "Apporteurs, apports en nature": { + "account_number": "4611" + }, + "Apporteurs, apports en num\u00e9raire": { + "account_number": "4612" + }, + "Apporteurs, versements re\u00e7us sur augmentation de capital": { + "account_number": "4615" + }, + "Apporteurs, versements anticip\u00e9s": { + "account_number": "4616" + }, + "Apporteurs d\u00e9faillants": { + "account_number": "4617" + }, + "Apporteurs, capital \u00e0 rembourser": { + "account_number": "4619" + } + }, + "462-Associ\u00e9s, comptes courants": { + "Principal": { + "account_number": "4621" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4626" + } + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "Op\u00e9rations courantes": { + "account_number": "4631" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4636" + } + }, + "Associ\u00e9s, dividendes \u00e0 payer": { + "account_number": "465" + }, + "Groupe, comptes courants": { + "account_number": "466" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "D\u00e9biteurs divers": { + "account_number": "4711" + }, + "Cr\u00e9diteurs divers": { + "account_number": "4712" + }, + "Obligataires": { + "account_number": "4713" + }, + "R\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "4715" + }, + "Compte d\u2019affacturage": { + "account_number": "4716" + }, + "D\u00e9biteurs divers retenues de garantie": { + "account_number": "4717" + }, + "Apport, compte de fusion et op\u00e9rations assimil\u00e9es": { + "account_number": "4718" + }, + "Bons de souscription d\u2019actions et d\u2019obligations": { + "account_number": "4719" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "Compte de r\u00e9partition p\u00e9riodique des charges": { + "account_number": "4746" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "Compte passif": { + "account_number": "4752" + } + }, + "Produits constat\u00e9s d\u2019avance": { + "account_number": "477" + }, + "479-\u00c9carts de conversion passif": { + "Augmentation des cr\u00e9ances d\u2019exploitation": { + "account_number": "4791" + }, + "Augmentation des cr\u00e9ances financi\u00e8res": { + "account_number": "4792" + }, + "Diminution des dettes d\u2019exploitation": { + "account_number": "4793" + }, + "Diminution des dettes financi\u00e8res": { + "account_number": "4794" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4797" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4798" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "Fournisseurs d\u2019investissements": { + "Immobilisations incorporelles": { + "account_number": "4811" + }, + "Immobilisations corporelles": { + "account_number": "4812" + }, + "Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": { + "account_number": "4813" + }, + "R\u00e9serve de propri\u00e9t\u00e9": { + "account_number": "4816" + }, + "Retenues de garantie": { + "account_number": "4817" + }, + "Factures non parvenues": { + "account_number": "4818" + }, + "account_number": "481" + }, + "Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "Immobilisations incorporelles": { + "account_number": "4821" + }, + "Immobilisations corporelles": { + "account_number": "4822" + }, + "account_number": "482" + }, + "Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "Produits": { + "account_number": "4887" + }, + "account_number": "484" + } + }, + "root_type": "Liability" + }, + "Comptes de tr\u00e9sorerie": { + "Titres de placement": { + "Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "Titres du Tr\u00e9sor \u00e0 court terme": { + "account_number": "5011" + }, + "Titres d\u2019organismes financiers": { + "account_number": "5012" + }, + "Bons de caisse \u00e0 court terme": { + "account_number": "5013" + }, + "Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": { + "account_number": "5016" + }, + "account_number": "501" + }, + "Actions": { + "Actions ou parts propres": { + "account_number": "5021" + }, + "Actions cot\u00e9es": { + "account_number": "5022" + }, + "Actions non cot\u00e9es": { + "account_number": "5023" + }, + "Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": { + "account_number": "5024" + }, + "Autres actions": { + "account_number": "5025" + }, + "Frais d\u2019acquisition des actions": { + "account_number": "5026" + }, + "account_number": "502" + }, + "Obligations": { + "Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": { + "account_number": "5031" + }, + "Obligations cot\u00e9es": { + "account_number": "5032" + }, + "Obligations non cot\u00e9es": { + "account_number": "5033" + }, + "Autres obligations": { + "account_number": "5035" + }, + "Frais d\u2019acquisition des obligations": { + "account_number": "5036" + }, + "account_number": "503" + }, + "Bons de souscription": { + "Bons de souscription d\u2019actions": { + "account_number": "5042" + }, + "Bons de souscription d\u2019obligations": { + "account_number": "5043" + }, + "account_number": "504" + }, + "Titres n\u00e9gociables hors r\u00e9gion": { + "account_number": "505" + }, + "Int\u00e9r\u00eats courus": { + "Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": { + "account_number": "5061" + }, + "Actions": { + "account_number": "5062" + }, + "Obligations": { + "account_number": "5063" + }, + "account_number": "506" + }, + "Autres titres de placement et cr\u00e9ances assimil\u00e9es": { + "account_number": "508" + }, + "account_number": "50" + }, + "Valeurs \u00e0 encaisser": { + "Effets \u00e0 encaisser": { + "account_number": "511" + }, + "Effets \u00e0 l\u2019encaissement": { + "account_number": "512" + }, + "Ch\u00e8ques \u00e0 encaisser": { + "account_number": "513" + }, + "Ch\u00e8ques \u00e0 l\u2019encaissement": { + "account_number": "514" + }, + "Cartes de cr\u00e9dit \u00e0 encaisser": { + "account_number": "515" + }, + "Autres valeurs \u00e0 l\u2019encaissement": { + "Warrants": { + "account_number": "5181" + }, + "Billets de fonds": { + "account_number": "5182" + }, + "Ch\u00e8ques de voyage": { + "account_number": "5185" + }, + "Coupons \u00e9chus": { + "account_number": "5186" + }, + "Int\u00e9r\u00eats \u00e9chus des obligations": { + "account_number": "5187" + }, + "account_number": "518" + }, + "account_number": "51" + }, + "Banques": { + "Banques locales": { + "Banques en monnaie nationale": { + "account_type": "Bank", + "account_number": "5211" + }, + "Banques en devises": { + "account_type": "Bank", + "account_number": "5215" + }, + "account_type": "Bank", + "account_number": "521" + }, + "Banques autres \u00c9tats r\u00e9gion": { + "account_number": "522" + }, + "Banques autres \u00c9tats zone mon\u00e9taire": { + "account_number": "523" + }, + "Banques hors zone mon\u00e9taire": { + "account_number": "524" + }, + "Banques d\u00e9p\u00f4t \u00e0 terme": { + "account_number": "525" + }, + "Banques, int\u00e9r\u00eats courus": { + "Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": { + "account_number": "5261" + }, + "Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": { + "account_number": "5267" + }, + "account_number": "526" + }, + "account_number": "52" + }, + "\u00c9tablissements financiers et assimil\u00e9s": { + "Ch\u00e8ques postaux": { + "account_number": "531" + }, + "Tr\u00e9sor": { + "account_number": "532" + }, + "Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": { + "account_number": "533" + }, + "\u00c9tablissements financiers, int\u00e9r\u00eats courus": { + "account_number": "536" + }, + "Autres organismes financiers": { + "account_number": "538" + }, + "account_number": "53" + }, + "Instruments de tr\u00e9sorerie": { + "Options de taux d\u2019int\u00e9r\u00eat": { + "account_number": "541" + }, + "Options de taux de change": { + "account_number": "542" + }, + "Options de taux boursiers": { + "account_number": "543" + }, + "Instruments de march\u00e9s \u00e0 terme": { + "account_number": "544" + }, + "Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": { + "account_number": "545" + }, + "account_number": "54" + }, + "Instruments de monnaie \u00e9lectronique": { + "Monnaie \u00e9lectronique carte carburant": { + "account_number": "551" + }, + "Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": { + "account_number": "552" + }, + "Monnaie \u00e9lectronique carte p\u00e9age": { + "account_number": "553" + }, + "Porte-monnaie \u00e9lectronique": { + "account_number": "554" + }, + "Autres instruments de monnaies \u00e9lectroniques": { + "account_number": "558" + }, + "account_number": "55" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "Cr\u00e9dits de tr\u00e9sorerie": { + "account_number": "561" + }, + "Escompte de cr\u00e9dits de campagne": { + "account_number": "564" + }, + "Escompte de cr\u00e9dits ordinaires": { + "account_number": "565" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": { + "account_number": "566" + }, + "account_number": "56" + }, + "Caisse": { + "Caisse si\u00e8ge social": { + "Caisse en monnaie nationale": { + "account_number": "5711" + }, + "Caisse en devises": { + "account_number": "5712" + }, + "account_number": "571" + }, + "Caisse succursale A": { + "En monnaie nationale": { + "account_number": "5721" + }, + "En devises": { + "account_number": "5722" + }, + "account_number": "572" + }, + "Caisse succursale B": { + "En monnaie nationale": { + "account_number": "5731" + }, + "En devises": { + "account_number": "5732" + }, + "account_number": "573" + }, + "account_number": "57" + }, + "R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "R\u00e9gies d\u2019avance": { + "account_number": "581" + }, + "Accr\u00e9ditifs": { + "account_number": "582" + }, + "Virements de fonds": { + "account_number": "585" + }, + "Autres virements internes": { + "account_number": "588" + }, + "account_number": "58" + }, + "D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "D\u00e9pr\u00e9ciations des titres de placement": { + "account_number": "590" + }, + "D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": { + "account_number": "591" + }, + "D\u00e9pr\u00e9ciations des comptes banques": { + "account_number": "592" + }, + "D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": { + "account_number": "593" + }, + "D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": { + "account_number": "594" + }, + "Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": { + "account_number": "599" + }, + "account_number": "59" + }, + "root_type": "Asset", + "account_number": "5" + }, + "Comptes de charges des activit\u00e9s ordinaires": { + "Achats et variations de stocks": { + "Achats de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "6011" + }, + "Hors R\u00e9gion": { + "account_number": "6012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6014" + }, + "Frais sur achats": { + "account_number": "6015" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6019" + }, + "account_number": "601" + }, + "Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Dans la R\u00e9gion": { + "account_number": "6021" + }, + "Hors R\u00e9gion": { + "account_number": "6022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6024" + }, + "Frais sur achats": { + "account_number": "6025" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6029" + }, + "account_number": "602" + }, + "Variations des stocks de biens achet\u00e9s": { + "Variations des stocks de marchandises": { + "account_number": "6031" + }, + "Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "6032" + }, + "Variations des stocks d\u2019autres approvisionnements": { + "account_number": "6033" + }, + "account_number": "603" + }, + "Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "Mati\u00e8res consommables": { + "account_number": "6041" + }, + "Mati\u00e8res combustibles": { + "account_number": "6042" + }, + "Produits d\u2019entretien": { + "account_number": "6043" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "6044" + }, + "Frais sur achat": { + "account_number": "6045" + }, + "Fournitures de magasin": { + "account_number": "6046" + }, + "Fournitures de bureau": { + "account_number": "6047" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6049" + }, + "account_number": "604" + }, + "Autres achats": { + "Fournitures non stockables Eau": { + "account_number": "6051" + }, + "Fournitures non stockables \u00c9lectricit\u00e9": { + "account_number": "6052" + }, + "Fournitures non stockables Autres \u00e9nergies": { + "account_number": "6053" + }, + "Fournitures d\u2019entretien non stockables": { + "account_number": "6054" + }, + "Fournitures de bureau non stockables": { + "account_number": "6055" + }, + "Achats de petit mat\u00e9riel et outillage": { + "account_number": "6056" + }, + "Achats d\u2019\u00e9tudes et prestations de services": { + "account_number": "6057" + }, + "Achats de travaux, mat\u00e9riels et \u00e9quipements": { + "account_number": "6058" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6059" + }, + "account_number": "605" + }, + "Achats d\u2019emballages": { + "Emballages perdus": { + "account_number": "6081" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "6082" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "6083" + }, + "Frais sur achats": { + "account_number": "6085" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6089" + }, + "account_number": "608" + }, + "account_number": "60" + }, + "Transports": { + "Transports sur ventes": { + "account_number": "612" + }, + "Transports pour le compte de tiers": { + "account_number": "613" + }, + "Transports du personnel": { + "account_number": "614" + }, + "Transports de plis": { + "account_number": "616" + }, + "Autres frais de transport": { + "Voyages et d\u00e9placements": { + "account_number": "6181" + }, + "Transports entre \u00e9tablissements ou chantiers": { + "account_number": "6182" + }, + "Transports administratifs": { + "account_number": "6183" + }, + "account_number": "618" + }, + "account_number": "61" + }, + "Services ext\u00e9rieurs": { + "Sous-traitance g\u00e9n\u00e9rale": { + "account_number": "621" + }, + "Locations, charges locatives": { + "Locations de terrains": { + "account_number": "6221" + }, + "Locations de b\u00e2timents": { + "account_number": "6222" + }, + "Locations de mat\u00e9riels et outillages": { + "account_number": "6223" + }, + "Malis sur emballages": { + "account_number": "6224" + }, + "Locations d\u2019emballages": { + "account_number": "6225" + }, + "Fermages et loyers du foncier": { + "account_number": "6226" + }, + "Locations et charges locatives diverses": { + "account_number": "6228" + }, + "account_number": "622" + }, + "Redevances de location acquisition": { + "Cr\u00e9dit-bail immobilier": { + "account_number": "6232" + }, + "Cr\u00e9dit-bail mobilier": { + "account_number": "6233" + }, + "Location-vente": { + "account_number": "6234" + }, + "Autres contrats de location acquisition": { + "account_number": "6238" + }, + "account_number": "623" + }, + "Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "Entretien et r\u00e9parations des biens immobiliers": { + "account_number": "6241" + }, + "Entretien et r\u00e9parations des biens mobiliers": { + "account_number": "6242" + }, + "Maintenance": { + "account_number": "6243" + }, + "Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "6244" + }, + "Autres entretiens et r\u00e9parations": { + "account_number": "6248" + }, + "account_number": "624" + }, + "Primes d\u2019assurance": { + "Assurances multirisques": { + "account_number": "6251" + }, + "Assurances mat\u00e9riel de transport": { + "account_number": "6252" + }, + "Assurances risques d\u2019exploitation": { + "account_number": "6253" + }, + "Assurances responsabilit\u00e9 du producteur": { + "account_number": "6254" + }, + "Assurances insolvabilit\u00e9 clients": { + "account_number": "6255" + }, + "Assurances transport sur ventes": { + "account_number": "6257" + }, + "Autres primes d\u2019assurances": { + "account_number": "6258" + }, + "account_number": "625" + }, + "\u00c9tudes, recherches et documentation": { + "\u00c9tudes et recherches": { + "account_number": "6261" + }, + "Documentation g\u00e9n\u00e9rale": { + "account_number": "6265" + }, + "Documentation technique": { + "account_number": "6266" + }, + "account_number": "626" + }, + "Publicit\u00e9, publications, relations publiques": { + "Annonces, insertions": { + "account_number": "6271" + }, + "Catalogues, imprim\u00e9s publicitaires": { + "account_number": "6272" + }, + "\u00c9chantillons": { + "account_number": "6273" + }, + "Foires et expositions": { + "account_number": "6274" + }, + "Publications": { + "account_number": "6275" + }, + "Cadeaux \u00e0 la client\u00e8le": { + "account_number": "6276" + }, + "Frais de colloques, s\u00e9minaires, conf\u00e9rences": { + "account_number": "6277" + }, + "Autres charges de publicit\u00e9 et relations publiques": { + "account_number": "6278" + }, + "account_number": "627" + }, + "Frais de t\u00e9l\u00e9communications": { + "Frais de t\u00e9l\u00e9phone": { + "account_number": "6281" + }, + "Frais de t\u00e9lex": { + "account_number": "6282" + }, + "Frais de t\u00e9l\u00e9copie": { + "account_number": "6283" + }, + "Autres frais de t\u00e9l\u00e9communications": { + "account_number": "6288" + }, + "account_number": "628" + }, + "account_number": "62" + }, + "Autres services ext\u00e9rieurs": { + "Frais bancaires": { + "Frais sur titres (vente, garde)": { + "account_number": "6311" + }, + "Frais sur effets": { + "account_number": "6312" + }, + "Location de coffres": { + "account_number": "6313" + }, + "Commissions d\u2019affacturage": { + "account_number": "6314" + }, + "Commissions sur cartes de cr\u00e9dit": { + "account_number": "6315" + }, + "Frais d\u2019\u00e9mission d\u2019emprunts": { + "account_number": "6316" + }, + "Frais sur instruments monnaie \u00e9lectronique": { + "account_number": "6317" + }, + "Autres frais bancaires": { + "account_number": "6318" + }, + "account_number": "631" + }, + "R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "Commissions et courtages sur ventes": { + "account_number": "6322" + }, + "Honoraires des professions r\u00e9glement\u00e9es": { + "account_number": "6324" + }, + "Frais d\u2019actes et de contentieux": { + "account_number": "6325" + }, + "R\u00e9mun\u00e9rations d\u2019affacturage": { + "account_number": "6326" + }, + "R\u00e9mun\u00e9rations des autres prestataires de services": { + "account_number": "6327" + }, + "Divers frais": { + "account_number": "6328" + }, + "account_number": "632" + }, + "Frais de formation du personnel": { + "account_number": "633" + }, + "Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "Redevances pour brevets, licences": { + "account_number": "6342" + }, + "Redevances pour logiciels": { + "account_number": "6343" + }, + "Redevances pour marques": { + "account_number": "6344" + }, + "Redevances pour sites internet": { + "account_number": "6345" + }, + "Redevances pour concessions, droits et valeurs similaires": { + "account_number": "6346" + }, + "account_number": "634" + }, + "Cotisations": { + "Cotisations": { + "account_number": "6351" + }, + "Concours divers": { + "account_number": "6358" + }, + "account_number": "635" + }, + "R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "Personnel int\u00e9rimaire": { + "account_number": "6371" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6372" + }, + "account_number": "637" + }, + "Autres charges externes": { + "Frais de recrutement du personnel": { + "account_number": "6381" + }, + "Frais de d\u00e9m\u00e9nagement": { + "account_number": "6382" + }, + "R\u00e9ceptions": { + "account_number": "6383" + }, + "Missions": { + "account_number": "6384" + }, + "Charges de copropri\u00e9t\u00e9": { + "account_number": "6385" + }, + "account_number": "638" + }, + "account_number": "63" + }, + "Imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes directs": { + "Imp\u00f4ts fonciers et taxes annexes": { + "account_number": "6411" + }, + "Patentes, licences et taxes annexes": { + "account_number": "6412" + }, + "Taxes sur appointements et salaires": { + "account_number": "6413" + }, + "Taxes d\u2019apprentissage": { + "account_number": "6414" + }, + "Formation professionnelle continue": { + "account_number": "6415" + }, + "Autres imp\u00f4ts et taxes directs": { + "account_number": "6418" + }, + "account_number": "641" + }, + "Imp\u00f4ts et taxes indirects": { + "account_number": "645" + }, + "Droits d\u2019enregistrement": { + "Droits de mutation": { + "account_number": "6461" + }, + "Droits de timbre": { + "account_number": "6462" + }, + "Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": { + "account_number": "6463" + }, + "Vignettes": { + "account_number": "6464" + }, + "Autres droits": { + "account_number": "6468" + }, + "account_number": "646" + }, + "P\u00e9nalit\u00e9s, amendes fiscales": { + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": { + "account_number": "6471" + }, + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": { + "account_number": "6472" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": { + "account_number": "6473" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": { + "account_number": "6474" + }, + "Autres p\u00e9nalit\u00e9s et amendes fiscales": { + "account_number": "6478" + }, + "account_number": "647" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "648" + }, + "account_number": "64" + }, + "Autres charges": { + "Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "Clients": { + "account_number": "6511" + }, + "Autres d\u00e9biteurs": { + "account_number": "6515" + }, + "account_number": "651" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "6521" + }, + "Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "6525" + }, + "account_number": "652" + }, + "Valeurs comptables des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "6541" + }, + "Immobilisations corporelles": { + "account_number": "6542" + }, + "account_number": "654" + }, + "Perte de change sur cr\u00e9ances et dettes commerciale": { + "account_number": "656" + }, + "P\u00e9nalit\u00e9s et amendes p\u00e9nales": { + "account_number": "657" + }, + "Charges diverses": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "6581" + }, + "Dons": { + "account_number": "6582" + }, + "M\u00e9c\u00e9nat": { + "account_number": "6583" + }, + "Autres charges diverses": { + "account_number": "6588" + }, + "account_number": "658" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "6591" + }, + "Sur stocks": { + "account_number": "6593" + }, + "Sur cr\u00e9ances": { + "account_number": "6594" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": { + "account_number": "6598" + }, + "account_number": "659" + }, + "account_number": "65" + }, + "Charges de personnel": { + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "Appointements salaires et commissions": { + "account_number": "6611" + }, + "Primes et gratifications": { + "account_number": "6612" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6613" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6614" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6615" + }, + "Suppl\u00e9ment familial": { + "account_number": "6616" + }, + "Avantages en nature": { + "account_number": "6617" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6618" + }, + "account_number": "661" + }, + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "Appointements salaires et commissions": { + "account_number": "6621" + }, + "Primes et gratifications": { + "account_number": "6622" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6623" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6624" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6625" + }, + "Suppl\u00e9ment familial": { + "account_number": "6626" + }, + "Avantages en nature": { + "account_number": "6627" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6628" + }, + "account_number": "662" + }, + "Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "Indemnit\u00e9s de logement": { + "account_number": "6631" + }, + "Indemnit\u00e9s de repr\u00e9sentation": { + "account_number": "6632" + }, + "Indemnit\u00e9s d\u2019expatriation": { + "account_number": "6633" + }, + "Indemnit\u00e9s de transport": { + "account_number": "6634" + }, + "Autres indemnit\u00e9s et avantages divers": { + "account_number": "6638" + }, + "account_number": "663" + }, + "Charges sociales": { + "Charges sociales sur r\u00e9mun\u00e9ration du personnel national": { + "account_number": "6641" + }, + "Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": { + "account_number": "6642" + }, + "account_number": "664" + }, + "R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "R\u00e9mun\u00e9ration du travail de l\u2019exploitant": { + "account_number": "6661" + }, + "Charges sociales": { + "account_number": "6662" + }, + "account_number": "666" + }, + "R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "Personnel int\u00e9rimaire": { + "account_number": "6671" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6672" + }, + "account_number": "667" + }, + "Autres charges sociales": { + "Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": { + "account_number": "6681" + }, + "Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": { + "account_number": "6682" + }, + "Versements et contributions aux autres \u0153uvres sociales": { + "account_number": "6683" + }, + "M\u00e9decine du travail et pharmacie": { + "account_number": "6684" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "6685" + }, + "Assurances retraite et fonds de pension": { + "account_number": "6686" + }, + "Majorations et p\u00e9nalit\u00e9s sociales": { + "account_number": "6687" + }, + "Charges sociales diverses": { + "account_number": "6688" + }, + "account_number": "668" + }, + "account_number": "66" + }, + "Frais financiers et charges assimil\u00e9es": { + "Int\u00e9r\u00eats des emprunts": { + "Emprunts obligataires": { + "account_number": "6711" + }, + "Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "6712" + }, + "Dettes li\u00e9es \u00e0 des participations": { + "account_number": "6713" + }, + "Primes de remboursement des obligations": { + "account_number": "6714" + }, + "account_number": "671" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "6722" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "6723" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": { + "account_number": "6724" + }, + "Int\u00e9r\u00eats dans loyers des autres locations acquisition": { + "account_number": "6728" + }, + "account_number": "672" + }, + "Escomptes accord\u00e9s": { + "account_number": "673" + }, + "Autres int\u00e9r\u00eats": { + "Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": { + "account_number": "6741" + }, + "Comptes courants bloqu\u00e9s": { + "account_number": "6742" + }, + "Int\u00e9r\u00eats sur obligations cautionn\u00e9es": { + "account_number": "6743" + }, + "Int\u00e9r\u00eats sur dettes commerciales": { + "account_number": "6744" + }, + "Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": { + "account_number": "6745" + }, + "Int\u00e9r\u00eats sur dettes diverses": { + "account_number": "6748" + }, + "account_number": "674" + }, + "Escomptes des effets de commerce": { + "account_number": "675" + }, + "Pertes de change financi\u00e8res": { + "account_number": "676" + }, + "Pertes sur titres de placement": { + "Pertes sur cessions de titres de placement": { + "account_number": "6771" + }, + "Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "6772" + }, + "account_number": "677" + }, + "Pertes et charges sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "6781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "6782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "6784" + }, + "account_number": "678" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "6791" + }, + "Sur titres de placement": { + "account_number": "6795" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "6798" + }, + "account_number": "679" + }, + "account_number": "67" + }, + "Dotations aux amortissements": { + "Dotations aux amortissements d\u2019exploitation": { + "Dotations aux amortissements des immobilisations incorporelles": { + "account_number": "6812" + }, + "Dotations aux amortissements des immobilisations corporelles": { + "account_number": "6813" + }, + "account_number": "681" + }, + "account_number": "68" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6911" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "account_number": "6913" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": { + "account_number": "6914" + }, + "account_number": "691" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6971" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": { + "account_number": "6972" + }, + "account_number": "697" + }, + "account_number": "69" + }, + "root_type": "Expense", + "account_number": "6" + }, + "Comptes de produits des activit\u00e9s ordinaires": { + "Ventes": { + "Ventes de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "7011" + }, + "Hors R\u00e9gion": { + "account_number": "7012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7014" + }, + "Sur internet": { + "account_number": "7015" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7019" + }, + "account_number": "701" + }, + "Ventes de produits finis": { + "Dans la R\u00e9gion": { + "account_number": "7021" + }, + "Hors R\u00e9gion": { + "account_number": "7022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7024" + }, + "Sur internet": { + "account_number": "7025" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7029" + }, + "account_number": "702" + }, + "Ventes de produits interm\u00e9diaires": { + "Dans la R\u00e9gion": { + "account_number": "7031" + }, + "Hors R\u00e9gion": { + "account_number": "7032" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7033" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7034" + }, + "Sur internet": { + "account_number": "7035" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7039" + }, + "account_number": "703" + }, + "Ventes de produits r\u00e9siduels": { + "Dans la R\u00e9gion": { + "account_number": "7041" + }, + "Hors R\u00e9gion": { + "account_number": "7042" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7043" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7044" + }, + "Sur internet": { + "account_number": "7045" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7049" + }, + "account_number": "704" + }, + "Travaux factur\u00e9s": { + "Dans la R\u00e9gion": { + "account_number": "7051" + }, + "Hors R\u00e9gion": { + "account_number": "7052" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7053" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7054" + }, + "Sur internet": { + "account_number": "7055" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7059" + }, + "account_number": "705" + }, + "Services vendus": { + "Dans la R\u00e9gion": { + "account_number": "7061" + }, + "Hors R\u00e9gion": { + "account_number": "7062" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7063" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7064" + }, + "Sur internet": { + "account_number": "7065" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7069" + }, + "account_number": "706" + }, + "Produits accessoires": { + "Ports, emballages perdus et autres frais factur\u00e9s": { + "account_number": "7071" + }, + "Commissions et courtages": { + "account_number": "7072" + }, + "Locations": { + "account_number": "7073" + }, + "Bonis sur reprises et cessions d\u2019emballages": { + "account_number": "7074" + }, + "Mise \u00e0 disposition de personnel": { + "account_number": "7075" + }, + "Redevances pour brevets, logiciels, marques et droits similaires": { + "account_number": "7076" + }, + "Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": { + "account_number": "7077" + }, + "Autres produits accessoires": { + "account_number": "7078" + }, + "account_number": "707" + }, + "account_number": "70" + }, + "Subventions d\u2019exploitation": { + "Sur produits \u00e0 l\u2019exportation": { + "account_number": "711" + }, + "Sur produits \u00e0 l\u2019importation": { + "account_number": "712" + }, + "Sur produits de p\u00e9r\u00e9quation": { + "account_number": "713" + }, + "Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": { + "account_number": "714" + }, + "Autres subventions d\u2019exploitation": { + "Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": { + "account_number": "7181" + }, + "Vers\u00e9es par les organismes internationaux": { + "account_number": "7182" + }, + "Vers\u00e9es par des tiers": { + "account_number": "7183" + }, + "account_number": "718" + }, + "account_number": "71" + }, + "Production immobilis\u00e9e": { + "Immobilisations incorporelles": { + "account_number": "721" + }, + "Immobilisations corporelles": { + "Immobilisations corporelles (hors actifs biologiques)": { + "account_number": "7221" + }, + "Immobilisations corporelles (actifs biologiques)": { + "account_number": "7222" + }, + "account_number": "722" + }, + "Production auto-consomm\u00e9e": { + "account_number": "724" + }, + "Immobilisations financi\u00e8res": { + "account_number": "726" + }, + "account_number": "72" + }, + "Variations des stocks de biens et de services produits": { + "Variations des stocks de produits en cours": { + "Produits en cours": { + "account_number": "7341" + }, + "Travaux en cours": { + "account_number": "7342" + }, + "account_number": "734" + }, + "Variations des en-cours de services": { + "\u00c9tudes en cours": { + "account_number": "7351" + }, + "Prestations de services en cours": { + "account_number": "7352" + }, + "account_number": "735" + }, + "Variations des stocks de produits finis": { + "account_number": "736" + }, + "Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "account_number": "7371" + }, + "Produits r\u00e9siduels": { + "account_number": "7372" + }, + "account_number": "737" + }, + "account_number": "73" + }, + "Autres produits": { + "Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "account_number": "751" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "7521" + }, + "B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "7525" + }, + "account_number": "752" + }, + "Produits des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "7541" + }, + "Immobilisations corporelles": { + "account_number": "7542" + }, + "account_number": "754" + }, + "Gains de change sur cr\u00e9ances et dettes commerciales": { + "account_number": "756" + }, + "Produits divers": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "7581" + }, + "Indemnit\u00e9s d\u2019assurances re\u00e7ues": { + "account_number": "7582" + }, + "Autres produits divers": { + "account_number": "7588" + }, + "account_number": "758" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "7591" + }, + "Sur stocks": { + "account_number": "7593" + }, + "Sur cr\u00e9ances": { + "account_number": "7594" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "account_number": "7598" + }, + "account_number": "759" + }, + "account_number": "75" + }, + "Revenus financiers et produits assimil\u00e9s": { + "Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "Int\u00e9r\u00eats de pr\u00eats": { + "account_number": "7712" + }, + "Int\u00e9r\u00eats sur cr\u00e9ances diverses": { + "account_number": "7713" + }, + "account_number": "771" + }, + "Revenus de participations et autres titres immobilis\u00e9s": { + "Revenus des titres de participation": { + "account_number": "7721" + }, + "Revenus autres titres immobilis\u00e9s": { + "account_number": "7722" + }, + "account_number": "772" + }, + "Escomptes obtenus": { + "account_number": "773" + }, + "Revenus de placement": { + "Revenus des obligations": { + "account_number": "7745" + }, + "Revenus des titres de placement": { + "account_number": "7746" + }, + "account_number": "774" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "account_number": "775" + }, + "Gains de change financiers": { + "account_number": "776" + }, + "Gains sur cessions de titres de placement": { + "account_number": "777" + }, + "Gains sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "7781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "7782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "7784" + }, + "account_number": "778" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "7791" + }, + "Sur titres de placement": { + "account_number": "7795" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "7798" + }, + "account_number": "779" + }, + "account_number": "77" + }, + "Transferts de charges": { + "Transferts de charges d\u2019exploitation": { + "account_number": "781" + }, + "Transferts de charges financi\u00e8res": { + "account_number": "787" + }, + "account_number": "78" + }, + "Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Pour risques et charges": { + "account_number": "7911" + }, + "Des immobilisations incorporelles": { + "account_number": "7913" + }, + "Des immobilisations corporelles": { + "account_number": "7914" + }, + "account_number": "791" + }, + "Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "Pour risques et charges": { + "account_number": "7971" + }, + "Des immobilisations financi\u00e8res": { + "account_number": "7972" + }, + "account_number": "797" + }, + "Reprises d\u2019amortissements": { + "account_number": "798" + }, + "Reprises de subventions d\u2019investissement": { + "account_number": "799" + }, + "account_number": "79" + }, + "root_type": "Income", + "account_number": "7" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "Valeurs comptables des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "811" + }, + "Immobilisations corporelles": { + "account_number": "812" + }, + "Immobilisations financi\u00e8res": { + "account_number": "816" + }, + "account_number": "81" + }, + "Charges hors activit\u00e9s ordinaires": { + "Charges HAO constat\u00e9es": { + "account_number": "831" + }, + "Charges li\u00e9es aux op\u00e9rations de restructuration": { + "account_number": "833" + }, + "Pertes sur cr\u00e9ances HAO": { + "account_number": "834" + }, + "Dons et lib\u00e9ralit\u00e9s accord\u00e9s": { + "account_number": "835" + }, + "Abandons de cr\u00e9ances consentis": { + "account_number": "836" + }, + "Charges li\u00e9es aux op\u00e9rations de liquidation": { + "account_number": "837" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "839" + }, + "account_number": "83" + }, + "Dotations hors activit\u00e9s ordinaires": { + "Dotations aux provisions r\u00e9glement\u00e9es": { + "account_number": "851" + }, + "Dotations aux amortissements HAO": { + "account_number": "852" + }, + "Dotations aux d\u00e9pr\u00e9ciations HAO": { + "account_number": "853" + }, + "Dotations aux provisions pour risques et charges HAO": { + "account_number": "854" + }, + "Autres dotations HAO": { + "account_number": "858" + }, + "account_number": "85" + }, + "Participation des travailleurs": { + "Participation l\u00e9gale aux b\u00e9n\u00e9fices": { + "account_number": "871" + }, + "Participation contractuelle aux b\u00e9n\u00e9fices": { + "account_number": "874" + }, + "Autres participations": { + "account_number": "878" + }, + "account_number": "87" + }, + "Imp\u00f4ts sur le r\u00e9sultat": { + "Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": { + "account_number": "8911" + }, + "Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": { + "account_number": "8912" + }, + "Activit\u00e9s exerc\u00e9es hors R\u00e9gion": { + "account_number": "8913" + }, + "account_number": "891" + }, + "Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "account_number": "892" + }, + "Imp\u00f4t minimum forfaitaire IMF": { + "account_number": "895" + }, + "D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "D\u00e9gr\u00e8vements": { + "account_number": "8991" + }, + "Annulations pour pertes r\u00e9troactives": { + "account_number": "8994" + }, + "account_number": "899" + }, + "account_number": "89" + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "Produits des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "821" + }, + "Immobilisations corporelles": { + "account_number": "822" + }, + "Immobilisations financi\u00e8res": { + "account_number": "826" + }, + "account_number": "82" + }, + "Produits hors activit\u00e9s ordinaires": { + "Produits HAO constat\u00e9s": { + "account_number": "841" + }, + "Produits li\u00e9s aux op\u00e9rations de restructuration": { + "account_number": "843" + }, + "Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": { + "account_number": "844" + }, + "Dons et lib\u00e9ralit\u00e9s obtenus": { + "account_number": "845" + }, + "Abandons de cr\u00e9ances obtenus": { + "account_number": "846" + }, + "Produits li\u00e9s aux op\u00e9rations de liquidation": { + "account_number": "847" + }, + "Transferts de charges HAO": { + "account_number": "848" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "849" + }, + "account_number": "84" + }, + "Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "Reprises de provisions r\u00e9glement\u00e9es": { + "account_number": "861" + }, + "Reprises d\u2019amortissements HAO": { + "account_number": "862" + }, + "Reprises de d\u00e9pr\u00e9ciations HAO": { + "account_number": "863" + }, + "Reprises de provisions pour risques et charges HAO": { + "account_number": "864" + }, + "Autres reprises HAO": { + "account_number": "868" + }, + "account_number": "86" + }, + "Subventions d\u2019\u00e9quilibre": { + "\u00c9tat": { + "account_number": "881" + }, + "Collectivit\u00e9s publiques": { + "account_number": "884" + }, + "Groupe": { + "account_number": "886" + }, + "Autres": { + "account_number": "888" + }, + "account_number": "88" + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/cd_plan_comptable.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/cd_plan_comptable.json new file mode 100644 index 00000000000..569eab35c51 --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/cd_plan_comptable.json @@ -0,0 +1,1919 @@ +{ + "country_code": "cd", + "name": "Syscohada - Plan Comptable", + "tree": { + "1-Comptes de ressources durables": { + "10-Capital": { + "101-Capital social": { + "1011-Capital souscrit, non appel\u00e9": {}, + "1012-Capital souscrit, appel\u00e9, non vers\u00e9": {}, + "1013-Capital souscrit, appel\u00e9, vers\u00e9, non amorti": {}, + "1014-Capital souscrit, appel\u00e9, vers\u00e9, amorti": {}, + "1018-Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": {} + }, + "102-Capital par dotation": { + "1021-Dotation initiale": {}, + "1022-Dotations compl\u00e9mentaires": {}, + "1028-Autres dotations": {} + }, + "103-Capital personnel": {}, + "104-Compte de l\u2019exploitant": { + "1041-Apports temporaires": {}, + "1042-Op\u00e9rations courantes": {}, + "1043-R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": {}, + "1047-Pr\u00e9l\u00e8vements d\u2019autoconsommation": {}, + "1048-Autres pr\u00e9l\u00e8vements": {} + }, + "105-Primes li\u00e9es au capital social": { + "1051-Primes d\u2019\u00e9mission": {}, + "1052-Primes d\u2019apport": {}, + "1053-Primes de fusion": {}, + "1054-Primes de conversion": {}, + "1058-Autres primes": {} + }, + "106-\u00c9carts de r\u00e9\u00e9valuation": { + "1061-\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": {}, + "1062-\u00c9carts de r\u00e9\u00e9valuation libre": {} + }, + "109-Apporteurs, capital souscrit, non appel\u00e9": {} + }, + "11-R\u00e9serves": { + "111-R\u00e9serve l\u00e9gale": {}, + "112-R\u00e9serves statutaires ou contractuelles": {}, + "113-R\u00e9serves r\u00e9glement\u00e9es": { + "1131-R\u00e9serves de plus-values nettes \u00e0 long terme": {}, + "1132-R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {}, + "1133-R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": {}, + "1134-R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": {}, + "1135-Autres r\u00e9serves r\u00e9glement\u00e9es": {} + }, + "118-Autres r\u00e9serves": { + "1181-R\u00e9serves facultatives": {}, + "1188-R\u00e9serves diverses": {} + } + }, + "12-Report \u00e0 nouveau": { + "121-Report \u00e0 nouveau cr\u00e9diteur": {}, + "129-Report \u00e0 nouveau d\u00e9biteur": { + "1291-Perte nette \u00e0 reporter": {}, + "1292-Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": {} + } + }, + "13-R\u00e9sultat net de l\u2019exercice": { + "130-R\u00e9sultat en instance d\u2019affectation": { + "1301-R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": {}, + "1309-R\u00e9sultat en instance d\u2019affectation : perte": {} + }, + "131-R\u00e9sultat net : b\u00e9n\u00e9fice": {}, + "132-Marge commerciale (MC)": {}, + "133-Valeur ajout\u00e9e (VA)": {}, + "134-Exc\u00e9dent brut d\u2019exploitation (EBE)": {}, + "135-R\u00e9sultat d\u2019exploitation (RE)": {}, + "136-R\u00e9sultat financier (RF)": {}, + "137-R\u00e9sultat des activit\u00e9s ordinaires (RAO)": {}, + "138-R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "1381-R\u00e9sultat de fusion": {}, + "1382-R\u00e9sultat d\u2019apport partiel d\u2019actif": {}, + "1383-R\u00e9sultat de scission": {}, + "1384-R\u00e9sultat de liquidation": {} + }, + "139-R\u00e9sultat net : perte": {} + }, + "14-Subventions d\u2019investissement": { + "141-Subventions d\u2019\u00e9quipement": { + "1411-\u00c9tat": {}, + "1412-R\u00e9gions": {}, + "1413-D\u00e9partements": {}, + "1414-Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": {}, + "1415-Entit\u00e9s publiques ou mixtes": {}, + "1416-Entit\u00e9s et organismes priv\u00e9s": {}, + "1417-Organismes internationaux": {}, + "1418-Autres": {} + }, + "148-Autres subventions d\u2019investissement": {} + }, + "15-Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "151-Amortissements d\u00e9rogatoires": {}, + "152-Plus-values de cession \u00e0 r\u00e9investir": {}, + "153-Fonds r\u00e9glement\u00e9s": { + "1531-Fonds National": {}, + "1532-Pr\u00e9l\u00e8vement pour le Budget": {} + }, + "154-Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": {}, + "155-Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "1551-Reconstitution des gisements miniers et p\u00e9troliers": {} + }, + "156-Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "1561-Hausse de prix": {}, + "1562-Fluctuation des cours": {} + }, + "157-Provisions pour investissement": {}, + "158-Autres provisions et fonds r\u00e9glement\u00e9s": {} + }, + "16-Emprunts et dettes assimil\u00e9es": { + "161-Emprunts obligataires": { + "1611-Emprunts obligataires ordinaires": {}, + "1612-Emprunts obligataires convertibles en actions": {}, + "1613-Emprunts obligataires remboursables en actions": {}, + "1618-Autres emprunts obligataires": {} + }, + "162-Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "163-Avances re\u00e7ues de l\u2019\u00c9tat": {}, + "164-Avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "165-D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "1651-D\u00e9p\u00f4ts": {}, + "1652-Cautionnements": {} + }, + "166-Int\u00e9r\u00eats courus": { + "1661-Sur emprunts obligataires": {}, + "1662-Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "1663-Sur avances re\u00e7ues de l\u2019\u00c9tat": {}, + "1664-Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "1665-Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": {}, + "1667-Sur avances assorties de conditions particuli\u00e8res": {}, + "1668-Sur autres emprunts et dettes": {} + }, + "167-Avances assorties de conditions particuli\u00e8res": { + "1671-Avances bloqu\u00e9es pour augmentation du capital": {}, + "1672-Avances conditionn\u00e9es par l\u2019\u00c9tat": {}, + "1673-Avances conditionn\u00e9es par les autres organismes africains": {}, + "1674-Avances conditionn\u00e9es par les organismes internationaux": {} + }, + "168-Autres emprunts et dettes": { + "1681-Rentes viag\u00e8res capitalis\u00e9es": {}, + "1682-Billets de fonds": {}, + "1683-Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": {}, + "1684-Emprunts participatifs": {}, + "1685-Participation des travailleurs aux b\u00e9n\u00e9fices": {}, + "1686-Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": {} + } + }, + "17-Dettes de location acquisition": { + "172-Dettes de location acquisition / cr\u00e9dit bail immobilier": {}, + "173-Dettes de location acquisition / cr\u00e9dit bail mobilier": {}, + "174-Dettes de location acquisition / location de vente": {}, + "176-Int\u00e9r\u00eats courus": { + "1762-Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": {}, + "1763-Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": {}, + "1764-Sur dettes de location acquisition / location-vente": {}, + "1768-Sur autres dettes de location acquisition": {} + }, + "178-Autres dettes de location acquisition": {} + }, + "18-Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "181-Dettes li\u00e9es \u00e0 des participations": { + "1811-Dettes li\u00e9es \u00e0 des participations (groupe)": {}, + "1812-Dettes li\u00e9es \u00e0 des participations (hors groupe)": {} + }, + "182-Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "183-Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": {}, + "184-Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "185-Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "186-Comptes de liaison charges": {}, + "187-Comptes de liaison produits": {}, + "188-Comptes de liaison des soci\u00e9t\u00e9s en participation": {} + }, + "19-Provisions pour risques et charges": { + "191-Provisions pour litiges": {}, + "192-Provisions pour garanties donn\u00e9es aux clients": {}, + "193-Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": {}, + "194-Provisions pour pertes de change": {}, + "195-Provisions pour imp\u00f4ts": {}, + "196-Provisions pour pensions et obligations similaires": { + "1961-Provisions pour pensions et obligations similaires engagement de retraite": {}, + "1962-Actif du r\u00e9gime de retraite": {} + }, + "197-Provisions pour restructuration": {}, + "198-Autres provisions pour risques et charges": { + "1981-Provisions pour amendes et p\u00e9nalit\u00e9s": {}, + "1983-Provisions pour propre assureur": {}, + "1984-Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "1985-Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": {}, + "1988-Provisions pour divers risques et charges": {} + } + }, + "root_type": "Equity" + }, + "2-Comptes d\u2019actif immobilis\u00e9": { + "21-Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "211-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "212-Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "2121-Brevets": { + "account_type": "Fixed Asset" + }, + "2122-Licences": { + "account_type": "Fixed Asset" + }, + "2123-Concessions de service public": { + "account_type": "Fixed Asset" + }, + "2128-Autres concessions et droits similaires": { + "account_type": "Fixed Asset" + } + }, + "213-Logiciels et sites internet": { + "account_type": "Fixed Asset", + "2131-Logiciels": { + "account_type": "Fixed Asset" + }, + "2132-Sites internet": { + "account_type": "Fixed Asset" + } + }, + "214-Marques": { + "account_type": "Fixed Asset" + }, + "215-Fonds commercial": { + "account_type": "Fixed Asset" + }, + "216-Droit au bail": { + "account_type": "Fixed Asset" + }, + "217-Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset" + }, + "218-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "2181-Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset" + }, + "2182-Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset" + }, + "2183-Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset" + }, + "2184-Co\u00fbts des franchises": { + "account_type": "Fixed Asset" + }, + "2188-Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset" + } + }, + "219-Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "2191-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "2193-Logiciels et internet": { + "account_type": "Fixed Asset" + }, + "2198-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset" + } + } + }, + "22-Terrains": { + "account_type": "Fixed Asset", + "221-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "2211-Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset" + }, + "2212-Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset" + }, + "2218-Autres terrains": { + "account_type": "Fixed Asset" + } + }, + "222-Terrains nus": { + "account_type": "Fixed Asset", + "2221-Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset" + }, + "2228-Autres terrains nus": { + "account_type": "Fixed Asset" + } + }, + "223-Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "2231-Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset" + }, + "2232-Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset" + }, + "2234-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset" + }, + "2235-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset" + }, + "2238-Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset" + } + }, + "224-Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "2241-Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset" + }, + "2245-Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset" + }, + "2248-Autres travaux": { + "account_type": "Fixed Asset" + } + }, + "225-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "2251-Carri\u00e8res": { + "account_type": "Fixed Asset" + } + }, + "226-Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "2261-Parkings": { + "account_type": "Fixed Asset" + } + }, + "227-Terrains mis en concession": { + "account_type": "Fixed Asset" + }, + "228-Autres terrains": { + "account_type": "Fixed Asset", + "2281-Terrains immeubles de placement": { + "account_type": "Fixed Asset" + }, + "2285-Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset" + }, + "2286-Terrains de location acquisition": { + "account_type": "Fixed Asset" + }, + "2288-Divers terrains": { + "account_type": "Fixed Asset" + } + }, + "229-Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "2291-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset" + }, + "2292-Terrains nus": { + "account_type": "Fixed Asset" + }, + "2295-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset" + }, + "2298-Autres terrains": { + "account_type": "Fixed Asset" + } + } + }, + "23-B\u00e2timents, installations techniques et agencements": { + "231-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "2311-B\u00e2timents industriels": {}, + "2312-B\u00e2timents agricoles": {}, + "2313-B\u00e2timents administratifs et commerciaux": {}, + "2314-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2315-B\u00e2timents immeubles de placement": {}, + "2316-B\u00e2timents de location acquisition": {} + }, + "232-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "2321-B\u00e2timents industriels": {}, + "2322-B\u00e2timents agricoles": {}, + "2323-B\u00e2timents administratifs et commerciaux": {}, + "2324-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2325-B\u00e2timents immeubles de placement": {}, + "2326-B\u00e2timents de location acquisition": {} + }, + "233-Ouvrages d\u2019infrastructure": { + "2331-Voies de terre": {}, + "2332-Voies de fer": {}, + "2333-Voies d\u2019eau": {}, + "2334-Barrages, Digues": {}, + "2335-Pistes d\u2019a\u00e9rodrome": {}, + "2338-Autres ouvrages d\u2019infrastructures": {} + }, + "234-Am\u00e9nagements, agencements et installations techniques": { + "2341-Installations complexes sp\u00e9cialis\u00e9es sur sol propre": {}, + "2342-Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": {}, + "2343-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": {}, + "2344-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": {}, + "2345-Am\u00e9nagements et agencements des b\u00e2timents": {} + }, + "235-Am\u00e9nagements de bureaux": { + "2351-Installations g\u00e9n\u00e9rales": {}, + "2358-Autres am\u00e9nagements de bureaux": {} + }, + "237-B\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "238-Autres installations et agencements": {}, + "239-B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "2391-B\u00e2timents en cours": {}, + "2392-Installations en cours": {}, + "2393-Ouvrages d\u2019infrastructure en cours": {}, + "2394-Am\u00e9nagements et agencements et installations techniques en cours": {}, + "2395-Am\u00e9nagements de bureaux en cours": {}, + "2398-Autres installations et agencements en cours": {} + } + }, + "24-Mat\u00e9riel, mobilier et actifs biologiques": { + "241-Mat\u00e9riel et outillage industriel et commercial": { + "2411-Mat\u00e9riel industriel": {}, + "2412-Outillage industriel": {}, + "2413-Mat\u00e9riel commercial": {}, + "2414-Outillage commercial": {}, + "2416-Mat\u00e9riel & outillage industriel et commercial de location-acquisition": {} + }, + "242-Mat\u00e9riel et outillage agricole": { + "2421-Mat\u00e9riel agricole": {}, + "2422-Outillage agricole": {}, + "2426-Mat\u00e9riel & outillage agricole de location-acquisition": {} + }, + "243-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "244-Mat\u00e9riel et mobilier": { + "2441-Mat\u00e9riel de bureau": {}, + "2442-Mat\u00e9riel informatique": {}, + "2443-Mat\u00e9riel bureautique": {}, + "2444-Mobilier de bureau": {}, + "2445-Mat\u00e9riel et mobilier immeubles de placement": {}, + "2446-Mat\u00e9riel et mobilier de location acquisition": {}, + "2447-Mat\u00e9riel et mobilier des logements du personnel": {} + }, + "245-Mat\u00e9riel de transport": { + "2451-Mat\u00e9riel automobile": {}, + "2452-Mat\u00e9riel ferroviaire": {}, + "2453-Mat\u00e9riel fluvial, lagunaire": {}, + "2454-Mat\u00e9riel naval": {}, + "2455-Mat\u00e9riel a\u00e9rien": {}, + "2456-Mat\u00e9riel de transport de location-acquisition": {}, + "2457-Mat\u00e9riel hippomobile": {}, + "2458-Autres mat\u00e9riels de transport": {} + }, + "246-Actifs biologiques": { + "2461-Cheptel, animaux de trait": {}, + "2462-Cheptel, animaux reproducteurs": {}, + "2463-Animaux de garde": {}, + "2465-Plantations agricoles": {}, + "2468-Autres actifs biologiques": {} + }, + "247-Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "2471-Agencements et am\u00e9nagements du mat\u00e9riel": {}, + "2472-Agencements et am\u00e9nagements des actifs biologiques": {}, + "2478-Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": {} + }, + "248-Autres mat\u00e9riels et mobiliers": { + "2481-Collections et \u0153uvres d\u2019art": {}, + "2488-Divers mat\u00e9riels mobiliers": {} + }, + "249-Mat\u00e9riels et actifs biologiques en cours": { + "2491-Mat\u00e9riel et outillage industriel et commercial": {}, + "2492-Mat\u00e9riel et outillage agricole": {}, + "2493-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2494-Mat\u00e9riel et mobilier de bureau": {}, + "2495-Mat\u00e9riel de transport": {}, + "2496-Actifs biologiques": {}, + "2497-Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": {}, + "2498-Autres mat\u00e9riels et actifs biologiques en cours": {} + } + }, + "25-Avances et acomptes vers\u00e9s sur immobilisations": { + "251-Avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "252-Avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "26-Titres de participation": { + "261-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "262-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "263-Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "265-Participations dans des organismes professionnels": {}, + "266-Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {}, + "268-Autres titres de participation": {} + }, + "27-Autres immobilisations financi\u00e8res": { + "271-Pr\u00eats et cr\u00e9ances": { + "2711-Pr\u00eats participatifs": {}, + "2712-Pr\u00eats aux associ\u00e9s": {}, + "2713-Billets de fonds": {}, + "2714-Titres pr\u00eat\u00e9s": {}, + "2718-Autres pr\u00eats et cr\u00e9ances": {} + }, + "272-Pr\u00eats au personnel": { + "2721-Pr\u00eats immobiliers": {}, + "2722-Pr\u00eats mobiliers et d\u2019installation": {}, + "2728-Autres pr\u00eats au personnel": {} + }, + "273-Cr\u00e9ances sur l\u2019\u00c9tat": { + "2731-Retenues de garantie": {}, + "2733-Fonds r\u00e9glement\u00e9": {}, + "2734-Cr\u00e9ances sur le conc\u00e9dant": {}, + "2738-Autres cr\u00e9ances sur l\u2019\u00c9tat": {} + }, + "274-Titres immobilis\u00e9s": { + "2741-Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": {}, + "2742-Titres participatifs": {}, + "2743-Certificats d\u2019investissement": {}, + "2744-Parts de fonds commun de placement (FCP)": {}, + "2745-Obligations": {}, + "2746-Actions ou parts propres": {}, + "2748-Autres titres immobilis\u00e9s": {} + }, + "275-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "2751-D\u00e9p\u00f4ts pour loyers d\u2019avance": {}, + "2752-D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": {}, + "2753-D\u00e9p\u00f4ts pour l\u2019eau": {}, + "2754-D\u00e9p\u00f4ts pour le gaz": {}, + "2755-D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": {}, + "2756-Cautionnements sur march\u00e9s publics": {}, + "2757-Cautionnements sur autres op\u00e9rations": {}, + "2758-Autres d\u00e9p\u00f4ts et cautionnements": {} + }, + "276-Int\u00e9r\u00eats courus": { + "2761-Pr\u00eats et cr\u00e9ances non commerciales": {}, + "2762-Pr\u00eats au personnel": {}, + "2763-Cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2764-Titres immobilis\u00e9s": {}, + "2765-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2767-Cr\u00e9ances rattach\u00e9es \u00e0 des participations": {}, + "2768-Immobilisations financi\u00e8res diverses": {} + }, + "277-Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "2771-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": {}, + "2772-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": {}, + "2773-Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "2774-Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {} + }, + "278-Immobilisations financi\u00e8res diverses": { + "2781-Cr\u00e9ances diverses groupe": {}, + "2782-Cr\u00e9ances diverses hors groupe": {}, + "2784-Banques d\u00e9p\u00f4ts \u00e0 terme": {}, + "2785-Or et m\u00e9taux pr\u00e9cieux": {}, + "2788-Autres immobilisations financi\u00e8res": {} + } + }, + "28-Amortissements": { + "account_type": "Accumulated Depreciation", + "281-Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "2811-Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation" + }, + "2812-Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation" + }, + "2813-Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation" + }, + "2814-Amortissements des marques": { + "account_type": "Accumulated Depreciation" + }, + "2815-Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation" + }, + "2816-Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation" + }, + "2817-Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation" + }, + "2818-Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation" + } + }, + "282-Amortissements des terrains": { + "2824-Amortissements des travaux de mise en valeur des terrains": {} + }, + "283-Amortissements des b\u00e2timents, installations techniques et agencements": { + "2831-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2832-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2833-Amortissements des ouvrages d\u2019infrastructure": {}, + "2834-Amortissements des am\u00e9nagements, agencements et installations techniques": {}, + "2835-Amortissements des am\u00e9nagements de bureaux": {}, + "2837-Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2838-Amortissements des autres installations et agencements": {} + }, + "284-Amortissements du mat\u00e9riel": { + "2841-Amortissements du mat\u00e9riel et outillage industriel et commercial": {}, + "2842-Amortissements du mat\u00e9riel et outillage agricole": {}, + "2843-Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2844-Amortissements du mat\u00e9riel et mobilier": {}, + "2845-Amortissements du mat\u00e9riel de transport": {}, + "2846-Amortissements des actifs biologiques": {}, + "2847-Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2848-Amortissements des autres mat\u00e9riels": {} + } + }, + "29-D\u00e9pr\u00e9ciations des immobilisations": { + "291-D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "2911-D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": {}, + "2912-D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": {}, + "2913-D\u00e9pr\u00e9ciations des logiciels et sites internet": {}, + "2914-D\u00e9pr\u00e9ciations des marques": {}, + "2915-D\u00e9pr\u00e9ciations du fonds commercial": {}, + "2916-D\u00e9pr\u00e9ciations du droit au bail": {}, + "2917-D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": {}, + "2918-D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": {}, + "2919-D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": {} + }, + "292-D\u00e9pr\u00e9ciations des terrains": { + "2921-D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": {}, + "2922-D\u00e9pr\u00e9ciations des terrains nus": {}, + "2923-D\u00e9pr\u00e9ciations des terrains b\u00e2tis": {}, + "2924-D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": {}, + "2925-D\u00e9pr\u00e9ciations des terrains de gisement": {}, + "2926-D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": {}, + "2927-D\u00e9pr\u00e9ciations des terrains mis en concession": {}, + "2928-D\u00e9pr\u00e9ciations des autres terrains": {}, + "2929-D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": {} + }, + "293-D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "2931-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2932-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2933-D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": {}, + "2934-D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": {}, + "2935-D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": {}, + "2937-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2938-D\u00e9pr\u00e9ciations des autres installations et agencements": {}, + "2939-D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": {} + }, + "294-D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "2941-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": {}, + "2942-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": {}, + "2943-D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2944-D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": {}, + "2945-D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": {}, + "2946-D\u00e9pr\u00e9ciations des actifs biologiques": {}, + "2947-D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2948-D\u00e9pr\u00e9ciations des autres mat\u00e9riels": {}, + "2949-D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": {} + }, + "295-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "2951-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "2952-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "296-D\u00e9pr\u00e9ciations des titres de participation": { + "2961-D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "2962-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "2963-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "2965-D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": {}, + "2966-D\u00e9pr\u00e9ciations des parts dans des GIE": {}, + "2968-D\u00e9pr\u00e9ciations des autres titres de participation": {} + }, + "297-D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "2971-D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": {}, + "2972-D\u00e9pr\u00e9ciations des pr\u00eats au personnel": {}, + "2973-D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2974-D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": {}, + "2975-D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2977-D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": {}, + "2978-D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": {} + } + }, + "root_type": "Asset" + }, + "3-Comptes de Stocks": { + "31-Marchandises": { + "311-Marchandises A": { + "3111-Marchandises A1": {}, + "3112-Marchandises A2": {} + }, + "312-Marchandises B": { + "3121-Marchandises B1": {}, + "3122-Marchandises B2": {} + }, + "313-Actifs biologiques": { + "3131-Animaux": {}, + "3132-V\u00e9g\u00e9taux": {} + }, + "318-Marchandises hors activit\u00e9s ordinaires (HAO)": {} + }, + "32-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "321-Mati\u00e8res A": {}, + "322-Mati\u00e8res B": {}, + "323-Fournitures (A, B)": {} + }, + "33-Autres approvisionnements": { + "331-Mati\u00e8res consommables": {}, + "332-Fournitures d\u2019atelier et d\u2019usine": {}, + "333-Fournitures de magasin": {}, + "334-Fournitures de bureau": {}, + "335-Emballages": { + "3351-Emballages perdus": {}, + "3352-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "3353-Emballages \u00e0 usage mixte": {}, + "3358-Autres emballages": {} + }, + "338-Autres mati\u00e8res": {} + }, + "34-Produits en cours": { + "341-Produits en cours": { + "3411-Produits en cours P1": {}, + "3412-Produits en cours P2": {} + }, + "342-Travaux en cours": { + "3421-Travaux en cours T1": {}, + "3422-Travaux en cours T2": {} + }, + "343-Produits interm\u00e9diaires en cours": { + "3431-Produits interm\u00e9diaires A": {}, + "3432-Produits interm\u00e9diaires B": {} + }, + "344-Produits r\u00e9siduels en cours": { + "3441-Produits r\u00e9siduels A": {}, + "3442-Produits r\u00e9siduels B": {} + }, + "345-Actifs biologiques en cours": { + "3451-Animaux": {}, + "3452-V\u00e9g\u00e9taux": {} + } + }, + "35-Services en cours": { + "351-\u00c9tudes en cours": { + "3511-\u00c9tudes en cours E1": {}, + "3512-\u00c9tudes en cours E2": {} + }, + "352-Prestations de services en cours": { + "3521-Prestations de services S1": {}, + "3522-Prestations de services S2": {} + } + }, + "36-Produits finis": { + "361-Produits finis A": {}, + "362-Produits finis B": {}, + "363-Actifs biologiques": { + "3631-Animaux": {}, + "3632-V\u00e9g\u00e9taux": {}, + "3638-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "37-Produits interm\u00e9diaires et r\u00e9siduels": { + "371-Produits interm\u00e9diaires": { + "3711-Produits interm\u00e9diaires A": {}, + "3712-Produits interm\u00e9diaires B": {} + }, + "372-Produits r\u00e9siduels": { + "3721-D\u00e9chets": {}, + "3722-Rebuts": {}, + "3723-Mati\u00e8res de R\u00e9cup\u00e9ration": {} + }, + "373-Actifs biologiques": { + "3731-Animaux": {}, + "3732-V\u00e9g\u00e9taux": {}, + "3738-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "38-Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "381-Marchandises en cours de route": {}, + "382-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": {}, + "383-Autres approvisionnements en cours de route": {}, + "386-Produits finis en cours de route": {}, + "387-Stock en consignation ou en d\u00e9p\u00f4t": { + "3871-Stock en consignation": {}, + "3872-Stock en d\u00e9p\u00f4t": {} + }, + "388-Stock provenant d\u2019immobilisations mises hors service ou au rebut": {} + }, + "39-D\u00e9pr\u00e9ciations des stocks et encours de production": { + "391-D\u00e9pr\u00e9ciations des stocks de marchandises": {}, + "392-D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "393-D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": {}, + "394-D\u00e9pr\u00e9ciations des productions en cours": {}, + "395-D\u00e9pr\u00e9ciations des services en cours": {}, + "396-D\u00e9pr\u00e9ciations des stocks de produits finis": {}, + "397-D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": {}, + "398-D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": {} + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "409-Fournisseurs d\u00e9biteurs": { + "4091-Fournisseurs Avances et acomptes vers\u00e9s": {}, + "4092-Fournisseurs Groupe avances et acomptes vers\u00e9s": {}, + "4093-Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": {}, + "4094-Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": {}, + "4098-Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": {} + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "411-Clients": { + "4111-Clients": { + "account_type": "Receivable" + }, + "4112-Clients groupe": { + "account_type": "Receivable" + }, + "4114-Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable" + }, + "4115-Clients, organismes internationaux": { + "account_type": "Receivable" + }, + "4116-Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable" + }, + "4117-Client, retenues de garantie": { + "account_type": "Receivable" + }, + "4118-Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "412-Clients, effets \u00e0 recevoir en portefeuille": { + "4121-Clients, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4122-Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4124-\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4125-Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "413-Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "4131-Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable" + }, + "4132-Clients, effets impay\u00e9s": { + "account_type": "Receivable" + }, + "4133-Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable" + }, + "4138-Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "414-Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "4141-Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4142-Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable" + }, + "4146-Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4147-Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "415-Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable" + }, + "416-Cr\u00e9ances clients litigieuses ou douteuses": { + "4161-Cr\u00e9ances litigieuses": { + "account_type": "Receivable" + }, + "4162-Cr\u00e9ances douteuses": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "418-Clients, produits \u00e0 recevoir": { + "4181-Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable" + }, + "4186-Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "421-Personnel, avances et acomptes": { + "4211-Personnel, avances": {}, + "4212-Personnel, acomptes": {}, + "4213-Frais avanc\u00e9s et fournitures au personnel": {} + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "4311-Prestations familiales": {}, + "4312-Accidents de travail": {}, + "4313-Caisse de retraite obligatoire": {}, + "4314-Caisse de retraite facultative": {}, + "4318-Autres cotisations sociales": {} + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "4331-Mutuelle": {}, + "4332-Assurances retraite": {}, + "4333-Assurances et organismes de sant\u00e9": {} + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4387-Produits \u00e0 recevoir": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "443-\u00c9tat, TVA factur\u00e9e": { + "4431-TVA factur\u00e9e sur ventes": {}, + "4432-TVA factur\u00e9e sur prestations de services": {}, + "4433-TVA factur\u00e9e sur travaux": {}, + "4434-TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": {}, + "4435-TVA sur factures \u00e0 \u00e9tablir": {} + }, + "445-\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "4451-TVA r\u00e9cup\u00e9rable sur immobilisations": {}, + "4452-TVA r\u00e9cup\u00e9rable sur achats": {}, + "4453-TVA r\u00e9cup\u00e9rable sur transport": {}, + "4454-TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": {}, + "4455-TVA r\u00e9cup\u00e9rable sur factures non parvenues": {}, + "4456-TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": {} + }, + "448-\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "4486-Charges \u00e0 payer": {}, + "4487-Produits \u00e0 recevoir": {} + }, + "449-\u00c9tat, cr\u00e9ances et dettes diverses": { + "4491-\u00c9tat, obligations cautionn\u00e9es": {}, + "4492-\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": {}, + "4493-\u00c9tat, fonds de dotation \u00e0 recevoir": {}, + "4494-\u00c9tat, subventions investissement \u00e0 recevoir": {}, + "4495-\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": {}, + "4496-\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": {}, + "4497-\u00c9tat, avances sur subventions": {}, + "4499-\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": {} + } + }, + "45-Organismes internationaux (ACTIF)": { + "451-Op\u00e9rations avec les organismes africains": {}, + "452-Op\u00e9rations avec les autres organismes internationaux": {}, + "458-Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "4581-Organismes internationaux, fonds de dotation \u00e0 recevoir": {}, + "4582-Organismes internationaux, subventions \u00e0 recevoir": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "4613-Apporteurs, capital appel\u00e9, non vers\u00e9": {}, + "4614-Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": {}, + "4618-Apporteurs, titres \u00e0 \u00e9changer": {} + }, + "467-Apporteurs, restant d\u00fb sur capital appel\u00e9": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "4721-Cr\u00e9ances sur cessions de titres de placement": {}, + "4726-Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": {} + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "4731-Mandants": {}, + "4732-Mandataires": {}, + "4733-Commettants": {}, + "4734-Commissionnaires": {}, + "4739-\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "4747-Compte de r\u00e9partition p\u00e9riodique des produits": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "4751-Compte actif": { + "account_type": "Temporary" + } + }, + "476-Charges constat\u00e9es d\u2019avance": {}, + "478-\u00c9carts de conversion actif": { + "4781-Diminution des cr\u00e9ances d\u2019exploitation": {}, + "4782-Diminution des cr\u00e9ances financi\u00e8res": {}, + "4783-Augmentation des dettes d\u2019exploitation": {}, + "4784-Augmentation des dettes financi\u00e8res": {}, + "4786-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4788-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "485-Cr\u00e9ances sur cessions d\u2019immobilisations": { + "4851-En compte, immobilisations incorporelles": {}, + "4852-En compte, immobilisations corporelles": {}, + "4853-Effets \u00e0 recevoir, immobilisations incorporelles": {}, + "4854-Effets \u00e0 recevoir, immobilisations corporelles": {}, + "4855-Effets escompt\u00e9s non \u00e9chus": {}, + "4857-Retenues de garantie": {}, + "4858-Factures \u00e0 \u00e9tablir": {} + }, + "488-Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": {} + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "491-D\u00e9pr\u00e9ciations des comptes clients": { + "4911-Cr\u00e9ances litigieuses": {}, + "4912-Cr\u00e9ances douteuses": {} + }, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {}, + "496-D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "4962-Associ\u00e9s, comptes courants": {}, + "4963-Associ\u00e9s, op\u00e9rations faites en commun": {}, + "4966-Groupe, comptes courants": {} + }, + "497-D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": {}, + "498-D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "4985-Cr\u00e9ances sur cessions d\u2019immobilisations": {}, + "4986-Cr\u00e9ances sur cessions de titres de placement": {}, + "4988-Autres cr\u00e9ances HAO": {} + }, + "499-Provisions pour risques \u00e0 court terme": { + "4991-Sur op\u00e9rations d\u2019exploitation": {}, + "4997-Sur op\u00e9rations financi\u00e8res": {}, + "4998-Sur op\u00e9rations HAO": {} + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "401-Fournisseurs, dettes en compte": { + "4011-Fournisseurs": { + "account_type": "Payable" + }, + "4012-Fournisseurs groupe": { + "account_type": "Payable" + }, + "4013-Fournisseurs sous-traitants": { + "account_type": "Payable" + }, + "4016-Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable" + }, + "4017-Fournisseur, retenues de garantie": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "402-Fournisseurs, effets \u00e0 payer": { + "4021-Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable" + }, + "4022-Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable" + }, + "4023-Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "404-Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "4041-Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4042-Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable" + }, + "4046-Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4047-Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "408-Fournisseurs, factures non parvenues": { + "4081-Fournisseurs": { + "account_type": "Stock Received But Not Billed" + }, + "4082-Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed" + }, + "4083-Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed" + }, + "4086-Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "419-Clients cr\u00e9diteurs": { + "4191-Clients, avances et acomptes re\u00e7us": {}, + "4192-Clients groupe, avances et acomptes re\u00e7us": {}, + "4194-Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": {}, + "4198-Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": {} + } + }, + "42-Personnel (PASSIF)": { + "422-Personnel, r\u00e9mun\u00e9rations dues": {}, + "423-Personnel, oppositions, saisies-arr\u00eats": { + "4231-Personnel, oppositions": {}, + "4232-Personnel, saisies-arr\u00eats": {}, + "4233-Personnel, avis \u00e0 tiers d\u00e9tenteur": {} + }, + "424-Personnel, \u0153uvres sociales internes": { + "4241-Assistance m\u00e9dicale": {}, + "4242-Allocations familiales": {}, + "4245-Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": {}, + "4248-Autres \u0153uvres sociales internes": {} + }, + "425-Repr\u00e9sentants du personnel": { + "4251-D\u00e9l\u00e9gu\u00e9s du personnel": {}, + "4252-Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": {}, + "4258-Autres repr\u00e9sentants du personnel": {} + }, + "426-Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "4261-Participation aux b\u00e9n\u00e9fices": {}, + "4264-Participation au capital": {} + }, + "427-Personnel d\u00e9p\u00f4ts": {}, + "428-Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "4281-Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": {}, + "4286-Autres charges \u00e0 payer": {}, + "4287-Produits \u00e0 recevoir": {} + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4381-Charges sociales sur gratifications \u00e0 payer": {}, + "4382-Charges sociales sur cong\u00e9s \u00e0 payer": {}, + "4386-Autres charges \u00e0 payer": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "441-\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": {}, + "442-\u00c9tat, autres imp\u00f4ts et taxes": { + "4421-Imp\u00f4ts et taxes d\u2019\u00c9tat": {}, + "4422-Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": {}, + "4423-Imp\u00f4ts et taxes recouvrables sur des obligataires": {}, + "4424-Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": {}, + "4426-Droits de douane": {}, + "4428-Autres imp\u00f4ts et taxes": {} + }, + "444-\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "4441-\u00c9tat, TVA due": {}, + "4449-\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": {} + }, + "446-\u00c9tat, autres taxes sur le chiffre d\u2019affaires": {}, + "447-\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "4471-Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": {}, + "4472-Imp\u00f4ts sur salaires": {}, + "4473-Contribution nationale": {}, + "4474-Contribution nationale de solidarit\u00e9": {}, + "4478-Autres imp\u00f4ts et contributions": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "4611-Apporteurs, apports en nature": {}, + "4612-Apporteurs, apports en num\u00e9raire": {}, + "4615-Apporteurs, versements re\u00e7us sur augmentation de capital": {}, + "4616-Apporteurs, versements anticip\u00e9s": {}, + "4617-Apporteurs d\u00e9faillants": {}, + "4619-Apporteurs, capital \u00e0 rembourser": {} + }, + "462-Associ\u00e9s, comptes courants": { + "4621-Principal": {}, + "4626-Int\u00e9r\u00eats courus": {} + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "4631-Op\u00e9rations courantes": {}, + "4636-Int\u00e9r\u00eats courus": {} + }, + "465-Associ\u00e9s, dividendes \u00e0 payer": {}, + "466-Groupe, comptes courants": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "4711-D\u00e9biteurs divers": {}, + "4712-Cr\u00e9diteurs divers": {}, + "4713-Obligataires": {}, + "4715-R\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "4716-Compte d\u2019affacturage": {}, + "4717-D\u00e9biteurs divers retenues de garantie": {}, + "4718-Apport, compte de fusion et op\u00e9rations assimil\u00e9es": {}, + "4719-Bons de souscription d\u2019actions et d\u2019obligations": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "4746-Compte de r\u00e9partition p\u00e9riodique des charges": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "4752-Compte passif": {} + }, + "477-Produits constat\u00e9s d\u2019avance": {}, + "479-\u00c9carts de conversion passif": { + "4791-Augmentation des cr\u00e9ances d\u2019exploitation": {}, + "4792-Augmentation des cr\u00e9ances financi\u00e8res": {}, + "4793-Diminution des dettes d\u2019exploitation": {}, + "4794-Diminution des dettes financi\u00e8res": {}, + "4797-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4798-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "481-Fournisseurs d\u2019investissements": { + "4811-Immobilisations incorporelles": {}, + "4812-Immobilisations corporelles": {}, + "4813-Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": {}, + "4816-R\u00e9serve de propri\u00e9t\u00e9": {}, + "4817-Retenues de garantie": {}, + "4818-Factures non parvenues": {} + }, + "482-Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "4821-Immobilisations incorporelles": {}, + "4822-Immobilisations corporelles": {} + }, + "484-Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "4887-Produits": {} + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (PASSIF)": { + "490-D\u00e9pr\u00e9ciations des comptes fournisseurs": {}, + "492-D\u00e9pr\u00e9ciations des comptes personnel": {}, + "493-D\u00e9pr\u00e9ciations des comptes organismes sociaux": {}, + "494-D\u00e9pr\u00e9ciations des comptes \u00c9tat et collectivit\u00e9s publiques": {}, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {} + }, + "root_type": "Liability" + }, + "5-Comptes de tr\u00e9sorerie": { + "50-Titres de placement": { + "501-Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "5011-Titres du Tr\u00e9sor \u00e0 court terme": {}, + "5012-Titres d\u2019organismes financiers": {}, + "5013-Bons de caisse \u00e0 court terme": {}, + "5016-Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": {} + }, + "502-Actions": { + "5021-Actions ou parts propres": {}, + "5022-Actions cot\u00e9es": {}, + "5023-Actions non cot\u00e9es": {}, + "5024-Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": {}, + "5025-Autres actions": {}, + "5026-Frais d\u2019acquisition des actions": {} + }, + "503-Obligations": { + "5031-Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": {}, + "5032-Obligations cot\u00e9es": {}, + "5033-Obligations non cot\u00e9es": {}, + "5035-Autres obligations": {}, + "5036-Frais d\u2019acquisition des obligations": {} + }, + "504-Bons de souscription": { + "5042-Bons de souscription d\u2019actions": {}, + "5043-Bons de souscription d\u2019obligations": {} + }, + "505-Titres n\u00e9gociables hors r\u00e9gion": {}, + "506-Int\u00e9r\u00eats courus": { + "5061-Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": {}, + "5062-Actions": {}, + "5063-Obligations": {} + }, + "508-Autres titres de placement et cr\u00e9ances assimil\u00e9es": {} + }, + "51-Valeurs \u00e0 encaisser": { + "511-Effets \u00e0 encaisser": {}, + "512-Effets \u00e0 l\u2019encaissement": {}, + "513-Ch\u00e8ques \u00e0 encaisser": {}, + "514-Ch\u00e8ques \u00e0 l\u2019encaissement": {}, + "515-Cartes de cr\u00e9dit \u00e0 encaisser": {}, + "518-Autres valeurs \u00e0 l\u2019encaissement": { + "5181-Warrants": {}, + "5182-Billets de fonds": {}, + "5185-Ch\u00e8ques de voyage": {}, + "5186-Coupons \u00e9chus": {}, + "5187-Int\u00e9r\u00eats \u00e9chus des obligations": {} + } + }, + "52-Banques": { + "521-Banques locales": { + "5211-Banques en monnaie nationale": { + "account_type": "Bank" + }, + "5215-Banques en devises": { + "account_type": "Bank" + }, + "account_type": "Bank" + }, + "522-Banques autres \u00c9tats r\u00e9gion": {}, + "523-Banques autres \u00c9tats zone mon\u00e9taire": {}, + "524-Banques hors zone mon\u00e9taire": {}, + "525-Banques d\u00e9p\u00f4t \u00e0 terme": {}, + "526-Banques, int\u00e9r\u00eats courus": { + "5261-Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": {}, + "5267-Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": {} + } + }, + "53-\u00c9tablissements financiers et assimil\u00e9s": { + "531-Ch\u00e8ques postaux": {}, + "532-Tr\u00e9sor": {}, + "533-Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": {}, + "536-\u00c9tablissements financiers, int\u00e9r\u00eats courus": {}, + "538-Autres organismes financiers": {} + }, + "54-Instruments de tr\u00e9sorerie": { + "541-Options de taux d\u2019int\u00e9r\u00eat": {}, + "542-Options de taux de change": {}, + "543-Options de taux boursiers": {}, + "544-Instruments de march\u00e9s \u00e0 terme": {}, + "545-Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": {} + }, + "55-Instruments de monnaie \u00e9lectronique": { + "551-Monnaie \u00e9lectronique carte carburant": {}, + "552-Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": {}, + "553-Monnaie \u00e9lectronique carte p\u00e9age": {}, + "554-Porte-monnaie \u00e9lectronique": {}, + "558-Autres instruments de monnaies \u00e9lectroniques": {} + }, + "56-Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "561-Cr\u00e9dits de tr\u00e9sorerie": {}, + "564-Escompte de cr\u00e9dits de campagne": {}, + "565-Escompte de cr\u00e9dits ordinaires": {}, + "566-Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": {} + }, + "57-Caisse": { + "571-Caisse si\u00e8ge social": { + "5711-Caisse en monnaie nationale": {}, + "5712-Caisse en devises": {} + }, + "572-Caisse succursale A": { + "5721-En monnaie nationale": {}, + "5722-En devises": {} + }, + "573-Caisse succursale B": { + "5731-En monnaie nationale": {}, + "5732-En devises": {} + } + }, + "58-R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "581-R\u00e9gies d\u2019avance": {}, + "582-Accr\u00e9ditifs": {}, + "585-Virements de fonds": {}, + "588-Autres virements internes": {} + }, + "59-D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "590-D\u00e9pr\u00e9ciations des titres de placement": {}, + "591-D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": {}, + "592-D\u00e9pr\u00e9ciations des comptes banques": {}, + "593-D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": {}, + "594-D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": {}, + "599-Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": {} + }, + "root_type": "Asset" + }, + "6-Comptes de charges des activit\u00e9s ordinaires": { + "60-Achats et variations de stocks": { + "601-Achats de marchandises": { + "6011-Dans la R\u00e9gion": {}, + "6012-Hors R\u00e9gion": {}, + "6013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6015-Frais sur achats": {}, + "6019-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "602-Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "6021-Dans la R\u00e9gion": {}, + "6022-Hors R\u00e9gion": {}, + "6023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6025-Frais sur achats": {}, + "6029-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "603-Variations des stocks de biens achet\u00e9s": { + "6031-Variations des stocks de marchandises": {}, + "6032-Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "6033-Variations des stocks d\u2019autres approvisionnements": {} + }, + "604-Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "6041-Mati\u00e8res consommables": {}, + "6042-Mati\u00e8res combustibles": {}, + "6043-Produits d\u2019entretien": {}, + "6044-Fournitures d\u2019atelier et d\u2019usine": {}, + "6045-Frais sur achat": {}, + "6046-Fournitures de magasin": {}, + "6047-Fournitures de bureau": {}, + "6049-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "605-Autres achats": { + "6051-Fournitures non stockables Eau": {}, + "6052-Fournitures non stockables \u00c9lectricit\u00e9": {}, + "6053-Fournitures non stockables Autres \u00e9nergies": {}, + "6054-Fournitures d\u2019entretien non stockables": {}, + "6055-Fournitures de bureau non stockables": {}, + "6056-Achats de petit mat\u00e9riel et outillage": {}, + "6057-Achats d\u2019\u00e9tudes et prestations de services": {}, + "6058-Achats de travaux, mat\u00e9riels et \u00e9quipements": {}, + "6059-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "608-Achats d\u2019emballages": { + "6081-Emballages perdus": {}, + "6082-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "6083-Emballages \u00e0 usage mixte": {}, + "6085-Frais sur achats": {}, + "6089-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + } + }, + "61-Transports": { + "612-Transports sur ventes": {}, + "613-Transports pour le compte de tiers": {}, + "614-Transports du personnel": {}, + "616-Transports de plis": {}, + "618-Autres frais de transport": { + "6181-Voyages et d\u00e9placements": {}, + "6182-Transports entre \u00e9tablissements ou chantiers": {}, + "6183-Transports administratifs": {} + } + }, + "62-Services ext\u00e9rieurs": { + "621-Sous-traitance g\u00e9n\u00e9rale": {}, + "622-Locations, charges locatives": { + "6221-Locations de terrains": {}, + "6222-Locations de b\u00e2timents": {}, + "6223-Locations de mat\u00e9riels et outillages": {}, + "6224-Malis sur emballages": {}, + "6225-Locations d\u2019emballages": {}, + "6226-Fermages et loyers du foncier": {}, + "6228-Locations et charges locatives diverses": {} + }, + "623-Redevances de location acquisition": { + "6232-Cr\u00e9dit-bail immobilier": {}, + "6233-Cr\u00e9dit-bail mobilier": {}, + "6234-Location-vente": {}, + "6238-Autres contrats de location acquisition": {} + }, + "624-Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "6241-Entretien et r\u00e9parations des biens immobiliers": {}, + "6242-Entretien et r\u00e9parations des biens mobiliers": {}, + "6243-Maintenance": {}, + "6244-Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "6248-Autres entretiens et r\u00e9parations": {} + }, + "625-Primes d\u2019assurance": { + "6251-Assurances multirisques": {}, + "6252-Assurances mat\u00e9riel de transport": {}, + "6253-Assurances risques d\u2019exploitation": {}, + "6254-Assurances responsabilit\u00e9 du producteur": {}, + "6255-Assurances insolvabilit\u00e9 clients": {}, + "6257-Assurances transport sur ventes": {}, + "6258-Autres primes d\u2019assurances": {} + }, + "626-\u00c9tudes, recherches et documentation": { + "6261-\u00c9tudes et recherches": {}, + "6265-Documentation g\u00e9n\u00e9rale": {}, + "6266-Documentation technique": {} + }, + "627-Publicit\u00e9, publications, relations publiques": { + "6271-Annonces, insertions": {}, + "6272-Catalogues, imprim\u00e9s publicitaires": {}, + "6273-\u00c9chantillons": {}, + "6274-Foires et expositions": {}, + "6275-Publications": {}, + "6276-Cadeaux \u00e0 la client\u00e8le": {}, + "6277-Frais de colloques, s\u00e9minaires, conf\u00e9rences": {}, + "6278-Autres charges de publicit\u00e9 et relations publiques": {} + }, + "628-Frais de t\u00e9l\u00e9communications": { + "6281-Frais de t\u00e9l\u00e9phone": {}, + "6282-Frais de t\u00e9lex": {}, + "6283-Frais de t\u00e9l\u00e9copie": {}, + "6288-Autres frais de t\u00e9l\u00e9communications": {} + } + }, + "63-Autres services ext\u00e9rieurs": { + "631-Frais bancaires": { + "6311-Frais sur titres (vente, garde)": {}, + "6312-Frais sur effets": {}, + "6313-Location de coffres": {}, + "6314-Commissions d\u2019affacturage": {}, + "6315-Commissions sur cartes de cr\u00e9dit": {}, + "6316-Frais d\u2019\u00e9mission d\u2019emprunts": {}, + "6317-Frais sur instruments monnaie \u00e9lectronique": {}, + "6318-Autres frais bancaires": {} + }, + "632-R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "6322-Commissions et courtages sur ventes": {}, + "6324-Honoraires des professions r\u00e9glement\u00e9es": {}, + "6325-Frais d\u2019actes et de contentieux": {}, + "6326-R\u00e9mun\u00e9rations d\u2019affacturage": {}, + "6327-R\u00e9mun\u00e9rations des autres prestataires de services": {}, + "6328-Divers frais": {} + }, + "633-Frais de formation du personnel": {}, + "634-Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "6342-Redevances pour brevets, licences": {}, + "6343-Redevances pour logiciels": {}, + "6344-Redevances pour marques": {}, + "6345-Redevances pour sites internet": {}, + "6346-Redevances pour concessions, droits et valeurs similaires": {} + }, + "635-Cotisations": { + "6351-Cotisations": {}, + "6358-Concours divers": {} + }, + "637-R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "6371-Personnel int\u00e9rimaire": {}, + "6372-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "638-Autres charges externes": { + "6381-Frais de recrutement du personnel": {}, + "6382-Frais de d\u00e9m\u00e9nagement": {}, + "6383-R\u00e9ceptions": {}, + "6384-Missions": {}, + "6385-Charges de copropri\u00e9t\u00e9": {} + } + }, + "64-Imp\u00f4ts et taxes": { + "641-Imp\u00f4ts et taxes directs": { + "6411-Imp\u00f4ts fonciers et taxes annexes": {}, + "6412-Patentes, licences et taxes annexes": {}, + "6413-Taxes sur appointements et salaires": {}, + "6414-Taxes d\u2019apprentissage": {}, + "6415-Formation professionnelle continue": {}, + "6418-Autres imp\u00f4ts et taxes directs": {} + }, + "645-Imp\u00f4ts et taxes indirects": {}, + "646-Droits d\u2019enregistrement": { + "6461-Droits de mutation": {}, + "6462-Droits de timbre": {}, + "6463-Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": {}, + "6464-Vignettes": {}, + "6468-Autres droits": {} + }, + "647-P\u00e9nalit\u00e9s, amendes fiscales": { + "6471-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": {}, + "6472-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": {}, + "6473-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": {}, + "6474-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": {}, + "6478-Autres p\u00e9nalit\u00e9s et amendes fiscales": {} + }, + "648-Autres imp\u00f4ts et taxes": {} + }, + "65-Autres charges": { + "651-Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "6511-Clients": {}, + "6515-Autres d\u00e9biteurs": {} + }, + "652-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "6521-Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": {}, + "6525-Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "654-Valeurs comptables des cessions courantes d\u2019immobilisations": { + "6541-Immobilisations incorporelles": {}, + "6542-Immobilisations corporelles": {} + }, + "656-Perte de change sur cr\u00e9ances et dettes commerciale": {}, + "657-P\u00e9nalit\u00e9s et amendes p\u00e9nales": {}, + "658-Charges diverses": { + "6581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "6582-Dons": {}, + "6583-M\u00e9c\u00e9nat": {}, + "6588-Autres charges diverses": {} + }, + "659-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "6591-Sur risques \u00e0 court terme": {}, + "6593-Sur stocks": {}, + "6594-Sur cr\u00e9ances": {}, + "6598-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": {} + } + }, + "66-Charges de personnel": { + "661-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "6611-Appointements salaires et commissions": {}, + "6612-Primes et gratifications": {}, + "6613-Cong\u00e9s pay\u00e9s": {}, + "6614-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6615-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6616-Suppl\u00e9ment familial": {}, + "6617-Avantages en nature": {}, + "6618-Autres r\u00e9mun\u00e9rations directes": {} + }, + "662-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "6621-Appointements salaires et commissions": {}, + "6622-Primes et gratifications": {}, + "6623-Cong\u00e9s pay\u00e9s": {}, + "6624-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6625-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6626-Suppl\u00e9ment familial": {}, + "6627-Avantages en nature": {}, + "6628-Autres r\u00e9mun\u00e9rations directes": {} + }, + "663-Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "6631-Indemnit\u00e9s de logement": {}, + "6632-Indemnit\u00e9s de repr\u00e9sentation": {}, + "6633-Indemnit\u00e9s d\u2019expatriation": {}, + "6634-Indemnit\u00e9s de transport": {}, + "6638-Autres indemnit\u00e9s et avantages divers": {} + }, + "664-Charges sociales": { + "6641-Charges sociales sur r\u00e9mun\u00e9ration du personnel national": {}, + "6642-Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": {} + }, + "666-R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "6661-R\u00e9mun\u00e9ration du travail de l\u2019exploitant": {}, + "6662-Charges sociales": {} + }, + "667-R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "6671-Personnel int\u00e9rimaire": {}, + "6672-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "668-Autres charges sociales": { + "6681-Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": {}, + "6682-Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": {}, + "6683-Versements et contributions aux autres \u0153uvres sociales": {}, + "6684-M\u00e9decine du travail et pharmacie": {}, + "6685-Assurances et organismes de sant\u00e9": {}, + "6686-Assurances retraite et fonds de pension": {}, + "6687-Majorations et p\u00e9nalit\u00e9s sociales": {}, + "6688-Charges sociales diverses": {} + } + }, + "67-Frais financiers et charges assimil\u00e9es": { + "671-Int\u00e9r\u00eats des emprunts": { + "6711-Emprunts obligataires": {}, + "6712-Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "6713-Dettes li\u00e9es \u00e0 des participations": {}, + "6714-Primes de remboursement des obligations": {} + }, + "672-Int\u00e9r\u00eats dans loyers de location acquisition": { + "6722-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": {}, + "6723-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": {}, + "6724-Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": {}, + "6728-Int\u00e9r\u00eats dans loyers des autres locations acquisition": {} + }, + "673-Escomptes accord\u00e9s": {}, + "674-Autres int\u00e9r\u00eats": { + "6741-Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": {}, + "6742-Comptes courants bloqu\u00e9s": {}, + "6743-Int\u00e9r\u00eats sur obligations cautionn\u00e9es": {}, + "6744-Int\u00e9r\u00eats sur dettes commerciales": {}, + "6745-Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": {}, + "6748-Int\u00e9r\u00eats sur dettes diverses": {} + }, + "675-Escomptes des effets de commerce": {}, + "676-Pertes de change financi\u00e8res": {}, + "677-Pertes sur titres de placement": { + "6771-Pertes sur cessions de titres de placement": {}, + "6772-Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {} + }, + "678-Pertes et charges sur risques financiers": { + "6781-Sur rentes viag\u00e8res": {}, + "6782-Sur op\u00e9rations financi\u00e8res": {}, + "6784-Sur instruments de tr\u00e9sorerie": {} + }, + "679-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "6791-Sur risques financiers": {}, + "6795-Sur titres de placement": {}, + "6798-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "68-Dotations aux amortissements": { + "681-Dotations aux amortissements d\u2019exploitation": { + "6812-Dotations aux amortissements des immobilisations incorporelles": {}, + "6813-Dotations aux amortissements des immobilisations corporelles": {} + } + }, + "69-Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "691-Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "6911-Dotations aux provisions pour risques et charges": {}, + "6913-Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": {}, + "6914-Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": {} + }, + "697-Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "6971-Dotations aux provisions pour risques et charges": {}, + "6972-Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": {} + } + }, + "root_type": "Expense" + }, + "7-Comptes de produits des activit\u00e9s ordinaires": { + "70-Ventes": { + "701-Ventes de marchandises": { + "7011-Dans la R\u00e9gion": {}, + "7012-Hors R\u00e9gion": {}, + "7013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7015-Sur internet": {}, + "7019-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "702-Ventes de produits finis": { + "7021-Dans la R\u00e9gion": {}, + "7022-Hors R\u00e9gion": {}, + "7023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7025-Sur internet": {}, + "7029-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "703-Ventes de produits interm\u00e9diaires": { + "7031-Dans la R\u00e9gion": {}, + "7032-Hors R\u00e9gion": {}, + "7033-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7034-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7035-Sur internet": {}, + "7039-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "704-Ventes de produits r\u00e9siduels": { + "7041-Dans la R\u00e9gion": {}, + "7042-Hors R\u00e9gion": {}, + "7043-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7044-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7045-Sur internet": {}, + "7049-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "705-Travaux factur\u00e9s": { + "7051-Dans la R\u00e9gion": {}, + "7052-Hors R\u00e9gion": {}, + "7053-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7054-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7055-Sur internet": {}, + "7059-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "706-Services vendus": { + "7061-Dans la R\u00e9gion": {}, + "7062-Hors R\u00e9gion": {}, + "7063-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7064-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7065-Sur internet": {}, + "7069-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "707-Produits accessoires": { + "7071-Ports, emballages perdus et autres frais factur\u00e9s": {}, + "7072-Commissions et courtages": {}, + "7073-Locations": {}, + "7074-Bonis sur reprises et cessions d\u2019emballages": {}, + "7075-Mise \u00e0 disposition de personnel": {}, + "7076-Redevances pour brevets, logiciels, marques et droits similaires": {}, + "7077-Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": {}, + "7078-Autres produits accessoires": {} + } + }, + "71-Subventions d\u2019exploitation": { + "711-Sur produits \u00e0 l\u2019exportation": {}, + "712-Sur produits \u00e0 l\u2019importation": {}, + "713-Sur produits de p\u00e9r\u00e9quation": {}, + "714-Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": {}, + "718-Autres subventions d\u2019exploitation": { + "7181-Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": {}, + "7182-Vers\u00e9es par les organismes internationaux": {}, + "7183-Vers\u00e9es par des tiers": {} + } + }, + "72-Production immobilis\u00e9e": { + "721-Immobilisations incorporelles": {}, + "722-Immobilisations corporelles": { + "7221-Immobilisations corporelles (hors actifs biologiques)": {}, + "7222-Immobilisations corporelles (actifs biologiques)": {} + }, + "724-Production auto-consomm\u00e9e": {}, + "726-Immobilisations financi\u00e8res": {} + }, + "73-Variations des stocks de biens et de services produits": { + "734-Variations des stocks de produits en cours": { + "7341-Produits en cours": {}, + "7342-Travaux en cours": {} + }, + "735-Variations des en-cours de services": { + "7351-\u00c9tudes en cours": {}, + "7352-Prestations de services en cours": {} + }, + "736-Variations des stocks de produits finis": {}, + "737-Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "7371-Produits interm\u00e9diaires": {}, + "7372-Produits r\u00e9siduels": {} + } + }, + "75-Autres produits": { + "751-Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": {}, + "752-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "7521-Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": {}, + "7525-B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "754-Produits des cessions courantes d\u2019immobilisations": { + "7541-Immobilisations incorporelles": {}, + "7542-Immobilisations corporelles": {} + }, + "756-Gains de change sur cr\u00e9ances et dettes commerciales": {}, + "758-Produits divers": { + "7581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "7582-Indemnit\u00e9s d\u2019assurances re\u00e7ues": {}, + "7588-Autres produits divers": {} + }, + "759-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "7591-Sur risques \u00e0 court terme": {}, + "7593-Sur stocks": {}, + "7594-Sur cr\u00e9ances": {}, + "7598-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": {} + } + }, + "77-Revenus financiers et produits assimil\u00e9s": { + "771-Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "7712-Int\u00e9r\u00eats de pr\u00eats": {}, + "7713-Int\u00e9r\u00eats sur cr\u00e9ances diverses": {} + }, + "772-Revenus de participations et autres titres immobilis\u00e9s": { + "7721-Revenus des titres de participation": {}, + "7722-Revenus autres titres immobilis\u00e9s": {} + }, + "773-Escomptes obtenus": {}, + "774-Revenus de placement": { + "7745-Revenus des obligations": {}, + "7746-Revenus des titres de placement": {} + }, + "775-Int\u00e9r\u00eats dans loyers de location acquisition": {}, + "776-Gains de change financiers": {}, + "777-Gains sur cessions de titres de placement": {}, + "778-Gains sur risques financiers": { + "7781-Sur rentes viag\u00e8res": {}, + "7782-Sur op\u00e9rations financi\u00e8res": {}, + "7784-Sur instruments de tr\u00e9sorerie": {} + }, + "779-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "7791-Sur risques financiers": {}, + "7795-Sur titres de placement": {}, + "7798-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "78-Transferts de charges": { + "781-Transferts de charges d\u2019exploitation": {}, + "787-Transferts de charges financi\u00e8res": {} + }, + "79-Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "791-Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "7911-Pour risques et charges": {}, + "7913-Des immobilisations incorporelles": {}, + "7914-Des immobilisations corporelles": {} + }, + "797-Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "7971-Pour risques et charges": {}, + "7972-Des immobilisations financi\u00e8res": {} + }, + "798-Reprises d\u2019amortissements": {}, + "799-Reprises de subventions d\u2019investissement": {} + }, + "root_type": "Income" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "81-Valeurs comptables des cessions d\u2019immobilisations": { + "811-Immobilisations incorporelles": {}, + "812-Immobilisations corporelles": {}, + "816-Immobilisations financi\u00e8res": {} + }, + "83-Charges hors activit\u00e9s ordinaires": { + "831-Charges HAO constat\u00e9es": {}, + "833-Charges li\u00e9es aux op\u00e9rations de restructuration": {}, + "834-Pertes sur cr\u00e9ances HAO": {}, + "835-Dons et lib\u00e9ralit\u00e9s accord\u00e9s": {}, + "836-Abandons de cr\u00e9ances consentis": {}, + "837-Charges li\u00e9es aux op\u00e9rations de liquidation": {}, + "839-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "85-Dotations hors activit\u00e9s ordinaires": { + "851-Dotations aux provisions r\u00e9glement\u00e9es": {}, + "852-Dotations aux amortissements HAO": {}, + "853-Dotations aux d\u00e9pr\u00e9ciations HAO": {}, + "854-Dotations aux provisions pour risques et charges HAO": {}, + "858-Autres dotations HAO": {} + }, + "87-Participation des travailleurs": { + "871-Participation l\u00e9gale aux b\u00e9n\u00e9fices": {}, + "874-Participation contractuelle aux b\u00e9n\u00e9fices": {}, + "878-Autres participations": {} + }, + "89-Imp\u00f4ts sur le r\u00e9sultat": { + "891-Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "8911-Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": {}, + "8912-Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": {}, + "8913-Activit\u00e9s exerc\u00e9es hors R\u00e9gion": {} + }, + "892-Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": {}, + "895-Imp\u00f4t minimum forfaitaire IMF": {}, + "899-D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "8991-D\u00e9gr\u00e8vements": {}, + "8994-Annulations pour pertes r\u00e9troactives": {} + } + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "82-Produits des cessions d\u2019immobilisations": { + "821-Immobilisations incorporelles": {}, + "822-Immobilisations corporelles": {}, + "826-Immobilisations financi\u00e8res": {} + }, + "84-Produits hors activit\u00e9s ordinaires": { + "841-Produits HAO constat\u00e9s": {}, + "843-Produits li\u00e9s aux op\u00e9rations de restructuration": {}, + "844-Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": {}, + "845-Dons et lib\u00e9ralit\u00e9s obtenus": {}, + "846-Abandons de cr\u00e9ances obtenus": {}, + "847-Produits li\u00e9s aux op\u00e9rations de liquidation": {}, + "848-Transferts de charges HAO": {}, + "849-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "86-Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "861-Reprises de provisions r\u00e9glement\u00e9es": {}, + "862-Reprises d\u2019amortissements HAO": {}, + "863-Reprises de d\u00e9pr\u00e9ciations HAO": {}, + "864-Reprises de provisions pour risques et charges HAO": {}, + "868-Autres reprises HAO": {} + }, + "88-Subventions d\u2019\u00e9quilibre": { + "881-\u00c9tat": {}, + "884-Collectivit\u00e9s publiques": {}, + "886-Groupe": {}, + "888-Autres": {} + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/cd_plan_comptable_avec_code.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/cd_plan_comptable_avec_code.json new file mode 100644 index 00000000000..a8d2ad848db --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/cd_plan_comptable_avec_code.json @@ -0,0 +1,4208 @@ +{ + "country_code": "cd", + "name": "Syscohada - Plan Comptable avec code", + "tree": { + "Comptes de ressources durables": { + "Capital": { + "Capital social": { + "Capital souscrit, non appel\u00e9": { + "account_number": "1011" + }, + "Capital souscrit, appel\u00e9, non vers\u00e9": { + "account_number": "1012" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, non amorti": { + "account_number": "1013" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, amorti": { + "account_number": "1014" + }, + "Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": { + "account_number": "1018" + }, + "account_number": "101" + }, + "Capital par dotation": { + "Dotation initiale": { + "account_number": "1021" + }, + "Dotations compl\u00e9mentaires": { + "account_number": "1022" + }, + "Autres dotations": { + "account_number": "1028" + }, + "account_number": "102" + }, + "Capital personnel": { + "account_number": "103" + }, + "Compte de l\u2019exploitant": { + "Apports temporaires": { + "account_number": "1041" + }, + "Op\u00e9rations courantes": { + "account_number": "1042" + }, + "R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": { + "account_number": "1043" + }, + "Pr\u00e9l\u00e8vements d\u2019autoconsommation": { + "account_number": "1047" + }, + "Autres pr\u00e9l\u00e8vements": { + "account_number": "1048" + }, + "account_number": "104" + }, + "Primes li\u00e9es au capital social": { + "Primes d\u2019\u00e9mission": { + "account_number": "1051" + }, + "Primes d\u2019apport": { + "account_number": "1052" + }, + "Primes de fusion": { + "account_number": "1053" + }, + "Primes de conversion": { + "account_number": "1054" + }, + "Autres primes": { + "account_number": "1058" + }, + "account_number": "105" + }, + "\u00c9carts de r\u00e9\u00e9valuation": { + "\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": { + "account_number": "1061" + }, + "\u00c9carts de r\u00e9\u00e9valuation libre": { + "account_number": "1062" + }, + "account_number": "106" + }, + "Apporteurs, capital souscrit, non appel\u00e9": { + "account_number": "109" + }, + "account_number": "10" + }, + "R\u00e9serves": { + "R\u00e9serve l\u00e9gale": { + "account_number": "111" + }, + "R\u00e9serves statutaires ou contractuelles": { + "account_number": "112" + }, + "R\u00e9serves r\u00e9glement\u00e9es": { + "R\u00e9serves de plus-values nettes \u00e0 long terme": { + "account_number": "1131" + }, + "R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "1132" + }, + "R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": { + "account_number": "1133" + }, + "R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": { + "account_number": "1134" + }, + "Autres r\u00e9serves r\u00e9glement\u00e9es": { + "account_number": "1135" + }, + "account_number": "113" + }, + "Autres r\u00e9serves": { + "R\u00e9serves facultatives": { + "account_number": "1181" + }, + "R\u00e9serves diverses": { + "account_number": "1188" + }, + "account_number": "118" + }, + "account_number": "11" + }, + "Report \u00e0 nouveau": { + "Report \u00e0 nouveau cr\u00e9diteur": { + "account_number": "121" + }, + "Report \u00e0 nouveau d\u00e9biteur": { + "Perte nette \u00e0 reporter": { + "account_number": "1291" + }, + "Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": { + "account_number": "1292" + }, + "account_number": "129" + }, + "account_number": "12" + }, + "R\u00e9sultat net de l\u2019exercice": { + "R\u00e9sultat en instance d\u2019affectation": { + "R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": { + "account_number": "1301" + }, + "R\u00e9sultat en instance d\u2019affectation : perte": { + "account_number": "1309" + }, + "account_number": "130" + }, + "R\u00e9sultat net : b\u00e9n\u00e9fice": { + "account_number": "131" + }, + "Marge commerciale (MC)": { + "account_number": "132" + }, + "Valeur ajout\u00e9e (VA)": { + "account_number": "133" + }, + "Exc\u00e9dent brut d\u2019exploitation (EBE)": { + "account_number": "134" + }, + "R\u00e9sultat d\u2019exploitation (RE)": { + "account_number": "135" + }, + "R\u00e9sultat financier (RF)": { + "account_number": "136" + }, + "R\u00e9sultat des activit\u00e9s ordinaires (RAO)": { + "account_number": "137" + }, + "R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "R\u00e9sultat de fusion": { + "account_number": "1381" + }, + "R\u00e9sultat d\u2019apport partiel d\u2019actif": { + "account_number": "1382" + }, + "R\u00e9sultat de scission": { + "account_number": "1383" + }, + "R\u00e9sultat de liquidation": { + "account_number": "1384" + }, + "account_number": "138" + }, + "R\u00e9sultat net : perte": { + "account_number": "139" + }, + "account_number": "13" + }, + "Subventions d\u2019investissement": { + "Subventions d\u2019\u00e9quipement": { + "\u00c9tat": { + "account_number": "1411" + }, + "R\u00e9gions": { + "account_number": "1412" + }, + "D\u00e9partements": { + "account_number": "1413" + }, + "Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": { + "account_number": "1414" + }, + "Entit\u00e9s publiques ou mixtes": { + "account_number": "1415" + }, + "Entit\u00e9s et organismes priv\u00e9s": { + "account_number": "1416" + }, + "Organismes internationaux": { + "account_number": "1417" + }, + "Autres": { + "account_number": "1418" + }, + "account_number": "141" + }, + "Autres subventions d\u2019investissement": { + "account_number": "148" + }, + "account_number": "14" + }, + "Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "Amortissements d\u00e9rogatoires": { + "account_number": "151" + }, + "Plus-values de cession \u00e0 r\u00e9investir": { + "account_number": "152" + }, + "Fonds r\u00e9glement\u00e9s": { + "Fonds National": { + "account_number": "1531" + }, + "Pr\u00e9l\u00e8vement pour le Budget": { + "account_number": "1532" + }, + "account_number": "153" + }, + "Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": { + "account_number": "154" + }, + "Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "Reconstitution des gisements miniers et p\u00e9troliers": { + "account_number": "1551" + }, + "account_number": "155" + }, + "Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "Hausse de prix": { + "account_number": "1561" + }, + "Fluctuation des cours": { + "account_number": "1562" + }, + "account_number": "156" + }, + "Provisions pour investissement": { + "account_number": "157" + }, + "Autres provisions et fonds r\u00e9glement\u00e9s": { + "account_number": "158" + }, + "account_number": "15" + }, + "Emprunts et dettes assimil\u00e9es": { + "Emprunts obligataires": { + "Emprunts obligataires ordinaires": { + "account_number": "1611" + }, + "Emprunts obligataires convertibles en actions": { + "account_number": "1612" + }, + "Emprunts obligataires remboursables en actions": { + "account_number": "1613" + }, + "Autres emprunts obligataires": { + "account_number": "1618" + }, + "account_number": "161" + }, + "Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "162" + }, + "Avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "163" + }, + "Avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "164" + }, + "D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "D\u00e9p\u00f4ts": { + "account_number": "1651" + }, + "Cautionnements": { + "account_number": "1652" + }, + "account_number": "165" + }, + "Int\u00e9r\u00eats courus": { + "Sur emprunts obligataires": { + "account_number": "1661" + }, + "Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "1662" + }, + "Sur avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "1663" + }, + "Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "1664" + }, + "Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "account_number": "1665" + }, + "Sur avances assorties de conditions particuli\u00e8res": { + "account_number": "1667" + }, + "Sur autres emprunts et dettes": { + "account_number": "1668" + }, + "account_number": "166" + }, + "Avances assorties de conditions particuli\u00e8res": { + "Avances bloqu\u00e9es pour augmentation du capital": { + "account_number": "1671" + }, + "Avances conditionn\u00e9es par l\u2019\u00c9tat": { + "account_number": "1672" + }, + "Avances conditionn\u00e9es par les autres organismes africains": { + "account_number": "1673" + }, + "Avances conditionn\u00e9es par les organismes internationaux": { + "account_number": "1674" + }, + "account_number": "167" + }, + "Autres emprunts et dettes": { + "Rentes viag\u00e8res capitalis\u00e9es": { + "account_number": "1681" + }, + "Billets de fonds": { + "account_number": "1682" + }, + "Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": { + "account_number": "1683" + }, + "Emprunts participatifs": { + "account_number": "1684" + }, + "Participation des travailleurs aux b\u00e9n\u00e9fices": { + "account_number": "1685" + }, + "Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": { + "account_number": "1686" + }, + "account_number": "168" + }, + "account_number": "16" + }, + "Dettes de location acquisition": { + "Dettes de location acquisition / cr\u00e9dit bail immobilier": { + "account_number": "172" + }, + "Dettes de location acquisition / cr\u00e9dit bail mobilier": { + "account_number": "173" + }, + "Dettes de location acquisition / location de vente": { + "account_number": "174" + }, + "Int\u00e9r\u00eats courus": { + "Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "1762" + }, + "Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "1763" + }, + "Sur dettes de location acquisition / location-vente": { + "account_number": "1764" + }, + "Sur autres dettes de location acquisition": { + "account_number": "1768" + }, + "account_number": "176" + }, + "Autres dettes de location acquisition": { + "account_number": "178" + }, + "account_number": "17" + }, + "Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "Dettes li\u00e9es \u00e0 des participations": { + "Dettes li\u00e9es \u00e0 des participations (groupe)": { + "account_number": "1811" + }, + "Dettes li\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "1812" + }, + "account_number": "181" + }, + "Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "182" + }, + "Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": { + "account_number": "183" + }, + "Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "184" + }, + "Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "185" + }, + "Comptes de liaison charges": { + "account_number": "186" + }, + "Comptes de liaison produits": { + "account_number": "187" + }, + "Comptes de liaison des soci\u00e9t\u00e9s en participation": { + "account_number": "188" + }, + "account_number": "18" + }, + "Provisions pour risques et charges": { + "Provisions pour litiges": { + "account_number": "191" + }, + "Provisions pour garanties donn\u00e9es aux clients": { + "account_number": "192" + }, + "Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": { + "account_number": "193" + }, + "Provisions pour pertes de change": { + "account_number": "194" + }, + "Provisions pour imp\u00f4ts": { + "account_number": "195" + }, + "Provisions pour pensions et obligations similaires": { + "Provisions pour pensions et obligations similaires engagement de retraite": { + "account_number": "1961" + }, + "Actif du r\u00e9gime de retraite": { + "account_number": "1962" + }, + "account_number": "196" + }, + "Provisions pour restructuration": { + "account_number": "197" + }, + "Autres provisions pour risques et charges": { + "Provisions pour amendes et p\u00e9nalit\u00e9s": { + "account_number": "1981" + }, + "Provisions pour propre assureur": { + "account_number": "1983" + }, + "Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "1984" + }, + "Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": { + "account_number": "1985" + }, + "Provisions pour divers risques et charges": { + "account_number": "1988" + }, + "account_number": "198" + }, + "account_number": "19" + }, + "root_type": "Equity", + "account_number": "1" + }, + "Comptes d\u2019actif immobilis\u00e9": { + "Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "211" + }, + "Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "Brevets": { + "account_type": "Fixed Asset", + "account_number": "2121" + }, + "Licences": { + "account_type": "Fixed Asset", + "account_number": "2122" + }, + "Concessions de service public": { + "account_type": "Fixed Asset", + "account_number": "2123" + }, + "Autres concessions et droits similaires": { + "account_type": "Fixed Asset", + "account_number": "2128" + }, + "account_number": "212" + }, + "Logiciels et sites internet": { + "account_type": "Fixed Asset", + "Logiciels": { + "account_type": "Fixed Asset", + "account_number": "2131" + }, + "Sites internet": { + "account_type": "Fixed Asset", + "account_number": "2132" + }, + "account_number": "213" + }, + "Marques": { + "account_type": "Fixed Asset", + "account_number": "214" + }, + "Fonds commercial": { + "account_type": "Fixed Asset", + "account_number": "215" + }, + "Droit au bail": { + "account_type": "Fixed Asset", + "account_number": "216" + }, + "Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset", + "account_number": "217" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset", + "account_number": "2181" + }, + "Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset", + "account_number": "2182" + }, + "Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset", + "account_number": "2183" + }, + "Co\u00fbts des franchises": { + "account_type": "Fixed Asset", + "account_number": "2184" + }, + "Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset", + "account_number": "2188" + }, + "account_number": "218" + }, + "Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "2191" + }, + "Logiciels et internet": { + "account_type": "Fixed Asset", + "account_number": "2193" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "account_number": "2198" + }, + "account_number": "219" + }, + "account_number": "21" + }, + "Terrains": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset", + "account_number": "2211" + }, + "Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset", + "account_number": "2212" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2218" + }, + "account_number": "221" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset", + "account_number": "2221" + }, + "Autres terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2228" + }, + "account_number": "222" + }, + "Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset", + "account_number": "2231" + }, + "Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset", + "account_number": "2232" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2234" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2235" + }, + "Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "account_number": "2238" + }, + "account_number": "223" + }, + "Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset", + "account_number": "2241" + }, + "Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset", + "account_number": "2245" + }, + "Autres travaux": { + "account_type": "Fixed Asset", + "account_number": "2248" + }, + "account_number": "224" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "Carri\u00e8res": { + "account_type": "Fixed Asset", + "account_number": "2251" + }, + "account_number": "225" + }, + "Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "Parkings": { + "account_type": "Fixed Asset", + "account_number": "2261" + }, + "account_number": "226" + }, + "Terrains mis en concession": { + "account_type": "Fixed Asset", + "account_number": "227" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "Terrains immeubles de placement": { + "account_type": "Fixed Asset", + "account_number": "2281" + }, + "Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset", + "account_number": "2285" + }, + "Terrains de location acquisition": { + "account_type": "Fixed Asset", + "account_number": "2286" + }, + "Divers terrains": { + "account_type": "Fixed Asset", + "account_number": "2288" + }, + "account_number": "228" + }, + "Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "account_number": "2291" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2292" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "account_number": "2295" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2298" + }, + "account_number": "229" + }, + "account_number": "22" + }, + "B\u00e2timents, installations techniques et agencements": { + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "B\u00e2timents industriels": { + "account_number": "2311" + }, + "B\u00e2timents agricoles": { + "account_number": "2312" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2313" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2314" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2315" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2316" + }, + "account_number": "231" + }, + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "B\u00e2timents industriels": { + "account_number": "2321" + }, + "B\u00e2timents agricoles": { + "account_number": "2322" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2323" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2324" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2325" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2326" + }, + "account_number": "232" + }, + "Ouvrages d\u2019infrastructure": { + "Voies de terre": { + "account_number": "2331" + }, + "Voies de fer": { + "account_number": "2332" + }, + "Voies d\u2019eau": { + "account_number": "2333" + }, + "Barrages, Digues": { + "account_number": "2334" + }, + "Pistes d\u2019a\u00e9rodrome": { + "account_number": "2335" + }, + "Autres ouvrages d\u2019infrastructures": { + "account_number": "2338" + }, + "account_number": "233" + }, + "Am\u00e9nagements, agencements et installations techniques": { + "Installations complexes sp\u00e9cialis\u00e9es sur sol propre": { + "account_number": "2341" + }, + "Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": { + "account_number": "2342" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": { + "account_number": "2343" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": { + "account_number": "2344" + }, + "Am\u00e9nagements et agencements des b\u00e2timents": { + "account_number": "2345" + }, + "account_number": "234" + }, + "Am\u00e9nagements de bureaux": { + "Installations g\u00e9n\u00e9rales": { + "account_number": "2351" + }, + "Autres am\u00e9nagements de bureaux": { + "account_number": "2358" + }, + "account_number": "235" + }, + "B\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "237" + }, + "Autres installations et agencements": { + "account_number": "238" + }, + "B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "B\u00e2timents en cours": { + "account_number": "2391" + }, + "Installations en cours": { + "account_number": "2392" + }, + "Ouvrages d\u2019infrastructure en cours": { + "account_number": "2393" + }, + "Am\u00e9nagements et agencements et installations techniques en cours": { + "account_number": "2394" + }, + "Am\u00e9nagements de bureaux en cours": { + "account_number": "2395" + }, + "Autres installations et agencements en cours": { + "account_number": "2398" + }, + "account_number": "239" + }, + "account_number": "23" + }, + "Mat\u00e9riel, mobilier et actifs biologiques": { + "Mat\u00e9riel et outillage industriel et commercial": { + "Mat\u00e9riel industriel": { + "account_number": "2411" + }, + "Outillage industriel": { + "account_number": "2412" + }, + "Mat\u00e9riel commercial": { + "account_number": "2413" + }, + "Outillage commercial": { + "account_number": "2414" + }, + "Mat\u00e9riel & outillage industriel et commercial de location-acquisition": { + "account_number": "2416" + }, + "account_number": "241" + }, + "Mat\u00e9riel et outillage agricole": { + "Mat\u00e9riel agricole": { + "account_number": "2421" + }, + "Outillage agricole": { + "account_number": "2422" + }, + "Mat\u00e9riel & outillage agricole de location-acquisition": { + "account_number": "2426" + }, + "account_number": "242" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "243" + }, + "Mat\u00e9riel et mobilier": { + "Mat\u00e9riel de bureau": { + "account_number": "2441" + }, + "Mat\u00e9riel informatique": { + "account_number": "2442" + }, + "Mat\u00e9riel bureautique": { + "account_number": "2443" + }, + "Mobilier de bureau": { + "account_number": "2444" + }, + "Mat\u00e9riel et mobilier immeubles de placement": { + "account_number": "2445" + }, + "Mat\u00e9riel et mobilier de location acquisition": { + "account_number": "2446" + }, + "Mat\u00e9riel et mobilier des logements du personnel": { + "account_number": "2447" + }, + "account_number": "244" + }, + "Mat\u00e9riel de transport": { + "Mat\u00e9riel automobile": { + "account_number": "2451" + }, + "Mat\u00e9riel ferroviaire": { + "account_number": "2452" + }, + "Mat\u00e9riel fluvial, lagunaire": { + "account_number": "2453" + }, + "Mat\u00e9riel naval": { + "account_number": "2454" + }, + "Mat\u00e9riel a\u00e9rien": { + "account_number": "2455" + }, + "Mat\u00e9riel de transport de location-acquisition": { + "account_number": "2456" + }, + "Mat\u00e9riel hippomobile": { + "account_number": "2457" + }, + "Autres mat\u00e9riels de transport": { + "account_number": "2458" + }, + "account_number": "245" + }, + "Actifs biologiques": { + "Cheptel, animaux de trait": { + "account_number": "2461" + }, + "Cheptel, animaux reproducteurs": { + "account_number": "2462" + }, + "Animaux de garde": { + "account_number": "2463" + }, + "Plantations agricoles": { + "account_number": "2465" + }, + "Autres actifs biologiques": { + "account_number": "2468" + }, + "account_number": "246" + }, + "Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "Agencements et am\u00e9nagements du mat\u00e9riel": { + "account_number": "2471" + }, + "Agencements et am\u00e9nagements des actifs biologiques": { + "account_number": "2472" + }, + "Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2478" + }, + "account_number": "247" + }, + "Autres mat\u00e9riels et mobiliers": { + "Collections et \u0153uvres d\u2019art": { + "account_number": "2481" + }, + "Divers mat\u00e9riels mobiliers": { + "account_number": "2488" + }, + "account_number": "248" + }, + "Mat\u00e9riels et actifs biologiques en cours": { + "Mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2491" + }, + "Mat\u00e9riel et outillage agricole": { + "account_number": "2492" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2493" + }, + "Mat\u00e9riel et mobilier de bureau": { + "account_number": "2494" + }, + "Mat\u00e9riel de transport": { + "account_number": "2495" + }, + "Actifs biologiques": { + "account_number": "2496" + }, + "Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2497" + }, + "Autres mat\u00e9riels et actifs biologiques en cours": { + "account_number": "2498" + }, + "account_number": "249" + }, + "account_number": "24" + }, + "Avances et acomptes vers\u00e9s sur immobilisations": { + "Avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "251" + }, + "Avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "252" + }, + "account_number": "25" + }, + "Titres de participation": { + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "261" + }, + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "262" + }, + "Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "263" + }, + "Participations dans des organismes professionnels": { + "account_number": "265" + }, + "Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "266" + }, + "Autres titres de participation": { + "account_number": "268" + }, + "account_number": "26" + }, + "Autres immobilisations financi\u00e8res": { + "Pr\u00eats et cr\u00e9ances": { + "Pr\u00eats participatifs": { + "account_number": "2711" + }, + "Pr\u00eats aux associ\u00e9s": { + "account_number": "2712" + }, + "Billets de fonds": { + "account_number": "2713" + }, + "Titres pr\u00eat\u00e9s": { + "account_number": "2714" + }, + "Autres pr\u00eats et cr\u00e9ances": { + "account_number": "2718" + }, + "account_number": "271" + }, + "Pr\u00eats au personnel": { + "Pr\u00eats immobiliers": { + "account_number": "2721" + }, + "Pr\u00eats mobiliers et d\u2019installation": { + "account_number": "2722" + }, + "Autres pr\u00eats au personnel": { + "account_number": "2728" + }, + "account_number": "272" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "Retenues de garantie": { + "account_number": "2731" + }, + "Fonds r\u00e9glement\u00e9": { + "account_number": "2733" + }, + "Cr\u00e9ances sur le conc\u00e9dant": { + "account_number": "2734" + }, + "Autres cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2738" + }, + "account_number": "273" + }, + "Titres immobilis\u00e9s": { + "Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": { + "account_number": "2741" + }, + "Titres participatifs": { + "account_number": "2742" + }, + "Certificats d\u2019investissement": { + "account_number": "2743" + }, + "Parts de fonds commun de placement (FCP)": { + "account_number": "2744" + }, + "Obligations": { + "account_number": "2745" + }, + "Actions ou parts propres": { + "account_number": "2746" + }, + "Autres titres immobilis\u00e9s": { + "account_number": "2748" + }, + "account_number": "274" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "D\u00e9p\u00f4ts pour loyers d\u2019avance": { + "account_number": "2751" + }, + "D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": { + "account_number": "2752" + }, + "D\u00e9p\u00f4ts pour l\u2019eau": { + "account_number": "2753" + }, + "D\u00e9p\u00f4ts pour le gaz": { + "account_number": "2754" + }, + "D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": { + "account_number": "2755" + }, + "Cautionnements sur march\u00e9s publics": { + "account_number": "2756" + }, + "Cautionnements sur autres op\u00e9rations": { + "account_number": "2757" + }, + "Autres d\u00e9p\u00f4ts et cautionnements": { + "account_number": "2758" + }, + "account_number": "275" + }, + "Int\u00e9r\u00eats courus": { + "Pr\u00eats et cr\u00e9ances non commerciales": { + "account_number": "2761" + }, + "Pr\u00eats au personnel": { + "account_number": "2762" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2763" + }, + "Titres immobilis\u00e9s": { + "account_number": "2764" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2765" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "account_number": "2767" + }, + "Immobilisations financi\u00e8res diverses": { + "account_number": "2768" + }, + "account_number": "276" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": { + "account_number": "2771" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "2772" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "2773" + }, + "Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "2774" + }, + "account_number": "277" + }, + "Immobilisations financi\u00e8res diverses": { + "Cr\u00e9ances diverses groupe": { + "account_number": "2781" + }, + "Cr\u00e9ances diverses hors groupe": { + "account_number": "2782" + }, + "Banques d\u00e9p\u00f4ts \u00e0 terme": { + "account_number": "2784" + }, + "Or et m\u00e9taux pr\u00e9cieux": { + "account_number": "2785" + }, + "Autres immobilisations financi\u00e8res": { + "account_number": "2788" + }, + "account_number": "278" + }, + "account_number": "27" + }, + "Amortissements": { + "account_type": "Accumulated Depreciation", + "Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation", + "account_number": "2811" + }, + "Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation", + "account_number": "2812" + }, + "Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation", + "account_number": "2813" + }, + "Amortissements des marques": { + "account_type": "Accumulated Depreciation", + "account_number": "2814" + }, + "Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation", + "account_number": "2815" + }, + "Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation", + "account_number": "2816" + }, + "Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation", + "account_number": "2817" + }, + "Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation", + "account_number": "2818" + }, + "account_number": "281" + }, + "Amortissements des terrains": { + "Amortissements des travaux de mise en valeur des terrains": { + "account_number": "2824" + }, + "account_number": "282" + }, + "Amortissements des b\u00e2timents, installations techniques et agencements": { + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2831" + }, + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2832" + }, + "Amortissements des ouvrages d\u2019infrastructure": { + "account_number": "2833" + }, + "Amortissements des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2834" + }, + "Amortissements des am\u00e9nagements de bureaux": { + "account_number": "2835" + }, + "Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2837" + }, + "Amortissements des autres installations et agencements": { + "account_number": "2838" + }, + "account_number": "283" + }, + "Amortissements du mat\u00e9riel": { + "Amortissements du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2841" + }, + "Amortissements du mat\u00e9riel et outillage agricole": { + "account_number": "2842" + }, + "Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2843" + }, + "Amortissements du mat\u00e9riel et mobilier": { + "account_number": "2844" + }, + "Amortissements du mat\u00e9riel de transport": { + "account_number": "2845" + }, + "Amortissements des actifs biologiques": { + "account_number": "2846" + }, + "Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2847" + }, + "Amortissements des autres mat\u00e9riels": { + "account_number": "2848" + }, + "account_number": "284" + }, + "account_number": "28" + }, + "D\u00e9pr\u00e9ciations des immobilisations": { + "D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": { + "account_number": "2911" + }, + "D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": { + "account_number": "2912" + }, + "D\u00e9pr\u00e9ciations des logiciels et sites internet": { + "account_number": "2913" + }, + "D\u00e9pr\u00e9ciations des marques": { + "account_number": "2914" + }, + "D\u00e9pr\u00e9ciations du fonds commercial": { + "account_number": "2915" + }, + "D\u00e9pr\u00e9ciations du droit au bail": { + "account_number": "2916" + }, + "D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": { + "account_number": "2917" + }, + "D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": { + "account_number": "2918" + }, + "D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": { + "account_number": "2919" + }, + "account_number": "291" + }, + "D\u00e9pr\u00e9ciations des terrains": { + "D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": { + "account_number": "2921" + }, + "D\u00e9pr\u00e9ciations des terrains nus": { + "account_number": "2922" + }, + "D\u00e9pr\u00e9ciations des terrains b\u00e2tis": { + "account_number": "2923" + }, + "D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": { + "account_number": "2924" + }, + "D\u00e9pr\u00e9ciations des terrains de gisement": { + "account_number": "2925" + }, + "D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": { + "account_number": "2926" + }, + "D\u00e9pr\u00e9ciations des terrains mis en concession": { + "account_number": "2927" + }, + "D\u00e9pr\u00e9ciations des autres terrains": { + "account_number": "2928" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": { + "account_number": "2929" + }, + "account_number": "292" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2931" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2932" + }, + "D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": { + "account_number": "2933" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2934" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": { + "account_number": "2935" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2937" + }, + "D\u00e9pr\u00e9ciations des autres installations et agencements": { + "account_number": "2938" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": { + "account_number": "2939" + }, + "account_number": "293" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2941" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": { + "account_number": "2942" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2943" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": { + "account_number": "2944" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": { + "account_number": "2945" + }, + "D\u00e9pr\u00e9ciations des actifs biologiques": { + "account_number": "2946" + }, + "D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2947" + }, + "D\u00e9pr\u00e9ciations des autres mat\u00e9riels": { + "account_number": "2948" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": { + "account_number": "2949" + }, + "account_number": "294" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "2951" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "2952" + }, + "account_number": "295" + }, + "D\u00e9pr\u00e9ciations des titres de participation": { + "D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "2961" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "2962" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "2963" + }, + "D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": { + "account_number": "2965" + }, + "D\u00e9pr\u00e9ciations des parts dans des GIE": { + "account_number": "2966" + }, + "D\u00e9pr\u00e9ciations des autres titres de participation": { + "account_number": "2968" + }, + "account_number": "296" + }, + "D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": { + "account_number": "2971" + }, + "D\u00e9pr\u00e9ciations des pr\u00eats au personnel": { + "account_number": "2972" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2973" + }, + "D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": { + "account_number": "2974" + }, + "D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2975" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "account_number": "2977" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": { + "account_number": "2978" + }, + "account_number": "297" + }, + "account_number": "29" + }, + "root_type": "Asset", + "account_number": "2" + }, + "Comptes de Stocks": { + "Marchandises": { + "Marchandises A": { + "Marchandises A1": { + "account_number": "3111" + }, + "Marchandises A2": { + "account_number": "3112" + }, + "account_number": "311" + }, + "Marchandises B": { + "Marchandises B1": { + "account_number": "3121" + }, + "Marchandises B2": { + "account_number": "3122" + }, + "account_number": "312" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3131" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3132" + }, + "account_number": "313" + }, + "Marchandises hors activit\u00e9s ordinaires (HAO)": { + "account_number": "318" + }, + "account_number": "31" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Mati\u00e8res A": { + "account_number": "321" + }, + "Mati\u00e8res B": { + "account_number": "322" + }, + "Fournitures (A, B)": { + "account_number": "323" + }, + "account_number": "32" + }, + "Autres approvisionnements": { + "Mati\u00e8res consommables": { + "account_number": "331" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "332" + }, + "Fournitures de magasin": { + "account_number": "333" + }, + "Fournitures de bureau": { + "account_number": "334" + }, + "Emballages": { + "Emballages perdus": { + "account_number": "3351" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "3352" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "3353" + }, + "Autres emballages": { + "account_number": "3358" + }, + "account_number": "335" + }, + "Autres mati\u00e8res": { + "account_number": "338" + }, + "account_number": "33" + }, + "Produits en cours": { + "Produits en cours": { + "Produits en cours P1": { + "account_number": "3411" + }, + "Produits en cours P2": { + "account_number": "3412" + }, + "account_number": "341" + }, + "Travaux en cours": { + "Travaux en cours T1": { + "account_number": "3421" + }, + "Travaux en cours T2": { + "account_number": "3422" + }, + "account_number": "342" + }, + "Produits interm\u00e9diaires en cours": { + "Produits interm\u00e9diaires A": { + "account_number": "3431" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3432" + }, + "account_number": "343" + }, + "Produits r\u00e9siduels en cours": { + "Produits r\u00e9siduels A": { + "account_number": "3441" + }, + "Produits r\u00e9siduels B": { + "account_number": "3442" + }, + "account_number": "344" + }, + "Actifs biologiques en cours": { + "Animaux": { + "account_number": "3451" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3452" + }, + "account_number": "345" + }, + "account_number": "34" + }, + "Services en cours": { + "\u00c9tudes en cours": { + "\u00c9tudes en cours E1": { + "account_number": "3511" + }, + "\u00c9tudes en cours E2": { + "account_number": "3512" + }, + "account_number": "351" + }, + "Prestations de services en cours": { + "Prestations de services S1": { + "account_number": "3521" + }, + "Prestations de services S2": { + "account_number": "3522" + } + }, + "account_number": "35" + }, + "Produits finis": { + "Produits finis A": { + "account_number": "361" + }, + "Produits finis B": { + "account_number": "362" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3631" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3632" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3638" + }, + "account_number": "363" + }, + "account_number": "36" + }, + "Produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "Produits interm\u00e9diaires A": { + "account_number": "3711" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3712" + }, + "account_number": "371" + }, + "Produits r\u00e9siduels": { + "D\u00e9chets": { + "account_number": "3721" + }, + "Rebuts": { + "account_number": "3722" + }, + "Mati\u00e8res de R\u00e9cup\u00e9ration": { + "account_number": "3723" + }, + "account_number": "372" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3731" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3732" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3738" + }, + "account_number": "373" + }, + "account_number": "37" + }, + "Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "Marchandises en cours de route": { + "account_number": "381" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": { + "account_number": "382" + }, + "Autres approvisionnements en cours de route": { + "account_number": "383" + }, + "Produits finis en cours de route": { + "account_number": "386" + }, + "Stock en consignation ou en d\u00e9p\u00f4t": { + "Stock en consignation": { + "account_number": "3871" + }, + "Stock en d\u00e9p\u00f4t": { + "account_number": "3872" + }, + "account_number": "387" + }, + "Stock provenant d\u2019immobilisations mises hors service ou au rebut": { + "account_number": "388" + }, + "account_number": "38" + }, + "D\u00e9pr\u00e9ciations des stocks et encours de production": { + "D\u00e9pr\u00e9ciations des stocks de marchandises": { + "account_number": "391" + }, + "D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "392" + }, + "D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": { + "account_number": "393" + }, + "D\u00e9pr\u00e9ciations des productions en cours": { + "account_number": "394" + }, + "D\u00e9pr\u00e9ciations des services en cours": { + "account_number": "395" + }, + "D\u00e9pr\u00e9ciations des stocks de produits finis": { + "account_number": "396" + }, + "D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "account_number": "397" + }, + "D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_number": "398" + }, + "account_number": "39" + }, + "root_type": "Asset", + "account_number": "3" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "Fournisseurs d\u00e9biteurs": { + "Fournisseurs Avances et acomptes vers\u00e9s": { + "account_number": "4091" + }, + "Fournisseurs Groupe avances et acomptes vers\u00e9s": { + "account_number": "4092" + }, + "Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": { + "account_number": "4093" + }, + "Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": { + "account_number": "4094" + }, + "Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": { + "account_number": "4098" + }, + "account_number": "409" + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "Clients": { + "Clients": { + "account_type": "Receivable", + "account_number": "4111" + }, + "Clients groupe": { + "account_type": "Receivable", + "account_number": "4112" + }, + "Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable", + "account_number": "4114" + }, + "Clients, organismes internationaux": { + "account_type": "Receivable", + "account_number": "4115" + }, + "Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable", + "account_number": "4116" + }, + "Client, retenues de garantie": { + "account_type": "Receivable", + "account_number": "4117" + }, + "Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable", + "account_number": "4118" + }, + "account_type": "Receivable", + "account_number": "411" + }, + "Clients, effets \u00e0 recevoir en portefeuille": { + "Clients, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4121" + }, + "Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4122" + }, + "\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4124" + }, + "Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4125" + }, + "account_type": "Receivable", + "account_number": "412" + }, + "Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4131" + }, + "Clients, effets impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4132" + }, + "Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4133" + }, + "Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4138" + }, + "account_type": "Receivable", + "account_number": "413" + }, + "Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4141" + }, + "Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4142" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4146" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4147" + }, + "account_type": "Receivable", + "account_number": "414" + }, + "Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable", + "account_number": "415" + }, + "Cr\u00e9ances clients litigieuses ou douteuses": { + "Cr\u00e9ances litigieuses": { + "account_type": "Receivable", + "account_number": "4161" + }, + "Cr\u00e9ances douteuses": { + "account_type": "Receivable", + "account_number": "4162" + }, + "account_type": "Receivable", + "account_number": "416" + }, + "Clients, produits \u00e0 recevoir": { + "Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable", + "account_number": "4181" + }, + "Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable", + "account_number": "4186" + }, + "account_type": "Receivable", + "account_number": "418" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "Personnel, avances et acomptes": { + "Personnel, avances": { + "account_number": "4211" + }, + "Personnel, acomptes": { + "account_number": "4212" + }, + "Frais avanc\u00e9s et fournitures au personnel": { + "account_number": "4213" + }, + "account_number": "421" + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "Prestations familiales": { + "account_number": "4311" + }, + "Accidents de travail": { + "account_number": "4312" + }, + "Caisse de retraite obligatoire": { + "account_number": "4313" + }, + "Caisse de retraite facultative": { + "account_number": "4314" + }, + "Autres cotisations sociales": { + "account_number": "4318" + } + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "Mutuelle": { + "account_number": "4331" + }, + "Assurances retraite": { + "account_number": "4332" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "4333" + } + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Produits \u00e0 recevoir": { + "account_number": "4387" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "\u00c9tat, TVA factur\u00e9e": { + "TVA factur\u00e9e sur ventes": { + "account_number": "4431" + }, + "TVA factur\u00e9e sur prestations de services": { + "account_number": "4432" + }, + "TVA factur\u00e9e sur travaux": { + "account_number": "4433" + }, + "TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": { + "account_number": "4434" + }, + "TVA sur factures \u00e0 \u00e9tablir": { + "account_number": "4435" + }, + "account_number": "443" + }, + "\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "TVA r\u00e9cup\u00e9rable sur immobilisations": { + "account_number": "4451" + }, + "TVA r\u00e9cup\u00e9rable sur achats": { + "account_number": "4452" + }, + "TVA r\u00e9cup\u00e9rable sur transport": { + "account_number": "4453" + }, + "TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": { + "account_number": "4454" + }, + "TVA r\u00e9cup\u00e9rable sur factures non parvenues": { + "account_number": "4455" + }, + "TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": { + "account_number": "4456" + }, + "account_number": "445" + }, + "\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges \u00e0 payer": { + "account_number": "4486" + }, + "Produits \u00e0 recevoir": { + "account_number": "4487" + }, + "account_number": "448" + }, + "\u00c9tat, cr\u00e9ances et dettes diverses": { + "\u00c9tat, obligations cautionn\u00e9es": { + "account_number": "4491" + }, + "\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": { + "account_number": "4492" + }, + "\u00c9tat, fonds de dotation \u00e0 recevoir": { + "account_number": "4493" + }, + "\u00c9tat, subventions investissement \u00e0 recevoir": { + "account_number": "4494" + }, + "\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": { + "account_number": "4495" + }, + "\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": { + "account_number": "4496" + }, + "\u00c9tat, avances sur subventions": { + "account_number": "4497" + }, + "\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": { + "account_number": "4499" + }, + "account_number": "449" + } + }, + "45-Organismes internationaux (ACTIF)": { + "Op\u00e9rations avec les organismes africains": { + "account_number": "451" + }, + "Op\u00e9rations avec les autres organismes internationaux": { + "account_number": "452" + }, + "Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "Organismes internationaux, fonds de dotation \u00e0 recevoir": { + "account_number": "4581" + }, + "Organismes internationaux, subventions \u00e0 recevoir": { + "account_number": "4582" + }, + "account_number": "458" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "Apporteurs, capital appel\u00e9, non vers\u00e9": { + "account_number": "4613" + }, + "Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": { + "account_number": "4614" + }, + "Apporteurs, titres \u00e0 \u00e9changer": { + "account_number": "4618" + } + }, + "Apporteurs, restant d\u00fb sur capital appel\u00e9": { + "account_number": "467" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4721" + }, + "Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": { + "account_number": "4726" + } + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "Mandants": { + "account_number": "4731" + }, + "Mandataires": { + "account_number": "4732" + }, + "Commettants": { + "account_number": "4733" + }, + "Commissionnaires": { + "account_number": "4734" + }, + "\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": { + "account_number": "4739" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "Compte de r\u00e9partition p\u00e9riodique des produits": { + "account_number": "4747" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "Compte actif": { + "account_type": "Temporary", + "account_number": "4751" + } + }, + "Charges constat\u00e9es d\u2019avance": { + "account_number": "476" + }, + "478-\u00c9carts de conversion actif": { + "Diminution des cr\u00e9ances d\u2019exploitation": { + "account_number": "4781" + }, + "Diminution des cr\u00e9ances financi\u00e8res": { + "account_number": "4782" + }, + "Augmentation des dettes d\u2019exploitation": { + "account_number": "4783" + }, + "Augmentation des dettes financi\u00e8res": { + "account_number": "4784" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4786" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4788" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "En compte, immobilisations incorporelles": { + "account_number": "4851" + }, + "En compte, immobilisations corporelles": { + "account_number": "4852" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_number": "4853" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_number": "4854" + }, + "Effets escompt\u00e9s non \u00e9chus": { + "account_number": "4855" + }, + "Retenues de garantie": { + "account_number": "4857" + }, + "Factures \u00e0 \u00e9tablir": { + "account_number": "4858" + }, + "account_number": "485" + }, + "Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": { + "account_number": "488" + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "D\u00e9pr\u00e9ciations des comptes clients": { + "Cr\u00e9ances litigieuses": { + "account_number": "4911" + }, + "Cr\u00e9ances douteuses": { + "account_number": "4912" + }, + "account_number": "491" + }, + "D\u00e9pr\u00e9ciations des comptes organismes internationaux": { + "account_number": "495" + }, + "D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "Associ\u00e9s, comptes courants": { + "account_number": "4962" + }, + "Associ\u00e9s, op\u00e9rations faites en commun": { + "account_number": "4963" + }, + "Groupe, comptes courants": { + "account_number": "4966" + }, + "account_number": "496" + }, + "D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": { + "account_number": "497" + }, + "D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "account_number": "4985" + }, + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4986" + }, + "Autres cr\u00e9ances HAO": { + "account_number": "4988" + }, + "account_number": "498" + }, + "Provisions pour risques \u00e0 court terme": { + "Sur op\u00e9rations d\u2019exploitation": { + "account_number": "4991" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "4997" + }, + "Sur op\u00e9rations HAO": { + "account_number": "4998" + }, + "account_number": "499" + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "Fournisseurs, dettes en compte": { + "Fournisseurs": { + "account_type": "Payable", + "account_number": "4011" + }, + "Fournisseurs groupe": { + "account_type": "Payable", + "account_number": "4012" + }, + "Fournisseurs sous-traitants": { + "account_type": "Payable", + "account_number": "4013" + }, + "Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable", + "account_number": "4016" + }, + "Fournisseur, retenues de garantie": { + "account_type": "Payable", + "account_number": "4017" + }, + "account_type": "Payable", + "account_number": "401" + }, + "Fournisseurs, effets \u00e0 payer": { + "Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4021" + }, + "Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4022" + }, + "Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4023" + }, + "account_type": "Payable", + "account_number": "402" + }, + "Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4041" + }, + "Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4042" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4046" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4047" + }, + "account_type": "Payable", + "account_number": "404" + }, + "Fournisseurs, factures non parvenues": { + "Fournisseurs": { + "account_type": "Stock Received But Not Billed", + "account_number": "4081" + }, + "Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed", + "account_number": "4082" + }, + "Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed", + "account_number": "4083" + }, + "Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed", + "account_number": "4086" + }, + "account_type": "Stock Received But Not Billed", + "account_number": "408" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "Clients cr\u00e9diteurs": { + "Clients, avances et acomptes re\u00e7us": { + "account_number": "4191" + }, + "Clients groupe, avances et acomptes re\u00e7us": { + "account_number": "4192" + }, + "Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": { + "account_number": "4194" + }, + "Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": { + "account_number": "4198" + }, + "account_number": "419" + } + }, + "42-Personnel (PASSIF)": { + "Personnel, r\u00e9mun\u00e9rations dues": { + "account_number": "422" + }, + "Personnel, oppositions, saisies-arr\u00eats": { + "Personnel, oppositions": { + "account_number": "4231" + }, + "Personnel, saisies-arr\u00eats": { + "account_number": "4232" + }, + "Personnel, avis \u00e0 tiers d\u00e9tenteur": { + "account_number": "4233" + }, + "account_number": "423" + }, + "Personnel, \u0153uvres sociales internes": { + "Assistance m\u00e9dicale": { + "account_number": "4241" + }, + "Allocations familiales": { + "account_number": "4242" + }, + "Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": { + "account_number": "4245" + }, + "Autres \u0153uvres sociales internes": { + "account_number": "4248" + }, + "account_number": "424" + }, + "Repr\u00e9sentants du personnel": { + "D\u00e9l\u00e9gu\u00e9s du personnel": { + "account_number": "4251" + }, + "Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": { + "account_number": "4252" + }, + "Autres repr\u00e9sentants du personnel": { + "account_number": "4258" + }, + "account_number": "425" + }, + "Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "Participation aux b\u00e9n\u00e9fices": { + "account_number": "4261" + }, + "Participation au capital": { + "account_number": "4264" + }, + "account_number": "426" + }, + "Personnel d\u00e9p\u00f4ts": { + "account_number": "427" + }, + "Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": { + "account_number": "4281" + }, + "Autres charges \u00e0 payer": { + "account_number": "4286" + }, + "Produits \u00e0 recevoir": { + "account_number": "4287" + }, + "account_number": "428" + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges sociales sur gratifications \u00e0 payer": { + "account_number": "4381" + }, + "Charges sociales sur cong\u00e9s \u00e0 payer": { + "account_number": "4382" + }, + "Autres charges \u00e0 payer": { + "account_number": "4386" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": { + "account_number": "441" + }, + "\u00c9tat, autres imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes d\u2019\u00c9tat": { + "account_number": "4421" + }, + "Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": { + "account_number": "4422" + }, + "Imp\u00f4ts et taxes recouvrables sur des obligataires": { + "account_number": "4423" + }, + "Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": { + "account_number": "4424" + }, + "Droits de douane": { + "account_number": "4426" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "4428" + }, + "account_number": "442" + }, + "\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "\u00c9tat, TVA due": { + "account_number": "4441" + }, + "\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": { + "account_number": "4449" + }, + "account_number": "444" + }, + "\u00c9tat, autres taxes sur le chiffre d\u2019affaires": { + "account_number": "446" + }, + "\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": { + "account_number": "4471" + }, + "Imp\u00f4ts sur salaires": { + "account_number": "4472" + }, + "Contribution nationale": { + "account_number": "4473" + }, + "Contribution nationale de solidarit\u00e9": { + "account_number": "4474" + }, + "Autres imp\u00f4ts et contributions": { + "account_number": "4478" + }, + "account_number": "447" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "Apporteurs, apports en nature": { + "account_number": "4611" + }, + "Apporteurs, apports en num\u00e9raire": { + "account_number": "4612" + }, + "Apporteurs, versements re\u00e7us sur augmentation de capital": { + "account_number": "4615" + }, + "Apporteurs, versements anticip\u00e9s": { + "account_number": "4616" + }, + "Apporteurs d\u00e9faillants": { + "account_number": "4617" + }, + "Apporteurs, capital \u00e0 rembourser": { + "account_number": "4619" + } + }, + "462-Associ\u00e9s, comptes courants": { + "Principal": { + "account_number": "4621" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4626" + } + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "Op\u00e9rations courantes": { + "account_number": "4631" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4636" + } + }, + "Associ\u00e9s, dividendes \u00e0 payer": { + "account_number": "465" + }, + "Groupe, comptes courants": { + "account_number": "466" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "D\u00e9biteurs divers": { + "account_number": "4711" + }, + "Cr\u00e9diteurs divers": { + "account_number": "4712" + }, + "Obligataires": { + "account_number": "4713" + }, + "R\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "4715" + }, + "Compte d\u2019affacturage": { + "account_number": "4716" + }, + "D\u00e9biteurs divers retenues de garantie": { + "account_number": "4717" + }, + "Apport, compte de fusion et op\u00e9rations assimil\u00e9es": { + "account_number": "4718" + }, + "Bons de souscription d\u2019actions et d\u2019obligations": { + "account_number": "4719" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "Compte de r\u00e9partition p\u00e9riodique des charges": { + "account_number": "4746" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "Compte passif": { + "account_number": "4752" + } + }, + "Produits constat\u00e9s d\u2019avance": { + "account_number": "477" + }, + "479-\u00c9carts de conversion passif": { + "Augmentation des cr\u00e9ances d\u2019exploitation": { + "account_number": "4791" + }, + "Augmentation des cr\u00e9ances financi\u00e8res": { + "account_number": "4792" + }, + "Diminution des dettes d\u2019exploitation": { + "account_number": "4793" + }, + "Diminution des dettes financi\u00e8res": { + "account_number": "4794" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4797" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4798" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "Fournisseurs d\u2019investissements": { + "Immobilisations incorporelles": { + "account_number": "4811" + }, + "Immobilisations corporelles": { + "account_number": "4812" + }, + "Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": { + "account_number": "4813" + }, + "R\u00e9serve de propri\u00e9t\u00e9": { + "account_number": "4816" + }, + "Retenues de garantie": { + "account_number": "4817" + }, + "Factures non parvenues": { + "account_number": "4818" + }, + "account_number": "481" + }, + "Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "Immobilisations incorporelles": { + "account_number": "4821" + }, + "Immobilisations corporelles": { + "account_number": "4822" + }, + "account_number": "482" + }, + "Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "Produits": { + "account_number": "4887" + }, + "account_number": "484" + } + }, + "root_type": "Liability" + }, + "Comptes de tr\u00e9sorerie": { + "Titres de placement": { + "Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "Titres du Tr\u00e9sor \u00e0 court terme": { + "account_number": "5011" + }, + "Titres d\u2019organismes financiers": { + "account_number": "5012" + }, + "Bons de caisse \u00e0 court terme": { + "account_number": "5013" + }, + "Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": { + "account_number": "5016" + }, + "account_number": "501" + }, + "Actions": { + "Actions ou parts propres": { + "account_number": "5021" + }, + "Actions cot\u00e9es": { + "account_number": "5022" + }, + "Actions non cot\u00e9es": { + "account_number": "5023" + }, + "Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": { + "account_number": "5024" + }, + "Autres actions": { + "account_number": "5025" + }, + "Frais d\u2019acquisition des actions": { + "account_number": "5026" + }, + "account_number": "502" + }, + "Obligations": { + "Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": { + "account_number": "5031" + }, + "Obligations cot\u00e9es": { + "account_number": "5032" + }, + "Obligations non cot\u00e9es": { + "account_number": "5033" + }, + "Autres obligations": { + "account_number": "5035" + }, + "Frais d\u2019acquisition des obligations": { + "account_number": "5036" + }, + "account_number": "503" + }, + "Bons de souscription": { + "Bons de souscription d\u2019actions": { + "account_number": "5042" + }, + "Bons de souscription d\u2019obligations": { + "account_number": "5043" + }, + "account_number": "504" + }, + "Titres n\u00e9gociables hors r\u00e9gion": { + "account_number": "505" + }, + "Int\u00e9r\u00eats courus": { + "Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": { + "account_number": "5061" + }, + "Actions": { + "account_number": "5062" + }, + "Obligations": { + "account_number": "5063" + }, + "account_number": "506" + }, + "Autres titres de placement et cr\u00e9ances assimil\u00e9es": { + "account_number": "508" + }, + "account_number": "50" + }, + "Valeurs \u00e0 encaisser": { + "Effets \u00e0 encaisser": { + "account_number": "511" + }, + "Effets \u00e0 l\u2019encaissement": { + "account_number": "512" + }, + "Ch\u00e8ques \u00e0 encaisser": { + "account_number": "513" + }, + "Ch\u00e8ques \u00e0 l\u2019encaissement": { + "account_number": "514" + }, + "Cartes de cr\u00e9dit \u00e0 encaisser": { + "account_number": "515" + }, + "Autres valeurs \u00e0 l\u2019encaissement": { + "Warrants": { + "account_number": "5181" + }, + "Billets de fonds": { + "account_number": "5182" + }, + "Ch\u00e8ques de voyage": { + "account_number": "5185" + }, + "Coupons \u00e9chus": { + "account_number": "5186" + }, + "Int\u00e9r\u00eats \u00e9chus des obligations": { + "account_number": "5187" + }, + "account_number": "518" + }, + "account_number": "51" + }, + "Banques": { + "Banques locales": { + "Banques en monnaie nationale": { + "account_type": "Bank", + "account_number": "5211" + }, + "Banques en devises": { + "account_type": "Bank", + "account_number": "5215" + }, + "account_type": "Bank", + "account_number": "521" + }, + "Banques autres \u00c9tats r\u00e9gion": { + "account_number": "522" + }, + "Banques autres \u00c9tats zone mon\u00e9taire": { + "account_number": "523" + }, + "Banques hors zone mon\u00e9taire": { + "account_number": "524" + }, + "Banques d\u00e9p\u00f4t \u00e0 terme": { + "account_number": "525" + }, + "Banques, int\u00e9r\u00eats courus": { + "Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": { + "account_number": "5261" + }, + "Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": { + "account_number": "5267" + }, + "account_number": "526" + }, + "account_number": "52" + }, + "\u00c9tablissements financiers et assimil\u00e9s": { + "Ch\u00e8ques postaux": { + "account_number": "531" + }, + "Tr\u00e9sor": { + "account_number": "532" + }, + "Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": { + "account_number": "533" + }, + "\u00c9tablissements financiers, int\u00e9r\u00eats courus": { + "account_number": "536" + }, + "Autres organismes financiers": { + "account_number": "538" + }, + "account_number": "53" + }, + "Instruments de tr\u00e9sorerie": { + "Options de taux d\u2019int\u00e9r\u00eat": { + "account_number": "541" + }, + "Options de taux de change": { + "account_number": "542" + }, + "Options de taux boursiers": { + "account_number": "543" + }, + "Instruments de march\u00e9s \u00e0 terme": { + "account_number": "544" + }, + "Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": { + "account_number": "545" + }, + "account_number": "54" + }, + "Instruments de monnaie \u00e9lectronique": { + "Monnaie \u00e9lectronique carte carburant": { + "account_number": "551" + }, + "Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": { + "account_number": "552" + }, + "Monnaie \u00e9lectronique carte p\u00e9age": { + "account_number": "553" + }, + "Porte-monnaie \u00e9lectronique": { + "account_number": "554" + }, + "Autres instruments de monnaies \u00e9lectroniques": { + "account_number": "558" + }, + "account_number": "55" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "Cr\u00e9dits de tr\u00e9sorerie": { + "account_number": "561" + }, + "Escompte de cr\u00e9dits de campagne": { + "account_number": "564" + }, + "Escompte de cr\u00e9dits ordinaires": { + "account_number": "565" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": { + "account_number": "566" + }, + "account_number": "56" + }, + "Caisse": { + "Caisse si\u00e8ge social": { + "Caisse en monnaie nationale": { + "account_number": "5711" + }, + "Caisse en devises": { + "account_number": "5712" + }, + "account_number": "571" + }, + "Caisse succursale A": { + "En monnaie nationale": { + "account_number": "5721" + }, + "En devises": { + "account_number": "5722" + }, + "account_number": "572" + }, + "Caisse succursale B": { + "En monnaie nationale": { + "account_number": "5731" + }, + "En devises": { + "account_number": "5732" + }, + "account_number": "573" + }, + "account_number": "57" + }, + "R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "R\u00e9gies d\u2019avance": { + "account_number": "581" + }, + "Accr\u00e9ditifs": { + "account_number": "582" + }, + "Virements de fonds": { + "account_number": "585" + }, + "Autres virements internes": { + "account_number": "588" + }, + "account_number": "58" + }, + "D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "D\u00e9pr\u00e9ciations des titres de placement": { + "account_number": "590" + }, + "D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": { + "account_number": "591" + }, + "D\u00e9pr\u00e9ciations des comptes banques": { + "account_number": "592" + }, + "D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": { + "account_number": "593" + }, + "D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": { + "account_number": "594" + }, + "Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": { + "account_number": "599" + }, + "account_number": "59" + }, + "root_type": "Asset", + "account_number": "5" + }, + "Comptes de charges des activit\u00e9s ordinaires": { + "Achats et variations de stocks": { + "Achats de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "6011" + }, + "Hors R\u00e9gion": { + "account_number": "6012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6014" + }, + "Frais sur achats": { + "account_number": "6015" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6019" + }, + "account_number": "601" + }, + "Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Dans la R\u00e9gion": { + "account_number": "6021" + }, + "Hors R\u00e9gion": { + "account_number": "6022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6024" + }, + "Frais sur achats": { + "account_number": "6025" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6029" + }, + "account_number": "602" + }, + "Variations des stocks de biens achet\u00e9s": { + "Variations des stocks de marchandises": { + "account_number": "6031" + }, + "Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "6032" + }, + "Variations des stocks d\u2019autres approvisionnements": { + "account_number": "6033" + }, + "account_number": "603" + }, + "Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "Mati\u00e8res consommables": { + "account_number": "6041" + }, + "Mati\u00e8res combustibles": { + "account_number": "6042" + }, + "Produits d\u2019entretien": { + "account_number": "6043" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "6044" + }, + "Frais sur achat": { + "account_number": "6045" + }, + "Fournitures de magasin": { + "account_number": "6046" + }, + "Fournitures de bureau": { + "account_number": "6047" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6049" + }, + "account_number": "604" + }, + "Autres achats": { + "Fournitures non stockables Eau": { + "account_number": "6051" + }, + "Fournitures non stockables \u00c9lectricit\u00e9": { + "account_number": "6052" + }, + "Fournitures non stockables Autres \u00e9nergies": { + "account_number": "6053" + }, + "Fournitures d\u2019entretien non stockables": { + "account_number": "6054" + }, + "Fournitures de bureau non stockables": { + "account_number": "6055" + }, + "Achats de petit mat\u00e9riel et outillage": { + "account_number": "6056" + }, + "Achats d\u2019\u00e9tudes et prestations de services": { + "account_number": "6057" + }, + "Achats de travaux, mat\u00e9riels et \u00e9quipements": { + "account_number": "6058" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6059" + }, + "account_number": "605" + }, + "Achats d\u2019emballages": { + "Emballages perdus": { + "account_number": "6081" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "6082" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "6083" + }, + "Frais sur achats": { + "account_number": "6085" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6089" + }, + "account_number": "608" + }, + "account_number": "60" + }, + "Transports": { + "Transports sur ventes": { + "account_number": "612" + }, + "Transports pour le compte de tiers": { + "account_number": "613" + }, + "Transports du personnel": { + "account_number": "614" + }, + "Transports de plis": { + "account_number": "616" + }, + "Autres frais de transport": { + "Voyages et d\u00e9placements": { + "account_number": "6181" + }, + "Transports entre \u00e9tablissements ou chantiers": { + "account_number": "6182" + }, + "Transports administratifs": { + "account_number": "6183" + }, + "account_number": "618" + }, + "account_number": "61" + }, + "Services ext\u00e9rieurs": { + "Sous-traitance g\u00e9n\u00e9rale": { + "account_number": "621" + }, + "Locations, charges locatives": { + "Locations de terrains": { + "account_number": "6221" + }, + "Locations de b\u00e2timents": { + "account_number": "6222" + }, + "Locations de mat\u00e9riels et outillages": { + "account_number": "6223" + }, + "Malis sur emballages": { + "account_number": "6224" + }, + "Locations d\u2019emballages": { + "account_number": "6225" + }, + "Fermages et loyers du foncier": { + "account_number": "6226" + }, + "Locations et charges locatives diverses": { + "account_number": "6228" + }, + "account_number": "622" + }, + "Redevances de location acquisition": { + "Cr\u00e9dit-bail immobilier": { + "account_number": "6232" + }, + "Cr\u00e9dit-bail mobilier": { + "account_number": "6233" + }, + "Location-vente": { + "account_number": "6234" + }, + "Autres contrats de location acquisition": { + "account_number": "6238" + }, + "account_number": "623" + }, + "Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "Entretien et r\u00e9parations des biens immobiliers": { + "account_number": "6241" + }, + "Entretien et r\u00e9parations des biens mobiliers": { + "account_number": "6242" + }, + "Maintenance": { + "account_number": "6243" + }, + "Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "6244" + }, + "Autres entretiens et r\u00e9parations": { + "account_number": "6248" + }, + "account_number": "624" + }, + "Primes d\u2019assurance": { + "Assurances multirisques": { + "account_number": "6251" + }, + "Assurances mat\u00e9riel de transport": { + "account_number": "6252" + }, + "Assurances risques d\u2019exploitation": { + "account_number": "6253" + }, + "Assurances responsabilit\u00e9 du producteur": { + "account_number": "6254" + }, + "Assurances insolvabilit\u00e9 clients": { + "account_number": "6255" + }, + "Assurances transport sur ventes": { + "account_number": "6257" + }, + "Autres primes d\u2019assurances": { + "account_number": "6258" + }, + "account_number": "625" + }, + "\u00c9tudes, recherches et documentation": { + "\u00c9tudes et recherches": { + "account_number": "6261" + }, + "Documentation g\u00e9n\u00e9rale": { + "account_number": "6265" + }, + "Documentation technique": { + "account_number": "6266" + }, + "account_number": "626" + }, + "Publicit\u00e9, publications, relations publiques": { + "Annonces, insertions": { + "account_number": "6271" + }, + "Catalogues, imprim\u00e9s publicitaires": { + "account_number": "6272" + }, + "\u00c9chantillons": { + "account_number": "6273" + }, + "Foires et expositions": { + "account_number": "6274" + }, + "Publications": { + "account_number": "6275" + }, + "Cadeaux \u00e0 la client\u00e8le": { + "account_number": "6276" + }, + "Frais de colloques, s\u00e9minaires, conf\u00e9rences": { + "account_number": "6277" + }, + "Autres charges de publicit\u00e9 et relations publiques": { + "account_number": "6278" + }, + "account_number": "627" + }, + "Frais de t\u00e9l\u00e9communications": { + "Frais de t\u00e9l\u00e9phone": { + "account_number": "6281" + }, + "Frais de t\u00e9lex": { + "account_number": "6282" + }, + "Frais de t\u00e9l\u00e9copie": { + "account_number": "6283" + }, + "Autres frais de t\u00e9l\u00e9communications": { + "account_number": "6288" + }, + "account_number": "628" + }, + "account_number": "62" + }, + "Autres services ext\u00e9rieurs": { + "Frais bancaires": { + "Frais sur titres (vente, garde)": { + "account_number": "6311" + }, + "Frais sur effets": { + "account_number": "6312" + }, + "Location de coffres": { + "account_number": "6313" + }, + "Commissions d\u2019affacturage": { + "account_number": "6314" + }, + "Commissions sur cartes de cr\u00e9dit": { + "account_number": "6315" + }, + "Frais d\u2019\u00e9mission d\u2019emprunts": { + "account_number": "6316" + }, + "Frais sur instruments monnaie \u00e9lectronique": { + "account_number": "6317" + }, + "Autres frais bancaires": { + "account_number": "6318" + }, + "account_number": "631" + }, + "R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "Commissions et courtages sur ventes": { + "account_number": "6322" + }, + "Honoraires des professions r\u00e9glement\u00e9es": { + "account_number": "6324" + }, + "Frais d\u2019actes et de contentieux": { + "account_number": "6325" + }, + "R\u00e9mun\u00e9rations d\u2019affacturage": { + "account_number": "6326" + }, + "R\u00e9mun\u00e9rations des autres prestataires de services": { + "account_number": "6327" + }, + "Divers frais": { + "account_number": "6328" + }, + "account_number": "632" + }, + "Frais de formation du personnel": { + "account_number": "633" + }, + "Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "Redevances pour brevets, licences": { + "account_number": "6342" + }, + "Redevances pour logiciels": { + "account_number": "6343" + }, + "Redevances pour marques": { + "account_number": "6344" + }, + "Redevances pour sites internet": { + "account_number": "6345" + }, + "Redevances pour concessions, droits et valeurs similaires": { + "account_number": "6346" + }, + "account_number": "634" + }, + "Cotisations": { + "Cotisations": { + "account_number": "6351" + }, + "Concours divers": { + "account_number": "6358" + }, + "account_number": "635" + }, + "R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "Personnel int\u00e9rimaire": { + "account_number": "6371" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6372" + }, + "account_number": "637" + }, + "Autres charges externes": { + "Frais de recrutement du personnel": { + "account_number": "6381" + }, + "Frais de d\u00e9m\u00e9nagement": { + "account_number": "6382" + }, + "R\u00e9ceptions": { + "account_number": "6383" + }, + "Missions": { + "account_number": "6384" + }, + "Charges de copropri\u00e9t\u00e9": { + "account_number": "6385" + }, + "account_number": "638" + }, + "account_number": "63" + }, + "Imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes directs": { + "Imp\u00f4ts fonciers et taxes annexes": { + "account_number": "6411" + }, + "Patentes, licences et taxes annexes": { + "account_number": "6412" + }, + "Taxes sur appointements et salaires": { + "account_number": "6413" + }, + "Taxes d\u2019apprentissage": { + "account_number": "6414" + }, + "Formation professionnelle continue": { + "account_number": "6415" + }, + "Autres imp\u00f4ts et taxes directs": { + "account_number": "6418" + }, + "account_number": "641" + }, + "Imp\u00f4ts et taxes indirects": { + "account_number": "645" + }, + "Droits d\u2019enregistrement": { + "Droits de mutation": { + "account_number": "6461" + }, + "Droits de timbre": { + "account_number": "6462" + }, + "Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": { + "account_number": "6463" + }, + "Vignettes": { + "account_number": "6464" + }, + "Autres droits": { + "account_number": "6468" + }, + "account_number": "646" + }, + "P\u00e9nalit\u00e9s, amendes fiscales": { + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": { + "account_number": "6471" + }, + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": { + "account_number": "6472" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": { + "account_number": "6473" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": { + "account_number": "6474" + }, + "Autres p\u00e9nalit\u00e9s et amendes fiscales": { + "account_number": "6478" + }, + "account_number": "647" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "648" + }, + "account_number": "64" + }, + "Autres charges": { + "Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "Clients": { + "account_number": "6511" + }, + "Autres d\u00e9biteurs": { + "account_number": "6515" + }, + "account_number": "651" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "6521" + }, + "Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "6525" + }, + "account_number": "652" + }, + "Valeurs comptables des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "6541" + }, + "Immobilisations corporelles": { + "account_number": "6542" + }, + "account_number": "654" + }, + "Perte de change sur cr\u00e9ances et dettes commerciale": { + "account_number": "656" + }, + "P\u00e9nalit\u00e9s et amendes p\u00e9nales": { + "account_number": "657" + }, + "Charges diverses": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "6581" + }, + "Dons": { + "account_number": "6582" + }, + "M\u00e9c\u00e9nat": { + "account_number": "6583" + }, + "Autres charges diverses": { + "account_number": "6588" + }, + "account_number": "658" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "6591" + }, + "Sur stocks": { + "account_number": "6593" + }, + "Sur cr\u00e9ances": { + "account_number": "6594" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": { + "account_number": "6598" + }, + "account_number": "659" + }, + "account_number": "65" + }, + "Charges de personnel": { + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "Appointements salaires et commissions": { + "account_number": "6611" + }, + "Primes et gratifications": { + "account_number": "6612" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6613" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6614" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6615" + }, + "Suppl\u00e9ment familial": { + "account_number": "6616" + }, + "Avantages en nature": { + "account_number": "6617" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6618" + }, + "account_number": "661" + }, + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "Appointements salaires et commissions": { + "account_number": "6621" + }, + "Primes et gratifications": { + "account_number": "6622" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6623" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6624" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6625" + }, + "Suppl\u00e9ment familial": { + "account_number": "6626" + }, + "Avantages en nature": { + "account_number": "6627" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6628" + }, + "account_number": "662" + }, + "Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "Indemnit\u00e9s de logement": { + "account_number": "6631" + }, + "Indemnit\u00e9s de repr\u00e9sentation": { + "account_number": "6632" + }, + "Indemnit\u00e9s d\u2019expatriation": { + "account_number": "6633" + }, + "Indemnit\u00e9s de transport": { + "account_number": "6634" + }, + "Autres indemnit\u00e9s et avantages divers": { + "account_number": "6638" + }, + "account_number": "663" + }, + "Charges sociales": { + "Charges sociales sur r\u00e9mun\u00e9ration du personnel national": { + "account_number": "6641" + }, + "Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": { + "account_number": "6642" + }, + "account_number": "664" + }, + "R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "R\u00e9mun\u00e9ration du travail de l\u2019exploitant": { + "account_number": "6661" + }, + "Charges sociales": { + "account_number": "6662" + }, + "account_number": "666" + }, + "R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "Personnel int\u00e9rimaire": { + "account_number": "6671" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6672" + }, + "account_number": "667" + }, + "Autres charges sociales": { + "Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": { + "account_number": "6681" + }, + "Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": { + "account_number": "6682" + }, + "Versements et contributions aux autres \u0153uvres sociales": { + "account_number": "6683" + }, + "M\u00e9decine du travail et pharmacie": { + "account_number": "6684" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "6685" + }, + "Assurances retraite et fonds de pension": { + "account_number": "6686" + }, + "Majorations et p\u00e9nalit\u00e9s sociales": { + "account_number": "6687" + }, + "Charges sociales diverses": { + "account_number": "6688" + }, + "account_number": "668" + }, + "account_number": "66" + }, + "Frais financiers et charges assimil\u00e9es": { + "Int\u00e9r\u00eats des emprunts": { + "Emprunts obligataires": { + "account_number": "6711" + }, + "Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "6712" + }, + "Dettes li\u00e9es \u00e0 des participations": { + "account_number": "6713" + }, + "Primes de remboursement des obligations": { + "account_number": "6714" + }, + "account_number": "671" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "6722" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "6723" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": { + "account_number": "6724" + }, + "Int\u00e9r\u00eats dans loyers des autres locations acquisition": { + "account_number": "6728" + }, + "account_number": "672" + }, + "Escomptes accord\u00e9s": { + "account_number": "673" + }, + "Autres int\u00e9r\u00eats": { + "Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": { + "account_number": "6741" + }, + "Comptes courants bloqu\u00e9s": { + "account_number": "6742" + }, + "Int\u00e9r\u00eats sur obligations cautionn\u00e9es": { + "account_number": "6743" + }, + "Int\u00e9r\u00eats sur dettes commerciales": { + "account_number": "6744" + }, + "Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": { + "account_number": "6745" + }, + "Int\u00e9r\u00eats sur dettes diverses": { + "account_number": "6748" + }, + "account_number": "674" + }, + "Escomptes des effets de commerce": { + "account_number": "675" + }, + "Pertes de change financi\u00e8res": { + "account_number": "676" + }, + "Pertes sur titres de placement": { + "Pertes sur cessions de titres de placement": { + "account_number": "6771" + }, + "Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "6772" + }, + "account_number": "677" + }, + "Pertes et charges sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "6781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "6782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "6784" + }, + "account_number": "678" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "6791" + }, + "Sur titres de placement": { + "account_number": "6795" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "6798" + }, + "account_number": "679" + }, + "account_number": "67" + }, + "Dotations aux amortissements": { + "Dotations aux amortissements d\u2019exploitation": { + "Dotations aux amortissements des immobilisations incorporelles": { + "account_number": "6812" + }, + "Dotations aux amortissements des immobilisations corporelles": { + "account_number": "6813" + }, + "account_number": "681" + }, + "account_number": "68" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6911" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "account_number": "6913" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": { + "account_number": "6914" + }, + "account_number": "691" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6971" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": { + "account_number": "6972" + }, + "account_number": "697" + }, + "account_number": "69" + }, + "root_type": "Expense", + "account_number": "6" + }, + "Comptes de produits des activit\u00e9s ordinaires": { + "Ventes": { + "Ventes de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "7011" + }, + "Hors R\u00e9gion": { + "account_number": "7012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7014" + }, + "Sur internet": { + "account_number": "7015" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7019" + }, + "account_number": "701" + }, + "Ventes de produits finis": { + "Dans la R\u00e9gion": { + "account_number": "7021" + }, + "Hors R\u00e9gion": { + "account_number": "7022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7024" + }, + "Sur internet": { + "account_number": "7025" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7029" + }, + "account_number": "702" + }, + "Ventes de produits interm\u00e9diaires": { + "Dans la R\u00e9gion": { + "account_number": "7031" + }, + "Hors R\u00e9gion": { + "account_number": "7032" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7033" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7034" + }, + "Sur internet": { + "account_number": "7035" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7039" + }, + "account_number": "703" + }, + "Ventes de produits r\u00e9siduels": { + "Dans la R\u00e9gion": { + "account_number": "7041" + }, + "Hors R\u00e9gion": { + "account_number": "7042" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7043" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7044" + }, + "Sur internet": { + "account_number": "7045" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7049" + }, + "account_number": "704" + }, + "Travaux factur\u00e9s": { + "Dans la R\u00e9gion": { + "account_number": "7051" + }, + "Hors R\u00e9gion": { + "account_number": "7052" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7053" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7054" + }, + "Sur internet": { + "account_number": "7055" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7059" + }, + "account_number": "705" + }, + "Services vendus": { + "Dans la R\u00e9gion": { + "account_number": "7061" + }, + "Hors R\u00e9gion": { + "account_number": "7062" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7063" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7064" + }, + "Sur internet": { + "account_number": "7065" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7069" + }, + "account_number": "706" + }, + "Produits accessoires": { + "Ports, emballages perdus et autres frais factur\u00e9s": { + "account_number": "7071" + }, + "Commissions et courtages": { + "account_number": "7072" + }, + "Locations": { + "account_number": "7073" + }, + "Bonis sur reprises et cessions d\u2019emballages": { + "account_number": "7074" + }, + "Mise \u00e0 disposition de personnel": { + "account_number": "7075" + }, + "Redevances pour brevets, logiciels, marques et droits similaires": { + "account_number": "7076" + }, + "Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": { + "account_number": "7077" + }, + "Autres produits accessoires": { + "account_number": "7078" + }, + "account_number": "707" + }, + "account_number": "70" + }, + "Subventions d\u2019exploitation": { + "Sur produits \u00e0 l\u2019exportation": { + "account_number": "711" + }, + "Sur produits \u00e0 l\u2019importation": { + "account_number": "712" + }, + "Sur produits de p\u00e9r\u00e9quation": { + "account_number": "713" + }, + "Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": { + "account_number": "714" + }, + "Autres subventions d\u2019exploitation": { + "Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": { + "account_number": "7181" + }, + "Vers\u00e9es par les organismes internationaux": { + "account_number": "7182" + }, + "Vers\u00e9es par des tiers": { + "account_number": "7183" + }, + "account_number": "718" + }, + "account_number": "71" + }, + "Production immobilis\u00e9e": { + "Immobilisations incorporelles": { + "account_number": "721" + }, + "Immobilisations corporelles": { + "Immobilisations corporelles (hors actifs biologiques)": { + "account_number": "7221" + }, + "Immobilisations corporelles (actifs biologiques)": { + "account_number": "7222" + }, + "account_number": "722" + }, + "Production auto-consomm\u00e9e": { + "account_number": "724" + }, + "Immobilisations financi\u00e8res": { + "account_number": "726" + }, + "account_number": "72" + }, + "Variations des stocks de biens et de services produits": { + "Variations des stocks de produits en cours": { + "Produits en cours": { + "account_number": "7341" + }, + "Travaux en cours": { + "account_number": "7342" + }, + "account_number": "734" + }, + "Variations des en-cours de services": { + "\u00c9tudes en cours": { + "account_number": "7351" + }, + "Prestations de services en cours": { + "account_number": "7352" + }, + "account_number": "735" + }, + "Variations des stocks de produits finis": { + "account_number": "736" + }, + "Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "account_number": "7371" + }, + "Produits r\u00e9siduels": { + "account_number": "7372" + }, + "account_number": "737" + }, + "account_number": "73" + }, + "Autres produits": { + "Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "account_number": "751" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "7521" + }, + "B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "7525" + }, + "account_number": "752" + }, + "Produits des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "7541" + }, + "Immobilisations corporelles": { + "account_number": "7542" + }, + "account_number": "754" + }, + "Gains de change sur cr\u00e9ances et dettes commerciales": { + "account_number": "756" + }, + "Produits divers": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "7581" + }, + "Indemnit\u00e9s d\u2019assurances re\u00e7ues": { + "account_number": "7582" + }, + "Autres produits divers": { + "account_number": "7588" + }, + "account_number": "758" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "7591" + }, + "Sur stocks": { + "account_number": "7593" + }, + "Sur cr\u00e9ances": { + "account_number": "7594" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "account_number": "7598" + }, + "account_number": "759" + }, + "account_number": "75" + }, + "Revenus financiers et produits assimil\u00e9s": { + "Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "Int\u00e9r\u00eats de pr\u00eats": { + "account_number": "7712" + }, + "Int\u00e9r\u00eats sur cr\u00e9ances diverses": { + "account_number": "7713" + }, + "account_number": "771" + }, + "Revenus de participations et autres titres immobilis\u00e9s": { + "Revenus des titres de participation": { + "account_number": "7721" + }, + "Revenus autres titres immobilis\u00e9s": { + "account_number": "7722" + }, + "account_number": "772" + }, + "Escomptes obtenus": { + "account_number": "773" + }, + "Revenus de placement": { + "Revenus des obligations": { + "account_number": "7745" + }, + "Revenus des titres de placement": { + "account_number": "7746" + }, + "account_number": "774" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "account_number": "775" + }, + "Gains de change financiers": { + "account_number": "776" + }, + "Gains sur cessions de titres de placement": { + "account_number": "777" + }, + "Gains sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "7781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "7782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "7784" + }, + "account_number": "778" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "7791" + }, + "Sur titres de placement": { + "account_number": "7795" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "7798" + }, + "account_number": "779" + }, + "account_number": "77" + }, + "Transferts de charges": { + "Transferts de charges d\u2019exploitation": { + "account_number": "781" + }, + "Transferts de charges financi\u00e8res": { + "account_number": "787" + }, + "account_number": "78" + }, + "Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Pour risques et charges": { + "account_number": "7911" + }, + "Des immobilisations incorporelles": { + "account_number": "7913" + }, + "Des immobilisations corporelles": { + "account_number": "7914" + }, + "account_number": "791" + }, + "Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "Pour risques et charges": { + "account_number": "7971" + }, + "Des immobilisations financi\u00e8res": { + "account_number": "7972" + }, + "account_number": "797" + }, + "Reprises d\u2019amortissements": { + "account_number": "798" + }, + "Reprises de subventions d\u2019investissement": { + "account_number": "799" + }, + "account_number": "79" + }, + "root_type": "Income", + "account_number": "7" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "Valeurs comptables des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "811" + }, + "Immobilisations corporelles": { + "account_number": "812" + }, + "Immobilisations financi\u00e8res": { + "account_number": "816" + }, + "account_number": "81" + }, + "Charges hors activit\u00e9s ordinaires": { + "Charges HAO constat\u00e9es": { + "account_number": "831" + }, + "Charges li\u00e9es aux op\u00e9rations de restructuration": { + "account_number": "833" + }, + "Pertes sur cr\u00e9ances HAO": { + "account_number": "834" + }, + "Dons et lib\u00e9ralit\u00e9s accord\u00e9s": { + "account_number": "835" + }, + "Abandons de cr\u00e9ances consentis": { + "account_number": "836" + }, + "Charges li\u00e9es aux op\u00e9rations de liquidation": { + "account_number": "837" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "839" + }, + "account_number": "83" + }, + "Dotations hors activit\u00e9s ordinaires": { + "Dotations aux provisions r\u00e9glement\u00e9es": { + "account_number": "851" + }, + "Dotations aux amortissements HAO": { + "account_number": "852" + }, + "Dotations aux d\u00e9pr\u00e9ciations HAO": { + "account_number": "853" + }, + "Dotations aux provisions pour risques et charges HAO": { + "account_number": "854" + }, + "Autres dotations HAO": { + "account_number": "858" + }, + "account_number": "85" + }, + "Participation des travailleurs": { + "Participation l\u00e9gale aux b\u00e9n\u00e9fices": { + "account_number": "871" + }, + "Participation contractuelle aux b\u00e9n\u00e9fices": { + "account_number": "874" + }, + "Autres participations": { + "account_number": "878" + }, + "account_number": "87" + }, + "Imp\u00f4ts sur le r\u00e9sultat": { + "Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": { + "account_number": "8911" + }, + "Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": { + "account_number": "8912" + }, + "Activit\u00e9s exerc\u00e9es hors R\u00e9gion": { + "account_number": "8913" + }, + "account_number": "891" + }, + "Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "account_number": "892" + }, + "Imp\u00f4t minimum forfaitaire IMF": { + "account_number": "895" + }, + "D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "D\u00e9gr\u00e8vements": { + "account_number": "8991" + }, + "Annulations pour pertes r\u00e9troactives": { + "account_number": "8994" + }, + "account_number": "899" + }, + "account_number": "89" + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "Produits des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "821" + }, + "Immobilisations corporelles": { + "account_number": "822" + }, + "Immobilisations financi\u00e8res": { + "account_number": "826" + }, + "account_number": "82" + }, + "Produits hors activit\u00e9s ordinaires": { + "Produits HAO constat\u00e9s": { + "account_number": "841" + }, + "Produits li\u00e9s aux op\u00e9rations de restructuration": { + "account_number": "843" + }, + "Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": { + "account_number": "844" + }, + "Dons et lib\u00e9ralit\u00e9s obtenus": { + "account_number": "845" + }, + "Abandons de cr\u00e9ances obtenus": { + "account_number": "846" + }, + "Produits li\u00e9s aux op\u00e9rations de liquidation": { + "account_number": "847" + }, + "Transferts de charges HAO": { + "account_number": "848" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "849" + }, + "account_number": "84" + }, + "Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "Reprises de provisions r\u00e9glement\u00e9es": { + "account_number": "861" + }, + "Reprises d\u2019amortissements HAO": { + "account_number": "862" + }, + "Reprises de d\u00e9pr\u00e9ciations HAO": { + "account_number": "863" + }, + "Reprises de provisions pour risques et charges HAO": { + "account_number": "864" + }, + "Autres reprises HAO": { + "account_number": "868" + }, + "account_number": "86" + }, + "Subventions d\u2019\u00e9quilibre": { + "\u00c9tat": { + "account_number": "881" + }, + "Collectivit\u00e9s publiques": { + "account_number": "884" + }, + "Groupe": { + "account_number": "886" + }, + "Autres": { + "account_number": "888" + }, + "account_number": "88" + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/cf_plan_comptable.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/cf_plan_comptable.json new file mode 100644 index 00000000000..4871d5387af --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/cf_plan_comptable.json @@ -0,0 +1,1919 @@ +{ + "country_code": "cf", + "name": "Syscohada - Plan Comptable", + "tree": { + "1-Comptes de ressources durables": { + "10-Capital": { + "101-Capital social": { + "1011-Capital souscrit, non appel\u00e9": {}, + "1012-Capital souscrit, appel\u00e9, non vers\u00e9": {}, + "1013-Capital souscrit, appel\u00e9, vers\u00e9, non amorti": {}, + "1014-Capital souscrit, appel\u00e9, vers\u00e9, amorti": {}, + "1018-Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": {} + }, + "102-Capital par dotation": { + "1021-Dotation initiale": {}, + "1022-Dotations compl\u00e9mentaires": {}, + "1028-Autres dotations": {} + }, + "103-Capital personnel": {}, + "104-Compte de l\u2019exploitant": { + "1041-Apports temporaires": {}, + "1042-Op\u00e9rations courantes": {}, + "1043-R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": {}, + "1047-Pr\u00e9l\u00e8vements d\u2019autoconsommation": {}, + "1048-Autres pr\u00e9l\u00e8vements": {} + }, + "105-Primes li\u00e9es au capital social": { + "1051-Primes d\u2019\u00e9mission": {}, + "1052-Primes d\u2019apport": {}, + "1053-Primes de fusion": {}, + "1054-Primes de conversion": {}, + "1058-Autres primes": {} + }, + "106-\u00c9carts de r\u00e9\u00e9valuation": { + "1061-\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": {}, + "1062-\u00c9carts de r\u00e9\u00e9valuation libre": {} + }, + "109-Apporteurs, capital souscrit, non appel\u00e9": {} + }, + "11-R\u00e9serves": { + "111-R\u00e9serve l\u00e9gale": {}, + "112-R\u00e9serves statutaires ou contractuelles": {}, + "113-R\u00e9serves r\u00e9glement\u00e9es": { + "1131-R\u00e9serves de plus-values nettes \u00e0 long terme": {}, + "1132-R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {}, + "1133-R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": {}, + "1134-R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": {}, + "1135-Autres r\u00e9serves r\u00e9glement\u00e9es": {} + }, + "118-Autres r\u00e9serves": { + "1181-R\u00e9serves facultatives": {}, + "1188-R\u00e9serves diverses": {} + } + }, + "12-Report \u00e0 nouveau": { + "121-Report \u00e0 nouveau cr\u00e9diteur": {}, + "129-Report \u00e0 nouveau d\u00e9biteur": { + "1291-Perte nette \u00e0 reporter": {}, + "1292-Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": {} + } + }, + "13-R\u00e9sultat net de l\u2019exercice": { + "130-R\u00e9sultat en instance d\u2019affectation": { + "1301-R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": {}, + "1309-R\u00e9sultat en instance d\u2019affectation : perte": {} + }, + "131-R\u00e9sultat net : b\u00e9n\u00e9fice": {}, + "132-Marge commerciale (MC)": {}, + "133-Valeur ajout\u00e9e (VA)": {}, + "134-Exc\u00e9dent brut d\u2019exploitation (EBE)": {}, + "135-R\u00e9sultat d\u2019exploitation (RE)": {}, + "136-R\u00e9sultat financier (RF)": {}, + "137-R\u00e9sultat des activit\u00e9s ordinaires (RAO)": {}, + "138-R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "1381-R\u00e9sultat de fusion": {}, + "1382-R\u00e9sultat d\u2019apport partiel d\u2019actif": {}, + "1383-R\u00e9sultat de scission": {}, + "1384-R\u00e9sultat de liquidation": {} + }, + "139-R\u00e9sultat net : perte": {} + }, + "14-Subventions d\u2019investissement": { + "141-Subventions d\u2019\u00e9quipement": { + "1411-\u00c9tat": {}, + "1412-R\u00e9gions": {}, + "1413-D\u00e9partements": {}, + "1414-Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": {}, + "1415-Entit\u00e9s publiques ou mixtes": {}, + "1416-Entit\u00e9s et organismes priv\u00e9s": {}, + "1417-Organismes internationaux": {}, + "1418-Autres": {} + }, + "148-Autres subventions d\u2019investissement": {} + }, + "15-Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "151-Amortissements d\u00e9rogatoires": {}, + "152-Plus-values de cession \u00e0 r\u00e9investir": {}, + "153-Fonds r\u00e9glement\u00e9s": { + "1531-Fonds National": {}, + "1532-Pr\u00e9l\u00e8vement pour le Budget": {} + }, + "154-Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": {}, + "155-Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "1551-Reconstitution des gisements miniers et p\u00e9troliers": {} + }, + "156-Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "1561-Hausse de prix": {}, + "1562-Fluctuation des cours": {} + }, + "157-Provisions pour investissement": {}, + "158-Autres provisions et fonds r\u00e9glement\u00e9s": {} + }, + "16-Emprunts et dettes assimil\u00e9es": { + "161-Emprunts obligataires": { + "1611-Emprunts obligataires ordinaires": {}, + "1612-Emprunts obligataires convertibles en actions": {}, + "1613-Emprunts obligataires remboursables en actions": {}, + "1618-Autres emprunts obligataires": {} + }, + "162-Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "163-Avances re\u00e7ues de l\u2019\u00c9tat": {}, + "164-Avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "165-D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "1651-D\u00e9p\u00f4ts": {}, + "1652-Cautionnements": {} + }, + "166-Int\u00e9r\u00eats courus": { + "1661-Sur emprunts obligataires": {}, + "1662-Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "1663-Sur avances re\u00e7ues de l\u2019\u00c9tat": {}, + "1664-Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "1665-Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": {}, + "1667-Sur avances assorties de conditions particuli\u00e8res": {}, + "1668-Sur autres emprunts et dettes": {} + }, + "167-Avances assorties de conditions particuli\u00e8res": { + "1671-Avances bloqu\u00e9es pour augmentation du capital": {}, + "1672-Avances conditionn\u00e9es par l\u2019\u00c9tat": {}, + "1673-Avances conditionn\u00e9es par les autres organismes africains": {}, + "1674-Avances conditionn\u00e9es par les organismes internationaux": {} + }, + "168-Autres emprunts et dettes": { + "1681-Rentes viag\u00e8res capitalis\u00e9es": {}, + "1682-Billets de fonds": {}, + "1683-Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": {}, + "1684-Emprunts participatifs": {}, + "1685-Participation des travailleurs aux b\u00e9n\u00e9fices": {}, + "1686-Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": {} + } + }, + "17-Dettes de location acquisition": { + "172-Dettes de location acquisition / cr\u00e9dit bail immobilier": {}, + "173-Dettes de location acquisition / cr\u00e9dit bail mobilier": {}, + "174-Dettes de location acquisition / location de vente": {}, + "176-Int\u00e9r\u00eats courus": { + "1762-Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": {}, + "1763-Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": {}, + "1764-Sur dettes de location acquisition / location-vente": {}, + "1768-Sur autres dettes de location acquisition": {} + }, + "178-Autres dettes de location acquisition": {} + }, + "18-Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "181-Dettes li\u00e9es \u00e0 des participations": { + "1811-Dettes li\u00e9es \u00e0 des participations (groupe)": {}, + "1812-Dettes li\u00e9es \u00e0 des participations (hors groupe)": {} + }, + "182-Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "183-Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": {}, + "184-Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "185-Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "186-Comptes de liaison charges": {}, + "187-Comptes de liaison produits": {}, + "188-Comptes de liaison des soci\u00e9t\u00e9s en participation": {} + }, + "19-Provisions pour risques et charges": { + "191-Provisions pour litiges": {}, + "192-Provisions pour garanties donn\u00e9es aux clients": {}, + "193-Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": {}, + "194-Provisions pour pertes de change": {}, + "195-Provisions pour imp\u00f4ts": {}, + "196-Provisions pour pensions et obligations similaires": { + "1961-Provisions pour pensions et obligations similaires engagement de retraite": {}, + "1962-Actif du r\u00e9gime de retraite": {} + }, + "197-Provisions pour restructuration": {}, + "198-Autres provisions pour risques et charges": { + "1981-Provisions pour amendes et p\u00e9nalit\u00e9s": {}, + "1983-Provisions pour propre assureur": {}, + "1984-Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "1985-Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": {}, + "1988-Provisions pour divers risques et charges": {} + } + }, + "root_type": "Equity" + }, + "2-Comptes d\u2019actif immobilis\u00e9": { + "21-Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "211-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "212-Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "2121-Brevets": { + "account_type": "Fixed Asset" + }, + "2122-Licences": { + "account_type": "Fixed Asset" + }, + "2123-Concessions de service public": { + "account_type": "Fixed Asset" + }, + "2128-Autres concessions et droits similaires": { + "account_type": "Fixed Asset" + } + }, + "213-Logiciels et sites internet": { + "account_type": "Fixed Asset", + "2131-Logiciels": { + "account_type": "Fixed Asset" + }, + "2132-Sites internet": { + "account_type": "Fixed Asset" + } + }, + "214-Marques": { + "account_type": "Fixed Asset" + }, + "215-Fonds commercial": { + "account_type": "Fixed Asset" + }, + "216-Droit au bail": { + "account_type": "Fixed Asset" + }, + "217-Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset" + }, + "218-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "2181-Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset" + }, + "2182-Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset" + }, + "2183-Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset" + }, + "2184-Co\u00fbts des franchises": { + "account_type": "Fixed Asset" + }, + "2188-Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset" + } + }, + "219-Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "2191-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "2193-Logiciels et internet": { + "account_type": "Fixed Asset" + }, + "2198-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset" + } + } + }, + "22-Terrains": { + "account_type": "Fixed Asset", + "221-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "2211-Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset" + }, + "2212-Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset" + }, + "2218-Autres terrains": { + "account_type": "Fixed Asset" + } + }, + "222-Terrains nus": { + "account_type": "Fixed Asset", + "2221-Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset" + }, + "2228-Autres terrains nus": { + "account_type": "Fixed Asset" + } + }, + "223-Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "2231-Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset" + }, + "2232-Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset" + }, + "2234-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset" + }, + "2235-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset" + }, + "2238-Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset" + } + }, + "224-Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "2241-Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset" + }, + "2245-Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset" + }, + "2248-Autres travaux": { + "account_type": "Fixed Asset" + } + }, + "225-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "2251-Carri\u00e8res": { + "account_type": "Fixed Asset" + } + }, + "226-Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "2261-Parkings": { + "account_type": "Fixed Asset" + } + }, + "227-Terrains mis en concession": { + "account_type": "Fixed Asset" + }, + "228-Autres terrains": { + "account_type": "Fixed Asset", + "2281-Terrains immeubles de placement": { + "account_type": "Fixed Asset" + }, + "2285-Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset" + }, + "2286-Terrains de location acquisition": { + "account_type": "Fixed Asset" + }, + "2288-Divers terrains": { + "account_type": "Fixed Asset" + } + }, + "229-Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "2291-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset" + }, + "2292-Terrains nus": { + "account_type": "Fixed Asset" + }, + "2295-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset" + }, + "2298-Autres terrains": { + "account_type": "Fixed Asset" + } + } + }, + "23-B\u00e2timents, installations techniques et agencements": { + "231-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "2311-B\u00e2timents industriels": {}, + "2312-B\u00e2timents agricoles": {}, + "2313-B\u00e2timents administratifs et commerciaux": {}, + "2314-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2315-B\u00e2timents immeubles de placement": {}, + "2316-B\u00e2timents de location acquisition": {} + }, + "232-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "2321-B\u00e2timents industriels": {}, + "2322-B\u00e2timents agricoles": {}, + "2323-B\u00e2timents administratifs et commerciaux": {}, + "2324-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2325-B\u00e2timents immeubles de placement": {}, + "2326-B\u00e2timents de location acquisition": {} + }, + "233-Ouvrages d\u2019infrastructure": { + "2331-Voies de terre": {}, + "2332-Voies de fer": {}, + "2333-Voies d\u2019eau": {}, + "2334-Barrages, Digues": {}, + "2335-Pistes d\u2019a\u00e9rodrome": {}, + "2338-Autres ouvrages d\u2019infrastructures": {} + }, + "234-Am\u00e9nagements, agencements et installations techniques": { + "2341-Installations complexes sp\u00e9cialis\u00e9es sur sol propre": {}, + "2342-Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": {}, + "2343-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": {}, + "2344-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": {}, + "2345-Am\u00e9nagements et agencements des b\u00e2timents": {} + }, + "235-Am\u00e9nagements de bureaux": { + "2351-Installations g\u00e9n\u00e9rales": {}, + "2358-Autres am\u00e9nagements de bureaux": {} + }, + "237-B\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "238-Autres installations et agencements": {}, + "239-B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "2391-B\u00e2timents en cours": {}, + "2392-Installations en cours": {}, + "2393-Ouvrages d\u2019infrastructure en cours": {}, + "2394-Am\u00e9nagements et agencements et installations techniques en cours": {}, + "2395-Am\u00e9nagements de bureaux en cours": {}, + "2398-Autres installations et agencements en cours": {} + } + }, + "24-Mat\u00e9riel, mobilier et actifs biologiques": { + "241-Mat\u00e9riel et outillage industriel et commercial": { + "2411-Mat\u00e9riel industriel": {}, + "2412-Outillage industriel": {}, + "2413-Mat\u00e9riel commercial": {}, + "2414-Outillage commercial": {}, + "2416-Mat\u00e9riel & outillage industriel et commercial de location-acquisition": {} + }, + "242-Mat\u00e9riel et outillage agricole": { + "2421-Mat\u00e9riel agricole": {}, + "2422-Outillage agricole": {}, + "2426-Mat\u00e9riel & outillage agricole de location-acquisition": {} + }, + "243-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "244-Mat\u00e9riel et mobilier": { + "2441-Mat\u00e9riel de bureau": {}, + "2442-Mat\u00e9riel informatique": {}, + "2443-Mat\u00e9riel bureautique": {}, + "2444-Mobilier de bureau": {}, + "2445-Mat\u00e9riel et mobilier immeubles de placement": {}, + "2446-Mat\u00e9riel et mobilier de location acquisition": {}, + "2447-Mat\u00e9riel et mobilier des logements du personnel": {} + }, + "245-Mat\u00e9riel de transport": { + "2451-Mat\u00e9riel automobile": {}, + "2452-Mat\u00e9riel ferroviaire": {}, + "2453-Mat\u00e9riel fluvial, lagunaire": {}, + "2454-Mat\u00e9riel naval": {}, + "2455-Mat\u00e9riel a\u00e9rien": {}, + "2456-Mat\u00e9riel de transport de location-acquisition": {}, + "2457-Mat\u00e9riel hippomobile": {}, + "2458-Autres mat\u00e9riels de transport": {} + }, + "246-Actifs biologiques": { + "2461-Cheptel, animaux de trait": {}, + "2462-Cheptel, animaux reproducteurs": {}, + "2463-Animaux de garde": {}, + "2465-Plantations agricoles": {}, + "2468-Autres actifs biologiques": {} + }, + "247-Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "2471-Agencements et am\u00e9nagements du mat\u00e9riel": {}, + "2472-Agencements et am\u00e9nagements des actifs biologiques": {}, + "2478-Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": {} + }, + "248-Autres mat\u00e9riels et mobiliers": { + "2481-Collections et \u0153uvres d\u2019art": {}, + "2488-Divers mat\u00e9riels mobiliers": {} + }, + "249-Mat\u00e9riels et actifs biologiques en cours": { + "2491-Mat\u00e9riel et outillage industriel et commercial": {}, + "2492-Mat\u00e9riel et outillage agricole": {}, + "2493-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2494-Mat\u00e9riel et mobilier de bureau": {}, + "2495-Mat\u00e9riel de transport": {}, + "2496-Actifs biologiques": {}, + "2497-Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": {}, + "2498-Autres mat\u00e9riels et actifs biologiques en cours": {} + } + }, + "25-Avances et acomptes vers\u00e9s sur immobilisations": { + "251-Avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "252-Avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "26-Titres de participation": { + "261-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "262-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "263-Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "265-Participations dans des organismes professionnels": {}, + "266-Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {}, + "268-Autres titres de participation": {} + }, + "27-Autres immobilisations financi\u00e8res": { + "271-Pr\u00eats et cr\u00e9ances": { + "2711-Pr\u00eats participatifs": {}, + "2712-Pr\u00eats aux associ\u00e9s": {}, + "2713-Billets de fonds": {}, + "2714-Titres pr\u00eat\u00e9s": {}, + "2718-Autres pr\u00eats et cr\u00e9ances": {} + }, + "272-Pr\u00eats au personnel": { + "2721-Pr\u00eats immobiliers": {}, + "2722-Pr\u00eats mobiliers et d\u2019installation": {}, + "2728-Autres pr\u00eats au personnel": {} + }, + "273-Cr\u00e9ances sur l\u2019\u00c9tat": { + "2731-Retenues de garantie": {}, + "2733-Fonds r\u00e9glement\u00e9": {}, + "2734-Cr\u00e9ances sur le conc\u00e9dant": {}, + "2738-Autres cr\u00e9ances sur l\u2019\u00c9tat": {} + }, + "274-Titres immobilis\u00e9s": { + "2741-Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": {}, + "2742-Titres participatifs": {}, + "2743-Certificats d\u2019investissement": {}, + "2744-Parts de fonds commun de placement (FCP)": {}, + "2745-Obligations": {}, + "2746-Actions ou parts propres": {}, + "2748-Autres titres immobilis\u00e9s": {} + }, + "275-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "2751-D\u00e9p\u00f4ts pour loyers d\u2019avance": {}, + "2752-D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": {}, + "2753-D\u00e9p\u00f4ts pour l\u2019eau": {}, + "2754-D\u00e9p\u00f4ts pour le gaz": {}, + "2755-D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": {}, + "2756-Cautionnements sur march\u00e9s publics": {}, + "2757-Cautionnements sur autres op\u00e9rations": {}, + "2758-Autres d\u00e9p\u00f4ts et cautionnements": {} + }, + "276-Int\u00e9r\u00eats courus": { + "2761-Pr\u00eats et cr\u00e9ances non commerciales": {}, + "2762-Pr\u00eats au personnel": {}, + "2763-Cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2764-Titres immobilis\u00e9s": {}, + "2765-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2767-Cr\u00e9ances rattach\u00e9es \u00e0 des participations": {}, + "2768-Immobilisations financi\u00e8res diverses": {} + }, + "277-Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "2771-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": {}, + "2772-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": {}, + "2773-Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "2774-Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {} + }, + "278-Immobilisations financi\u00e8res diverses": { + "2781-Cr\u00e9ances diverses groupe": {}, + "2782-Cr\u00e9ances diverses hors groupe": {}, + "2784-Banques d\u00e9p\u00f4ts \u00e0 terme": {}, + "2785-Or et m\u00e9taux pr\u00e9cieux": {}, + "2788-Autres immobilisations financi\u00e8res": {} + } + }, + "28-Amortissements": { + "account_type": "Accumulated Depreciation", + "281-Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "2811-Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation" + }, + "2812-Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation" + }, + "2813-Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation" + }, + "2814-Amortissements des marques": { + "account_type": "Accumulated Depreciation" + }, + "2815-Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation" + }, + "2816-Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation" + }, + "2817-Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation" + }, + "2818-Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation" + } + }, + "282-Amortissements des terrains": { + "2824-Amortissements des travaux de mise en valeur des terrains": {} + }, + "283-Amortissements des b\u00e2timents, installations techniques et agencements": { + "2831-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2832-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2833-Amortissements des ouvrages d\u2019infrastructure": {}, + "2834-Amortissements des am\u00e9nagements, agencements et installations techniques": {}, + "2835-Amortissements des am\u00e9nagements de bureaux": {}, + "2837-Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2838-Amortissements des autres installations et agencements": {} + }, + "284-Amortissements du mat\u00e9riel": { + "2841-Amortissements du mat\u00e9riel et outillage industriel et commercial": {}, + "2842-Amortissements du mat\u00e9riel et outillage agricole": {}, + "2843-Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2844-Amortissements du mat\u00e9riel et mobilier": {}, + "2845-Amortissements du mat\u00e9riel de transport": {}, + "2846-Amortissements des actifs biologiques": {}, + "2847-Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2848-Amortissements des autres mat\u00e9riels": {} + } + }, + "29-D\u00e9pr\u00e9ciations des immobilisations": { + "291-D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "2911-D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": {}, + "2912-D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": {}, + "2913-D\u00e9pr\u00e9ciations des logiciels et sites internet": {}, + "2914-D\u00e9pr\u00e9ciations des marques": {}, + "2915-D\u00e9pr\u00e9ciations du fonds commercial": {}, + "2916-D\u00e9pr\u00e9ciations du droit au bail": {}, + "2917-D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": {}, + "2918-D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": {}, + "2919-D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": {} + }, + "292-D\u00e9pr\u00e9ciations des terrains": { + "2921-D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": {}, + "2922-D\u00e9pr\u00e9ciations des terrains nus": {}, + "2923-D\u00e9pr\u00e9ciations des terrains b\u00e2tis": {}, + "2924-D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": {}, + "2925-D\u00e9pr\u00e9ciations des terrains de gisement": {}, + "2926-D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": {}, + "2927-D\u00e9pr\u00e9ciations des terrains mis en concession": {}, + "2928-D\u00e9pr\u00e9ciations des autres terrains": {}, + "2929-D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": {} + }, + "293-D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "2931-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2932-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2933-D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": {}, + "2934-D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": {}, + "2935-D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": {}, + "2937-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2938-D\u00e9pr\u00e9ciations des autres installations et agencements": {}, + "2939-D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": {} + }, + "294-D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "2941-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": {}, + "2942-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": {}, + "2943-D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2944-D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": {}, + "2945-D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": {}, + "2946-D\u00e9pr\u00e9ciations des actifs biologiques": {}, + "2947-D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2948-D\u00e9pr\u00e9ciations des autres mat\u00e9riels": {}, + "2949-D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": {} + }, + "295-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "2951-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "2952-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "296-D\u00e9pr\u00e9ciations des titres de participation": { + "2961-D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "2962-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "2963-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "2965-D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": {}, + "2966-D\u00e9pr\u00e9ciations des parts dans des GIE": {}, + "2968-D\u00e9pr\u00e9ciations des autres titres de participation": {} + }, + "297-D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "2971-D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": {}, + "2972-D\u00e9pr\u00e9ciations des pr\u00eats au personnel": {}, + "2973-D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2974-D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": {}, + "2975-D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2977-D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": {}, + "2978-D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": {} + } + }, + "root_type": "Asset" + }, + "3-Comptes de Stocks": { + "31-Marchandises": { + "311-Marchandises A": { + "3111-Marchandises A1": {}, + "3112-Marchandises A2": {} + }, + "312-Marchandises B": { + "3121-Marchandises B1": {}, + "3122-Marchandises B2": {} + }, + "313-Actifs biologiques": { + "3131-Animaux": {}, + "3132-V\u00e9g\u00e9taux": {} + }, + "318-Marchandises hors activit\u00e9s ordinaires (HAO)": {} + }, + "32-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "321-Mati\u00e8res A": {}, + "322-Mati\u00e8res B": {}, + "323-Fournitures (A, B)": {} + }, + "33-Autres approvisionnements": { + "331-Mati\u00e8res consommables": {}, + "332-Fournitures d\u2019atelier et d\u2019usine": {}, + "333-Fournitures de magasin": {}, + "334-Fournitures de bureau": {}, + "335-Emballages": { + "3351-Emballages perdus": {}, + "3352-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "3353-Emballages \u00e0 usage mixte": {}, + "3358-Autres emballages": {} + }, + "338-Autres mati\u00e8res": {} + }, + "34-Produits en cours": { + "341-Produits en cours": { + "3411-Produits en cours P1": {}, + "3412-Produits en cours P2": {} + }, + "342-Travaux en cours": { + "3421-Travaux en cours T1": {}, + "3422-Travaux en cours T2": {} + }, + "343-Produits interm\u00e9diaires en cours": { + "3431-Produits interm\u00e9diaires A": {}, + "3432-Produits interm\u00e9diaires B": {} + }, + "344-Produits r\u00e9siduels en cours": { + "3441-Produits r\u00e9siduels A": {}, + "3442-Produits r\u00e9siduels B": {} + }, + "345-Actifs biologiques en cours": { + "3451-Animaux": {}, + "3452-V\u00e9g\u00e9taux": {} + } + }, + "35-Services en cours": { + "351-\u00c9tudes en cours": { + "3511-\u00c9tudes en cours E1": {}, + "3512-\u00c9tudes en cours E2": {} + }, + "352-Prestations de services en cours": { + "3521-Prestations de services S1": {}, + "3522-Prestations de services S2": {} + } + }, + "36-Produits finis": { + "361-Produits finis A": {}, + "362-Produits finis B": {}, + "363-Actifs biologiques": { + "3631-Animaux": {}, + "3632-V\u00e9g\u00e9taux": {}, + "3638-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "37-Produits interm\u00e9diaires et r\u00e9siduels": { + "371-Produits interm\u00e9diaires": { + "3711-Produits interm\u00e9diaires A": {}, + "3712-Produits interm\u00e9diaires B": {} + }, + "372-Produits r\u00e9siduels": { + "3721-D\u00e9chets": {}, + "3722-Rebuts": {}, + "3723-Mati\u00e8res de R\u00e9cup\u00e9ration": {} + }, + "373-Actifs biologiques": { + "3731-Animaux": {}, + "3732-V\u00e9g\u00e9taux": {}, + "3738-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "38-Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "381-Marchandises en cours de route": {}, + "382-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": {}, + "383-Autres approvisionnements en cours de route": {}, + "386-Produits finis en cours de route": {}, + "387-Stock en consignation ou en d\u00e9p\u00f4t": { + "3871-Stock en consignation": {}, + "3872-Stock en d\u00e9p\u00f4t": {} + }, + "388-Stock provenant d\u2019immobilisations mises hors service ou au rebut": {} + }, + "39-D\u00e9pr\u00e9ciations des stocks et encours de production": { + "391-D\u00e9pr\u00e9ciations des stocks de marchandises": {}, + "392-D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "393-D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": {}, + "394-D\u00e9pr\u00e9ciations des productions en cours": {}, + "395-D\u00e9pr\u00e9ciations des services en cours": {}, + "396-D\u00e9pr\u00e9ciations des stocks de produits finis": {}, + "397-D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": {}, + "398-D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": {} + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "409-Fournisseurs d\u00e9biteurs": { + "4091-Fournisseurs Avances et acomptes vers\u00e9s": {}, + "4092-Fournisseurs Groupe avances et acomptes vers\u00e9s": {}, + "4093-Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": {}, + "4094-Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": {}, + "4098-Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": {} + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "411-Clients": { + "4111-Clients": { + "account_type": "Receivable" + }, + "4112-Clients groupe": { + "account_type": "Receivable" + }, + "4114-Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable" + }, + "4115-Clients, organismes internationaux": { + "account_type": "Receivable" + }, + "4116-Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable" + }, + "4117-Client, retenues de garantie": { + "account_type": "Receivable" + }, + "4118-Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "412-Clients, effets \u00e0 recevoir en portefeuille": { + "4121-Clients, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4122-Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4124-\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4125-Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "413-Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "4131-Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable" + }, + "4132-Clients, effets impay\u00e9s": { + "account_type": "Receivable" + }, + "4133-Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable" + }, + "4138-Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "414-Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "4141-Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4142-Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable" + }, + "4146-Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4147-Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "415-Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable" + }, + "416-Cr\u00e9ances clients litigieuses ou douteuses": { + "4161-Cr\u00e9ances litigieuses": { + "account_type": "Receivable" + }, + "4162-Cr\u00e9ances douteuses": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "418-Clients, produits \u00e0 recevoir": { + "4181-Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable" + }, + "4186-Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "421-Personnel, avances et acomptes": { + "4211-Personnel, avances": {}, + "4212-Personnel, acomptes": {}, + "4213-Frais avanc\u00e9s et fournitures au personnel": {} + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "4311-Prestations familiales": {}, + "4312-Accidents de travail": {}, + "4313-Caisse de retraite obligatoire": {}, + "4314-Caisse de retraite facultative": {}, + "4318-Autres cotisations sociales": {} + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "4331-Mutuelle": {}, + "4332-Assurances retraite": {}, + "4333-Assurances et organismes de sant\u00e9": {} + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4387-Produits \u00e0 recevoir": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "443-\u00c9tat, TVA factur\u00e9e": { + "4431-TVA factur\u00e9e sur ventes": {}, + "4432-TVA factur\u00e9e sur prestations de services": {}, + "4433-TVA factur\u00e9e sur travaux": {}, + "4434-TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": {}, + "4435-TVA sur factures \u00e0 \u00e9tablir": {} + }, + "445-\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "4451-TVA r\u00e9cup\u00e9rable sur immobilisations": {}, + "4452-TVA r\u00e9cup\u00e9rable sur achats": {}, + "4453-TVA r\u00e9cup\u00e9rable sur transport": {}, + "4454-TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": {}, + "4455-TVA r\u00e9cup\u00e9rable sur factures non parvenues": {}, + "4456-TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": {} + }, + "448-\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "4486-Charges \u00e0 payer": {}, + "4487-Produits \u00e0 recevoir": {} + }, + "449-\u00c9tat, cr\u00e9ances et dettes diverses": { + "4491-\u00c9tat, obligations cautionn\u00e9es": {}, + "4492-\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": {}, + "4493-\u00c9tat, fonds de dotation \u00e0 recevoir": {}, + "4494-\u00c9tat, subventions investissement \u00e0 recevoir": {}, + "4495-\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": {}, + "4496-\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": {}, + "4497-\u00c9tat, avances sur subventions": {}, + "4499-\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": {} + } + }, + "45-Organismes internationaux (ACTIF)": { + "451-Op\u00e9rations avec les organismes africains": {}, + "452-Op\u00e9rations avec les autres organismes internationaux": {}, + "458-Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "4581-Organismes internationaux, fonds de dotation \u00e0 recevoir": {}, + "4582-Organismes internationaux, subventions \u00e0 recevoir": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "4613-Apporteurs, capital appel\u00e9, non vers\u00e9": {}, + "4614-Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": {}, + "4618-Apporteurs, titres \u00e0 \u00e9changer": {} + }, + "467-Apporteurs, restant d\u00fb sur capital appel\u00e9": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "4721-Cr\u00e9ances sur cessions de titres de placement": {}, + "4726-Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": {} + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "4731-Mandants": {}, + "4732-Mandataires": {}, + "4733-Commettants": {}, + "4734-Commissionnaires": {}, + "4739-\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "4747-Compte de r\u00e9partition p\u00e9riodique des produits": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "4751-Compte actif": { + "account_type": "Temporary" + } + }, + "476-Charges constat\u00e9es d\u2019avance": {}, + "478-\u00c9carts de conversion actif": { + "4781-Diminution des cr\u00e9ances d\u2019exploitation": {}, + "4782-Diminution des cr\u00e9ances financi\u00e8res": {}, + "4783-Augmentation des dettes d\u2019exploitation": {}, + "4784-Augmentation des dettes financi\u00e8res": {}, + "4786-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4788-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "485-Cr\u00e9ances sur cessions d\u2019immobilisations": { + "4851-En compte, immobilisations incorporelles": {}, + "4852-En compte, immobilisations corporelles": {}, + "4853-Effets \u00e0 recevoir, immobilisations incorporelles": {}, + "4854-Effets \u00e0 recevoir, immobilisations corporelles": {}, + "4855-Effets escompt\u00e9s non \u00e9chus": {}, + "4857-Retenues de garantie": {}, + "4858-Factures \u00e0 \u00e9tablir": {} + }, + "488-Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": {} + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "491-D\u00e9pr\u00e9ciations des comptes clients": { + "4911-Cr\u00e9ances litigieuses": {}, + "4912-Cr\u00e9ances douteuses": {} + }, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {}, + "496-D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "4962-Associ\u00e9s, comptes courants": {}, + "4963-Associ\u00e9s, op\u00e9rations faites en commun": {}, + "4966-Groupe, comptes courants": {} + }, + "497-D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": {}, + "498-D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "4985-Cr\u00e9ances sur cessions d\u2019immobilisations": {}, + "4986-Cr\u00e9ances sur cessions de titres de placement": {}, + "4988-Autres cr\u00e9ances HAO": {} + }, + "499-Provisions pour risques \u00e0 court terme": { + "4991-Sur op\u00e9rations d\u2019exploitation": {}, + "4997-Sur op\u00e9rations financi\u00e8res": {}, + "4998-Sur op\u00e9rations HAO": {} + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "401-Fournisseurs, dettes en compte": { + "4011-Fournisseurs": { + "account_type": "Payable" + }, + "4012-Fournisseurs groupe": { + "account_type": "Payable" + }, + "4013-Fournisseurs sous-traitants": { + "account_type": "Payable" + }, + "4016-Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable" + }, + "4017-Fournisseur, retenues de garantie": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "402-Fournisseurs, effets \u00e0 payer": { + "4021-Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable" + }, + "4022-Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable" + }, + "4023-Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "404-Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "4041-Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4042-Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable" + }, + "4046-Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4047-Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "408-Fournisseurs, factures non parvenues": { + "4081-Fournisseurs": { + "account_type": "Stock Received But Not Billed" + }, + "4082-Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed" + }, + "4083-Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed" + }, + "4086-Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "419-Clients cr\u00e9diteurs": { + "4191-Clients, avances et acomptes re\u00e7us": {}, + "4192-Clients groupe, avances et acomptes re\u00e7us": {}, + "4194-Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": {}, + "4198-Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": {} + } + }, + "42-Personnel (PASSIF)": { + "422-Personnel, r\u00e9mun\u00e9rations dues": {}, + "423-Personnel, oppositions, saisies-arr\u00eats": { + "4231-Personnel, oppositions": {}, + "4232-Personnel, saisies-arr\u00eats": {}, + "4233-Personnel, avis \u00e0 tiers d\u00e9tenteur": {} + }, + "424-Personnel, \u0153uvres sociales internes": { + "4241-Assistance m\u00e9dicale": {}, + "4242-Allocations familiales": {}, + "4245-Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": {}, + "4248-Autres \u0153uvres sociales internes": {} + }, + "425-Repr\u00e9sentants du personnel": { + "4251-D\u00e9l\u00e9gu\u00e9s du personnel": {}, + "4252-Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": {}, + "4258-Autres repr\u00e9sentants du personnel": {} + }, + "426-Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "4261-Participation aux b\u00e9n\u00e9fices": {}, + "4264-Participation au capital": {} + }, + "427-Personnel d\u00e9p\u00f4ts": {}, + "428-Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "4281-Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": {}, + "4286-Autres charges \u00e0 payer": {}, + "4287-Produits \u00e0 recevoir": {} + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4381-Charges sociales sur gratifications \u00e0 payer": {}, + "4382-Charges sociales sur cong\u00e9s \u00e0 payer": {}, + "4386-Autres charges \u00e0 payer": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "441-\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": {}, + "442-\u00c9tat, autres imp\u00f4ts et taxes": { + "4421-Imp\u00f4ts et taxes d\u2019\u00c9tat": {}, + "4422-Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": {}, + "4423-Imp\u00f4ts et taxes recouvrables sur des obligataires": {}, + "4424-Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": {}, + "4426-Droits de douane": {}, + "4428-Autres imp\u00f4ts et taxes": {} + }, + "444-\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "4441-\u00c9tat, TVA due": {}, + "4449-\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": {} + }, + "446-\u00c9tat, autres taxes sur le chiffre d\u2019affaires": {}, + "447-\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "4471-Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": {}, + "4472-Imp\u00f4ts sur salaires": {}, + "4473-Contribution nationale": {}, + "4474-Contribution nationale de solidarit\u00e9": {}, + "4478-Autres imp\u00f4ts et contributions": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "4611-Apporteurs, apports en nature": {}, + "4612-Apporteurs, apports en num\u00e9raire": {}, + "4615-Apporteurs, versements re\u00e7us sur augmentation de capital": {}, + "4616-Apporteurs, versements anticip\u00e9s": {}, + "4617-Apporteurs d\u00e9faillants": {}, + "4619-Apporteurs, capital \u00e0 rembourser": {} + }, + "462-Associ\u00e9s, comptes courants": { + "4621-Principal": {}, + "4626-Int\u00e9r\u00eats courus": {} + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "4631-Op\u00e9rations courantes": {}, + "4636-Int\u00e9r\u00eats courus": {} + }, + "465-Associ\u00e9s, dividendes \u00e0 payer": {}, + "466-Groupe, comptes courants": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "4711-D\u00e9biteurs divers": {}, + "4712-Cr\u00e9diteurs divers": {}, + "4713-Obligataires": {}, + "4715-R\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "4716-Compte d\u2019affacturage": {}, + "4717-D\u00e9biteurs divers retenues de garantie": {}, + "4718-Apport, compte de fusion et op\u00e9rations assimil\u00e9es": {}, + "4719-Bons de souscription d\u2019actions et d\u2019obligations": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "4746-Compte de r\u00e9partition p\u00e9riodique des charges": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "4752-Compte passif": {} + }, + "477-Produits constat\u00e9s d\u2019avance": {}, + "479-\u00c9carts de conversion passif": { + "4791-Augmentation des cr\u00e9ances d\u2019exploitation": {}, + "4792-Augmentation des cr\u00e9ances financi\u00e8res": {}, + "4793-Diminution des dettes d\u2019exploitation": {}, + "4794-Diminution des dettes financi\u00e8res": {}, + "4797-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4798-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "481-Fournisseurs d\u2019investissements": { + "4811-Immobilisations incorporelles": {}, + "4812-Immobilisations corporelles": {}, + "4813-Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": {}, + "4816-R\u00e9serve de propri\u00e9t\u00e9": {}, + "4817-Retenues de garantie": {}, + "4818-Factures non parvenues": {} + }, + "482-Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "4821-Immobilisations incorporelles": {}, + "4822-Immobilisations corporelles": {} + }, + "484-Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "4887-Produits": {} + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (PASSIF)": { + "490-D\u00e9pr\u00e9ciations des comptes fournisseurs": {}, + "492-D\u00e9pr\u00e9ciations des comptes personnel": {}, + "493-D\u00e9pr\u00e9ciations des comptes organismes sociaux": {}, + "494-D\u00e9pr\u00e9ciations des comptes \u00c9tat et collectivit\u00e9s publiques": {}, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {} + }, + "root_type": "Liability" + }, + "5-Comptes de tr\u00e9sorerie": { + "50-Titres de placement": { + "501-Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "5011-Titres du Tr\u00e9sor \u00e0 court terme": {}, + "5012-Titres d\u2019organismes financiers": {}, + "5013-Bons de caisse \u00e0 court terme": {}, + "5016-Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": {} + }, + "502-Actions": { + "5021-Actions ou parts propres": {}, + "5022-Actions cot\u00e9es": {}, + "5023-Actions non cot\u00e9es": {}, + "5024-Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": {}, + "5025-Autres actions": {}, + "5026-Frais d\u2019acquisition des actions": {} + }, + "503-Obligations": { + "5031-Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": {}, + "5032-Obligations cot\u00e9es": {}, + "5033-Obligations non cot\u00e9es": {}, + "5035-Autres obligations": {}, + "5036-Frais d\u2019acquisition des obligations": {} + }, + "504-Bons de souscription": { + "5042-Bons de souscription d\u2019actions": {}, + "5043-Bons de souscription d\u2019obligations": {} + }, + "505-Titres n\u00e9gociables hors r\u00e9gion": {}, + "506-Int\u00e9r\u00eats courus": { + "5061-Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": {}, + "5062-Actions": {}, + "5063-Obligations": {} + }, + "508-Autres titres de placement et cr\u00e9ances assimil\u00e9es": {} + }, + "51-Valeurs \u00e0 encaisser": { + "511-Effets \u00e0 encaisser": {}, + "512-Effets \u00e0 l\u2019encaissement": {}, + "513-Ch\u00e8ques \u00e0 encaisser": {}, + "514-Ch\u00e8ques \u00e0 l\u2019encaissement": {}, + "515-Cartes de cr\u00e9dit \u00e0 encaisser": {}, + "518-Autres valeurs \u00e0 l\u2019encaissement": { + "5181-Warrants": {}, + "5182-Billets de fonds": {}, + "5185-Ch\u00e8ques de voyage": {}, + "5186-Coupons \u00e9chus": {}, + "5187-Int\u00e9r\u00eats \u00e9chus des obligations": {} + } + }, + "52-Banques": { + "521-Banques locales": { + "5211-Banques en monnaie nationale": { + "account_type": "Bank" + }, + "5215-Banques en devises": { + "account_type": "Bank" + }, + "account_type": "Bank" + }, + "522-Banques autres \u00c9tats r\u00e9gion": {}, + "523-Banques autres \u00c9tats zone mon\u00e9taire": {}, + "524-Banques hors zone mon\u00e9taire": {}, + "525-Banques d\u00e9p\u00f4t \u00e0 terme": {}, + "526-Banques, int\u00e9r\u00eats courus": { + "5261-Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": {}, + "5267-Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": {} + } + }, + "53-\u00c9tablissements financiers et assimil\u00e9s": { + "531-Ch\u00e8ques postaux": {}, + "532-Tr\u00e9sor": {}, + "533-Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": {}, + "536-\u00c9tablissements financiers, int\u00e9r\u00eats courus": {}, + "538-Autres organismes financiers": {} + }, + "54-Instruments de tr\u00e9sorerie": { + "541-Options de taux d\u2019int\u00e9r\u00eat": {}, + "542-Options de taux de change": {}, + "543-Options de taux boursiers": {}, + "544-Instruments de march\u00e9s \u00e0 terme": {}, + "545-Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": {} + }, + "55-Instruments de monnaie \u00e9lectronique": { + "551-Monnaie \u00e9lectronique carte carburant": {}, + "552-Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": {}, + "553-Monnaie \u00e9lectronique carte p\u00e9age": {}, + "554-Porte-monnaie \u00e9lectronique": {}, + "558-Autres instruments de monnaies \u00e9lectroniques": {} + }, + "56-Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "561-Cr\u00e9dits de tr\u00e9sorerie": {}, + "564-Escompte de cr\u00e9dits de campagne": {}, + "565-Escompte de cr\u00e9dits ordinaires": {}, + "566-Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": {} + }, + "57-Caisse": { + "571-Caisse si\u00e8ge social": { + "5711-Caisse en monnaie nationale": {}, + "5712-Caisse en devises": {} + }, + "572-Caisse succursale A": { + "5721-En monnaie nationale": {}, + "5722-En devises": {} + }, + "573-Caisse succursale B": { + "5731-En monnaie nationale": {}, + "5732-En devises": {} + } + }, + "58-R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "581-R\u00e9gies d\u2019avance": {}, + "582-Accr\u00e9ditifs": {}, + "585-Virements de fonds": {}, + "588-Autres virements internes": {} + }, + "59-D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "590-D\u00e9pr\u00e9ciations des titres de placement": {}, + "591-D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": {}, + "592-D\u00e9pr\u00e9ciations des comptes banques": {}, + "593-D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": {}, + "594-D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": {}, + "599-Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": {} + }, + "root_type": "Asset" + }, + "6-Comptes de charges des activit\u00e9s ordinaires": { + "60-Achats et variations de stocks": { + "601-Achats de marchandises": { + "6011-Dans la R\u00e9gion": {}, + "6012-Hors R\u00e9gion": {}, + "6013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6015-Frais sur achats": {}, + "6019-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "602-Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "6021-Dans la R\u00e9gion": {}, + "6022-Hors R\u00e9gion": {}, + "6023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6025-Frais sur achats": {}, + "6029-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "603-Variations des stocks de biens achet\u00e9s": { + "6031-Variations des stocks de marchandises": {}, + "6032-Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "6033-Variations des stocks d\u2019autres approvisionnements": {} + }, + "604-Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "6041-Mati\u00e8res consommables": {}, + "6042-Mati\u00e8res combustibles": {}, + "6043-Produits d\u2019entretien": {}, + "6044-Fournitures d\u2019atelier et d\u2019usine": {}, + "6045-Frais sur achat": {}, + "6046-Fournitures de magasin": {}, + "6047-Fournitures de bureau": {}, + "6049-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "605-Autres achats": { + "6051-Fournitures non stockables Eau": {}, + "6052-Fournitures non stockables \u00c9lectricit\u00e9": {}, + "6053-Fournitures non stockables Autres \u00e9nergies": {}, + "6054-Fournitures d\u2019entretien non stockables": {}, + "6055-Fournitures de bureau non stockables": {}, + "6056-Achats de petit mat\u00e9riel et outillage": {}, + "6057-Achats d\u2019\u00e9tudes et prestations de services": {}, + "6058-Achats de travaux, mat\u00e9riels et \u00e9quipements": {}, + "6059-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "608-Achats d\u2019emballages": { + "6081-Emballages perdus": {}, + "6082-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "6083-Emballages \u00e0 usage mixte": {}, + "6085-Frais sur achats": {}, + "6089-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + } + }, + "61-Transports": { + "612-Transports sur ventes": {}, + "613-Transports pour le compte de tiers": {}, + "614-Transports du personnel": {}, + "616-Transports de plis": {}, + "618-Autres frais de transport": { + "6181-Voyages et d\u00e9placements": {}, + "6182-Transports entre \u00e9tablissements ou chantiers": {}, + "6183-Transports administratifs": {} + } + }, + "62-Services ext\u00e9rieurs": { + "621-Sous-traitance g\u00e9n\u00e9rale": {}, + "622-Locations, charges locatives": { + "6221-Locations de terrains": {}, + "6222-Locations de b\u00e2timents": {}, + "6223-Locations de mat\u00e9riels et outillages": {}, + "6224-Malis sur emballages": {}, + "6225-Locations d\u2019emballages": {}, + "6226-Fermages et loyers du foncier": {}, + "6228-Locations et charges locatives diverses": {} + }, + "623-Redevances de location acquisition": { + "6232-Cr\u00e9dit-bail immobilier": {}, + "6233-Cr\u00e9dit-bail mobilier": {}, + "6234-Location-vente": {}, + "6238-Autres contrats de location acquisition": {} + }, + "624-Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "6241-Entretien et r\u00e9parations des biens immobiliers": {}, + "6242-Entretien et r\u00e9parations des biens mobiliers": {}, + "6243-Maintenance": {}, + "6244-Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "6248-Autres entretiens et r\u00e9parations": {} + }, + "625-Primes d\u2019assurance": { + "6251-Assurances multirisques": {}, + "6252-Assurances mat\u00e9riel de transport": {}, + "6253-Assurances risques d\u2019exploitation": {}, + "6254-Assurances responsabilit\u00e9 du producteur": {}, + "6255-Assurances insolvabilit\u00e9 clients": {}, + "6257-Assurances transport sur ventes": {}, + "6258-Autres primes d\u2019assurances": {} + }, + "626-\u00c9tudes, recherches et documentation": { + "6261-\u00c9tudes et recherches": {}, + "6265-Documentation g\u00e9n\u00e9rale": {}, + "6266-Documentation technique": {} + }, + "627-Publicit\u00e9, publications, relations publiques": { + "6271-Annonces, insertions": {}, + "6272-Catalogues, imprim\u00e9s publicitaires": {}, + "6273-\u00c9chantillons": {}, + "6274-Foires et expositions": {}, + "6275-Publications": {}, + "6276-Cadeaux \u00e0 la client\u00e8le": {}, + "6277-Frais de colloques, s\u00e9minaires, conf\u00e9rences": {}, + "6278-Autres charges de publicit\u00e9 et relations publiques": {} + }, + "628-Frais de t\u00e9l\u00e9communications": { + "6281-Frais de t\u00e9l\u00e9phone": {}, + "6282-Frais de t\u00e9lex": {}, + "6283-Frais de t\u00e9l\u00e9copie": {}, + "6288-Autres frais de t\u00e9l\u00e9communications": {} + } + }, + "63-Autres services ext\u00e9rieurs": { + "631-Frais bancaires": { + "6311-Frais sur titres (vente, garde)": {}, + "6312-Frais sur effets": {}, + "6313-Location de coffres": {}, + "6314-Commissions d\u2019affacturage": {}, + "6315-Commissions sur cartes de cr\u00e9dit": {}, + "6316-Frais d\u2019\u00e9mission d\u2019emprunts": {}, + "6317-Frais sur instruments monnaie \u00e9lectronique": {}, + "6318-Autres frais bancaires": {} + }, + "632-R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "6322-Commissions et courtages sur ventes": {}, + "6324-Honoraires des professions r\u00e9glement\u00e9es": {}, + "6325-Frais d\u2019actes et de contentieux": {}, + "6326-R\u00e9mun\u00e9rations d\u2019affacturage": {}, + "6327-R\u00e9mun\u00e9rations des autres prestataires de services": {}, + "6328-Divers frais": {} + }, + "633-Frais de formation du personnel": {}, + "634-Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "6342-Redevances pour brevets, licences": {}, + "6343-Redevances pour logiciels": {}, + "6344-Redevances pour marques": {}, + "6345-Redevances pour sites internet": {}, + "6346-Redevances pour concessions, droits et valeurs similaires": {} + }, + "635-Cotisations": { + "6351-Cotisations": {}, + "6358-Concours divers": {} + }, + "637-R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "6371-Personnel int\u00e9rimaire": {}, + "6372-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "638-Autres charges externes": { + "6381-Frais de recrutement du personnel": {}, + "6382-Frais de d\u00e9m\u00e9nagement": {}, + "6383-R\u00e9ceptions": {}, + "6384-Missions": {}, + "6385-Charges de copropri\u00e9t\u00e9": {} + } + }, + "64-Imp\u00f4ts et taxes": { + "641-Imp\u00f4ts et taxes directs": { + "6411-Imp\u00f4ts fonciers et taxes annexes": {}, + "6412-Patentes, licences et taxes annexes": {}, + "6413-Taxes sur appointements et salaires": {}, + "6414-Taxes d\u2019apprentissage": {}, + "6415-Formation professionnelle continue": {}, + "6418-Autres imp\u00f4ts et taxes directs": {} + }, + "645-Imp\u00f4ts et taxes indirects": {}, + "646-Droits d\u2019enregistrement": { + "6461-Droits de mutation": {}, + "6462-Droits de timbre": {}, + "6463-Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": {}, + "6464-Vignettes": {}, + "6468-Autres droits": {} + }, + "647-P\u00e9nalit\u00e9s, amendes fiscales": { + "6471-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": {}, + "6472-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": {}, + "6473-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": {}, + "6474-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": {}, + "6478-Autres p\u00e9nalit\u00e9s et amendes fiscales": {} + }, + "648-Autres imp\u00f4ts et taxes": {} + }, + "65-Autres charges": { + "651-Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "6511-Clients": {}, + "6515-Autres d\u00e9biteurs": {} + }, + "652-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "6521-Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": {}, + "6525-Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "654-Valeurs comptables des cessions courantes d\u2019immobilisations": { + "6541-Immobilisations incorporelles": {}, + "6542-Immobilisations corporelles": {} + }, + "656-Perte de change sur cr\u00e9ances et dettes commerciale": {}, + "657-P\u00e9nalit\u00e9s et amendes p\u00e9nales": {}, + "658-Charges diverses": { + "6581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "6582-Dons": {}, + "6583-M\u00e9c\u00e9nat": {}, + "6588-Autres charges diverses": {} + }, + "659-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "6591-Sur risques \u00e0 court terme": {}, + "6593-Sur stocks": {}, + "6594-Sur cr\u00e9ances": {}, + "6598-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": {} + } + }, + "66-Charges de personnel": { + "661-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "6611-Appointements salaires et commissions": {}, + "6612-Primes et gratifications": {}, + "6613-Cong\u00e9s pay\u00e9s": {}, + "6614-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6615-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6616-Suppl\u00e9ment familial": {}, + "6617-Avantages en nature": {}, + "6618-Autres r\u00e9mun\u00e9rations directes": {} + }, + "662-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "6621-Appointements salaires et commissions": {}, + "6622-Primes et gratifications": {}, + "6623-Cong\u00e9s pay\u00e9s": {}, + "6624-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6625-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6626-Suppl\u00e9ment familial": {}, + "6627-Avantages en nature": {}, + "6628-Autres r\u00e9mun\u00e9rations directes": {} + }, + "663-Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "6631-Indemnit\u00e9s de logement": {}, + "6632-Indemnit\u00e9s de repr\u00e9sentation": {}, + "6633-Indemnit\u00e9s d\u2019expatriation": {}, + "6634-Indemnit\u00e9s de transport": {}, + "6638-Autres indemnit\u00e9s et avantages divers": {} + }, + "664-Charges sociales": { + "6641-Charges sociales sur r\u00e9mun\u00e9ration du personnel national": {}, + "6642-Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": {} + }, + "666-R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "6661-R\u00e9mun\u00e9ration du travail de l\u2019exploitant": {}, + "6662-Charges sociales": {} + }, + "667-R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "6671-Personnel int\u00e9rimaire": {}, + "6672-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "668-Autres charges sociales": { + "6681-Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": {}, + "6682-Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": {}, + "6683-Versements et contributions aux autres \u0153uvres sociales": {}, + "6684-M\u00e9decine du travail et pharmacie": {}, + "6685-Assurances et organismes de sant\u00e9": {}, + "6686-Assurances retraite et fonds de pension": {}, + "6687-Majorations et p\u00e9nalit\u00e9s sociales": {}, + "6688-Charges sociales diverses": {} + } + }, + "67-Frais financiers et charges assimil\u00e9es": { + "671-Int\u00e9r\u00eats des emprunts": { + "6711-Emprunts obligataires": {}, + "6712-Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "6713-Dettes li\u00e9es \u00e0 des participations": {}, + "6714-Primes de remboursement des obligations": {} + }, + "672-Int\u00e9r\u00eats dans loyers de location acquisition": { + "6722-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": {}, + "6723-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": {}, + "6724-Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": {}, + "6728-Int\u00e9r\u00eats dans loyers des autres locations acquisition": {} + }, + "673-Escomptes accord\u00e9s": {}, + "674-Autres int\u00e9r\u00eats": { + "6741-Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": {}, + "6742-Comptes courants bloqu\u00e9s": {}, + "6743-Int\u00e9r\u00eats sur obligations cautionn\u00e9es": {}, + "6744-Int\u00e9r\u00eats sur dettes commerciales": {}, + "6745-Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": {}, + "6748-Int\u00e9r\u00eats sur dettes diverses": {} + }, + "675-Escomptes des effets de commerce": {}, + "676-Pertes de change financi\u00e8res": {}, + "677-Pertes sur titres de placement": { + "6771-Pertes sur cessions de titres de placement": {}, + "6772-Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {} + }, + "678-Pertes et charges sur risques financiers": { + "6781-Sur rentes viag\u00e8res": {}, + "6782-Sur op\u00e9rations financi\u00e8res": {}, + "6784-Sur instruments de tr\u00e9sorerie": {} + }, + "679-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "6791-Sur risques financiers": {}, + "6795-Sur titres de placement": {}, + "6798-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "68-Dotations aux amortissements": { + "681-Dotations aux amortissements d\u2019exploitation": { + "6812-Dotations aux amortissements des immobilisations incorporelles": {}, + "6813-Dotations aux amortissements des immobilisations corporelles": {} + } + }, + "69-Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "691-Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "6911-Dotations aux provisions pour risques et charges": {}, + "6913-Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": {}, + "6914-Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": {} + }, + "697-Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "6971-Dotations aux provisions pour risques et charges": {}, + "6972-Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": {} + } + }, + "root_type": "Expense" + }, + "7-Comptes de produits des activit\u00e9s ordinaires": { + "70-Ventes": { + "701-Ventes de marchandises": { + "7011-Dans la R\u00e9gion": {}, + "7012-Hors R\u00e9gion": {}, + "7013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7015-Sur internet": {}, + "7019-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "702-Ventes de produits finis": { + "7021-Dans la R\u00e9gion": {}, + "7022-Hors R\u00e9gion": {}, + "7023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7025-Sur internet": {}, + "7029-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "703-Ventes de produits interm\u00e9diaires": { + "7031-Dans la R\u00e9gion": {}, + "7032-Hors R\u00e9gion": {}, + "7033-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7034-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7035-Sur internet": {}, + "7039-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "704-Ventes de produits r\u00e9siduels": { + "7041-Dans la R\u00e9gion": {}, + "7042-Hors R\u00e9gion": {}, + "7043-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7044-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7045-Sur internet": {}, + "7049-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "705-Travaux factur\u00e9s": { + "7051-Dans la R\u00e9gion": {}, + "7052-Hors R\u00e9gion": {}, + "7053-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7054-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7055-Sur internet": {}, + "7059-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "706-Services vendus": { + "7061-Dans la R\u00e9gion": {}, + "7062-Hors R\u00e9gion": {}, + "7063-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7064-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7065-Sur internet": {}, + "7069-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "707-Produits accessoires": { + "7071-Ports, emballages perdus et autres frais factur\u00e9s": {}, + "7072-Commissions et courtages": {}, + "7073-Locations": {}, + "7074-Bonis sur reprises et cessions d\u2019emballages": {}, + "7075-Mise \u00e0 disposition de personnel": {}, + "7076-Redevances pour brevets, logiciels, marques et droits similaires": {}, + "7077-Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": {}, + "7078-Autres produits accessoires": {} + } + }, + "71-Subventions d\u2019exploitation": { + "711-Sur produits \u00e0 l\u2019exportation": {}, + "712-Sur produits \u00e0 l\u2019importation": {}, + "713-Sur produits de p\u00e9r\u00e9quation": {}, + "714-Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": {}, + "718-Autres subventions d\u2019exploitation": { + "7181-Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": {}, + "7182-Vers\u00e9es par les organismes internationaux": {}, + "7183-Vers\u00e9es par des tiers": {} + } + }, + "72-Production immobilis\u00e9e": { + "721-Immobilisations incorporelles": {}, + "722-Immobilisations corporelles": { + "7221-Immobilisations corporelles (hors actifs biologiques)": {}, + "7222-Immobilisations corporelles (actifs biologiques)": {} + }, + "724-Production auto-consomm\u00e9e": {}, + "726-Immobilisations financi\u00e8res": {} + }, + "73-Variations des stocks de biens et de services produits": { + "734-Variations des stocks de produits en cours": { + "7341-Produits en cours": {}, + "7342-Travaux en cours": {} + }, + "735-Variations des en-cours de services": { + "7351-\u00c9tudes en cours": {}, + "7352-Prestations de services en cours": {} + }, + "736-Variations des stocks de produits finis": {}, + "737-Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "7371-Produits interm\u00e9diaires": {}, + "7372-Produits r\u00e9siduels": {} + } + }, + "75-Autres produits": { + "751-Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": {}, + "752-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "7521-Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": {}, + "7525-B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "754-Produits des cessions courantes d\u2019immobilisations": { + "7541-Immobilisations incorporelles": {}, + "7542-Immobilisations corporelles": {} + }, + "756-Gains de change sur cr\u00e9ances et dettes commerciales": {}, + "758-Produits divers": { + "7581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "7582-Indemnit\u00e9s d\u2019assurances re\u00e7ues": {}, + "7588-Autres produits divers": {} + }, + "759-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "7591-Sur risques \u00e0 court terme": {}, + "7593-Sur stocks": {}, + "7594-Sur cr\u00e9ances": {}, + "7598-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": {} + } + }, + "77-Revenus financiers et produits assimil\u00e9s": { + "771-Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "7712-Int\u00e9r\u00eats de pr\u00eats": {}, + "7713-Int\u00e9r\u00eats sur cr\u00e9ances diverses": {} + }, + "772-Revenus de participations et autres titres immobilis\u00e9s": { + "7721-Revenus des titres de participation": {}, + "7722-Revenus autres titres immobilis\u00e9s": {} + }, + "773-Escomptes obtenus": {}, + "774-Revenus de placement": { + "7745-Revenus des obligations": {}, + "7746-Revenus des titres de placement": {} + }, + "775-Int\u00e9r\u00eats dans loyers de location acquisition": {}, + "776-Gains de change financiers": {}, + "777-Gains sur cessions de titres de placement": {}, + "778-Gains sur risques financiers": { + "7781-Sur rentes viag\u00e8res": {}, + "7782-Sur op\u00e9rations financi\u00e8res": {}, + "7784-Sur instruments de tr\u00e9sorerie": {} + }, + "779-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "7791-Sur risques financiers": {}, + "7795-Sur titres de placement": {}, + "7798-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "78-Transferts de charges": { + "781-Transferts de charges d\u2019exploitation": {}, + "787-Transferts de charges financi\u00e8res": {} + }, + "79-Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "791-Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "7911-Pour risques et charges": {}, + "7913-Des immobilisations incorporelles": {}, + "7914-Des immobilisations corporelles": {} + }, + "797-Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "7971-Pour risques et charges": {}, + "7972-Des immobilisations financi\u00e8res": {} + }, + "798-Reprises d\u2019amortissements": {}, + "799-Reprises de subventions d\u2019investissement": {} + }, + "root_type": "Income" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "81-Valeurs comptables des cessions d\u2019immobilisations": { + "811-Immobilisations incorporelles": {}, + "812-Immobilisations corporelles": {}, + "816-Immobilisations financi\u00e8res": {} + }, + "83-Charges hors activit\u00e9s ordinaires": { + "831-Charges HAO constat\u00e9es": {}, + "833-Charges li\u00e9es aux op\u00e9rations de restructuration": {}, + "834-Pertes sur cr\u00e9ances HAO": {}, + "835-Dons et lib\u00e9ralit\u00e9s accord\u00e9s": {}, + "836-Abandons de cr\u00e9ances consentis": {}, + "837-Charges li\u00e9es aux op\u00e9rations de liquidation": {}, + "839-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "85-Dotations hors activit\u00e9s ordinaires": { + "851-Dotations aux provisions r\u00e9glement\u00e9es": {}, + "852-Dotations aux amortissements HAO": {}, + "853-Dotations aux d\u00e9pr\u00e9ciations HAO": {}, + "854-Dotations aux provisions pour risques et charges HAO": {}, + "858-Autres dotations HAO": {} + }, + "87-Participation des travailleurs": { + "871-Participation l\u00e9gale aux b\u00e9n\u00e9fices": {}, + "874-Participation contractuelle aux b\u00e9n\u00e9fices": {}, + "878-Autres participations": {} + }, + "89-Imp\u00f4ts sur le r\u00e9sultat": { + "891-Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "8911-Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": {}, + "8912-Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": {}, + "8913-Activit\u00e9s exerc\u00e9es hors R\u00e9gion": {} + }, + "892-Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": {}, + "895-Imp\u00f4t minimum forfaitaire IMF": {}, + "899-D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "8991-D\u00e9gr\u00e8vements": {}, + "8994-Annulations pour pertes r\u00e9troactives": {} + } + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "82-Produits des cessions d\u2019immobilisations": { + "821-Immobilisations incorporelles": {}, + "822-Immobilisations corporelles": {}, + "826-Immobilisations financi\u00e8res": {} + }, + "84-Produits hors activit\u00e9s ordinaires": { + "841-Produits HAO constat\u00e9s": {}, + "843-Produits li\u00e9s aux op\u00e9rations de restructuration": {}, + "844-Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": {}, + "845-Dons et lib\u00e9ralit\u00e9s obtenus": {}, + "846-Abandons de cr\u00e9ances obtenus": {}, + "847-Produits li\u00e9s aux op\u00e9rations de liquidation": {}, + "848-Transferts de charges HAO": {}, + "849-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "86-Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "861-Reprises de provisions r\u00e9glement\u00e9es": {}, + "862-Reprises d\u2019amortissements HAO": {}, + "863-Reprises de d\u00e9pr\u00e9ciations HAO": {}, + "864-Reprises de provisions pour risques et charges HAO": {}, + "868-Autres reprises HAO": {} + }, + "88-Subventions d\u2019\u00e9quilibre": { + "881-\u00c9tat": {}, + "884-Collectivit\u00e9s publiques": {}, + "886-Groupe": {}, + "888-Autres": {} + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/cf_plan_comptable_avec_code.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/cf_plan_comptable_avec_code.json new file mode 100644 index 00000000000..5913ed65476 --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/cf_plan_comptable_avec_code.json @@ -0,0 +1,4208 @@ +{ + "country_code": "cf", + "name": "Syscohada - Plan Comptable avec code", + "tree": { + "Comptes de ressources durables": { + "Capital": { + "Capital social": { + "Capital souscrit, non appel\u00e9": { + "account_number": "1011" + }, + "Capital souscrit, appel\u00e9, non vers\u00e9": { + "account_number": "1012" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, non amorti": { + "account_number": "1013" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, amorti": { + "account_number": "1014" + }, + "Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": { + "account_number": "1018" + }, + "account_number": "101" + }, + "Capital par dotation": { + "Dotation initiale": { + "account_number": "1021" + }, + "Dotations compl\u00e9mentaires": { + "account_number": "1022" + }, + "Autres dotations": { + "account_number": "1028" + }, + "account_number": "102" + }, + "Capital personnel": { + "account_number": "103" + }, + "Compte de l\u2019exploitant": { + "Apports temporaires": { + "account_number": "1041" + }, + "Op\u00e9rations courantes": { + "account_number": "1042" + }, + "R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": { + "account_number": "1043" + }, + "Pr\u00e9l\u00e8vements d\u2019autoconsommation": { + "account_number": "1047" + }, + "Autres pr\u00e9l\u00e8vements": { + "account_number": "1048" + }, + "account_number": "104" + }, + "Primes li\u00e9es au capital social": { + "Primes d\u2019\u00e9mission": { + "account_number": "1051" + }, + "Primes d\u2019apport": { + "account_number": "1052" + }, + "Primes de fusion": { + "account_number": "1053" + }, + "Primes de conversion": { + "account_number": "1054" + }, + "Autres primes": { + "account_number": "1058" + }, + "account_number": "105" + }, + "\u00c9carts de r\u00e9\u00e9valuation": { + "\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": { + "account_number": "1061" + }, + "\u00c9carts de r\u00e9\u00e9valuation libre": { + "account_number": "1062" + }, + "account_number": "106" + }, + "Apporteurs, capital souscrit, non appel\u00e9": { + "account_number": "109" + }, + "account_number": "10" + }, + "R\u00e9serves": { + "R\u00e9serve l\u00e9gale": { + "account_number": "111" + }, + "R\u00e9serves statutaires ou contractuelles": { + "account_number": "112" + }, + "R\u00e9serves r\u00e9glement\u00e9es": { + "R\u00e9serves de plus-values nettes \u00e0 long terme": { + "account_number": "1131" + }, + "R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "1132" + }, + "R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": { + "account_number": "1133" + }, + "R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": { + "account_number": "1134" + }, + "Autres r\u00e9serves r\u00e9glement\u00e9es": { + "account_number": "1135" + }, + "account_number": "113" + }, + "Autres r\u00e9serves": { + "R\u00e9serves facultatives": { + "account_number": "1181" + }, + "R\u00e9serves diverses": { + "account_number": "1188" + }, + "account_number": "118" + }, + "account_number": "11" + }, + "Report \u00e0 nouveau": { + "Report \u00e0 nouveau cr\u00e9diteur": { + "account_number": "121" + }, + "Report \u00e0 nouveau d\u00e9biteur": { + "Perte nette \u00e0 reporter": { + "account_number": "1291" + }, + "Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": { + "account_number": "1292" + }, + "account_number": "129" + }, + "account_number": "12" + }, + "R\u00e9sultat net de l\u2019exercice": { + "R\u00e9sultat en instance d\u2019affectation": { + "R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": { + "account_number": "1301" + }, + "R\u00e9sultat en instance d\u2019affectation : perte": { + "account_number": "1309" + }, + "account_number": "130" + }, + "R\u00e9sultat net : b\u00e9n\u00e9fice": { + "account_number": "131" + }, + "Marge commerciale (MC)": { + "account_number": "132" + }, + "Valeur ajout\u00e9e (VA)": { + "account_number": "133" + }, + "Exc\u00e9dent brut d\u2019exploitation (EBE)": { + "account_number": "134" + }, + "R\u00e9sultat d\u2019exploitation (RE)": { + "account_number": "135" + }, + "R\u00e9sultat financier (RF)": { + "account_number": "136" + }, + "R\u00e9sultat des activit\u00e9s ordinaires (RAO)": { + "account_number": "137" + }, + "R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "R\u00e9sultat de fusion": { + "account_number": "1381" + }, + "R\u00e9sultat d\u2019apport partiel d\u2019actif": { + "account_number": "1382" + }, + "R\u00e9sultat de scission": { + "account_number": "1383" + }, + "R\u00e9sultat de liquidation": { + "account_number": "1384" + }, + "account_number": "138" + }, + "R\u00e9sultat net : perte": { + "account_number": "139" + }, + "account_number": "13" + }, + "Subventions d\u2019investissement": { + "Subventions d\u2019\u00e9quipement": { + "\u00c9tat": { + "account_number": "1411" + }, + "R\u00e9gions": { + "account_number": "1412" + }, + "D\u00e9partements": { + "account_number": "1413" + }, + "Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": { + "account_number": "1414" + }, + "Entit\u00e9s publiques ou mixtes": { + "account_number": "1415" + }, + "Entit\u00e9s et organismes priv\u00e9s": { + "account_number": "1416" + }, + "Organismes internationaux": { + "account_number": "1417" + }, + "Autres": { + "account_number": "1418" + }, + "account_number": "141" + }, + "Autres subventions d\u2019investissement": { + "account_number": "148" + }, + "account_number": "14" + }, + "Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "Amortissements d\u00e9rogatoires": { + "account_number": "151" + }, + "Plus-values de cession \u00e0 r\u00e9investir": { + "account_number": "152" + }, + "Fonds r\u00e9glement\u00e9s": { + "Fonds National": { + "account_number": "1531" + }, + "Pr\u00e9l\u00e8vement pour le Budget": { + "account_number": "1532" + }, + "account_number": "153" + }, + "Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": { + "account_number": "154" + }, + "Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "Reconstitution des gisements miniers et p\u00e9troliers": { + "account_number": "1551" + }, + "account_number": "155" + }, + "Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "Hausse de prix": { + "account_number": "1561" + }, + "Fluctuation des cours": { + "account_number": "1562" + }, + "account_number": "156" + }, + "Provisions pour investissement": { + "account_number": "157" + }, + "Autres provisions et fonds r\u00e9glement\u00e9s": { + "account_number": "158" + }, + "account_number": "15" + }, + "Emprunts et dettes assimil\u00e9es": { + "Emprunts obligataires": { + "Emprunts obligataires ordinaires": { + "account_number": "1611" + }, + "Emprunts obligataires convertibles en actions": { + "account_number": "1612" + }, + "Emprunts obligataires remboursables en actions": { + "account_number": "1613" + }, + "Autres emprunts obligataires": { + "account_number": "1618" + }, + "account_number": "161" + }, + "Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "162" + }, + "Avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "163" + }, + "Avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "164" + }, + "D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "D\u00e9p\u00f4ts": { + "account_number": "1651" + }, + "Cautionnements": { + "account_number": "1652" + }, + "account_number": "165" + }, + "Int\u00e9r\u00eats courus": { + "Sur emprunts obligataires": { + "account_number": "1661" + }, + "Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "1662" + }, + "Sur avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "1663" + }, + "Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "1664" + }, + "Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "account_number": "1665" + }, + "Sur avances assorties de conditions particuli\u00e8res": { + "account_number": "1667" + }, + "Sur autres emprunts et dettes": { + "account_number": "1668" + }, + "account_number": "166" + }, + "Avances assorties de conditions particuli\u00e8res": { + "Avances bloqu\u00e9es pour augmentation du capital": { + "account_number": "1671" + }, + "Avances conditionn\u00e9es par l\u2019\u00c9tat": { + "account_number": "1672" + }, + "Avances conditionn\u00e9es par les autres organismes africains": { + "account_number": "1673" + }, + "Avances conditionn\u00e9es par les organismes internationaux": { + "account_number": "1674" + }, + "account_number": "167" + }, + "Autres emprunts et dettes": { + "Rentes viag\u00e8res capitalis\u00e9es": { + "account_number": "1681" + }, + "Billets de fonds": { + "account_number": "1682" + }, + "Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": { + "account_number": "1683" + }, + "Emprunts participatifs": { + "account_number": "1684" + }, + "Participation des travailleurs aux b\u00e9n\u00e9fices": { + "account_number": "1685" + }, + "Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": { + "account_number": "1686" + }, + "account_number": "168" + }, + "account_number": "16" + }, + "Dettes de location acquisition": { + "Dettes de location acquisition / cr\u00e9dit bail immobilier": { + "account_number": "172" + }, + "Dettes de location acquisition / cr\u00e9dit bail mobilier": { + "account_number": "173" + }, + "Dettes de location acquisition / location de vente": { + "account_number": "174" + }, + "Int\u00e9r\u00eats courus": { + "Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "1762" + }, + "Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "1763" + }, + "Sur dettes de location acquisition / location-vente": { + "account_number": "1764" + }, + "Sur autres dettes de location acquisition": { + "account_number": "1768" + }, + "account_number": "176" + }, + "Autres dettes de location acquisition": { + "account_number": "178" + }, + "account_number": "17" + }, + "Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "Dettes li\u00e9es \u00e0 des participations": { + "Dettes li\u00e9es \u00e0 des participations (groupe)": { + "account_number": "1811" + }, + "Dettes li\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "1812" + }, + "account_number": "181" + }, + "Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "182" + }, + "Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": { + "account_number": "183" + }, + "Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "184" + }, + "Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "185" + }, + "Comptes de liaison charges": { + "account_number": "186" + }, + "Comptes de liaison produits": { + "account_number": "187" + }, + "Comptes de liaison des soci\u00e9t\u00e9s en participation": { + "account_number": "188" + }, + "account_number": "18" + }, + "Provisions pour risques et charges": { + "Provisions pour litiges": { + "account_number": "191" + }, + "Provisions pour garanties donn\u00e9es aux clients": { + "account_number": "192" + }, + "Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": { + "account_number": "193" + }, + "Provisions pour pertes de change": { + "account_number": "194" + }, + "Provisions pour imp\u00f4ts": { + "account_number": "195" + }, + "Provisions pour pensions et obligations similaires": { + "Provisions pour pensions et obligations similaires engagement de retraite": { + "account_number": "1961" + }, + "Actif du r\u00e9gime de retraite": { + "account_number": "1962" + }, + "account_number": "196" + }, + "Provisions pour restructuration": { + "account_number": "197" + }, + "Autres provisions pour risques et charges": { + "Provisions pour amendes et p\u00e9nalit\u00e9s": { + "account_number": "1981" + }, + "Provisions pour propre assureur": { + "account_number": "1983" + }, + "Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "1984" + }, + "Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": { + "account_number": "1985" + }, + "Provisions pour divers risques et charges": { + "account_number": "1988" + }, + "account_number": "198" + }, + "account_number": "19" + }, + "root_type": "Equity", + "account_number": "1" + }, + "Comptes d\u2019actif immobilis\u00e9": { + "Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "211" + }, + "Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "Brevets": { + "account_type": "Fixed Asset", + "account_number": "2121" + }, + "Licences": { + "account_type": "Fixed Asset", + "account_number": "2122" + }, + "Concessions de service public": { + "account_type": "Fixed Asset", + "account_number": "2123" + }, + "Autres concessions et droits similaires": { + "account_type": "Fixed Asset", + "account_number": "2128" + }, + "account_number": "212" + }, + "Logiciels et sites internet": { + "account_type": "Fixed Asset", + "Logiciels": { + "account_type": "Fixed Asset", + "account_number": "2131" + }, + "Sites internet": { + "account_type": "Fixed Asset", + "account_number": "2132" + }, + "account_number": "213" + }, + "Marques": { + "account_type": "Fixed Asset", + "account_number": "214" + }, + "Fonds commercial": { + "account_type": "Fixed Asset", + "account_number": "215" + }, + "Droit au bail": { + "account_type": "Fixed Asset", + "account_number": "216" + }, + "Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset", + "account_number": "217" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset", + "account_number": "2181" + }, + "Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset", + "account_number": "2182" + }, + "Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset", + "account_number": "2183" + }, + "Co\u00fbts des franchises": { + "account_type": "Fixed Asset", + "account_number": "2184" + }, + "Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset", + "account_number": "2188" + }, + "account_number": "218" + }, + "Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "2191" + }, + "Logiciels et internet": { + "account_type": "Fixed Asset", + "account_number": "2193" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "account_number": "2198" + }, + "account_number": "219" + }, + "account_number": "21" + }, + "Terrains": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset", + "account_number": "2211" + }, + "Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset", + "account_number": "2212" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2218" + }, + "account_number": "221" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset", + "account_number": "2221" + }, + "Autres terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2228" + }, + "account_number": "222" + }, + "Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset", + "account_number": "2231" + }, + "Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset", + "account_number": "2232" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2234" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2235" + }, + "Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "account_number": "2238" + }, + "account_number": "223" + }, + "Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset", + "account_number": "2241" + }, + "Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset", + "account_number": "2245" + }, + "Autres travaux": { + "account_type": "Fixed Asset", + "account_number": "2248" + }, + "account_number": "224" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "Carri\u00e8res": { + "account_type": "Fixed Asset", + "account_number": "2251" + }, + "account_number": "225" + }, + "Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "Parkings": { + "account_type": "Fixed Asset", + "account_number": "2261" + }, + "account_number": "226" + }, + "Terrains mis en concession": { + "account_type": "Fixed Asset", + "account_number": "227" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "Terrains immeubles de placement": { + "account_type": "Fixed Asset", + "account_number": "2281" + }, + "Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset", + "account_number": "2285" + }, + "Terrains de location acquisition": { + "account_type": "Fixed Asset", + "account_number": "2286" + }, + "Divers terrains": { + "account_type": "Fixed Asset", + "account_number": "2288" + }, + "account_number": "228" + }, + "Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "account_number": "2291" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2292" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "account_number": "2295" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2298" + }, + "account_number": "229" + }, + "account_number": "22" + }, + "B\u00e2timents, installations techniques et agencements": { + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "B\u00e2timents industriels": { + "account_number": "2311" + }, + "B\u00e2timents agricoles": { + "account_number": "2312" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2313" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2314" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2315" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2316" + }, + "account_number": "231" + }, + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "B\u00e2timents industriels": { + "account_number": "2321" + }, + "B\u00e2timents agricoles": { + "account_number": "2322" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2323" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2324" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2325" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2326" + }, + "account_number": "232" + }, + "Ouvrages d\u2019infrastructure": { + "Voies de terre": { + "account_number": "2331" + }, + "Voies de fer": { + "account_number": "2332" + }, + "Voies d\u2019eau": { + "account_number": "2333" + }, + "Barrages, Digues": { + "account_number": "2334" + }, + "Pistes d\u2019a\u00e9rodrome": { + "account_number": "2335" + }, + "Autres ouvrages d\u2019infrastructures": { + "account_number": "2338" + }, + "account_number": "233" + }, + "Am\u00e9nagements, agencements et installations techniques": { + "Installations complexes sp\u00e9cialis\u00e9es sur sol propre": { + "account_number": "2341" + }, + "Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": { + "account_number": "2342" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": { + "account_number": "2343" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": { + "account_number": "2344" + }, + "Am\u00e9nagements et agencements des b\u00e2timents": { + "account_number": "2345" + }, + "account_number": "234" + }, + "Am\u00e9nagements de bureaux": { + "Installations g\u00e9n\u00e9rales": { + "account_number": "2351" + }, + "Autres am\u00e9nagements de bureaux": { + "account_number": "2358" + }, + "account_number": "235" + }, + "B\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "237" + }, + "Autres installations et agencements": { + "account_number": "238" + }, + "B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "B\u00e2timents en cours": { + "account_number": "2391" + }, + "Installations en cours": { + "account_number": "2392" + }, + "Ouvrages d\u2019infrastructure en cours": { + "account_number": "2393" + }, + "Am\u00e9nagements et agencements et installations techniques en cours": { + "account_number": "2394" + }, + "Am\u00e9nagements de bureaux en cours": { + "account_number": "2395" + }, + "Autres installations et agencements en cours": { + "account_number": "2398" + }, + "account_number": "239" + }, + "account_number": "23" + }, + "Mat\u00e9riel, mobilier et actifs biologiques": { + "Mat\u00e9riel et outillage industriel et commercial": { + "Mat\u00e9riel industriel": { + "account_number": "2411" + }, + "Outillage industriel": { + "account_number": "2412" + }, + "Mat\u00e9riel commercial": { + "account_number": "2413" + }, + "Outillage commercial": { + "account_number": "2414" + }, + "Mat\u00e9riel & outillage industriel et commercial de location-acquisition": { + "account_number": "2416" + }, + "account_number": "241" + }, + "Mat\u00e9riel et outillage agricole": { + "Mat\u00e9riel agricole": { + "account_number": "2421" + }, + "Outillage agricole": { + "account_number": "2422" + }, + "Mat\u00e9riel & outillage agricole de location-acquisition": { + "account_number": "2426" + }, + "account_number": "242" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "243" + }, + "Mat\u00e9riel et mobilier": { + "Mat\u00e9riel de bureau": { + "account_number": "2441" + }, + "Mat\u00e9riel informatique": { + "account_number": "2442" + }, + "Mat\u00e9riel bureautique": { + "account_number": "2443" + }, + "Mobilier de bureau": { + "account_number": "2444" + }, + "Mat\u00e9riel et mobilier immeubles de placement": { + "account_number": "2445" + }, + "Mat\u00e9riel et mobilier de location acquisition": { + "account_number": "2446" + }, + "Mat\u00e9riel et mobilier des logements du personnel": { + "account_number": "2447" + }, + "account_number": "244" + }, + "Mat\u00e9riel de transport": { + "Mat\u00e9riel automobile": { + "account_number": "2451" + }, + "Mat\u00e9riel ferroviaire": { + "account_number": "2452" + }, + "Mat\u00e9riel fluvial, lagunaire": { + "account_number": "2453" + }, + "Mat\u00e9riel naval": { + "account_number": "2454" + }, + "Mat\u00e9riel a\u00e9rien": { + "account_number": "2455" + }, + "Mat\u00e9riel de transport de location-acquisition": { + "account_number": "2456" + }, + "Mat\u00e9riel hippomobile": { + "account_number": "2457" + }, + "Autres mat\u00e9riels de transport": { + "account_number": "2458" + }, + "account_number": "245" + }, + "Actifs biologiques": { + "Cheptel, animaux de trait": { + "account_number": "2461" + }, + "Cheptel, animaux reproducteurs": { + "account_number": "2462" + }, + "Animaux de garde": { + "account_number": "2463" + }, + "Plantations agricoles": { + "account_number": "2465" + }, + "Autres actifs biologiques": { + "account_number": "2468" + }, + "account_number": "246" + }, + "Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "Agencements et am\u00e9nagements du mat\u00e9riel": { + "account_number": "2471" + }, + "Agencements et am\u00e9nagements des actifs biologiques": { + "account_number": "2472" + }, + "Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2478" + }, + "account_number": "247" + }, + "Autres mat\u00e9riels et mobiliers": { + "Collections et \u0153uvres d\u2019art": { + "account_number": "2481" + }, + "Divers mat\u00e9riels mobiliers": { + "account_number": "2488" + }, + "account_number": "248" + }, + "Mat\u00e9riels et actifs biologiques en cours": { + "Mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2491" + }, + "Mat\u00e9riel et outillage agricole": { + "account_number": "2492" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2493" + }, + "Mat\u00e9riel et mobilier de bureau": { + "account_number": "2494" + }, + "Mat\u00e9riel de transport": { + "account_number": "2495" + }, + "Actifs biologiques": { + "account_number": "2496" + }, + "Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2497" + }, + "Autres mat\u00e9riels et actifs biologiques en cours": { + "account_number": "2498" + }, + "account_number": "249" + }, + "account_number": "24" + }, + "Avances et acomptes vers\u00e9s sur immobilisations": { + "Avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "251" + }, + "Avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "252" + }, + "account_number": "25" + }, + "Titres de participation": { + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "261" + }, + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "262" + }, + "Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "263" + }, + "Participations dans des organismes professionnels": { + "account_number": "265" + }, + "Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "266" + }, + "Autres titres de participation": { + "account_number": "268" + }, + "account_number": "26" + }, + "Autres immobilisations financi\u00e8res": { + "Pr\u00eats et cr\u00e9ances": { + "Pr\u00eats participatifs": { + "account_number": "2711" + }, + "Pr\u00eats aux associ\u00e9s": { + "account_number": "2712" + }, + "Billets de fonds": { + "account_number": "2713" + }, + "Titres pr\u00eat\u00e9s": { + "account_number": "2714" + }, + "Autres pr\u00eats et cr\u00e9ances": { + "account_number": "2718" + }, + "account_number": "271" + }, + "Pr\u00eats au personnel": { + "Pr\u00eats immobiliers": { + "account_number": "2721" + }, + "Pr\u00eats mobiliers et d\u2019installation": { + "account_number": "2722" + }, + "Autres pr\u00eats au personnel": { + "account_number": "2728" + }, + "account_number": "272" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "Retenues de garantie": { + "account_number": "2731" + }, + "Fonds r\u00e9glement\u00e9": { + "account_number": "2733" + }, + "Cr\u00e9ances sur le conc\u00e9dant": { + "account_number": "2734" + }, + "Autres cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2738" + }, + "account_number": "273" + }, + "Titres immobilis\u00e9s": { + "Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": { + "account_number": "2741" + }, + "Titres participatifs": { + "account_number": "2742" + }, + "Certificats d\u2019investissement": { + "account_number": "2743" + }, + "Parts de fonds commun de placement (FCP)": { + "account_number": "2744" + }, + "Obligations": { + "account_number": "2745" + }, + "Actions ou parts propres": { + "account_number": "2746" + }, + "Autres titres immobilis\u00e9s": { + "account_number": "2748" + }, + "account_number": "274" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "D\u00e9p\u00f4ts pour loyers d\u2019avance": { + "account_number": "2751" + }, + "D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": { + "account_number": "2752" + }, + "D\u00e9p\u00f4ts pour l\u2019eau": { + "account_number": "2753" + }, + "D\u00e9p\u00f4ts pour le gaz": { + "account_number": "2754" + }, + "D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": { + "account_number": "2755" + }, + "Cautionnements sur march\u00e9s publics": { + "account_number": "2756" + }, + "Cautionnements sur autres op\u00e9rations": { + "account_number": "2757" + }, + "Autres d\u00e9p\u00f4ts et cautionnements": { + "account_number": "2758" + }, + "account_number": "275" + }, + "Int\u00e9r\u00eats courus": { + "Pr\u00eats et cr\u00e9ances non commerciales": { + "account_number": "2761" + }, + "Pr\u00eats au personnel": { + "account_number": "2762" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2763" + }, + "Titres immobilis\u00e9s": { + "account_number": "2764" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2765" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "account_number": "2767" + }, + "Immobilisations financi\u00e8res diverses": { + "account_number": "2768" + }, + "account_number": "276" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": { + "account_number": "2771" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "2772" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "2773" + }, + "Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "2774" + }, + "account_number": "277" + }, + "Immobilisations financi\u00e8res diverses": { + "Cr\u00e9ances diverses groupe": { + "account_number": "2781" + }, + "Cr\u00e9ances diverses hors groupe": { + "account_number": "2782" + }, + "Banques d\u00e9p\u00f4ts \u00e0 terme": { + "account_number": "2784" + }, + "Or et m\u00e9taux pr\u00e9cieux": { + "account_number": "2785" + }, + "Autres immobilisations financi\u00e8res": { + "account_number": "2788" + }, + "account_number": "278" + }, + "account_number": "27" + }, + "Amortissements": { + "account_type": "Accumulated Depreciation", + "Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation", + "account_number": "2811" + }, + "Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation", + "account_number": "2812" + }, + "Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation", + "account_number": "2813" + }, + "Amortissements des marques": { + "account_type": "Accumulated Depreciation", + "account_number": "2814" + }, + "Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation", + "account_number": "2815" + }, + "Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation", + "account_number": "2816" + }, + "Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation", + "account_number": "2817" + }, + "Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation", + "account_number": "2818" + }, + "account_number": "281" + }, + "Amortissements des terrains": { + "Amortissements des travaux de mise en valeur des terrains": { + "account_number": "2824" + }, + "account_number": "282" + }, + "Amortissements des b\u00e2timents, installations techniques et agencements": { + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2831" + }, + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2832" + }, + "Amortissements des ouvrages d\u2019infrastructure": { + "account_number": "2833" + }, + "Amortissements des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2834" + }, + "Amortissements des am\u00e9nagements de bureaux": { + "account_number": "2835" + }, + "Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2837" + }, + "Amortissements des autres installations et agencements": { + "account_number": "2838" + }, + "account_number": "283" + }, + "Amortissements du mat\u00e9riel": { + "Amortissements du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2841" + }, + "Amortissements du mat\u00e9riel et outillage agricole": { + "account_number": "2842" + }, + "Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2843" + }, + "Amortissements du mat\u00e9riel et mobilier": { + "account_number": "2844" + }, + "Amortissements du mat\u00e9riel de transport": { + "account_number": "2845" + }, + "Amortissements des actifs biologiques": { + "account_number": "2846" + }, + "Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2847" + }, + "Amortissements des autres mat\u00e9riels": { + "account_number": "2848" + }, + "account_number": "284" + }, + "account_number": "28" + }, + "D\u00e9pr\u00e9ciations des immobilisations": { + "D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": { + "account_number": "2911" + }, + "D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": { + "account_number": "2912" + }, + "D\u00e9pr\u00e9ciations des logiciels et sites internet": { + "account_number": "2913" + }, + "D\u00e9pr\u00e9ciations des marques": { + "account_number": "2914" + }, + "D\u00e9pr\u00e9ciations du fonds commercial": { + "account_number": "2915" + }, + "D\u00e9pr\u00e9ciations du droit au bail": { + "account_number": "2916" + }, + "D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": { + "account_number": "2917" + }, + "D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": { + "account_number": "2918" + }, + "D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": { + "account_number": "2919" + }, + "account_number": "291" + }, + "D\u00e9pr\u00e9ciations des terrains": { + "D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": { + "account_number": "2921" + }, + "D\u00e9pr\u00e9ciations des terrains nus": { + "account_number": "2922" + }, + "D\u00e9pr\u00e9ciations des terrains b\u00e2tis": { + "account_number": "2923" + }, + "D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": { + "account_number": "2924" + }, + "D\u00e9pr\u00e9ciations des terrains de gisement": { + "account_number": "2925" + }, + "D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": { + "account_number": "2926" + }, + "D\u00e9pr\u00e9ciations des terrains mis en concession": { + "account_number": "2927" + }, + "D\u00e9pr\u00e9ciations des autres terrains": { + "account_number": "2928" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": { + "account_number": "2929" + }, + "account_number": "292" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2931" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2932" + }, + "D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": { + "account_number": "2933" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2934" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": { + "account_number": "2935" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2937" + }, + "D\u00e9pr\u00e9ciations des autres installations et agencements": { + "account_number": "2938" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": { + "account_number": "2939" + }, + "account_number": "293" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2941" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": { + "account_number": "2942" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2943" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": { + "account_number": "2944" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": { + "account_number": "2945" + }, + "D\u00e9pr\u00e9ciations des actifs biologiques": { + "account_number": "2946" + }, + "D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2947" + }, + "D\u00e9pr\u00e9ciations des autres mat\u00e9riels": { + "account_number": "2948" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": { + "account_number": "2949" + }, + "account_number": "294" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "2951" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "2952" + }, + "account_number": "295" + }, + "D\u00e9pr\u00e9ciations des titres de participation": { + "D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "2961" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "2962" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "2963" + }, + "D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": { + "account_number": "2965" + }, + "D\u00e9pr\u00e9ciations des parts dans des GIE": { + "account_number": "2966" + }, + "D\u00e9pr\u00e9ciations des autres titres de participation": { + "account_number": "2968" + }, + "account_number": "296" + }, + "D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": { + "account_number": "2971" + }, + "D\u00e9pr\u00e9ciations des pr\u00eats au personnel": { + "account_number": "2972" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2973" + }, + "D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": { + "account_number": "2974" + }, + "D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2975" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "account_number": "2977" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": { + "account_number": "2978" + }, + "account_number": "297" + }, + "account_number": "29" + }, + "root_type": "Asset", + "account_number": "2" + }, + "Comptes de Stocks": { + "Marchandises": { + "Marchandises A": { + "Marchandises A1": { + "account_number": "3111" + }, + "Marchandises A2": { + "account_number": "3112" + }, + "account_number": "311" + }, + "Marchandises B": { + "Marchandises B1": { + "account_number": "3121" + }, + "Marchandises B2": { + "account_number": "3122" + }, + "account_number": "312" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3131" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3132" + }, + "account_number": "313" + }, + "Marchandises hors activit\u00e9s ordinaires (HAO)": { + "account_number": "318" + }, + "account_number": "31" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Mati\u00e8res A": { + "account_number": "321" + }, + "Mati\u00e8res B": { + "account_number": "322" + }, + "Fournitures (A, B)": { + "account_number": "323" + }, + "account_number": "32" + }, + "Autres approvisionnements": { + "Mati\u00e8res consommables": { + "account_number": "331" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "332" + }, + "Fournitures de magasin": { + "account_number": "333" + }, + "Fournitures de bureau": { + "account_number": "334" + }, + "Emballages": { + "Emballages perdus": { + "account_number": "3351" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "3352" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "3353" + }, + "Autres emballages": { + "account_number": "3358" + }, + "account_number": "335" + }, + "Autres mati\u00e8res": { + "account_number": "338" + }, + "account_number": "33" + }, + "Produits en cours": { + "Produits en cours": { + "Produits en cours P1": { + "account_number": "3411" + }, + "Produits en cours P2": { + "account_number": "3412" + }, + "account_number": "341" + }, + "Travaux en cours": { + "Travaux en cours T1": { + "account_number": "3421" + }, + "Travaux en cours T2": { + "account_number": "3422" + }, + "account_number": "342" + }, + "Produits interm\u00e9diaires en cours": { + "Produits interm\u00e9diaires A": { + "account_number": "3431" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3432" + }, + "account_number": "343" + }, + "Produits r\u00e9siduels en cours": { + "Produits r\u00e9siduels A": { + "account_number": "3441" + }, + "Produits r\u00e9siduels B": { + "account_number": "3442" + }, + "account_number": "344" + }, + "Actifs biologiques en cours": { + "Animaux": { + "account_number": "3451" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3452" + }, + "account_number": "345" + }, + "account_number": "34" + }, + "Services en cours": { + "\u00c9tudes en cours": { + "\u00c9tudes en cours E1": { + "account_number": "3511" + }, + "\u00c9tudes en cours E2": { + "account_number": "3512" + }, + "account_number": "351" + }, + "Prestations de services en cours": { + "Prestations de services S1": { + "account_number": "3521" + }, + "Prestations de services S2": { + "account_number": "3522" + } + }, + "account_number": "35" + }, + "Produits finis": { + "Produits finis A": { + "account_number": "361" + }, + "Produits finis B": { + "account_number": "362" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3631" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3632" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3638" + }, + "account_number": "363" + }, + "account_number": "36" + }, + "Produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "Produits interm\u00e9diaires A": { + "account_number": "3711" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3712" + }, + "account_number": "371" + }, + "Produits r\u00e9siduels": { + "D\u00e9chets": { + "account_number": "3721" + }, + "Rebuts": { + "account_number": "3722" + }, + "Mati\u00e8res de R\u00e9cup\u00e9ration": { + "account_number": "3723" + }, + "account_number": "372" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3731" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3732" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3738" + }, + "account_number": "373" + }, + "account_number": "37" + }, + "Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "Marchandises en cours de route": { + "account_number": "381" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": { + "account_number": "382" + }, + "Autres approvisionnements en cours de route": { + "account_number": "383" + }, + "Produits finis en cours de route": { + "account_number": "386" + }, + "Stock en consignation ou en d\u00e9p\u00f4t": { + "Stock en consignation": { + "account_number": "3871" + }, + "Stock en d\u00e9p\u00f4t": { + "account_number": "3872" + }, + "account_number": "387" + }, + "Stock provenant d\u2019immobilisations mises hors service ou au rebut": { + "account_number": "388" + }, + "account_number": "38" + }, + "D\u00e9pr\u00e9ciations des stocks et encours de production": { + "D\u00e9pr\u00e9ciations des stocks de marchandises": { + "account_number": "391" + }, + "D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "392" + }, + "D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": { + "account_number": "393" + }, + "D\u00e9pr\u00e9ciations des productions en cours": { + "account_number": "394" + }, + "D\u00e9pr\u00e9ciations des services en cours": { + "account_number": "395" + }, + "D\u00e9pr\u00e9ciations des stocks de produits finis": { + "account_number": "396" + }, + "D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "account_number": "397" + }, + "D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_number": "398" + }, + "account_number": "39" + }, + "root_type": "Asset", + "account_number": "3" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "Fournisseurs d\u00e9biteurs": { + "Fournisseurs Avances et acomptes vers\u00e9s": { + "account_number": "4091" + }, + "Fournisseurs Groupe avances et acomptes vers\u00e9s": { + "account_number": "4092" + }, + "Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": { + "account_number": "4093" + }, + "Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": { + "account_number": "4094" + }, + "Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": { + "account_number": "4098" + }, + "account_number": "409" + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "Clients": { + "Clients": { + "account_type": "Receivable", + "account_number": "4111" + }, + "Clients groupe": { + "account_type": "Receivable", + "account_number": "4112" + }, + "Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable", + "account_number": "4114" + }, + "Clients, organismes internationaux": { + "account_type": "Receivable", + "account_number": "4115" + }, + "Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable", + "account_number": "4116" + }, + "Client, retenues de garantie": { + "account_type": "Receivable", + "account_number": "4117" + }, + "Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable", + "account_number": "4118" + }, + "account_type": "Receivable", + "account_number": "411" + }, + "Clients, effets \u00e0 recevoir en portefeuille": { + "Clients, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4121" + }, + "Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4122" + }, + "\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4124" + }, + "Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4125" + }, + "account_type": "Receivable", + "account_number": "412" + }, + "Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4131" + }, + "Clients, effets impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4132" + }, + "Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4133" + }, + "Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4138" + }, + "account_type": "Receivable", + "account_number": "413" + }, + "Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4141" + }, + "Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4142" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4146" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4147" + }, + "account_type": "Receivable", + "account_number": "414" + }, + "Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable", + "account_number": "415" + }, + "Cr\u00e9ances clients litigieuses ou douteuses": { + "Cr\u00e9ances litigieuses": { + "account_type": "Receivable", + "account_number": "4161" + }, + "Cr\u00e9ances douteuses": { + "account_type": "Receivable", + "account_number": "4162" + }, + "account_type": "Receivable", + "account_number": "416" + }, + "Clients, produits \u00e0 recevoir": { + "Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable", + "account_number": "4181" + }, + "Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable", + "account_number": "4186" + }, + "account_type": "Receivable", + "account_number": "418" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "Personnel, avances et acomptes": { + "Personnel, avances": { + "account_number": "4211" + }, + "Personnel, acomptes": { + "account_number": "4212" + }, + "Frais avanc\u00e9s et fournitures au personnel": { + "account_number": "4213" + }, + "account_number": "421" + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "Prestations familiales": { + "account_number": "4311" + }, + "Accidents de travail": { + "account_number": "4312" + }, + "Caisse de retraite obligatoire": { + "account_number": "4313" + }, + "Caisse de retraite facultative": { + "account_number": "4314" + }, + "Autres cotisations sociales": { + "account_number": "4318" + } + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "Mutuelle": { + "account_number": "4331" + }, + "Assurances retraite": { + "account_number": "4332" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "4333" + } + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Produits \u00e0 recevoir": { + "account_number": "4387" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "\u00c9tat, TVA factur\u00e9e": { + "TVA factur\u00e9e sur ventes": { + "account_number": "4431" + }, + "TVA factur\u00e9e sur prestations de services": { + "account_number": "4432" + }, + "TVA factur\u00e9e sur travaux": { + "account_number": "4433" + }, + "TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": { + "account_number": "4434" + }, + "TVA sur factures \u00e0 \u00e9tablir": { + "account_number": "4435" + }, + "account_number": "443" + }, + "\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "TVA r\u00e9cup\u00e9rable sur immobilisations": { + "account_number": "4451" + }, + "TVA r\u00e9cup\u00e9rable sur achats": { + "account_number": "4452" + }, + "TVA r\u00e9cup\u00e9rable sur transport": { + "account_number": "4453" + }, + "TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": { + "account_number": "4454" + }, + "TVA r\u00e9cup\u00e9rable sur factures non parvenues": { + "account_number": "4455" + }, + "TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": { + "account_number": "4456" + }, + "account_number": "445" + }, + "\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges \u00e0 payer": { + "account_number": "4486" + }, + "Produits \u00e0 recevoir": { + "account_number": "4487" + }, + "account_number": "448" + }, + "\u00c9tat, cr\u00e9ances et dettes diverses": { + "\u00c9tat, obligations cautionn\u00e9es": { + "account_number": "4491" + }, + "\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": { + "account_number": "4492" + }, + "\u00c9tat, fonds de dotation \u00e0 recevoir": { + "account_number": "4493" + }, + "\u00c9tat, subventions investissement \u00e0 recevoir": { + "account_number": "4494" + }, + "\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": { + "account_number": "4495" + }, + "\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": { + "account_number": "4496" + }, + "\u00c9tat, avances sur subventions": { + "account_number": "4497" + }, + "\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": { + "account_number": "4499" + }, + "account_number": "449" + } + }, + "45-Organismes internationaux (ACTIF)": { + "Op\u00e9rations avec les organismes africains": { + "account_number": "451" + }, + "Op\u00e9rations avec les autres organismes internationaux": { + "account_number": "452" + }, + "Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "Organismes internationaux, fonds de dotation \u00e0 recevoir": { + "account_number": "4581" + }, + "Organismes internationaux, subventions \u00e0 recevoir": { + "account_number": "4582" + }, + "account_number": "458" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "Apporteurs, capital appel\u00e9, non vers\u00e9": { + "account_number": "4613" + }, + "Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": { + "account_number": "4614" + }, + "Apporteurs, titres \u00e0 \u00e9changer": { + "account_number": "4618" + } + }, + "Apporteurs, restant d\u00fb sur capital appel\u00e9": { + "account_number": "467" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4721" + }, + "Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": { + "account_number": "4726" + } + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "Mandants": { + "account_number": "4731" + }, + "Mandataires": { + "account_number": "4732" + }, + "Commettants": { + "account_number": "4733" + }, + "Commissionnaires": { + "account_number": "4734" + }, + "\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": { + "account_number": "4739" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "Compte de r\u00e9partition p\u00e9riodique des produits": { + "account_number": "4747" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "Compte actif": { + "account_type": "Temporary", + "account_number": "4751" + } + }, + "Charges constat\u00e9es d\u2019avance": { + "account_number": "476" + }, + "478-\u00c9carts de conversion actif": { + "Diminution des cr\u00e9ances d\u2019exploitation": { + "account_number": "4781" + }, + "Diminution des cr\u00e9ances financi\u00e8res": { + "account_number": "4782" + }, + "Augmentation des dettes d\u2019exploitation": { + "account_number": "4783" + }, + "Augmentation des dettes financi\u00e8res": { + "account_number": "4784" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4786" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4788" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "En compte, immobilisations incorporelles": { + "account_number": "4851" + }, + "En compte, immobilisations corporelles": { + "account_number": "4852" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_number": "4853" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_number": "4854" + }, + "Effets escompt\u00e9s non \u00e9chus": { + "account_number": "4855" + }, + "Retenues de garantie": { + "account_number": "4857" + }, + "Factures \u00e0 \u00e9tablir": { + "account_number": "4858" + }, + "account_number": "485" + }, + "Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": { + "account_number": "488" + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "D\u00e9pr\u00e9ciations des comptes clients": { + "Cr\u00e9ances litigieuses": { + "account_number": "4911" + }, + "Cr\u00e9ances douteuses": { + "account_number": "4912" + }, + "account_number": "491" + }, + "D\u00e9pr\u00e9ciations des comptes organismes internationaux": { + "account_number": "495" + }, + "D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "Associ\u00e9s, comptes courants": { + "account_number": "4962" + }, + "Associ\u00e9s, op\u00e9rations faites en commun": { + "account_number": "4963" + }, + "Groupe, comptes courants": { + "account_number": "4966" + }, + "account_number": "496" + }, + "D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": { + "account_number": "497" + }, + "D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "account_number": "4985" + }, + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4986" + }, + "Autres cr\u00e9ances HAO": { + "account_number": "4988" + }, + "account_number": "498" + }, + "Provisions pour risques \u00e0 court terme": { + "Sur op\u00e9rations d\u2019exploitation": { + "account_number": "4991" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "4997" + }, + "Sur op\u00e9rations HAO": { + "account_number": "4998" + }, + "account_number": "499" + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "Fournisseurs, dettes en compte": { + "Fournisseurs": { + "account_type": "Payable", + "account_number": "4011" + }, + "Fournisseurs groupe": { + "account_type": "Payable", + "account_number": "4012" + }, + "Fournisseurs sous-traitants": { + "account_type": "Payable", + "account_number": "4013" + }, + "Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable", + "account_number": "4016" + }, + "Fournisseur, retenues de garantie": { + "account_type": "Payable", + "account_number": "4017" + }, + "account_type": "Payable", + "account_number": "401" + }, + "Fournisseurs, effets \u00e0 payer": { + "Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4021" + }, + "Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4022" + }, + "Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4023" + }, + "account_type": "Payable", + "account_number": "402" + }, + "Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4041" + }, + "Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4042" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4046" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4047" + }, + "account_type": "Payable", + "account_number": "404" + }, + "Fournisseurs, factures non parvenues": { + "Fournisseurs": { + "account_type": "Stock Received But Not Billed", + "account_number": "4081" + }, + "Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed", + "account_number": "4082" + }, + "Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed", + "account_number": "4083" + }, + "Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed", + "account_number": "4086" + }, + "account_type": "Stock Received But Not Billed", + "account_number": "408" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "Clients cr\u00e9diteurs": { + "Clients, avances et acomptes re\u00e7us": { + "account_number": "4191" + }, + "Clients groupe, avances et acomptes re\u00e7us": { + "account_number": "4192" + }, + "Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": { + "account_number": "4194" + }, + "Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": { + "account_number": "4198" + }, + "account_number": "419" + } + }, + "42-Personnel (PASSIF)": { + "Personnel, r\u00e9mun\u00e9rations dues": { + "account_number": "422" + }, + "Personnel, oppositions, saisies-arr\u00eats": { + "Personnel, oppositions": { + "account_number": "4231" + }, + "Personnel, saisies-arr\u00eats": { + "account_number": "4232" + }, + "Personnel, avis \u00e0 tiers d\u00e9tenteur": { + "account_number": "4233" + }, + "account_number": "423" + }, + "Personnel, \u0153uvres sociales internes": { + "Assistance m\u00e9dicale": { + "account_number": "4241" + }, + "Allocations familiales": { + "account_number": "4242" + }, + "Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": { + "account_number": "4245" + }, + "Autres \u0153uvres sociales internes": { + "account_number": "4248" + }, + "account_number": "424" + }, + "Repr\u00e9sentants du personnel": { + "D\u00e9l\u00e9gu\u00e9s du personnel": { + "account_number": "4251" + }, + "Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": { + "account_number": "4252" + }, + "Autres repr\u00e9sentants du personnel": { + "account_number": "4258" + }, + "account_number": "425" + }, + "Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "Participation aux b\u00e9n\u00e9fices": { + "account_number": "4261" + }, + "Participation au capital": { + "account_number": "4264" + }, + "account_number": "426" + }, + "Personnel d\u00e9p\u00f4ts": { + "account_number": "427" + }, + "Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": { + "account_number": "4281" + }, + "Autres charges \u00e0 payer": { + "account_number": "4286" + }, + "Produits \u00e0 recevoir": { + "account_number": "4287" + }, + "account_number": "428" + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges sociales sur gratifications \u00e0 payer": { + "account_number": "4381" + }, + "Charges sociales sur cong\u00e9s \u00e0 payer": { + "account_number": "4382" + }, + "Autres charges \u00e0 payer": { + "account_number": "4386" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": { + "account_number": "441" + }, + "\u00c9tat, autres imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes d\u2019\u00c9tat": { + "account_number": "4421" + }, + "Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": { + "account_number": "4422" + }, + "Imp\u00f4ts et taxes recouvrables sur des obligataires": { + "account_number": "4423" + }, + "Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": { + "account_number": "4424" + }, + "Droits de douane": { + "account_number": "4426" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "4428" + }, + "account_number": "442" + }, + "\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "\u00c9tat, TVA due": { + "account_number": "4441" + }, + "\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": { + "account_number": "4449" + }, + "account_number": "444" + }, + "\u00c9tat, autres taxes sur le chiffre d\u2019affaires": { + "account_number": "446" + }, + "\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": { + "account_number": "4471" + }, + "Imp\u00f4ts sur salaires": { + "account_number": "4472" + }, + "Contribution nationale": { + "account_number": "4473" + }, + "Contribution nationale de solidarit\u00e9": { + "account_number": "4474" + }, + "Autres imp\u00f4ts et contributions": { + "account_number": "4478" + }, + "account_number": "447" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "Apporteurs, apports en nature": { + "account_number": "4611" + }, + "Apporteurs, apports en num\u00e9raire": { + "account_number": "4612" + }, + "Apporteurs, versements re\u00e7us sur augmentation de capital": { + "account_number": "4615" + }, + "Apporteurs, versements anticip\u00e9s": { + "account_number": "4616" + }, + "Apporteurs d\u00e9faillants": { + "account_number": "4617" + }, + "Apporteurs, capital \u00e0 rembourser": { + "account_number": "4619" + } + }, + "462-Associ\u00e9s, comptes courants": { + "Principal": { + "account_number": "4621" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4626" + } + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "Op\u00e9rations courantes": { + "account_number": "4631" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4636" + } + }, + "Associ\u00e9s, dividendes \u00e0 payer": { + "account_number": "465" + }, + "Groupe, comptes courants": { + "account_number": "466" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "D\u00e9biteurs divers": { + "account_number": "4711" + }, + "Cr\u00e9diteurs divers": { + "account_number": "4712" + }, + "Obligataires": { + "account_number": "4713" + }, + "R\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "4715" + }, + "Compte d\u2019affacturage": { + "account_number": "4716" + }, + "D\u00e9biteurs divers retenues de garantie": { + "account_number": "4717" + }, + "Apport, compte de fusion et op\u00e9rations assimil\u00e9es": { + "account_number": "4718" + }, + "Bons de souscription d\u2019actions et d\u2019obligations": { + "account_number": "4719" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "Compte de r\u00e9partition p\u00e9riodique des charges": { + "account_number": "4746" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "Compte passif": { + "account_number": "4752" + } + }, + "Produits constat\u00e9s d\u2019avance": { + "account_number": "477" + }, + "479-\u00c9carts de conversion passif": { + "Augmentation des cr\u00e9ances d\u2019exploitation": { + "account_number": "4791" + }, + "Augmentation des cr\u00e9ances financi\u00e8res": { + "account_number": "4792" + }, + "Diminution des dettes d\u2019exploitation": { + "account_number": "4793" + }, + "Diminution des dettes financi\u00e8res": { + "account_number": "4794" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4797" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4798" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "Fournisseurs d\u2019investissements": { + "Immobilisations incorporelles": { + "account_number": "4811" + }, + "Immobilisations corporelles": { + "account_number": "4812" + }, + "Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": { + "account_number": "4813" + }, + "R\u00e9serve de propri\u00e9t\u00e9": { + "account_number": "4816" + }, + "Retenues de garantie": { + "account_number": "4817" + }, + "Factures non parvenues": { + "account_number": "4818" + }, + "account_number": "481" + }, + "Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "Immobilisations incorporelles": { + "account_number": "4821" + }, + "Immobilisations corporelles": { + "account_number": "4822" + }, + "account_number": "482" + }, + "Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "Produits": { + "account_number": "4887" + }, + "account_number": "484" + } + }, + "root_type": "Liability" + }, + "Comptes de tr\u00e9sorerie": { + "Titres de placement": { + "Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "Titres du Tr\u00e9sor \u00e0 court terme": { + "account_number": "5011" + }, + "Titres d\u2019organismes financiers": { + "account_number": "5012" + }, + "Bons de caisse \u00e0 court terme": { + "account_number": "5013" + }, + "Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": { + "account_number": "5016" + }, + "account_number": "501" + }, + "Actions": { + "Actions ou parts propres": { + "account_number": "5021" + }, + "Actions cot\u00e9es": { + "account_number": "5022" + }, + "Actions non cot\u00e9es": { + "account_number": "5023" + }, + "Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": { + "account_number": "5024" + }, + "Autres actions": { + "account_number": "5025" + }, + "Frais d\u2019acquisition des actions": { + "account_number": "5026" + }, + "account_number": "502" + }, + "Obligations": { + "Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": { + "account_number": "5031" + }, + "Obligations cot\u00e9es": { + "account_number": "5032" + }, + "Obligations non cot\u00e9es": { + "account_number": "5033" + }, + "Autres obligations": { + "account_number": "5035" + }, + "Frais d\u2019acquisition des obligations": { + "account_number": "5036" + }, + "account_number": "503" + }, + "Bons de souscription": { + "Bons de souscription d\u2019actions": { + "account_number": "5042" + }, + "Bons de souscription d\u2019obligations": { + "account_number": "5043" + }, + "account_number": "504" + }, + "Titres n\u00e9gociables hors r\u00e9gion": { + "account_number": "505" + }, + "Int\u00e9r\u00eats courus": { + "Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": { + "account_number": "5061" + }, + "Actions": { + "account_number": "5062" + }, + "Obligations": { + "account_number": "5063" + }, + "account_number": "506" + }, + "Autres titres de placement et cr\u00e9ances assimil\u00e9es": { + "account_number": "508" + }, + "account_number": "50" + }, + "Valeurs \u00e0 encaisser": { + "Effets \u00e0 encaisser": { + "account_number": "511" + }, + "Effets \u00e0 l\u2019encaissement": { + "account_number": "512" + }, + "Ch\u00e8ques \u00e0 encaisser": { + "account_number": "513" + }, + "Ch\u00e8ques \u00e0 l\u2019encaissement": { + "account_number": "514" + }, + "Cartes de cr\u00e9dit \u00e0 encaisser": { + "account_number": "515" + }, + "Autres valeurs \u00e0 l\u2019encaissement": { + "Warrants": { + "account_number": "5181" + }, + "Billets de fonds": { + "account_number": "5182" + }, + "Ch\u00e8ques de voyage": { + "account_number": "5185" + }, + "Coupons \u00e9chus": { + "account_number": "5186" + }, + "Int\u00e9r\u00eats \u00e9chus des obligations": { + "account_number": "5187" + }, + "account_number": "518" + }, + "account_number": "51" + }, + "Banques": { + "Banques locales": { + "Banques en monnaie nationale": { + "account_type": "Bank", + "account_number": "5211" + }, + "Banques en devises": { + "account_type": "Bank", + "account_number": "5215" + }, + "account_type": "Bank", + "account_number": "521" + }, + "Banques autres \u00c9tats r\u00e9gion": { + "account_number": "522" + }, + "Banques autres \u00c9tats zone mon\u00e9taire": { + "account_number": "523" + }, + "Banques hors zone mon\u00e9taire": { + "account_number": "524" + }, + "Banques d\u00e9p\u00f4t \u00e0 terme": { + "account_number": "525" + }, + "Banques, int\u00e9r\u00eats courus": { + "Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": { + "account_number": "5261" + }, + "Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": { + "account_number": "5267" + }, + "account_number": "526" + }, + "account_number": "52" + }, + "\u00c9tablissements financiers et assimil\u00e9s": { + "Ch\u00e8ques postaux": { + "account_number": "531" + }, + "Tr\u00e9sor": { + "account_number": "532" + }, + "Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": { + "account_number": "533" + }, + "\u00c9tablissements financiers, int\u00e9r\u00eats courus": { + "account_number": "536" + }, + "Autres organismes financiers": { + "account_number": "538" + }, + "account_number": "53" + }, + "Instruments de tr\u00e9sorerie": { + "Options de taux d\u2019int\u00e9r\u00eat": { + "account_number": "541" + }, + "Options de taux de change": { + "account_number": "542" + }, + "Options de taux boursiers": { + "account_number": "543" + }, + "Instruments de march\u00e9s \u00e0 terme": { + "account_number": "544" + }, + "Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": { + "account_number": "545" + }, + "account_number": "54" + }, + "Instruments de monnaie \u00e9lectronique": { + "Monnaie \u00e9lectronique carte carburant": { + "account_number": "551" + }, + "Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": { + "account_number": "552" + }, + "Monnaie \u00e9lectronique carte p\u00e9age": { + "account_number": "553" + }, + "Porte-monnaie \u00e9lectronique": { + "account_number": "554" + }, + "Autres instruments de monnaies \u00e9lectroniques": { + "account_number": "558" + }, + "account_number": "55" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "Cr\u00e9dits de tr\u00e9sorerie": { + "account_number": "561" + }, + "Escompte de cr\u00e9dits de campagne": { + "account_number": "564" + }, + "Escompte de cr\u00e9dits ordinaires": { + "account_number": "565" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": { + "account_number": "566" + }, + "account_number": "56" + }, + "Caisse": { + "Caisse si\u00e8ge social": { + "Caisse en monnaie nationale": { + "account_number": "5711" + }, + "Caisse en devises": { + "account_number": "5712" + }, + "account_number": "571" + }, + "Caisse succursale A": { + "En monnaie nationale": { + "account_number": "5721" + }, + "En devises": { + "account_number": "5722" + }, + "account_number": "572" + }, + "Caisse succursale B": { + "En monnaie nationale": { + "account_number": "5731" + }, + "En devises": { + "account_number": "5732" + }, + "account_number": "573" + }, + "account_number": "57" + }, + "R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "R\u00e9gies d\u2019avance": { + "account_number": "581" + }, + "Accr\u00e9ditifs": { + "account_number": "582" + }, + "Virements de fonds": { + "account_number": "585" + }, + "Autres virements internes": { + "account_number": "588" + }, + "account_number": "58" + }, + "D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "D\u00e9pr\u00e9ciations des titres de placement": { + "account_number": "590" + }, + "D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": { + "account_number": "591" + }, + "D\u00e9pr\u00e9ciations des comptes banques": { + "account_number": "592" + }, + "D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": { + "account_number": "593" + }, + "D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": { + "account_number": "594" + }, + "Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": { + "account_number": "599" + }, + "account_number": "59" + }, + "root_type": "Asset", + "account_number": "5" + }, + "Comptes de charges des activit\u00e9s ordinaires": { + "Achats et variations de stocks": { + "Achats de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "6011" + }, + "Hors R\u00e9gion": { + "account_number": "6012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6014" + }, + "Frais sur achats": { + "account_number": "6015" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6019" + }, + "account_number": "601" + }, + "Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Dans la R\u00e9gion": { + "account_number": "6021" + }, + "Hors R\u00e9gion": { + "account_number": "6022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6024" + }, + "Frais sur achats": { + "account_number": "6025" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6029" + }, + "account_number": "602" + }, + "Variations des stocks de biens achet\u00e9s": { + "Variations des stocks de marchandises": { + "account_number": "6031" + }, + "Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "6032" + }, + "Variations des stocks d\u2019autres approvisionnements": { + "account_number": "6033" + }, + "account_number": "603" + }, + "Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "Mati\u00e8res consommables": { + "account_number": "6041" + }, + "Mati\u00e8res combustibles": { + "account_number": "6042" + }, + "Produits d\u2019entretien": { + "account_number": "6043" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "6044" + }, + "Frais sur achat": { + "account_number": "6045" + }, + "Fournitures de magasin": { + "account_number": "6046" + }, + "Fournitures de bureau": { + "account_number": "6047" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6049" + }, + "account_number": "604" + }, + "Autres achats": { + "Fournitures non stockables Eau": { + "account_number": "6051" + }, + "Fournitures non stockables \u00c9lectricit\u00e9": { + "account_number": "6052" + }, + "Fournitures non stockables Autres \u00e9nergies": { + "account_number": "6053" + }, + "Fournitures d\u2019entretien non stockables": { + "account_number": "6054" + }, + "Fournitures de bureau non stockables": { + "account_number": "6055" + }, + "Achats de petit mat\u00e9riel et outillage": { + "account_number": "6056" + }, + "Achats d\u2019\u00e9tudes et prestations de services": { + "account_number": "6057" + }, + "Achats de travaux, mat\u00e9riels et \u00e9quipements": { + "account_number": "6058" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6059" + }, + "account_number": "605" + }, + "Achats d\u2019emballages": { + "Emballages perdus": { + "account_number": "6081" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "6082" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "6083" + }, + "Frais sur achats": { + "account_number": "6085" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6089" + }, + "account_number": "608" + }, + "account_number": "60" + }, + "Transports": { + "Transports sur ventes": { + "account_number": "612" + }, + "Transports pour le compte de tiers": { + "account_number": "613" + }, + "Transports du personnel": { + "account_number": "614" + }, + "Transports de plis": { + "account_number": "616" + }, + "Autres frais de transport": { + "Voyages et d\u00e9placements": { + "account_number": "6181" + }, + "Transports entre \u00e9tablissements ou chantiers": { + "account_number": "6182" + }, + "Transports administratifs": { + "account_number": "6183" + }, + "account_number": "618" + }, + "account_number": "61" + }, + "Services ext\u00e9rieurs": { + "Sous-traitance g\u00e9n\u00e9rale": { + "account_number": "621" + }, + "Locations, charges locatives": { + "Locations de terrains": { + "account_number": "6221" + }, + "Locations de b\u00e2timents": { + "account_number": "6222" + }, + "Locations de mat\u00e9riels et outillages": { + "account_number": "6223" + }, + "Malis sur emballages": { + "account_number": "6224" + }, + "Locations d\u2019emballages": { + "account_number": "6225" + }, + "Fermages et loyers du foncier": { + "account_number": "6226" + }, + "Locations et charges locatives diverses": { + "account_number": "6228" + }, + "account_number": "622" + }, + "Redevances de location acquisition": { + "Cr\u00e9dit-bail immobilier": { + "account_number": "6232" + }, + "Cr\u00e9dit-bail mobilier": { + "account_number": "6233" + }, + "Location-vente": { + "account_number": "6234" + }, + "Autres contrats de location acquisition": { + "account_number": "6238" + }, + "account_number": "623" + }, + "Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "Entretien et r\u00e9parations des biens immobiliers": { + "account_number": "6241" + }, + "Entretien et r\u00e9parations des biens mobiliers": { + "account_number": "6242" + }, + "Maintenance": { + "account_number": "6243" + }, + "Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "6244" + }, + "Autres entretiens et r\u00e9parations": { + "account_number": "6248" + }, + "account_number": "624" + }, + "Primes d\u2019assurance": { + "Assurances multirisques": { + "account_number": "6251" + }, + "Assurances mat\u00e9riel de transport": { + "account_number": "6252" + }, + "Assurances risques d\u2019exploitation": { + "account_number": "6253" + }, + "Assurances responsabilit\u00e9 du producteur": { + "account_number": "6254" + }, + "Assurances insolvabilit\u00e9 clients": { + "account_number": "6255" + }, + "Assurances transport sur ventes": { + "account_number": "6257" + }, + "Autres primes d\u2019assurances": { + "account_number": "6258" + }, + "account_number": "625" + }, + "\u00c9tudes, recherches et documentation": { + "\u00c9tudes et recherches": { + "account_number": "6261" + }, + "Documentation g\u00e9n\u00e9rale": { + "account_number": "6265" + }, + "Documentation technique": { + "account_number": "6266" + }, + "account_number": "626" + }, + "Publicit\u00e9, publications, relations publiques": { + "Annonces, insertions": { + "account_number": "6271" + }, + "Catalogues, imprim\u00e9s publicitaires": { + "account_number": "6272" + }, + "\u00c9chantillons": { + "account_number": "6273" + }, + "Foires et expositions": { + "account_number": "6274" + }, + "Publications": { + "account_number": "6275" + }, + "Cadeaux \u00e0 la client\u00e8le": { + "account_number": "6276" + }, + "Frais de colloques, s\u00e9minaires, conf\u00e9rences": { + "account_number": "6277" + }, + "Autres charges de publicit\u00e9 et relations publiques": { + "account_number": "6278" + }, + "account_number": "627" + }, + "Frais de t\u00e9l\u00e9communications": { + "Frais de t\u00e9l\u00e9phone": { + "account_number": "6281" + }, + "Frais de t\u00e9lex": { + "account_number": "6282" + }, + "Frais de t\u00e9l\u00e9copie": { + "account_number": "6283" + }, + "Autres frais de t\u00e9l\u00e9communications": { + "account_number": "6288" + }, + "account_number": "628" + }, + "account_number": "62" + }, + "Autres services ext\u00e9rieurs": { + "Frais bancaires": { + "Frais sur titres (vente, garde)": { + "account_number": "6311" + }, + "Frais sur effets": { + "account_number": "6312" + }, + "Location de coffres": { + "account_number": "6313" + }, + "Commissions d\u2019affacturage": { + "account_number": "6314" + }, + "Commissions sur cartes de cr\u00e9dit": { + "account_number": "6315" + }, + "Frais d\u2019\u00e9mission d\u2019emprunts": { + "account_number": "6316" + }, + "Frais sur instruments monnaie \u00e9lectronique": { + "account_number": "6317" + }, + "Autres frais bancaires": { + "account_number": "6318" + }, + "account_number": "631" + }, + "R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "Commissions et courtages sur ventes": { + "account_number": "6322" + }, + "Honoraires des professions r\u00e9glement\u00e9es": { + "account_number": "6324" + }, + "Frais d\u2019actes et de contentieux": { + "account_number": "6325" + }, + "R\u00e9mun\u00e9rations d\u2019affacturage": { + "account_number": "6326" + }, + "R\u00e9mun\u00e9rations des autres prestataires de services": { + "account_number": "6327" + }, + "Divers frais": { + "account_number": "6328" + }, + "account_number": "632" + }, + "Frais de formation du personnel": { + "account_number": "633" + }, + "Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "Redevances pour brevets, licences": { + "account_number": "6342" + }, + "Redevances pour logiciels": { + "account_number": "6343" + }, + "Redevances pour marques": { + "account_number": "6344" + }, + "Redevances pour sites internet": { + "account_number": "6345" + }, + "Redevances pour concessions, droits et valeurs similaires": { + "account_number": "6346" + }, + "account_number": "634" + }, + "Cotisations": { + "Cotisations": { + "account_number": "6351" + }, + "Concours divers": { + "account_number": "6358" + }, + "account_number": "635" + }, + "R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "Personnel int\u00e9rimaire": { + "account_number": "6371" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6372" + }, + "account_number": "637" + }, + "Autres charges externes": { + "Frais de recrutement du personnel": { + "account_number": "6381" + }, + "Frais de d\u00e9m\u00e9nagement": { + "account_number": "6382" + }, + "R\u00e9ceptions": { + "account_number": "6383" + }, + "Missions": { + "account_number": "6384" + }, + "Charges de copropri\u00e9t\u00e9": { + "account_number": "6385" + }, + "account_number": "638" + }, + "account_number": "63" + }, + "Imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes directs": { + "Imp\u00f4ts fonciers et taxes annexes": { + "account_number": "6411" + }, + "Patentes, licences et taxes annexes": { + "account_number": "6412" + }, + "Taxes sur appointements et salaires": { + "account_number": "6413" + }, + "Taxes d\u2019apprentissage": { + "account_number": "6414" + }, + "Formation professionnelle continue": { + "account_number": "6415" + }, + "Autres imp\u00f4ts et taxes directs": { + "account_number": "6418" + }, + "account_number": "641" + }, + "Imp\u00f4ts et taxes indirects": { + "account_number": "645" + }, + "Droits d\u2019enregistrement": { + "Droits de mutation": { + "account_number": "6461" + }, + "Droits de timbre": { + "account_number": "6462" + }, + "Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": { + "account_number": "6463" + }, + "Vignettes": { + "account_number": "6464" + }, + "Autres droits": { + "account_number": "6468" + }, + "account_number": "646" + }, + "P\u00e9nalit\u00e9s, amendes fiscales": { + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": { + "account_number": "6471" + }, + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": { + "account_number": "6472" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": { + "account_number": "6473" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": { + "account_number": "6474" + }, + "Autres p\u00e9nalit\u00e9s et amendes fiscales": { + "account_number": "6478" + }, + "account_number": "647" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "648" + }, + "account_number": "64" + }, + "Autres charges": { + "Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "Clients": { + "account_number": "6511" + }, + "Autres d\u00e9biteurs": { + "account_number": "6515" + }, + "account_number": "651" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "6521" + }, + "Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "6525" + }, + "account_number": "652" + }, + "Valeurs comptables des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "6541" + }, + "Immobilisations corporelles": { + "account_number": "6542" + }, + "account_number": "654" + }, + "Perte de change sur cr\u00e9ances et dettes commerciale": { + "account_number": "656" + }, + "P\u00e9nalit\u00e9s et amendes p\u00e9nales": { + "account_number": "657" + }, + "Charges diverses": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "6581" + }, + "Dons": { + "account_number": "6582" + }, + "M\u00e9c\u00e9nat": { + "account_number": "6583" + }, + "Autres charges diverses": { + "account_number": "6588" + }, + "account_number": "658" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "6591" + }, + "Sur stocks": { + "account_number": "6593" + }, + "Sur cr\u00e9ances": { + "account_number": "6594" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": { + "account_number": "6598" + }, + "account_number": "659" + }, + "account_number": "65" + }, + "Charges de personnel": { + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "Appointements salaires et commissions": { + "account_number": "6611" + }, + "Primes et gratifications": { + "account_number": "6612" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6613" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6614" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6615" + }, + "Suppl\u00e9ment familial": { + "account_number": "6616" + }, + "Avantages en nature": { + "account_number": "6617" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6618" + }, + "account_number": "661" + }, + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "Appointements salaires et commissions": { + "account_number": "6621" + }, + "Primes et gratifications": { + "account_number": "6622" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6623" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6624" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6625" + }, + "Suppl\u00e9ment familial": { + "account_number": "6626" + }, + "Avantages en nature": { + "account_number": "6627" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6628" + }, + "account_number": "662" + }, + "Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "Indemnit\u00e9s de logement": { + "account_number": "6631" + }, + "Indemnit\u00e9s de repr\u00e9sentation": { + "account_number": "6632" + }, + "Indemnit\u00e9s d\u2019expatriation": { + "account_number": "6633" + }, + "Indemnit\u00e9s de transport": { + "account_number": "6634" + }, + "Autres indemnit\u00e9s et avantages divers": { + "account_number": "6638" + }, + "account_number": "663" + }, + "Charges sociales": { + "Charges sociales sur r\u00e9mun\u00e9ration du personnel national": { + "account_number": "6641" + }, + "Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": { + "account_number": "6642" + }, + "account_number": "664" + }, + "R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "R\u00e9mun\u00e9ration du travail de l\u2019exploitant": { + "account_number": "6661" + }, + "Charges sociales": { + "account_number": "6662" + }, + "account_number": "666" + }, + "R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "Personnel int\u00e9rimaire": { + "account_number": "6671" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6672" + }, + "account_number": "667" + }, + "Autres charges sociales": { + "Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": { + "account_number": "6681" + }, + "Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": { + "account_number": "6682" + }, + "Versements et contributions aux autres \u0153uvres sociales": { + "account_number": "6683" + }, + "M\u00e9decine du travail et pharmacie": { + "account_number": "6684" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "6685" + }, + "Assurances retraite et fonds de pension": { + "account_number": "6686" + }, + "Majorations et p\u00e9nalit\u00e9s sociales": { + "account_number": "6687" + }, + "Charges sociales diverses": { + "account_number": "6688" + }, + "account_number": "668" + }, + "account_number": "66" + }, + "Frais financiers et charges assimil\u00e9es": { + "Int\u00e9r\u00eats des emprunts": { + "Emprunts obligataires": { + "account_number": "6711" + }, + "Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "6712" + }, + "Dettes li\u00e9es \u00e0 des participations": { + "account_number": "6713" + }, + "Primes de remboursement des obligations": { + "account_number": "6714" + }, + "account_number": "671" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "6722" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "6723" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": { + "account_number": "6724" + }, + "Int\u00e9r\u00eats dans loyers des autres locations acquisition": { + "account_number": "6728" + }, + "account_number": "672" + }, + "Escomptes accord\u00e9s": { + "account_number": "673" + }, + "Autres int\u00e9r\u00eats": { + "Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": { + "account_number": "6741" + }, + "Comptes courants bloqu\u00e9s": { + "account_number": "6742" + }, + "Int\u00e9r\u00eats sur obligations cautionn\u00e9es": { + "account_number": "6743" + }, + "Int\u00e9r\u00eats sur dettes commerciales": { + "account_number": "6744" + }, + "Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": { + "account_number": "6745" + }, + "Int\u00e9r\u00eats sur dettes diverses": { + "account_number": "6748" + }, + "account_number": "674" + }, + "Escomptes des effets de commerce": { + "account_number": "675" + }, + "Pertes de change financi\u00e8res": { + "account_number": "676" + }, + "Pertes sur titres de placement": { + "Pertes sur cessions de titres de placement": { + "account_number": "6771" + }, + "Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "6772" + }, + "account_number": "677" + }, + "Pertes et charges sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "6781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "6782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "6784" + }, + "account_number": "678" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "6791" + }, + "Sur titres de placement": { + "account_number": "6795" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "6798" + }, + "account_number": "679" + }, + "account_number": "67" + }, + "Dotations aux amortissements": { + "Dotations aux amortissements d\u2019exploitation": { + "Dotations aux amortissements des immobilisations incorporelles": { + "account_number": "6812" + }, + "Dotations aux amortissements des immobilisations corporelles": { + "account_number": "6813" + }, + "account_number": "681" + }, + "account_number": "68" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6911" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "account_number": "6913" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": { + "account_number": "6914" + }, + "account_number": "691" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6971" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": { + "account_number": "6972" + }, + "account_number": "697" + }, + "account_number": "69" + }, + "root_type": "Expense", + "account_number": "6" + }, + "Comptes de produits des activit\u00e9s ordinaires": { + "Ventes": { + "Ventes de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "7011" + }, + "Hors R\u00e9gion": { + "account_number": "7012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7014" + }, + "Sur internet": { + "account_number": "7015" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7019" + }, + "account_number": "701" + }, + "Ventes de produits finis": { + "Dans la R\u00e9gion": { + "account_number": "7021" + }, + "Hors R\u00e9gion": { + "account_number": "7022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7024" + }, + "Sur internet": { + "account_number": "7025" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7029" + }, + "account_number": "702" + }, + "Ventes de produits interm\u00e9diaires": { + "Dans la R\u00e9gion": { + "account_number": "7031" + }, + "Hors R\u00e9gion": { + "account_number": "7032" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7033" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7034" + }, + "Sur internet": { + "account_number": "7035" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7039" + }, + "account_number": "703" + }, + "Ventes de produits r\u00e9siduels": { + "Dans la R\u00e9gion": { + "account_number": "7041" + }, + "Hors R\u00e9gion": { + "account_number": "7042" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7043" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7044" + }, + "Sur internet": { + "account_number": "7045" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7049" + }, + "account_number": "704" + }, + "Travaux factur\u00e9s": { + "Dans la R\u00e9gion": { + "account_number": "7051" + }, + "Hors R\u00e9gion": { + "account_number": "7052" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7053" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7054" + }, + "Sur internet": { + "account_number": "7055" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7059" + }, + "account_number": "705" + }, + "Services vendus": { + "Dans la R\u00e9gion": { + "account_number": "7061" + }, + "Hors R\u00e9gion": { + "account_number": "7062" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7063" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7064" + }, + "Sur internet": { + "account_number": "7065" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7069" + }, + "account_number": "706" + }, + "Produits accessoires": { + "Ports, emballages perdus et autres frais factur\u00e9s": { + "account_number": "7071" + }, + "Commissions et courtages": { + "account_number": "7072" + }, + "Locations": { + "account_number": "7073" + }, + "Bonis sur reprises et cessions d\u2019emballages": { + "account_number": "7074" + }, + "Mise \u00e0 disposition de personnel": { + "account_number": "7075" + }, + "Redevances pour brevets, logiciels, marques et droits similaires": { + "account_number": "7076" + }, + "Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": { + "account_number": "7077" + }, + "Autres produits accessoires": { + "account_number": "7078" + }, + "account_number": "707" + }, + "account_number": "70" + }, + "Subventions d\u2019exploitation": { + "Sur produits \u00e0 l\u2019exportation": { + "account_number": "711" + }, + "Sur produits \u00e0 l\u2019importation": { + "account_number": "712" + }, + "Sur produits de p\u00e9r\u00e9quation": { + "account_number": "713" + }, + "Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": { + "account_number": "714" + }, + "Autres subventions d\u2019exploitation": { + "Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": { + "account_number": "7181" + }, + "Vers\u00e9es par les organismes internationaux": { + "account_number": "7182" + }, + "Vers\u00e9es par des tiers": { + "account_number": "7183" + }, + "account_number": "718" + }, + "account_number": "71" + }, + "Production immobilis\u00e9e": { + "Immobilisations incorporelles": { + "account_number": "721" + }, + "Immobilisations corporelles": { + "Immobilisations corporelles (hors actifs biologiques)": { + "account_number": "7221" + }, + "Immobilisations corporelles (actifs biologiques)": { + "account_number": "7222" + }, + "account_number": "722" + }, + "Production auto-consomm\u00e9e": { + "account_number": "724" + }, + "Immobilisations financi\u00e8res": { + "account_number": "726" + }, + "account_number": "72" + }, + "Variations des stocks de biens et de services produits": { + "Variations des stocks de produits en cours": { + "Produits en cours": { + "account_number": "7341" + }, + "Travaux en cours": { + "account_number": "7342" + }, + "account_number": "734" + }, + "Variations des en-cours de services": { + "\u00c9tudes en cours": { + "account_number": "7351" + }, + "Prestations de services en cours": { + "account_number": "7352" + }, + "account_number": "735" + }, + "Variations des stocks de produits finis": { + "account_number": "736" + }, + "Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "account_number": "7371" + }, + "Produits r\u00e9siduels": { + "account_number": "7372" + }, + "account_number": "737" + }, + "account_number": "73" + }, + "Autres produits": { + "Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "account_number": "751" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "7521" + }, + "B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "7525" + }, + "account_number": "752" + }, + "Produits des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "7541" + }, + "Immobilisations corporelles": { + "account_number": "7542" + }, + "account_number": "754" + }, + "Gains de change sur cr\u00e9ances et dettes commerciales": { + "account_number": "756" + }, + "Produits divers": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "7581" + }, + "Indemnit\u00e9s d\u2019assurances re\u00e7ues": { + "account_number": "7582" + }, + "Autres produits divers": { + "account_number": "7588" + }, + "account_number": "758" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "7591" + }, + "Sur stocks": { + "account_number": "7593" + }, + "Sur cr\u00e9ances": { + "account_number": "7594" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "account_number": "7598" + }, + "account_number": "759" + }, + "account_number": "75" + }, + "Revenus financiers et produits assimil\u00e9s": { + "Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "Int\u00e9r\u00eats de pr\u00eats": { + "account_number": "7712" + }, + "Int\u00e9r\u00eats sur cr\u00e9ances diverses": { + "account_number": "7713" + }, + "account_number": "771" + }, + "Revenus de participations et autres titres immobilis\u00e9s": { + "Revenus des titres de participation": { + "account_number": "7721" + }, + "Revenus autres titres immobilis\u00e9s": { + "account_number": "7722" + }, + "account_number": "772" + }, + "Escomptes obtenus": { + "account_number": "773" + }, + "Revenus de placement": { + "Revenus des obligations": { + "account_number": "7745" + }, + "Revenus des titres de placement": { + "account_number": "7746" + }, + "account_number": "774" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "account_number": "775" + }, + "Gains de change financiers": { + "account_number": "776" + }, + "Gains sur cessions de titres de placement": { + "account_number": "777" + }, + "Gains sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "7781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "7782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "7784" + }, + "account_number": "778" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "7791" + }, + "Sur titres de placement": { + "account_number": "7795" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "7798" + }, + "account_number": "779" + }, + "account_number": "77" + }, + "Transferts de charges": { + "Transferts de charges d\u2019exploitation": { + "account_number": "781" + }, + "Transferts de charges financi\u00e8res": { + "account_number": "787" + }, + "account_number": "78" + }, + "Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Pour risques et charges": { + "account_number": "7911" + }, + "Des immobilisations incorporelles": { + "account_number": "7913" + }, + "Des immobilisations corporelles": { + "account_number": "7914" + }, + "account_number": "791" + }, + "Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "Pour risques et charges": { + "account_number": "7971" + }, + "Des immobilisations financi\u00e8res": { + "account_number": "7972" + }, + "account_number": "797" + }, + "Reprises d\u2019amortissements": { + "account_number": "798" + }, + "Reprises de subventions d\u2019investissement": { + "account_number": "799" + }, + "account_number": "79" + }, + "root_type": "Income", + "account_number": "7" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "Valeurs comptables des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "811" + }, + "Immobilisations corporelles": { + "account_number": "812" + }, + "Immobilisations financi\u00e8res": { + "account_number": "816" + }, + "account_number": "81" + }, + "Charges hors activit\u00e9s ordinaires": { + "Charges HAO constat\u00e9es": { + "account_number": "831" + }, + "Charges li\u00e9es aux op\u00e9rations de restructuration": { + "account_number": "833" + }, + "Pertes sur cr\u00e9ances HAO": { + "account_number": "834" + }, + "Dons et lib\u00e9ralit\u00e9s accord\u00e9s": { + "account_number": "835" + }, + "Abandons de cr\u00e9ances consentis": { + "account_number": "836" + }, + "Charges li\u00e9es aux op\u00e9rations de liquidation": { + "account_number": "837" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "839" + }, + "account_number": "83" + }, + "Dotations hors activit\u00e9s ordinaires": { + "Dotations aux provisions r\u00e9glement\u00e9es": { + "account_number": "851" + }, + "Dotations aux amortissements HAO": { + "account_number": "852" + }, + "Dotations aux d\u00e9pr\u00e9ciations HAO": { + "account_number": "853" + }, + "Dotations aux provisions pour risques et charges HAO": { + "account_number": "854" + }, + "Autres dotations HAO": { + "account_number": "858" + }, + "account_number": "85" + }, + "Participation des travailleurs": { + "Participation l\u00e9gale aux b\u00e9n\u00e9fices": { + "account_number": "871" + }, + "Participation contractuelle aux b\u00e9n\u00e9fices": { + "account_number": "874" + }, + "Autres participations": { + "account_number": "878" + }, + "account_number": "87" + }, + "Imp\u00f4ts sur le r\u00e9sultat": { + "Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": { + "account_number": "8911" + }, + "Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": { + "account_number": "8912" + }, + "Activit\u00e9s exerc\u00e9es hors R\u00e9gion": { + "account_number": "8913" + }, + "account_number": "891" + }, + "Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "account_number": "892" + }, + "Imp\u00f4t minimum forfaitaire IMF": { + "account_number": "895" + }, + "D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "D\u00e9gr\u00e8vements": { + "account_number": "8991" + }, + "Annulations pour pertes r\u00e9troactives": { + "account_number": "8994" + }, + "account_number": "899" + }, + "account_number": "89" + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "Produits des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "821" + }, + "Immobilisations corporelles": { + "account_number": "822" + }, + "Immobilisations financi\u00e8res": { + "account_number": "826" + }, + "account_number": "82" + }, + "Produits hors activit\u00e9s ordinaires": { + "Produits HAO constat\u00e9s": { + "account_number": "841" + }, + "Produits li\u00e9s aux op\u00e9rations de restructuration": { + "account_number": "843" + }, + "Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": { + "account_number": "844" + }, + "Dons et lib\u00e9ralit\u00e9s obtenus": { + "account_number": "845" + }, + "Abandons de cr\u00e9ances obtenus": { + "account_number": "846" + }, + "Produits li\u00e9s aux op\u00e9rations de liquidation": { + "account_number": "847" + }, + "Transferts de charges HAO": { + "account_number": "848" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "849" + }, + "account_number": "84" + }, + "Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "Reprises de provisions r\u00e9glement\u00e9es": { + "account_number": "861" + }, + "Reprises d\u2019amortissements HAO": { + "account_number": "862" + }, + "Reprises de d\u00e9pr\u00e9ciations HAO": { + "account_number": "863" + }, + "Reprises de provisions pour risques et charges HAO": { + "account_number": "864" + }, + "Autres reprises HAO": { + "account_number": "868" + }, + "account_number": "86" + }, + "Subventions d\u2019\u00e9quilibre": { + "\u00c9tat": { + "account_number": "881" + }, + "Collectivit\u00e9s publiques": { + "account_number": "884" + }, + "Groupe": { + "account_number": "886" + }, + "Autres": { + "account_number": "888" + }, + "account_number": "88" + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/cg_plan_comptable.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/cg_plan_comptable.json new file mode 100644 index 00000000000..ee65f15920a --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/cg_plan_comptable.json @@ -0,0 +1,1919 @@ +{ + "country_code": "cg", + "name": "Syscohada - Plan Comptable", + "tree": { + "1-Comptes de ressources durables": { + "10-Capital": { + "101-Capital social": { + "1011-Capital souscrit, non appel\u00e9": {}, + "1012-Capital souscrit, appel\u00e9, non vers\u00e9": {}, + "1013-Capital souscrit, appel\u00e9, vers\u00e9, non amorti": {}, + "1014-Capital souscrit, appel\u00e9, vers\u00e9, amorti": {}, + "1018-Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": {} + }, + "102-Capital par dotation": { + "1021-Dotation initiale": {}, + "1022-Dotations compl\u00e9mentaires": {}, + "1028-Autres dotations": {} + }, + "103-Capital personnel": {}, + "104-Compte de l\u2019exploitant": { + "1041-Apports temporaires": {}, + "1042-Op\u00e9rations courantes": {}, + "1043-R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": {}, + "1047-Pr\u00e9l\u00e8vements d\u2019autoconsommation": {}, + "1048-Autres pr\u00e9l\u00e8vements": {} + }, + "105-Primes li\u00e9es au capital social": { + "1051-Primes d\u2019\u00e9mission": {}, + "1052-Primes d\u2019apport": {}, + "1053-Primes de fusion": {}, + "1054-Primes de conversion": {}, + "1058-Autres primes": {} + }, + "106-\u00c9carts de r\u00e9\u00e9valuation": { + "1061-\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": {}, + "1062-\u00c9carts de r\u00e9\u00e9valuation libre": {} + }, + "109-Apporteurs, capital souscrit, non appel\u00e9": {} + }, + "11-R\u00e9serves": { + "111-R\u00e9serve l\u00e9gale": {}, + "112-R\u00e9serves statutaires ou contractuelles": {}, + "113-R\u00e9serves r\u00e9glement\u00e9es": { + "1131-R\u00e9serves de plus-values nettes \u00e0 long terme": {}, + "1132-R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {}, + "1133-R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": {}, + "1134-R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": {}, + "1135-Autres r\u00e9serves r\u00e9glement\u00e9es": {} + }, + "118-Autres r\u00e9serves": { + "1181-R\u00e9serves facultatives": {}, + "1188-R\u00e9serves diverses": {} + } + }, + "12-Report \u00e0 nouveau": { + "121-Report \u00e0 nouveau cr\u00e9diteur": {}, + "129-Report \u00e0 nouveau d\u00e9biteur": { + "1291-Perte nette \u00e0 reporter": {}, + "1292-Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": {} + } + }, + "13-R\u00e9sultat net de l\u2019exercice": { + "130-R\u00e9sultat en instance d\u2019affectation": { + "1301-R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": {}, + "1309-R\u00e9sultat en instance d\u2019affectation : perte": {} + }, + "131-R\u00e9sultat net : b\u00e9n\u00e9fice": {}, + "132-Marge commerciale (MC)": {}, + "133-Valeur ajout\u00e9e (VA)": {}, + "134-Exc\u00e9dent brut d\u2019exploitation (EBE)": {}, + "135-R\u00e9sultat d\u2019exploitation (RE)": {}, + "136-R\u00e9sultat financier (RF)": {}, + "137-R\u00e9sultat des activit\u00e9s ordinaires (RAO)": {}, + "138-R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "1381-R\u00e9sultat de fusion": {}, + "1382-R\u00e9sultat d\u2019apport partiel d\u2019actif": {}, + "1383-R\u00e9sultat de scission": {}, + "1384-R\u00e9sultat de liquidation": {} + }, + "139-R\u00e9sultat net : perte": {} + }, + "14-Subventions d\u2019investissement": { + "141-Subventions d\u2019\u00e9quipement": { + "1411-\u00c9tat": {}, + "1412-R\u00e9gions": {}, + "1413-D\u00e9partements": {}, + "1414-Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": {}, + "1415-Entit\u00e9s publiques ou mixtes": {}, + "1416-Entit\u00e9s et organismes priv\u00e9s": {}, + "1417-Organismes internationaux": {}, + "1418-Autres": {} + }, + "148-Autres subventions d\u2019investissement": {} + }, + "15-Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "151-Amortissements d\u00e9rogatoires": {}, + "152-Plus-values de cession \u00e0 r\u00e9investir": {}, + "153-Fonds r\u00e9glement\u00e9s": { + "1531-Fonds National": {}, + "1532-Pr\u00e9l\u00e8vement pour le Budget": {} + }, + "154-Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": {}, + "155-Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "1551-Reconstitution des gisements miniers et p\u00e9troliers": {} + }, + "156-Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "1561-Hausse de prix": {}, + "1562-Fluctuation des cours": {} + }, + "157-Provisions pour investissement": {}, + "158-Autres provisions et fonds r\u00e9glement\u00e9s": {} + }, + "16-Emprunts et dettes assimil\u00e9es": { + "161-Emprunts obligataires": { + "1611-Emprunts obligataires ordinaires": {}, + "1612-Emprunts obligataires convertibles en actions": {}, + "1613-Emprunts obligataires remboursables en actions": {}, + "1618-Autres emprunts obligataires": {} + }, + "162-Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "163-Avances re\u00e7ues de l\u2019\u00c9tat": {}, + "164-Avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "165-D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "1651-D\u00e9p\u00f4ts": {}, + "1652-Cautionnements": {} + }, + "166-Int\u00e9r\u00eats courus": { + "1661-Sur emprunts obligataires": {}, + "1662-Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "1663-Sur avances re\u00e7ues de l\u2019\u00c9tat": {}, + "1664-Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "1665-Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": {}, + "1667-Sur avances assorties de conditions particuli\u00e8res": {}, + "1668-Sur autres emprunts et dettes": {} + }, + "167-Avances assorties de conditions particuli\u00e8res": { + "1671-Avances bloqu\u00e9es pour augmentation du capital": {}, + "1672-Avances conditionn\u00e9es par l\u2019\u00c9tat": {}, + "1673-Avances conditionn\u00e9es par les autres organismes africains": {}, + "1674-Avances conditionn\u00e9es par les organismes internationaux": {} + }, + "168-Autres emprunts et dettes": { + "1681-Rentes viag\u00e8res capitalis\u00e9es": {}, + "1682-Billets de fonds": {}, + "1683-Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": {}, + "1684-Emprunts participatifs": {}, + "1685-Participation des travailleurs aux b\u00e9n\u00e9fices": {}, + "1686-Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": {} + } + }, + "17-Dettes de location acquisition": { + "172-Dettes de location acquisition / cr\u00e9dit bail immobilier": {}, + "173-Dettes de location acquisition / cr\u00e9dit bail mobilier": {}, + "174-Dettes de location acquisition / location de vente": {}, + "176-Int\u00e9r\u00eats courus": { + "1762-Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": {}, + "1763-Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": {}, + "1764-Sur dettes de location acquisition / location-vente": {}, + "1768-Sur autres dettes de location acquisition": {} + }, + "178-Autres dettes de location acquisition": {} + }, + "18-Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "181-Dettes li\u00e9es \u00e0 des participations": { + "1811-Dettes li\u00e9es \u00e0 des participations (groupe)": {}, + "1812-Dettes li\u00e9es \u00e0 des participations (hors groupe)": {} + }, + "182-Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "183-Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": {}, + "184-Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "185-Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "186-Comptes de liaison charges": {}, + "187-Comptes de liaison produits": {}, + "188-Comptes de liaison des soci\u00e9t\u00e9s en participation": {} + }, + "19-Provisions pour risques et charges": { + "191-Provisions pour litiges": {}, + "192-Provisions pour garanties donn\u00e9es aux clients": {}, + "193-Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": {}, + "194-Provisions pour pertes de change": {}, + "195-Provisions pour imp\u00f4ts": {}, + "196-Provisions pour pensions et obligations similaires": { + "1961-Provisions pour pensions et obligations similaires engagement de retraite": {}, + "1962-Actif du r\u00e9gime de retraite": {} + }, + "197-Provisions pour restructuration": {}, + "198-Autres provisions pour risques et charges": { + "1981-Provisions pour amendes et p\u00e9nalit\u00e9s": {}, + "1983-Provisions pour propre assureur": {}, + "1984-Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "1985-Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": {}, + "1988-Provisions pour divers risques et charges": {} + } + }, + "root_type": "Equity" + }, + "2-Comptes d\u2019actif immobilis\u00e9": { + "21-Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "211-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "212-Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "2121-Brevets": { + "account_type": "Fixed Asset" + }, + "2122-Licences": { + "account_type": "Fixed Asset" + }, + "2123-Concessions de service public": { + "account_type": "Fixed Asset" + }, + "2128-Autres concessions et droits similaires": { + "account_type": "Fixed Asset" + } + }, + "213-Logiciels et sites internet": { + "account_type": "Fixed Asset", + "2131-Logiciels": { + "account_type": "Fixed Asset" + }, + "2132-Sites internet": { + "account_type": "Fixed Asset" + } + }, + "214-Marques": { + "account_type": "Fixed Asset" + }, + "215-Fonds commercial": { + "account_type": "Fixed Asset" + }, + "216-Droit au bail": { + "account_type": "Fixed Asset" + }, + "217-Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset" + }, + "218-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "2181-Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset" + }, + "2182-Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset" + }, + "2183-Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset" + }, + "2184-Co\u00fbts des franchises": { + "account_type": "Fixed Asset" + }, + "2188-Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset" + } + }, + "219-Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "2191-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "2193-Logiciels et internet": { + "account_type": "Fixed Asset" + }, + "2198-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset" + } + } + }, + "22-Terrains": { + "account_type": "Fixed Asset", + "221-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "2211-Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset" + }, + "2212-Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset" + }, + "2218-Autres terrains": { + "account_type": "Fixed Asset" + } + }, + "222-Terrains nus": { + "account_type": "Fixed Asset", + "2221-Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset" + }, + "2228-Autres terrains nus": { + "account_type": "Fixed Asset" + } + }, + "223-Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "2231-Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset" + }, + "2232-Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset" + }, + "2234-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset" + }, + "2235-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset" + }, + "2238-Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset" + } + }, + "224-Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "2241-Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset" + }, + "2245-Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset" + }, + "2248-Autres travaux": { + "account_type": "Fixed Asset" + } + }, + "225-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "2251-Carri\u00e8res": { + "account_type": "Fixed Asset" + } + }, + "226-Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "2261-Parkings": { + "account_type": "Fixed Asset" + } + }, + "227-Terrains mis en concession": { + "account_type": "Fixed Asset" + }, + "228-Autres terrains": { + "account_type": "Fixed Asset", + "2281-Terrains immeubles de placement": { + "account_type": "Fixed Asset" + }, + "2285-Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset" + }, + "2286-Terrains de location acquisition": { + "account_type": "Fixed Asset" + }, + "2288-Divers terrains": { + "account_type": "Fixed Asset" + } + }, + "229-Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "2291-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset" + }, + "2292-Terrains nus": { + "account_type": "Fixed Asset" + }, + "2295-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset" + }, + "2298-Autres terrains": { + "account_type": "Fixed Asset" + } + } + }, + "23-B\u00e2timents, installations techniques et agencements": { + "231-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "2311-B\u00e2timents industriels": {}, + "2312-B\u00e2timents agricoles": {}, + "2313-B\u00e2timents administratifs et commerciaux": {}, + "2314-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2315-B\u00e2timents immeubles de placement": {}, + "2316-B\u00e2timents de location acquisition": {} + }, + "232-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "2321-B\u00e2timents industriels": {}, + "2322-B\u00e2timents agricoles": {}, + "2323-B\u00e2timents administratifs et commerciaux": {}, + "2324-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2325-B\u00e2timents immeubles de placement": {}, + "2326-B\u00e2timents de location acquisition": {} + }, + "233-Ouvrages d\u2019infrastructure": { + "2331-Voies de terre": {}, + "2332-Voies de fer": {}, + "2333-Voies d\u2019eau": {}, + "2334-Barrages, Digues": {}, + "2335-Pistes d\u2019a\u00e9rodrome": {}, + "2338-Autres ouvrages d\u2019infrastructures": {} + }, + "234-Am\u00e9nagements, agencements et installations techniques": { + "2341-Installations complexes sp\u00e9cialis\u00e9es sur sol propre": {}, + "2342-Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": {}, + "2343-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": {}, + "2344-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": {}, + "2345-Am\u00e9nagements et agencements des b\u00e2timents": {} + }, + "235-Am\u00e9nagements de bureaux": { + "2351-Installations g\u00e9n\u00e9rales": {}, + "2358-Autres am\u00e9nagements de bureaux": {} + }, + "237-B\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "238-Autres installations et agencements": {}, + "239-B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "2391-B\u00e2timents en cours": {}, + "2392-Installations en cours": {}, + "2393-Ouvrages d\u2019infrastructure en cours": {}, + "2394-Am\u00e9nagements et agencements et installations techniques en cours": {}, + "2395-Am\u00e9nagements de bureaux en cours": {}, + "2398-Autres installations et agencements en cours": {} + } + }, + "24-Mat\u00e9riel, mobilier et actifs biologiques": { + "241-Mat\u00e9riel et outillage industriel et commercial": { + "2411-Mat\u00e9riel industriel": {}, + "2412-Outillage industriel": {}, + "2413-Mat\u00e9riel commercial": {}, + "2414-Outillage commercial": {}, + "2416-Mat\u00e9riel & outillage industriel et commercial de location-acquisition": {} + }, + "242-Mat\u00e9riel et outillage agricole": { + "2421-Mat\u00e9riel agricole": {}, + "2422-Outillage agricole": {}, + "2426-Mat\u00e9riel & outillage agricole de location-acquisition": {} + }, + "243-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "244-Mat\u00e9riel et mobilier": { + "2441-Mat\u00e9riel de bureau": {}, + "2442-Mat\u00e9riel informatique": {}, + "2443-Mat\u00e9riel bureautique": {}, + "2444-Mobilier de bureau": {}, + "2445-Mat\u00e9riel et mobilier immeubles de placement": {}, + "2446-Mat\u00e9riel et mobilier de location acquisition": {}, + "2447-Mat\u00e9riel et mobilier des logements du personnel": {} + }, + "245-Mat\u00e9riel de transport": { + "2451-Mat\u00e9riel automobile": {}, + "2452-Mat\u00e9riel ferroviaire": {}, + "2453-Mat\u00e9riel fluvial, lagunaire": {}, + "2454-Mat\u00e9riel naval": {}, + "2455-Mat\u00e9riel a\u00e9rien": {}, + "2456-Mat\u00e9riel de transport de location-acquisition": {}, + "2457-Mat\u00e9riel hippomobile": {}, + "2458-Autres mat\u00e9riels de transport": {} + }, + "246-Actifs biologiques": { + "2461-Cheptel, animaux de trait": {}, + "2462-Cheptel, animaux reproducteurs": {}, + "2463-Animaux de garde": {}, + "2465-Plantations agricoles": {}, + "2468-Autres actifs biologiques": {} + }, + "247-Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "2471-Agencements et am\u00e9nagements du mat\u00e9riel": {}, + "2472-Agencements et am\u00e9nagements des actifs biologiques": {}, + "2478-Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": {} + }, + "248-Autres mat\u00e9riels et mobiliers": { + "2481-Collections et \u0153uvres d\u2019art": {}, + "2488-Divers mat\u00e9riels mobiliers": {} + }, + "249-Mat\u00e9riels et actifs biologiques en cours": { + "2491-Mat\u00e9riel et outillage industriel et commercial": {}, + "2492-Mat\u00e9riel et outillage agricole": {}, + "2493-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2494-Mat\u00e9riel et mobilier de bureau": {}, + "2495-Mat\u00e9riel de transport": {}, + "2496-Actifs biologiques": {}, + "2497-Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": {}, + "2498-Autres mat\u00e9riels et actifs biologiques en cours": {} + } + }, + "25-Avances et acomptes vers\u00e9s sur immobilisations": { + "251-Avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "252-Avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "26-Titres de participation": { + "261-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "262-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "263-Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "265-Participations dans des organismes professionnels": {}, + "266-Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {}, + "268-Autres titres de participation": {} + }, + "27-Autres immobilisations financi\u00e8res": { + "271-Pr\u00eats et cr\u00e9ances": { + "2711-Pr\u00eats participatifs": {}, + "2712-Pr\u00eats aux associ\u00e9s": {}, + "2713-Billets de fonds": {}, + "2714-Titres pr\u00eat\u00e9s": {}, + "2718-Autres pr\u00eats et cr\u00e9ances": {} + }, + "272-Pr\u00eats au personnel": { + "2721-Pr\u00eats immobiliers": {}, + "2722-Pr\u00eats mobiliers et d\u2019installation": {}, + "2728-Autres pr\u00eats au personnel": {} + }, + "273-Cr\u00e9ances sur l\u2019\u00c9tat": { + "2731-Retenues de garantie": {}, + "2733-Fonds r\u00e9glement\u00e9": {}, + "2734-Cr\u00e9ances sur le conc\u00e9dant": {}, + "2738-Autres cr\u00e9ances sur l\u2019\u00c9tat": {} + }, + "274-Titres immobilis\u00e9s": { + "2741-Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": {}, + "2742-Titres participatifs": {}, + "2743-Certificats d\u2019investissement": {}, + "2744-Parts de fonds commun de placement (FCP)": {}, + "2745-Obligations": {}, + "2746-Actions ou parts propres": {}, + "2748-Autres titres immobilis\u00e9s": {} + }, + "275-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "2751-D\u00e9p\u00f4ts pour loyers d\u2019avance": {}, + "2752-D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": {}, + "2753-D\u00e9p\u00f4ts pour l\u2019eau": {}, + "2754-D\u00e9p\u00f4ts pour le gaz": {}, + "2755-D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": {}, + "2756-Cautionnements sur march\u00e9s publics": {}, + "2757-Cautionnements sur autres op\u00e9rations": {}, + "2758-Autres d\u00e9p\u00f4ts et cautionnements": {} + }, + "276-Int\u00e9r\u00eats courus": { + "2761-Pr\u00eats et cr\u00e9ances non commerciales": {}, + "2762-Pr\u00eats au personnel": {}, + "2763-Cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2764-Titres immobilis\u00e9s": {}, + "2765-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2767-Cr\u00e9ances rattach\u00e9es \u00e0 des participations": {}, + "2768-Immobilisations financi\u00e8res diverses": {} + }, + "277-Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "2771-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": {}, + "2772-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": {}, + "2773-Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "2774-Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {} + }, + "278-Immobilisations financi\u00e8res diverses": { + "2781-Cr\u00e9ances diverses groupe": {}, + "2782-Cr\u00e9ances diverses hors groupe": {}, + "2784-Banques d\u00e9p\u00f4ts \u00e0 terme": {}, + "2785-Or et m\u00e9taux pr\u00e9cieux": {}, + "2788-Autres immobilisations financi\u00e8res": {} + } + }, + "28-Amortissements": { + "account_type": "Accumulated Depreciation", + "281-Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "2811-Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation" + }, + "2812-Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation" + }, + "2813-Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation" + }, + "2814-Amortissements des marques": { + "account_type": "Accumulated Depreciation" + }, + "2815-Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation" + }, + "2816-Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation" + }, + "2817-Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation" + }, + "2818-Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation" + } + }, + "282-Amortissements des terrains": { + "2824-Amortissements des travaux de mise en valeur des terrains": {} + }, + "283-Amortissements des b\u00e2timents, installations techniques et agencements": { + "2831-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2832-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2833-Amortissements des ouvrages d\u2019infrastructure": {}, + "2834-Amortissements des am\u00e9nagements, agencements et installations techniques": {}, + "2835-Amortissements des am\u00e9nagements de bureaux": {}, + "2837-Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2838-Amortissements des autres installations et agencements": {} + }, + "284-Amortissements du mat\u00e9riel": { + "2841-Amortissements du mat\u00e9riel et outillage industriel et commercial": {}, + "2842-Amortissements du mat\u00e9riel et outillage agricole": {}, + "2843-Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2844-Amortissements du mat\u00e9riel et mobilier": {}, + "2845-Amortissements du mat\u00e9riel de transport": {}, + "2846-Amortissements des actifs biologiques": {}, + "2847-Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2848-Amortissements des autres mat\u00e9riels": {} + } + }, + "29-D\u00e9pr\u00e9ciations des immobilisations": { + "291-D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "2911-D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": {}, + "2912-D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": {}, + "2913-D\u00e9pr\u00e9ciations des logiciels et sites internet": {}, + "2914-D\u00e9pr\u00e9ciations des marques": {}, + "2915-D\u00e9pr\u00e9ciations du fonds commercial": {}, + "2916-D\u00e9pr\u00e9ciations du droit au bail": {}, + "2917-D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": {}, + "2918-D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": {}, + "2919-D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": {} + }, + "292-D\u00e9pr\u00e9ciations des terrains": { + "2921-D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": {}, + "2922-D\u00e9pr\u00e9ciations des terrains nus": {}, + "2923-D\u00e9pr\u00e9ciations des terrains b\u00e2tis": {}, + "2924-D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": {}, + "2925-D\u00e9pr\u00e9ciations des terrains de gisement": {}, + "2926-D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": {}, + "2927-D\u00e9pr\u00e9ciations des terrains mis en concession": {}, + "2928-D\u00e9pr\u00e9ciations des autres terrains": {}, + "2929-D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": {} + }, + "293-D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "2931-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2932-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2933-D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": {}, + "2934-D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": {}, + "2935-D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": {}, + "2937-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2938-D\u00e9pr\u00e9ciations des autres installations et agencements": {}, + "2939-D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": {} + }, + "294-D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "2941-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": {}, + "2942-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": {}, + "2943-D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2944-D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": {}, + "2945-D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": {}, + "2946-D\u00e9pr\u00e9ciations des actifs biologiques": {}, + "2947-D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2948-D\u00e9pr\u00e9ciations des autres mat\u00e9riels": {}, + "2949-D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": {} + }, + "295-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "2951-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "2952-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "296-D\u00e9pr\u00e9ciations des titres de participation": { + "2961-D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "2962-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "2963-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "2965-D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": {}, + "2966-D\u00e9pr\u00e9ciations des parts dans des GIE": {}, + "2968-D\u00e9pr\u00e9ciations des autres titres de participation": {} + }, + "297-D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "2971-D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": {}, + "2972-D\u00e9pr\u00e9ciations des pr\u00eats au personnel": {}, + "2973-D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2974-D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": {}, + "2975-D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2977-D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": {}, + "2978-D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": {} + } + }, + "root_type": "Asset" + }, + "3-Comptes de Stocks": { + "31-Marchandises": { + "311-Marchandises A": { + "3111-Marchandises A1": {}, + "3112-Marchandises A2": {} + }, + "312-Marchandises B": { + "3121-Marchandises B1": {}, + "3122-Marchandises B2": {} + }, + "313-Actifs biologiques": { + "3131-Animaux": {}, + "3132-V\u00e9g\u00e9taux": {} + }, + "318-Marchandises hors activit\u00e9s ordinaires (HAO)": {} + }, + "32-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "321-Mati\u00e8res A": {}, + "322-Mati\u00e8res B": {}, + "323-Fournitures (A, B)": {} + }, + "33-Autres approvisionnements": { + "331-Mati\u00e8res consommables": {}, + "332-Fournitures d\u2019atelier et d\u2019usine": {}, + "333-Fournitures de magasin": {}, + "334-Fournitures de bureau": {}, + "335-Emballages": { + "3351-Emballages perdus": {}, + "3352-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "3353-Emballages \u00e0 usage mixte": {}, + "3358-Autres emballages": {} + }, + "338-Autres mati\u00e8res": {} + }, + "34-Produits en cours": { + "341-Produits en cours": { + "3411-Produits en cours P1": {}, + "3412-Produits en cours P2": {} + }, + "342-Travaux en cours": { + "3421-Travaux en cours T1": {}, + "3422-Travaux en cours T2": {} + }, + "343-Produits interm\u00e9diaires en cours": { + "3431-Produits interm\u00e9diaires A": {}, + "3432-Produits interm\u00e9diaires B": {} + }, + "344-Produits r\u00e9siduels en cours": { + "3441-Produits r\u00e9siduels A": {}, + "3442-Produits r\u00e9siduels B": {} + }, + "345-Actifs biologiques en cours": { + "3451-Animaux": {}, + "3452-V\u00e9g\u00e9taux": {} + } + }, + "35-Services en cours": { + "351-\u00c9tudes en cours": { + "3511-\u00c9tudes en cours E1": {}, + "3512-\u00c9tudes en cours E2": {} + }, + "352-Prestations de services en cours": { + "3521-Prestations de services S1": {}, + "3522-Prestations de services S2": {} + } + }, + "36-Produits finis": { + "361-Produits finis A": {}, + "362-Produits finis B": {}, + "363-Actifs biologiques": { + "3631-Animaux": {}, + "3632-V\u00e9g\u00e9taux": {}, + "3638-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "37-Produits interm\u00e9diaires et r\u00e9siduels": { + "371-Produits interm\u00e9diaires": { + "3711-Produits interm\u00e9diaires A": {}, + "3712-Produits interm\u00e9diaires B": {} + }, + "372-Produits r\u00e9siduels": { + "3721-D\u00e9chets": {}, + "3722-Rebuts": {}, + "3723-Mati\u00e8res de R\u00e9cup\u00e9ration": {} + }, + "373-Actifs biologiques": { + "3731-Animaux": {}, + "3732-V\u00e9g\u00e9taux": {}, + "3738-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "38-Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "381-Marchandises en cours de route": {}, + "382-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": {}, + "383-Autres approvisionnements en cours de route": {}, + "386-Produits finis en cours de route": {}, + "387-Stock en consignation ou en d\u00e9p\u00f4t": { + "3871-Stock en consignation": {}, + "3872-Stock en d\u00e9p\u00f4t": {} + }, + "388-Stock provenant d\u2019immobilisations mises hors service ou au rebut": {} + }, + "39-D\u00e9pr\u00e9ciations des stocks et encours de production": { + "391-D\u00e9pr\u00e9ciations des stocks de marchandises": {}, + "392-D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "393-D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": {}, + "394-D\u00e9pr\u00e9ciations des productions en cours": {}, + "395-D\u00e9pr\u00e9ciations des services en cours": {}, + "396-D\u00e9pr\u00e9ciations des stocks de produits finis": {}, + "397-D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": {}, + "398-D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": {} + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "409-Fournisseurs d\u00e9biteurs": { + "4091-Fournisseurs Avances et acomptes vers\u00e9s": {}, + "4092-Fournisseurs Groupe avances et acomptes vers\u00e9s": {}, + "4093-Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": {}, + "4094-Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": {}, + "4098-Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": {} + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "411-Clients": { + "4111-Clients": { + "account_type": "Receivable" + }, + "4112-Clients groupe": { + "account_type": "Receivable" + }, + "4114-Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable" + }, + "4115-Clients, organismes internationaux": { + "account_type": "Receivable" + }, + "4116-Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable" + }, + "4117-Client, retenues de garantie": { + "account_type": "Receivable" + }, + "4118-Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "412-Clients, effets \u00e0 recevoir en portefeuille": { + "4121-Clients, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4122-Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4124-\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4125-Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "413-Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "4131-Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable" + }, + "4132-Clients, effets impay\u00e9s": { + "account_type": "Receivable" + }, + "4133-Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable" + }, + "4138-Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "414-Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "4141-Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4142-Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable" + }, + "4146-Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4147-Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "415-Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable" + }, + "416-Cr\u00e9ances clients litigieuses ou douteuses": { + "4161-Cr\u00e9ances litigieuses": { + "account_type": "Receivable" + }, + "4162-Cr\u00e9ances douteuses": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "418-Clients, produits \u00e0 recevoir": { + "4181-Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable" + }, + "4186-Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "421-Personnel, avances et acomptes": { + "4211-Personnel, avances": {}, + "4212-Personnel, acomptes": {}, + "4213-Frais avanc\u00e9s et fournitures au personnel": {} + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "4311-Prestations familiales": {}, + "4312-Accidents de travail": {}, + "4313-Caisse de retraite obligatoire": {}, + "4314-Caisse de retraite facultative": {}, + "4318-Autres cotisations sociales": {} + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "4331-Mutuelle": {}, + "4332-Assurances retraite": {}, + "4333-Assurances et organismes de sant\u00e9": {} + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4387-Produits \u00e0 recevoir": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "443-\u00c9tat, TVA factur\u00e9e": { + "4431-TVA factur\u00e9e sur ventes": {}, + "4432-TVA factur\u00e9e sur prestations de services": {}, + "4433-TVA factur\u00e9e sur travaux": {}, + "4434-TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": {}, + "4435-TVA sur factures \u00e0 \u00e9tablir": {} + }, + "445-\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "4451-TVA r\u00e9cup\u00e9rable sur immobilisations": {}, + "4452-TVA r\u00e9cup\u00e9rable sur achats": {}, + "4453-TVA r\u00e9cup\u00e9rable sur transport": {}, + "4454-TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": {}, + "4455-TVA r\u00e9cup\u00e9rable sur factures non parvenues": {}, + "4456-TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": {} + }, + "448-\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "4486-Charges \u00e0 payer": {}, + "4487-Produits \u00e0 recevoir": {} + }, + "449-\u00c9tat, cr\u00e9ances et dettes diverses": { + "4491-\u00c9tat, obligations cautionn\u00e9es": {}, + "4492-\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": {}, + "4493-\u00c9tat, fonds de dotation \u00e0 recevoir": {}, + "4494-\u00c9tat, subventions investissement \u00e0 recevoir": {}, + "4495-\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": {}, + "4496-\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": {}, + "4497-\u00c9tat, avances sur subventions": {}, + "4499-\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": {} + } + }, + "45-Organismes internationaux (ACTIF)": { + "451-Op\u00e9rations avec les organismes africains": {}, + "452-Op\u00e9rations avec les autres organismes internationaux": {}, + "458-Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "4581-Organismes internationaux, fonds de dotation \u00e0 recevoir": {}, + "4582-Organismes internationaux, subventions \u00e0 recevoir": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "4613-Apporteurs, capital appel\u00e9, non vers\u00e9": {}, + "4614-Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": {}, + "4618-Apporteurs, titres \u00e0 \u00e9changer": {} + }, + "467-Apporteurs, restant d\u00fb sur capital appel\u00e9": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "4721-Cr\u00e9ances sur cessions de titres de placement": {}, + "4726-Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": {} + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "4731-Mandants": {}, + "4732-Mandataires": {}, + "4733-Commettants": {}, + "4734-Commissionnaires": {}, + "4739-\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "4747-Compte de r\u00e9partition p\u00e9riodique des produits": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "4751-Compte actif": { + "account_type": "Temporary" + } + }, + "476-Charges constat\u00e9es d\u2019avance": {}, + "478-\u00c9carts de conversion actif": { + "4781-Diminution des cr\u00e9ances d\u2019exploitation": {}, + "4782-Diminution des cr\u00e9ances financi\u00e8res": {}, + "4783-Augmentation des dettes d\u2019exploitation": {}, + "4784-Augmentation des dettes financi\u00e8res": {}, + "4786-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4788-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "485-Cr\u00e9ances sur cessions d\u2019immobilisations": { + "4851-En compte, immobilisations incorporelles": {}, + "4852-En compte, immobilisations corporelles": {}, + "4853-Effets \u00e0 recevoir, immobilisations incorporelles": {}, + "4854-Effets \u00e0 recevoir, immobilisations corporelles": {}, + "4855-Effets escompt\u00e9s non \u00e9chus": {}, + "4857-Retenues de garantie": {}, + "4858-Factures \u00e0 \u00e9tablir": {} + }, + "488-Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": {} + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "491-D\u00e9pr\u00e9ciations des comptes clients": { + "4911-Cr\u00e9ances litigieuses": {}, + "4912-Cr\u00e9ances douteuses": {} + }, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {}, + "496-D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "4962-Associ\u00e9s, comptes courants": {}, + "4963-Associ\u00e9s, op\u00e9rations faites en commun": {}, + "4966-Groupe, comptes courants": {} + }, + "497-D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": {}, + "498-D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "4985-Cr\u00e9ances sur cessions d\u2019immobilisations": {}, + "4986-Cr\u00e9ances sur cessions de titres de placement": {}, + "4988-Autres cr\u00e9ances HAO": {} + }, + "499-Provisions pour risques \u00e0 court terme": { + "4991-Sur op\u00e9rations d\u2019exploitation": {}, + "4997-Sur op\u00e9rations financi\u00e8res": {}, + "4998-Sur op\u00e9rations HAO": {} + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "401-Fournisseurs, dettes en compte": { + "4011-Fournisseurs": { + "account_type": "Payable" + }, + "4012-Fournisseurs groupe": { + "account_type": "Payable" + }, + "4013-Fournisseurs sous-traitants": { + "account_type": "Payable" + }, + "4016-Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable" + }, + "4017-Fournisseur, retenues de garantie": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "402-Fournisseurs, effets \u00e0 payer": { + "4021-Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable" + }, + "4022-Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable" + }, + "4023-Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "404-Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "4041-Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4042-Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable" + }, + "4046-Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4047-Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "408-Fournisseurs, factures non parvenues": { + "4081-Fournisseurs": { + "account_type": "Stock Received But Not Billed" + }, + "4082-Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed" + }, + "4083-Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed" + }, + "4086-Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "419-Clients cr\u00e9diteurs": { + "4191-Clients, avances et acomptes re\u00e7us": {}, + "4192-Clients groupe, avances et acomptes re\u00e7us": {}, + "4194-Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": {}, + "4198-Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": {} + } + }, + "42-Personnel (PASSIF)": { + "422-Personnel, r\u00e9mun\u00e9rations dues": {}, + "423-Personnel, oppositions, saisies-arr\u00eats": { + "4231-Personnel, oppositions": {}, + "4232-Personnel, saisies-arr\u00eats": {}, + "4233-Personnel, avis \u00e0 tiers d\u00e9tenteur": {} + }, + "424-Personnel, \u0153uvres sociales internes": { + "4241-Assistance m\u00e9dicale": {}, + "4242-Allocations familiales": {}, + "4245-Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": {}, + "4248-Autres \u0153uvres sociales internes": {} + }, + "425-Repr\u00e9sentants du personnel": { + "4251-D\u00e9l\u00e9gu\u00e9s du personnel": {}, + "4252-Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": {}, + "4258-Autres repr\u00e9sentants du personnel": {} + }, + "426-Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "4261-Participation aux b\u00e9n\u00e9fices": {}, + "4264-Participation au capital": {} + }, + "427-Personnel d\u00e9p\u00f4ts": {}, + "428-Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "4281-Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": {}, + "4286-Autres charges \u00e0 payer": {}, + "4287-Produits \u00e0 recevoir": {} + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4381-Charges sociales sur gratifications \u00e0 payer": {}, + "4382-Charges sociales sur cong\u00e9s \u00e0 payer": {}, + "4386-Autres charges \u00e0 payer": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "441-\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": {}, + "442-\u00c9tat, autres imp\u00f4ts et taxes": { + "4421-Imp\u00f4ts et taxes d\u2019\u00c9tat": {}, + "4422-Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": {}, + "4423-Imp\u00f4ts et taxes recouvrables sur des obligataires": {}, + "4424-Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": {}, + "4426-Droits de douane": {}, + "4428-Autres imp\u00f4ts et taxes": {} + }, + "444-\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "4441-\u00c9tat, TVA due": {}, + "4449-\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": {} + }, + "446-\u00c9tat, autres taxes sur le chiffre d\u2019affaires": {}, + "447-\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "4471-Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": {}, + "4472-Imp\u00f4ts sur salaires": {}, + "4473-Contribution nationale": {}, + "4474-Contribution nationale de solidarit\u00e9": {}, + "4478-Autres imp\u00f4ts et contributions": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "4611-Apporteurs, apports en nature": {}, + "4612-Apporteurs, apports en num\u00e9raire": {}, + "4615-Apporteurs, versements re\u00e7us sur augmentation de capital": {}, + "4616-Apporteurs, versements anticip\u00e9s": {}, + "4617-Apporteurs d\u00e9faillants": {}, + "4619-Apporteurs, capital \u00e0 rembourser": {} + }, + "462-Associ\u00e9s, comptes courants": { + "4621-Principal": {}, + "4626-Int\u00e9r\u00eats courus": {} + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "4631-Op\u00e9rations courantes": {}, + "4636-Int\u00e9r\u00eats courus": {} + }, + "465-Associ\u00e9s, dividendes \u00e0 payer": {}, + "466-Groupe, comptes courants": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "4711-D\u00e9biteurs divers": {}, + "4712-Cr\u00e9diteurs divers": {}, + "4713-Obligataires": {}, + "4715-R\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "4716-Compte d\u2019affacturage": {}, + "4717-D\u00e9biteurs divers retenues de garantie": {}, + "4718-Apport, compte de fusion et op\u00e9rations assimil\u00e9es": {}, + "4719-Bons de souscription d\u2019actions et d\u2019obligations": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "4746-Compte de r\u00e9partition p\u00e9riodique des charges": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "4752-Compte passif": {} + }, + "477-Produits constat\u00e9s d\u2019avance": {}, + "479-\u00c9carts de conversion passif": { + "4791-Augmentation des cr\u00e9ances d\u2019exploitation": {}, + "4792-Augmentation des cr\u00e9ances financi\u00e8res": {}, + "4793-Diminution des dettes d\u2019exploitation": {}, + "4794-Diminution des dettes financi\u00e8res": {}, + "4797-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4798-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "481-Fournisseurs d\u2019investissements": { + "4811-Immobilisations incorporelles": {}, + "4812-Immobilisations corporelles": {}, + "4813-Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": {}, + "4816-R\u00e9serve de propri\u00e9t\u00e9": {}, + "4817-Retenues de garantie": {}, + "4818-Factures non parvenues": {} + }, + "482-Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "4821-Immobilisations incorporelles": {}, + "4822-Immobilisations corporelles": {} + }, + "484-Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "4887-Produits": {} + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (PASSIF)": { + "490-D\u00e9pr\u00e9ciations des comptes fournisseurs": {}, + "492-D\u00e9pr\u00e9ciations des comptes personnel": {}, + "493-D\u00e9pr\u00e9ciations des comptes organismes sociaux": {}, + "494-D\u00e9pr\u00e9ciations des comptes \u00c9tat et collectivit\u00e9s publiques": {}, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {} + }, + "root_type": "Liability" + }, + "5-Comptes de tr\u00e9sorerie": { + "50-Titres de placement": { + "501-Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "5011-Titres du Tr\u00e9sor \u00e0 court terme": {}, + "5012-Titres d\u2019organismes financiers": {}, + "5013-Bons de caisse \u00e0 court terme": {}, + "5016-Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": {} + }, + "502-Actions": { + "5021-Actions ou parts propres": {}, + "5022-Actions cot\u00e9es": {}, + "5023-Actions non cot\u00e9es": {}, + "5024-Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": {}, + "5025-Autres actions": {}, + "5026-Frais d\u2019acquisition des actions": {} + }, + "503-Obligations": { + "5031-Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": {}, + "5032-Obligations cot\u00e9es": {}, + "5033-Obligations non cot\u00e9es": {}, + "5035-Autres obligations": {}, + "5036-Frais d\u2019acquisition des obligations": {} + }, + "504-Bons de souscription": { + "5042-Bons de souscription d\u2019actions": {}, + "5043-Bons de souscription d\u2019obligations": {} + }, + "505-Titres n\u00e9gociables hors r\u00e9gion": {}, + "506-Int\u00e9r\u00eats courus": { + "5061-Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": {}, + "5062-Actions": {}, + "5063-Obligations": {} + }, + "508-Autres titres de placement et cr\u00e9ances assimil\u00e9es": {} + }, + "51-Valeurs \u00e0 encaisser": { + "511-Effets \u00e0 encaisser": {}, + "512-Effets \u00e0 l\u2019encaissement": {}, + "513-Ch\u00e8ques \u00e0 encaisser": {}, + "514-Ch\u00e8ques \u00e0 l\u2019encaissement": {}, + "515-Cartes de cr\u00e9dit \u00e0 encaisser": {}, + "518-Autres valeurs \u00e0 l\u2019encaissement": { + "5181-Warrants": {}, + "5182-Billets de fonds": {}, + "5185-Ch\u00e8ques de voyage": {}, + "5186-Coupons \u00e9chus": {}, + "5187-Int\u00e9r\u00eats \u00e9chus des obligations": {} + } + }, + "52-Banques": { + "521-Banques locales": { + "5211-Banques en monnaie nationale": { + "account_type": "Bank" + }, + "5215-Banques en devises": { + "account_type": "Bank" + }, + "account_type": "Bank" + }, + "522-Banques autres \u00c9tats r\u00e9gion": {}, + "523-Banques autres \u00c9tats zone mon\u00e9taire": {}, + "524-Banques hors zone mon\u00e9taire": {}, + "525-Banques d\u00e9p\u00f4t \u00e0 terme": {}, + "526-Banques, int\u00e9r\u00eats courus": { + "5261-Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": {}, + "5267-Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": {} + } + }, + "53-\u00c9tablissements financiers et assimil\u00e9s": { + "531-Ch\u00e8ques postaux": {}, + "532-Tr\u00e9sor": {}, + "533-Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": {}, + "536-\u00c9tablissements financiers, int\u00e9r\u00eats courus": {}, + "538-Autres organismes financiers": {} + }, + "54-Instruments de tr\u00e9sorerie": { + "541-Options de taux d\u2019int\u00e9r\u00eat": {}, + "542-Options de taux de change": {}, + "543-Options de taux boursiers": {}, + "544-Instruments de march\u00e9s \u00e0 terme": {}, + "545-Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": {} + }, + "55-Instruments de monnaie \u00e9lectronique": { + "551-Monnaie \u00e9lectronique carte carburant": {}, + "552-Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": {}, + "553-Monnaie \u00e9lectronique carte p\u00e9age": {}, + "554-Porte-monnaie \u00e9lectronique": {}, + "558-Autres instruments de monnaies \u00e9lectroniques": {} + }, + "56-Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "561-Cr\u00e9dits de tr\u00e9sorerie": {}, + "564-Escompte de cr\u00e9dits de campagne": {}, + "565-Escompte de cr\u00e9dits ordinaires": {}, + "566-Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": {} + }, + "57-Caisse": { + "571-Caisse si\u00e8ge social": { + "5711-Caisse en monnaie nationale": {}, + "5712-Caisse en devises": {} + }, + "572-Caisse succursale A": { + "5721-En monnaie nationale": {}, + "5722-En devises": {} + }, + "573-Caisse succursale B": { + "5731-En monnaie nationale": {}, + "5732-En devises": {} + } + }, + "58-R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "581-R\u00e9gies d\u2019avance": {}, + "582-Accr\u00e9ditifs": {}, + "585-Virements de fonds": {}, + "588-Autres virements internes": {} + }, + "59-D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "590-D\u00e9pr\u00e9ciations des titres de placement": {}, + "591-D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": {}, + "592-D\u00e9pr\u00e9ciations des comptes banques": {}, + "593-D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": {}, + "594-D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": {}, + "599-Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": {} + }, + "root_type": "Asset" + }, + "6-Comptes de charges des activit\u00e9s ordinaires": { + "60-Achats et variations de stocks": { + "601-Achats de marchandises": { + "6011-Dans la R\u00e9gion": {}, + "6012-Hors R\u00e9gion": {}, + "6013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6015-Frais sur achats": {}, + "6019-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "602-Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "6021-Dans la R\u00e9gion": {}, + "6022-Hors R\u00e9gion": {}, + "6023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6025-Frais sur achats": {}, + "6029-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "603-Variations des stocks de biens achet\u00e9s": { + "6031-Variations des stocks de marchandises": {}, + "6032-Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "6033-Variations des stocks d\u2019autres approvisionnements": {} + }, + "604-Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "6041-Mati\u00e8res consommables": {}, + "6042-Mati\u00e8res combustibles": {}, + "6043-Produits d\u2019entretien": {}, + "6044-Fournitures d\u2019atelier et d\u2019usine": {}, + "6045-Frais sur achat": {}, + "6046-Fournitures de magasin": {}, + "6047-Fournitures de bureau": {}, + "6049-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "605-Autres achats": { + "6051-Fournitures non stockables Eau": {}, + "6052-Fournitures non stockables \u00c9lectricit\u00e9": {}, + "6053-Fournitures non stockables Autres \u00e9nergies": {}, + "6054-Fournitures d\u2019entretien non stockables": {}, + "6055-Fournitures de bureau non stockables": {}, + "6056-Achats de petit mat\u00e9riel et outillage": {}, + "6057-Achats d\u2019\u00e9tudes et prestations de services": {}, + "6058-Achats de travaux, mat\u00e9riels et \u00e9quipements": {}, + "6059-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "608-Achats d\u2019emballages": { + "6081-Emballages perdus": {}, + "6082-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "6083-Emballages \u00e0 usage mixte": {}, + "6085-Frais sur achats": {}, + "6089-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + } + }, + "61-Transports": { + "612-Transports sur ventes": {}, + "613-Transports pour le compte de tiers": {}, + "614-Transports du personnel": {}, + "616-Transports de plis": {}, + "618-Autres frais de transport": { + "6181-Voyages et d\u00e9placements": {}, + "6182-Transports entre \u00e9tablissements ou chantiers": {}, + "6183-Transports administratifs": {} + } + }, + "62-Services ext\u00e9rieurs": { + "621-Sous-traitance g\u00e9n\u00e9rale": {}, + "622-Locations, charges locatives": { + "6221-Locations de terrains": {}, + "6222-Locations de b\u00e2timents": {}, + "6223-Locations de mat\u00e9riels et outillages": {}, + "6224-Malis sur emballages": {}, + "6225-Locations d\u2019emballages": {}, + "6226-Fermages et loyers du foncier": {}, + "6228-Locations et charges locatives diverses": {} + }, + "623-Redevances de location acquisition": { + "6232-Cr\u00e9dit-bail immobilier": {}, + "6233-Cr\u00e9dit-bail mobilier": {}, + "6234-Location-vente": {}, + "6238-Autres contrats de location acquisition": {} + }, + "624-Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "6241-Entretien et r\u00e9parations des biens immobiliers": {}, + "6242-Entretien et r\u00e9parations des biens mobiliers": {}, + "6243-Maintenance": {}, + "6244-Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "6248-Autres entretiens et r\u00e9parations": {} + }, + "625-Primes d\u2019assurance": { + "6251-Assurances multirisques": {}, + "6252-Assurances mat\u00e9riel de transport": {}, + "6253-Assurances risques d\u2019exploitation": {}, + "6254-Assurances responsabilit\u00e9 du producteur": {}, + "6255-Assurances insolvabilit\u00e9 clients": {}, + "6257-Assurances transport sur ventes": {}, + "6258-Autres primes d\u2019assurances": {} + }, + "626-\u00c9tudes, recherches et documentation": { + "6261-\u00c9tudes et recherches": {}, + "6265-Documentation g\u00e9n\u00e9rale": {}, + "6266-Documentation technique": {} + }, + "627-Publicit\u00e9, publications, relations publiques": { + "6271-Annonces, insertions": {}, + "6272-Catalogues, imprim\u00e9s publicitaires": {}, + "6273-\u00c9chantillons": {}, + "6274-Foires et expositions": {}, + "6275-Publications": {}, + "6276-Cadeaux \u00e0 la client\u00e8le": {}, + "6277-Frais de colloques, s\u00e9minaires, conf\u00e9rences": {}, + "6278-Autres charges de publicit\u00e9 et relations publiques": {} + }, + "628-Frais de t\u00e9l\u00e9communications": { + "6281-Frais de t\u00e9l\u00e9phone": {}, + "6282-Frais de t\u00e9lex": {}, + "6283-Frais de t\u00e9l\u00e9copie": {}, + "6288-Autres frais de t\u00e9l\u00e9communications": {} + } + }, + "63-Autres services ext\u00e9rieurs": { + "631-Frais bancaires": { + "6311-Frais sur titres (vente, garde)": {}, + "6312-Frais sur effets": {}, + "6313-Location de coffres": {}, + "6314-Commissions d\u2019affacturage": {}, + "6315-Commissions sur cartes de cr\u00e9dit": {}, + "6316-Frais d\u2019\u00e9mission d\u2019emprunts": {}, + "6317-Frais sur instruments monnaie \u00e9lectronique": {}, + "6318-Autres frais bancaires": {} + }, + "632-R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "6322-Commissions et courtages sur ventes": {}, + "6324-Honoraires des professions r\u00e9glement\u00e9es": {}, + "6325-Frais d\u2019actes et de contentieux": {}, + "6326-R\u00e9mun\u00e9rations d\u2019affacturage": {}, + "6327-R\u00e9mun\u00e9rations des autres prestataires de services": {}, + "6328-Divers frais": {} + }, + "633-Frais de formation du personnel": {}, + "634-Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "6342-Redevances pour brevets, licences": {}, + "6343-Redevances pour logiciels": {}, + "6344-Redevances pour marques": {}, + "6345-Redevances pour sites internet": {}, + "6346-Redevances pour concessions, droits et valeurs similaires": {} + }, + "635-Cotisations": { + "6351-Cotisations": {}, + "6358-Concours divers": {} + }, + "637-R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "6371-Personnel int\u00e9rimaire": {}, + "6372-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "638-Autres charges externes": { + "6381-Frais de recrutement du personnel": {}, + "6382-Frais de d\u00e9m\u00e9nagement": {}, + "6383-R\u00e9ceptions": {}, + "6384-Missions": {}, + "6385-Charges de copropri\u00e9t\u00e9": {} + } + }, + "64-Imp\u00f4ts et taxes": { + "641-Imp\u00f4ts et taxes directs": { + "6411-Imp\u00f4ts fonciers et taxes annexes": {}, + "6412-Patentes, licences et taxes annexes": {}, + "6413-Taxes sur appointements et salaires": {}, + "6414-Taxes d\u2019apprentissage": {}, + "6415-Formation professionnelle continue": {}, + "6418-Autres imp\u00f4ts et taxes directs": {} + }, + "645-Imp\u00f4ts et taxes indirects": {}, + "646-Droits d\u2019enregistrement": { + "6461-Droits de mutation": {}, + "6462-Droits de timbre": {}, + "6463-Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": {}, + "6464-Vignettes": {}, + "6468-Autres droits": {} + }, + "647-P\u00e9nalit\u00e9s, amendes fiscales": { + "6471-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": {}, + "6472-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": {}, + "6473-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": {}, + "6474-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": {}, + "6478-Autres p\u00e9nalit\u00e9s et amendes fiscales": {} + }, + "648-Autres imp\u00f4ts et taxes": {} + }, + "65-Autres charges": { + "651-Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "6511-Clients": {}, + "6515-Autres d\u00e9biteurs": {} + }, + "652-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "6521-Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": {}, + "6525-Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "654-Valeurs comptables des cessions courantes d\u2019immobilisations": { + "6541-Immobilisations incorporelles": {}, + "6542-Immobilisations corporelles": {} + }, + "656-Perte de change sur cr\u00e9ances et dettes commerciale": {}, + "657-P\u00e9nalit\u00e9s et amendes p\u00e9nales": {}, + "658-Charges diverses": { + "6581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "6582-Dons": {}, + "6583-M\u00e9c\u00e9nat": {}, + "6588-Autres charges diverses": {} + }, + "659-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "6591-Sur risques \u00e0 court terme": {}, + "6593-Sur stocks": {}, + "6594-Sur cr\u00e9ances": {}, + "6598-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": {} + } + }, + "66-Charges de personnel": { + "661-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "6611-Appointements salaires et commissions": {}, + "6612-Primes et gratifications": {}, + "6613-Cong\u00e9s pay\u00e9s": {}, + "6614-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6615-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6616-Suppl\u00e9ment familial": {}, + "6617-Avantages en nature": {}, + "6618-Autres r\u00e9mun\u00e9rations directes": {} + }, + "662-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "6621-Appointements salaires et commissions": {}, + "6622-Primes et gratifications": {}, + "6623-Cong\u00e9s pay\u00e9s": {}, + "6624-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6625-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6626-Suppl\u00e9ment familial": {}, + "6627-Avantages en nature": {}, + "6628-Autres r\u00e9mun\u00e9rations directes": {} + }, + "663-Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "6631-Indemnit\u00e9s de logement": {}, + "6632-Indemnit\u00e9s de repr\u00e9sentation": {}, + "6633-Indemnit\u00e9s d\u2019expatriation": {}, + "6634-Indemnit\u00e9s de transport": {}, + "6638-Autres indemnit\u00e9s et avantages divers": {} + }, + "664-Charges sociales": { + "6641-Charges sociales sur r\u00e9mun\u00e9ration du personnel national": {}, + "6642-Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": {} + }, + "666-R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "6661-R\u00e9mun\u00e9ration du travail de l\u2019exploitant": {}, + "6662-Charges sociales": {} + }, + "667-R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "6671-Personnel int\u00e9rimaire": {}, + "6672-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "668-Autres charges sociales": { + "6681-Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": {}, + "6682-Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": {}, + "6683-Versements et contributions aux autres \u0153uvres sociales": {}, + "6684-M\u00e9decine du travail et pharmacie": {}, + "6685-Assurances et organismes de sant\u00e9": {}, + "6686-Assurances retraite et fonds de pension": {}, + "6687-Majorations et p\u00e9nalit\u00e9s sociales": {}, + "6688-Charges sociales diverses": {} + } + }, + "67-Frais financiers et charges assimil\u00e9es": { + "671-Int\u00e9r\u00eats des emprunts": { + "6711-Emprunts obligataires": {}, + "6712-Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "6713-Dettes li\u00e9es \u00e0 des participations": {}, + "6714-Primes de remboursement des obligations": {} + }, + "672-Int\u00e9r\u00eats dans loyers de location acquisition": { + "6722-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": {}, + "6723-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": {}, + "6724-Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": {}, + "6728-Int\u00e9r\u00eats dans loyers des autres locations acquisition": {} + }, + "673-Escomptes accord\u00e9s": {}, + "674-Autres int\u00e9r\u00eats": { + "6741-Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": {}, + "6742-Comptes courants bloqu\u00e9s": {}, + "6743-Int\u00e9r\u00eats sur obligations cautionn\u00e9es": {}, + "6744-Int\u00e9r\u00eats sur dettes commerciales": {}, + "6745-Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": {}, + "6748-Int\u00e9r\u00eats sur dettes diverses": {} + }, + "675-Escomptes des effets de commerce": {}, + "676-Pertes de change financi\u00e8res": {}, + "677-Pertes sur titres de placement": { + "6771-Pertes sur cessions de titres de placement": {}, + "6772-Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {} + }, + "678-Pertes et charges sur risques financiers": { + "6781-Sur rentes viag\u00e8res": {}, + "6782-Sur op\u00e9rations financi\u00e8res": {}, + "6784-Sur instruments de tr\u00e9sorerie": {} + }, + "679-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "6791-Sur risques financiers": {}, + "6795-Sur titres de placement": {}, + "6798-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "68-Dotations aux amortissements": { + "681-Dotations aux amortissements d\u2019exploitation": { + "6812-Dotations aux amortissements des immobilisations incorporelles": {}, + "6813-Dotations aux amortissements des immobilisations corporelles": {} + } + }, + "69-Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "691-Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "6911-Dotations aux provisions pour risques et charges": {}, + "6913-Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": {}, + "6914-Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": {} + }, + "697-Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "6971-Dotations aux provisions pour risques et charges": {}, + "6972-Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": {} + } + }, + "root_type": "Expense" + }, + "7-Comptes de produits des activit\u00e9s ordinaires": { + "70-Ventes": { + "701-Ventes de marchandises": { + "7011-Dans la R\u00e9gion": {}, + "7012-Hors R\u00e9gion": {}, + "7013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7015-Sur internet": {}, + "7019-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "702-Ventes de produits finis": { + "7021-Dans la R\u00e9gion": {}, + "7022-Hors R\u00e9gion": {}, + "7023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7025-Sur internet": {}, + "7029-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "703-Ventes de produits interm\u00e9diaires": { + "7031-Dans la R\u00e9gion": {}, + "7032-Hors R\u00e9gion": {}, + "7033-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7034-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7035-Sur internet": {}, + "7039-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "704-Ventes de produits r\u00e9siduels": { + "7041-Dans la R\u00e9gion": {}, + "7042-Hors R\u00e9gion": {}, + "7043-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7044-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7045-Sur internet": {}, + "7049-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "705-Travaux factur\u00e9s": { + "7051-Dans la R\u00e9gion": {}, + "7052-Hors R\u00e9gion": {}, + "7053-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7054-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7055-Sur internet": {}, + "7059-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "706-Services vendus": { + "7061-Dans la R\u00e9gion": {}, + "7062-Hors R\u00e9gion": {}, + "7063-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7064-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7065-Sur internet": {}, + "7069-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "707-Produits accessoires": { + "7071-Ports, emballages perdus et autres frais factur\u00e9s": {}, + "7072-Commissions et courtages": {}, + "7073-Locations": {}, + "7074-Bonis sur reprises et cessions d\u2019emballages": {}, + "7075-Mise \u00e0 disposition de personnel": {}, + "7076-Redevances pour brevets, logiciels, marques et droits similaires": {}, + "7077-Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": {}, + "7078-Autres produits accessoires": {} + } + }, + "71-Subventions d\u2019exploitation": { + "711-Sur produits \u00e0 l\u2019exportation": {}, + "712-Sur produits \u00e0 l\u2019importation": {}, + "713-Sur produits de p\u00e9r\u00e9quation": {}, + "714-Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": {}, + "718-Autres subventions d\u2019exploitation": { + "7181-Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": {}, + "7182-Vers\u00e9es par les organismes internationaux": {}, + "7183-Vers\u00e9es par des tiers": {} + } + }, + "72-Production immobilis\u00e9e": { + "721-Immobilisations incorporelles": {}, + "722-Immobilisations corporelles": { + "7221-Immobilisations corporelles (hors actifs biologiques)": {}, + "7222-Immobilisations corporelles (actifs biologiques)": {} + }, + "724-Production auto-consomm\u00e9e": {}, + "726-Immobilisations financi\u00e8res": {} + }, + "73-Variations des stocks de biens et de services produits": { + "734-Variations des stocks de produits en cours": { + "7341-Produits en cours": {}, + "7342-Travaux en cours": {} + }, + "735-Variations des en-cours de services": { + "7351-\u00c9tudes en cours": {}, + "7352-Prestations de services en cours": {} + }, + "736-Variations des stocks de produits finis": {}, + "737-Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "7371-Produits interm\u00e9diaires": {}, + "7372-Produits r\u00e9siduels": {} + } + }, + "75-Autres produits": { + "751-Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": {}, + "752-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "7521-Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": {}, + "7525-B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "754-Produits des cessions courantes d\u2019immobilisations": { + "7541-Immobilisations incorporelles": {}, + "7542-Immobilisations corporelles": {} + }, + "756-Gains de change sur cr\u00e9ances et dettes commerciales": {}, + "758-Produits divers": { + "7581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "7582-Indemnit\u00e9s d\u2019assurances re\u00e7ues": {}, + "7588-Autres produits divers": {} + }, + "759-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "7591-Sur risques \u00e0 court terme": {}, + "7593-Sur stocks": {}, + "7594-Sur cr\u00e9ances": {}, + "7598-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": {} + } + }, + "77-Revenus financiers et produits assimil\u00e9s": { + "771-Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "7712-Int\u00e9r\u00eats de pr\u00eats": {}, + "7713-Int\u00e9r\u00eats sur cr\u00e9ances diverses": {} + }, + "772-Revenus de participations et autres titres immobilis\u00e9s": { + "7721-Revenus des titres de participation": {}, + "7722-Revenus autres titres immobilis\u00e9s": {} + }, + "773-Escomptes obtenus": {}, + "774-Revenus de placement": { + "7745-Revenus des obligations": {}, + "7746-Revenus des titres de placement": {} + }, + "775-Int\u00e9r\u00eats dans loyers de location acquisition": {}, + "776-Gains de change financiers": {}, + "777-Gains sur cessions de titres de placement": {}, + "778-Gains sur risques financiers": { + "7781-Sur rentes viag\u00e8res": {}, + "7782-Sur op\u00e9rations financi\u00e8res": {}, + "7784-Sur instruments de tr\u00e9sorerie": {} + }, + "779-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "7791-Sur risques financiers": {}, + "7795-Sur titres de placement": {}, + "7798-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "78-Transferts de charges": { + "781-Transferts de charges d\u2019exploitation": {}, + "787-Transferts de charges financi\u00e8res": {} + }, + "79-Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "791-Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "7911-Pour risques et charges": {}, + "7913-Des immobilisations incorporelles": {}, + "7914-Des immobilisations corporelles": {} + }, + "797-Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "7971-Pour risques et charges": {}, + "7972-Des immobilisations financi\u00e8res": {} + }, + "798-Reprises d\u2019amortissements": {}, + "799-Reprises de subventions d\u2019investissement": {} + }, + "root_type": "Income" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "81-Valeurs comptables des cessions d\u2019immobilisations": { + "811-Immobilisations incorporelles": {}, + "812-Immobilisations corporelles": {}, + "816-Immobilisations financi\u00e8res": {} + }, + "83-Charges hors activit\u00e9s ordinaires": { + "831-Charges HAO constat\u00e9es": {}, + "833-Charges li\u00e9es aux op\u00e9rations de restructuration": {}, + "834-Pertes sur cr\u00e9ances HAO": {}, + "835-Dons et lib\u00e9ralit\u00e9s accord\u00e9s": {}, + "836-Abandons de cr\u00e9ances consentis": {}, + "837-Charges li\u00e9es aux op\u00e9rations de liquidation": {}, + "839-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "85-Dotations hors activit\u00e9s ordinaires": { + "851-Dotations aux provisions r\u00e9glement\u00e9es": {}, + "852-Dotations aux amortissements HAO": {}, + "853-Dotations aux d\u00e9pr\u00e9ciations HAO": {}, + "854-Dotations aux provisions pour risques et charges HAO": {}, + "858-Autres dotations HAO": {} + }, + "87-Participation des travailleurs": { + "871-Participation l\u00e9gale aux b\u00e9n\u00e9fices": {}, + "874-Participation contractuelle aux b\u00e9n\u00e9fices": {}, + "878-Autres participations": {} + }, + "89-Imp\u00f4ts sur le r\u00e9sultat": { + "891-Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "8911-Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": {}, + "8912-Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": {}, + "8913-Activit\u00e9s exerc\u00e9es hors R\u00e9gion": {} + }, + "892-Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": {}, + "895-Imp\u00f4t minimum forfaitaire IMF": {}, + "899-D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "8991-D\u00e9gr\u00e8vements": {}, + "8994-Annulations pour pertes r\u00e9troactives": {} + } + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "82-Produits des cessions d\u2019immobilisations": { + "821-Immobilisations incorporelles": {}, + "822-Immobilisations corporelles": {}, + "826-Immobilisations financi\u00e8res": {} + }, + "84-Produits hors activit\u00e9s ordinaires": { + "841-Produits HAO constat\u00e9s": {}, + "843-Produits li\u00e9s aux op\u00e9rations de restructuration": {}, + "844-Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": {}, + "845-Dons et lib\u00e9ralit\u00e9s obtenus": {}, + "846-Abandons de cr\u00e9ances obtenus": {}, + "847-Produits li\u00e9s aux op\u00e9rations de liquidation": {}, + "848-Transferts de charges HAO": {}, + "849-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "86-Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "861-Reprises de provisions r\u00e9glement\u00e9es": {}, + "862-Reprises d\u2019amortissements HAO": {}, + "863-Reprises de d\u00e9pr\u00e9ciations HAO": {}, + "864-Reprises de provisions pour risques et charges HAO": {}, + "868-Autres reprises HAO": {} + }, + "88-Subventions d\u2019\u00e9quilibre": { + "881-\u00c9tat": {}, + "884-Collectivit\u00e9s publiques": {}, + "886-Groupe": {}, + "888-Autres": {} + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/cg_plan_comptable_avec_code.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/cg_plan_comptable_avec_code.json new file mode 100644 index 00000000000..8abdaf2bfbf --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/cg_plan_comptable_avec_code.json @@ -0,0 +1,4208 @@ +{ + "country_code": "cg", + "name": "Syscohada - Plan Comptable avec code", + "tree": { + "Comptes de ressources durables": { + "Capital": { + "Capital social": { + "Capital souscrit, non appel\u00e9": { + "account_number": "1011" + }, + "Capital souscrit, appel\u00e9, non vers\u00e9": { + "account_number": "1012" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, non amorti": { + "account_number": "1013" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, amorti": { + "account_number": "1014" + }, + "Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": { + "account_number": "1018" + }, + "account_number": "101" + }, + "Capital par dotation": { + "Dotation initiale": { + "account_number": "1021" + }, + "Dotations compl\u00e9mentaires": { + "account_number": "1022" + }, + "Autres dotations": { + "account_number": "1028" + }, + "account_number": "102" + }, + "Capital personnel": { + "account_number": "103" + }, + "Compte de l\u2019exploitant": { + "Apports temporaires": { + "account_number": "1041" + }, + "Op\u00e9rations courantes": { + "account_number": "1042" + }, + "R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": { + "account_number": "1043" + }, + "Pr\u00e9l\u00e8vements d\u2019autoconsommation": { + "account_number": "1047" + }, + "Autres pr\u00e9l\u00e8vements": { + "account_number": "1048" + }, + "account_number": "104" + }, + "Primes li\u00e9es au capital social": { + "Primes d\u2019\u00e9mission": { + "account_number": "1051" + }, + "Primes d\u2019apport": { + "account_number": "1052" + }, + "Primes de fusion": { + "account_number": "1053" + }, + "Primes de conversion": { + "account_number": "1054" + }, + "Autres primes": { + "account_number": "1058" + }, + "account_number": "105" + }, + "\u00c9carts de r\u00e9\u00e9valuation": { + "\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": { + "account_number": "1061" + }, + "\u00c9carts de r\u00e9\u00e9valuation libre": { + "account_number": "1062" + }, + "account_number": "106" + }, + "Apporteurs, capital souscrit, non appel\u00e9": { + "account_number": "109" + }, + "account_number": "10" + }, + "R\u00e9serves": { + "R\u00e9serve l\u00e9gale": { + "account_number": "111" + }, + "R\u00e9serves statutaires ou contractuelles": { + "account_number": "112" + }, + "R\u00e9serves r\u00e9glement\u00e9es": { + "R\u00e9serves de plus-values nettes \u00e0 long terme": { + "account_number": "1131" + }, + "R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "1132" + }, + "R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": { + "account_number": "1133" + }, + "R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": { + "account_number": "1134" + }, + "Autres r\u00e9serves r\u00e9glement\u00e9es": { + "account_number": "1135" + }, + "account_number": "113" + }, + "Autres r\u00e9serves": { + "R\u00e9serves facultatives": { + "account_number": "1181" + }, + "R\u00e9serves diverses": { + "account_number": "1188" + }, + "account_number": "118" + }, + "account_number": "11" + }, + "Report \u00e0 nouveau": { + "Report \u00e0 nouveau cr\u00e9diteur": { + "account_number": "121" + }, + "Report \u00e0 nouveau d\u00e9biteur": { + "Perte nette \u00e0 reporter": { + "account_number": "1291" + }, + "Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": { + "account_number": "1292" + }, + "account_number": "129" + }, + "account_number": "12" + }, + "R\u00e9sultat net de l\u2019exercice": { + "R\u00e9sultat en instance d\u2019affectation": { + "R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": { + "account_number": "1301" + }, + "R\u00e9sultat en instance d\u2019affectation : perte": { + "account_number": "1309" + }, + "account_number": "130" + }, + "R\u00e9sultat net : b\u00e9n\u00e9fice": { + "account_number": "131" + }, + "Marge commerciale (MC)": { + "account_number": "132" + }, + "Valeur ajout\u00e9e (VA)": { + "account_number": "133" + }, + "Exc\u00e9dent brut d\u2019exploitation (EBE)": { + "account_number": "134" + }, + "R\u00e9sultat d\u2019exploitation (RE)": { + "account_number": "135" + }, + "R\u00e9sultat financier (RF)": { + "account_number": "136" + }, + "R\u00e9sultat des activit\u00e9s ordinaires (RAO)": { + "account_number": "137" + }, + "R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "R\u00e9sultat de fusion": { + "account_number": "1381" + }, + "R\u00e9sultat d\u2019apport partiel d\u2019actif": { + "account_number": "1382" + }, + "R\u00e9sultat de scission": { + "account_number": "1383" + }, + "R\u00e9sultat de liquidation": { + "account_number": "1384" + }, + "account_number": "138" + }, + "R\u00e9sultat net : perte": { + "account_number": "139" + }, + "account_number": "13" + }, + "Subventions d\u2019investissement": { + "Subventions d\u2019\u00e9quipement": { + "\u00c9tat": { + "account_number": "1411" + }, + "R\u00e9gions": { + "account_number": "1412" + }, + "D\u00e9partements": { + "account_number": "1413" + }, + "Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": { + "account_number": "1414" + }, + "Entit\u00e9s publiques ou mixtes": { + "account_number": "1415" + }, + "Entit\u00e9s et organismes priv\u00e9s": { + "account_number": "1416" + }, + "Organismes internationaux": { + "account_number": "1417" + }, + "Autres": { + "account_number": "1418" + }, + "account_number": "141" + }, + "Autres subventions d\u2019investissement": { + "account_number": "148" + }, + "account_number": "14" + }, + "Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "Amortissements d\u00e9rogatoires": { + "account_number": "151" + }, + "Plus-values de cession \u00e0 r\u00e9investir": { + "account_number": "152" + }, + "Fonds r\u00e9glement\u00e9s": { + "Fonds National": { + "account_number": "1531" + }, + "Pr\u00e9l\u00e8vement pour le Budget": { + "account_number": "1532" + }, + "account_number": "153" + }, + "Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": { + "account_number": "154" + }, + "Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "Reconstitution des gisements miniers et p\u00e9troliers": { + "account_number": "1551" + }, + "account_number": "155" + }, + "Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "Hausse de prix": { + "account_number": "1561" + }, + "Fluctuation des cours": { + "account_number": "1562" + }, + "account_number": "156" + }, + "Provisions pour investissement": { + "account_number": "157" + }, + "Autres provisions et fonds r\u00e9glement\u00e9s": { + "account_number": "158" + }, + "account_number": "15" + }, + "Emprunts et dettes assimil\u00e9es": { + "Emprunts obligataires": { + "Emprunts obligataires ordinaires": { + "account_number": "1611" + }, + "Emprunts obligataires convertibles en actions": { + "account_number": "1612" + }, + "Emprunts obligataires remboursables en actions": { + "account_number": "1613" + }, + "Autres emprunts obligataires": { + "account_number": "1618" + }, + "account_number": "161" + }, + "Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "162" + }, + "Avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "163" + }, + "Avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "164" + }, + "D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "D\u00e9p\u00f4ts": { + "account_number": "1651" + }, + "Cautionnements": { + "account_number": "1652" + }, + "account_number": "165" + }, + "Int\u00e9r\u00eats courus": { + "Sur emprunts obligataires": { + "account_number": "1661" + }, + "Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "1662" + }, + "Sur avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "1663" + }, + "Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "1664" + }, + "Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "account_number": "1665" + }, + "Sur avances assorties de conditions particuli\u00e8res": { + "account_number": "1667" + }, + "Sur autres emprunts et dettes": { + "account_number": "1668" + }, + "account_number": "166" + }, + "Avances assorties de conditions particuli\u00e8res": { + "Avances bloqu\u00e9es pour augmentation du capital": { + "account_number": "1671" + }, + "Avances conditionn\u00e9es par l\u2019\u00c9tat": { + "account_number": "1672" + }, + "Avances conditionn\u00e9es par les autres organismes africains": { + "account_number": "1673" + }, + "Avances conditionn\u00e9es par les organismes internationaux": { + "account_number": "1674" + }, + "account_number": "167" + }, + "Autres emprunts et dettes": { + "Rentes viag\u00e8res capitalis\u00e9es": { + "account_number": "1681" + }, + "Billets de fonds": { + "account_number": "1682" + }, + "Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": { + "account_number": "1683" + }, + "Emprunts participatifs": { + "account_number": "1684" + }, + "Participation des travailleurs aux b\u00e9n\u00e9fices": { + "account_number": "1685" + }, + "Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": { + "account_number": "1686" + }, + "account_number": "168" + }, + "account_number": "16" + }, + "Dettes de location acquisition": { + "Dettes de location acquisition / cr\u00e9dit bail immobilier": { + "account_number": "172" + }, + "Dettes de location acquisition / cr\u00e9dit bail mobilier": { + "account_number": "173" + }, + "Dettes de location acquisition / location de vente": { + "account_number": "174" + }, + "Int\u00e9r\u00eats courus": { + "Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "1762" + }, + "Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "1763" + }, + "Sur dettes de location acquisition / location-vente": { + "account_number": "1764" + }, + "Sur autres dettes de location acquisition": { + "account_number": "1768" + }, + "account_number": "176" + }, + "Autres dettes de location acquisition": { + "account_number": "178" + }, + "account_number": "17" + }, + "Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "Dettes li\u00e9es \u00e0 des participations": { + "Dettes li\u00e9es \u00e0 des participations (groupe)": { + "account_number": "1811" + }, + "Dettes li\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "1812" + }, + "account_number": "181" + }, + "Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "182" + }, + "Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": { + "account_number": "183" + }, + "Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "184" + }, + "Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "185" + }, + "Comptes de liaison charges": { + "account_number": "186" + }, + "Comptes de liaison produits": { + "account_number": "187" + }, + "Comptes de liaison des soci\u00e9t\u00e9s en participation": { + "account_number": "188" + }, + "account_number": "18" + }, + "Provisions pour risques et charges": { + "Provisions pour litiges": { + "account_number": "191" + }, + "Provisions pour garanties donn\u00e9es aux clients": { + "account_number": "192" + }, + "Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": { + "account_number": "193" + }, + "Provisions pour pertes de change": { + "account_number": "194" + }, + "Provisions pour imp\u00f4ts": { + "account_number": "195" + }, + "Provisions pour pensions et obligations similaires": { + "Provisions pour pensions et obligations similaires engagement de retraite": { + "account_number": "1961" + }, + "Actif du r\u00e9gime de retraite": { + "account_number": "1962" + }, + "account_number": "196" + }, + "Provisions pour restructuration": { + "account_number": "197" + }, + "Autres provisions pour risques et charges": { + "Provisions pour amendes et p\u00e9nalit\u00e9s": { + "account_number": "1981" + }, + "Provisions pour propre assureur": { + "account_number": "1983" + }, + "Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "1984" + }, + "Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": { + "account_number": "1985" + }, + "Provisions pour divers risques et charges": { + "account_number": "1988" + }, + "account_number": "198" + }, + "account_number": "19" + }, + "root_type": "Equity", + "account_number": "1" + }, + "Comptes d\u2019actif immobilis\u00e9": { + "Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "211" + }, + "Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "Brevets": { + "account_type": "Fixed Asset", + "account_number": "2121" + }, + "Licences": { + "account_type": "Fixed Asset", + "account_number": "2122" + }, + "Concessions de service public": { + "account_type": "Fixed Asset", + "account_number": "2123" + }, + "Autres concessions et droits similaires": { + "account_type": "Fixed Asset", + "account_number": "2128" + }, + "account_number": "212" + }, + "Logiciels et sites internet": { + "account_type": "Fixed Asset", + "Logiciels": { + "account_type": "Fixed Asset", + "account_number": "2131" + }, + "Sites internet": { + "account_type": "Fixed Asset", + "account_number": "2132" + }, + "account_number": "213" + }, + "Marques": { + "account_type": "Fixed Asset", + "account_number": "214" + }, + "Fonds commercial": { + "account_type": "Fixed Asset", + "account_number": "215" + }, + "Droit au bail": { + "account_type": "Fixed Asset", + "account_number": "216" + }, + "Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset", + "account_number": "217" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset", + "account_number": "2181" + }, + "Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset", + "account_number": "2182" + }, + "Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset", + "account_number": "2183" + }, + "Co\u00fbts des franchises": { + "account_type": "Fixed Asset", + "account_number": "2184" + }, + "Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset", + "account_number": "2188" + }, + "account_number": "218" + }, + "Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "2191" + }, + "Logiciels et internet": { + "account_type": "Fixed Asset", + "account_number": "2193" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "account_number": "2198" + }, + "account_number": "219" + }, + "account_number": "21" + }, + "Terrains": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset", + "account_number": "2211" + }, + "Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset", + "account_number": "2212" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2218" + }, + "account_number": "221" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset", + "account_number": "2221" + }, + "Autres terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2228" + }, + "account_number": "222" + }, + "Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset", + "account_number": "2231" + }, + "Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset", + "account_number": "2232" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2234" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2235" + }, + "Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "account_number": "2238" + }, + "account_number": "223" + }, + "Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset", + "account_number": "2241" + }, + "Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset", + "account_number": "2245" + }, + "Autres travaux": { + "account_type": "Fixed Asset", + "account_number": "2248" + }, + "account_number": "224" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "Carri\u00e8res": { + "account_type": "Fixed Asset", + "account_number": "2251" + }, + "account_number": "225" + }, + "Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "Parkings": { + "account_type": "Fixed Asset", + "account_number": "2261" + }, + "account_number": "226" + }, + "Terrains mis en concession": { + "account_type": "Fixed Asset", + "account_number": "227" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "Terrains immeubles de placement": { + "account_type": "Fixed Asset", + "account_number": "2281" + }, + "Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset", + "account_number": "2285" + }, + "Terrains de location acquisition": { + "account_type": "Fixed Asset", + "account_number": "2286" + }, + "Divers terrains": { + "account_type": "Fixed Asset", + "account_number": "2288" + }, + "account_number": "228" + }, + "Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "account_number": "2291" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2292" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "account_number": "2295" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2298" + }, + "account_number": "229" + }, + "account_number": "22" + }, + "B\u00e2timents, installations techniques et agencements": { + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "B\u00e2timents industriels": { + "account_number": "2311" + }, + "B\u00e2timents agricoles": { + "account_number": "2312" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2313" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2314" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2315" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2316" + }, + "account_number": "231" + }, + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "B\u00e2timents industriels": { + "account_number": "2321" + }, + "B\u00e2timents agricoles": { + "account_number": "2322" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2323" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2324" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2325" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2326" + }, + "account_number": "232" + }, + "Ouvrages d\u2019infrastructure": { + "Voies de terre": { + "account_number": "2331" + }, + "Voies de fer": { + "account_number": "2332" + }, + "Voies d\u2019eau": { + "account_number": "2333" + }, + "Barrages, Digues": { + "account_number": "2334" + }, + "Pistes d\u2019a\u00e9rodrome": { + "account_number": "2335" + }, + "Autres ouvrages d\u2019infrastructures": { + "account_number": "2338" + }, + "account_number": "233" + }, + "Am\u00e9nagements, agencements et installations techniques": { + "Installations complexes sp\u00e9cialis\u00e9es sur sol propre": { + "account_number": "2341" + }, + "Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": { + "account_number": "2342" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": { + "account_number": "2343" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": { + "account_number": "2344" + }, + "Am\u00e9nagements et agencements des b\u00e2timents": { + "account_number": "2345" + }, + "account_number": "234" + }, + "Am\u00e9nagements de bureaux": { + "Installations g\u00e9n\u00e9rales": { + "account_number": "2351" + }, + "Autres am\u00e9nagements de bureaux": { + "account_number": "2358" + }, + "account_number": "235" + }, + "B\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "237" + }, + "Autres installations et agencements": { + "account_number": "238" + }, + "B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "B\u00e2timents en cours": { + "account_number": "2391" + }, + "Installations en cours": { + "account_number": "2392" + }, + "Ouvrages d\u2019infrastructure en cours": { + "account_number": "2393" + }, + "Am\u00e9nagements et agencements et installations techniques en cours": { + "account_number": "2394" + }, + "Am\u00e9nagements de bureaux en cours": { + "account_number": "2395" + }, + "Autres installations et agencements en cours": { + "account_number": "2398" + }, + "account_number": "239" + }, + "account_number": "23" + }, + "Mat\u00e9riel, mobilier et actifs biologiques": { + "Mat\u00e9riel et outillage industriel et commercial": { + "Mat\u00e9riel industriel": { + "account_number": "2411" + }, + "Outillage industriel": { + "account_number": "2412" + }, + "Mat\u00e9riel commercial": { + "account_number": "2413" + }, + "Outillage commercial": { + "account_number": "2414" + }, + "Mat\u00e9riel & outillage industriel et commercial de location-acquisition": { + "account_number": "2416" + }, + "account_number": "241" + }, + "Mat\u00e9riel et outillage agricole": { + "Mat\u00e9riel agricole": { + "account_number": "2421" + }, + "Outillage agricole": { + "account_number": "2422" + }, + "Mat\u00e9riel & outillage agricole de location-acquisition": { + "account_number": "2426" + }, + "account_number": "242" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "243" + }, + "Mat\u00e9riel et mobilier": { + "Mat\u00e9riel de bureau": { + "account_number": "2441" + }, + "Mat\u00e9riel informatique": { + "account_number": "2442" + }, + "Mat\u00e9riel bureautique": { + "account_number": "2443" + }, + "Mobilier de bureau": { + "account_number": "2444" + }, + "Mat\u00e9riel et mobilier immeubles de placement": { + "account_number": "2445" + }, + "Mat\u00e9riel et mobilier de location acquisition": { + "account_number": "2446" + }, + "Mat\u00e9riel et mobilier des logements du personnel": { + "account_number": "2447" + }, + "account_number": "244" + }, + "Mat\u00e9riel de transport": { + "Mat\u00e9riel automobile": { + "account_number": "2451" + }, + "Mat\u00e9riel ferroviaire": { + "account_number": "2452" + }, + "Mat\u00e9riel fluvial, lagunaire": { + "account_number": "2453" + }, + "Mat\u00e9riel naval": { + "account_number": "2454" + }, + "Mat\u00e9riel a\u00e9rien": { + "account_number": "2455" + }, + "Mat\u00e9riel de transport de location-acquisition": { + "account_number": "2456" + }, + "Mat\u00e9riel hippomobile": { + "account_number": "2457" + }, + "Autres mat\u00e9riels de transport": { + "account_number": "2458" + }, + "account_number": "245" + }, + "Actifs biologiques": { + "Cheptel, animaux de trait": { + "account_number": "2461" + }, + "Cheptel, animaux reproducteurs": { + "account_number": "2462" + }, + "Animaux de garde": { + "account_number": "2463" + }, + "Plantations agricoles": { + "account_number": "2465" + }, + "Autres actifs biologiques": { + "account_number": "2468" + }, + "account_number": "246" + }, + "Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "Agencements et am\u00e9nagements du mat\u00e9riel": { + "account_number": "2471" + }, + "Agencements et am\u00e9nagements des actifs biologiques": { + "account_number": "2472" + }, + "Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2478" + }, + "account_number": "247" + }, + "Autres mat\u00e9riels et mobiliers": { + "Collections et \u0153uvres d\u2019art": { + "account_number": "2481" + }, + "Divers mat\u00e9riels mobiliers": { + "account_number": "2488" + }, + "account_number": "248" + }, + "Mat\u00e9riels et actifs biologiques en cours": { + "Mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2491" + }, + "Mat\u00e9riel et outillage agricole": { + "account_number": "2492" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2493" + }, + "Mat\u00e9riel et mobilier de bureau": { + "account_number": "2494" + }, + "Mat\u00e9riel de transport": { + "account_number": "2495" + }, + "Actifs biologiques": { + "account_number": "2496" + }, + "Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2497" + }, + "Autres mat\u00e9riels et actifs biologiques en cours": { + "account_number": "2498" + }, + "account_number": "249" + }, + "account_number": "24" + }, + "Avances et acomptes vers\u00e9s sur immobilisations": { + "Avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "251" + }, + "Avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "252" + }, + "account_number": "25" + }, + "Titres de participation": { + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "261" + }, + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "262" + }, + "Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "263" + }, + "Participations dans des organismes professionnels": { + "account_number": "265" + }, + "Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "266" + }, + "Autres titres de participation": { + "account_number": "268" + }, + "account_number": "26" + }, + "Autres immobilisations financi\u00e8res": { + "Pr\u00eats et cr\u00e9ances": { + "Pr\u00eats participatifs": { + "account_number": "2711" + }, + "Pr\u00eats aux associ\u00e9s": { + "account_number": "2712" + }, + "Billets de fonds": { + "account_number": "2713" + }, + "Titres pr\u00eat\u00e9s": { + "account_number": "2714" + }, + "Autres pr\u00eats et cr\u00e9ances": { + "account_number": "2718" + }, + "account_number": "271" + }, + "Pr\u00eats au personnel": { + "Pr\u00eats immobiliers": { + "account_number": "2721" + }, + "Pr\u00eats mobiliers et d\u2019installation": { + "account_number": "2722" + }, + "Autres pr\u00eats au personnel": { + "account_number": "2728" + }, + "account_number": "272" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "Retenues de garantie": { + "account_number": "2731" + }, + "Fonds r\u00e9glement\u00e9": { + "account_number": "2733" + }, + "Cr\u00e9ances sur le conc\u00e9dant": { + "account_number": "2734" + }, + "Autres cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2738" + }, + "account_number": "273" + }, + "Titres immobilis\u00e9s": { + "Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": { + "account_number": "2741" + }, + "Titres participatifs": { + "account_number": "2742" + }, + "Certificats d\u2019investissement": { + "account_number": "2743" + }, + "Parts de fonds commun de placement (FCP)": { + "account_number": "2744" + }, + "Obligations": { + "account_number": "2745" + }, + "Actions ou parts propres": { + "account_number": "2746" + }, + "Autres titres immobilis\u00e9s": { + "account_number": "2748" + }, + "account_number": "274" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "D\u00e9p\u00f4ts pour loyers d\u2019avance": { + "account_number": "2751" + }, + "D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": { + "account_number": "2752" + }, + "D\u00e9p\u00f4ts pour l\u2019eau": { + "account_number": "2753" + }, + "D\u00e9p\u00f4ts pour le gaz": { + "account_number": "2754" + }, + "D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": { + "account_number": "2755" + }, + "Cautionnements sur march\u00e9s publics": { + "account_number": "2756" + }, + "Cautionnements sur autres op\u00e9rations": { + "account_number": "2757" + }, + "Autres d\u00e9p\u00f4ts et cautionnements": { + "account_number": "2758" + }, + "account_number": "275" + }, + "Int\u00e9r\u00eats courus": { + "Pr\u00eats et cr\u00e9ances non commerciales": { + "account_number": "2761" + }, + "Pr\u00eats au personnel": { + "account_number": "2762" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2763" + }, + "Titres immobilis\u00e9s": { + "account_number": "2764" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2765" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "account_number": "2767" + }, + "Immobilisations financi\u00e8res diverses": { + "account_number": "2768" + }, + "account_number": "276" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": { + "account_number": "2771" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "2772" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "2773" + }, + "Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "2774" + }, + "account_number": "277" + }, + "Immobilisations financi\u00e8res diverses": { + "Cr\u00e9ances diverses groupe": { + "account_number": "2781" + }, + "Cr\u00e9ances diverses hors groupe": { + "account_number": "2782" + }, + "Banques d\u00e9p\u00f4ts \u00e0 terme": { + "account_number": "2784" + }, + "Or et m\u00e9taux pr\u00e9cieux": { + "account_number": "2785" + }, + "Autres immobilisations financi\u00e8res": { + "account_number": "2788" + }, + "account_number": "278" + }, + "account_number": "27" + }, + "Amortissements": { + "account_type": "Accumulated Depreciation", + "Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation", + "account_number": "2811" + }, + "Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation", + "account_number": "2812" + }, + "Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation", + "account_number": "2813" + }, + "Amortissements des marques": { + "account_type": "Accumulated Depreciation", + "account_number": "2814" + }, + "Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation", + "account_number": "2815" + }, + "Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation", + "account_number": "2816" + }, + "Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation", + "account_number": "2817" + }, + "Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation", + "account_number": "2818" + }, + "account_number": "281" + }, + "Amortissements des terrains": { + "Amortissements des travaux de mise en valeur des terrains": { + "account_number": "2824" + }, + "account_number": "282" + }, + "Amortissements des b\u00e2timents, installations techniques et agencements": { + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2831" + }, + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2832" + }, + "Amortissements des ouvrages d\u2019infrastructure": { + "account_number": "2833" + }, + "Amortissements des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2834" + }, + "Amortissements des am\u00e9nagements de bureaux": { + "account_number": "2835" + }, + "Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2837" + }, + "Amortissements des autres installations et agencements": { + "account_number": "2838" + }, + "account_number": "283" + }, + "Amortissements du mat\u00e9riel": { + "Amortissements du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2841" + }, + "Amortissements du mat\u00e9riel et outillage agricole": { + "account_number": "2842" + }, + "Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2843" + }, + "Amortissements du mat\u00e9riel et mobilier": { + "account_number": "2844" + }, + "Amortissements du mat\u00e9riel de transport": { + "account_number": "2845" + }, + "Amortissements des actifs biologiques": { + "account_number": "2846" + }, + "Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2847" + }, + "Amortissements des autres mat\u00e9riels": { + "account_number": "2848" + }, + "account_number": "284" + }, + "account_number": "28" + }, + "D\u00e9pr\u00e9ciations des immobilisations": { + "D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": { + "account_number": "2911" + }, + "D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": { + "account_number": "2912" + }, + "D\u00e9pr\u00e9ciations des logiciels et sites internet": { + "account_number": "2913" + }, + "D\u00e9pr\u00e9ciations des marques": { + "account_number": "2914" + }, + "D\u00e9pr\u00e9ciations du fonds commercial": { + "account_number": "2915" + }, + "D\u00e9pr\u00e9ciations du droit au bail": { + "account_number": "2916" + }, + "D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": { + "account_number": "2917" + }, + "D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": { + "account_number": "2918" + }, + "D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": { + "account_number": "2919" + }, + "account_number": "291" + }, + "D\u00e9pr\u00e9ciations des terrains": { + "D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": { + "account_number": "2921" + }, + "D\u00e9pr\u00e9ciations des terrains nus": { + "account_number": "2922" + }, + "D\u00e9pr\u00e9ciations des terrains b\u00e2tis": { + "account_number": "2923" + }, + "D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": { + "account_number": "2924" + }, + "D\u00e9pr\u00e9ciations des terrains de gisement": { + "account_number": "2925" + }, + "D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": { + "account_number": "2926" + }, + "D\u00e9pr\u00e9ciations des terrains mis en concession": { + "account_number": "2927" + }, + "D\u00e9pr\u00e9ciations des autres terrains": { + "account_number": "2928" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": { + "account_number": "2929" + }, + "account_number": "292" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2931" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2932" + }, + "D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": { + "account_number": "2933" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2934" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": { + "account_number": "2935" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2937" + }, + "D\u00e9pr\u00e9ciations des autres installations et agencements": { + "account_number": "2938" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": { + "account_number": "2939" + }, + "account_number": "293" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2941" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": { + "account_number": "2942" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2943" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": { + "account_number": "2944" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": { + "account_number": "2945" + }, + "D\u00e9pr\u00e9ciations des actifs biologiques": { + "account_number": "2946" + }, + "D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2947" + }, + "D\u00e9pr\u00e9ciations des autres mat\u00e9riels": { + "account_number": "2948" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": { + "account_number": "2949" + }, + "account_number": "294" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "2951" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "2952" + }, + "account_number": "295" + }, + "D\u00e9pr\u00e9ciations des titres de participation": { + "D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "2961" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "2962" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "2963" + }, + "D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": { + "account_number": "2965" + }, + "D\u00e9pr\u00e9ciations des parts dans des GIE": { + "account_number": "2966" + }, + "D\u00e9pr\u00e9ciations des autres titres de participation": { + "account_number": "2968" + }, + "account_number": "296" + }, + "D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": { + "account_number": "2971" + }, + "D\u00e9pr\u00e9ciations des pr\u00eats au personnel": { + "account_number": "2972" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2973" + }, + "D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": { + "account_number": "2974" + }, + "D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2975" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "account_number": "2977" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": { + "account_number": "2978" + }, + "account_number": "297" + }, + "account_number": "29" + }, + "root_type": "Asset", + "account_number": "2" + }, + "Comptes de Stocks": { + "Marchandises": { + "Marchandises A": { + "Marchandises A1": { + "account_number": "3111" + }, + "Marchandises A2": { + "account_number": "3112" + }, + "account_number": "311" + }, + "Marchandises B": { + "Marchandises B1": { + "account_number": "3121" + }, + "Marchandises B2": { + "account_number": "3122" + }, + "account_number": "312" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3131" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3132" + }, + "account_number": "313" + }, + "Marchandises hors activit\u00e9s ordinaires (HAO)": { + "account_number": "318" + }, + "account_number": "31" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Mati\u00e8res A": { + "account_number": "321" + }, + "Mati\u00e8res B": { + "account_number": "322" + }, + "Fournitures (A, B)": { + "account_number": "323" + }, + "account_number": "32" + }, + "Autres approvisionnements": { + "Mati\u00e8res consommables": { + "account_number": "331" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "332" + }, + "Fournitures de magasin": { + "account_number": "333" + }, + "Fournitures de bureau": { + "account_number": "334" + }, + "Emballages": { + "Emballages perdus": { + "account_number": "3351" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "3352" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "3353" + }, + "Autres emballages": { + "account_number": "3358" + }, + "account_number": "335" + }, + "Autres mati\u00e8res": { + "account_number": "338" + }, + "account_number": "33" + }, + "Produits en cours": { + "Produits en cours": { + "Produits en cours P1": { + "account_number": "3411" + }, + "Produits en cours P2": { + "account_number": "3412" + }, + "account_number": "341" + }, + "Travaux en cours": { + "Travaux en cours T1": { + "account_number": "3421" + }, + "Travaux en cours T2": { + "account_number": "3422" + }, + "account_number": "342" + }, + "Produits interm\u00e9diaires en cours": { + "Produits interm\u00e9diaires A": { + "account_number": "3431" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3432" + }, + "account_number": "343" + }, + "Produits r\u00e9siduels en cours": { + "Produits r\u00e9siduels A": { + "account_number": "3441" + }, + "Produits r\u00e9siduels B": { + "account_number": "3442" + }, + "account_number": "344" + }, + "Actifs biologiques en cours": { + "Animaux": { + "account_number": "3451" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3452" + }, + "account_number": "345" + }, + "account_number": "34" + }, + "Services en cours": { + "\u00c9tudes en cours": { + "\u00c9tudes en cours E1": { + "account_number": "3511" + }, + "\u00c9tudes en cours E2": { + "account_number": "3512" + }, + "account_number": "351" + }, + "Prestations de services en cours": { + "Prestations de services S1": { + "account_number": "3521" + }, + "Prestations de services S2": { + "account_number": "3522" + } + }, + "account_number": "35" + }, + "Produits finis": { + "Produits finis A": { + "account_number": "361" + }, + "Produits finis B": { + "account_number": "362" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3631" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3632" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3638" + }, + "account_number": "363" + }, + "account_number": "36" + }, + "Produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "Produits interm\u00e9diaires A": { + "account_number": "3711" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3712" + }, + "account_number": "371" + }, + "Produits r\u00e9siduels": { + "D\u00e9chets": { + "account_number": "3721" + }, + "Rebuts": { + "account_number": "3722" + }, + "Mati\u00e8res de R\u00e9cup\u00e9ration": { + "account_number": "3723" + }, + "account_number": "372" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3731" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3732" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3738" + }, + "account_number": "373" + }, + "account_number": "37" + }, + "Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "Marchandises en cours de route": { + "account_number": "381" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": { + "account_number": "382" + }, + "Autres approvisionnements en cours de route": { + "account_number": "383" + }, + "Produits finis en cours de route": { + "account_number": "386" + }, + "Stock en consignation ou en d\u00e9p\u00f4t": { + "Stock en consignation": { + "account_number": "3871" + }, + "Stock en d\u00e9p\u00f4t": { + "account_number": "3872" + }, + "account_number": "387" + }, + "Stock provenant d\u2019immobilisations mises hors service ou au rebut": { + "account_number": "388" + }, + "account_number": "38" + }, + "D\u00e9pr\u00e9ciations des stocks et encours de production": { + "D\u00e9pr\u00e9ciations des stocks de marchandises": { + "account_number": "391" + }, + "D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "392" + }, + "D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": { + "account_number": "393" + }, + "D\u00e9pr\u00e9ciations des productions en cours": { + "account_number": "394" + }, + "D\u00e9pr\u00e9ciations des services en cours": { + "account_number": "395" + }, + "D\u00e9pr\u00e9ciations des stocks de produits finis": { + "account_number": "396" + }, + "D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "account_number": "397" + }, + "D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_number": "398" + }, + "account_number": "39" + }, + "root_type": "Asset", + "account_number": "3" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "Fournisseurs d\u00e9biteurs": { + "Fournisseurs Avances et acomptes vers\u00e9s": { + "account_number": "4091" + }, + "Fournisseurs Groupe avances et acomptes vers\u00e9s": { + "account_number": "4092" + }, + "Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": { + "account_number": "4093" + }, + "Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": { + "account_number": "4094" + }, + "Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": { + "account_number": "4098" + }, + "account_number": "409" + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "Clients": { + "Clients": { + "account_type": "Receivable", + "account_number": "4111" + }, + "Clients groupe": { + "account_type": "Receivable", + "account_number": "4112" + }, + "Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable", + "account_number": "4114" + }, + "Clients, organismes internationaux": { + "account_type": "Receivable", + "account_number": "4115" + }, + "Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable", + "account_number": "4116" + }, + "Client, retenues de garantie": { + "account_type": "Receivable", + "account_number": "4117" + }, + "Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable", + "account_number": "4118" + }, + "account_type": "Receivable", + "account_number": "411" + }, + "Clients, effets \u00e0 recevoir en portefeuille": { + "Clients, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4121" + }, + "Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4122" + }, + "\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4124" + }, + "Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4125" + }, + "account_type": "Receivable", + "account_number": "412" + }, + "Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4131" + }, + "Clients, effets impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4132" + }, + "Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4133" + }, + "Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4138" + }, + "account_type": "Receivable", + "account_number": "413" + }, + "Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4141" + }, + "Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4142" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4146" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4147" + }, + "account_type": "Receivable", + "account_number": "414" + }, + "Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable", + "account_number": "415" + }, + "Cr\u00e9ances clients litigieuses ou douteuses": { + "Cr\u00e9ances litigieuses": { + "account_type": "Receivable", + "account_number": "4161" + }, + "Cr\u00e9ances douteuses": { + "account_type": "Receivable", + "account_number": "4162" + }, + "account_type": "Receivable", + "account_number": "416" + }, + "Clients, produits \u00e0 recevoir": { + "Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable", + "account_number": "4181" + }, + "Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable", + "account_number": "4186" + }, + "account_type": "Receivable", + "account_number": "418" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "Personnel, avances et acomptes": { + "Personnel, avances": { + "account_number": "4211" + }, + "Personnel, acomptes": { + "account_number": "4212" + }, + "Frais avanc\u00e9s et fournitures au personnel": { + "account_number": "4213" + }, + "account_number": "421" + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "Prestations familiales": { + "account_number": "4311" + }, + "Accidents de travail": { + "account_number": "4312" + }, + "Caisse de retraite obligatoire": { + "account_number": "4313" + }, + "Caisse de retraite facultative": { + "account_number": "4314" + }, + "Autres cotisations sociales": { + "account_number": "4318" + } + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "Mutuelle": { + "account_number": "4331" + }, + "Assurances retraite": { + "account_number": "4332" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "4333" + } + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Produits \u00e0 recevoir": { + "account_number": "4387" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "\u00c9tat, TVA factur\u00e9e": { + "TVA factur\u00e9e sur ventes": { + "account_number": "4431" + }, + "TVA factur\u00e9e sur prestations de services": { + "account_number": "4432" + }, + "TVA factur\u00e9e sur travaux": { + "account_number": "4433" + }, + "TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": { + "account_number": "4434" + }, + "TVA sur factures \u00e0 \u00e9tablir": { + "account_number": "4435" + }, + "account_number": "443" + }, + "\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "TVA r\u00e9cup\u00e9rable sur immobilisations": { + "account_number": "4451" + }, + "TVA r\u00e9cup\u00e9rable sur achats": { + "account_number": "4452" + }, + "TVA r\u00e9cup\u00e9rable sur transport": { + "account_number": "4453" + }, + "TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": { + "account_number": "4454" + }, + "TVA r\u00e9cup\u00e9rable sur factures non parvenues": { + "account_number": "4455" + }, + "TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": { + "account_number": "4456" + }, + "account_number": "445" + }, + "\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges \u00e0 payer": { + "account_number": "4486" + }, + "Produits \u00e0 recevoir": { + "account_number": "4487" + }, + "account_number": "448" + }, + "\u00c9tat, cr\u00e9ances et dettes diverses": { + "\u00c9tat, obligations cautionn\u00e9es": { + "account_number": "4491" + }, + "\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": { + "account_number": "4492" + }, + "\u00c9tat, fonds de dotation \u00e0 recevoir": { + "account_number": "4493" + }, + "\u00c9tat, subventions investissement \u00e0 recevoir": { + "account_number": "4494" + }, + "\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": { + "account_number": "4495" + }, + "\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": { + "account_number": "4496" + }, + "\u00c9tat, avances sur subventions": { + "account_number": "4497" + }, + "\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": { + "account_number": "4499" + }, + "account_number": "449" + } + }, + "45-Organismes internationaux (ACTIF)": { + "Op\u00e9rations avec les organismes africains": { + "account_number": "451" + }, + "Op\u00e9rations avec les autres organismes internationaux": { + "account_number": "452" + }, + "Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "Organismes internationaux, fonds de dotation \u00e0 recevoir": { + "account_number": "4581" + }, + "Organismes internationaux, subventions \u00e0 recevoir": { + "account_number": "4582" + }, + "account_number": "458" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "Apporteurs, capital appel\u00e9, non vers\u00e9": { + "account_number": "4613" + }, + "Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": { + "account_number": "4614" + }, + "Apporteurs, titres \u00e0 \u00e9changer": { + "account_number": "4618" + } + }, + "Apporteurs, restant d\u00fb sur capital appel\u00e9": { + "account_number": "467" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4721" + }, + "Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": { + "account_number": "4726" + } + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "Mandants": { + "account_number": "4731" + }, + "Mandataires": { + "account_number": "4732" + }, + "Commettants": { + "account_number": "4733" + }, + "Commissionnaires": { + "account_number": "4734" + }, + "\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": { + "account_number": "4739" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "Compte de r\u00e9partition p\u00e9riodique des produits": { + "account_number": "4747" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "Compte actif": { + "account_type": "Temporary", + "account_number": "4751" + } + }, + "Charges constat\u00e9es d\u2019avance": { + "account_number": "476" + }, + "478-\u00c9carts de conversion actif": { + "Diminution des cr\u00e9ances d\u2019exploitation": { + "account_number": "4781" + }, + "Diminution des cr\u00e9ances financi\u00e8res": { + "account_number": "4782" + }, + "Augmentation des dettes d\u2019exploitation": { + "account_number": "4783" + }, + "Augmentation des dettes financi\u00e8res": { + "account_number": "4784" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4786" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4788" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "En compte, immobilisations incorporelles": { + "account_number": "4851" + }, + "En compte, immobilisations corporelles": { + "account_number": "4852" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_number": "4853" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_number": "4854" + }, + "Effets escompt\u00e9s non \u00e9chus": { + "account_number": "4855" + }, + "Retenues de garantie": { + "account_number": "4857" + }, + "Factures \u00e0 \u00e9tablir": { + "account_number": "4858" + }, + "account_number": "485" + }, + "Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": { + "account_number": "488" + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "D\u00e9pr\u00e9ciations des comptes clients": { + "Cr\u00e9ances litigieuses": { + "account_number": "4911" + }, + "Cr\u00e9ances douteuses": { + "account_number": "4912" + }, + "account_number": "491" + }, + "D\u00e9pr\u00e9ciations des comptes organismes internationaux": { + "account_number": "495" + }, + "D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "Associ\u00e9s, comptes courants": { + "account_number": "4962" + }, + "Associ\u00e9s, op\u00e9rations faites en commun": { + "account_number": "4963" + }, + "Groupe, comptes courants": { + "account_number": "4966" + }, + "account_number": "496" + }, + "D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": { + "account_number": "497" + }, + "D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "account_number": "4985" + }, + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4986" + }, + "Autres cr\u00e9ances HAO": { + "account_number": "4988" + }, + "account_number": "498" + }, + "Provisions pour risques \u00e0 court terme": { + "Sur op\u00e9rations d\u2019exploitation": { + "account_number": "4991" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "4997" + }, + "Sur op\u00e9rations HAO": { + "account_number": "4998" + }, + "account_number": "499" + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "Fournisseurs, dettes en compte": { + "Fournisseurs": { + "account_type": "Payable", + "account_number": "4011" + }, + "Fournisseurs groupe": { + "account_type": "Payable", + "account_number": "4012" + }, + "Fournisseurs sous-traitants": { + "account_type": "Payable", + "account_number": "4013" + }, + "Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable", + "account_number": "4016" + }, + "Fournisseur, retenues de garantie": { + "account_type": "Payable", + "account_number": "4017" + }, + "account_type": "Payable", + "account_number": "401" + }, + "Fournisseurs, effets \u00e0 payer": { + "Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4021" + }, + "Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4022" + }, + "Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4023" + }, + "account_type": "Payable", + "account_number": "402" + }, + "Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4041" + }, + "Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4042" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4046" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4047" + }, + "account_type": "Payable", + "account_number": "404" + }, + "Fournisseurs, factures non parvenues": { + "Fournisseurs": { + "account_type": "Stock Received But Not Billed", + "account_number": "4081" + }, + "Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed", + "account_number": "4082" + }, + "Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed", + "account_number": "4083" + }, + "Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed", + "account_number": "4086" + }, + "account_type": "Stock Received But Not Billed", + "account_number": "408" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "Clients cr\u00e9diteurs": { + "Clients, avances et acomptes re\u00e7us": { + "account_number": "4191" + }, + "Clients groupe, avances et acomptes re\u00e7us": { + "account_number": "4192" + }, + "Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": { + "account_number": "4194" + }, + "Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": { + "account_number": "4198" + }, + "account_number": "419" + } + }, + "42-Personnel (PASSIF)": { + "Personnel, r\u00e9mun\u00e9rations dues": { + "account_number": "422" + }, + "Personnel, oppositions, saisies-arr\u00eats": { + "Personnel, oppositions": { + "account_number": "4231" + }, + "Personnel, saisies-arr\u00eats": { + "account_number": "4232" + }, + "Personnel, avis \u00e0 tiers d\u00e9tenteur": { + "account_number": "4233" + }, + "account_number": "423" + }, + "Personnel, \u0153uvres sociales internes": { + "Assistance m\u00e9dicale": { + "account_number": "4241" + }, + "Allocations familiales": { + "account_number": "4242" + }, + "Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": { + "account_number": "4245" + }, + "Autres \u0153uvres sociales internes": { + "account_number": "4248" + }, + "account_number": "424" + }, + "Repr\u00e9sentants du personnel": { + "D\u00e9l\u00e9gu\u00e9s du personnel": { + "account_number": "4251" + }, + "Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": { + "account_number": "4252" + }, + "Autres repr\u00e9sentants du personnel": { + "account_number": "4258" + }, + "account_number": "425" + }, + "Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "Participation aux b\u00e9n\u00e9fices": { + "account_number": "4261" + }, + "Participation au capital": { + "account_number": "4264" + }, + "account_number": "426" + }, + "Personnel d\u00e9p\u00f4ts": { + "account_number": "427" + }, + "Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": { + "account_number": "4281" + }, + "Autres charges \u00e0 payer": { + "account_number": "4286" + }, + "Produits \u00e0 recevoir": { + "account_number": "4287" + }, + "account_number": "428" + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges sociales sur gratifications \u00e0 payer": { + "account_number": "4381" + }, + "Charges sociales sur cong\u00e9s \u00e0 payer": { + "account_number": "4382" + }, + "Autres charges \u00e0 payer": { + "account_number": "4386" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": { + "account_number": "441" + }, + "\u00c9tat, autres imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes d\u2019\u00c9tat": { + "account_number": "4421" + }, + "Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": { + "account_number": "4422" + }, + "Imp\u00f4ts et taxes recouvrables sur des obligataires": { + "account_number": "4423" + }, + "Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": { + "account_number": "4424" + }, + "Droits de douane": { + "account_number": "4426" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "4428" + }, + "account_number": "442" + }, + "\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "\u00c9tat, TVA due": { + "account_number": "4441" + }, + "\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": { + "account_number": "4449" + }, + "account_number": "444" + }, + "\u00c9tat, autres taxes sur le chiffre d\u2019affaires": { + "account_number": "446" + }, + "\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": { + "account_number": "4471" + }, + "Imp\u00f4ts sur salaires": { + "account_number": "4472" + }, + "Contribution nationale": { + "account_number": "4473" + }, + "Contribution nationale de solidarit\u00e9": { + "account_number": "4474" + }, + "Autres imp\u00f4ts et contributions": { + "account_number": "4478" + }, + "account_number": "447" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "Apporteurs, apports en nature": { + "account_number": "4611" + }, + "Apporteurs, apports en num\u00e9raire": { + "account_number": "4612" + }, + "Apporteurs, versements re\u00e7us sur augmentation de capital": { + "account_number": "4615" + }, + "Apporteurs, versements anticip\u00e9s": { + "account_number": "4616" + }, + "Apporteurs d\u00e9faillants": { + "account_number": "4617" + }, + "Apporteurs, capital \u00e0 rembourser": { + "account_number": "4619" + } + }, + "462-Associ\u00e9s, comptes courants": { + "Principal": { + "account_number": "4621" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4626" + } + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "Op\u00e9rations courantes": { + "account_number": "4631" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4636" + } + }, + "Associ\u00e9s, dividendes \u00e0 payer": { + "account_number": "465" + }, + "Groupe, comptes courants": { + "account_number": "466" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "D\u00e9biteurs divers": { + "account_number": "4711" + }, + "Cr\u00e9diteurs divers": { + "account_number": "4712" + }, + "Obligataires": { + "account_number": "4713" + }, + "R\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "4715" + }, + "Compte d\u2019affacturage": { + "account_number": "4716" + }, + "D\u00e9biteurs divers retenues de garantie": { + "account_number": "4717" + }, + "Apport, compte de fusion et op\u00e9rations assimil\u00e9es": { + "account_number": "4718" + }, + "Bons de souscription d\u2019actions et d\u2019obligations": { + "account_number": "4719" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "Compte de r\u00e9partition p\u00e9riodique des charges": { + "account_number": "4746" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "Compte passif": { + "account_number": "4752" + } + }, + "Produits constat\u00e9s d\u2019avance": { + "account_number": "477" + }, + "479-\u00c9carts de conversion passif": { + "Augmentation des cr\u00e9ances d\u2019exploitation": { + "account_number": "4791" + }, + "Augmentation des cr\u00e9ances financi\u00e8res": { + "account_number": "4792" + }, + "Diminution des dettes d\u2019exploitation": { + "account_number": "4793" + }, + "Diminution des dettes financi\u00e8res": { + "account_number": "4794" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4797" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4798" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "Fournisseurs d\u2019investissements": { + "Immobilisations incorporelles": { + "account_number": "4811" + }, + "Immobilisations corporelles": { + "account_number": "4812" + }, + "Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": { + "account_number": "4813" + }, + "R\u00e9serve de propri\u00e9t\u00e9": { + "account_number": "4816" + }, + "Retenues de garantie": { + "account_number": "4817" + }, + "Factures non parvenues": { + "account_number": "4818" + }, + "account_number": "481" + }, + "Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "Immobilisations incorporelles": { + "account_number": "4821" + }, + "Immobilisations corporelles": { + "account_number": "4822" + }, + "account_number": "482" + }, + "Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "Produits": { + "account_number": "4887" + }, + "account_number": "484" + } + }, + "root_type": "Liability" + }, + "Comptes de tr\u00e9sorerie": { + "Titres de placement": { + "Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "Titres du Tr\u00e9sor \u00e0 court terme": { + "account_number": "5011" + }, + "Titres d\u2019organismes financiers": { + "account_number": "5012" + }, + "Bons de caisse \u00e0 court terme": { + "account_number": "5013" + }, + "Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": { + "account_number": "5016" + }, + "account_number": "501" + }, + "Actions": { + "Actions ou parts propres": { + "account_number": "5021" + }, + "Actions cot\u00e9es": { + "account_number": "5022" + }, + "Actions non cot\u00e9es": { + "account_number": "5023" + }, + "Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": { + "account_number": "5024" + }, + "Autres actions": { + "account_number": "5025" + }, + "Frais d\u2019acquisition des actions": { + "account_number": "5026" + }, + "account_number": "502" + }, + "Obligations": { + "Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": { + "account_number": "5031" + }, + "Obligations cot\u00e9es": { + "account_number": "5032" + }, + "Obligations non cot\u00e9es": { + "account_number": "5033" + }, + "Autres obligations": { + "account_number": "5035" + }, + "Frais d\u2019acquisition des obligations": { + "account_number": "5036" + }, + "account_number": "503" + }, + "Bons de souscription": { + "Bons de souscription d\u2019actions": { + "account_number": "5042" + }, + "Bons de souscription d\u2019obligations": { + "account_number": "5043" + }, + "account_number": "504" + }, + "Titres n\u00e9gociables hors r\u00e9gion": { + "account_number": "505" + }, + "Int\u00e9r\u00eats courus": { + "Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": { + "account_number": "5061" + }, + "Actions": { + "account_number": "5062" + }, + "Obligations": { + "account_number": "5063" + }, + "account_number": "506" + }, + "Autres titres de placement et cr\u00e9ances assimil\u00e9es": { + "account_number": "508" + }, + "account_number": "50" + }, + "Valeurs \u00e0 encaisser": { + "Effets \u00e0 encaisser": { + "account_number": "511" + }, + "Effets \u00e0 l\u2019encaissement": { + "account_number": "512" + }, + "Ch\u00e8ques \u00e0 encaisser": { + "account_number": "513" + }, + "Ch\u00e8ques \u00e0 l\u2019encaissement": { + "account_number": "514" + }, + "Cartes de cr\u00e9dit \u00e0 encaisser": { + "account_number": "515" + }, + "Autres valeurs \u00e0 l\u2019encaissement": { + "Warrants": { + "account_number": "5181" + }, + "Billets de fonds": { + "account_number": "5182" + }, + "Ch\u00e8ques de voyage": { + "account_number": "5185" + }, + "Coupons \u00e9chus": { + "account_number": "5186" + }, + "Int\u00e9r\u00eats \u00e9chus des obligations": { + "account_number": "5187" + }, + "account_number": "518" + }, + "account_number": "51" + }, + "Banques": { + "Banques locales": { + "Banques en monnaie nationale": { + "account_type": "Bank", + "account_number": "5211" + }, + "Banques en devises": { + "account_type": "Bank", + "account_number": "5215" + }, + "account_type": "Bank", + "account_number": "521" + }, + "Banques autres \u00c9tats r\u00e9gion": { + "account_number": "522" + }, + "Banques autres \u00c9tats zone mon\u00e9taire": { + "account_number": "523" + }, + "Banques hors zone mon\u00e9taire": { + "account_number": "524" + }, + "Banques d\u00e9p\u00f4t \u00e0 terme": { + "account_number": "525" + }, + "Banques, int\u00e9r\u00eats courus": { + "Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": { + "account_number": "5261" + }, + "Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": { + "account_number": "5267" + }, + "account_number": "526" + }, + "account_number": "52" + }, + "\u00c9tablissements financiers et assimil\u00e9s": { + "Ch\u00e8ques postaux": { + "account_number": "531" + }, + "Tr\u00e9sor": { + "account_number": "532" + }, + "Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": { + "account_number": "533" + }, + "\u00c9tablissements financiers, int\u00e9r\u00eats courus": { + "account_number": "536" + }, + "Autres organismes financiers": { + "account_number": "538" + }, + "account_number": "53" + }, + "Instruments de tr\u00e9sorerie": { + "Options de taux d\u2019int\u00e9r\u00eat": { + "account_number": "541" + }, + "Options de taux de change": { + "account_number": "542" + }, + "Options de taux boursiers": { + "account_number": "543" + }, + "Instruments de march\u00e9s \u00e0 terme": { + "account_number": "544" + }, + "Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": { + "account_number": "545" + }, + "account_number": "54" + }, + "Instruments de monnaie \u00e9lectronique": { + "Monnaie \u00e9lectronique carte carburant": { + "account_number": "551" + }, + "Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": { + "account_number": "552" + }, + "Monnaie \u00e9lectronique carte p\u00e9age": { + "account_number": "553" + }, + "Porte-monnaie \u00e9lectronique": { + "account_number": "554" + }, + "Autres instruments de monnaies \u00e9lectroniques": { + "account_number": "558" + }, + "account_number": "55" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "Cr\u00e9dits de tr\u00e9sorerie": { + "account_number": "561" + }, + "Escompte de cr\u00e9dits de campagne": { + "account_number": "564" + }, + "Escompte de cr\u00e9dits ordinaires": { + "account_number": "565" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": { + "account_number": "566" + }, + "account_number": "56" + }, + "Caisse": { + "Caisse si\u00e8ge social": { + "Caisse en monnaie nationale": { + "account_number": "5711" + }, + "Caisse en devises": { + "account_number": "5712" + }, + "account_number": "571" + }, + "Caisse succursale A": { + "En monnaie nationale": { + "account_number": "5721" + }, + "En devises": { + "account_number": "5722" + }, + "account_number": "572" + }, + "Caisse succursale B": { + "En monnaie nationale": { + "account_number": "5731" + }, + "En devises": { + "account_number": "5732" + }, + "account_number": "573" + }, + "account_number": "57" + }, + "R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "R\u00e9gies d\u2019avance": { + "account_number": "581" + }, + "Accr\u00e9ditifs": { + "account_number": "582" + }, + "Virements de fonds": { + "account_number": "585" + }, + "Autres virements internes": { + "account_number": "588" + }, + "account_number": "58" + }, + "D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "D\u00e9pr\u00e9ciations des titres de placement": { + "account_number": "590" + }, + "D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": { + "account_number": "591" + }, + "D\u00e9pr\u00e9ciations des comptes banques": { + "account_number": "592" + }, + "D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": { + "account_number": "593" + }, + "D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": { + "account_number": "594" + }, + "Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": { + "account_number": "599" + }, + "account_number": "59" + }, + "root_type": "Asset", + "account_number": "5" + }, + "Comptes de charges des activit\u00e9s ordinaires": { + "Achats et variations de stocks": { + "Achats de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "6011" + }, + "Hors R\u00e9gion": { + "account_number": "6012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6014" + }, + "Frais sur achats": { + "account_number": "6015" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6019" + }, + "account_number": "601" + }, + "Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Dans la R\u00e9gion": { + "account_number": "6021" + }, + "Hors R\u00e9gion": { + "account_number": "6022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6024" + }, + "Frais sur achats": { + "account_number": "6025" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6029" + }, + "account_number": "602" + }, + "Variations des stocks de biens achet\u00e9s": { + "Variations des stocks de marchandises": { + "account_number": "6031" + }, + "Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "6032" + }, + "Variations des stocks d\u2019autres approvisionnements": { + "account_number": "6033" + }, + "account_number": "603" + }, + "Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "Mati\u00e8res consommables": { + "account_number": "6041" + }, + "Mati\u00e8res combustibles": { + "account_number": "6042" + }, + "Produits d\u2019entretien": { + "account_number": "6043" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "6044" + }, + "Frais sur achat": { + "account_number": "6045" + }, + "Fournitures de magasin": { + "account_number": "6046" + }, + "Fournitures de bureau": { + "account_number": "6047" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6049" + }, + "account_number": "604" + }, + "Autres achats": { + "Fournitures non stockables Eau": { + "account_number": "6051" + }, + "Fournitures non stockables \u00c9lectricit\u00e9": { + "account_number": "6052" + }, + "Fournitures non stockables Autres \u00e9nergies": { + "account_number": "6053" + }, + "Fournitures d\u2019entretien non stockables": { + "account_number": "6054" + }, + "Fournitures de bureau non stockables": { + "account_number": "6055" + }, + "Achats de petit mat\u00e9riel et outillage": { + "account_number": "6056" + }, + "Achats d\u2019\u00e9tudes et prestations de services": { + "account_number": "6057" + }, + "Achats de travaux, mat\u00e9riels et \u00e9quipements": { + "account_number": "6058" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6059" + }, + "account_number": "605" + }, + "Achats d\u2019emballages": { + "Emballages perdus": { + "account_number": "6081" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "6082" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "6083" + }, + "Frais sur achats": { + "account_number": "6085" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6089" + }, + "account_number": "608" + }, + "account_number": "60" + }, + "Transports": { + "Transports sur ventes": { + "account_number": "612" + }, + "Transports pour le compte de tiers": { + "account_number": "613" + }, + "Transports du personnel": { + "account_number": "614" + }, + "Transports de plis": { + "account_number": "616" + }, + "Autres frais de transport": { + "Voyages et d\u00e9placements": { + "account_number": "6181" + }, + "Transports entre \u00e9tablissements ou chantiers": { + "account_number": "6182" + }, + "Transports administratifs": { + "account_number": "6183" + }, + "account_number": "618" + }, + "account_number": "61" + }, + "Services ext\u00e9rieurs": { + "Sous-traitance g\u00e9n\u00e9rale": { + "account_number": "621" + }, + "Locations, charges locatives": { + "Locations de terrains": { + "account_number": "6221" + }, + "Locations de b\u00e2timents": { + "account_number": "6222" + }, + "Locations de mat\u00e9riels et outillages": { + "account_number": "6223" + }, + "Malis sur emballages": { + "account_number": "6224" + }, + "Locations d\u2019emballages": { + "account_number": "6225" + }, + "Fermages et loyers du foncier": { + "account_number": "6226" + }, + "Locations et charges locatives diverses": { + "account_number": "6228" + }, + "account_number": "622" + }, + "Redevances de location acquisition": { + "Cr\u00e9dit-bail immobilier": { + "account_number": "6232" + }, + "Cr\u00e9dit-bail mobilier": { + "account_number": "6233" + }, + "Location-vente": { + "account_number": "6234" + }, + "Autres contrats de location acquisition": { + "account_number": "6238" + }, + "account_number": "623" + }, + "Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "Entretien et r\u00e9parations des biens immobiliers": { + "account_number": "6241" + }, + "Entretien et r\u00e9parations des biens mobiliers": { + "account_number": "6242" + }, + "Maintenance": { + "account_number": "6243" + }, + "Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "6244" + }, + "Autres entretiens et r\u00e9parations": { + "account_number": "6248" + }, + "account_number": "624" + }, + "Primes d\u2019assurance": { + "Assurances multirisques": { + "account_number": "6251" + }, + "Assurances mat\u00e9riel de transport": { + "account_number": "6252" + }, + "Assurances risques d\u2019exploitation": { + "account_number": "6253" + }, + "Assurances responsabilit\u00e9 du producteur": { + "account_number": "6254" + }, + "Assurances insolvabilit\u00e9 clients": { + "account_number": "6255" + }, + "Assurances transport sur ventes": { + "account_number": "6257" + }, + "Autres primes d\u2019assurances": { + "account_number": "6258" + }, + "account_number": "625" + }, + "\u00c9tudes, recherches et documentation": { + "\u00c9tudes et recherches": { + "account_number": "6261" + }, + "Documentation g\u00e9n\u00e9rale": { + "account_number": "6265" + }, + "Documentation technique": { + "account_number": "6266" + }, + "account_number": "626" + }, + "Publicit\u00e9, publications, relations publiques": { + "Annonces, insertions": { + "account_number": "6271" + }, + "Catalogues, imprim\u00e9s publicitaires": { + "account_number": "6272" + }, + "\u00c9chantillons": { + "account_number": "6273" + }, + "Foires et expositions": { + "account_number": "6274" + }, + "Publications": { + "account_number": "6275" + }, + "Cadeaux \u00e0 la client\u00e8le": { + "account_number": "6276" + }, + "Frais de colloques, s\u00e9minaires, conf\u00e9rences": { + "account_number": "6277" + }, + "Autres charges de publicit\u00e9 et relations publiques": { + "account_number": "6278" + }, + "account_number": "627" + }, + "Frais de t\u00e9l\u00e9communications": { + "Frais de t\u00e9l\u00e9phone": { + "account_number": "6281" + }, + "Frais de t\u00e9lex": { + "account_number": "6282" + }, + "Frais de t\u00e9l\u00e9copie": { + "account_number": "6283" + }, + "Autres frais de t\u00e9l\u00e9communications": { + "account_number": "6288" + }, + "account_number": "628" + }, + "account_number": "62" + }, + "Autres services ext\u00e9rieurs": { + "Frais bancaires": { + "Frais sur titres (vente, garde)": { + "account_number": "6311" + }, + "Frais sur effets": { + "account_number": "6312" + }, + "Location de coffres": { + "account_number": "6313" + }, + "Commissions d\u2019affacturage": { + "account_number": "6314" + }, + "Commissions sur cartes de cr\u00e9dit": { + "account_number": "6315" + }, + "Frais d\u2019\u00e9mission d\u2019emprunts": { + "account_number": "6316" + }, + "Frais sur instruments monnaie \u00e9lectronique": { + "account_number": "6317" + }, + "Autres frais bancaires": { + "account_number": "6318" + }, + "account_number": "631" + }, + "R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "Commissions et courtages sur ventes": { + "account_number": "6322" + }, + "Honoraires des professions r\u00e9glement\u00e9es": { + "account_number": "6324" + }, + "Frais d\u2019actes et de contentieux": { + "account_number": "6325" + }, + "R\u00e9mun\u00e9rations d\u2019affacturage": { + "account_number": "6326" + }, + "R\u00e9mun\u00e9rations des autres prestataires de services": { + "account_number": "6327" + }, + "Divers frais": { + "account_number": "6328" + }, + "account_number": "632" + }, + "Frais de formation du personnel": { + "account_number": "633" + }, + "Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "Redevances pour brevets, licences": { + "account_number": "6342" + }, + "Redevances pour logiciels": { + "account_number": "6343" + }, + "Redevances pour marques": { + "account_number": "6344" + }, + "Redevances pour sites internet": { + "account_number": "6345" + }, + "Redevances pour concessions, droits et valeurs similaires": { + "account_number": "6346" + }, + "account_number": "634" + }, + "Cotisations": { + "Cotisations": { + "account_number": "6351" + }, + "Concours divers": { + "account_number": "6358" + }, + "account_number": "635" + }, + "R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "Personnel int\u00e9rimaire": { + "account_number": "6371" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6372" + }, + "account_number": "637" + }, + "Autres charges externes": { + "Frais de recrutement du personnel": { + "account_number": "6381" + }, + "Frais de d\u00e9m\u00e9nagement": { + "account_number": "6382" + }, + "R\u00e9ceptions": { + "account_number": "6383" + }, + "Missions": { + "account_number": "6384" + }, + "Charges de copropri\u00e9t\u00e9": { + "account_number": "6385" + }, + "account_number": "638" + }, + "account_number": "63" + }, + "Imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes directs": { + "Imp\u00f4ts fonciers et taxes annexes": { + "account_number": "6411" + }, + "Patentes, licences et taxes annexes": { + "account_number": "6412" + }, + "Taxes sur appointements et salaires": { + "account_number": "6413" + }, + "Taxes d\u2019apprentissage": { + "account_number": "6414" + }, + "Formation professionnelle continue": { + "account_number": "6415" + }, + "Autres imp\u00f4ts et taxes directs": { + "account_number": "6418" + }, + "account_number": "641" + }, + "Imp\u00f4ts et taxes indirects": { + "account_number": "645" + }, + "Droits d\u2019enregistrement": { + "Droits de mutation": { + "account_number": "6461" + }, + "Droits de timbre": { + "account_number": "6462" + }, + "Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": { + "account_number": "6463" + }, + "Vignettes": { + "account_number": "6464" + }, + "Autres droits": { + "account_number": "6468" + }, + "account_number": "646" + }, + "P\u00e9nalit\u00e9s, amendes fiscales": { + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": { + "account_number": "6471" + }, + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": { + "account_number": "6472" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": { + "account_number": "6473" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": { + "account_number": "6474" + }, + "Autres p\u00e9nalit\u00e9s et amendes fiscales": { + "account_number": "6478" + }, + "account_number": "647" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "648" + }, + "account_number": "64" + }, + "Autres charges": { + "Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "Clients": { + "account_number": "6511" + }, + "Autres d\u00e9biteurs": { + "account_number": "6515" + }, + "account_number": "651" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "6521" + }, + "Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "6525" + }, + "account_number": "652" + }, + "Valeurs comptables des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "6541" + }, + "Immobilisations corporelles": { + "account_number": "6542" + }, + "account_number": "654" + }, + "Perte de change sur cr\u00e9ances et dettes commerciale": { + "account_number": "656" + }, + "P\u00e9nalit\u00e9s et amendes p\u00e9nales": { + "account_number": "657" + }, + "Charges diverses": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "6581" + }, + "Dons": { + "account_number": "6582" + }, + "M\u00e9c\u00e9nat": { + "account_number": "6583" + }, + "Autres charges diverses": { + "account_number": "6588" + }, + "account_number": "658" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "6591" + }, + "Sur stocks": { + "account_number": "6593" + }, + "Sur cr\u00e9ances": { + "account_number": "6594" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": { + "account_number": "6598" + }, + "account_number": "659" + }, + "account_number": "65" + }, + "Charges de personnel": { + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "Appointements salaires et commissions": { + "account_number": "6611" + }, + "Primes et gratifications": { + "account_number": "6612" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6613" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6614" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6615" + }, + "Suppl\u00e9ment familial": { + "account_number": "6616" + }, + "Avantages en nature": { + "account_number": "6617" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6618" + }, + "account_number": "661" + }, + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "Appointements salaires et commissions": { + "account_number": "6621" + }, + "Primes et gratifications": { + "account_number": "6622" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6623" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6624" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6625" + }, + "Suppl\u00e9ment familial": { + "account_number": "6626" + }, + "Avantages en nature": { + "account_number": "6627" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6628" + }, + "account_number": "662" + }, + "Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "Indemnit\u00e9s de logement": { + "account_number": "6631" + }, + "Indemnit\u00e9s de repr\u00e9sentation": { + "account_number": "6632" + }, + "Indemnit\u00e9s d\u2019expatriation": { + "account_number": "6633" + }, + "Indemnit\u00e9s de transport": { + "account_number": "6634" + }, + "Autres indemnit\u00e9s et avantages divers": { + "account_number": "6638" + }, + "account_number": "663" + }, + "Charges sociales": { + "Charges sociales sur r\u00e9mun\u00e9ration du personnel national": { + "account_number": "6641" + }, + "Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": { + "account_number": "6642" + }, + "account_number": "664" + }, + "R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "R\u00e9mun\u00e9ration du travail de l\u2019exploitant": { + "account_number": "6661" + }, + "Charges sociales": { + "account_number": "6662" + }, + "account_number": "666" + }, + "R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "Personnel int\u00e9rimaire": { + "account_number": "6671" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6672" + }, + "account_number": "667" + }, + "Autres charges sociales": { + "Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": { + "account_number": "6681" + }, + "Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": { + "account_number": "6682" + }, + "Versements et contributions aux autres \u0153uvres sociales": { + "account_number": "6683" + }, + "M\u00e9decine du travail et pharmacie": { + "account_number": "6684" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "6685" + }, + "Assurances retraite et fonds de pension": { + "account_number": "6686" + }, + "Majorations et p\u00e9nalit\u00e9s sociales": { + "account_number": "6687" + }, + "Charges sociales diverses": { + "account_number": "6688" + }, + "account_number": "668" + }, + "account_number": "66" + }, + "Frais financiers et charges assimil\u00e9es": { + "Int\u00e9r\u00eats des emprunts": { + "Emprunts obligataires": { + "account_number": "6711" + }, + "Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "6712" + }, + "Dettes li\u00e9es \u00e0 des participations": { + "account_number": "6713" + }, + "Primes de remboursement des obligations": { + "account_number": "6714" + }, + "account_number": "671" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "6722" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "6723" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": { + "account_number": "6724" + }, + "Int\u00e9r\u00eats dans loyers des autres locations acquisition": { + "account_number": "6728" + }, + "account_number": "672" + }, + "Escomptes accord\u00e9s": { + "account_number": "673" + }, + "Autres int\u00e9r\u00eats": { + "Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": { + "account_number": "6741" + }, + "Comptes courants bloqu\u00e9s": { + "account_number": "6742" + }, + "Int\u00e9r\u00eats sur obligations cautionn\u00e9es": { + "account_number": "6743" + }, + "Int\u00e9r\u00eats sur dettes commerciales": { + "account_number": "6744" + }, + "Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": { + "account_number": "6745" + }, + "Int\u00e9r\u00eats sur dettes diverses": { + "account_number": "6748" + }, + "account_number": "674" + }, + "Escomptes des effets de commerce": { + "account_number": "675" + }, + "Pertes de change financi\u00e8res": { + "account_number": "676" + }, + "Pertes sur titres de placement": { + "Pertes sur cessions de titres de placement": { + "account_number": "6771" + }, + "Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "6772" + }, + "account_number": "677" + }, + "Pertes et charges sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "6781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "6782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "6784" + }, + "account_number": "678" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "6791" + }, + "Sur titres de placement": { + "account_number": "6795" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "6798" + }, + "account_number": "679" + }, + "account_number": "67" + }, + "Dotations aux amortissements": { + "Dotations aux amortissements d\u2019exploitation": { + "Dotations aux amortissements des immobilisations incorporelles": { + "account_number": "6812" + }, + "Dotations aux amortissements des immobilisations corporelles": { + "account_number": "6813" + }, + "account_number": "681" + }, + "account_number": "68" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6911" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "account_number": "6913" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": { + "account_number": "6914" + }, + "account_number": "691" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6971" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": { + "account_number": "6972" + }, + "account_number": "697" + }, + "account_number": "69" + }, + "root_type": "Expense", + "account_number": "6" + }, + "Comptes de produits des activit\u00e9s ordinaires": { + "Ventes": { + "Ventes de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "7011" + }, + "Hors R\u00e9gion": { + "account_number": "7012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7014" + }, + "Sur internet": { + "account_number": "7015" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7019" + }, + "account_number": "701" + }, + "Ventes de produits finis": { + "Dans la R\u00e9gion": { + "account_number": "7021" + }, + "Hors R\u00e9gion": { + "account_number": "7022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7024" + }, + "Sur internet": { + "account_number": "7025" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7029" + }, + "account_number": "702" + }, + "Ventes de produits interm\u00e9diaires": { + "Dans la R\u00e9gion": { + "account_number": "7031" + }, + "Hors R\u00e9gion": { + "account_number": "7032" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7033" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7034" + }, + "Sur internet": { + "account_number": "7035" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7039" + }, + "account_number": "703" + }, + "Ventes de produits r\u00e9siduels": { + "Dans la R\u00e9gion": { + "account_number": "7041" + }, + "Hors R\u00e9gion": { + "account_number": "7042" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7043" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7044" + }, + "Sur internet": { + "account_number": "7045" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7049" + }, + "account_number": "704" + }, + "Travaux factur\u00e9s": { + "Dans la R\u00e9gion": { + "account_number": "7051" + }, + "Hors R\u00e9gion": { + "account_number": "7052" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7053" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7054" + }, + "Sur internet": { + "account_number": "7055" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7059" + }, + "account_number": "705" + }, + "Services vendus": { + "Dans la R\u00e9gion": { + "account_number": "7061" + }, + "Hors R\u00e9gion": { + "account_number": "7062" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7063" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7064" + }, + "Sur internet": { + "account_number": "7065" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7069" + }, + "account_number": "706" + }, + "Produits accessoires": { + "Ports, emballages perdus et autres frais factur\u00e9s": { + "account_number": "7071" + }, + "Commissions et courtages": { + "account_number": "7072" + }, + "Locations": { + "account_number": "7073" + }, + "Bonis sur reprises et cessions d\u2019emballages": { + "account_number": "7074" + }, + "Mise \u00e0 disposition de personnel": { + "account_number": "7075" + }, + "Redevances pour brevets, logiciels, marques et droits similaires": { + "account_number": "7076" + }, + "Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": { + "account_number": "7077" + }, + "Autres produits accessoires": { + "account_number": "7078" + }, + "account_number": "707" + }, + "account_number": "70" + }, + "Subventions d\u2019exploitation": { + "Sur produits \u00e0 l\u2019exportation": { + "account_number": "711" + }, + "Sur produits \u00e0 l\u2019importation": { + "account_number": "712" + }, + "Sur produits de p\u00e9r\u00e9quation": { + "account_number": "713" + }, + "Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": { + "account_number": "714" + }, + "Autres subventions d\u2019exploitation": { + "Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": { + "account_number": "7181" + }, + "Vers\u00e9es par les organismes internationaux": { + "account_number": "7182" + }, + "Vers\u00e9es par des tiers": { + "account_number": "7183" + }, + "account_number": "718" + }, + "account_number": "71" + }, + "Production immobilis\u00e9e": { + "Immobilisations incorporelles": { + "account_number": "721" + }, + "Immobilisations corporelles": { + "Immobilisations corporelles (hors actifs biologiques)": { + "account_number": "7221" + }, + "Immobilisations corporelles (actifs biologiques)": { + "account_number": "7222" + }, + "account_number": "722" + }, + "Production auto-consomm\u00e9e": { + "account_number": "724" + }, + "Immobilisations financi\u00e8res": { + "account_number": "726" + }, + "account_number": "72" + }, + "Variations des stocks de biens et de services produits": { + "Variations des stocks de produits en cours": { + "Produits en cours": { + "account_number": "7341" + }, + "Travaux en cours": { + "account_number": "7342" + }, + "account_number": "734" + }, + "Variations des en-cours de services": { + "\u00c9tudes en cours": { + "account_number": "7351" + }, + "Prestations de services en cours": { + "account_number": "7352" + }, + "account_number": "735" + }, + "Variations des stocks de produits finis": { + "account_number": "736" + }, + "Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "account_number": "7371" + }, + "Produits r\u00e9siduels": { + "account_number": "7372" + }, + "account_number": "737" + }, + "account_number": "73" + }, + "Autres produits": { + "Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "account_number": "751" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "7521" + }, + "B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "7525" + }, + "account_number": "752" + }, + "Produits des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "7541" + }, + "Immobilisations corporelles": { + "account_number": "7542" + }, + "account_number": "754" + }, + "Gains de change sur cr\u00e9ances et dettes commerciales": { + "account_number": "756" + }, + "Produits divers": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "7581" + }, + "Indemnit\u00e9s d\u2019assurances re\u00e7ues": { + "account_number": "7582" + }, + "Autres produits divers": { + "account_number": "7588" + }, + "account_number": "758" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "7591" + }, + "Sur stocks": { + "account_number": "7593" + }, + "Sur cr\u00e9ances": { + "account_number": "7594" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "account_number": "7598" + }, + "account_number": "759" + }, + "account_number": "75" + }, + "Revenus financiers et produits assimil\u00e9s": { + "Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "Int\u00e9r\u00eats de pr\u00eats": { + "account_number": "7712" + }, + "Int\u00e9r\u00eats sur cr\u00e9ances diverses": { + "account_number": "7713" + }, + "account_number": "771" + }, + "Revenus de participations et autres titres immobilis\u00e9s": { + "Revenus des titres de participation": { + "account_number": "7721" + }, + "Revenus autres titres immobilis\u00e9s": { + "account_number": "7722" + }, + "account_number": "772" + }, + "Escomptes obtenus": { + "account_number": "773" + }, + "Revenus de placement": { + "Revenus des obligations": { + "account_number": "7745" + }, + "Revenus des titres de placement": { + "account_number": "7746" + }, + "account_number": "774" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "account_number": "775" + }, + "Gains de change financiers": { + "account_number": "776" + }, + "Gains sur cessions de titres de placement": { + "account_number": "777" + }, + "Gains sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "7781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "7782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "7784" + }, + "account_number": "778" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "7791" + }, + "Sur titres de placement": { + "account_number": "7795" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "7798" + }, + "account_number": "779" + }, + "account_number": "77" + }, + "Transferts de charges": { + "Transferts de charges d\u2019exploitation": { + "account_number": "781" + }, + "Transferts de charges financi\u00e8res": { + "account_number": "787" + }, + "account_number": "78" + }, + "Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Pour risques et charges": { + "account_number": "7911" + }, + "Des immobilisations incorporelles": { + "account_number": "7913" + }, + "Des immobilisations corporelles": { + "account_number": "7914" + }, + "account_number": "791" + }, + "Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "Pour risques et charges": { + "account_number": "7971" + }, + "Des immobilisations financi\u00e8res": { + "account_number": "7972" + }, + "account_number": "797" + }, + "Reprises d\u2019amortissements": { + "account_number": "798" + }, + "Reprises de subventions d\u2019investissement": { + "account_number": "799" + }, + "account_number": "79" + }, + "root_type": "Income", + "account_number": "7" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "Valeurs comptables des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "811" + }, + "Immobilisations corporelles": { + "account_number": "812" + }, + "Immobilisations financi\u00e8res": { + "account_number": "816" + }, + "account_number": "81" + }, + "Charges hors activit\u00e9s ordinaires": { + "Charges HAO constat\u00e9es": { + "account_number": "831" + }, + "Charges li\u00e9es aux op\u00e9rations de restructuration": { + "account_number": "833" + }, + "Pertes sur cr\u00e9ances HAO": { + "account_number": "834" + }, + "Dons et lib\u00e9ralit\u00e9s accord\u00e9s": { + "account_number": "835" + }, + "Abandons de cr\u00e9ances consentis": { + "account_number": "836" + }, + "Charges li\u00e9es aux op\u00e9rations de liquidation": { + "account_number": "837" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "839" + }, + "account_number": "83" + }, + "Dotations hors activit\u00e9s ordinaires": { + "Dotations aux provisions r\u00e9glement\u00e9es": { + "account_number": "851" + }, + "Dotations aux amortissements HAO": { + "account_number": "852" + }, + "Dotations aux d\u00e9pr\u00e9ciations HAO": { + "account_number": "853" + }, + "Dotations aux provisions pour risques et charges HAO": { + "account_number": "854" + }, + "Autres dotations HAO": { + "account_number": "858" + }, + "account_number": "85" + }, + "Participation des travailleurs": { + "Participation l\u00e9gale aux b\u00e9n\u00e9fices": { + "account_number": "871" + }, + "Participation contractuelle aux b\u00e9n\u00e9fices": { + "account_number": "874" + }, + "Autres participations": { + "account_number": "878" + }, + "account_number": "87" + }, + "Imp\u00f4ts sur le r\u00e9sultat": { + "Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": { + "account_number": "8911" + }, + "Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": { + "account_number": "8912" + }, + "Activit\u00e9s exerc\u00e9es hors R\u00e9gion": { + "account_number": "8913" + }, + "account_number": "891" + }, + "Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "account_number": "892" + }, + "Imp\u00f4t minimum forfaitaire IMF": { + "account_number": "895" + }, + "D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "D\u00e9gr\u00e8vements": { + "account_number": "8991" + }, + "Annulations pour pertes r\u00e9troactives": { + "account_number": "8994" + }, + "account_number": "899" + }, + "account_number": "89" + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "Produits des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "821" + }, + "Immobilisations corporelles": { + "account_number": "822" + }, + "Immobilisations financi\u00e8res": { + "account_number": "826" + }, + "account_number": "82" + }, + "Produits hors activit\u00e9s ordinaires": { + "Produits HAO constat\u00e9s": { + "account_number": "841" + }, + "Produits li\u00e9s aux op\u00e9rations de restructuration": { + "account_number": "843" + }, + "Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": { + "account_number": "844" + }, + "Dons et lib\u00e9ralit\u00e9s obtenus": { + "account_number": "845" + }, + "Abandons de cr\u00e9ances obtenus": { + "account_number": "846" + }, + "Produits li\u00e9s aux op\u00e9rations de liquidation": { + "account_number": "847" + }, + "Transferts de charges HAO": { + "account_number": "848" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "849" + }, + "account_number": "84" + }, + "Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "Reprises de provisions r\u00e9glement\u00e9es": { + "account_number": "861" + }, + "Reprises d\u2019amortissements HAO": { + "account_number": "862" + }, + "Reprises de d\u00e9pr\u00e9ciations HAO": { + "account_number": "863" + }, + "Reprises de provisions pour risques et charges HAO": { + "account_number": "864" + }, + "Autres reprises HAO": { + "account_number": "868" + }, + "account_number": "86" + }, + "Subventions d\u2019\u00e9quilibre": { + "\u00c9tat": { + "account_number": "881" + }, + "Collectivit\u00e9s publiques": { + "account_number": "884" + }, + "Groupe": { + "account_number": "886" + }, + "Autres": { + "account_number": "888" + }, + "account_number": "88" + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/ch_240812_schulkontenrahmen_veb_de.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/ch_240812_schulkontenrahmen_veb_de.json new file mode 100644 index 00000000000..dff27a213c1 --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/ch_240812_schulkontenrahmen_veb_de.json @@ -0,0 +1,532 @@ +{ + "country_code": "ch", + "name": "240812 Schulkontenrahmen VEB - DE", + "tree": { + "Aktiven": { + "account_number": "1", + "is_group": 1, + "root_type": "Asset", + "Umlaufvermögen": { + "account_number": "10", + "is_group": 1, + "Flüssige Mittel": { + "account_number": "100", + "is_group": 1, + "Kasse": { + "account_number": "1000", + "account_type": "Cash" + }, + "Bankguthaben": { + "account_number": "1020", + "account_type": "Bank" + } + }, + "Kurzfristig gehaltene Aktiven mit Börsenkurs": { + "account_number": "106", + "is_group": 1, + "Wertschriften": { + "account_number": "1060" + }, + "Wertberichtigungen Wertschriften": { + "account_number": "1069" + } + }, + "Forderungen aus Lieferungen und Leistungen": { + "account_number": "110", + "is_group": 1, + "Forderungen aus Lieferungen und Leistungen (Debitoren)": { + "account_number": "1100" + }, + "Delkredere": { + "account_number": "1109" + } + }, + "Übrige kurzfristige Forderungen": { + "account_number": "114", + "is_group": 1, + "Vorschüsse und Darlehen": { + "account_number": "1140" + }, + "Wertberichtigungen Vorschüsse und Darlehen": { + "account_number": "1149" + }, + "Vorsteuer MWST Material, Waren, Dienstleistungen, Energie": { + "account_number": "1170" + }, + "Vorsteuer MWST Investitionen, übriger Betriebsaufwand": { + "account_number": "1171" + }, + "Verrechnungssteuer": { + "account_number": "1176" + }, + "Forderungen gegenüber Sozialversicherungen und Vorsorgeeinrichtungen": { + "account_number": "1180" + }, + "Quellensteuer": { + "account_number": "1189" + }, + "Sonstige kurzfristige Forderungen": { + "account_number": "1190" + }, + "Wertberichtigungen sonstige kurzfristige Forderungen": { + "account_number": "1199" + } + }, + "Vorräte und nicht fakturierte Dienstleistungen": { + "account_number": "120", + "is_group": 1, + "Handelswaren": { + "account_number": "1200" + }, + "Rohstoffe": { + "account_number": "1210" + }, + "Werkstoffe": { + "account_number": "1220" + }, + "Hilfs- und Verbrauchsmaterial": { + "account_number": "1230" + }, + "Handelswaren in Konsignation": { + "account_number": "1250" + }, + "Fertige Erzeugnisse": { + "account_number": "1260" + }, + "Unfertige Erzeugnisse": { + "account_number": "1270" + }, + "Nicht fakturierte Dienstleistungen": { + "account_number": "1280" + } + }, + "Aktive Rechnungsabgrenzungen": { + "account_number": "130", + "is_group": 1, + "Bezahlter Aufwand des Folgejahres": { + "account_number": "1300" + }, + "Noch nicht erhaltener Ertrag": { + "account_number": "1301" + } + } + }, + "Anlagevermögen": { + "account_number": "14", + "is_group": 1, + "Finanzanlagen": { + "account_number": "140", + "is_group": 1, + "Wertschriften": { + "account_number": "1400" + }, + "Wertberichtigungen Wertschriften": { + "account_number": "1409" + }, + "Darlehen": { + "account_number": "1440" + }, + "Hypotheken": { + "account_number": "1441" + }, + "Wertberichtigungen langfristige Forderungen": { + "account_number": "1449" + } + }, + "Beteiligungen": { + "account_number": "148", + "is_group": 1, + "Beteiligungen": { + "account_number": "1480" + }, + "Wertberichtigungen Beteiligungen": { + "account_number": "1489" + } + }, + "Mobile Sachanlagen": { + "account_number": "150", + "is_group": 1, + "Maschinen und Apparate": { + "account_number": "1500" + }, + "Wertberichtigungen Maschinen und Apparate": { + "account_number": "1509" + }, + "Mobiliar und Einrichtungen": { + "account_number": "1510" + }, + "Wertberichtigungen Mobiliar und Einrichtungen": { + "account_number": "1519" + }, + "Büromaschinen, Informatik, Kommunikationstechnologie": { + "account_number": "1520" + }, + "Wertberichtigungen Büromaschinen, Informatik, Kommunikationstechnologie": { + "account_number": "1529" + }, + "Fahrzeuge": { + "account_number": "1530" + }, + "Wertberichtigungen Fahrzeuge": { + "account_number": "1539" + }, + "Werkzeuge und Geräte": { + "account_number": "1540" + }, + "Wertberichtigungen Werkzeuge und Geräte": { + "account_number": "1549" + } + }, + "Immobile Sachanlagen": { + "account_number": "160", + "is_group": 1, + "Geschäftsliegenschaften": { + "account_number": "1600" + }, + "Wertberichtigungen Geschäftsliegenschaften": { + "account_number": "1609" + } + }, + "Immaterielle Werte": { + "account_number": "170", + "is_group": 1, + "Patente, Know-how, Lizenzen, Rechte, Entwicklungen": { + "account_number": "1700" + }, + "Wertberichtigungen Patente, Know-how, Lizenzen, Rechte, Entwicklungen": { + "account_number": "1709" + }, + "Goodwill": { + "account_number": "1770" + }, + "Wertberichtigungen Goodwill": { + "account_number": "1779" + } + }, + "Nicht einbezahltes Grund-, Gesellschafter- oder Stiftungskapital": { + "account_number": "180", + "is_group": 1, + "Nicht einbezahltes Aktien-, Stamm-, Anteilschein- oder Stiftungskapital": { + "account_number": "1850" + } + } + } + }, + "Passiven": { + "account_number": "2", + "is_group": 1, + "root_type": "Liability", + "Kurzfristiges Fremdkapital": { + "account_number": "20", + "is_group": 1, + "Verbindlichkeiten aus Lieferungen und Leistungen": { + "account_number": "200", + "is_group": 1, + "Verbindlichkeiten aus Lieferungen und Leistungen (Kreditoren)": { + "account_number": "2000" + }, + "Erhaltene Anzahlungen": { + "account_number": "2030" + } + }, + "Kurzfristige verzinsliche Verbindlichkeiten": { + "account_number": "210", + "is_group": 1, + "Bankverbindlichkeiten": { + "account_number": "2100" + }, + "Verbindlichkeiten aus Finanzierungsleasing": { + "account_number": "2120" + }, + "Übrige verzinsliche Verbindlichkeiten": { + "account_number": "2140" + } + }, + "Übrige kurzfristige Verbindlichkeiten": { + "account_number": "220", + "is_group": 1, + "Geschuldete MWST (Umsatzsteuer)": { + "account_number": "2200" + }, + "Abrechnungskonto MWST": { + "account_number": "2201" + }, + "Verrechnungssteuer": { + "account_number": "2206" + }, + "Direkte Steuern": { + "account_number": "2208" + }, + "Sonstige kurzfristige Verbindlichkeiten": { + "account_number": "2210" + }, + "Beschlossene Ausschüttungen": { + "account_number": "2261" + }, + "Sozialversicherungen und Vorsorgeeinrichtungen": { + "account_number": "2270" + }, + "Quellensteuer": { + "account_number": "2279" + } + }, + "Passive Rechnungsabgrenzungen und kurzfristige Rückstellungen": { + "account_number": "230", + "is_group": 1, + "Noch nicht bezahlter Aufwand": { + "account_number": "2300" + }, + "Erhaltener Ertrag des Folgejahres": { + "account_number": "2301" + }, + "Kurzfristige Rückstellungen": { + "account_number": "2330" + } + } + }, + "Langfristiges Fremdkapital": { + "account_number": "24", + "is_group": 1, + "Langfristige verzinsliche Verbindlichkeiten": { + "account_number": "240", + "is_group": 1, + "Bankverbindlichkeiten": { + "account_number": "2400" + }, + "Verbindlichkeiten aus Finanzierungsleasing": { + "account_number": "2420" + }, + "Obligationenanleihen": { + "account_number": "2430" + }, + "Darlehen": { + "account_number": "2450" + }, + "Hypotheken": { + "account_number": "2451" + } + }, + "Übrige langfristige Verbindlichkeiten": { + "account_number": "250", + "is_group": 1, + "Übrige langfristige Verbindlichkeiten (unverzinslich)": { + "account_number": "2500" + } + }, + "Rückstellungen sowie vom Gesetz vorgesehene ähnliche Positionen": { + "account_number": "260", + "is_group": 1, + "Rückstellungen": { + "account_number": "2600" + } + } + }, + "Eigenkapital (juristische Personen)": { + "account_number": "28", + "is_group": 1, + "Grund-, Gesellschafter- oder Stiftungskapital": { + "account_number": "280", + "is_group": 1, + "Aktien-, Stamm-, Anteilschein- oder Stiftungskapital": { + "account_number": "2800" + } + }, + "Reserven und Jahresgewinn oder Jahresverlust": { + "account_number": "290", + "is_group": 1, + "Gesetzliche Kapitalreserve": { + "account_number": "2900" + }, + "Reserve für eigene Kapitalanteile": { + "account_number": "2930" + }, + "Aufwertungsreserve": { + "account_number": "2940" + }, + "Gesetzliche Gewinnreserve": { + "account_number": "2950" + }, + "Freiwillige Gewinnreserven": { + "account_number": "2960" + }, + "Gewinnvortrag oder Verlustvortrag": { + "account_number": "2970" + }, + "Jahresgewinn oder Jahresverlust": { + "account_number": "2979" + }, + "Eigene Aktien, Stammanteile oder Anteilscheine (Minusposten)": { + "account_number": "2980" + } + } + } + }, + "Betrieblicher Ertrag aus Lieferungen und Leistungen": { + "account_number": "3", + "is_group": 1, + "root_type": "Income", + "Produktionserlöse": { + "account_number": "3000" + }, + "Handelserlöse": { + "account_number": "3200" + }, + "Dienstleistungserlöse": { + "account_number": "3400" + }, + "Übrige Erlöse aus Lieferungen und Leistungen": { + "account_number": "3600" + }, + "Eigenleistungen": { + "account_number": "3700" + }, + "Eigenverbrauch": { + "account_number": "3710" + }, + "Erlösminderungen": { + "account_number": "3800" + }, + "Verluste Forderungen (Debitoren), Veränderung Delkredere": { + "account_number": "3805" + }, + "Bestandesänderungen unfertige Erzeugnisse": { + "account_number": "3900" + }, + "Bestandesänderungen fertige Erzeugnisse": { + "account_number": "3901" + }, + "Bestandesänderungen nicht fakturierte Dienstleistungen": { + "account_number": "3940" + } + }, + "Aufwand für Material, Handelswaren, Dienstleistungen und Energie": { + "account_number": "4", + "is_group": 1, + "root_type": "Expense", + "Materialaufwand Produktion": { + "account_number": "4000" + }, + "Handelswarenaufwand": { + "account_number": "4200" + }, + "Aufwand für bezogene Dienstleistungen": { + "account_number": "4400" + }, + "Energieaufwand zur Leistungserstellung": { + "account_number": "4500" + }, + "Aufwandminderungen": { + "account_number": "4900" + } + }, + "Personalaufwand": { + "account_number": "5", + "is_group": 1, + "root_type": "Expense", + "Lohnaufwand": { + "account_number": "5000" + }, + "Sozialversicherungsaufwand": { + "account_number": "5700" + }, + "Übriger Personalaufwand": { + "account_number": "5800" + }, + "Leistungen Dritter": { + "account_number": "5900" + } + }, + "Übriger betrieblicher Aufwand, Abschreibungen und Wertberichtigungen sowie Finanzergebnis": { + "account_number": "6", + "is_group": 1, + "root_type": "Expense", + "Raumaufwand": { + "account_number": "6000" + }, + "Unterhalt, Reparaturen, Ersatz mobile Sachanlagen": { + "account_number": "6100" + }, + "Leasingaufwand mobile Sachanlagen": { + "account_number": "6105" + }, + "Fahrzeug- und Transportaufwand": { + "account_number": "6200" + }, + "Fahrzeugleasing und -mieten": { + "account_number": "6260" + }, + "Sachversicherungen, Abgaben, Gebühren, Bewilligungen": { + "account_number": "6300" + }, + "Energie- und Entsorgungsaufwand": { + "account_number": "6400" + }, + "Verwaltungsaufwand": { + "account_number": "6500" + }, + "Informatikaufwand inkl. Leasing": { + "account_number": "6570" + }, + "Werbeaufwand": { + "account_number": "6600" + }, + "Sonstiger betrieblicher Aufwand": { + "account_number": "6700" + }, + "Abschreibungen und Wertberichtigungen auf Positionen des Anlagevermögens": { + "account_number": "6800" + }, + "Finanzaufwand": { + "account_number": "6900" + }, + "Finanzertrag": { + "account_number": "6950" + } + }, + "Betrieblicher Nebenerfolg": { + "account_number": "7", + "is_group": 1, + "root_type": "Income", + "Ertrag Nebenbetrieb": { + "account_number": "7000" + }, + "Aufwand Nebenbetrieb": { + "account_number": "7010" + }, + "Ertrag betriebliche Liegenschaft": { + "account_number": "7500" + }, + "Aufwand betriebliche Liegenschaft": { + "account_number": "7510" + } + }, + "Betriebsfremder, ausserordentlicher, einmaliger oder periodenfremder Aufwand und Ertrag": { + "account_number": "8", + "is_group": 1, + "root_type": "Expense", + "Betriebsfremder Aufwand": { + "account_number": "8000" + }, + "Betriebsfremder Ertrag": { + "account_number": "8100" + }, + "Ausserordentlicher, einmaliger oder periodenfremder Aufwand": { + "account_number": "8500" + }, + "Ausserordentlicher, einmaliger oder periodenfremder Ertrag": { + "account_number": "8510" + }, + "Direkte Steuern": { + "account_number": "8900" + } + }, + "Abschluss": { + "account_number": "9", + "is_group": 1, + "root_type": "Equity", + "Jahresgewinn oder Jahresverlust": { + "account_number": "9200" + } + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/ci_plan_comptable.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/ci_plan_comptable.json new file mode 100644 index 00000000000..cacde3de336 --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/ci_plan_comptable.json @@ -0,0 +1,1919 @@ +{ + "country_code": "ci", + "name": "Syscohada - Plan Comptable", + "tree": { + "1-Comptes de ressources durables": { + "10-Capital": { + "101-Capital social": { + "1011-Capital souscrit, non appel\u00e9": {}, + "1012-Capital souscrit, appel\u00e9, non vers\u00e9": {}, + "1013-Capital souscrit, appel\u00e9, vers\u00e9, non amorti": {}, + "1014-Capital souscrit, appel\u00e9, vers\u00e9, amorti": {}, + "1018-Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": {} + }, + "102-Capital par dotation": { + "1021-Dotation initiale": {}, + "1022-Dotations compl\u00e9mentaires": {}, + "1028-Autres dotations": {} + }, + "103-Capital personnel": {}, + "104-Compte de l\u2019exploitant": { + "1041-Apports temporaires": {}, + "1042-Op\u00e9rations courantes": {}, + "1043-R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": {}, + "1047-Pr\u00e9l\u00e8vements d\u2019autoconsommation": {}, + "1048-Autres pr\u00e9l\u00e8vements": {} + }, + "105-Primes li\u00e9es au capital social": { + "1051-Primes d\u2019\u00e9mission": {}, + "1052-Primes d\u2019apport": {}, + "1053-Primes de fusion": {}, + "1054-Primes de conversion": {}, + "1058-Autres primes": {} + }, + "106-\u00c9carts de r\u00e9\u00e9valuation": { + "1061-\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": {}, + "1062-\u00c9carts de r\u00e9\u00e9valuation libre": {} + }, + "109-Apporteurs, capital souscrit, non appel\u00e9": {} + }, + "11-R\u00e9serves": { + "111-R\u00e9serve l\u00e9gale": {}, + "112-R\u00e9serves statutaires ou contractuelles": {}, + "113-R\u00e9serves r\u00e9glement\u00e9es": { + "1131-R\u00e9serves de plus-values nettes \u00e0 long terme": {}, + "1132-R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {}, + "1133-R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": {}, + "1134-R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": {}, + "1135-Autres r\u00e9serves r\u00e9glement\u00e9es": {} + }, + "118-Autres r\u00e9serves": { + "1181-R\u00e9serves facultatives": {}, + "1188-R\u00e9serves diverses": {} + } + }, + "12-Report \u00e0 nouveau": { + "121-Report \u00e0 nouveau cr\u00e9diteur": {}, + "129-Report \u00e0 nouveau d\u00e9biteur": { + "1291-Perte nette \u00e0 reporter": {}, + "1292-Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": {} + } + }, + "13-R\u00e9sultat net de l\u2019exercice": { + "130-R\u00e9sultat en instance d\u2019affectation": { + "1301-R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": {}, + "1309-R\u00e9sultat en instance d\u2019affectation : perte": {} + }, + "131-R\u00e9sultat net : b\u00e9n\u00e9fice": {}, + "132-Marge commerciale (MC)": {}, + "133-Valeur ajout\u00e9e (VA)": {}, + "134-Exc\u00e9dent brut d\u2019exploitation (EBE)": {}, + "135-R\u00e9sultat d\u2019exploitation (RE)": {}, + "136-R\u00e9sultat financier (RF)": {}, + "137-R\u00e9sultat des activit\u00e9s ordinaires (RAO)": {}, + "138-R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "1381-R\u00e9sultat de fusion": {}, + "1382-R\u00e9sultat d\u2019apport partiel d\u2019actif": {}, + "1383-R\u00e9sultat de scission": {}, + "1384-R\u00e9sultat de liquidation": {} + }, + "139-R\u00e9sultat net : perte": {} + }, + "14-Subventions d\u2019investissement": { + "141-Subventions d\u2019\u00e9quipement": { + "1411-\u00c9tat": {}, + "1412-R\u00e9gions": {}, + "1413-D\u00e9partements": {}, + "1414-Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": {}, + "1415-Entit\u00e9s publiques ou mixtes": {}, + "1416-Entit\u00e9s et organismes priv\u00e9s": {}, + "1417-Organismes internationaux": {}, + "1418-Autres": {} + }, + "148-Autres subventions d\u2019investissement": {} + }, + "15-Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "151-Amortissements d\u00e9rogatoires": {}, + "152-Plus-values de cession \u00e0 r\u00e9investir": {}, + "153-Fonds r\u00e9glement\u00e9s": { + "1531-Fonds National": {}, + "1532-Pr\u00e9l\u00e8vement pour le Budget": {} + }, + "154-Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": {}, + "155-Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "1551-Reconstitution des gisements miniers et p\u00e9troliers": {} + }, + "156-Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "1561-Hausse de prix": {}, + "1562-Fluctuation des cours": {} + }, + "157-Provisions pour investissement": {}, + "158-Autres provisions et fonds r\u00e9glement\u00e9s": {} + }, + "16-Emprunts et dettes assimil\u00e9es": { + "161-Emprunts obligataires": { + "1611-Emprunts obligataires ordinaires": {}, + "1612-Emprunts obligataires convertibles en actions": {}, + "1613-Emprunts obligataires remboursables en actions": {}, + "1618-Autres emprunts obligataires": {} + }, + "162-Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "163-Avances re\u00e7ues de l\u2019\u00c9tat": {}, + "164-Avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "165-D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "1651-D\u00e9p\u00f4ts": {}, + "1652-Cautionnements": {} + }, + "166-Int\u00e9r\u00eats courus": { + "1661-Sur emprunts obligataires": {}, + "1662-Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "1663-Sur avances re\u00e7ues de l\u2019\u00c9tat": {}, + "1664-Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "1665-Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": {}, + "1667-Sur avances assorties de conditions particuli\u00e8res": {}, + "1668-Sur autres emprunts et dettes": {} + }, + "167-Avances assorties de conditions particuli\u00e8res": { + "1671-Avances bloqu\u00e9es pour augmentation du capital": {}, + "1672-Avances conditionn\u00e9es par l\u2019\u00c9tat": {}, + "1673-Avances conditionn\u00e9es par les autres organismes africains": {}, + "1674-Avances conditionn\u00e9es par les organismes internationaux": {} + }, + "168-Autres emprunts et dettes": { + "1681-Rentes viag\u00e8res capitalis\u00e9es": {}, + "1682-Billets de fonds": {}, + "1683-Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": {}, + "1684-Emprunts participatifs": {}, + "1685-Participation des travailleurs aux b\u00e9n\u00e9fices": {}, + "1686-Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": {} + } + }, + "17-Dettes de location acquisition": { + "172-Dettes de location acquisition / cr\u00e9dit bail immobilier": {}, + "173-Dettes de location acquisition / cr\u00e9dit bail mobilier": {}, + "174-Dettes de location acquisition / location de vente": {}, + "176-Int\u00e9r\u00eats courus": { + "1762-Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": {}, + "1763-Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": {}, + "1764-Sur dettes de location acquisition / location-vente": {}, + "1768-Sur autres dettes de location acquisition": {} + }, + "178-Autres dettes de location acquisition": {} + }, + "18-Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "181-Dettes li\u00e9es \u00e0 des participations": { + "1811-Dettes li\u00e9es \u00e0 des participations (groupe)": {}, + "1812-Dettes li\u00e9es \u00e0 des participations (hors groupe)": {} + }, + "182-Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "183-Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": {}, + "184-Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "185-Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "186-Comptes de liaison charges": {}, + "187-Comptes de liaison produits": {}, + "188-Comptes de liaison des soci\u00e9t\u00e9s en participation": {} + }, + "19-Provisions pour risques et charges": { + "191-Provisions pour litiges": {}, + "192-Provisions pour garanties donn\u00e9es aux clients": {}, + "193-Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": {}, + "194-Provisions pour pertes de change": {}, + "195-Provisions pour imp\u00f4ts": {}, + "196-Provisions pour pensions et obligations similaires": { + "1961-Provisions pour pensions et obligations similaires engagement de retraite": {}, + "1962-Actif du r\u00e9gime de retraite": {} + }, + "197-Provisions pour restructuration": {}, + "198-Autres provisions pour risques et charges": { + "1981-Provisions pour amendes et p\u00e9nalit\u00e9s": {}, + "1983-Provisions pour propre assureur": {}, + "1984-Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "1985-Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": {}, + "1988-Provisions pour divers risques et charges": {} + } + }, + "root_type": "Equity" + }, + "2-Comptes d\u2019actif immobilis\u00e9": { + "21-Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "211-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "212-Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "2121-Brevets": { + "account_type": "Fixed Asset" + }, + "2122-Licences": { + "account_type": "Fixed Asset" + }, + "2123-Concessions de service public": { + "account_type": "Fixed Asset" + }, + "2128-Autres concessions et droits similaires": { + "account_type": "Fixed Asset" + } + }, + "213-Logiciels et sites internet": { + "account_type": "Fixed Asset", + "2131-Logiciels": { + "account_type": "Fixed Asset" + }, + "2132-Sites internet": { + "account_type": "Fixed Asset" + } + }, + "214-Marques": { + "account_type": "Fixed Asset" + }, + "215-Fonds commercial": { + "account_type": "Fixed Asset" + }, + "216-Droit au bail": { + "account_type": "Fixed Asset" + }, + "217-Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset" + }, + "218-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "2181-Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset" + }, + "2182-Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset" + }, + "2183-Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset" + }, + "2184-Co\u00fbts des franchises": { + "account_type": "Fixed Asset" + }, + "2188-Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset" + } + }, + "219-Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "2191-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "2193-Logiciels et internet": { + "account_type": "Fixed Asset" + }, + "2198-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset" + } + } + }, + "22-Terrains": { + "account_type": "Fixed Asset", + "221-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "2211-Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset" + }, + "2212-Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset" + }, + "2218-Autres terrains": { + "account_type": "Fixed Asset" + } + }, + "222-Terrains nus": { + "account_type": "Fixed Asset", + "2221-Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset" + }, + "2228-Autres terrains nus": { + "account_type": "Fixed Asset" + } + }, + "223-Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "2231-Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset" + }, + "2232-Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset" + }, + "2234-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset" + }, + "2235-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset" + }, + "2238-Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset" + } + }, + "224-Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "2241-Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset" + }, + "2245-Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset" + }, + "2248-Autres travaux": { + "account_type": "Fixed Asset" + } + }, + "225-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "2251-Carri\u00e8res": { + "account_type": "Fixed Asset" + } + }, + "226-Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "2261-Parkings": { + "account_type": "Fixed Asset" + } + }, + "227-Terrains mis en concession": { + "account_type": "Fixed Asset" + }, + "228-Autres terrains": { + "account_type": "Fixed Asset", + "2281-Terrains immeubles de placement": { + "account_type": "Fixed Asset" + }, + "2285-Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset" + }, + "2286-Terrains de location acquisition": { + "account_type": "Fixed Asset" + }, + "2288-Divers terrains": { + "account_type": "Fixed Asset" + } + }, + "229-Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "2291-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset" + }, + "2292-Terrains nus": { + "account_type": "Fixed Asset" + }, + "2295-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset" + }, + "2298-Autres terrains": { + "account_type": "Fixed Asset" + } + } + }, + "23-B\u00e2timents, installations techniques et agencements": { + "231-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "2311-B\u00e2timents industriels": {}, + "2312-B\u00e2timents agricoles": {}, + "2313-B\u00e2timents administratifs et commerciaux": {}, + "2314-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2315-B\u00e2timents immeubles de placement": {}, + "2316-B\u00e2timents de location acquisition": {} + }, + "232-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "2321-B\u00e2timents industriels": {}, + "2322-B\u00e2timents agricoles": {}, + "2323-B\u00e2timents administratifs et commerciaux": {}, + "2324-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2325-B\u00e2timents immeubles de placement": {}, + "2326-B\u00e2timents de location acquisition": {} + }, + "233-Ouvrages d\u2019infrastructure": { + "2331-Voies de terre": {}, + "2332-Voies de fer": {}, + "2333-Voies d\u2019eau": {}, + "2334-Barrages, Digues": {}, + "2335-Pistes d\u2019a\u00e9rodrome": {}, + "2338-Autres ouvrages d\u2019infrastructures": {} + }, + "234-Am\u00e9nagements, agencements et installations techniques": { + "2341-Installations complexes sp\u00e9cialis\u00e9es sur sol propre": {}, + "2342-Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": {}, + "2343-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": {}, + "2344-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": {}, + "2345-Am\u00e9nagements et agencements des b\u00e2timents": {} + }, + "235-Am\u00e9nagements de bureaux": { + "2351-Installations g\u00e9n\u00e9rales": {}, + "2358-Autres am\u00e9nagements de bureaux": {} + }, + "237-B\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "238-Autres installations et agencements": {}, + "239-B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "2391-B\u00e2timents en cours": {}, + "2392-Installations en cours": {}, + "2393-Ouvrages d\u2019infrastructure en cours": {}, + "2394-Am\u00e9nagements et agencements et installations techniques en cours": {}, + "2395-Am\u00e9nagements de bureaux en cours": {}, + "2398-Autres installations et agencements en cours": {} + } + }, + "24-Mat\u00e9riel, mobilier et actifs biologiques": { + "241-Mat\u00e9riel et outillage industriel et commercial": { + "2411-Mat\u00e9riel industriel": {}, + "2412-Outillage industriel": {}, + "2413-Mat\u00e9riel commercial": {}, + "2414-Outillage commercial": {}, + "2416-Mat\u00e9riel & outillage industriel et commercial de location-acquisition": {} + }, + "242-Mat\u00e9riel et outillage agricole": { + "2421-Mat\u00e9riel agricole": {}, + "2422-Outillage agricole": {}, + "2426-Mat\u00e9riel & outillage agricole de location-acquisition": {} + }, + "243-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "244-Mat\u00e9riel et mobilier": { + "2441-Mat\u00e9riel de bureau": {}, + "2442-Mat\u00e9riel informatique": {}, + "2443-Mat\u00e9riel bureautique": {}, + "2444-Mobilier de bureau": {}, + "2445-Mat\u00e9riel et mobilier immeubles de placement": {}, + "2446-Mat\u00e9riel et mobilier de location acquisition": {}, + "2447-Mat\u00e9riel et mobilier des logements du personnel": {} + }, + "245-Mat\u00e9riel de transport": { + "2451-Mat\u00e9riel automobile": {}, + "2452-Mat\u00e9riel ferroviaire": {}, + "2453-Mat\u00e9riel fluvial, lagunaire": {}, + "2454-Mat\u00e9riel naval": {}, + "2455-Mat\u00e9riel a\u00e9rien": {}, + "2456-Mat\u00e9riel de transport de location-acquisition": {}, + "2457-Mat\u00e9riel hippomobile": {}, + "2458-Autres mat\u00e9riels de transport": {} + }, + "246-Actifs biologiques": { + "2461-Cheptel, animaux de trait": {}, + "2462-Cheptel, animaux reproducteurs": {}, + "2463-Animaux de garde": {}, + "2465-Plantations agricoles": {}, + "2468-Autres actifs biologiques": {} + }, + "247-Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "2471-Agencements et am\u00e9nagements du mat\u00e9riel": {}, + "2472-Agencements et am\u00e9nagements des actifs biologiques": {}, + "2478-Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": {} + }, + "248-Autres mat\u00e9riels et mobiliers": { + "2481-Collections et \u0153uvres d\u2019art": {}, + "2488-Divers mat\u00e9riels mobiliers": {} + }, + "249-Mat\u00e9riels et actifs biologiques en cours": { + "2491-Mat\u00e9riel et outillage industriel et commercial": {}, + "2492-Mat\u00e9riel et outillage agricole": {}, + "2493-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2494-Mat\u00e9riel et mobilier de bureau": {}, + "2495-Mat\u00e9riel de transport": {}, + "2496-Actifs biologiques": {}, + "2497-Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": {}, + "2498-Autres mat\u00e9riels et actifs biologiques en cours": {} + } + }, + "25-Avances et acomptes vers\u00e9s sur immobilisations": { + "251-Avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "252-Avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "26-Titres de participation": { + "261-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "262-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "263-Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "265-Participations dans des organismes professionnels": {}, + "266-Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {}, + "268-Autres titres de participation": {} + }, + "27-Autres immobilisations financi\u00e8res": { + "271-Pr\u00eats et cr\u00e9ances": { + "2711-Pr\u00eats participatifs": {}, + "2712-Pr\u00eats aux associ\u00e9s": {}, + "2713-Billets de fonds": {}, + "2714-Titres pr\u00eat\u00e9s": {}, + "2718-Autres pr\u00eats et cr\u00e9ances": {} + }, + "272-Pr\u00eats au personnel": { + "2721-Pr\u00eats immobiliers": {}, + "2722-Pr\u00eats mobiliers et d\u2019installation": {}, + "2728-Autres pr\u00eats au personnel": {} + }, + "273-Cr\u00e9ances sur l\u2019\u00c9tat": { + "2731-Retenues de garantie": {}, + "2733-Fonds r\u00e9glement\u00e9": {}, + "2734-Cr\u00e9ances sur le conc\u00e9dant": {}, + "2738-Autres cr\u00e9ances sur l\u2019\u00c9tat": {} + }, + "274-Titres immobilis\u00e9s": { + "2741-Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": {}, + "2742-Titres participatifs": {}, + "2743-Certificats d\u2019investissement": {}, + "2744-Parts de fonds commun de placement (FCP)": {}, + "2745-Obligations": {}, + "2746-Actions ou parts propres": {}, + "2748-Autres titres immobilis\u00e9s": {} + }, + "275-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "2751-D\u00e9p\u00f4ts pour loyers d\u2019avance": {}, + "2752-D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": {}, + "2753-D\u00e9p\u00f4ts pour l\u2019eau": {}, + "2754-D\u00e9p\u00f4ts pour le gaz": {}, + "2755-D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": {}, + "2756-Cautionnements sur march\u00e9s publics": {}, + "2757-Cautionnements sur autres op\u00e9rations": {}, + "2758-Autres d\u00e9p\u00f4ts et cautionnements": {} + }, + "276-Int\u00e9r\u00eats courus": { + "2761-Pr\u00eats et cr\u00e9ances non commerciales": {}, + "2762-Pr\u00eats au personnel": {}, + "2763-Cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2764-Titres immobilis\u00e9s": {}, + "2765-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2767-Cr\u00e9ances rattach\u00e9es \u00e0 des participations": {}, + "2768-Immobilisations financi\u00e8res diverses": {} + }, + "277-Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "2771-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": {}, + "2772-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": {}, + "2773-Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "2774-Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {} + }, + "278-Immobilisations financi\u00e8res diverses": { + "2781-Cr\u00e9ances diverses groupe": {}, + "2782-Cr\u00e9ances diverses hors groupe": {}, + "2784-Banques d\u00e9p\u00f4ts \u00e0 terme": {}, + "2785-Or et m\u00e9taux pr\u00e9cieux": {}, + "2788-Autres immobilisations financi\u00e8res": {} + } + }, + "28-Amortissements": { + "account_type": "Accumulated Depreciation", + "281-Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "2811-Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation" + }, + "2812-Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation" + }, + "2813-Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation" + }, + "2814-Amortissements des marques": { + "account_type": "Accumulated Depreciation" + }, + "2815-Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation" + }, + "2816-Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation" + }, + "2817-Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation" + }, + "2818-Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation" + } + }, + "282-Amortissements des terrains": { + "2824-Amortissements des travaux de mise en valeur des terrains": {} + }, + "283-Amortissements des b\u00e2timents, installations techniques et agencements": { + "2831-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2832-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2833-Amortissements des ouvrages d\u2019infrastructure": {}, + "2834-Amortissements des am\u00e9nagements, agencements et installations techniques": {}, + "2835-Amortissements des am\u00e9nagements de bureaux": {}, + "2837-Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2838-Amortissements des autres installations et agencements": {} + }, + "284-Amortissements du mat\u00e9riel": { + "2841-Amortissements du mat\u00e9riel et outillage industriel et commercial": {}, + "2842-Amortissements du mat\u00e9riel et outillage agricole": {}, + "2843-Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2844-Amortissements du mat\u00e9riel et mobilier": {}, + "2845-Amortissements du mat\u00e9riel de transport": {}, + "2846-Amortissements des actifs biologiques": {}, + "2847-Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2848-Amortissements des autres mat\u00e9riels": {} + } + }, + "29-D\u00e9pr\u00e9ciations des immobilisations": { + "291-D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "2911-D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": {}, + "2912-D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": {}, + "2913-D\u00e9pr\u00e9ciations des logiciels et sites internet": {}, + "2914-D\u00e9pr\u00e9ciations des marques": {}, + "2915-D\u00e9pr\u00e9ciations du fonds commercial": {}, + "2916-D\u00e9pr\u00e9ciations du droit au bail": {}, + "2917-D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": {}, + "2918-D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": {}, + "2919-D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": {} + }, + "292-D\u00e9pr\u00e9ciations des terrains": { + "2921-D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": {}, + "2922-D\u00e9pr\u00e9ciations des terrains nus": {}, + "2923-D\u00e9pr\u00e9ciations des terrains b\u00e2tis": {}, + "2924-D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": {}, + "2925-D\u00e9pr\u00e9ciations des terrains de gisement": {}, + "2926-D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": {}, + "2927-D\u00e9pr\u00e9ciations des terrains mis en concession": {}, + "2928-D\u00e9pr\u00e9ciations des autres terrains": {}, + "2929-D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": {} + }, + "293-D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "2931-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2932-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2933-D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": {}, + "2934-D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": {}, + "2935-D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": {}, + "2937-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2938-D\u00e9pr\u00e9ciations des autres installations et agencements": {}, + "2939-D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": {} + }, + "294-D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "2941-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": {}, + "2942-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": {}, + "2943-D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2944-D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": {}, + "2945-D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": {}, + "2946-D\u00e9pr\u00e9ciations des actifs biologiques": {}, + "2947-D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2948-D\u00e9pr\u00e9ciations des autres mat\u00e9riels": {}, + "2949-D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": {} + }, + "295-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "2951-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "2952-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "296-D\u00e9pr\u00e9ciations des titres de participation": { + "2961-D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "2962-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "2963-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "2965-D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": {}, + "2966-D\u00e9pr\u00e9ciations des parts dans des GIE": {}, + "2968-D\u00e9pr\u00e9ciations des autres titres de participation": {} + }, + "297-D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "2971-D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": {}, + "2972-D\u00e9pr\u00e9ciations des pr\u00eats au personnel": {}, + "2973-D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2974-D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": {}, + "2975-D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2977-D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": {}, + "2978-D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": {} + } + }, + "root_type": "Asset" + }, + "3-Comptes de Stocks": { + "31-Marchandises": { + "311-Marchandises A": { + "3111-Marchandises A1": {}, + "3112-Marchandises A2": {} + }, + "312-Marchandises B": { + "3121-Marchandises B1": {}, + "3122-Marchandises B2": {} + }, + "313-Actifs biologiques": { + "3131-Animaux": {}, + "3132-V\u00e9g\u00e9taux": {} + }, + "318-Marchandises hors activit\u00e9s ordinaires (HAO)": {} + }, + "32-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "321-Mati\u00e8res A": {}, + "322-Mati\u00e8res B": {}, + "323-Fournitures (A, B)": {} + }, + "33-Autres approvisionnements": { + "331-Mati\u00e8res consommables": {}, + "332-Fournitures d\u2019atelier et d\u2019usine": {}, + "333-Fournitures de magasin": {}, + "334-Fournitures de bureau": {}, + "335-Emballages": { + "3351-Emballages perdus": {}, + "3352-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "3353-Emballages \u00e0 usage mixte": {}, + "3358-Autres emballages": {} + }, + "338-Autres mati\u00e8res": {} + }, + "34-Produits en cours": { + "341-Produits en cours": { + "3411-Produits en cours P1": {}, + "3412-Produits en cours P2": {} + }, + "342-Travaux en cours": { + "3421-Travaux en cours T1": {}, + "3422-Travaux en cours T2": {} + }, + "343-Produits interm\u00e9diaires en cours": { + "3431-Produits interm\u00e9diaires A": {}, + "3432-Produits interm\u00e9diaires B": {} + }, + "344-Produits r\u00e9siduels en cours": { + "3441-Produits r\u00e9siduels A": {}, + "3442-Produits r\u00e9siduels B": {} + }, + "345-Actifs biologiques en cours": { + "3451-Animaux": {}, + "3452-V\u00e9g\u00e9taux": {} + } + }, + "35-Services en cours": { + "351-\u00c9tudes en cours": { + "3511-\u00c9tudes en cours E1": {}, + "3512-\u00c9tudes en cours E2": {} + }, + "352-Prestations de services en cours": { + "3521-Prestations de services S1": {}, + "3522-Prestations de services S2": {} + } + }, + "36-Produits finis": { + "361-Produits finis A": {}, + "362-Produits finis B": {}, + "363-Actifs biologiques": { + "3631-Animaux": {}, + "3632-V\u00e9g\u00e9taux": {}, + "3638-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "37-Produits interm\u00e9diaires et r\u00e9siduels": { + "371-Produits interm\u00e9diaires": { + "3711-Produits interm\u00e9diaires A": {}, + "3712-Produits interm\u00e9diaires B": {} + }, + "372-Produits r\u00e9siduels": { + "3721-D\u00e9chets": {}, + "3722-Rebuts": {}, + "3723-Mati\u00e8res de R\u00e9cup\u00e9ration": {} + }, + "373-Actifs biologiques": { + "3731-Animaux": {}, + "3732-V\u00e9g\u00e9taux": {}, + "3738-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "38-Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "381-Marchandises en cours de route": {}, + "382-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": {}, + "383-Autres approvisionnements en cours de route": {}, + "386-Produits finis en cours de route": {}, + "387-Stock en consignation ou en d\u00e9p\u00f4t": { + "3871-Stock en consignation": {}, + "3872-Stock en d\u00e9p\u00f4t": {} + }, + "388-Stock provenant d\u2019immobilisations mises hors service ou au rebut": {} + }, + "39-D\u00e9pr\u00e9ciations des stocks et encours de production": { + "391-D\u00e9pr\u00e9ciations des stocks de marchandises": {}, + "392-D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "393-D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": {}, + "394-D\u00e9pr\u00e9ciations des productions en cours": {}, + "395-D\u00e9pr\u00e9ciations des services en cours": {}, + "396-D\u00e9pr\u00e9ciations des stocks de produits finis": {}, + "397-D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": {}, + "398-D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": {} + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "409-Fournisseurs d\u00e9biteurs": { + "4091-Fournisseurs Avances et acomptes vers\u00e9s": {}, + "4092-Fournisseurs Groupe avances et acomptes vers\u00e9s": {}, + "4093-Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": {}, + "4094-Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": {}, + "4098-Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": {} + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "411-Clients": { + "4111-Clients": { + "account_type": "Receivable" + }, + "4112-Clients groupe": { + "account_type": "Receivable" + }, + "4114-Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable" + }, + "4115-Clients, organismes internationaux": { + "account_type": "Receivable" + }, + "4116-Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable" + }, + "4117-Client, retenues de garantie": { + "account_type": "Receivable" + }, + "4118-Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "412-Clients, effets \u00e0 recevoir en portefeuille": { + "4121-Clients, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4122-Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4124-\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4125-Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "413-Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "4131-Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable" + }, + "4132-Clients, effets impay\u00e9s": { + "account_type": "Receivable" + }, + "4133-Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable" + }, + "4138-Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "414-Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "4141-Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4142-Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable" + }, + "4146-Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4147-Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "415-Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable" + }, + "416-Cr\u00e9ances clients litigieuses ou douteuses": { + "4161-Cr\u00e9ances litigieuses": { + "account_type": "Receivable" + }, + "4162-Cr\u00e9ances douteuses": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "418-Clients, produits \u00e0 recevoir": { + "4181-Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable" + }, + "4186-Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "421-Personnel, avances et acomptes": { + "4211-Personnel, avances": {}, + "4212-Personnel, acomptes": {}, + "4213-Frais avanc\u00e9s et fournitures au personnel": {} + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "4311-Prestations familiales": {}, + "4312-Accidents de travail": {}, + "4313-Caisse de retraite obligatoire": {}, + "4314-Caisse de retraite facultative": {}, + "4318-Autres cotisations sociales": {} + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "4331-Mutuelle": {}, + "4332-Assurances retraite": {}, + "4333-Assurances et organismes de sant\u00e9": {} + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4387-Produits \u00e0 recevoir": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "443-\u00c9tat, TVA factur\u00e9e": { + "4431-TVA factur\u00e9e sur ventes": {}, + "4432-TVA factur\u00e9e sur prestations de services": {}, + "4433-TVA factur\u00e9e sur travaux": {}, + "4434-TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": {}, + "4435-TVA sur factures \u00e0 \u00e9tablir": {} + }, + "445-\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "4451-TVA r\u00e9cup\u00e9rable sur immobilisations": {}, + "4452-TVA r\u00e9cup\u00e9rable sur achats": {}, + "4453-TVA r\u00e9cup\u00e9rable sur transport": {}, + "4454-TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": {}, + "4455-TVA r\u00e9cup\u00e9rable sur factures non parvenues": {}, + "4456-TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": {} + }, + "448-\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "4486-Charges \u00e0 payer": {}, + "4487-Produits \u00e0 recevoir": {} + }, + "449-\u00c9tat, cr\u00e9ances et dettes diverses": { + "4491-\u00c9tat, obligations cautionn\u00e9es": {}, + "4492-\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": {}, + "4493-\u00c9tat, fonds de dotation \u00e0 recevoir": {}, + "4494-\u00c9tat, subventions investissement \u00e0 recevoir": {}, + "4495-\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": {}, + "4496-\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": {}, + "4497-\u00c9tat, avances sur subventions": {}, + "4499-\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": {} + } + }, + "45-Organismes internationaux (ACTIF)": { + "451-Op\u00e9rations avec les organismes africains": {}, + "452-Op\u00e9rations avec les autres organismes internationaux": {}, + "458-Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "4581-Organismes internationaux, fonds de dotation \u00e0 recevoir": {}, + "4582-Organismes internationaux, subventions \u00e0 recevoir": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "4613-Apporteurs, capital appel\u00e9, non vers\u00e9": {}, + "4614-Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": {}, + "4618-Apporteurs, titres \u00e0 \u00e9changer": {} + }, + "467-Apporteurs, restant d\u00fb sur capital appel\u00e9": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "4721-Cr\u00e9ances sur cessions de titres de placement": {}, + "4726-Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": {} + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "4731-Mandants": {}, + "4732-Mandataires": {}, + "4733-Commettants": {}, + "4734-Commissionnaires": {}, + "4739-\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "4747-Compte de r\u00e9partition p\u00e9riodique des produits": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "4751-Compte actif": { + "account_type": "Temporary" + } + }, + "476-Charges constat\u00e9es d\u2019avance": {}, + "478-\u00c9carts de conversion actif": { + "4781-Diminution des cr\u00e9ances d\u2019exploitation": {}, + "4782-Diminution des cr\u00e9ances financi\u00e8res": {}, + "4783-Augmentation des dettes d\u2019exploitation": {}, + "4784-Augmentation des dettes financi\u00e8res": {}, + "4786-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4788-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "485-Cr\u00e9ances sur cessions d\u2019immobilisations": { + "4851-En compte, immobilisations incorporelles": {}, + "4852-En compte, immobilisations corporelles": {}, + "4853-Effets \u00e0 recevoir, immobilisations incorporelles": {}, + "4854-Effets \u00e0 recevoir, immobilisations corporelles": {}, + "4855-Effets escompt\u00e9s non \u00e9chus": {}, + "4857-Retenues de garantie": {}, + "4858-Factures \u00e0 \u00e9tablir": {} + }, + "488-Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": {} + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "491-D\u00e9pr\u00e9ciations des comptes clients": { + "4911-Cr\u00e9ances litigieuses": {}, + "4912-Cr\u00e9ances douteuses": {} + }, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {}, + "496-D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "4962-Associ\u00e9s, comptes courants": {}, + "4963-Associ\u00e9s, op\u00e9rations faites en commun": {}, + "4966-Groupe, comptes courants": {} + }, + "497-D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": {}, + "498-D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "4985-Cr\u00e9ances sur cessions d\u2019immobilisations": {}, + "4986-Cr\u00e9ances sur cessions de titres de placement": {}, + "4988-Autres cr\u00e9ances HAO": {} + }, + "499-Provisions pour risques \u00e0 court terme": { + "4991-Sur op\u00e9rations d\u2019exploitation": {}, + "4997-Sur op\u00e9rations financi\u00e8res": {}, + "4998-Sur op\u00e9rations HAO": {} + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "401-Fournisseurs, dettes en compte": { + "4011-Fournisseurs": { + "account_type": "Payable" + }, + "4012-Fournisseurs groupe": { + "account_type": "Payable" + }, + "4013-Fournisseurs sous-traitants": { + "account_type": "Payable" + }, + "4016-Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable" + }, + "4017-Fournisseur, retenues de garantie": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "402-Fournisseurs, effets \u00e0 payer": { + "4021-Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable" + }, + "4022-Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable" + }, + "4023-Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "404-Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "4041-Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4042-Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable" + }, + "4046-Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4047-Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "408-Fournisseurs, factures non parvenues": { + "4081-Fournisseurs": { + "account_type": "Stock Received But Not Billed" + }, + "4082-Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed" + }, + "4083-Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed" + }, + "4086-Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "419-Clients cr\u00e9diteurs": { + "4191-Clients, avances et acomptes re\u00e7us": {}, + "4192-Clients groupe, avances et acomptes re\u00e7us": {}, + "4194-Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": {}, + "4198-Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": {} + } + }, + "42-Personnel (PASSIF)": { + "422-Personnel, r\u00e9mun\u00e9rations dues": {}, + "423-Personnel, oppositions, saisies-arr\u00eats": { + "4231-Personnel, oppositions": {}, + "4232-Personnel, saisies-arr\u00eats": {}, + "4233-Personnel, avis \u00e0 tiers d\u00e9tenteur": {} + }, + "424-Personnel, \u0153uvres sociales internes": { + "4241-Assistance m\u00e9dicale": {}, + "4242-Allocations familiales": {}, + "4245-Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": {}, + "4248-Autres \u0153uvres sociales internes": {} + }, + "425-Repr\u00e9sentants du personnel": { + "4251-D\u00e9l\u00e9gu\u00e9s du personnel": {}, + "4252-Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": {}, + "4258-Autres repr\u00e9sentants du personnel": {} + }, + "426-Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "4261-Participation aux b\u00e9n\u00e9fices": {}, + "4264-Participation au capital": {} + }, + "427-Personnel d\u00e9p\u00f4ts": {}, + "428-Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "4281-Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": {}, + "4286-Autres charges \u00e0 payer": {}, + "4287-Produits \u00e0 recevoir": {} + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4381-Charges sociales sur gratifications \u00e0 payer": {}, + "4382-Charges sociales sur cong\u00e9s \u00e0 payer": {}, + "4386-Autres charges \u00e0 payer": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "441-\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": {}, + "442-\u00c9tat, autres imp\u00f4ts et taxes": { + "4421-Imp\u00f4ts et taxes d\u2019\u00c9tat": {}, + "4422-Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": {}, + "4423-Imp\u00f4ts et taxes recouvrables sur des obligataires": {}, + "4424-Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": {}, + "4426-Droits de douane": {}, + "4428-Autres imp\u00f4ts et taxes": {} + }, + "444-\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "4441-\u00c9tat, TVA due": {}, + "4449-\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": {} + }, + "446-\u00c9tat, autres taxes sur le chiffre d\u2019affaires": {}, + "447-\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "4471-Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": {}, + "4472-Imp\u00f4ts sur salaires": {}, + "4473-Contribution nationale": {}, + "4474-Contribution nationale de solidarit\u00e9": {}, + "4478-Autres imp\u00f4ts et contributions": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "4611-Apporteurs, apports en nature": {}, + "4612-Apporteurs, apports en num\u00e9raire": {}, + "4615-Apporteurs, versements re\u00e7us sur augmentation de capital": {}, + "4616-Apporteurs, versements anticip\u00e9s": {}, + "4617-Apporteurs d\u00e9faillants": {}, + "4619-Apporteurs, capital \u00e0 rembourser": {} + }, + "462-Associ\u00e9s, comptes courants": { + "4621-Principal": {}, + "4626-Int\u00e9r\u00eats courus": {} + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "4631-Op\u00e9rations courantes": {}, + "4636-Int\u00e9r\u00eats courus": {} + }, + "465-Associ\u00e9s, dividendes \u00e0 payer": {}, + "466-Groupe, comptes courants": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "4711-D\u00e9biteurs divers": {}, + "4712-Cr\u00e9diteurs divers": {}, + "4713-Obligataires": {}, + "4715-R\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "4716-Compte d\u2019affacturage": {}, + "4717-D\u00e9biteurs divers retenues de garantie": {}, + "4718-Apport, compte de fusion et op\u00e9rations assimil\u00e9es": {}, + "4719-Bons de souscription d\u2019actions et d\u2019obligations": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "4746-Compte de r\u00e9partition p\u00e9riodique des charges": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "4752-Compte passif": {} + }, + "477-Produits constat\u00e9s d\u2019avance": {}, + "479-\u00c9carts de conversion passif": { + "4791-Augmentation des cr\u00e9ances d\u2019exploitation": {}, + "4792-Augmentation des cr\u00e9ances financi\u00e8res": {}, + "4793-Diminution des dettes d\u2019exploitation": {}, + "4794-Diminution des dettes financi\u00e8res": {}, + "4797-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4798-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "481-Fournisseurs d\u2019investissements": { + "4811-Immobilisations incorporelles": {}, + "4812-Immobilisations corporelles": {}, + "4813-Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": {}, + "4816-R\u00e9serve de propri\u00e9t\u00e9": {}, + "4817-Retenues de garantie": {}, + "4818-Factures non parvenues": {} + }, + "482-Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "4821-Immobilisations incorporelles": {}, + "4822-Immobilisations corporelles": {} + }, + "484-Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "4887-Produits": {} + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (PASSIF)": { + "490-D\u00e9pr\u00e9ciations des comptes fournisseurs": {}, + "492-D\u00e9pr\u00e9ciations des comptes personnel": {}, + "493-D\u00e9pr\u00e9ciations des comptes organismes sociaux": {}, + "494-D\u00e9pr\u00e9ciations des comptes \u00c9tat et collectivit\u00e9s publiques": {}, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {} + }, + "root_type": "Liability" + }, + "5-Comptes de tr\u00e9sorerie": { + "50-Titres de placement": { + "501-Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "5011-Titres du Tr\u00e9sor \u00e0 court terme": {}, + "5012-Titres d\u2019organismes financiers": {}, + "5013-Bons de caisse \u00e0 court terme": {}, + "5016-Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": {} + }, + "502-Actions": { + "5021-Actions ou parts propres": {}, + "5022-Actions cot\u00e9es": {}, + "5023-Actions non cot\u00e9es": {}, + "5024-Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": {}, + "5025-Autres actions": {}, + "5026-Frais d\u2019acquisition des actions": {} + }, + "503-Obligations": { + "5031-Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": {}, + "5032-Obligations cot\u00e9es": {}, + "5033-Obligations non cot\u00e9es": {}, + "5035-Autres obligations": {}, + "5036-Frais d\u2019acquisition des obligations": {} + }, + "504-Bons de souscription": { + "5042-Bons de souscription d\u2019actions": {}, + "5043-Bons de souscription d\u2019obligations": {} + }, + "505-Titres n\u00e9gociables hors r\u00e9gion": {}, + "506-Int\u00e9r\u00eats courus": { + "5061-Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": {}, + "5062-Actions": {}, + "5063-Obligations": {} + }, + "508-Autres titres de placement et cr\u00e9ances assimil\u00e9es": {} + }, + "51-Valeurs \u00e0 encaisser": { + "511-Effets \u00e0 encaisser": {}, + "512-Effets \u00e0 l\u2019encaissement": {}, + "513-Ch\u00e8ques \u00e0 encaisser": {}, + "514-Ch\u00e8ques \u00e0 l\u2019encaissement": {}, + "515-Cartes de cr\u00e9dit \u00e0 encaisser": {}, + "518-Autres valeurs \u00e0 l\u2019encaissement": { + "5181-Warrants": {}, + "5182-Billets de fonds": {}, + "5185-Ch\u00e8ques de voyage": {}, + "5186-Coupons \u00e9chus": {}, + "5187-Int\u00e9r\u00eats \u00e9chus des obligations": {} + } + }, + "52-Banques": { + "521-Banques locales": { + "5211-Banques en monnaie nationale": { + "account_type": "Bank" + }, + "5215-Banques en devises": { + "account_type": "Bank" + }, + "account_type": "Bank" + }, + "522-Banques autres \u00c9tats r\u00e9gion": {}, + "523-Banques autres \u00c9tats zone mon\u00e9taire": {}, + "524-Banques hors zone mon\u00e9taire": {}, + "525-Banques d\u00e9p\u00f4t \u00e0 terme": {}, + "526-Banques, int\u00e9r\u00eats courus": { + "5261-Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": {}, + "5267-Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": {} + } + }, + "53-\u00c9tablissements financiers et assimil\u00e9s": { + "531-Ch\u00e8ques postaux": {}, + "532-Tr\u00e9sor": {}, + "533-Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": {}, + "536-\u00c9tablissements financiers, int\u00e9r\u00eats courus": {}, + "538-Autres organismes financiers": {} + }, + "54-Instruments de tr\u00e9sorerie": { + "541-Options de taux d\u2019int\u00e9r\u00eat": {}, + "542-Options de taux de change": {}, + "543-Options de taux boursiers": {}, + "544-Instruments de march\u00e9s \u00e0 terme": {}, + "545-Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": {} + }, + "55-Instruments de monnaie \u00e9lectronique": { + "551-Monnaie \u00e9lectronique carte carburant": {}, + "552-Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": {}, + "553-Monnaie \u00e9lectronique carte p\u00e9age": {}, + "554-Porte-monnaie \u00e9lectronique": {}, + "558-Autres instruments de monnaies \u00e9lectroniques": {} + }, + "56-Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "561-Cr\u00e9dits de tr\u00e9sorerie": {}, + "564-Escompte de cr\u00e9dits de campagne": {}, + "565-Escompte de cr\u00e9dits ordinaires": {}, + "566-Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": {} + }, + "57-Caisse": { + "571-Caisse si\u00e8ge social": { + "5711-Caisse en monnaie nationale": {}, + "5712-Caisse en devises": {} + }, + "572-Caisse succursale A": { + "5721-En monnaie nationale": {}, + "5722-En devises": {} + }, + "573-Caisse succursale B": { + "5731-En monnaie nationale": {}, + "5732-En devises": {} + } + }, + "58-R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "581-R\u00e9gies d\u2019avance": {}, + "582-Accr\u00e9ditifs": {}, + "585-Virements de fonds": {}, + "588-Autres virements internes": {} + }, + "59-D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "590-D\u00e9pr\u00e9ciations des titres de placement": {}, + "591-D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": {}, + "592-D\u00e9pr\u00e9ciations des comptes banques": {}, + "593-D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": {}, + "594-D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": {}, + "599-Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": {} + }, + "root_type": "Asset" + }, + "6-Comptes de charges des activit\u00e9s ordinaires": { + "60-Achats et variations de stocks": { + "601-Achats de marchandises": { + "6011-Dans la R\u00e9gion": {}, + "6012-Hors R\u00e9gion": {}, + "6013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6015-Frais sur achats": {}, + "6019-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "602-Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "6021-Dans la R\u00e9gion": {}, + "6022-Hors R\u00e9gion": {}, + "6023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6025-Frais sur achats": {}, + "6029-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "603-Variations des stocks de biens achet\u00e9s": { + "6031-Variations des stocks de marchandises": {}, + "6032-Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "6033-Variations des stocks d\u2019autres approvisionnements": {} + }, + "604-Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "6041-Mati\u00e8res consommables": {}, + "6042-Mati\u00e8res combustibles": {}, + "6043-Produits d\u2019entretien": {}, + "6044-Fournitures d\u2019atelier et d\u2019usine": {}, + "6045-Frais sur achat": {}, + "6046-Fournitures de magasin": {}, + "6047-Fournitures de bureau": {}, + "6049-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "605-Autres achats": { + "6051-Fournitures non stockables Eau": {}, + "6052-Fournitures non stockables \u00c9lectricit\u00e9": {}, + "6053-Fournitures non stockables Autres \u00e9nergies": {}, + "6054-Fournitures d\u2019entretien non stockables": {}, + "6055-Fournitures de bureau non stockables": {}, + "6056-Achats de petit mat\u00e9riel et outillage": {}, + "6057-Achats d\u2019\u00e9tudes et prestations de services": {}, + "6058-Achats de travaux, mat\u00e9riels et \u00e9quipements": {}, + "6059-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "608-Achats d\u2019emballages": { + "6081-Emballages perdus": {}, + "6082-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "6083-Emballages \u00e0 usage mixte": {}, + "6085-Frais sur achats": {}, + "6089-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + } + }, + "61-Transports": { + "612-Transports sur ventes": {}, + "613-Transports pour le compte de tiers": {}, + "614-Transports du personnel": {}, + "616-Transports de plis": {}, + "618-Autres frais de transport": { + "6181-Voyages et d\u00e9placements": {}, + "6182-Transports entre \u00e9tablissements ou chantiers": {}, + "6183-Transports administratifs": {} + } + }, + "62-Services ext\u00e9rieurs": { + "621-Sous-traitance g\u00e9n\u00e9rale": {}, + "622-Locations, charges locatives": { + "6221-Locations de terrains": {}, + "6222-Locations de b\u00e2timents": {}, + "6223-Locations de mat\u00e9riels et outillages": {}, + "6224-Malis sur emballages": {}, + "6225-Locations d\u2019emballages": {}, + "6226-Fermages et loyers du foncier": {}, + "6228-Locations et charges locatives diverses": {} + }, + "623-Redevances de location acquisition": { + "6232-Cr\u00e9dit-bail immobilier": {}, + "6233-Cr\u00e9dit-bail mobilier": {}, + "6234-Location-vente": {}, + "6238-Autres contrats de location acquisition": {} + }, + "624-Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "6241-Entretien et r\u00e9parations des biens immobiliers": {}, + "6242-Entretien et r\u00e9parations des biens mobiliers": {}, + "6243-Maintenance": {}, + "6244-Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "6248-Autres entretiens et r\u00e9parations": {} + }, + "625-Primes d\u2019assurance": { + "6251-Assurances multirisques": {}, + "6252-Assurances mat\u00e9riel de transport": {}, + "6253-Assurances risques d\u2019exploitation": {}, + "6254-Assurances responsabilit\u00e9 du producteur": {}, + "6255-Assurances insolvabilit\u00e9 clients": {}, + "6257-Assurances transport sur ventes": {}, + "6258-Autres primes d\u2019assurances": {} + }, + "626-\u00c9tudes, recherches et documentation": { + "6261-\u00c9tudes et recherches": {}, + "6265-Documentation g\u00e9n\u00e9rale": {}, + "6266-Documentation technique": {} + }, + "627-Publicit\u00e9, publications, relations publiques": { + "6271-Annonces, insertions": {}, + "6272-Catalogues, imprim\u00e9s publicitaires": {}, + "6273-\u00c9chantillons": {}, + "6274-Foires et expositions": {}, + "6275-Publications": {}, + "6276-Cadeaux \u00e0 la client\u00e8le": {}, + "6277-Frais de colloques, s\u00e9minaires, conf\u00e9rences": {}, + "6278-Autres charges de publicit\u00e9 et relations publiques": {} + }, + "628-Frais de t\u00e9l\u00e9communications": { + "6281-Frais de t\u00e9l\u00e9phone": {}, + "6282-Frais de t\u00e9lex": {}, + "6283-Frais de t\u00e9l\u00e9copie": {}, + "6288-Autres frais de t\u00e9l\u00e9communications": {} + } + }, + "63-Autres services ext\u00e9rieurs": { + "631-Frais bancaires": { + "6311-Frais sur titres (vente, garde)": {}, + "6312-Frais sur effets": {}, + "6313-Location de coffres": {}, + "6314-Commissions d\u2019affacturage": {}, + "6315-Commissions sur cartes de cr\u00e9dit": {}, + "6316-Frais d\u2019\u00e9mission d\u2019emprunts": {}, + "6317-Frais sur instruments monnaie \u00e9lectronique": {}, + "6318-Autres frais bancaires": {} + }, + "632-R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "6322-Commissions et courtages sur ventes": {}, + "6324-Honoraires des professions r\u00e9glement\u00e9es": {}, + "6325-Frais d\u2019actes et de contentieux": {}, + "6326-R\u00e9mun\u00e9rations d\u2019affacturage": {}, + "6327-R\u00e9mun\u00e9rations des autres prestataires de services": {}, + "6328-Divers frais": {} + }, + "633-Frais de formation du personnel": {}, + "634-Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "6342-Redevances pour brevets, licences": {}, + "6343-Redevances pour logiciels": {}, + "6344-Redevances pour marques": {}, + "6345-Redevances pour sites internet": {}, + "6346-Redevances pour concessions, droits et valeurs similaires": {} + }, + "635-Cotisations": { + "6351-Cotisations": {}, + "6358-Concours divers": {} + }, + "637-R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "6371-Personnel int\u00e9rimaire": {}, + "6372-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "638-Autres charges externes": { + "6381-Frais de recrutement du personnel": {}, + "6382-Frais de d\u00e9m\u00e9nagement": {}, + "6383-R\u00e9ceptions": {}, + "6384-Missions": {}, + "6385-Charges de copropri\u00e9t\u00e9": {} + } + }, + "64-Imp\u00f4ts et taxes": { + "641-Imp\u00f4ts et taxes directs": { + "6411-Imp\u00f4ts fonciers et taxes annexes": {}, + "6412-Patentes, licences et taxes annexes": {}, + "6413-Taxes sur appointements et salaires": {}, + "6414-Taxes d\u2019apprentissage": {}, + "6415-Formation professionnelle continue": {}, + "6418-Autres imp\u00f4ts et taxes directs": {} + }, + "645-Imp\u00f4ts et taxes indirects": {}, + "646-Droits d\u2019enregistrement": { + "6461-Droits de mutation": {}, + "6462-Droits de timbre": {}, + "6463-Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": {}, + "6464-Vignettes": {}, + "6468-Autres droits": {} + }, + "647-P\u00e9nalit\u00e9s, amendes fiscales": { + "6471-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": {}, + "6472-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": {}, + "6473-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": {}, + "6474-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": {}, + "6478-Autres p\u00e9nalit\u00e9s et amendes fiscales": {} + }, + "648-Autres imp\u00f4ts et taxes": {} + }, + "65-Autres charges": { + "651-Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "6511-Clients": {}, + "6515-Autres d\u00e9biteurs": {} + }, + "652-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "6521-Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": {}, + "6525-Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "654-Valeurs comptables des cessions courantes d\u2019immobilisations": { + "6541-Immobilisations incorporelles": {}, + "6542-Immobilisations corporelles": {} + }, + "656-Perte de change sur cr\u00e9ances et dettes commerciale": {}, + "657-P\u00e9nalit\u00e9s et amendes p\u00e9nales": {}, + "658-Charges diverses": { + "6581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "6582-Dons": {}, + "6583-M\u00e9c\u00e9nat": {}, + "6588-Autres charges diverses": {} + }, + "659-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "6591-Sur risques \u00e0 court terme": {}, + "6593-Sur stocks": {}, + "6594-Sur cr\u00e9ances": {}, + "6598-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": {} + } + }, + "66-Charges de personnel": { + "661-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "6611-Appointements salaires et commissions": {}, + "6612-Primes et gratifications": {}, + "6613-Cong\u00e9s pay\u00e9s": {}, + "6614-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6615-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6616-Suppl\u00e9ment familial": {}, + "6617-Avantages en nature": {}, + "6618-Autres r\u00e9mun\u00e9rations directes": {} + }, + "662-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "6621-Appointements salaires et commissions": {}, + "6622-Primes et gratifications": {}, + "6623-Cong\u00e9s pay\u00e9s": {}, + "6624-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6625-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6626-Suppl\u00e9ment familial": {}, + "6627-Avantages en nature": {}, + "6628-Autres r\u00e9mun\u00e9rations directes": {} + }, + "663-Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "6631-Indemnit\u00e9s de logement": {}, + "6632-Indemnit\u00e9s de repr\u00e9sentation": {}, + "6633-Indemnit\u00e9s d\u2019expatriation": {}, + "6634-Indemnit\u00e9s de transport": {}, + "6638-Autres indemnit\u00e9s et avantages divers": {} + }, + "664-Charges sociales": { + "6641-Charges sociales sur r\u00e9mun\u00e9ration du personnel national": {}, + "6642-Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": {} + }, + "666-R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "6661-R\u00e9mun\u00e9ration du travail de l\u2019exploitant": {}, + "6662-Charges sociales": {} + }, + "667-R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "6671-Personnel int\u00e9rimaire": {}, + "6672-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "668-Autres charges sociales": { + "6681-Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": {}, + "6682-Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": {}, + "6683-Versements et contributions aux autres \u0153uvres sociales": {}, + "6684-M\u00e9decine du travail et pharmacie": {}, + "6685-Assurances et organismes de sant\u00e9": {}, + "6686-Assurances retraite et fonds de pension": {}, + "6687-Majorations et p\u00e9nalit\u00e9s sociales": {}, + "6688-Charges sociales diverses": {} + } + }, + "67-Frais financiers et charges assimil\u00e9es": { + "671-Int\u00e9r\u00eats des emprunts": { + "6711-Emprunts obligataires": {}, + "6712-Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "6713-Dettes li\u00e9es \u00e0 des participations": {}, + "6714-Primes de remboursement des obligations": {} + }, + "672-Int\u00e9r\u00eats dans loyers de location acquisition": { + "6722-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": {}, + "6723-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": {}, + "6724-Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": {}, + "6728-Int\u00e9r\u00eats dans loyers des autres locations acquisition": {} + }, + "673-Escomptes accord\u00e9s": {}, + "674-Autres int\u00e9r\u00eats": { + "6741-Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": {}, + "6742-Comptes courants bloqu\u00e9s": {}, + "6743-Int\u00e9r\u00eats sur obligations cautionn\u00e9es": {}, + "6744-Int\u00e9r\u00eats sur dettes commerciales": {}, + "6745-Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": {}, + "6748-Int\u00e9r\u00eats sur dettes diverses": {} + }, + "675-Escomptes des effets de commerce": {}, + "676-Pertes de change financi\u00e8res": {}, + "677-Pertes sur titres de placement": { + "6771-Pertes sur cessions de titres de placement": {}, + "6772-Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {} + }, + "678-Pertes et charges sur risques financiers": { + "6781-Sur rentes viag\u00e8res": {}, + "6782-Sur op\u00e9rations financi\u00e8res": {}, + "6784-Sur instruments de tr\u00e9sorerie": {} + }, + "679-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "6791-Sur risques financiers": {}, + "6795-Sur titres de placement": {}, + "6798-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "68-Dotations aux amortissements": { + "681-Dotations aux amortissements d\u2019exploitation": { + "6812-Dotations aux amortissements des immobilisations incorporelles": {}, + "6813-Dotations aux amortissements des immobilisations corporelles": {} + } + }, + "69-Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "691-Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "6911-Dotations aux provisions pour risques et charges": {}, + "6913-Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": {}, + "6914-Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": {} + }, + "697-Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "6971-Dotations aux provisions pour risques et charges": {}, + "6972-Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": {} + } + }, + "root_type": "Expense" + }, + "7-Comptes de produits des activit\u00e9s ordinaires": { + "70-Ventes": { + "701-Ventes de marchandises": { + "7011-Dans la R\u00e9gion": {}, + "7012-Hors R\u00e9gion": {}, + "7013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7015-Sur internet": {}, + "7019-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "702-Ventes de produits finis": { + "7021-Dans la R\u00e9gion": {}, + "7022-Hors R\u00e9gion": {}, + "7023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7025-Sur internet": {}, + "7029-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "703-Ventes de produits interm\u00e9diaires": { + "7031-Dans la R\u00e9gion": {}, + "7032-Hors R\u00e9gion": {}, + "7033-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7034-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7035-Sur internet": {}, + "7039-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "704-Ventes de produits r\u00e9siduels": { + "7041-Dans la R\u00e9gion": {}, + "7042-Hors R\u00e9gion": {}, + "7043-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7044-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7045-Sur internet": {}, + "7049-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "705-Travaux factur\u00e9s": { + "7051-Dans la R\u00e9gion": {}, + "7052-Hors R\u00e9gion": {}, + "7053-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7054-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7055-Sur internet": {}, + "7059-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "706-Services vendus": { + "7061-Dans la R\u00e9gion": {}, + "7062-Hors R\u00e9gion": {}, + "7063-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7064-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7065-Sur internet": {}, + "7069-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "707-Produits accessoires": { + "7071-Ports, emballages perdus et autres frais factur\u00e9s": {}, + "7072-Commissions et courtages": {}, + "7073-Locations": {}, + "7074-Bonis sur reprises et cessions d\u2019emballages": {}, + "7075-Mise \u00e0 disposition de personnel": {}, + "7076-Redevances pour brevets, logiciels, marques et droits similaires": {}, + "7077-Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": {}, + "7078-Autres produits accessoires": {} + } + }, + "71-Subventions d\u2019exploitation": { + "711-Sur produits \u00e0 l\u2019exportation": {}, + "712-Sur produits \u00e0 l\u2019importation": {}, + "713-Sur produits de p\u00e9r\u00e9quation": {}, + "714-Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": {}, + "718-Autres subventions d\u2019exploitation": { + "7181-Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": {}, + "7182-Vers\u00e9es par les organismes internationaux": {}, + "7183-Vers\u00e9es par des tiers": {} + } + }, + "72-Production immobilis\u00e9e": { + "721-Immobilisations incorporelles": {}, + "722-Immobilisations corporelles": { + "7221-Immobilisations corporelles (hors actifs biologiques)": {}, + "7222-Immobilisations corporelles (actifs biologiques)": {} + }, + "724-Production auto-consomm\u00e9e": {}, + "726-Immobilisations financi\u00e8res": {} + }, + "73-Variations des stocks de biens et de services produits": { + "734-Variations des stocks de produits en cours": { + "7341-Produits en cours": {}, + "7342-Travaux en cours": {} + }, + "735-Variations des en-cours de services": { + "7351-\u00c9tudes en cours": {}, + "7352-Prestations de services en cours": {} + }, + "736-Variations des stocks de produits finis": {}, + "737-Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "7371-Produits interm\u00e9diaires": {}, + "7372-Produits r\u00e9siduels": {} + } + }, + "75-Autres produits": { + "751-Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": {}, + "752-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "7521-Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": {}, + "7525-B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "754-Produits des cessions courantes d\u2019immobilisations": { + "7541-Immobilisations incorporelles": {}, + "7542-Immobilisations corporelles": {} + }, + "756-Gains de change sur cr\u00e9ances et dettes commerciales": {}, + "758-Produits divers": { + "7581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "7582-Indemnit\u00e9s d\u2019assurances re\u00e7ues": {}, + "7588-Autres produits divers": {} + }, + "759-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "7591-Sur risques \u00e0 court terme": {}, + "7593-Sur stocks": {}, + "7594-Sur cr\u00e9ances": {}, + "7598-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": {} + } + }, + "77-Revenus financiers et produits assimil\u00e9s": { + "771-Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "7712-Int\u00e9r\u00eats de pr\u00eats": {}, + "7713-Int\u00e9r\u00eats sur cr\u00e9ances diverses": {} + }, + "772-Revenus de participations et autres titres immobilis\u00e9s": { + "7721-Revenus des titres de participation": {}, + "7722-Revenus autres titres immobilis\u00e9s": {} + }, + "773-Escomptes obtenus": {}, + "774-Revenus de placement": { + "7745-Revenus des obligations": {}, + "7746-Revenus des titres de placement": {} + }, + "775-Int\u00e9r\u00eats dans loyers de location acquisition": {}, + "776-Gains de change financiers": {}, + "777-Gains sur cessions de titres de placement": {}, + "778-Gains sur risques financiers": { + "7781-Sur rentes viag\u00e8res": {}, + "7782-Sur op\u00e9rations financi\u00e8res": {}, + "7784-Sur instruments de tr\u00e9sorerie": {} + }, + "779-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "7791-Sur risques financiers": {}, + "7795-Sur titres de placement": {}, + "7798-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "78-Transferts de charges": { + "781-Transferts de charges d\u2019exploitation": {}, + "787-Transferts de charges financi\u00e8res": {} + }, + "79-Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "791-Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "7911-Pour risques et charges": {}, + "7913-Des immobilisations incorporelles": {}, + "7914-Des immobilisations corporelles": {} + }, + "797-Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "7971-Pour risques et charges": {}, + "7972-Des immobilisations financi\u00e8res": {} + }, + "798-Reprises d\u2019amortissements": {}, + "799-Reprises de subventions d\u2019investissement": {} + }, + "root_type": "Income" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "81-Valeurs comptables des cessions d\u2019immobilisations": { + "811-Immobilisations incorporelles": {}, + "812-Immobilisations corporelles": {}, + "816-Immobilisations financi\u00e8res": {} + }, + "83-Charges hors activit\u00e9s ordinaires": { + "831-Charges HAO constat\u00e9es": {}, + "833-Charges li\u00e9es aux op\u00e9rations de restructuration": {}, + "834-Pertes sur cr\u00e9ances HAO": {}, + "835-Dons et lib\u00e9ralit\u00e9s accord\u00e9s": {}, + "836-Abandons de cr\u00e9ances consentis": {}, + "837-Charges li\u00e9es aux op\u00e9rations de liquidation": {}, + "839-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "85-Dotations hors activit\u00e9s ordinaires": { + "851-Dotations aux provisions r\u00e9glement\u00e9es": {}, + "852-Dotations aux amortissements HAO": {}, + "853-Dotations aux d\u00e9pr\u00e9ciations HAO": {}, + "854-Dotations aux provisions pour risques et charges HAO": {}, + "858-Autres dotations HAO": {} + }, + "87-Participation des travailleurs": { + "871-Participation l\u00e9gale aux b\u00e9n\u00e9fices": {}, + "874-Participation contractuelle aux b\u00e9n\u00e9fices": {}, + "878-Autres participations": {} + }, + "89-Imp\u00f4ts sur le r\u00e9sultat": { + "891-Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "8911-Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": {}, + "8912-Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": {}, + "8913-Activit\u00e9s exerc\u00e9es hors R\u00e9gion": {} + }, + "892-Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": {}, + "895-Imp\u00f4t minimum forfaitaire IMF": {}, + "899-D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "8991-D\u00e9gr\u00e8vements": {}, + "8994-Annulations pour pertes r\u00e9troactives": {} + } + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "82-Produits des cessions d\u2019immobilisations": { + "821-Immobilisations incorporelles": {}, + "822-Immobilisations corporelles": {}, + "826-Immobilisations financi\u00e8res": {} + }, + "84-Produits hors activit\u00e9s ordinaires": { + "841-Produits HAO constat\u00e9s": {}, + "843-Produits li\u00e9s aux op\u00e9rations de restructuration": {}, + "844-Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": {}, + "845-Dons et lib\u00e9ralit\u00e9s obtenus": {}, + "846-Abandons de cr\u00e9ances obtenus": {}, + "847-Produits li\u00e9s aux op\u00e9rations de liquidation": {}, + "848-Transferts de charges HAO": {}, + "849-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "86-Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "861-Reprises de provisions r\u00e9glement\u00e9es": {}, + "862-Reprises d\u2019amortissements HAO": {}, + "863-Reprises de d\u00e9pr\u00e9ciations HAO": {}, + "864-Reprises de provisions pour risques et charges HAO": {}, + "868-Autres reprises HAO": {} + }, + "88-Subventions d\u2019\u00e9quilibre": { + "881-\u00c9tat": {}, + "884-Collectivit\u00e9s publiques": {}, + "886-Groupe": {}, + "888-Autres": {} + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/ci_plan_comptable_avec_code.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/ci_plan_comptable_avec_code.json new file mode 100644 index 00000000000..782082f0bfc --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/ci_plan_comptable_avec_code.json @@ -0,0 +1,4208 @@ +{ + "country_code": "ci", + "name": "Syscohada - Plan Comptable avec code", + "tree": { + "Comptes de ressources durables": { + "Capital": { + "Capital social": { + "Capital souscrit, non appel\u00e9": { + "account_number": "1011" + }, + "Capital souscrit, appel\u00e9, non vers\u00e9": { + "account_number": "1012" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, non amorti": { + "account_number": "1013" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, amorti": { + "account_number": "1014" + }, + "Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": { + "account_number": "1018" + }, + "account_number": "101" + }, + "Capital par dotation": { + "Dotation initiale": { + "account_number": "1021" + }, + "Dotations compl\u00e9mentaires": { + "account_number": "1022" + }, + "Autres dotations": { + "account_number": "1028" + }, + "account_number": "102" + }, + "Capital personnel": { + "account_number": "103" + }, + "Compte de l\u2019exploitant": { + "Apports temporaires": { + "account_number": "1041" + }, + "Op\u00e9rations courantes": { + "account_number": "1042" + }, + "R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": { + "account_number": "1043" + }, + "Pr\u00e9l\u00e8vements d\u2019autoconsommation": { + "account_number": "1047" + }, + "Autres pr\u00e9l\u00e8vements": { + "account_number": "1048" + }, + "account_number": "104" + }, + "Primes li\u00e9es au capital social": { + "Primes d\u2019\u00e9mission": { + "account_number": "1051" + }, + "Primes d\u2019apport": { + "account_number": "1052" + }, + "Primes de fusion": { + "account_number": "1053" + }, + "Primes de conversion": { + "account_number": "1054" + }, + "Autres primes": { + "account_number": "1058" + }, + "account_number": "105" + }, + "\u00c9carts de r\u00e9\u00e9valuation": { + "\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": { + "account_number": "1061" + }, + "\u00c9carts de r\u00e9\u00e9valuation libre": { + "account_number": "1062" + }, + "account_number": "106" + }, + "Apporteurs, capital souscrit, non appel\u00e9": { + "account_number": "109" + }, + "account_number": "10" + }, + "R\u00e9serves": { + "R\u00e9serve l\u00e9gale": { + "account_number": "111" + }, + "R\u00e9serves statutaires ou contractuelles": { + "account_number": "112" + }, + "R\u00e9serves r\u00e9glement\u00e9es": { + "R\u00e9serves de plus-values nettes \u00e0 long terme": { + "account_number": "1131" + }, + "R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "1132" + }, + "R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": { + "account_number": "1133" + }, + "R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": { + "account_number": "1134" + }, + "Autres r\u00e9serves r\u00e9glement\u00e9es": { + "account_number": "1135" + }, + "account_number": "113" + }, + "Autres r\u00e9serves": { + "R\u00e9serves facultatives": { + "account_number": "1181" + }, + "R\u00e9serves diverses": { + "account_number": "1188" + }, + "account_number": "118" + }, + "account_number": "11" + }, + "Report \u00e0 nouveau": { + "Report \u00e0 nouveau cr\u00e9diteur": { + "account_number": "121" + }, + "Report \u00e0 nouveau d\u00e9biteur": { + "Perte nette \u00e0 reporter": { + "account_number": "1291" + }, + "Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": { + "account_number": "1292" + }, + "account_number": "129" + }, + "account_number": "12" + }, + "R\u00e9sultat net de l\u2019exercice": { + "R\u00e9sultat en instance d\u2019affectation": { + "R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": { + "account_number": "1301" + }, + "R\u00e9sultat en instance d\u2019affectation : perte": { + "account_number": "1309" + }, + "account_number": "130" + }, + "R\u00e9sultat net : b\u00e9n\u00e9fice": { + "account_number": "131" + }, + "Marge commerciale (MC)": { + "account_number": "132" + }, + "Valeur ajout\u00e9e (VA)": { + "account_number": "133" + }, + "Exc\u00e9dent brut d\u2019exploitation (EBE)": { + "account_number": "134" + }, + "R\u00e9sultat d\u2019exploitation (RE)": { + "account_number": "135" + }, + "R\u00e9sultat financier (RF)": { + "account_number": "136" + }, + "R\u00e9sultat des activit\u00e9s ordinaires (RAO)": { + "account_number": "137" + }, + "R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "R\u00e9sultat de fusion": { + "account_number": "1381" + }, + "R\u00e9sultat d\u2019apport partiel d\u2019actif": { + "account_number": "1382" + }, + "R\u00e9sultat de scission": { + "account_number": "1383" + }, + "R\u00e9sultat de liquidation": { + "account_number": "1384" + }, + "account_number": "138" + }, + "R\u00e9sultat net : perte": { + "account_number": "139" + }, + "account_number": "13" + }, + "Subventions d\u2019investissement": { + "Subventions d\u2019\u00e9quipement": { + "\u00c9tat": { + "account_number": "1411" + }, + "R\u00e9gions": { + "account_number": "1412" + }, + "D\u00e9partements": { + "account_number": "1413" + }, + "Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": { + "account_number": "1414" + }, + "Entit\u00e9s publiques ou mixtes": { + "account_number": "1415" + }, + "Entit\u00e9s et organismes priv\u00e9s": { + "account_number": "1416" + }, + "Organismes internationaux": { + "account_number": "1417" + }, + "Autres": { + "account_number": "1418" + }, + "account_number": "141" + }, + "Autres subventions d\u2019investissement": { + "account_number": "148" + }, + "account_number": "14" + }, + "Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "Amortissements d\u00e9rogatoires": { + "account_number": "151" + }, + "Plus-values de cession \u00e0 r\u00e9investir": { + "account_number": "152" + }, + "Fonds r\u00e9glement\u00e9s": { + "Fonds National": { + "account_number": "1531" + }, + "Pr\u00e9l\u00e8vement pour le Budget": { + "account_number": "1532" + }, + "account_number": "153" + }, + "Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": { + "account_number": "154" + }, + "Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "Reconstitution des gisements miniers et p\u00e9troliers": { + "account_number": "1551" + }, + "account_number": "155" + }, + "Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "Hausse de prix": { + "account_number": "1561" + }, + "Fluctuation des cours": { + "account_number": "1562" + }, + "account_number": "156" + }, + "Provisions pour investissement": { + "account_number": "157" + }, + "Autres provisions et fonds r\u00e9glement\u00e9s": { + "account_number": "158" + }, + "account_number": "15" + }, + "Emprunts et dettes assimil\u00e9es": { + "Emprunts obligataires": { + "Emprunts obligataires ordinaires": { + "account_number": "1611" + }, + "Emprunts obligataires convertibles en actions": { + "account_number": "1612" + }, + "Emprunts obligataires remboursables en actions": { + "account_number": "1613" + }, + "Autres emprunts obligataires": { + "account_number": "1618" + }, + "account_number": "161" + }, + "Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "162" + }, + "Avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "163" + }, + "Avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "164" + }, + "D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "D\u00e9p\u00f4ts": { + "account_number": "1651" + }, + "Cautionnements": { + "account_number": "1652" + }, + "account_number": "165" + }, + "Int\u00e9r\u00eats courus": { + "Sur emprunts obligataires": { + "account_number": "1661" + }, + "Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "1662" + }, + "Sur avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "1663" + }, + "Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "1664" + }, + "Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "account_number": "1665" + }, + "Sur avances assorties de conditions particuli\u00e8res": { + "account_number": "1667" + }, + "Sur autres emprunts et dettes": { + "account_number": "1668" + }, + "account_number": "166" + }, + "Avances assorties de conditions particuli\u00e8res": { + "Avances bloqu\u00e9es pour augmentation du capital": { + "account_number": "1671" + }, + "Avances conditionn\u00e9es par l\u2019\u00c9tat": { + "account_number": "1672" + }, + "Avances conditionn\u00e9es par les autres organismes africains": { + "account_number": "1673" + }, + "Avances conditionn\u00e9es par les organismes internationaux": { + "account_number": "1674" + }, + "account_number": "167" + }, + "Autres emprunts et dettes": { + "Rentes viag\u00e8res capitalis\u00e9es": { + "account_number": "1681" + }, + "Billets de fonds": { + "account_number": "1682" + }, + "Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": { + "account_number": "1683" + }, + "Emprunts participatifs": { + "account_number": "1684" + }, + "Participation des travailleurs aux b\u00e9n\u00e9fices": { + "account_number": "1685" + }, + "Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": { + "account_number": "1686" + }, + "account_number": "168" + }, + "account_number": "16" + }, + "Dettes de location acquisition": { + "Dettes de location acquisition / cr\u00e9dit bail immobilier": { + "account_number": "172" + }, + "Dettes de location acquisition / cr\u00e9dit bail mobilier": { + "account_number": "173" + }, + "Dettes de location acquisition / location de vente": { + "account_number": "174" + }, + "Int\u00e9r\u00eats courus": { + "Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "1762" + }, + "Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "1763" + }, + "Sur dettes de location acquisition / location-vente": { + "account_number": "1764" + }, + "Sur autres dettes de location acquisition": { + "account_number": "1768" + }, + "account_number": "176" + }, + "Autres dettes de location acquisition": { + "account_number": "178" + }, + "account_number": "17" + }, + "Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "Dettes li\u00e9es \u00e0 des participations": { + "Dettes li\u00e9es \u00e0 des participations (groupe)": { + "account_number": "1811" + }, + "Dettes li\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "1812" + }, + "account_number": "181" + }, + "Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "182" + }, + "Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": { + "account_number": "183" + }, + "Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "184" + }, + "Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "185" + }, + "Comptes de liaison charges": { + "account_number": "186" + }, + "Comptes de liaison produits": { + "account_number": "187" + }, + "Comptes de liaison des soci\u00e9t\u00e9s en participation": { + "account_number": "188" + }, + "account_number": "18" + }, + "Provisions pour risques et charges": { + "Provisions pour litiges": { + "account_number": "191" + }, + "Provisions pour garanties donn\u00e9es aux clients": { + "account_number": "192" + }, + "Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": { + "account_number": "193" + }, + "Provisions pour pertes de change": { + "account_number": "194" + }, + "Provisions pour imp\u00f4ts": { + "account_number": "195" + }, + "Provisions pour pensions et obligations similaires": { + "Provisions pour pensions et obligations similaires engagement de retraite": { + "account_number": "1961" + }, + "Actif du r\u00e9gime de retraite": { + "account_number": "1962" + }, + "account_number": "196" + }, + "Provisions pour restructuration": { + "account_number": "197" + }, + "Autres provisions pour risques et charges": { + "Provisions pour amendes et p\u00e9nalit\u00e9s": { + "account_number": "1981" + }, + "Provisions pour propre assureur": { + "account_number": "1983" + }, + "Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "1984" + }, + "Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": { + "account_number": "1985" + }, + "Provisions pour divers risques et charges": { + "account_number": "1988" + }, + "account_number": "198" + }, + "account_number": "19" + }, + "root_type": "Equity", + "account_number": "1" + }, + "Comptes d\u2019actif immobilis\u00e9": { + "Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "211" + }, + "Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "Brevets": { + "account_type": "Fixed Asset", + "account_number": "2121" + }, + "Licences": { + "account_type": "Fixed Asset", + "account_number": "2122" + }, + "Concessions de service public": { + "account_type": "Fixed Asset", + "account_number": "2123" + }, + "Autres concessions et droits similaires": { + "account_type": "Fixed Asset", + "account_number": "2128" + }, + "account_number": "212" + }, + "Logiciels et sites internet": { + "account_type": "Fixed Asset", + "Logiciels": { + "account_type": "Fixed Asset", + "account_number": "2131" + }, + "Sites internet": { + "account_type": "Fixed Asset", + "account_number": "2132" + }, + "account_number": "213" + }, + "Marques": { + "account_type": "Fixed Asset", + "account_number": "214" + }, + "Fonds commercial": { + "account_type": "Fixed Asset", + "account_number": "215" + }, + "Droit au bail": { + "account_type": "Fixed Asset", + "account_number": "216" + }, + "Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset", + "account_number": "217" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset", + "account_number": "2181" + }, + "Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset", + "account_number": "2182" + }, + "Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset", + "account_number": "2183" + }, + "Co\u00fbts des franchises": { + "account_type": "Fixed Asset", + "account_number": "2184" + }, + "Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset", + "account_number": "2188" + }, + "account_number": "218" + }, + "Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "2191" + }, + "Logiciels et internet": { + "account_type": "Fixed Asset", + "account_number": "2193" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "account_number": "2198" + }, + "account_number": "219" + }, + "account_number": "21" + }, + "Terrains": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset", + "account_number": "2211" + }, + "Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset", + "account_number": "2212" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2218" + }, + "account_number": "221" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset", + "account_number": "2221" + }, + "Autres terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2228" + }, + "account_number": "222" + }, + "Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset", + "account_number": "2231" + }, + "Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset", + "account_number": "2232" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2234" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2235" + }, + "Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "account_number": "2238" + }, + "account_number": "223" + }, + "Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset", + "account_number": "2241" + }, + "Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset", + "account_number": "2245" + }, + "Autres travaux": { + "account_type": "Fixed Asset", + "account_number": "2248" + }, + "account_number": "224" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "Carri\u00e8res": { + "account_type": "Fixed Asset", + "account_number": "2251" + }, + "account_number": "225" + }, + "Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "Parkings": { + "account_type": "Fixed Asset", + "account_number": "2261" + }, + "account_number": "226" + }, + "Terrains mis en concession": { + "account_type": "Fixed Asset", + "account_number": "227" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "Terrains immeubles de placement": { + "account_type": "Fixed Asset", + "account_number": "2281" + }, + "Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset", + "account_number": "2285" + }, + "Terrains de location acquisition": { + "account_type": "Fixed Asset", + "account_number": "2286" + }, + "Divers terrains": { + "account_type": "Fixed Asset", + "account_number": "2288" + }, + "account_number": "228" + }, + "Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "account_number": "2291" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2292" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "account_number": "2295" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2298" + }, + "account_number": "229" + }, + "account_number": "22" + }, + "B\u00e2timents, installations techniques et agencements": { + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "B\u00e2timents industriels": { + "account_number": "2311" + }, + "B\u00e2timents agricoles": { + "account_number": "2312" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2313" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2314" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2315" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2316" + }, + "account_number": "231" + }, + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "B\u00e2timents industriels": { + "account_number": "2321" + }, + "B\u00e2timents agricoles": { + "account_number": "2322" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2323" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2324" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2325" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2326" + }, + "account_number": "232" + }, + "Ouvrages d\u2019infrastructure": { + "Voies de terre": { + "account_number": "2331" + }, + "Voies de fer": { + "account_number": "2332" + }, + "Voies d\u2019eau": { + "account_number": "2333" + }, + "Barrages, Digues": { + "account_number": "2334" + }, + "Pistes d\u2019a\u00e9rodrome": { + "account_number": "2335" + }, + "Autres ouvrages d\u2019infrastructures": { + "account_number": "2338" + }, + "account_number": "233" + }, + "Am\u00e9nagements, agencements et installations techniques": { + "Installations complexes sp\u00e9cialis\u00e9es sur sol propre": { + "account_number": "2341" + }, + "Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": { + "account_number": "2342" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": { + "account_number": "2343" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": { + "account_number": "2344" + }, + "Am\u00e9nagements et agencements des b\u00e2timents": { + "account_number": "2345" + }, + "account_number": "234" + }, + "Am\u00e9nagements de bureaux": { + "Installations g\u00e9n\u00e9rales": { + "account_number": "2351" + }, + "Autres am\u00e9nagements de bureaux": { + "account_number": "2358" + }, + "account_number": "235" + }, + "B\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "237" + }, + "Autres installations et agencements": { + "account_number": "238" + }, + "B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "B\u00e2timents en cours": { + "account_number": "2391" + }, + "Installations en cours": { + "account_number": "2392" + }, + "Ouvrages d\u2019infrastructure en cours": { + "account_number": "2393" + }, + "Am\u00e9nagements et agencements et installations techniques en cours": { + "account_number": "2394" + }, + "Am\u00e9nagements de bureaux en cours": { + "account_number": "2395" + }, + "Autres installations et agencements en cours": { + "account_number": "2398" + }, + "account_number": "239" + }, + "account_number": "23" + }, + "Mat\u00e9riel, mobilier et actifs biologiques": { + "Mat\u00e9riel et outillage industriel et commercial": { + "Mat\u00e9riel industriel": { + "account_number": "2411" + }, + "Outillage industriel": { + "account_number": "2412" + }, + "Mat\u00e9riel commercial": { + "account_number": "2413" + }, + "Outillage commercial": { + "account_number": "2414" + }, + "Mat\u00e9riel & outillage industriel et commercial de location-acquisition": { + "account_number": "2416" + }, + "account_number": "241" + }, + "Mat\u00e9riel et outillage agricole": { + "Mat\u00e9riel agricole": { + "account_number": "2421" + }, + "Outillage agricole": { + "account_number": "2422" + }, + "Mat\u00e9riel & outillage agricole de location-acquisition": { + "account_number": "2426" + }, + "account_number": "242" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "243" + }, + "Mat\u00e9riel et mobilier": { + "Mat\u00e9riel de bureau": { + "account_number": "2441" + }, + "Mat\u00e9riel informatique": { + "account_number": "2442" + }, + "Mat\u00e9riel bureautique": { + "account_number": "2443" + }, + "Mobilier de bureau": { + "account_number": "2444" + }, + "Mat\u00e9riel et mobilier immeubles de placement": { + "account_number": "2445" + }, + "Mat\u00e9riel et mobilier de location acquisition": { + "account_number": "2446" + }, + "Mat\u00e9riel et mobilier des logements du personnel": { + "account_number": "2447" + }, + "account_number": "244" + }, + "Mat\u00e9riel de transport": { + "Mat\u00e9riel automobile": { + "account_number": "2451" + }, + "Mat\u00e9riel ferroviaire": { + "account_number": "2452" + }, + "Mat\u00e9riel fluvial, lagunaire": { + "account_number": "2453" + }, + "Mat\u00e9riel naval": { + "account_number": "2454" + }, + "Mat\u00e9riel a\u00e9rien": { + "account_number": "2455" + }, + "Mat\u00e9riel de transport de location-acquisition": { + "account_number": "2456" + }, + "Mat\u00e9riel hippomobile": { + "account_number": "2457" + }, + "Autres mat\u00e9riels de transport": { + "account_number": "2458" + }, + "account_number": "245" + }, + "Actifs biologiques": { + "Cheptel, animaux de trait": { + "account_number": "2461" + }, + "Cheptel, animaux reproducteurs": { + "account_number": "2462" + }, + "Animaux de garde": { + "account_number": "2463" + }, + "Plantations agricoles": { + "account_number": "2465" + }, + "Autres actifs biologiques": { + "account_number": "2468" + }, + "account_number": "246" + }, + "Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "Agencements et am\u00e9nagements du mat\u00e9riel": { + "account_number": "2471" + }, + "Agencements et am\u00e9nagements des actifs biologiques": { + "account_number": "2472" + }, + "Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2478" + }, + "account_number": "247" + }, + "Autres mat\u00e9riels et mobiliers": { + "Collections et \u0153uvres d\u2019art": { + "account_number": "2481" + }, + "Divers mat\u00e9riels mobiliers": { + "account_number": "2488" + }, + "account_number": "248" + }, + "Mat\u00e9riels et actifs biologiques en cours": { + "Mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2491" + }, + "Mat\u00e9riel et outillage agricole": { + "account_number": "2492" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2493" + }, + "Mat\u00e9riel et mobilier de bureau": { + "account_number": "2494" + }, + "Mat\u00e9riel de transport": { + "account_number": "2495" + }, + "Actifs biologiques": { + "account_number": "2496" + }, + "Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2497" + }, + "Autres mat\u00e9riels et actifs biologiques en cours": { + "account_number": "2498" + }, + "account_number": "249" + }, + "account_number": "24" + }, + "Avances et acomptes vers\u00e9s sur immobilisations": { + "Avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "251" + }, + "Avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "252" + }, + "account_number": "25" + }, + "Titres de participation": { + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "261" + }, + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "262" + }, + "Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "263" + }, + "Participations dans des organismes professionnels": { + "account_number": "265" + }, + "Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "266" + }, + "Autres titres de participation": { + "account_number": "268" + }, + "account_number": "26" + }, + "Autres immobilisations financi\u00e8res": { + "Pr\u00eats et cr\u00e9ances": { + "Pr\u00eats participatifs": { + "account_number": "2711" + }, + "Pr\u00eats aux associ\u00e9s": { + "account_number": "2712" + }, + "Billets de fonds": { + "account_number": "2713" + }, + "Titres pr\u00eat\u00e9s": { + "account_number": "2714" + }, + "Autres pr\u00eats et cr\u00e9ances": { + "account_number": "2718" + }, + "account_number": "271" + }, + "Pr\u00eats au personnel": { + "Pr\u00eats immobiliers": { + "account_number": "2721" + }, + "Pr\u00eats mobiliers et d\u2019installation": { + "account_number": "2722" + }, + "Autres pr\u00eats au personnel": { + "account_number": "2728" + }, + "account_number": "272" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "Retenues de garantie": { + "account_number": "2731" + }, + "Fonds r\u00e9glement\u00e9": { + "account_number": "2733" + }, + "Cr\u00e9ances sur le conc\u00e9dant": { + "account_number": "2734" + }, + "Autres cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2738" + }, + "account_number": "273" + }, + "Titres immobilis\u00e9s": { + "Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": { + "account_number": "2741" + }, + "Titres participatifs": { + "account_number": "2742" + }, + "Certificats d\u2019investissement": { + "account_number": "2743" + }, + "Parts de fonds commun de placement (FCP)": { + "account_number": "2744" + }, + "Obligations": { + "account_number": "2745" + }, + "Actions ou parts propres": { + "account_number": "2746" + }, + "Autres titres immobilis\u00e9s": { + "account_number": "2748" + }, + "account_number": "274" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "D\u00e9p\u00f4ts pour loyers d\u2019avance": { + "account_number": "2751" + }, + "D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": { + "account_number": "2752" + }, + "D\u00e9p\u00f4ts pour l\u2019eau": { + "account_number": "2753" + }, + "D\u00e9p\u00f4ts pour le gaz": { + "account_number": "2754" + }, + "D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": { + "account_number": "2755" + }, + "Cautionnements sur march\u00e9s publics": { + "account_number": "2756" + }, + "Cautionnements sur autres op\u00e9rations": { + "account_number": "2757" + }, + "Autres d\u00e9p\u00f4ts et cautionnements": { + "account_number": "2758" + }, + "account_number": "275" + }, + "Int\u00e9r\u00eats courus": { + "Pr\u00eats et cr\u00e9ances non commerciales": { + "account_number": "2761" + }, + "Pr\u00eats au personnel": { + "account_number": "2762" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2763" + }, + "Titres immobilis\u00e9s": { + "account_number": "2764" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2765" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "account_number": "2767" + }, + "Immobilisations financi\u00e8res diverses": { + "account_number": "2768" + }, + "account_number": "276" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": { + "account_number": "2771" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "2772" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "2773" + }, + "Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "2774" + }, + "account_number": "277" + }, + "Immobilisations financi\u00e8res diverses": { + "Cr\u00e9ances diverses groupe": { + "account_number": "2781" + }, + "Cr\u00e9ances diverses hors groupe": { + "account_number": "2782" + }, + "Banques d\u00e9p\u00f4ts \u00e0 terme": { + "account_number": "2784" + }, + "Or et m\u00e9taux pr\u00e9cieux": { + "account_number": "2785" + }, + "Autres immobilisations financi\u00e8res": { + "account_number": "2788" + }, + "account_number": "278" + }, + "account_number": "27" + }, + "Amortissements": { + "account_type": "Accumulated Depreciation", + "Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation", + "account_number": "2811" + }, + "Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation", + "account_number": "2812" + }, + "Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation", + "account_number": "2813" + }, + "Amortissements des marques": { + "account_type": "Accumulated Depreciation", + "account_number": "2814" + }, + "Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation", + "account_number": "2815" + }, + "Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation", + "account_number": "2816" + }, + "Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation", + "account_number": "2817" + }, + "Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation", + "account_number": "2818" + }, + "account_number": "281" + }, + "Amortissements des terrains": { + "Amortissements des travaux de mise en valeur des terrains": { + "account_number": "2824" + }, + "account_number": "282" + }, + "Amortissements des b\u00e2timents, installations techniques et agencements": { + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2831" + }, + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2832" + }, + "Amortissements des ouvrages d\u2019infrastructure": { + "account_number": "2833" + }, + "Amortissements des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2834" + }, + "Amortissements des am\u00e9nagements de bureaux": { + "account_number": "2835" + }, + "Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2837" + }, + "Amortissements des autres installations et agencements": { + "account_number": "2838" + }, + "account_number": "283" + }, + "Amortissements du mat\u00e9riel": { + "Amortissements du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2841" + }, + "Amortissements du mat\u00e9riel et outillage agricole": { + "account_number": "2842" + }, + "Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2843" + }, + "Amortissements du mat\u00e9riel et mobilier": { + "account_number": "2844" + }, + "Amortissements du mat\u00e9riel de transport": { + "account_number": "2845" + }, + "Amortissements des actifs biologiques": { + "account_number": "2846" + }, + "Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2847" + }, + "Amortissements des autres mat\u00e9riels": { + "account_number": "2848" + }, + "account_number": "284" + }, + "account_number": "28" + }, + "D\u00e9pr\u00e9ciations des immobilisations": { + "D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": { + "account_number": "2911" + }, + "D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": { + "account_number": "2912" + }, + "D\u00e9pr\u00e9ciations des logiciels et sites internet": { + "account_number": "2913" + }, + "D\u00e9pr\u00e9ciations des marques": { + "account_number": "2914" + }, + "D\u00e9pr\u00e9ciations du fonds commercial": { + "account_number": "2915" + }, + "D\u00e9pr\u00e9ciations du droit au bail": { + "account_number": "2916" + }, + "D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": { + "account_number": "2917" + }, + "D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": { + "account_number": "2918" + }, + "D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": { + "account_number": "2919" + }, + "account_number": "291" + }, + "D\u00e9pr\u00e9ciations des terrains": { + "D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": { + "account_number": "2921" + }, + "D\u00e9pr\u00e9ciations des terrains nus": { + "account_number": "2922" + }, + "D\u00e9pr\u00e9ciations des terrains b\u00e2tis": { + "account_number": "2923" + }, + "D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": { + "account_number": "2924" + }, + "D\u00e9pr\u00e9ciations des terrains de gisement": { + "account_number": "2925" + }, + "D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": { + "account_number": "2926" + }, + "D\u00e9pr\u00e9ciations des terrains mis en concession": { + "account_number": "2927" + }, + "D\u00e9pr\u00e9ciations des autres terrains": { + "account_number": "2928" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": { + "account_number": "2929" + }, + "account_number": "292" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2931" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2932" + }, + "D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": { + "account_number": "2933" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2934" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": { + "account_number": "2935" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2937" + }, + "D\u00e9pr\u00e9ciations des autres installations et agencements": { + "account_number": "2938" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": { + "account_number": "2939" + }, + "account_number": "293" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2941" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": { + "account_number": "2942" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2943" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": { + "account_number": "2944" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": { + "account_number": "2945" + }, + "D\u00e9pr\u00e9ciations des actifs biologiques": { + "account_number": "2946" + }, + "D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2947" + }, + "D\u00e9pr\u00e9ciations des autres mat\u00e9riels": { + "account_number": "2948" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": { + "account_number": "2949" + }, + "account_number": "294" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "2951" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "2952" + }, + "account_number": "295" + }, + "D\u00e9pr\u00e9ciations des titres de participation": { + "D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "2961" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "2962" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "2963" + }, + "D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": { + "account_number": "2965" + }, + "D\u00e9pr\u00e9ciations des parts dans des GIE": { + "account_number": "2966" + }, + "D\u00e9pr\u00e9ciations des autres titres de participation": { + "account_number": "2968" + }, + "account_number": "296" + }, + "D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": { + "account_number": "2971" + }, + "D\u00e9pr\u00e9ciations des pr\u00eats au personnel": { + "account_number": "2972" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2973" + }, + "D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": { + "account_number": "2974" + }, + "D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2975" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "account_number": "2977" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": { + "account_number": "2978" + }, + "account_number": "297" + }, + "account_number": "29" + }, + "root_type": "Asset", + "account_number": "2" + }, + "Comptes de Stocks": { + "Marchandises": { + "Marchandises A": { + "Marchandises A1": { + "account_number": "3111" + }, + "Marchandises A2": { + "account_number": "3112" + }, + "account_number": "311" + }, + "Marchandises B": { + "Marchandises B1": { + "account_number": "3121" + }, + "Marchandises B2": { + "account_number": "3122" + }, + "account_number": "312" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3131" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3132" + }, + "account_number": "313" + }, + "Marchandises hors activit\u00e9s ordinaires (HAO)": { + "account_number": "318" + }, + "account_number": "31" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Mati\u00e8res A": { + "account_number": "321" + }, + "Mati\u00e8res B": { + "account_number": "322" + }, + "Fournitures (A, B)": { + "account_number": "323" + }, + "account_number": "32" + }, + "Autres approvisionnements": { + "Mati\u00e8res consommables": { + "account_number": "331" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "332" + }, + "Fournitures de magasin": { + "account_number": "333" + }, + "Fournitures de bureau": { + "account_number": "334" + }, + "Emballages": { + "Emballages perdus": { + "account_number": "3351" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "3352" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "3353" + }, + "Autres emballages": { + "account_number": "3358" + }, + "account_number": "335" + }, + "Autres mati\u00e8res": { + "account_number": "338" + }, + "account_number": "33" + }, + "Produits en cours": { + "Produits en cours": { + "Produits en cours P1": { + "account_number": "3411" + }, + "Produits en cours P2": { + "account_number": "3412" + }, + "account_number": "341" + }, + "Travaux en cours": { + "Travaux en cours T1": { + "account_number": "3421" + }, + "Travaux en cours T2": { + "account_number": "3422" + }, + "account_number": "342" + }, + "Produits interm\u00e9diaires en cours": { + "Produits interm\u00e9diaires A": { + "account_number": "3431" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3432" + }, + "account_number": "343" + }, + "Produits r\u00e9siduels en cours": { + "Produits r\u00e9siduels A": { + "account_number": "3441" + }, + "Produits r\u00e9siduels B": { + "account_number": "3442" + }, + "account_number": "344" + }, + "Actifs biologiques en cours": { + "Animaux": { + "account_number": "3451" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3452" + }, + "account_number": "345" + }, + "account_number": "34" + }, + "Services en cours": { + "\u00c9tudes en cours": { + "\u00c9tudes en cours E1": { + "account_number": "3511" + }, + "\u00c9tudes en cours E2": { + "account_number": "3512" + }, + "account_number": "351" + }, + "Prestations de services en cours": { + "Prestations de services S1": { + "account_number": "3521" + }, + "Prestations de services S2": { + "account_number": "3522" + } + }, + "account_number": "35" + }, + "Produits finis": { + "Produits finis A": { + "account_number": "361" + }, + "Produits finis B": { + "account_number": "362" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3631" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3632" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3638" + }, + "account_number": "363" + }, + "account_number": "36" + }, + "Produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "Produits interm\u00e9diaires A": { + "account_number": "3711" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3712" + }, + "account_number": "371" + }, + "Produits r\u00e9siduels": { + "D\u00e9chets": { + "account_number": "3721" + }, + "Rebuts": { + "account_number": "3722" + }, + "Mati\u00e8res de R\u00e9cup\u00e9ration": { + "account_number": "3723" + }, + "account_number": "372" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3731" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3732" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3738" + }, + "account_number": "373" + }, + "account_number": "37" + }, + "Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "Marchandises en cours de route": { + "account_number": "381" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": { + "account_number": "382" + }, + "Autres approvisionnements en cours de route": { + "account_number": "383" + }, + "Produits finis en cours de route": { + "account_number": "386" + }, + "Stock en consignation ou en d\u00e9p\u00f4t": { + "Stock en consignation": { + "account_number": "3871" + }, + "Stock en d\u00e9p\u00f4t": { + "account_number": "3872" + }, + "account_number": "387" + }, + "Stock provenant d\u2019immobilisations mises hors service ou au rebut": { + "account_number": "388" + }, + "account_number": "38" + }, + "D\u00e9pr\u00e9ciations des stocks et encours de production": { + "D\u00e9pr\u00e9ciations des stocks de marchandises": { + "account_number": "391" + }, + "D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "392" + }, + "D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": { + "account_number": "393" + }, + "D\u00e9pr\u00e9ciations des productions en cours": { + "account_number": "394" + }, + "D\u00e9pr\u00e9ciations des services en cours": { + "account_number": "395" + }, + "D\u00e9pr\u00e9ciations des stocks de produits finis": { + "account_number": "396" + }, + "D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "account_number": "397" + }, + "D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_number": "398" + }, + "account_number": "39" + }, + "root_type": "Asset", + "account_number": "3" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "Fournisseurs d\u00e9biteurs": { + "Fournisseurs Avances et acomptes vers\u00e9s": { + "account_number": "4091" + }, + "Fournisseurs Groupe avances et acomptes vers\u00e9s": { + "account_number": "4092" + }, + "Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": { + "account_number": "4093" + }, + "Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": { + "account_number": "4094" + }, + "Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": { + "account_number": "4098" + }, + "account_number": "409" + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "Clients": { + "Clients": { + "account_type": "Receivable", + "account_number": "4111" + }, + "Clients groupe": { + "account_type": "Receivable", + "account_number": "4112" + }, + "Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable", + "account_number": "4114" + }, + "Clients, organismes internationaux": { + "account_type": "Receivable", + "account_number": "4115" + }, + "Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable", + "account_number": "4116" + }, + "Client, retenues de garantie": { + "account_type": "Receivable", + "account_number": "4117" + }, + "Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable", + "account_number": "4118" + }, + "account_type": "Receivable", + "account_number": "411" + }, + "Clients, effets \u00e0 recevoir en portefeuille": { + "Clients, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4121" + }, + "Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4122" + }, + "\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4124" + }, + "Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4125" + }, + "account_type": "Receivable", + "account_number": "412" + }, + "Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4131" + }, + "Clients, effets impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4132" + }, + "Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4133" + }, + "Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4138" + }, + "account_type": "Receivable", + "account_number": "413" + }, + "Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4141" + }, + "Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4142" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4146" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4147" + }, + "account_type": "Receivable", + "account_number": "414" + }, + "Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable", + "account_number": "415" + }, + "Cr\u00e9ances clients litigieuses ou douteuses": { + "Cr\u00e9ances litigieuses": { + "account_type": "Receivable", + "account_number": "4161" + }, + "Cr\u00e9ances douteuses": { + "account_type": "Receivable", + "account_number": "4162" + }, + "account_type": "Receivable", + "account_number": "416" + }, + "Clients, produits \u00e0 recevoir": { + "Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable", + "account_number": "4181" + }, + "Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable", + "account_number": "4186" + }, + "account_type": "Receivable", + "account_number": "418" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "Personnel, avances et acomptes": { + "Personnel, avances": { + "account_number": "4211" + }, + "Personnel, acomptes": { + "account_number": "4212" + }, + "Frais avanc\u00e9s et fournitures au personnel": { + "account_number": "4213" + }, + "account_number": "421" + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "Prestations familiales": { + "account_number": "4311" + }, + "Accidents de travail": { + "account_number": "4312" + }, + "Caisse de retraite obligatoire": { + "account_number": "4313" + }, + "Caisse de retraite facultative": { + "account_number": "4314" + }, + "Autres cotisations sociales": { + "account_number": "4318" + } + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "Mutuelle": { + "account_number": "4331" + }, + "Assurances retraite": { + "account_number": "4332" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "4333" + } + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Produits \u00e0 recevoir": { + "account_number": "4387" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "\u00c9tat, TVA factur\u00e9e": { + "TVA factur\u00e9e sur ventes": { + "account_number": "4431" + }, + "TVA factur\u00e9e sur prestations de services": { + "account_number": "4432" + }, + "TVA factur\u00e9e sur travaux": { + "account_number": "4433" + }, + "TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": { + "account_number": "4434" + }, + "TVA sur factures \u00e0 \u00e9tablir": { + "account_number": "4435" + }, + "account_number": "443" + }, + "\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "TVA r\u00e9cup\u00e9rable sur immobilisations": { + "account_number": "4451" + }, + "TVA r\u00e9cup\u00e9rable sur achats": { + "account_number": "4452" + }, + "TVA r\u00e9cup\u00e9rable sur transport": { + "account_number": "4453" + }, + "TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": { + "account_number": "4454" + }, + "TVA r\u00e9cup\u00e9rable sur factures non parvenues": { + "account_number": "4455" + }, + "TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": { + "account_number": "4456" + }, + "account_number": "445" + }, + "\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges \u00e0 payer": { + "account_number": "4486" + }, + "Produits \u00e0 recevoir": { + "account_number": "4487" + }, + "account_number": "448" + }, + "\u00c9tat, cr\u00e9ances et dettes diverses": { + "\u00c9tat, obligations cautionn\u00e9es": { + "account_number": "4491" + }, + "\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": { + "account_number": "4492" + }, + "\u00c9tat, fonds de dotation \u00e0 recevoir": { + "account_number": "4493" + }, + "\u00c9tat, subventions investissement \u00e0 recevoir": { + "account_number": "4494" + }, + "\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": { + "account_number": "4495" + }, + "\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": { + "account_number": "4496" + }, + "\u00c9tat, avances sur subventions": { + "account_number": "4497" + }, + "\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": { + "account_number": "4499" + }, + "account_number": "449" + } + }, + "45-Organismes internationaux (ACTIF)": { + "Op\u00e9rations avec les organismes africains": { + "account_number": "451" + }, + "Op\u00e9rations avec les autres organismes internationaux": { + "account_number": "452" + }, + "Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "Organismes internationaux, fonds de dotation \u00e0 recevoir": { + "account_number": "4581" + }, + "Organismes internationaux, subventions \u00e0 recevoir": { + "account_number": "4582" + }, + "account_number": "458" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "Apporteurs, capital appel\u00e9, non vers\u00e9": { + "account_number": "4613" + }, + "Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": { + "account_number": "4614" + }, + "Apporteurs, titres \u00e0 \u00e9changer": { + "account_number": "4618" + } + }, + "Apporteurs, restant d\u00fb sur capital appel\u00e9": { + "account_number": "467" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4721" + }, + "Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": { + "account_number": "4726" + } + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "Mandants": { + "account_number": "4731" + }, + "Mandataires": { + "account_number": "4732" + }, + "Commettants": { + "account_number": "4733" + }, + "Commissionnaires": { + "account_number": "4734" + }, + "\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": { + "account_number": "4739" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "Compte de r\u00e9partition p\u00e9riodique des produits": { + "account_number": "4747" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "Compte actif": { + "account_type": "Temporary", + "account_number": "4751" + } + }, + "Charges constat\u00e9es d\u2019avance": { + "account_number": "476" + }, + "478-\u00c9carts de conversion actif": { + "Diminution des cr\u00e9ances d\u2019exploitation": { + "account_number": "4781" + }, + "Diminution des cr\u00e9ances financi\u00e8res": { + "account_number": "4782" + }, + "Augmentation des dettes d\u2019exploitation": { + "account_number": "4783" + }, + "Augmentation des dettes financi\u00e8res": { + "account_number": "4784" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4786" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4788" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "En compte, immobilisations incorporelles": { + "account_number": "4851" + }, + "En compte, immobilisations corporelles": { + "account_number": "4852" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_number": "4853" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_number": "4854" + }, + "Effets escompt\u00e9s non \u00e9chus": { + "account_number": "4855" + }, + "Retenues de garantie": { + "account_number": "4857" + }, + "Factures \u00e0 \u00e9tablir": { + "account_number": "4858" + }, + "account_number": "485" + }, + "Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": { + "account_number": "488" + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "D\u00e9pr\u00e9ciations des comptes clients": { + "Cr\u00e9ances litigieuses": { + "account_number": "4911" + }, + "Cr\u00e9ances douteuses": { + "account_number": "4912" + }, + "account_number": "491" + }, + "D\u00e9pr\u00e9ciations des comptes organismes internationaux": { + "account_number": "495" + }, + "D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "Associ\u00e9s, comptes courants": { + "account_number": "4962" + }, + "Associ\u00e9s, op\u00e9rations faites en commun": { + "account_number": "4963" + }, + "Groupe, comptes courants": { + "account_number": "4966" + }, + "account_number": "496" + }, + "D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": { + "account_number": "497" + }, + "D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "account_number": "4985" + }, + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4986" + }, + "Autres cr\u00e9ances HAO": { + "account_number": "4988" + }, + "account_number": "498" + }, + "Provisions pour risques \u00e0 court terme": { + "Sur op\u00e9rations d\u2019exploitation": { + "account_number": "4991" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "4997" + }, + "Sur op\u00e9rations HAO": { + "account_number": "4998" + }, + "account_number": "499" + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "Fournisseurs, dettes en compte": { + "Fournisseurs": { + "account_type": "Payable", + "account_number": "4011" + }, + "Fournisseurs groupe": { + "account_type": "Payable", + "account_number": "4012" + }, + "Fournisseurs sous-traitants": { + "account_type": "Payable", + "account_number": "4013" + }, + "Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable", + "account_number": "4016" + }, + "Fournisseur, retenues de garantie": { + "account_type": "Payable", + "account_number": "4017" + }, + "account_type": "Payable", + "account_number": "401" + }, + "Fournisseurs, effets \u00e0 payer": { + "Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4021" + }, + "Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4022" + }, + "Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4023" + }, + "account_type": "Payable", + "account_number": "402" + }, + "Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4041" + }, + "Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4042" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4046" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4047" + }, + "account_type": "Payable", + "account_number": "404" + }, + "Fournisseurs, factures non parvenues": { + "Fournisseurs": { + "account_type": "Stock Received But Not Billed", + "account_number": "4081" + }, + "Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed", + "account_number": "4082" + }, + "Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed", + "account_number": "4083" + }, + "Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed", + "account_number": "4086" + }, + "account_type": "Stock Received But Not Billed", + "account_number": "408" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "Clients cr\u00e9diteurs": { + "Clients, avances et acomptes re\u00e7us": { + "account_number": "4191" + }, + "Clients groupe, avances et acomptes re\u00e7us": { + "account_number": "4192" + }, + "Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": { + "account_number": "4194" + }, + "Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": { + "account_number": "4198" + }, + "account_number": "419" + } + }, + "42-Personnel (PASSIF)": { + "Personnel, r\u00e9mun\u00e9rations dues": { + "account_number": "422" + }, + "Personnel, oppositions, saisies-arr\u00eats": { + "Personnel, oppositions": { + "account_number": "4231" + }, + "Personnel, saisies-arr\u00eats": { + "account_number": "4232" + }, + "Personnel, avis \u00e0 tiers d\u00e9tenteur": { + "account_number": "4233" + }, + "account_number": "423" + }, + "Personnel, \u0153uvres sociales internes": { + "Assistance m\u00e9dicale": { + "account_number": "4241" + }, + "Allocations familiales": { + "account_number": "4242" + }, + "Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": { + "account_number": "4245" + }, + "Autres \u0153uvres sociales internes": { + "account_number": "4248" + }, + "account_number": "424" + }, + "Repr\u00e9sentants du personnel": { + "D\u00e9l\u00e9gu\u00e9s du personnel": { + "account_number": "4251" + }, + "Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": { + "account_number": "4252" + }, + "Autres repr\u00e9sentants du personnel": { + "account_number": "4258" + }, + "account_number": "425" + }, + "Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "Participation aux b\u00e9n\u00e9fices": { + "account_number": "4261" + }, + "Participation au capital": { + "account_number": "4264" + }, + "account_number": "426" + }, + "Personnel d\u00e9p\u00f4ts": { + "account_number": "427" + }, + "Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": { + "account_number": "4281" + }, + "Autres charges \u00e0 payer": { + "account_number": "4286" + }, + "Produits \u00e0 recevoir": { + "account_number": "4287" + }, + "account_number": "428" + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges sociales sur gratifications \u00e0 payer": { + "account_number": "4381" + }, + "Charges sociales sur cong\u00e9s \u00e0 payer": { + "account_number": "4382" + }, + "Autres charges \u00e0 payer": { + "account_number": "4386" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": { + "account_number": "441" + }, + "\u00c9tat, autres imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes d\u2019\u00c9tat": { + "account_number": "4421" + }, + "Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": { + "account_number": "4422" + }, + "Imp\u00f4ts et taxes recouvrables sur des obligataires": { + "account_number": "4423" + }, + "Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": { + "account_number": "4424" + }, + "Droits de douane": { + "account_number": "4426" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "4428" + }, + "account_number": "442" + }, + "\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "\u00c9tat, TVA due": { + "account_number": "4441" + }, + "\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": { + "account_number": "4449" + }, + "account_number": "444" + }, + "\u00c9tat, autres taxes sur le chiffre d\u2019affaires": { + "account_number": "446" + }, + "\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": { + "account_number": "4471" + }, + "Imp\u00f4ts sur salaires": { + "account_number": "4472" + }, + "Contribution nationale": { + "account_number": "4473" + }, + "Contribution nationale de solidarit\u00e9": { + "account_number": "4474" + }, + "Autres imp\u00f4ts et contributions": { + "account_number": "4478" + }, + "account_number": "447" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "Apporteurs, apports en nature": { + "account_number": "4611" + }, + "Apporteurs, apports en num\u00e9raire": { + "account_number": "4612" + }, + "Apporteurs, versements re\u00e7us sur augmentation de capital": { + "account_number": "4615" + }, + "Apporteurs, versements anticip\u00e9s": { + "account_number": "4616" + }, + "Apporteurs d\u00e9faillants": { + "account_number": "4617" + }, + "Apporteurs, capital \u00e0 rembourser": { + "account_number": "4619" + } + }, + "462-Associ\u00e9s, comptes courants": { + "Principal": { + "account_number": "4621" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4626" + } + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "Op\u00e9rations courantes": { + "account_number": "4631" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4636" + } + }, + "Associ\u00e9s, dividendes \u00e0 payer": { + "account_number": "465" + }, + "Groupe, comptes courants": { + "account_number": "466" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "D\u00e9biteurs divers": { + "account_number": "4711" + }, + "Cr\u00e9diteurs divers": { + "account_number": "4712" + }, + "Obligataires": { + "account_number": "4713" + }, + "R\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "4715" + }, + "Compte d\u2019affacturage": { + "account_number": "4716" + }, + "D\u00e9biteurs divers retenues de garantie": { + "account_number": "4717" + }, + "Apport, compte de fusion et op\u00e9rations assimil\u00e9es": { + "account_number": "4718" + }, + "Bons de souscription d\u2019actions et d\u2019obligations": { + "account_number": "4719" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "Compte de r\u00e9partition p\u00e9riodique des charges": { + "account_number": "4746" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "Compte passif": { + "account_number": "4752" + } + }, + "Produits constat\u00e9s d\u2019avance": { + "account_number": "477" + }, + "479-\u00c9carts de conversion passif": { + "Augmentation des cr\u00e9ances d\u2019exploitation": { + "account_number": "4791" + }, + "Augmentation des cr\u00e9ances financi\u00e8res": { + "account_number": "4792" + }, + "Diminution des dettes d\u2019exploitation": { + "account_number": "4793" + }, + "Diminution des dettes financi\u00e8res": { + "account_number": "4794" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4797" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4798" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "Fournisseurs d\u2019investissements": { + "Immobilisations incorporelles": { + "account_number": "4811" + }, + "Immobilisations corporelles": { + "account_number": "4812" + }, + "Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": { + "account_number": "4813" + }, + "R\u00e9serve de propri\u00e9t\u00e9": { + "account_number": "4816" + }, + "Retenues de garantie": { + "account_number": "4817" + }, + "Factures non parvenues": { + "account_number": "4818" + }, + "account_number": "481" + }, + "Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "Immobilisations incorporelles": { + "account_number": "4821" + }, + "Immobilisations corporelles": { + "account_number": "4822" + }, + "account_number": "482" + }, + "Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "Produits": { + "account_number": "4887" + }, + "account_number": "484" + } + }, + "root_type": "Liability" + }, + "Comptes de tr\u00e9sorerie": { + "Titres de placement": { + "Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "Titres du Tr\u00e9sor \u00e0 court terme": { + "account_number": "5011" + }, + "Titres d\u2019organismes financiers": { + "account_number": "5012" + }, + "Bons de caisse \u00e0 court terme": { + "account_number": "5013" + }, + "Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": { + "account_number": "5016" + }, + "account_number": "501" + }, + "Actions": { + "Actions ou parts propres": { + "account_number": "5021" + }, + "Actions cot\u00e9es": { + "account_number": "5022" + }, + "Actions non cot\u00e9es": { + "account_number": "5023" + }, + "Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": { + "account_number": "5024" + }, + "Autres actions": { + "account_number": "5025" + }, + "Frais d\u2019acquisition des actions": { + "account_number": "5026" + }, + "account_number": "502" + }, + "Obligations": { + "Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": { + "account_number": "5031" + }, + "Obligations cot\u00e9es": { + "account_number": "5032" + }, + "Obligations non cot\u00e9es": { + "account_number": "5033" + }, + "Autres obligations": { + "account_number": "5035" + }, + "Frais d\u2019acquisition des obligations": { + "account_number": "5036" + }, + "account_number": "503" + }, + "Bons de souscription": { + "Bons de souscription d\u2019actions": { + "account_number": "5042" + }, + "Bons de souscription d\u2019obligations": { + "account_number": "5043" + }, + "account_number": "504" + }, + "Titres n\u00e9gociables hors r\u00e9gion": { + "account_number": "505" + }, + "Int\u00e9r\u00eats courus": { + "Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": { + "account_number": "5061" + }, + "Actions": { + "account_number": "5062" + }, + "Obligations": { + "account_number": "5063" + }, + "account_number": "506" + }, + "Autres titres de placement et cr\u00e9ances assimil\u00e9es": { + "account_number": "508" + }, + "account_number": "50" + }, + "Valeurs \u00e0 encaisser": { + "Effets \u00e0 encaisser": { + "account_number": "511" + }, + "Effets \u00e0 l\u2019encaissement": { + "account_number": "512" + }, + "Ch\u00e8ques \u00e0 encaisser": { + "account_number": "513" + }, + "Ch\u00e8ques \u00e0 l\u2019encaissement": { + "account_number": "514" + }, + "Cartes de cr\u00e9dit \u00e0 encaisser": { + "account_number": "515" + }, + "Autres valeurs \u00e0 l\u2019encaissement": { + "Warrants": { + "account_number": "5181" + }, + "Billets de fonds": { + "account_number": "5182" + }, + "Ch\u00e8ques de voyage": { + "account_number": "5185" + }, + "Coupons \u00e9chus": { + "account_number": "5186" + }, + "Int\u00e9r\u00eats \u00e9chus des obligations": { + "account_number": "5187" + }, + "account_number": "518" + }, + "account_number": "51" + }, + "Banques": { + "Banques locales": { + "Banques en monnaie nationale": { + "account_type": "Bank", + "account_number": "5211" + }, + "Banques en devises": { + "account_type": "Bank", + "account_number": "5215" + }, + "account_type": "Bank", + "account_number": "521" + }, + "Banques autres \u00c9tats r\u00e9gion": { + "account_number": "522" + }, + "Banques autres \u00c9tats zone mon\u00e9taire": { + "account_number": "523" + }, + "Banques hors zone mon\u00e9taire": { + "account_number": "524" + }, + "Banques d\u00e9p\u00f4t \u00e0 terme": { + "account_number": "525" + }, + "Banques, int\u00e9r\u00eats courus": { + "Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": { + "account_number": "5261" + }, + "Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": { + "account_number": "5267" + }, + "account_number": "526" + }, + "account_number": "52" + }, + "\u00c9tablissements financiers et assimil\u00e9s": { + "Ch\u00e8ques postaux": { + "account_number": "531" + }, + "Tr\u00e9sor": { + "account_number": "532" + }, + "Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": { + "account_number": "533" + }, + "\u00c9tablissements financiers, int\u00e9r\u00eats courus": { + "account_number": "536" + }, + "Autres organismes financiers": { + "account_number": "538" + }, + "account_number": "53" + }, + "Instruments de tr\u00e9sorerie": { + "Options de taux d\u2019int\u00e9r\u00eat": { + "account_number": "541" + }, + "Options de taux de change": { + "account_number": "542" + }, + "Options de taux boursiers": { + "account_number": "543" + }, + "Instruments de march\u00e9s \u00e0 terme": { + "account_number": "544" + }, + "Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": { + "account_number": "545" + }, + "account_number": "54" + }, + "Instruments de monnaie \u00e9lectronique": { + "Monnaie \u00e9lectronique carte carburant": { + "account_number": "551" + }, + "Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": { + "account_number": "552" + }, + "Monnaie \u00e9lectronique carte p\u00e9age": { + "account_number": "553" + }, + "Porte-monnaie \u00e9lectronique": { + "account_number": "554" + }, + "Autres instruments de monnaies \u00e9lectroniques": { + "account_number": "558" + }, + "account_number": "55" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "Cr\u00e9dits de tr\u00e9sorerie": { + "account_number": "561" + }, + "Escompte de cr\u00e9dits de campagne": { + "account_number": "564" + }, + "Escompte de cr\u00e9dits ordinaires": { + "account_number": "565" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": { + "account_number": "566" + }, + "account_number": "56" + }, + "Caisse": { + "Caisse si\u00e8ge social": { + "Caisse en monnaie nationale": { + "account_number": "5711" + }, + "Caisse en devises": { + "account_number": "5712" + }, + "account_number": "571" + }, + "Caisse succursale A": { + "En monnaie nationale": { + "account_number": "5721" + }, + "En devises": { + "account_number": "5722" + }, + "account_number": "572" + }, + "Caisse succursale B": { + "En monnaie nationale": { + "account_number": "5731" + }, + "En devises": { + "account_number": "5732" + }, + "account_number": "573" + }, + "account_number": "57" + }, + "R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "R\u00e9gies d\u2019avance": { + "account_number": "581" + }, + "Accr\u00e9ditifs": { + "account_number": "582" + }, + "Virements de fonds": { + "account_number": "585" + }, + "Autres virements internes": { + "account_number": "588" + }, + "account_number": "58" + }, + "D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "D\u00e9pr\u00e9ciations des titres de placement": { + "account_number": "590" + }, + "D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": { + "account_number": "591" + }, + "D\u00e9pr\u00e9ciations des comptes banques": { + "account_number": "592" + }, + "D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": { + "account_number": "593" + }, + "D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": { + "account_number": "594" + }, + "Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": { + "account_number": "599" + }, + "account_number": "59" + }, + "root_type": "Asset", + "account_number": "5" + }, + "Comptes de charges des activit\u00e9s ordinaires": { + "Achats et variations de stocks": { + "Achats de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "6011" + }, + "Hors R\u00e9gion": { + "account_number": "6012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6014" + }, + "Frais sur achats": { + "account_number": "6015" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6019" + }, + "account_number": "601" + }, + "Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Dans la R\u00e9gion": { + "account_number": "6021" + }, + "Hors R\u00e9gion": { + "account_number": "6022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6024" + }, + "Frais sur achats": { + "account_number": "6025" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6029" + }, + "account_number": "602" + }, + "Variations des stocks de biens achet\u00e9s": { + "Variations des stocks de marchandises": { + "account_number": "6031" + }, + "Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "6032" + }, + "Variations des stocks d\u2019autres approvisionnements": { + "account_number": "6033" + }, + "account_number": "603" + }, + "Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "Mati\u00e8res consommables": { + "account_number": "6041" + }, + "Mati\u00e8res combustibles": { + "account_number": "6042" + }, + "Produits d\u2019entretien": { + "account_number": "6043" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "6044" + }, + "Frais sur achat": { + "account_number": "6045" + }, + "Fournitures de magasin": { + "account_number": "6046" + }, + "Fournitures de bureau": { + "account_number": "6047" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6049" + }, + "account_number": "604" + }, + "Autres achats": { + "Fournitures non stockables Eau": { + "account_number": "6051" + }, + "Fournitures non stockables \u00c9lectricit\u00e9": { + "account_number": "6052" + }, + "Fournitures non stockables Autres \u00e9nergies": { + "account_number": "6053" + }, + "Fournitures d\u2019entretien non stockables": { + "account_number": "6054" + }, + "Fournitures de bureau non stockables": { + "account_number": "6055" + }, + "Achats de petit mat\u00e9riel et outillage": { + "account_number": "6056" + }, + "Achats d\u2019\u00e9tudes et prestations de services": { + "account_number": "6057" + }, + "Achats de travaux, mat\u00e9riels et \u00e9quipements": { + "account_number": "6058" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6059" + }, + "account_number": "605" + }, + "Achats d\u2019emballages": { + "Emballages perdus": { + "account_number": "6081" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "6082" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "6083" + }, + "Frais sur achats": { + "account_number": "6085" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6089" + }, + "account_number": "608" + }, + "account_number": "60" + }, + "Transports": { + "Transports sur ventes": { + "account_number": "612" + }, + "Transports pour le compte de tiers": { + "account_number": "613" + }, + "Transports du personnel": { + "account_number": "614" + }, + "Transports de plis": { + "account_number": "616" + }, + "Autres frais de transport": { + "Voyages et d\u00e9placements": { + "account_number": "6181" + }, + "Transports entre \u00e9tablissements ou chantiers": { + "account_number": "6182" + }, + "Transports administratifs": { + "account_number": "6183" + }, + "account_number": "618" + }, + "account_number": "61" + }, + "Services ext\u00e9rieurs": { + "Sous-traitance g\u00e9n\u00e9rale": { + "account_number": "621" + }, + "Locations, charges locatives": { + "Locations de terrains": { + "account_number": "6221" + }, + "Locations de b\u00e2timents": { + "account_number": "6222" + }, + "Locations de mat\u00e9riels et outillages": { + "account_number": "6223" + }, + "Malis sur emballages": { + "account_number": "6224" + }, + "Locations d\u2019emballages": { + "account_number": "6225" + }, + "Fermages et loyers du foncier": { + "account_number": "6226" + }, + "Locations et charges locatives diverses": { + "account_number": "6228" + }, + "account_number": "622" + }, + "Redevances de location acquisition": { + "Cr\u00e9dit-bail immobilier": { + "account_number": "6232" + }, + "Cr\u00e9dit-bail mobilier": { + "account_number": "6233" + }, + "Location-vente": { + "account_number": "6234" + }, + "Autres contrats de location acquisition": { + "account_number": "6238" + }, + "account_number": "623" + }, + "Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "Entretien et r\u00e9parations des biens immobiliers": { + "account_number": "6241" + }, + "Entretien et r\u00e9parations des biens mobiliers": { + "account_number": "6242" + }, + "Maintenance": { + "account_number": "6243" + }, + "Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "6244" + }, + "Autres entretiens et r\u00e9parations": { + "account_number": "6248" + }, + "account_number": "624" + }, + "Primes d\u2019assurance": { + "Assurances multirisques": { + "account_number": "6251" + }, + "Assurances mat\u00e9riel de transport": { + "account_number": "6252" + }, + "Assurances risques d\u2019exploitation": { + "account_number": "6253" + }, + "Assurances responsabilit\u00e9 du producteur": { + "account_number": "6254" + }, + "Assurances insolvabilit\u00e9 clients": { + "account_number": "6255" + }, + "Assurances transport sur ventes": { + "account_number": "6257" + }, + "Autres primes d\u2019assurances": { + "account_number": "6258" + }, + "account_number": "625" + }, + "\u00c9tudes, recherches et documentation": { + "\u00c9tudes et recherches": { + "account_number": "6261" + }, + "Documentation g\u00e9n\u00e9rale": { + "account_number": "6265" + }, + "Documentation technique": { + "account_number": "6266" + }, + "account_number": "626" + }, + "Publicit\u00e9, publications, relations publiques": { + "Annonces, insertions": { + "account_number": "6271" + }, + "Catalogues, imprim\u00e9s publicitaires": { + "account_number": "6272" + }, + "\u00c9chantillons": { + "account_number": "6273" + }, + "Foires et expositions": { + "account_number": "6274" + }, + "Publications": { + "account_number": "6275" + }, + "Cadeaux \u00e0 la client\u00e8le": { + "account_number": "6276" + }, + "Frais de colloques, s\u00e9minaires, conf\u00e9rences": { + "account_number": "6277" + }, + "Autres charges de publicit\u00e9 et relations publiques": { + "account_number": "6278" + }, + "account_number": "627" + }, + "Frais de t\u00e9l\u00e9communications": { + "Frais de t\u00e9l\u00e9phone": { + "account_number": "6281" + }, + "Frais de t\u00e9lex": { + "account_number": "6282" + }, + "Frais de t\u00e9l\u00e9copie": { + "account_number": "6283" + }, + "Autres frais de t\u00e9l\u00e9communications": { + "account_number": "6288" + }, + "account_number": "628" + }, + "account_number": "62" + }, + "Autres services ext\u00e9rieurs": { + "Frais bancaires": { + "Frais sur titres (vente, garde)": { + "account_number": "6311" + }, + "Frais sur effets": { + "account_number": "6312" + }, + "Location de coffres": { + "account_number": "6313" + }, + "Commissions d\u2019affacturage": { + "account_number": "6314" + }, + "Commissions sur cartes de cr\u00e9dit": { + "account_number": "6315" + }, + "Frais d\u2019\u00e9mission d\u2019emprunts": { + "account_number": "6316" + }, + "Frais sur instruments monnaie \u00e9lectronique": { + "account_number": "6317" + }, + "Autres frais bancaires": { + "account_number": "6318" + }, + "account_number": "631" + }, + "R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "Commissions et courtages sur ventes": { + "account_number": "6322" + }, + "Honoraires des professions r\u00e9glement\u00e9es": { + "account_number": "6324" + }, + "Frais d\u2019actes et de contentieux": { + "account_number": "6325" + }, + "R\u00e9mun\u00e9rations d\u2019affacturage": { + "account_number": "6326" + }, + "R\u00e9mun\u00e9rations des autres prestataires de services": { + "account_number": "6327" + }, + "Divers frais": { + "account_number": "6328" + }, + "account_number": "632" + }, + "Frais de formation du personnel": { + "account_number": "633" + }, + "Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "Redevances pour brevets, licences": { + "account_number": "6342" + }, + "Redevances pour logiciels": { + "account_number": "6343" + }, + "Redevances pour marques": { + "account_number": "6344" + }, + "Redevances pour sites internet": { + "account_number": "6345" + }, + "Redevances pour concessions, droits et valeurs similaires": { + "account_number": "6346" + }, + "account_number": "634" + }, + "Cotisations": { + "Cotisations": { + "account_number": "6351" + }, + "Concours divers": { + "account_number": "6358" + }, + "account_number": "635" + }, + "R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "Personnel int\u00e9rimaire": { + "account_number": "6371" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6372" + }, + "account_number": "637" + }, + "Autres charges externes": { + "Frais de recrutement du personnel": { + "account_number": "6381" + }, + "Frais de d\u00e9m\u00e9nagement": { + "account_number": "6382" + }, + "R\u00e9ceptions": { + "account_number": "6383" + }, + "Missions": { + "account_number": "6384" + }, + "Charges de copropri\u00e9t\u00e9": { + "account_number": "6385" + }, + "account_number": "638" + }, + "account_number": "63" + }, + "Imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes directs": { + "Imp\u00f4ts fonciers et taxes annexes": { + "account_number": "6411" + }, + "Patentes, licences et taxes annexes": { + "account_number": "6412" + }, + "Taxes sur appointements et salaires": { + "account_number": "6413" + }, + "Taxes d\u2019apprentissage": { + "account_number": "6414" + }, + "Formation professionnelle continue": { + "account_number": "6415" + }, + "Autres imp\u00f4ts et taxes directs": { + "account_number": "6418" + }, + "account_number": "641" + }, + "Imp\u00f4ts et taxes indirects": { + "account_number": "645" + }, + "Droits d\u2019enregistrement": { + "Droits de mutation": { + "account_number": "6461" + }, + "Droits de timbre": { + "account_number": "6462" + }, + "Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": { + "account_number": "6463" + }, + "Vignettes": { + "account_number": "6464" + }, + "Autres droits": { + "account_number": "6468" + }, + "account_number": "646" + }, + "P\u00e9nalit\u00e9s, amendes fiscales": { + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": { + "account_number": "6471" + }, + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": { + "account_number": "6472" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": { + "account_number": "6473" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": { + "account_number": "6474" + }, + "Autres p\u00e9nalit\u00e9s et amendes fiscales": { + "account_number": "6478" + }, + "account_number": "647" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "648" + }, + "account_number": "64" + }, + "Autres charges": { + "Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "Clients": { + "account_number": "6511" + }, + "Autres d\u00e9biteurs": { + "account_number": "6515" + }, + "account_number": "651" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "6521" + }, + "Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "6525" + }, + "account_number": "652" + }, + "Valeurs comptables des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "6541" + }, + "Immobilisations corporelles": { + "account_number": "6542" + }, + "account_number": "654" + }, + "Perte de change sur cr\u00e9ances et dettes commerciale": { + "account_number": "656" + }, + "P\u00e9nalit\u00e9s et amendes p\u00e9nales": { + "account_number": "657" + }, + "Charges diverses": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "6581" + }, + "Dons": { + "account_number": "6582" + }, + "M\u00e9c\u00e9nat": { + "account_number": "6583" + }, + "Autres charges diverses": { + "account_number": "6588" + }, + "account_number": "658" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "6591" + }, + "Sur stocks": { + "account_number": "6593" + }, + "Sur cr\u00e9ances": { + "account_number": "6594" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": { + "account_number": "6598" + }, + "account_number": "659" + }, + "account_number": "65" + }, + "Charges de personnel": { + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "Appointements salaires et commissions": { + "account_number": "6611" + }, + "Primes et gratifications": { + "account_number": "6612" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6613" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6614" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6615" + }, + "Suppl\u00e9ment familial": { + "account_number": "6616" + }, + "Avantages en nature": { + "account_number": "6617" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6618" + }, + "account_number": "661" + }, + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "Appointements salaires et commissions": { + "account_number": "6621" + }, + "Primes et gratifications": { + "account_number": "6622" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6623" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6624" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6625" + }, + "Suppl\u00e9ment familial": { + "account_number": "6626" + }, + "Avantages en nature": { + "account_number": "6627" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6628" + }, + "account_number": "662" + }, + "Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "Indemnit\u00e9s de logement": { + "account_number": "6631" + }, + "Indemnit\u00e9s de repr\u00e9sentation": { + "account_number": "6632" + }, + "Indemnit\u00e9s d\u2019expatriation": { + "account_number": "6633" + }, + "Indemnit\u00e9s de transport": { + "account_number": "6634" + }, + "Autres indemnit\u00e9s et avantages divers": { + "account_number": "6638" + }, + "account_number": "663" + }, + "Charges sociales": { + "Charges sociales sur r\u00e9mun\u00e9ration du personnel national": { + "account_number": "6641" + }, + "Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": { + "account_number": "6642" + }, + "account_number": "664" + }, + "R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "R\u00e9mun\u00e9ration du travail de l\u2019exploitant": { + "account_number": "6661" + }, + "Charges sociales": { + "account_number": "6662" + }, + "account_number": "666" + }, + "R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "Personnel int\u00e9rimaire": { + "account_number": "6671" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6672" + }, + "account_number": "667" + }, + "Autres charges sociales": { + "Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": { + "account_number": "6681" + }, + "Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": { + "account_number": "6682" + }, + "Versements et contributions aux autres \u0153uvres sociales": { + "account_number": "6683" + }, + "M\u00e9decine du travail et pharmacie": { + "account_number": "6684" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "6685" + }, + "Assurances retraite et fonds de pension": { + "account_number": "6686" + }, + "Majorations et p\u00e9nalit\u00e9s sociales": { + "account_number": "6687" + }, + "Charges sociales diverses": { + "account_number": "6688" + }, + "account_number": "668" + }, + "account_number": "66" + }, + "Frais financiers et charges assimil\u00e9es": { + "Int\u00e9r\u00eats des emprunts": { + "Emprunts obligataires": { + "account_number": "6711" + }, + "Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "6712" + }, + "Dettes li\u00e9es \u00e0 des participations": { + "account_number": "6713" + }, + "Primes de remboursement des obligations": { + "account_number": "6714" + }, + "account_number": "671" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "6722" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "6723" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": { + "account_number": "6724" + }, + "Int\u00e9r\u00eats dans loyers des autres locations acquisition": { + "account_number": "6728" + }, + "account_number": "672" + }, + "Escomptes accord\u00e9s": { + "account_number": "673" + }, + "Autres int\u00e9r\u00eats": { + "Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": { + "account_number": "6741" + }, + "Comptes courants bloqu\u00e9s": { + "account_number": "6742" + }, + "Int\u00e9r\u00eats sur obligations cautionn\u00e9es": { + "account_number": "6743" + }, + "Int\u00e9r\u00eats sur dettes commerciales": { + "account_number": "6744" + }, + "Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": { + "account_number": "6745" + }, + "Int\u00e9r\u00eats sur dettes diverses": { + "account_number": "6748" + }, + "account_number": "674" + }, + "Escomptes des effets de commerce": { + "account_number": "675" + }, + "Pertes de change financi\u00e8res": { + "account_number": "676" + }, + "Pertes sur titres de placement": { + "Pertes sur cessions de titres de placement": { + "account_number": "6771" + }, + "Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "6772" + }, + "account_number": "677" + }, + "Pertes et charges sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "6781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "6782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "6784" + }, + "account_number": "678" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "6791" + }, + "Sur titres de placement": { + "account_number": "6795" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "6798" + }, + "account_number": "679" + }, + "account_number": "67" + }, + "Dotations aux amortissements": { + "Dotations aux amortissements d\u2019exploitation": { + "Dotations aux amortissements des immobilisations incorporelles": { + "account_number": "6812" + }, + "Dotations aux amortissements des immobilisations corporelles": { + "account_number": "6813" + }, + "account_number": "681" + }, + "account_number": "68" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6911" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "account_number": "6913" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": { + "account_number": "6914" + }, + "account_number": "691" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6971" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": { + "account_number": "6972" + }, + "account_number": "697" + }, + "account_number": "69" + }, + "root_type": "Expense", + "account_number": "6" + }, + "Comptes de produits des activit\u00e9s ordinaires": { + "Ventes": { + "Ventes de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "7011" + }, + "Hors R\u00e9gion": { + "account_number": "7012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7014" + }, + "Sur internet": { + "account_number": "7015" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7019" + }, + "account_number": "701" + }, + "Ventes de produits finis": { + "Dans la R\u00e9gion": { + "account_number": "7021" + }, + "Hors R\u00e9gion": { + "account_number": "7022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7024" + }, + "Sur internet": { + "account_number": "7025" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7029" + }, + "account_number": "702" + }, + "Ventes de produits interm\u00e9diaires": { + "Dans la R\u00e9gion": { + "account_number": "7031" + }, + "Hors R\u00e9gion": { + "account_number": "7032" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7033" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7034" + }, + "Sur internet": { + "account_number": "7035" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7039" + }, + "account_number": "703" + }, + "Ventes de produits r\u00e9siduels": { + "Dans la R\u00e9gion": { + "account_number": "7041" + }, + "Hors R\u00e9gion": { + "account_number": "7042" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7043" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7044" + }, + "Sur internet": { + "account_number": "7045" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7049" + }, + "account_number": "704" + }, + "Travaux factur\u00e9s": { + "Dans la R\u00e9gion": { + "account_number": "7051" + }, + "Hors R\u00e9gion": { + "account_number": "7052" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7053" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7054" + }, + "Sur internet": { + "account_number": "7055" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7059" + }, + "account_number": "705" + }, + "Services vendus": { + "Dans la R\u00e9gion": { + "account_number": "7061" + }, + "Hors R\u00e9gion": { + "account_number": "7062" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7063" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7064" + }, + "Sur internet": { + "account_number": "7065" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7069" + }, + "account_number": "706" + }, + "Produits accessoires": { + "Ports, emballages perdus et autres frais factur\u00e9s": { + "account_number": "7071" + }, + "Commissions et courtages": { + "account_number": "7072" + }, + "Locations": { + "account_number": "7073" + }, + "Bonis sur reprises et cessions d\u2019emballages": { + "account_number": "7074" + }, + "Mise \u00e0 disposition de personnel": { + "account_number": "7075" + }, + "Redevances pour brevets, logiciels, marques et droits similaires": { + "account_number": "7076" + }, + "Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": { + "account_number": "7077" + }, + "Autres produits accessoires": { + "account_number": "7078" + }, + "account_number": "707" + }, + "account_number": "70" + }, + "Subventions d\u2019exploitation": { + "Sur produits \u00e0 l\u2019exportation": { + "account_number": "711" + }, + "Sur produits \u00e0 l\u2019importation": { + "account_number": "712" + }, + "Sur produits de p\u00e9r\u00e9quation": { + "account_number": "713" + }, + "Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": { + "account_number": "714" + }, + "Autres subventions d\u2019exploitation": { + "Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": { + "account_number": "7181" + }, + "Vers\u00e9es par les organismes internationaux": { + "account_number": "7182" + }, + "Vers\u00e9es par des tiers": { + "account_number": "7183" + }, + "account_number": "718" + }, + "account_number": "71" + }, + "Production immobilis\u00e9e": { + "Immobilisations incorporelles": { + "account_number": "721" + }, + "Immobilisations corporelles": { + "Immobilisations corporelles (hors actifs biologiques)": { + "account_number": "7221" + }, + "Immobilisations corporelles (actifs biologiques)": { + "account_number": "7222" + }, + "account_number": "722" + }, + "Production auto-consomm\u00e9e": { + "account_number": "724" + }, + "Immobilisations financi\u00e8res": { + "account_number": "726" + }, + "account_number": "72" + }, + "Variations des stocks de biens et de services produits": { + "Variations des stocks de produits en cours": { + "Produits en cours": { + "account_number": "7341" + }, + "Travaux en cours": { + "account_number": "7342" + }, + "account_number": "734" + }, + "Variations des en-cours de services": { + "\u00c9tudes en cours": { + "account_number": "7351" + }, + "Prestations de services en cours": { + "account_number": "7352" + }, + "account_number": "735" + }, + "Variations des stocks de produits finis": { + "account_number": "736" + }, + "Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "account_number": "7371" + }, + "Produits r\u00e9siduels": { + "account_number": "7372" + }, + "account_number": "737" + }, + "account_number": "73" + }, + "Autres produits": { + "Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "account_number": "751" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "7521" + }, + "B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "7525" + }, + "account_number": "752" + }, + "Produits des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "7541" + }, + "Immobilisations corporelles": { + "account_number": "7542" + }, + "account_number": "754" + }, + "Gains de change sur cr\u00e9ances et dettes commerciales": { + "account_number": "756" + }, + "Produits divers": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "7581" + }, + "Indemnit\u00e9s d\u2019assurances re\u00e7ues": { + "account_number": "7582" + }, + "Autres produits divers": { + "account_number": "7588" + }, + "account_number": "758" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "7591" + }, + "Sur stocks": { + "account_number": "7593" + }, + "Sur cr\u00e9ances": { + "account_number": "7594" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "account_number": "7598" + }, + "account_number": "759" + }, + "account_number": "75" + }, + "Revenus financiers et produits assimil\u00e9s": { + "Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "Int\u00e9r\u00eats de pr\u00eats": { + "account_number": "7712" + }, + "Int\u00e9r\u00eats sur cr\u00e9ances diverses": { + "account_number": "7713" + }, + "account_number": "771" + }, + "Revenus de participations et autres titres immobilis\u00e9s": { + "Revenus des titres de participation": { + "account_number": "7721" + }, + "Revenus autres titres immobilis\u00e9s": { + "account_number": "7722" + }, + "account_number": "772" + }, + "Escomptes obtenus": { + "account_number": "773" + }, + "Revenus de placement": { + "Revenus des obligations": { + "account_number": "7745" + }, + "Revenus des titres de placement": { + "account_number": "7746" + }, + "account_number": "774" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "account_number": "775" + }, + "Gains de change financiers": { + "account_number": "776" + }, + "Gains sur cessions de titres de placement": { + "account_number": "777" + }, + "Gains sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "7781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "7782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "7784" + }, + "account_number": "778" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "7791" + }, + "Sur titres de placement": { + "account_number": "7795" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "7798" + }, + "account_number": "779" + }, + "account_number": "77" + }, + "Transferts de charges": { + "Transferts de charges d\u2019exploitation": { + "account_number": "781" + }, + "Transferts de charges financi\u00e8res": { + "account_number": "787" + }, + "account_number": "78" + }, + "Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Pour risques et charges": { + "account_number": "7911" + }, + "Des immobilisations incorporelles": { + "account_number": "7913" + }, + "Des immobilisations corporelles": { + "account_number": "7914" + }, + "account_number": "791" + }, + "Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "Pour risques et charges": { + "account_number": "7971" + }, + "Des immobilisations financi\u00e8res": { + "account_number": "7972" + }, + "account_number": "797" + }, + "Reprises d\u2019amortissements": { + "account_number": "798" + }, + "Reprises de subventions d\u2019investissement": { + "account_number": "799" + }, + "account_number": "79" + }, + "root_type": "Income", + "account_number": "7" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "Valeurs comptables des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "811" + }, + "Immobilisations corporelles": { + "account_number": "812" + }, + "Immobilisations financi\u00e8res": { + "account_number": "816" + }, + "account_number": "81" + }, + "Charges hors activit\u00e9s ordinaires": { + "Charges HAO constat\u00e9es": { + "account_number": "831" + }, + "Charges li\u00e9es aux op\u00e9rations de restructuration": { + "account_number": "833" + }, + "Pertes sur cr\u00e9ances HAO": { + "account_number": "834" + }, + "Dons et lib\u00e9ralit\u00e9s accord\u00e9s": { + "account_number": "835" + }, + "Abandons de cr\u00e9ances consentis": { + "account_number": "836" + }, + "Charges li\u00e9es aux op\u00e9rations de liquidation": { + "account_number": "837" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "839" + }, + "account_number": "83" + }, + "Dotations hors activit\u00e9s ordinaires": { + "Dotations aux provisions r\u00e9glement\u00e9es": { + "account_number": "851" + }, + "Dotations aux amortissements HAO": { + "account_number": "852" + }, + "Dotations aux d\u00e9pr\u00e9ciations HAO": { + "account_number": "853" + }, + "Dotations aux provisions pour risques et charges HAO": { + "account_number": "854" + }, + "Autres dotations HAO": { + "account_number": "858" + }, + "account_number": "85" + }, + "Participation des travailleurs": { + "Participation l\u00e9gale aux b\u00e9n\u00e9fices": { + "account_number": "871" + }, + "Participation contractuelle aux b\u00e9n\u00e9fices": { + "account_number": "874" + }, + "Autres participations": { + "account_number": "878" + }, + "account_number": "87" + }, + "Imp\u00f4ts sur le r\u00e9sultat": { + "Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": { + "account_number": "8911" + }, + "Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": { + "account_number": "8912" + }, + "Activit\u00e9s exerc\u00e9es hors R\u00e9gion": { + "account_number": "8913" + }, + "account_number": "891" + }, + "Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "account_number": "892" + }, + "Imp\u00f4t minimum forfaitaire IMF": { + "account_number": "895" + }, + "D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "D\u00e9gr\u00e8vements": { + "account_number": "8991" + }, + "Annulations pour pertes r\u00e9troactives": { + "account_number": "8994" + }, + "account_number": "899" + }, + "account_number": "89" + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "Produits des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "821" + }, + "Immobilisations corporelles": { + "account_number": "822" + }, + "Immobilisations financi\u00e8res": { + "account_number": "826" + }, + "account_number": "82" + }, + "Produits hors activit\u00e9s ordinaires": { + "Produits HAO constat\u00e9s": { + "account_number": "841" + }, + "Produits li\u00e9s aux op\u00e9rations de restructuration": { + "account_number": "843" + }, + "Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": { + "account_number": "844" + }, + "Dons et lib\u00e9ralit\u00e9s obtenus": { + "account_number": "845" + }, + "Abandons de cr\u00e9ances obtenus": { + "account_number": "846" + }, + "Produits li\u00e9s aux op\u00e9rations de liquidation": { + "account_number": "847" + }, + "Transferts de charges HAO": { + "account_number": "848" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "849" + }, + "account_number": "84" + }, + "Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "Reprises de provisions r\u00e9glement\u00e9es": { + "account_number": "861" + }, + "Reprises d\u2019amortissements HAO": { + "account_number": "862" + }, + "Reprises de d\u00e9pr\u00e9ciations HAO": { + "account_number": "863" + }, + "Reprises de provisions pour risques et charges HAO": { + "account_number": "864" + }, + "Autres reprises HAO": { + "account_number": "868" + }, + "account_number": "86" + }, + "Subventions d\u2019\u00e9quilibre": { + "\u00c9tat": { + "account_number": "881" + }, + "Collectivit\u00e9s publiques": { + "account_number": "884" + }, + "Groupe": { + "account_number": "886" + }, + "Autres": { + "account_number": "888" + }, + "account_number": "88" + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/cm_plan_comptable.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/cm_plan_comptable.json new file mode 100644 index 00000000000..7ca9888457e --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/cm_plan_comptable.json @@ -0,0 +1,1919 @@ +{ + "country_code": "cm", + "name": "Syscohada - Plan Comptable", + "tree": { + "1-Comptes de ressources durables": { + "10-Capital": { + "101-Capital social": { + "1011-Capital souscrit, non appel\u00e9": {}, + "1012-Capital souscrit, appel\u00e9, non vers\u00e9": {}, + "1013-Capital souscrit, appel\u00e9, vers\u00e9, non amorti": {}, + "1014-Capital souscrit, appel\u00e9, vers\u00e9, amorti": {}, + "1018-Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": {} + }, + "102-Capital par dotation": { + "1021-Dotation initiale": {}, + "1022-Dotations compl\u00e9mentaires": {}, + "1028-Autres dotations": {} + }, + "103-Capital personnel": {}, + "104-Compte de l\u2019exploitant": { + "1041-Apports temporaires": {}, + "1042-Op\u00e9rations courantes": {}, + "1043-R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": {}, + "1047-Pr\u00e9l\u00e8vements d\u2019autoconsommation": {}, + "1048-Autres pr\u00e9l\u00e8vements": {} + }, + "105-Primes li\u00e9es au capital social": { + "1051-Primes d\u2019\u00e9mission": {}, + "1052-Primes d\u2019apport": {}, + "1053-Primes de fusion": {}, + "1054-Primes de conversion": {}, + "1058-Autres primes": {} + }, + "106-\u00c9carts de r\u00e9\u00e9valuation": { + "1061-\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": {}, + "1062-\u00c9carts de r\u00e9\u00e9valuation libre": {} + }, + "109-Apporteurs, capital souscrit, non appel\u00e9": {} + }, + "11-R\u00e9serves": { + "111-R\u00e9serve l\u00e9gale": {}, + "112-R\u00e9serves statutaires ou contractuelles": {}, + "113-R\u00e9serves r\u00e9glement\u00e9es": { + "1131-R\u00e9serves de plus-values nettes \u00e0 long terme": {}, + "1132-R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {}, + "1133-R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": {}, + "1134-R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": {}, + "1135-Autres r\u00e9serves r\u00e9glement\u00e9es": {} + }, + "118-Autres r\u00e9serves": { + "1181-R\u00e9serves facultatives": {}, + "1188-R\u00e9serves diverses": {} + } + }, + "12-Report \u00e0 nouveau": { + "121-Report \u00e0 nouveau cr\u00e9diteur": {}, + "129-Report \u00e0 nouveau d\u00e9biteur": { + "1291-Perte nette \u00e0 reporter": {}, + "1292-Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": {} + } + }, + "13-R\u00e9sultat net de l\u2019exercice": { + "130-R\u00e9sultat en instance d\u2019affectation": { + "1301-R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": {}, + "1309-R\u00e9sultat en instance d\u2019affectation : perte": {} + }, + "131-R\u00e9sultat net : b\u00e9n\u00e9fice": {}, + "132-Marge commerciale (MC)": {}, + "133-Valeur ajout\u00e9e (VA)": {}, + "134-Exc\u00e9dent brut d\u2019exploitation (EBE)": {}, + "135-R\u00e9sultat d\u2019exploitation (RE)": {}, + "136-R\u00e9sultat financier (RF)": {}, + "137-R\u00e9sultat des activit\u00e9s ordinaires (RAO)": {}, + "138-R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "1381-R\u00e9sultat de fusion": {}, + "1382-R\u00e9sultat d\u2019apport partiel d\u2019actif": {}, + "1383-R\u00e9sultat de scission": {}, + "1384-R\u00e9sultat de liquidation": {} + }, + "139-R\u00e9sultat net : perte": {} + }, + "14-Subventions d\u2019investissement": { + "141-Subventions d\u2019\u00e9quipement": { + "1411-\u00c9tat": {}, + "1412-R\u00e9gions": {}, + "1413-D\u00e9partements": {}, + "1414-Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": {}, + "1415-Entit\u00e9s publiques ou mixtes": {}, + "1416-Entit\u00e9s et organismes priv\u00e9s": {}, + "1417-Organismes internationaux": {}, + "1418-Autres": {} + }, + "148-Autres subventions d\u2019investissement": {} + }, + "15-Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "151-Amortissements d\u00e9rogatoires": {}, + "152-Plus-values de cession \u00e0 r\u00e9investir": {}, + "153-Fonds r\u00e9glement\u00e9s": { + "1531-Fonds National": {}, + "1532-Pr\u00e9l\u00e8vement pour le Budget": {} + }, + "154-Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": {}, + "155-Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "1551-Reconstitution des gisements miniers et p\u00e9troliers": {} + }, + "156-Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "1561-Hausse de prix": {}, + "1562-Fluctuation des cours": {} + }, + "157-Provisions pour investissement": {}, + "158-Autres provisions et fonds r\u00e9glement\u00e9s": {} + }, + "16-Emprunts et dettes assimil\u00e9es": { + "161-Emprunts obligataires": { + "1611-Emprunts obligataires ordinaires": {}, + "1612-Emprunts obligataires convertibles en actions": {}, + "1613-Emprunts obligataires remboursables en actions": {}, + "1618-Autres emprunts obligataires": {} + }, + "162-Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "163-Avances re\u00e7ues de l\u2019\u00c9tat": {}, + "164-Avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "165-D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "1651-D\u00e9p\u00f4ts": {}, + "1652-Cautionnements": {} + }, + "166-Int\u00e9r\u00eats courus": { + "1661-Sur emprunts obligataires": {}, + "1662-Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "1663-Sur avances re\u00e7ues de l\u2019\u00c9tat": {}, + "1664-Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "1665-Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": {}, + "1667-Sur avances assorties de conditions particuli\u00e8res": {}, + "1668-Sur autres emprunts et dettes": {} + }, + "167-Avances assorties de conditions particuli\u00e8res": { + "1671-Avances bloqu\u00e9es pour augmentation du capital": {}, + "1672-Avances conditionn\u00e9es par l\u2019\u00c9tat": {}, + "1673-Avances conditionn\u00e9es par les autres organismes africains": {}, + "1674-Avances conditionn\u00e9es par les organismes internationaux": {} + }, + "168-Autres emprunts et dettes": { + "1681-Rentes viag\u00e8res capitalis\u00e9es": {}, + "1682-Billets de fonds": {}, + "1683-Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": {}, + "1684-Emprunts participatifs": {}, + "1685-Participation des travailleurs aux b\u00e9n\u00e9fices": {}, + "1686-Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": {} + } + }, + "17-Dettes de location acquisition": { + "172-Dettes de location acquisition / cr\u00e9dit bail immobilier": {}, + "173-Dettes de location acquisition / cr\u00e9dit bail mobilier": {}, + "174-Dettes de location acquisition / location de vente": {}, + "176-Int\u00e9r\u00eats courus": { + "1762-Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": {}, + "1763-Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": {}, + "1764-Sur dettes de location acquisition / location-vente": {}, + "1768-Sur autres dettes de location acquisition": {} + }, + "178-Autres dettes de location acquisition": {} + }, + "18-Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "181-Dettes li\u00e9es \u00e0 des participations": { + "1811-Dettes li\u00e9es \u00e0 des participations (groupe)": {}, + "1812-Dettes li\u00e9es \u00e0 des participations (hors groupe)": {} + }, + "182-Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "183-Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": {}, + "184-Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "185-Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "186-Comptes de liaison charges": {}, + "187-Comptes de liaison produits": {}, + "188-Comptes de liaison des soci\u00e9t\u00e9s en participation": {} + }, + "19-Provisions pour risques et charges": { + "191-Provisions pour litiges": {}, + "192-Provisions pour garanties donn\u00e9es aux clients": {}, + "193-Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": {}, + "194-Provisions pour pertes de change": {}, + "195-Provisions pour imp\u00f4ts": {}, + "196-Provisions pour pensions et obligations similaires": { + "1961-Provisions pour pensions et obligations similaires engagement de retraite": {}, + "1962-Actif du r\u00e9gime de retraite": {} + }, + "197-Provisions pour restructuration": {}, + "198-Autres provisions pour risques et charges": { + "1981-Provisions pour amendes et p\u00e9nalit\u00e9s": {}, + "1983-Provisions pour propre assureur": {}, + "1984-Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "1985-Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": {}, + "1988-Provisions pour divers risques et charges": {} + } + }, + "root_type": "Equity" + }, + "2-Comptes d\u2019actif immobilis\u00e9": { + "21-Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "211-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "212-Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "2121-Brevets": { + "account_type": "Fixed Asset" + }, + "2122-Licences": { + "account_type": "Fixed Asset" + }, + "2123-Concessions de service public": { + "account_type": "Fixed Asset" + }, + "2128-Autres concessions et droits similaires": { + "account_type": "Fixed Asset" + } + }, + "213-Logiciels et sites internet": { + "account_type": "Fixed Asset", + "2131-Logiciels": { + "account_type": "Fixed Asset" + }, + "2132-Sites internet": { + "account_type": "Fixed Asset" + } + }, + "214-Marques": { + "account_type": "Fixed Asset" + }, + "215-Fonds commercial": { + "account_type": "Fixed Asset" + }, + "216-Droit au bail": { + "account_type": "Fixed Asset" + }, + "217-Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset" + }, + "218-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "2181-Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset" + }, + "2182-Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset" + }, + "2183-Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset" + }, + "2184-Co\u00fbts des franchises": { + "account_type": "Fixed Asset" + }, + "2188-Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset" + } + }, + "219-Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "2191-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "2193-Logiciels et internet": { + "account_type": "Fixed Asset" + }, + "2198-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset" + } + } + }, + "22-Terrains": { + "account_type": "Fixed Asset", + "221-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "2211-Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset" + }, + "2212-Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset" + }, + "2218-Autres terrains": { + "account_type": "Fixed Asset" + } + }, + "222-Terrains nus": { + "account_type": "Fixed Asset", + "2221-Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset" + }, + "2228-Autres terrains nus": { + "account_type": "Fixed Asset" + } + }, + "223-Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "2231-Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset" + }, + "2232-Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset" + }, + "2234-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset" + }, + "2235-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset" + }, + "2238-Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset" + } + }, + "224-Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "2241-Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset" + }, + "2245-Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset" + }, + "2248-Autres travaux": { + "account_type": "Fixed Asset" + } + }, + "225-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "2251-Carri\u00e8res": { + "account_type": "Fixed Asset" + } + }, + "226-Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "2261-Parkings": { + "account_type": "Fixed Asset" + } + }, + "227-Terrains mis en concession": { + "account_type": "Fixed Asset" + }, + "228-Autres terrains": { + "account_type": "Fixed Asset", + "2281-Terrains immeubles de placement": { + "account_type": "Fixed Asset" + }, + "2285-Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset" + }, + "2286-Terrains de location acquisition": { + "account_type": "Fixed Asset" + }, + "2288-Divers terrains": { + "account_type": "Fixed Asset" + } + }, + "229-Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "2291-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset" + }, + "2292-Terrains nus": { + "account_type": "Fixed Asset" + }, + "2295-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset" + }, + "2298-Autres terrains": { + "account_type": "Fixed Asset" + } + } + }, + "23-B\u00e2timents, installations techniques et agencements": { + "231-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "2311-B\u00e2timents industriels": {}, + "2312-B\u00e2timents agricoles": {}, + "2313-B\u00e2timents administratifs et commerciaux": {}, + "2314-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2315-B\u00e2timents immeubles de placement": {}, + "2316-B\u00e2timents de location acquisition": {} + }, + "232-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "2321-B\u00e2timents industriels": {}, + "2322-B\u00e2timents agricoles": {}, + "2323-B\u00e2timents administratifs et commerciaux": {}, + "2324-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2325-B\u00e2timents immeubles de placement": {}, + "2326-B\u00e2timents de location acquisition": {} + }, + "233-Ouvrages d\u2019infrastructure": { + "2331-Voies de terre": {}, + "2332-Voies de fer": {}, + "2333-Voies d\u2019eau": {}, + "2334-Barrages, Digues": {}, + "2335-Pistes d\u2019a\u00e9rodrome": {}, + "2338-Autres ouvrages d\u2019infrastructures": {} + }, + "234-Am\u00e9nagements, agencements et installations techniques": { + "2341-Installations complexes sp\u00e9cialis\u00e9es sur sol propre": {}, + "2342-Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": {}, + "2343-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": {}, + "2344-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": {}, + "2345-Am\u00e9nagements et agencements des b\u00e2timents": {} + }, + "235-Am\u00e9nagements de bureaux": { + "2351-Installations g\u00e9n\u00e9rales": {}, + "2358-Autres am\u00e9nagements de bureaux": {} + }, + "237-B\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "238-Autres installations et agencements": {}, + "239-B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "2391-B\u00e2timents en cours": {}, + "2392-Installations en cours": {}, + "2393-Ouvrages d\u2019infrastructure en cours": {}, + "2394-Am\u00e9nagements et agencements et installations techniques en cours": {}, + "2395-Am\u00e9nagements de bureaux en cours": {}, + "2398-Autres installations et agencements en cours": {} + } + }, + "24-Mat\u00e9riel, mobilier et actifs biologiques": { + "241-Mat\u00e9riel et outillage industriel et commercial": { + "2411-Mat\u00e9riel industriel": {}, + "2412-Outillage industriel": {}, + "2413-Mat\u00e9riel commercial": {}, + "2414-Outillage commercial": {}, + "2416-Mat\u00e9riel & outillage industriel et commercial de location-acquisition": {} + }, + "242-Mat\u00e9riel et outillage agricole": { + "2421-Mat\u00e9riel agricole": {}, + "2422-Outillage agricole": {}, + "2426-Mat\u00e9riel & outillage agricole de location-acquisition": {} + }, + "243-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "244-Mat\u00e9riel et mobilier": { + "2441-Mat\u00e9riel de bureau": {}, + "2442-Mat\u00e9riel informatique": {}, + "2443-Mat\u00e9riel bureautique": {}, + "2444-Mobilier de bureau": {}, + "2445-Mat\u00e9riel et mobilier immeubles de placement": {}, + "2446-Mat\u00e9riel et mobilier de location acquisition": {}, + "2447-Mat\u00e9riel et mobilier des logements du personnel": {} + }, + "245-Mat\u00e9riel de transport": { + "2451-Mat\u00e9riel automobile": {}, + "2452-Mat\u00e9riel ferroviaire": {}, + "2453-Mat\u00e9riel fluvial, lagunaire": {}, + "2454-Mat\u00e9riel naval": {}, + "2455-Mat\u00e9riel a\u00e9rien": {}, + "2456-Mat\u00e9riel de transport de location-acquisition": {}, + "2457-Mat\u00e9riel hippomobile": {}, + "2458-Autres mat\u00e9riels de transport": {} + }, + "246-Actifs biologiques": { + "2461-Cheptel, animaux de trait": {}, + "2462-Cheptel, animaux reproducteurs": {}, + "2463-Animaux de garde": {}, + "2465-Plantations agricoles": {}, + "2468-Autres actifs biologiques": {} + }, + "247-Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "2471-Agencements et am\u00e9nagements du mat\u00e9riel": {}, + "2472-Agencements et am\u00e9nagements des actifs biologiques": {}, + "2478-Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": {} + }, + "248-Autres mat\u00e9riels et mobiliers": { + "2481-Collections et \u0153uvres d\u2019art": {}, + "2488-Divers mat\u00e9riels mobiliers": {} + }, + "249-Mat\u00e9riels et actifs biologiques en cours": { + "2491-Mat\u00e9riel et outillage industriel et commercial": {}, + "2492-Mat\u00e9riel et outillage agricole": {}, + "2493-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2494-Mat\u00e9riel et mobilier de bureau": {}, + "2495-Mat\u00e9riel de transport": {}, + "2496-Actifs biologiques": {}, + "2497-Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": {}, + "2498-Autres mat\u00e9riels et actifs biologiques en cours": {} + } + }, + "25-Avances et acomptes vers\u00e9s sur immobilisations": { + "251-Avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "252-Avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "26-Titres de participation": { + "261-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "262-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "263-Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "265-Participations dans des organismes professionnels": {}, + "266-Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {}, + "268-Autres titres de participation": {} + }, + "27-Autres immobilisations financi\u00e8res": { + "271-Pr\u00eats et cr\u00e9ances": { + "2711-Pr\u00eats participatifs": {}, + "2712-Pr\u00eats aux associ\u00e9s": {}, + "2713-Billets de fonds": {}, + "2714-Titres pr\u00eat\u00e9s": {}, + "2718-Autres pr\u00eats et cr\u00e9ances": {} + }, + "272-Pr\u00eats au personnel": { + "2721-Pr\u00eats immobiliers": {}, + "2722-Pr\u00eats mobiliers et d\u2019installation": {}, + "2728-Autres pr\u00eats au personnel": {} + }, + "273-Cr\u00e9ances sur l\u2019\u00c9tat": { + "2731-Retenues de garantie": {}, + "2733-Fonds r\u00e9glement\u00e9": {}, + "2734-Cr\u00e9ances sur le conc\u00e9dant": {}, + "2738-Autres cr\u00e9ances sur l\u2019\u00c9tat": {} + }, + "274-Titres immobilis\u00e9s": { + "2741-Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": {}, + "2742-Titres participatifs": {}, + "2743-Certificats d\u2019investissement": {}, + "2744-Parts de fonds commun de placement (FCP)": {}, + "2745-Obligations": {}, + "2746-Actions ou parts propres": {}, + "2748-Autres titres immobilis\u00e9s": {} + }, + "275-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "2751-D\u00e9p\u00f4ts pour loyers d\u2019avance": {}, + "2752-D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": {}, + "2753-D\u00e9p\u00f4ts pour l\u2019eau": {}, + "2754-D\u00e9p\u00f4ts pour le gaz": {}, + "2755-D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": {}, + "2756-Cautionnements sur march\u00e9s publics": {}, + "2757-Cautionnements sur autres op\u00e9rations": {}, + "2758-Autres d\u00e9p\u00f4ts et cautionnements": {} + }, + "276-Int\u00e9r\u00eats courus": { + "2761-Pr\u00eats et cr\u00e9ances non commerciales": {}, + "2762-Pr\u00eats au personnel": {}, + "2763-Cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2764-Titres immobilis\u00e9s": {}, + "2765-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2767-Cr\u00e9ances rattach\u00e9es \u00e0 des participations": {}, + "2768-Immobilisations financi\u00e8res diverses": {} + }, + "277-Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "2771-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": {}, + "2772-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": {}, + "2773-Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "2774-Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {} + }, + "278-Immobilisations financi\u00e8res diverses": { + "2781-Cr\u00e9ances diverses groupe": {}, + "2782-Cr\u00e9ances diverses hors groupe": {}, + "2784-Banques d\u00e9p\u00f4ts \u00e0 terme": {}, + "2785-Or et m\u00e9taux pr\u00e9cieux": {}, + "2788-Autres immobilisations financi\u00e8res": {} + } + }, + "28-Amortissements": { + "account_type": "Accumulated Depreciation", + "281-Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "2811-Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation" + }, + "2812-Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation" + }, + "2813-Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation" + }, + "2814-Amortissements des marques": { + "account_type": "Accumulated Depreciation" + }, + "2815-Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation" + }, + "2816-Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation" + }, + "2817-Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation" + }, + "2818-Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation" + } + }, + "282-Amortissements des terrains": { + "2824-Amortissements des travaux de mise en valeur des terrains": {} + }, + "283-Amortissements des b\u00e2timents, installations techniques et agencements": { + "2831-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2832-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2833-Amortissements des ouvrages d\u2019infrastructure": {}, + "2834-Amortissements des am\u00e9nagements, agencements et installations techniques": {}, + "2835-Amortissements des am\u00e9nagements de bureaux": {}, + "2837-Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2838-Amortissements des autres installations et agencements": {} + }, + "284-Amortissements du mat\u00e9riel": { + "2841-Amortissements du mat\u00e9riel et outillage industriel et commercial": {}, + "2842-Amortissements du mat\u00e9riel et outillage agricole": {}, + "2843-Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2844-Amortissements du mat\u00e9riel et mobilier": {}, + "2845-Amortissements du mat\u00e9riel de transport": {}, + "2846-Amortissements des actifs biologiques": {}, + "2847-Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2848-Amortissements des autres mat\u00e9riels": {} + } + }, + "29-D\u00e9pr\u00e9ciations des immobilisations": { + "291-D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "2911-D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": {}, + "2912-D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": {}, + "2913-D\u00e9pr\u00e9ciations des logiciels et sites internet": {}, + "2914-D\u00e9pr\u00e9ciations des marques": {}, + "2915-D\u00e9pr\u00e9ciations du fonds commercial": {}, + "2916-D\u00e9pr\u00e9ciations du droit au bail": {}, + "2917-D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": {}, + "2918-D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": {}, + "2919-D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": {} + }, + "292-D\u00e9pr\u00e9ciations des terrains": { + "2921-D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": {}, + "2922-D\u00e9pr\u00e9ciations des terrains nus": {}, + "2923-D\u00e9pr\u00e9ciations des terrains b\u00e2tis": {}, + "2924-D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": {}, + "2925-D\u00e9pr\u00e9ciations des terrains de gisement": {}, + "2926-D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": {}, + "2927-D\u00e9pr\u00e9ciations des terrains mis en concession": {}, + "2928-D\u00e9pr\u00e9ciations des autres terrains": {}, + "2929-D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": {} + }, + "293-D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "2931-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2932-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2933-D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": {}, + "2934-D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": {}, + "2935-D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": {}, + "2937-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2938-D\u00e9pr\u00e9ciations des autres installations et agencements": {}, + "2939-D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": {} + }, + "294-D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "2941-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": {}, + "2942-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": {}, + "2943-D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2944-D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": {}, + "2945-D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": {}, + "2946-D\u00e9pr\u00e9ciations des actifs biologiques": {}, + "2947-D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2948-D\u00e9pr\u00e9ciations des autres mat\u00e9riels": {}, + "2949-D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": {} + }, + "295-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "2951-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "2952-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "296-D\u00e9pr\u00e9ciations des titres de participation": { + "2961-D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "2962-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "2963-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "2965-D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": {}, + "2966-D\u00e9pr\u00e9ciations des parts dans des GIE": {}, + "2968-D\u00e9pr\u00e9ciations des autres titres de participation": {} + }, + "297-D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "2971-D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": {}, + "2972-D\u00e9pr\u00e9ciations des pr\u00eats au personnel": {}, + "2973-D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2974-D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": {}, + "2975-D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2977-D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": {}, + "2978-D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": {} + } + }, + "root_type": "Asset" + }, + "3-Comptes de Stocks": { + "31-Marchandises": { + "311-Marchandises A": { + "3111-Marchandises A1": {}, + "3112-Marchandises A2": {} + }, + "312-Marchandises B": { + "3121-Marchandises B1": {}, + "3122-Marchandises B2": {} + }, + "313-Actifs biologiques": { + "3131-Animaux": {}, + "3132-V\u00e9g\u00e9taux": {} + }, + "318-Marchandises hors activit\u00e9s ordinaires (HAO)": {} + }, + "32-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "321-Mati\u00e8res A": {}, + "322-Mati\u00e8res B": {}, + "323-Fournitures (A, B)": {} + }, + "33-Autres approvisionnements": { + "331-Mati\u00e8res consommables": {}, + "332-Fournitures d\u2019atelier et d\u2019usine": {}, + "333-Fournitures de magasin": {}, + "334-Fournitures de bureau": {}, + "335-Emballages": { + "3351-Emballages perdus": {}, + "3352-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "3353-Emballages \u00e0 usage mixte": {}, + "3358-Autres emballages": {} + }, + "338-Autres mati\u00e8res": {} + }, + "34-Produits en cours": { + "341-Produits en cours": { + "3411-Produits en cours P1": {}, + "3412-Produits en cours P2": {} + }, + "342-Travaux en cours": { + "3421-Travaux en cours T1": {}, + "3422-Travaux en cours T2": {} + }, + "343-Produits interm\u00e9diaires en cours": { + "3431-Produits interm\u00e9diaires A": {}, + "3432-Produits interm\u00e9diaires B": {} + }, + "344-Produits r\u00e9siduels en cours": { + "3441-Produits r\u00e9siduels A": {}, + "3442-Produits r\u00e9siduels B": {} + }, + "345-Actifs biologiques en cours": { + "3451-Animaux": {}, + "3452-V\u00e9g\u00e9taux": {} + } + }, + "35-Services en cours": { + "351-\u00c9tudes en cours": { + "3511-\u00c9tudes en cours E1": {}, + "3512-\u00c9tudes en cours E2": {} + }, + "352-Prestations de services en cours": { + "3521-Prestations de services S1": {}, + "3522-Prestations de services S2": {} + } + }, + "36-Produits finis": { + "361-Produits finis A": {}, + "362-Produits finis B": {}, + "363-Actifs biologiques": { + "3631-Animaux": {}, + "3632-V\u00e9g\u00e9taux": {}, + "3638-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "37-Produits interm\u00e9diaires et r\u00e9siduels": { + "371-Produits interm\u00e9diaires": { + "3711-Produits interm\u00e9diaires A": {}, + "3712-Produits interm\u00e9diaires B": {} + }, + "372-Produits r\u00e9siduels": { + "3721-D\u00e9chets": {}, + "3722-Rebuts": {}, + "3723-Mati\u00e8res de R\u00e9cup\u00e9ration": {} + }, + "373-Actifs biologiques": { + "3731-Animaux": {}, + "3732-V\u00e9g\u00e9taux": {}, + "3738-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "38-Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "381-Marchandises en cours de route": {}, + "382-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": {}, + "383-Autres approvisionnements en cours de route": {}, + "386-Produits finis en cours de route": {}, + "387-Stock en consignation ou en d\u00e9p\u00f4t": { + "3871-Stock en consignation": {}, + "3872-Stock en d\u00e9p\u00f4t": {} + }, + "388-Stock provenant d\u2019immobilisations mises hors service ou au rebut": {} + }, + "39-D\u00e9pr\u00e9ciations des stocks et encours de production": { + "391-D\u00e9pr\u00e9ciations des stocks de marchandises": {}, + "392-D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "393-D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": {}, + "394-D\u00e9pr\u00e9ciations des productions en cours": {}, + "395-D\u00e9pr\u00e9ciations des services en cours": {}, + "396-D\u00e9pr\u00e9ciations des stocks de produits finis": {}, + "397-D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": {}, + "398-D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": {} + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "409-Fournisseurs d\u00e9biteurs": { + "4091-Fournisseurs Avances et acomptes vers\u00e9s": {}, + "4092-Fournisseurs Groupe avances et acomptes vers\u00e9s": {}, + "4093-Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": {}, + "4094-Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": {}, + "4098-Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": {} + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "411-Clients": { + "4111-Clients": { + "account_type": "Receivable" + }, + "4112-Clients groupe": { + "account_type": "Receivable" + }, + "4114-Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable" + }, + "4115-Clients, organismes internationaux": { + "account_type": "Receivable" + }, + "4116-Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable" + }, + "4117-Client, retenues de garantie": { + "account_type": "Receivable" + }, + "4118-Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "412-Clients, effets \u00e0 recevoir en portefeuille": { + "4121-Clients, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4122-Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4124-\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4125-Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "413-Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "4131-Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable" + }, + "4132-Clients, effets impay\u00e9s": { + "account_type": "Receivable" + }, + "4133-Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable" + }, + "4138-Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "414-Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "4141-Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4142-Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable" + }, + "4146-Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4147-Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "415-Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable" + }, + "416-Cr\u00e9ances clients litigieuses ou douteuses": { + "4161-Cr\u00e9ances litigieuses": { + "account_type": "Receivable" + }, + "4162-Cr\u00e9ances douteuses": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "418-Clients, produits \u00e0 recevoir": { + "4181-Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable" + }, + "4186-Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "421-Personnel, avances et acomptes": { + "4211-Personnel, avances": {}, + "4212-Personnel, acomptes": {}, + "4213-Frais avanc\u00e9s et fournitures au personnel": {} + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "4311-Prestations familiales": {}, + "4312-Accidents de travail": {}, + "4313-Caisse de retraite obligatoire": {}, + "4314-Caisse de retraite facultative": {}, + "4318-Autres cotisations sociales": {} + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "4331-Mutuelle": {}, + "4332-Assurances retraite": {}, + "4333-Assurances et organismes de sant\u00e9": {} + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4387-Produits \u00e0 recevoir": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "443-\u00c9tat, TVA factur\u00e9e": { + "4431-TVA factur\u00e9e sur ventes": {}, + "4432-TVA factur\u00e9e sur prestations de services": {}, + "4433-TVA factur\u00e9e sur travaux": {}, + "4434-TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": {}, + "4435-TVA sur factures \u00e0 \u00e9tablir": {} + }, + "445-\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "4451-TVA r\u00e9cup\u00e9rable sur immobilisations": {}, + "4452-TVA r\u00e9cup\u00e9rable sur achats": {}, + "4453-TVA r\u00e9cup\u00e9rable sur transport": {}, + "4454-TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": {}, + "4455-TVA r\u00e9cup\u00e9rable sur factures non parvenues": {}, + "4456-TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": {} + }, + "448-\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "4486-Charges \u00e0 payer": {}, + "4487-Produits \u00e0 recevoir": {} + }, + "449-\u00c9tat, cr\u00e9ances et dettes diverses": { + "4491-\u00c9tat, obligations cautionn\u00e9es": {}, + "4492-\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": {}, + "4493-\u00c9tat, fonds de dotation \u00e0 recevoir": {}, + "4494-\u00c9tat, subventions investissement \u00e0 recevoir": {}, + "4495-\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": {}, + "4496-\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": {}, + "4497-\u00c9tat, avances sur subventions": {}, + "4499-\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": {} + } + }, + "45-Organismes internationaux (ACTIF)": { + "451-Op\u00e9rations avec les organismes africains": {}, + "452-Op\u00e9rations avec les autres organismes internationaux": {}, + "458-Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "4581-Organismes internationaux, fonds de dotation \u00e0 recevoir": {}, + "4582-Organismes internationaux, subventions \u00e0 recevoir": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "4613-Apporteurs, capital appel\u00e9, non vers\u00e9": {}, + "4614-Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": {}, + "4618-Apporteurs, titres \u00e0 \u00e9changer": {} + }, + "467-Apporteurs, restant d\u00fb sur capital appel\u00e9": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "4721-Cr\u00e9ances sur cessions de titres de placement": {}, + "4726-Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": {} + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "4731-Mandants": {}, + "4732-Mandataires": {}, + "4733-Commettants": {}, + "4734-Commissionnaires": {}, + "4739-\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "4747-Compte de r\u00e9partition p\u00e9riodique des produits": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "4751-Compte actif": { + "account_type": "Temporary" + } + }, + "476-Charges constat\u00e9es d\u2019avance": {}, + "478-\u00c9carts de conversion actif": { + "4781-Diminution des cr\u00e9ances d\u2019exploitation": {}, + "4782-Diminution des cr\u00e9ances financi\u00e8res": {}, + "4783-Augmentation des dettes d\u2019exploitation": {}, + "4784-Augmentation des dettes financi\u00e8res": {}, + "4786-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4788-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "485-Cr\u00e9ances sur cessions d\u2019immobilisations": { + "4851-En compte, immobilisations incorporelles": {}, + "4852-En compte, immobilisations corporelles": {}, + "4853-Effets \u00e0 recevoir, immobilisations incorporelles": {}, + "4854-Effets \u00e0 recevoir, immobilisations corporelles": {}, + "4855-Effets escompt\u00e9s non \u00e9chus": {}, + "4857-Retenues de garantie": {}, + "4858-Factures \u00e0 \u00e9tablir": {} + }, + "488-Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": {} + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "491-D\u00e9pr\u00e9ciations des comptes clients": { + "4911-Cr\u00e9ances litigieuses": {}, + "4912-Cr\u00e9ances douteuses": {} + }, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {}, + "496-D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "4962-Associ\u00e9s, comptes courants": {}, + "4963-Associ\u00e9s, op\u00e9rations faites en commun": {}, + "4966-Groupe, comptes courants": {} + }, + "497-D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": {}, + "498-D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "4985-Cr\u00e9ances sur cessions d\u2019immobilisations": {}, + "4986-Cr\u00e9ances sur cessions de titres de placement": {}, + "4988-Autres cr\u00e9ances HAO": {} + }, + "499-Provisions pour risques \u00e0 court terme": { + "4991-Sur op\u00e9rations d\u2019exploitation": {}, + "4997-Sur op\u00e9rations financi\u00e8res": {}, + "4998-Sur op\u00e9rations HAO": {} + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "401-Fournisseurs, dettes en compte": { + "4011-Fournisseurs": { + "account_type": "Payable" + }, + "4012-Fournisseurs groupe": { + "account_type": "Payable" + }, + "4013-Fournisseurs sous-traitants": { + "account_type": "Payable" + }, + "4016-Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable" + }, + "4017-Fournisseur, retenues de garantie": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "402-Fournisseurs, effets \u00e0 payer": { + "4021-Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable" + }, + "4022-Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable" + }, + "4023-Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "404-Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "4041-Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4042-Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable" + }, + "4046-Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4047-Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "408-Fournisseurs, factures non parvenues": { + "4081-Fournisseurs": { + "account_type": "Stock Received But Not Billed" + }, + "4082-Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed" + }, + "4083-Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed" + }, + "4086-Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "419-Clients cr\u00e9diteurs": { + "4191-Clients, avances et acomptes re\u00e7us": {}, + "4192-Clients groupe, avances et acomptes re\u00e7us": {}, + "4194-Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": {}, + "4198-Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": {} + } + }, + "42-Personnel (PASSIF)": { + "422-Personnel, r\u00e9mun\u00e9rations dues": {}, + "423-Personnel, oppositions, saisies-arr\u00eats": { + "4231-Personnel, oppositions": {}, + "4232-Personnel, saisies-arr\u00eats": {}, + "4233-Personnel, avis \u00e0 tiers d\u00e9tenteur": {} + }, + "424-Personnel, \u0153uvres sociales internes": { + "4241-Assistance m\u00e9dicale": {}, + "4242-Allocations familiales": {}, + "4245-Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": {}, + "4248-Autres \u0153uvres sociales internes": {} + }, + "425-Repr\u00e9sentants du personnel": { + "4251-D\u00e9l\u00e9gu\u00e9s du personnel": {}, + "4252-Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": {}, + "4258-Autres repr\u00e9sentants du personnel": {} + }, + "426-Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "4261-Participation aux b\u00e9n\u00e9fices": {}, + "4264-Participation au capital": {} + }, + "427-Personnel d\u00e9p\u00f4ts": {}, + "428-Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "4281-Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": {}, + "4286-Autres charges \u00e0 payer": {}, + "4287-Produits \u00e0 recevoir": {} + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4381-Charges sociales sur gratifications \u00e0 payer": {}, + "4382-Charges sociales sur cong\u00e9s \u00e0 payer": {}, + "4386-Autres charges \u00e0 payer": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "441-\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": {}, + "442-\u00c9tat, autres imp\u00f4ts et taxes": { + "4421-Imp\u00f4ts et taxes d\u2019\u00c9tat": {}, + "4422-Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": {}, + "4423-Imp\u00f4ts et taxes recouvrables sur des obligataires": {}, + "4424-Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": {}, + "4426-Droits de douane": {}, + "4428-Autres imp\u00f4ts et taxes": {} + }, + "444-\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "4441-\u00c9tat, TVA due": {}, + "4449-\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": {} + }, + "446-\u00c9tat, autres taxes sur le chiffre d\u2019affaires": {}, + "447-\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "4471-Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": {}, + "4472-Imp\u00f4ts sur salaires": {}, + "4473-Contribution nationale": {}, + "4474-Contribution nationale de solidarit\u00e9": {}, + "4478-Autres imp\u00f4ts et contributions": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "4611-Apporteurs, apports en nature": {}, + "4612-Apporteurs, apports en num\u00e9raire": {}, + "4615-Apporteurs, versements re\u00e7us sur augmentation de capital": {}, + "4616-Apporteurs, versements anticip\u00e9s": {}, + "4617-Apporteurs d\u00e9faillants": {}, + "4619-Apporteurs, capital \u00e0 rembourser": {} + }, + "462-Associ\u00e9s, comptes courants": { + "4621-Principal": {}, + "4626-Int\u00e9r\u00eats courus": {} + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "4631-Op\u00e9rations courantes": {}, + "4636-Int\u00e9r\u00eats courus": {} + }, + "465-Associ\u00e9s, dividendes \u00e0 payer": {}, + "466-Groupe, comptes courants": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "4711-D\u00e9biteurs divers": {}, + "4712-Cr\u00e9diteurs divers": {}, + "4713-Obligataires": {}, + "4715-R\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "4716-Compte d\u2019affacturage": {}, + "4717-D\u00e9biteurs divers retenues de garantie": {}, + "4718-Apport, compte de fusion et op\u00e9rations assimil\u00e9es": {}, + "4719-Bons de souscription d\u2019actions et d\u2019obligations": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "4746-Compte de r\u00e9partition p\u00e9riodique des charges": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "4752-Compte passif": {} + }, + "477-Produits constat\u00e9s d\u2019avance": {}, + "479-\u00c9carts de conversion passif": { + "4791-Augmentation des cr\u00e9ances d\u2019exploitation": {}, + "4792-Augmentation des cr\u00e9ances financi\u00e8res": {}, + "4793-Diminution des dettes d\u2019exploitation": {}, + "4794-Diminution des dettes financi\u00e8res": {}, + "4797-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4798-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "481-Fournisseurs d\u2019investissements": { + "4811-Immobilisations incorporelles": {}, + "4812-Immobilisations corporelles": {}, + "4813-Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": {}, + "4816-R\u00e9serve de propri\u00e9t\u00e9": {}, + "4817-Retenues de garantie": {}, + "4818-Factures non parvenues": {} + }, + "482-Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "4821-Immobilisations incorporelles": {}, + "4822-Immobilisations corporelles": {} + }, + "484-Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "4887-Produits": {} + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (PASSIF)": { + "490-D\u00e9pr\u00e9ciations des comptes fournisseurs": {}, + "492-D\u00e9pr\u00e9ciations des comptes personnel": {}, + "493-D\u00e9pr\u00e9ciations des comptes organismes sociaux": {}, + "494-D\u00e9pr\u00e9ciations des comptes \u00c9tat et collectivit\u00e9s publiques": {}, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {} + }, + "root_type": "Liability" + }, + "5-Comptes de tr\u00e9sorerie": { + "50-Titres de placement": { + "501-Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "5011-Titres du Tr\u00e9sor \u00e0 court terme": {}, + "5012-Titres d\u2019organismes financiers": {}, + "5013-Bons de caisse \u00e0 court terme": {}, + "5016-Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": {} + }, + "502-Actions": { + "5021-Actions ou parts propres": {}, + "5022-Actions cot\u00e9es": {}, + "5023-Actions non cot\u00e9es": {}, + "5024-Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": {}, + "5025-Autres actions": {}, + "5026-Frais d\u2019acquisition des actions": {} + }, + "503-Obligations": { + "5031-Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": {}, + "5032-Obligations cot\u00e9es": {}, + "5033-Obligations non cot\u00e9es": {}, + "5035-Autres obligations": {}, + "5036-Frais d\u2019acquisition des obligations": {} + }, + "504-Bons de souscription": { + "5042-Bons de souscription d\u2019actions": {}, + "5043-Bons de souscription d\u2019obligations": {} + }, + "505-Titres n\u00e9gociables hors r\u00e9gion": {}, + "506-Int\u00e9r\u00eats courus": { + "5061-Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": {}, + "5062-Actions": {}, + "5063-Obligations": {} + }, + "508-Autres titres de placement et cr\u00e9ances assimil\u00e9es": {} + }, + "51-Valeurs \u00e0 encaisser": { + "511-Effets \u00e0 encaisser": {}, + "512-Effets \u00e0 l\u2019encaissement": {}, + "513-Ch\u00e8ques \u00e0 encaisser": {}, + "514-Ch\u00e8ques \u00e0 l\u2019encaissement": {}, + "515-Cartes de cr\u00e9dit \u00e0 encaisser": {}, + "518-Autres valeurs \u00e0 l\u2019encaissement": { + "5181-Warrants": {}, + "5182-Billets de fonds": {}, + "5185-Ch\u00e8ques de voyage": {}, + "5186-Coupons \u00e9chus": {}, + "5187-Int\u00e9r\u00eats \u00e9chus des obligations": {} + } + }, + "52-Banques": { + "521-Banques locales": { + "5211-Banques en monnaie nationale": { + "account_type": "Bank" + }, + "5215-Banques en devises": { + "account_type": "Bank" + }, + "account_type": "Bank" + }, + "522-Banques autres \u00c9tats r\u00e9gion": {}, + "523-Banques autres \u00c9tats zone mon\u00e9taire": {}, + "524-Banques hors zone mon\u00e9taire": {}, + "525-Banques d\u00e9p\u00f4t \u00e0 terme": {}, + "526-Banques, int\u00e9r\u00eats courus": { + "5261-Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": {}, + "5267-Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": {} + } + }, + "53-\u00c9tablissements financiers et assimil\u00e9s": { + "531-Ch\u00e8ques postaux": {}, + "532-Tr\u00e9sor": {}, + "533-Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": {}, + "536-\u00c9tablissements financiers, int\u00e9r\u00eats courus": {}, + "538-Autres organismes financiers": {} + }, + "54-Instruments de tr\u00e9sorerie": { + "541-Options de taux d\u2019int\u00e9r\u00eat": {}, + "542-Options de taux de change": {}, + "543-Options de taux boursiers": {}, + "544-Instruments de march\u00e9s \u00e0 terme": {}, + "545-Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": {} + }, + "55-Instruments de monnaie \u00e9lectronique": { + "551-Monnaie \u00e9lectronique carte carburant": {}, + "552-Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": {}, + "553-Monnaie \u00e9lectronique carte p\u00e9age": {}, + "554-Porte-monnaie \u00e9lectronique": {}, + "558-Autres instruments de monnaies \u00e9lectroniques": {} + }, + "56-Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "561-Cr\u00e9dits de tr\u00e9sorerie": {}, + "564-Escompte de cr\u00e9dits de campagne": {}, + "565-Escompte de cr\u00e9dits ordinaires": {}, + "566-Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": {} + }, + "57-Caisse": { + "571-Caisse si\u00e8ge social": { + "5711-Caisse en monnaie nationale": {}, + "5712-Caisse en devises": {} + }, + "572-Caisse succursale A": { + "5721-En monnaie nationale": {}, + "5722-En devises": {} + }, + "573-Caisse succursale B": { + "5731-En monnaie nationale": {}, + "5732-En devises": {} + } + }, + "58-R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "581-R\u00e9gies d\u2019avance": {}, + "582-Accr\u00e9ditifs": {}, + "585-Virements de fonds": {}, + "588-Autres virements internes": {} + }, + "59-D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "590-D\u00e9pr\u00e9ciations des titres de placement": {}, + "591-D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": {}, + "592-D\u00e9pr\u00e9ciations des comptes banques": {}, + "593-D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": {}, + "594-D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": {}, + "599-Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": {} + }, + "root_type": "Asset" + }, + "6-Comptes de charges des activit\u00e9s ordinaires": { + "60-Achats et variations de stocks": { + "601-Achats de marchandises": { + "6011-Dans la R\u00e9gion": {}, + "6012-Hors R\u00e9gion": {}, + "6013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6015-Frais sur achats": {}, + "6019-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "602-Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "6021-Dans la R\u00e9gion": {}, + "6022-Hors R\u00e9gion": {}, + "6023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6025-Frais sur achats": {}, + "6029-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "603-Variations des stocks de biens achet\u00e9s": { + "6031-Variations des stocks de marchandises": {}, + "6032-Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "6033-Variations des stocks d\u2019autres approvisionnements": {} + }, + "604-Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "6041-Mati\u00e8res consommables": {}, + "6042-Mati\u00e8res combustibles": {}, + "6043-Produits d\u2019entretien": {}, + "6044-Fournitures d\u2019atelier et d\u2019usine": {}, + "6045-Frais sur achat": {}, + "6046-Fournitures de magasin": {}, + "6047-Fournitures de bureau": {}, + "6049-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "605-Autres achats": { + "6051-Fournitures non stockables Eau": {}, + "6052-Fournitures non stockables \u00c9lectricit\u00e9": {}, + "6053-Fournitures non stockables Autres \u00e9nergies": {}, + "6054-Fournitures d\u2019entretien non stockables": {}, + "6055-Fournitures de bureau non stockables": {}, + "6056-Achats de petit mat\u00e9riel et outillage": {}, + "6057-Achats d\u2019\u00e9tudes et prestations de services": {}, + "6058-Achats de travaux, mat\u00e9riels et \u00e9quipements": {}, + "6059-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "608-Achats d\u2019emballages": { + "6081-Emballages perdus": {}, + "6082-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "6083-Emballages \u00e0 usage mixte": {}, + "6085-Frais sur achats": {}, + "6089-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + } + }, + "61-Transports": { + "612-Transports sur ventes": {}, + "613-Transports pour le compte de tiers": {}, + "614-Transports du personnel": {}, + "616-Transports de plis": {}, + "618-Autres frais de transport": { + "6181-Voyages et d\u00e9placements": {}, + "6182-Transports entre \u00e9tablissements ou chantiers": {}, + "6183-Transports administratifs": {} + } + }, + "62-Services ext\u00e9rieurs": { + "621-Sous-traitance g\u00e9n\u00e9rale": {}, + "622-Locations, charges locatives": { + "6221-Locations de terrains": {}, + "6222-Locations de b\u00e2timents": {}, + "6223-Locations de mat\u00e9riels et outillages": {}, + "6224-Malis sur emballages": {}, + "6225-Locations d\u2019emballages": {}, + "6226-Fermages et loyers du foncier": {}, + "6228-Locations et charges locatives diverses": {} + }, + "623-Redevances de location acquisition": { + "6232-Cr\u00e9dit-bail immobilier": {}, + "6233-Cr\u00e9dit-bail mobilier": {}, + "6234-Location-vente": {}, + "6238-Autres contrats de location acquisition": {} + }, + "624-Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "6241-Entretien et r\u00e9parations des biens immobiliers": {}, + "6242-Entretien et r\u00e9parations des biens mobiliers": {}, + "6243-Maintenance": {}, + "6244-Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "6248-Autres entretiens et r\u00e9parations": {} + }, + "625-Primes d\u2019assurance": { + "6251-Assurances multirisques": {}, + "6252-Assurances mat\u00e9riel de transport": {}, + "6253-Assurances risques d\u2019exploitation": {}, + "6254-Assurances responsabilit\u00e9 du producteur": {}, + "6255-Assurances insolvabilit\u00e9 clients": {}, + "6257-Assurances transport sur ventes": {}, + "6258-Autres primes d\u2019assurances": {} + }, + "626-\u00c9tudes, recherches et documentation": { + "6261-\u00c9tudes et recherches": {}, + "6265-Documentation g\u00e9n\u00e9rale": {}, + "6266-Documentation technique": {} + }, + "627-Publicit\u00e9, publications, relations publiques": { + "6271-Annonces, insertions": {}, + "6272-Catalogues, imprim\u00e9s publicitaires": {}, + "6273-\u00c9chantillons": {}, + "6274-Foires et expositions": {}, + "6275-Publications": {}, + "6276-Cadeaux \u00e0 la client\u00e8le": {}, + "6277-Frais de colloques, s\u00e9minaires, conf\u00e9rences": {}, + "6278-Autres charges de publicit\u00e9 et relations publiques": {} + }, + "628-Frais de t\u00e9l\u00e9communications": { + "6281-Frais de t\u00e9l\u00e9phone": {}, + "6282-Frais de t\u00e9lex": {}, + "6283-Frais de t\u00e9l\u00e9copie": {}, + "6288-Autres frais de t\u00e9l\u00e9communications": {} + } + }, + "63-Autres services ext\u00e9rieurs": { + "631-Frais bancaires": { + "6311-Frais sur titres (vente, garde)": {}, + "6312-Frais sur effets": {}, + "6313-Location de coffres": {}, + "6314-Commissions d\u2019affacturage": {}, + "6315-Commissions sur cartes de cr\u00e9dit": {}, + "6316-Frais d\u2019\u00e9mission d\u2019emprunts": {}, + "6317-Frais sur instruments monnaie \u00e9lectronique": {}, + "6318-Autres frais bancaires": {} + }, + "632-R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "6322-Commissions et courtages sur ventes": {}, + "6324-Honoraires des professions r\u00e9glement\u00e9es": {}, + "6325-Frais d\u2019actes et de contentieux": {}, + "6326-R\u00e9mun\u00e9rations d\u2019affacturage": {}, + "6327-R\u00e9mun\u00e9rations des autres prestataires de services": {}, + "6328-Divers frais": {} + }, + "633-Frais de formation du personnel": {}, + "634-Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "6342-Redevances pour brevets, licences": {}, + "6343-Redevances pour logiciels": {}, + "6344-Redevances pour marques": {}, + "6345-Redevances pour sites internet": {}, + "6346-Redevances pour concessions, droits et valeurs similaires": {} + }, + "635-Cotisations": { + "6351-Cotisations": {}, + "6358-Concours divers": {} + }, + "637-R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "6371-Personnel int\u00e9rimaire": {}, + "6372-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "638-Autres charges externes": { + "6381-Frais de recrutement du personnel": {}, + "6382-Frais de d\u00e9m\u00e9nagement": {}, + "6383-R\u00e9ceptions": {}, + "6384-Missions": {}, + "6385-Charges de copropri\u00e9t\u00e9": {} + } + }, + "64-Imp\u00f4ts et taxes": { + "641-Imp\u00f4ts et taxes directs": { + "6411-Imp\u00f4ts fonciers et taxes annexes": {}, + "6412-Patentes, licences et taxes annexes": {}, + "6413-Taxes sur appointements et salaires": {}, + "6414-Taxes d\u2019apprentissage": {}, + "6415-Formation professionnelle continue": {}, + "6418-Autres imp\u00f4ts et taxes directs": {} + }, + "645-Imp\u00f4ts et taxes indirects": {}, + "646-Droits d\u2019enregistrement": { + "6461-Droits de mutation": {}, + "6462-Droits de timbre": {}, + "6463-Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": {}, + "6464-Vignettes": {}, + "6468-Autres droits": {} + }, + "647-P\u00e9nalit\u00e9s, amendes fiscales": { + "6471-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": {}, + "6472-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": {}, + "6473-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": {}, + "6474-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": {}, + "6478-Autres p\u00e9nalit\u00e9s et amendes fiscales": {} + }, + "648-Autres imp\u00f4ts et taxes": {} + }, + "65-Autres charges": { + "651-Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "6511-Clients": {}, + "6515-Autres d\u00e9biteurs": {} + }, + "652-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "6521-Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": {}, + "6525-Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "654-Valeurs comptables des cessions courantes d\u2019immobilisations": { + "6541-Immobilisations incorporelles": {}, + "6542-Immobilisations corporelles": {} + }, + "656-Perte de change sur cr\u00e9ances et dettes commerciale": {}, + "657-P\u00e9nalit\u00e9s et amendes p\u00e9nales": {}, + "658-Charges diverses": { + "6581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "6582-Dons": {}, + "6583-M\u00e9c\u00e9nat": {}, + "6588-Autres charges diverses": {} + }, + "659-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "6591-Sur risques \u00e0 court terme": {}, + "6593-Sur stocks": {}, + "6594-Sur cr\u00e9ances": {}, + "6598-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": {} + } + }, + "66-Charges de personnel": { + "661-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "6611-Appointements salaires et commissions": {}, + "6612-Primes et gratifications": {}, + "6613-Cong\u00e9s pay\u00e9s": {}, + "6614-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6615-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6616-Suppl\u00e9ment familial": {}, + "6617-Avantages en nature": {}, + "6618-Autres r\u00e9mun\u00e9rations directes": {} + }, + "662-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "6621-Appointements salaires et commissions": {}, + "6622-Primes et gratifications": {}, + "6623-Cong\u00e9s pay\u00e9s": {}, + "6624-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6625-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6626-Suppl\u00e9ment familial": {}, + "6627-Avantages en nature": {}, + "6628-Autres r\u00e9mun\u00e9rations directes": {} + }, + "663-Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "6631-Indemnit\u00e9s de logement": {}, + "6632-Indemnit\u00e9s de repr\u00e9sentation": {}, + "6633-Indemnit\u00e9s d\u2019expatriation": {}, + "6634-Indemnit\u00e9s de transport": {}, + "6638-Autres indemnit\u00e9s et avantages divers": {} + }, + "664-Charges sociales": { + "6641-Charges sociales sur r\u00e9mun\u00e9ration du personnel national": {}, + "6642-Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": {} + }, + "666-R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "6661-R\u00e9mun\u00e9ration du travail de l\u2019exploitant": {}, + "6662-Charges sociales": {} + }, + "667-R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "6671-Personnel int\u00e9rimaire": {}, + "6672-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "668-Autres charges sociales": { + "6681-Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": {}, + "6682-Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": {}, + "6683-Versements et contributions aux autres \u0153uvres sociales": {}, + "6684-M\u00e9decine du travail et pharmacie": {}, + "6685-Assurances et organismes de sant\u00e9": {}, + "6686-Assurances retraite et fonds de pension": {}, + "6687-Majorations et p\u00e9nalit\u00e9s sociales": {}, + "6688-Charges sociales diverses": {} + } + }, + "67-Frais financiers et charges assimil\u00e9es": { + "671-Int\u00e9r\u00eats des emprunts": { + "6711-Emprunts obligataires": {}, + "6712-Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "6713-Dettes li\u00e9es \u00e0 des participations": {}, + "6714-Primes de remboursement des obligations": {} + }, + "672-Int\u00e9r\u00eats dans loyers de location acquisition": { + "6722-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": {}, + "6723-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": {}, + "6724-Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": {}, + "6728-Int\u00e9r\u00eats dans loyers des autres locations acquisition": {} + }, + "673-Escomptes accord\u00e9s": {}, + "674-Autres int\u00e9r\u00eats": { + "6741-Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": {}, + "6742-Comptes courants bloqu\u00e9s": {}, + "6743-Int\u00e9r\u00eats sur obligations cautionn\u00e9es": {}, + "6744-Int\u00e9r\u00eats sur dettes commerciales": {}, + "6745-Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": {}, + "6748-Int\u00e9r\u00eats sur dettes diverses": {} + }, + "675-Escomptes des effets de commerce": {}, + "676-Pertes de change financi\u00e8res": {}, + "677-Pertes sur titres de placement": { + "6771-Pertes sur cessions de titres de placement": {}, + "6772-Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {} + }, + "678-Pertes et charges sur risques financiers": { + "6781-Sur rentes viag\u00e8res": {}, + "6782-Sur op\u00e9rations financi\u00e8res": {}, + "6784-Sur instruments de tr\u00e9sorerie": {} + }, + "679-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "6791-Sur risques financiers": {}, + "6795-Sur titres de placement": {}, + "6798-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "68-Dotations aux amortissements": { + "681-Dotations aux amortissements d\u2019exploitation": { + "6812-Dotations aux amortissements des immobilisations incorporelles": {}, + "6813-Dotations aux amortissements des immobilisations corporelles": {} + } + }, + "69-Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "691-Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "6911-Dotations aux provisions pour risques et charges": {}, + "6913-Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": {}, + "6914-Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": {} + }, + "697-Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "6971-Dotations aux provisions pour risques et charges": {}, + "6972-Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": {} + } + }, + "root_type": "Expense" + }, + "7-Comptes de produits des activit\u00e9s ordinaires": { + "70-Ventes": { + "701-Ventes de marchandises": { + "7011-Dans la R\u00e9gion": {}, + "7012-Hors R\u00e9gion": {}, + "7013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7015-Sur internet": {}, + "7019-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "702-Ventes de produits finis": { + "7021-Dans la R\u00e9gion": {}, + "7022-Hors R\u00e9gion": {}, + "7023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7025-Sur internet": {}, + "7029-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "703-Ventes de produits interm\u00e9diaires": { + "7031-Dans la R\u00e9gion": {}, + "7032-Hors R\u00e9gion": {}, + "7033-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7034-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7035-Sur internet": {}, + "7039-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "704-Ventes de produits r\u00e9siduels": { + "7041-Dans la R\u00e9gion": {}, + "7042-Hors R\u00e9gion": {}, + "7043-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7044-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7045-Sur internet": {}, + "7049-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "705-Travaux factur\u00e9s": { + "7051-Dans la R\u00e9gion": {}, + "7052-Hors R\u00e9gion": {}, + "7053-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7054-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7055-Sur internet": {}, + "7059-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "706-Services vendus": { + "7061-Dans la R\u00e9gion": {}, + "7062-Hors R\u00e9gion": {}, + "7063-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7064-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7065-Sur internet": {}, + "7069-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "707-Produits accessoires": { + "7071-Ports, emballages perdus et autres frais factur\u00e9s": {}, + "7072-Commissions et courtages": {}, + "7073-Locations": {}, + "7074-Bonis sur reprises et cessions d\u2019emballages": {}, + "7075-Mise \u00e0 disposition de personnel": {}, + "7076-Redevances pour brevets, logiciels, marques et droits similaires": {}, + "7077-Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": {}, + "7078-Autres produits accessoires": {} + } + }, + "71-Subventions d\u2019exploitation": { + "711-Sur produits \u00e0 l\u2019exportation": {}, + "712-Sur produits \u00e0 l\u2019importation": {}, + "713-Sur produits de p\u00e9r\u00e9quation": {}, + "714-Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": {}, + "718-Autres subventions d\u2019exploitation": { + "7181-Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": {}, + "7182-Vers\u00e9es par les organismes internationaux": {}, + "7183-Vers\u00e9es par des tiers": {} + } + }, + "72-Production immobilis\u00e9e": { + "721-Immobilisations incorporelles": {}, + "722-Immobilisations corporelles": { + "7221-Immobilisations corporelles (hors actifs biologiques)": {}, + "7222-Immobilisations corporelles (actifs biologiques)": {} + }, + "724-Production auto-consomm\u00e9e": {}, + "726-Immobilisations financi\u00e8res": {} + }, + "73-Variations des stocks de biens et de services produits": { + "734-Variations des stocks de produits en cours": { + "7341-Produits en cours": {}, + "7342-Travaux en cours": {} + }, + "735-Variations des en-cours de services": { + "7351-\u00c9tudes en cours": {}, + "7352-Prestations de services en cours": {} + }, + "736-Variations des stocks de produits finis": {}, + "737-Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "7371-Produits interm\u00e9diaires": {}, + "7372-Produits r\u00e9siduels": {} + } + }, + "75-Autres produits": { + "751-Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": {}, + "752-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "7521-Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": {}, + "7525-B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "754-Produits des cessions courantes d\u2019immobilisations": { + "7541-Immobilisations incorporelles": {}, + "7542-Immobilisations corporelles": {} + }, + "756-Gains de change sur cr\u00e9ances et dettes commerciales": {}, + "758-Produits divers": { + "7581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "7582-Indemnit\u00e9s d\u2019assurances re\u00e7ues": {}, + "7588-Autres produits divers": {} + }, + "759-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "7591-Sur risques \u00e0 court terme": {}, + "7593-Sur stocks": {}, + "7594-Sur cr\u00e9ances": {}, + "7598-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": {} + } + }, + "77-Revenus financiers et produits assimil\u00e9s": { + "771-Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "7712-Int\u00e9r\u00eats de pr\u00eats": {}, + "7713-Int\u00e9r\u00eats sur cr\u00e9ances diverses": {} + }, + "772-Revenus de participations et autres titres immobilis\u00e9s": { + "7721-Revenus des titres de participation": {}, + "7722-Revenus autres titres immobilis\u00e9s": {} + }, + "773-Escomptes obtenus": {}, + "774-Revenus de placement": { + "7745-Revenus des obligations": {}, + "7746-Revenus des titres de placement": {} + }, + "775-Int\u00e9r\u00eats dans loyers de location acquisition": {}, + "776-Gains de change financiers": {}, + "777-Gains sur cessions de titres de placement": {}, + "778-Gains sur risques financiers": { + "7781-Sur rentes viag\u00e8res": {}, + "7782-Sur op\u00e9rations financi\u00e8res": {}, + "7784-Sur instruments de tr\u00e9sorerie": {} + }, + "779-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "7791-Sur risques financiers": {}, + "7795-Sur titres de placement": {}, + "7798-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "78-Transferts de charges": { + "781-Transferts de charges d\u2019exploitation": {}, + "787-Transferts de charges financi\u00e8res": {} + }, + "79-Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "791-Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "7911-Pour risques et charges": {}, + "7913-Des immobilisations incorporelles": {}, + "7914-Des immobilisations corporelles": {} + }, + "797-Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "7971-Pour risques et charges": {}, + "7972-Des immobilisations financi\u00e8res": {} + }, + "798-Reprises d\u2019amortissements": {}, + "799-Reprises de subventions d\u2019investissement": {} + }, + "root_type": "Income" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "81-Valeurs comptables des cessions d\u2019immobilisations": { + "811-Immobilisations incorporelles": {}, + "812-Immobilisations corporelles": {}, + "816-Immobilisations financi\u00e8res": {} + }, + "83-Charges hors activit\u00e9s ordinaires": { + "831-Charges HAO constat\u00e9es": {}, + "833-Charges li\u00e9es aux op\u00e9rations de restructuration": {}, + "834-Pertes sur cr\u00e9ances HAO": {}, + "835-Dons et lib\u00e9ralit\u00e9s accord\u00e9s": {}, + "836-Abandons de cr\u00e9ances consentis": {}, + "837-Charges li\u00e9es aux op\u00e9rations de liquidation": {}, + "839-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "85-Dotations hors activit\u00e9s ordinaires": { + "851-Dotations aux provisions r\u00e9glement\u00e9es": {}, + "852-Dotations aux amortissements HAO": {}, + "853-Dotations aux d\u00e9pr\u00e9ciations HAO": {}, + "854-Dotations aux provisions pour risques et charges HAO": {}, + "858-Autres dotations HAO": {} + }, + "87-Participation des travailleurs": { + "871-Participation l\u00e9gale aux b\u00e9n\u00e9fices": {}, + "874-Participation contractuelle aux b\u00e9n\u00e9fices": {}, + "878-Autres participations": {} + }, + "89-Imp\u00f4ts sur le r\u00e9sultat": { + "891-Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "8911-Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": {}, + "8912-Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": {}, + "8913-Activit\u00e9s exerc\u00e9es hors R\u00e9gion": {} + }, + "892-Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": {}, + "895-Imp\u00f4t minimum forfaitaire IMF": {}, + "899-D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "8991-D\u00e9gr\u00e8vements": {}, + "8994-Annulations pour pertes r\u00e9troactives": {} + } + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "82-Produits des cessions d\u2019immobilisations": { + "821-Immobilisations incorporelles": {}, + "822-Immobilisations corporelles": {}, + "826-Immobilisations financi\u00e8res": {} + }, + "84-Produits hors activit\u00e9s ordinaires": { + "841-Produits HAO constat\u00e9s": {}, + "843-Produits li\u00e9s aux op\u00e9rations de restructuration": {}, + "844-Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": {}, + "845-Dons et lib\u00e9ralit\u00e9s obtenus": {}, + "846-Abandons de cr\u00e9ances obtenus": {}, + "847-Produits li\u00e9s aux op\u00e9rations de liquidation": {}, + "848-Transferts de charges HAO": {}, + "849-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "86-Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "861-Reprises de provisions r\u00e9glement\u00e9es": {}, + "862-Reprises d\u2019amortissements HAO": {}, + "863-Reprises de d\u00e9pr\u00e9ciations HAO": {}, + "864-Reprises de provisions pour risques et charges HAO": {}, + "868-Autres reprises HAO": {} + }, + "88-Subventions d\u2019\u00e9quilibre": { + "881-\u00c9tat": {}, + "884-Collectivit\u00e9s publiques": {}, + "886-Groupe": {}, + "888-Autres": {} + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/cm_plan_comptable_avec_code.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/cm_plan_comptable_avec_code.json new file mode 100644 index 00000000000..0ce48d28d3d --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/cm_plan_comptable_avec_code.json @@ -0,0 +1,4208 @@ +{ + "country_code": "cm", + "name": "Syscohada - Plan Comptable avec code", + "tree": { + "Comptes de ressources durables": { + "Capital": { + "Capital social": { + "Capital souscrit, non appel\u00e9": { + "account_number": "1011" + }, + "Capital souscrit, appel\u00e9, non vers\u00e9": { + "account_number": "1012" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, non amorti": { + "account_number": "1013" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, amorti": { + "account_number": "1014" + }, + "Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": { + "account_number": "1018" + }, + "account_number": "101" + }, + "Capital par dotation": { + "Dotation initiale": { + "account_number": "1021" + }, + "Dotations compl\u00e9mentaires": { + "account_number": "1022" + }, + "Autres dotations": { + "account_number": "1028" + }, + "account_number": "102" + }, + "Capital personnel": { + "account_number": "103" + }, + "Compte de l\u2019exploitant": { + "Apports temporaires": { + "account_number": "1041" + }, + "Op\u00e9rations courantes": { + "account_number": "1042" + }, + "R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": { + "account_number": "1043" + }, + "Pr\u00e9l\u00e8vements d\u2019autoconsommation": { + "account_number": "1047" + }, + "Autres pr\u00e9l\u00e8vements": { + "account_number": "1048" + }, + "account_number": "104" + }, + "Primes li\u00e9es au capital social": { + "Primes d\u2019\u00e9mission": { + "account_number": "1051" + }, + "Primes d\u2019apport": { + "account_number": "1052" + }, + "Primes de fusion": { + "account_number": "1053" + }, + "Primes de conversion": { + "account_number": "1054" + }, + "Autres primes": { + "account_number": "1058" + }, + "account_number": "105" + }, + "\u00c9carts de r\u00e9\u00e9valuation": { + "\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": { + "account_number": "1061" + }, + "\u00c9carts de r\u00e9\u00e9valuation libre": { + "account_number": "1062" + }, + "account_number": "106" + }, + "Apporteurs, capital souscrit, non appel\u00e9": { + "account_number": "109" + }, + "account_number": "10" + }, + "R\u00e9serves": { + "R\u00e9serve l\u00e9gale": { + "account_number": "111" + }, + "R\u00e9serves statutaires ou contractuelles": { + "account_number": "112" + }, + "R\u00e9serves r\u00e9glement\u00e9es": { + "R\u00e9serves de plus-values nettes \u00e0 long terme": { + "account_number": "1131" + }, + "R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "1132" + }, + "R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": { + "account_number": "1133" + }, + "R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": { + "account_number": "1134" + }, + "Autres r\u00e9serves r\u00e9glement\u00e9es": { + "account_number": "1135" + }, + "account_number": "113" + }, + "Autres r\u00e9serves": { + "R\u00e9serves facultatives": { + "account_number": "1181" + }, + "R\u00e9serves diverses": { + "account_number": "1188" + }, + "account_number": "118" + }, + "account_number": "11" + }, + "Report \u00e0 nouveau": { + "Report \u00e0 nouveau cr\u00e9diteur": { + "account_number": "121" + }, + "Report \u00e0 nouveau d\u00e9biteur": { + "Perte nette \u00e0 reporter": { + "account_number": "1291" + }, + "Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": { + "account_number": "1292" + }, + "account_number": "129" + }, + "account_number": "12" + }, + "R\u00e9sultat net de l\u2019exercice": { + "R\u00e9sultat en instance d\u2019affectation": { + "R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": { + "account_number": "1301" + }, + "R\u00e9sultat en instance d\u2019affectation : perte": { + "account_number": "1309" + }, + "account_number": "130" + }, + "R\u00e9sultat net : b\u00e9n\u00e9fice": { + "account_number": "131" + }, + "Marge commerciale (MC)": { + "account_number": "132" + }, + "Valeur ajout\u00e9e (VA)": { + "account_number": "133" + }, + "Exc\u00e9dent brut d\u2019exploitation (EBE)": { + "account_number": "134" + }, + "R\u00e9sultat d\u2019exploitation (RE)": { + "account_number": "135" + }, + "R\u00e9sultat financier (RF)": { + "account_number": "136" + }, + "R\u00e9sultat des activit\u00e9s ordinaires (RAO)": { + "account_number": "137" + }, + "R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "R\u00e9sultat de fusion": { + "account_number": "1381" + }, + "R\u00e9sultat d\u2019apport partiel d\u2019actif": { + "account_number": "1382" + }, + "R\u00e9sultat de scission": { + "account_number": "1383" + }, + "R\u00e9sultat de liquidation": { + "account_number": "1384" + }, + "account_number": "138" + }, + "R\u00e9sultat net : perte": { + "account_number": "139" + }, + "account_number": "13" + }, + "Subventions d\u2019investissement": { + "Subventions d\u2019\u00e9quipement": { + "\u00c9tat": { + "account_number": "1411" + }, + "R\u00e9gions": { + "account_number": "1412" + }, + "D\u00e9partements": { + "account_number": "1413" + }, + "Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": { + "account_number": "1414" + }, + "Entit\u00e9s publiques ou mixtes": { + "account_number": "1415" + }, + "Entit\u00e9s et organismes priv\u00e9s": { + "account_number": "1416" + }, + "Organismes internationaux": { + "account_number": "1417" + }, + "Autres": { + "account_number": "1418" + }, + "account_number": "141" + }, + "Autres subventions d\u2019investissement": { + "account_number": "148" + }, + "account_number": "14" + }, + "Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "Amortissements d\u00e9rogatoires": { + "account_number": "151" + }, + "Plus-values de cession \u00e0 r\u00e9investir": { + "account_number": "152" + }, + "Fonds r\u00e9glement\u00e9s": { + "Fonds National": { + "account_number": "1531" + }, + "Pr\u00e9l\u00e8vement pour le Budget": { + "account_number": "1532" + }, + "account_number": "153" + }, + "Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": { + "account_number": "154" + }, + "Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "Reconstitution des gisements miniers et p\u00e9troliers": { + "account_number": "1551" + }, + "account_number": "155" + }, + "Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "Hausse de prix": { + "account_number": "1561" + }, + "Fluctuation des cours": { + "account_number": "1562" + }, + "account_number": "156" + }, + "Provisions pour investissement": { + "account_number": "157" + }, + "Autres provisions et fonds r\u00e9glement\u00e9s": { + "account_number": "158" + }, + "account_number": "15" + }, + "Emprunts et dettes assimil\u00e9es": { + "Emprunts obligataires": { + "Emprunts obligataires ordinaires": { + "account_number": "1611" + }, + "Emprunts obligataires convertibles en actions": { + "account_number": "1612" + }, + "Emprunts obligataires remboursables en actions": { + "account_number": "1613" + }, + "Autres emprunts obligataires": { + "account_number": "1618" + }, + "account_number": "161" + }, + "Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "162" + }, + "Avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "163" + }, + "Avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "164" + }, + "D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "D\u00e9p\u00f4ts": { + "account_number": "1651" + }, + "Cautionnements": { + "account_number": "1652" + }, + "account_number": "165" + }, + "Int\u00e9r\u00eats courus": { + "Sur emprunts obligataires": { + "account_number": "1661" + }, + "Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "1662" + }, + "Sur avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "1663" + }, + "Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "1664" + }, + "Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "account_number": "1665" + }, + "Sur avances assorties de conditions particuli\u00e8res": { + "account_number": "1667" + }, + "Sur autres emprunts et dettes": { + "account_number": "1668" + }, + "account_number": "166" + }, + "Avances assorties de conditions particuli\u00e8res": { + "Avances bloqu\u00e9es pour augmentation du capital": { + "account_number": "1671" + }, + "Avances conditionn\u00e9es par l\u2019\u00c9tat": { + "account_number": "1672" + }, + "Avances conditionn\u00e9es par les autres organismes africains": { + "account_number": "1673" + }, + "Avances conditionn\u00e9es par les organismes internationaux": { + "account_number": "1674" + }, + "account_number": "167" + }, + "Autres emprunts et dettes": { + "Rentes viag\u00e8res capitalis\u00e9es": { + "account_number": "1681" + }, + "Billets de fonds": { + "account_number": "1682" + }, + "Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": { + "account_number": "1683" + }, + "Emprunts participatifs": { + "account_number": "1684" + }, + "Participation des travailleurs aux b\u00e9n\u00e9fices": { + "account_number": "1685" + }, + "Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": { + "account_number": "1686" + }, + "account_number": "168" + }, + "account_number": "16" + }, + "Dettes de location acquisition": { + "Dettes de location acquisition / cr\u00e9dit bail immobilier": { + "account_number": "172" + }, + "Dettes de location acquisition / cr\u00e9dit bail mobilier": { + "account_number": "173" + }, + "Dettes de location acquisition / location de vente": { + "account_number": "174" + }, + "Int\u00e9r\u00eats courus": { + "Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "1762" + }, + "Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "1763" + }, + "Sur dettes de location acquisition / location-vente": { + "account_number": "1764" + }, + "Sur autres dettes de location acquisition": { + "account_number": "1768" + }, + "account_number": "176" + }, + "Autres dettes de location acquisition": { + "account_number": "178" + }, + "account_number": "17" + }, + "Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "Dettes li\u00e9es \u00e0 des participations": { + "Dettes li\u00e9es \u00e0 des participations (groupe)": { + "account_number": "1811" + }, + "Dettes li\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "1812" + }, + "account_number": "181" + }, + "Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "182" + }, + "Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": { + "account_number": "183" + }, + "Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "184" + }, + "Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "185" + }, + "Comptes de liaison charges": { + "account_number": "186" + }, + "Comptes de liaison produits": { + "account_number": "187" + }, + "Comptes de liaison des soci\u00e9t\u00e9s en participation": { + "account_number": "188" + }, + "account_number": "18" + }, + "Provisions pour risques et charges": { + "Provisions pour litiges": { + "account_number": "191" + }, + "Provisions pour garanties donn\u00e9es aux clients": { + "account_number": "192" + }, + "Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": { + "account_number": "193" + }, + "Provisions pour pertes de change": { + "account_number": "194" + }, + "Provisions pour imp\u00f4ts": { + "account_number": "195" + }, + "Provisions pour pensions et obligations similaires": { + "Provisions pour pensions et obligations similaires engagement de retraite": { + "account_number": "1961" + }, + "Actif du r\u00e9gime de retraite": { + "account_number": "1962" + }, + "account_number": "196" + }, + "Provisions pour restructuration": { + "account_number": "197" + }, + "Autres provisions pour risques et charges": { + "Provisions pour amendes et p\u00e9nalit\u00e9s": { + "account_number": "1981" + }, + "Provisions pour propre assureur": { + "account_number": "1983" + }, + "Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "1984" + }, + "Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": { + "account_number": "1985" + }, + "Provisions pour divers risques et charges": { + "account_number": "1988" + }, + "account_number": "198" + }, + "account_number": "19" + }, + "root_type": "Equity", + "account_number": "1" + }, + "Comptes d\u2019actif immobilis\u00e9": { + "Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "211" + }, + "Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "Brevets": { + "account_type": "Fixed Asset", + "account_number": "2121" + }, + "Licences": { + "account_type": "Fixed Asset", + "account_number": "2122" + }, + "Concessions de service public": { + "account_type": "Fixed Asset", + "account_number": "2123" + }, + "Autres concessions et droits similaires": { + "account_type": "Fixed Asset", + "account_number": "2128" + }, + "account_number": "212" + }, + "Logiciels et sites internet": { + "account_type": "Fixed Asset", + "Logiciels": { + "account_type": "Fixed Asset", + "account_number": "2131" + }, + "Sites internet": { + "account_type": "Fixed Asset", + "account_number": "2132" + }, + "account_number": "213" + }, + "Marques": { + "account_type": "Fixed Asset", + "account_number": "214" + }, + "Fonds commercial": { + "account_type": "Fixed Asset", + "account_number": "215" + }, + "Droit au bail": { + "account_type": "Fixed Asset", + "account_number": "216" + }, + "Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset", + "account_number": "217" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset", + "account_number": "2181" + }, + "Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset", + "account_number": "2182" + }, + "Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset", + "account_number": "2183" + }, + "Co\u00fbts des franchises": { + "account_type": "Fixed Asset", + "account_number": "2184" + }, + "Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset", + "account_number": "2188" + }, + "account_number": "218" + }, + "Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "2191" + }, + "Logiciels et internet": { + "account_type": "Fixed Asset", + "account_number": "2193" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "account_number": "2198" + }, + "account_number": "219" + }, + "account_number": "21" + }, + "Terrains": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset", + "account_number": "2211" + }, + "Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset", + "account_number": "2212" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2218" + }, + "account_number": "221" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset", + "account_number": "2221" + }, + "Autres terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2228" + }, + "account_number": "222" + }, + "Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset", + "account_number": "2231" + }, + "Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset", + "account_number": "2232" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2234" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2235" + }, + "Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "account_number": "2238" + }, + "account_number": "223" + }, + "Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset", + "account_number": "2241" + }, + "Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset", + "account_number": "2245" + }, + "Autres travaux": { + "account_type": "Fixed Asset", + "account_number": "2248" + }, + "account_number": "224" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "Carri\u00e8res": { + "account_type": "Fixed Asset", + "account_number": "2251" + }, + "account_number": "225" + }, + "Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "Parkings": { + "account_type": "Fixed Asset", + "account_number": "2261" + }, + "account_number": "226" + }, + "Terrains mis en concession": { + "account_type": "Fixed Asset", + "account_number": "227" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "Terrains immeubles de placement": { + "account_type": "Fixed Asset", + "account_number": "2281" + }, + "Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset", + "account_number": "2285" + }, + "Terrains de location acquisition": { + "account_type": "Fixed Asset", + "account_number": "2286" + }, + "Divers terrains": { + "account_type": "Fixed Asset", + "account_number": "2288" + }, + "account_number": "228" + }, + "Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "account_number": "2291" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2292" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "account_number": "2295" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2298" + }, + "account_number": "229" + }, + "account_number": "22" + }, + "B\u00e2timents, installations techniques et agencements": { + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "B\u00e2timents industriels": { + "account_number": "2311" + }, + "B\u00e2timents agricoles": { + "account_number": "2312" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2313" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2314" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2315" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2316" + }, + "account_number": "231" + }, + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "B\u00e2timents industriels": { + "account_number": "2321" + }, + "B\u00e2timents agricoles": { + "account_number": "2322" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2323" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2324" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2325" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2326" + }, + "account_number": "232" + }, + "Ouvrages d\u2019infrastructure": { + "Voies de terre": { + "account_number": "2331" + }, + "Voies de fer": { + "account_number": "2332" + }, + "Voies d\u2019eau": { + "account_number": "2333" + }, + "Barrages, Digues": { + "account_number": "2334" + }, + "Pistes d\u2019a\u00e9rodrome": { + "account_number": "2335" + }, + "Autres ouvrages d\u2019infrastructures": { + "account_number": "2338" + }, + "account_number": "233" + }, + "Am\u00e9nagements, agencements et installations techniques": { + "Installations complexes sp\u00e9cialis\u00e9es sur sol propre": { + "account_number": "2341" + }, + "Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": { + "account_number": "2342" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": { + "account_number": "2343" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": { + "account_number": "2344" + }, + "Am\u00e9nagements et agencements des b\u00e2timents": { + "account_number": "2345" + }, + "account_number": "234" + }, + "Am\u00e9nagements de bureaux": { + "Installations g\u00e9n\u00e9rales": { + "account_number": "2351" + }, + "Autres am\u00e9nagements de bureaux": { + "account_number": "2358" + }, + "account_number": "235" + }, + "B\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "237" + }, + "Autres installations et agencements": { + "account_number": "238" + }, + "B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "B\u00e2timents en cours": { + "account_number": "2391" + }, + "Installations en cours": { + "account_number": "2392" + }, + "Ouvrages d\u2019infrastructure en cours": { + "account_number": "2393" + }, + "Am\u00e9nagements et agencements et installations techniques en cours": { + "account_number": "2394" + }, + "Am\u00e9nagements de bureaux en cours": { + "account_number": "2395" + }, + "Autres installations et agencements en cours": { + "account_number": "2398" + }, + "account_number": "239" + }, + "account_number": "23" + }, + "Mat\u00e9riel, mobilier et actifs biologiques": { + "Mat\u00e9riel et outillage industriel et commercial": { + "Mat\u00e9riel industriel": { + "account_number": "2411" + }, + "Outillage industriel": { + "account_number": "2412" + }, + "Mat\u00e9riel commercial": { + "account_number": "2413" + }, + "Outillage commercial": { + "account_number": "2414" + }, + "Mat\u00e9riel & outillage industriel et commercial de location-acquisition": { + "account_number": "2416" + }, + "account_number": "241" + }, + "Mat\u00e9riel et outillage agricole": { + "Mat\u00e9riel agricole": { + "account_number": "2421" + }, + "Outillage agricole": { + "account_number": "2422" + }, + "Mat\u00e9riel & outillage agricole de location-acquisition": { + "account_number": "2426" + }, + "account_number": "242" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "243" + }, + "Mat\u00e9riel et mobilier": { + "Mat\u00e9riel de bureau": { + "account_number": "2441" + }, + "Mat\u00e9riel informatique": { + "account_number": "2442" + }, + "Mat\u00e9riel bureautique": { + "account_number": "2443" + }, + "Mobilier de bureau": { + "account_number": "2444" + }, + "Mat\u00e9riel et mobilier immeubles de placement": { + "account_number": "2445" + }, + "Mat\u00e9riel et mobilier de location acquisition": { + "account_number": "2446" + }, + "Mat\u00e9riel et mobilier des logements du personnel": { + "account_number": "2447" + }, + "account_number": "244" + }, + "Mat\u00e9riel de transport": { + "Mat\u00e9riel automobile": { + "account_number": "2451" + }, + "Mat\u00e9riel ferroviaire": { + "account_number": "2452" + }, + "Mat\u00e9riel fluvial, lagunaire": { + "account_number": "2453" + }, + "Mat\u00e9riel naval": { + "account_number": "2454" + }, + "Mat\u00e9riel a\u00e9rien": { + "account_number": "2455" + }, + "Mat\u00e9riel de transport de location-acquisition": { + "account_number": "2456" + }, + "Mat\u00e9riel hippomobile": { + "account_number": "2457" + }, + "Autres mat\u00e9riels de transport": { + "account_number": "2458" + }, + "account_number": "245" + }, + "Actifs biologiques": { + "Cheptel, animaux de trait": { + "account_number": "2461" + }, + "Cheptel, animaux reproducteurs": { + "account_number": "2462" + }, + "Animaux de garde": { + "account_number": "2463" + }, + "Plantations agricoles": { + "account_number": "2465" + }, + "Autres actifs biologiques": { + "account_number": "2468" + }, + "account_number": "246" + }, + "Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "Agencements et am\u00e9nagements du mat\u00e9riel": { + "account_number": "2471" + }, + "Agencements et am\u00e9nagements des actifs biologiques": { + "account_number": "2472" + }, + "Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2478" + }, + "account_number": "247" + }, + "Autres mat\u00e9riels et mobiliers": { + "Collections et \u0153uvres d\u2019art": { + "account_number": "2481" + }, + "Divers mat\u00e9riels mobiliers": { + "account_number": "2488" + }, + "account_number": "248" + }, + "Mat\u00e9riels et actifs biologiques en cours": { + "Mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2491" + }, + "Mat\u00e9riel et outillage agricole": { + "account_number": "2492" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2493" + }, + "Mat\u00e9riel et mobilier de bureau": { + "account_number": "2494" + }, + "Mat\u00e9riel de transport": { + "account_number": "2495" + }, + "Actifs biologiques": { + "account_number": "2496" + }, + "Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2497" + }, + "Autres mat\u00e9riels et actifs biologiques en cours": { + "account_number": "2498" + }, + "account_number": "249" + }, + "account_number": "24" + }, + "Avances et acomptes vers\u00e9s sur immobilisations": { + "Avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "251" + }, + "Avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "252" + }, + "account_number": "25" + }, + "Titres de participation": { + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "261" + }, + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "262" + }, + "Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "263" + }, + "Participations dans des organismes professionnels": { + "account_number": "265" + }, + "Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "266" + }, + "Autres titres de participation": { + "account_number": "268" + }, + "account_number": "26" + }, + "Autres immobilisations financi\u00e8res": { + "Pr\u00eats et cr\u00e9ances": { + "Pr\u00eats participatifs": { + "account_number": "2711" + }, + "Pr\u00eats aux associ\u00e9s": { + "account_number": "2712" + }, + "Billets de fonds": { + "account_number": "2713" + }, + "Titres pr\u00eat\u00e9s": { + "account_number": "2714" + }, + "Autres pr\u00eats et cr\u00e9ances": { + "account_number": "2718" + }, + "account_number": "271" + }, + "Pr\u00eats au personnel": { + "Pr\u00eats immobiliers": { + "account_number": "2721" + }, + "Pr\u00eats mobiliers et d\u2019installation": { + "account_number": "2722" + }, + "Autres pr\u00eats au personnel": { + "account_number": "2728" + }, + "account_number": "272" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "Retenues de garantie": { + "account_number": "2731" + }, + "Fonds r\u00e9glement\u00e9": { + "account_number": "2733" + }, + "Cr\u00e9ances sur le conc\u00e9dant": { + "account_number": "2734" + }, + "Autres cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2738" + }, + "account_number": "273" + }, + "Titres immobilis\u00e9s": { + "Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": { + "account_number": "2741" + }, + "Titres participatifs": { + "account_number": "2742" + }, + "Certificats d\u2019investissement": { + "account_number": "2743" + }, + "Parts de fonds commun de placement (FCP)": { + "account_number": "2744" + }, + "Obligations": { + "account_number": "2745" + }, + "Actions ou parts propres": { + "account_number": "2746" + }, + "Autres titres immobilis\u00e9s": { + "account_number": "2748" + }, + "account_number": "274" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "D\u00e9p\u00f4ts pour loyers d\u2019avance": { + "account_number": "2751" + }, + "D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": { + "account_number": "2752" + }, + "D\u00e9p\u00f4ts pour l\u2019eau": { + "account_number": "2753" + }, + "D\u00e9p\u00f4ts pour le gaz": { + "account_number": "2754" + }, + "D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": { + "account_number": "2755" + }, + "Cautionnements sur march\u00e9s publics": { + "account_number": "2756" + }, + "Cautionnements sur autres op\u00e9rations": { + "account_number": "2757" + }, + "Autres d\u00e9p\u00f4ts et cautionnements": { + "account_number": "2758" + }, + "account_number": "275" + }, + "Int\u00e9r\u00eats courus": { + "Pr\u00eats et cr\u00e9ances non commerciales": { + "account_number": "2761" + }, + "Pr\u00eats au personnel": { + "account_number": "2762" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2763" + }, + "Titres immobilis\u00e9s": { + "account_number": "2764" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2765" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "account_number": "2767" + }, + "Immobilisations financi\u00e8res diverses": { + "account_number": "2768" + }, + "account_number": "276" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": { + "account_number": "2771" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "2772" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "2773" + }, + "Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "2774" + }, + "account_number": "277" + }, + "Immobilisations financi\u00e8res diverses": { + "Cr\u00e9ances diverses groupe": { + "account_number": "2781" + }, + "Cr\u00e9ances diverses hors groupe": { + "account_number": "2782" + }, + "Banques d\u00e9p\u00f4ts \u00e0 terme": { + "account_number": "2784" + }, + "Or et m\u00e9taux pr\u00e9cieux": { + "account_number": "2785" + }, + "Autres immobilisations financi\u00e8res": { + "account_number": "2788" + }, + "account_number": "278" + }, + "account_number": "27" + }, + "Amortissements": { + "account_type": "Accumulated Depreciation", + "Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation", + "account_number": "2811" + }, + "Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation", + "account_number": "2812" + }, + "Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation", + "account_number": "2813" + }, + "Amortissements des marques": { + "account_type": "Accumulated Depreciation", + "account_number": "2814" + }, + "Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation", + "account_number": "2815" + }, + "Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation", + "account_number": "2816" + }, + "Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation", + "account_number": "2817" + }, + "Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation", + "account_number": "2818" + }, + "account_number": "281" + }, + "Amortissements des terrains": { + "Amortissements des travaux de mise en valeur des terrains": { + "account_number": "2824" + }, + "account_number": "282" + }, + "Amortissements des b\u00e2timents, installations techniques et agencements": { + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2831" + }, + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2832" + }, + "Amortissements des ouvrages d\u2019infrastructure": { + "account_number": "2833" + }, + "Amortissements des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2834" + }, + "Amortissements des am\u00e9nagements de bureaux": { + "account_number": "2835" + }, + "Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2837" + }, + "Amortissements des autres installations et agencements": { + "account_number": "2838" + }, + "account_number": "283" + }, + "Amortissements du mat\u00e9riel": { + "Amortissements du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2841" + }, + "Amortissements du mat\u00e9riel et outillage agricole": { + "account_number": "2842" + }, + "Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2843" + }, + "Amortissements du mat\u00e9riel et mobilier": { + "account_number": "2844" + }, + "Amortissements du mat\u00e9riel de transport": { + "account_number": "2845" + }, + "Amortissements des actifs biologiques": { + "account_number": "2846" + }, + "Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2847" + }, + "Amortissements des autres mat\u00e9riels": { + "account_number": "2848" + }, + "account_number": "284" + }, + "account_number": "28" + }, + "D\u00e9pr\u00e9ciations des immobilisations": { + "D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": { + "account_number": "2911" + }, + "D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": { + "account_number": "2912" + }, + "D\u00e9pr\u00e9ciations des logiciels et sites internet": { + "account_number": "2913" + }, + "D\u00e9pr\u00e9ciations des marques": { + "account_number": "2914" + }, + "D\u00e9pr\u00e9ciations du fonds commercial": { + "account_number": "2915" + }, + "D\u00e9pr\u00e9ciations du droit au bail": { + "account_number": "2916" + }, + "D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": { + "account_number": "2917" + }, + "D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": { + "account_number": "2918" + }, + "D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": { + "account_number": "2919" + }, + "account_number": "291" + }, + "D\u00e9pr\u00e9ciations des terrains": { + "D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": { + "account_number": "2921" + }, + "D\u00e9pr\u00e9ciations des terrains nus": { + "account_number": "2922" + }, + "D\u00e9pr\u00e9ciations des terrains b\u00e2tis": { + "account_number": "2923" + }, + "D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": { + "account_number": "2924" + }, + "D\u00e9pr\u00e9ciations des terrains de gisement": { + "account_number": "2925" + }, + "D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": { + "account_number": "2926" + }, + "D\u00e9pr\u00e9ciations des terrains mis en concession": { + "account_number": "2927" + }, + "D\u00e9pr\u00e9ciations des autres terrains": { + "account_number": "2928" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": { + "account_number": "2929" + }, + "account_number": "292" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2931" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2932" + }, + "D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": { + "account_number": "2933" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2934" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": { + "account_number": "2935" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2937" + }, + "D\u00e9pr\u00e9ciations des autres installations et agencements": { + "account_number": "2938" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": { + "account_number": "2939" + }, + "account_number": "293" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2941" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": { + "account_number": "2942" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2943" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": { + "account_number": "2944" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": { + "account_number": "2945" + }, + "D\u00e9pr\u00e9ciations des actifs biologiques": { + "account_number": "2946" + }, + "D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2947" + }, + "D\u00e9pr\u00e9ciations des autres mat\u00e9riels": { + "account_number": "2948" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": { + "account_number": "2949" + }, + "account_number": "294" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "2951" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "2952" + }, + "account_number": "295" + }, + "D\u00e9pr\u00e9ciations des titres de participation": { + "D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "2961" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "2962" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "2963" + }, + "D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": { + "account_number": "2965" + }, + "D\u00e9pr\u00e9ciations des parts dans des GIE": { + "account_number": "2966" + }, + "D\u00e9pr\u00e9ciations des autres titres de participation": { + "account_number": "2968" + }, + "account_number": "296" + }, + "D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": { + "account_number": "2971" + }, + "D\u00e9pr\u00e9ciations des pr\u00eats au personnel": { + "account_number": "2972" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2973" + }, + "D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": { + "account_number": "2974" + }, + "D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2975" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "account_number": "2977" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": { + "account_number": "2978" + }, + "account_number": "297" + }, + "account_number": "29" + }, + "root_type": "Asset", + "account_number": "2" + }, + "Comptes de Stocks": { + "Marchandises": { + "Marchandises A": { + "Marchandises A1": { + "account_number": "3111" + }, + "Marchandises A2": { + "account_number": "3112" + }, + "account_number": "311" + }, + "Marchandises B": { + "Marchandises B1": { + "account_number": "3121" + }, + "Marchandises B2": { + "account_number": "3122" + }, + "account_number": "312" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3131" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3132" + }, + "account_number": "313" + }, + "Marchandises hors activit\u00e9s ordinaires (HAO)": { + "account_number": "318" + }, + "account_number": "31" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Mati\u00e8res A": { + "account_number": "321" + }, + "Mati\u00e8res B": { + "account_number": "322" + }, + "Fournitures (A, B)": { + "account_number": "323" + }, + "account_number": "32" + }, + "Autres approvisionnements": { + "Mati\u00e8res consommables": { + "account_number": "331" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "332" + }, + "Fournitures de magasin": { + "account_number": "333" + }, + "Fournitures de bureau": { + "account_number": "334" + }, + "Emballages": { + "Emballages perdus": { + "account_number": "3351" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "3352" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "3353" + }, + "Autres emballages": { + "account_number": "3358" + }, + "account_number": "335" + }, + "Autres mati\u00e8res": { + "account_number": "338" + }, + "account_number": "33" + }, + "Produits en cours": { + "Produits en cours": { + "Produits en cours P1": { + "account_number": "3411" + }, + "Produits en cours P2": { + "account_number": "3412" + }, + "account_number": "341" + }, + "Travaux en cours": { + "Travaux en cours T1": { + "account_number": "3421" + }, + "Travaux en cours T2": { + "account_number": "3422" + }, + "account_number": "342" + }, + "Produits interm\u00e9diaires en cours": { + "Produits interm\u00e9diaires A": { + "account_number": "3431" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3432" + }, + "account_number": "343" + }, + "Produits r\u00e9siduels en cours": { + "Produits r\u00e9siduels A": { + "account_number": "3441" + }, + "Produits r\u00e9siduels B": { + "account_number": "3442" + }, + "account_number": "344" + }, + "Actifs biologiques en cours": { + "Animaux": { + "account_number": "3451" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3452" + }, + "account_number": "345" + }, + "account_number": "34" + }, + "Services en cours": { + "\u00c9tudes en cours": { + "\u00c9tudes en cours E1": { + "account_number": "3511" + }, + "\u00c9tudes en cours E2": { + "account_number": "3512" + }, + "account_number": "351" + }, + "Prestations de services en cours": { + "Prestations de services S1": { + "account_number": "3521" + }, + "Prestations de services S2": { + "account_number": "3522" + } + }, + "account_number": "35" + }, + "Produits finis": { + "Produits finis A": { + "account_number": "361" + }, + "Produits finis B": { + "account_number": "362" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3631" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3632" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3638" + }, + "account_number": "363" + }, + "account_number": "36" + }, + "Produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "Produits interm\u00e9diaires A": { + "account_number": "3711" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3712" + }, + "account_number": "371" + }, + "Produits r\u00e9siduels": { + "D\u00e9chets": { + "account_number": "3721" + }, + "Rebuts": { + "account_number": "3722" + }, + "Mati\u00e8res de R\u00e9cup\u00e9ration": { + "account_number": "3723" + }, + "account_number": "372" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3731" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3732" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3738" + }, + "account_number": "373" + }, + "account_number": "37" + }, + "Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "Marchandises en cours de route": { + "account_number": "381" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": { + "account_number": "382" + }, + "Autres approvisionnements en cours de route": { + "account_number": "383" + }, + "Produits finis en cours de route": { + "account_number": "386" + }, + "Stock en consignation ou en d\u00e9p\u00f4t": { + "Stock en consignation": { + "account_number": "3871" + }, + "Stock en d\u00e9p\u00f4t": { + "account_number": "3872" + }, + "account_number": "387" + }, + "Stock provenant d\u2019immobilisations mises hors service ou au rebut": { + "account_number": "388" + }, + "account_number": "38" + }, + "D\u00e9pr\u00e9ciations des stocks et encours de production": { + "D\u00e9pr\u00e9ciations des stocks de marchandises": { + "account_number": "391" + }, + "D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "392" + }, + "D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": { + "account_number": "393" + }, + "D\u00e9pr\u00e9ciations des productions en cours": { + "account_number": "394" + }, + "D\u00e9pr\u00e9ciations des services en cours": { + "account_number": "395" + }, + "D\u00e9pr\u00e9ciations des stocks de produits finis": { + "account_number": "396" + }, + "D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "account_number": "397" + }, + "D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_number": "398" + }, + "account_number": "39" + }, + "root_type": "Asset", + "account_number": "3" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "Fournisseurs d\u00e9biteurs": { + "Fournisseurs Avances et acomptes vers\u00e9s": { + "account_number": "4091" + }, + "Fournisseurs Groupe avances et acomptes vers\u00e9s": { + "account_number": "4092" + }, + "Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": { + "account_number": "4093" + }, + "Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": { + "account_number": "4094" + }, + "Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": { + "account_number": "4098" + }, + "account_number": "409" + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "Clients": { + "Clients": { + "account_type": "Receivable", + "account_number": "4111" + }, + "Clients groupe": { + "account_type": "Receivable", + "account_number": "4112" + }, + "Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable", + "account_number": "4114" + }, + "Clients, organismes internationaux": { + "account_type": "Receivable", + "account_number": "4115" + }, + "Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable", + "account_number": "4116" + }, + "Client, retenues de garantie": { + "account_type": "Receivable", + "account_number": "4117" + }, + "Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable", + "account_number": "4118" + }, + "account_type": "Receivable", + "account_number": "411" + }, + "Clients, effets \u00e0 recevoir en portefeuille": { + "Clients, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4121" + }, + "Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4122" + }, + "\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4124" + }, + "Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4125" + }, + "account_type": "Receivable", + "account_number": "412" + }, + "Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4131" + }, + "Clients, effets impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4132" + }, + "Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4133" + }, + "Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4138" + }, + "account_type": "Receivable", + "account_number": "413" + }, + "Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4141" + }, + "Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4142" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4146" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4147" + }, + "account_type": "Receivable", + "account_number": "414" + }, + "Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable", + "account_number": "415" + }, + "Cr\u00e9ances clients litigieuses ou douteuses": { + "Cr\u00e9ances litigieuses": { + "account_type": "Receivable", + "account_number": "4161" + }, + "Cr\u00e9ances douteuses": { + "account_type": "Receivable", + "account_number": "4162" + }, + "account_type": "Receivable", + "account_number": "416" + }, + "Clients, produits \u00e0 recevoir": { + "Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable", + "account_number": "4181" + }, + "Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable", + "account_number": "4186" + }, + "account_type": "Receivable", + "account_number": "418" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "Personnel, avances et acomptes": { + "Personnel, avances": { + "account_number": "4211" + }, + "Personnel, acomptes": { + "account_number": "4212" + }, + "Frais avanc\u00e9s et fournitures au personnel": { + "account_number": "4213" + }, + "account_number": "421" + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "Prestations familiales": { + "account_number": "4311" + }, + "Accidents de travail": { + "account_number": "4312" + }, + "Caisse de retraite obligatoire": { + "account_number": "4313" + }, + "Caisse de retraite facultative": { + "account_number": "4314" + }, + "Autres cotisations sociales": { + "account_number": "4318" + } + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "Mutuelle": { + "account_number": "4331" + }, + "Assurances retraite": { + "account_number": "4332" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "4333" + } + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Produits \u00e0 recevoir": { + "account_number": "4387" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "\u00c9tat, TVA factur\u00e9e": { + "TVA factur\u00e9e sur ventes": { + "account_number": "4431" + }, + "TVA factur\u00e9e sur prestations de services": { + "account_number": "4432" + }, + "TVA factur\u00e9e sur travaux": { + "account_number": "4433" + }, + "TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": { + "account_number": "4434" + }, + "TVA sur factures \u00e0 \u00e9tablir": { + "account_number": "4435" + }, + "account_number": "443" + }, + "\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "TVA r\u00e9cup\u00e9rable sur immobilisations": { + "account_number": "4451" + }, + "TVA r\u00e9cup\u00e9rable sur achats": { + "account_number": "4452" + }, + "TVA r\u00e9cup\u00e9rable sur transport": { + "account_number": "4453" + }, + "TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": { + "account_number": "4454" + }, + "TVA r\u00e9cup\u00e9rable sur factures non parvenues": { + "account_number": "4455" + }, + "TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": { + "account_number": "4456" + }, + "account_number": "445" + }, + "\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges \u00e0 payer": { + "account_number": "4486" + }, + "Produits \u00e0 recevoir": { + "account_number": "4487" + }, + "account_number": "448" + }, + "\u00c9tat, cr\u00e9ances et dettes diverses": { + "\u00c9tat, obligations cautionn\u00e9es": { + "account_number": "4491" + }, + "\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": { + "account_number": "4492" + }, + "\u00c9tat, fonds de dotation \u00e0 recevoir": { + "account_number": "4493" + }, + "\u00c9tat, subventions investissement \u00e0 recevoir": { + "account_number": "4494" + }, + "\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": { + "account_number": "4495" + }, + "\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": { + "account_number": "4496" + }, + "\u00c9tat, avances sur subventions": { + "account_number": "4497" + }, + "\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": { + "account_number": "4499" + }, + "account_number": "449" + } + }, + "45-Organismes internationaux (ACTIF)": { + "Op\u00e9rations avec les organismes africains": { + "account_number": "451" + }, + "Op\u00e9rations avec les autres organismes internationaux": { + "account_number": "452" + }, + "Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "Organismes internationaux, fonds de dotation \u00e0 recevoir": { + "account_number": "4581" + }, + "Organismes internationaux, subventions \u00e0 recevoir": { + "account_number": "4582" + }, + "account_number": "458" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "Apporteurs, capital appel\u00e9, non vers\u00e9": { + "account_number": "4613" + }, + "Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": { + "account_number": "4614" + }, + "Apporteurs, titres \u00e0 \u00e9changer": { + "account_number": "4618" + } + }, + "Apporteurs, restant d\u00fb sur capital appel\u00e9": { + "account_number": "467" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4721" + }, + "Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": { + "account_number": "4726" + } + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "Mandants": { + "account_number": "4731" + }, + "Mandataires": { + "account_number": "4732" + }, + "Commettants": { + "account_number": "4733" + }, + "Commissionnaires": { + "account_number": "4734" + }, + "\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": { + "account_number": "4739" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "Compte de r\u00e9partition p\u00e9riodique des produits": { + "account_number": "4747" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "Compte actif": { + "account_type": "Temporary", + "account_number": "4751" + } + }, + "Charges constat\u00e9es d\u2019avance": { + "account_number": "476" + }, + "478-\u00c9carts de conversion actif": { + "Diminution des cr\u00e9ances d\u2019exploitation": { + "account_number": "4781" + }, + "Diminution des cr\u00e9ances financi\u00e8res": { + "account_number": "4782" + }, + "Augmentation des dettes d\u2019exploitation": { + "account_number": "4783" + }, + "Augmentation des dettes financi\u00e8res": { + "account_number": "4784" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4786" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4788" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "En compte, immobilisations incorporelles": { + "account_number": "4851" + }, + "En compte, immobilisations corporelles": { + "account_number": "4852" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_number": "4853" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_number": "4854" + }, + "Effets escompt\u00e9s non \u00e9chus": { + "account_number": "4855" + }, + "Retenues de garantie": { + "account_number": "4857" + }, + "Factures \u00e0 \u00e9tablir": { + "account_number": "4858" + }, + "account_number": "485" + }, + "Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": { + "account_number": "488" + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "D\u00e9pr\u00e9ciations des comptes clients": { + "Cr\u00e9ances litigieuses": { + "account_number": "4911" + }, + "Cr\u00e9ances douteuses": { + "account_number": "4912" + }, + "account_number": "491" + }, + "D\u00e9pr\u00e9ciations des comptes organismes internationaux": { + "account_number": "495" + }, + "D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "Associ\u00e9s, comptes courants": { + "account_number": "4962" + }, + "Associ\u00e9s, op\u00e9rations faites en commun": { + "account_number": "4963" + }, + "Groupe, comptes courants": { + "account_number": "4966" + }, + "account_number": "496" + }, + "D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": { + "account_number": "497" + }, + "D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "account_number": "4985" + }, + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4986" + }, + "Autres cr\u00e9ances HAO": { + "account_number": "4988" + }, + "account_number": "498" + }, + "Provisions pour risques \u00e0 court terme": { + "Sur op\u00e9rations d\u2019exploitation": { + "account_number": "4991" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "4997" + }, + "Sur op\u00e9rations HAO": { + "account_number": "4998" + }, + "account_number": "499" + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "Fournisseurs, dettes en compte": { + "Fournisseurs": { + "account_type": "Payable", + "account_number": "4011" + }, + "Fournisseurs groupe": { + "account_type": "Payable", + "account_number": "4012" + }, + "Fournisseurs sous-traitants": { + "account_type": "Payable", + "account_number": "4013" + }, + "Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable", + "account_number": "4016" + }, + "Fournisseur, retenues de garantie": { + "account_type": "Payable", + "account_number": "4017" + }, + "account_type": "Payable", + "account_number": "401" + }, + "Fournisseurs, effets \u00e0 payer": { + "Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4021" + }, + "Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4022" + }, + "Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4023" + }, + "account_type": "Payable", + "account_number": "402" + }, + "Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4041" + }, + "Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4042" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4046" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4047" + }, + "account_type": "Payable", + "account_number": "404" + }, + "Fournisseurs, factures non parvenues": { + "Fournisseurs": { + "account_type": "Stock Received But Not Billed", + "account_number": "4081" + }, + "Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed", + "account_number": "4082" + }, + "Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed", + "account_number": "4083" + }, + "Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed", + "account_number": "4086" + }, + "account_type": "Stock Received But Not Billed", + "account_number": "408" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "Clients cr\u00e9diteurs": { + "Clients, avances et acomptes re\u00e7us": { + "account_number": "4191" + }, + "Clients groupe, avances et acomptes re\u00e7us": { + "account_number": "4192" + }, + "Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": { + "account_number": "4194" + }, + "Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": { + "account_number": "4198" + }, + "account_number": "419" + } + }, + "42-Personnel (PASSIF)": { + "Personnel, r\u00e9mun\u00e9rations dues": { + "account_number": "422" + }, + "Personnel, oppositions, saisies-arr\u00eats": { + "Personnel, oppositions": { + "account_number": "4231" + }, + "Personnel, saisies-arr\u00eats": { + "account_number": "4232" + }, + "Personnel, avis \u00e0 tiers d\u00e9tenteur": { + "account_number": "4233" + }, + "account_number": "423" + }, + "Personnel, \u0153uvres sociales internes": { + "Assistance m\u00e9dicale": { + "account_number": "4241" + }, + "Allocations familiales": { + "account_number": "4242" + }, + "Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": { + "account_number": "4245" + }, + "Autres \u0153uvres sociales internes": { + "account_number": "4248" + }, + "account_number": "424" + }, + "Repr\u00e9sentants du personnel": { + "D\u00e9l\u00e9gu\u00e9s du personnel": { + "account_number": "4251" + }, + "Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": { + "account_number": "4252" + }, + "Autres repr\u00e9sentants du personnel": { + "account_number": "4258" + }, + "account_number": "425" + }, + "Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "Participation aux b\u00e9n\u00e9fices": { + "account_number": "4261" + }, + "Participation au capital": { + "account_number": "4264" + }, + "account_number": "426" + }, + "Personnel d\u00e9p\u00f4ts": { + "account_number": "427" + }, + "Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": { + "account_number": "4281" + }, + "Autres charges \u00e0 payer": { + "account_number": "4286" + }, + "Produits \u00e0 recevoir": { + "account_number": "4287" + }, + "account_number": "428" + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges sociales sur gratifications \u00e0 payer": { + "account_number": "4381" + }, + "Charges sociales sur cong\u00e9s \u00e0 payer": { + "account_number": "4382" + }, + "Autres charges \u00e0 payer": { + "account_number": "4386" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": { + "account_number": "441" + }, + "\u00c9tat, autres imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes d\u2019\u00c9tat": { + "account_number": "4421" + }, + "Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": { + "account_number": "4422" + }, + "Imp\u00f4ts et taxes recouvrables sur des obligataires": { + "account_number": "4423" + }, + "Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": { + "account_number": "4424" + }, + "Droits de douane": { + "account_number": "4426" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "4428" + }, + "account_number": "442" + }, + "\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "\u00c9tat, TVA due": { + "account_number": "4441" + }, + "\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": { + "account_number": "4449" + }, + "account_number": "444" + }, + "\u00c9tat, autres taxes sur le chiffre d\u2019affaires": { + "account_number": "446" + }, + "\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": { + "account_number": "4471" + }, + "Imp\u00f4ts sur salaires": { + "account_number": "4472" + }, + "Contribution nationale": { + "account_number": "4473" + }, + "Contribution nationale de solidarit\u00e9": { + "account_number": "4474" + }, + "Autres imp\u00f4ts et contributions": { + "account_number": "4478" + }, + "account_number": "447" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "Apporteurs, apports en nature": { + "account_number": "4611" + }, + "Apporteurs, apports en num\u00e9raire": { + "account_number": "4612" + }, + "Apporteurs, versements re\u00e7us sur augmentation de capital": { + "account_number": "4615" + }, + "Apporteurs, versements anticip\u00e9s": { + "account_number": "4616" + }, + "Apporteurs d\u00e9faillants": { + "account_number": "4617" + }, + "Apporteurs, capital \u00e0 rembourser": { + "account_number": "4619" + } + }, + "462-Associ\u00e9s, comptes courants": { + "Principal": { + "account_number": "4621" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4626" + } + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "Op\u00e9rations courantes": { + "account_number": "4631" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4636" + } + }, + "Associ\u00e9s, dividendes \u00e0 payer": { + "account_number": "465" + }, + "Groupe, comptes courants": { + "account_number": "466" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "D\u00e9biteurs divers": { + "account_number": "4711" + }, + "Cr\u00e9diteurs divers": { + "account_number": "4712" + }, + "Obligataires": { + "account_number": "4713" + }, + "R\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "4715" + }, + "Compte d\u2019affacturage": { + "account_number": "4716" + }, + "D\u00e9biteurs divers retenues de garantie": { + "account_number": "4717" + }, + "Apport, compte de fusion et op\u00e9rations assimil\u00e9es": { + "account_number": "4718" + }, + "Bons de souscription d\u2019actions et d\u2019obligations": { + "account_number": "4719" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "Compte de r\u00e9partition p\u00e9riodique des charges": { + "account_number": "4746" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "Compte passif": { + "account_number": "4752" + } + }, + "Produits constat\u00e9s d\u2019avance": { + "account_number": "477" + }, + "479-\u00c9carts de conversion passif": { + "Augmentation des cr\u00e9ances d\u2019exploitation": { + "account_number": "4791" + }, + "Augmentation des cr\u00e9ances financi\u00e8res": { + "account_number": "4792" + }, + "Diminution des dettes d\u2019exploitation": { + "account_number": "4793" + }, + "Diminution des dettes financi\u00e8res": { + "account_number": "4794" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4797" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4798" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "Fournisseurs d\u2019investissements": { + "Immobilisations incorporelles": { + "account_number": "4811" + }, + "Immobilisations corporelles": { + "account_number": "4812" + }, + "Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": { + "account_number": "4813" + }, + "R\u00e9serve de propri\u00e9t\u00e9": { + "account_number": "4816" + }, + "Retenues de garantie": { + "account_number": "4817" + }, + "Factures non parvenues": { + "account_number": "4818" + }, + "account_number": "481" + }, + "Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "Immobilisations incorporelles": { + "account_number": "4821" + }, + "Immobilisations corporelles": { + "account_number": "4822" + }, + "account_number": "482" + }, + "Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "Produits": { + "account_number": "4887" + }, + "account_number": "484" + } + }, + "root_type": "Liability" + }, + "Comptes de tr\u00e9sorerie": { + "Titres de placement": { + "Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "Titres du Tr\u00e9sor \u00e0 court terme": { + "account_number": "5011" + }, + "Titres d\u2019organismes financiers": { + "account_number": "5012" + }, + "Bons de caisse \u00e0 court terme": { + "account_number": "5013" + }, + "Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": { + "account_number": "5016" + }, + "account_number": "501" + }, + "Actions": { + "Actions ou parts propres": { + "account_number": "5021" + }, + "Actions cot\u00e9es": { + "account_number": "5022" + }, + "Actions non cot\u00e9es": { + "account_number": "5023" + }, + "Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": { + "account_number": "5024" + }, + "Autres actions": { + "account_number": "5025" + }, + "Frais d\u2019acquisition des actions": { + "account_number": "5026" + }, + "account_number": "502" + }, + "Obligations": { + "Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": { + "account_number": "5031" + }, + "Obligations cot\u00e9es": { + "account_number": "5032" + }, + "Obligations non cot\u00e9es": { + "account_number": "5033" + }, + "Autres obligations": { + "account_number": "5035" + }, + "Frais d\u2019acquisition des obligations": { + "account_number": "5036" + }, + "account_number": "503" + }, + "Bons de souscription": { + "Bons de souscription d\u2019actions": { + "account_number": "5042" + }, + "Bons de souscription d\u2019obligations": { + "account_number": "5043" + }, + "account_number": "504" + }, + "Titres n\u00e9gociables hors r\u00e9gion": { + "account_number": "505" + }, + "Int\u00e9r\u00eats courus": { + "Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": { + "account_number": "5061" + }, + "Actions": { + "account_number": "5062" + }, + "Obligations": { + "account_number": "5063" + }, + "account_number": "506" + }, + "Autres titres de placement et cr\u00e9ances assimil\u00e9es": { + "account_number": "508" + }, + "account_number": "50" + }, + "Valeurs \u00e0 encaisser": { + "Effets \u00e0 encaisser": { + "account_number": "511" + }, + "Effets \u00e0 l\u2019encaissement": { + "account_number": "512" + }, + "Ch\u00e8ques \u00e0 encaisser": { + "account_number": "513" + }, + "Ch\u00e8ques \u00e0 l\u2019encaissement": { + "account_number": "514" + }, + "Cartes de cr\u00e9dit \u00e0 encaisser": { + "account_number": "515" + }, + "Autres valeurs \u00e0 l\u2019encaissement": { + "Warrants": { + "account_number": "5181" + }, + "Billets de fonds": { + "account_number": "5182" + }, + "Ch\u00e8ques de voyage": { + "account_number": "5185" + }, + "Coupons \u00e9chus": { + "account_number": "5186" + }, + "Int\u00e9r\u00eats \u00e9chus des obligations": { + "account_number": "5187" + }, + "account_number": "518" + }, + "account_number": "51" + }, + "Banques": { + "Banques locales": { + "Banques en monnaie nationale": { + "account_type": "Bank", + "account_number": "5211" + }, + "Banques en devises": { + "account_type": "Bank", + "account_number": "5215" + }, + "account_type": "Bank", + "account_number": "521" + }, + "Banques autres \u00c9tats r\u00e9gion": { + "account_number": "522" + }, + "Banques autres \u00c9tats zone mon\u00e9taire": { + "account_number": "523" + }, + "Banques hors zone mon\u00e9taire": { + "account_number": "524" + }, + "Banques d\u00e9p\u00f4t \u00e0 terme": { + "account_number": "525" + }, + "Banques, int\u00e9r\u00eats courus": { + "Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": { + "account_number": "5261" + }, + "Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": { + "account_number": "5267" + }, + "account_number": "526" + }, + "account_number": "52" + }, + "\u00c9tablissements financiers et assimil\u00e9s": { + "Ch\u00e8ques postaux": { + "account_number": "531" + }, + "Tr\u00e9sor": { + "account_number": "532" + }, + "Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": { + "account_number": "533" + }, + "\u00c9tablissements financiers, int\u00e9r\u00eats courus": { + "account_number": "536" + }, + "Autres organismes financiers": { + "account_number": "538" + }, + "account_number": "53" + }, + "Instruments de tr\u00e9sorerie": { + "Options de taux d\u2019int\u00e9r\u00eat": { + "account_number": "541" + }, + "Options de taux de change": { + "account_number": "542" + }, + "Options de taux boursiers": { + "account_number": "543" + }, + "Instruments de march\u00e9s \u00e0 terme": { + "account_number": "544" + }, + "Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": { + "account_number": "545" + }, + "account_number": "54" + }, + "Instruments de monnaie \u00e9lectronique": { + "Monnaie \u00e9lectronique carte carburant": { + "account_number": "551" + }, + "Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": { + "account_number": "552" + }, + "Monnaie \u00e9lectronique carte p\u00e9age": { + "account_number": "553" + }, + "Porte-monnaie \u00e9lectronique": { + "account_number": "554" + }, + "Autres instruments de monnaies \u00e9lectroniques": { + "account_number": "558" + }, + "account_number": "55" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "Cr\u00e9dits de tr\u00e9sorerie": { + "account_number": "561" + }, + "Escompte de cr\u00e9dits de campagne": { + "account_number": "564" + }, + "Escompte de cr\u00e9dits ordinaires": { + "account_number": "565" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": { + "account_number": "566" + }, + "account_number": "56" + }, + "Caisse": { + "Caisse si\u00e8ge social": { + "Caisse en monnaie nationale": { + "account_number": "5711" + }, + "Caisse en devises": { + "account_number": "5712" + }, + "account_number": "571" + }, + "Caisse succursale A": { + "En monnaie nationale": { + "account_number": "5721" + }, + "En devises": { + "account_number": "5722" + }, + "account_number": "572" + }, + "Caisse succursale B": { + "En monnaie nationale": { + "account_number": "5731" + }, + "En devises": { + "account_number": "5732" + }, + "account_number": "573" + }, + "account_number": "57" + }, + "R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "R\u00e9gies d\u2019avance": { + "account_number": "581" + }, + "Accr\u00e9ditifs": { + "account_number": "582" + }, + "Virements de fonds": { + "account_number": "585" + }, + "Autres virements internes": { + "account_number": "588" + }, + "account_number": "58" + }, + "D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "D\u00e9pr\u00e9ciations des titres de placement": { + "account_number": "590" + }, + "D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": { + "account_number": "591" + }, + "D\u00e9pr\u00e9ciations des comptes banques": { + "account_number": "592" + }, + "D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": { + "account_number": "593" + }, + "D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": { + "account_number": "594" + }, + "Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": { + "account_number": "599" + }, + "account_number": "59" + }, + "root_type": "Asset", + "account_number": "5" + }, + "Comptes de charges des activit\u00e9s ordinaires": { + "Achats et variations de stocks": { + "Achats de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "6011" + }, + "Hors R\u00e9gion": { + "account_number": "6012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6014" + }, + "Frais sur achats": { + "account_number": "6015" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6019" + }, + "account_number": "601" + }, + "Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Dans la R\u00e9gion": { + "account_number": "6021" + }, + "Hors R\u00e9gion": { + "account_number": "6022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6024" + }, + "Frais sur achats": { + "account_number": "6025" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6029" + }, + "account_number": "602" + }, + "Variations des stocks de biens achet\u00e9s": { + "Variations des stocks de marchandises": { + "account_number": "6031" + }, + "Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "6032" + }, + "Variations des stocks d\u2019autres approvisionnements": { + "account_number": "6033" + }, + "account_number": "603" + }, + "Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "Mati\u00e8res consommables": { + "account_number": "6041" + }, + "Mati\u00e8res combustibles": { + "account_number": "6042" + }, + "Produits d\u2019entretien": { + "account_number": "6043" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "6044" + }, + "Frais sur achat": { + "account_number": "6045" + }, + "Fournitures de magasin": { + "account_number": "6046" + }, + "Fournitures de bureau": { + "account_number": "6047" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6049" + }, + "account_number": "604" + }, + "Autres achats": { + "Fournitures non stockables Eau": { + "account_number": "6051" + }, + "Fournitures non stockables \u00c9lectricit\u00e9": { + "account_number": "6052" + }, + "Fournitures non stockables Autres \u00e9nergies": { + "account_number": "6053" + }, + "Fournitures d\u2019entretien non stockables": { + "account_number": "6054" + }, + "Fournitures de bureau non stockables": { + "account_number": "6055" + }, + "Achats de petit mat\u00e9riel et outillage": { + "account_number": "6056" + }, + "Achats d\u2019\u00e9tudes et prestations de services": { + "account_number": "6057" + }, + "Achats de travaux, mat\u00e9riels et \u00e9quipements": { + "account_number": "6058" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6059" + }, + "account_number": "605" + }, + "Achats d\u2019emballages": { + "Emballages perdus": { + "account_number": "6081" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "6082" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "6083" + }, + "Frais sur achats": { + "account_number": "6085" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6089" + }, + "account_number": "608" + }, + "account_number": "60" + }, + "Transports": { + "Transports sur ventes": { + "account_number": "612" + }, + "Transports pour le compte de tiers": { + "account_number": "613" + }, + "Transports du personnel": { + "account_number": "614" + }, + "Transports de plis": { + "account_number": "616" + }, + "Autres frais de transport": { + "Voyages et d\u00e9placements": { + "account_number": "6181" + }, + "Transports entre \u00e9tablissements ou chantiers": { + "account_number": "6182" + }, + "Transports administratifs": { + "account_number": "6183" + }, + "account_number": "618" + }, + "account_number": "61" + }, + "Services ext\u00e9rieurs": { + "Sous-traitance g\u00e9n\u00e9rale": { + "account_number": "621" + }, + "Locations, charges locatives": { + "Locations de terrains": { + "account_number": "6221" + }, + "Locations de b\u00e2timents": { + "account_number": "6222" + }, + "Locations de mat\u00e9riels et outillages": { + "account_number": "6223" + }, + "Malis sur emballages": { + "account_number": "6224" + }, + "Locations d\u2019emballages": { + "account_number": "6225" + }, + "Fermages et loyers du foncier": { + "account_number": "6226" + }, + "Locations et charges locatives diverses": { + "account_number": "6228" + }, + "account_number": "622" + }, + "Redevances de location acquisition": { + "Cr\u00e9dit-bail immobilier": { + "account_number": "6232" + }, + "Cr\u00e9dit-bail mobilier": { + "account_number": "6233" + }, + "Location-vente": { + "account_number": "6234" + }, + "Autres contrats de location acquisition": { + "account_number": "6238" + }, + "account_number": "623" + }, + "Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "Entretien et r\u00e9parations des biens immobiliers": { + "account_number": "6241" + }, + "Entretien et r\u00e9parations des biens mobiliers": { + "account_number": "6242" + }, + "Maintenance": { + "account_number": "6243" + }, + "Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "6244" + }, + "Autres entretiens et r\u00e9parations": { + "account_number": "6248" + }, + "account_number": "624" + }, + "Primes d\u2019assurance": { + "Assurances multirisques": { + "account_number": "6251" + }, + "Assurances mat\u00e9riel de transport": { + "account_number": "6252" + }, + "Assurances risques d\u2019exploitation": { + "account_number": "6253" + }, + "Assurances responsabilit\u00e9 du producteur": { + "account_number": "6254" + }, + "Assurances insolvabilit\u00e9 clients": { + "account_number": "6255" + }, + "Assurances transport sur ventes": { + "account_number": "6257" + }, + "Autres primes d\u2019assurances": { + "account_number": "6258" + }, + "account_number": "625" + }, + "\u00c9tudes, recherches et documentation": { + "\u00c9tudes et recherches": { + "account_number": "6261" + }, + "Documentation g\u00e9n\u00e9rale": { + "account_number": "6265" + }, + "Documentation technique": { + "account_number": "6266" + }, + "account_number": "626" + }, + "Publicit\u00e9, publications, relations publiques": { + "Annonces, insertions": { + "account_number": "6271" + }, + "Catalogues, imprim\u00e9s publicitaires": { + "account_number": "6272" + }, + "\u00c9chantillons": { + "account_number": "6273" + }, + "Foires et expositions": { + "account_number": "6274" + }, + "Publications": { + "account_number": "6275" + }, + "Cadeaux \u00e0 la client\u00e8le": { + "account_number": "6276" + }, + "Frais de colloques, s\u00e9minaires, conf\u00e9rences": { + "account_number": "6277" + }, + "Autres charges de publicit\u00e9 et relations publiques": { + "account_number": "6278" + }, + "account_number": "627" + }, + "Frais de t\u00e9l\u00e9communications": { + "Frais de t\u00e9l\u00e9phone": { + "account_number": "6281" + }, + "Frais de t\u00e9lex": { + "account_number": "6282" + }, + "Frais de t\u00e9l\u00e9copie": { + "account_number": "6283" + }, + "Autres frais de t\u00e9l\u00e9communications": { + "account_number": "6288" + }, + "account_number": "628" + }, + "account_number": "62" + }, + "Autres services ext\u00e9rieurs": { + "Frais bancaires": { + "Frais sur titres (vente, garde)": { + "account_number": "6311" + }, + "Frais sur effets": { + "account_number": "6312" + }, + "Location de coffres": { + "account_number": "6313" + }, + "Commissions d\u2019affacturage": { + "account_number": "6314" + }, + "Commissions sur cartes de cr\u00e9dit": { + "account_number": "6315" + }, + "Frais d\u2019\u00e9mission d\u2019emprunts": { + "account_number": "6316" + }, + "Frais sur instruments monnaie \u00e9lectronique": { + "account_number": "6317" + }, + "Autres frais bancaires": { + "account_number": "6318" + }, + "account_number": "631" + }, + "R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "Commissions et courtages sur ventes": { + "account_number": "6322" + }, + "Honoraires des professions r\u00e9glement\u00e9es": { + "account_number": "6324" + }, + "Frais d\u2019actes et de contentieux": { + "account_number": "6325" + }, + "R\u00e9mun\u00e9rations d\u2019affacturage": { + "account_number": "6326" + }, + "R\u00e9mun\u00e9rations des autres prestataires de services": { + "account_number": "6327" + }, + "Divers frais": { + "account_number": "6328" + }, + "account_number": "632" + }, + "Frais de formation du personnel": { + "account_number": "633" + }, + "Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "Redevances pour brevets, licences": { + "account_number": "6342" + }, + "Redevances pour logiciels": { + "account_number": "6343" + }, + "Redevances pour marques": { + "account_number": "6344" + }, + "Redevances pour sites internet": { + "account_number": "6345" + }, + "Redevances pour concessions, droits et valeurs similaires": { + "account_number": "6346" + }, + "account_number": "634" + }, + "Cotisations": { + "Cotisations": { + "account_number": "6351" + }, + "Concours divers": { + "account_number": "6358" + }, + "account_number": "635" + }, + "R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "Personnel int\u00e9rimaire": { + "account_number": "6371" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6372" + }, + "account_number": "637" + }, + "Autres charges externes": { + "Frais de recrutement du personnel": { + "account_number": "6381" + }, + "Frais de d\u00e9m\u00e9nagement": { + "account_number": "6382" + }, + "R\u00e9ceptions": { + "account_number": "6383" + }, + "Missions": { + "account_number": "6384" + }, + "Charges de copropri\u00e9t\u00e9": { + "account_number": "6385" + }, + "account_number": "638" + }, + "account_number": "63" + }, + "Imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes directs": { + "Imp\u00f4ts fonciers et taxes annexes": { + "account_number": "6411" + }, + "Patentes, licences et taxes annexes": { + "account_number": "6412" + }, + "Taxes sur appointements et salaires": { + "account_number": "6413" + }, + "Taxes d\u2019apprentissage": { + "account_number": "6414" + }, + "Formation professionnelle continue": { + "account_number": "6415" + }, + "Autres imp\u00f4ts et taxes directs": { + "account_number": "6418" + }, + "account_number": "641" + }, + "Imp\u00f4ts et taxes indirects": { + "account_number": "645" + }, + "Droits d\u2019enregistrement": { + "Droits de mutation": { + "account_number": "6461" + }, + "Droits de timbre": { + "account_number": "6462" + }, + "Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": { + "account_number": "6463" + }, + "Vignettes": { + "account_number": "6464" + }, + "Autres droits": { + "account_number": "6468" + }, + "account_number": "646" + }, + "P\u00e9nalit\u00e9s, amendes fiscales": { + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": { + "account_number": "6471" + }, + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": { + "account_number": "6472" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": { + "account_number": "6473" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": { + "account_number": "6474" + }, + "Autres p\u00e9nalit\u00e9s et amendes fiscales": { + "account_number": "6478" + }, + "account_number": "647" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "648" + }, + "account_number": "64" + }, + "Autres charges": { + "Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "Clients": { + "account_number": "6511" + }, + "Autres d\u00e9biteurs": { + "account_number": "6515" + }, + "account_number": "651" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "6521" + }, + "Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "6525" + }, + "account_number": "652" + }, + "Valeurs comptables des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "6541" + }, + "Immobilisations corporelles": { + "account_number": "6542" + }, + "account_number": "654" + }, + "Perte de change sur cr\u00e9ances et dettes commerciale": { + "account_number": "656" + }, + "P\u00e9nalit\u00e9s et amendes p\u00e9nales": { + "account_number": "657" + }, + "Charges diverses": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "6581" + }, + "Dons": { + "account_number": "6582" + }, + "M\u00e9c\u00e9nat": { + "account_number": "6583" + }, + "Autres charges diverses": { + "account_number": "6588" + }, + "account_number": "658" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "6591" + }, + "Sur stocks": { + "account_number": "6593" + }, + "Sur cr\u00e9ances": { + "account_number": "6594" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": { + "account_number": "6598" + }, + "account_number": "659" + }, + "account_number": "65" + }, + "Charges de personnel": { + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "Appointements salaires et commissions": { + "account_number": "6611" + }, + "Primes et gratifications": { + "account_number": "6612" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6613" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6614" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6615" + }, + "Suppl\u00e9ment familial": { + "account_number": "6616" + }, + "Avantages en nature": { + "account_number": "6617" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6618" + }, + "account_number": "661" + }, + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "Appointements salaires et commissions": { + "account_number": "6621" + }, + "Primes et gratifications": { + "account_number": "6622" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6623" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6624" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6625" + }, + "Suppl\u00e9ment familial": { + "account_number": "6626" + }, + "Avantages en nature": { + "account_number": "6627" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6628" + }, + "account_number": "662" + }, + "Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "Indemnit\u00e9s de logement": { + "account_number": "6631" + }, + "Indemnit\u00e9s de repr\u00e9sentation": { + "account_number": "6632" + }, + "Indemnit\u00e9s d\u2019expatriation": { + "account_number": "6633" + }, + "Indemnit\u00e9s de transport": { + "account_number": "6634" + }, + "Autres indemnit\u00e9s et avantages divers": { + "account_number": "6638" + }, + "account_number": "663" + }, + "Charges sociales": { + "Charges sociales sur r\u00e9mun\u00e9ration du personnel national": { + "account_number": "6641" + }, + "Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": { + "account_number": "6642" + }, + "account_number": "664" + }, + "R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "R\u00e9mun\u00e9ration du travail de l\u2019exploitant": { + "account_number": "6661" + }, + "Charges sociales": { + "account_number": "6662" + }, + "account_number": "666" + }, + "R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "Personnel int\u00e9rimaire": { + "account_number": "6671" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6672" + }, + "account_number": "667" + }, + "Autres charges sociales": { + "Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": { + "account_number": "6681" + }, + "Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": { + "account_number": "6682" + }, + "Versements et contributions aux autres \u0153uvres sociales": { + "account_number": "6683" + }, + "M\u00e9decine du travail et pharmacie": { + "account_number": "6684" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "6685" + }, + "Assurances retraite et fonds de pension": { + "account_number": "6686" + }, + "Majorations et p\u00e9nalit\u00e9s sociales": { + "account_number": "6687" + }, + "Charges sociales diverses": { + "account_number": "6688" + }, + "account_number": "668" + }, + "account_number": "66" + }, + "Frais financiers et charges assimil\u00e9es": { + "Int\u00e9r\u00eats des emprunts": { + "Emprunts obligataires": { + "account_number": "6711" + }, + "Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "6712" + }, + "Dettes li\u00e9es \u00e0 des participations": { + "account_number": "6713" + }, + "Primes de remboursement des obligations": { + "account_number": "6714" + }, + "account_number": "671" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "6722" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "6723" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": { + "account_number": "6724" + }, + "Int\u00e9r\u00eats dans loyers des autres locations acquisition": { + "account_number": "6728" + }, + "account_number": "672" + }, + "Escomptes accord\u00e9s": { + "account_number": "673" + }, + "Autres int\u00e9r\u00eats": { + "Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": { + "account_number": "6741" + }, + "Comptes courants bloqu\u00e9s": { + "account_number": "6742" + }, + "Int\u00e9r\u00eats sur obligations cautionn\u00e9es": { + "account_number": "6743" + }, + "Int\u00e9r\u00eats sur dettes commerciales": { + "account_number": "6744" + }, + "Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": { + "account_number": "6745" + }, + "Int\u00e9r\u00eats sur dettes diverses": { + "account_number": "6748" + }, + "account_number": "674" + }, + "Escomptes des effets de commerce": { + "account_number": "675" + }, + "Pertes de change financi\u00e8res": { + "account_number": "676" + }, + "Pertes sur titres de placement": { + "Pertes sur cessions de titres de placement": { + "account_number": "6771" + }, + "Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "6772" + }, + "account_number": "677" + }, + "Pertes et charges sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "6781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "6782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "6784" + }, + "account_number": "678" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "6791" + }, + "Sur titres de placement": { + "account_number": "6795" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "6798" + }, + "account_number": "679" + }, + "account_number": "67" + }, + "Dotations aux amortissements": { + "Dotations aux amortissements d\u2019exploitation": { + "Dotations aux amortissements des immobilisations incorporelles": { + "account_number": "6812" + }, + "Dotations aux amortissements des immobilisations corporelles": { + "account_number": "6813" + }, + "account_number": "681" + }, + "account_number": "68" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6911" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "account_number": "6913" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": { + "account_number": "6914" + }, + "account_number": "691" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6971" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": { + "account_number": "6972" + }, + "account_number": "697" + }, + "account_number": "69" + }, + "root_type": "Expense", + "account_number": "6" + }, + "Comptes de produits des activit\u00e9s ordinaires": { + "Ventes": { + "Ventes de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "7011" + }, + "Hors R\u00e9gion": { + "account_number": "7012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7014" + }, + "Sur internet": { + "account_number": "7015" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7019" + }, + "account_number": "701" + }, + "Ventes de produits finis": { + "Dans la R\u00e9gion": { + "account_number": "7021" + }, + "Hors R\u00e9gion": { + "account_number": "7022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7024" + }, + "Sur internet": { + "account_number": "7025" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7029" + }, + "account_number": "702" + }, + "Ventes de produits interm\u00e9diaires": { + "Dans la R\u00e9gion": { + "account_number": "7031" + }, + "Hors R\u00e9gion": { + "account_number": "7032" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7033" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7034" + }, + "Sur internet": { + "account_number": "7035" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7039" + }, + "account_number": "703" + }, + "Ventes de produits r\u00e9siduels": { + "Dans la R\u00e9gion": { + "account_number": "7041" + }, + "Hors R\u00e9gion": { + "account_number": "7042" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7043" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7044" + }, + "Sur internet": { + "account_number": "7045" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7049" + }, + "account_number": "704" + }, + "Travaux factur\u00e9s": { + "Dans la R\u00e9gion": { + "account_number": "7051" + }, + "Hors R\u00e9gion": { + "account_number": "7052" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7053" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7054" + }, + "Sur internet": { + "account_number": "7055" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7059" + }, + "account_number": "705" + }, + "Services vendus": { + "Dans la R\u00e9gion": { + "account_number": "7061" + }, + "Hors R\u00e9gion": { + "account_number": "7062" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7063" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7064" + }, + "Sur internet": { + "account_number": "7065" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7069" + }, + "account_number": "706" + }, + "Produits accessoires": { + "Ports, emballages perdus et autres frais factur\u00e9s": { + "account_number": "7071" + }, + "Commissions et courtages": { + "account_number": "7072" + }, + "Locations": { + "account_number": "7073" + }, + "Bonis sur reprises et cessions d\u2019emballages": { + "account_number": "7074" + }, + "Mise \u00e0 disposition de personnel": { + "account_number": "7075" + }, + "Redevances pour brevets, logiciels, marques et droits similaires": { + "account_number": "7076" + }, + "Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": { + "account_number": "7077" + }, + "Autres produits accessoires": { + "account_number": "7078" + }, + "account_number": "707" + }, + "account_number": "70" + }, + "Subventions d\u2019exploitation": { + "Sur produits \u00e0 l\u2019exportation": { + "account_number": "711" + }, + "Sur produits \u00e0 l\u2019importation": { + "account_number": "712" + }, + "Sur produits de p\u00e9r\u00e9quation": { + "account_number": "713" + }, + "Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": { + "account_number": "714" + }, + "Autres subventions d\u2019exploitation": { + "Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": { + "account_number": "7181" + }, + "Vers\u00e9es par les organismes internationaux": { + "account_number": "7182" + }, + "Vers\u00e9es par des tiers": { + "account_number": "7183" + }, + "account_number": "718" + }, + "account_number": "71" + }, + "Production immobilis\u00e9e": { + "Immobilisations incorporelles": { + "account_number": "721" + }, + "Immobilisations corporelles": { + "Immobilisations corporelles (hors actifs biologiques)": { + "account_number": "7221" + }, + "Immobilisations corporelles (actifs biologiques)": { + "account_number": "7222" + }, + "account_number": "722" + }, + "Production auto-consomm\u00e9e": { + "account_number": "724" + }, + "Immobilisations financi\u00e8res": { + "account_number": "726" + }, + "account_number": "72" + }, + "Variations des stocks de biens et de services produits": { + "Variations des stocks de produits en cours": { + "Produits en cours": { + "account_number": "7341" + }, + "Travaux en cours": { + "account_number": "7342" + }, + "account_number": "734" + }, + "Variations des en-cours de services": { + "\u00c9tudes en cours": { + "account_number": "7351" + }, + "Prestations de services en cours": { + "account_number": "7352" + }, + "account_number": "735" + }, + "Variations des stocks de produits finis": { + "account_number": "736" + }, + "Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "account_number": "7371" + }, + "Produits r\u00e9siduels": { + "account_number": "7372" + }, + "account_number": "737" + }, + "account_number": "73" + }, + "Autres produits": { + "Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "account_number": "751" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "7521" + }, + "B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "7525" + }, + "account_number": "752" + }, + "Produits des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "7541" + }, + "Immobilisations corporelles": { + "account_number": "7542" + }, + "account_number": "754" + }, + "Gains de change sur cr\u00e9ances et dettes commerciales": { + "account_number": "756" + }, + "Produits divers": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "7581" + }, + "Indemnit\u00e9s d\u2019assurances re\u00e7ues": { + "account_number": "7582" + }, + "Autres produits divers": { + "account_number": "7588" + }, + "account_number": "758" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "7591" + }, + "Sur stocks": { + "account_number": "7593" + }, + "Sur cr\u00e9ances": { + "account_number": "7594" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "account_number": "7598" + }, + "account_number": "759" + }, + "account_number": "75" + }, + "Revenus financiers et produits assimil\u00e9s": { + "Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "Int\u00e9r\u00eats de pr\u00eats": { + "account_number": "7712" + }, + "Int\u00e9r\u00eats sur cr\u00e9ances diverses": { + "account_number": "7713" + }, + "account_number": "771" + }, + "Revenus de participations et autres titres immobilis\u00e9s": { + "Revenus des titres de participation": { + "account_number": "7721" + }, + "Revenus autres titres immobilis\u00e9s": { + "account_number": "7722" + }, + "account_number": "772" + }, + "Escomptes obtenus": { + "account_number": "773" + }, + "Revenus de placement": { + "Revenus des obligations": { + "account_number": "7745" + }, + "Revenus des titres de placement": { + "account_number": "7746" + }, + "account_number": "774" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "account_number": "775" + }, + "Gains de change financiers": { + "account_number": "776" + }, + "Gains sur cessions de titres de placement": { + "account_number": "777" + }, + "Gains sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "7781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "7782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "7784" + }, + "account_number": "778" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "7791" + }, + "Sur titres de placement": { + "account_number": "7795" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "7798" + }, + "account_number": "779" + }, + "account_number": "77" + }, + "Transferts de charges": { + "Transferts de charges d\u2019exploitation": { + "account_number": "781" + }, + "Transferts de charges financi\u00e8res": { + "account_number": "787" + }, + "account_number": "78" + }, + "Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Pour risques et charges": { + "account_number": "7911" + }, + "Des immobilisations incorporelles": { + "account_number": "7913" + }, + "Des immobilisations corporelles": { + "account_number": "7914" + }, + "account_number": "791" + }, + "Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "Pour risques et charges": { + "account_number": "7971" + }, + "Des immobilisations financi\u00e8res": { + "account_number": "7972" + }, + "account_number": "797" + }, + "Reprises d\u2019amortissements": { + "account_number": "798" + }, + "Reprises de subventions d\u2019investissement": { + "account_number": "799" + }, + "account_number": "79" + }, + "root_type": "Income", + "account_number": "7" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "Valeurs comptables des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "811" + }, + "Immobilisations corporelles": { + "account_number": "812" + }, + "Immobilisations financi\u00e8res": { + "account_number": "816" + }, + "account_number": "81" + }, + "Charges hors activit\u00e9s ordinaires": { + "Charges HAO constat\u00e9es": { + "account_number": "831" + }, + "Charges li\u00e9es aux op\u00e9rations de restructuration": { + "account_number": "833" + }, + "Pertes sur cr\u00e9ances HAO": { + "account_number": "834" + }, + "Dons et lib\u00e9ralit\u00e9s accord\u00e9s": { + "account_number": "835" + }, + "Abandons de cr\u00e9ances consentis": { + "account_number": "836" + }, + "Charges li\u00e9es aux op\u00e9rations de liquidation": { + "account_number": "837" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "839" + }, + "account_number": "83" + }, + "Dotations hors activit\u00e9s ordinaires": { + "Dotations aux provisions r\u00e9glement\u00e9es": { + "account_number": "851" + }, + "Dotations aux amortissements HAO": { + "account_number": "852" + }, + "Dotations aux d\u00e9pr\u00e9ciations HAO": { + "account_number": "853" + }, + "Dotations aux provisions pour risques et charges HAO": { + "account_number": "854" + }, + "Autres dotations HAO": { + "account_number": "858" + }, + "account_number": "85" + }, + "Participation des travailleurs": { + "Participation l\u00e9gale aux b\u00e9n\u00e9fices": { + "account_number": "871" + }, + "Participation contractuelle aux b\u00e9n\u00e9fices": { + "account_number": "874" + }, + "Autres participations": { + "account_number": "878" + }, + "account_number": "87" + }, + "Imp\u00f4ts sur le r\u00e9sultat": { + "Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": { + "account_number": "8911" + }, + "Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": { + "account_number": "8912" + }, + "Activit\u00e9s exerc\u00e9es hors R\u00e9gion": { + "account_number": "8913" + }, + "account_number": "891" + }, + "Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "account_number": "892" + }, + "Imp\u00f4t minimum forfaitaire IMF": { + "account_number": "895" + }, + "D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "D\u00e9gr\u00e8vements": { + "account_number": "8991" + }, + "Annulations pour pertes r\u00e9troactives": { + "account_number": "8994" + }, + "account_number": "899" + }, + "account_number": "89" + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "Produits des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "821" + }, + "Immobilisations corporelles": { + "account_number": "822" + }, + "Immobilisations financi\u00e8res": { + "account_number": "826" + }, + "account_number": "82" + }, + "Produits hors activit\u00e9s ordinaires": { + "Produits HAO constat\u00e9s": { + "account_number": "841" + }, + "Produits li\u00e9s aux op\u00e9rations de restructuration": { + "account_number": "843" + }, + "Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": { + "account_number": "844" + }, + "Dons et lib\u00e9ralit\u00e9s obtenus": { + "account_number": "845" + }, + "Abandons de cr\u00e9ances obtenus": { + "account_number": "846" + }, + "Produits li\u00e9s aux op\u00e9rations de liquidation": { + "account_number": "847" + }, + "Transferts de charges HAO": { + "account_number": "848" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "849" + }, + "account_number": "84" + }, + "Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "Reprises de provisions r\u00e9glement\u00e9es": { + "account_number": "861" + }, + "Reprises d\u2019amortissements HAO": { + "account_number": "862" + }, + "Reprises de d\u00e9pr\u00e9ciations HAO": { + "account_number": "863" + }, + "Reprises de provisions pour risques et charges HAO": { + "account_number": "864" + }, + "Autres reprises HAO": { + "account_number": "868" + }, + "account_number": "86" + }, + "Subventions d\u2019\u00e9quilibre": { + "\u00c9tat": { + "account_number": "881" + }, + "Collectivit\u00e9s publiques": { + "account_number": "884" + }, + "Groupe": { + "account_number": "886" + }, + "Autres": { + "account_number": "888" + }, + "account_number": "88" + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/ga_plan_comptable.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/ga_plan_comptable.json new file mode 100644 index 00000000000..fe31f87a47b --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/ga_plan_comptable.json @@ -0,0 +1,1919 @@ +{ + "country_code": "ga", + "name": "Syscohada - Plan Comptable", + "tree": { + "1-Comptes de ressources durables": { + "10-Capital": { + "101-Capital social": { + "1011-Capital souscrit, non appel\u00e9": {}, + "1012-Capital souscrit, appel\u00e9, non vers\u00e9": {}, + "1013-Capital souscrit, appel\u00e9, vers\u00e9, non amorti": {}, + "1014-Capital souscrit, appel\u00e9, vers\u00e9, amorti": {}, + "1018-Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": {} + }, + "102-Capital par dotation": { + "1021-Dotation initiale": {}, + "1022-Dotations compl\u00e9mentaires": {}, + "1028-Autres dotations": {} + }, + "103-Capital personnel": {}, + "104-Compte de l\u2019exploitant": { + "1041-Apports temporaires": {}, + "1042-Op\u00e9rations courantes": {}, + "1043-R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": {}, + "1047-Pr\u00e9l\u00e8vements d\u2019autoconsommation": {}, + "1048-Autres pr\u00e9l\u00e8vements": {} + }, + "105-Primes li\u00e9es au capital social": { + "1051-Primes d\u2019\u00e9mission": {}, + "1052-Primes d\u2019apport": {}, + "1053-Primes de fusion": {}, + "1054-Primes de conversion": {}, + "1058-Autres primes": {} + }, + "106-\u00c9carts de r\u00e9\u00e9valuation": { + "1061-\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": {}, + "1062-\u00c9carts de r\u00e9\u00e9valuation libre": {} + }, + "109-Apporteurs, capital souscrit, non appel\u00e9": {} + }, + "11-R\u00e9serves": { + "111-R\u00e9serve l\u00e9gale": {}, + "112-R\u00e9serves statutaires ou contractuelles": {}, + "113-R\u00e9serves r\u00e9glement\u00e9es": { + "1131-R\u00e9serves de plus-values nettes \u00e0 long terme": {}, + "1132-R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {}, + "1133-R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": {}, + "1134-R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": {}, + "1135-Autres r\u00e9serves r\u00e9glement\u00e9es": {} + }, + "118-Autres r\u00e9serves": { + "1181-R\u00e9serves facultatives": {}, + "1188-R\u00e9serves diverses": {} + } + }, + "12-Report \u00e0 nouveau": { + "121-Report \u00e0 nouveau cr\u00e9diteur": {}, + "129-Report \u00e0 nouveau d\u00e9biteur": { + "1291-Perte nette \u00e0 reporter": {}, + "1292-Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": {} + } + }, + "13-R\u00e9sultat net de l\u2019exercice": { + "130-R\u00e9sultat en instance d\u2019affectation": { + "1301-R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": {}, + "1309-R\u00e9sultat en instance d\u2019affectation : perte": {} + }, + "131-R\u00e9sultat net : b\u00e9n\u00e9fice": {}, + "132-Marge commerciale (MC)": {}, + "133-Valeur ajout\u00e9e (VA)": {}, + "134-Exc\u00e9dent brut d\u2019exploitation (EBE)": {}, + "135-R\u00e9sultat d\u2019exploitation (RE)": {}, + "136-R\u00e9sultat financier (RF)": {}, + "137-R\u00e9sultat des activit\u00e9s ordinaires (RAO)": {}, + "138-R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "1381-R\u00e9sultat de fusion": {}, + "1382-R\u00e9sultat d\u2019apport partiel d\u2019actif": {}, + "1383-R\u00e9sultat de scission": {}, + "1384-R\u00e9sultat de liquidation": {} + }, + "139-R\u00e9sultat net : perte": {} + }, + "14-Subventions d\u2019investissement": { + "141-Subventions d\u2019\u00e9quipement": { + "1411-\u00c9tat": {}, + "1412-R\u00e9gions": {}, + "1413-D\u00e9partements": {}, + "1414-Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": {}, + "1415-Entit\u00e9s publiques ou mixtes": {}, + "1416-Entit\u00e9s et organismes priv\u00e9s": {}, + "1417-Organismes internationaux": {}, + "1418-Autres": {} + }, + "148-Autres subventions d\u2019investissement": {} + }, + "15-Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "151-Amortissements d\u00e9rogatoires": {}, + "152-Plus-values de cession \u00e0 r\u00e9investir": {}, + "153-Fonds r\u00e9glement\u00e9s": { + "1531-Fonds National": {}, + "1532-Pr\u00e9l\u00e8vement pour le Budget": {} + }, + "154-Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": {}, + "155-Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "1551-Reconstitution des gisements miniers et p\u00e9troliers": {} + }, + "156-Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "1561-Hausse de prix": {}, + "1562-Fluctuation des cours": {} + }, + "157-Provisions pour investissement": {}, + "158-Autres provisions et fonds r\u00e9glement\u00e9s": {} + }, + "16-Emprunts et dettes assimil\u00e9es": { + "161-Emprunts obligataires": { + "1611-Emprunts obligataires ordinaires": {}, + "1612-Emprunts obligataires convertibles en actions": {}, + "1613-Emprunts obligataires remboursables en actions": {}, + "1618-Autres emprunts obligataires": {} + }, + "162-Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "163-Avances re\u00e7ues de l\u2019\u00c9tat": {}, + "164-Avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "165-D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "1651-D\u00e9p\u00f4ts": {}, + "1652-Cautionnements": {} + }, + "166-Int\u00e9r\u00eats courus": { + "1661-Sur emprunts obligataires": {}, + "1662-Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "1663-Sur avances re\u00e7ues de l\u2019\u00c9tat": {}, + "1664-Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "1665-Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": {}, + "1667-Sur avances assorties de conditions particuli\u00e8res": {}, + "1668-Sur autres emprunts et dettes": {} + }, + "167-Avances assorties de conditions particuli\u00e8res": { + "1671-Avances bloqu\u00e9es pour augmentation du capital": {}, + "1672-Avances conditionn\u00e9es par l\u2019\u00c9tat": {}, + "1673-Avances conditionn\u00e9es par les autres organismes africains": {}, + "1674-Avances conditionn\u00e9es par les organismes internationaux": {} + }, + "168-Autres emprunts et dettes": { + "1681-Rentes viag\u00e8res capitalis\u00e9es": {}, + "1682-Billets de fonds": {}, + "1683-Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": {}, + "1684-Emprunts participatifs": {}, + "1685-Participation des travailleurs aux b\u00e9n\u00e9fices": {}, + "1686-Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": {} + } + }, + "17-Dettes de location acquisition": { + "172-Dettes de location acquisition / cr\u00e9dit bail immobilier": {}, + "173-Dettes de location acquisition / cr\u00e9dit bail mobilier": {}, + "174-Dettes de location acquisition / location de vente": {}, + "176-Int\u00e9r\u00eats courus": { + "1762-Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": {}, + "1763-Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": {}, + "1764-Sur dettes de location acquisition / location-vente": {}, + "1768-Sur autres dettes de location acquisition": {} + }, + "178-Autres dettes de location acquisition": {} + }, + "18-Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "181-Dettes li\u00e9es \u00e0 des participations": { + "1811-Dettes li\u00e9es \u00e0 des participations (groupe)": {}, + "1812-Dettes li\u00e9es \u00e0 des participations (hors groupe)": {} + }, + "182-Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "183-Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": {}, + "184-Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "185-Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "186-Comptes de liaison charges": {}, + "187-Comptes de liaison produits": {}, + "188-Comptes de liaison des soci\u00e9t\u00e9s en participation": {} + }, + "19-Provisions pour risques et charges": { + "191-Provisions pour litiges": {}, + "192-Provisions pour garanties donn\u00e9es aux clients": {}, + "193-Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": {}, + "194-Provisions pour pertes de change": {}, + "195-Provisions pour imp\u00f4ts": {}, + "196-Provisions pour pensions et obligations similaires": { + "1961-Provisions pour pensions et obligations similaires engagement de retraite": {}, + "1962-Actif du r\u00e9gime de retraite": {} + }, + "197-Provisions pour restructuration": {}, + "198-Autres provisions pour risques et charges": { + "1981-Provisions pour amendes et p\u00e9nalit\u00e9s": {}, + "1983-Provisions pour propre assureur": {}, + "1984-Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "1985-Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": {}, + "1988-Provisions pour divers risques et charges": {} + } + }, + "root_type": "Equity" + }, + "2-Comptes d\u2019actif immobilis\u00e9": { + "21-Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "211-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "212-Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "2121-Brevets": { + "account_type": "Fixed Asset" + }, + "2122-Licences": { + "account_type": "Fixed Asset" + }, + "2123-Concessions de service public": { + "account_type": "Fixed Asset" + }, + "2128-Autres concessions et droits similaires": { + "account_type": "Fixed Asset" + } + }, + "213-Logiciels et sites internet": { + "account_type": "Fixed Asset", + "2131-Logiciels": { + "account_type": "Fixed Asset" + }, + "2132-Sites internet": { + "account_type": "Fixed Asset" + } + }, + "214-Marques": { + "account_type": "Fixed Asset" + }, + "215-Fonds commercial": { + "account_type": "Fixed Asset" + }, + "216-Droit au bail": { + "account_type": "Fixed Asset" + }, + "217-Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset" + }, + "218-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "2181-Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset" + }, + "2182-Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset" + }, + "2183-Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset" + }, + "2184-Co\u00fbts des franchises": { + "account_type": "Fixed Asset" + }, + "2188-Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset" + } + }, + "219-Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "2191-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "2193-Logiciels et internet": { + "account_type": "Fixed Asset" + }, + "2198-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset" + } + } + }, + "22-Terrains": { + "account_type": "Fixed Asset", + "221-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "2211-Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset" + }, + "2212-Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset" + }, + "2218-Autres terrains": { + "account_type": "Fixed Asset" + } + }, + "222-Terrains nus": { + "account_type": "Fixed Asset", + "2221-Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset" + }, + "2228-Autres terrains nus": { + "account_type": "Fixed Asset" + } + }, + "223-Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "2231-Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset" + }, + "2232-Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset" + }, + "2234-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset" + }, + "2235-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset" + }, + "2238-Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset" + } + }, + "224-Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "2241-Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset" + }, + "2245-Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset" + }, + "2248-Autres travaux": { + "account_type": "Fixed Asset" + } + }, + "225-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "2251-Carri\u00e8res": { + "account_type": "Fixed Asset" + } + }, + "226-Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "2261-Parkings": { + "account_type": "Fixed Asset" + } + }, + "227-Terrains mis en concession": { + "account_type": "Fixed Asset" + }, + "228-Autres terrains": { + "account_type": "Fixed Asset", + "2281-Terrains immeubles de placement": { + "account_type": "Fixed Asset" + }, + "2285-Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset" + }, + "2286-Terrains de location acquisition": { + "account_type": "Fixed Asset" + }, + "2288-Divers terrains": { + "account_type": "Fixed Asset" + } + }, + "229-Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "2291-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset" + }, + "2292-Terrains nus": { + "account_type": "Fixed Asset" + }, + "2295-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset" + }, + "2298-Autres terrains": { + "account_type": "Fixed Asset" + } + } + }, + "23-B\u00e2timents, installations techniques et agencements": { + "231-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "2311-B\u00e2timents industriels": {}, + "2312-B\u00e2timents agricoles": {}, + "2313-B\u00e2timents administratifs et commerciaux": {}, + "2314-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2315-B\u00e2timents immeubles de placement": {}, + "2316-B\u00e2timents de location acquisition": {} + }, + "232-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "2321-B\u00e2timents industriels": {}, + "2322-B\u00e2timents agricoles": {}, + "2323-B\u00e2timents administratifs et commerciaux": {}, + "2324-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2325-B\u00e2timents immeubles de placement": {}, + "2326-B\u00e2timents de location acquisition": {} + }, + "233-Ouvrages d\u2019infrastructure": { + "2331-Voies de terre": {}, + "2332-Voies de fer": {}, + "2333-Voies d\u2019eau": {}, + "2334-Barrages, Digues": {}, + "2335-Pistes d\u2019a\u00e9rodrome": {}, + "2338-Autres ouvrages d\u2019infrastructures": {} + }, + "234-Am\u00e9nagements, agencements et installations techniques": { + "2341-Installations complexes sp\u00e9cialis\u00e9es sur sol propre": {}, + "2342-Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": {}, + "2343-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": {}, + "2344-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": {}, + "2345-Am\u00e9nagements et agencements des b\u00e2timents": {} + }, + "235-Am\u00e9nagements de bureaux": { + "2351-Installations g\u00e9n\u00e9rales": {}, + "2358-Autres am\u00e9nagements de bureaux": {} + }, + "237-B\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "238-Autres installations et agencements": {}, + "239-B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "2391-B\u00e2timents en cours": {}, + "2392-Installations en cours": {}, + "2393-Ouvrages d\u2019infrastructure en cours": {}, + "2394-Am\u00e9nagements et agencements et installations techniques en cours": {}, + "2395-Am\u00e9nagements de bureaux en cours": {}, + "2398-Autres installations et agencements en cours": {} + } + }, + "24-Mat\u00e9riel, mobilier et actifs biologiques": { + "241-Mat\u00e9riel et outillage industriel et commercial": { + "2411-Mat\u00e9riel industriel": {}, + "2412-Outillage industriel": {}, + "2413-Mat\u00e9riel commercial": {}, + "2414-Outillage commercial": {}, + "2416-Mat\u00e9riel & outillage industriel et commercial de location-acquisition": {} + }, + "242-Mat\u00e9riel et outillage agricole": { + "2421-Mat\u00e9riel agricole": {}, + "2422-Outillage agricole": {}, + "2426-Mat\u00e9riel & outillage agricole de location-acquisition": {} + }, + "243-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "244-Mat\u00e9riel et mobilier": { + "2441-Mat\u00e9riel de bureau": {}, + "2442-Mat\u00e9riel informatique": {}, + "2443-Mat\u00e9riel bureautique": {}, + "2444-Mobilier de bureau": {}, + "2445-Mat\u00e9riel et mobilier immeubles de placement": {}, + "2446-Mat\u00e9riel et mobilier de location acquisition": {}, + "2447-Mat\u00e9riel et mobilier des logements du personnel": {} + }, + "245-Mat\u00e9riel de transport": { + "2451-Mat\u00e9riel automobile": {}, + "2452-Mat\u00e9riel ferroviaire": {}, + "2453-Mat\u00e9riel fluvial, lagunaire": {}, + "2454-Mat\u00e9riel naval": {}, + "2455-Mat\u00e9riel a\u00e9rien": {}, + "2456-Mat\u00e9riel de transport de location-acquisition": {}, + "2457-Mat\u00e9riel hippomobile": {}, + "2458-Autres mat\u00e9riels de transport": {} + }, + "246-Actifs biologiques": { + "2461-Cheptel, animaux de trait": {}, + "2462-Cheptel, animaux reproducteurs": {}, + "2463-Animaux de garde": {}, + "2465-Plantations agricoles": {}, + "2468-Autres actifs biologiques": {} + }, + "247-Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "2471-Agencements et am\u00e9nagements du mat\u00e9riel": {}, + "2472-Agencements et am\u00e9nagements des actifs biologiques": {}, + "2478-Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": {} + }, + "248-Autres mat\u00e9riels et mobiliers": { + "2481-Collections et \u0153uvres d\u2019art": {}, + "2488-Divers mat\u00e9riels mobiliers": {} + }, + "249-Mat\u00e9riels et actifs biologiques en cours": { + "2491-Mat\u00e9riel et outillage industriel et commercial": {}, + "2492-Mat\u00e9riel et outillage agricole": {}, + "2493-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2494-Mat\u00e9riel et mobilier de bureau": {}, + "2495-Mat\u00e9riel de transport": {}, + "2496-Actifs biologiques": {}, + "2497-Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": {}, + "2498-Autres mat\u00e9riels et actifs biologiques en cours": {} + } + }, + "25-Avances et acomptes vers\u00e9s sur immobilisations": { + "251-Avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "252-Avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "26-Titres de participation": { + "261-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "262-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "263-Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "265-Participations dans des organismes professionnels": {}, + "266-Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {}, + "268-Autres titres de participation": {} + }, + "27-Autres immobilisations financi\u00e8res": { + "271-Pr\u00eats et cr\u00e9ances": { + "2711-Pr\u00eats participatifs": {}, + "2712-Pr\u00eats aux associ\u00e9s": {}, + "2713-Billets de fonds": {}, + "2714-Titres pr\u00eat\u00e9s": {}, + "2718-Autres pr\u00eats et cr\u00e9ances": {} + }, + "272-Pr\u00eats au personnel": { + "2721-Pr\u00eats immobiliers": {}, + "2722-Pr\u00eats mobiliers et d\u2019installation": {}, + "2728-Autres pr\u00eats au personnel": {} + }, + "273-Cr\u00e9ances sur l\u2019\u00c9tat": { + "2731-Retenues de garantie": {}, + "2733-Fonds r\u00e9glement\u00e9": {}, + "2734-Cr\u00e9ances sur le conc\u00e9dant": {}, + "2738-Autres cr\u00e9ances sur l\u2019\u00c9tat": {} + }, + "274-Titres immobilis\u00e9s": { + "2741-Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": {}, + "2742-Titres participatifs": {}, + "2743-Certificats d\u2019investissement": {}, + "2744-Parts de fonds commun de placement (FCP)": {}, + "2745-Obligations": {}, + "2746-Actions ou parts propres": {}, + "2748-Autres titres immobilis\u00e9s": {} + }, + "275-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "2751-D\u00e9p\u00f4ts pour loyers d\u2019avance": {}, + "2752-D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": {}, + "2753-D\u00e9p\u00f4ts pour l\u2019eau": {}, + "2754-D\u00e9p\u00f4ts pour le gaz": {}, + "2755-D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": {}, + "2756-Cautionnements sur march\u00e9s publics": {}, + "2757-Cautionnements sur autres op\u00e9rations": {}, + "2758-Autres d\u00e9p\u00f4ts et cautionnements": {} + }, + "276-Int\u00e9r\u00eats courus": { + "2761-Pr\u00eats et cr\u00e9ances non commerciales": {}, + "2762-Pr\u00eats au personnel": {}, + "2763-Cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2764-Titres immobilis\u00e9s": {}, + "2765-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2767-Cr\u00e9ances rattach\u00e9es \u00e0 des participations": {}, + "2768-Immobilisations financi\u00e8res diverses": {} + }, + "277-Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "2771-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": {}, + "2772-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": {}, + "2773-Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "2774-Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {} + }, + "278-Immobilisations financi\u00e8res diverses": { + "2781-Cr\u00e9ances diverses groupe": {}, + "2782-Cr\u00e9ances diverses hors groupe": {}, + "2784-Banques d\u00e9p\u00f4ts \u00e0 terme": {}, + "2785-Or et m\u00e9taux pr\u00e9cieux": {}, + "2788-Autres immobilisations financi\u00e8res": {} + } + }, + "28-Amortissements": { + "account_type": "Accumulated Depreciation", + "281-Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "2811-Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation" + }, + "2812-Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation" + }, + "2813-Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation" + }, + "2814-Amortissements des marques": { + "account_type": "Accumulated Depreciation" + }, + "2815-Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation" + }, + "2816-Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation" + }, + "2817-Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation" + }, + "2818-Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation" + } + }, + "282-Amortissements des terrains": { + "2824-Amortissements des travaux de mise en valeur des terrains": {} + }, + "283-Amortissements des b\u00e2timents, installations techniques et agencements": { + "2831-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2832-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2833-Amortissements des ouvrages d\u2019infrastructure": {}, + "2834-Amortissements des am\u00e9nagements, agencements et installations techniques": {}, + "2835-Amortissements des am\u00e9nagements de bureaux": {}, + "2837-Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2838-Amortissements des autres installations et agencements": {} + }, + "284-Amortissements du mat\u00e9riel": { + "2841-Amortissements du mat\u00e9riel et outillage industriel et commercial": {}, + "2842-Amortissements du mat\u00e9riel et outillage agricole": {}, + "2843-Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2844-Amortissements du mat\u00e9riel et mobilier": {}, + "2845-Amortissements du mat\u00e9riel de transport": {}, + "2846-Amortissements des actifs biologiques": {}, + "2847-Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2848-Amortissements des autres mat\u00e9riels": {} + } + }, + "29-D\u00e9pr\u00e9ciations des immobilisations": { + "291-D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "2911-D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": {}, + "2912-D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": {}, + "2913-D\u00e9pr\u00e9ciations des logiciels et sites internet": {}, + "2914-D\u00e9pr\u00e9ciations des marques": {}, + "2915-D\u00e9pr\u00e9ciations du fonds commercial": {}, + "2916-D\u00e9pr\u00e9ciations du droit au bail": {}, + "2917-D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": {}, + "2918-D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": {}, + "2919-D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": {} + }, + "292-D\u00e9pr\u00e9ciations des terrains": { + "2921-D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": {}, + "2922-D\u00e9pr\u00e9ciations des terrains nus": {}, + "2923-D\u00e9pr\u00e9ciations des terrains b\u00e2tis": {}, + "2924-D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": {}, + "2925-D\u00e9pr\u00e9ciations des terrains de gisement": {}, + "2926-D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": {}, + "2927-D\u00e9pr\u00e9ciations des terrains mis en concession": {}, + "2928-D\u00e9pr\u00e9ciations des autres terrains": {}, + "2929-D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": {} + }, + "293-D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "2931-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2932-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2933-D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": {}, + "2934-D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": {}, + "2935-D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": {}, + "2937-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2938-D\u00e9pr\u00e9ciations des autres installations et agencements": {}, + "2939-D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": {} + }, + "294-D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "2941-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": {}, + "2942-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": {}, + "2943-D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2944-D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": {}, + "2945-D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": {}, + "2946-D\u00e9pr\u00e9ciations des actifs biologiques": {}, + "2947-D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2948-D\u00e9pr\u00e9ciations des autres mat\u00e9riels": {}, + "2949-D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": {} + }, + "295-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "2951-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "2952-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "296-D\u00e9pr\u00e9ciations des titres de participation": { + "2961-D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "2962-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "2963-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "2965-D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": {}, + "2966-D\u00e9pr\u00e9ciations des parts dans des GIE": {}, + "2968-D\u00e9pr\u00e9ciations des autres titres de participation": {} + }, + "297-D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "2971-D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": {}, + "2972-D\u00e9pr\u00e9ciations des pr\u00eats au personnel": {}, + "2973-D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2974-D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": {}, + "2975-D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2977-D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": {}, + "2978-D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": {} + } + }, + "root_type": "Asset" + }, + "3-Comptes de Stocks": { + "31-Marchandises": { + "311-Marchandises A": { + "3111-Marchandises A1": {}, + "3112-Marchandises A2": {} + }, + "312-Marchandises B": { + "3121-Marchandises B1": {}, + "3122-Marchandises B2": {} + }, + "313-Actifs biologiques": { + "3131-Animaux": {}, + "3132-V\u00e9g\u00e9taux": {} + }, + "318-Marchandises hors activit\u00e9s ordinaires (HAO)": {} + }, + "32-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "321-Mati\u00e8res A": {}, + "322-Mati\u00e8res B": {}, + "323-Fournitures (A, B)": {} + }, + "33-Autres approvisionnements": { + "331-Mati\u00e8res consommables": {}, + "332-Fournitures d\u2019atelier et d\u2019usine": {}, + "333-Fournitures de magasin": {}, + "334-Fournitures de bureau": {}, + "335-Emballages": { + "3351-Emballages perdus": {}, + "3352-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "3353-Emballages \u00e0 usage mixte": {}, + "3358-Autres emballages": {} + }, + "338-Autres mati\u00e8res": {} + }, + "34-Produits en cours": { + "341-Produits en cours": { + "3411-Produits en cours P1": {}, + "3412-Produits en cours P2": {} + }, + "342-Travaux en cours": { + "3421-Travaux en cours T1": {}, + "3422-Travaux en cours T2": {} + }, + "343-Produits interm\u00e9diaires en cours": { + "3431-Produits interm\u00e9diaires A": {}, + "3432-Produits interm\u00e9diaires B": {} + }, + "344-Produits r\u00e9siduels en cours": { + "3441-Produits r\u00e9siduels A": {}, + "3442-Produits r\u00e9siduels B": {} + }, + "345-Actifs biologiques en cours": { + "3451-Animaux": {}, + "3452-V\u00e9g\u00e9taux": {} + } + }, + "35-Services en cours": { + "351-\u00c9tudes en cours": { + "3511-\u00c9tudes en cours E1": {}, + "3512-\u00c9tudes en cours E2": {} + }, + "352-Prestations de services en cours": { + "3521-Prestations de services S1": {}, + "3522-Prestations de services S2": {} + } + }, + "36-Produits finis": { + "361-Produits finis A": {}, + "362-Produits finis B": {}, + "363-Actifs biologiques": { + "3631-Animaux": {}, + "3632-V\u00e9g\u00e9taux": {}, + "3638-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "37-Produits interm\u00e9diaires et r\u00e9siduels": { + "371-Produits interm\u00e9diaires": { + "3711-Produits interm\u00e9diaires A": {}, + "3712-Produits interm\u00e9diaires B": {} + }, + "372-Produits r\u00e9siduels": { + "3721-D\u00e9chets": {}, + "3722-Rebuts": {}, + "3723-Mati\u00e8res de R\u00e9cup\u00e9ration": {} + }, + "373-Actifs biologiques": { + "3731-Animaux": {}, + "3732-V\u00e9g\u00e9taux": {}, + "3738-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "38-Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "381-Marchandises en cours de route": {}, + "382-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": {}, + "383-Autres approvisionnements en cours de route": {}, + "386-Produits finis en cours de route": {}, + "387-Stock en consignation ou en d\u00e9p\u00f4t": { + "3871-Stock en consignation": {}, + "3872-Stock en d\u00e9p\u00f4t": {} + }, + "388-Stock provenant d\u2019immobilisations mises hors service ou au rebut": {} + }, + "39-D\u00e9pr\u00e9ciations des stocks et encours de production": { + "391-D\u00e9pr\u00e9ciations des stocks de marchandises": {}, + "392-D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "393-D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": {}, + "394-D\u00e9pr\u00e9ciations des productions en cours": {}, + "395-D\u00e9pr\u00e9ciations des services en cours": {}, + "396-D\u00e9pr\u00e9ciations des stocks de produits finis": {}, + "397-D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": {}, + "398-D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": {} + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "409-Fournisseurs d\u00e9biteurs": { + "4091-Fournisseurs Avances et acomptes vers\u00e9s": {}, + "4092-Fournisseurs Groupe avances et acomptes vers\u00e9s": {}, + "4093-Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": {}, + "4094-Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": {}, + "4098-Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": {} + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "411-Clients": { + "4111-Clients": { + "account_type": "Receivable" + }, + "4112-Clients groupe": { + "account_type": "Receivable" + }, + "4114-Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable" + }, + "4115-Clients, organismes internationaux": { + "account_type": "Receivable" + }, + "4116-Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable" + }, + "4117-Client, retenues de garantie": { + "account_type": "Receivable" + }, + "4118-Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "412-Clients, effets \u00e0 recevoir en portefeuille": { + "4121-Clients, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4122-Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4124-\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4125-Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "413-Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "4131-Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable" + }, + "4132-Clients, effets impay\u00e9s": { + "account_type": "Receivable" + }, + "4133-Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable" + }, + "4138-Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "414-Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "4141-Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4142-Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable" + }, + "4146-Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4147-Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "415-Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable" + }, + "416-Cr\u00e9ances clients litigieuses ou douteuses": { + "4161-Cr\u00e9ances litigieuses": { + "account_type": "Receivable" + }, + "4162-Cr\u00e9ances douteuses": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "418-Clients, produits \u00e0 recevoir": { + "4181-Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable" + }, + "4186-Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "421-Personnel, avances et acomptes": { + "4211-Personnel, avances": {}, + "4212-Personnel, acomptes": {}, + "4213-Frais avanc\u00e9s et fournitures au personnel": {} + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "4311-Prestations familiales": {}, + "4312-Accidents de travail": {}, + "4313-Caisse de retraite obligatoire": {}, + "4314-Caisse de retraite facultative": {}, + "4318-Autres cotisations sociales": {} + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "4331-Mutuelle": {}, + "4332-Assurances retraite": {}, + "4333-Assurances et organismes de sant\u00e9": {} + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4387-Produits \u00e0 recevoir": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "443-\u00c9tat, TVA factur\u00e9e": { + "4431-TVA factur\u00e9e sur ventes": {}, + "4432-TVA factur\u00e9e sur prestations de services": {}, + "4433-TVA factur\u00e9e sur travaux": {}, + "4434-TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": {}, + "4435-TVA sur factures \u00e0 \u00e9tablir": {} + }, + "445-\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "4451-TVA r\u00e9cup\u00e9rable sur immobilisations": {}, + "4452-TVA r\u00e9cup\u00e9rable sur achats": {}, + "4453-TVA r\u00e9cup\u00e9rable sur transport": {}, + "4454-TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": {}, + "4455-TVA r\u00e9cup\u00e9rable sur factures non parvenues": {}, + "4456-TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": {} + }, + "448-\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "4486-Charges \u00e0 payer": {}, + "4487-Produits \u00e0 recevoir": {} + }, + "449-\u00c9tat, cr\u00e9ances et dettes diverses": { + "4491-\u00c9tat, obligations cautionn\u00e9es": {}, + "4492-\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": {}, + "4493-\u00c9tat, fonds de dotation \u00e0 recevoir": {}, + "4494-\u00c9tat, subventions investissement \u00e0 recevoir": {}, + "4495-\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": {}, + "4496-\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": {}, + "4497-\u00c9tat, avances sur subventions": {}, + "4499-\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": {} + } + }, + "45-Organismes internationaux (ACTIF)": { + "451-Op\u00e9rations avec les organismes africains": {}, + "452-Op\u00e9rations avec les autres organismes internationaux": {}, + "458-Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "4581-Organismes internationaux, fonds de dotation \u00e0 recevoir": {}, + "4582-Organismes internationaux, subventions \u00e0 recevoir": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "4613-Apporteurs, capital appel\u00e9, non vers\u00e9": {}, + "4614-Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": {}, + "4618-Apporteurs, titres \u00e0 \u00e9changer": {} + }, + "467-Apporteurs, restant d\u00fb sur capital appel\u00e9": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "4721-Cr\u00e9ances sur cessions de titres de placement": {}, + "4726-Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": {} + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "4731-Mandants": {}, + "4732-Mandataires": {}, + "4733-Commettants": {}, + "4734-Commissionnaires": {}, + "4739-\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "4747-Compte de r\u00e9partition p\u00e9riodique des produits": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "4751-Compte actif": { + "account_type": "Temporary" + } + }, + "476-Charges constat\u00e9es d\u2019avance": {}, + "478-\u00c9carts de conversion actif": { + "4781-Diminution des cr\u00e9ances d\u2019exploitation": {}, + "4782-Diminution des cr\u00e9ances financi\u00e8res": {}, + "4783-Augmentation des dettes d\u2019exploitation": {}, + "4784-Augmentation des dettes financi\u00e8res": {}, + "4786-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4788-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "485-Cr\u00e9ances sur cessions d\u2019immobilisations": { + "4851-En compte, immobilisations incorporelles": {}, + "4852-En compte, immobilisations corporelles": {}, + "4853-Effets \u00e0 recevoir, immobilisations incorporelles": {}, + "4854-Effets \u00e0 recevoir, immobilisations corporelles": {}, + "4855-Effets escompt\u00e9s non \u00e9chus": {}, + "4857-Retenues de garantie": {}, + "4858-Factures \u00e0 \u00e9tablir": {} + }, + "488-Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": {} + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "491-D\u00e9pr\u00e9ciations des comptes clients": { + "4911-Cr\u00e9ances litigieuses": {}, + "4912-Cr\u00e9ances douteuses": {} + }, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {}, + "496-D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "4962-Associ\u00e9s, comptes courants": {}, + "4963-Associ\u00e9s, op\u00e9rations faites en commun": {}, + "4966-Groupe, comptes courants": {} + }, + "497-D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": {}, + "498-D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "4985-Cr\u00e9ances sur cessions d\u2019immobilisations": {}, + "4986-Cr\u00e9ances sur cessions de titres de placement": {}, + "4988-Autres cr\u00e9ances HAO": {} + }, + "499-Provisions pour risques \u00e0 court terme": { + "4991-Sur op\u00e9rations d\u2019exploitation": {}, + "4997-Sur op\u00e9rations financi\u00e8res": {}, + "4998-Sur op\u00e9rations HAO": {} + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "401-Fournisseurs, dettes en compte": { + "4011-Fournisseurs": { + "account_type": "Payable" + }, + "4012-Fournisseurs groupe": { + "account_type": "Payable" + }, + "4013-Fournisseurs sous-traitants": { + "account_type": "Payable" + }, + "4016-Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable" + }, + "4017-Fournisseur, retenues de garantie": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "402-Fournisseurs, effets \u00e0 payer": { + "4021-Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable" + }, + "4022-Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable" + }, + "4023-Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "404-Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "4041-Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4042-Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable" + }, + "4046-Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4047-Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "408-Fournisseurs, factures non parvenues": { + "4081-Fournisseurs": { + "account_type": "Stock Received But Not Billed" + }, + "4082-Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed" + }, + "4083-Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed" + }, + "4086-Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "419-Clients cr\u00e9diteurs": { + "4191-Clients, avances et acomptes re\u00e7us": {}, + "4192-Clients groupe, avances et acomptes re\u00e7us": {}, + "4194-Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": {}, + "4198-Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": {} + } + }, + "42-Personnel (PASSIF)": { + "422-Personnel, r\u00e9mun\u00e9rations dues": {}, + "423-Personnel, oppositions, saisies-arr\u00eats": { + "4231-Personnel, oppositions": {}, + "4232-Personnel, saisies-arr\u00eats": {}, + "4233-Personnel, avis \u00e0 tiers d\u00e9tenteur": {} + }, + "424-Personnel, \u0153uvres sociales internes": { + "4241-Assistance m\u00e9dicale": {}, + "4242-Allocations familiales": {}, + "4245-Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": {}, + "4248-Autres \u0153uvres sociales internes": {} + }, + "425-Repr\u00e9sentants du personnel": { + "4251-D\u00e9l\u00e9gu\u00e9s du personnel": {}, + "4252-Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": {}, + "4258-Autres repr\u00e9sentants du personnel": {} + }, + "426-Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "4261-Participation aux b\u00e9n\u00e9fices": {}, + "4264-Participation au capital": {} + }, + "427-Personnel d\u00e9p\u00f4ts": {}, + "428-Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "4281-Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": {}, + "4286-Autres charges \u00e0 payer": {}, + "4287-Produits \u00e0 recevoir": {} + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4381-Charges sociales sur gratifications \u00e0 payer": {}, + "4382-Charges sociales sur cong\u00e9s \u00e0 payer": {}, + "4386-Autres charges \u00e0 payer": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "441-\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": {}, + "442-\u00c9tat, autres imp\u00f4ts et taxes": { + "4421-Imp\u00f4ts et taxes d\u2019\u00c9tat": {}, + "4422-Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": {}, + "4423-Imp\u00f4ts et taxes recouvrables sur des obligataires": {}, + "4424-Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": {}, + "4426-Droits de douane": {}, + "4428-Autres imp\u00f4ts et taxes": {} + }, + "444-\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "4441-\u00c9tat, TVA due": {}, + "4449-\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": {} + }, + "446-\u00c9tat, autres taxes sur le chiffre d\u2019affaires": {}, + "447-\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "4471-Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": {}, + "4472-Imp\u00f4ts sur salaires": {}, + "4473-Contribution nationale": {}, + "4474-Contribution nationale de solidarit\u00e9": {}, + "4478-Autres imp\u00f4ts et contributions": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "4611-Apporteurs, apports en nature": {}, + "4612-Apporteurs, apports en num\u00e9raire": {}, + "4615-Apporteurs, versements re\u00e7us sur augmentation de capital": {}, + "4616-Apporteurs, versements anticip\u00e9s": {}, + "4617-Apporteurs d\u00e9faillants": {}, + "4619-Apporteurs, capital \u00e0 rembourser": {} + }, + "462-Associ\u00e9s, comptes courants": { + "4621-Principal": {}, + "4626-Int\u00e9r\u00eats courus": {} + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "4631-Op\u00e9rations courantes": {}, + "4636-Int\u00e9r\u00eats courus": {} + }, + "465-Associ\u00e9s, dividendes \u00e0 payer": {}, + "466-Groupe, comptes courants": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "4711-D\u00e9biteurs divers": {}, + "4712-Cr\u00e9diteurs divers": {}, + "4713-Obligataires": {}, + "4715-R\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "4716-Compte d\u2019affacturage": {}, + "4717-D\u00e9biteurs divers retenues de garantie": {}, + "4718-Apport, compte de fusion et op\u00e9rations assimil\u00e9es": {}, + "4719-Bons de souscription d\u2019actions et d\u2019obligations": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "4746-Compte de r\u00e9partition p\u00e9riodique des charges": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "4752-Compte passif": {} + }, + "477-Produits constat\u00e9s d\u2019avance": {}, + "479-\u00c9carts de conversion passif": { + "4791-Augmentation des cr\u00e9ances d\u2019exploitation": {}, + "4792-Augmentation des cr\u00e9ances financi\u00e8res": {}, + "4793-Diminution des dettes d\u2019exploitation": {}, + "4794-Diminution des dettes financi\u00e8res": {}, + "4797-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4798-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "481-Fournisseurs d\u2019investissements": { + "4811-Immobilisations incorporelles": {}, + "4812-Immobilisations corporelles": {}, + "4813-Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": {}, + "4816-R\u00e9serve de propri\u00e9t\u00e9": {}, + "4817-Retenues de garantie": {}, + "4818-Factures non parvenues": {} + }, + "482-Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "4821-Immobilisations incorporelles": {}, + "4822-Immobilisations corporelles": {} + }, + "484-Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "4887-Produits": {} + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (PASSIF)": { + "490-D\u00e9pr\u00e9ciations des comptes fournisseurs": {}, + "492-D\u00e9pr\u00e9ciations des comptes personnel": {}, + "493-D\u00e9pr\u00e9ciations des comptes organismes sociaux": {}, + "494-D\u00e9pr\u00e9ciations des comptes \u00c9tat et collectivit\u00e9s publiques": {}, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {} + }, + "root_type": "Liability" + }, + "5-Comptes de tr\u00e9sorerie": { + "50-Titres de placement": { + "501-Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "5011-Titres du Tr\u00e9sor \u00e0 court terme": {}, + "5012-Titres d\u2019organismes financiers": {}, + "5013-Bons de caisse \u00e0 court terme": {}, + "5016-Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": {} + }, + "502-Actions": { + "5021-Actions ou parts propres": {}, + "5022-Actions cot\u00e9es": {}, + "5023-Actions non cot\u00e9es": {}, + "5024-Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": {}, + "5025-Autres actions": {}, + "5026-Frais d\u2019acquisition des actions": {} + }, + "503-Obligations": { + "5031-Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": {}, + "5032-Obligations cot\u00e9es": {}, + "5033-Obligations non cot\u00e9es": {}, + "5035-Autres obligations": {}, + "5036-Frais d\u2019acquisition des obligations": {} + }, + "504-Bons de souscription": { + "5042-Bons de souscription d\u2019actions": {}, + "5043-Bons de souscription d\u2019obligations": {} + }, + "505-Titres n\u00e9gociables hors r\u00e9gion": {}, + "506-Int\u00e9r\u00eats courus": { + "5061-Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": {}, + "5062-Actions": {}, + "5063-Obligations": {} + }, + "508-Autres titres de placement et cr\u00e9ances assimil\u00e9es": {} + }, + "51-Valeurs \u00e0 encaisser": { + "511-Effets \u00e0 encaisser": {}, + "512-Effets \u00e0 l\u2019encaissement": {}, + "513-Ch\u00e8ques \u00e0 encaisser": {}, + "514-Ch\u00e8ques \u00e0 l\u2019encaissement": {}, + "515-Cartes de cr\u00e9dit \u00e0 encaisser": {}, + "518-Autres valeurs \u00e0 l\u2019encaissement": { + "5181-Warrants": {}, + "5182-Billets de fonds": {}, + "5185-Ch\u00e8ques de voyage": {}, + "5186-Coupons \u00e9chus": {}, + "5187-Int\u00e9r\u00eats \u00e9chus des obligations": {} + } + }, + "52-Banques": { + "521-Banques locales": { + "5211-Banques en monnaie nationale": { + "account_type": "Bank" + }, + "5215-Banques en devises": { + "account_type": "Bank" + }, + "account_type": "Bank" + }, + "522-Banques autres \u00c9tats r\u00e9gion": {}, + "523-Banques autres \u00c9tats zone mon\u00e9taire": {}, + "524-Banques hors zone mon\u00e9taire": {}, + "525-Banques d\u00e9p\u00f4t \u00e0 terme": {}, + "526-Banques, int\u00e9r\u00eats courus": { + "5261-Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": {}, + "5267-Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": {} + } + }, + "53-\u00c9tablissements financiers et assimil\u00e9s": { + "531-Ch\u00e8ques postaux": {}, + "532-Tr\u00e9sor": {}, + "533-Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": {}, + "536-\u00c9tablissements financiers, int\u00e9r\u00eats courus": {}, + "538-Autres organismes financiers": {} + }, + "54-Instruments de tr\u00e9sorerie": { + "541-Options de taux d\u2019int\u00e9r\u00eat": {}, + "542-Options de taux de change": {}, + "543-Options de taux boursiers": {}, + "544-Instruments de march\u00e9s \u00e0 terme": {}, + "545-Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": {} + }, + "55-Instruments de monnaie \u00e9lectronique": { + "551-Monnaie \u00e9lectronique carte carburant": {}, + "552-Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": {}, + "553-Monnaie \u00e9lectronique carte p\u00e9age": {}, + "554-Porte-monnaie \u00e9lectronique": {}, + "558-Autres instruments de monnaies \u00e9lectroniques": {} + }, + "56-Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "561-Cr\u00e9dits de tr\u00e9sorerie": {}, + "564-Escompte de cr\u00e9dits de campagne": {}, + "565-Escompte de cr\u00e9dits ordinaires": {}, + "566-Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": {} + }, + "57-Caisse": { + "571-Caisse si\u00e8ge social": { + "5711-Caisse en monnaie nationale": {}, + "5712-Caisse en devises": {} + }, + "572-Caisse succursale A": { + "5721-En monnaie nationale": {}, + "5722-En devises": {} + }, + "573-Caisse succursale B": { + "5731-En monnaie nationale": {}, + "5732-En devises": {} + } + }, + "58-R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "581-R\u00e9gies d\u2019avance": {}, + "582-Accr\u00e9ditifs": {}, + "585-Virements de fonds": {}, + "588-Autres virements internes": {} + }, + "59-D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "590-D\u00e9pr\u00e9ciations des titres de placement": {}, + "591-D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": {}, + "592-D\u00e9pr\u00e9ciations des comptes banques": {}, + "593-D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": {}, + "594-D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": {}, + "599-Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": {} + }, + "root_type": "Asset" + }, + "6-Comptes de charges des activit\u00e9s ordinaires": { + "60-Achats et variations de stocks": { + "601-Achats de marchandises": { + "6011-Dans la R\u00e9gion": {}, + "6012-Hors R\u00e9gion": {}, + "6013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6015-Frais sur achats": {}, + "6019-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "602-Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "6021-Dans la R\u00e9gion": {}, + "6022-Hors R\u00e9gion": {}, + "6023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6025-Frais sur achats": {}, + "6029-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "603-Variations des stocks de biens achet\u00e9s": { + "6031-Variations des stocks de marchandises": {}, + "6032-Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "6033-Variations des stocks d\u2019autres approvisionnements": {} + }, + "604-Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "6041-Mati\u00e8res consommables": {}, + "6042-Mati\u00e8res combustibles": {}, + "6043-Produits d\u2019entretien": {}, + "6044-Fournitures d\u2019atelier et d\u2019usine": {}, + "6045-Frais sur achat": {}, + "6046-Fournitures de magasin": {}, + "6047-Fournitures de bureau": {}, + "6049-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "605-Autres achats": { + "6051-Fournitures non stockables Eau": {}, + "6052-Fournitures non stockables \u00c9lectricit\u00e9": {}, + "6053-Fournitures non stockables Autres \u00e9nergies": {}, + "6054-Fournitures d\u2019entretien non stockables": {}, + "6055-Fournitures de bureau non stockables": {}, + "6056-Achats de petit mat\u00e9riel et outillage": {}, + "6057-Achats d\u2019\u00e9tudes et prestations de services": {}, + "6058-Achats de travaux, mat\u00e9riels et \u00e9quipements": {}, + "6059-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "608-Achats d\u2019emballages": { + "6081-Emballages perdus": {}, + "6082-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "6083-Emballages \u00e0 usage mixte": {}, + "6085-Frais sur achats": {}, + "6089-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + } + }, + "61-Transports": { + "612-Transports sur ventes": {}, + "613-Transports pour le compte de tiers": {}, + "614-Transports du personnel": {}, + "616-Transports de plis": {}, + "618-Autres frais de transport": { + "6181-Voyages et d\u00e9placements": {}, + "6182-Transports entre \u00e9tablissements ou chantiers": {}, + "6183-Transports administratifs": {} + } + }, + "62-Services ext\u00e9rieurs": { + "621-Sous-traitance g\u00e9n\u00e9rale": {}, + "622-Locations, charges locatives": { + "6221-Locations de terrains": {}, + "6222-Locations de b\u00e2timents": {}, + "6223-Locations de mat\u00e9riels et outillages": {}, + "6224-Malis sur emballages": {}, + "6225-Locations d\u2019emballages": {}, + "6226-Fermages et loyers du foncier": {}, + "6228-Locations et charges locatives diverses": {} + }, + "623-Redevances de location acquisition": { + "6232-Cr\u00e9dit-bail immobilier": {}, + "6233-Cr\u00e9dit-bail mobilier": {}, + "6234-Location-vente": {}, + "6238-Autres contrats de location acquisition": {} + }, + "624-Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "6241-Entretien et r\u00e9parations des biens immobiliers": {}, + "6242-Entretien et r\u00e9parations des biens mobiliers": {}, + "6243-Maintenance": {}, + "6244-Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "6248-Autres entretiens et r\u00e9parations": {} + }, + "625-Primes d\u2019assurance": { + "6251-Assurances multirisques": {}, + "6252-Assurances mat\u00e9riel de transport": {}, + "6253-Assurances risques d\u2019exploitation": {}, + "6254-Assurances responsabilit\u00e9 du producteur": {}, + "6255-Assurances insolvabilit\u00e9 clients": {}, + "6257-Assurances transport sur ventes": {}, + "6258-Autres primes d\u2019assurances": {} + }, + "626-\u00c9tudes, recherches et documentation": { + "6261-\u00c9tudes et recherches": {}, + "6265-Documentation g\u00e9n\u00e9rale": {}, + "6266-Documentation technique": {} + }, + "627-Publicit\u00e9, publications, relations publiques": { + "6271-Annonces, insertions": {}, + "6272-Catalogues, imprim\u00e9s publicitaires": {}, + "6273-\u00c9chantillons": {}, + "6274-Foires et expositions": {}, + "6275-Publications": {}, + "6276-Cadeaux \u00e0 la client\u00e8le": {}, + "6277-Frais de colloques, s\u00e9minaires, conf\u00e9rences": {}, + "6278-Autres charges de publicit\u00e9 et relations publiques": {} + }, + "628-Frais de t\u00e9l\u00e9communications": { + "6281-Frais de t\u00e9l\u00e9phone": {}, + "6282-Frais de t\u00e9lex": {}, + "6283-Frais de t\u00e9l\u00e9copie": {}, + "6288-Autres frais de t\u00e9l\u00e9communications": {} + } + }, + "63-Autres services ext\u00e9rieurs": { + "631-Frais bancaires": { + "6311-Frais sur titres (vente, garde)": {}, + "6312-Frais sur effets": {}, + "6313-Location de coffres": {}, + "6314-Commissions d\u2019affacturage": {}, + "6315-Commissions sur cartes de cr\u00e9dit": {}, + "6316-Frais d\u2019\u00e9mission d\u2019emprunts": {}, + "6317-Frais sur instruments monnaie \u00e9lectronique": {}, + "6318-Autres frais bancaires": {} + }, + "632-R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "6322-Commissions et courtages sur ventes": {}, + "6324-Honoraires des professions r\u00e9glement\u00e9es": {}, + "6325-Frais d\u2019actes et de contentieux": {}, + "6326-R\u00e9mun\u00e9rations d\u2019affacturage": {}, + "6327-R\u00e9mun\u00e9rations des autres prestataires de services": {}, + "6328-Divers frais": {} + }, + "633-Frais de formation du personnel": {}, + "634-Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "6342-Redevances pour brevets, licences": {}, + "6343-Redevances pour logiciels": {}, + "6344-Redevances pour marques": {}, + "6345-Redevances pour sites internet": {}, + "6346-Redevances pour concessions, droits et valeurs similaires": {} + }, + "635-Cotisations": { + "6351-Cotisations": {}, + "6358-Concours divers": {} + }, + "637-R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "6371-Personnel int\u00e9rimaire": {}, + "6372-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "638-Autres charges externes": { + "6381-Frais de recrutement du personnel": {}, + "6382-Frais de d\u00e9m\u00e9nagement": {}, + "6383-R\u00e9ceptions": {}, + "6384-Missions": {}, + "6385-Charges de copropri\u00e9t\u00e9": {} + } + }, + "64-Imp\u00f4ts et taxes": { + "641-Imp\u00f4ts et taxes directs": { + "6411-Imp\u00f4ts fonciers et taxes annexes": {}, + "6412-Patentes, licences et taxes annexes": {}, + "6413-Taxes sur appointements et salaires": {}, + "6414-Taxes d\u2019apprentissage": {}, + "6415-Formation professionnelle continue": {}, + "6418-Autres imp\u00f4ts et taxes directs": {} + }, + "645-Imp\u00f4ts et taxes indirects": {}, + "646-Droits d\u2019enregistrement": { + "6461-Droits de mutation": {}, + "6462-Droits de timbre": {}, + "6463-Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": {}, + "6464-Vignettes": {}, + "6468-Autres droits": {} + }, + "647-P\u00e9nalit\u00e9s, amendes fiscales": { + "6471-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": {}, + "6472-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": {}, + "6473-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": {}, + "6474-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": {}, + "6478-Autres p\u00e9nalit\u00e9s et amendes fiscales": {} + }, + "648-Autres imp\u00f4ts et taxes": {} + }, + "65-Autres charges": { + "651-Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "6511-Clients": {}, + "6515-Autres d\u00e9biteurs": {} + }, + "652-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "6521-Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": {}, + "6525-Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "654-Valeurs comptables des cessions courantes d\u2019immobilisations": { + "6541-Immobilisations incorporelles": {}, + "6542-Immobilisations corporelles": {} + }, + "656-Perte de change sur cr\u00e9ances et dettes commerciale": {}, + "657-P\u00e9nalit\u00e9s et amendes p\u00e9nales": {}, + "658-Charges diverses": { + "6581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "6582-Dons": {}, + "6583-M\u00e9c\u00e9nat": {}, + "6588-Autres charges diverses": {} + }, + "659-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "6591-Sur risques \u00e0 court terme": {}, + "6593-Sur stocks": {}, + "6594-Sur cr\u00e9ances": {}, + "6598-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": {} + } + }, + "66-Charges de personnel": { + "661-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "6611-Appointements salaires et commissions": {}, + "6612-Primes et gratifications": {}, + "6613-Cong\u00e9s pay\u00e9s": {}, + "6614-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6615-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6616-Suppl\u00e9ment familial": {}, + "6617-Avantages en nature": {}, + "6618-Autres r\u00e9mun\u00e9rations directes": {} + }, + "662-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "6621-Appointements salaires et commissions": {}, + "6622-Primes et gratifications": {}, + "6623-Cong\u00e9s pay\u00e9s": {}, + "6624-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6625-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6626-Suppl\u00e9ment familial": {}, + "6627-Avantages en nature": {}, + "6628-Autres r\u00e9mun\u00e9rations directes": {} + }, + "663-Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "6631-Indemnit\u00e9s de logement": {}, + "6632-Indemnit\u00e9s de repr\u00e9sentation": {}, + "6633-Indemnit\u00e9s d\u2019expatriation": {}, + "6634-Indemnit\u00e9s de transport": {}, + "6638-Autres indemnit\u00e9s et avantages divers": {} + }, + "664-Charges sociales": { + "6641-Charges sociales sur r\u00e9mun\u00e9ration du personnel national": {}, + "6642-Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": {} + }, + "666-R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "6661-R\u00e9mun\u00e9ration du travail de l\u2019exploitant": {}, + "6662-Charges sociales": {} + }, + "667-R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "6671-Personnel int\u00e9rimaire": {}, + "6672-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "668-Autres charges sociales": { + "6681-Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": {}, + "6682-Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": {}, + "6683-Versements et contributions aux autres \u0153uvres sociales": {}, + "6684-M\u00e9decine du travail et pharmacie": {}, + "6685-Assurances et organismes de sant\u00e9": {}, + "6686-Assurances retraite et fonds de pension": {}, + "6687-Majorations et p\u00e9nalit\u00e9s sociales": {}, + "6688-Charges sociales diverses": {} + } + }, + "67-Frais financiers et charges assimil\u00e9es": { + "671-Int\u00e9r\u00eats des emprunts": { + "6711-Emprunts obligataires": {}, + "6712-Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "6713-Dettes li\u00e9es \u00e0 des participations": {}, + "6714-Primes de remboursement des obligations": {} + }, + "672-Int\u00e9r\u00eats dans loyers de location acquisition": { + "6722-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": {}, + "6723-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": {}, + "6724-Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": {}, + "6728-Int\u00e9r\u00eats dans loyers des autres locations acquisition": {} + }, + "673-Escomptes accord\u00e9s": {}, + "674-Autres int\u00e9r\u00eats": { + "6741-Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": {}, + "6742-Comptes courants bloqu\u00e9s": {}, + "6743-Int\u00e9r\u00eats sur obligations cautionn\u00e9es": {}, + "6744-Int\u00e9r\u00eats sur dettes commerciales": {}, + "6745-Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": {}, + "6748-Int\u00e9r\u00eats sur dettes diverses": {} + }, + "675-Escomptes des effets de commerce": {}, + "676-Pertes de change financi\u00e8res": {}, + "677-Pertes sur titres de placement": { + "6771-Pertes sur cessions de titres de placement": {}, + "6772-Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {} + }, + "678-Pertes et charges sur risques financiers": { + "6781-Sur rentes viag\u00e8res": {}, + "6782-Sur op\u00e9rations financi\u00e8res": {}, + "6784-Sur instruments de tr\u00e9sorerie": {} + }, + "679-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "6791-Sur risques financiers": {}, + "6795-Sur titres de placement": {}, + "6798-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "68-Dotations aux amortissements": { + "681-Dotations aux amortissements d\u2019exploitation": { + "6812-Dotations aux amortissements des immobilisations incorporelles": {}, + "6813-Dotations aux amortissements des immobilisations corporelles": {} + } + }, + "69-Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "691-Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "6911-Dotations aux provisions pour risques et charges": {}, + "6913-Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": {}, + "6914-Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": {} + }, + "697-Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "6971-Dotations aux provisions pour risques et charges": {}, + "6972-Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": {} + } + }, + "root_type": "Expense" + }, + "7-Comptes de produits des activit\u00e9s ordinaires": { + "70-Ventes": { + "701-Ventes de marchandises": { + "7011-Dans la R\u00e9gion": {}, + "7012-Hors R\u00e9gion": {}, + "7013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7015-Sur internet": {}, + "7019-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "702-Ventes de produits finis": { + "7021-Dans la R\u00e9gion": {}, + "7022-Hors R\u00e9gion": {}, + "7023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7025-Sur internet": {}, + "7029-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "703-Ventes de produits interm\u00e9diaires": { + "7031-Dans la R\u00e9gion": {}, + "7032-Hors R\u00e9gion": {}, + "7033-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7034-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7035-Sur internet": {}, + "7039-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "704-Ventes de produits r\u00e9siduels": { + "7041-Dans la R\u00e9gion": {}, + "7042-Hors R\u00e9gion": {}, + "7043-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7044-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7045-Sur internet": {}, + "7049-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "705-Travaux factur\u00e9s": { + "7051-Dans la R\u00e9gion": {}, + "7052-Hors R\u00e9gion": {}, + "7053-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7054-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7055-Sur internet": {}, + "7059-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "706-Services vendus": { + "7061-Dans la R\u00e9gion": {}, + "7062-Hors R\u00e9gion": {}, + "7063-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7064-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7065-Sur internet": {}, + "7069-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "707-Produits accessoires": { + "7071-Ports, emballages perdus et autres frais factur\u00e9s": {}, + "7072-Commissions et courtages": {}, + "7073-Locations": {}, + "7074-Bonis sur reprises et cessions d\u2019emballages": {}, + "7075-Mise \u00e0 disposition de personnel": {}, + "7076-Redevances pour brevets, logiciels, marques et droits similaires": {}, + "7077-Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": {}, + "7078-Autres produits accessoires": {} + } + }, + "71-Subventions d\u2019exploitation": { + "711-Sur produits \u00e0 l\u2019exportation": {}, + "712-Sur produits \u00e0 l\u2019importation": {}, + "713-Sur produits de p\u00e9r\u00e9quation": {}, + "714-Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": {}, + "718-Autres subventions d\u2019exploitation": { + "7181-Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": {}, + "7182-Vers\u00e9es par les organismes internationaux": {}, + "7183-Vers\u00e9es par des tiers": {} + } + }, + "72-Production immobilis\u00e9e": { + "721-Immobilisations incorporelles": {}, + "722-Immobilisations corporelles": { + "7221-Immobilisations corporelles (hors actifs biologiques)": {}, + "7222-Immobilisations corporelles (actifs biologiques)": {} + }, + "724-Production auto-consomm\u00e9e": {}, + "726-Immobilisations financi\u00e8res": {} + }, + "73-Variations des stocks de biens et de services produits": { + "734-Variations des stocks de produits en cours": { + "7341-Produits en cours": {}, + "7342-Travaux en cours": {} + }, + "735-Variations des en-cours de services": { + "7351-\u00c9tudes en cours": {}, + "7352-Prestations de services en cours": {} + }, + "736-Variations des stocks de produits finis": {}, + "737-Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "7371-Produits interm\u00e9diaires": {}, + "7372-Produits r\u00e9siduels": {} + } + }, + "75-Autres produits": { + "751-Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": {}, + "752-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "7521-Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": {}, + "7525-B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "754-Produits des cessions courantes d\u2019immobilisations": { + "7541-Immobilisations incorporelles": {}, + "7542-Immobilisations corporelles": {} + }, + "756-Gains de change sur cr\u00e9ances et dettes commerciales": {}, + "758-Produits divers": { + "7581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "7582-Indemnit\u00e9s d\u2019assurances re\u00e7ues": {}, + "7588-Autres produits divers": {} + }, + "759-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "7591-Sur risques \u00e0 court terme": {}, + "7593-Sur stocks": {}, + "7594-Sur cr\u00e9ances": {}, + "7598-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": {} + } + }, + "77-Revenus financiers et produits assimil\u00e9s": { + "771-Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "7712-Int\u00e9r\u00eats de pr\u00eats": {}, + "7713-Int\u00e9r\u00eats sur cr\u00e9ances diverses": {} + }, + "772-Revenus de participations et autres titres immobilis\u00e9s": { + "7721-Revenus des titres de participation": {}, + "7722-Revenus autres titres immobilis\u00e9s": {} + }, + "773-Escomptes obtenus": {}, + "774-Revenus de placement": { + "7745-Revenus des obligations": {}, + "7746-Revenus des titres de placement": {} + }, + "775-Int\u00e9r\u00eats dans loyers de location acquisition": {}, + "776-Gains de change financiers": {}, + "777-Gains sur cessions de titres de placement": {}, + "778-Gains sur risques financiers": { + "7781-Sur rentes viag\u00e8res": {}, + "7782-Sur op\u00e9rations financi\u00e8res": {}, + "7784-Sur instruments de tr\u00e9sorerie": {} + }, + "779-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "7791-Sur risques financiers": {}, + "7795-Sur titres de placement": {}, + "7798-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "78-Transferts de charges": { + "781-Transferts de charges d\u2019exploitation": {}, + "787-Transferts de charges financi\u00e8res": {} + }, + "79-Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "791-Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "7911-Pour risques et charges": {}, + "7913-Des immobilisations incorporelles": {}, + "7914-Des immobilisations corporelles": {} + }, + "797-Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "7971-Pour risques et charges": {}, + "7972-Des immobilisations financi\u00e8res": {} + }, + "798-Reprises d\u2019amortissements": {}, + "799-Reprises de subventions d\u2019investissement": {} + }, + "root_type": "Income" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "81-Valeurs comptables des cessions d\u2019immobilisations": { + "811-Immobilisations incorporelles": {}, + "812-Immobilisations corporelles": {}, + "816-Immobilisations financi\u00e8res": {} + }, + "83-Charges hors activit\u00e9s ordinaires": { + "831-Charges HAO constat\u00e9es": {}, + "833-Charges li\u00e9es aux op\u00e9rations de restructuration": {}, + "834-Pertes sur cr\u00e9ances HAO": {}, + "835-Dons et lib\u00e9ralit\u00e9s accord\u00e9s": {}, + "836-Abandons de cr\u00e9ances consentis": {}, + "837-Charges li\u00e9es aux op\u00e9rations de liquidation": {}, + "839-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "85-Dotations hors activit\u00e9s ordinaires": { + "851-Dotations aux provisions r\u00e9glement\u00e9es": {}, + "852-Dotations aux amortissements HAO": {}, + "853-Dotations aux d\u00e9pr\u00e9ciations HAO": {}, + "854-Dotations aux provisions pour risques et charges HAO": {}, + "858-Autres dotations HAO": {} + }, + "87-Participation des travailleurs": { + "871-Participation l\u00e9gale aux b\u00e9n\u00e9fices": {}, + "874-Participation contractuelle aux b\u00e9n\u00e9fices": {}, + "878-Autres participations": {} + }, + "89-Imp\u00f4ts sur le r\u00e9sultat": { + "891-Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "8911-Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": {}, + "8912-Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": {}, + "8913-Activit\u00e9s exerc\u00e9es hors R\u00e9gion": {} + }, + "892-Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": {}, + "895-Imp\u00f4t minimum forfaitaire IMF": {}, + "899-D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "8991-D\u00e9gr\u00e8vements": {}, + "8994-Annulations pour pertes r\u00e9troactives": {} + } + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "82-Produits des cessions d\u2019immobilisations": { + "821-Immobilisations incorporelles": {}, + "822-Immobilisations corporelles": {}, + "826-Immobilisations financi\u00e8res": {} + }, + "84-Produits hors activit\u00e9s ordinaires": { + "841-Produits HAO constat\u00e9s": {}, + "843-Produits li\u00e9s aux op\u00e9rations de restructuration": {}, + "844-Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": {}, + "845-Dons et lib\u00e9ralit\u00e9s obtenus": {}, + "846-Abandons de cr\u00e9ances obtenus": {}, + "847-Produits li\u00e9s aux op\u00e9rations de liquidation": {}, + "848-Transferts de charges HAO": {}, + "849-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "86-Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "861-Reprises de provisions r\u00e9glement\u00e9es": {}, + "862-Reprises d\u2019amortissements HAO": {}, + "863-Reprises de d\u00e9pr\u00e9ciations HAO": {}, + "864-Reprises de provisions pour risques et charges HAO": {}, + "868-Autres reprises HAO": {} + }, + "88-Subventions d\u2019\u00e9quilibre": { + "881-\u00c9tat": {}, + "884-Collectivit\u00e9s publiques": {}, + "886-Groupe": {}, + "888-Autres": {} + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/ga_plan_comptable_avec_code.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/ga_plan_comptable_avec_code.json new file mode 100644 index 00000000000..ddee95dad46 --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/ga_plan_comptable_avec_code.json @@ -0,0 +1,4208 @@ +{ + "country_code": "ga", + "name": "Syscohada - Plan Comptable avec code", + "tree": { + "Comptes de ressources durables": { + "Capital": { + "Capital social": { + "Capital souscrit, non appel\u00e9": { + "account_number": "1011" + }, + "Capital souscrit, appel\u00e9, non vers\u00e9": { + "account_number": "1012" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, non amorti": { + "account_number": "1013" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, amorti": { + "account_number": "1014" + }, + "Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": { + "account_number": "1018" + }, + "account_number": "101" + }, + "Capital par dotation": { + "Dotation initiale": { + "account_number": "1021" + }, + "Dotations compl\u00e9mentaires": { + "account_number": "1022" + }, + "Autres dotations": { + "account_number": "1028" + }, + "account_number": "102" + }, + "Capital personnel": { + "account_number": "103" + }, + "Compte de l\u2019exploitant": { + "Apports temporaires": { + "account_number": "1041" + }, + "Op\u00e9rations courantes": { + "account_number": "1042" + }, + "R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": { + "account_number": "1043" + }, + "Pr\u00e9l\u00e8vements d\u2019autoconsommation": { + "account_number": "1047" + }, + "Autres pr\u00e9l\u00e8vements": { + "account_number": "1048" + }, + "account_number": "104" + }, + "Primes li\u00e9es au capital social": { + "Primes d\u2019\u00e9mission": { + "account_number": "1051" + }, + "Primes d\u2019apport": { + "account_number": "1052" + }, + "Primes de fusion": { + "account_number": "1053" + }, + "Primes de conversion": { + "account_number": "1054" + }, + "Autres primes": { + "account_number": "1058" + }, + "account_number": "105" + }, + "\u00c9carts de r\u00e9\u00e9valuation": { + "\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": { + "account_number": "1061" + }, + "\u00c9carts de r\u00e9\u00e9valuation libre": { + "account_number": "1062" + }, + "account_number": "106" + }, + "Apporteurs, capital souscrit, non appel\u00e9": { + "account_number": "109" + }, + "account_number": "10" + }, + "R\u00e9serves": { + "R\u00e9serve l\u00e9gale": { + "account_number": "111" + }, + "R\u00e9serves statutaires ou contractuelles": { + "account_number": "112" + }, + "R\u00e9serves r\u00e9glement\u00e9es": { + "R\u00e9serves de plus-values nettes \u00e0 long terme": { + "account_number": "1131" + }, + "R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "1132" + }, + "R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": { + "account_number": "1133" + }, + "R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": { + "account_number": "1134" + }, + "Autres r\u00e9serves r\u00e9glement\u00e9es": { + "account_number": "1135" + }, + "account_number": "113" + }, + "Autres r\u00e9serves": { + "R\u00e9serves facultatives": { + "account_number": "1181" + }, + "R\u00e9serves diverses": { + "account_number": "1188" + }, + "account_number": "118" + }, + "account_number": "11" + }, + "Report \u00e0 nouveau": { + "Report \u00e0 nouveau cr\u00e9diteur": { + "account_number": "121" + }, + "Report \u00e0 nouveau d\u00e9biteur": { + "Perte nette \u00e0 reporter": { + "account_number": "1291" + }, + "Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": { + "account_number": "1292" + }, + "account_number": "129" + }, + "account_number": "12" + }, + "R\u00e9sultat net de l\u2019exercice": { + "R\u00e9sultat en instance d\u2019affectation": { + "R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": { + "account_number": "1301" + }, + "R\u00e9sultat en instance d\u2019affectation : perte": { + "account_number": "1309" + }, + "account_number": "130" + }, + "R\u00e9sultat net : b\u00e9n\u00e9fice": { + "account_number": "131" + }, + "Marge commerciale (MC)": { + "account_number": "132" + }, + "Valeur ajout\u00e9e (VA)": { + "account_number": "133" + }, + "Exc\u00e9dent brut d\u2019exploitation (EBE)": { + "account_number": "134" + }, + "R\u00e9sultat d\u2019exploitation (RE)": { + "account_number": "135" + }, + "R\u00e9sultat financier (RF)": { + "account_number": "136" + }, + "R\u00e9sultat des activit\u00e9s ordinaires (RAO)": { + "account_number": "137" + }, + "R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "R\u00e9sultat de fusion": { + "account_number": "1381" + }, + "R\u00e9sultat d\u2019apport partiel d\u2019actif": { + "account_number": "1382" + }, + "R\u00e9sultat de scission": { + "account_number": "1383" + }, + "R\u00e9sultat de liquidation": { + "account_number": "1384" + }, + "account_number": "138" + }, + "R\u00e9sultat net : perte": { + "account_number": "139" + }, + "account_number": "13" + }, + "Subventions d\u2019investissement": { + "Subventions d\u2019\u00e9quipement": { + "\u00c9tat": { + "account_number": "1411" + }, + "R\u00e9gions": { + "account_number": "1412" + }, + "D\u00e9partements": { + "account_number": "1413" + }, + "Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": { + "account_number": "1414" + }, + "Entit\u00e9s publiques ou mixtes": { + "account_number": "1415" + }, + "Entit\u00e9s et organismes priv\u00e9s": { + "account_number": "1416" + }, + "Organismes internationaux": { + "account_number": "1417" + }, + "Autres": { + "account_number": "1418" + }, + "account_number": "141" + }, + "Autres subventions d\u2019investissement": { + "account_number": "148" + }, + "account_number": "14" + }, + "Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "Amortissements d\u00e9rogatoires": { + "account_number": "151" + }, + "Plus-values de cession \u00e0 r\u00e9investir": { + "account_number": "152" + }, + "Fonds r\u00e9glement\u00e9s": { + "Fonds National": { + "account_number": "1531" + }, + "Pr\u00e9l\u00e8vement pour le Budget": { + "account_number": "1532" + }, + "account_number": "153" + }, + "Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": { + "account_number": "154" + }, + "Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "Reconstitution des gisements miniers et p\u00e9troliers": { + "account_number": "1551" + }, + "account_number": "155" + }, + "Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "Hausse de prix": { + "account_number": "1561" + }, + "Fluctuation des cours": { + "account_number": "1562" + }, + "account_number": "156" + }, + "Provisions pour investissement": { + "account_number": "157" + }, + "Autres provisions et fonds r\u00e9glement\u00e9s": { + "account_number": "158" + }, + "account_number": "15" + }, + "Emprunts et dettes assimil\u00e9es": { + "Emprunts obligataires": { + "Emprunts obligataires ordinaires": { + "account_number": "1611" + }, + "Emprunts obligataires convertibles en actions": { + "account_number": "1612" + }, + "Emprunts obligataires remboursables en actions": { + "account_number": "1613" + }, + "Autres emprunts obligataires": { + "account_number": "1618" + }, + "account_number": "161" + }, + "Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "162" + }, + "Avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "163" + }, + "Avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "164" + }, + "D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "D\u00e9p\u00f4ts": { + "account_number": "1651" + }, + "Cautionnements": { + "account_number": "1652" + }, + "account_number": "165" + }, + "Int\u00e9r\u00eats courus": { + "Sur emprunts obligataires": { + "account_number": "1661" + }, + "Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "1662" + }, + "Sur avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "1663" + }, + "Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "1664" + }, + "Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "account_number": "1665" + }, + "Sur avances assorties de conditions particuli\u00e8res": { + "account_number": "1667" + }, + "Sur autres emprunts et dettes": { + "account_number": "1668" + }, + "account_number": "166" + }, + "Avances assorties de conditions particuli\u00e8res": { + "Avances bloqu\u00e9es pour augmentation du capital": { + "account_number": "1671" + }, + "Avances conditionn\u00e9es par l\u2019\u00c9tat": { + "account_number": "1672" + }, + "Avances conditionn\u00e9es par les autres organismes africains": { + "account_number": "1673" + }, + "Avances conditionn\u00e9es par les organismes internationaux": { + "account_number": "1674" + }, + "account_number": "167" + }, + "Autres emprunts et dettes": { + "Rentes viag\u00e8res capitalis\u00e9es": { + "account_number": "1681" + }, + "Billets de fonds": { + "account_number": "1682" + }, + "Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": { + "account_number": "1683" + }, + "Emprunts participatifs": { + "account_number": "1684" + }, + "Participation des travailleurs aux b\u00e9n\u00e9fices": { + "account_number": "1685" + }, + "Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": { + "account_number": "1686" + }, + "account_number": "168" + }, + "account_number": "16" + }, + "Dettes de location acquisition": { + "Dettes de location acquisition / cr\u00e9dit bail immobilier": { + "account_number": "172" + }, + "Dettes de location acquisition / cr\u00e9dit bail mobilier": { + "account_number": "173" + }, + "Dettes de location acquisition / location de vente": { + "account_number": "174" + }, + "Int\u00e9r\u00eats courus": { + "Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "1762" + }, + "Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "1763" + }, + "Sur dettes de location acquisition / location-vente": { + "account_number": "1764" + }, + "Sur autres dettes de location acquisition": { + "account_number": "1768" + }, + "account_number": "176" + }, + "Autres dettes de location acquisition": { + "account_number": "178" + }, + "account_number": "17" + }, + "Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "Dettes li\u00e9es \u00e0 des participations": { + "Dettes li\u00e9es \u00e0 des participations (groupe)": { + "account_number": "1811" + }, + "Dettes li\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "1812" + }, + "account_number": "181" + }, + "Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "182" + }, + "Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": { + "account_number": "183" + }, + "Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "184" + }, + "Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "185" + }, + "Comptes de liaison charges": { + "account_number": "186" + }, + "Comptes de liaison produits": { + "account_number": "187" + }, + "Comptes de liaison des soci\u00e9t\u00e9s en participation": { + "account_number": "188" + }, + "account_number": "18" + }, + "Provisions pour risques et charges": { + "Provisions pour litiges": { + "account_number": "191" + }, + "Provisions pour garanties donn\u00e9es aux clients": { + "account_number": "192" + }, + "Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": { + "account_number": "193" + }, + "Provisions pour pertes de change": { + "account_number": "194" + }, + "Provisions pour imp\u00f4ts": { + "account_number": "195" + }, + "Provisions pour pensions et obligations similaires": { + "Provisions pour pensions et obligations similaires engagement de retraite": { + "account_number": "1961" + }, + "Actif du r\u00e9gime de retraite": { + "account_number": "1962" + }, + "account_number": "196" + }, + "Provisions pour restructuration": { + "account_number": "197" + }, + "Autres provisions pour risques et charges": { + "Provisions pour amendes et p\u00e9nalit\u00e9s": { + "account_number": "1981" + }, + "Provisions pour propre assureur": { + "account_number": "1983" + }, + "Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "1984" + }, + "Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": { + "account_number": "1985" + }, + "Provisions pour divers risques et charges": { + "account_number": "1988" + }, + "account_number": "198" + }, + "account_number": "19" + }, + "root_type": "Equity", + "account_number": "1" + }, + "Comptes d\u2019actif immobilis\u00e9": { + "Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "211" + }, + "Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "Brevets": { + "account_type": "Fixed Asset", + "account_number": "2121" + }, + "Licences": { + "account_type": "Fixed Asset", + "account_number": "2122" + }, + "Concessions de service public": { + "account_type": "Fixed Asset", + "account_number": "2123" + }, + "Autres concessions et droits similaires": { + "account_type": "Fixed Asset", + "account_number": "2128" + }, + "account_number": "212" + }, + "Logiciels et sites internet": { + "account_type": "Fixed Asset", + "Logiciels": { + "account_type": "Fixed Asset", + "account_number": "2131" + }, + "Sites internet": { + "account_type": "Fixed Asset", + "account_number": "2132" + }, + "account_number": "213" + }, + "Marques": { + "account_type": "Fixed Asset", + "account_number": "214" + }, + "Fonds commercial": { + "account_type": "Fixed Asset", + "account_number": "215" + }, + "Droit au bail": { + "account_type": "Fixed Asset", + "account_number": "216" + }, + "Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset", + "account_number": "217" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset", + "account_number": "2181" + }, + "Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset", + "account_number": "2182" + }, + "Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset", + "account_number": "2183" + }, + "Co\u00fbts des franchises": { + "account_type": "Fixed Asset", + "account_number": "2184" + }, + "Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset", + "account_number": "2188" + }, + "account_number": "218" + }, + "Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "2191" + }, + "Logiciels et internet": { + "account_type": "Fixed Asset", + "account_number": "2193" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "account_number": "2198" + }, + "account_number": "219" + }, + "account_number": "21" + }, + "Terrains": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset", + "account_number": "2211" + }, + "Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset", + "account_number": "2212" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2218" + }, + "account_number": "221" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset", + "account_number": "2221" + }, + "Autres terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2228" + }, + "account_number": "222" + }, + "Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset", + "account_number": "2231" + }, + "Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset", + "account_number": "2232" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2234" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2235" + }, + "Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "account_number": "2238" + }, + "account_number": "223" + }, + "Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset", + "account_number": "2241" + }, + "Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset", + "account_number": "2245" + }, + "Autres travaux": { + "account_type": "Fixed Asset", + "account_number": "2248" + }, + "account_number": "224" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "Carri\u00e8res": { + "account_type": "Fixed Asset", + "account_number": "2251" + }, + "account_number": "225" + }, + "Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "Parkings": { + "account_type": "Fixed Asset", + "account_number": "2261" + }, + "account_number": "226" + }, + "Terrains mis en concession": { + "account_type": "Fixed Asset", + "account_number": "227" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "Terrains immeubles de placement": { + "account_type": "Fixed Asset", + "account_number": "2281" + }, + "Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset", + "account_number": "2285" + }, + "Terrains de location acquisition": { + "account_type": "Fixed Asset", + "account_number": "2286" + }, + "Divers terrains": { + "account_type": "Fixed Asset", + "account_number": "2288" + }, + "account_number": "228" + }, + "Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "account_number": "2291" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2292" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "account_number": "2295" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2298" + }, + "account_number": "229" + }, + "account_number": "22" + }, + "B\u00e2timents, installations techniques et agencements": { + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "B\u00e2timents industriels": { + "account_number": "2311" + }, + "B\u00e2timents agricoles": { + "account_number": "2312" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2313" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2314" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2315" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2316" + }, + "account_number": "231" + }, + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "B\u00e2timents industriels": { + "account_number": "2321" + }, + "B\u00e2timents agricoles": { + "account_number": "2322" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2323" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2324" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2325" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2326" + }, + "account_number": "232" + }, + "Ouvrages d\u2019infrastructure": { + "Voies de terre": { + "account_number": "2331" + }, + "Voies de fer": { + "account_number": "2332" + }, + "Voies d\u2019eau": { + "account_number": "2333" + }, + "Barrages, Digues": { + "account_number": "2334" + }, + "Pistes d\u2019a\u00e9rodrome": { + "account_number": "2335" + }, + "Autres ouvrages d\u2019infrastructures": { + "account_number": "2338" + }, + "account_number": "233" + }, + "Am\u00e9nagements, agencements et installations techniques": { + "Installations complexes sp\u00e9cialis\u00e9es sur sol propre": { + "account_number": "2341" + }, + "Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": { + "account_number": "2342" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": { + "account_number": "2343" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": { + "account_number": "2344" + }, + "Am\u00e9nagements et agencements des b\u00e2timents": { + "account_number": "2345" + }, + "account_number": "234" + }, + "Am\u00e9nagements de bureaux": { + "Installations g\u00e9n\u00e9rales": { + "account_number": "2351" + }, + "Autres am\u00e9nagements de bureaux": { + "account_number": "2358" + }, + "account_number": "235" + }, + "B\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "237" + }, + "Autres installations et agencements": { + "account_number": "238" + }, + "B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "B\u00e2timents en cours": { + "account_number": "2391" + }, + "Installations en cours": { + "account_number": "2392" + }, + "Ouvrages d\u2019infrastructure en cours": { + "account_number": "2393" + }, + "Am\u00e9nagements et agencements et installations techniques en cours": { + "account_number": "2394" + }, + "Am\u00e9nagements de bureaux en cours": { + "account_number": "2395" + }, + "Autres installations et agencements en cours": { + "account_number": "2398" + }, + "account_number": "239" + }, + "account_number": "23" + }, + "Mat\u00e9riel, mobilier et actifs biologiques": { + "Mat\u00e9riel et outillage industriel et commercial": { + "Mat\u00e9riel industriel": { + "account_number": "2411" + }, + "Outillage industriel": { + "account_number": "2412" + }, + "Mat\u00e9riel commercial": { + "account_number": "2413" + }, + "Outillage commercial": { + "account_number": "2414" + }, + "Mat\u00e9riel & outillage industriel et commercial de location-acquisition": { + "account_number": "2416" + }, + "account_number": "241" + }, + "Mat\u00e9riel et outillage agricole": { + "Mat\u00e9riel agricole": { + "account_number": "2421" + }, + "Outillage agricole": { + "account_number": "2422" + }, + "Mat\u00e9riel & outillage agricole de location-acquisition": { + "account_number": "2426" + }, + "account_number": "242" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "243" + }, + "Mat\u00e9riel et mobilier": { + "Mat\u00e9riel de bureau": { + "account_number": "2441" + }, + "Mat\u00e9riel informatique": { + "account_number": "2442" + }, + "Mat\u00e9riel bureautique": { + "account_number": "2443" + }, + "Mobilier de bureau": { + "account_number": "2444" + }, + "Mat\u00e9riel et mobilier immeubles de placement": { + "account_number": "2445" + }, + "Mat\u00e9riel et mobilier de location acquisition": { + "account_number": "2446" + }, + "Mat\u00e9riel et mobilier des logements du personnel": { + "account_number": "2447" + }, + "account_number": "244" + }, + "Mat\u00e9riel de transport": { + "Mat\u00e9riel automobile": { + "account_number": "2451" + }, + "Mat\u00e9riel ferroviaire": { + "account_number": "2452" + }, + "Mat\u00e9riel fluvial, lagunaire": { + "account_number": "2453" + }, + "Mat\u00e9riel naval": { + "account_number": "2454" + }, + "Mat\u00e9riel a\u00e9rien": { + "account_number": "2455" + }, + "Mat\u00e9riel de transport de location-acquisition": { + "account_number": "2456" + }, + "Mat\u00e9riel hippomobile": { + "account_number": "2457" + }, + "Autres mat\u00e9riels de transport": { + "account_number": "2458" + }, + "account_number": "245" + }, + "Actifs biologiques": { + "Cheptel, animaux de trait": { + "account_number": "2461" + }, + "Cheptel, animaux reproducteurs": { + "account_number": "2462" + }, + "Animaux de garde": { + "account_number": "2463" + }, + "Plantations agricoles": { + "account_number": "2465" + }, + "Autres actifs biologiques": { + "account_number": "2468" + }, + "account_number": "246" + }, + "Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "Agencements et am\u00e9nagements du mat\u00e9riel": { + "account_number": "2471" + }, + "Agencements et am\u00e9nagements des actifs biologiques": { + "account_number": "2472" + }, + "Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2478" + }, + "account_number": "247" + }, + "Autres mat\u00e9riels et mobiliers": { + "Collections et \u0153uvres d\u2019art": { + "account_number": "2481" + }, + "Divers mat\u00e9riels mobiliers": { + "account_number": "2488" + }, + "account_number": "248" + }, + "Mat\u00e9riels et actifs biologiques en cours": { + "Mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2491" + }, + "Mat\u00e9riel et outillage agricole": { + "account_number": "2492" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2493" + }, + "Mat\u00e9riel et mobilier de bureau": { + "account_number": "2494" + }, + "Mat\u00e9riel de transport": { + "account_number": "2495" + }, + "Actifs biologiques": { + "account_number": "2496" + }, + "Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2497" + }, + "Autres mat\u00e9riels et actifs biologiques en cours": { + "account_number": "2498" + }, + "account_number": "249" + }, + "account_number": "24" + }, + "Avances et acomptes vers\u00e9s sur immobilisations": { + "Avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "251" + }, + "Avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "252" + }, + "account_number": "25" + }, + "Titres de participation": { + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "261" + }, + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "262" + }, + "Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "263" + }, + "Participations dans des organismes professionnels": { + "account_number": "265" + }, + "Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "266" + }, + "Autres titres de participation": { + "account_number": "268" + }, + "account_number": "26" + }, + "Autres immobilisations financi\u00e8res": { + "Pr\u00eats et cr\u00e9ances": { + "Pr\u00eats participatifs": { + "account_number": "2711" + }, + "Pr\u00eats aux associ\u00e9s": { + "account_number": "2712" + }, + "Billets de fonds": { + "account_number": "2713" + }, + "Titres pr\u00eat\u00e9s": { + "account_number": "2714" + }, + "Autres pr\u00eats et cr\u00e9ances": { + "account_number": "2718" + }, + "account_number": "271" + }, + "Pr\u00eats au personnel": { + "Pr\u00eats immobiliers": { + "account_number": "2721" + }, + "Pr\u00eats mobiliers et d\u2019installation": { + "account_number": "2722" + }, + "Autres pr\u00eats au personnel": { + "account_number": "2728" + }, + "account_number": "272" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "Retenues de garantie": { + "account_number": "2731" + }, + "Fonds r\u00e9glement\u00e9": { + "account_number": "2733" + }, + "Cr\u00e9ances sur le conc\u00e9dant": { + "account_number": "2734" + }, + "Autres cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2738" + }, + "account_number": "273" + }, + "Titres immobilis\u00e9s": { + "Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": { + "account_number": "2741" + }, + "Titres participatifs": { + "account_number": "2742" + }, + "Certificats d\u2019investissement": { + "account_number": "2743" + }, + "Parts de fonds commun de placement (FCP)": { + "account_number": "2744" + }, + "Obligations": { + "account_number": "2745" + }, + "Actions ou parts propres": { + "account_number": "2746" + }, + "Autres titres immobilis\u00e9s": { + "account_number": "2748" + }, + "account_number": "274" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "D\u00e9p\u00f4ts pour loyers d\u2019avance": { + "account_number": "2751" + }, + "D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": { + "account_number": "2752" + }, + "D\u00e9p\u00f4ts pour l\u2019eau": { + "account_number": "2753" + }, + "D\u00e9p\u00f4ts pour le gaz": { + "account_number": "2754" + }, + "D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": { + "account_number": "2755" + }, + "Cautionnements sur march\u00e9s publics": { + "account_number": "2756" + }, + "Cautionnements sur autres op\u00e9rations": { + "account_number": "2757" + }, + "Autres d\u00e9p\u00f4ts et cautionnements": { + "account_number": "2758" + }, + "account_number": "275" + }, + "Int\u00e9r\u00eats courus": { + "Pr\u00eats et cr\u00e9ances non commerciales": { + "account_number": "2761" + }, + "Pr\u00eats au personnel": { + "account_number": "2762" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2763" + }, + "Titres immobilis\u00e9s": { + "account_number": "2764" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2765" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "account_number": "2767" + }, + "Immobilisations financi\u00e8res diverses": { + "account_number": "2768" + }, + "account_number": "276" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": { + "account_number": "2771" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "2772" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "2773" + }, + "Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "2774" + }, + "account_number": "277" + }, + "Immobilisations financi\u00e8res diverses": { + "Cr\u00e9ances diverses groupe": { + "account_number": "2781" + }, + "Cr\u00e9ances diverses hors groupe": { + "account_number": "2782" + }, + "Banques d\u00e9p\u00f4ts \u00e0 terme": { + "account_number": "2784" + }, + "Or et m\u00e9taux pr\u00e9cieux": { + "account_number": "2785" + }, + "Autres immobilisations financi\u00e8res": { + "account_number": "2788" + }, + "account_number": "278" + }, + "account_number": "27" + }, + "Amortissements": { + "account_type": "Accumulated Depreciation", + "Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation", + "account_number": "2811" + }, + "Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation", + "account_number": "2812" + }, + "Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation", + "account_number": "2813" + }, + "Amortissements des marques": { + "account_type": "Accumulated Depreciation", + "account_number": "2814" + }, + "Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation", + "account_number": "2815" + }, + "Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation", + "account_number": "2816" + }, + "Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation", + "account_number": "2817" + }, + "Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation", + "account_number": "2818" + }, + "account_number": "281" + }, + "Amortissements des terrains": { + "Amortissements des travaux de mise en valeur des terrains": { + "account_number": "2824" + }, + "account_number": "282" + }, + "Amortissements des b\u00e2timents, installations techniques et agencements": { + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2831" + }, + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2832" + }, + "Amortissements des ouvrages d\u2019infrastructure": { + "account_number": "2833" + }, + "Amortissements des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2834" + }, + "Amortissements des am\u00e9nagements de bureaux": { + "account_number": "2835" + }, + "Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2837" + }, + "Amortissements des autres installations et agencements": { + "account_number": "2838" + }, + "account_number": "283" + }, + "Amortissements du mat\u00e9riel": { + "Amortissements du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2841" + }, + "Amortissements du mat\u00e9riel et outillage agricole": { + "account_number": "2842" + }, + "Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2843" + }, + "Amortissements du mat\u00e9riel et mobilier": { + "account_number": "2844" + }, + "Amortissements du mat\u00e9riel de transport": { + "account_number": "2845" + }, + "Amortissements des actifs biologiques": { + "account_number": "2846" + }, + "Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2847" + }, + "Amortissements des autres mat\u00e9riels": { + "account_number": "2848" + }, + "account_number": "284" + }, + "account_number": "28" + }, + "D\u00e9pr\u00e9ciations des immobilisations": { + "D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": { + "account_number": "2911" + }, + "D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": { + "account_number": "2912" + }, + "D\u00e9pr\u00e9ciations des logiciels et sites internet": { + "account_number": "2913" + }, + "D\u00e9pr\u00e9ciations des marques": { + "account_number": "2914" + }, + "D\u00e9pr\u00e9ciations du fonds commercial": { + "account_number": "2915" + }, + "D\u00e9pr\u00e9ciations du droit au bail": { + "account_number": "2916" + }, + "D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": { + "account_number": "2917" + }, + "D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": { + "account_number": "2918" + }, + "D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": { + "account_number": "2919" + }, + "account_number": "291" + }, + "D\u00e9pr\u00e9ciations des terrains": { + "D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": { + "account_number": "2921" + }, + "D\u00e9pr\u00e9ciations des terrains nus": { + "account_number": "2922" + }, + "D\u00e9pr\u00e9ciations des terrains b\u00e2tis": { + "account_number": "2923" + }, + "D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": { + "account_number": "2924" + }, + "D\u00e9pr\u00e9ciations des terrains de gisement": { + "account_number": "2925" + }, + "D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": { + "account_number": "2926" + }, + "D\u00e9pr\u00e9ciations des terrains mis en concession": { + "account_number": "2927" + }, + "D\u00e9pr\u00e9ciations des autres terrains": { + "account_number": "2928" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": { + "account_number": "2929" + }, + "account_number": "292" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2931" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2932" + }, + "D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": { + "account_number": "2933" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2934" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": { + "account_number": "2935" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2937" + }, + "D\u00e9pr\u00e9ciations des autres installations et agencements": { + "account_number": "2938" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": { + "account_number": "2939" + }, + "account_number": "293" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2941" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": { + "account_number": "2942" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2943" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": { + "account_number": "2944" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": { + "account_number": "2945" + }, + "D\u00e9pr\u00e9ciations des actifs biologiques": { + "account_number": "2946" + }, + "D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2947" + }, + "D\u00e9pr\u00e9ciations des autres mat\u00e9riels": { + "account_number": "2948" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": { + "account_number": "2949" + }, + "account_number": "294" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "2951" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "2952" + }, + "account_number": "295" + }, + "D\u00e9pr\u00e9ciations des titres de participation": { + "D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "2961" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "2962" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "2963" + }, + "D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": { + "account_number": "2965" + }, + "D\u00e9pr\u00e9ciations des parts dans des GIE": { + "account_number": "2966" + }, + "D\u00e9pr\u00e9ciations des autres titres de participation": { + "account_number": "2968" + }, + "account_number": "296" + }, + "D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": { + "account_number": "2971" + }, + "D\u00e9pr\u00e9ciations des pr\u00eats au personnel": { + "account_number": "2972" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2973" + }, + "D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": { + "account_number": "2974" + }, + "D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2975" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "account_number": "2977" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": { + "account_number": "2978" + }, + "account_number": "297" + }, + "account_number": "29" + }, + "root_type": "Asset", + "account_number": "2" + }, + "Comptes de Stocks": { + "Marchandises": { + "Marchandises A": { + "Marchandises A1": { + "account_number": "3111" + }, + "Marchandises A2": { + "account_number": "3112" + }, + "account_number": "311" + }, + "Marchandises B": { + "Marchandises B1": { + "account_number": "3121" + }, + "Marchandises B2": { + "account_number": "3122" + }, + "account_number": "312" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3131" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3132" + }, + "account_number": "313" + }, + "Marchandises hors activit\u00e9s ordinaires (HAO)": { + "account_number": "318" + }, + "account_number": "31" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Mati\u00e8res A": { + "account_number": "321" + }, + "Mati\u00e8res B": { + "account_number": "322" + }, + "Fournitures (A, B)": { + "account_number": "323" + }, + "account_number": "32" + }, + "Autres approvisionnements": { + "Mati\u00e8res consommables": { + "account_number": "331" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "332" + }, + "Fournitures de magasin": { + "account_number": "333" + }, + "Fournitures de bureau": { + "account_number": "334" + }, + "Emballages": { + "Emballages perdus": { + "account_number": "3351" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "3352" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "3353" + }, + "Autres emballages": { + "account_number": "3358" + }, + "account_number": "335" + }, + "Autres mati\u00e8res": { + "account_number": "338" + }, + "account_number": "33" + }, + "Produits en cours": { + "Produits en cours": { + "Produits en cours P1": { + "account_number": "3411" + }, + "Produits en cours P2": { + "account_number": "3412" + }, + "account_number": "341" + }, + "Travaux en cours": { + "Travaux en cours T1": { + "account_number": "3421" + }, + "Travaux en cours T2": { + "account_number": "3422" + }, + "account_number": "342" + }, + "Produits interm\u00e9diaires en cours": { + "Produits interm\u00e9diaires A": { + "account_number": "3431" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3432" + }, + "account_number": "343" + }, + "Produits r\u00e9siduels en cours": { + "Produits r\u00e9siduels A": { + "account_number": "3441" + }, + "Produits r\u00e9siduels B": { + "account_number": "3442" + }, + "account_number": "344" + }, + "Actifs biologiques en cours": { + "Animaux": { + "account_number": "3451" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3452" + }, + "account_number": "345" + }, + "account_number": "34" + }, + "Services en cours": { + "\u00c9tudes en cours": { + "\u00c9tudes en cours E1": { + "account_number": "3511" + }, + "\u00c9tudes en cours E2": { + "account_number": "3512" + }, + "account_number": "351" + }, + "Prestations de services en cours": { + "Prestations de services S1": { + "account_number": "3521" + }, + "Prestations de services S2": { + "account_number": "3522" + } + }, + "account_number": "35" + }, + "Produits finis": { + "Produits finis A": { + "account_number": "361" + }, + "Produits finis B": { + "account_number": "362" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3631" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3632" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3638" + }, + "account_number": "363" + }, + "account_number": "36" + }, + "Produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "Produits interm\u00e9diaires A": { + "account_number": "3711" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3712" + }, + "account_number": "371" + }, + "Produits r\u00e9siduels": { + "D\u00e9chets": { + "account_number": "3721" + }, + "Rebuts": { + "account_number": "3722" + }, + "Mati\u00e8res de R\u00e9cup\u00e9ration": { + "account_number": "3723" + }, + "account_number": "372" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3731" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3732" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3738" + }, + "account_number": "373" + }, + "account_number": "37" + }, + "Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "Marchandises en cours de route": { + "account_number": "381" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": { + "account_number": "382" + }, + "Autres approvisionnements en cours de route": { + "account_number": "383" + }, + "Produits finis en cours de route": { + "account_number": "386" + }, + "Stock en consignation ou en d\u00e9p\u00f4t": { + "Stock en consignation": { + "account_number": "3871" + }, + "Stock en d\u00e9p\u00f4t": { + "account_number": "3872" + }, + "account_number": "387" + }, + "Stock provenant d\u2019immobilisations mises hors service ou au rebut": { + "account_number": "388" + }, + "account_number": "38" + }, + "D\u00e9pr\u00e9ciations des stocks et encours de production": { + "D\u00e9pr\u00e9ciations des stocks de marchandises": { + "account_number": "391" + }, + "D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "392" + }, + "D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": { + "account_number": "393" + }, + "D\u00e9pr\u00e9ciations des productions en cours": { + "account_number": "394" + }, + "D\u00e9pr\u00e9ciations des services en cours": { + "account_number": "395" + }, + "D\u00e9pr\u00e9ciations des stocks de produits finis": { + "account_number": "396" + }, + "D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "account_number": "397" + }, + "D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_number": "398" + }, + "account_number": "39" + }, + "root_type": "Asset", + "account_number": "3" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "Fournisseurs d\u00e9biteurs": { + "Fournisseurs Avances et acomptes vers\u00e9s": { + "account_number": "4091" + }, + "Fournisseurs Groupe avances et acomptes vers\u00e9s": { + "account_number": "4092" + }, + "Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": { + "account_number": "4093" + }, + "Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": { + "account_number": "4094" + }, + "Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": { + "account_number": "4098" + }, + "account_number": "409" + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "Clients": { + "Clients": { + "account_type": "Receivable", + "account_number": "4111" + }, + "Clients groupe": { + "account_type": "Receivable", + "account_number": "4112" + }, + "Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable", + "account_number": "4114" + }, + "Clients, organismes internationaux": { + "account_type": "Receivable", + "account_number": "4115" + }, + "Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable", + "account_number": "4116" + }, + "Client, retenues de garantie": { + "account_type": "Receivable", + "account_number": "4117" + }, + "Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable", + "account_number": "4118" + }, + "account_type": "Receivable", + "account_number": "411" + }, + "Clients, effets \u00e0 recevoir en portefeuille": { + "Clients, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4121" + }, + "Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4122" + }, + "\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4124" + }, + "Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4125" + }, + "account_type": "Receivable", + "account_number": "412" + }, + "Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4131" + }, + "Clients, effets impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4132" + }, + "Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4133" + }, + "Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4138" + }, + "account_type": "Receivable", + "account_number": "413" + }, + "Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4141" + }, + "Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4142" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4146" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4147" + }, + "account_type": "Receivable", + "account_number": "414" + }, + "Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable", + "account_number": "415" + }, + "Cr\u00e9ances clients litigieuses ou douteuses": { + "Cr\u00e9ances litigieuses": { + "account_type": "Receivable", + "account_number": "4161" + }, + "Cr\u00e9ances douteuses": { + "account_type": "Receivable", + "account_number": "4162" + }, + "account_type": "Receivable", + "account_number": "416" + }, + "Clients, produits \u00e0 recevoir": { + "Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable", + "account_number": "4181" + }, + "Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable", + "account_number": "4186" + }, + "account_type": "Receivable", + "account_number": "418" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "Personnel, avances et acomptes": { + "Personnel, avances": { + "account_number": "4211" + }, + "Personnel, acomptes": { + "account_number": "4212" + }, + "Frais avanc\u00e9s et fournitures au personnel": { + "account_number": "4213" + }, + "account_number": "421" + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "Prestations familiales": { + "account_number": "4311" + }, + "Accidents de travail": { + "account_number": "4312" + }, + "Caisse de retraite obligatoire": { + "account_number": "4313" + }, + "Caisse de retraite facultative": { + "account_number": "4314" + }, + "Autres cotisations sociales": { + "account_number": "4318" + } + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "Mutuelle": { + "account_number": "4331" + }, + "Assurances retraite": { + "account_number": "4332" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "4333" + } + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Produits \u00e0 recevoir": { + "account_number": "4387" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "\u00c9tat, TVA factur\u00e9e": { + "TVA factur\u00e9e sur ventes": { + "account_number": "4431" + }, + "TVA factur\u00e9e sur prestations de services": { + "account_number": "4432" + }, + "TVA factur\u00e9e sur travaux": { + "account_number": "4433" + }, + "TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": { + "account_number": "4434" + }, + "TVA sur factures \u00e0 \u00e9tablir": { + "account_number": "4435" + }, + "account_number": "443" + }, + "\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "TVA r\u00e9cup\u00e9rable sur immobilisations": { + "account_number": "4451" + }, + "TVA r\u00e9cup\u00e9rable sur achats": { + "account_number": "4452" + }, + "TVA r\u00e9cup\u00e9rable sur transport": { + "account_number": "4453" + }, + "TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": { + "account_number": "4454" + }, + "TVA r\u00e9cup\u00e9rable sur factures non parvenues": { + "account_number": "4455" + }, + "TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": { + "account_number": "4456" + }, + "account_number": "445" + }, + "\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges \u00e0 payer": { + "account_number": "4486" + }, + "Produits \u00e0 recevoir": { + "account_number": "4487" + }, + "account_number": "448" + }, + "\u00c9tat, cr\u00e9ances et dettes diverses": { + "\u00c9tat, obligations cautionn\u00e9es": { + "account_number": "4491" + }, + "\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": { + "account_number": "4492" + }, + "\u00c9tat, fonds de dotation \u00e0 recevoir": { + "account_number": "4493" + }, + "\u00c9tat, subventions investissement \u00e0 recevoir": { + "account_number": "4494" + }, + "\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": { + "account_number": "4495" + }, + "\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": { + "account_number": "4496" + }, + "\u00c9tat, avances sur subventions": { + "account_number": "4497" + }, + "\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": { + "account_number": "4499" + }, + "account_number": "449" + } + }, + "45-Organismes internationaux (ACTIF)": { + "Op\u00e9rations avec les organismes africains": { + "account_number": "451" + }, + "Op\u00e9rations avec les autres organismes internationaux": { + "account_number": "452" + }, + "Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "Organismes internationaux, fonds de dotation \u00e0 recevoir": { + "account_number": "4581" + }, + "Organismes internationaux, subventions \u00e0 recevoir": { + "account_number": "4582" + }, + "account_number": "458" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "Apporteurs, capital appel\u00e9, non vers\u00e9": { + "account_number": "4613" + }, + "Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": { + "account_number": "4614" + }, + "Apporteurs, titres \u00e0 \u00e9changer": { + "account_number": "4618" + } + }, + "Apporteurs, restant d\u00fb sur capital appel\u00e9": { + "account_number": "467" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4721" + }, + "Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": { + "account_number": "4726" + } + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "Mandants": { + "account_number": "4731" + }, + "Mandataires": { + "account_number": "4732" + }, + "Commettants": { + "account_number": "4733" + }, + "Commissionnaires": { + "account_number": "4734" + }, + "\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": { + "account_number": "4739" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "Compte de r\u00e9partition p\u00e9riodique des produits": { + "account_number": "4747" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "Compte actif": { + "account_type": "Temporary", + "account_number": "4751" + } + }, + "Charges constat\u00e9es d\u2019avance": { + "account_number": "476" + }, + "478-\u00c9carts de conversion actif": { + "Diminution des cr\u00e9ances d\u2019exploitation": { + "account_number": "4781" + }, + "Diminution des cr\u00e9ances financi\u00e8res": { + "account_number": "4782" + }, + "Augmentation des dettes d\u2019exploitation": { + "account_number": "4783" + }, + "Augmentation des dettes financi\u00e8res": { + "account_number": "4784" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4786" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4788" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "En compte, immobilisations incorporelles": { + "account_number": "4851" + }, + "En compte, immobilisations corporelles": { + "account_number": "4852" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_number": "4853" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_number": "4854" + }, + "Effets escompt\u00e9s non \u00e9chus": { + "account_number": "4855" + }, + "Retenues de garantie": { + "account_number": "4857" + }, + "Factures \u00e0 \u00e9tablir": { + "account_number": "4858" + }, + "account_number": "485" + }, + "Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": { + "account_number": "488" + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "D\u00e9pr\u00e9ciations des comptes clients": { + "Cr\u00e9ances litigieuses": { + "account_number": "4911" + }, + "Cr\u00e9ances douteuses": { + "account_number": "4912" + }, + "account_number": "491" + }, + "D\u00e9pr\u00e9ciations des comptes organismes internationaux": { + "account_number": "495" + }, + "D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "Associ\u00e9s, comptes courants": { + "account_number": "4962" + }, + "Associ\u00e9s, op\u00e9rations faites en commun": { + "account_number": "4963" + }, + "Groupe, comptes courants": { + "account_number": "4966" + }, + "account_number": "496" + }, + "D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": { + "account_number": "497" + }, + "D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "account_number": "4985" + }, + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4986" + }, + "Autres cr\u00e9ances HAO": { + "account_number": "4988" + }, + "account_number": "498" + }, + "Provisions pour risques \u00e0 court terme": { + "Sur op\u00e9rations d\u2019exploitation": { + "account_number": "4991" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "4997" + }, + "Sur op\u00e9rations HAO": { + "account_number": "4998" + }, + "account_number": "499" + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "Fournisseurs, dettes en compte": { + "Fournisseurs": { + "account_type": "Payable", + "account_number": "4011" + }, + "Fournisseurs groupe": { + "account_type": "Payable", + "account_number": "4012" + }, + "Fournisseurs sous-traitants": { + "account_type": "Payable", + "account_number": "4013" + }, + "Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable", + "account_number": "4016" + }, + "Fournisseur, retenues de garantie": { + "account_type": "Payable", + "account_number": "4017" + }, + "account_type": "Payable", + "account_number": "401" + }, + "Fournisseurs, effets \u00e0 payer": { + "Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4021" + }, + "Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4022" + }, + "Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4023" + }, + "account_type": "Payable", + "account_number": "402" + }, + "Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4041" + }, + "Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4042" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4046" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4047" + }, + "account_type": "Payable", + "account_number": "404" + }, + "Fournisseurs, factures non parvenues": { + "Fournisseurs": { + "account_type": "Stock Received But Not Billed", + "account_number": "4081" + }, + "Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed", + "account_number": "4082" + }, + "Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed", + "account_number": "4083" + }, + "Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed", + "account_number": "4086" + }, + "account_type": "Stock Received But Not Billed", + "account_number": "408" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "Clients cr\u00e9diteurs": { + "Clients, avances et acomptes re\u00e7us": { + "account_number": "4191" + }, + "Clients groupe, avances et acomptes re\u00e7us": { + "account_number": "4192" + }, + "Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": { + "account_number": "4194" + }, + "Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": { + "account_number": "4198" + }, + "account_number": "419" + } + }, + "42-Personnel (PASSIF)": { + "Personnel, r\u00e9mun\u00e9rations dues": { + "account_number": "422" + }, + "Personnel, oppositions, saisies-arr\u00eats": { + "Personnel, oppositions": { + "account_number": "4231" + }, + "Personnel, saisies-arr\u00eats": { + "account_number": "4232" + }, + "Personnel, avis \u00e0 tiers d\u00e9tenteur": { + "account_number": "4233" + }, + "account_number": "423" + }, + "Personnel, \u0153uvres sociales internes": { + "Assistance m\u00e9dicale": { + "account_number": "4241" + }, + "Allocations familiales": { + "account_number": "4242" + }, + "Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": { + "account_number": "4245" + }, + "Autres \u0153uvres sociales internes": { + "account_number": "4248" + }, + "account_number": "424" + }, + "Repr\u00e9sentants du personnel": { + "D\u00e9l\u00e9gu\u00e9s du personnel": { + "account_number": "4251" + }, + "Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": { + "account_number": "4252" + }, + "Autres repr\u00e9sentants du personnel": { + "account_number": "4258" + }, + "account_number": "425" + }, + "Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "Participation aux b\u00e9n\u00e9fices": { + "account_number": "4261" + }, + "Participation au capital": { + "account_number": "4264" + }, + "account_number": "426" + }, + "Personnel d\u00e9p\u00f4ts": { + "account_number": "427" + }, + "Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": { + "account_number": "4281" + }, + "Autres charges \u00e0 payer": { + "account_number": "4286" + }, + "Produits \u00e0 recevoir": { + "account_number": "4287" + }, + "account_number": "428" + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges sociales sur gratifications \u00e0 payer": { + "account_number": "4381" + }, + "Charges sociales sur cong\u00e9s \u00e0 payer": { + "account_number": "4382" + }, + "Autres charges \u00e0 payer": { + "account_number": "4386" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": { + "account_number": "441" + }, + "\u00c9tat, autres imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes d\u2019\u00c9tat": { + "account_number": "4421" + }, + "Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": { + "account_number": "4422" + }, + "Imp\u00f4ts et taxes recouvrables sur des obligataires": { + "account_number": "4423" + }, + "Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": { + "account_number": "4424" + }, + "Droits de douane": { + "account_number": "4426" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "4428" + }, + "account_number": "442" + }, + "\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "\u00c9tat, TVA due": { + "account_number": "4441" + }, + "\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": { + "account_number": "4449" + }, + "account_number": "444" + }, + "\u00c9tat, autres taxes sur le chiffre d\u2019affaires": { + "account_number": "446" + }, + "\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": { + "account_number": "4471" + }, + "Imp\u00f4ts sur salaires": { + "account_number": "4472" + }, + "Contribution nationale": { + "account_number": "4473" + }, + "Contribution nationale de solidarit\u00e9": { + "account_number": "4474" + }, + "Autres imp\u00f4ts et contributions": { + "account_number": "4478" + }, + "account_number": "447" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "Apporteurs, apports en nature": { + "account_number": "4611" + }, + "Apporteurs, apports en num\u00e9raire": { + "account_number": "4612" + }, + "Apporteurs, versements re\u00e7us sur augmentation de capital": { + "account_number": "4615" + }, + "Apporteurs, versements anticip\u00e9s": { + "account_number": "4616" + }, + "Apporteurs d\u00e9faillants": { + "account_number": "4617" + }, + "Apporteurs, capital \u00e0 rembourser": { + "account_number": "4619" + } + }, + "462-Associ\u00e9s, comptes courants": { + "Principal": { + "account_number": "4621" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4626" + } + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "Op\u00e9rations courantes": { + "account_number": "4631" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4636" + } + }, + "Associ\u00e9s, dividendes \u00e0 payer": { + "account_number": "465" + }, + "Groupe, comptes courants": { + "account_number": "466" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "D\u00e9biteurs divers": { + "account_number": "4711" + }, + "Cr\u00e9diteurs divers": { + "account_number": "4712" + }, + "Obligataires": { + "account_number": "4713" + }, + "R\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "4715" + }, + "Compte d\u2019affacturage": { + "account_number": "4716" + }, + "D\u00e9biteurs divers retenues de garantie": { + "account_number": "4717" + }, + "Apport, compte de fusion et op\u00e9rations assimil\u00e9es": { + "account_number": "4718" + }, + "Bons de souscription d\u2019actions et d\u2019obligations": { + "account_number": "4719" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "Compte de r\u00e9partition p\u00e9riodique des charges": { + "account_number": "4746" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "Compte passif": { + "account_number": "4752" + } + }, + "Produits constat\u00e9s d\u2019avance": { + "account_number": "477" + }, + "479-\u00c9carts de conversion passif": { + "Augmentation des cr\u00e9ances d\u2019exploitation": { + "account_number": "4791" + }, + "Augmentation des cr\u00e9ances financi\u00e8res": { + "account_number": "4792" + }, + "Diminution des dettes d\u2019exploitation": { + "account_number": "4793" + }, + "Diminution des dettes financi\u00e8res": { + "account_number": "4794" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4797" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4798" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "Fournisseurs d\u2019investissements": { + "Immobilisations incorporelles": { + "account_number": "4811" + }, + "Immobilisations corporelles": { + "account_number": "4812" + }, + "Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": { + "account_number": "4813" + }, + "R\u00e9serve de propri\u00e9t\u00e9": { + "account_number": "4816" + }, + "Retenues de garantie": { + "account_number": "4817" + }, + "Factures non parvenues": { + "account_number": "4818" + }, + "account_number": "481" + }, + "Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "Immobilisations incorporelles": { + "account_number": "4821" + }, + "Immobilisations corporelles": { + "account_number": "4822" + }, + "account_number": "482" + }, + "Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "Produits": { + "account_number": "4887" + }, + "account_number": "484" + } + }, + "root_type": "Liability" + }, + "Comptes de tr\u00e9sorerie": { + "Titres de placement": { + "Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "Titres du Tr\u00e9sor \u00e0 court terme": { + "account_number": "5011" + }, + "Titres d\u2019organismes financiers": { + "account_number": "5012" + }, + "Bons de caisse \u00e0 court terme": { + "account_number": "5013" + }, + "Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": { + "account_number": "5016" + }, + "account_number": "501" + }, + "Actions": { + "Actions ou parts propres": { + "account_number": "5021" + }, + "Actions cot\u00e9es": { + "account_number": "5022" + }, + "Actions non cot\u00e9es": { + "account_number": "5023" + }, + "Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": { + "account_number": "5024" + }, + "Autres actions": { + "account_number": "5025" + }, + "Frais d\u2019acquisition des actions": { + "account_number": "5026" + }, + "account_number": "502" + }, + "Obligations": { + "Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": { + "account_number": "5031" + }, + "Obligations cot\u00e9es": { + "account_number": "5032" + }, + "Obligations non cot\u00e9es": { + "account_number": "5033" + }, + "Autres obligations": { + "account_number": "5035" + }, + "Frais d\u2019acquisition des obligations": { + "account_number": "5036" + }, + "account_number": "503" + }, + "Bons de souscription": { + "Bons de souscription d\u2019actions": { + "account_number": "5042" + }, + "Bons de souscription d\u2019obligations": { + "account_number": "5043" + }, + "account_number": "504" + }, + "Titres n\u00e9gociables hors r\u00e9gion": { + "account_number": "505" + }, + "Int\u00e9r\u00eats courus": { + "Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": { + "account_number": "5061" + }, + "Actions": { + "account_number": "5062" + }, + "Obligations": { + "account_number": "5063" + }, + "account_number": "506" + }, + "Autres titres de placement et cr\u00e9ances assimil\u00e9es": { + "account_number": "508" + }, + "account_number": "50" + }, + "Valeurs \u00e0 encaisser": { + "Effets \u00e0 encaisser": { + "account_number": "511" + }, + "Effets \u00e0 l\u2019encaissement": { + "account_number": "512" + }, + "Ch\u00e8ques \u00e0 encaisser": { + "account_number": "513" + }, + "Ch\u00e8ques \u00e0 l\u2019encaissement": { + "account_number": "514" + }, + "Cartes de cr\u00e9dit \u00e0 encaisser": { + "account_number": "515" + }, + "Autres valeurs \u00e0 l\u2019encaissement": { + "Warrants": { + "account_number": "5181" + }, + "Billets de fonds": { + "account_number": "5182" + }, + "Ch\u00e8ques de voyage": { + "account_number": "5185" + }, + "Coupons \u00e9chus": { + "account_number": "5186" + }, + "Int\u00e9r\u00eats \u00e9chus des obligations": { + "account_number": "5187" + }, + "account_number": "518" + }, + "account_number": "51" + }, + "Banques": { + "Banques locales": { + "Banques en monnaie nationale": { + "account_type": "Bank", + "account_number": "5211" + }, + "Banques en devises": { + "account_type": "Bank", + "account_number": "5215" + }, + "account_type": "Bank", + "account_number": "521" + }, + "Banques autres \u00c9tats r\u00e9gion": { + "account_number": "522" + }, + "Banques autres \u00c9tats zone mon\u00e9taire": { + "account_number": "523" + }, + "Banques hors zone mon\u00e9taire": { + "account_number": "524" + }, + "Banques d\u00e9p\u00f4t \u00e0 terme": { + "account_number": "525" + }, + "Banques, int\u00e9r\u00eats courus": { + "Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": { + "account_number": "5261" + }, + "Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": { + "account_number": "5267" + }, + "account_number": "526" + }, + "account_number": "52" + }, + "\u00c9tablissements financiers et assimil\u00e9s": { + "Ch\u00e8ques postaux": { + "account_number": "531" + }, + "Tr\u00e9sor": { + "account_number": "532" + }, + "Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": { + "account_number": "533" + }, + "\u00c9tablissements financiers, int\u00e9r\u00eats courus": { + "account_number": "536" + }, + "Autres organismes financiers": { + "account_number": "538" + }, + "account_number": "53" + }, + "Instruments de tr\u00e9sorerie": { + "Options de taux d\u2019int\u00e9r\u00eat": { + "account_number": "541" + }, + "Options de taux de change": { + "account_number": "542" + }, + "Options de taux boursiers": { + "account_number": "543" + }, + "Instruments de march\u00e9s \u00e0 terme": { + "account_number": "544" + }, + "Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": { + "account_number": "545" + }, + "account_number": "54" + }, + "Instruments de monnaie \u00e9lectronique": { + "Monnaie \u00e9lectronique carte carburant": { + "account_number": "551" + }, + "Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": { + "account_number": "552" + }, + "Monnaie \u00e9lectronique carte p\u00e9age": { + "account_number": "553" + }, + "Porte-monnaie \u00e9lectronique": { + "account_number": "554" + }, + "Autres instruments de monnaies \u00e9lectroniques": { + "account_number": "558" + }, + "account_number": "55" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "Cr\u00e9dits de tr\u00e9sorerie": { + "account_number": "561" + }, + "Escompte de cr\u00e9dits de campagne": { + "account_number": "564" + }, + "Escompte de cr\u00e9dits ordinaires": { + "account_number": "565" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": { + "account_number": "566" + }, + "account_number": "56" + }, + "Caisse": { + "Caisse si\u00e8ge social": { + "Caisse en monnaie nationale": { + "account_number": "5711" + }, + "Caisse en devises": { + "account_number": "5712" + }, + "account_number": "571" + }, + "Caisse succursale A": { + "En monnaie nationale": { + "account_number": "5721" + }, + "En devises": { + "account_number": "5722" + }, + "account_number": "572" + }, + "Caisse succursale B": { + "En monnaie nationale": { + "account_number": "5731" + }, + "En devises": { + "account_number": "5732" + }, + "account_number": "573" + }, + "account_number": "57" + }, + "R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "R\u00e9gies d\u2019avance": { + "account_number": "581" + }, + "Accr\u00e9ditifs": { + "account_number": "582" + }, + "Virements de fonds": { + "account_number": "585" + }, + "Autres virements internes": { + "account_number": "588" + }, + "account_number": "58" + }, + "D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "D\u00e9pr\u00e9ciations des titres de placement": { + "account_number": "590" + }, + "D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": { + "account_number": "591" + }, + "D\u00e9pr\u00e9ciations des comptes banques": { + "account_number": "592" + }, + "D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": { + "account_number": "593" + }, + "D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": { + "account_number": "594" + }, + "Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": { + "account_number": "599" + }, + "account_number": "59" + }, + "root_type": "Asset", + "account_number": "5" + }, + "Comptes de charges des activit\u00e9s ordinaires": { + "Achats et variations de stocks": { + "Achats de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "6011" + }, + "Hors R\u00e9gion": { + "account_number": "6012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6014" + }, + "Frais sur achats": { + "account_number": "6015" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6019" + }, + "account_number": "601" + }, + "Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Dans la R\u00e9gion": { + "account_number": "6021" + }, + "Hors R\u00e9gion": { + "account_number": "6022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6024" + }, + "Frais sur achats": { + "account_number": "6025" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6029" + }, + "account_number": "602" + }, + "Variations des stocks de biens achet\u00e9s": { + "Variations des stocks de marchandises": { + "account_number": "6031" + }, + "Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "6032" + }, + "Variations des stocks d\u2019autres approvisionnements": { + "account_number": "6033" + }, + "account_number": "603" + }, + "Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "Mati\u00e8res consommables": { + "account_number": "6041" + }, + "Mati\u00e8res combustibles": { + "account_number": "6042" + }, + "Produits d\u2019entretien": { + "account_number": "6043" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "6044" + }, + "Frais sur achat": { + "account_number": "6045" + }, + "Fournitures de magasin": { + "account_number": "6046" + }, + "Fournitures de bureau": { + "account_number": "6047" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6049" + }, + "account_number": "604" + }, + "Autres achats": { + "Fournitures non stockables Eau": { + "account_number": "6051" + }, + "Fournitures non stockables \u00c9lectricit\u00e9": { + "account_number": "6052" + }, + "Fournitures non stockables Autres \u00e9nergies": { + "account_number": "6053" + }, + "Fournitures d\u2019entretien non stockables": { + "account_number": "6054" + }, + "Fournitures de bureau non stockables": { + "account_number": "6055" + }, + "Achats de petit mat\u00e9riel et outillage": { + "account_number": "6056" + }, + "Achats d\u2019\u00e9tudes et prestations de services": { + "account_number": "6057" + }, + "Achats de travaux, mat\u00e9riels et \u00e9quipements": { + "account_number": "6058" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6059" + }, + "account_number": "605" + }, + "Achats d\u2019emballages": { + "Emballages perdus": { + "account_number": "6081" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "6082" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "6083" + }, + "Frais sur achats": { + "account_number": "6085" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6089" + }, + "account_number": "608" + }, + "account_number": "60" + }, + "Transports": { + "Transports sur ventes": { + "account_number": "612" + }, + "Transports pour le compte de tiers": { + "account_number": "613" + }, + "Transports du personnel": { + "account_number": "614" + }, + "Transports de plis": { + "account_number": "616" + }, + "Autres frais de transport": { + "Voyages et d\u00e9placements": { + "account_number": "6181" + }, + "Transports entre \u00e9tablissements ou chantiers": { + "account_number": "6182" + }, + "Transports administratifs": { + "account_number": "6183" + }, + "account_number": "618" + }, + "account_number": "61" + }, + "Services ext\u00e9rieurs": { + "Sous-traitance g\u00e9n\u00e9rale": { + "account_number": "621" + }, + "Locations, charges locatives": { + "Locations de terrains": { + "account_number": "6221" + }, + "Locations de b\u00e2timents": { + "account_number": "6222" + }, + "Locations de mat\u00e9riels et outillages": { + "account_number": "6223" + }, + "Malis sur emballages": { + "account_number": "6224" + }, + "Locations d\u2019emballages": { + "account_number": "6225" + }, + "Fermages et loyers du foncier": { + "account_number": "6226" + }, + "Locations et charges locatives diverses": { + "account_number": "6228" + }, + "account_number": "622" + }, + "Redevances de location acquisition": { + "Cr\u00e9dit-bail immobilier": { + "account_number": "6232" + }, + "Cr\u00e9dit-bail mobilier": { + "account_number": "6233" + }, + "Location-vente": { + "account_number": "6234" + }, + "Autres contrats de location acquisition": { + "account_number": "6238" + }, + "account_number": "623" + }, + "Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "Entretien et r\u00e9parations des biens immobiliers": { + "account_number": "6241" + }, + "Entretien et r\u00e9parations des biens mobiliers": { + "account_number": "6242" + }, + "Maintenance": { + "account_number": "6243" + }, + "Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "6244" + }, + "Autres entretiens et r\u00e9parations": { + "account_number": "6248" + }, + "account_number": "624" + }, + "Primes d\u2019assurance": { + "Assurances multirisques": { + "account_number": "6251" + }, + "Assurances mat\u00e9riel de transport": { + "account_number": "6252" + }, + "Assurances risques d\u2019exploitation": { + "account_number": "6253" + }, + "Assurances responsabilit\u00e9 du producteur": { + "account_number": "6254" + }, + "Assurances insolvabilit\u00e9 clients": { + "account_number": "6255" + }, + "Assurances transport sur ventes": { + "account_number": "6257" + }, + "Autres primes d\u2019assurances": { + "account_number": "6258" + }, + "account_number": "625" + }, + "\u00c9tudes, recherches et documentation": { + "\u00c9tudes et recherches": { + "account_number": "6261" + }, + "Documentation g\u00e9n\u00e9rale": { + "account_number": "6265" + }, + "Documentation technique": { + "account_number": "6266" + }, + "account_number": "626" + }, + "Publicit\u00e9, publications, relations publiques": { + "Annonces, insertions": { + "account_number": "6271" + }, + "Catalogues, imprim\u00e9s publicitaires": { + "account_number": "6272" + }, + "\u00c9chantillons": { + "account_number": "6273" + }, + "Foires et expositions": { + "account_number": "6274" + }, + "Publications": { + "account_number": "6275" + }, + "Cadeaux \u00e0 la client\u00e8le": { + "account_number": "6276" + }, + "Frais de colloques, s\u00e9minaires, conf\u00e9rences": { + "account_number": "6277" + }, + "Autres charges de publicit\u00e9 et relations publiques": { + "account_number": "6278" + }, + "account_number": "627" + }, + "Frais de t\u00e9l\u00e9communications": { + "Frais de t\u00e9l\u00e9phone": { + "account_number": "6281" + }, + "Frais de t\u00e9lex": { + "account_number": "6282" + }, + "Frais de t\u00e9l\u00e9copie": { + "account_number": "6283" + }, + "Autres frais de t\u00e9l\u00e9communications": { + "account_number": "6288" + }, + "account_number": "628" + }, + "account_number": "62" + }, + "Autres services ext\u00e9rieurs": { + "Frais bancaires": { + "Frais sur titres (vente, garde)": { + "account_number": "6311" + }, + "Frais sur effets": { + "account_number": "6312" + }, + "Location de coffres": { + "account_number": "6313" + }, + "Commissions d\u2019affacturage": { + "account_number": "6314" + }, + "Commissions sur cartes de cr\u00e9dit": { + "account_number": "6315" + }, + "Frais d\u2019\u00e9mission d\u2019emprunts": { + "account_number": "6316" + }, + "Frais sur instruments monnaie \u00e9lectronique": { + "account_number": "6317" + }, + "Autres frais bancaires": { + "account_number": "6318" + }, + "account_number": "631" + }, + "R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "Commissions et courtages sur ventes": { + "account_number": "6322" + }, + "Honoraires des professions r\u00e9glement\u00e9es": { + "account_number": "6324" + }, + "Frais d\u2019actes et de contentieux": { + "account_number": "6325" + }, + "R\u00e9mun\u00e9rations d\u2019affacturage": { + "account_number": "6326" + }, + "R\u00e9mun\u00e9rations des autres prestataires de services": { + "account_number": "6327" + }, + "Divers frais": { + "account_number": "6328" + }, + "account_number": "632" + }, + "Frais de formation du personnel": { + "account_number": "633" + }, + "Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "Redevances pour brevets, licences": { + "account_number": "6342" + }, + "Redevances pour logiciels": { + "account_number": "6343" + }, + "Redevances pour marques": { + "account_number": "6344" + }, + "Redevances pour sites internet": { + "account_number": "6345" + }, + "Redevances pour concessions, droits et valeurs similaires": { + "account_number": "6346" + }, + "account_number": "634" + }, + "Cotisations": { + "Cotisations": { + "account_number": "6351" + }, + "Concours divers": { + "account_number": "6358" + }, + "account_number": "635" + }, + "R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "Personnel int\u00e9rimaire": { + "account_number": "6371" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6372" + }, + "account_number": "637" + }, + "Autres charges externes": { + "Frais de recrutement du personnel": { + "account_number": "6381" + }, + "Frais de d\u00e9m\u00e9nagement": { + "account_number": "6382" + }, + "R\u00e9ceptions": { + "account_number": "6383" + }, + "Missions": { + "account_number": "6384" + }, + "Charges de copropri\u00e9t\u00e9": { + "account_number": "6385" + }, + "account_number": "638" + }, + "account_number": "63" + }, + "Imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes directs": { + "Imp\u00f4ts fonciers et taxes annexes": { + "account_number": "6411" + }, + "Patentes, licences et taxes annexes": { + "account_number": "6412" + }, + "Taxes sur appointements et salaires": { + "account_number": "6413" + }, + "Taxes d\u2019apprentissage": { + "account_number": "6414" + }, + "Formation professionnelle continue": { + "account_number": "6415" + }, + "Autres imp\u00f4ts et taxes directs": { + "account_number": "6418" + }, + "account_number": "641" + }, + "Imp\u00f4ts et taxes indirects": { + "account_number": "645" + }, + "Droits d\u2019enregistrement": { + "Droits de mutation": { + "account_number": "6461" + }, + "Droits de timbre": { + "account_number": "6462" + }, + "Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": { + "account_number": "6463" + }, + "Vignettes": { + "account_number": "6464" + }, + "Autres droits": { + "account_number": "6468" + }, + "account_number": "646" + }, + "P\u00e9nalit\u00e9s, amendes fiscales": { + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": { + "account_number": "6471" + }, + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": { + "account_number": "6472" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": { + "account_number": "6473" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": { + "account_number": "6474" + }, + "Autres p\u00e9nalit\u00e9s et amendes fiscales": { + "account_number": "6478" + }, + "account_number": "647" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "648" + }, + "account_number": "64" + }, + "Autres charges": { + "Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "Clients": { + "account_number": "6511" + }, + "Autres d\u00e9biteurs": { + "account_number": "6515" + }, + "account_number": "651" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "6521" + }, + "Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "6525" + }, + "account_number": "652" + }, + "Valeurs comptables des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "6541" + }, + "Immobilisations corporelles": { + "account_number": "6542" + }, + "account_number": "654" + }, + "Perte de change sur cr\u00e9ances et dettes commerciale": { + "account_number": "656" + }, + "P\u00e9nalit\u00e9s et amendes p\u00e9nales": { + "account_number": "657" + }, + "Charges diverses": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "6581" + }, + "Dons": { + "account_number": "6582" + }, + "M\u00e9c\u00e9nat": { + "account_number": "6583" + }, + "Autres charges diverses": { + "account_number": "6588" + }, + "account_number": "658" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "6591" + }, + "Sur stocks": { + "account_number": "6593" + }, + "Sur cr\u00e9ances": { + "account_number": "6594" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": { + "account_number": "6598" + }, + "account_number": "659" + }, + "account_number": "65" + }, + "Charges de personnel": { + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "Appointements salaires et commissions": { + "account_number": "6611" + }, + "Primes et gratifications": { + "account_number": "6612" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6613" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6614" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6615" + }, + "Suppl\u00e9ment familial": { + "account_number": "6616" + }, + "Avantages en nature": { + "account_number": "6617" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6618" + }, + "account_number": "661" + }, + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "Appointements salaires et commissions": { + "account_number": "6621" + }, + "Primes et gratifications": { + "account_number": "6622" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6623" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6624" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6625" + }, + "Suppl\u00e9ment familial": { + "account_number": "6626" + }, + "Avantages en nature": { + "account_number": "6627" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6628" + }, + "account_number": "662" + }, + "Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "Indemnit\u00e9s de logement": { + "account_number": "6631" + }, + "Indemnit\u00e9s de repr\u00e9sentation": { + "account_number": "6632" + }, + "Indemnit\u00e9s d\u2019expatriation": { + "account_number": "6633" + }, + "Indemnit\u00e9s de transport": { + "account_number": "6634" + }, + "Autres indemnit\u00e9s et avantages divers": { + "account_number": "6638" + }, + "account_number": "663" + }, + "Charges sociales": { + "Charges sociales sur r\u00e9mun\u00e9ration du personnel national": { + "account_number": "6641" + }, + "Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": { + "account_number": "6642" + }, + "account_number": "664" + }, + "R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "R\u00e9mun\u00e9ration du travail de l\u2019exploitant": { + "account_number": "6661" + }, + "Charges sociales": { + "account_number": "6662" + }, + "account_number": "666" + }, + "R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "Personnel int\u00e9rimaire": { + "account_number": "6671" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6672" + }, + "account_number": "667" + }, + "Autres charges sociales": { + "Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": { + "account_number": "6681" + }, + "Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": { + "account_number": "6682" + }, + "Versements et contributions aux autres \u0153uvres sociales": { + "account_number": "6683" + }, + "M\u00e9decine du travail et pharmacie": { + "account_number": "6684" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "6685" + }, + "Assurances retraite et fonds de pension": { + "account_number": "6686" + }, + "Majorations et p\u00e9nalit\u00e9s sociales": { + "account_number": "6687" + }, + "Charges sociales diverses": { + "account_number": "6688" + }, + "account_number": "668" + }, + "account_number": "66" + }, + "Frais financiers et charges assimil\u00e9es": { + "Int\u00e9r\u00eats des emprunts": { + "Emprunts obligataires": { + "account_number": "6711" + }, + "Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "6712" + }, + "Dettes li\u00e9es \u00e0 des participations": { + "account_number": "6713" + }, + "Primes de remboursement des obligations": { + "account_number": "6714" + }, + "account_number": "671" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "6722" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "6723" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": { + "account_number": "6724" + }, + "Int\u00e9r\u00eats dans loyers des autres locations acquisition": { + "account_number": "6728" + }, + "account_number": "672" + }, + "Escomptes accord\u00e9s": { + "account_number": "673" + }, + "Autres int\u00e9r\u00eats": { + "Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": { + "account_number": "6741" + }, + "Comptes courants bloqu\u00e9s": { + "account_number": "6742" + }, + "Int\u00e9r\u00eats sur obligations cautionn\u00e9es": { + "account_number": "6743" + }, + "Int\u00e9r\u00eats sur dettes commerciales": { + "account_number": "6744" + }, + "Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": { + "account_number": "6745" + }, + "Int\u00e9r\u00eats sur dettes diverses": { + "account_number": "6748" + }, + "account_number": "674" + }, + "Escomptes des effets de commerce": { + "account_number": "675" + }, + "Pertes de change financi\u00e8res": { + "account_number": "676" + }, + "Pertes sur titres de placement": { + "Pertes sur cessions de titres de placement": { + "account_number": "6771" + }, + "Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "6772" + }, + "account_number": "677" + }, + "Pertes et charges sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "6781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "6782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "6784" + }, + "account_number": "678" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "6791" + }, + "Sur titres de placement": { + "account_number": "6795" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "6798" + }, + "account_number": "679" + }, + "account_number": "67" + }, + "Dotations aux amortissements": { + "Dotations aux amortissements d\u2019exploitation": { + "Dotations aux amortissements des immobilisations incorporelles": { + "account_number": "6812" + }, + "Dotations aux amortissements des immobilisations corporelles": { + "account_number": "6813" + }, + "account_number": "681" + }, + "account_number": "68" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6911" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "account_number": "6913" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": { + "account_number": "6914" + }, + "account_number": "691" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6971" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": { + "account_number": "6972" + }, + "account_number": "697" + }, + "account_number": "69" + }, + "root_type": "Expense", + "account_number": "6" + }, + "Comptes de produits des activit\u00e9s ordinaires": { + "Ventes": { + "Ventes de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "7011" + }, + "Hors R\u00e9gion": { + "account_number": "7012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7014" + }, + "Sur internet": { + "account_number": "7015" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7019" + }, + "account_number": "701" + }, + "Ventes de produits finis": { + "Dans la R\u00e9gion": { + "account_number": "7021" + }, + "Hors R\u00e9gion": { + "account_number": "7022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7024" + }, + "Sur internet": { + "account_number": "7025" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7029" + }, + "account_number": "702" + }, + "Ventes de produits interm\u00e9diaires": { + "Dans la R\u00e9gion": { + "account_number": "7031" + }, + "Hors R\u00e9gion": { + "account_number": "7032" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7033" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7034" + }, + "Sur internet": { + "account_number": "7035" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7039" + }, + "account_number": "703" + }, + "Ventes de produits r\u00e9siduels": { + "Dans la R\u00e9gion": { + "account_number": "7041" + }, + "Hors R\u00e9gion": { + "account_number": "7042" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7043" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7044" + }, + "Sur internet": { + "account_number": "7045" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7049" + }, + "account_number": "704" + }, + "Travaux factur\u00e9s": { + "Dans la R\u00e9gion": { + "account_number": "7051" + }, + "Hors R\u00e9gion": { + "account_number": "7052" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7053" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7054" + }, + "Sur internet": { + "account_number": "7055" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7059" + }, + "account_number": "705" + }, + "Services vendus": { + "Dans la R\u00e9gion": { + "account_number": "7061" + }, + "Hors R\u00e9gion": { + "account_number": "7062" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7063" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7064" + }, + "Sur internet": { + "account_number": "7065" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7069" + }, + "account_number": "706" + }, + "Produits accessoires": { + "Ports, emballages perdus et autres frais factur\u00e9s": { + "account_number": "7071" + }, + "Commissions et courtages": { + "account_number": "7072" + }, + "Locations": { + "account_number": "7073" + }, + "Bonis sur reprises et cessions d\u2019emballages": { + "account_number": "7074" + }, + "Mise \u00e0 disposition de personnel": { + "account_number": "7075" + }, + "Redevances pour brevets, logiciels, marques et droits similaires": { + "account_number": "7076" + }, + "Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": { + "account_number": "7077" + }, + "Autres produits accessoires": { + "account_number": "7078" + }, + "account_number": "707" + }, + "account_number": "70" + }, + "Subventions d\u2019exploitation": { + "Sur produits \u00e0 l\u2019exportation": { + "account_number": "711" + }, + "Sur produits \u00e0 l\u2019importation": { + "account_number": "712" + }, + "Sur produits de p\u00e9r\u00e9quation": { + "account_number": "713" + }, + "Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": { + "account_number": "714" + }, + "Autres subventions d\u2019exploitation": { + "Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": { + "account_number": "7181" + }, + "Vers\u00e9es par les organismes internationaux": { + "account_number": "7182" + }, + "Vers\u00e9es par des tiers": { + "account_number": "7183" + }, + "account_number": "718" + }, + "account_number": "71" + }, + "Production immobilis\u00e9e": { + "Immobilisations incorporelles": { + "account_number": "721" + }, + "Immobilisations corporelles": { + "Immobilisations corporelles (hors actifs biologiques)": { + "account_number": "7221" + }, + "Immobilisations corporelles (actifs biologiques)": { + "account_number": "7222" + }, + "account_number": "722" + }, + "Production auto-consomm\u00e9e": { + "account_number": "724" + }, + "Immobilisations financi\u00e8res": { + "account_number": "726" + }, + "account_number": "72" + }, + "Variations des stocks de biens et de services produits": { + "Variations des stocks de produits en cours": { + "Produits en cours": { + "account_number": "7341" + }, + "Travaux en cours": { + "account_number": "7342" + }, + "account_number": "734" + }, + "Variations des en-cours de services": { + "\u00c9tudes en cours": { + "account_number": "7351" + }, + "Prestations de services en cours": { + "account_number": "7352" + }, + "account_number": "735" + }, + "Variations des stocks de produits finis": { + "account_number": "736" + }, + "Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "account_number": "7371" + }, + "Produits r\u00e9siduels": { + "account_number": "7372" + }, + "account_number": "737" + }, + "account_number": "73" + }, + "Autres produits": { + "Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "account_number": "751" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "7521" + }, + "B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "7525" + }, + "account_number": "752" + }, + "Produits des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "7541" + }, + "Immobilisations corporelles": { + "account_number": "7542" + }, + "account_number": "754" + }, + "Gains de change sur cr\u00e9ances et dettes commerciales": { + "account_number": "756" + }, + "Produits divers": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "7581" + }, + "Indemnit\u00e9s d\u2019assurances re\u00e7ues": { + "account_number": "7582" + }, + "Autres produits divers": { + "account_number": "7588" + }, + "account_number": "758" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "7591" + }, + "Sur stocks": { + "account_number": "7593" + }, + "Sur cr\u00e9ances": { + "account_number": "7594" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "account_number": "7598" + }, + "account_number": "759" + }, + "account_number": "75" + }, + "Revenus financiers et produits assimil\u00e9s": { + "Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "Int\u00e9r\u00eats de pr\u00eats": { + "account_number": "7712" + }, + "Int\u00e9r\u00eats sur cr\u00e9ances diverses": { + "account_number": "7713" + }, + "account_number": "771" + }, + "Revenus de participations et autres titres immobilis\u00e9s": { + "Revenus des titres de participation": { + "account_number": "7721" + }, + "Revenus autres titres immobilis\u00e9s": { + "account_number": "7722" + }, + "account_number": "772" + }, + "Escomptes obtenus": { + "account_number": "773" + }, + "Revenus de placement": { + "Revenus des obligations": { + "account_number": "7745" + }, + "Revenus des titres de placement": { + "account_number": "7746" + }, + "account_number": "774" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "account_number": "775" + }, + "Gains de change financiers": { + "account_number": "776" + }, + "Gains sur cessions de titres de placement": { + "account_number": "777" + }, + "Gains sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "7781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "7782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "7784" + }, + "account_number": "778" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "7791" + }, + "Sur titres de placement": { + "account_number": "7795" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "7798" + }, + "account_number": "779" + }, + "account_number": "77" + }, + "Transferts de charges": { + "Transferts de charges d\u2019exploitation": { + "account_number": "781" + }, + "Transferts de charges financi\u00e8res": { + "account_number": "787" + }, + "account_number": "78" + }, + "Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Pour risques et charges": { + "account_number": "7911" + }, + "Des immobilisations incorporelles": { + "account_number": "7913" + }, + "Des immobilisations corporelles": { + "account_number": "7914" + }, + "account_number": "791" + }, + "Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "Pour risques et charges": { + "account_number": "7971" + }, + "Des immobilisations financi\u00e8res": { + "account_number": "7972" + }, + "account_number": "797" + }, + "Reprises d\u2019amortissements": { + "account_number": "798" + }, + "Reprises de subventions d\u2019investissement": { + "account_number": "799" + }, + "account_number": "79" + }, + "root_type": "Income", + "account_number": "7" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "Valeurs comptables des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "811" + }, + "Immobilisations corporelles": { + "account_number": "812" + }, + "Immobilisations financi\u00e8res": { + "account_number": "816" + }, + "account_number": "81" + }, + "Charges hors activit\u00e9s ordinaires": { + "Charges HAO constat\u00e9es": { + "account_number": "831" + }, + "Charges li\u00e9es aux op\u00e9rations de restructuration": { + "account_number": "833" + }, + "Pertes sur cr\u00e9ances HAO": { + "account_number": "834" + }, + "Dons et lib\u00e9ralit\u00e9s accord\u00e9s": { + "account_number": "835" + }, + "Abandons de cr\u00e9ances consentis": { + "account_number": "836" + }, + "Charges li\u00e9es aux op\u00e9rations de liquidation": { + "account_number": "837" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "839" + }, + "account_number": "83" + }, + "Dotations hors activit\u00e9s ordinaires": { + "Dotations aux provisions r\u00e9glement\u00e9es": { + "account_number": "851" + }, + "Dotations aux amortissements HAO": { + "account_number": "852" + }, + "Dotations aux d\u00e9pr\u00e9ciations HAO": { + "account_number": "853" + }, + "Dotations aux provisions pour risques et charges HAO": { + "account_number": "854" + }, + "Autres dotations HAO": { + "account_number": "858" + }, + "account_number": "85" + }, + "Participation des travailleurs": { + "Participation l\u00e9gale aux b\u00e9n\u00e9fices": { + "account_number": "871" + }, + "Participation contractuelle aux b\u00e9n\u00e9fices": { + "account_number": "874" + }, + "Autres participations": { + "account_number": "878" + }, + "account_number": "87" + }, + "Imp\u00f4ts sur le r\u00e9sultat": { + "Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": { + "account_number": "8911" + }, + "Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": { + "account_number": "8912" + }, + "Activit\u00e9s exerc\u00e9es hors R\u00e9gion": { + "account_number": "8913" + }, + "account_number": "891" + }, + "Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "account_number": "892" + }, + "Imp\u00f4t minimum forfaitaire IMF": { + "account_number": "895" + }, + "D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "D\u00e9gr\u00e8vements": { + "account_number": "8991" + }, + "Annulations pour pertes r\u00e9troactives": { + "account_number": "8994" + }, + "account_number": "899" + }, + "account_number": "89" + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "Produits des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "821" + }, + "Immobilisations corporelles": { + "account_number": "822" + }, + "Immobilisations financi\u00e8res": { + "account_number": "826" + }, + "account_number": "82" + }, + "Produits hors activit\u00e9s ordinaires": { + "Produits HAO constat\u00e9s": { + "account_number": "841" + }, + "Produits li\u00e9s aux op\u00e9rations de restructuration": { + "account_number": "843" + }, + "Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": { + "account_number": "844" + }, + "Dons et lib\u00e9ralit\u00e9s obtenus": { + "account_number": "845" + }, + "Abandons de cr\u00e9ances obtenus": { + "account_number": "846" + }, + "Produits li\u00e9s aux op\u00e9rations de liquidation": { + "account_number": "847" + }, + "Transferts de charges HAO": { + "account_number": "848" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "849" + }, + "account_number": "84" + }, + "Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "Reprises de provisions r\u00e9glement\u00e9es": { + "account_number": "861" + }, + "Reprises d\u2019amortissements HAO": { + "account_number": "862" + }, + "Reprises de d\u00e9pr\u00e9ciations HAO": { + "account_number": "863" + }, + "Reprises de provisions pour risques et charges HAO": { + "account_number": "864" + }, + "Autres reprises HAO": { + "account_number": "868" + }, + "account_number": "86" + }, + "Subventions d\u2019\u00e9quilibre": { + "\u00c9tat": { + "account_number": "881" + }, + "Collectivit\u00e9s publiques": { + "account_number": "884" + }, + "Groupe": { + "account_number": "886" + }, + "Autres": { + "account_number": "888" + }, + "account_number": "88" + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/gn_plan_comptable.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/gn_plan_comptable.json new file mode 100644 index 00000000000..54742c1fbc6 --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/gn_plan_comptable.json @@ -0,0 +1,1919 @@ +{ + "country_code": "gn", + "name": "Syscohada - Plan Comptable", + "tree": { + "1-Comptes de ressources durables": { + "10-Capital": { + "101-Capital social": { + "1011-Capital souscrit, non appel\u00e9": {}, + "1012-Capital souscrit, appel\u00e9, non vers\u00e9": {}, + "1013-Capital souscrit, appel\u00e9, vers\u00e9, non amorti": {}, + "1014-Capital souscrit, appel\u00e9, vers\u00e9, amorti": {}, + "1018-Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": {} + }, + "102-Capital par dotation": { + "1021-Dotation initiale": {}, + "1022-Dotations compl\u00e9mentaires": {}, + "1028-Autres dotations": {} + }, + "103-Capital personnel": {}, + "104-Compte de l\u2019exploitant": { + "1041-Apports temporaires": {}, + "1042-Op\u00e9rations courantes": {}, + "1043-R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": {}, + "1047-Pr\u00e9l\u00e8vements d\u2019autoconsommation": {}, + "1048-Autres pr\u00e9l\u00e8vements": {} + }, + "105-Primes li\u00e9es au capital social": { + "1051-Primes d\u2019\u00e9mission": {}, + "1052-Primes d\u2019apport": {}, + "1053-Primes de fusion": {}, + "1054-Primes de conversion": {}, + "1058-Autres primes": {} + }, + "106-\u00c9carts de r\u00e9\u00e9valuation": { + "1061-\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": {}, + "1062-\u00c9carts de r\u00e9\u00e9valuation libre": {} + }, + "109-Apporteurs, capital souscrit, non appel\u00e9": {} + }, + "11-R\u00e9serves": { + "111-R\u00e9serve l\u00e9gale": {}, + "112-R\u00e9serves statutaires ou contractuelles": {}, + "113-R\u00e9serves r\u00e9glement\u00e9es": { + "1131-R\u00e9serves de plus-values nettes \u00e0 long terme": {}, + "1132-R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {}, + "1133-R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": {}, + "1134-R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": {}, + "1135-Autres r\u00e9serves r\u00e9glement\u00e9es": {} + }, + "118-Autres r\u00e9serves": { + "1181-R\u00e9serves facultatives": {}, + "1188-R\u00e9serves diverses": {} + } + }, + "12-Report \u00e0 nouveau": { + "121-Report \u00e0 nouveau cr\u00e9diteur": {}, + "129-Report \u00e0 nouveau d\u00e9biteur": { + "1291-Perte nette \u00e0 reporter": {}, + "1292-Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": {} + } + }, + "13-R\u00e9sultat net de l\u2019exercice": { + "130-R\u00e9sultat en instance d\u2019affectation": { + "1301-R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": {}, + "1309-R\u00e9sultat en instance d\u2019affectation : perte": {} + }, + "131-R\u00e9sultat net : b\u00e9n\u00e9fice": {}, + "132-Marge commerciale (MC)": {}, + "133-Valeur ajout\u00e9e (VA)": {}, + "134-Exc\u00e9dent brut d\u2019exploitation (EBE)": {}, + "135-R\u00e9sultat d\u2019exploitation (RE)": {}, + "136-R\u00e9sultat financier (RF)": {}, + "137-R\u00e9sultat des activit\u00e9s ordinaires (RAO)": {}, + "138-R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "1381-R\u00e9sultat de fusion": {}, + "1382-R\u00e9sultat d\u2019apport partiel d\u2019actif": {}, + "1383-R\u00e9sultat de scission": {}, + "1384-R\u00e9sultat de liquidation": {} + }, + "139-R\u00e9sultat net : perte": {} + }, + "14-Subventions d\u2019investissement": { + "141-Subventions d\u2019\u00e9quipement": { + "1411-\u00c9tat": {}, + "1412-R\u00e9gions": {}, + "1413-D\u00e9partements": {}, + "1414-Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": {}, + "1415-Entit\u00e9s publiques ou mixtes": {}, + "1416-Entit\u00e9s et organismes priv\u00e9s": {}, + "1417-Organismes internationaux": {}, + "1418-Autres": {} + }, + "148-Autres subventions d\u2019investissement": {} + }, + "15-Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "151-Amortissements d\u00e9rogatoires": {}, + "152-Plus-values de cession \u00e0 r\u00e9investir": {}, + "153-Fonds r\u00e9glement\u00e9s": { + "1531-Fonds National": {}, + "1532-Pr\u00e9l\u00e8vement pour le Budget": {} + }, + "154-Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": {}, + "155-Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "1551-Reconstitution des gisements miniers et p\u00e9troliers": {} + }, + "156-Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "1561-Hausse de prix": {}, + "1562-Fluctuation des cours": {} + }, + "157-Provisions pour investissement": {}, + "158-Autres provisions et fonds r\u00e9glement\u00e9s": {} + }, + "16-Emprunts et dettes assimil\u00e9es": { + "161-Emprunts obligataires": { + "1611-Emprunts obligataires ordinaires": {}, + "1612-Emprunts obligataires convertibles en actions": {}, + "1613-Emprunts obligataires remboursables en actions": {}, + "1618-Autres emprunts obligataires": {} + }, + "162-Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "163-Avances re\u00e7ues de l\u2019\u00c9tat": {}, + "164-Avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "165-D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "1651-D\u00e9p\u00f4ts": {}, + "1652-Cautionnements": {} + }, + "166-Int\u00e9r\u00eats courus": { + "1661-Sur emprunts obligataires": {}, + "1662-Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "1663-Sur avances re\u00e7ues de l\u2019\u00c9tat": {}, + "1664-Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "1665-Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": {}, + "1667-Sur avances assorties de conditions particuli\u00e8res": {}, + "1668-Sur autres emprunts et dettes": {} + }, + "167-Avances assorties de conditions particuli\u00e8res": { + "1671-Avances bloqu\u00e9es pour augmentation du capital": {}, + "1672-Avances conditionn\u00e9es par l\u2019\u00c9tat": {}, + "1673-Avances conditionn\u00e9es par les autres organismes africains": {}, + "1674-Avances conditionn\u00e9es par les organismes internationaux": {} + }, + "168-Autres emprunts et dettes": { + "1681-Rentes viag\u00e8res capitalis\u00e9es": {}, + "1682-Billets de fonds": {}, + "1683-Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": {}, + "1684-Emprunts participatifs": {}, + "1685-Participation des travailleurs aux b\u00e9n\u00e9fices": {}, + "1686-Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": {} + } + }, + "17-Dettes de location acquisition": { + "172-Dettes de location acquisition / cr\u00e9dit bail immobilier": {}, + "173-Dettes de location acquisition / cr\u00e9dit bail mobilier": {}, + "174-Dettes de location acquisition / location de vente": {}, + "176-Int\u00e9r\u00eats courus": { + "1762-Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": {}, + "1763-Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": {}, + "1764-Sur dettes de location acquisition / location-vente": {}, + "1768-Sur autres dettes de location acquisition": {} + }, + "178-Autres dettes de location acquisition": {} + }, + "18-Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "181-Dettes li\u00e9es \u00e0 des participations": { + "1811-Dettes li\u00e9es \u00e0 des participations (groupe)": {}, + "1812-Dettes li\u00e9es \u00e0 des participations (hors groupe)": {} + }, + "182-Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "183-Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": {}, + "184-Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "185-Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "186-Comptes de liaison charges": {}, + "187-Comptes de liaison produits": {}, + "188-Comptes de liaison des soci\u00e9t\u00e9s en participation": {} + }, + "19-Provisions pour risques et charges": { + "191-Provisions pour litiges": {}, + "192-Provisions pour garanties donn\u00e9es aux clients": {}, + "193-Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": {}, + "194-Provisions pour pertes de change": {}, + "195-Provisions pour imp\u00f4ts": {}, + "196-Provisions pour pensions et obligations similaires": { + "1961-Provisions pour pensions et obligations similaires engagement de retraite": {}, + "1962-Actif du r\u00e9gime de retraite": {} + }, + "197-Provisions pour restructuration": {}, + "198-Autres provisions pour risques et charges": { + "1981-Provisions pour amendes et p\u00e9nalit\u00e9s": {}, + "1983-Provisions pour propre assureur": {}, + "1984-Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "1985-Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": {}, + "1988-Provisions pour divers risques et charges": {} + } + }, + "root_type": "Equity" + }, + "2-Comptes d\u2019actif immobilis\u00e9": { + "21-Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "211-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "212-Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "2121-Brevets": { + "account_type": "Fixed Asset" + }, + "2122-Licences": { + "account_type": "Fixed Asset" + }, + "2123-Concessions de service public": { + "account_type": "Fixed Asset" + }, + "2128-Autres concessions et droits similaires": { + "account_type": "Fixed Asset" + } + }, + "213-Logiciels et sites internet": { + "account_type": "Fixed Asset", + "2131-Logiciels": { + "account_type": "Fixed Asset" + }, + "2132-Sites internet": { + "account_type": "Fixed Asset" + } + }, + "214-Marques": { + "account_type": "Fixed Asset" + }, + "215-Fonds commercial": { + "account_type": "Fixed Asset" + }, + "216-Droit au bail": { + "account_type": "Fixed Asset" + }, + "217-Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset" + }, + "218-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "2181-Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset" + }, + "2182-Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset" + }, + "2183-Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset" + }, + "2184-Co\u00fbts des franchises": { + "account_type": "Fixed Asset" + }, + "2188-Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset" + } + }, + "219-Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "2191-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "2193-Logiciels et internet": { + "account_type": "Fixed Asset" + }, + "2198-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset" + } + } + }, + "22-Terrains": { + "account_type": "Fixed Asset", + "221-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "2211-Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset" + }, + "2212-Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset" + }, + "2218-Autres terrains": { + "account_type": "Fixed Asset" + } + }, + "222-Terrains nus": { + "account_type": "Fixed Asset", + "2221-Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset" + }, + "2228-Autres terrains nus": { + "account_type": "Fixed Asset" + } + }, + "223-Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "2231-Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset" + }, + "2232-Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset" + }, + "2234-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset" + }, + "2235-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset" + }, + "2238-Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset" + } + }, + "224-Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "2241-Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset" + }, + "2245-Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset" + }, + "2248-Autres travaux": { + "account_type": "Fixed Asset" + } + }, + "225-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "2251-Carri\u00e8res": { + "account_type": "Fixed Asset" + } + }, + "226-Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "2261-Parkings": { + "account_type": "Fixed Asset" + } + }, + "227-Terrains mis en concession": { + "account_type": "Fixed Asset" + }, + "228-Autres terrains": { + "account_type": "Fixed Asset", + "2281-Terrains immeubles de placement": { + "account_type": "Fixed Asset" + }, + "2285-Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset" + }, + "2286-Terrains de location acquisition": { + "account_type": "Fixed Asset" + }, + "2288-Divers terrains": { + "account_type": "Fixed Asset" + } + }, + "229-Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "2291-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset" + }, + "2292-Terrains nus": { + "account_type": "Fixed Asset" + }, + "2295-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset" + }, + "2298-Autres terrains": { + "account_type": "Fixed Asset" + } + } + }, + "23-B\u00e2timents, installations techniques et agencements": { + "231-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "2311-B\u00e2timents industriels": {}, + "2312-B\u00e2timents agricoles": {}, + "2313-B\u00e2timents administratifs et commerciaux": {}, + "2314-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2315-B\u00e2timents immeubles de placement": {}, + "2316-B\u00e2timents de location acquisition": {} + }, + "232-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "2321-B\u00e2timents industriels": {}, + "2322-B\u00e2timents agricoles": {}, + "2323-B\u00e2timents administratifs et commerciaux": {}, + "2324-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2325-B\u00e2timents immeubles de placement": {}, + "2326-B\u00e2timents de location acquisition": {} + }, + "233-Ouvrages d\u2019infrastructure": { + "2331-Voies de terre": {}, + "2332-Voies de fer": {}, + "2333-Voies d\u2019eau": {}, + "2334-Barrages, Digues": {}, + "2335-Pistes d\u2019a\u00e9rodrome": {}, + "2338-Autres ouvrages d\u2019infrastructures": {} + }, + "234-Am\u00e9nagements, agencements et installations techniques": { + "2341-Installations complexes sp\u00e9cialis\u00e9es sur sol propre": {}, + "2342-Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": {}, + "2343-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": {}, + "2344-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": {}, + "2345-Am\u00e9nagements et agencements des b\u00e2timents": {} + }, + "235-Am\u00e9nagements de bureaux": { + "2351-Installations g\u00e9n\u00e9rales": {}, + "2358-Autres am\u00e9nagements de bureaux": {} + }, + "237-B\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "238-Autres installations et agencements": {}, + "239-B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "2391-B\u00e2timents en cours": {}, + "2392-Installations en cours": {}, + "2393-Ouvrages d\u2019infrastructure en cours": {}, + "2394-Am\u00e9nagements et agencements et installations techniques en cours": {}, + "2395-Am\u00e9nagements de bureaux en cours": {}, + "2398-Autres installations et agencements en cours": {} + } + }, + "24-Mat\u00e9riel, mobilier et actifs biologiques": { + "241-Mat\u00e9riel et outillage industriel et commercial": { + "2411-Mat\u00e9riel industriel": {}, + "2412-Outillage industriel": {}, + "2413-Mat\u00e9riel commercial": {}, + "2414-Outillage commercial": {}, + "2416-Mat\u00e9riel & outillage industriel et commercial de location-acquisition": {} + }, + "242-Mat\u00e9riel et outillage agricole": { + "2421-Mat\u00e9riel agricole": {}, + "2422-Outillage agricole": {}, + "2426-Mat\u00e9riel & outillage agricole de location-acquisition": {} + }, + "243-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "244-Mat\u00e9riel et mobilier": { + "2441-Mat\u00e9riel de bureau": {}, + "2442-Mat\u00e9riel informatique": {}, + "2443-Mat\u00e9riel bureautique": {}, + "2444-Mobilier de bureau": {}, + "2445-Mat\u00e9riel et mobilier immeubles de placement": {}, + "2446-Mat\u00e9riel et mobilier de location acquisition": {}, + "2447-Mat\u00e9riel et mobilier des logements du personnel": {} + }, + "245-Mat\u00e9riel de transport": { + "2451-Mat\u00e9riel automobile": {}, + "2452-Mat\u00e9riel ferroviaire": {}, + "2453-Mat\u00e9riel fluvial, lagunaire": {}, + "2454-Mat\u00e9riel naval": {}, + "2455-Mat\u00e9riel a\u00e9rien": {}, + "2456-Mat\u00e9riel de transport de location-acquisition": {}, + "2457-Mat\u00e9riel hippomobile": {}, + "2458-Autres mat\u00e9riels de transport": {} + }, + "246-Actifs biologiques": { + "2461-Cheptel, animaux de trait": {}, + "2462-Cheptel, animaux reproducteurs": {}, + "2463-Animaux de garde": {}, + "2465-Plantations agricoles": {}, + "2468-Autres actifs biologiques": {} + }, + "247-Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "2471-Agencements et am\u00e9nagements du mat\u00e9riel": {}, + "2472-Agencements et am\u00e9nagements des actifs biologiques": {}, + "2478-Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": {} + }, + "248-Autres mat\u00e9riels et mobiliers": { + "2481-Collections et \u0153uvres d\u2019art": {}, + "2488-Divers mat\u00e9riels mobiliers": {} + }, + "249-Mat\u00e9riels et actifs biologiques en cours": { + "2491-Mat\u00e9riel et outillage industriel et commercial": {}, + "2492-Mat\u00e9riel et outillage agricole": {}, + "2493-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2494-Mat\u00e9riel et mobilier de bureau": {}, + "2495-Mat\u00e9riel de transport": {}, + "2496-Actifs biologiques": {}, + "2497-Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": {}, + "2498-Autres mat\u00e9riels et actifs biologiques en cours": {} + } + }, + "25-Avances et acomptes vers\u00e9s sur immobilisations": { + "251-Avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "252-Avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "26-Titres de participation": { + "261-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "262-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "263-Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "265-Participations dans des organismes professionnels": {}, + "266-Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {}, + "268-Autres titres de participation": {} + }, + "27-Autres immobilisations financi\u00e8res": { + "271-Pr\u00eats et cr\u00e9ances": { + "2711-Pr\u00eats participatifs": {}, + "2712-Pr\u00eats aux associ\u00e9s": {}, + "2713-Billets de fonds": {}, + "2714-Titres pr\u00eat\u00e9s": {}, + "2718-Autres pr\u00eats et cr\u00e9ances": {} + }, + "272-Pr\u00eats au personnel": { + "2721-Pr\u00eats immobiliers": {}, + "2722-Pr\u00eats mobiliers et d\u2019installation": {}, + "2728-Autres pr\u00eats au personnel": {} + }, + "273-Cr\u00e9ances sur l\u2019\u00c9tat": { + "2731-Retenues de garantie": {}, + "2733-Fonds r\u00e9glement\u00e9": {}, + "2734-Cr\u00e9ances sur le conc\u00e9dant": {}, + "2738-Autres cr\u00e9ances sur l\u2019\u00c9tat": {} + }, + "274-Titres immobilis\u00e9s": { + "2741-Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": {}, + "2742-Titres participatifs": {}, + "2743-Certificats d\u2019investissement": {}, + "2744-Parts de fonds commun de placement (FCP)": {}, + "2745-Obligations": {}, + "2746-Actions ou parts propres": {}, + "2748-Autres titres immobilis\u00e9s": {} + }, + "275-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "2751-D\u00e9p\u00f4ts pour loyers d\u2019avance": {}, + "2752-D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": {}, + "2753-D\u00e9p\u00f4ts pour l\u2019eau": {}, + "2754-D\u00e9p\u00f4ts pour le gaz": {}, + "2755-D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": {}, + "2756-Cautionnements sur march\u00e9s publics": {}, + "2757-Cautionnements sur autres op\u00e9rations": {}, + "2758-Autres d\u00e9p\u00f4ts et cautionnements": {} + }, + "276-Int\u00e9r\u00eats courus": { + "2761-Pr\u00eats et cr\u00e9ances non commerciales": {}, + "2762-Pr\u00eats au personnel": {}, + "2763-Cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2764-Titres immobilis\u00e9s": {}, + "2765-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2767-Cr\u00e9ances rattach\u00e9es \u00e0 des participations": {}, + "2768-Immobilisations financi\u00e8res diverses": {} + }, + "277-Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "2771-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": {}, + "2772-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": {}, + "2773-Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "2774-Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {} + }, + "278-Immobilisations financi\u00e8res diverses": { + "2781-Cr\u00e9ances diverses groupe": {}, + "2782-Cr\u00e9ances diverses hors groupe": {}, + "2784-Banques d\u00e9p\u00f4ts \u00e0 terme": {}, + "2785-Or et m\u00e9taux pr\u00e9cieux": {}, + "2788-Autres immobilisations financi\u00e8res": {} + } + }, + "28-Amortissements": { + "account_type": "Accumulated Depreciation", + "281-Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "2811-Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation" + }, + "2812-Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation" + }, + "2813-Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation" + }, + "2814-Amortissements des marques": { + "account_type": "Accumulated Depreciation" + }, + "2815-Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation" + }, + "2816-Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation" + }, + "2817-Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation" + }, + "2818-Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation" + } + }, + "282-Amortissements des terrains": { + "2824-Amortissements des travaux de mise en valeur des terrains": {} + }, + "283-Amortissements des b\u00e2timents, installations techniques et agencements": { + "2831-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2832-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2833-Amortissements des ouvrages d\u2019infrastructure": {}, + "2834-Amortissements des am\u00e9nagements, agencements et installations techniques": {}, + "2835-Amortissements des am\u00e9nagements de bureaux": {}, + "2837-Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2838-Amortissements des autres installations et agencements": {} + }, + "284-Amortissements du mat\u00e9riel": { + "2841-Amortissements du mat\u00e9riel et outillage industriel et commercial": {}, + "2842-Amortissements du mat\u00e9riel et outillage agricole": {}, + "2843-Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2844-Amortissements du mat\u00e9riel et mobilier": {}, + "2845-Amortissements du mat\u00e9riel de transport": {}, + "2846-Amortissements des actifs biologiques": {}, + "2847-Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2848-Amortissements des autres mat\u00e9riels": {} + } + }, + "29-D\u00e9pr\u00e9ciations des immobilisations": { + "291-D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "2911-D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": {}, + "2912-D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": {}, + "2913-D\u00e9pr\u00e9ciations des logiciels et sites internet": {}, + "2914-D\u00e9pr\u00e9ciations des marques": {}, + "2915-D\u00e9pr\u00e9ciations du fonds commercial": {}, + "2916-D\u00e9pr\u00e9ciations du droit au bail": {}, + "2917-D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": {}, + "2918-D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": {}, + "2919-D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": {} + }, + "292-D\u00e9pr\u00e9ciations des terrains": { + "2921-D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": {}, + "2922-D\u00e9pr\u00e9ciations des terrains nus": {}, + "2923-D\u00e9pr\u00e9ciations des terrains b\u00e2tis": {}, + "2924-D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": {}, + "2925-D\u00e9pr\u00e9ciations des terrains de gisement": {}, + "2926-D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": {}, + "2927-D\u00e9pr\u00e9ciations des terrains mis en concession": {}, + "2928-D\u00e9pr\u00e9ciations des autres terrains": {}, + "2929-D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": {} + }, + "293-D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "2931-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2932-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2933-D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": {}, + "2934-D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": {}, + "2935-D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": {}, + "2937-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2938-D\u00e9pr\u00e9ciations des autres installations et agencements": {}, + "2939-D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": {} + }, + "294-D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "2941-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": {}, + "2942-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": {}, + "2943-D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2944-D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": {}, + "2945-D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": {}, + "2946-D\u00e9pr\u00e9ciations des actifs biologiques": {}, + "2947-D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2948-D\u00e9pr\u00e9ciations des autres mat\u00e9riels": {}, + "2949-D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": {} + }, + "295-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "2951-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "2952-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "296-D\u00e9pr\u00e9ciations des titres de participation": { + "2961-D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "2962-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "2963-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "2965-D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": {}, + "2966-D\u00e9pr\u00e9ciations des parts dans des GIE": {}, + "2968-D\u00e9pr\u00e9ciations des autres titres de participation": {} + }, + "297-D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "2971-D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": {}, + "2972-D\u00e9pr\u00e9ciations des pr\u00eats au personnel": {}, + "2973-D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2974-D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": {}, + "2975-D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2977-D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": {}, + "2978-D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": {} + } + }, + "root_type": "Asset" + }, + "3-Comptes de Stocks": { + "31-Marchandises": { + "311-Marchandises A": { + "3111-Marchandises A1": {}, + "3112-Marchandises A2": {} + }, + "312-Marchandises B": { + "3121-Marchandises B1": {}, + "3122-Marchandises B2": {} + }, + "313-Actifs biologiques": { + "3131-Animaux": {}, + "3132-V\u00e9g\u00e9taux": {} + }, + "318-Marchandises hors activit\u00e9s ordinaires (HAO)": {} + }, + "32-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "321-Mati\u00e8res A": {}, + "322-Mati\u00e8res B": {}, + "323-Fournitures (A, B)": {} + }, + "33-Autres approvisionnements": { + "331-Mati\u00e8res consommables": {}, + "332-Fournitures d\u2019atelier et d\u2019usine": {}, + "333-Fournitures de magasin": {}, + "334-Fournitures de bureau": {}, + "335-Emballages": { + "3351-Emballages perdus": {}, + "3352-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "3353-Emballages \u00e0 usage mixte": {}, + "3358-Autres emballages": {} + }, + "338-Autres mati\u00e8res": {} + }, + "34-Produits en cours": { + "341-Produits en cours": { + "3411-Produits en cours P1": {}, + "3412-Produits en cours P2": {} + }, + "342-Travaux en cours": { + "3421-Travaux en cours T1": {}, + "3422-Travaux en cours T2": {} + }, + "343-Produits interm\u00e9diaires en cours": { + "3431-Produits interm\u00e9diaires A": {}, + "3432-Produits interm\u00e9diaires B": {} + }, + "344-Produits r\u00e9siduels en cours": { + "3441-Produits r\u00e9siduels A": {}, + "3442-Produits r\u00e9siduels B": {} + }, + "345-Actifs biologiques en cours": { + "3451-Animaux": {}, + "3452-V\u00e9g\u00e9taux": {} + } + }, + "35-Services en cours": { + "351-\u00c9tudes en cours": { + "3511-\u00c9tudes en cours E1": {}, + "3512-\u00c9tudes en cours E2": {} + }, + "352-Prestations de services en cours": { + "3521-Prestations de services S1": {}, + "3522-Prestations de services S2": {} + } + }, + "36-Produits finis": { + "361-Produits finis A": {}, + "362-Produits finis B": {}, + "363-Actifs biologiques": { + "3631-Animaux": {}, + "3632-V\u00e9g\u00e9taux": {}, + "3638-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "37-Produits interm\u00e9diaires et r\u00e9siduels": { + "371-Produits interm\u00e9diaires": { + "3711-Produits interm\u00e9diaires A": {}, + "3712-Produits interm\u00e9diaires B": {} + }, + "372-Produits r\u00e9siduels": { + "3721-D\u00e9chets": {}, + "3722-Rebuts": {}, + "3723-Mati\u00e8res de R\u00e9cup\u00e9ration": {} + }, + "373-Actifs biologiques": { + "3731-Animaux": {}, + "3732-V\u00e9g\u00e9taux": {}, + "3738-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "38-Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "381-Marchandises en cours de route": {}, + "382-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": {}, + "383-Autres approvisionnements en cours de route": {}, + "386-Produits finis en cours de route": {}, + "387-Stock en consignation ou en d\u00e9p\u00f4t": { + "3871-Stock en consignation": {}, + "3872-Stock en d\u00e9p\u00f4t": {} + }, + "388-Stock provenant d\u2019immobilisations mises hors service ou au rebut": {} + }, + "39-D\u00e9pr\u00e9ciations des stocks et encours de production": { + "391-D\u00e9pr\u00e9ciations des stocks de marchandises": {}, + "392-D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "393-D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": {}, + "394-D\u00e9pr\u00e9ciations des productions en cours": {}, + "395-D\u00e9pr\u00e9ciations des services en cours": {}, + "396-D\u00e9pr\u00e9ciations des stocks de produits finis": {}, + "397-D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": {}, + "398-D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": {} + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "409-Fournisseurs d\u00e9biteurs": { + "4091-Fournisseurs Avances et acomptes vers\u00e9s": {}, + "4092-Fournisseurs Groupe avances et acomptes vers\u00e9s": {}, + "4093-Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": {}, + "4094-Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": {}, + "4098-Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": {} + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "411-Clients": { + "4111-Clients": { + "account_type": "Receivable" + }, + "4112-Clients groupe": { + "account_type": "Receivable" + }, + "4114-Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable" + }, + "4115-Clients, organismes internationaux": { + "account_type": "Receivable" + }, + "4116-Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable" + }, + "4117-Client, retenues de garantie": { + "account_type": "Receivable" + }, + "4118-Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "412-Clients, effets \u00e0 recevoir en portefeuille": { + "4121-Clients, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4122-Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4124-\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4125-Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "413-Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "4131-Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable" + }, + "4132-Clients, effets impay\u00e9s": { + "account_type": "Receivable" + }, + "4133-Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable" + }, + "4138-Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "414-Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "4141-Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4142-Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable" + }, + "4146-Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4147-Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "415-Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable" + }, + "416-Cr\u00e9ances clients litigieuses ou douteuses": { + "4161-Cr\u00e9ances litigieuses": { + "account_type": "Receivable" + }, + "4162-Cr\u00e9ances douteuses": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "418-Clients, produits \u00e0 recevoir": { + "4181-Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable" + }, + "4186-Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "421-Personnel, avances et acomptes": { + "4211-Personnel, avances": {}, + "4212-Personnel, acomptes": {}, + "4213-Frais avanc\u00e9s et fournitures au personnel": {} + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "4311-Prestations familiales": {}, + "4312-Accidents de travail": {}, + "4313-Caisse de retraite obligatoire": {}, + "4314-Caisse de retraite facultative": {}, + "4318-Autres cotisations sociales": {} + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "4331-Mutuelle": {}, + "4332-Assurances retraite": {}, + "4333-Assurances et organismes de sant\u00e9": {} + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4387-Produits \u00e0 recevoir": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "443-\u00c9tat, TVA factur\u00e9e": { + "4431-TVA factur\u00e9e sur ventes": {}, + "4432-TVA factur\u00e9e sur prestations de services": {}, + "4433-TVA factur\u00e9e sur travaux": {}, + "4434-TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": {}, + "4435-TVA sur factures \u00e0 \u00e9tablir": {} + }, + "445-\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "4451-TVA r\u00e9cup\u00e9rable sur immobilisations": {}, + "4452-TVA r\u00e9cup\u00e9rable sur achats": {}, + "4453-TVA r\u00e9cup\u00e9rable sur transport": {}, + "4454-TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": {}, + "4455-TVA r\u00e9cup\u00e9rable sur factures non parvenues": {}, + "4456-TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": {} + }, + "448-\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "4486-Charges \u00e0 payer": {}, + "4487-Produits \u00e0 recevoir": {} + }, + "449-\u00c9tat, cr\u00e9ances et dettes diverses": { + "4491-\u00c9tat, obligations cautionn\u00e9es": {}, + "4492-\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": {}, + "4493-\u00c9tat, fonds de dotation \u00e0 recevoir": {}, + "4494-\u00c9tat, subventions investissement \u00e0 recevoir": {}, + "4495-\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": {}, + "4496-\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": {}, + "4497-\u00c9tat, avances sur subventions": {}, + "4499-\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": {} + } + }, + "45-Organismes internationaux (ACTIF)": { + "451-Op\u00e9rations avec les organismes africains": {}, + "452-Op\u00e9rations avec les autres organismes internationaux": {}, + "458-Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "4581-Organismes internationaux, fonds de dotation \u00e0 recevoir": {}, + "4582-Organismes internationaux, subventions \u00e0 recevoir": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "4613-Apporteurs, capital appel\u00e9, non vers\u00e9": {}, + "4614-Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": {}, + "4618-Apporteurs, titres \u00e0 \u00e9changer": {} + }, + "467-Apporteurs, restant d\u00fb sur capital appel\u00e9": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "4721-Cr\u00e9ances sur cessions de titres de placement": {}, + "4726-Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": {} + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "4731-Mandants": {}, + "4732-Mandataires": {}, + "4733-Commettants": {}, + "4734-Commissionnaires": {}, + "4739-\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "4747-Compte de r\u00e9partition p\u00e9riodique des produits": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "4751-Compte actif": { + "account_type": "Temporary" + } + }, + "476-Charges constat\u00e9es d\u2019avance": {}, + "478-\u00c9carts de conversion actif": { + "4781-Diminution des cr\u00e9ances d\u2019exploitation": {}, + "4782-Diminution des cr\u00e9ances financi\u00e8res": {}, + "4783-Augmentation des dettes d\u2019exploitation": {}, + "4784-Augmentation des dettes financi\u00e8res": {}, + "4786-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4788-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "485-Cr\u00e9ances sur cessions d\u2019immobilisations": { + "4851-En compte, immobilisations incorporelles": {}, + "4852-En compte, immobilisations corporelles": {}, + "4853-Effets \u00e0 recevoir, immobilisations incorporelles": {}, + "4854-Effets \u00e0 recevoir, immobilisations corporelles": {}, + "4855-Effets escompt\u00e9s non \u00e9chus": {}, + "4857-Retenues de garantie": {}, + "4858-Factures \u00e0 \u00e9tablir": {} + }, + "488-Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": {} + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "491-D\u00e9pr\u00e9ciations des comptes clients": { + "4911-Cr\u00e9ances litigieuses": {}, + "4912-Cr\u00e9ances douteuses": {} + }, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {}, + "496-D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "4962-Associ\u00e9s, comptes courants": {}, + "4963-Associ\u00e9s, op\u00e9rations faites en commun": {}, + "4966-Groupe, comptes courants": {} + }, + "497-D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": {}, + "498-D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "4985-Cr\u00e9ances sur cessions d\u2019immobilisations": {}, + "4986-Cr\u00e9ances sur cessions de titres de placement": {}, + "4988-Autres cr\u00e9ances HAO": {} + }, + "499-Provisions pour risques \u00e0 court terme": { + "4991-Sur op\u00e9rations d\u2019exploitation": {}, + "4997-Sur op\u00e9rations financi\u00e8res": {}, + "4998-Sur op\u00e9rations HAO": {} + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "401-Fournisseurs, dettes en compte": { + "4011-Fournisseurs": { + "account_type": "Payable" + }, + "4012-Fournisseurs groupe": { + "account_type": "Payable" + }, + "4013-Fournisseurs sous-traitants": { + "account_type": "Payable" + }, + "4016-Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable" + }, + "4017-Fournisseur, retenues de garantie": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "402-Fournisseurs, effets \u00e0 payer": { + "4021-Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable" + }, + "4022-Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable" + }, + "4023-Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "404-Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "4041-Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4042-Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable" + }, + "4046-Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4047-Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "408-Fournisseurs, factures non parvenues": { + "4081-Fournisseurs": { + "account_type": "Stock Received But Not Billed" + }, + "4082-Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed" + }, + "4083-Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed" + }, + "4086-Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "419-Clients cr\u00e9diteurs": { + "4191-Clients, avances et acomptes re\u00e7us": {}, + "4192-Clients groupe, avances et acomptes re\u00e7us": {}, + "4194-Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": {}, + "4198-Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": {} + } + }, + "42-Personnel (PASSIF)": { + "422-Personnel, r\u00e9mun\u00e9rations dues": {}, + "423-Personnel, oppositions, saisies-arr\u00eats": { + "4231-Personnel, oppositions": {}, + "4232-Personnel, saisies-arr\u00eats": {}, + "4233-Personnel, avis \u00e0 tiers d\u00e9tenteur": {} + }, + "424-Personnel, \u0153uvres sociales internes": { + "4241-Assistance m\u00e9dicale": {}, + "4242-Allocations familiales": {}, + "4245-Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": {}, + "4248-Autres \u0153uvres sociales internes": {} + }, + "425-Repr\u00e9sentants du personnel": { + "4251-D\u00e9l\u00e9gu\u00e9s du personnel": {}, + "4252-Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": {}, + "4258-Autres repr\u00e9sentants du personnel": {} + }, + "426-Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "4261-Participation aux b\u00e9n\u00e9fices": {}, + "4264-Participation au capital": {} + }, + "427-Personnel d\u00e9p\u00f4ts": {}, + "428-Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "4281-Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": {}, + "4286-Autres charges \u00e0 payer": {}, + "4287-Produits \u00e0 recevoir": {} + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4381-Charges sociales sur gratifications \u00e0 payer": {}, + "4382-Charges sociales sur cong\u00e9s \u00e0 payer": {}, + "4386-Autres charges \u00e0 payer": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "441-\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": {}, + "442-\u00c9tat, autres imp\u00f4ts et taxes": { + "4421-Imp\u00f4ts et taxes d\u2019\u00c9tat": {}, + "4422-Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": {}, + "4423-Imp\u00f4ts et taxes recouvrables sur des obligataires": {}, + "4424-Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": {}, + "4426-Droits de douane": {}, + "4428-Autres imp\u00f4ts et taxes": {} + }, + "444-\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "4441-\u00c9tat, TVA due": {}, + "4449-\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": {} + }, + "446-\u00c9tat, autres taxes sur le chiffre d\u2019affaires": {}, + "447-\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "4471-Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": {}, + "4472-Imp\u00f4ts sur salaires": {}, + "4473-Contribution nationale": {}, + "4474-Contribution nationale de solidarit\u00e9": {}, + "4478-Autres imp\u00f4ts et contributions": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "4611-Apporteurs, apports en nature": {}, + "4612-Apporteurs, apports en num\u00e9raire": {}, + "4615-Apporteurs, versements re\u00e7us sur augmentation de capital": {}, + "4616-Apporteurs, versements anticip\u00e9s": {}, + "4617-Apporteurs d\u00e9faillants": {}, + "4619-Apporteurs, capital \u00e0 rembourser": {} + }, + "462-Associ\u00e9s, comptes courants": { + "4621-Principal": {}, + "4626-Int\u00e9r\u00eats courus": {} + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "4631-Op\u00e9rations courantes": {}, + "4636-Int\u00e9r\u00eats courus": {} + }, + "465-Associ\u00e9s, dividendes \u00e0 payer": {}, + "466-Groupe, comptes courants": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "4711-D\u00e9biteurs divers": {}, + "4712-Cr\u00e9diteurs divers": {}, + "4713-Obligataires": {}, + "4715-R\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "4716-Compte d\u2019affacturage": {}, + "4717-D\u00e9biteurs divers retenues de garantie": {}, + "4718-Apport, compte de fusion et op\u00e9rations assimil\u00e9es": {}, + "4719-Bons de souscription d\u2019actions et d\u2019obligations": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "4746-Compte de r\u00e9partition p\u00e9riodique des charges": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "4752-Compte passif": {} + }, + "477-Produits constat\u00e9s d\u2019avance": {}, + "479-\u00c9carts de conversion passif": { + "4791-Augmentation des cr\u00e9ances d\u2019exploitation": {}, + "4792-Augmentation des cr\u00e9ances financi\u00e8res": {}, + "4793-Diminution des dettes d\u2019exploitation": {}, + "4794-Diminution des dettes financi\u00e8res": {}, + "4797-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4798-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "481-Fournisseurs d\u2019investissements": { + "4811-Immobilisations incorporelles": {}, + "4812-Immobilisations corporelles": {}, + "4813-Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": {}, + "4816-R\u00e9serve de propri\u00e9t\u00e9": {}, + "4817-Retenues de garantie": {}, + "4818-Factures non parvenues": {} + }, + "482-Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "4821-Immobilisations incorporelles": {}, + "4822-Immobilisations corporelles": {} + }, + "484-Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "4887-Produits": {} + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (PASSIF)": { + "490-D\u00e9pr\u00e9ciations des comptes fournisseurs": {}, + "492-D\u00e9pr\u00e9ciations des comptes personnel": {}, + "493-D\u00e9pr\u00e9ciations des comptes organismes sociaux": {}, + "494-D\u00e9pr\u00e9ciations des comptes \u00c9tat et collectivit\u00e9s publiques": {}, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {} + }, + "root_type": "Liability" + }, + "5-Comptes de tr\u00e9sorerie": { + "50-Titres de placement": { + "501-Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "5011-Titres du Tr\u00e9sor \u00e0 court terme": {}, + "5012-Titres d\u2019organismes financiers": {}, + "5013-Bons de caisse \u00e0 court terme": {}, + "5016-Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": {} + }, + "502-Actions": { + "5021-Actions ou parts propres": {}, + "5022-Actions cot\u00e9es": {}, + "5023-Actions non cot\u00e9es": {}, + "5024-Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": {}, + "5025-Autres actions": {}, + "5026-Frais d\u2019acquisition des actions": {} + }, + "503-Obligations": { + "5031-Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": {}, + "5032-Obligations cot\u00e9es": {}, + "5033-Obligations non cot\u00e9es": {}, + "5035-Autres obligations": {}, + "5036-Frais d\u2019acquisition des obligations": {} + }, + "504-Bons de souscription": { + "5042-Bons de souscription d\u2019actions": {}, + "5043-Bons de souscription d\u2019obligations": {} + }, + "505-Titres n\u00e9gociables hors r\u00e9gion": {}, + "506-Int\u00e9r\u00eats courus": { + "5061-Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": {}, + "5062-Actions": {}, + "5063-Obligations": {} + }, + "508-Autres titres de placement et cr\u00e9ances assimil\u00e9es": {} + }, + "51-Valeurs \u00e0 encaisser": { + "511-Effets \u00e0 encaisser": {}, + "512-Effets \u00e0 l\u2019encaissement": {}, + "513-Ch\u00e8ques \u00e0 encaisser": {}, + "514-Ch\u00e8ques \u00e0 l\u2019encaissement": {}, + "515-Cartes de cr\u00e9dit \u00e0 encaisser": {}, + "518-Autres valeurs \u00e0 l\u2019encaissement": { + "5181-Warrants": {}, + "5182-Billets de fonds": {}, + "5185-Ch\u00e8ques de voyage": {}, + "5186-Coupons \u00e9chus": {}, + "5187-Int\u00e9r\u00eats \u00e9chus des obligations": {} + } + }, + "52-Banques": { + "521-Banques locales": { + "5211-Banques en monnaie nationale": { + "account_type": "Bank" + }, + "5215-Banques en devises": { + "account_type": "Bank" + }, + "account_type": "Bank" + }, + "522-Banques autres \u00c9tats r\u00e9gion": {}, + "523-Banques autres \u00c9tats zone mon\u00e9taire": {}, + "524-Banques hors zone mon\u00e9taire": {}, + "525-Banques d\u00e9p\u00f4t \u00e0 terme": {}, + "526-Banques, int\u00e9r\u00eats courus": { + "5261-Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": {}, + "5267-Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": {} + } + }, + "53-\u00c9tablissements financiers et assimil\u00e9s": { + "531-Ch\u00e8ques postaux": {}, + "532-Tr\u00e9sor": {}, + "533-Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": {}, + "536-\u00c9tablissements financiers, int\u00e9r\u00eats courus": {}, + "538-Autres organismes financiers": {} + }, + "54-Instruments de tr\u00e9sorerie": { + "541-Options de taux d\u2019int\u00e9r\u00eat": {}, + "542-Options de taux de change": {}, + "543-Options de taux boursiers": {}, + "544-Instruments de march\u00e9s \u00e0 terme": {}, + "545-Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": {} + }, + "55-Instruments de monnaie \u00e9lectronique": { + "551-Monnaie \u00e9lectronique carte carburant": {}, + "552-Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": {}, + "553-Monnaie \u00e9lectronique carte p\u00e9age": {}, + "554-Porte-monnaie \u00e9lectronique": {}, + "558-Autres instruments de monnaies \u00e9lectroniques": {} + }, + "56-Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "561-Cr\u00e9dits de tr\u00e9sorerie": {}, + "564-Escompte de cr\u00e9dits de campagne": {}, + "565-Escompte de cr\u00e9dits ordinaires": {}, + "566-Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": {} + }, + "57-Caisse": { + "571-Caisse si\u00e8ge social": { + "5711-Caisse en monnaie nationale": {}, + "5712-Caisse en devises": {} + }, + "572-Caisse succursale A": { + "5721-En monnaie nationale": {}, + "5722-En devises": {} + }, + "573-Caisse succursale B": { + "5731-En monnaie nationale": {}, + "5732-En devises": {} + } + }, + "58-R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "581-R\u00e9gies d\u2019avance": {}, + "582-Accr\u00e9ditifs": {}, + "585-Virements de fonds": {}, + "588-Autres virements internes": {} + }, + "59-D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "590-D\u00e9pr\u00e9ciations des titres de placement": {}, + "591-D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": {}, + "592-D\u00e9pr\u00e9ciations des comptes banques": {}, + "593-D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": {}, + "594-D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": {}, + "599-Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": {} + }, + "root_type": "Asset" + }, + "6-Comptes de charges des activit\u00e9s ordinaires": { + "60-Achats et variations de stocks": { + "601-Achats de marchandises": { + "6011-Dans la R\u00e9gion": {}, + "6012-Hors R\u00e9gion": {}, + "6013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6015-Frais sur achats": {}, + "6019-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "602-Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "6021-Dans la R\u00e9gion": {}, + "6022-Hors R\u00e9gion": {}, + "6023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6025-Frais sur achats": {}, + "6029-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "603-Variations des stocks de biens achet\u00e9s": { + "6031-Variations des stocks de marchandises": {}, + "6032-Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "6033-Variations des stocks d\u2019autres approvisionnements": {} + }, + "604-Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "6041-Mati\u00e8res consommables": {}, + "6042-Mati\u00e8res combustibles": {}, + "6043-Produits d\u2019entretien": {}, + "6044-Fournitures d\u2019atelier et d\u2019usine": {}, + "6045-Frais sur achat": {}, + "6046-Fournitures de magasin": {}, + "6047-Fournitures de bureau": {}, + "6049-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "605-Autres achats": { + "6051-Fournitures non stockables Eau": {}, + "6052-Fournitures non stockables \u00c9lectricit\u00e9": {}, + "6053-Fournitures non stockables Autres \u00e9nergies": {}, + "6054-Fournitures d\u2019entretien non stockables": {}, + "6055-Fournitures de bureau non stockables": {}, + "6056-Achats de petit mat\u00e9riel et outillage": {}, + "6057-Achats d\u2019\u00e9tudes et prestations de services": {}, + "6058-Achats de travaux, mat\u00e9riels et \u00e9quipements": {}, + "6059-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "608-Achats d\u2019emballages": { + "6081-Emballages perdus": {}, + "6082-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "6083-Emballages \u00e0 usage mixte": {}, + "6085-Frais sur achats": {}, + "6089-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + } + }, + "61-Transports": { + "612-Transports sur ventes": {}, + "613-Transports pour le compte de tiers": {}, + "614-Transports du personnel": {}, + "616-Transports de plis": {}, + "618-Autres frais de transport": { + "6181-Voyages et d\u00e9placements": {}, + "6182-Transports entre \u00e9tablissements ou chantiers": {}, + "6183-Transports administratifs": {} + } + }, + "62-Services ext\u00e9rieurs": { + "621-Sous-traitance g\u00e9n\u00e9rale": {}, + "622-Locations, charges locatives": { + "6221-Locations de terrains": {}, + "6222-Locations de b\u00e2timents": {}, + "6223-Locations de mat\u00e9riels et outillages": {}, + "6224-Malis sur emballages": {}, + "6225-Locations d\u2019emballages": {}, + "6226-Fermages et loyers du foncier": {}, + "6228-Locations et charges locatives diverses": {} + }, + "623-Redevances de location acquisition": { + "6232-Cr\u00e9dit-bail immobilier": {}, + "6233-Cr\u00e9dit-bail mobilier": {}, + "6234-Location-vente": {}, + "6238-Autres contrats de location acquisition": {} + }, + "624-Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "6241-Entretien et r\u00e9parations des biens immobiliers": {}, + "6242-Entretien et r\u00e9parations des biens mobiliers": {}, + "6243-Maintenance": {}, + "6244-Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "6248-Autres entretiens et r\u00e9parations": {} + }, + "625-Primes d\u2019assurance": { + "6251-Assurances multirisques": {}, + "6252-Assurances mat\u00e9riel de transport": {}, + "6253-Assurances risques d\u2019exploitation": {}, + "6254-Assurances responsabilit\u00e9 du producteur": {}, + "6255-Assurances insolvabilit\u00e9 clients": {}, + "6257-Assurances transport sur ventes": {}, + "6258-Autres primes d\u2019assurances": {} + }, + "626-\u00c9tudes, recherches et documentation": { + "6261-\u00c9tudes et recherches": {}, + "6265-Documentation g\u00e9n\u00e9rale": {}, + "6266-Documentation technique": {} + }, + "627-Publicit\u00e9, publications, relations publiques": { + "6271-Annonces, insertions": {}, + "6272-Catalogues, imprim\u00e9s publicitaires": {}, + "6273-\u00c9chantillons": {}, + "6274-Foires et expositions": {}, + "6275-Publications": {}, + "6276-Cadeaux \u00e0 la client\u00e8le": {}, + "6277-Frais de colloques, s\u00e9minaires, conf\u00e9rences": {}, + "6278-Autres charges de publicit\u00e9 et relations publiques": {} + }, + "628-Frais de t\u00e9l\u00e9communications": { + "6281-Frais de t\u00e9l\u00e9phone": {}, + "6282-Frais de t\u00e9lex": {}, + "6283-Frais de t\u00e9l\u00e9copie": {}, + "6288-Autres frais de t\u00e9l\u00e9communications": {} + } + }, + "63-Autres services ext\u00e9rieurs": { + "631-Frais bancaires": { + "6311-Frais sur titres (vente, garde)": {}, + "6312-Frais sur effets": {}, + "6313-Location de coffres": {}, + "6314-Commissions d\u2019affacturage": {}, + "6315-Commissions sur cartes de cr\u00e9dit": {}, + "6316-Frais d\u2019\u00e9mission d\u2019emprunts": {}, + "6317-Frais sur instruments monnaie \u00e9lectronique": {}, + "6318-Autres frais bancaires": {} + }, + "632-R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "6322-Commissions et courtages sur ventes": {}, + "6324-Honoraires des professions r\u00e9glement\u00e9es": {}, + "6325-Frais d\u2019actes et de contentieux": {}, + "6326-R\u00e9mun\u00e9rations d\u2019affacturage": {}, + "6327-R\u00e9mun\u00e9rations des autres prestataires de services": {}, + "6328-Divers frais": {} + }, + "633-Frais de formation du personnel": {}, + "634-Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "6342-Redevances pour brevets, licences": {}, + "6343-Redevances pour logiciels": {}, + "6344-Redevances pour marques": {}, + "6345-Redevances pour sites internet": {}, + "6346-Redevances pour concessions, droits et valeurs similaires": {} + }, + "635-Cotisations": { + "6351-Cotisations": {}, + "6358-Concours divers": {} + }, + "637-R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "6371-Personnel int\u00e9rimaire": {}, + "6372-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "638-Autres charges externes": { + "6381-Frais de recrutement du personnel": {}, + "6382-Frais de d\u00e9m\u00e9nagement": {}, + "6383-R\u00e9ceptions": {}, + "6384-Missions": {}, + "6385-Charges de copropri\u00e9t\u00e9": {} + } + }, + "64-Imp\u00f4ts et taxes": { + "641-Imp\u00f4ts et taxes directs": { + "6411-Imp\u00f4ts fonciers et taxes annexes": {}, + "6412-Patentes, licences et taxes annexes": {}, + "6413-Taxes sur appointements et salaires": {}, + "6414-Taxes d\u2019apprentissage": {}, + "6415-Formation professionnelle continue": {}, + "6418-Autres imp\u00f4ts et taxes directs": {} + }, + "645-Imp\u00f4ts et taxes indirects": {}, + "646-Droits d\u2019enregistrement": { + "6461-Droits de mutation": {}, + "6462-Droits de timbre": {}, + "6463-Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": {}, + "6464-Vignettes": {}, + "6468-Autres droits": {} + }, + "647-P\u00e9nalit\u00e9s, amendes fiscales": { + "6471-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": {}, + "6472-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": {}, + "6473-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": {}, + "6474-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": {}, + "6478-Autres p\u00e9nalit\u00e9s et amendes fiscales": {} + }, + "648-Autres imp\u00f4ts et taxes": {} + }, + "65-Autres charges": { + "651-Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "6511-Clients": {}, + "6515-Autres d\u00e9biteurs": {} + }, + "652-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "6521-Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": {}, + "6525-Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "654-Valeurs comptables des cessions courantes d\u2019immobilisations": { + "6541-Immobilisations incorporelles": {}, + "6542-Immobilisations corporelles": {} + }, + "656-Perte de change sur cr\u00e9ances et dettes commerciale": {}, + "657-P\u00e9nalit\u00e9s et amendes p\u00e9nales": {}, + "658-Charges diverses": { + "6581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "6582-Dons": {}, + "6583-M\u00e9c\u00e9nat": {}, + "6588-Autres charges diverses": {} + }, + "659-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "6591-Sur risques \u00e0 court terme": {}, + "6593-Sur stocks": {}, + "6594-Sur cr\u00e9ances": {}, + "6598-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": {} + } + }, + "66-Charges de personnel": { + "661-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "6611-Appointements salaires et commissions": {}, + "6612-Primes et gratifications": {}, + "6613-Cong\u00e9s pay\u00e9s": {}, + "6614-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6615-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6616-Suppl\u00e9ment familial": {}, + "6617-Avantages en nature": {}, + "6618-Autres r\u00e9mun\u00e9rations directes": {} + }, + "662-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "6621-Appointements salaires et commissions": {}, + "6622-Primes et gratifications": {}, + "6623-Cong\u00e9s pay\u00e9s": {}, + "6624-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6625-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6626-Suppl\u00e9ment familial": {}, + "6627-Avantages en nature": {}, + "6628-Autres r\u00e9mun\u00e9rations directes": {} + }, + "663-Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "6631-Indemnit\u00e9s de logement": {}, + "6632-Indemnit\u00e9s de repr\u00e9sentation": {}, + "6633-Indemnit\u00e9s d\u2019expatriation": {}, + "6634-Indemnit\u00e9s de transport": {}, + "6638-Autres indemnit\u00e9s et avantages divers": {} + }, + "664-Charges sociales": { + "6641-Charges sociales sur r\u00e9mun\u00e9ration du personnel national": {}, + "6642-Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": {} + }, + "666-R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "6661-R\u00e9mun\u00e9ration du travail de l\u2019exploitant": {}, + "6662-Charges sociales": {} + }, + "667-R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "6671-Personnel int\u00e9rimaire": {}, + "6672-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "668-Autres charges sociales": { + "6681-Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": {}, + "6682-Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": {}, + "6683-Versements et contributions aux autres \u0153uvres sociales": {}, + "6684-M\u00e9decine du travail et pharmacie": {}, + "6685-Assurances et organismes de sant\u00e9": {}, + "6686-Assurances retraite et fonds de pension": {}, + "6687-Majorations et p\u00e9nalit\u00e9s sociales": {}, + "6688-Charges sociales diverses": {} + } + }, + "67-Frais financiers et charges assimil\u00e9es": { + "671-Int\u00e9r\u00eats des emprunts": { + "6711-Emprunts obligataires": {}, + "6712-Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "6713-Dettes li\u00e9es \u00e0 des participations": {}, + "6714-Primes de remboursement des obligations": {} + }, + "672-Int\u00e9r\u00eats dans loyers de location acquisition": { + "6722-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": {}, + "6723-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": {}, + "6724-Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": {}, + "6728-Int\u00e9r\u00eats dans loyers des autres locations acquisition": {} + }, + "673-Escomptes accord\u00e9s": {}, + "674-Autres int\u00e9r\u00eats": { + "6741-Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": {}, + "6742-Comptes courants bloqu\u00e9s": {}, + "6743-Int\u00e9r\u00eats sur obligations cautionn\u00e9es": {}, + "6744-Int\u00e9r\u00eats sur dettes commerciales": {}, + "6745-Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": {}, + "6748-Int\u00e9r\u00eats sur dettes diverses": {} + }, + "675-Escomptes des effets de commerce": {}, + "676-Pertes de change financi\u00e8res": {}, + "677-Pertes sur titres de placement": { + "6771-Pertes sur cessions de titres de placement": {}, + "6772-Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {} + }, + "678-Pertes et charges sur risques financiers": { + "6781-Sur rentes viag\u00e8res": {}, + "6782-Sur op\u00e9rations financi\u00e8res": {}, + "6784-Sur instruments de tr\u00e9sorerie": {} + }, + "679-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "6791-Sur risques financiers": {}, + "6795-Sur titres de placement": {}, + "6798-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "68-Dotations aux amortissements": { + "681-Dotations aux amortissements d\u2019exploitation": { + "6812-Dotations aux amortissements des immobilisations incorporelles": {}, + "6813-Dotations aux amortissements des immobilisations corporelles": {} + } + }, + "69-Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "691-Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "6911-Dotations aux provisions pour risques et charges": {}, + "6913-Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": {}, + "6914-Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": {} + }, + "697-Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "6971-Dotations aux provisions pour risques et charges": {}, + "6972-Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": {} + } + }, + "root_type": "Expense" + }, + "7-Comptes de produits des activit\u00e9s ordinaires": { + "70-Ventes": { + "701-Ventes de marchandises": { + "7011-Dans la R\u00e9gion": {}, + "7012-Hors R\u00e9gion": {}, + "7013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7015-Sur internet": {}, + "7019-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "702-Ventes de produits finis": { + "7021-Dans la R\u00e9gion": {}, + "7022-Hors R\u00e9gion": {}, + "7023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7025-Sur internet": {}, + "7029-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "703-Ventes de produits interm\u00e9diaires": { + "7031-Dans la R\u00e9gion": {}, + "7032-Hors R\u00e9gion": {}, + "7033-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7034-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7035-Sur internet": {}, + "7039-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "704-Ventes de produits r\u00e9siduels": { + "7041-Dans la R\u00e9gion": {}, + "7042-Hors R\u00e9gion": {}, + "7043-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7044-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7045-Sur internet": {}, + "7049-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "705-Travaux factur\u00e9s": { + "7051-Dans la R\u00e9gion": {}, + "7052-Hors R\u00e9gion": {}, + "7053-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7054-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7055-Sur internet": {}, + "7059-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "706-Services vendus": { + "7061-Dans la R\u00e9gion": {}, + "7062-Hors R\u00e9gion": {}, + "7063-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7064-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7065-Sur internet": {}, + "7069-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "707-Produits accessoires": { + "7071-Ports, emballages perdus et autres frais factur\u00e9s": {}, + "7072-Commissions et courtages": {}, + "7073-Locations": {}, + "7074-Bonis sur reprises et cessions d\u2019emballages": {}, + "7075-Mise \u00e0 disposition de personnel": {}, + "7076-Redevances pour brevets, logiciels, marques et droits similaires": {}, + "7077-Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": {}, + "7078-Autres produits accessoires": {} + } + }, + "71-Subventions d\u2019exploitation": { + "711-Sur produits \u00e0 l\u2019exportation": {}, + "712-Sur produits \u00e0 l\u2019importation": {}, + "713-Sur produits de p\u00e9r\u00e9quation": {}, + "714-Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": {}, + "718-Autres subventions d\u2019exploitation": { + "7181-Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": {}, + "7182-Vers\u00e9es par les organismes internationaux": {}, + "7183-Vers\u00e9es par des tiers": {} + } + }, + "72-Production immobilis\u00e9e": { + "721-Immobilisations incorporelles": {}, + "722-Immobilisations corporelles": { + "7221-Immobilisations corporelles (hors actifs biologiques)": {}, + "7222-Immobilisations corporelles (actifs biologiques)": {} + }, + "724-Production auto-consomm\u00e9e": {}, + "726-Immobilisations financi\u00e8res": {} + }, + "73-Variations des stocks de biens et de services produits": { + "734-Variations des stocks de produits en cours": { + "7341-Produits en cours": {}, + "7342-Travaux en cours": {} + }, + "735-Variations des en-cours de services": { + "7351-\u00c9tudes en cours": {}, + "7352-Prestations de services en cours": {} + }, + "736-Variations des stocks de produits finis": {}, + "737-Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "7371-Produits interm\u00e9diaires": {}, + "7372-Produits r\u00e9siduels": {} + } + }, + "75-Autres produits": { + "751-Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": {}, + "752-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "7521-Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": {}, + "7525-B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "754-Produits des cessions courantes d\u2019immobilisations": { + "7541-Immobilisations incorporelles": {}, + "7542-Immobilisations corporelles": {} + }, + "756-Gains de change sur cr\u00e9ances et dettes commerciales": {}, + "758-Produits divers": { + "7581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "7582-Indemnit\u00e9s d\u2019assurances re\u00e7ues": {}, + "7588-Autres produits divers": {} + }, + "759-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "7591-Sur risques \u00e0 court terme": {}, + "7593-Sur stocks": {}, + "7594-Sur cr\u00e9ances": {}, + "7598-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": {} + } + }, + "77-Revenus financiers et produits assimil\u00e9s": { + "771-Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "7712-Int\u00e9r\u00eats de pr\u00eats": {}, + "7713-Int\u00e9r\u00eats sur cr\u00e9ances diverses": {} + }, + "772-Revenus de participations et autres titres immobilis\u00e9s": { + "7721-Revenus des titres de participation": {}, + "7722-Revenus autres titres immobilis\u00e9s": {} + }, + "773-Escomptes obtenus": {}, + "774-Revenus de placement": { + "7745-Revenus des obligations": {}, + "7746-Revenus des titres de placement": {} + }, + "775-Int\u00e9r\u00eats dans loyers de location acquisition": {}, + "776-Gains de change financiers": {}, + "777-Gains sur cessions de titres de placement": {}, + "778-Gains sur risques financiers": { + "7781-Sur rentes viag\u00e8res": {}, + "7782-Sur op\u00e9rations financi\u00e8res": {}, + "7784-Sur instruments de tr\u00e9sorerie": {} + }, + "779-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "7791-Sur risques financiers": {}, + "7795-Sur titres de placement": {}, + "7798-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "78-Transferts de charges": { + "781-Transferts de charges d\u2019exploitation": {}, + "787-Transferts de charges financi\u00e8res": {} + }, + "79-Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "791-Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "7911-Pour risques et charges": {}, + "7913-Des immobilisations incorporelles": {}, + "7914-Des immobilisations corporelles": {} + }, + "797-Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "7971-Pour risques et charges": {}, + "7972-Des immobilisations financi\u00e8res": {} + }, + "798-Reprises d\u2019amortissements": {}, + "799-Reprises de subventions d\u2019investissement": {} + }, + "root_type": "Income" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "81-Valeurs comptables des cessions d\u2019immobilisations": { + "811-Immobilisations incorporelles": {}, + "812-Immobilisations corporelles": {}, + "816-Immobilisations financi\u00e8res": {} + }, + "83-Charges hors activit\u00e9s ordinaires": { + "831-Charges HAO constat\u00e9es": {}, + "833-Charges li\u00e9es aux op\u00e9rations de restructuration": {}, + "834-Pertes sur cr\u00e9ances HAO": {}, + "835-Dons et lib\u00e9ralit\u00e9s accord\u00e9s": {}, + "836-Abandons de cr\u00e9ances consentis": {}, + "837-Charges li\u00e9es aux op\u00e9rations de liquidation": {}, + "839-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "85-Dotations hors activit\u00e9s ordinaires": { + "851-Dotations aux provisions r\u00e9glement\u00e9es": {}, + "852-Dotations aux amortissements HAO": {}, + "853-Dotations aux d\u00e9pr\u00e9ciations HAO": {}, + "854-Dotations aux provisions pour risques et charges HAO": {}, + "858-Autres dotations HAO": {} + }, + "87-Participation des travailleurs": { + "871-Participation l\u00e9gale aux b\u00e9n\u00e9fices": {}, + "874-Participation contractuelle aux b\u00e9n\u00e9fices": {}, + "878-Autres participations": {} + }, + "89-Imp\u00f4ts sur le r\u00e9sultat": { + "891-Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "8911-Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": {}, + "8912-Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": {}, + "8913-Activit\u00e9s exerc\u00e9es hors R\u00e9gion": {} + }, + "892-Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": {}, + "895-Imp\u00f4t minimum forfaitaire IMF": {}, + "899-D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "8991-D\u00e9gr\u00e8vements": {}, + "8994-Annulations pour pertes r\u00e9troactives": {} + } + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "82-Produits des cessions d\u2019immobilisations": { + "821-Immobilisations incorporelles": {}, + "822-Immobilisations corporelles": {}, + "826-Immobilisations financi\u00e8res": {} + }, + "84-Produits hors activit\u00e9s ordinaires": { + "841-Produits HAO constat\u00e9s": {}, + "843-Produits li\u00e9s aux op\u00e9rations de restructuration": {}, + "844-Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": {}, + "845-Dons et lib\u00e9ralit\u00e9s obtenus": {}, + "846-Abandons de cr\u00e9ances obtenus": {}, + "847-Produits li\u00e9s aux op\u00e9rations de liquidation": {}, + "848-Transferts de charges HAO": {}, + "849-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "86-Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "861-Reprises de provisions r\u00e9glement\u00e9es": {}, + "862-Reprises d\u2019amortissements HAO": {}, + "863-Reprises de d\u00e9pr\u00e9ciations HAO": {}, + "864-Reprises de provisions pour risques et charges HAO": {}, + "868-Autres reprises HAO": {} + }, + "88-Subventions d\u2019\u00e9quilibre": { + "881-\u00c9tat": {}, + "884-Collectivit\u00e9s publiques": {}, + "886-Groupe": {}, + "888-Autres": {} + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/gn_plan_comptable_avec_code.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/gn_plan_comptable_avec_code.json new file mode 100644 index 00000000000..948a4357932 --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/gn_plan_comptable_avec_code.json @@ -0,0 +1,4208 @@ +{ + "country_code": "gn", + "name": "Syscohada - Plan Comptable avec code", + "tree": { + "Comptes de ressources durables": { + "Capital": { + "Capital social": { + "Capital souscrit, non appel\u00e9": { + "account_number": "1011" + }, + "Capital souscrit, appel\u00e9, non vers\u00e9": { + "account_number": "1012" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, non amorti": { + "account_number": "1013" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, amorti": { + "account_number": "1014" + }, + "Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": { + "account_number": "1018" + }, + "account_number": "101" + }, + "Capital par dotation": { + "Dotation initiale": { + "account_number": "1021" + }, + "Dotations compl\u00e9mentaires": { + "account_number": "1022" + }, + "Autres dotations": { + "account_number": "1028" + }, + "account_number": "102" + }, + "Capital personnel": { + "account_number": "103" + }, + "Compte de l\u2019exploitant": { + "Apports temporaires": { + "account_number": "1041" + }, + "Op\u00e9rations courantes": { + "account_number": "1042" + }, + "R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": { + "account_number": "1043" + }, + "Pr\u00e9l\u00e8vements d\u2019autoconsommation": { + "account_number": "1047" + }, + "Autres pr\u00e9l\u00e8vements": { + "account_number": "1048" + }, + "account_number": "104" + }, + "Primes li\u00e9es au capital social": { + "Primes d\u2019\u00e9mission": { + "account_number": "1051" + }, + "Primes d\u2019apport": { + "account_number": "1052" + }, + "Primes de fusion": { + "account_number": "1053" + }, + "Primes de conversion": { + "account_number": "1054" + }, + "Autres primes": { + "account_number": "1058" + }, + "account_number": "105" + }, + "\u00c9carts de r\u00e9\u00e9valuation": { + "\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": { + "account_number": "1061" + }, + "\u00c9carts de r\u00e9\u00e9valuation libre": { + "account_number": "1062" + }, + "account_number": "106" + }, + "Apporteurs, capital souscrit, non appel\u00e9": { + "account_number": "109" + }, + "account_number": "10" + }, + "R\u00e9serves": { + "R\u00e9serve l\u00e9gale": { + "account_number": "111" + }, + "R\u00e9serves statutaires ou contractuelles": { + "account_number": "112" + }, + "R\u00e9serves r\u00e9glement\u00e9es": { + "R\u00e9serves de plus-values nettes \u00e0 long terme": { + "account_number": "1131" + }, + "R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "1132" + }, + "R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": { + "account_number": "1133" + }, + "R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": { + "account_number": "1134" + }, + "Autres r\u00e9serves r\u00e9glement\u00e9es": { + "account_number": "1135" + }, + "account_number": "113" + }, + "Autres r\u00e9serves": { + "R\u00e9serves facultatives": { + "account_number": "1181" + }, + "R\u00e9serves diverses": { + "account_number": "1188" + }, + "account_number": "118" + }, + "account_number": "11" + }, + "Report \u00e0 nouveau": { + "Report \u00e0 nouveau cr\u00e9diteur": { + "account_number": "121" + }, + "Report \u00e0 nouveau d\u00e9biteur": { + "Perte nette \u00e0 reporter": { + "account_number": "1291" + }, + "Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": { + "account_number": "1292" + }, + "account_number": "129" + }, + "account_number": "12" + }, + "R\u00e9sultat net de l\u2019exercice": { + "R\u00e9sultat en instance d\u2019affectation": { + "R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": { + "account_number": "1301" + }, + "R\u00e9sultat en instance d\u2019affectation : perte": { + "account_number": "1309" + }, + "account_number": "130" + }, + "R\u00e9sultat net : b\u00e9n\u00e9fice": { + "account_number": "131" + }, + "Marge commerciale (MC)": { + "account_number": "132" + }, + "Valeur ajout\u00e9e (VA)": { + "account_number": "133" + }, + "Exc\u00e9dent brut d\u2019exploitation (EBE)": { + "account_number": "134" + }, + "R\u00e9sultat d\u2019exploitation (RE)": { + "account_number": "135" + }, + "R\u00e9sultat financier (RF)": { + "account_number": "136" + }, + "R\u00e9sultat des activit\u00e9s ordinaires (RAO)": { + "account_number": "137" + }, + "R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "R\u00e9sultat de fusion": { + "account_number": "1381" + }, + "R\u00e9sultat d\u2019apport partiel d\u2019actif": { + "account_number": "1382" + }, + "R\u00e9sultat de scission": { + "account_number": "1383" + }, + "R\u00e9sultat de liquidation": { + "account_number": "1384" + }, + "account_number": "138" + }, + "R\u00e9sultat net : perte": { + "account_number": "139" + }, + "account_number": "13" + }, + "Subventions d\u2019investissement": { + "Subventions d\u2019\u00e9quipement": { + "\u00c9tat": { + "account_number": "1411" + }, + "R\u00e9gions": { + "account_number": "1412" + }, + "D\u00e9partements": { + "account_number": "1413" + }, + "Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": { + "account_number": "1414" + }, + "Entit\u00e9s publiques ou mixtes": { + "account_number": "1415" + }, + "Entit\u00e9s et organismes priv\u00e9s": { + "account_number": "1416" + }, + "Organismes internationaux": { + "account_number": "1417" + }, + "Autres": { + "account_number": "1418" + }, + "account_number": "141" + }, + "Autres subventions d\u2019investissement": { + "account_number": "148" + }, + "account_number": "14" + }, + "Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "Amortissements d\u00e9rogatoires": { + "account_number": "151" + }, + "Plus-values de cession \u00e0 r\u00e9investir": { + "account_number": "152" + }, + "Fonds r\u00e9glement\u00e9s": { + "Fonds National": { + "account_number": "1531" + }, + "Pr\u00e9l\u00e8vement pour le Budget": { + "account_number": "1532" + }, + "account_number": "153" + }, + "Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": { + "account_number": "154" + }, + "Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "Reconstitution des gisements miniers et p\u00e9troliers": { + "account_number": "1551" + }, + "account_number": "155" + }, + "Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "Hausse de prix": { + "account_number": "1561" + }, + "Fluctuation des cours": { + "account_number": "1562" + }, + "account_number": "156" + }, + "Provisions pour investissement": { + "account_number": "157" + }, + "Autres provisions et fonds r\u00e9glement\u00e9s": { + "account_number": "158" + }, + "account_number": "15" + }, + "Emprunts et dettes assimil\u00e9es": { + "Emprunts obligataires": { + "Emprunts obligataires ordinaires": { + "account_number": "1611" + }, + "Emprunts obligataires convertibles en actions": { + "account_number": "1612" + }, + "Emprunts obligataires remboursables en actions": { + "account_number": "1613" + }, + "Autres emprunts obligataires": { + "account_number": "1618" + }, + "account_number": "161" + }, + "Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "162" + }, + "Avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "163" + }, + "Avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "164" + }, + "D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "D\u00e9p\u00f4ts": { + "account_number": "1651" + }, + "Cautionnements": { + "account_number": "1652" + }, + "account_number": "165" + }, + "Int\u00e9r\u00eats courus": { + "Sur emprunts obligataires": { + "account_number": "1661" + }, + "Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "1662" + }, + "Sur avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "1663" + }, + "Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "1664" + }, + "Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "account_number": "1665" + }, + "Sur avances assorties de conditions particuli\u00e8res": { + "account_number": "1667" + }, + "Sur autres emprunts et dettes": { + "account_number": "1668" + }, + "account_number": "166" + }, + "Avances assorties de conditions particuli\u00e8res": { + "Avances bloqu\u00e9es pour augmentation du capital": { + "account_number": "1671" + }, + "Avances conditionn\u00e9es par l\u2019\u00c9tat": { + "account_number": "1672" + }, + "Avances conditionn\u00e9es par les autres organismes africains": { + "account_number": "1673" + }, + "Avances conditionn\u00e9es par les organismes internationaux": { + "account_number": "1674" + }, + "account_number": "167" + }, + "Autres emprunts et dettes": { + "Rentes viag\u00e8res capitalis\u00e9es": { + "account_number": "1681" + }, + "Billets de fonds": { + "account_number": "1682" + }, + "Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": { + "account_number": "1683" + }, + "Emprunts participatifs": { + "account_number": "1684" + }, + "Participation des travailleurs aux b\u00e9n\u00e9fices": { + "account_number": "1685" + }, + "Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": { + "account_number": "1686" + }, + "account_number": "168" + }, + "account_number": "16" + }, + "Dettes de location acquisition": { + "Dettes de location acquisition / cr\u00e9dit bail immobilier": { + "account_number": "172" + }, + "Dettes de location acquisition / cr\u00e9dit bail mobilier": { + "account_number": "173" + }, + "Dettes de location acquisition / location de vente": { + "account_number": "174" + }, + "Int\u00e9r\u00eats courus": { + "Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "1762" + }, + "Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "1763" + }, + "Sur dettes de location acquisition / location-vente": { + "account_number": "1764" + }, + "Sur autres dettes de location acquisition": { + "account_number": "1768" + }, + "account_number": "176" + }, + "Autres dettes de location acquisition": { + "account_number": "178" + }, + "account_number": "17" + }, + "Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "Dettes li\u00e9es \u00e0 des participations": { + "Dettes li\u00e9es \u00e0 des participations (groupe)": { + "account_number": "1811" + }, + "Dettes li\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "1812" + }, + "account_number": "181" + }, + "Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "182" + }, + "Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": { + "account_number": "183" + }, + "Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "184" + }, + "Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "185" + }, + "Comptes de liaison charges": { + "account_number": "186" + }, + "Comptes de liaison produits": { + "account_number": "187" + }, + "Comptes de liaison des soci\u00e9t\u00e9s en participation": { + "account_number": "188" + }, + "account_number": "18" + }, + "Provisions pour risques et charges": { + "Provisions pour litiges": { + "account_number": "191" + }, + "Provisions pour garanties donn\u00e9es aux clients": { + "account_number": "192" + }, + "Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": { + "account_number": "193" + }, + "Provisions pour pertes de change": { + "account_number": "194" + }, + "Provisions pour imp\u00f4ts": { + "account_number": "195" + }, + "Provisions pour pensions et obligations similaires": { + "Provisions pour pensions et obligations similaires engagement de retraite": { + "account_number": "1961" + }, + "Actif du r\u00e9gime de retraite": { + "account_number": "1962" + }, + "account_number": "196" + }, + "Provisions pour restructuration": { + "account_number": "197" + }, + "Autres provisions pour risques et charges": { + "Provisions pour amendes et p\u00e9nalit\u00e9s": { + "account_number": "1981" + }, + "Provisions pour propre assureur": { + "account_number": "1983" + }, + "Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "1984" + }, + "Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": { + "account_number": "1985" + }, + "Provisions pour divers risques et charges": { + "account_number": "1988" + }, + "account_number": "198" + }, + "account_number": "19" + }, + "root_type": "Equity", + "account_number": "1" + }, + "Comptes d\u2019actif immobilis\u00e9": { + "Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "211" + }, + "Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "Brevets": { + "account_type": "Fixed Asset", + "account_number": "2121" + }, + "Licences": { + "account_type": "Fixed Asset", + "account_number": "2122" + }, + "Concessions de service public": { + "account_type": "Fixed Asset", + "account_number": "2123" + }, + "Autres concessions et droits similaires": { + "account_type": "Fixed Asset", + "account_number": "2128" + }, + "account_number": "212" + }, + "Logiciels et sites internet": { + "account_type": "Fixed Asset", + "Logiciels": { + "account_type": "Fixed Asset", + "account_number": "2131" + }, + "Sites internet": { + "account_type": "Fixed Asset", + "account_number": "2132" + }, + "account_number": "213" + }, + "Marques": { + "account_type": "Fixed Asset", + "account_number": "214" + }, + "Fonds commercial": { + "account_type": "Fixed Asset", + "account_number": "215" + }, + "Droit au bail": { + "account_type": "Fixed Asset", + "account_number": "216" + }, + "Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset", + "account_number": "217" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset", + "account_number": "2181" + }, + "Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset", + "account_number": "2182" + }, + "Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset", + "account_number": "2183" + }, + "Co\u00fbts des franchises": { + "account_type": "Fixed Asset", + "account_number": "2184" + }, + "Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset", + "account_number": "2188" + }, + "account_number": "218" + }, + "Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "2191" + }, + "Logiciels et internet": { + "account_type": "Fixed Asset", + "account_number": "2193" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "account_number": "2198" + }, + "account_number": "219" + }, + "account_number": "21" + }, + "Terrains": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset", + "account_number": "2211" + }, + "Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset", + "account_number": "2212" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2218" + }, + "account_number": "221" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset", + "account_number": "2221" + }, + "Autres terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2228" + }, + "account_number": "222" + }, + "Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset", + "account_number": "2231" + }, + "Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset", + "account_number": "2232" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2234" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2235" + }, + "Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "account_number": "2238" + }, + "account_number": "223" + }, + "Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset", + "account_number": "2241" + }, + "Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset", + "account_number": "2245" + }, + "Autres travaux": { + "account_type": "Fixed Asset", + "account_number": "2248" + }, + "account_number": "224" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "Carri\u00e8res": { + "account_type": "Fixed Asset", + "account_number": "2251" + }, + "account_number": "225" + }, + "Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "Parkings": { + "account_type": "Fixed Asset", + "account_number": "2261" + }, + "account_number": "226" + }, + "Terrains mis en concession": { + "account_type": "Fixed Asset", + "account_number": "227" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "Terrains immeubles de placement": { + "account_type": "Fixed Asset", + "account_number": "2281" + }, + "Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset", + "account_number": "2285" + }, + "Terrains de location acquisition": { + "account_type": "Fixed Asset", + "account_number": "2286" + }, + "Divers terrains": { + "account_type": "Fixed Asset", + "account_number": "2288" + }, + "account_number": "228" + }, + "Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "account_number": "2291" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2292" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "account_number": "2295" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2298" + }, + "account_number": "229" + }, + "account_number": "22" + }, + "B\u00e2timents, installations techniques et agencements": { + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "B\u00e2timents industriels": { + "account_number": "2311" + }, + "B\u00e2timents agricoles": { + "account_number": "2312" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2313" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2314" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2315" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2316" + }, + "account_number": "231" + }, + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "B\u00e2timents industriels": { + "account_number": "2321" + }, + "B\u00e2timents agricoles": { + "account_number": "2322" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2323" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2324" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2325" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2326" + }, + "account_number": "232" + }, + "Ouvrages d\u2019infrastructure": { + "Voies de terre": { + "account_number": "2331" + }, + "Voies de fer": { + "account_number": "2332" + }, + "Voies d\u2019eau": { + "account_number": "2333" + }, + "Barrages, Digues": { + "account_number": "2334" + }, + "Pistes d\u2019a\u00e9rodrome": { + "account_number": "2335" + }, + "Autres ouvrages d\u2019infrastructures": { + "account_number": "2338" + }, + "account_number": "233" + }, + "Am\u00e9nagements, agencements et installations techniques": { + "Installations complexes sp\u00e9cialis\u00e9es sur sol propre": { + "account_number": "2341" + }, + "Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": { + "account_number": "2342" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": { + "account_number": "2343" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": { + "account_number": "2344" + }, + "Am\u00e9nagements et agencements des b\u00e2timents": { + "account_number": "2345" + }, + "account_number": "234" + }, + "Am\u00e9nagements de bureaux": { + "Installations g\u00e9n\u00e9rales": { + "account_number": "2351" + }, + "Autres am\u00e9nagements de bureaux": { + "account_number": "2358" + }, + "account_number": "235" + }, + "B\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "237" + }, + "Autres installations et agencements": { + "account_number": "238" + }, + "B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "B\u00e2timents en cours": { + "account_number": "2391" + }, + "Installations en cours": { + "account_number": "2392" + }, + "Ouvrages d\u2019infrastructure en cours": { + "account_number": "2393" + }, + "Am\u00e9nagements et agencements et installations techniques en cours": { + "account_number": "2394" + }, + "Am\u00e9nagements de bureaux en cours": { + "account_number": "2395" + }, + "Autres installations et agencements en cours": { + "account_number": "2398" + }, + "account_number": "239" + }, + "account_number": "23" + }, + "Mat\u00e9riel, mobilier et actifs biologiques": { + "Mat\u00e9riel et outillage industriel et commercial": { + "Mat\u00e9riel industriel": { + "account_number": "2411" + }, + "Outillage industriel": { + "account_number": "2412" + }, + "Mat\u00e9riel commercial": { + "account_number": "2413" + }, + "Outillage commercial": { + "account_number": "2414" + }, + "Mat\u00e9riel & outillage industriel et commercial de location-acquisition": { + "account_number": "2416" + }, + "account_number": "241" + }, + "Mat\u00e9riel et outillage agricole": { + "Mat\u00e9riel agricole": { + "account_number": "2421" + }, + "Outillage agricole": { + "account_number": "2422" + }, + "Mat\u00e9riel & outillage agricole de location-acquisition": { + "account_number": "2426" + }, + "account_number": "242" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "243" + }, + "Mat\u00e9riel et mobilier": { + "Mat\u00e9riel de bureau": { + "account_number": "2441" + }, + "Mat\u00e9riel informatique": { + "account_number": "2442" + }, + "Mat\u00e9riel bureautique": { + "account_number": "2443" + }, + "Mobilier de bureau": { + "account_number": "2444" + }, + "Mat\u00e9riel et mobilier immeubles de placement": { + "account_number": "2445" + }, + "Mat\u00e9riel et mobilier de location acquisition": { + "account_number": "2446" + }, + "Mat\u00e9riel et mobilier des logements du personnel": { + "account_number": "2447" + }, + "account_number": "244" + }, + "Mat\u00e9riel de transport": { + "Mat\u00e9riel automobile": { + "account_number": "2451" + }, + "Mat\u00e9riel ferroviaire": { + "account_number": "2452" + }, + "Mat\u00e9riel fluvial, lagunaire": { + "account_number": "2453" + }, + "Mat\u00e9riel naval": { + "account_number": "2454" + }, + "Mat\u00e9riel a\u00e9rien": { + "account_number": "2455" + }, + "Mat\u00e9riel de transport de location-acquisition": { + "account_number": "2456" + }, + "Mat\u00e9riel hippomobile": { + "account_number": "2457" + }, + "Autres mat\u00e9riels de transport": { + "account_number": "2458" + }, + "account_number": "245" + }, + "Actifs biologiques": { + "Cheptel, animaux de trait": { + "account_number": "2461" + }, + "Cheptel, animaux reproducteurs": { + "account_number": "2462" + }, + "Animaux de garde": { + "account_number": "2463" + }, + "Plantations agricoles": { + "account_number": "2465" + }, + "Autres actifs biologiques": { + "account_number": "2468" + }, + "account_number": "246" + }, + "Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "Agencements et am\u00e9nagements du mat\u00e9riel": { + "account_number": "2471" + }, + "Agencements et am\u00e9nagements des actifs biologiques": { + "account_number": "2472" + }, + "Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2478" + }, + "account_number": "247" + }, + "Autres mat\u00e9riels et mobiliers": { + "Collections et \u0153uvres d\u2019art": { + "account_number": "2481" + }, + "Divers mat\u00e9riels mobiliers": { + "account_number": "2488" + }, + "account_number": "248" + }, + "Mat\u00e9riels et actifs biologiques en cours": { + "Mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2491" + }, + "Mat\u00e9riel et outillage agricole": { + "account_number": "2492" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2493" + }, + "Mat\u00e9riel et mobilier de bureau": { + "account_number": "2494" + }, + "Mat\u00e9riel de transport": { + "account_number": "2495" + }, + "Actifs biologiques": { + "account_number": "2496" + }, + "Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2497" + }, + "Autres mat\u00e9riels et actifs biologiques en cours": { + "account_number": "2498" + }, + "account_number": "249" + }, + "account_number": "24" + }, + "Avances et acomptes vers\u00e9s sur immobilisations": { + "Avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "251" + }, + "Avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "252" + }, + "account_number": "25" + }, + "Titres de participation": { + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "261" + }, + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "262" + }, + "Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "263" + }, + "Participations dans des organismes professionnels": { + "account_number": "265" + }, + "Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "266" + }, + "Autres titres de participation": { + "account_number": "268" + }, + "account_number": "26" + }, + "Autres immobilisations financi\u00e8res": { + "Pr\u00eats et cr\u00e9ances": { + "Pr\u00eats participatifs": { + "account_number": "2711" + }, + "Pr\u00eats aux associ\u00e9s": { + "account_number": "2712" + }, + "Billets de fonds": { + "account_number": "2713" + }, + "Titres pr\u00eat\u00e9s": { + "account_number": "2714" + }, + "Autres pr\u00eats et cr\u00e9ances": { + "account_number": "2718" + }, + "account_number": "271" + }, + "Pr\u00eats au personnel": { + "Pr\u00eats immobiliers": { + "account_number": "2721" + }, + "Pr\u00eats mobiliers et d\u2019installation": { + "account_number": "2722" + }, + "Autres pr\u00eats au personnel": { + "account_number": "2728" + }, + "account_number": "272" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "Retenues de garantie": { + "account_number": "2731" + }, + "Fonds r\u00e9glement\u00e9": { + "account_number": "2733" + }, + "Cr\u00e9ances sur le conc\u00e9dant": { + "account_number": "2734" + }, + "Autres cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2738" + }, + "account_number": "273" + }, + "Titres immobilis\u00e9s": { + "Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": { + "account_number": "2741" + }, + "Titres participatifs": { + "account_number": "2742" + }, + "Certificats d\u2019investissement": { + "account_number": "2743" + }, + "Parts de fonds commun de placement (FCP)": { + "account_number": "2744" + }, + "Obligations": { + "account_number": "2745" + }, + "Actions ou parts propres": { + "account_number": "2746" + }, + "Autres titres immobilis\u00e9s": { + "account_number": "2748" + }, + "account_number": "274" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "D\u00e9p\u00f4ts pour loyers d\u2019avance": { + "account_number": "2751" + }, + "D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": { + "account_number": "2752" + }, + "D\u00e9p\u00f4ts pour l\u2019eau": { + "account_number": "2753" + }, + "D\u00e9p\u00f4ts pour le gaz": { + "account_number": "2754" + }, + "D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": { + "account_number": "2755" + }, + "Cautionnements sur march\u00e9s publics": { + "account_number": "2756" + }, + "Cautionnements sur autres op\u00e9rations": { + "account_number": "2757" + }, + "Autres d\u00e9p\u00f4ts et cautionnements": { + "account_number": "2758" + }, + "account_number": "275" + }, + "Int\u00e9r\u00eats courus": { + "Pr\u00eats et cr\u00e9ances non commerciales": { + "account_number": "2761" + }, + "Pr\u00eats au personnel": { + "account_number": "2762" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2763" + }, + "Titres immobilis\u00e9s": { + "account_number": "2764" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2765" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "account_number": "2767" + }, + "Immobilisations financi\u00e8res diverses": { + "account_number": "2768" + }, + "account_number": "276" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": { + "account_number": "2771" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "2772" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "2773" + }, + "Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "2774" + }, + "account_number": "277" + }, + "Immobilisations financi\u00e8res diverses": { + "Cr\u00e9ances diverses groupe": { + "account_number": "2781" + }, + "Cr\u00e9ances diverses hors groupe": { + "account_number": "2782" + }, + "Banques d\u00e9p\u00f4ts \u00e0 terme": { + "account_number": "2784" + }, + "Or et m\u00e9taux pr\u00e9cieux": { + "account_number": "2785" + }, + "Autres immobilisations financi\u00e8res": { + "account_number": "2788" + }, + "account_number": "278" + }, + "account_number": "27" + }, + "Amortissements": { + "account_type": "Accumulated Depreciation", + "Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation", + "account_number": "2811" + }, + "Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation", + "account_number": "2812" + }, + "Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation", + "account_number": "2813" + }, + "Amortissements des marques": { + "account_type": "Accumulated Depreciation", + "account_number": "2814" + }, + "Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation", + "account_number": "2815" + }, + "Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation", + "account_number": "2816" + }, + "Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation", + "account_number": "2817" + }, + "Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation", + "account_number": "2818" + }, + "account_number": "281" + }, + "Amortissements des terrains": { + "Amortissements des travaux de mise en valeur des terrains": { + "account_number": "2824" + }, + "account_number": "282" + }, + "Amortissements des b\u00e2timents, installations techniques et agencements": { + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2831" + }, + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2832" + }, + "Amortissements des ouvrages d\u2019infrastructure": { + "account_number": "2833" + }, + "Amortissements des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2834" + }, + "Amortissements des am\u00e9nagements de bureaux": { + "account_number": "2835" + }, + "Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2837" + }, + "Amortissements des autres installations et agencements": { + "account_number": "2838" + }, + "account_number": "283" + }, + "Amortissements du mat\u00e9riel": { + "Amortissements du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2841" + }, + "Amortissements du mat\u00e9riel et outillage agricole": { + "account_number": "2842" + }, + "Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2843" + }, + "Amortissements du mat\u00e9riel et mobilier": { + "account_number": "2844" + }, + "Amortissements du mat\u00e9riel de transport": { + "account_number": "2845" + }, + "Amortissements des actifs biologiques": { + "account_number": "2846" + }, + "Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2847" + }, + "Amortissements des autres mat\u00e9riels": { + "account_number": "2848" + }, + "account_number": "284" + }, + "account_number": "28" + }, + "D\u00e9pr\u00e9ciations des immobilisations": { + "D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": { + "account_number": "2911" + }, + "D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": { + "account_number": "2912" + }, + "D\u00e9pr\u00e9ciations des logiciels et sites internet": { + "account_number": "2913" + }, + "D\u00e9pr\u00e9ciations des marques": { + "account_number": "2914" + }, + "D\u00e9pr\u00e9ciations du fonds commercial": { + "account_number": "2915" + }, + "D\u00e9pr\u00e9ciations du droit au bail": { + "account_number": "2916" + }, + "D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": { + "account_number": "2917" + }, + "D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": { + "account_number": "2918" + }, + "D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": { + "account_number": "2919" + }, + "account_number": "291" + }, + "D\u00e9pr\u00e9ciations des terrains": { + "D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": { + "account_number": "2921" + }, + "D\u00e9pr\u00e9ciations des terrains nus": { + "account_number": "2922" + }, + "D\u00e9pr\u00e9ciations des terrains b\u00e2tis": { + "account_number": "2923" + }, + "D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": { + "account_number": "2924" + }, + "D\u00e9pr\u00e9ciations des terrains de gisement": { + "account_number": "2925" + }, + "D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": { + "account_number": "2926" + }, + "D\u00e9pr\u00e9ciations des terrains mis en concession": { + "account_number": "2927" + }, + "D\u00e9pr\u00e9ciations des autres terrains": { + "account_number": "2928" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": { + "account_number": "2929" + }, + "account_number": "292" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2931" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2932" + }, + "D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": { + "account_number": "2933" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2934" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": { + "account_number": "2935" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2937" + }, + "D\u00e9pr\u00e9ciations des autres installations et agencements": { + "account_number": "2938" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": { + "account_number": "2939" + }, + "account_number": "293" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2941" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": { + "account_number": "2942" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2943" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": { + "account_number": "2944" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": { + "account_number": "2945" + }, + "D\u00e9pr\u00e9ciations des actifs biologiques": { + "account_number": "2946" + }, + "D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2947" + }, + "D\u00e9pr\u00e9ciations des autres mat\u00e9riels": { + "account_number": "2948" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": { + "account_number": "2949" + }, + "account_number": "294" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "2951" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "2952" + }, + "account_number": "295" + }, + "D\u00e9pr\u00e9ciations des titres de participation": { + "D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "2961" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "2962" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "2963" + }, + "D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": { + "account_number": "2965" + }, + "D\u00e9pr\u00e9ciations des parts dans des GIE": { + "account_number": "2966" + }, + "D\u00e9pr\u00e9ciations des autres titres de participation": { + "account_number": "2968" + }, + "account_number": "296" + }, + "D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": { + "account_number": "2971" + }, + "D\u00e9pr\u00e9ciations des pr\u00eats au personnel": { + "account_number": "2972" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2973" + }, + "D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": { + "account_number": "2974" + }, + "D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2975" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "account_number": "2977" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": { + "account_number": "2978" + }, + "account_number": "297" + }, + "account_number": "29" + }, + "root_type": "Asset", + "account_number": "2" + }, + "Comptes de Stocks": { + "Marchandises": { + "Marchandises A": { + "Marchandises A1": { + "account_number": "3111" + }, + "Marchandises A2": { + "account_number": "3112" + }, + "account_number": "311" + }, + "Marchandises B": { + "Marchandises B1": { + "account_number": "3121" + }, + "Marchandises B2": { + "account_number": "3122" + }, + "account_number": "312" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3131" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3132" + }, + "account_number": "313" + }, + "Marchandises hors activit\u00e9s ordinaires (HAO)": { + "account_number": "318" + }, + "account_number": "31" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Mati\u00e8res A": { + "account_number": "321" + }, + "Mati\u00e8res B": { + "account_number": "322" + }, + "Fournitures (A, B)": { + "account_number": "323" + }, + "account_number": "32" + }, + "Autres approvisionnements": { + "Mati\u00e8res consommables": { + "account_number": "331" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "332" + }, + "Fournitures de magasin": { + "account_number": "333" + }, + "Fournitures de bureau": { + "account_number": "334" + }, + "Emballages": { + "Emballages perdus": { + "account_number": "3351" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "3352" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "3353" + }, + "Autres emballages": { + "account_number": "3358" + }, + "account_number": "335" + }, + "Autres mati\u00e8res": { + "account_number": "338" + }, + "account_number": "33" + }, + "Produits en cours": { + "Produits en cours": { + "Produits en cours P1": { + "account_number": "3411" + }, + "Produits en cours P2": { + "account_number": "3412" + }, + "account_number": "341" + }, + "Travaux en cours": { + "Travaux en cours T1": { + "account_number": "3421" + }, + "Travaux en cours T2": { + "account_number": "3422" + }, + "account_number": "342" + }, + "Produits interm\u00e9diaires en cours": { + "Produits interm\u00e9diaires A": { + "account_number": "3431" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3432" + }, + "account_number": "343" + }, + "Produits r\u00e9siduels en cours": { + "Produits r\u00e9siduels A": { + "account_number": "3441" + }, + "Produits r\u00e9siduels B": { + "account_number": "3442" + }, + "account_number": "344" + }, + "Actifs biologiques en cours": { + "Animaux": { + "account_number": "3451" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3452" + }, + "account_number": "345" + }, + "account_number": "34" + }, + "Services en cours": { + "\u00c9tudes en cours": { + "\u00c9tudes en cours E1": { + "account_number": "3511" + }, + "\u00c9tudes en cours E2": { + "account_number": "3512" + }, + "account_number": "351" + }, + "Prestations de services en cours": { + "Prestations de services S1": { + "account_number": "3521" + }, + "Prestations de services S2": { + "account_number": "3522" + } + }, + "account_number": "35" + }, + "Produits finis": { + "Produits finis A": { + "account_number": "361" + }, + "Produits finis B": { + "account_number": "362" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3631" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3632" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3638" + }, + "account_number": "363" + }, + "account_number": "36" + }, + "Produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "Produits interm\u00e9diaires A": { + "account_number": "3711" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3712" + }, + "account_number": "371" + }, + "Produits r\u00e9siduels": { + "D\u00e9chets": { + "account_number": "3721" + }, + "Rebuts": { + "account_number": "3722" + }, + "Mati\u00e8res de R\u00e9cup\u00e9ration": { + "account_number": "3723" + }, + "account_number": "372" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3731" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3732" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3738" + }, + "account_number": "373" + }, + "account_number": "37" + }, + "Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "Marchandises en cours de route": { + "account_number": "381" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": { + "account_number": "382" + }, + "Autres approvisionnements en cours de route": { + "account_number": "383" + }, + "Produits finis en cours de route": { + "account_number": "386" + }, + "Stock en consignation ou en d\u00e9p\u00f4t": { + "Stock en consignation": { + "account_number": "3871" + }, + "Stock en d\u00e9p\u00f4t": { + "account_number": "3872" + }, + "account_number": "387" + }, + "Stock provenant d\u2019immobilisations mises hors service ou au rebut": { + "account_number": "388" + }, + "account_number": "38" + }, + "D\u00e9pr\u00e9ciations des stocks et encours de production": { + "D\u00e9pr\u00e9ciations des stocks de marchandises": { + "account_number": "391" + }, + "D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "392" + }, + "D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": { + "account_number": "393" + }, + "D\u00e9pr\u00e9ciations des productions en cours": { + "account_number": "394" + }, + "D\u00e9pr\u00e9ciations des services en cours": { + "account_number": "395" + }, + "D\u00e9pr\u00e9ciations des stocks de produits finis": { + "account_number": "396" + }, + "D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "account_number": "397" + }, + "D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_number": "398" + }, + "account_number": "39" + }, + "root_type": "Asset", + "account_number": "3" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "Fournisseurs d\u00e9biteurs": { + "Fournisseurs Avances et acomptes vers\u00e9s": { + "account_number": "4091" + }, + "Fournisseurs Groupe avances et acomptes vers\u00e9s": { + "account_number": "4092" + }, + "Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": { + "account_number": "4093" + }, + "Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": { + "account_number": "4094" + }, + "Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": { + "account_number": "4098" + }, + "account_number": "409" + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "Clients": { + "Clients": { + "account_type": "Receivable", + "account_number": "4111" + }, + "Clients groupe": { + "account_type": "Receivable", + "account_number": "4112" + }, + "Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable", + "account_number": "4114" + }, + "Clients, organismes internationaux": { + "account_type": "Receivable", + "account_number": "4115" + }, + "Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable", + "account_number": "4116" + }, + "Client, retenues de garantie": { + "account_type": "Receivable", + "account_number": "4117" + }, + "Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable", + "account_number": "4118" + }, + "account_type": "Receivable", + "account_number": "411" + }, + "Clients, effets \u00e0 recevoir en portefeuille": { + "Clients, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4121" + }, + "Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4122" + }, + "\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4124" + }, + "Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4125" + }, + "account_type": "Receivable", + "account_number": "412" + }, + "Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4131" + }, + "Clients, effets impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4132" + }, + "Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4133" + }, + "Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4138" + }, + "account_type": "Receivable", + "account_number": "413" + }, + "Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4141" + }, + "Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4142" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4146" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4147" + }, + "account_type": "Receivable", + "account_number": "414" + }, + "Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable", + "account_number": "415" + }, + "Cr\u00e9ances clients litigieuses ou douteuses": { + "Cr\u00e9ances litigieuses": { + "account_type": "Receivable", + "account_number": "4161" + }, + "Cr\u00e9ances douteuses": { + "account_type": "Receivable", + "account_number": "4162" + }, + "account_type": "Receivable", + "account_number": "416" + }, + "Clients, produits \u00e0 recevoir": { + "Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable", + "account_number": "4181" + }, + "Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable", + "account_number": "4186" + }, + "account_type": "Receivable", + "account_number": "418" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "Personnel, avances et acomptes": { + "Personnel, avances": { + "account_number": "4211" + }, + "Personnel, acomptes": { + "account_number": "4212" + }, + "Frais avanc\u00e9s et fournitures au personnel": { + "account_number": "4213" + }, + "account_number": "421" + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "Prestations familiales": { + "account_number": "4311" + }, + "Accidents de travail": { + "account_number": "4312" + }, + "Caisse de retraite obligatoire": { + "account_number": "4313" + }, + "Caisse de retraite facultative": { + "account_number": "4314" + }, + "Autres cotisations sociales": { + "account_number": "4318" + } + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "Mutuelle": { + "account_number": "4331" + }, + "Assurances retraite": { + "account_number": "4332" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "4333" + } + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Produits \u00e0 recevoir": { + "account_number": "4387" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "\u00c9tat, TVA factur\u00e9e": { + "TVA factur\u00e9e sur ventes": { + "account_number": "4431" + }, + "TVA factur\u00e9e sur prestations de services": { + "account_number": "4432" + }, + "TVA factur\u00e9e sur travaux": { + "account_number": "4433" + }, + "TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": { + "account_number": "4434" + }, + "TVA sur factures \u00e0 \u00e9tablir": { + "account_number": "4435" + }, + "account_number": "443" + }, + "\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "TVA r\u00e9cup\u00e9rable sur immobilisations": { + "account_number": "4451" + }, + "TVA r\u00e9cup\u00e9rable sur achats": { + "account_number": "4452" + }, + "TVA r\u00e9cup\u00e9rable sur transport": { + "account_number": "4453" + }, + "TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": { + "account_number": "4454" + }, + "TVA r\u00e9cup\u00e9rable sur factures non parvenues": { + "account_number": "4455" + }, + "TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": { + "account_number": "4456" + }, + "account_number": "445" + }, + "\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges \u00e0 payer": { + "account_number": "4486" + }, + "Produits \u00e0 recevoir": { + "account_number": "4487" + }, + "account_number": "448" + }, + "\u00c9tat, cr\u00e9ances et dettes diverses": { + "\u00c9tat, obligations cautionn\u00e9es": { + "account_number": "4491" + }, + "\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": { + "account_number": "4492" + }, + "\u00c9tat, fonds de dotation \u00e0 recevoir": { + "account_number": "4493" + }, + "\u00c9tat, subventions investissement \u00e0 recevoir": { + "account_number": "4494" + }, + "\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": { + "account_number": "4495" + }, + "\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": { + "account_number": "4496" + }, + "\u00c9tat, avances sur subventions": { + "account_number": "4497" + }, + "\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": { + "account_number": "4499" + }, + "account_number": "449" + } + }, + "45-Organismes internationaux (ACTIF)": { + "Op\u00e9rations avec les organismes africains": { + "account_number": "451" + }, + "Op\u00e9rations avec les autres organismes internationaux": { + "account_number": "452" + }, + "Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "Organismes internationaux, fonds de dotation \u00e0 recevoir": { + "account_number": "4581" + }, + "Organismes internationaux, subventions \u00e0 recevoir": { + "account_number": "4582" + }, + "account_number": "458" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "Apporteurs, capital appel\u00e9, non vers\u00e9": { + "account_number": "4613" + }, + "Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": { + "account_number": "4614" + }, + "Apporteurs, titres \u00e0 \u00e9changer": { + "account_number": "4618" + } + }, + "Apporteurs, restant d\u00fb sur capital appel\u00e9": { + "account_number": "467" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4721" + }, + "Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": { + "account_number": "4726" + } + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "Mandants": { + "account_number": "4731" + }, + "Mandataires": { + "account_number": "4732" + }, + "Commettants": { + "account_number": "4733" + }, + "Commissionnaires": { + "account_number": "4734" + }, + "\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": { + "account_number": "4739" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "Compte de r\u00e9partition p\u00e9riodique des produits": { + "account_number": "4747" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "Compte actif": { + "account_type": "Temporary", + "account_number": "4751" + } + }, + "Charges constat\u00e9es d\u2019avance": { + "account_number": "476" + }, + "478-\u00c9carts de conversion actif": { + "Diminution des cr\u00e9ances d\u2019exploitation": { + "account_number": "4781" + }, + "Diminution des cr\u00e9ances financi\u00e8res": { + "account_number": "4782" + }, + "Augmentation des dettes d\u2019exploitation": { + "account_number": "4783" + }, + "Augmentation des dettes financi\u00e8res": { + "account_number": "4784" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4786" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4788" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "En compte, immobilisations incorporelles": { + "account_number": "4851" + }, + "En compte, immobilisations corporelles": { + "account_number": "4852" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_number": "4853" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_number": "4854" + }, + "Effets escompt\u00e9s non \u00e9chus": { + "account_number": "4855" + }, + "Retenues de garantie": { + "account_number": "4857" + }, + "Factures \u00e0 \u00e9tablir": { + "account_number": "4858" + }, + "account_number": "485" + }, + "Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": { + "account_number": "488" + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "D\u00e9pr\u00e9ciations des comptes clients": { + "Cr\u00e9ances litigieuses": { + "account_number": "4911" + }, + "Cr\u00e9ances douteuses": { + "account_number": "4912" + }, + "account_number": "491" + }, + "D\u00e9pr\u00e9ciations des comptes organismes internationaux": { + "account_number": "495" + }, + "D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "Associ\u00e9s, comptes courants": { + "account_number": "4962" + }, + "Associ\u00e9s, op\u00e9rations faites en commun": { + "account_number": "4963" + }, + "Groupe, comptes courants": { + "account_number": "4966" + }, + "account_number": "496" + }, + "D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": { + "account_number": "497" + }, + "D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "account_number": "4985" + }, + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4986" + }, + "Autres cr\u00e9ances HAO": { + "account_number": "4988" + }, + "account_number": "498" + }, + "Provisions pour risques \u00e0 court terme": { + "Sur op\u00e9rations d\u2019exploitation": { + "account_number": "4991" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "4997" + }, + "Sur op\u00e9rations HAO": { + "account_number": "4998" + }, + "account_number": "499" + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "Fournisseurs, dettes en compte": { + "Fournisseurs": { + "account_type": "Payable", + "account_number": "4011" + }, + "Fournisseurs groupe": { + "account_type": "Payable", + "account_number": "4012" + }, + "Fournisseurs sous-traitants": { + "account_type": "Payable", + "account_number": "4013" + }, + "Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable", + "account_number": "4016" + }, + "Fournisseur, retenues de garantie": { + "account_type": "Payable", + "account_number": "4017" + }, + "account_type": "Payable", + "account_number": "401" + }, + "Fournisseurs, effets \u00e0 payer": { + "Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4021" + }, + "Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4022" + }, + "Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4023" + }, + "account_type": "Payable", + "account_number": "402" + }, + "Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4041" + }, + "Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4042" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4046" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4047" + }, + "account_type": "Payable", + "account_number": "404" + }, + "Fournisseurs, factures non parvenues": { + "Fournisseurs": { + "account_type": "Stock Received But Not Billed", + "account_number": "4081" + }, + "Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed", + "account_number": "4082" + }, + "Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed", + "account_number": "4083" + }, + "Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed", + "account_number": "4086" + }, + "account_type": "Stock Received But Not Billed", + "account_number": "408" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "Clients cr\u00e9diteurs": { + "Clients, avances et acomptes re\u00e7us": { + "account_number": "4191" + }, + "Clients groupe, avances et acomptes re\u00e7us": { + "account_number": "4192" + }, + "Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": { + "account_number": "4194" + }, + "Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": { + "account_number": "4198" + }, + "account_number": "419" + } + }, + "42-Personnel (PASSIF)": { + "Personnel, r\u00e9mun\u00e9rations dues": { + "account_number": "422" + }, + "Personnel, oppositions, saisies-arr\u00eats": { + "Personnel, oppositions": { + "account_number": "4231" + }, + "Personnel, saisies-arr\u00eats": { + "account_number": "4232" + }, + "Personnel, avis \u00e0 tiers d\u00e9tenteur": { + "account_number": "4233" + }, + "account_number": "423" + }, + "Personnel, \u0153uvres sociales internes": { + "Assistance m\u00e9dicale": { + "account_number": "4241" + }, + "Allocations familiales": { + "account_number": "4242" + }, + "Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": { + "account_number": "4245" + }, + "Autres \u0153uvres sociales internes": { + "account_number": "4248" + }, + "account_number": "424" + }, + "Repr\u00e9sentants du personnel": { + "D\u00e9l\u00e9gu\u00e9s du personnel": { + "account_number": "4251" + }, + "Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": { + "account_number": "4252" + }, + "Autres repr\u00e9sentants du personnel": { + "account_number": "4258" + }, + "account_number": "425" + }, + "Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "Participation aux b\u00e9n\u00e9fices": { + "account_number": "4261" + }, + "Participation au capital": { + "account_number": "4264" + }, + "account_number": "426" + }, + "Personnel d\u00e9p\u00f4ts": { + "account_number": "427" + }, + "Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": { + "account_number": "4281" + }, + "Autres charges \u00e0 payer": { + "account_number": "4286" + }, + "Produits \u00e0 recevoir": { + "account_number": "4287" + }, + "account_number": "428" + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges sociales sur gratifications \u00e0 payer": { + "account_number": "4381" + }, + "Charges sociales sur cong\u00e9s \u00e0 payer": { + "account_number": "4382" + }, + "Autres charges \u00e0 payer": { + "account_number": "4386" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": { + "account_number": "441" + }, + "\u00c9tat, autres imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes d\u2019\u00c9tat": { + "account_number": "4421" + }, + "Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": { + "account_number": "4422" + }, + "Imp\u00f4ts et taxes recouvrables sur des obligataires": { + "account_number": "4423" + }, + "Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": { + "account_number": "4424" + }, + "Droits de douane": { + "account_number": "4426" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "4428" + }, + "account_number": "442" + }, + "\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "\u00c9tat, TVA due": { + "account_number": "4441" + }, + "\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": { + "account_number": "4449" + }, + "account_number": "444" + }, + "\u00c9tat, autres taxes sur le chiffre d\u2019affaires": { + "account_number": "446" + }, + "\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": { + "account_number": "4471" + }, + "Imp\u00f4ts sur salaires": { + "account_number": "4472" + }, + "Contribution nationale": { + "account_number": "4473" + }, + "Contribution nationale de solidarit\u00e9": { + "account_number": "4474" + }, + "Autres imp\u00f4ts et contributions": { + "account_number": "4478" + }, + "account_number": "447" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "Apporteurs, apports en nature": { + "account_number": "4611" + }, + "Apporteurs, apports en num\u00e9raire": { + "account_number": "4612" + }, + "Apporteurs, versements re\u00e7us sur augmentation de capital": { + "account_number": "4615" + }, + "Apporteurs, versements anticip\u00e9s": { + "account_number": "4616" + }, + "Apporteurs d\u00e9faillants": { + "account_number": "4617" + }, + "Apporteurs, capital \u00e0 rembourser": { + "account_number": "4619" + } + }, + "462-Associ\u00e9s, comptes courants": { + "Principal": { + "account_number": "4621" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4626" + } + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "Op\u00e9rations courantes": { + "account_number": "4631" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4636" + } + }, + "Associ\u00e9s, dividendes \u00e0 payer": { + "account_number": "465" + }, + "Groupe, comptes courants": { + "account_number": "466" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "D\u00e9biteurs divers": { + "account_number": "4711" + }, + "Cr\u00e9diteurs divers": { + "account_number": "4712" + }, + "Obligataires": { + "account_number": "4713" + }, + "R\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "4715" + }, + "Compte d\u2019affacturage": { + "account_number": "4716" + }, + "D\u00e9biteurs divers retenues de garantie": { + "account_number": "4717" + }, + "Apport, compte de fusion et op\u00e9rations assimil\u00e9es": { + "account_number": "4718" + }, + "Bons de souscription d\u2019actions et d\u2019obligations": { + "account_number": "4719" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "Compte de r\u00e9partition p\u00e9riodique des charges": { + "account_number": "4746" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "Compte passif": { + "account_number": "4752" + } + }, + "Produits constat\u00e9s d\u2019avance": { + "account_number": "477" + }, + "479-\u00c9carts de conversion passif": { + "Augmentation des cr\u00e9ances d\u2019exploitation": { + "account_number": "4791" + }, + "Augmentation des cr\u00e9ances financi\u00e8res": { + "account_number": "4792" + }, + "Diminution des dettes d\u2019exploitation": { + "account_number": "4793" + }, + "Diminution des dettes financi\u00e8res": { + "account_number": "4794" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4797" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4798" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "Fournisseurs d\u2019investissements": { + "Immobilisations incorporelles": { + "account_number": "4811" + }, + "Immobilisations corporelles": { + "account_number": "4812" + }, + "Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": { + "account_number": "4813" + }, + "R\u00e9serve de propri\u00e9t\u00e9": { + "account_number": "4816" + }, + "Retenues de garantie": { + "account_number": "4817" + }, + "Factures non parvenues": { + "account_number": "4818" + }, + "account_number": "481" + }, + "Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "Immobilisations incorporelles": { + "account_number": "4821" + }, + "Immobilisations corporelles": { + "account_number": "4822" + }, + "account_number": "482" + }, + "Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "Produits": { + "account_number": "4887" + }, + "account_number": "484" + } + }, + "root_type": "Liability" + }, + "Comptes de tr\u00e9sorerie": { + "Titres de placement": { + "Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "Titres du Tr\u00e9sor \u00e0 court terme": { + "account_number": "5011" + }, + "Titres d\u2019organismes financiers": { + "account_number": "5012" + }, + "Bons de caisse \u00e0 court terme": { + "account_number": "5013" + }, + "Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": { + "account_number": "5016" + }, + "account_number": "501" + }, + "Actions": { + "Actions ou parts propres": { + "account_number": "5021" + }, + "Actions cot\u00e9es": { + "account_number": "5022" + }, + "Actions non cot\u00e9es": { + "account_number": "5023" + }, + "Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": { + "account_number": "5024" + }, + "Autres actions": { + "account_number": "5025" + }, + "Frais d\u2019acquisition des actions": { + "account_number": "5026" + }, + "account_number": "502" + }, + "Obligations": { + "Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": { + "account_number": "5031" + }, + "Obligations cot\u00e9es": { + "account_number": "5032" + }, + "Obligations non cot\u00e9es": { + "account_number": "5033" + }, + "Autres obligations": { + "account_number": "5035" + }, + "Frais d\u2019acquisition des obligations": { + "account_number": "5036" + }, + "account_number": "503" + }, + "Bons de souscription": { + "Bons de souscription d\u2019actions": { + "account_number": "5042" + }, + "Bons de souscription d\u2019obligations": { + "account_number": "5043" + }, + "account_number": "504" + }, + "Titres n\u00e9gociables hors r\u00e9gion": { + "account_number": "505" + }, + "Int\u00e9r\u00eats courus": { + "Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": { + "account_number": "5061" + }, + "Actions": { + "account_number": "5062" + }, + "Obligations": { + "account_number": "5063" + }, + "account_number": "506" + }, + "Autres titres de placement et cr\u00e9ances assimil\u00e9es": { + "account_number": "508" + }, + "account_number": "50" + }, + "Valeurs \u00e0 encaisser": { + "Effets \u00e0 encaisser": { + "account_number": "511" + }, + "Effets \u00e0 l\u2019encaissement": { + "account_number": "512" + }, + "Ch\u00e8ques \u00e0 encaisser": { + "account_number": "513" + }, + "Ch\u00e8ques \u00e0 l\u2019encaissement": { + "account_number": "514" + }, + "Cartes de cr\u00e9dit \u00e0 encaisser": { + "account_number": "515" + }, + "Autres valeurs \u00e0 l\u2019encaissement": { + "Warrants": { + "account_number": "5181" + }, + "Billets de fonds": { + "account_number": "5182" + }, + "Ch\u00e8ques de voyage": { + "account_number": "5185" + }, + "Coupons \u00e9chus": { + "account_number": "5186" + }, + "Int\u00e9r\u00eats \u00e9chus des obligations": { + "account_number": "5187" + }, + "account_number": "518" + }, + "account_number": "51" + }, + "Banques": { + "Banques locales": { + "Banques en monnaie nationale": { + "account_type": "Bank", + "account_number": "5211" + }, + "Banques en devises": { + "account_type": "Bank", + "account_number": "5215" + }, + "account_type": "Bank", + "account_number": "521" + }, + "Banques autres \u00c9tats r\u00e9gion": { + "account_number": "522" + }, + "Banques autres \u00c9tats zone mon\u00e9taire": { + "account_number": "523" + }, + "Banques hors zone mon\u00e9taire": { + "account_number": "524" + }, + "Banques d\u00e9p\u00f4t \u00e0 terme": { + "account_number": "525" + }, + "Banques, int\u00e9r\u00eats courus": { + "Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": { + "account_number": "5261" + }, + "Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": { + "account_number": "5267" + }, + "account_number": "526" + }, + "account_number": "52" + }, + "\u00c9tablissements financiers et assimil\u00e9s": { + "Ch\u00e8ques postaux": { + "account_number": "531" + }, + "Tr\u00e9sor": { + "account_number": "532" + }, + "Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": { + "account_number": "533" + }, + "\u00c9tablissements financiers, int\u00e9r\u00eats courus": { + "account_number": "536" + }, + "Autres organismes financiers": { + "account_number": "538" + }, + "account_number": "53" + }, + "Instruments de tr\u00e9sorerie": { + "Options de taux d\u2019int\u00e9r\u00eat": { + "account_number": "541" + }, + "Options de taux de change": { + "account_number": "542" + }, + "Options de taux boursiers": { + "account_number": "543" + }, + "Instruments de march\u00e9s \u00e0 terme": { + "account_number": "544" + }, + "Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": { + "account_number": "545" + }, + "account_number": "54" + }, + "Instruments de monnaie \u00e9lectronique": { + "Monnaie \u00e9lectronique carte carburant": { + "account_number": "551" + }, + "Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": { + "account_number": "552" + }, + "Monnaie \u00e9lectronique carte p\u00e9age": { + "account_number": "553" + }, + "Porte-monnaie \u00e9lectronique": { + "account_number": "554" + }, + "Autres instruments de monnaies \u00e9lectroniques": { + "account_number": "558" + }, + "account_number": "55" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "Cr\u00e9dits de tr\u00e9sorerie": { + "account_number": "561" + }, + "Escompte de cr\u00e9dits de campagne": { + "account_number": "564" + }, + "Escompte de cr\u00e9dits ordinaires": { + "account_number": "565" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": { + "account_number": "566" + }, + "account_number": "56" + }, + "Caisse": { + "Caisse si\u00e8ge social": { + "Caisse en monnaie nationale": { + "account_number": "5711" + }, + "Caisse en devises": { + "account_number": "5712" + }, + "account_number": "571" + }, + "Caisse succursale A": { + "En monnaie nationale": { + "account_number": "5721" + }, + "En devises": { + "account_number": "5722" + }, + "account_number": "572" + }, + "Caisse succursale B": { + "En monnaie nationale": { + "account_number": "5731" + }, + "En devises": { + "account_number": "5732" + }, + "account_number": "573" + }, + "account_number": "57" + }, + "R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "R\u00e9gies d\u2019avance": { + "account_number": "581" + }, + "Accr\u00e9ditifs": { + "account_number": "582" + }, + "Virements de fonds": { + "account_number": "585" + }, + "Autres virements internes": { + "account_number": "588" + }, + "account_number": "58" + }, + "D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "D\u00e9pr\u00e9ciations des titres de placement": { + "account_number": "590" + }, + "D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": { + "account_number": "591" + }, + "D\u00e9pr\u00e9ciations des comptes banques": { + "account_number": "592" + }, + "D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": { + "account_number": "593" + }, + "D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": { + "account_number": "594" + }, + "Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": { + "account_number": "599" + }, + "account_number": "59" + }, + "root_type": "Asset", + "account_number": "5" + }, + "Comptes de charges des activit\u00e9s ordinaires": { + "Achats et variations de stocks": { + "Achats de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "6011" + }, + "Hors R\u00e9gion": { + "account_number": "6012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6014" + }, + "Frais sur achats": { + "account_number": "6015" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6019" + }, + "account_number": "601" + }, + "Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Dans la R\u00e9gion": { + "account_number": "6021" + }, + "Hors R\u00e9gion": { + "account_number": "6022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6024" + }, + "Frais sur achats": { + "account_number": "6025" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6029" + }, + "account_number": "602" + }, + "Variations des stocks de biens achet\u00e9s": { + "Variations des stocks de marchandises": { + "account_number": "6031" + }, + "Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "6032" + }, + "Variations des stocks d\u2019autres approvisionnements": { + "account_number": "6033" + }, + "account_number": "603" + }, + "Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "Mati\u00e8res consommables": { + "account_number": "6041" + }, + "Mati\u00e8res combustibles": { + "account_number": "6042" + }, + "Produits d\u2019entretien": { + "account_number": "6043" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "6044" + }, + "Frais sur achat": { + "account_number": "6045" + }, + "Fournitures de magasin": { + "account_number": "6046" + }, + "Fournitures de bureau": { + "account_number": "6047" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6049" + }, + "account_number": "604" + }, + "Autres achats": { + "Fournitures non stockables Eau": { + "account_number": "6051" + }, + "Fournitures non stockables \u00c9lectricit\u00e9": { + "account_number": "6052" + }, + "Fournitures non stockables Autres \u00e9nergies": { + "account_number": "6053" + }, + "Fournitures d\u2019entretien non stockables": { + "account_number": "6054" + }, + "Fournitures de bureau non stockables": { + "account_number": "6055" + }, + "Achats de petit mat\u00e9riel et outillage": { + "account_number": "6056" + }, + "Achats d\u2019\u00e9tudes et prestations de services": { + "account_number": "6057" + }, + "Achats de travaux, mat\u00e9riels et \u00e9quipements": { + "account_number": "6058" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6059" + }, + "account_number": "605" + }, + "Achats d\u2019emballages": { + "Emballages perdus": { + "account_number": "6081" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "6082" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "6083" + }, + "Frais sur achats": { + "account_number": "6085" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6089" + }, + "account_number": "608" + }, + "account_number": "60" + }, + "Transports": { + "Transports sur ventes": { + "account_number": "612" + }, + "Transports pour le compte de tiers": { + "account_number": "613" + }, + "Transports du personnel": { + "account_number": "614" + }, + "Transports de plis": { + "account_number": "616" + }, + "Autres frais de transport": { + "Voyages et d\u00e9placements": { + "account_number": "6181" + }, + "Transports entre \u00e9tablissements ou chantiers": { + "account_number": "6182" + }, + "Transports administratifs": { + "account_number": "6183" + }, + "account_number": "618" + }, + "account_number": "61" + }, + "Services ext\u00e9rieurs": { + "Sous-traitance g\u00e9n\u00e9rale": { + "account_number": "621" + }, + "Locations, charges locatives": { + "Locations de terrains": { + "account_number": "6221" + }, + "Locations de b\u00e2timents": { + "account_number": "6222" + }, + "Locations de mat\u00e9riels et outillages": { + "account_number": "6223" + }, + "Malis sur emballages": { + "account_number": "6224" + }, + "Locations d\u2019emballages": { + "account_number": "6225" + }, + "Fermages et loyers du foncier": { + "account_number": "6226" + }, + "Locations et charges locatives diverses": { + "account_number": "6228" + }, + "account_number": "622" + }, + "Redevances de location acquisition": { + "Cr\u00e9dit-bail immobilier": { + "account_number": "6232" + }, + "Cr\u00e9dit-bail mobilier": { + "account_number": "6233" + }, + "Location-vente": { + "account_number": "6234" + }, + "Autres contrats de location acquisition": { + "account_number": "6238" + }, + "account_number": "623" + }, + "Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "Entretien et r\u00e9parations des biens immobiliers": { + "account_number": "6241" + }, + "Entretien et r\u00e9parations des biens mobiliers": { + "account_number": "6242" + }, + "Maintenance": { + "account_number": "6243" + }, + "Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "6244" + }, + "Autres entretiens et r\u00e9parations": { + "account_number": "6248" + }, + "account_number": "624" + }, + "Primes d\u2019assurance": { + "Assurances multirisques": { + "account_number": "6251" + }, + "Assurances mat\u00e9riel de transport": { + "account_number": "6252" + }, + "Assurances risques d\u2019exploitation": { + "account_number": "6253" + }, + "Assurances responsabilit\u00e9 du producteur": { + "account_number": "6254" + }, + "Assurances insolvabilit\u00e9 clients": { + "account_number": "6255" + }, + "Assurances transport sur ventes": { + "account_number": "6257" + }, + "Autres primes d\u2019assurances": { + "account_number": "6258" + }, + "account_number": "625" + }, + "\u00c9tudes, recherches et documentation": { + "\u00c9tudes et recherches": { + "account_number": "6261" + }, + "Documentation g\u00e9n\u00e9rale": { + "account_number": "6265" + }, + "Documentation technique": { + "account_number": "6266" + }, + "account_number": "626" + }, + "Publicit\u00e9, publications, relations publiques": { + "Annonces, insertions": { + "account_number": "6271" + }, + "Catalogues, imprim\u00e9s publicitaires": { + "account_number": "6272" + }, + "\u00c9chantillons": { + "account_number": "6273" + }, + "Foires et expositions": { + "account_number": "6274" + }, + "Publications": { + "account_number": "6275" + }, + "Cadeaux \u00e0 la client\u00e8le": { + "account_number": "6276" + }, + "Frais de colloques, s\u00e9minaires, conf\u00e9rences": { + "account_number": "6277" + }, + "Autres charges de publicit\u00e9 et relations publiques": { + "account_number": "6278" + }, + "account_number": "627" + }, + "Frais de t\u00e9l\u00e9communications": { + "Frais de t\u00e9l\u00e9phone": { + "account_number": "6281" + }, + "Frais de t\u00e9lex": { + "account_number": "6282" + }, + "Frais de t\u00e9l\u00e9copie": { + "account_number": "6283" + }, + "Autres frais de t\u00e9l\u00e9communications": { + "account_number": "6288" + }, + "account_number": "628" + }, + "account_number": "62" + }, + "Autres services ext\u00e9rieurs": { + "Frais bancaires": { + "Frais sur titres (vente, garde)": { + "account_number": "6311" + }, + "Frais sur effets": { + "account_number": "6312" + }, + "Location de coffres": { + "account_number": "6313" + }, + "Commissions d\u2019affacturage": { + "account_number": "6314" + }, + "Commissions sur cartes de cr\u00e9dit": { + "account_number": "6315" + }, + "Frais d\u2019\u00e9mission d\u2019emprunts": { + "account_number": "6316" + }, + "Frais sur instruments monnaie \u00e9lectronique": { + "account_number": "6317" + }, + "Autres frais bancaires": { + "account_number": "6318" + }, + "account_number": "631" + }, + "R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "Commissions et courtages sur ventes": { + "account_number": "6322" + }, + "Honoraires des professions r\u00e9glement\u00e9es": { + "account_number": "6324" + }, + "Frais d\u2019actes et de contentieux": { + "account_number": "6325" + }, + "R\u00e9mun\u00e9rations d\u2019affacturage": { + "account_number": "6326" + }, + "R\u00e9mun\u00e9rations des autres prestataires de services": { + "account_number": "6327" + }, + "Divers frais": { + "account_number": "6328" + }, + "account_number": "632" + }, + "Frais de formation du personnel": { + "account_number": "633" + }, + "Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "Redevances pour brevets, licences": { + "account_number": "6342" + }, + "Redevances pour logiciels": { + "account_number": "6343" + }, + "Redevances pour marques": { + "account_number": "6344" + }, + "Redevances pour sites internet": { + "account_number": "6345" + }, + "Redevances pour concessions, droits et valeurs similaires": { + "account_number": "6346" + }, + "account_number": "634" + }, + "Cotisations": { + "Cotisations": { + "account_number": "6351" + }, + "Concours divers": { + "account_number": "6358" + }, + "account_number": "635" + }, + "R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "Personnel int\u00e9rimaire": { + "account_number": "6371" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6372" + }, + "account_number": "637" + }, + "Autres charges externes": { + "Frais de recrutement du personnel": { + "account_number": "6381" + }, + "Frais de d\u00e9m\u00e9nagement": { + "account_number": "6382" + }, + "R\u00e9ceptions": { + "account_number": "6383" + }, + "Missions": { + "account_number": "6384" + }, + "Charges de copropri\u00e9t\u00e9": { + "account_number": "6385" + }, + "account_number": "638" + }, + "account_number": "63" + }, + "Imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes directs": { + "Imp\u00f4ts fonciers et taxes annexes": { + "account_number": "6411" + }, + "Patentes, licences et taxes annexes": { + "account_number": "6412" + }, + "Taxes sur appointements et salaires": { + "account_number": "6413" + }, + "Taxes d\u2019apprentissage": { + "account_number": "6414" + }, + "Formation professionnelle continue": { + "account_number": "6415" + }, + "Autres imp\u00f4ts et taxes directs": { + "account_number": "6418" + }, + "account_number": "641" + }, + "Imp\u00f4ts et taxes indirects": { + "account_number": "645" + }, + "Droits d\u2019enregistrement": { + "Droits de mutation": { + "account_number": "6461" + }, + "Droits de timbre": { + "account_number": "6462" + }, + "Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": { + "account_number": "6463" + }, + "Vignettes": { + "account_number": "6464" + }, + "Autres droits": { + "account_number": "6468" + }, + "account_number": "646" + }, + "P\u00e9nalit\u00e9s, amendes fiscales": { + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": { + "account_number": "6471" + }, + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": { + "account_number": "6472" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": { + "account_number": "6473" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": { + "account_number": "6474" + }, + "Autres p\u00e9nalit\u00e9s et amendes fiscales": { + "account_number": "6478" + }, + "account_number": "647" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "648" + }, + "account_number": "64" + }, + "Autres charges": { + "Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "Clients": { + "account_number": "6511" + }, + "Autres d\u00e9biteurs": { + "account_number": "6515" + }, + "account_number": "651" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "6521" + }, + "Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "6525" + }, + "account_number": "652" + }, + "Valeurs comptables des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "6541" + }, + "Immobilisations corporelles": { + "account_number": "6542" + }, + "account_number": "654" + }, + "Perte de change sur cr\u00e9ances et dettes commerciale": { + "account_number": "656" + }, + "P\u00e9nalit\u00e9s et amendes p\u00e9nales": { + "account_number": "657" + }, + "Charges diverses": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "6581" + }, + "Dons": { + "account_number": "6582" + }, + "M\u00e9c\u00e9nat": { + "account_number": "6583" + }, + "Autres charges diverses": { + "account_number": "6588" + }, + "account_number": "658" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "6591" + }, + "Sur stocks": { + "account_number": "6593" + }, + "Sur cr\u00e9ances": { + "account_number": "6594" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": { + "account_number": "6598" + }, + "account_number": "659" + }, + "account_number": "65" + }, + "Charges de personnel": { + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "Appointements salaires et commissions": { + "account_number": "6611" + }, + "Primes et gratifications": { + "account_number": "6612" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6613" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6614" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6615" + }, + "Suppl\u00e9ment familial": { + "account_number": "6616" + }, + "Avantages en nature": { + "account_number": "6617" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6618" + }, + "account_number": "661" + }, + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "Appointements salaires et commissions": { + "account_number": "6621" + }, + "Primes et gratifications": { + "account_number": "6622" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6623" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6624" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6625" + }, + "Suppl\u00e9ment familial": { + "account_number": "6626" + }, + "Avantages en nature": { + "account_number": "6627" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6628" + }, + "account_number": "662" + }, + "Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "Indemnit\u00e9s de logement": { + "account_number": "6631" + }, + "Indemnit\u00e9s de repr\u00e9sentation": { + "account_number": "6632" + }, + "Indemnit\u00e9s d\u2019expatriation": { + "account_number": "6633" + }, + "Indemnit\u00e9s de transport": { + "account_number": "6634" + }, + "Autres indemnit\u00e9s et avantages divers": { + "account_number": "6638" + }, + "account_number": "663" + }, + "Charges sociales": { + "Charges sociales sur r\u00e9mun\u00e9ration du personnel national": { + "account_number": "6641" + }, + "Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": { + "account_number": "6642" + }, + "account_number": "664" + }, + "R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "R\u00e9mun\u00e9ration du travail de l\u2019exploitant": { + "account_number": "6661" + }, + "Charges sociales": { + "account_number": "6662" + }, + "account_number": "666" + }, + "R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "Personnel int\u00e9rimaire": { + "account_number": "6671" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6672" + }, + "account_number": "667" + }, + "Autres charges sociales": { + "Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": { + "account_number": "6681" + }, + "Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": { + "account_number": "6682" + }, + "Versements et contributions aux autres \u0153uvres sociales": { + "account_number": "6683" + }, + "M\u00e9decine du travail et pharmacie": { + "account_number": "6684" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "6685" + }, + "Assurances retraite et fonds de pension": { + "account_number": "6686" + }, + "Majorations et p\u00e9nalit\u00e9s sociales": { + "account_number": "6687" + }, + "Charges sociales diverses": { + "account_number": "6688" + }, + "account_number": "668" + }, + "account_number": "66" + }, + "Frais financiers et charges assimil\u00e9es": { + "Int\u00e9r\u00eats des emprunts": { + "Emprunts obligataires": { + "account_number": "6711" + }, + "Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "6712" + }, + "Dettes li\u00e9es \u00e0 des participations": { + "account_number": "6713" + }, + "Primes de remboursement des obligations": { + "account_number": "6714" + }, + "account_number": "671" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "6722" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "6723" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": { + "account_number": "6724" + }, + "Int\u00e9r\u00eats dans loyers des autres locations acquisition": { + "account_number": "6728" + }, + "account_number": "672" + }, + "Escomptes accord\u00e9s": { + "account_number": "673" + }, + "Autres int\u00e9r\u00eats": { + "Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": { + "account_number": "6741" + }, + "Comptes courants bloqu\u00e9s": { + "account_number": "6742" + }, + "Int\u00e9r\u00eats sur obligations cautionn\u00e9es": { + "account_number": "6743" + }, + "Int\u00e9r\u00eats sur dettes commerciales": { + "account_number": "6744" + }, + "Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": { + "account_number": "6745" + }, + "Int\u00e9r\u00eats sur dettes diverses": { + "account_number": "6748" + }, + "account_number": "674" + }, + "Escomptes des effets de commerce": { + "account_number": "675" + }, + "Pertes de change financi\u00e8res": { + "account_number": "676" + }, + "Pertes sur titres de placement": { + "Pertes sur cessions de titres de placement": { + "account_number": "6771" + }, + "Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "6772" + }, + "account_number": "677" + }, + "Pertes et charges sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "6781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "6782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "6784" + }, + "account_number": "678" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "6791" + }, + "Sur titres de placement": { + "account_number": "6795" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "6798" + }, + "account_number": "679" + }, + "account_number": "67" + }, + "Dotations aux amortissements": { + "Dotations aux amortissements d\u2019exploitation": { + "Dotations aux amortissements des immobilisations incorporelles": { + "account_number": "6812" + }, + "Dotations aux amortissements des immobilisations corporelles": { + "account_number": "6813" + }, + "account_number": "681" + }, + "account_number": "68" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6911" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "account_number": "6913" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": { + "account_number": "6914" + }, + "account_number": "691" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6971" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": { + "account_number": "6972" + }, + "account_number": "697" + }, + "account_number": "69" + }, + "root_type": "Expense", + "account_number": "6" + }, + "Comptes de produits des activit\u00e9s ordinaires": { + "Ventes": { + "Ventes de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "7011" + }, + "Hors R\u00e9gion": { + "account_number": "7012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7014" + }, + "Sur internet": { + "account_number": "7015" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7019" + }, + "account_number": "701" + }, + "Ventes de produits finis": { + "Dans la R\u00e9gion": { + "account_number": "7021" + }, + "Hors R\u00e9gion": { + "account_number": "7022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7024" + }, + "Sur internet": { + "account_number": "7025" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7029" + }, + "account_number": "702" + }, + "Ventes de produits interm\u00e9diaires": { + "Dans la R\u00e9gion": { + "account_number": "7031" + }, + "Hors R\u00e9gion": { + "account_number": "7032" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7033" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7034" + }, + "Sur internet": { + "account_number": "7035" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7039" + }, + "account_number": "703" + }, + "Ventes de produits r\u00e9siduels": { + "Dans la R\u00e9gion": { + "account_number": "7041" + }, + "Hors R\u00e9gion": { + "account_number": "7042" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7043" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7044" + }, + "Sur internet": { + "account_number": "7045" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7049" + }, + "account_number": "704" + }, + "Travaux factur\u00e9s": { + "Dans la R\u00e9gion": { + "account_number": "7051" + }, + "Hors R\u00e9gion": { + "account_number": "7052" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7053" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7054" + }, + "Sur internet": { + "account_number": "7055" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7059" + }, + "account_number": "705" + }, + "Services vendus": { + "Dans la R\u00e9gion": { + "account_number": "7061" + }, + "Hors R\u00e9gion": { + "account_number": "7062" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7063" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7064" + }, + "Sur internet": { + "account_number": "7065" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7069" + }, + "account_number": "706" + }, + "Produits accessoires": { + "Ports, emballages perdus et autres frais factur\u00e9s": { + "account_number": "7071" + }, + "Commissions et courtages": { + "account_number": "7072" + }, + "Locations": { + "account_number": "7073" + }, + "Bonis sur reprises et cessions d\u2019emballages": { + "account_number": "7074" + }, + "Mise \u00e0 disposition de personnel": { + "account_number": "7075" + }, + "Redevances pour brevets, logiciels, marques et droits similaires": { + "account_number": "7076" + }, + "Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": { + "account_number": "7077" + }, + "Autres produits accessoires": { + "account_number": "7078" + }, + "account_number": "707" + }, + "account_number": "70" + }, + "Subventions d\u2019exploitation": { + "Sur produits \u00e0 l\u2019exportation": { + "account_number": "711" + }, + "Sur produits \u00e0 l\u2019importation": { + "account_number": "712" + }, + "Sur produits de p\u00e9r\u00e9quation": { + "account_number": "713" + }, + "Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": { + "account_number": "714" + }, + "Autres subventions d\u2019exploitation": { + "Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": { + "account_number": "7181" + }, + "Vers\u00e9es par les organismes internationaux": { + "account_number": "7182" + }, + "Vers\u00e9es par des tiers": { + "account_number": "7183" + }, + "account_number": "718" + }, + "account_number": "71" + }, + "Production immobilis\u00e9e": { + "Immobilisations incorporelles": { + "account_number": "721" + }, + "Immobilisations corporelles": { + "Immobilisations corporelles (hors actifs biologiques)": { + "account_number": "7221" + }, + "Immobilisations corporelles (actifs biologiques)": { + "account_number": "7222" + }, + "account_number": "722" + }, + "Production auto-consomm\u00e9e": { + "account_number": "724" + }, + "Immobilisations financi\u00e8res": { + "account_number": "726" + }, + "account_number": "72" + }, + "Variations des stocks de biens et de services produits": { + "Variations des stocks de produits en cours": { + "Produits en cours": { + "account_number": "7341" + }, + "Travaux en cours": { + "account_number": "7342" + }, + "account_number": "734" + }, + "Variations des en-cours de services": { + "\u00c9tudes en cours": { + "account_number": "7351" + }, + "Prestations de services en cours": { + "account_number": "7352" + }, + "account_number": "735" + }, + "Variations des stocks de produits finis": { + "account_number": "736" + }, + "Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "account_number": "7371" + }, + "Produits r\u00e9siduels": { + "account_number": "7372" + }, + "account_number": "737" + }, + "account_number": "73" + }, + "Autres produits": { + "Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "account_number": "751" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "7521" + }, + "B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "7525" + }, + "account_number": "752" + }, + "Produits des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "7541" + }, + "Immobilisations corporelles": { + "account_number": "7542" + }, + "account_number": "754" + }, + "Gains de change sur cr\u00e9ances et dettes commerciales": { + "account_number": "756" + }, + "Produits divers": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "7581" + }, + "Indemnit\u00e9s d\u2019assurances re\u00e7ues": { + "account_number": "7582" + }, + "Autres produits divers": { + "account_number": "7588" + }, + "account_number": "758" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "7591" + }, + "Sur stocks": { + "account_number": "7593" + }, + "Sur cr\u00e9ances": { + "account_number": "7594" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "account_number": "7598" + }, + "account_number": "759" + }, + "account_number": "75" + }, + "Revenus financiers et produits assimil\u00e9s": { + "Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "Int\u00e9r\u00eats de pr\u00eats": { + "account_number": "7712" + }, + "Int\u00e9r\u00eats sur cr\u00e9ances diverses": { + "account_number": "7713" + }, + "account_number": "771" + }, + "Revenus de participations et autres titres immobilis\u00e9s": { + "Revenus des titres de participation": { + "account_number": "7721" + }, + "Revenus autres titres immobilis\u00e9s": { + "account_number": "7722" + }, + "account_number": "772" + }, + "Escomptes obtenus": { + "account_number": "773" + }, + "Revenus de placement": { + "Revenus des obligations": { + "account_number": "7745" + }, + "Revenus des titres de placement": { + "account_number": "7746" + }, + "account_number": "774" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "account_number": "775" + }, + "Gains de change financiers": { + "account_number": "776" + }, + "Gains sur cessions de titres de placement": { + "account_number": "777" + }, + "Gains sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "7781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "7782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "7784" + }, + "account_number": "778" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "7791" + }, + "Sur titres de placement": { + "account_number": "7795" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "7798" + }, + "account_number": "779" + }, + "account_number": "77" + }, + "Transferts de charges": { + "Transferts de charges d\u2019exploitation": { + "account_number": "781" + }, + "Transferts de charges financi\u00e8res": { + "account_number": "787" + }, + "account_number": "78" + }, + "Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Pour risques et charges": { + "account_number": "7911" + }, + "Des immobilisations incorporelles": { + "account_number": "7913" + }, + "Des immobilisations corporelles": { + "account_number": "7914" + }, + "account_number": "791" + }, + "Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "Pour risques et charges": { + "account_number": "7971" + }, + "Des immobilisations financi\u00e8res": { + "account_number": "7972" + }, + "account_number": "797" + }, + "Reprises d\u2019amortissements": { + "account_number": "798" + }, + "Reprises de subventions d\u2019investissement": { + "account_number": "799" + }, + "account_number": "79" + }, + "root_type": "Income", + "account_number": "7" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "Valeurs comptables des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "811" + }, + "Immobilisations corporelles": { + "account_number": "812" + }, + "Immobilisations financi\u00e8res": { + "account_number": "816" + }, + "account_number": "81" + }, + "Charges hors activit\u00e9s ordinaires": { + "Charges HAO constat\u00e9es": { + "account_number": "831" + }, + "Charges li\u00e9es aux op\u00e9rations de restructuration": { + "account_number": "833" + }, + "Pertes sur cr\u00e9ances HAO": { + "account_number": "834" + }, + "Dons et lib\u00e9ralit\u00e9s accord\u00e9s": { + "account_number": "835" + }, + "Abandons de cr\u00e9ances consentis": { + "account_number": "836" + }, + "Charges li\u00e9es aux op\u00e9rations de liquidation": { + "account_number": "837" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "839" + }, + "account_number": "83" + }, + "Dotations hors activit\u00e9s ordinaires": { + "Dotations aux provisions r\u00e9glement\u00e9es": { + "account_number": "851" + }, + "Dotations aux amortissements HAO": { + "account_number": "852" + }, + "Dotations aux d\u00e9pr\u00e9ciations HAO": { + "account_number": "853" + }, + "Dotations aux provisions pour risques et charges HAO": { + "account_number": "854" + }, + "Autres dotations HAO": { + "account_number": "858" + }, + "account_number": "85" + }, + "Participation des travailleurs": { + "Participation l\u00e9gale aux b\u00e9n\u00e9fices": { + "account_number": "871" + }, + "Participation contractuelle aux b\u00e9n\u00e9fices": { + "account_number": "874" + }, + "Autres participations": { + "account_number": "878" + }, + "account_number": "87" + }, + "Imp\u00f4ts sur le r\u00e9sultat": { + "Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": { + "account_number": "8911" + }, + "Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": { + "account_number": "8912" + }, + "Activit\u00e9s exerc\u00e9es hors R\u00e9gion": { + "account_number": "8913" + }, + "account_number": "891" + }, + "Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "account_number": "892" + }, + "Imp\u00f4t minimum forfaitaire IMF": { + "account_number": "895" + }, + "D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "D\u00e9gr\u00e8vements": { + "account_number": "8991" + }, + "Annulations pour pertes r\u00e9troactives": { + "account_number": "8994" + }, + "account_number": "899" + }, + "account_number": "89" + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "Produits des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "821" + }, + "Immobilisations corporelles": { + "account_number": "822" + }, + "Immobilisations financi\u00e8res": { + "account_number": "826" + }, + "account_number": "82" + }, + "Produits hors activit\u00e9s ordinaires": { + "Produits HAO constat\u00e9s": { + "account_number": "841" + }, + "Produits li\u00e9s aux op\u00e9rations de restructuration": { + "account_number": "843" + }, + "Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": { + "account_number": "844" + }, + "Dons et lib\u00e9ralit\u00e9s obtenus": { + "account_number": "845" + }, + "Abandons de cr\u00e9ances obtenus": { + "account_number": "846" + }, + "Produits li\u00e9s aux op\u00e9rations de liquidation": { + "account_number": "847" + }, + "Transferts de charges HAO": { + "account_number": "848" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "849" + }, + "account_number": "84" + }, + "Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "Reprises de provisions r\u00e9glement\u00e9es": { + "account_number": "861" + }, + "Reprises d\u2019amortissements HAO": { + "account_number": "862" + }, + "Reprises de d\u00e9pr\u00e9ciations HAO": { + "account_number": "863" + }, + "Reprises de provisions pour risques et charges HAO": { + "account_number": "864" + }, + "Autres reprises HAO": { + "account_number": "868" + }, + "account_number": "86" + }, + "Subventions d\u2019\u00e9quilibre": { + "\u00c9tat": { + "account_number": "881" + }, + "Collectivit\u00e9s publiques": { + "account_number": "884" + }, + "Groupe": { + "account_number": "886" + }, + "Autres": { + "account_number": "888" + }, + "account_number": "88" + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/gq_plan_comptable.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/gq_plan_comptable.json new file mode 100644 index 00000000000..ba2d8c7650b --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/gq_plan_comptable.json @@ -0,0 +1,1919 @@ +{ + "country_code": "gq", + "name": "Syscohada - Plan Comptable", + "tree": { + "1-Comptes de ressources durables": { + "10-Capital": { + "101-Capital social": { + "1011-Capital souscrit, non appel\u00e9": {}, + "1012-Capital souscrit, appel\u00e9, non vers\u00e9": {}, + "1013-Capital souscrit, appel\u00e9, vers\u00e9, non amorti": {}, + "1014-Capital souscrit, appel\u00e9, vers\u00e9, amorti": {}, + "1018-Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": {} + }, + "102-Capital par dotation": { + "1021-Dotation initiale": {}, + "1022-Dotations compl\u00e9mentaires": {}, + "1028-Autres dotations": {} + }, + "103-Capital personnel": {}, + "104-Compte de l\u2019exploitant": { + "1041-Apports temporaires": {}, + "1042-Op\u00e9rations courantes": {}, + "1043-R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": {}, + "1047-Pr\u00e9l\u00e8vements d\u2019autoconsommation": {}, + "1048-Autres pr\u00e9l\u00e8vements": {} + }, + "105-Primes li\u00e9es au capital social": { + "1051-Primes d\u2019\u00e9mission": {}, + "1052-Primes d\u2019apport": {}, + "1053-Primes de fusion": {}, + "1054-Primes de conversion": {}, + "1058-Autres primes": {} + }, + "106-\u00c9carts de r\u00e9\u00e9valuation": { + "1061-\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": {}, + "1062-\u00c9carts de r\u00e9\u00e9valuation libre": {} + }, + "109-Apporteurs, capital souscrit, non appel\u00e9": {} + }, + "11-R\u00e9serves": { + "111-R\u00e9serve l\u00e9gale": {}, + "112-R\u00e9serves statutaires ou contractuelles": {}, + "113-R\u00e9serves r\u00e9glement\u00e9es": { + "1131-R\u00e9serves de plus-values nettes \u00e0 long terme": {}, + "1132-R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {}, + "1133-R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": {}, + "1134-R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": {}, + "1135-Autres r\u00e9serves r\u00e9glement\u00e9es": {} + }, + "118-Autres r\u00e9serves": { + "1181-R\u00e9serves facultatives": {}, + "1188-R\u00e9serves diverses": {} + } + }, + "12-Report \u00e0 nouveau": { + "121-Report \u00e0 nouveau cr\u00e9diteur": {}, + "129-Report \u00e0 nouveau d\u00e9biteur": { + "1291-Perte nette \u00e0 reporter": {}, + "1292-Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": {} + } + }, + "13-R\u00e9sultat net de l\u2019exercice": { + "130-R\u00e9sultat en instance d\u2019affectation": { + "1301-R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": {}, + "1309-R\u00e9sultat en instance d\u2019affectation : perte": {} + }, + "131-R\u00e9sultat net : b\u00e9n\u00e9fice": {}, + "132-Marge commerciale (MC)": {}, + "133-Valeur ajout\u00e9e (VA)": {}, + "134-Exc\u00e9dent brut d\u2019exploitation (EBE)": {}, + "135-R\u00e9sultat d\u2019exploitation (RE)": {}, + "136-R\u00e9sultat financier (RF)": {}, + "137-R\u00e9sultat des activit\u00e9s ordinaires (RAO)": {}, + "138-R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "1381-R\u00e9sultat de fusion": {}, + "1382-R\u00e9sultat d\u2019apport partiel d\u2019actif": {}, + "1383-R\u00e9sultat de scission": {}, + "1384-R\u00e9sultat de liquidation": {} + }, + "139-R\u00e9sultat net : perte": {} + }, + "14-Subventions d\u2019investissement": { + "141-Subventions d\u2019\u00e9quipement": { + "1411-\u00c9tat": {}, + "1412-R\u00e9gions": {}, + "1413-D\u00e9partements": {}, + "1414-Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": {}, + "1415-Entit\u00e9s publiques ou mixtes": {}, + "1416-Entit\u00e9s et organismes priv\u00e9s": {}, + "1417-Organismes internationaux": {}, + "1418-Autres": {} + }, + "148-Autres subventions d\u2019investissement": {} + }, + "15-Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "151-Amortissements d\u00e9rogatoires": {}, + "152-Plus-values de cession \u00e0 r\u00e9investir": {}, + "153-Fonds r\u00e9glement\u00e9s": { + "1531-Fonds National": {}, + "1532-Pr\u00e9l\u00e8vement pour le Budget": {} + }, + "154-Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": {}, + "155-Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "1551-Reconstitution des gisements miniers et p\u00e9troliers": {} + }, + "156-Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "1561-Hausse de prix": {}, + "1562-Fluctuation des cours": {} + }, + "157-Provisions pour investissement": {}, + "158-Autres provisions et fonds r\u00e9glement\u00e9s": {} + }, + "16-Emprunts et dettes assimil\u00e9es": { + "161-Emprunts obligataires": { + "1611-Emprunts obligataires ordinaires": {}, + "1612-Emprunts obligataires convertibles en actions": {}, + "1613-Emprunts obligataires remboursables en actions": {}, + "1618-Autres emprunts obligataires": {} + }, + "162-Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "163-Avances re\u00e7ues de l\u2019\u00c9tat": {}, + "164-Avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "165-D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "1651-D\u00e9p\u00f4ts": {}, + "1652-Cautionnements": {} + }, + "166-Int\u00e9r\u00eats courus": { + "1661-Sur emprunts obligataires": {}, + "1662-Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "1663-Sur avances re\u00e7ues de l\u2019\u00c9tat": {}, + "1664-Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "1665-Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": {}, + "1667-Sur avances assorties de conditions particuli\u00e8res": {}, + "1668-Sur autres emprunts et dettes": {} + }, + "167-Avances assorties de conditions particuli\u00e8res": { + "1671-Avances bloqu\u00e9es pour augmentation du capital": {}, + "1672-Avances conditionn\u00e9es par l\u2019\u00c9tat": {}, + "1673-Avances conditionn\u00e9es par les autres organismes africains": {}, + "1674-Avances conditionn\u00e9es par les organismes internationaux": {} + }, + "168-Autres emprunts et dettes": { + "1681-Rentes viag\u00e8res capitalis\u00e9es": {}, + "1682-Billets de fonds": {}, + "1683-Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": {}, + "1684-Emprunts participatifs": {}, + "1685-Participation des travailleurs aux b\u00e9n\u00e9fices": {}, + "1686-Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": {} + } + }, + "17-Dettes de location acquisition": { + "172-Dettes de location acquisition / cr\u00e9dit bail immobilier": {}, + "173-Dettes de location acquisition / cr\u00e9dit bail mobilier": {}, + "174-Dettes de location acquisition / location de vente": {}, + "176-Int\u00e9r\u00eats courus": { + "1762-Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": {}, + "1763-Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": {}, + "1764-Sur dettes de location acquisition / location-vente": {}, + "1768-Sur autres dettes de location acquisition": {} + }, + "178-Autres dettes de location acquisition": {} + }, + "18-Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "181-Dettes li\u00e9es \u00e0 des participations": { + "1811-Dettes li\u00e9es \u00e0 des participations (groupe)": {}, + "1812-Dettes li\u00e9es \u00e0 des participations (hors groupe)": {} + }, + "182-Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "183-Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": {}, + "184-Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "185-Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "186-Comptes de liaison charges": {}, + "187-Comptes de liaison produits": {}, + "188-Comptes de liaison des soci\u00e9t\u00e9s en participation": {} + }, + "19-Provisions pour risques et charges": { + "191-Provisions pour litiges": {}, + "192-Provisions pour garanties donn\u00e9es aux clients": {}, + "193-Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": {}, + "194-Provisions pour pertes de change": {}, + "195-Provisions pour imp\u00f4ts": {}, + "196-Provisions pour pensions et obligations similaires": { + "1961-Provisions pour pensions et obligations similaires engagement de retraite": {}, + "1962-Actif du r\u00e9gime de retraite": {} + }, + "197-Provisions pour restructuration": {}, + "198-Autres provisions pour risques et charges": { + "1981-Provisions pour amendes et p\u00e9nalit\u00e9s": {}, + "1983-Provisions pour propre assureur": {}, + "1984-Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "1985-Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": {}, + "1988-Provisions pour divers risques et charges": {} + } + }, + "root_type": "Equity" + }, + "2-Comptes d\u2019actif immobilis\u00e9": { + "21-Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "211-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "212-Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "2121-Brevets": { + "account_type": "Fixed Asset" + }, + "2122-Licences": { + "account_type": "Fixed Asset" + }, + "2123-Concessions de service public": { + "account_type": "Fixed Asset" + }, + "2128-Autres concessions et droits similaires": { + "account_type": "Fixed Asset" + } + }, + "213-Logiciels et sites internet": { + "account_type": "Fixed Asset", + "2131-Logiciels": { + "account_type": "Fixed Asset" + }, + "2132-Sites internet": { + "account_type": "Fixed Asset" + } + }, + "214-Marques": { + "account_type": "Fixed Asset" + }, + "215-Fonds commercial": { + "account_type": "Fixed Asset" + }, + "216-Droit au bail": { + "account_type": "Fixed Asset" + }, + "217-Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset" + }, + "218-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "2181-Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset" + }, + "2182-Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset" + }, + "2183-Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset" + }, + "2184-Co\u00fbts des franchises": { + "account_type": "Fixed Asset" + }, + "2188-Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset" + } + }, + "219-Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "2191-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "2193-Logiciels et internet": { + "account_type": "Fixed Asset" + }, + "2198-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset" + } + } + }, + "22-Terrains": { + "account_type": "Fixed Asset", + "221-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "2211-Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset" + }, + "2212-Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset" + }, + "2218-Autres terrains": { + "account_type": "Fixed Asset" + } + }, + "222-Terrains nus": { + "account_type": "Fixed Asset", + "2221-Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset" + }, + "2228-Autres terrains nus": { + "account_type": "Fixed Asset" + } + }, + "223-Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "2231-Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset" + }, + "2232-Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset" + }, + "2234-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset" + }, + "2235-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset" + }, + "2238-Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset" + } + }, + "224-Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "2241-Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset" + }, + "2245-Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset" + }, + "2248-Autres travaux": { + "account_type": "Fixed Asset" + } + }, + "225-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "2251-Carri\u00e8res": { + "account_type": "Fixed Asset" + } + }, + "226-Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "2261-Parkings": { + "account_type": "Fixed Asset" + } + }, + "227-Terrains mis en concession": { + "account_type": "Fixed Asset" + }, + "228-Autres terrains": { + "account_type": "Fixed Asset", + "2281-Terrains immeubles de placement": { + "account_type": "Fixed Asset" + }, + "2285-Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset" + }, + "2286-Terrains de location acquisition": { + "account_type": "Fixed Asset" + }, + "2288-Divers terrains": { + "account_type": "Fixed Asset" + } + }, + "229-Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "2291-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset" + }, + "2292-Terrains nus": { + "account_type": "Fixed Asset" + }, + "2295-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset" + }, + "2298-Autres terrains": { + "account_type": "Fixed Asset" + } + } + }, + "23-B\u00e2timents, installations techniques et agencements": { + "231-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "2311-B\u00e2timents industriels": {}, + "2312-B\u00e2timents agricoles": {}, + "2313-B\u00e2timents administratifs et commerciaux": {}, + "2314-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2315-B\u00e2timents immeubles de placement": {}, + "2316-B\u00e2timents de location acquisition": {} + }, + "232-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "2321-B\u00e2timents industriels": {}, + "2322-B\u00e2timents agricoles": {}, + "2323-B\u00e2timents administratifs et commerciaux": {}, + "2324-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2325-B\u00e2timents immeubles de placement": {}, + "2326-B\u00e2timents de location acquisition": {} + }, + "233-Ouvrages d\u2019infrastructure": { + "2331-Voies de terre": {}, + "2332-Voies de fer": {}, + "2333-Voies d\u2019eau": {}, + "2334-Barrages, Digues": {}, + "2335-Pistes d\u2019a\u00e9rodrome": {}, + "2338-Autres ouvrages d\u2019infrastructures": {} + }, + "234-Am\u00e9nagements, agencements et installations techniques": { + "2341-Installations complexes sp\u00e9cialis\u00e9es sur sol propre": {}, + "2342-Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": {}, + "2343-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": {}, + "2344-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": {}, + "2345-Am\u00e9nagements et agencements des b\u00e2timents": {} + }, + "235-Am\u00e9nagements de bureaux": { + "2351-Installations g\u00e9n\u00e9rales": {}, + "2358-Autres am\u00e9nagements de bureaux": {} + }, + "237-B\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "238-Autres installations et agencements": {}, + "239-B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "2391-B\u00e2timents en cours": {}, + "2392-Installations en cours": {}, + "2393-Ouvrages d\u2019infrastructure en cours": {}, + "2394-Am\u00e9nagements et agencements et installations techniques en cours": {}, + "2395-Am\u00e9nagements de bureaux en cours": {}, + "2398-Autres installations et agencements en cours": {} + } + }, + "24-Mat\u00e9riel, mobilier et actifs biologiques": { + "241-Mat\u00e9riel et outillage industriel et commercial": { + "2411-Mat\u00e9riel industriel": {}, + "2412-Outillage industriel": {}, + "2413-Mat\u00e9riel commercial": {}, + "2414-Outillage commercial": {}, + "2416-Mat\u00e9riel & outillage industriel et commercial de location-acquisition": {} + }, + "242-Mat\u00e9riel et outillage agricole": { + "2421-Mat\u00e9riel agricole": {}, + "2422-Outillage agricole": {}, + "2426-Mat\u00e9riel & outillage agricole de location-acquisition": {} + }, + "243-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "244-Mat\u00e9riel et mobilier": { + "2441-Mat\u00e9riel de bureau": {}, + "2442-Mat\u00e9riel informatique": {}, + "2443-Mat\u00e9riel bureautique": {}, + "2444-Mobilier de bureau": {}, + "2445-Mat\u00e9riel et mobilier immeubles de placement": {}, + "2446-Mat\u00e9riel et mobilier de location acquisition": {}, + "2447-Mat\u00e9riel et mobilier des logements du personnel": {} + }, + "245-Mat\u00e9riel de transport": { + "2451-Mat\u00e9riel automobile": {}, + "2452-Mat\u00e9riel ferroviaire": {}, + "2453-Mat\u00e9riel fluvial, lagunaire": {}, + "2454-Mat\u00e9riel naval": {}, + "2455-Mat\u00e9riel a\u00e9rien": {}, + "2456-Mat\u00e9riel de transport de location-acquisition": {}, + "2457-Mat\u00e9riel hippomobile": {}, + "2458-Autres mat\u00e9riels de transport": {} + }, + "246-Actifs biologiques": { + "2461-Cheptel, animaux de trait": {}, + "2462-Cheptel, animaux reproducteurs": {}, + "2463-Animaux de garde": {}, + "2465-Plantations agricoles": {}, + "2468-Autres actifs biologiques": {} + }, + "247-Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "2471-Agencements et am\u00e9nagements du mat\u00e9riel": {}, + "2472-Agencements et am\u00e9nagements des actifs biologiques": {}, + "2478-Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": {} + }, + "248-Autres mat\u00e9riels et mobiliers": { + "2481-Collections et \u0153uvres d\u2019art": {}, + "2488-Divers mat\u00e9riels mobiliers": {} + }, + "249-Mat\u00e9riels et actifs biologiques en cours": { + "2491-Mat\u00e9riel et outillage industriel et commercial": {}, + "2492-Mat\u00e9riel et outillage agricole": {}, + "2493-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2494-Mat\u00e9riel et mobilier de bureau": {}, + "2495-Mat\u00e9riel de transport": {}, + "2496-Actifs biologiques": {}, + "2497-Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": {}, + "2498-Autres mat\u00e9riels et actifs biologiques en cours": {} + } + }, + "25-Avances et acomptes vers\u00e9s sur immobilisations": { + "251-Avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "252-Avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "26-Titres de participation": { + "261-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "262-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "263-Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "265-Participations dans des organismes professionnels": {}, + "266-Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {}, + "268-Autres titres de participation": {} + }, + "27-Autres immobilisations financi\u00e8res": { + "271-Pr\u00eats et cr\u00e9ances": { + "2711-Pr\u00eats participatifs": {}, + "2712-Pr\u00eats aux associ\u00e9s": {}, + "2713-Billets de fonds": {}, + "2714-Titres pr\u00eat\u00e9s": {}, + "2718-Autres pr\u00eats et cr\u00e9ances": {} + }, + "272-Pr\u00eats au personnel": { + "2721-Pr\u00eats immobiliers": {}, + "2722-Pr\u00eats mobiliers et d\u2019installation": {}, + "2728-Autres pr\u00eats au personnel": {} + }, + "273-Cr\u00e9ances sur l\u2019\u00c9tat": { + "2731-Retenues de garantie": {}, + "2733-Fonds r\u00e9glement\u00e9": {}, + "2734-Cr\u00e9ances sur le conc\u00e9dant": {}, + "2738-Autres cr\u00e9ances sur l\u2019\u00c9tat": {} + }, + "274-Titres immobilis\u00e9s": { + "2741-Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": {}, + "2742-Titres participatifs": {}, + "2743-Certificats d\u2019investissement": {}, + "2744-Parts de fonds commun de placement (FCP)": {}, + "2745-Obligations": {}, + "2746-Actions ou parts propres": {}, + "2748-Autres titres immobilis\u00e9s": {} + }, + "275-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "2751-D\u00e9p\u00f4ts pour loyers d\u2019avance": {}, + "2752-D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": {}, + "2753-D\u00e9p\u00f4ts pour l\u2019eau": {}, + "2754-D\u00e9p\u00f4ts pour le gaz": {}, + "2755-D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": {}, + "2756-Cautionnements sur march\u00e9s publics": {}, + "2757-Cautionnements sur autres op\u00e9rations": {}, + "2758-Autres d\u00e9p\u00f4ts et cautionnements": {} + }, + "276-Int\u00e9r\u00eats courus": { + "2761-Pr\u00eats et cr\u00e9ances non commerciales": {}, + "2762-Pr\u00eats au personnel": {}, + "2763-Cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2764-Titres immobilis\u00e9s": {}, + "2765-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2767-Cr\u00e9ances rattach\u00e9es \u00e0 des participations": {}, + "2768-Immobilisations financi\u00e8res diverses": {} + }, + "277-Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "2771-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": {}, + "2772-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": {}, + "2773-Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "2774-Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {} + }, + "278-Immobilisations financi\u00e8res diverses": { + "2781-Cr\u00e9ances diverses groupe": {}, + "2782-Cr\u00e9ances diverses hors groupe": {}, + "2784-Banques d\u00e9p\u00f4ts \u00e0 terme": {}, + "2785-Or et m\u00e9taux pr\u00e9cieux": {}, + "2788-Autres immobilisations financi\u00e8res": {} + } + }, + "28-Amortissements": { + "account_type": "Accumulated Depreciation", + "281-Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "2811-Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation" + }, + "2812-Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation" + }, + "2813-Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation" + }, + "2814-Amortissements des marques": { + "account_type": "Accumulated Depreciation" + }, + "2815-Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation" + }, + "2816-Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation" + }, + "2817-Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation" + }, + "2818-Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation" + } + }, + "282-Amortissements des terrains": { + "2824-Amortissements des travaux de mise en valeur des terrains": {} + }, + "283-Amortissements des b\u00e2timents, installations techniques et agencements": { + "2831-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2832-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2833-Amortissements des ouvrages d\u2019infrastructure": {}, + "2834-Amortissements des am\u00e9nagements, agencements et installations techniques": {}, + "2835-Amortissements des am\u00e9nagements de bureaux": {}, + "2837-Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2838-Amortissements des autres installations et agencements": {} + }, + "284-Amortissements du mat\u00e9riel": { + "2841-Amortissements du mat\u00e9riel et outillage industriel et commercial": {}, + "2842-Amortissements du mat\u00e9riel et outillage agricole": {}, + "2843-Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2844-Amortissements du mat\u00e9riel et mobilier": {}, + "2845-Amortissements du mat\u00e9riel de transport": {}, + "2846-Amortissements des actifs biologiques": {}, + "2847-Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2848-Amortissements des autres mat\u00e9riels": {} + } + }, + "29-D\u00e9pr\u00e9ciations des immobilisations": { + "291-D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "2911-D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": {}, + "2912-D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": {}, + "2913-D\u00e9pr\u00e9ciations des logiciels et sites internet": {}, + "2914-D\u00e9pr\u00e9ciations des marques": {}, + "2915-D\u00e9pr\u00e9ciations du fonds commercial": {}, + "2916-D\u00e9pr\u00e9ciations du droit au bail": {}, + "2917-D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": {}, + "2918-D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": {}, + "2919-D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": {} + }, + "292-D\u00e9pr\u00e9ciations des terrains": { + "2921-D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": {}, + "2922-D\u00e9pr\u00e9ciations des terrains nus": {}, + "2923-D\u00e9pr\u00e9ciations des terrains b\u00e2tis": {}, + "2924-D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": {}, + "2925-D\u00e9pr\u00e9ciations des terrains de gisement": {}, + "2926-D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": {}, + "2927-D\u00e9pr\u00e9ciations des terrains mis en concession": {}, + "2928-D\u00e9pr\u00e9ciations des autres terrains": {}, + "2929-D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": {} + }, + "293-D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "2931-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2932-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2933-D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": {}, + "2934-D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": {}, + "2935-D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": {}, + "2937-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2938-D\u00e9pr\u00e9ciations des autres installations et agencements": {}, + "2939-D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": {} + }, + "294-D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "2941-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": {}, + "2942-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": {}, + "2943-D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2944-D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": {}, + "2945-D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": {}, + "2946-D\u00e9pr\u00e9ciations des actifs biologiques": {}, + "2947-D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2948-D\u00e9pr\u00e9ciations des autres mat\u00e9riels": {}, + "2949-D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": {} + }, + "295-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "2951-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "2952-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "296-D\u00e9pr\u00e9ciations des titres de participation": { + "2961-D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "2962-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "2963-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "2965-D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": {}, + "2966-D\u00e9pr\u00e9ciations des parts dans des GIE": {}, + "2968-D\u00e9pr\u00e9ciations des autres titres de participation": {} + }, + "297-D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "2971-D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": {}, + "2972-D\u00e9pr\u00e9ciations des pr\u00eats au personnel": {}, + "2973-D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2974-D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": {}, + "2975-D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2977-D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": {}, + "2978-D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": {} + } + }, + "root_type": "Asset" + }, + "3-Comptes de Stocks": { + "31-Marchandises": { + "311-Marchandises A": { + "3111-Marchandises A1": {}, + "3112-Marchandises A2": {} + }, + "312-Marchandises B": { + "3121-Marchandises B1": {}, + "3122-Marchandises B2": {} + }, + "313-Actifs biologiques": { + "3131-Animaux": {}, + "3132-V\u00e9g\u00e9taux": {} + }, + "318-Marchandises hors activit\u00e9s ordinaires (HAO)": {} + }, + "32-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "321-Mati\u00e8res A": {}, + "322-Mati\u00e8res B": {}, + "323-Fournitures (A, B)": {} + }, + "33-Autres approvisionnements": { + "331-Mati\u00e8res consommables": {}, + "332-Fournitures d\u2019atelier et d\u2019usine": {}, + "333-Fournitures de magasin": {}, + "334-Fournitures de bureau": {}, + "335-Emballages": { + "3351-Emballages perdus": {}, + "3352-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "3353-Emballages \u00e0 usage mixte": {}, + "3358-Autres emballages": {} + }, + "338-Autres mati\u00e8res": {} + }, + "34-Produits en cours": { + "341-Produits en cours": { + "3411-Produits en cours P1": {}, + "3412-Produits en cours P2": {} + }, + "342-Travaux en cours": { + "3421-Travaux en cours T1": {}, + "3422-Travaux en cours T2": {} + }, + "343-Produits interm\u00e9diaires en cours": { + "3431-Produits interm\u00e9diaires A": {}, + "3432-Produits interm\u00e9diaires B": {} + }, + "344-Produits r\u00e9siduels en cours": { + "3441-Produits r\u00e9siduels A": {}, + "3442-Produits r\u00e9siduels B": {} + }, + "345-Actifs biologiques en cours": { + "3451-Animaux": {}, + "3452-V\u00e9g\u00e9taux": {} + } + }, + "35-Services en cours": { + "351-\u00c9tudes en cours": { + "3511-\u00c9tudes en cours E1": {}, + "3512-\u00c9tudes en cours E2": {} + }, + "352-Prestations de services en cours": { + "3521-Prestations de services S1": {}, + "3522-Prestations de services S2": {} + } + }, + "36-Produits finis": { + "361-Produits finis A": {}, + "362-Produits finis B": {}, + "363-Actifs biologiques": { + "3631-Animaux": {}, + "3632-V\u00e9g\u00e9taux": {}, + "3638-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "37-Produits interm\u00e9diaires et r\u00e9siduels": { + "371-Produits interm\u00e9diaires": { + "3711-Produits interm\u00e9diaires A": {}, + "3712-Produits interm\u00e9diaires B": {} + }, + "372-Produits r\u00e9siduels": { + "3721-D\u00e9chets": {}, + "3722-Rebuts": {}, + "3723-Mati\u00e8res de R\u00e9cup\u00e9ration": {} + }, + "373-Actifs biologiques": { + "3731-Animaux": {}, + "3732-V\u00e9g\u00e9taux": {}, + "3738-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "38-Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "381-Marchandises en cours de route": {}, + "382-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": {}, + "383-Autres approvisionnements en cours de route": {}, + "386-Produits finis en cours de route": {}, + "387-Stock en consignation ou en d\u00e9p\u00f4t": { + "3871-Stock en consignation": {}, + "3872-Stock en d\u00e9p\u00f4t": {} + }, + "388-Stock provenant d\u2019immobilisations mises hors service ou au rebut": {} + }, + "39-D\u00e9pr\u00e9ciations des stocks et encours de production": { + "391-D\u00e9pr\u00e9ciations des stocks de marchandises": {}, + "392-D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "393-D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": {}, + "394-D\u00e9pr\u00e9ciations des productions en cours": {}, + "395-D\u00e9pr\u00e9ciations des services en cours": {}, + "396-D\u00e9pr\u00e9ciations des stocks de produits finis": {}, + "397-D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": {}, + "398-D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": {} + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "409-Fournisseurs d\u00e9biteurs": { + "4091-Fournisseurs Avances et acomptes vers\u00e9s": {}, + "4092-Fournisseurs Groupe avances et acomptes vers\u00e9s": {}, + "4093-Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": {}, + "4094-Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": {}, + "4098-Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": {} + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "411-Clients": { + "4111-Clients": { + "account_type": "Receivable" + }, + "4112-Clients groupe": { + "account_type": "Receivable" + }, + "4114-Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable" + }, + "4115-Clients, organismes internationaux": { + "account_type": "Receivable" + }, + "4116-Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable" + }, + "4117-Client, retenues de garantie": { + "account_type": "Receivable" + }, + "4118-Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "412-Clients, effets \u00e0 recevoir en portefeuille": { + "4121-Clients, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4122-Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4124-\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4125-Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "413-Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "4131-Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable" + }, + "4132-Clients, effets impay\u00e9s": { + "account_type": "Receivable" + }, + "4133-Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable" + }, + "4138-Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "414-Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "4141-Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4142-Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable" + }, + "4146-Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4147-Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "415-Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable" + }, + "416-Cr\u00e9ances clients litigieuses ou douteuses": { + "4161-Cr\u00e9ances litigieuses": { + "account_type": "Receivable" + }, + "4162-Cr\u00e9ances douteuses": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "418-Clients, produits \u00e0 recevoir": { + "4181-Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable" + }, + "4186-Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "421-Personnel, avances et acomptes": { + "4211-Personnel, avances": {}, + "4212-Personnel, acomptes": {}, + "4213-Frais avanc\u00e9s et fournitures au personnel": {} + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "4311-Prestations familiales": {}, + "4312-Accidents de travail": {}, + "4313-Caisse de retraite obligatoire": {}, + "4314-Caisse de retraite facultative": {}, + "4318-Autres cotisations sociales": {} + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "4331-Mutuelle": {}, + "4332-Assurances retraite": {}, + "4333-Assurances et organismes de sant\u00e9": {} + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4387-Produits \u00e0 recevoir": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "443-\u00c9tat, TVA factur\u00e9e": { + "4431-TVA factur\u00e9e sur ventes": {}, + "4432-TVA factur\u00e9e sur prestations de services": {}, + "4433-TVA factur\u00e9e sur travaux": {}, + "4434-TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": {}, + "4435-TVA sur factures \u00e0 \u00e9tablir": {} + }, + "445-\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "4451-TVA r\u00e9cup\u00e9rable sur immobilisations": {}, + "4452-TVA r\u00e9cup\u00e9rable sur achats": {}, + "4453-TVA r\u00e9cup\u00e9rable sur transport": {}, + "4454-TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": {}, + "4455-TVA r\u00e9cup\u00e9rable sur factures non parvenues": {}, + "4456-TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": {} + }, + "448-\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "4486-Charges \u00e0 payer": {}, + "4487-Produits \u00e0 recevoir": {} + }, + "449-\u00c9tat, cr\u00e9ances et dettes diverses": { + "4491-\u00c9tat, obligations cautionn\u00e9es": {}, + "4492-\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": {}, + "4493-\u00c9tat, fonds de dotation \u00e0 recevoir": {}, + "4494-\u00c9tat, subventions investissement \u00e0 recevoir": {}, + "4495-\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": {}, + "4496-\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": {}, + "4497-\u00c9tat, avances sur subventions": {}, + "4499-\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": {} + } + }, + "45-Organismes internationaux (ACTIF)": { + "451-Op\u00e9rations avec les organismes africains": {}, + "452-Op\u00e9rations avec les autres organismes internationaux": {}, + "458-Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "4581-Organismes internationaux, fonds de dotation \u00e0 recevoir": {}, + "4582-Organismes internationaux, subventions \u00e0 recevoir": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "4613-Apporteurs, capital appel\u00e9, non vers\u00e9": {}, + "4614-Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": {}, + "4618-Apporteurs, titres \u00e0 \u00e9changer": {} + }, + "467-Apporteurs, restant d\u00fb sur capital appel\u00e9": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "4721-Cr\u00e9ances sur cessions de titres de placement": {}, + "4726-Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": {} + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "4731-Mandants": {}, + "4732-Mandataires": {}, + "4733-Commettants": {}, + "4734-Commissionnaires": {}, + "4739-\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "4747-Compte de r\u00e9partition p\u00e9riodique des produits": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "4751-Compte actif": { + "account_type": "Temporary" + } + }, + "476-Charges constat\u00e9es d\u2019avance": {}, + "478-\u00c9carts de conversion actif": { + "4781-Diminution des cr\u00e9ances d\u2019exploitation": {}, + "4782-Diminution des cr\u00e9ances financi\u00e8res": {}, + "4783-Augmentation des dettes d\u2019exploitation": {}, + "4784-Augmentation des dettes financi\u00e8res": {}, + "4786-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4788-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "485-Cr\u00e9ances sur cessions d\u2019immobilisations": { + "4851-En compte, immobilisations incorporelles": {}, + "4852-En compte, immobilisations corporelles": {}, + "4853-Effets \u00e0 recevoir, immobilisations incorporelles": {}, + "4854-Effets \u00e0 recevoir, immobilisations corporelles": {}, + "4855-Effets escompt\u00e9s non \u00e9chus": {}, + "4857-Retenues de garantie": {}, + "4858-Factures \u00e0 \u00e9tablir": {} + }, + "488-Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": {} + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "491-D\u00e9pr\u00e9ciations des comptes clients": { + "4911-Cr\u00e9ances litigieuses": {}, + "4912-Cr\u00e9ances douteuses": {} + }, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {}, + "496-D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "4962-Associ\u00e9s, comptes courants": {}, + "4963-Associ\u00e9s, op\u00e9rations faites en commun": {}, + "4966-Groupe, comptes courants": {} + }, + "497-D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": {}, + "498-D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "4985-Cr\u00e9ances sur cessions d\u2019immobilisations": {}, + "4986-Cr\u00e9ances sur cessions de titres de placement": {}, + "4988-Autres cr\u00e9ances HAO": {} + }, + "499-Provisions pour risques \u00e0 court terme": { + "4991-Sur op\u00e9rations d\u2019exploitation": {}, + "4997-Sur op\u00e9rations financi\u00e8res": {}, + "4998-Sur op\u00e9rations HAO": {} + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "401-Fournisseurs, dettes en compte": { + "4011-Fournisseurs": { + "account_type": "Payable" + }, + "4012-Fournisseurs groupe": { + "account_type": "Payable" + }, + "4013-Fournisseurs sous-traitants": { + "account_type": "Payable" + }, + "4016-Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable" + }, + "4017-Fournisseur, retenues de garantie": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "402-Fournisseurs, effets \u00e0 payer": { + "4021-Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable" + }, + "4022-Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable" + }, + "4023-Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "404-Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "4041-Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4042-Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable" + }, + "4046-Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4047-Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "408-Fournisseurs, factures non parvenues": { + "4081-Fournisseurs": { + "account_type": "Stock Received But Not Billed" + }, + "4082-Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed" + }, + "4083-Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed" + }, + "4086-Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "419-Clients cr\u00e9diteurs": { + "4191-Clients, avances et acomptes re\u00e7us": {}, + "4192-Clients groupe, avances et acomptes re\u00e7us": {}, + "4194-Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": {}, + "4198-Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": {} + } + }, + "42-Personnel (PASSIF)": { + "422-Personnel, r\u00e9mun\u00e9rations dues": {}, + "423-Personnel, oppositions, saisies-arr\u00eats": { + "4231-Personnel, oppositions": {}, + "4232-Personnel, saisies-arr\u00eats": {}, + "4233-Personnel, avis \u00e0 tiers d\u00e9tenteur": {} + }, + "424-Personnel, \u0153uvres sociales internes": { + "4241-Assistance m\u00e9dicale": {}, + "4242-Allocations familiales": {}, + "4245-Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": {}, + "4248-Autres \u0153uvres sociales internes": {} + }, + "425-Repr\u00e9sentants du personnel": { + "4251-D\u00e9l\u00e9gu\u00e9s du personnel": {}, + "4252-Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": {}, + "4258-Autres repr\u00e9sentants du personnel": {} + }, + "426-Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "4261-Participation aux b\u00e9n\u00e9fices": {}, + "4264-Participation au capital": {} + }, + "427-Personnel d\u00e9p\u00f4ts": {}, + "428-Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "4281-Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": {}, + "4286-Autres charges \u00e0 payer": {}, + "4287-Produits \u00e0 recevoir": {} + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4381-Charges sociales sur gratifications \u00e0 payer": {}, + "4382-Charges sociales sur cong\u00e9s \u00e0 payer": {}, + "4386-Autres charges \u00e0 payer": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "441-\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": {}, + "442-\u00c9tat, autres imp\u00f4ts et taxes": { + "4421-Imp\u00f4ts et taxes d\u2019\u00c9tat": {}, + "4422-Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": {}, + "4423-Imp\u00f4ts et taxes recouvrables sur des obligataires": {}, + "4424-Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": {}, + "4426-Droits de douane": {}, + "4428-Autres imp\u00f4ts et taxes": {} + }, + "444-\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "4441-\u00c9tat, TVA due": {}, + "4449-\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": {} + }, + "446-\u00c9tat, autres taxes sur le chiffre d\u2019affaires": {}, + "447-\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "4471-Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": {}, + "4472-Imp\u00f4ts sur salaires": {}, + "4473-Contribution nationale": {}, + "4474-Contribution nationale de solidarit\u00e9": {}, + "4478-Autres imp\u00f4ts et contributions": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "4611-Apporteurs, apports en nature": {}, + "4612-Apporteurs, apports en num\u00e9raire": {}, + "4615-Apporteurs, versements re\u00e7us sur augmentation de capital": {}, + "4616-Apporteurs, versements anticip\u00e9s": {}, + "4617-Apporteurs d\u00e9faillants": {}, + "4619-Apporteurs, capital \u00e0 rembourser": {} + }, + "462-Associ\u00e9s, comptes courants": { + "4621-Principal": {}, + "4626-Int\u00e9r\u00eats courus": {} + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "4631-Op\u00e9rations courantes": {}, + "4636-Int\u00e9r\u00eats courus": {} + }, + "465-Associ\u00e9s, dividendes \u00e0 payer": {}, + "466-Groupe, comptes courants": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "4711-D\u00e9biteurs divers": {}, + "4712-Cr\u00e9diteurs divers": {}, + "4713-Obligataires": {}, + "4715-R\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "4716-Compte d\u2019affacturage": {}, + "4717-D\u00e9biteurs divers retenues de garantie": {}, + "4718-Apport, compte de fusion et op\u00e9rations assimil\u00e9es": {}, + "4719-Bons de souscription d\u2019actions et d\u2019obligations": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "4746-Compte de r\u00e9partition p\u00e9riodique des charges": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "4752-Compte passif": {} + }, + "477-Produits constat\u00e9s d\u2019avance": {}, + "479-\u00c9carts de conversion passif": { + "4791-Augmentation des cr\u00e9ances d\u2019exploitation": {}, + "4792-Augmentation des cr\u00e9ances financi\u00e8res": {}, + "4793-Diminution des dettes d\u2019exploitation": {}, + "4794-Diminution des dettes financi\u00e8res": {}, + "4797-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4798-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "481-Fournisseurs d\u2019investissements": { + "4811-Immobilisations incorporelles": {}, + "4812-Immobilisations corporelles": {}, + "4813-Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": {}, + "4816-R\u00e9serve de propri\u00e9t\u00e9": {}, + "4817-Retenues de garantie": {}, + "4818-Factures non parvenues": {} + }, + "482-Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "4821-Immobilisations incorporelles": {}, + "4822-Immobilisations corporelles": {} + }, + "484-Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "4887-Produits": {} + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (PASSIF)": { + "490-D\u00e9pr\u00e9ciations des comptes fournisseurs": {}, + "492-D\u00e9pr\u00e9ciations des comptes personnel": {}, + "493-D\u00e9pr\u00e9ciations des comptes organismes sociaux": {}, + "494-D\u00e9pr\u00e9ciations des comptes \u00c9tat et collectivit\u00e9s publiques": {}, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {} + }, + "root_type": "Liability" + }, + "5-Comptes de tr\u00e9sorerie": { + "50-Titres de placement": { + "501-Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "5011-Titres du Tr\u00e9sor \u00e0 court terme": {}, + "5012-Titres d\u2019organismes financiers": {}, + "5013-Bons de caisse \u00e0 court terme": {}, + "5016-Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": {} + }, + "502-Actions": { + "5021-Actions ou parts propres": {}, + "5022-Actions cot\u00e9es": {}, + "5023-Actions non cot\u00e9es": {}, + "5024-Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": {}, + "5025-Autres actions": {}, + "5026-Frais d\u2019acquisition des actions": {} + }, + "503-Obligations": { + "5031-Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": {}, + "5032-Obligations cot\u00e9es": {}, + "5033-Obligations non cot\u00e9es": {}, + "5035-Autres obligations": {}, + "5036-Frais d\u2019acquisition des obligations": {} + }, + "504-Bons de souscription": { + "5042-Bons de souscription d\u2019actions": {}, + "5043-Bons de souscription d\u2019obligations": {} + }, + "505-Titres n\u00e9gociables hors r\u00e9gion": {}, + "506-Int\u00e9r\u00eats courus": { + "5061-Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": {}, + "5062-Actions": {}, + "5063-Obligations": {} + }, + "508-Autres titres de placement et cr\u00e9ances assimil\u00e9es": {} + }, + "51-Valeurs \u00e0 encaisser": { + "511-Effets \u00e0 encaisser": {}, + "512-Effets \u00e0 l\u2019encaissement": {}, + "513-Ch\u00e8ques \u00e0 encaisser": {}, + "514-Ch\u00e8ques \u00e0 l\u2019encaissement": {}, + "515-Cartes de cr\u00e9dit \u00e0 encaisser": {}, + "518-Autres valeurs \u00e0 l\u2019encaissement": { + "5181-Warrants": {}, + "5182-Billets de fonds": {}, + "5185-Ch\u00e8ques de voyage": {}, + "5186-Coupons \u00e9chus": {}, + "5187-Int\u00e9r\u00eats \u00e9chus des obligations": {} + } + }, + "52-Banques": { + "521-Banques locales": { + "5211-Banques en monnaie nationale": { + "account_type": "Bank" + }, + "5215-Banques en devises": { + "account_type": "Bank" + }, + "account_type": "Bank" + }, + "522-Banques autres \u00c9tats r\u00e9gion": {}, + "523-Banques autres \u00c9tats zone mon\u00e9taire": {}, + "524-Banques hors zone mon\u00e9taire": {}, + "525-Banques d\u00e9p\u00f4t \u00e0 terme": {}, + "526-Banques, int\u00e9r\u00eats courus": { + "5261-Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": {}, + "5267-Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": {} + } + }, + "53-\u00c9tablissements financiers et assimil\u00e9s": { + "531-Ch\u00e8ques postaux": {}, + "532-Tr\u00e9sor": {}, + "533-Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": {}, + "536-\u00c9tablissements financiers, int\u00e9r\u00eats courus": {}, + "538-Autres organismes financiers": {} + }, + "54-Instruments de tr\u00e9sorerie": { + "541-Options de taux d\u2019int\u00e9r\u00eat": {}, + "542-Options de taux de change": {}, + "543-Options de taux boursiers": {}, + "544-Instruments de march\u00e9s \u00e0 terme": {}, + "545-Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": {} + }, + "55-Instruments de monnaie \u00e9lectronique": { + "551-Monnaie \u00e9lectronique carte carburant": {}, + "552-Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": {}, + "553-Monnaie \u00e9lectronique carte p\u00e9age": {}, + "554-Porte-monnaie \u00e9lectronique": {}, + "558-Autres instruments de monnaies \u00e9lectroniques": {} + }, + "56-Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "561-Cr\u00e9dits de tr\u00e9sorerie": {}, + "564-Escompte de cr\u00e9dits de campagne": {}, + "565-Escompte de cr\u00e9dits ordinaires": {}, + "566-Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": {} + }, + "57-Caisse": { + "571-Caisse si\u00e8ge social": { + "5711-Caisse en monnaie nationale": {}, + "5712-Caisse en devises": {} + }, + "572-Caisse succursale A": { + "5721-En monnaie nationale": {}, + "5722-En devises": {} + }, + "573-Caisse succursale B": { + "5731-En monnaie nationale": {}, + "5732-En devises": {} + } + }, + "58-R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "581-R\u00e9gies d\u2019avance": {}, + "582-Accr\u00e9ditifs": {}, + "585-Virements de fonds": {}, + "588-Autres virements internes": {} + }, + "59-D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "590-D\u00e9pr\u00e9ciations des titres de placement": {}, + "591-D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": {}, + "592-D\u00e9pr\u00e9ciations des comptes banques": {}, + "593-D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": {}, + "594-D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": {}, + "599-Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": {} + }, + "root_type": "Asset" + }, + "6-Comptes de charges des activit\u00e9s ordinaires": { + "60-Achats et variations de stocks": { + "601-Achats de marchandises": { + "6011-Dans la R\u00e9gion": {}, + "6012-Hors R\u00e9gion": {}, + "6013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6015-Frais sur achats": {}, + "6019-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "602-Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "6021-Dans la R\u00e9gion": {}, + "6022-Hors R\u00e9gion": {}, + "6023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6025-Frais sur achats": {}, + "6029-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "603-Variations des stocks de biens achet\u00e9s": { + "6031-Variations des stocks de marchandises": {}, + "6032-Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "6033-Variations des stocks d\u2019autres approvisionnements": {} + }, + "604-Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "6041-Mati\u00e8res consommables": {}, + "6042-Mati\u00e8res combustibles": {}, + "6043-Produits d\u2019entretien": {}, + "6044-Fournitures d\u2019atelier et d\u2019usine": {}, + "6045-Frais sur achat": {}, + "6046-Fournitures de magasin": {}, + "6047-Fournitures de bureau": {}, + "6049-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "605-Autres achats": { + "6051-Fournitures non stockables Eau": {}, + "6052-Fournitures non stockables \u00c9lectricit\u00e9": {}, + "6053-Fournitures non stockables Autres \u00e9nergies": {}, + "6054-Fournitures d\u2019entretien non stockables": {}, + "6055-Fournitures de bureau non stockables": {}, + "6056-Achats de petit mat\u00e9riel et outillage": {}, + "6057-Achats d\u2019\u00e9tudes et prestations de services": {}, + "6058-Achats de travaux, mat\u00e9riels et \u00e9quipements": {}, + "6059-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "608-Achats d\u2019emballages": { + "6081-Emballages perdus": {}, + "6082-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "6083-Emballages \u00e0 usage mixte": {}, + "6085-Frais sur achats": {}, + "6089-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + } + }, + "61-Transports": { + "612-Transports sur ventes": {}, + "613-Transports pour le compte de tiers": {}, + "614-Transports du personnel": {}, + "616-Transports de plis": {}, + "618-Autres frais de transport": { + "6181-Voyages et d\u00e9placements": {}, + "6182-Transports entre \u00e9tablissements ou chantiers": {}, + "6183-Transports administratifs": {} + } + }, + "62-Services ext\u00e9rieurs": { + "621-Sous-traitance g\u00e9n\u00e9rale": {}, + "622-Locations, charges locatives": { + "6221-Locations de terrains": {}, + "6222-Locations de b\u00e2timents": {}, + "6223-Locations de mat\u00e9riels et outillages": {}, + "6224-Malis sur emballages": {}, + "6225-Locations d\u2019emballages": {}, + "6226-Fermages et loyers du foncier": {}, + "6228-Locations et charges locatives diverses": {} + }, + "623-Redevances de location acquisition": { + "6232-Cr\u00e9dit-bail immobilier": {}, + "6233-Cr\u00e9dit-bail mobilier": {}, + "6234-Location-vente": {}, + "6238-Autres contrats de location acquisition": {} + }, + "624-Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "6241-Entretien et r\u00e9parations des biens immobiliers": {}, + "6242-Entretien et r\u00e9parations des biens mobiliers": {}, + "6243-Maintenance": {}, + "6244-Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "6248-Autres entretiens et r\u00e9parations": {} + }, + "625-Primes d\u2019assurance": { + "6251-Assurances multirisques": {}, + "6252-Assurances mat\u00e9riel de transport": {}, + "6253-Assurances risques d\u2019exploitation": {}, + "6254-Assurances responsabilit\u00e9 du producteur": {}, + "6255-Assurances insolvabilit\u00e9 clients": {}, + "6257-Assurances transport sur ventes": {}, + "6258-Autres primes d\u2019assurances": {} + }, + "626-\u00c9tudes, recherches et documentation": { + "6261-\u00c9tudes et recherches": {}, + "6265-Documentation g\u00e9n\u00e9rale": {}, + "6266-Documentation technique": {} + }, + "627-Publicit\u00e9, publications, relations publiques": { + "6271-Annonces, insertions": {}, + "6272-Catalogues, imprim\u00e9s publicitaires": {}, + "6273-\u00c9chantillons": {}, + "6274-Foires et expositions": {}, + "6275-Publications": {}, + "6276-Cadeaux \u00e0 la client\u00e8le": {}, + "6277-Frais de colloques, s\u00e9minaires, conf\u00e9rences": {}, + "6278-Autres charges de publicit\u00e9 et relations publiques": {} + }, + "628-Frais de t\u00e9l\u00e9communications": { + "6281-Frais de t\u00e9l\u00e9phone": {}, + "6282-Frais de t\u00e9lex": {}, + "6283-Frais de t\u00e9l\u00e9copie": {}, + "6288-Autres frais de t\u00e9l\u00e9communications": {} + } + }, + "63-Autres services ext\u00e9rieurs": { + "631-Frais bancaires": { + "6311-Frais sur titres (vente, garde)": {}, + "6312-Frais sur effets": {}, + "6313-Location de coffres": {}, + "6314-Commissions d\u2019affacturage": {}, + "6315-Commissions sur cartes de cr\u00e9dit": {}, + "6316-Frais d\u2019\u00e9mission d\u2019emprunts": {}, + "6317-Frais sur instruments monnaie \u00e9lectronique": {}, + "6318-Autres frais bancaires": {} + }, + "632-R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "6322-Commissions et courtages sur ventes": {}, + "6324-Honoraires des professions r\u00e9glement\u00e9es": {}, + "6325-Frais d\u2019actes et de contentieux": {}, + "6326-R\u00e9mun\u00e9rations d\u2019affacturage": {}, + "6327-R\u00e9mun\u00e9rations des autres prestataires de services": {}, + "6328-Divers frais": {} + }, + "633-Frais de formation du personnel": {}, + "634-Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "6342-Redevances pour brevets, licences": {}, + "6343-Redevances pour logiciels": {}, + "6344-Redevances pour marques": {}, + "6345-Redevances pour sites internet": {}, + "6346-Redevances pour concessions, droits et valeurs similaires": {} + }, + "635-Cotisations": { + "6351-Cotisations": {}, + "6358-Concours divers": {} + }, + "637-R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "6371-Personnel int\u00e9rimaire": {}, + "6372-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "638-Autres charges externes": { + "6381-Frais de recrutement du personnel": {}, + "6382-Frais de d\u00e9m\u00e9nagement": {}, + "6383-R\u00e9ceptions": {}, + "6384-Missions": {}, + "6385-Charges de copropri\u00e9t\u00e9": {} + } + }, + "64-Imp\u00f4ts et taxes": { + "641-Imp\u00f4ts et taxes directs": { + "6411-Imp\u00f4ts fonciers et taxes annexes": {}, + "6412-Patentes, licences et taxes annexes": {}, + "6413-Taxes sur appointements et salaires": {}, + "6414-Taxes d\u2019apprentissage": {}, + "6415-Formation professionnelle continue": {}, + "6418-Autres imp\u00f4ts et taxes directs": {} + }, + "645-Imp\u00f4ts et taxes indirects": {}, + "646-Droits d\u2019enregistrement": { + "6461-Droits de mutation": {}, + "6462-Droits de timbre": {}, + "6463-Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": {}, + "6464-Vignettes": {}, + "6468-Autres droits": {} + }, + "647-P\u00e9nalit\u00e9s, amendes fiscales": { + "6471-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": {}, + "6472-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": {}, + "6473-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": {}, + "6474-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": {}, + "6478-Autres p\u00e9nalit\u00e9s et amendes fiscales": {} + }, + "648-Autres imp\u00f4ts et taxes": {} + }, + "65-Autres charges": { + "651-Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "6511-Clients": {}, + "6515-Autres d\u00e9biteurs": {} + }, + "652-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "6521-Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": {}, + "6525-Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "654-Valeurs comptables des cessions courantes d\u2019immobilisations": { + "6541-Immobilisations incorporelles": {}, + "6542-Immobilisations corporelles": {} + }, + "656-Perte de change sur cr\u00e9ances et dettes commerciale": {}, + "657-P\u00e9nalit\u00e9s et amendes p\u00e9nales": {}, + "658-Charges diverses": { + "6581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "6582-Dons": {}, + "6583-M\u00e9c\u00e9nat": {}, + "6588-Autres charges diverses": {} + }, + "659-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "6591-Sur risques \u00e0 court terme": {}, + "6593-Sur stocks": {}, + "6594-Sur cr\u00e9ances": {}, + "6598-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": {} + } + }, + "66-Charges de personnel": { + "661-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "6611-Appointements salaires et commissions": {}, + "6612-Primes et gratifications": {}, + "6613-Cong\u00e9s pay\u00e9s": {}, + "6614-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6615-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6616-Suppl\u00e9ment familial": {}, + "6617-Avantages en nature": {}, + "6618-Autres r\u00e9mun\u00e9rations directes": {} + }, + "662-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "6621-Appointements salaires et commissions": {}, + "6622-Primes et gratifications": {}, + "6623-Cong\u00e9s pay\u00e9s": {}, + "6624-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6625-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6626-Suppl\u00e9ment familial": {}, + "6627-Avantages en nature": {}, + "6628-Autres r\u00e9mun\u00e9rations directes": {} + }, + "663-Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "6631-Indemnit\u00e9s de logement": {}, + "6632-Indemnit\u00e9s de repr\u00e9sentation": {}, + "6633-Indemnit\u00e9s d\u2019expatriation": {}, + "6634-Indemnit\u00e9s de transport": {}, + "6638-Autres indemnit\u00e9s et avantages divers": {} + }, + "664-Charges sociales": { + "6641-Charges sociales sur r\u00e9mun\u00e9ration du personnel national": {}, + "6642-Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": {} + }, + "666-R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "6661-R\u00e9mun\u00e9ration du travail de l\u2019exploitant": {}, + "6662-Charges sociales": {} + }, + "667-R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "6671-Personnel int\u00e9rimaire": {}, + "6672-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "668-Autres charges sociales": { + "6681-Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": {}, + "6682-Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": {}, + "6683-Versements et contributions aux autres \u0153uvres sociales": {}, + "6684-M\u00e9decine du travail et pharmacie": {}, + "6685-Assurances et organismes de sant\u00e9": {}, + "6686-Assurances retraite et fonds de pension": {}, + "6687-Majorations et p\u00e9nalit\u00e9s sociales": {}, + "6688-Charges sociales diverses": {} + } + }, + "67-Frais financiers et charges assimil\u00e9es": { + "671-Int\u00e9r\u00eats des emprunts": { + "6711-Emprunts obligataires": {}, + "6712-Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "6713-Dettes li\u00e9es \u00e0 des participations": {}, + "6714-Primes de remboursement des obligations": {} + }, + "672-Int\u00e9r\u00eats dans loyers de location acquisition": { + "6722-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": {}, + "6723-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": {}, + "6724-Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": {}, + "6728-Int\u00e9r\u00eats dans loyers des autres locations acquisition": {} + }, + "673-Escomptes accord\u00e9s": {}, + "674-Autres int\u00e9r\u00eats": { + "6741-Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": {}, + "6742-Comptes courants bloqu\u00e9s": {}, + "6743-Int\u00e9r\u00eats sur obligations cautionn\u00e9es": {}, + "6744-Int\u00e9r\u00eats sur dettes commerciales": {}, + "6745-Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": {}, + "6748-Int\u00e9r\u00eats sur dettes diverses": {} + }, + "675-Escomptes des effets de commerce": {}, + "676-Pertes de change financi\u00e8res": {}, + "677-Pertes sur titres de placement": { + "6771-Pertes sur cessions de titres de placement": {}, + "6772-Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {} + }, + "678-Pertes et charges sur risques financiers": { + "6781-Sur rentes viag\u00e8res": {}, + "6782-Sur op\u00e9rations financi\u00e8res": {}, + "6784-Sur instruments de tr\u00e9sorerie": {} + }, + "679-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "6791-Sur risques financiers": {}, + "6795-Sur titres de placement": {}, + "6798-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "68-Dotations aux amortissements": { + "681-Dotations aux amortissements d\u2019exploitation": { + "6812-Dotations aux amortissements des immobilisations incorporelles": {}, + "6813-Dotations aux amortissements des immobilisations corporelles": {} + } + }, + "69-Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "691-Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "6911-Dotations aux provisions pour risques et charges": {}, + "6913-Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": {}, + "6914-Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": {} + }, + "697-Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "6971-Dotations aux provisions pour risques et charges": {}, + "6972-Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": {} + } + }, + "root_type": "Expense" + }, + "7-Comptes de produits des activit\u00e9s ordinaires": { + "70-Ventes": { + "701-Ventes de marchandises": { + "7011-Dans la R\u00e9gion": {}, + "7012-Hors R\u00e9gion": {}, + "7013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7015-Sur internet": {}, + "7019-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "702-Ventes de produits finis": { + "7021-Dans la R\u00e9gion": {}, + "7022-Hors R\u00e9gion": {}, + "7023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7025-Sur internet": {}, + "7029-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "703-Ventes de produits interm\u00e9diaires": { + "7031-Dans la R\u00e9gion": {}, + "7032-Hors R\u00e9gion": {}, + "7033-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7034-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7035-Sur internet": {}, + "7039-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "704-Ventes de produits r\u00e9siduels": { + "7041-Dans la R\u00e9gion": {}, + "7042-Hors R\u00e9gion": {}, + "7043-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7044-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7045-Sur internet": {}, + "7049-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "705-Travaux factur\u00e9s": { + "7051-Dans la R\u00e9gion": {}, + "7052-Hors R\u00e9gion": {}, + "7053-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7054-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7055-Sur internet": {}, + "7059-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "706-Services vendus": { + "7061-Dans la R\u00e9gion": {}, + "7062-Hors R\u00e9gion": {}, + "7063-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7064-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7065-Sur internet": {}, + "7069-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "707-Produits accessoires": { + "7071-Ports, emballages perdus et autres frais factur\u00e9s": {}, + "7072-Commissions et courtages": {}, + "7073-Locations": {}, + "7074-Bonis sur reprises et cessions d\u2019emballages": {}, + "7075-Mise \u00e0 disposition de personnel": {}, + "7076-Redevances pour brevets, logiciels, marques et droits similaires": {}, + "7077-Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": {}, + "7078-Autres produits accessoires": {} + } + }, + "71-Subventions d\u2019exploitation": { + "711-Sur produits \u00e0 l\u2019exportation": {}, + "712-Sur produits \u00e0 l\u2019importation": {}, + "713-Sur produits de p\u00e9r\u00e9quation": {}, + "714-Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": {}, + "718-Autres subventions d\u2019exploitation": { + "7181-Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": {}, + "7182-Vers\u00e9es par les organismes internationaux": {}, + "7183-Vers\u00e9es par des tiers": {} + } + }, + "72-Production immobilis\u00e9e": { + "721-Immobilisations incorporelles": {}, + "722-Immobilisations corporelles": { + "7221-Immobilisations corporelles (hors actifs biologiques)": {}, + "7222-Immobilisations corporelles (actifs biologiques)": {} + }, + "724-Production auto-consomm\u00e9e": {}, + "726-Immobilisations financi\u00e8res": {} + }, + "73-Variations des stocks de biens et de services produits": { + "734-Variations des stocks de produits en cours": { + "7341-Produits en cours": {}, + "7342-Travaux en cours": {} + }, + "735-Variations des en-cours de services": { + "7351-\u00c9tudes en cours": {}, + "7352-Prestations de services en cours": {} + }, + "736-Variations des stocks de produits finis": {}, + "737-Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "7371-Produits interm\u00e9diaires": {}, + "7372-Produits r\u00e9siduels": {} + } + }, + "75-Autres produits": { + "751-Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": {}, + "752-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "7521-Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": {}, + "7525-B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "754-Produits des cessions courantes d\u2019immobilisations": { + "7541-Immobilisations incorporelles": {}, + "7542-Immobilisations corporelles": {} + }, + "756-Gains de change sur cr\u00e9ances et dettes commerciales": {}, + "758-Produits divers": { + "7581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "7582-Indemnit\u00e9s d\u2019assurances re\u00e7ues": {}, + "7588-Autres produits divers": {} + }, + "759-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "7591-Sur risques \u00e0 court terme": {}, + "7593-Sur stocks": {}, + "7594-Sur cr\u00e9ances": {}, + "7598-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": {} + } + }, + "77-Revenus financiers et produits assimil\u00e9s": { + "771-Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "7712-Int\u00e9r\u00eats de pr\u00eats": {}, + "7713-Int\u00e9r\u00eats sur cr\u00e9ances diverses": {} + }, + "772-Revenus de participations et autres titres immobilis\u00e9s": { + "7721-Revenus des titres de participation": {}, + "7722-Revenus autres titres immobilis\u00e9s": {} + }, + "773-Escomptes obtenus": {}, + "774-Revenus de placement": { + "7745-Revenus des obligations": {}, + "7746-Revenus des titres de placement": {} + }, + "775-Int\u00e9r\u00eats dans loyers de location acquisition": {}, + "776-Gains de change financiers": {}, + "777-Gains sur cessions de titres de placement": {}, + "778-Gains sur risques financiers": { + "7781-Sur rentes viag\u00e8res": {}, + "7782-Sur op\u00e9rations financi\u00e8res": {}, + "7784-Sur instruments de tr\u00e9sorerie": {} + }, + "779-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "7791-Sur risques financiers": {}, + "7795-Sur titres de placement": {}, + "7798-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "78-Transferts de charges": { + "781-Transferts de charges d\u2019exploitation": {}, + "787-Transferts de charges financi\u00e8res": {} + }, + "79-Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "791-Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "7911-Pour risques et charges": {}, + "7913-Des immobilisations incorporelles": {}, + "7914-Des immobilisations corporelles": {} + }, + "797-Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "7971-Pour risques et charges": {}, + "7972-Des immobilisations financi\u00e8res": {} + }, + "798-Reprises d\u2019amortissements": {}, + "799-Reprises de subventions d\u2019investissement": {} + }, + "root_type": "Income" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "81-Valeurs comptables des cessions d\u2019immobilisations": { + "811-Immobilisations incorporelles": {}, + "812-Immobilisations corporelles": {}, + "816-Immobilisations financi\u00e8res": {} + }, + "83-Charges hors activit\u00e9s ordinaires": { + "831-Charges HAO constat\u00e9es": {}, + "833-Charges li\u00e9es aux op\u00e9rations de restructuration": {}, + "834-Pertes sur cr\u00e9ances HAO": {}, + "835-Dons et lib\u00e9ralit\u00e9s accord\u00e9s": {}, + "836-Abandons de cr\u00e9ances consentis": {}, + "837-Charges li\u00e9es aux op\u00e9rations de liquidation": {}, + "839-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "85-Dotations hors activit\u00e9s ordinaires": { + "851-Dotations aux provisions r\u00e9glement\u00e9es": {}, + "852-Dotations aux amortissements HAO": {}, + "853-Dotations aux d\u00e9pr\u00e9ciations HAO": {}, + "854-Dotations aux provisions pour risques et charges HAO": {}, + "858-Autres dotations HAO": {} + }, + "87-Participation des travailleurs": { + "871-Participation l\u00e9gale aux b\u00e9n\u00e9fices": {}, + "874-Participation contractuelle aux b\u00e9n\u00e9fices": {}, + "878-Autres participations": {} + }, + "89-Imp\u00f4ts sur le r\u00e9sultat": { + "891-Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "8911-Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": {}, + "8912-Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": {}, + "8913-Activit\u00e9s exerc\u00e9es hors R\u00e9gion": {} + }, + "892-Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": {}, + "895-Imp\u00f4t minimum forfaitaire IMF": {}, + "899-D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "8991-D\u00e9gr\u00e8vements": {}, + "8994-Annulations pour pertes r\u00e9troactives": {} + } + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "82-Produits des cessions d\u2019immobilisations": { + "821-Immobilisations incorporelles": {}, + "822-Immobilisations corporelles": {}, + "826-Immobilisations financi\u00e8res": {} + }, + "84-Produits hors activit\u00e9s ordinaires": { + "841-Produits HAO constat\u00e9s": {}, + "843-Produits li\u00e9s aux op\u00e9rations de restructuration": {}, + "844-Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": {}, + "845-Dons et lib\u00e9ralit\u00e9s obtenus": {}, + "846-Abandons de cr\u00e9ances obtenus": {}, + "847-Produits li\u00e9s aux op\u00e9rations de liquidation": {}, + "848-Transferts de charges HAO": {}, + "849-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "86-Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "861-Reprises de provisions r\u00e9glement\u00e9es": {}, + "862-Reprises d\u2019amortissements HAO": {}, + "863-Reprises de d\u00e9pr\u00e9ciations HAO": {}, + "864-Reprises de provisions pour risques et charges HAO": {}, + "868-Autres reprises HAO": {} + }, + "88-Subventions d\u2019\u00e9quilibre": { + "881-\u00c9tat": {}, + "884-Collectivit\u00e9s publiques": {}, + "886-Groupe": {}, + "888-Autres": {} + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/gq_plan_comptable_avec_code.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/gq_plan_comptable_avec_code.json new file mode 100644 index 00000000000..4219e6aa220 --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/gq_plan_comptable_avec_code.json @@ -0,0 +1,4208 @@ +{ + "country_code": "gq", + "name": "Syscohada - Plan Comptable avec code", + "tree": { + "Comptes de ressources durables": { + "Capital": { + "Capital social": { + "Capital souscrit, non appel\u00e9": { + "account_number": "1011" + }, + "Capital souscrit, appel\u00e9, non vers\u00e9": { + "account_number": "1012" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, non amorti": { + "account_number": "1013" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, amorti": { + "account_number": "1014" + }, + "Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": { + "account_number": "1018" + }, + "account_number": "101" + }, + "Capital par dotation": { + "Dotation initiale": { + "account_number": "1021" + }, + "Dotations compl\u00e9mentaires": { + "account_number": "1022" + }, + "Autres dotations": { + "account_number": "1028" + }, + "account_number": "102" + }, + "Capital personnel": { + "account_number": "103" + }, + "Compte de l\u2019exploitant": { + "Apports temporaires": { + "account_number": "1041" + }, + "Op\u00e9rations courantes": { + "account_number": "1042" + }, + "R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": { + "account_number": "1043" + }, + "Pr\u00e9l\u00e8vements d\u2019autoconsommation": { + "account_number": "1047" + }, + "Autres pr\u00e9l\u00e8vements": { + "account_number": "1048" + }, + "account_number": "104" + }, + "Primes li\u00e9es au capital social": { + "Primes d\u2019\u00e9mission": { + "account_number": "1051" + }, + "Primes d\u2019apport": { + "account_number": "1052" + }, + "Primes de fusion": { + "account_number": "1053" + }, + "Primes de conversion": { + "account_number": "1054" + }, + "Autres primes": { + "account_number": "1058" + }, + "account_number": "105" + }, + "\u00c9carts de r\u00e9\u00e9valuation": { + "\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": { + "account_number": "1061" + }, + "\u00c9carts de r\u00e9\u00e9valuation libre": { + "account_number": "1062" + }, + "account_number": "106" + }, + "Apporteurs, capital souscrit, non appel\u00e9": { + "account_number": "109" + }, + "account_number": "10" + }, + "R\u00e9serves": { + "R\u00e9serve l\u00e9gale": { + "account_number": "111" + }, + "R\u00e9serves statutaires ou contractuelles": { + "account_number": "112" + }, + "R\u00e9serves r\u00e9glement\u00e9es": { + "R\u00e9serves de plus-values nettes \u00e0 long terme": { + "account_number": "1131" + }, + "R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "1132" + }, + "R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": { + "account_number": "1133" + }, + "R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": { + "account_number": "1134" + }, + "Autres r\u00e9serves r\u00e9glement\u00e9es": { + "account_number": "1135" + }, + "account_number": "113" + }, + "Autres r\u00e9serves": { + "R\u00e9serves facultatives": { + "account_number": "1181" + }, + "R\u00e9serves diverses": { + "account_number": "1188" + }, + "account_number": "118" + }, + "account_number": "11" + }, + "Report \u00e0 nouveau": { + "Report \u00e0 nouveau cr\u00e9diteur": { + "account_number": "121" + }, + "Report \u00e0 nouveau d\u00e9biteur": { + "Perte nette \u00e0 reporter": { + "account_number": "1291" + }, + "Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": { + "account_number": "1292" + }, + "account_number": "129" + }, + "account_number": "12" + }, + "R\u00e9sultat net de l\u2019exercice": { + "R\u00e9sultat en instance d\u2019affectation": { + "R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": { + "account_number": "1301" + }, + "R\u00e9sultat en instance d\u2019affectation : perte": { + "account_number": "1309" + }, + "account_number": "130" + }, + "R\u00e9sultat net : b\u00e9n\u00e9fice": { + "account_number": "131" + }, + "Marge commerciale (MC)": { + "account_number": "132" + }, + "Valeur ajout\u00e9e (VA)": { + "account_number": "133" + }, + "Exc\u00e9dent brut d\u2019exploitation (EBE)": { + "account_number": "134" + }, + "R\u00e9sultat d\u2019exploitation (RE)": { + "account_number": "135" + }, + "R\u00e9sultat financier (RF)": { + "account_number": "136" + }, + "R\u00e9sultat des activit\u00e9s ordinaires (RAO)": { + "account_number": "137" + }, + "R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "R\u00e9sultat de fusion": { + "account_number": "1381" + }, + "R\u00e9sultat d\u2019apport partiel d\u2019actif": { + "account_number": "1382" + }, + "R\u00e9sultat de scission": { + "account_number": "1383" + }, + "R\u00e9sultat de liquidation": { + "account_number": "1384" + }, + "account_number": "138" + }, + "R\u00e9sultat net : perte": { + "account_number": "139" + }, + "account_number": "13" + }, + "Subventions d\u2019investissement": { + "Subventions d\u2019\u00e9quipement": { + "\u00c9tat": { + "account_number": "1411" + }, + "R\u00e9gions": { + "account_number": "1412" + }, + "D\u00e9partements": { + "account_number": "1413" + }, + "Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": { + "account_number": "1414" + }, + "Entit\u00e9s publiques ou mixtes": { + "account_number": "1415" + }, + "Entit\u00e9s et organismes priv\u00e9s": { + "account_number": "1416" + }, + "Organismes internationaux": { + "account_number": "1417" + }, + "Autres": { + "account_number": "1418" + }, + "account_number": "141" + }, + "Autres subventions d\u2019investissement": { + "account_number": "148" + }, + "account_number": "14" + }, + "Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "Amortissements d\u00e9rogatoires": { + "account_number": "151" + }, + "Plus-values de cession \u00e0 r\u00e9investir": { + "account_number": "152" + }, + "Fonds r\u00e9glement\u00e9s": { + "Fonds National": { + "account_number": "1531" + }, + "Pr\u00e9l\u00e8vement pour le Budget": { + "account_number": "1532" + }, + "account_number": "153" + }, + "Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": { + "account_number": "154" + }, + "Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "Reconstitution des gisements miniers et p\u00e9troliers": { + "account_number": "1551" + }, + "account_number": "155" + }, + "Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "Hausse de prix": { + "account_number": "1561" + }, + "Fluctuation des cours": { + "account_number": "1562" + }, + "account_number": "156" + }, + "Provisions pour investissement": { + "account_number": "157" + }, + "Autres provisions et fonds r\u00e9glement\u00e9s": { + "account_number": "158" + }, + "account_number": "15" + }, + "Emprunts et dettes assimil\u00e9es": { + "Emprunts obligataires": { + "Emprunts obligataires ordinaires": { + "account_number": "1611" + }, + "Emprunts obligataires convertibles en actions": { + "account_number": "1612" + }, + "Emprunts obligataires remboursables en actions": { + "account_number": "1613" + }, + "Autres emprunts obligataires": { + "account_number": "1618" + }, + "account_number": "161" + }, + "Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "162" + }, + "Avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "163" + }, + "Avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "164" + }, + "D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "D\u00e9p\u00f4ts": { + "account_number": "1651" + }, + "Cautionnements": { + "account_number": "1652" + }, + "account_number": "165" + }, + "Int\u00e9r\u00eats courus": { + "Sur emprunts obligataires": { + "account_number": "1661" + }, + "Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "1662" + }, + "Sur avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "1663" + }, + "Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "1664" + }, + "Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "account_number": "1665" + }, + "Sur avances assorties de conditions particuli\u00e8res": { + "account_number": "1667" + }, + "Sur autres emprunts et dettes": { + "account_number": "1668" + }, + "account_number": "166" + }, + "Avances assorties de conditions particuli\u00e8res": { + "Avances bloqu\u00e9es pour augmentation du capital": { + "account_number": "1671" + }, + "Avances conditionn\u00e9es par l\u2019\u00c9tat": { + "account_number": "1672" + }, + "Avances conditionn\u00e9es par les autres organismes africains": { + "account_number": "1673" + }, + "Avances conditionn\u00e9es par les organismes internationaux": { + "account_number": "1674" + }, + "account_number": "167" + }, + "Autres emprunts et dettes": { + "Rentes viag\u00e8res capitalis\u00e9es": { + "account_number": "1681" + }, + "Billets de fonds": { + "account_number": "1682" + }, + "Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": { + "account_number": "1683" + }, + "Emprunts participatifs": { + "account_number": "1684" + }, + "Participation des travailleurs aux b\u00e9n\u00e9fices": { + "account_number": "1685" + }, + "Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": { + "account_number": "1686" + }, + "account_number": "168" + }, + "account_number": "16" + }, + "Dettes de location acquisition": { + "Dettes de location acquisition / cr\u00e9dit bail immobilier": { + "account_number": "172" + }, + "Dettes de location acquisition / cr\u00e9dit bail mobilier": { + "account_number": "173" + }, + "Dettes de location acquisition / location de vente": { + "account_number": "174" + }, + "Int\u00e9r\u00eats courus": { + "Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "1762" + }, + "Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "1763" + }, + "Sur dettes de location acquisition / location-vente": { + "account_number": "1764" + }, + "Sur autres dettes de location acquisition": { + "account_number": "1768" + }, + "account_number": "176" + }, + "Autres dettes de location acquisition": { + "account_number": "178" + }, + "account_number": "17" + }, + "Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "Dettes li\u00e9es \u00e0 des participations": { + "Dettes li\u00e9es \u00e0 des participations (groupe)": { + "account_number": "1811" + }, + "Dettes li\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "1812" + }, + "account_number": "181" + }, + "Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "182" + }, + "Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": { + "account_number": "183" + }, + "Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "184" + }, + "Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "185" + }, + "Comptes de liaison charges": { + "account_number": "186" + }, + "Comptes de liaison produits": { + "account_number": "187" + }, + "Comptes de liaison des soci\u00e9t\u00e9s en participation": { + "account_number": "188" + }, + "account_number": "18" + }, + "Provisions pour risques et charges": { + "Provisions pour litiges": { + "account_number": "191" + }, + "Provisions pour garanties donn\u00e9es aux clients": { + "account_number": "192" + }, + "Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": { + "account_number": "193" + }, + "Provisions pour pertes de change": { + "account_number": "194" + }, + "Provisions pour imp\u00f4ts": { + "account_number": "195" + }, + "Provisions pour pensions et obligations similaires": { + "Provisions pour pensions et obligations similaires engagement de retraite": { + "account_number": "1961" + }, + "Actif du r\u00e9gime de retraite": { + "account_number": "1962" + }, + "account_number": "196" + }, + "Provisions pour restructuration": { + "account_number": "197" + }, + "Autres provisions pour risques et charges": { + "Provisions pour amendes et p\u00e9nalit\u00e9s": { + "account_number": "1981" + }, + "Provisions pour propre assureur": { + "account_number": "1983" + }, + "Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "1984" + }, + "Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": { + "account_number": "1985" + }, + "Provisions pour divers risques et charges": { + "account_number": "1988" + }, + "account_number": "198" + }, + "account_number": "19" + }, + "root_type": "Equity", + "account_number": "1" + }, + "Comptes d\u2019actif immobilis\u00e9": { + "Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "211" + }, + "Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "Brevets": { + "account_type": "Fixed Asset", + "account_number": "2121" + }, + "Licences": { + "account_type": "Fixed Asset", + "account_number": "2122" + }, + "Concessions de service public": { + "account_type": "Fixed Asset", + "account_number": "2123" + }, + "Autres concessions et droits similaires": { + "account_type": "Fixed Asset", + "account_number": "2128" + }, + "account_number": "212" + }, + "Logiciels et sites internet": { + "account_type": "Fixed Asset", + "Logiciels": { + "account_type": "Fixed Asset", + "account_number": "2131" + }, + "Sites internet": { + "account_type": "Fixed Asset", + "account_number": "2132" + }, + "account_number": "213" + }, + "Marques": { + "account_type": "Fixed Asset", + "account_number": "214" + }, + "Fonds commercial": { + "account_type": "Fixed Asset", + "account_number": "215" + }, + "Droit au bail": { + "account_type": "Fixed Asset", + "account_number": "216" + }, + "Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset", + "account_number": "217" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset", + "account_number": "2181" + }, + "Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset", + "account_number": "2182" + }, + "Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset", + "account_number": "2183" + }, + "Co\u00fbts des franchises": { + "account_type": "Fixed Asset", + "account_number": "2184" + }, + "Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset", + "account_number": "2188" + }, + "account_number": "218" + }, + "Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "2191" + }, + "Logiciels et internet": { + "account_type": "Fixed Asset", + "account_number": "2193" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "account_number": "2198" + }, + "account_number": "219" + }, + "account_number": "21" + }, + "Terrains": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset", + "account_number": "2211" + }, + "Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset", + "account_number": "2212" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2218" + }, + "account_number": "221" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset", + "account_number": "2221" + }, + "Autres terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2228" + }, + "account_number": "222" + }, + "Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset", + "account_number": "2231" + }, + "Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset", + "account_number": "2232" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2234" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2235" + }, + "Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "account_number": "2238" + }, + "account_number": "223" + }, + "Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset", + "account_number": "2241" + }, + "Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset", + "account_number": "2245" + }, + "Autres travaux": { + "account_type": "Fixed Asset", + "account_number": "2248" + }, + "account_number": "224" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "Carri\u00e8res": { + "account_type": "Fixed Asset", + "account_number": "2251" + }, + "account_number": "225" + }, + "Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "Parkings": { + "account_type": "Fixed Asset", + "account_number": "2261" + }, + "account_number": "226" + }, + "Terrains mis en concession": { + "account_type": "Fixed Asset", + "account_number": "227" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "Terrains immeubles de placement": { + "account_type": "Fixed Asset", + "account_number": "2281" + }, + "Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset", + "account_number": "2285" + }, + "Terrains de location acquisition": { + "account_type": "Fixed Asset", + "account_number": "2286" + }, + "Divers terrains": { + "account_type": "Fixed Asset", + "account_number": "2288" + }, + "account_number": "228" + }, + "Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "account_number": "2291" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2292" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "account_number": "2295" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2298" + }, + "account_number": "229" + }, + "account_number": "22" + }, + "B\u00e2timents, installations techniques et agencements": { + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "B\u00e2timents industriels": { + "account_number": "2311" + }, + "B\u00e2timents agricoles": { + "account_number": "2312" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2313" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2314" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2315" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2316" + }, + "account_number": "231" + }, + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "B\u00e2timents industriels": { + "account_number": "2321" + }, + "B\u00e2timents agricoles": { + "account_number": "2322" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2323" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2324" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2325" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2326" + }, + "account_number": "232" + }, + "Ouvrages d\u2019infrastructure": { + "Voies de terre": { + "account_number": "2331" + }, + "Voies de fer": { + "account_number": "2332" + }, + "Voies d\u2019eau": { + "account_number": "2333" + }, + "Barrages, Digues": { + "account_number": "2334" + }, + "Pistes d\u2019a\u00e9rodrome": { + "account_number": "2335" + }, + "Autres ouvrages d\u2019infrastructures": { + "account_number": "2338" + }, + "account_number": "233" + }, + "Am\u00e9nagements, agencements et installations techniques": { + "Installations complexes sp\u00e9cialis\u00e9es sur sol propre": { + "account_number": "2341" + }, + "Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": { + "account_number": "2342" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": { + "account_number": "2343" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": { + "account_number": "2344" + }, + "Am\u00e9nagements et agencements des b\u00e2timents": { + "account_number": "2345" + }, + "account_number": "234" + }, + "Am\u00e9nagements de bureaux": { + "Installations g\u00e9n\u00e9rales": { + "account_number": "2351" + }, + "Autres am\u00e9nagements de bureaux": { + "account_number": "2358" + }, + "account_number": "235" + }, + "B\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "237" + }, + "Autres installations et agencements": { + "account_number": "238" + }, + "B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "B\u00e2timents en cours": { + "account_number": "2391" + }, + "Installations en cours": { + "account_number": "2392" + }, + "Ouvrages d\u2019infrastructure en cours": { + "account_number": "2393" + }, + "Am\u00e9nagements et agencements et installations techniques en cours": { + "account_number": "2394" + }, + "Am\u00e9nagements de bureaux en cours": { + "account_number": "2395" + }, + "Autres installations et agencements en cours": { + "account_number": "2398" + }, + "account_number": "239" + }, + "account_number": "23" + }, + "Mat\u00e9riel, mobilier et actifs biologiques": { + "Mat\u00e9riel et outillage industriel et commercial": { + "Mat\u00e9riel industriel": { + "account_number": "2411" + }, + "Outillage industriel": { + "account_number": "2412" + }, + "Mat\u00e9riel commercial": { + "account_number": "2413" + }, + "Outillage commercial": { + "account_number": "2414" + }, + "Mat\u00e9riel & outillage industriel et commercial de location-acquisition": { + "account_number": "2416" + }, + "account_number": "241" + }, + "Mat\u00e9riel et outillage agricole": { + "Mat\u00e9riel agricole": { + "account_number": "2421" + }, + "Outillage agricole": { + "account_number": "2422" + }, + "Mat\u00e9riel & outillage agricole de location-acquisition": { + "account_number": "2426" + }, + "account_number": "242" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "243" + }, + "Mat\u00e9riel et mobilier": { + "Mat\u00e9riel de bureau": { + "account_number": "2441" + }, + "Mat\u00e9riel informatique": { + "account_number": "2442" + }, + "Mat\u00e9riel bureautique": { + "account_number": "2443" + }, + "Mobilier de bureau": { + "account_number": "2444" + }, + "Mat\u00e9riel et mobilier immeubles de placement": { + "account_number": "2445" + }, + "Mat\u00e9riel et mobilier de location acquisition": { + "account_number": "2446" + }, + "Mat\u00e9riel et mobilier des logements du personnel": { + "account_number": "2447" + }, + "account_number": "244" + }, + "Mat\u00e9riel de transport": { + "Mat\u00e9riel automobile": { + "account_number": "2451" + }, + "Mat\u00e9riel ferroviaire": { + "account_number": "2452" + }, + "Mat\u00e9riel fluvial, lagunaire": { + "account_number": "2453" + }, + "Mat\u00e9riel naval": { + "account_number": "2454" + }, + "Mat\u00e9riel a\u00e9rien": { + "account_number": "2455" + }, + "Mat\u00e9riel de transport de location-acquisition": { + "account_number": "2456" + }, + "Mat\u00e9riel hippomobile": { + "account_number": "2457" + }, + "Autres mat\u00e9riels de transport": { + "account_number": "2458" + }, + "account_number": "245" + }, + "Actifs biologiques": { + "Cheptel, animaux de trait": { + "account_number": "2461" + }, + "Cheptel, animaux reproducteurs": { + "account_number": "2462" + }, + "Animaux de garde": { + "account_number": "2463" + }, + "Plantations agricoles": { + "account_number": "2465" + }, + "Autres actifs biologiques": { + "account_number": "2468" + }, + "account_number": "246" + }, + "Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "Agencements et am\u00e9nagements du mat\u00e9riel": { + "account_number": "2471" + }, + "Agencements et am\u00e9nagements des actifs biologiques": { + "account_number": "2472" + }, + "Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2478" + }, + "account_number": "247" + }, + "Autres mat\u00e9riels et mobiliers": { + "Collections et \u0153uvres d\u2019art": { + "account_number": "2481" + }, + "Divers mat\u00e9riels mobiliers": { + "account_number": "2488" + }, + "account_number": "248" + }, + "Mat\u00e9riels et actifs biologiques en cours": { + "Mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2491" + }, + "Mat\u00e9riel et outillage agricole": { + "account_number": "2492" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2493" + }, + "Mat\u00e9riel et mobilier de bureau": { + "account_number": "2494" + }, + "Mat\u00e9riel de transport": { + "account_number": "2495" + }, + "Actifs biologiques": { + "account_number": "2496" + }, + "Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2497" + }, + "Autres mat\u00e9riels et actifs biologiques en cours": { + "account_number": "2498" + }, + "account_number": "249" + }, + "account_number": "24" + }, + "Avances et acomptes vers\u00e9s sur immobilisations": { + "Avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "251" + }, + "Avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "252" + }, + "account_number": "25" + }, + "Titres de participation": { + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "261" + }, + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "262" + }, + "Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "263" + }, + "Participations dans des organismes professionnels": { + "account_number": "265" + }, + "Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "266" + }, + "Autres titres de participation": { + "account_number": "268" + }, + "account_number": "26" + }, + "Autres immobilisations financi\u00e8res": { + "Pr\u00eats et cr\u00e9ances": { + "Pr\u00eats participatifs": { + "account_number": "2711" + }, + "Pr\u00eats aux associ\u00e9s": { + "account_number": "2712" + }, + "Billets de fonds": { + "account_number": "2713" + }, + "Titres pr\u00eat\u00e9s": { + "account_number": "2714" + }, + "Autres pr\u00eats et cr\u00e9ances": { + "account_number": "2718" + }, + "account_number": "271" + }, + "Pr\u00eats au personnel": { + "Pr\u00eats immobiliers": { + "account_number": "2721" + }, + "Pr\u00eats mobiliers et d\u2019installation": { + "account_number": "2722" + }, + "Autres pr\u00eats au personnel": { + "account_number": "2728" + }, + "account_number": "272" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "Retenues de garantie": { + "account_number": "2731" + }, + "Fonds r\u00e9glement\u00e9": { + "account_number": "2733" + }, + "Cr\u00e9ances sur le conc\u00e9dant": { + "account_number": "2734" + }, + "Autres cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2738" + }, + "account_number": "273" + }, + "Titres immobilis\u00e9s": { + "Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": { + "account_number": "2741" + }, + "Titres participatifs": { + "account_number": "2742" + }, + "Certificats d\u2019investissement": { + "account_number": "2743" + }, + "Parts de fonds commun de placement (FCP)": { + "account_number": "2744" + }, + "Obligations": { + "account_number": "2745" + }, + "Actions ou parts propres": { + "account_number": "2746" + }, + "Autres titres immobilis\u00e9s": { + "account_number": "2748" + }, + "account_number": "274" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "D\u00e9p\u00f4ts pour loyers d\u2019avance": { + "account_number": "2751" + }, + "D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": { + "account_number": "2752" + }, + "D\u00e9p\u00f4ts pour l\u2019eau": { + "account_number": "2753" + }, + "D\u00e9p\u00f4ts pour le gaz": { + "account_number": "2754" + }, + "D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": { + "account_number": "2755" + }, + "Cautionnements sur march\u00e9s publics": { + "account_number": "2756" + }, + "Cautionnements sur autres op\u00e9rations": { + "account_number": "2757" + }, + "Autres d\u00e9p\u00f4ts et cautionnements": { + "account_number": "2758" + }, + "account_number": "275" + }, + "Int\u00e9r\u00eats courus": { + "Pr\u00eats et cr\u00e9ances non commerciales": { + "account_number": "2761" + }, + "Pr\u00eats au personnel": { + "account_number": "2762" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2763" + }, + "Titres immobilis\u00e9s": { + "account_number": "2764" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2765" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "account_number": "2767" + }, + "Immobilisations financi\u00e8res diverses": { + "account_number": "2768" + }, + "account_number": "276" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": { + "account_number": "2771" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "2772" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "2773" + }, + "Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "2774" + }, + "account_number": "277" + }, + "Immobilisations financi\u00e8res diverses": { + "Cr\u00e9ances diverses groupe": { + "account_number": "2781" + }, + "Cr\u00e9ances diverses hors groupe": { + "account_number": "2782" + }, + "Banques d\u00e9p\u00f4ts \u00e0 terme": { + "account_number": "2784" + }, + "Or et m\u00e9taux pr\u00e9cieux": { + "account_number": "2785" + }, + "Autres immobilisations financi\u00e8res": { + "account_number": "2788" + }, + "account_number": "278" + }, + "account_number": "27" + }, + "Amortissements": { + "account_type": "Accumulated Depreciation", + "Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation", + "account_number": "2811" + }, + "Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation", + "account_number": "2812" + }, + "Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation", + "account_number": "2813" + }, + "Amortissements des marques": { + "account_type": "Accumulated Depreciation", + "account_number": "2814" + }, + "Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation", + "account_number": "2815" + }, + "Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation", + "account_number": "2816" + }, + "Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation", + "account_number": "2817" + }, + "Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation", + "account_number": "2818" + }, + "account_number": "281" + }, + "Amortissements des terrains": { + "Amortissements des travaux de mise en valeur des terrains": { + "account_number": "2824" + }, + "account_number": "282" + }, + "Amortissements des b\u00e2timents, installations techniques et agencements": { + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2831" + }, + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2832" + }, + "Amortissements des ouvrages d\u2019infrastructure": { + "account_number": "2833" + }, + "Amortissements des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2834" + }, + "Amortissements des am\u00e9nagements de bureaux": { + "account_number": "2835" + }, + "Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2837" + }, + "Amortissements des autres installations et agencements": { + "account_number": "2838" + }, + "account_number": "283" + }, + "Amortissements du mat\u00e9riel": { + "Amortissements du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2841" + }, + "Amortissements du mat\u00e9riel et outillage agricole": { + "account_number": "2842" + }, + "Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2843" + }, + "Amortissements du mat\u00e9riel et mobilier": { + "account_number": "2844" + }, + "Amortissements du mat\u00e9riel de transport": { + "account_number": "2845" + }, + "Amortissements des actifs biologiques": { + "account_number": "2846" + }, + "Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2847" + }, + "Amortissements des autres mat\u00e9riels": { + "account_number": "2848" + }, + "account_number": "284" + }, + "account_number": "28" + }, + "D\u00e9pr\u00e9ciations des immobilisations": { + "D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": { + "account_number": "2911" + }, + "D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": { + "account_number": "2912" + }, + "D\u00e9pr\u00e9ciations des logiciels et sites internet": { + "account_number": "2913" + }, + "D\u00e9pr\u00e9ciations des marques": { + "account_number": "2914" + }, + "D\u00e9pr\u00e9ciations du fonds commercial": { + "account_number": "2915" + }, + "D\u00e9pr\u00e9ciations du droit au bail": { + "account_number": "2916" + }, + "D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": { + "account_number": "2917" + }, + "D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": { + "account_number": "2918" + }, + "D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": { + "account_number": "2919" + }, + "account_number": "291" + }, + "D\u00e9pr\u00e9ciations des terrains": { + "D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": { + "account_number": "2921" + }, + "D\u00e9pr\u00e9ciations des terrains nus": { + "account_number": "2922" + }, + "D\u00e9pr\u00e9ciations des terrains b\u00e2tis": { + "account_number": "2923" + }, + "D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": { + "account_number": "2924" + }, + "D\u00e9pr\u00e9ciations des terrains de gisement": { + "account_number": "2925" + }, + "D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": { + "account_number": "2926" + }, + "D\u00e9pr\u00e9ciations des terrains mis en concession": { + "account_number": "2927" + }, + "D\u00e9pr\u00e9ciations des autres terrains": { + "account_number": "2928" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": { + "account_number": "2929" + }, + "account_number": "292" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2931" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2932" + }, + "D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": { + "account_number": "2933" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2934" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": { + "account_number": "2935" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2937" + }, + "D\u00e9pr\u00e9ciations des autres installations et agencements": { + "account_number": "2938" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": { + "account_number": "2939" + }, + "account_number": "293" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2941" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": { + "account_number": "2942" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2943" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": { + "account_number": "2944" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": { + "account_number": "2945" + }, + "D\u00e9pr\u00e9ciations des actifs biologiques": { + "account_number": "2946" + }, + "D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2947" + }, + "D\u00e9pr\u00e9ciations des autres mat\u00e9riels": { + "account_number": "2948" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": { + "account_number": "2949" + }, + "account_number": "294" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "2951" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "2952" + }, + "account_number": "295" + }, + "D\u00e9pr\u00e9ciations des titres de participation": { + "D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "2961" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "2962" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "2963" + }, + "D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": { + "account_number": "2965" + }, + "D\u00e9pr\u00e9ciations des parts dans des GIE": { + "account_number": "2966" + }, + "D\u00e9pr\u00e9ciations des autres titres de participation": { + "account_number": "2968" + }, + "account_number": "296" + }, + "D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": { + "account_number": "2971" + }, + "D\u00e9pr\u00e9ciations des pr\u00eats au personnel": { + "account_number": "2972" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2973" + }, + "D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": { + "account_number": "2974" + }, + "D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2975" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "account_number": "2977" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": { + "account_number": "2978" + }, + "account_number": "297" + }, + "account_number": "29" + }, + "root_type": "Asset", + "account_number": "2" + }, + "Comptes de Stocks": { + "Marchandises": { + "Marchandises A": { + "Marchandises A1": { + "account_number": "3111" + }, + "Marchandises A2": { + "account_number": "3112" + }, + "account_number": "311" + }, + "Marchandises B": { + "Marchandises B1": { + "account_number": "3121" + }, + "Marchandises B2": { + "account_number": "3122" + }, + "account_number": "312" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3131" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3132" + }, + "account_number": "313" + }, + "Marchandises hors activit\u00e9s ordinaires (HAO)": { + "account_number": "318" + }, + "account_number": "31" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Mati\u00e8res A": { + "account_number": "321" + }, + "Mati\u00e8res B": { + "account_number": "322" + }, + "Fournitures (A, B)": { + "account_number": "323" + }, + "account_number": "32" + }, + "Autres approvisionnements": { + "Mati\u00e8res consommables": { + "account_number": "331" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "332" + }, + "Fournitures de magasin": { + "account_number": "333" + }, + "Fournitures de bureau": { + "account_number": "334" + }, + "Emballages": { + "Emballages perdus": { + "account_number": "3351" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "3352" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "3353" + }, + "Autres emballages": { + "account_number": "3358" + }, + "account_number": "335" + }, + "Autres mati\u00e8res": { + "account_number": "338" + }, + "account_number": "33" + }, + "Produits en cours": { + "Produits en cours": { + "Produits en cours P1": { + "account_number": "3411" + }, + "Produits en cours P2": { + "account_number": "3412" + }, + "account_number": "341" + }, + "Travaux en cours": { + "Travaux en cours T1": { + "account_number": "3421" + }, + "Travaux en cours T2": { + "account_number": "3422" + }, + "account_number": "342" + }, + "Produits interm\u00e9diaires en cours": { + "Produits interm\u00e9diaires A": { + "account_number": "3431" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3432" + }, + "account_number": "343" + }, + "Produits r\u00e9siduels en cours": { + "Produits r\u00e9siduels A": { + "account_number": "3441" + }, + "Produits r\u00e9siduels B": { + "account_number": "3442" + }, + "account_number": "344" + }, + "Actifs biologiques en cours": { + "Animaux": { + "account_number": "3451" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3452" + }, + "account_number": "345" + }, + "account_number": "34" + }, + "Services en cours": { + "\u00c9tudes en cours": { + "\u00c9tudes en cours E1": { + "account_number": "3511" + }, + "\u00c9tudes en cours E2": { + "account_number": "3512" + }, + "account_number": "351" + }, + "Prestations de services en cours": { + "Prestations de services S1": { + "account_number": "3521" + }, + "Prestations de services S2": { + "account_number": "3522" + } + }, + "account_number": "35" + }, + "Produits finis": { + "Produits finis A": { + "account_number": "361" + }, + "Produits finis B": { + "account_number": "362" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3631" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3632" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3638" + }, + "account_number": "363" + }, + "account_number": "36" + }, + "Produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "Produits interm\u00e9diaires A": { + "account_number": "3711" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3712" + }, + "account_number": "371" + }, + "Produits r\u00e9siduels": { + "D\u00e9chets": { + "account_number": "3721" + }, + "Rebuts": { + "account_number": "3722" + }, + "Mati\u00e8res de R\u00e9cup\u00e9ration": { + "account_number": "3723" + }, + "account_number": "372" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3731" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3732" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3738" + }, + "account_number": "373" + }, + "account_number": "37" + }, + "Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "Marchandises en cours de route": { + "account_number": "381" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": { + "account_number": "382" + }, + "Autres approvisionnements en cours de route": { + "account_number": "383" + }, + "Produits finis en cours de route": { + "account_number": "386" + }, + "Stock en consignation ou en d\u00e9p\u00f4t": { + "Stock en consignation": { + "account_number": "3871" + }, + "Stock en d\u00e9p\u00f4t": { + "account_number": "3872" + }, + "account_number": "387" + }, + "Stock provenant d\u2019immobilisations mises hors service ou au rebut": { + "account_number": "388" + }, + "account_number": "38" + }, + "D\u00e9pr\u00e9ciations des stocks et encours de production": { + "D\u00e9pr\u00e9ciations des stocks de marchandises": { + "account_number": "391" + }, + "D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "392" + }, + "D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": { + "account_number": "393" + }, + "D\u00e9pr\u00e9ciations des productions en cours": { + "account_number": "394" + }, + "D\u00e9pr\u00e9ciations des services en cours": { + "account_number": "395" + }, + "D\u00e9pr\u00e9ciations des stocks de produits finis": { + "account_number": "396" + }, + "D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "account_number": "397" + }, + "D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_number": "398" + }, + "account_number": "39" + }, + "root_type": "Asset", + "account_number": "3" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "Fournisseurs d\u00e9biteurs": { + "Fournisseurs Avances et acomptes vers\u00e9s": { + "account_number": "4091" + }, + "Fournisseurs Groupe avances et acomptes vers\u00e9s": { + "account_number": "4092" + }, + "Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": { + "account_number": "4093" + }, + "Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": { + "account_number": "4094" + }, + "Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": { + "account_number": "4098" + }, + "account_number": "409" + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "Clients": { + "Clients": { + "account_type": "Receivable", + "account_number": "4111" + }, + "Clients groupe": { + "account_type": "Receivable", + "account_number": "4112" + }, + "Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable", + "account_number": "4114" + }, + "Clients, organismes internationaux": { + "account_type": "Receivable", + "account_number": "4115" + }, + "Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable", + "account_number": "4116" + }, + "Client, retenues de garantie": { + "account_type": "Receivable", + "account_number": "4117" + }, + "Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable", + "account_number": "4118" + }, + "account_type": "Receivable", + "account_number": "411" + }, + "Clients, effets \u00e0 recevoir en portefeuille": { + "Clients, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4121" + }, + "Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4122" + }, + "\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4124" + }, + "Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4125" + }, + "account_type": "Receivable", + "account_number": "412" + }, + "Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4131" + }, + "Clients, effets impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4132" + }, + "Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4133" + }, + "Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4138" + }, + "account_type": "Receivable", + "account_number": "413" + }, + "Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4141" + }, + "Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4142" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4146" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4147" + }, + "account_type": "Receivable", + "account_number": "414" + }, + "Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable", + "account_number": "415" + }, + "Cr\u00e9ances clients litigieuses ou douteuses": { + "Cr\u00e9ances litigieuses": { + "account_type": "Receivable", + "account_number": "4161" + }, + "Cr\u00e9ances douteuses": { + "account_type": "Receivable", + "account_number": "4162" + }, + "account_type": "Receivable", + "account_number": "416" + }, + "Clients, produits \u00e0 recevoir": { + "Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable", + "account_number": "4181" + }, + "Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable", + "account_number": "4186" + }, + "account_type": "Receivable", + "account_number": "418" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "Personnel, avances et acomptes": { + "Personnel, avances": { + "account_number": "4211" + }, + "Personnel, acomptes": { + "account_number": "4212" + }, + "Frais avanc\u00e9s et fournitures au personnel": { + "account_number": "4213" + }, + "account_number": "421" + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "Prestations familiales": { + "account_number": "4311" + }, + "Accidents de travail": { + "account_number": "4312" + }, + "Caisse de retraite obligatoire": { + "account_number": "4313" + }, + "Caisse de retraite facultative": { + "account_number": "4314" + }, + "Autres cotisations sociales": { + "account_number": "4318" + } + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "Mutuelle": { + "account_number": "4331" + }, + "Assurances retraite": { + "account_number": "4332" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "4333" + } + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Produits \u00e0 recevoir": { + "account_number": "4387" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "\u00c9tat, TVA factur\u00e9e": { + "TVA factur\u00e9e sur ventes": { + "account_number": "4431" + }, + "TVA factur\u00e9e sur prestations de services": { + "account_number": "4432" + }, + "TVA factur\u00e9e sur travaux": { + "account_number": "4433" + }, + "TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": { + "account_number": "4434" + }, + "TVA sur factures \u00e0 \u00e9tablir": { + "account_number": "4435" + }, + "account_number": "443" + }, + "\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "TVA r\u00e9cup\u00e9rable sur immobilisations": { + "account_number": "4451" + }, + "TVA r\u00e9cup\u00e9rable sur achats": { + "account_number": "4452" + }, + "TVA r\u00e9cup\u00e9rable sur transport": { + "account_number": "4453" + }, + "TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": { + "account_number": "4454" + }, + "TVA r\u00e9cup\u00e9rable sur factures non parvenues": { + "account_number": "4455" + }, + "TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": { + "account_number": "4456" + }, + "account_number": "445" + }, + "\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges \u00e0 payer": { + "account_number": "4486" + }, + "Produits \u00e0 recevoir": { + "account_number": "4487" + }, + "account_number": "448" + }, + "\u00c9tat, cr\u00e9ances et dettes diverses": { + "\u00c9tat, obligations cautionn\u00e9es": { + "account_number": "4491" + }, + "\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": { + "account_number": "4492" + }, + "\u00c9tat, fonds de dotation \u00e0 recevoir": { + "account_number": "4493" + }, + "\u00c9tat, subventions investissement \u00e0 recevoir": { + "account_number": "4494" + }, + "\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": { + "account_number": "4495" + }, + "\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": { + "account_number": "4496" + }, + "\u00c9tat, avances sur subventions": { + "account_number": "4497" + }, + "\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": { + "account_number": "4499" + }, + "account_number": "449" + } + }, + "45-Organismes internationaux (ACTIF)": { + "Op\u00e9rations avec les organismes africains": { + "account_number": "451" + }, + "Op\u00e9rations avec les autres organismes internationaux": { + "account_number": "452" + }, + "Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "Organismes internationaux, fonds de dotation \u00e0 recevoir": { + "account_number": "4581" + }, + "Organismes internationaux, subventions \u00e0 recevoir": { + "account_number": "4582" + }, + "account_number": "458" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "Apporteurs, capital appel\u00e9, non vers\u00e9": { + "account_number": "4613" + }, + "Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": { + "account_number": "4614" + }, + "Apporteurs, titres \u00e0 \u00e9changer": { + "account_number": "4618" + } + }, + "Apporteurs, restant d\u00fb sur capital appel\u00e9": { + "account_number": "467" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4721" + }, + "Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": { + "account_number": "4726" + } + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "Mandants": { + "account_number": "4731" + }, + "Mandataires": { + "account_number": "4732" + }, + "Commettants": { + "account_number": "4733" + }, + "Commissionnaires": { + "account_number": "4734" + }, + "\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": { + "account_number": "4739" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "Compte de r\u00e9partition p\u00e9riodique des produits": { + "account_number": "4747" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "Compte actif": { + "account_type": "Temporary", + "account_number": "4751" + } + }, + "Charges constat\u00e9es d\u2019avance": { + "account_number": "476" + }, + "478-\u00c9carts de conversion actif": { + "Diminution des cr\u00e9ances d\u2019exploitation": { + "account_number": "4781" + }, + "Diminution des cr\u00e9ances financi\u00e8res": { + "account_number": "4782" + }, + "Augmentation des dettes d\u2019exploitation": { + "account_number": "4783" + }, + "Augmentation des dettes financi\u00e8res": { + "account_number": "4784" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4786" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4788" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "En compte, immobilisations incorporelles": { + "account_number": "4851" + }, + "En compte, immobilisations corporelles": { + "account_number": "4852" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_number": "4853" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_number": "4854" + }, + "Effets escompt\u00e9s non \u00e9chus": { + "account_number": "4855" + }, + "Retenues de garantie": { + "account_number": "4857" + }, + "Factures \u00e0 \u00e9tablir": { + "account_number": "4858" + }, + "account_number": "485" + }, + "Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": { + "account_number": "488" + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "D\u00e9pr\u00e9ciations des comptes clients": { + "Cr\u00e9ances litigieuses": { + "account_number": "4911" + }, + "Cr\u00e9ances douteuses": { + "account_number": "4912" + }, + "account_number": "491" + }, + "D\u00e9pr\u00e9ciations des comptes organismes internationaux": { + "account_number": "495" + }, + "D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "Associ\u00e9s, comptes courants": { + "account_number": "4962" + }, + "Associ\u00e9s, op\u00e9rations faites en commun": { + "account_number": "4963" + }, + "Groupe, comptes courants": { + "account_number": "4966" + }, + "account_number": "496" + }, + "D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": { + "account_number": "497" + }, + "D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "account_number": "4985" + }, + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4986" + }, + "Autres cr\u00e9ances HAO": { + "account_number": "4988" + }, + "account_number": "498" + }, + "Provisions pour risques \u00e0 court terme": { + "Sur op\u00e9rations d\u2019exploitation": { + "account_number": "4991" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "4997" + }, + "Sur op\u00e9rations HAO": { + "account_number": "4998" + }, + "account_number": "499" + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "Fournisseurs, dettes en compte": { + "Fournisseurs": { + "account_type": "Payable", + "account_number": "4011" + }, + "Fournisseurs groupe": { + "account_type": "Payable", + "account_number": "4012" + }, + "Fournisseurs sous-traitants": { + "account_type": "Payable", + "account_number": "4013" + }, + "Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable", + "account_number": "4016" + }, + "Fournisseur, retenues de garantie": { + "account_type": "Payable", + "account_number": "4017" + }, + "account_type": "Payable", + "account_number": "401" + }, + "Fournisseurs, effets \u00e0 payer": { + "Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4021" + }, + "Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4022" + }, + "Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4023" + }, + "account_type": "Payable", + "account_number": "402" + }, + "Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4041" + }, + "Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4042" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4046" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4047" + }, + "account_type": "Payable", + "account_number": "404" + }, + "Fournisseurs, factures non parvenues": { + "Fournisseurs": { + "account_type": "Stock Received But Not Billed", + "account_number": "4081" + }, + "Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed", + "account_number": "4082" + }, + "Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed", + "account_number": "4083" + }, + "Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed", + "account_number": "4086" + }, + "account_type": "Stock Received But Not Billed", + "account_number": "408" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "Clients cr\u00e9diteurs": { + "Clients, avances et acomptes re\u00e7us": { + "account_number": "4191" + }, + "Clients groupe, avances et acomptes re\u00e7us": { + "account_number": "4192" + }, + "Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": { + "account_number": "4194" + }, + "Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": { + "account_number": "4198" + }, + "account_number": "419" + } + }, + "42-Personnel (PASSIF)": { + "Personnel, r\u00e9mun\u00e9rations dues": { + "account_number": "422" + }, + "Personnel, oppositions, saisies-arr\u00eats": { + "Personnel, oppositions": { + "account_number": "4231" + }, + "Personnel, saisies-arr\u00eats": { + "account_number": "4232" + }, + "Personnel, avis \u00e0 tiers d\u00e9tenteur": { + "account_number": "4233" + }, + "account_number": "423" + }, + "Personnel, \u0153uvres sociales internes": { + "Assistance m\u00e9dicale": { + "account_number": "4241" + }, + "Allocations familiales": { + "account_number": "4242" + }, + "Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": { + "account_number": "4245" + }, + "Autres \u0153uvres sociales internes": { + "account_number": "4248" + }, + "account_number": "424" + }, + "Repr\u00e9sentants du personnel": { + "D\u00e9l\u00e9gu\u00e9s du personnel": { + "account_number": "4251" + }, + "Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": { + "account_number": "4252" + }, + "Autres repr\u00e9sentants du personnel": { + "account_number": "4258" + }, + "account_number": "425" + }, + "Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "Participation aux b\u00e9n\u00e9fices": { + "account_number": "4261" + }, + "Participation au capital": { + "account_number": "4264" + }, + "account_number": "426" + }, + "Personnel d\u00e9p\u00f4ts": { + "account_number": "427" + }, + "Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": { + "account_number": "4281" + }, + "Autres charges \u00e0 payer": { + "account_number": "4286" + }, + "Produits \u00e0 recevoir": { + "account_number": "4287" + }, + "account_number": "428" + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges sociales sur gratifications \u00e0 payer": { + "account_number": "4381" + }, + "Charges sociales sur cong\u00e9s \u00e0 payer": { + "account_number": "4382" + }, + "Autres charges \u00e0 payer": { + "account_number": "4386" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": { + "account_number": "441" + }, + "\u00c9tat, autres imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes d\u2019\u00c9tat": { + "account_number": "4421" + }, + "Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": { + "account_number": "4422" + }, + "Imp\u00f4ts et taxes recouvrables sur des obligataires": { + "account_number": "4423" + }, + "Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": { + "account_number": "4424" + }, + "Droits de douane": { + "account_number": "4426" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "4428" + }, + "account_number": "442" + }, + "\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "\u00c9tat, TVA due": { + "account_number": "4441" + }, + "\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": { + "account_number": "4449" + }, + "account_number": "444" + }, + "\u00c9tat, autres taxes sur le chiffre d\u2019affaires": { + "account_number": "446" + }, + "\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": { + "account_number": "4471" + }, + "Imp\u00f4ts sur salaires": { + "account_number": "4472" + }, + "Contribution nationale": { + "account_number": "4473" + }, + "Contribution nationale de solidarit\u00e9": { + "account_number": "4474" + }, + "Autres imp\u00f4ts et contributions": { + "account_number": "4478" + }, + "account_number": "447" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "Apporteurs, apports en nature": { + "account_number": "4611" + }, + "Apporteurs, apports en num\u00e9raire": { + "account_number": "4612" + }, + "Apporteurs, versements re\u00e7us sur augmentation de capital": { + "account_number": "4615" + }, + "Apporteurs, versements anticip\u00e9s": { + "account_number": "4616" + }, + "Apporteurs d\u00e9faillants": { + "account_number": "4617" + }, + "Apporteurs, capital \u00e0 rembourser": { + "account_number": "4619" + } + }, + "462-Associ\u00e9s, comptes courants": { + "Principal": { + "account_number": "4621" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4626" + } + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "Op\u00e9rations courantes": { + "account_number": "4631" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4636" + } + }, + "Associ\u00e9s, dividendes \u00e0 payer": { + "account_number": "465" + }, + "Groupe, comptes courants": { + "account_number": "466" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "D\u00e9biteurs divers": { + "account_number": "4711" + }, + "Cr\u00e9diteurs divers": { + "account_number": "4712" + }, + "Obligataires": { + "account_number": "4713" + }, + "R\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "4715" + }, + "Compte d\u2019affacturage": { + "account_number": "4716" + }, + "D\u00e9biteurs divers retenues de garantie": { + "account_number": "4717" + }, + "Apport, compte de fusion et op\u00e9rations assimil\u00e9es": { + "account_number": "4718" + }, + "Bons de souscription d\u2019actions et d\u2019obligations": { + "account_number": "4719" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "Compte de r\u00e9partition p\u00e9riodique des charges": { + "account_number": "4746" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "Compte passif": { + "account_number": "4752" + } + }, + "Produits constat\u00e9s d\u2019avance": { + "account_number": "477" + }, + "479-\u00c9carts de conversion passif": { + "Augmentation des cr\u00e9ances d\u2019exploitation": { + "account_number": "4791" + }, + "Augmentation des cr\u00e9ances financi\u00e8res": { + "account_number": "4792" + }, + "Diminution des dettes d\u2019exploitation": { + "account_number": "4793" + }, + "Diminution des dettes financi\u00e8res": { + "account_number": "4794" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4797" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4798" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "Fournisseurs d\u2019investissements": { + "Immobilisations incorporelles": { + "account_number": "4811" + }, + "Immobilisations corporelles": { + "account_number": "4812" + }, + "Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": { + "account_number": "4813" + }, + "R\u00e9serve de propri\u00e9t\u00e9": { + "account_number": "4816" + }, + "Retenues de garantie": { + "account_number": "4817" + }, + "Factures non parvenues": { + "account_number": "4818" + }, + "account_number": "481" + }, + "Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "Immobilisations incorporelles": { + "account_number": "4821" + }, + "Immobilisations corporelles": { + "account_number": "4822" + }, + "account_number": "482" + }, + "Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "Produits": { + "account_number": "4887" + }, + "account_number": "484" + } + }, + "root_type": "Liability" + }, + "Comptes de tr\u00e9sorerie": { + "Titres de placement": { + "Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "Titres du Tr\u00e9sor \u00e0 court terme": { + "account_number": "5011" + }, + "Titres d\u2019organismes financiers": { + "account_number": "5012" + }, + "Bons de caisse \u00e0 court terme": { + "account_number": "5013" + }, + "Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": { + "account_number": "5016" + }, + "account_number": "501" + }, + "Actions": { + "Actions ou parts propres": { + "account_number": "5021" + }, + "Actions cot\u00e9es": { + "account_number": "5022" + }, + "Actions non cot\u00e9es": { + "account_number": "5023" + }, + "Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": { + "account_number": "5024" + }, + "Autres actions": { + "account_number": "5025" + }, + "Frais d\u2019acquisition des actions": { + "account_number": "5026" + }, + "account_number": "502" + }, + "Obligations": { + "Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": { + "account_number": "5031" + }, + "Obligations cot\u00e9es": { + "account_number": "5032" + }, + "Obligations non cot\u00e9es": { + "account_number": "5033" + }, + "Autres obligations": { + "account_number": "5035" + }, + "Frais d\u2019acquisition des obligations": { + "account_number": "5036" + }, + "account_number": "503" + }, + "Bons de souscription": { + "Bons de souscription d\u2019actions": { + "account_number": "5042" + }, + "Bons de souscription d\u2019obligations": { + "account_number": "5043" + }, + "account_number": "504" + }, + "Titres n\u00e9gociables hors r\u00e9gion": { + "account_number": "505" + }, + "Int\u00e9r\u00eats courus": { + "Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": { + "account_number": "5061" + }, + "Actions": { + "account_number": "5062" + }, + "Obligations": { + "account_number": "5063" + }, + "account_number": "506" + }, + "Autres titres de placement et cr\u00e9ances assimil\u00e9es": { + "account_number": "508" + }, + "account_number": "50" + }, + "Valeurs \u00e0 encaisser": { + "Effets \u00e0 encaisser": { + "account_number": "511" + }, + "Effets \u00e0 l\u2019encaissement": { + "account_number": "512" + }, + "Ch\u00e8ques \u00e0 encaisser": { + "account_number": "513" + }, + "Ch\u00e8ques \u00e0 l\u2019encaissement": { + "account_number": "514" + }, + "Cartes de cr\u00e9dit \u00e0 encaisser": { + "account_number": "515" + }, + "Autres valeurs \u00e0 l\u2019encaissement": { + "Warrants": { + "account_number": "5181" + }, + "Billets de fonds": { + "account_number": "5182" + }, + "Ch\u00e8ques de voyage": { + "account_number": "5185" + }, + "Coupons \u00e9chus": { + "account_number": "5186" + }, + "Int\u00e9r\u00eats \u00e9chus des obligations": { + "account_number": "5187" + }, + "account_number": "518" + }, + "account_number": "51" + }, + "Banques": { + "Banques locales": { + "Banques en monnaie nationale": { + "account_type": "Bank", + "account_number": "5211" + }, + "Banques en devises": { + "account_type": "Bank", + "account_number": "5215" + }, + "account_type": "Bank", + "account_number": "521" + }, + "Banques autres \u00c9tats r\u00e9gion": { + "account_number": "522" + }, + "Banques autres \u00c9tats zone mon\u00e9taire": { + "account_number": "523" + }, + "Banques hors zone mon\u00e9taire": { + "account_number": "524" + }, + "Banques d\u00e9p\u00f4t \u00e0 terme": { + "account_number": "525" + }, + "Banques, int\u00e9r\u00eats courus": { + "Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": { + "account_number": "5261" + }, + "Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": { + "account_number": "5267" + }, + "account_number": "526" + }, + "account_number": "52" + }, + "\u00c9tablissements financiers et assimil\u00e9s": { + "Ch\u00e8ques postaux": { + "account_number": "531" + }, + "Tr\u00e9sor": { + "account_number": "532" + }, + "Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": { + "account_number": "533" + }, + "\u00c9tablissements financiers, int\u00e9r\u00eats courus": { + "account_number": "536" + }, + "Autres organismes financiers": { + "account_number": "538" + }, + "account_number": "53" + }, + "Instruments de tr\u00e9sorerie": { + "Options de taux d\u2019int\u00e9r\u00eat": { + "account_number": "541" + }, + "Options de taux de change": { + "account_number": "542" + }, + "Options de taux boursiers": { + "account_number": "543" + }, + "Instruments de march\u00e9s \u00e0 terme": { + "account_number": "544" + }, + "Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": { + "account_number": "545" + }, + "account_number": "54" + }, + "Instruments de monnaie \u00e9lectronique": { + "Monnaie \u00e9lectronique carte carburant": { + "account_number": "551" + }, + "Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": { + "account_number": "552" + }, + "Monnaie \u00e9lectronique carte p\u00e9age": { + "account_number": "553" + }, + "Porte-monnaie \u00e9lectronique": { + "account_number": "554" + }, + "Autres instruments de monnaies \u00e9lectroniques": { + "account_number": "558" + }, + "account_number": "55" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "Cr\u00e9dits de tr\u00e9sorerie": { + "account_number": "561" + }, + "Escompte de cr\u00e9dits de campagne": { + "account_number": "564" + }, + "Escompte de cr\u00e9dits ordinaires": { + "account_number": "565" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": { + "account_number": "566" + }, + "account_number": "56" + }, + "Caisse": { + "Caisse si\u00e8ge social": { + "Caisse en monnaie nationale": { + "account_number": "5711" + }, + "Caisse en devises": { + "account_number": "5712" + }, + "account_number": "571" + }, + "Caisse succursale A": { + "En monnaie nationale": { + "account_number": "5721" + }, + "En devises": { + "account_number": "5722" + }, + "account_number": "572" + }, + "Caisse succursale B": { + "En monnaie nationale": { + "account_number": "5731" + }, + "En devises": { + "account_number": "5732" + }, + "account_number": "573" + }, + "account_number": "57" + }, + "R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "R\u00e9gies d\u2019avance": { + "account_number": "581" + }, + "Accr\u00e9ditifs": { + "account_number": "582" + }, + "Virements de fonds": { + "account_number": "585" + }, + "Autres virements internes": { + "account_number": "588" + }, + "account_number": "58" + }, + "D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "D\u00e9pr\u00e9ciations des titres de placement": { + "account_number": "590" + }, + "D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": { + "account_number": "591" + }, + "D\u00e9pr\u00e9ciations des comptes banques": { + "account_number": "592" + }, + "D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": { + "account_number": "593" + }, + "D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": { + "account_number": "594" + }, + "Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": { + "account_number": "599" + }, + "account_number": "59" + }, + "root_type": "Asset", + "account_number": "5" + }, + "Comptes de charges des activit\u00e9s ordinaires": { + "Achats et variations de stocks": { + "Achats de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "6011" + }, + "Hors R\u00e9gion": { + "account_number": "6012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6014" + }, + "Frais sur achats": { + "account_number": "6015" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6019" + }, + "account_number": "601" + }, + "Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Dans la R\u00e9gion": { + "account_number": "6021" + }, + "Hors R\u00e9gion": { + "account_number": "6022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6024" + }, + "Frais sur achats": { + "account_number": "6025" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6029" + }, + "account_number": "602" + }, + "Variations des stocks de biens achet\u00e9s": { + "Variations des stocks de marchandises": { + "account_number": "6031" + }, + "Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "6032" + }, + "Variations des stocks d\u2019autres approvisionnements": { + "account_number": "6033" + }, + "account_number": "603" + }, + "Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "Mati\u00e8res consommables": { + "account_number": "6041" + }, + "Mati\u00e8res combustibles": { + "account_number": "6042" + }, + "Produits d\u2019entretien": { + "account_number": "6043" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "6044" + }, + "Frais sur achat": { + "account_number": "6045" + }, + "Fournitures de magasin": { + "account_number": "6046" + }, + "Fournitures de bureau": { + "account_number": "6047" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6049" + }, + "account_number": "604" + }, + "Autres achats": { + "Fournitures non stockables Eau": { + "account_number": "6051" + }, + "Fournitures non stockables \u00c9lectricit\u00e9": { + "account_number": "6052" + }, + "Fournitures non stockables Autres \u00e9nergies": { + "account_number": "6053" + }, + "Fournitures d\u2019entretien non stockables": { + "account_number": "6054" + }, + "Fournitures de bureau non stockables": { + "account_number": "6055" + }, + "Achats de petit mat\u00e9riel et outillage": { + "account_number": "6056" + }, + "Achats d\u2019\u00e9tudes et prestations de services": { + "account_number": "6057" + }, + "Achats de travaux, mat\u00e9riels et \u00e9quipements": { + "account_number": "6058" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6059" + }, + "account_number": "605" + }, + "Achats d\u2019emballages": { + "Emballages perdus": { + "account_number": "6081" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "6082" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "6083" + }, + "Frais sur achats": { + "account_number": "6085" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6089" + }, + "account_number": "608" + }, + "account_number": "60" + }, + "Transports": { + "Transports sur ventes": { + "account_number": "612" + }, + "Transports pour le compte de tiers": { + "account_number": "613" + }, + "Transports du personnel": { + "account_number": "614" + }, + "Transports de plis": { + "account_number": "616" + }, + "Autres frais de transport": { + "Voyages et d\u00e9placements": { + "account_number": "6181" + }, + "Transports entre \u00e9tablissements ou chantiers": { + "account_number": "6182" + }, + "Transports administratifs": { + "account_number": "6183" + }, + "account_number": "618" + }, + "account_number": "61" + }, + "Services ext\u00e9rieurs": { + "Sous-traitance g\u00e9n\u00e9rale": { + "account_number": "621" + }, + "Locations, charges locatives": { + "Locations de terrains": { + "account_number": "6221" + }, + "Locations de b\u00e2timents": { + "account_number": "6222" + }, + "Locations de mat\u00e9riels et outillages": { + "account_number": "6223" + }, + "Malis sur emballages": { + "account_number": "6224" + }, + "Locations d\u2019emballages": { + "account_number": "6225" + }, + "Fermages et loyers du foncier": { + "account_number": "6226" + }, + "Locations et charges locatives diverses": { + "account_number": "6228" + }, + "account_number": "622" + }, + "Redevances de location acquisition": { + "Cr\u00e9dit-bail immobilier": { + "account_number": "6232" + }, + "Cr\u00e9dit-bail mobilier": { + "account_number": "6233" + }, + "Location-vente": { + "account_number": "6234" + }, + "Autres contrats de location acquisition": { + "account_number": "6238" + }, + "account_number": "623" + }, + "Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "Entretien et r\u00e9parations des biens immobiliers": { + "account_number": "6241" + }, + "Entretien et r\u00e9parations des biens mobiliers": { + "account_number": "6242" + }, + "Maintenance": { + "account_number": "6243" + }, + "Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "6244" + }, + "Autres entretiens et r\u00e9parations": { + "account_number": "6248" + }, + "account_number": "624" + }, + "Primes d\u2019assurance": { + "Assurances multirisques": { + "account_number": "6251" + }, + "Assurances mat\u00e9riel de transport": { + "account_number": "6252" + }, + "Assurances risques d\u2019exploitation": { + "account_number": "6253" + }, + "Assurances responsabilit\u00e9 du producteur": { + "account_number": "6254" + }, + "Assurances insolvabilit\u00e9 clients": { + "account_number": "6255" + }, + "Assurances transport sur ventes": { + "account_number": "6257" + }, + "Autres primes d\u2019assurances": { + "account_number": "6258" + }, + "account_number": "625" + }, + "\u00c9tudes, recherches et documentation": { + "\u00c9tudes et recherches": { + "account_number": "6261" + }, + "Documentation g\u00e9n\u00e9rale": { + "account_number": "6265" + }, + "Documentation technique": { + "account_number": "6266" + }, + "account_number": "626" + }, + "Publicit\u00e9, publications, relations publiques": { + "Annonces, insertions": { + "account_number": "6271" + }, + "Catalogues, imprim\u00e9s publicitaires": { + "account_number": "6272" + }, + "\u00c9chantillons": { + "account_number": "6273" + }, + "Foires et expositions": { + "account_number": "6274" + }, + "Publications": { + "account_number": "6275" + }, + "Cadeaux \u00e0 la client\u00e8le": { + "account_number": "6276" + }, + "Frais de colloques, s\u00e9minaires, conf\u00e9rences": { + "account_number": "6277" + }, + "Autres charges de publicit\u00e9 et relations publiques": { + "account_number": "6278" + }, + "account_number": "627" + }, + "Frais de t\u00e9l\u00e9communications": { + "Frais de t\u00e9l\u00e9phone": { + "account_number": "6281" + }, + "Frais de t\u00e9lex": { + "account_number": "6282" + }, + "Frais de t\u00e9l\u00e9copie": { + "account_number": "6283" + }, + "Autres frais de t\u00e9l\u00e9communications": { + "account_number": "6288" + }, + "account_number": "628" + }, + "account_number": "62" + }, + "Autres services ext\u00e9rieurs": { + "Frais bancaires": { + "Frais sur titres (vente, garde)": { + "account_number": "6311" + }, + "Frais sur effets": { + "account_number": "6312" + }, + "Location de coffres": { + "account_number": "6313" + }, + "Commissions d\u2019affacturage": { + "account_number": "6314" + }, + "Commissions sur cartes de cr\u00e9dit": { + "account_number": "6315" + }, + "Frais d\u2019\u00e9mission d\u2019emprunts": { + "account_number": "6316" + }, + "Frais sur instruments monnaie \u00e9lectronique": { + "account_number": "6317" + }, + "Autres frais bancaires": { + "account_number": "6318" + }, + "account_number": "631" + }, + "R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "Commissions et courtages sur ventes": { + "account_number": "6322" + }, + "Honoraires des professions r\u00e9glement\u00e9es": { + "account_number": "6324" + }, + "Frais d\u2019actes et de contentieux": { + "account_number": "6325" + }, + "R\u00e9mun\u00e9rations d\u2019affacturage": { + "account_number": "6326" + }, + "R\u00e9mun\u00e9rations des autres prestataires de services": { + "account_number": "6327" + }, + "Divers frais": { + "account_number": "6328" + }, + "account_number": "632" + }, + "Frais de formation du personnel": { + "account_number": "633" + }, + "Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "Redevances pour brevets, licences": { + "account_number": "6342" + }, + "Redevances pour logiciels": { + "account_number": "6343" + }, + "Redevances pour marques": { + "account_number": "6344" + }, + "Redevances pour sites internet": { + "account_number": "6345" + }, + "Redevances pour concessions, droits et valeurs similaires": { + "account_number": "6346" + }, + "account_number": "634" + }, + "Cotisations": { + "Cotisations": { + "account_number": "6351" + }, + "Concours divers": { + "account_number": "6358" + }, + "account_number": "635" + }, + "R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "Personnel int\u00e9rimaire": { + "account_number": "6371" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6372" + }, + "account_number": "637" + }, + "Autres charges externes": { + "Frais de recrutement du personnel": { + "account_number": "6381" + }, + "Frais de d\u00e9m\u00e9nagement": { + "account_number": "6382" + }, + "R\u00e9ceptions": { + "account_number": "6383" + }, + "Missions": { + "account_number": "6384" + }, + "Charges de copropri\u00e9t\u00e9": { + "account_number": "6385" + }, + "account_number": "638" + }, + "account_number": "63" + }, + "Imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes directs": { + "Imp\u00f4ts fonciers et taxes annexes": { + "account_number": "6411" + }, + "Patentes, licences et taxes annexes": { + "account_number": "6412" + }, + "Taxes sur appointements et salaires": { + "account_number": "6413" + }, + "Taxes d\u2019apprentissage": { + "account_number": "6414" + }, + "Formation professionnelle continue": { + "account_number": "6415" + }, + "Autres imp\u00f4ts et taxes directs": { + "account_number": "6418" + }, + "account_number": "641" + }, + "Imp\u00f4ts et taxes indirects": { + "account_number": "645" + }, + "Droits d\u2019enregistrement": { + "Droits de mutation": { + "account_number": "6461" + }, + "Droits de timbre": { + "account_number": "6462" + }, + "Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": { + "account_number": "6463" + }, + "Vignettes": { + "account_number": "6464" + }, + "Autres droits": { + "account_number": "6468" + }, + "account_number": "646" + }, + "P\u00e9nalit\u00e9s, amendes fiscales": { + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": { + "account_number": "6471" + }, + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": { + "account_number": "6472" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": { + "account_number": "6473" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": { + "account_number": "6474" + }, + "Autres p\u00e9nalit\u00e9s et amendes fiscales": { + "account_number": "6478" + }, + "account_number": "647" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "648" + }, + "account_number": "64" + }, + "Autres charges": { + "Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "Clients": { + "account_number": "6511" + }, + "Autres d\u00e9biteurs": { + "account_number": "6515" + }, + "account_number": "651" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "6521" + }, + "Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "6525" + }, + "account_number": "652" + }, + "Valeurs comptables des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "6541" + }, + "Immobilisations corporelles": { + "account_number": "6542" + }, + "account_number": "654" + }, + "Perte de change sur cr\u00e9ances et dettes commerciale": { + "account_number": "656" + }, + "P\u00e9nalit\u00e9s et amendes p\u00e9nales": { + "account_number": "657" + }, + "Charges diverses": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "6581" + }, + "Dons": { + "account_number": "6582" + }, + "M\u00e9c\u00e9nat": { + "account_number": "6583" + }, + "Autres charges diverses": { + "account_number": "6588" + }, + "account_number": "658" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "6591" + }, + "Sur stocks": { + "account_number": "6593" + }, + "Sur cr\u00e9ances": { + "account_number": "6594" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": { + "account_number": "6598" + }, + "account_number": "659" + }, + "account_number": "65" + }, + "Charges de personnel": { + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "Appointements salaires et commissions": { + "account_number": "6611" + }, + "Primes et gratifications": { + "account_number": "6612" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6613" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6614" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6615" + }, + "Suppl\u00e9ment familial": { + "account_number": "6616" + }, + "Avantages en nature": { + "account_number": "6617" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6618" + }, + "account_number": "661" + }, + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "Appointements salaires et commissions": { + "account_number": "6621" + }, + "Primes et gratifications": { + "account_number": "6622" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6623" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6624" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6625" + }, + "Suppl\u00e9ment familial": { + "account_number": "6626" + }, + "Avantages en nature": { + "account_number": "6627" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6628" + }, + "account_number": "662" + }, + "Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "Indemnit\u00e9s de logement": { + "account_number": "6631" + }, + "Indemnit\u00e9s de repr\u00e9sentation": { + "account_number": "6632" + }, + "Indemnit\u00e9s d\u2019expatriation": { + "account_number": "6633" + }, + "Indemnit\u00e9s de transport": { + "account_number": "6634" + }, + "Autres indemnit\u00e9s et avantages divers": { + "account_number": "6638" + }, + "account_number": "663" + }, + "Charges sociales": { + "Charges sociales sur r\u00e9mun\u00e9ration du personnel national": { + "account_number": "6641" + }, + "Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": { + "account_number": "6642" + }, + "account_number": "664" + }, + "R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "R\u00e9mun\u00e9ration du travail de l\u2019exploitant": { + "account_number": "6661" + }, + "Charges sociales": { + "account_number": "6662" + }, + "account_number": "666" + }, + "R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "Personnel int\u00e9rimaire": { + "account_number": "6671" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6672" + }, + "account_number": "667" + }, + "Autres charges sociales": { + "Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": { + "account_number": "6681" + }, + "Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": { + "account_number": "6682" + }, + "Versements et contributions aux autres \u0153uvres sociales": { + "account_number": "6683" + }, + "M\u00e9decine du travail et pharmacie": { + "account_number": "6684" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "6685" + }, + "Assurances retraite et fonds de pension": { + "account_number": "6686" + }, + "Majorations et p\u00e9nalit\u00e9s sociales": { + "account_number": "6687" + }, + "Charges sociales diverses": { + "account_number": "6688" + }, + "account_number": "668" + }, + "account_number": "66" + }, + "Frais financiers et charges assimil\u00e9es": { + "Int\u00e9r\u00eats des emprunts": { + "Emprunts obligataires": { + "account_number": "6711" + }, + "Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "6712" + }, + "Dettes li\u00e9es \u00e0 des participations": { + "account_number": "6713" + }, + "Primes de remboursement des obligations": { + "account_number": "6714" + }, + "account_number": "671" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "6722" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "6723" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": { + "account_number": "6724" + }, + "Int\u00e9r\u00eats dans loyers des autres locations acquisition": { + "account_number": "6728" + }, + "account_number": "672" + }, + "Escomptes accord\u00e9s": { + "account_number": "673" + }, + "Autres int\u00e9r\u00eats": { + "Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": { + "account_number": "6741" + }, + "Comptes courants bloqu\u00e9s": { + "account_number": "6742" + }, + "Int\u00e9r\u00eats sur obligations cautionn\u00e9es": { + "account_number": "6743" + }, + "Int\u00e9r\u00eats sur dettes commerciales": { + "account_number": "6744" + }, + "Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": { + "account_number": "6745" + }, + "Int\u00e9r\u00eats sur dettes diverses": { + "account_number": "6748" + }, + "account_number": "674" + }, + "Escomptes des effets de commerce": { + "account_number": "675" + }, + "Pertes de change financi\u00e8res": { + "account_number": "676" + }, + "Pertes sur titres de placement": { + "Pertes sur cessions de titres de placement": { + "account_number": "6771" + }, + "Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "6772" + }, + "account_number": "677" + }, + "Pertes et charges sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "6781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "6782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "6784" + }, + "account_number": "678" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "6791" + }, + "Sur titres de placement": { + "account_number": "6795" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "6798" + }, + "account_number": "679" + }, + "account_number": "67" + }, + "Dotations aux amortissements": { + "Dotations aux amortissements d\u2019exploitation": { + "Dotations aux amortissements des immobilisations incorporelles": { + "account_number": "6812" + }, + "Dotations aux amortissements des immobilisations corporelles": { + "account_number": "6813" + }, + "account_number": "681" + }, + "account_number": "68" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6911" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "account_number": "6913" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": { + "account_number": "6914" + }, + "account_number": "691" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6971" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": { + "account_number": "6972" + }, + "account_number": "697" + }, + "account_number": "69" + }, + "root_type": "Expense", + "account_number": "6" + }, + "Comptes de produits des activit\u00e9s ordinaires": { + "Ventes": { + "Ventes de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "7011" + }, + "Hors R\u00e9gion": { + "account_number": "7012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7014" + }, + "Sur internet": { + "account_number": "7015" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7019" + }, + "account_number": "701" + }, + "Ventes de produits finis": { + "Dans la R\u00e9gion": { + "account_number": "7021" + }, + "Hors R\u00e9gion": { + "account_number": "7022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7024" + }, + "Sur internet": { + "account_number": "7025" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7029" + }, + "account_number": "702" + }, + "Ventes de produits interm\u00e9diaires": { + "Dans la R\u00e9gion": { + "account_number": "7031" + }, + "Hors R\u00e9gion": { + "account_number": "7032" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7033" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7034" + }, + "Sur internet": { + "account_number": "7035" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7039" + }, + "account_number": "703" + }, + "Ventes de produits r\u00e9siduels": { + "Dans la R\u00e9gion": { + "account_number": "7041" + }, + "Hors R\u00e9gion": { + "account_number": "7042" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7043" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7044" + }, + "Sur internet": { + "account_number": "7045" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7049" + }, + "account_number": "704" + }, + "Travaux factur\u00e9s": { + "Dans la R\u00e9gion": { + "account_number": "7051" + }, + "Hors R\u00e9gion": { + "account_number": "7052" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7053" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7054" + }, + "Sur internet": { + "account_number": "7055" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7059" + }, + "account_number": "705" + }, + "Services vendus": { + "Dans la R\u00e9gion": { + "account_number": "7061" + }, + "Hors R\u00e9gion": { + "account_number": "7062" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7063" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7064" + }, + "Sur internet": { + "account_number": "7065" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7069" + }, + "account_number": "706" + }, + "Produits accessoires": { + "Ports, emballages perdus et autres frais factur\u00e9s": { + "account_number": "7071" + }, + "Commissions et courtages": { + "account_number": "7072" + }, + "Locations": { + "account_number": "7073" + }, + "Bonis sur reprises et cessions d\u2019emballages": { + "account_number": "7074" + }, + "Mise \u00e0 disposition de personnel": { + "account_number": "7075" + }, + "Redevances pour brevets, logiciels, marques et droits similaires": { + "account_number": "7076" + }, + "Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": { + "account_number": "7077" + }, + "Autres produits accessoires": { + "account_number": "7078" + }, + "account_number": "707" + }, + "account_number": "70" + }, + "Subventions d\u2019exploitation": { + "Sur produits \u00e0 l\u2019exportation": { + "account_number": "711" + }, + "Sur produits \u00e0 l\u2019importation": { + "account_number": "712" + }, + "Sur produits de p\u00e9r\u00e9quation": { + "account_number": "713" + }, + "Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": { + "account_number": "714" + }, + "Autres subventions d\u2019exploitation": { + "Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": { + "account_number": "7181" + }, + "Vers\u00e9es par les organismes internationaux": { + "account_number": "7182" + }, + "Vers\u00e9es par des tiers": { + "account_number": "7183" + }, + "account_number": "718" + }, + "account_number": "71" + }, + "Production immobilis\u00e9e": { + "Immobilisations incorporelles": { + "account_number": "721" + }, + "Immobilisations corporelles": { + "Immobilisations corporelles (hors actifs biologiques)": { + "account_number": "7221" + }, + "Immobilisations corporelles (actifs biologiques)": { + "account_number": "7222" + }, + "account_number": "722" + }, + "Production auto-consomm\u00e9e": { + "account_number": "724" + }, + "Immobilisations financi\u00e8res": { + "account_number": "726" + }, + "account_number": "72" + }, + "Variations des stocks de biens et de services produits": { + "Variations des stocks de produits en cours": { + "Produits en cours": { + "account_number": "7341" + }, + "Travaux en cours": { + "account_number": "7342" + }, + "account_number": "734" + }, + "Variations des en-cours de services": { + "\u00c9tudes en cours": { + "account_number": "7351" + }, + "Prestations de services en cours": { + "account_number": "7352" + }, + "account_number": "735" + }, + "Variations des stocks de produits finis": { + "account_number": "736" + }, + "Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "account_number": "7371" + }, + "Produits r\u00e9siduels": { + "account_number": "7372" + }, + "account_number": "737" + }, + "account_number": "73" + }, + "Autres produits": { + "Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "account_number": "751" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "7521" + }, + "B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "7525" + }, + "account_number": "752" + }, + "Produits des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "7541" + }, + "Immobilisations corporelles": { + "account_number": "7542" + }, + "account_number": "754" + }, + "Gains de change sur cr\u00e9ances et dettes commerciales": { + "account_number": "756" + }, + "Produits divers": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "7581" + }, + "Indemnit\u00e9s d\u2019assurances re\u00e7ues": { + "account_number": "7582" + }, + "Autres produits divers": { + "account_number": "7588" + }, + "account_number": "758" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "7591" + }, + "Sur stocks": { + "account_number": "7593" + }, + "Sur cr\u00e9ances": { + "account_number": "7594" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "account_number": "7598" + }, + "account_number": "759" + }, + "account_number": "75" + }, + "Revenus financiers et produits assimil\u00e9s": { + "Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "Int\u00e9r\u00eats de pr\u00eats": { + "account_number": "7712" + }, + "Int\u00e9r\u00eats sur cr\u00e9ances diverses": { + "account_number": "7713" + }, + "account_number": "771" + }, + "Revenus de participations et autres titres immobilis\u00e9s": { + "Revenus des titres de participation": { + "account_number": "7721" + }, + "Revenus autres titres immobilis\u00e9s": { + "account_number": "7722" + }, + "account_number": "772" + }, + "Escomptes obtenus": { + "account_number": "773" + }, + "Revenus de placement": { + "Revenus des obligations": { + "account_number": "7745" + }, + "Revenus des titres de placement": { + "account_number": "7746" + }, + "account_number": "774" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "account_number": "775" + }, + "Gains de change financiers": { + "account_number": "776" + }, + "Gains sur cessions de titres de placement": { + "account_number": "777" + }, + "Gains sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "7781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "7782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "7784" + }, + "account_number": "778" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "7791" + }, + "Sur titres de placement": { + "account_number": "7795" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "7798" + }, + "account_number": "779" + }, + "account_number": "77" + }, + "Transferts de charges": { + "Transferts de charges d\u2019exploitation": { + "account_number": "781" + }, + "Transferts de charges financi\u00e8res": { + "account_number": "787" + }, + "account_number": "78" + }, + "Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Pour risques et charges": { + "account_number": "7911" + }, + "Des immobilisations incorporelles": { + "account_number": "7913" + }, + "Des immobilisations corporelles": { + "account_number": "7914" + }, + "account_number": "791" + }, + "Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "Pour risques et charges": { + "account_number": "7971" + }, + "Des immobilisations financi\u00e8res": { + "account_number": "7972" + }, + "account_number": "797" + }, + "Reprises d\u2019amortissements": { + "account_number": "798" + }, + "Reprises de subventions d\u2019investissement": { + "account_number": "799" + }, + "account_number": "79" + }, + "root_type": "Income", + "account_number": "7" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "Valeurs comptables des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "811" + }, + "Immobilisations corporelles": { + "account_number": "812" + }, + "Immobilisations financi\u00e8res": { + "account_number": "816" + }, + "account_number": "81" + }, + "Charges hors activit\u00e9s ordinaires": { + "Charges HAO constat\u00e9es": { + "account_number": "831" + }, + "Charges li\u00e9es aux op\u00e9rations de restructuration": { + "account_number": "833" + }, + "Pertes sur cr\u00e9ances HAO": { + "account_number": "834" + }, + "Dons et lib\u00e9ralit\u00e9s accord\u00e9s": { + "account_number": "835" + }, + "Abandons de cr\u00e9ances consentis": { + "account_number": "836" + }, + "Charges li\u00e9es aux op\u00e9rations de liquidation": { + "account_number": "837" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "839" + }, + "account_number": "83" + }, + "Dotations hors activit\u00e9s ordinaires": { + "Dotations aux provisions r\u00e9glement\u00e9es": { + "account_number": "851" + }, + "Dotations aux amortissements HAO": { + "account_number": "852" + }, + "Dotations aux d\u00e9pr\u00e9ciations HAO": { + "account_number": "853" + }, + "Dotations aux provisions pour risques et charges HAO": { + "account_number": "854" + }, + "Autres dotations HAO": { + "account_number": "858" + }, + "account_number": "85" + }, + "Participation des travailleurs": { + "Participation l\u00e9gale aux b\u00e9n\u00e9fices": { + "account_number": "871" + }, + "Participation contractuelle aux b\u00e9n\u00e9fices": { + "account_number": "874" + }, + "Autres participations": { + "account_number": "878" + }, + "account_number": "87" + }, + "Imp\u00f4ts sur le r\u00e9sultat": { + "Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": { + "account_number": "8911" + }, + "Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": { + "account_number": "8912" + }, + "Activit\u00e9s exerc\u00e9es hors R\u00e9gion": { + "account_number": "8913" + }, + "account_number": "891" + }, + "Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "account_number": "892" + }, + "Imp\u00f4t minimum forfaitaire IMF": { + "account_number": "895" + }, + "D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "D\u00e9gr\u00e8vements": { + "account_number": "8991" + }, + "Annulations pour pertes r\u00e9troactives": { + "account_number": "8994" + }, + "account_number": "899" + }, + "account_number": "89" + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "Produits des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "821" + }, + "Immobilisations corporelles": { + "account_number": "822" + }, + "Immobilisations financi\u00e8res": { + "account_number": "826" + }, + "account_number": "82" + }, + "Produits hors activit\u00e9s ordinaires": { + "Produits HAO constat\u00e9s": { + "account_number": "841" + }, + "Produits li\u00e9s aux op\u00e9rations de restructuration": { + "account_number": "843" + }, + "Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": { + "account_number": "844" + }, + "Dons et lib\u00e9ralit\u00e9s obtenus": { + "account_number": "845" + }, + "Abandons de cr\u00e9ances obtenus": { + "account_number": "846" + }, + "Produits li\u00e9s aux op\u00e9rations de liquidation": { + "account_number": "847" + }, + "Transferts de charges HAO": { + "account_number": "848" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "849" + }, + "account_number": "84" + }, + "Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "Reprises de provisions r\u00e9glement\u00e9es": { + "account_number": "861" + }, + "Reprises d\u2019amortissements HAO": { + "account_number": "862" + }, + "Reprises de d\u00e9pr\u00e9ciations HAO": { + "account_number": "863" + }, + "Reprises de provisions pour risques et charges HAO": { + "account_number": "864" + }, + "Autres reprises HAO": { + "account_number": "868" + }, + "account_number": "86" + }, + "Subventions d\u2019\u00e9quilibre": { + "\u00c9tat": { + "account_number": "881" + }, + "Collectivit\u00e9s publiques": { + "account_number": "884" + }, + "Groupe": { + "account_number": "886" + }, + "Autres": { + "account_number": "888" + }, + "account_number": "88" + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/gw_plan_comptable.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/gw_plan_comptable.json new file mode 100644 index 00000000000..754b557a1ae --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/gw_plan_comptable.json @@ -0,0 +1,1919 @@ +{ + "country_code": "gw", + "name": "Syscohada - Plan Comptable", + "tree": { + "1-Comptes de ressources durables": { + "10-Capital": { + "101-Capital social": { + "1011-Capital souscrit, non appel\u00e9": {}, + "1012-Capital souscrit, appel\u00e9, non vers\u00e9": {}, + "1013-Capital souscrit, appel\u00e9, vers\u00e9, non amorti": {}, + "1014-Capital souscrit, appel\u00e9, vers\u00e9, amorti": {}, + "1018-Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": {} + }, + "102-Capital par dotation": { + "1021-Dotation initiale": {}, + "1022-Dotations compl\u00e9mentaires": {}, + "1028-Autres dotations": {} + }, + "103-Capital personnel": {}, + "104-Compte de l\u2019exploitant": { + "1041-Apports temporaires": {}, + "1042-Op\u00e9rations courantes": {}, + "1043-R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": {}, + "1047-Pr\u00e9l\u00e8vements d\u2019autoconsommation": {}, + "1048-Autres pr\u00e9l\u00e8vements": {} + }, + "105-Primes li\u00e9es au capital social": { + "1051-Primes d\u2019\u00e9mission": {}, + "1052-Primes d\u2019apport": {}, + "1053-Primes de fusion": {}, + "1054-Primes de conversion": {}, + "1058-Autres primes": {} + }, + "106-\u00c9carts de r\u00e9\u00e9valuation": { + "1061-\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": {}, + "1062-\u00c9carts de r\u00e9\u00e9valuation libre": {} + }, + "109-Apporteurs, capital souscrit, non appel\u00e9": {} + }, + "11-R\u00e9serves": { + "111-R\u00e9serve l\u00e9gale": {}, + "112-R\u00e9serves statutaires ou contractuelles": {}, + "113-R\u00e9serves r\u00e9glement\u00e9es": { + "1131-R\u00e9serves de plus-values nettes \u00e0 long terme": {}, + "1132-R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {}, + "1133-R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": {}, + "1134-R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": {}, + "1135-Autres r\u00e9serves r\u00e9glement\u00e9es": {} + }, + "118-Autres r\u00e9serves": { + "1181-R\u00e9serves facultatives": {}, + "1188-R\u00e9serves diverses": {} + } + }, + "12-Report \u00e0 nouveau": { + "121-Report \u00e0 nouveau cr\u00e9diteur": {}, + "129-Report \u00e0 nouveau d\u00e9biteur": { + "1291-Perte nette \u00e0 reporter": {}, + "1292-Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": {} + } + }, + "13-R\u00e9sultat net de l\u2019exercice": { + "130-R\u00e9sultat en instance d\u2019affectation": { + "1301-R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": {}, + "1309-R\u00e9sultat en instance d\u2019affectation : perte": {} + }, + "131-R\u00e9sultat net : b\u00e9n\u00e9fice": {}, + "132-Marge commerciale (MC)": {}, + "133-Valeur ajout\u00e9e (VA)": {}, + "134-Exc\u00e9dent brut d\u2019exploitation (EBE)": {}, + "135-R\u00e9sultat d\u2019exploitation (RE)": {}, + "136-R\u00e9sultat financier (RF)": {}, + "137-R\u00e9sultat des activit\u00e9s ordinaires (RAO)": {}, + "138-R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "1381-R\u00e9sultat de fusion": {}, + "1382-R\u00e9sultat d\u2019apport partiel d\u2019actif": {}, + "1383-R\u00e9sultat de scission": {}, + "1384-R\u00e9sultat de liquidation": {} + }, + "139-R\u00e9sultat net : perte": {} + }, + "14-Subventions d\u2019investissement": { + "141-Subventions d\u2019\u00e9quipement": { + "1411-\u00c9tat": {}, + "1412-R\u00e9gions": {}, + "1413-D\u00e9partements": {}, + "1414-Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": {}, + "1415-Entit\u00e9s publiques ou mixtes": {}, + "1416-Entit\u00e9s et organismes priv\u00e9s": {}, + "1417-Organismes internationaux": {}, + "1418-Autres": {} + }, + "148-Autres subventions d\u2019investissement": {} + }, + "15-Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "151-Amortissements d\u00e9rogatoires": {}, + "152-Plus-values de cession \u00e0 r\u00e9investir": {}, + "153-Fonds r\u00e9glement\u00e9s": { + "1531-Fonds National": {}, + "1532-Pr\u00e9l\u00e8vement pour le Budget": {} + }, + "154-Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": {}, + "155-Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "1551-Reconstitution des gisements miniers et p\u00e9troliers": {} + }, + "156-Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "1561-Hausse de prix": {}, + "1562-Fluctuation des cours": {} + }, + "157-Provisions pour investissement": {}, + "158-Autres provisions et fonds r\u00e9glement\u00e9s": {} + }, + "16-Emprunts et dettes assimil\u00e9es": { + "161-Emprunts obligataires": { + "1611-Emprunts obligataires ordinaires": {}, + "1612-Emprunts obligataires convertibles en actions": {}, + "1613-Emprunts obligataires remboursables en actions": {}, + "1618-Autres emprunts obligataires": {} + }, + "162-Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "163-Avances re\u00e7ues de l\u2019\u00c9tat": {}, + "164-Avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "165-D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "1651-D\u00e9p\u00f4ts": {}, + "1652-Cautionnements": {} + }, + "166-Int\u00e9r\u00eats courus": { + "1661-Sur emprunts obligataires": {}, + "1662-Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "1663-Sur avances re\u00e7ues de l\u2019\u00c9tat": {}, + "1664-Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "1665-Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": {}, + "1667-Sur avances assorties de conditions particuli\u00e8res": {}, + "1668-Sur autres emprunts et dettes": {} + }, + "167-Avances assorties de conditions particuli\u00e8res": { + "1671-Avances bloqu\u00e9es pour augmentation du capital": {}, + "1672-Avances conditionn\u00e9es par l\u2019\u00c9tat": {}, + "1673-Avances conditionn\u00e9es par les autres organismes africains": {}, + "1674-Avances conditionn\u00e9es par les organismes internationaux": {} + }, + "168-Autres emprunts et dettes": { + "1681-Rentes viag\u00e8res capitalis\u00e9es": {}, + "1682-Billets de fonds": {}, + "1683-Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": {}, + "1684-Emprunts participatifs": {}, + "1685-Participation des travailleurs aux b\u00e9n\u00e9fices": {}, + "1686-Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": {} + } + }, + "17-Dettes de location acquisition": { + "172-Dettes de location acquisition / cr\u00e9dit bail immobilier": {}, + "173-Dettes de location acquisition / cr\u00e9dit bail mobilier": {}, + "174-Dettes de location acquisition / location de vente": {}, + "176-Int\u00e9r\u00eats courus": { + "1762-Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": {}, + "1763-Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": {}, + "1764-Sur dettes de location acquisition / location-vente": {}, + "1768-Sur autres dettes de location acquisition": {} + }, + "178-Autres dettes de location acquisition": {} + }, + "18-Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "181-Dettes li\u00e9es \u00e0 des participations": { + "1811-Dettes li\u00e9es \u00e0 des participations (groupe)": {}, + "1812-Dettes li\u00e9es \u00e0 des participations (hors groupe)": {} + }, + "182-Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "183-Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": {}, + "184-Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "185-Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "186-Comptes de liaison charges": {}, + "187-Comptes de liaison produits": {}, + "188-Comptes de liaison des soci\u00e9t\u00e9s en participation": {} + }, + "19-Provisions pour risques et charges": { + "191-Provisions pour litiges": {}, + "192-Provisions pour garanties donn\u00e9es aux clients": {}, + "193-Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": {}, + "194-Provisions pour pertes de change": {}, + "195-Provisions pour imp\u00f4ts": {}, + "196-Provisions pour pensions et obligations similaires": { + "1961-Provisions pour pensions et obligations similaires engagement de retraite": {}, + "1962-Actif du r\u00e9gime de retraite": {} + }, + "197-Provisions pour restructuration": {}, + "198-Autres provisions pour risques et charges": { + "1981-Provisions pour amendes et p\u00e9nalit\u00e9s": {}, + "1983-Provisions pour propre assureur": {}, + "1984-Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "1985-Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": {}, + "1988-Provisions pour divers risques et charges": {} + } + }, + "root_type": "Equity" + }, + "2-Comptes d\u2019actif immobilis\u00e9": { + "21-Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "211-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "212-Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "2121-Brevets": { + "account_type": "Fixed Asset" + }, + "2122-Licences": { + "account_type": "Fixed Asset" + }, + "2123-Concessions de service public": { + "account_type": "Fixed Asset" + }, + "2128-Autres concessions et droits similaires": { + "account_type": "Fixed Asset" + } + }, + "213-Logiciels et sites internet": { + "account_type": "Fixed Asset", + "2131-Logiciels": { + "account_type": "Fixed Asset" + }, + "2132-Sites internet": { + "account_type": "Fixed Asset" + } + }, + "214-Marques": { + "account_type": "Fixed Asset" + }, + "215-Fonds commercial": { + "account_type": "Fixed Asset" + }, + "216-Droit au bail": { + "account_type": "Fixed Asset" + }, + "217-Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset" + }, + "218-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "2181-Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset" + }, + "2182-Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset" + }, + "2183-Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset" + }, + "2184-Co\u00fbts des franchises": { + "account_type": "Fixed Asset" + }, + "2188-Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset" + } + }, + "219-Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "2191-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "2193-Logiciels et internet": { + "account_type": "Fixed Asset" + }, + "2198-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset" + } + } + }, + "22-Terrains": { + "account_type": "Fixed Asset", + "221-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "2211-Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset" + }, + "2212-Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset" + }, + "2218-Autres terrains": { + "account_type": "Fixed Asset" + } + }, + "222-Terrains nus": { + "account_type": "Fixed Asset", + "2221-Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset" + }, + "2228-Autres terrains nus": { + "account_type": "Fixed Asset" + } + }, + "223-Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "2231-Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset" + }, + "2232-Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset" + }, + "2234-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset" + }, + "2235-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset" + }, + "2238-Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset" + } + }, + "224-Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "2241-Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset" + }, + "2245-Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset" + }, + "2248-Autres travaux": { + "account_type": "Fixed Asset" + } + }, + "225-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "2251-Carri\u00e8res": { + "account_type": "Fixed Asset" + } + }, + "226-Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "2261-Parkings": { + "account_type": "Fixed Asset" + } + }, + "227-Terrains mis en concession": { + "account_type": "Fixed Asset" + }, + "228-Autres terrains": { + "account_type": "Fixed Asset", + "2281-Terrains immeubles de placement": { + "account_type": "Fixed Asset" + }, + "2285-Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset" + }, + "2286-Terrains de location acquisition": { + "account_type": "Fixed Asset" + }, + "2288-Divers terrains": { + "account_type": "Fixed Asset" + } + }, + "229-Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "2291-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset" + }, + "2292-Terrains nus": { + "account_type": "Fixed Asset" + }, + "2295-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset" + }, + "2298-Autres terrains": { + "account_type": "Fixed Asset" + } + } + }, + "23-B\u00e2timents, installations techniques et agencements": { + "231-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "2311-B\u00e2timents industriels": {}, + "2312-B\u00e2timents agricoles": {}, + "2313-B\u00e2timents administratifs et commerciaux": {}, + "2314-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2315-B\u00e2timents immeubles de placement": {}, + "2316-B\u00e2timents de location acquisition": {} + }, + "232-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "2321-B\u00e2timents industriels": {}, + "2322-B\u00e2timents agricoles": {}, + "2323-B\u00e2timents administratifs et commerciaux": {}, + "2324-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2325-B\u00e2timents immeubles de placement": {}, + "2326-B\u00e2timents de location acquisition": {} + }, + "233-Ouvrages d\u2019infrastructure": { + "2331-Voies de terre": {}, + "2332-Voies de fer": {}, + "2333-Voies d\u2019eau": {}, + "2334-Barrages, Digues": {}, + "2335-Pistes d\u2019a\u00e9rodrome": {}, + "2338-Autres ouvrages d\u2019infrastructures": {} + }, + "234-Am\u00e9nagements, agencements et installations techniques": { + "2341-Installations complexes sp\u00e9cialis\u00e9es sur sol propre": {}, + "2342-Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": {}, + "2343-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": {}, + "2344-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": {}, + "2345-Am\u00e9nagements et agencements des b\u00e2timents": {} + }, + "235-Am\u00e9nagements de bureaux": { + "2351-Installations g\u00e9n\u00e9rales": {}, + "2358-Autres am\u00e9nagements de bureaux": {} + }, + "237-B\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "238-Autres installations et agencements": {}, + "239-B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "2391-B\u00e2timents en cours": {}, + "2392-Installations en cours": {}, + "2393-Ouvrages d\u2019infrastructure en cours": {}, + "2394-Am\u00e9nagements et agencements et installations techniques en cours": {}, + "2395-Am\u00e9nagements de bureaux en cours": {}, + "2398-Autres installations et agencements en cours": {} + } + }, + "24-Mat\u00e9riel, mobilier et actifs biologiques": { + "241-Mat\u00e9riel et outillage industriel et commercial": { + "2411-Mat\u00e9riel industriel": {}, + "2412-Outillage industriel": {}, + "2413-Mat\u00e9riel commercial": {}, + "2414-Outillage commercial": {}, + "2416-Mat\u00e9riel & outillage industriel et commercial de location-acquisition": {} + }, + "242-Mat\u00e9riel et outillage agricole": { + "2421-Mat\u00e9riel agricole": {}, + "2422-Outillage agricole": {}, + "2426-Mat\u00e9riel & outillage agricole de location-acquisition": {} + }, + "243-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "244-Mat\u00e9riel et mobilier": { + "2441-Mat\u00e9riel de bureau": {}, + "2442-Mat\u00e9riel informatique": {}, + "2443-Mat\u00e9riel bureautique": {}, + "2444-Mobilier de bureau": {}, + "2445-Mat\u00e9riel et mobilier immeubles de placement": {}, + "2446-Mat\u00e9riel et mobilier de location acquisition": {}, + "2447-Mat\u00e9riel et mobilier des logements du personnel": {} + }, + "245-Mat\u00e9riel de transport": { + "2451-Mat\u00e9riel automobile": {}, + "2452-Mat\u00e9riel ferroviaire": {}, + "2453-Mat\u00e9riel fluvial, lagunaire": {}, + "2454-Mat\u00e9riel naval": {}, + "2455-Mat\u00e9riel a\u00e9rien": {}, + "2456-Mat\u00e9riel de transport de location-acquisition": {}, + "2457-Mat\u00e9riel hippomobile": {}, + "2458-Autres mat\u00e9riels de transport": {} + }, + "246-Actifs biologiques": { + "2461-Cheptel, animaux de trait": {}, + "2462-Cheptel, animaux reproducteurs": {}, + "2463-Animaux de garde": {}, + "2465-Plantations agricoles": {}, + "2468-Autres actifs biologiques": {} + }, + "247-Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "2471-Agencements et am\u00e9nagements du mat\u00e9riel": {}, + "2472-Agencements et am\u00e9nagements des actifs biologiques": {}, + "2478-Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": {} + }, + "248-Autres mat\u00e9riels et mobiliers": { + "2481-Collections et \u0153uvres d\u2019art": {}, + "2488-Divers mat\u00e9riels mobiliers": {} + }, + "249-Mat\u00e9riels et actifs biologiques en cours": { + "2491-Mat\u00e9riel et outillage industriel et commercial": {}, + "2492-Mat\u00e9riel et outillage agricole": {}, + "2493-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2494-Mat\u00e9riel et mobilier de bureau": {}, + "2495-Mat\u00e9riel de transport": {}, + "2496-Actifs biologiques": {}, + "2497-Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": {}, + "2498-Autres mat\u00e9riels et actifs biologiques en cours": {} + } + }, + "25-Avances et acomptes vers\u00e9s sur immobilisations": { + "251-Avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "252-Avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "26-Titres de participation": { + "261-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "262-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "263-Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "265-Participations dans des organismes professionnels": {}, + "266-Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {}, + "268-Autres titres de participation": {} + }, + "27-Autres immobilisations financi\u00e8res": { + "271-Pr\u00eats et cr\u00e9ances": { + "2711-Pr\u00eats participatifs": {}, + "2712-Pr\u00eats aux associ\u00e9s": {}, + "2713-Billets de fonds": {}, + "2714-Titres pr\u00eat\u00e9s": {}, + "2718-Autres pr\u00eats et cr\u00e9ances": {} + }, + "272-Pr\u00eats au personnel": { + "2721-Pr\u00eats immobiliers": {}, + "2722-Pr\u00eats mobiliers et d\u2019installation": {}, + "2728-Autres pr\u00eats au personnel": {} + }, + "273-Cr\u00e9ances sur l\u2019\u00c9tat": { + "2731-Retenues de garantie": {}, + "2733-Fonds r\u00e9glement\u00e9": {}, + "2734-Cr\u00e9ances sur le conc\u00e9dant": {}, + "2738-Autres cr\u00e9ances sur l\u2019\u00c9tat": {} + }, + "274-Titres immobilis\u00e9s": { + "2741-Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": {}, + "2742-Titres participatifs": {}, + "2743-Certificats d\u2019investissement": {}, + "2744-Parts de fonds commun de placement (FCP)": {}, + "2745-Obligations": {}, + "2746-Actions ou parts propres": {}, + "2748-Autres titres immobilis\u00e9s": {} + }, + "275-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "2751-D\u00e9p\u00f4ts pour loyers d\u2019avance": {}, + "2752-D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": {}, + "2753-D\u00e9p\u00f4ts pour l\u2019eau": {}, + "2754-D\u00e9p\u00f4ts pour le gaz": {}, + "2755-D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": {}, + "2756-Cautionnements sur march\u00e9s publics": {}, + "2757-Cautionnements sur autres op\u00e9rations": {}, + "2758-Autres d\u00e9p\u00f4ts et cautionnements": {} + }, + "276-Int\u00e9r\u00eats courus": { + "2761-Pr\u00eats et cr\u00e9ances non commerciales": {}, + "2762-Pr\u00eats au personnel": {}, + "2763-Cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2764-Titres immobilis\u00e9s": {}, + "2765-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2767-Cr\u00e9ances rattach\u00e9es \u00e0 des participations": {}, + "2768-Immobilisations financi\u00e8res diverses": {} + }, + "277-Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "2771-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": {}, + "2772-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": {}, + "2773-Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "2774-Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {} + }, + "278-Immobilisations financi\u00e8res diverses": { + "2781-Cr\u00e9ances diverses groupe": {}, + "2782-Cr\u00e9ances diverses hors groupe": {}, + "2784-Banques d\u00e9p\u00f4ts \u00e0 terme": {}, + "2785-Or et m\u00e9taux pr\u00e9cieux": {}, + "2788-Autres immobilisations financi\u00e8res": {} + } + }, + "28-Amortissements": { + "account_type": "Accumulated Depreciation", + "281-Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "2811-Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation" + }, + "2812-Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation" + }, + "2813-Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation" + }, + "2814-Amortissements des marques": { + "account_type": "Accumulated Depreciation" + }, + "2815-Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation" + }, + "2816-Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation" + }, + "2817-Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation" + }, + "2818-Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation" + } + }, + "282-Amortissements des terrains": { + "2824-Amortissements des travaux de mise en valeur des terrains": {} + }, + "283-Amortissements des b\u00e2timents, installations techniques et agencements": { + "2831-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2832-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2833-Amortissements des ouvrages d\u2019infrastructure": {}, + "2834-Amortissements des am\u00e9nagements, agencements et installations techniques": {}, + "2835-Amortissements des am\u00e9nagements de bureaux": {}, + "2837-Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2838-Amortissements des autres installations et agencements": {} + }, + "284-Amortissements du mat\u00e9riel": { + "2841-Amortissements du mat\u00e9riel et outillage industriel et commercial": {}, + "2842-Amortissements du mat\u00e9riel et outillage agricole": {}, + "2843-Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2844-Amortissements du mat\u00e9riel et mobilier": {}, + "2845-Amortissements du mat\u00e9riel de transport": {}, + "2846-Amortissements des actifs biologiques": {}, + "2847-Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2848-Amortissements des autres mat\u00e9riels": {} + } + }, + "29-D\u00e9pr\u00e9ciations des immobilisations": { + "291-D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "2911-D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": {}, + "2912-D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": {}, + "2913-D\u00e9pr\u00e9ciations des logiciels et sites internet": {}, + "2914-D\u00e9pr\u00e9ciations des marques": {}, + "2915-D\u00e9pr\u00e9ciations du fonds commercial": {}, + "2916-D\u00e9pr\u00e9ciations du droit au bail": {}, + "2917-D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": {}, + "2918-D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": {}, + "2919-D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": {} + }, + "292-D\u00e9pr\u00e9ciations des terrains": { + "2921-D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": {}, + "2922-D\u00e9pr\u00e9ciations des terrains nus": {}, + "2923-D\u00e9pr\u00e9ciations des terrains b\u00e2tis": {}, + "2924-D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": {}, + "2925-D\u00e9pr\u00e9ciations des terrains de gisement": {}, + "2926-D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": {}, + "2927-D\u00e9pr\u00e9ciations des terrains mis en concession": {}, + "2928-D\u00e9pr\u00e9ciations des autres terrains": {}, + "2929-D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": {} + }, + "293-D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "2931-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2932-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2933-D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": {}, + "2934-D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": {}, + "2935-D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": {}, + "2937-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2938-D\u00e9pr\u00e9ciations des autres installations et agencements": {}, + "2939-D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": {} + }, + "294-D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "2941-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": {}, + "2942-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": {}, + "2943-D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2944-D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": {}, + "2945-D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": {}, + "2946-D\u00e9pr\u00e9ciations des actifs biologiques": {}, + "2947-D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2948-D\u00e9pr\u00e9ciations des autres mat\u00e9riels": {}, + "2949-D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": {} + }, + "295-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "2951-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "2952-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "296-D\u00e9pr\u00e9ciations des titres de participation": { + "2961-D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "2962-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "2963-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "2965-D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": {}, + "2966-D\u00e9pr\u00e9ciations des parts dans des GIE": {}, + "2968-D\u00e9pr\u00e9ciations des autres titres de participation": {} + }, + "297-D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "2971-D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": {}, + "2972-D\u00e9pr\u00e9ciations des pr\u00eats au personnel": {}, + "2973-D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2974-D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": {}, + "2975-D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2977-D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": {}, + "2978-D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": {} + } + }, + "root_type": "Asset" + }, + "3-Comptes de Stocks": { + "31-Marchandises": { + "311-Marchandises A": { + "3111-Marchandises A1": {}, + "3112-Marchandises A2": {} + }, + "312-Marchandises B": { + "3121-Marchandises B1": {}, + "3122-Marchandises B2": {} + }, + "313-Actifs biologiques": { + "3131-Animaux": {}, + "3132-V\u00e9g\u00e9taux": {} + }, + "318-Marchandises hors activit\u00e9s ordinaires (HAO)": {} + }, + "32-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "321-Mati\u00e8res A": {}, + "322-Mati\u00e8res B": {}, + "323-Fournitures (A, B)": {} + }, + "33-Autres approvisionnements": { + "331-Mati\u00e8res consommables": {}, + "332-Fournitures d\u2019atelier et d\u2019usine": {}, + "333-Fournitures de magasin": {}, + "334-Fournitures de bureau": {}, + "335-Emballages": { + "3351-Emballages perdus": {}, + "3352-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "3353-Emballages \u00e0 usage mixte": {}, + "3358-Autres emballages": {} + }, + "338-Autres mati\u00e8res": {} + }, + "34-Produits en cours": { + "341-Produits en cours": { + "3411-Produits en cours P1": {}, + "3412-Produits en cours P2": {} + }, + "342-Travaux en cours": { + "3421-Travaux en cours T1": {}, + "3422-Travaux en cours T2": {} + }, + "343-Produits interm\u00e9diaires en cours": { + "3431-Produits interm\u00e9diaires A": {}, + "3432-Produits interm\u00e9diaires B": {} + }, + "344-Produits r\u00e9siduels en cours": { + "3441-Produits r\u00e9siduels A": {}, + "3442-Produits r\u00e9siduels B": {} + }, + "345-Actifs biologiques en cours": { + "3451-Animaux": {}, + "3452-V\u00e9g\u00e9taux": {} + } + }, + "35-Services en cours": { + "351-\u00c9tudes en cours": { + "3511-\u00c9tudes en cours E1": {}, + "3512-\u00c9tudes en cours E2": {} + }, + "352-Prestations de services en cours": { + "3521-Prestations de services S1": {}, + "3522-Prestations de services S2": {} + } + }, + "36-Produits finis": { + "361-Produits finis A": {}, + "362-Produits finis B": {}, + "363-Actifs biologiques": { + "3631-Animaux": {}, + "3632-V\u00e9g\u00e9taux": {}, + "3638-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "37-Produits interm\u00e9diaires et r\u00e9siduels": { + "371-Produits interm\u00e9diaires": { + "3711-Produits interm\u00e9diaires A": {}, + "3712-Produits interm\u00e9diaires B": {} + }, + "372-Produits r\u00e9siduels": { + "3721-D\u00e9chets": {}, + "3722-Rebuts": {}, + "3723-Mati\u00e8res de R\u00e9cup\u00e9ration": {} + }, + "373-Actifs biologiques": { + "3731-Animaux": {}, + "3732-V\u00e9g\u00e9taux": {}, + "3738-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "38-Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "381-Marchandises en cours de route": {}, + "382-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": {}, + "383-Autres approvisionnements en cours de route": {}, + "386-Produits finis en cours de route": {}, + "387-Stock en consignation ou en d\u00e9p\u00f4t": { + "3871-Stock en consignation": {}, + "3872-Stock en d\u00e9p\u00f4t": {} + }, + "388-Stock provenant d\u2019immobilisations mises hors service ou au rebut": {} + }, + "39-D\u00e9pr\u00e9ciations des stocks et encours de production": { + "391-D\u00e9pr\u00e9ciations des stocks de marchandises": {}, + "392-D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "393-D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": {}, + "394-D\u00e9pr\u00e9ciations des productions en cours": {}, + "395-D\u00e9pr\u00e9ciations des services en cours": {}, + "396-D\u00e9pr\u00e9ciations des stocks de produits finis": {}, + "397-D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": {}, + "398-D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": {} + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "409-Fournisseurs d\u00e9biteurs": { + "4091-Fournisseurs Avances et acomptes vers\u00e9s": {}, + "4092-Fournisseurs Groupe avances et acomptes vers\u00e9s": {}, + "4093-Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": {}, + "4094-Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": {}, + "4098-Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": {} + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "411-Clients": { + "4111-Clients": { + "account_type": "Receivable" + }, + "4112-Clients groupe": { + "account_type": "Receivable" + }, + "4114-Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable" + }, + "4115-Clients, organismes internationaux": { + "account_type": "Receivable" + }, + "4116-Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable" + }, + "4117-Client, retenues de garantie": { + "account_type": "Receivable" + }, + "4118-Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "412-Clients, effets \u00e0 recevoir en portefeuille": { + "4121-Clients, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4122-Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4124-\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4125-Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "413-Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "4131-Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable" + }, + "4132-Clients, effets impay\u00e9s": { + "account_type": "Receivable" + }, + "4133-Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable" + }, + "4138-Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "414-Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "4141-Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4142-Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable" + }, + "4146-Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4147-Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "415-Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable" + }, + "416-Cr\u00e9ances clients litigieuses ou douteuses": { + "4161-Cr\u00e9ances litigieuses": { + "account_type": "Receivable" + }, + "4162-Cr\u00e9ances douteuses": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "418-Clients, produits \u00e0 recevoir": { + "4181-Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable" + }, + "4186-Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "421-Personnel, avances et acomptes": { + "4211-Personnel, avances": {}, + "4212-Personnel, acomptes": {}, + "4213-Frais avanc\u00e9s et fournitures au personnel": {} + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "4311-Prestations familiales": {}, + "4312-Accidents de travail": {}, + "4313-Caisse de retraite obligatoire": {}, + "4314-Caisse de retraite facultative": {}, + "4318-Autres cotisations sociales": {} + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "4331-Mutuelle": {}, + "4332-Assurances retraite": {}, + "4333-Assurances et organismes de sant\u00e9": {} + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4387-Produits \u00e0 recevoir": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "443-\u00c9tat, TVA factur\u00e9e": { + "4431-TVA factur\u00e9e sur ventes": {}, + "4432-TVA factur\u00e9e sur prestations de services": {}, + "4433-TVA factur\u00e9e sur travaux": {}, + "4434-TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": {}, + "4435-TVA sur factures \u00e0 \u00e9tablir": {} + }, + "445-\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "4451-TVA r\u00e9cup\u00e9rable sur immobilisations": {}, + "4452-TVA r\u00e9cup\u00e9rable sur achats": {}, + "4453-TVA r\u00e9cup\u00e9rable sur transport": {}, + "4454-TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": {}, + "4455-TVA r\u00e9cup\u00e9rable sur factures non parvenues": {}, + "4456-TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": {} + }, + "448-\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "4486-Charges \u00e0 payer": {}, + "4487-Produits \u00e0 recevoir": {} + }, + "449-\u00c9tat, cr\u00e9ances et dettes diverses": { + "4491-\u00c9tat, obligations cautionn\u00e9es": {}, + "4492-\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": {}, + "4493-\u00c9tat, fonds de dotation \u00e0 recevoir": {}, + "4494-\u00c9tat, subventions investissement \u00e0 recevoir": {}, + "4495-\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": {}, + "4496-\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": {}, + "4497-\u00c9tat, avances sur subventions": {}, + "4499-\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": {} + } + }, + "45-Organismes internationaux (ACTIF)": { + "451-Op\u00e9rations avec les organismes africains": {}, + "452-Op\u00e9rations avec les autres organismes internationaux": {}, + "458-Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "4581-Organismes internationaux, fonds de dotation \u00e0 recevoir": {}, + "4582-Organismes internationaux, subventions \u00e0 recevoir": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "4613-Apporteurs, capital appel\u00e9, non vers\u00e9": {}, + "4614-Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": {}, + "4618-Apporteurs, titres \u00e0 \u00e9changer": {} + }, + "467-Apporteurs, restant d\u00fb sur capital appel\u00e9": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "4721-Cr\u00e9ances sur cessions de titres de placement": {}, + "4726-Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": {} + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "4731-Mandants": {}, + "4732-Mandataires": {}, + "4733-Commettants": {}, + "4734-Commissionnaires": {}, + "4739-\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "4747-Compte de r\u00e9partition p\u00e9riodique des produits": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "4751-Compte actif": { + "account_type": "Temporary" + } + }, + "476-Charges constat\u00e9es d\u2019avance": {}, + "478-\u00c9carts de conversion actif": { + "4781-Diminution des cr\u00e9ances d\u2019exploitation": {}, + "4782-Diminution des cr\u00e9ances financi\u00e8res": {}, + "4783-Augmentation des dettes d\u2019exploitation": {}, + "4784-Augmentation des dettes financi\u00e8res": {}, + "4786-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4788-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "485-Cr\u00e9ances sur cessions d\u2019immobilisations": { + "4851-En compte, immobilisations incorporelles": {}, + "4852-En compte, immobilisations corporelles": {}, + "4853-Effets \u00e0 recevoir, immobilisations incorporelles": {}, + "4854-Effets \u00e0 recevoir, immobilisations corporelles": {}, + "4855-Effets escompt\u00e9s non \u00e9chus": {}, + "4857-Retenues de garantie": {}, + "4858-Factures \u00e0 \u00e9tablir": {} + }, + "488-Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": {} + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "491-D\u00e9pr\u00e9ciations des comptes clients": { + "4911-Cr\u00e9ances litigieuses": {}, + "4912-Cr\u00e9ances douteuses": {} + }, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {}, + "496-D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "4962-Associ\u00e9s, comptes courants": {}, + "4963-Associ\u00e9s, op\u00e9rations faites en commun": {}, + "4966-Groupe, comptes courants": {} + }, + "497-D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": {}, + "498-D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "4985-Cr\u00e9ances sur cessions d\u2019immobilisations": {}, + "4986-Cr\u00e9ances sur cessions de titres de placement": {}, + "4988-Autres cr\u00e9ances HAO": {} + }, + "499-Provisions pour risques \u00e0 court terme": { + "4991-Sur op\u00e9rations d\u2019exploitation": {}, + "4997-Sur op\u00e9rations financi\u00e8res": {}, + "4998-Sur op\u00e9rations HAO": {} + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "401-Fournisseurs, dettes en compte": { + "4011-Fournisseurs": { + "account_type": "Payable" + }, + "4012-Fournisseurs groupe": { + "account_type": "Payable" + }, + "4013-Fournisseurs sous-traitants": { + "account_type": "Payable" + }, + "4016-Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable" + }, + "4017-Fournisseur, retenues de garantie": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "402-Fournisseurs, effets \u00e0 payer": { + "4021-Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable" + }, + "4022-Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable" + }, + "4023-Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "404-Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "4041-Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4042-Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable" + }, + "4046-Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4047-Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "408-Fournisseurs, factures non parvenues": { + "4081-Fournisseurs": { + "account_type": "Stock Received But Not Billed" + }, + "4082-Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed" + }, + "4083-Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed" + }, + "4086-Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "419-Clients cr\u00e9diteurs": { + "4191-Clients, avances et acomptes re\u00e7us": {}, + "4192-Clients groupe, avances et acomptes re\u00e7us": {}, + "4194-Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": {}, + "4198-Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": {} + } + }, + "42-Personnel (PASSIF)": { + "422-Personnel, r\u00e9mun\u00e9rations dues": {}, + "423-Personnel, oppositions, saisies-arr\u00eats": { + "4231-Personnel, oppositions": {}, + "4232-Personnel, saisies-arr\u00eats": {}, + "4233-Personnel, avis \u00e0 tiers d\u00e9tenteur": {} + }, + "424-Personnel, \u0153uvres sociales internes": { + "4241-Assistance m\u00e9dicale": {}, + "4242-Allocations familiales": {}, + "4245-Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": {}, + "4248-Autres \u0153uvres sociales internes": {} + }, + "425-Repr\u00e9sentants du personnel": { + "4251-D\u00e9l\u00e9gu\u00e9s du personnel": {}, + "4252-Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": {}, + "4258-Autres repr\u00e9sentants du personnel": {} + }, + "426-Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "4261-Participation aux b\u00e9n\u00e9fices": {}, + "4264-Participation au capital": {} + }, + "427-Personnel d\u00e9p\u00f4ts": {}, + "428-Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "4281-Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": {}, + "4286-Autres charges \u00e0 payer": {}, + "4287-Produits \u00e0 recevoir": {} + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4381-Charges sociales sur gratifications \u00e0 payer": {}, + "4382-Charges sociales sur cong\u00e9s \u00e0 payer": {}, + "4386-Autres charges \u00e0 payer": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "441-\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": {}, + "442-\u00c9tat, autres imp\u00f4ts et taxes": { + "4421-Imp\u00f4ts et taxes d\u2019\u00c9tat": {}, + "4422-Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": {}, + "4423-Imp\u00f4ts et taxes recouvrables sur des obligataires": {}, + "4424-Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": {}, + "4426-Droits de douane": {}, + "4428-Autres imp\u00f4ts et taxes": {} + }, + "444-\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "4441-\u00c9tat, TVA due": {}, + "4449-\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": {} + }, + "446-\u00c9tat, autres taxes sur le chiffre d\u2019affaires": {}, + "447-\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "4471-Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": {}, + "4472-Imp\u00f4ts sur salaires": {}, + "4473-Contribution nationale": {}, + "4474-Contribution nationale de solidarit\u00e9": {}, + "4478-Autres imp\u00f4ts et contributions": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "4611-Apporteurs, apports en nature": {}, + "4612-Apporteurs, apports en num\u00e9raire": {}, + "4615-Apporteurs, versements re\u00e7us sur augmentation de capital": {}, + "4616-Apporteurs, versements anticip\u00e9s": {}, + "4617-Apporteurs d\u00e9faillants": {}, + "4619-Apporteurs, capital \u00e0 rembourser": {} + }, + "462-Associ\u00e9s, comptes courants": { + "4621-Principal": {}, + "4626-Int\u00e9r\u00eats courus": {} + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "4631-Op\u00e9rations courantes": {}, + "4636-Int\u00e9r\u00eats courus": {} + }, + "465-Associ\u00e9s, dividendes \u00e0 payer": {}, + "466-Groupe, comptes courants": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "4711-D\u00e9biteurs divers": {}, + "4712-Cr\u00e9diteurs divers": {}, + "4713-Obligataires": {}, + "4715-R\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "4716-Compte d\u2019affacturage": {}, + "4717-D\u00e9biteurs divers retenues de garantie": {}, + "4718-Apport, compte de fusion et op\u00e9rations assimil\u00e9es": {}, + "4719-Bons de souscription d\u2019actions et d\u2019obligations": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "4746-Compte de r\u00e9partition p\u00e9riodique des charges": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "4752-Compte passif": {} + }, + "477-Produits constat\u00e9s d\u2019avance": {}, + "479-\u00c9carts de conversion passif": { + "4791-Augmentation des cr\u00e9ances d\u2019exploitation": {}, + "4792-Augmentation des cr\u00e9ances financi\u00e8res": {}, + "4793-Diminution des dettes d\u2019exploitation": {}, + "4794-Diminution des dettes financi\u00e8res": {}, + "4797-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4798-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "481-Fournisseurs d\u2019investissements": { + "4811-Immobilisations incorporelles": {}, + "4812-Immobilisations corporelles": {}, + "4813-Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": {}, + "4816-R\u00e9serve de propri\u00e9t\u00e9": {}, + "4817-Retenues de garantie": {}, + "4818-Factures non parvenues": {} + }, + "482-Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "4821-Immobilisations incorporelles": {}, + "4822-Immobilisations corporelles": {} + }, + "484-Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "4887-Produits": {} + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (PASSIF)": { + "490-D\u00e9pr\u00e9ciations des comptes fournisseurs": {}, + "492-D\u00e9pr\u00e9ciations des comptes personnel": {}, + "493-D\u00e9pr\u00e9ciations des comptes organismes sociaux": {}, + "494-D\u00e9pr\u00e9ciations des comptes \u00c9tat et collectivit\u00e9s publiques": {}, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {} + }, + "root_type": "Liability" + }, + "5-Comptes de tr\u00e9sorerie": { + "50-Titres de placement": { + "501-Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "5011-Titres du Tr\u00e9sor \u00e0 court terme": {}, + "5012-Titres d\u2019organismes financiers": {}, + "5013-Bons de caisse \u00e0 court terme": {}, + "5016-Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": {} + }, + "502-Actions": { + "5021-Actions ou parts propres": {}, + "5022-Actions cot\u00e9es": {}, + "5023-Actions non cot\u00e9es": {}, + "5024-Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": {}, + "5025-Autres actions": {}, + "5026-Frais d\u2019acquisition des actions": {} + }, + "503-Obligations": { + "5031-Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": {}, + "5032-Obligations cot\u00e9es": {}, + "5033-Obligations non cot\u00e9es": {}, + "5035-Autres obligations": {}, + "5036-Frais d\u2019acquisition des obligations": {} + }, + "504-Bons de souscription": { + "5042-Bons de souscription d\u2019actions": {}, + "5043-Bons de souscription d\u2019obligations": {} + }, + "505-Titres n\u00e9gociables hors r\u00e9gion": {}, + "506-Int\u00e9r\u00eats courus": { + "5061-Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": {}, + "5062-Actions": {}, + "5063-Obligations": {} + }, + "508-Autres titres de placement et cr\u00e9ances assimil\u00e9es": {} + }, + "51-Valeurs \u00e0 encaisser": { + "511-Effets \u00e0 encaisser": {}, + "512-Effets \u00e0 l\u2019encaissement": {}, + "513-Ch\u00e8ques \u00e0 encaisser": {}, + "514-Ch\u00e8ques \u00e0 l\u2019encaissement": {}, + "515-Cartes de cr\u00e9dit \u00e0 encaisser": {}, + "518-Autres valeurs \u00e0 l\u2019encaissement": { + "5181-Warrants": {}, + "5182-Billets de fonds": {}, + "5185-Ch\u00e8ques de voyage": {}, + "5186-Coupons \u00e9chus": {}, + "5187-Int\u00e9r\u00eats \u00e9chus des obligations": {} + } + }, + "52-Banques": { + "521-Banques locales": { + "5211-Banques en monnaie nationale": { + "account_type": "Bank" + }, + "5215-Banques en devises": { + "account_type": "Bank" + }, + "account_type": "Bank" + }, + "522-Banques autres \u00c9tats r\u00e9gion": {}, + "523-Banques autres \u00c9tats zone mon\u00e9taire": {}, + "524-Banques hors zone mon\u00e9taire": {}, + "525-Banques d\u00e9p\u00f4t \u00e0 terme": {}, + "526-Banques, int\u00e9r\u00eats courus": { + "5261-Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": {}, + "5267-Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": {} + } + }, + "53-\u00c9tablissements financiers et assimil\u00e9s": { + "531-Ch\u00e8ques postaux": {}, + "532-Tr\u00e9sor": {}, + "533-Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": {}, + "536-\u00c9tablissements financiers, int\u00e9r\u00eats courus": {}, + "538-Autres organismes financiers": {} + }, + "54-Instruments de tr\u00e9sorerie": { + "541-Options de taux d\u2019int\u00e9r\u00eat": {}, + "542-Options de taux de change": {}, + "543-Options de taux boursiers": {}, + "544-Instruments de march\u00e9s \u00e0 terme": {}, + "545-Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": {} + }, + "55-Instruments de monnaie \u00e9lectronique": { + "551-Monnaie \u00e9lectronique carte carburant": {}, + "552-Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": {}, + "553-Monnaie \u00e9lectronique carte p\u00e9age": {}, + "554-Porte-monnaie \u00e9lectronique": {}, + "558-Autres instruments de monnaies \u00e9lectroniques": {} + }, + "56-Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "561-Cr\u00e9dits de tr\u00e9sorerie": {}, + "564-Escompte de cr\u00e9dits de campagne": {}, + "565-Escompte de cr\u00e9dits ordinaires": {}, + "566-Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": {} + }, + "57-Caisse": { + "571-Caisse si\u00e8ge social": { + "5711-Caisse en monnaie nationale": {}, + "5712-Caisse en devises": {} + }, + "572-Caisse succursale A": { + "5721-En monnaie nationale": {}, + "5722-En devises": {} + }, + "573-Caisse succursale B": { + "5731-En monnaie nationale": {}, + "5732-En devises": {} + } + }, + "58-R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "581-R\u00e9gies d\u2019avance": {}, + "582-Accr\u00e9ditifs": {}, + "585-Virements de fonds": {}, + "588-Autres virements internes": {} + }, + "59-D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "590-D\u00e9pr\u00e9ciations des titres de placement": {}, + "591-D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": {}, + "592-D\u00e9pr\u00e9ciations des comptes banques": {}, + "593-D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": {}, + "594-D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": {}, + "599-Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": {} + }, + "root_type": "Asset" + }, + "6-Comptes de charges des activit\u00e9s ordinaires": { + "60-Achats et variations de stocks": { + "601-Achats de marchandises": { + "6011-Dans la R\u00e9gion": {}, + "6012-Hors R\u00e9gion": {}, + "6013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6015-Frais sur achats": {}, + "6019-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "602-Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "6021-Dans la R\u00e9gion": {}, + "6022-Hors R\u00e9gion": {}, + "6023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6025-Frais sur achats": {}, + "6029-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "603-Variations des stocks de biens achet\u00e9s": { + "6031-Variations des stocks de marchandises": {}, + "6032-Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "6033-Variations des stocks d\u2019autres approvisionnements": {} + }, + "604-Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "6041-Mati\u00e8res consommables": {}, + "6042-Mati\u00e8res combustibles": {}, + "6043-Produits d\u2019entretien": {}, + "6044-Fournitures d\u2019atelier et d\u2019usine": {}, + "6045-Frais sur achat": {}, + "6046-Fournitures de magasin": {}, + "6047-Fournitures de bureau": {}, + "6049-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "605-Autres achats": { + "6051-Fournitures non stockables Eau": {}, + "6052-Fournitures non stockables \u00c9lectricit\u00e9": {}, + "6053-Fournitures non stockables Autres \u00e9nergies": {}, + "6054-Fournitures d\u2019entretien non stockables": {}, + "6055-Fournitures de bureau non stockables": {}, + "6056-Achats de petit mat\u00e9riel et outillage": {}, + "6057-Achats d\u2019\u00e9tudes et prestations de services": {}, + "6058-Achats de travaux, mat\u00e9riels et \u00e9quipements": {}, + "6059-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "608-Achats d\u2019emballages": { + "6081-Emballages perdus": {}, + "6082-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "6083-Emballages \u00e0 usage mixte": {}, + "6085-Frais sur achats": {}, + "6089-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + } + }, + "61-Transports": { + "612-Transports sur ventes": {}, + "613-Transports pour le compte de tiers": {}, + "614-Transports du personnel": {}, + "616-Transports de plis": {}, + "618-Autres frais de transport": { + "6181-Voyages et d\u00e9placements": {}, + "6182-Transports entre \u00e9tablissements ou chantiers": {}, + "6183-Transports administratifs": {} + } + }, + "62-Services ext\u00e9rieurs": { + "621-Sous-traitance g\u00e9n\u00e9rale": {}, + "622-Locations, charges locatives": { + "6221-Locations de terrains": {}, + "6222-Locations de b\u00e2timents": {}, + "6223-Locations de mat\u00e9riels et outillages": {}, + "6224-Malis sur emballages": {}, + "6225-Locations d\u2019emballages": {}, + "6226-Fermages et loyers du foncier": {}, + "6228-Locations et charges locatives diverses": {} + }, + "623-Redevances de location acquisition": { + "6232-Cr\u00e9dit-bail immobilier": {}, + "6233-Cr\u00e9dit-bail mobilier": {}, + "6234-Location-vente": {}, + "6238-Autres contrats de location acquisition": {} + }, + "624-Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "6241-Entretien et r\u00e9parations des biens immobiliers": {}, + "6242-Entretien et r\u00e9parations des biens mobiliers": {}, + "6243-Maintenance": {}, + "6244-Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "6248-Autres entretiens et r\u00e9parations": {} + }, + "625-Primes d\u2019assurance": { + "6251-Assurances multirisques": {}, + "6252-Assurances mat\u00e9riel de transport": {}, + "6253-Assurances risques d\u2019exploitation": {}, + "6254-Assurances responsabilit\u00e9 du producteur": {}, + "6255-Assurances insolvabilit\u00e9 clients": {}, + "6257-Assurances transport sur ventes": {}, + "6258-Autres primes d\u2019assurances": {} + }, + "626-\u00c9tudes, recherches et documentation": { + "6261-\u00c9tudes et recherches": {}, + "6265-Documentation g\u00e9n\u00e9rale": {}, + "6266-Documentation technique": {} + }, + "627-Publicit\u00e9, publications, relations publiques": { + "6271-Annonces, insertions": {}, + "6272-Catalogues, imprim\u00e9s publicitaires": {}, + "6273-\u00c9chantillons": {}, + "6274-Foires et expositions": {}, + "6275-Publications": {}, + "6276-Cadeaux \u00e0 la client\u00e8le": {}, + "6277-Frais de colloques, s\u00e9minaires, conf\u00e9rences": {}, + "6278-Autres charges de publicit\u00e9 et relations publiques": {} + }, + "628-Frais de t\u00e9l\u00e9communications": { + "6281-Frais de t\u00e9l\u00e9phone": {}, + "6282-Frais de t\u00e9lex": {}, + "6283-Frais de t\u00e9l\u00e9copie": {}, + "6288-Autres frais de t\u00e9l\u00e9communications": {} + } + }, + "63-Autres services ext\u00e9rieurs": { + "631-Frais bancaires": { + "6311-Frais sur titres (vente, garde)": {}, + "6312-Frais sur effets": {}, + "6313-Location de coffres": {}, + "6314-Commissions d\u2019affacturage": {}, + "6315-Commissions sur cartes de cr\u00e9dit": {}, + "6316-Frais d\u2019\u00e9mission d\u2019emprunts": {}, + "6317-Frais sur instruments monnaie \u00e9lectronique": {}, + "6318-Autres frais bancaires": {} + }, + "632-R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "6322-Commissions et courtages sur ventes": {}, + "6324-Honoraires des professions r\u00e9glement\u00e9es": {}, + "6325-Frais d\u2019actes et de contentieux": {}, + "6326-R\u00e9mun\u00e9rations d\u2019affacturage": {}, + "6327-R\u00e9mun\u00e9rations des autres prestataires de services": {}, + "6328-Divers frais": {} + }, + "633-Frais de formation du personnel": {}, + "634-Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "6342-Redevances pour brevets, licences": {}, + "6343-Redevances pour logiciels": {}, + "6344-Redevances pour marques": {}, + "6345-Redevances pour sites internet": {}, + "6346-Redevances pour concessions, droits et valeurs similaires": {} + }, + "635-Cotisations": { + "6351-Cotisations": {}, + "6358-Concours divers": {} + }, + "637-R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "6371-Personnel int\u00e9rimaire": {}, + "6372-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "638-Autres charges externes": { + "6381-Frais de recrutement du personnel": {}, + "6382-Frais de d\u00e9m\u00e9nagement": {}, + "6383-R\u00e9ceptions": {}, + "6384-Missions": {}, + "6385-Charges de copropri\u00e9t\u00e9": {} + } + }, + "64-Imp\u00f4ts et taxes": { + "641-Imp\u00f4ts et taxes directs": { + "6411-Imp\u00f4ts fonciers et taxes annexes": {}, + "6412-Patentes, licences et taxes annexes": {}, + "6413-Taxes sur appointements et salaires": {}, + "6414-Taxes d\u2019apprentissage": {}, + "6415-Formation professionnelle continue": {}, + "6418-Autres imp\u00f4ts et taxes directs": {} + }, + "645-Imp\u00f4ts et taxes indirects": {}, + "646-Droits d\u2019enregistrement": { + "6461-Droits de mutation": {}, + "6462-Droits de timbre": {}, + "6463-Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": {}, + "6464-Vignettes": {}, + "6468-Autres droits": {} + }, + "647-P\u00e9nalit\u00e9s, amendes fiscales": { + "6471-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": {}, + "6472-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": {}, + "6473-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": {}, + "6474-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": {}, + "6478-Autres p\u00e9nalit\u00e9s et amendes fiscales": {} + }, + "648-Autres imp\u00f4ts et taxes": {} + }, + "65-Autres charges": { + "651-Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "6511-Clients": {}, + "6515-Autres d\u00e9biteurs": {} + }, + "652-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "6521-Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": {}, + "6525-Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "654-Valeurs comptables des cessions courantes d\u2019immobilisations": { + "6541-Immobilisations incorporelles": {}, + "6542-Immobilisations corporelles": {} + }, + "656-Perte de change sur cr\u00e9ances et dettes commerciale": {}, + "657-P\u00e9nalit\u00e9s et amendes p\u00e9nales": {}, + "658-Charges diverses": { + "6581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "6582-Dons": {}, + "6583-M\u00e9c\u00e9nat": {}, + "6588-Autres charges diverses": {} + }, + "659-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "6591-Sur risques \u00e0 court terme": {}, + "6593-Sur stocks": {}, + "6594-Sur cr\u00e9ances": {}, + "6598-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": {} + } + }, + "66-Charges de personnel": { + "661-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "6611-Appointements salaires et commissions": {}, + "6612-Primes et gratifications": {}, + "6613-Cong\u00e9s pay\u00e9s": {}, + "6614-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6615-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6616-Suppl\u00e9ment familial": {}, + "6617-Avantages en nature": {}, + "6618-Autres r\u00e9mun\u00e9rations directes": {} + }, + "662-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "6621-Appointements salaires et commissions": {}, + "6622-Primes et gratifications": {}, + "6623-Cong\u00e9s pay\u00e9s": {}, + "6624-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6625-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6626-Suppl\u00e9ment familial": {}, + "6627-Avantages en nature": {}, + "6628-Autres r\u00e9mun\u00e9rations directes": {} + }, + "663-Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "6631-Indemnit\u00e9s de logement": {}, + "6632-Indemnit\u00e9s de repr\u00e9sentation": {}, + "6633-Indemnit\u00e9s d\u2019expatriation": {}, + "6634-Indemnit\u00e9s de transport": {}, + "6638-Autres indemnit\u00e9s et avantages divers": {} + }, + "664-Charges sociales": { + "6641-Charges sociales sur r\u00e9mun\u00e9ration du personnel national": {}, + "6642-Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": {} + }, + "666-R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "6661-R\u00e9mun\u00e9ration du travail de l\u2019exploitant": {}, + "6662-Charges sociales": {} + }, + "667-R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "6671-Personnel int\u00e9rimaire": {}, + "6672-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "668-Autres charges sociales": { + "6681-Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": {}, + "6682-Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": {}, + "6683-Versements et contributions aux autres \u0153uvres sociales": {}, + "6684-M\u00e9decine du travail et pharmacie": {}, + "6685-Assurances et organismes de sant\u00e9": {}, + "6686-Assurances retraite et fonds de pension": {}, + "6687-Majorations et p\u00e9nalit\u00e9s sociales": {}, + "6688-Charges sociales diverses": {} + } + }, + "67-Frais financiers et charges assimil\u00e9es": { + "671-Int\u00e9r\u00eats des emprunts": { + "6711-Emprunts obligataires": {}, + "6712-Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "6713-Dettes li\u00e9es \u00e0 des participations": {}, + "6714-Primes de remboursement des obligations": {} + }, + "672-Int\u00e9r\u00eats dans loyers de location acquisition": { + "6722-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": {}, + "6723-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": {}, + "6724-Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": {}, + "6728-Int\u00e9r\u00eats dans loyers des autres locations acquisition": {} + }, + "673-Escomptes accord\u00e9s": {}, + "674-Autres int\u00e9r\u00eats": { + "6741-Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": {}, + "6742-Comptes courants bloqu\u00e9s": {}, + "6743-Int\u00e9r\u00eats sur obligations cautionn\u00e9es": {}, + "6744-Int\u00e9r\u00eats sur dettes commerciales": {}, + "6745-Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": {}, + "6748-Int\u00e9r\u00eats sur dettes diverses": {} + }, + "675-Escomptes des effets de commerce": {}, + "676-Pertes de change financi\u00e8res": {}, + "677-Pertes sur titres de placement": { + "6771-Pertes sur cessions de titres de placement": {}, + "6772-Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {} + }, + "678-Pertes et charges sur risques financiers": { + "6781-Sur rentes viag\u00e8res": {}, + "6782-Sur op\u00e9rations financi\u00e8res": {}, + "6784-Sur instruments de tr\u00e9sorerie": {} + }, + "679-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "6791-Sur risques financiers": {}, + "6795-Sur titres de placement": {}, + "6798-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "68-Dotations aux amortissements": { + "681-Dotations aux amortissements d\u2019exploitation": { + "6812-Dotations aux amortissements des immobilisations incorporelles": {}, + "6813-Dotations aux amortissements des immobilisations corporelles": {} + } + }, + "69-Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "691-Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "6911-Dotations aux provisions pour risques et charges": {}, + "6913-Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": {}, + "6914-Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": {} + }, + "697-Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "6971-Dotations aux provisions pour risques et charges": {}, + "6972-Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": {} + } + }, + "root_type": "Expense" + }, + "7-Comptes de produits des activit\u00e9s ordinaires": { + "70-Ventes": { + "701-Ventes de marchandises": { + "7011-Dans la R\u00e9gion": {}, + "7012-Hors R\u00e9gion": {}, + "7013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7015-Sur internet": {}, + "7019-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "702-Ventes de produits finis": { + "7021-Dans la R\u00e9gion": {}, + "7022-Hors R\u00e9gion": {}, + "7023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7025-Sur internet": {}, + "7029-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "703-Ventes de produits interm\u00e9diaires": { + "7031-Dans la R\u00e9gion": {}, + "7032-Hors R\u00e9gion": {}, + "7033-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7034-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7035-Sur internet": {}, + "7039-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "704-Ventes de produits r\u00e9siduels": { + "7041-Dans la R\u00e9gion": {}, + "7042-Hors R\u00e9gion": {}, + "7043-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7044-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7045-Sur internet": {}, + "7049-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "705-Travaux factur\u00e9s": { + "7051-Dans la R\u00e9gion": {}, + "7052-Hors R\u00e9gion": {}, + "7053-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7054-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7055-Sur internet": {}, + "7059-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "706-Services vendus": { + "7061-Dans la R\u00e9gion": {}, + "7062-Hors R\u00e9gion": {}, + "7063-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7064-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7065-Sur internet": {}, + "7069-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "707-Produits accessoires": { + "7071-Ports, emballages perdus et autres frais factur\u00e9s": {}, + "7072-Commissions et courtages": {}, + "7073-Locations": {}, + "7074-Bonis sur reprises et cessions d\u2019emballages": {}, + "7075-Mise \u00e0 disposition de personnel": {}, + "7076-Redevances pour brevets, logiciels, marques et droits similaires": {}, + "7077-Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": {}, + "7078-Autres produits accessoires": {} + } + }, + "71-Subventions d\u2019exploitation": { + "711-Sur produits \u00e0 l\u2019exportation": {}, + "712-Sur produits \u00e0 l\u2019importation": {}, + "713-Sur produits de p\u00e9r\u00e9quation": {}, + "714-Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": {}, + "718-Autres subventions d\u2019exploitation": { + "7181-Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": {}, + "7182-Vers\u00e9es par les organismes internationaux": {}, + "7183-Vers\u00e9es par des tiers": {} + } + }, + "72-Production immobilis\u00e9e": { + "721-Immobilisations incorporelles": {}, + "722-Immobilisations corporelles": { + "7221-Immobilisations corporelles (hors actifs biologiques)": {}, + "7222-Immobilisations corporelles (actifs biologiques)": {} + }, + "724-Production auto-consomm\u00e9e": {}, + "726-Immobilisations financi\u00e8res": {} + }, + "73-Variations des stocks de biens et de services produits": { + "734-Variations des stocks de produits en cours": { + "7341-Produits en cours": {}, + "7342-Travaux en cours": {} + }, + "735-Variations des en-cours de services": { + "7351-\u00c9tudes en cours": {}, + "7352-Prestations de services en cours": {} + }, + "736-Variations des stocks de produits finis": {}, + "737-Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "7371-Produits interm\u00e9diaires": {}, + "7372-Produits r\u00e9siduels": {} + } + }, + "75-Autres produits": { + "751-Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": {}, + "752-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "7521-Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": {}, + "7525-B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "754-Produits des cessions courantes d\u2019immobilisations": { + "7541-Immobilisations incorporelles": {}, + "7542-Immobilisations corporelles": {} + }, + "756-Gains de change sur cr\u00e9ances et dettes commerciales": {}, + "758-Produits divers": { + "7581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "7582-Indemnit\u00e9s d\u2019assurances re\u00e7ues": {}, + "7588-Autres produits divers": {} + }, + "759-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "7591-Sur risques \u00e0 court terme": {}, + "7593-Sur stocks": {}, + "7594-Sur cr\u00e9ances": {}, + "7598-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": {} + } + }, + "77-Revenus financiers et produits assimil\u00e9s": { + "771-Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "7712-Int\u00e9r\u00eats de pr\u00eats": {}, + "7713-Int\u00e9r\u00eats sur cr\u00e9ances diverses": {} + }, + "772-Revenus de participations et autres titres immobilis\u00e9s": { + "7721-Revenus des titres de participation": {}, + "7722-Revenus autres titres immobilis\u00e9s": {} + }, + "773-Escomptes obtenus": {}, + "774-Revenus de placement": { + "7745-Revenus des obligations": {}, + "7746-Revenus des titres de placement": {} + }, + "775-Int\u00e9r\u00eats dans loyers de location acquisition": {}, + "776-Gains de change financiers": {}, + "777-Gains sur cessions de titres de placement": {}, + "778-Gains sur risques financiers": { + "7781-Sur rentes viag\u00e8res": {}, + "7782-Sur op\u00e9rations financi\u00e8res": {}, + "7784-Sur instruments de tr\u00e9sorerie": {} + }, + "779-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "7791-Sur risques financiers": {}, + "7795-Sur titres de placement": {}, + "7798-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "78-Transferts de charges": { + "781-Transferts de charges d\u2019exploitation": {}, + "787-Transferts de charges financi\u00e8res": {} + }, + "79-Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "791-Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "7911-Pour risques et charges": {}, + "7913-Des immobilisations incorporelles": {}, + "7914-Des immobilisations corporelles": {} + }, + "797-Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "7971-Pour risques et charges": {}, + "7972-Des immobilisations financi\u00e8res": {} + }, + "798-Reprises d\u2019amortissements": {}, + "799-Reprises de subventions d\u2019investissement": {} + }, + "root_type": "Income" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "81-Valeurs comptables des cessions d\u2019immobilisations": { + "811-Immobilisations incorporelles": {}, + "812-Immobilisations corporelles": {}, + "816-Immobilisations financi\u00e8res": {} + }, + "83-Charges hors activit\u00e9s ordinaires": { + "831-Charges HAO constat\u00e9es": {}, + "833-Charges li\u00e9es aux op\u00e9rations de restructuration": {}, + "834-Pertes sur cr\u00e9ances HAO": {}, + "835-Dons et lib\u00e9ralit\u00e9s accord\u00e9s": {}, + "836-Abandons de cr\u00e9ances consentis": {}, + "837-Charges li\u00e9es aux op\u00e9rations de liquidation": {}, + "839-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "85-Dotations hors activit\u00e9s ordinaires": { + "851-Dotations aux provisions r\u00e9glement\u00e9es": {}, + "852-Dotations aux amortissements HAO": {}, + "853-Dotations aux d\u00e9pr\u00e9ciations HAO": {}, + "854-Dotations aux provisions pour risques et charges HAO": {}, + "858-Autres dotations HAO": {} + }, + "87-Participation des travailleurs": { + "871-Participation l\u00e9gale aux b\u00e9n\u00e9fices": {}, + "874-Participation contractuelle aux b\u00e9n\u00e9fices": {}, + "878-Autres participations": {} + }, + "89-Imp\u00f4ts sur le r\u00e9sultat": { + "891-Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "8911-Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": {}, + "8912-Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": {}, + "8913-Activit\u00e9s exerc\u00e9es hors R\u00e9gion": {} + }, + "892-Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": {}, + "895-Imp\u00f4t minimum forfaitaire IMF": {}, + "899-D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "8991-D\u00e9gr\u00e8vements": {}, + "8994-Annulations pour pertes r\u00e9troactives": {} + } + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "82-Produits des cessions d\u2019immobilisations": { + "821-Immobilisations incorporelles": {}, + "822-Immobilisations corporelles": {}, + "826-Immobilisations financi\u00e8res": {} + }, + "84-Produits hors activit\u00e9s ordinaires": { + "841-Produits HAO constat\u00e9s": {}, + "843-Produits li\u00e9s aux op\u00e9rations de restructuration": {}, + "844-Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": {}, + "845-Dons et lib\u00e9ralit\u00e9s obtenus": {}, + "846-Abandons de cr\u00e9ances obtenus": {}, + "847-Produits li\u00e9s aux op\u00e9rations de liquidation": {}, + "848-Transferts de charges HAO": {}, + "849-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "86-Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "861-Reprises de provisions r\u00e9glement\u00e9es": {}, + "862-Reprises d\u2019amortissements HAO": {}, + "863-Reprises de d\u00e9pr\u00e9ciations HAO": {}, + "864-Reprises de provisions pour risques et charges HAO": {}, + "868-Autres reprises HAO": {} + }, + "88-Subventions d\u2019\u00e9quilibre": { + "881-\u00c9tat": {}, + "884-Collectivit\u00e9s publiques": {}, + "886-Groupe": {}, + "888-Autres": {} + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/gw_plan_comptable_avec_code.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/gw_plan_comptable_avec_code.json new file mode 100644 index 00000000000..b4a817ea4cb --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/gw_plan_comptable_avec_code.json @@ -0,0 +1,4208 @@ +{ + "country_code": "gw", + "name": "Syscohada - Plan Comptable avec code", + "tree": { + "Comptes de ressources durables": { + "Capital": { + "Capital social": { + "Capital souscrit, non appel\u00e9": { + "account_number": "1011" + }, + "Capital souscrit, appel\u00e9, non vers\u00e9": { + "account_number": "1012" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, non amorti": { + "account_number": "1013" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, amorti": { + "account_number": "1014" + }, + "Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": { + "account_number": "1018" + }, + "account_number": "101" + }, + "Capital par dotation": { + "Dotation initiale": { + "account_number": "1021" + }, + "Dotations compl\u00e9mentaires": { + "account_number": "1022" + }, + "Autres dotations": { + "account_number": "1028" + }, + "account_number": "102" + }, + "Capital personnel": { + "account_number": "103" + }, + "Compte de l\u2019exploitant": { + "Apports temporaires": { + "account_number": "1041" + }, + "Op\u00e9rations courantes": { + "account_number": "1042" + }, + "R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": { + "account_number": "1043" + }, + "Pr\u00e9l\u00e8vements d\u2019autoconsommation": { + "account_number": "1047" + }, + "Autres pr\u00e9l\u00e8vements": { + "account_number": "1048" + }, + "account_number": "104" + }, + "Primes li\u00e9es au capital social": { + "Primes d\u2019\u00e9mission": { + "account_number": "1051" + }, + "Primes d\u2019apport": { + "account_number": "1052" + }, + "Primes de fusion": { + "account_number": "1053" + }, + "Primes de conversion": { + "account_number": "1054" + }, + "Autres primes": { + "account_number": "1058" + }, + "account_number": "105" + }, + "\u00c9carts de r\u00e9\u00e9valuation": { + "\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": { + "account_number": "1061" + }, + "\u00c9carts de r\u00e9\u00e9valuation libre": { + "account_number": "1062" + }, + "account_number": "106" + }, + "Apporteurs, capital souscrit, non appel\u00e9": { + "account_number": "109" + }, + "account_number": "10" + }, + "R\u00e9serves": { + "R\u00e9serve l\u00e9gale": { + "account_number": "111" + }, + "R\u00e9serves statutaires ou contractuelles": { + "account_number": "112" + }, + "R\u00e9serves r\u00e9glement\u00e9es": { + "R\u00e9serves de plus-values nettes \u00e0 long terme": { + "account_number": "1131" + }, + "R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "1132" + }, + "R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": { + "account_number": "1133" + }, + "R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": { + "account_number": "1134" + }, + "Autres r\u00e9serves r\u00e9glement\u00e9es": { + "account_number": "1135" + }, + "account_number": "113" + }, + "Autres r\u00e9serves": { + "R\u00e9serves facultatives": { + "account_number": "1181" + }, + "R\u00e9serves diverses": { + "account_number": "1188" + }, + "account_number": "118" + }, + "account_number": "11" + }, + "Report \u00e0 nouveau": { + "Report \u00e0 nouveau cr\u00e9diteur": { + "account_number": "121" + }, + "Report \u00e0 nouveau d\u00e9biteur": { + "Perte nette \u00e0 reporter": { + "account_number": "1291" + }, + "Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": { + "account_number": "1292" + }, + "account_number": "129" + }, + "account_number": "12" + }, + "R\u00e9sultat net de l\u2019exercice": { + "R\u00e9sultat en instance d\u2019affectation": { + "R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": { + "account_number": "1301" + }, + "R\u00e9sultat en instance d\u2019affectation : perte": { + "account_number": "1309" + }, + "account_number": "130" + }, + "R\u00e9sultat net : b\u00e9n\u00e9fice": { + "account_number": "131" + }, + "Marge commerciale (MC)": { + "account_number": "132" + }, + "Valeur ajout\u00e9e (VA)": { + "account_number": "133" + }, + "Exc\u00e9dent brut d\u2019exploitation (EBE)": { + "account_number": "134" + }, + "R\u00e9sultat d\u2019exploitation (RE)": { + "account_number": "135" + }, + "R\u00e9sultat financier (RF)": { + "account_number": "136" + }, + "R\u00e9sultat des activit\u00e9s ordinaires (RAO)": { + "account_number": "137" + }, + "R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "R\u00e9sultat de fusion": { + "account_number": "1381" + }, + "R\u00e9sultat d\u2019apport partiel d\u2019actif": { + "account_number": "1382" + }, + "R\u00e9sultat de scission": { + "account_number": "1383" + }, + "R\u00e9sultat de liquidation": { + "account_number": "1384" + }, + "account_number": "138" + }, + "R\u00e9sultat net : perte": { + "account_number": "139" + }, + "account_number": "13" + }, + "Subventions d\u2019investissement": { + "Subventions d\u2019\u00e9quipement": { + "\u00c9tat": { + "account_number": "1411" + }, + "R\u00e9gions": { + "account_number": "1412" + }, + "D\u00e9partements": { + "account_number": "1413" + }, + "Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": { + "account_number": "1414" + }, + "Entit\u00e9s publiques ou mixtes": { + "account_number": "1415" + }, + "Entit\u00e9s et organismes priv\u00e9s": { + "account_number": "1416" + }, + "Organismes internationaux": { + "account_number": "1417" + }, + "Autres": { + "account_number": "1418" + }, + "account_number": "141" + }, + "Autres subventions d\u2019investissement": { + "account_number": "148" + }, + "account_number": "14" + }, + "Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "Amortissements d\u00e9rogatoires": { + "account_number": "151" + }, + "Plus-values de cession \u00e0 r\u00e9investir": { + "account_number": "152" + }, + "Fonds r\u00e9glement\u00e9s": { + "Fonds National": { + "account_number": "1531" + }, + "Pr\u00e9l\u00e8vement pour le Budget": { + "account_number": "1532" + }, + "account_number": "153" + }, + "Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": { + "account_number": "154" + }, + "Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "Reconstitution des gisements miniers et p\u00e9troliers": { + "account_number": "1551" + }, + "account_number": "155" + }, + "Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "Hausse de prix": { + "account_number": "1561" + }, + "Fluctuation des cours": { + "account_number": "1562" + }, + "account_number": "156" + }, + "Provisions pour investissement": { + "account_number": "157" + }, + "Autres provisions et fonds r\u00e9glement\u00e9s": { + "account_number": "158" + }, + "account_number": "15" + }, + "Emprunts et dettes assimil\u00e9es": { + "Emprunts obligataires": { + "Emprunts obligataires ordinaires": { + "account_number": "1611" + }, + "Emprunts obligataires convertibles en actions": { + "account_number": "1612" + }, + "Emprunts obligataires remboursables en actions": { + "account_number": "1613" + }, + "Autres emprunts obligataires": { + "account_number": "1618" + }, + "account_number": "161" + }, + "Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "162" + }, + "Avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "163" + }, + "Avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "164" + }, + "D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "D\u00e9p\u00f4ts": { + "account_number": "1651" + }, + "Cautionnements": { + "account_number": "1652" + }, + "account_number": "165" + }, + "Int\u00e9r\u00eats courus": { + "Sur emprunts obligataires": { + "account_number": "1661" + }, + "Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "1662" + }, + "Sur avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "1663" + }, + "Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "1664" + }, + "Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "account_number": "1665" + }, + "Sur avances assorties de conditions particuli\u00e8res": { + "account_number": "1667" + }, + "Sur autres emprunts et dettes": { + "account_number": "1668" + }, + "account_number": "166" + }, + "Avances assorties de conditions particuli\u00e8res": { + "Avances bloqu\u00e9es pour augmentation du capital": { + "account_number": "1671" + }, + "Avances conditionn\u00e9es par l\u2019\u00c9tat": { + "account_number": "1672" + }, + "Avances conditionn\u00e9es par les autres organismes africains": { + "account_number": "1673" + }, + "Avances conditionn\u00e9es par les organismes internationaux": { + "account_number": "1674" + }, + "account_number": "167" + }, + "Autres emprunts et dettes": { + "Rentes viag\u00e8res capitalis\u00e9es": { + "account_number": "1681" + }, + "Billets de fonds": { + "account_number": "1682" + }, + "Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": { + "account_number": "1683" + }, + "Emprunts participatifs": { + "account_number": "1684" + }, + "Participation des travailleurs aux b\u00e9n\u00e9fices": { + "account_number": "1685" + }, + "Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": { + "account_number": "1686" + }, + "account_number": "168" + }, + "account_number": "16" + }, + "Dettes de location acquisition": { + "Dettes de location acquisition / cr\u00e9dit bail immobilier": { + "account_number": "172" + }, + "Dettes de location acquisition / cr\u00e9dit bail mobilier": { + "account_number": "173" + }, + "Dettes de location acquisition / location de vente": { + "account_number": "174" + }, + "Int\u00e9r\u00eats courus": { + "Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "1762" + }, + "Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "1763" + }, + "Sur dettes de location acquisition / location-vente": { + "account_number": "1764" + }, + "Sur autres dettes de location acquisition": { + "account_number": "1768" + }, + "account_number": "176" + }, + "Autres dettes de location acquisition": { + "account_number": "178" + }, + "account_number": "17" + }, + "Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "Dettes li\u00e9es \u00e0 des participations": { + "Dettes li\u00e9es \u00e0 des participations (groupe)": { + "account_number": "1811" + }, + "Dettes li\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "1812" + }, + "account_number": "181" + }, + "Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "182" + }, + "Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": { + "account_number": "183" + }, + "Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "184" + }, + "Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "185" + }, + "Comptes de liaison charges": { + "account_number": "186" + }, + "Comptes de liaison produits": { + "account_number": "187" + }, + "Comptes de liaison des soci\u00e9t\u00e9s en participation": { + "account_number": "188" + }, + "account_number": "18" + }, + "Provisions pour risques et charges": { + "Provisions pour litiges": { + "account_number": "191" + }, + "Provisions pour garanties donn\u00e9es aux clients": { + "account_number": "192" + }, + "Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": { + "account_number": "193" + }, + "Provisions pour pertes de change": { + "account_number": "194" + }, + "Provisions pour imp\u00f4ts": { + "account_number": "195" + }, + "Provisions pour pensions et obligations similaires": { + "Provisions pour pensions et obligations similaires engagement de retraite": { + "account_number": "1961" + }, + "Actif du r\u00e9gime de retraite": { + "account_number": "1962" + }, + "account_number": "196" + }, + "Provisions pour restructuration": { + "account_number": "197" + }, + "Autres provisions pour risques et charges": { + "Provisions pour amendes et p\u00e9nalit\u00e9s": { + "account_number": "1981" + }, + "Provisions pour propre assureur": { + "account_number": "1983" + }, + "Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "1984" + }, + "Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": { + "account_number": "1985" + }, + "Provisions pour divers risques et charges": { + "account_number": "1988" + }, + "account_number": "198" + }, + "account_number": "19" + }, + "root_type": "Equity", + "account_number": "1" + }, + "Comptes d\u2019actif immobilis\u00e9": { + "Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "211" + }, + "Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "Brevets": { + "account_type": "Fixed Asset", + "account_number": "2121" + }, + "Licences": { + "account_type": "Fixed Asset", + "account_number": "2122" + }, + "Concessions de service public": { + "account_type": "Fixed Asset", + "account_number": "2123" + }, + "Autres concessions et droits similaires": { + "account_type": "Fixed Asset", + "account_number": "2128" + }, + "account_number": "212" + }, + "Logiciels et sites internet": { + "account_type": "Fixed Asset", + "Logiciels": { + "account_type": "Fixed Asset", + "account_number": "2131" + }, + "Sites internet": { + "account_type": "Fixed Asset", + "account_number": "2132" + }, + "account_number": "213" + }, + "Marques": { + "account_type": "Fixed Asset", + "account_number": "214" + }, + "Fonds commercial": { + "account_type": "Fixed Asset", + "account_number": "215" + }, + "Droit au bail": { + "account_type": "Fixed Asset", + "account_number": "216" + }, + "Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset", + "account_number": "217" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset", + "account_number": "2181" + }, + "Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset", + "account_number": "2182" + }, + "Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset", + "account_number": "2183" + }, + "Co\u00fbts des franchises": { + "account_type": "Fixed Asset", + "account_number": "2184" + }, + "Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset", + "account_number": "2188" + }, + "account_number": "218" + }, + "Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "2191" + }, + "Logiciels et internet": { + "account_type": "Fixed Asset", + "account_number": "2193" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "account_number": "2198" + }, + "account_number": "219" + }, + "account_number": "21" + }, + "Terrains": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset", + "account_number": "2211" + }, + "Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset", + "account_number": "2212" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2218" + }, + "account_number": "221" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset", + "account_number": "2221" + }, + "Autres terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2228" + }, + "account_number": "222" + }, + "Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset", + "account_number": "2231" + }, + "Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset", + "account_number": "2232" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2234" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2235" + }, + "Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "account_number": "2238" + }, + "account_number": "223" + }, + "Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset", + "account_number": "2241" + }, + "Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset", + "account_number": "2245" + }, + "Autres travaux": { + "account_type": "Fixed Asset", + "account_number": "2248" + }, + "account_number": "224" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "Carri\u00e8res": { + "account_type": "Fixed Asset", + "account_number": "2251" + }, + "account_number": "225" + }, + "Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "Parkings": { + "account_type": "Fixed Asset", + "account_number": "2261" + }, + "account_number": "226" + }, + "Terrains mis en concession": { + "account_type": "Fixed Asset", + "account_number": "227" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "Terrains immeubles de placement": { + "account_type": "Fixed Asset", + "account_number": "2281" + }, + "Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset", + "account_number": "2285" + }, + "Terrains de location acquisition": { + "account_type": "Fixed Asset", + "account_number": "2286" + }, + "Divers terrains": { + "account_type": "Fixed Asset", + "account_number": "2288" + }, + "account_number": "228" + }, + "Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "account_number": "2291" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2292" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "account_number": "2295" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2298" + }, + "account_number": "229" + }, + "account_number": "22" + }, + "B\u00e2timents, installations techniques et agencements": { + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "B\u00e2timents industriels": { + "account_number": "2311" + }, + "B\u00e2timents agricoles": { + "account_number": "2312" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2313" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2314" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2315" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2316" + }, + "account_number": "231" + }, + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "B\u00e2timents industriels": { + "account_number": "2321" + }, + "B\u00e2timents agricoles": { + "account_number": "2322" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2323" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2324" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2325" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2326" + }, + "account_number": "232" + }, + "Ouvrages d\u2019infrastructure": { + "Voies de terre": { + "account_number": "2331" + }, + "Voies de fer": { + "account_number": "2332" + }, + "Voies d\u2019eau": { + "account_number": "2333" + }, + "Barrages, Digues": { + "account_number": "2334" + }, + "Pistes d\u2019a\u00e9rodrome": { + "account_number": "2335" + }, + "Autres ouvrages d\u2019infrastructures": { + "account_number": "2338" + }, + "account_number": "233" + }, + "Am\u00e9nagements, agencements et installations techniques": { + "Installations complexes sp\u00e9cialis\u00e9es sur sol propre": { + "account_number": "2341" + }, + "Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": { + "account_number": "2342" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": { + "account_number": "2343" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": { + "account_number": "2344" + }, + "Am\u00e9nagements et agencements des b\u00e2timents": { + "account_number": "2345" + }, + "account_number": "234" + }, + "Am\u00e9nagements de bureaux": { + "Installations g\u00e9n\u00e9rales": { + "account_number": "2351" + }, + "Autres am\u00e9nagements de bureaux": { + "account_number": "2358" + }, + "account_number": "235" + }, + "B\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "237" + }, + "Autres installations et agencements": { + "account_number": "238" + }, + "B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "B\u00e2timents en cours": { + "account_number": "2391" + }, + "Installations en cours": { + "account_number": "2392" + }, + "Ouvrages d\u2019infrastructure en cours": { + "account_number": "2393" + }, + "Am\u00e9nagements et agencements et installations techniques en cours": { + "account_number": "2394" + }, + "Am\u00e9nagements de bureaux en cours": { + "account_number": "2395" + }, + "Autres installations et agencements en cours": { + "account_number": "2398" + }, + "account_number": "239" + }, + "account_number": "23" + }, + "Mat\u00e9riel, mobilier et actifs biologiques": { + "Mat\u00e9riel et outillage industriel et commercial": { + "Mat\u00e9riel industriel": { + "account_number": "2411" + }, + "Outillage industriel": { + "account_number": "2412" + }, + "Mat\u00e9riel commercial": { + "account_number": "2413" + }, + "Outillage commercial": { + "account_number": "2414" + }, + "Mat\u00e9riel & outillage industriel et commercial de location-acquisition": { + "account_number": "2416" + }, + "account_number": "241" + }, + "Mat\u00e9riel et outillage agricole": { + "Mat\u00e9riel agricole": { + "account_number": "2421" + }, + "Outillage agricole": { + "account_number": "2422" + }, + "Mat\u00e9riel & outillage agricole de location-acquisition": { + "account_number": "2426" + }, + "account_number": "242" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "243" + }, + "Mat\u00e9riel et mobilier": { + "Mat\u00e9riel de bureau": { + "account_number": "2441" + }, + "Mat\u00e9riel informatique": { + "account_number": "2442" + }, + "Mat\u00e9riel bureautique": { + "account_number": "2443" + }, + "Mobilier de bureau": { + "account_number": "2444" + }, + "Mat\u00e9riel et mobilier immeubles de placement": { + "account_number": "2445" + }, + "Mat\u00e9riel et mobilier de location acquisition": { + "account_number": "2446" + }, + "Mat\u00e9riel et mobilier des logements du personnel": { + "account_number": "2447" + }, + "account_number": "244" + }, + "Mat\u00e9riel de transport": { + "Mat\u00e9riel automobile": { + "account_number": "2451" + }, + "Mat\u00e9riel ferroviaire": { + "account_number": "2452" + }, + "Mat\u00e9riel fluvial, lagunaire": { + "account_number": "2453" + }, + "Mat\u00e9riel naval": { + "account_number": "2454" + }, + "Mat\u00e9riel a\u00e9rien": { + "account_number": "2455" + }, + "Mat\u00e9riel de transport de location-acquisition": { + "account_number": "2456" + }, + "Mat\u00e9riel hippomobile": { + "account_number": "2457" + }, + "Autres mat\u00e9riels de transport": { + "account_number": "2458" + }, + "account_number": "245" + }, + "Actifs biologiques": { + "Cheptel, animaux de trait": { + "account_number": "2461" + }, + "Cheptel, animaux reproducteurs": { + "account_number": "2462" + }, + "Animaux de garde": { + "account_number": "2463" + }, + "Plantations agricoles": { + "account_number": "2465" + }, + "Autres actifs biologiques": { + "account_number": "2468" + }, + "account_number": "246" + }, + "Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "Agencements et am\u00e9nagements du mat\u00e9riel": { + "account_number": "2471" + }, + "Agencements et am\u00e9nagements des actifs biologiques": { + "account_number": "2472" + }, + "Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2478" + }, + "account_number": "247" + }, + "Autres mat\u00e9riels et mobiliers": { + "Collections et \u0153uvres d\u2019art": { + "account_number": "2481" + }, + "Divers mat\u00e9riels mobiliers": { + "account_number": "2488" + }, + "account_number": "248" + }, + "Mat\u00e9riels et actifs biologiques en cours": { + "Mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2491" + }, + "Mat\u00e9riel et outillage agricole": { + "account_number": "2492" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2493" + }, + "Mat\u00e9riel et mobilier de bureau": { + "account_number": "2494" + }, + "Mat\u00e9riel de transport": { + "account_number": "2495" + }, + "Actifs biologiques": { + "account_number": "2496" + }, + "Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2497" + }, + "Autres mat\u00e9riels et actifs biologiques en cours": { + "account_number": "2498" + }, + "account_number": "249" + }, + "account_number": "24" + }, + "Avances et acomptes vers\u00e9s sur immobilisations": { + "Avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "251" + }, + "Avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "252" + }, + "account_number": "25" + }, + "Titres de participation": { + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "261" + }, + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "262" + }, + "Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "263" + }, + "Participations dans des organismes professionnels": { + "account_number": "265" + }, + "Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "266" + }, + "Autres titres de participation": { + "account_number": "268" + }, + "account_number": "26" + }, + "Autres immobilisations financi\u00e8res": { + "Pr\u00eats et cr\u00e9ances": { + "Pr\u00eats participatifs": { + "account_number": "2711" + }, + "Pr\u00eats aux associ\u00e9s": { + "account_number": "2712" + }, + "Billets de fonds": { + "account_number": "2713" + }, + "Titres pr\u00eat\u00e9s": { + "account_number": "2714" + }, + "Autres pr\u00eats et cr\u00e9ances": { + "account_number": "2718" + }, + "account_number": "271" + }, + "Pr\u00eats au personnel": { + "Pr\u00eats immobiliers": { + "account_number": "2721" + }, + "Pr\u00eats mobiliers et d\u2019installation": { + "account_number": "2722" + }, + "Autres pr\u00eats au personnel": { + "account_number": "2728" + }, + "account_number": "272" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "Retenues de garantie": { + "account_number": "2731" + }, + "Fonds r\u00e9glement\u00e9": { + "account_number": "2733" + }, + "Cr\u00e9ances sur le conc\u00e9dant": { + "account_number": "2734" + }, + "Autres cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2738" + }, + "account_number": "273" + }, + "Titres immobilis\u00e9s": { + "Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": { + "account_number": "2741" + }, + "Titres participatifs": { + "account_number": "2742" + }, + "Certificats d\u2019investissement": { + "account_number": "2743" + }, + "Parts de fonds commun de placement (FCP)": { + "account_number": "2744" + }, + "Obligations": { + "account_number": "2745" + }, + "Actions ou parts propres": { + "account_number": "2746" + }, + "Autres titres immobilis\u00e9s": { + "account_number": "2748" + }, + "account_number": "274" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "D\u00e9p\u00f4ts pour loyers d\u2019avance": { + "account_number": "2751" + }, + "D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": { + "account_number": "2752" + }, + "D\u00e9p\u00f4ts pour l\u2019eau": { + "account_number": "2753" + }, + "D\u00e9p\u00f4ts pour le gaz": { + "account_number": "2754" + }, + "D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": { + "account_number": "2755" + }, + "Cautionnements sur march\u00e9s publics": { + "account_number": "2756" + }, + "Cautionnements sur autres op\u00e9rations": { + "account_number": "2757" + }, + "Autres d\u00e9p\u00f4ts et cautionnements": { + "account_number": "2758" + }, + "account_number": "275" + }, + "Int\u00e9r\u00eats courus": { + "Pr\u00eats et cr\u00e9ances non commerciales": { + "account_number": "2761" + }, + "Pr\u00eats au personnel": { + "account_number": "2762" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2763" + }, + "Titres immobilis\u00e9s": { + "account_number": "2764" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2765" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "account_number": "2767" + }, + "Immobilisations financi\u00e8res diverses": { + "account_number": "2768" + }, + "account_number": "276" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": { + "account_number": "2771" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "2772" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "2773" + }, + "Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "2774" + }, + "account_number": "277" + }, + "Immobilisations financi\u00e8res diverses": { + "Cr\u00e9ances diverses groupe": { + "account_number": "2781" + }, + "Cr\u00e9ances diverses hors groupe": { + "account_number": "2782" + }, + "Banques d\u00e9p\u00f4ts \u00e0 terme": { + "account_number": "2784" + }, + "Or et m\u00e9taux pr\u00e9cieux": { + "account_number": "2785" + }, + "Autres immobilisations financi\u00e8res": { + "account_number": "2788" + }, + "account_number": "278" + }, + "account_number": "27" + }, + "Amortissements": { + "account_type": "Accumulated Depreciation", + "Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation", + "account_number": "2811" + }, + "Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation", + "account_number": "2812" + }, + "Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation", + "account_number": "2813" + }, + "Amortissements des marques": { + "account_type": "Accumulated Depreciation", + "account_number": "2814" + }, + "Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation", + "account_number": "2815" + }, + "Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation", + "account_number": "2816" + }, + "Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation", + "account_number": "2817" + }, + "Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation", + "account_number": "2818" + }, + "account_number": "281" + }, + "Amortissements des terrains": { + "Amortissements des travaux de mise en valeur des terrains": { + "account_number": "2824" + }, + "account_number": "282" + }, + "Amortissements des b\u00e2timents, installations techniques et agencements": { + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2831" + }, + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2832" + }, + "Amortissements des ouvrages d\u2019infrastructure": { + "account_number": "2833" + }, + "Amortissements des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2834" + }, + "Amortissements des am\u00e9nagements de bureaux": { + "account_number": "2835" + }, + "Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2837" + }, + "Amortissements des autres installations et agencements": { + "account_number": "2838" + }, + "account_number": "283" + }, + "Amortissements du mat\u00e9riel": { + "Amortissements du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2841" + }, + "Amortissements du mat\u00e9riel et outillage agricole": { + "account_number": "2842" + }, + "Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2843" + }, + "Amortissements du mat\u00e9riel et mobilier": { + "account_number": "2844" + }, + "Amortissements du mat\u00e9riel de transport": { + "account_number": "2845" + }, + "Amortissements des actifs biologiques": { + "account_number": "2846" + }, + "Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2847" + }, + "Amortissements des autres mat\u00e9riels": { + "account_number": "2848" + }, + "account_number": "284" + }, + "account_number": "28" + }, + "D\u00e9pr\u00e9ciations des immobilisations": { + "D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": { + "account_number": "2911" + }, + "D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": { + "account_number": "2912" + }, + "D\u00e9pr\u00e9ciations des logiciels et sites internet": { + "account_number": "2913" + }, + "D\u00e9pr\u00e9ciations des marques": { + "account_number": "2914" + }, + "D\u00e9pr\u00e9ciations du fonds commercial": { + "account_number": "2915" + }, + "D\u00e9pr\u00e9ciations du droit au bail": { + "account_number": "2916" + }, + "D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": { + "account_number": "2917" + }, + "D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": { + "account_number": "2918" + }, + "D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": { + "account_number": "2919" + }, + "account_number": "291" + }, + "D\u00e9pr\u00e9ciations des terrains": { + "D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": { + "account_number": "2921" + }, + "D\u00e9pr\u00e9ciations des terrains nus": { + "account_number": "2922" + }, + "D\u00e9pr\u00e9ciations des terrains b\u00e2tis": { + "account_number": "2923" + }, + "D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": { + "account_number": "2924" + }, + "D\u00e9pr\u00e9ciations des terrains de gisement": { + "account_number": "2925" + }, + "D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": { + "account_number": "2926" + }, + "D\u00e9pr\u00e9ciations des terrains mis en concession": { + "account_number": "2927" + }, + "D\u00e9pr\u00e9ciations des autres terrains": { + "account_number": "2928" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": { + "account_number": "2929" + }, + "account_number": "292" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2931" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2932" + }, + "D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": { + "account_number": "2933" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2934" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": { + "account_number": "2935" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2937" + }, + "D\u00e9pr\u00e9ciations des autres installations et agencements": { + "account_number": "2938" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": { + "account_number": "2939" + }, + "account_number": "293" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2941" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": { + "account_number": "2942" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2943" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": { + "account_number": "2944" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": { + "account_number": "2945" + }, + "D\u00e9pr\u00e9ciations des actifs biologiques": { + "account_number": "2946" + }, + "D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2947" + }, + "D\u00e9pr\u00e9ciations des autres mat\u00e9riels": { + "account_number": "2948" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": { + "account_number": "2949" + }, + "account_number": "294" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "2951" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "2952" + }, + "account_number": "295" + }, + "D\u00e9pr\u00e9ciations des titres de participation": { + "D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "2961" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "2962" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "2963" + }, + "D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": { + "account_number": "2965" + }, + "D\u00e9pr\u00e9ciations des parts dans des GIE": { + "account_number": "2966" + }, + "D\u00e9pr\u00e9ciations des autres titres de participation": { + "account_number": "2968" + }, + "account_number": "296" + }, + "D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": { + "account_number": "2971" + }, + "D\u00e9pr\u00e9ciations des pr\u00eats au personnel": { + "account_number": "2972" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2973" + }, + "D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": { + "account_number": "2974" + }, + "D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2975" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "account_number": "2977" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": { + "account_number": "2978" + }, + "account_number": "297" + }, + "account_number": "29" + }, + "root_type": "Asset", + "account_number": "2" + }, + "Comptes de Stocks": { + "Marchandises": { + "Marchandises A": { + "Marchandises A1": { + "account_number": "3111" + }, + "Marchandises A2": { + "account_number": "3112" + }, + "account_number": "311" + }, + "Marchandises B": { + "Marchandises B1": { + "account_number": "3121" + }, + "Marchandises B2": { + "account_number": "3122" + }, + "account_number": "312" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3131" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3132" + }, + "account_number": "313" + }, + "Marchandises hors activit\u00e9s ordinaires (HAO)": { + "account_number": "318" + }, + "account_number": "31" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Mati\u00e8res A": { + "account_number": "321" + }, + "Mati\u00e8res B": { + "account_number": "322" + }, + "Fournitures (A, B)": { + "account_number": "323" + }, + "account_number": "32" + }, + "Autres approvisionnements": { + "Mati\u00e8res consommables": { + "account_number": "331" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "332" + }, + "Fournitures de magasin": { + "account_number": "333" + }, + "Fournitures de bureau": { + "account_number": "334" + }, + "Emballages": { + "Emballages perdus": { + "account_number": "3351" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "3352" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "3353" + }, + "Autres emballages": { + "account_number": "3358" + }, + "account_number": "335" + }, + "Autres mati\u00e8res": { + "account_number": "338" + }, + "account_number": "33" + }, + "Produits en cours": { + "Produits en cours": { + "Produits en cours P1": { + "account_number": "3411" + }, + "Produits en cours P2": { + "account_number": "3412" + }, + "account_number": "341" + }, + "Travaux en cours": { + "Travaux en cours T1": { + "account_number": "3421" + }, + "Travaux en cours T2": { + "account_number": "3422" + }, + "account_number": "342" + }, + "Produits interm\u00e9diaires en cours": { + "Produits interm\u00e9diaires A": { + "account_number": "3431" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3432" + }, + "account_number": "343" + }, + "Produits r\u00e9siduels en cours": { + "Produits r\u00e9siduels A": { + "account_number": "3441" + }, + "Produits r\u00e9siduels B": { + "account_number": "3442" + }, + "account_number": "344" + }, + "Actifs biologiques en cours": { + "Animaux": { + "account_number": "3451" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3452" + }, + "account_number": "345" + }, + "account_number": "34" + }, + "Services en cours": { + "\u00c9tudes en cours": { + "\u00c9tudes en cours E1": { + "account_number": "3511" + }, + "\u00c9tudes en cours E2": { + "account_number": "3512" + }, + "account_number": "351" + }, + "Prestations de services en cours": { + "Prestations de services S1": { + "account_number": "3521" + }, + "Prestations de services S2": { + "account_number": "3522" + } + }, + "account_number": "35" + }, + "Produits finis": { + "Produits finis A": { + "account_number": "361" + }, + "Produits finis B": { + "account_number": "362" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3631" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3632" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3638" + }, + "account_number": "363" + }, + "account_number": "36" + }, + "Produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "Produits interm\u00e9diaires A": { + "account_number": "3711" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3712" + }, + "account_number": "371" + }, + "Produits r\u00e9siduels": { + "D\u00e9chets": { + "account_number": "3721" + }, + "Rebuts": { + "account_number": "3722" + }, + "Mati\u00e8res de R\u00e9cup\u00e9ration": { + "account_number": "3723" + }, + "account_number": "372" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3731" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3732" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3738" + }, + "account_number": "373" + }, + "account_number": "37" + }, + "Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "Marchandises en cours de route": { + "account_number": "381" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": { + "account_number": "382" + }, + "Autres approvisionnements en cours de route": { + "account_number": "383" + }, + "Produits finis en cours de route": { + "account_number": "386" + }, + "Stock en consignation ou en d\u00e9p\u00f4t": { + "Stock en consignation": { + "account_number": "3871" + }, + "Stock en d\u00e9p\u00f4t": { + "account_number": "3872" + }, + "account_number": "387" + }, + "Stock provenant d\u2019immobilisations mises hors service ou au rebut": { + "account_number": "388" + }, + "account_number": "38" + }, + "D\u00e9pr\u00e9ciations des stocks et encours de production": { + "D\u00e9pr\u00e9ciations des stocks de marchandises": { + "account_number": "391" + }, + "D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "392" + }, + "D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": { + "account_number": "393" + }, + "D\u00e9pr\u00e9ciations des productions en cours": { + "account_number": "394" + }, + "D\u00e9pr\u00e9ciations des services en cours": { + "account_number": "395" + }, + "D\u00e9pr\u00e9ciations des stocks de produits finis": { + "account_number": "396" + }, + "D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "account_number": "397" + }, + "D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_number": "398" + }, + "account_number": "39" + }, + "root_type": "Asset", + "account_number": "3" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "Fournisseurs d\u00e9biteurs": { + "Fournisseurs Avances et acomptes vers\u00e9s": { + "account_number": "4091" + }, + "Fournisseurs Groupe avances et acomptes vers\u00e9s": { + "account_number": "4092" + }, + "Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": { + "account_number": "4093" + }, + "Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": { + "account_number": "4094" + }, + "Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": { + "account_number": "4098" + }, + "account_number": "409" + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "Clients": { + "Clients": { + "account_type": "Receivable", + "account_number": "4111" + }, + "Clients groupe": { + "account_type": "Receivable", + "account_number": "4112" + }, + "Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable", + "account_number": "4114" + }, + "Clients, organismes internationaux": { + "account_type": "Receivable", + "account_number": "4115" + }, + "Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable", + "account_number": "4116" + }, + "Client, retenues de garantie": { + "account_type": "Receivable", + "account_number": "4117" + }, + "Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable", + "account_number": "4118" + }, + "account_type": "Receivable", + "account_number": "411" + }, + "Clients, effets \u00e0 recevoir en portefeuille": { + "Clients, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4121" + }, + "Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4122" + }, + "\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4124" + }, + "Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4125" + }, + "account_type": "Receivable", + "account_number": "412" + }, + "Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4131" + }, + "Clients, effets impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4132" + }, + "Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4133" + }, + "Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4138" + }, + "account_type": "Receivable", + "account_number": "413" + }, + "Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4141" + }, + "Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4142" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4146" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4147" + }, + "account_type": "Receivable", + "account_number": "414" + }, + "Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable", + "account_number": "415" + }, + "Cr\u00e9ances clients litigieuses ou douteuses": { + "Cr\u00e9ances litigieuses": { + "account_type": "Receivable", + "account_number": "4161" + }, + "Cr\u00e9ances douteuses": { + "account_type": "Receivable", + "account_number": "4162" + }, + "account_type": "Receivable", + "account_number": "416" + }, + "Clients, produits \u00e0 recevoir": { + "Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable", + "account_number": "4181" + }, + "Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable", + "account_number": "4186" + }, + "account_type": "Receivable", + "account_number": "418" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "Personnel, avances et acomptes": { + "Personnel, avances": { + "account_number": "4211" + }, + "Personnel, acomptes": { + "account_number": "4212" + }, + "Frais avanc\u00e9s et fournitures au personnel": { + "account_number": "4213" + }, + "account_number": "421" + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "Prestations familiales": { + "account_number": "4311" + }, + "Accidents de travail": { + "account_number": "4312" + }, + "Caisse de retraite obligatoire": { + "account_number": "4313" + }, + "Caisse de retraite facultative": { + "account_number": "4314" + }, + "Autres cotisations sociales": { + "account_number": "4318" + } + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "Mutuelle": { + "account_number": "4331" + }, + "Assurances retraite": { + "account_number": "4332" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "4333" + } + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Produits \u00e0 recevoir": { + "account_number": "4387" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "\u00c9tat, TVA factur\u00e9e": { + "TVA factur\u00e9e sur ventes": { + "account_number": "4431" + }, + "TVA factur\u00e9e sur prestations de services": { + "account_number": "4432" + }, + "TVA factur\u00e9e sur travaux": { + "account_number": "4433" + }, + "TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": { + "account_number": "4434" + }, + "TVA sur factures \u00e0 \u00e9tablir": { + "account_number": "4435" + }, + "account_number": "443" + }, + "\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "TVA r\u00e9cup\u00e9rable sur immobilisations": { + "account_number": "4451" + }, + "TVA r\u00e9cup\u00e9rable sur achats": { + "account_number": "4452" + }, + "TVA r\u00e9cup\u00e9rable sur transport": { + "account_number": "4453" + }, + "TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": { + "account_number": "4454" + }, + "TVA r\u00e9cup\u00e9rable sur factures non parvenues": { + "account_number": "4455" + }, + "TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": { + "account_number": "4456" + }, + "account_number": "445" + }, + "\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges \u00e0 payer": { + "account_number": "4486" + }, + "Produits \u00e0 recevoir": { + "account_number": "4487" + }, + "account_number": "448" + }, + "\u00c9tat, cr\u00e9ances et dettes diverses": { + "\u00c9tat, obligations cautionn\u00e9es": { + "account_number": "4491" + }, + "\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": { + "account_number": "4492" + }, + "\u00c9tat, fonds de dotation \u00e0 recevoir": { + "account_number": "4493" + }, + "\u00c9tat, subventions investissement \u00e0 recevoir": { + "account_number": "4494" + }, + "\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": { + "account_number": "4495" + }, + "\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": { + "account_number": "4496" + }, + "\u00c9tat, avances sur subventions": { + "account_number": "4497" + }, + "\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": { + "account_number": "4499" + }, + "account_number": "449" + } + }, + "45-Organismes internationaux (ACTIF)": { + "Op\u00e9rations avec les organismes africains": { + "account_number": "451" + }, + "Op\u00e9rations avec les autres organismes internationaux": { + "account_number": "452" + }, + "Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "Organismes internationaux, fonds de dotation \u00e0 recevoir": { + "account_number": "4581" + }, + "Organismes internationaux, subventions \u00e0 recevoir": { + "account_number": "4582" + }, + "account_number": "458" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "Apporteurs, capital appel\u00e9, non vers\u00e9": { + "account_number": "4613" + }, + "Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": { + "account_number": "4614" + }, + "Apporteurs, titres \u00e0 \u00e9changer": { + "account_number": "4618" + } + }, + "Apporteurs, restant d\u00fb sur capital appel\u00e9": { + "account_number": "467" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4721" + }, + "Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": { + "account_number": "4726" + } + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "Mandants": { + "account_number": "4731" + }, + "Mandataires": { + "account_number": "4732" + }, + "Commettants": { + "account_number": "4733" + }, + "Commissionnaires": { + "account_number": "4734" + }, + "\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": { + "account_number": "4739" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "Compte de r\u00e9partition p\u00e9riodique des produits": { + "account_number": "4747" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "Compte actif": { + "account_type": "Temporary", + "account_number": "4751" + } + }, + "Charges constat\u00e9es d\u2019avance": { + "account_number": "476" + }, + "478-\u00c9carts de conversion actif": { + "Diminution des cr\u00e9ances d\u2019exploitation": { + "account_number": "4781" + }, + "Diminution des cr\u00e9ances financi\u00e8res": { + "account_number": "4782" + }, + "Augmentation des dettes d\u2019exploitation": { + "account_number": "4783" + }, + "Augmentation des dettes financi\u00e8res": { + "account_number": "4784" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4786" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4788" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "En compte, immobilisations incorporelles": { + "account_number": "4851" + }, + "En compte, immobilisations corporelles": { + "account_number": "4852" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_number": "4853" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_number": "4854" + }, + "Effets escompt\u00e9s non \u00e9chus": { + "account_number": "4855" + }, + "Retenues de garantie": { + "account_number": "4857" + }, + "Factures \u00e0 \u00e9tablir": { + "account_number": "4858" + }, + "account_number": "485" + }, + "Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": { + "account_number": "488" + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "D\u00e9pr\u00e9ciations des comptes clients": { + "Cr\u00e9ances litigieuses": { + "account_number": "4911" + }, + "Cr\u00e9ances douteuses": { + "account_number": "4912" + }, + "account_number": "491" + }, + "D\u00e9pr\u00e9ciations des comptes organismes internationaux": { + "account_number": "495" + }, + "D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "Associ\u00e9s, comptes courants": { + "account_number": "4962" + }, + "Associ\u00e9s, op\u00e9rations faites en commun": { + "account_number": "4963" + }, + "Groupe, comptes courants": { + "account_number": "4966" + }, + "account_number": "496" + }, + "D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": { + "account_number": "497" + }, + "D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "account_number": "4985" + }, + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4986" + }, + "Autres cr\u00e9ances HAO": { + "account_number": "4988" + }, + "account_number": "498" + }, + "Provisions pour risques \u00e0 court terme": { + "Sur op\u00e9rations d\u2019exploitation": { + "account_number": "4991" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "4997" + }, + "Sur op\u00e9rations HAO": { + "account_number": "4998" + }, + "account_number": "499" + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "Fournisseurs, dettes en compte": { + "Fournisseurs": { + "account_type": "Payable", + "account_number": "4011" + }, + "Fournisseurs groupe": { + "account_type": "Payable", + "account_number": "4012" + }, + "Fournisseurs sous-traitants": { + "account_type": "Payable", + "account_number": "4013" + }, + "Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable", + "account_number": "4016" + }, + "Fournisseur, retenues de garantie": { + "account_type": "Payable", + "account_number": "4017" + }, + "account_type": "Payable", + "account_number": "401" + }, + "Fournisseurs, effets \u00e0 payer": { + "Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4021" + }, + "Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4022" + }, + "Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4023" + }, + "account_type": "Payable", + "account_number": "402" + }, + "Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4041" + }, + "Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4042" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4046" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4047" + }, + "account_type": "Payable", + "account_number": "404" + }, + "Fournisseurs, factures non parvenues": { + "Fournisseurs": { + "account_type": "Stock Received But Not Billed", + "account_number": "4081" + }, + "Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed", + "account_number": "4082" + }, + "Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed", + "account_number": "4083" + }, + "Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed", + "account_number": "4086" + }, + "account_type": "Stock Received But Not Billed", + "account_number": "408" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "Clients cr\u00e9diteurs": { + "Clients, avances et acomptes re\u00e7us": { + "account_number": "4191" + }, + "Clients groupe, avances et acomptes re\u00e7us": { + "account_number": "4192" + }, + "Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": { + "account_number": "4194" + }, + "Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": { + "account_number": "4198" + }, + "account_number": "419" + } + }, + "42-Personnel (PASSIF)": { + "Personnel, r\u00e9mun\u00e9rations dues": { + "account_number": "422" + }, + "Personnel, oppositions, saisies-arr\u00eats": { + "Personnel, oppositions": { + "account_number": "4231" + }, + "Personnel, saisies-arr\u00eats": { + "account_number": "4232" + }, + "Personnel, avis \u00e0 tiers d\u00e9tenteur": { + "account_number": "4233" + }, + "account_number": "423" + }, + "Personnel, \u0153uvres sociales internes": { + "Assistance m\u00e9dicale": { + "account_number": "4241" + }, + "Allocations familiales": { + "account_number": "4242" + }, + "Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": { + "account_number": "4245" + }, + "Autres \u0153uvres sociales internes": { + "account_number": "4248" + }, + "account_number": "424" + }, + "Repr\u00e9sentants du personnel": { + "D\u00e9l\u00e9gu\u00e9s du personnel": { + "account_number": "4251" + }, + "Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": { + "account_number": "4252" + }, + "Autres repr\u00e9sentants du personnel": { + "account_number": "4258" + }, + "account_number": "425" + }, + "Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "Participation aux b\u00e9n\u00e9fices": { + "account_number": "4261" + }, + "Participation au capital": { + "account_number": "4264" + }, + "account_number": "426" + }, + "Personnel d\u00e9p\u00f4ts": { + "account_number": "427" + }, + "Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": { + "account_number": "4281" + }, + "Autres charges \u00e0 payer": { + "account_number": "4286" + }, + "Produits \u00e0 recevoir": { + "account_number": "4287" + }, + "account_number": "428" + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges sociales sur gratifications \u00e0 payer": { + "account_number": "4381" + }, + "Charges sociales sur cong\u00e9s \u00e0 payer": { + "account_number": "4382" + }, + "Autres charges \u00e0 payer": { + "account_number": "4386" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": { + "account_number": "441" + }, + "\u00c9tat, autres imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes d\u2019\u00c9tat": { + "account_number": "4421" + }, + "Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": { + "account_number": "4422" + }, + "Imp\u00f4ts et taxes recouvrables sur des obligataires": { + "account_number": "4423" + }, + "Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": { + "account_number": "4424" + }, + "Droits de douane": { + "account_number": "4426" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "4428" + }, + "account_number": "442" + }, + "\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "\u00c9tat, TVA due": { + "account_number": "4441" + }, + "\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": { + "account_number": "4449" + }, + "account_number": "444" + }, + "\u00c9tat, autres taxes sur le chiffre d\u2019affaires": { + "account_number": "446" + }, + "\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": { + "account_number": "4471" + }, + "Imp\u00f4ts sur salaires": { + "account_number": "4472" + }, + "Contribution nationale": { + "account_number": "4473" + }, + "Contribution nationale de solidarit\u00e9": { + "account_number": "4474" + }, + "Autres imp\u00f4ts et contributions": { + "account_number": "4478" + }, + "account_number": "447" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "Apporteurs, apports en nature": { + "account_number": "4611" + }, + "Apporteurs, apports en num\u00e9raire": { + "account_number": "4612" + }, + "Apporteurs, versements re\u00e7us sur augmentation de capital": { + "account_number": "4615" + }, + "Apporteurs, versements anticip\u00e9s": { + "account_number": "4616" + }, + "Apporteurs d\u00e9faillants": { + "account_number": "4617" + }, + "Apporteurs, capital \u00e0 rembourser": { + "account_number": "4619" + } + }, + "462-Associ\u00e9s, comptes courants": { + "Principal": { + "account_number": "4621" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4626" + } + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "Op\u00e9rations courantes": { + "account_number": "4631" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4636" + } + }, + "Associ\u00e9s, dividendes \u00e0 payer": { + "account_number": "465" + }, + "Groupe, comptes courants": { + "account_number": "466" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "D\u00e9biteurs divers": { + "account_number": "4711" + }, + "Cr\u00e9diteurs divers": { + "account_number": "4712" + }, + "Obligataires": { + "account_number": "4713" + }, + "R\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "4715" + }, + "Compte d\u2019affacturage": { + "account_number": "4716" + }, + "D\u00e9biteurs divers retenues de garantie": { + "account_number": "4717" + }, + "Apport, compte de fusion et op\u00e9rations assimil\u00e9es": { + "account_number": "4718" + }, + "Bons de souscription d\u2019actions et d\u2019obligations": { + "account_number": "4719" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "Compte de r\u00e9partition p\u00e9riodique des charges": { + "account_number": "4746" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "Compte passif": { + "account_number": "4752" + } + }, + "Produits constat\u00e9s d\u2019avance": { + "account_number": "477" + }, + "479-\u00c9carts de conversion passif": { + "Augmentation des cr\u00e9ances d\u2019exploitation": { + "account_number": "4791" + }, + "Augmentation des cr\u00e9ances financi\u00e8res": { + "account_number": "4792" + }, + "Diminution des dettes d\u2019exploitation": { + "account_number": "4793" + }, + "Diminution des dettes financi\u00e8res": { + "account_number": "4794" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4797" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4798" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "Fournisseurs d\u2019investissements": { + "Immobilisations incorporelles": { + "account_number": "4811" + }, + "Immobilisations corporelles": { + "account_number": "4812" + }, + "Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": { + "account_number": "4813" + }, + "R\u00e9serve de propri\u00e9t\u00e9": { + "account_number": "4816" + }, + "Retenues de garantie": { + "account_number": "4817" + }, + "Factures non parvenues": { + "account_number": "4818" + }, + "account_number": "481" + }, + "Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "Immobilisations incorporelles": { + "account_number": "4821" + }, + "Immobilisations corporelles": { + "account_number": "4822" + }, + "account_number": "482" + }, + "Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "Produits": { + "account_number": "4887" + }, + "account_number": "484" + } + }, + "root_type": "Liability" + }, + "Comptes de tr\u00e9sorerie": { + "Titres de placement": { + "Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "Titres du Tr\u00e9sor \u00e0 court terme": { + "account_number": "5011" + }, + "Titres d\u2019organismes financiers": { + "account_number": "5012" + }, + "Bons de caisse \u00e0 court terme": { + "account_number": "5013" + }, + "Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": { + "account_number": "5016" + }, + "account_number": "501" + }, + "Actions": { + "Actions ou parts propres": { + "account_number": "5021" + }, + "Actions cot\u00e9es": { + "account_number": "5022" + }, + "Actions non cot\u00e9es": { + "account_number": "5023" + }, + "Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": { + "account_number": "5024" + }, + "Autres actions": { + "account_number": "5025" + }, + "Frais d\u2019acquisition des actions": { + "account_number": "5026" + }, + "account_number": "502" + }, + "Obligations": { + "Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": { + "account_number": "5031" + }, + "Obligations cot\u00e9es": { + "account_number": "5032" + }, + "Obligations non cot\u00e9es": { + "account_number": "5033" + }, + "Autres obligations": { + "account_number": "5035" + }, + "Frais d\u2019acquisition des obligations": { + "account_number": "5036" + }, + "account_number": "503" + }, + "Bons de souscription": { + "Bons de souscription d\u2019actions": { + "account_number": "5042" + }, + "Bons de souscription d\u2019obligations": { + "account_number": "5043" + }, + "account_number": "504" + }, + "Titres n\u00e9gociables hors r\u00e9gion": { + "account_number": "505" + }, + "Int\u00e9r\u00eats courus": { + "Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": { + "account_number": "5061" + }, + "Actions": { + "account_number": "5062" + }, + "Obligations": { + "account_number": "5063" + }, + "account_number": "506" + }, + "Autres titres de placement et cr\u00e9ances assimil\u00e9es": { + "account_number": "508" + }, + "account_number": "50" + }, + "Valeurs \u00e0 encaisser": { + "Effets \u00e0 encaisser": { + "account_number": "511" + }, + "Effets \u00e0 l\u2019encaissement": { + "account_number": "512" + }, + "Ch\u00e8ques \u00e0 encaisser": { + "account_number": "513" + }, + "Ch\u00e8ques \u00e0 l\u2019encaissement": { + "account_number": "514" + }, + "Cartes de cr\u00e9dit \u00e0 encaisser": { + "account_number": "515" + }, + "Autres valeurs \u00e0 l\u2019encaissement": { + "Warrants": { + "account_number": "5181" + }, + "Billets de fonds": { + "account_number": "5182" + }, + "Ch\u00e8ques de voyage": { + "account_number": "5185" + }, + "Coupons \u00e9chus": { + "account_number": "5186" + }, + "Int\u00e9r\u00eats \u00e9chus des obligations": { + "account_number": "5187" + }, + "account_number": "518" + }, + "account_number": "51" + }, + "Banques": { + "Banques locales": { + "Banques en monnaie nationale": { + "account_type": "Bank", + "account_number": "5211" + }, + "Banques en devises": { + "account_type": "Bank", + "account_number": "5215" + }, + "account_type": "Bank", + "account_number": "521" + }, + "Banques autres \u00c9tats r\u00e9gion": { + "account_number": "522" + }, + "Banques autres \u00c9tats zone mon\u00e9taire": { + "account_number": "523" + }, + "Banques hors zone mon\u00e9taire": { + "account_number": "524" + }, + "Banques d\u00e9p\u00f4t \u00e0 terme": { + "account_number": "525" + }, + "Banques, int\u00e9r\u00eats courus": { + "Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": { + "account_number": "5261" + }, + "Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": { + "account_number": "5267" + }, + "account_number": "526" + }, + "account_number": "52" + }, + "\u00c9tablissements financiers et assimil\u00e9s": { + "Ch\u00e8ques postaux": { + "account_number": "531" + }, + "Tr\u00e9sor": { + "account_number": "532" + }, + "Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": { + "account_number": "533" + }, + "\u00c9tablissements financiers, int\u00e9r\u00eats courus": { + "account_number": "536" + }, + "Autres organismes financiers": { + "account_number": "538" + }, + "account_number": "53" + }, + "Instruments de tr\u00e9sorerie": { + "Options de taux d\u2019int\u00e9r\u00eat": { + "account_number": "541" + }, + "Options de taux de change": { + "account_number": "542" + }, + "Options de taux boursiers": { + "account_number": "543" + }, + "Instruments de march\u00e9s \u00e0 terme": { + "account_number": "544" + }, + "Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": { + "account_number": "545" + }, + "account_number": "54" + }, + "Instruments de monnaie \u00e9lectronique": { + "Monnaie \u00e9lectronique carte carburant": { + "account_number": "551" + }, + "Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": { + "account_number": "552" + }, + "Monnaie \u00e9lectronique carte p\u00e9age": { + "account_number": "553" + }, + "Porte-monnaie \u00e9lectronique": { + "account_number": "554" + }, + "Autres instruments de monnaies \u00e9lectroniques": { + "account_number": "558" + }, + "account_number": "55" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "Cr\u00e9dits de tr\u00e9sorerie": { + "account_number": "561" + }, + "Escompte de cr\u00e9dits de campagne": { + "account_number": "564" + }, + "Escompte de cr\u00e9dits ordinaires": { + "account_number": "565" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": { + "account_number": "566" + }, + "account_number": "56" + }, + "Caisse": { + "Caisse si\u00e8ge social": { + "Caisse en monnaie nationale": { + "account_number": "5711" + }, + "Caisse en devises": { + "account_number": "5712" + }, + "account_number": "571" + }, + "Caisse succursale A": { + "En monnaie nationale": { + "account_number": "5721" + }, + "En devises": { + "account_number": "5722" + }, + "account_number": "572" + }, + "Caisse succursale B": { + "En monnaie nationale": { + "account_number": "5731" + }, + "En devises": { + "account_number": "5732" + }, + "account_number": "573" + }, + "account_number": "57" + }, + "R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "R\u00e9gies d\u2019avance": { + "account_number": "581" + }, + "Accr\u00e9ditifs": { + "account_number": "582" + }, + "Virements de fonds": { + "account_number": "585" + }, + "Autres virements internes": { + "account_number": "588" + }, + "account_number": "58" + }, + "D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "D\u00e9pr\u00e9ciations des titres de placement": { + "account_number": "590" + }, + "D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": { + "account_number": "591" + }, + "D\u00e9pr\u00e9ciations des comptes banques": { + "account_number": "592" + }, + "D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": { + "account_number": "593" + }, + "D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": { + "account_number": "594" + }, + "Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": { + "account_number": "599" + }, + "account_number": "59" + }, + "root_type": "Asset", + "account_number": "5" + }, + "Comptes de charges des activit\u00e9s ordinaires": { + "Achats et variations de stocks": { + "Achats de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "6011" + }, + "Hors R\u00e9gion": { + "account_number": "6012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6014" + }, + "Frais sur achats": { + "account_number": "6015" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6019" + }, + "account_number": "601" + }, + "Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Dans la R\u00e9gion": { + "account_number": "6021" + }, + "Hors R\u00e9gion": { + "account_number": "6022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6024" + }, + "Frais sur achats": { + "account_number": "6025" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6029" + }, + "account_number": "602" + }, + "Variations des stocks de biens achet\u00e9s": { + "Variations des stocks de marchandises": { + "account_number": "6031" + }, + "Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "6032" + }, + "Variations des stocks d\u2019autres approvisionnements": { + "account_number": "6033" + }, + "account_number": "603" + }, + "Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "Mati\u00e8res consommables": { + "account_number": "6041" + }, + "Mati\u00e8res combustibles": { + "account_number": "6042" + }, + "Produits d\u2019entretien": { + "account_number": "6043" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "6044" + }, + "Frais sur achat": { + "account_number": "6045" + }, + "Fournitures de magasin": { + "account_number": "6046" + }, + "Fournitures de bureau": { + "account_number": "6047" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6049" + }, + "account_number": "604" + }, + "Autres achats": { + "Fournitures non stockables Eau": { + "account_number": "6051" + }, + "Fournitures non stockables \u00c9lectricit\u00e9": { + "account_number": "6052" + }, + "Fournitures non stockables Autres \u00e9nergies": { + "account_number": "6053" + }, + "Fournitures d\u2019entretien non stockables": { + "account_number": "6054" + }, + "Fournitures de bureau non stockables": { + "account_number": "6055" + }, + "Achats de petit mat\u00e9riel et outillage": { + "account_number": "6056" + }, + "Achats d\u2019\u00e9tudes et prestations de services": { + "account_number": "6057" + }, + "Achats de travaux, mat\u00e9riels et \u00e9quipements": { + "account_number": "6058" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6059" + }, + "account_number": "605" + }, + "Achats d\u2019emballages": { + "Emballages perdus": { + "account_number": "6081" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "6082" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "6083" + }, + "Frais sur achats": { + "account_number": "6085" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6089" + }, + "account_number": "608" + }, + "account_number": "60" + }, + "Transports": { + "Transports sur ventes": { + "account_number": "612" + }, + "Transports pour le compte de tiers": { + "account_number": "613" + }, + "Transports du personnel": { + "account_number": "614" + }, + "Transports de plis": { + "account_number": "616" + }, + "Autres frais de transport": { + "Voyages et d\u00e9placements": { + "account_number": "6181" + }, + "Transports entre \u00e9tablissements ou chantiers": { + "account_number": "6182" + }, + "Transports administratifs": { + "account_number": "6183" + }, + "account_number": "618" + }, + "account_number": "61" + }, + "Services ext\u00e9rieurs": { + "Sous-traitance g\u00e9n\u00e9rale": { + "account_number": "621" + }, + "Locations, charges locatives": { + "Locations de terrains": { + "account_number": "6221" + }, + "Locations de b\u00e2timents": { + "account_number": "6222" + }, + "Locations de mat\u00e9riels et outillages": { + "account_number": "6223" + }, + "Malis sur emballages": { + "account_number": "6224" + }, + "Locations d\u2019emballages": { + "account_number": "6225" + }, + "Fermages et loyers du foncier": { + "account_number": "6226" + }, + "Locations et charges locatives diverses": { + "account_number": "6228" + }, + "account_number": "622" + }, + "Redevances de location acquisition": { + "Cr\u00e9dit-bail immobilier": { + "account_number": "6232" + }, + "Cr\u00e9dit-bail mobilier": { + "account_number": "6233" + }, + "Location-vente": { + "account_number": "6234" + }, + "Autres contrats de location acquisition": { + "account_number": "6238" + }, + "account_number": "623" + }, + "Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "Entretien et r\u00e9parations des biens immobiliers": { + "account_number": "6241" + }, + "Entretien et r\u00e9parations des biens mobiliers": { + "account_number": "6242" + }, + "Maintenance": { + "account_number": "6243" + }, + "Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "6244" + }, + "Autres entretiens et r\u00e9parations": { + "account_number": "6248" + }, + "account_number": "624" + }, + "Primes d\u2019assurance": { + "Assurances multirisques": { + "account_number": "6251" + }, + "Assurances mat\u00e9riel de transport": { + "account_number": "6252" + }, + "Assurances risques d\u2019exploitation": { + "account_number": "6253" + }, + "Assurances responsabilit\u00e9 du producteur": { + "account_number": "6254" + }, + "Assurances insolvabilit\u00e9 clients": { + "account_number": "6255" + }, + "Assurances transport sur ventes": { + "account_number": "6257" + }, + "Autres primes d\u2019assurances": { + "account_number": "6258" + }, + "account_number": "625" + }, + "\u00c9tudes, recherches et documentation": { + "\u00c9tudes et recherches": { + "account_number": "6261" + }, + "Documentation g\u00e9n\u00e9rale": { + "account_number": "6265" + }, + "Documentation technique": { + "account_number": "6266" + }, + "account_number": "626" + }, + "Publicit\u00e9, publications, relations publiques": { + "Annonces, insertions": { + "account_number": "6271" + }, + "Catalogues, imprim\u00e9s publicitaires": { + "account_number": "6272" + }, + "\u00c9chantillons": { + "account_number": "6273" + }, + "Foires et expositions": { + "account_number": "6274" + }, + "Publications": { + "account_number": "6275" + }, + "Cadeaux \u00e0 la client\u00e8le": { + "account_number": "6276" + }, + "Frais de colloques, s\u00e9minaires, conf\u00e9rences": { + "account_number": "6277" + }, + "Autres charges de publicit\u00e9 et relations publiques": { + "account_number": "6278" + }, + "account_number": "627" + }, + "Frais de t\u00e9l\u00e9communications": { + "Frais de t\u00e9l\u00e9phone": { + "account_number": "6281" + }, + "Frais de t\u00e9lex": { + "account_number": "6282" + }, + "Frais de t\u00e9l\u00e9copie": { + "account_number": "6283" + }, + "Autres frais de t\u00e9l\u00e9communications": { + "account_number": "6288" + }, + "account_number": "628" + }, + "account_number": "62" + }, + "Autres services ext\u00e9rieurs": { + "Frais bancaires": { + "Frais sur titres (vente, garde)": { + "account_number": "6311" + }, + "Frais sur effets": { + "account_number": "6312" + }, + "Location de coffres": { + "account_number": "6313" + }, + "Commissions d\u2019affacturage": { + "account_number": "6314" + }, + "Commissions sur cartes de cr\u00e9dit": { + "account_number": "6315" + }, + "Frais d\u2019\u00e9mission d\u2019emprunts": { + "account_number": "6316" + }, + "Frais sur instruments monnaie \u00e9lectronique": { + "account_number": "6317" + }, + "Autres frais bancaires": { + "account_number": "6318" + }, + "account_number": "631" + }, + "R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "Commissions et courtages sur ventes": { + "account_number": "6322" + }, + "Honoraires des professions r\u00e9glement\u00e9es": { + "account_number": "6324" + }, + "Frais d\u2019actes et de contentieux": { + "account_number": "6325" + }, + "R\u00e9mun\u00e9rations d\u2019affacturage": { + "account_number": "6326" + }, + "R\u00e9mun\u00e9rations des autres prestataires de services": { + "account_number": "6327" + }, + "Divers frais": { + "account_number": "6328" + }, + "account_number": "632" + }, + "Frais de formation du personnel": { + "account_number": "633" + }, + "Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "Redevances pour brevets, licences": { + "account_number": "6342" + }, + "Redevances pour logiciels": { + "account_number": "6343" + }, + "Redevances pour marques": { + "account_number": "6344" + }, + "Redevances pour sites internet": { + "account_number": "6345" + }, + "Redevances pour concessions, droits et valeurs similaires": { + "account_number": "6346" + }, + "account_number": "634" + }, + "Cotisations": { + "Cotisations": { + "account_number": "6351" + }, + "Concours divers": { + "account_number": "6358" + }, + "account_number": "635" + }, + "R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "Personnel int\u00e9rimaire": { + "account_number": "6371" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6372" + }, + "account_number": "637" + }, + "Autres charges externes": { + "Frais de recrutement du personnel": { + "account_number": "6381" + }, + "Frais de d\u00e9m\u00e9nagement": { + "account_number": "6382" + }, + "R\u00e9ceptions": { + "account_number": "6383" + }, + "Missions": { + "account_number": "6384" + }, + "Charges de copropri\u00e9t\u00e9": { + "account_number": "6385" + }, + "account_number": "638" + }, + "account_number": "63" + }, + "Imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes directs": { + "Imp\u00f4ts fonciers et taxes annexes": { + "account_number": "6411" + }, + "Patentes, licences et taxes annexes": { + "account_number": "6412" + }, + "Taxes sur appointements et salaires": { + "account_number": "6413" + }, + "Taxes d\u2019apprentissage": { + "account_number": "6414" + }, + "Formation professionnelle continue": { + "account_number": "6415" + }, + "Autres imp\u00f4ts et taxes directs": { + "account_number": "6418" + }, + "account_number": "641" + }, + "Imp\u00f4ts et taxes indirects": { + "account_number": "645" + }, + "Droits d\u2019enregistrement": { + "Droits de mutation": { + "account_number": "6461" + }, + "Droits de timbre": { + "account_number": "6462" + }, + "Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": { + "account_number": "6463" + }, + "Vignettes": { + "account_number": "6464" + }, + "Autres droits": { + "account_number": "6468" + }, + "account_number": "646" + }, + "P\u00e9nalit\u00e9s, amendes fiscales": { + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": { + "account_number": "6471" + }, + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": { + "account_number": "6472" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": { + "account_number": "6473" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": { + "account_number": "6474" + }, + "Autres p\u00e9nalit\u00e9s et amendes fiscales": { + "account_number": "6478" + }, + "account_number": "647" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "648" + }, + "account_number": "64" + }, + "Autres charges": { + "Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "Clients": { + "account_number": "6511" + }, + "Autres d\u00e9biteurs": { + "account_number": "6515" + }, + "account_number": "651" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "6521" + }, + "Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "6525" + }, + "account_number": "652" + }, + "Valeurs comptables des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "6541" + }, + "Immobilisations corporelles": { + "account_number": "6542" + }, + "account_number": "654" + }, + "Perte de change sur cr\u00e9ances et dettes commerciale": { + "account_number": "656" + }, + "P\u00e9nalit\u00e9s et amendes p\u00e9nales": { + "account_number": "657" + }, + "Charges diverses": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "6581" + }, + "Dons": { + "account_number": "6582" + }, + "M\u00e9c\u00e9nat": { + "account_number": "6583" + }, + "Autres charges diverses": { + "account_number": "6588" + }, + "account_number": "658" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "6591" + }, + "Sur stocks": { + "account_number": "6593" + }, + "Sur cr\u00e9ances": { + "account_number": "6594" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": { + "account_number": "6598" + }, + "account_number": "659" + }, + "account_number": "65" + }, + "Charges de personnel": { + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "Appointements salaires et commissions": { + "account_number": "6611" + }, + "Primes et gratifications": { + "account_number": "6612" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6613" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6614" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6615" + }, + "Suppl\u00e9ment familial": { + "account_number": "6616" + }, + "Avantages en nature": { + "account_number": "6617" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6618" + }, + "account_number": "661" + }, + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "Appointements salaires et commissions": { + "account_number": "6621" + }, + "Primes et gratifications": { + "account_number": "6622" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6623" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6624" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6625" + }, + "Suppl\u00e9ment familial": { + "account_number": "6626" + }, + "Avantages en nature": { + "account_number": "6627" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6628" + }, + "account_number": "662" + }, + "Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "Indemnit\u00e9s de logement": { + "account_number": "6631" + }, + "Indemnit\u00e9s de repr\u00e9sentation": { + "account_number": "6632" + }, + "Indemnit\u00e9s d\u2019expatriation": { + "account_number": "6633" + }, + "Indemnit\u00e9s de transport": { + "account_number": "6634" + }, + "Autres indemnit\u00e9s et avantages divers": { + "account_number": "6638" + }, + "account_number": "663" + }, + "Charges sociales": { + "Charges sociales sur r\u00e9mun\u00e9ration du personnel national": { + "account_number": "6641" + }, + "Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": { + "account_number": "6642" + }, + "account_number": "664" + }, + "R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "R\u00e9mun\u00e9ration du travail de l\u2019exploitant": { + "account_number": "6661" + }, + "Charges sociales": { + "account_number": "6662" + }, + "account_number": "666" + }, + "R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "Personnel int\u00e9rimaire": { + "account_number": "6671" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6672" + }, + "account_number": "667" + }, + "Autres charges sociales": { + "Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": { + "account_number": "6681" + }, + "Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": { + "account_number": "6682" + }, + "Versements et contributions aux autres \u0153uvres sociales": { + "account_number": "6683" + }, + "M\u00e9decine du travail et pharmacie": { + "account_number": "6684" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "6685" + }, + "Assurances retraite et fonds de pension": { + "account_number": "6686" + }, + "Majorations et p\u00e9nalit\u00e9s sociales": { + "account_number": "6687" + }, + "Charges sociales diverses": { + "account_number": "6688" + }, + "account_number": "668" + }, + "account_number": "66" + }, + "Frais financiers et charges assimil\u00e9es": { + "Int\u00e9r\u00eats des emprunts": { + "Emprunts obligataires": { + "account_number": "6711" + }, + "Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "6712" + }, + "Dettes li\u00e9es \u00e0 des participations": { + "account_number": "6713" + }, + "Primes de remboursement des obligations": { + "account_number": "6714" + }, + "account_number": "671" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "6722" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "6723" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": { + "account_number": "6724" + }, + "Int\u00e9r\u00eats dans loyers des autres locations acquisition": { + "account_number": "6728" + }, + "account_number": "672" + }, + "Escomptes accord\u00e9s": { + "account_number": "673" + }, + "Autres int\u00e9r\u00eats": { + "Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": { + "account_number": "6741" + }, + "Comptes courants bloqu\u00e9s": { + "account_number": "6742" + }, + "Int\u00e9r\u00eats sur obligations cautionn\u00e9es": { + "account_number": "6743" + }, + "Int\u00e9r\u00eats sur dettes commerciales": { + "account_number": "6744" + }, + "Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": { + "account_number": "6745" + }, + "Int\u00e9r\u00eats sur dettes diverses": { + "account_number": "6748" + }, + "account_number": "674" + }, + "Escomptes des effets de commerce": { + "account_number": "675" + }, + "Pertes de change financi\u00e8res": { + "account_number": "676" + }, + "Pertes sur titres de placement": { + "Pertes sur cessions de titres de placement": { + "account_number": "6771" + }, + "Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "6772" + }, + "account_number": "677" + }, + "Pertes et charges sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "6781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "6782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "6784" + }, + "account_number": "678" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "6791" + }, + "Sur titres de placement": { + "account_number": "6795" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "6798" + }, + "account_number": "679" + }, + "account_number": "67" + }, + "Dotations aux amortissements": { + "Dotations aux amortissements d\u2019exploitation": { + "Dotations aux amortissements des immobilisations incorporelles": { + "account_number": "6812" + }, + "Dotations aux amortissements des immobilisations corporelles": { + "account_number": "6813" + }, + "account_number": "681" + }, + "account_number": "68" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6911" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "account_number": "6913" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": { + "account_number": "6914" + }, + "account_number": "691" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6971" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": { + "account_number": "6972" + }, + "account_number": "697" + }, + "account_number": "69" + }, + "root_type": "Expense", + "account_number": "6" + }, + "Comptes de produits des activit\u00e9s ordinaires": { + "Ventes": { + "Ventes de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "7011" + }, + "Hors R\u00e9gion": { + "account_number": "7012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7014" + }, + "Sur internet": { + "account_number": "7015" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7019" + }, + "account_number": "701" + }, + "Ventes de produits finis": { + "Dans la R\u00e9gion": { + "account_number": "7021" + }, + "Hors R\u00e9gion": { + "account_number": "7022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7024" + }, + "Sur internet": { + "account_number": "7025" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7029" + }, + "account_number": "702" + }, + "Ventes de produits interm\u00e9diaires": { + "Dans la R\u00e9gion": { + "account_number": "7031" + }, + "Hors R\u00e9gion": { + "account_number": "7032" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7033" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7034" + }, + "Sur internet": { + "account_number": "7035" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7039" + }, + "account_number": "703" + }, + "Ventes de produits r\u00e9siduels": { + "Dans la R\u00e9gion": { + "account_number": "7041" + }, + "Hors R\u00e9gion": { + "account_number": "7042" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7043" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7044" + }, + "Sur internet": { + "account_number": "7045" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7049" + }, + "account_number": "704" + }, + "Travaux factur\u00e9s": { + "Dans la R\u00e9gion": { + "account_number": "7051" + }, + "Hors R\u00e9gion": { + "account_number": "7052" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7053" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7054" + }, + "Sur internet": { + "account_number": "7055" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7059" + }, + "account_number": "705" + }, + "Services vendus": { + "Dans la R\u00e9gion": { + "account_number": "7061" + }, + "Hors R\u00e9gion": { + "account_number": "7062" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7063" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7064" + }, + "Sur internet": { + "account_number": "7065" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7069" + }, + "account_number": "706" + }, + "Produits accessoires": { + "Ports, emballages perdus et autres frais factur\u00e9s": { + "account_number": "7071" + }, + "Commissions et courtages": { + "account_number": "7072" + }, + "Locations": { + "account_number": "7073" + }, + "Bonis sur reprises et cessions d\u2019emballages": { + "account_number": "7074" + }, + "Mise \u00e0 disposition de personnel": { + "account_number": "7075" + }, + "Redevances pour brevets, logiciels, marques et droits similaires": { + "account_number": "7076" + }, + "Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": { + "account_number": "7077" + }, + "Autres produits accessoires": { + "account_number": "7078" + }, + "account_number": "707" + }, + "account_number": "70" + }, + "Subventions d\u2019exploitation": { + "Sur produits \u00e0 l\u2019exportation": { + "account_number": "711" + }, + "Sur produits \u00e0 l\u2019importation": { + "account_number": "712" + }, + "Sur produits de p\u00e9r\u00e9quation": { + "account_number": "713" + }, + "Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": { + "account_number": "714" + }, + "Autres subventions d\u2019exploitation": { + "Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": { + "account_number": "7181" + }, + "Vers\u00e9es par les organismes internationaux": { + "account_number": "7182" + }, + "Vers\u00e9es par des tiers": { + "account_number": "7183" + }, + "account_number": "718" + }, + "account_number": "71" + }, + "Production immobilis\u00e9e": { + "Immobilisations incorporelles": { + "account_number": "721" + }, + "Immobilisations corporelles": { + "Immobilisations corporelles (hors actifs biologiques)": { + "account_number": "7221" + }, + "Immobilisations corporelles (actifs biologiques)": { + "account_number": "7222" + }, + "account_number": "722" + }, + "Production auto-consomm\u00e9e": { + "account_number": "724" + }, + "Immobilisations financi\u00e8res": { + "account_number": "726" + }, + "account_number": "72" + }, + "Variations des stocks de biens et de services produits": { + "Variations des stocks de produits en cours": { + "Produits en cours": { + "account_number": "7341" + }, + "Travaux en cours": { + "account_number": "7342" + }, + "account_number": "734" + }, + "Variations des en-cours de services": { + "\u00c9tudes en cours": { + "account_number": "7351" + }, + "Prestations de services en cours": { + "account_number": "7352" + }, + "account_number": "735" + }, + "Variations des stocks de produits finis": { + "account_number": "736" + }, + "Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "account_number": "7371" + }, + "Produits r\u00e9siduels": { + "account_number": "7372" + }, + "account_number": "737" + }, + "account_number": "73" + }, + "Autres produits": { + "Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "account_number": "751" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "7521" + }, + "B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "7525" + }, + "account_number": "752" + }, + "Produits des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "7541" + }, + "Immobilisations corporelles": { + "account_number": "7542" + }, + "account_number": "754" + }, + "Gains de change sur cr\u00e9ances et dettes commerciales": { + "account_number": "756" + }, + "Produits divers": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "7581" + }, + "Indemnit\u00e9s d\u2019assurances re\u00e7ues": { + "account_number": "7582" + }, + "Autres produits divers": { + "account_number": "7588" + }, + "account_number": "758" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "7591" + }, + "Sur stocks": { + "account_number": "7593" + }, + "Sur cr\u00e9ances": { + "account_number": "7594" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "account_number": "7598" + }, + "account_number": "759" + }, + "account_number": "75" + }, + "Revenus financiers et produits assimil\u00e9s": { + "Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "Int\u00e9r\u00eats de pr\u00eats": { + "account_number": "7712" + }, + "Int\u00e9r\u00eats sur cr\u00e9ances diverses": { + "account_number": "7713" + }, + "account_number": "771" + }, + "Revenus de participations et autres titres immobilis\u00e9s": { + "Revenus des titres de participation": { + "account_number": "7721" + }, + "Revenus autres titres immobilis\u00e9s": { + "account_number": "7722" + }, + "account_number": "772" + }, + "Escomptes obtenus": { + "account_number": "773" + }, + "Revenus de placement": { + "Revenus des obligations": { + "account_number": "7745" + }, + "Revenus des titres de placement": { + "account_number": "7746" + }, + "account_number": "774" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "account_number": "775" + }, + "Gains de change financiers": { + "account_number": "776" + }, + "Gains sur cessions de titres de placement": { + "account_number": "777" + }, + "Gains sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "7781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "7782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "7784" + }, + "account_number": "778" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "7791" + }, + "Sur titres de placement": { + "account_number": "7795" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "7798" + }, + "account_number": "779" + }, + "account_number": "77" + }, + "Transferts de charges": { + "Transferts de charges d\u2019exploitation": { + "account_number": "781" + }, + "Transferts de charges financi\u00e8res": { + "account_number": "787" + }, + "account_number": "78" + }, + "Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Pour risques et charges": { + "account_number": "7911" + }, + "Des immobilisations incorporelles": { + "account_number": "7913" + }, + "Des immobilisations corporelles": { + "account_number": "7914" + }, + "account_number": "791" + }, + "Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "Pour risques et charges": { + "account_number": "7971" + }, + "Des immobilisations financi\u00e8res": { + "account_number": "7972" + }, + "account_number": "797" + }, + "Reprises d\u2019amortissements": { + "account_number": "798" + }, + "Reprises de subventions d\u2019investissement": { + "account_number": "799" + }, + "account_number": "79" + }, + "root_type": "Income", + "account_number": "7" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "Valeurs comptables des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "811" + }, + "Immobilisations corporelles": { + "account_number": "812" + }, + "Immobilisations financi\u00e8res": { + "account_number": "816" + }, + "account_number": "81" + }, + "Charges hors activit\u00e9s ordinaires": { + "Charges HAO constat\u00e9es": { + "account_number": "831" + }, + "Charges li\u00e9es aux op\u00e9rations de restructuration": { + "account_number": "833" + }, + "Pertes sur cr\u00e9ances HAO": { + "account_number": "834" + }, + "Dons et lib\u00e9ralit\u00e9s accord\u00e9s": { + "account_number": "835" + }, + "Abandons de cr\u00e9ances consentis": { + "account_number": "836" + }, + "Charges li\u00e9es aux op\u00e9rations de liquidation": { + "account_number": "837" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "839" + }, + "account_number": "83" + }, + "Dotations hors activit\u00e9s ordinaires": { + "Dotations aux provisions r\u00e9glement\u00e9es": { + "account_number": "851" + }, + "Dotations aux amortissements HAO": { + "account_number": "852" + }, + "Dotations aux d\u00e9pr\u00e9ciations HAO": { + "account_number": "853" + }, + "Dotations aux provisions pour risques et charges HAO": { + "account_number": "854" + }, + "Autres dotations HAO": { + "account_number": "858" + }, + "account_number": "85" + }, + "Participation des travailleurs": { + "Participation l\u00e9gale aux b\u00e9n\u00e9fices": { + "account_number": "871" + }, + "Participation contractuelle aux b\u00e9n\u00e9fices": { + "account_number": "874" + }, + "Autres participations": { + "account_number": "878" + }, + "account_number": "87" + }, + "Imp\u00f4ts sur le r\u00e9sultat": { + "Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": { + "account_number": "8911" + }, + "Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": { + "account_number": "8912" + }, + "Activit\u00e9s exerc\u00e9es hors R\u00e9gion": { + "account_number": "8913" + }, + "account_number": "891" + }, + "Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "account_number": "892" + }, + "Imp\u00f4t minimum forfaitaire IMF": { + "account_number": "895" + }, + "D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "D\u00e9gr\u00e8vements": { + "account_number": "8991" + }, + "Annulations pour pertes r\u00e9troactives": { + "account_number": "8994" + }, + "account_number": "899" + }, + "account_number": "89" + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "Produits des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "821" + }, + "Immobilisations corporelles": { + "account_number": "822" + }, + "Immobilisations financi\u00e8res": { + "account_number": "826" + }, + "account_number": "82" + }, + "Produits hors activit\u00e9s ordinaires": { + "Produits HAO constat\u00e9s": { + "account_number": "841" + }, + "Produits li\u00e9s aux op\u00e9rations de restructuration": { + "account_number": "843" + }, + "Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": { + "account_number": "844" + }, + "Dons et lib\u00e9ralit\u00e9s obtenus": { + "account_number": "845" + }, + "Abandons de cr\u00e9ances obtenus": { + "account_number": "846" + }, + "Produits li\u00e9s aux op\u00e9rations de liquidation": { + "account_number": "847" + }, + "Transferts de charges HAO": { + "account_number": "848" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "849" + }, + "account_number": "84" + }, + "Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "Reprises de provisions r\u00e9glement\u00e9es": { + "account_number": "861" + }, + "Reprises d\u2019amortissements HAO": { + "account_number": "862" + }, + "Reprises de d\u00e9pr\u00e9ciations HAO": { + "account_number": "863" + }, + "Reprises de provisions pour risques et charges HAO": { + "account_number": "864" + }, + "Autres reprises HAO": { + "account_number": "868" + }, + "account_number": "86" + }, + "Subventions d\u2019\u00e9quilibre": { + "\u00c9tat": { + "account_number": "881" + }, + "Collectivit\u00e9s publiques": { + "account_number": "884" + }, + "Groupe": { + "account_number": "886" + }, + "Autres": { + "account_number": "888" + }, + "account_number": "88" + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/in_standard_chart_of_accounts.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/in_standard_chart_of_accounts.json index 2ec0b7f70c8..e666464a371 100644 --- a/erpnext/accounts/doctype/account/chart_of_accounts/verified/in_standard_chart_of_accounts.json +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/in_standard_chart_of_accounts.json @@ -98,7 +98,7 @@ "Office Maintenance Expenses": {}, "Office Rent": {}, "Postal Expenses": {}, - "Print and Stationary": {}, + "Print and Stationery": {}, "Rounded Off": { "account_type": "Round Off" }, @@ -109,7 +109,8 @@ "Utility Expenses": {}, "Write Off": {}, "Exchange Gain/Loss": {}, - "Gain/Loss on Asset Disposal": {} + "Gain/Loss on Asset Disposal": {}, + "Impairment": {} }, "root_type": "Expense" }, @@ -132,7 +133,8 @@ "Source of Funds (Liabilities)": { "Capital Account": { "Reserves and Surplus": {}, - "Shareholders Funds": {} + "Shareholders Funds": {}, + "Revaluation Surplus": {} }, "Current Liabilities": { "Accounts Payable": { diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/km_plan_comptable.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/km_plan_comptable.json new file mode 100644 index 00000000000..a401553fa86 --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/km_plan_comptable.json @@ -0,0 +1,1919 @@ +{ + "country_code": "km", + "name": "Syscohada - Plan Comptable", + "tree": { + "1-Comptes de ressources durables": { + "10-Capital": { + "101-Capital social": { + "1011-Capital souscrit, non appel\u00e9": {}, + "1012-Capital souscrit, appel\u00e9, non vers\u00e9": {}, + "1013-Capital souscrit, appel\u00e9, vers\u00e9, non amorti": {}, + "1014-Capital souscrit, appel\u00e9, vers\u00e9, amorti": {}, + "1018-Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": {} + }, + "102-Capital par dotation": { + "1021-Dotation initiale": {}, + "1022-Dotations compl\u00e9mentaires": {}, + "1028-Autres dotations": {} + }, + "103-Capital personnel": {}, + "104-Compte de l\u2019exploitant": { + "1041-Apports temporaires": {}, + "1042-Op\u00e9rations courantes": {}, + "1043-R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": {}, + "1047-Pr\u00e9l\u00e8vements d\u2019autoconsommation": {}, + "1048-Autres pr\u00e9l\u00e8vements": {} + }, + "105-Primes li\u00e9es au capital social": { + "1051-Primes d\u2019\u00e9mission": {}, + "1052-Primes d\u2019apport": {}, + "1053-Primes de fusion": {}, + "1054-Primes de conversion": {}, + "1058-Autres primes": {} + }, + "106-\u00c9carts de r\u00e9\u00e9valuation": { + "1061-\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": {}, + "1062-\u00c9carts de r\u00e9\u00e9valuation libre": {} + }, + "109-Apporteurs, capital souscrit, non appel\u00e9": {} + }, + "11-R\u00e9serves": { + "111-R\u00e9serve l\u00e9gale": {}, + "112-R\u00e9serves statutaires ou contractuelles": {}, + "113-R\u00e9serves r\u00e9glement\u00e9es": { + "1131-R\u00e9serves de plus-values nettes \u00e0 long terme": {}, + "1132-R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {}, + "1133-R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": {}, + "1134-R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": {}, + "1135-Autres r\u00e9serves r\u00e9glement\u00e9es": {} + }, + "118-Autres r\u00e9serves": { + "1181-R\u00e9serves facultatives": {}, + "1188-R\u00e9serves diverses": {} + } + }, + "12-Report \u00e0 nouveau": { + "121-Report \u00e0 nouveau cr\u00e9diteur": {}, + "129-Report \u00e0 nouveau d\u00e9biteur": { + "1291-Perte nette \u00e0 reporter": {}, + "1292-Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": {} + } + }, + "13-R\u00e9sultat net de l\u2019exercice": { + "130-R\u00e9sultat en instance d\u2019affectation": { + "1301-R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": {}, + "1309-R\u00e9sultat en instance d\u2019affectation : perte": {} + }, + "131-R\u00e9sultat net : b\u00e9n\u00e9fice": {}, + "132-Marge commerciale (MC)": {}, + "133-Valeur ajout\u00e9e (VA)": {}, + "134-Exc\u00e9dent brut d\u2019exploitation (EBE)": {}, + "135-R\u00e9sultat d\u2019exploitation (RE)": {}, + "136-R\u00e9sultat financier (RF)": {}, + "137-R\u00e9sultat des activit\u00e9s ordinaires (RAO)": {}, + "138-R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "1381-R\u00e9sultat de fusion": {}, + "1382-R\u00e9sultat d\u2019apport partiel d\u2019actif": {}, + "1383-R\u00e9sultat de scission": {}, + "1384-R\u00e9sultat de liquidation": {} + }, + "139-R\u00e9sultat net : perte": {} + }, + "14-Subventions d\u2019investissement": { + "141-Subventions d\u2019\u00e9quipement": { + "1411-\u00c9tat": {}, + "1412-R\u00e9gions": {}, + "1413-D\u00e9partements": {}, + "1414-Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": {}, + "1415-Entit\u00e9s publiques ou mixtes": {}, + "1416-Entit\u00e9s et organismes priv\u00e9s": {}, + "1417-Organismes internationaux": {}, + "1418-Autres": {} + }, + "148-Autres subventions d\u2019investissement": {} + }, + "15-Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "151-Amortissements d\u00e9rogatoires": {}, + "152-Plus-values de cession \u00e0 r\u00e9investir": {}, + "153-Fonds r\u00e9glement\u00e9s": { + "1531-Fonds National": {}, + "1532-Pr\u00e9l\u00e8vement pour le Budget": {} + }, + "154-Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": {}, + "155-Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "1551-Reconstitution des gisements miniers et p\u00e9troliers": {} + }, + "156-Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "1561-Hausse de prix": {}, + "1562-Fluctuation des cours": {} + }, + "157-Provisions pour investissement": {}, + "158-Autres provisions et fonds r\u00e9glement\u00e9s": {} + }, + "16-Emprunts et dettes assimil\u00e9es": { + "161-Emprunts obligataires": { + "1611-Emprunts obligataires ordinaires": {}, + "1612-Emprunts obligataires convertibles en actions": {}, + "1613-Emprunts obligataires remboursables en actions": {}, + "1618-Autres emprunts obligataires": {} + }, + "162-Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "163-Avances re\u00e7ues de l\u2019\u00c9tat": {}, + "164-Avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "165-D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "1651-D\u00e9p\u00f4ts": {}, + "1652-Cautionnements": {} + }, + "166-Int\u00e9r\u00eats courus": { + "1661-Sur emprunts obligataires": {}, + "1662-Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "1663-Sur avances re\u00e7ues de l\u2019\u00c9tat": {}, + "1664-Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "1665-Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": {}, + "1667-Sur avances assorties de conditions particuli\u00e8res": {}, + "1668-Sur autres emprunts et dettes": {} + }, + "167-Avances assorties de conditions particuli\u00e8res": { + "1671-Avances bloqu\u00e9es pour augmentation du capital": {}, + "1672-Avances conditionn\u00e9es par l\u2019\u00c9tat": {}, + "1673-Avances conditionn\u00e9es par les autres organismes africains": {}, + "1674-Avances conditionn\u00e9es par les organismes internationaux": {} + }, + "168-Autres emprunts et dettes": { + "1681-Rentes viag\u00e8res capitalis\u00e9es": {}, + "1682-Billets de fonds": {}, + "1683-Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": {}, + "1684-Emprunts participatifs": {}, + "1685-Participation des travailleurs aux b\u00e9n\u00e9fices": {}, + "1686-Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": {} + } + }, + "17-Dettes de location acquisition": { + "172-Dettes de location acquisition / cr\u00e9dit bail immobilier": {}, + "173-Dettes de location acquisition / cr\u00e9dit bail mobilier": {}, + "174-Dettes de location acquisition / location de vente": {}, + "176-Int\u00e9r\u00eats courus": { + "1762-Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": {}, + "1763-Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": {}, + "1764-Sur dettes de location acquisition / location-vente": {}, + "1768-Sur autres dettes de location acquisition": {} + }, + "178-Autres dettes de location acquisition": {} + }, + "18-Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "181-Dettes li\u00e9es \u00e0 des participations": { + "1811-Dettes li\u00e9es \u00e0 des participations (groupe)": {}, + "1812-Dettes li\u00e9es \u00e0 des participations (hors groupe)": {} + }, + "182-Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "183-Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": {}, + "184-Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "185-Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "186-Comptes de liaison charges": {}, + "187-Comptes de liaison produits": {}, + "188-Comptes de liaison des soci\u00e9t\u00e9s en participation": {} + }, + "19-Provisions pour risques et charges": { + "191-Provisions pour litiges": {}, + "192-Provisions pour garanties donn\u00e9es aux clients": {}, + "193-Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": {}, + "194-Provisions pour pertes de change": {}, + "195-Provisions pour imp\u00f4ts": {}, + "196-Provisions pour pensions et obligations similaires": { + "1961-Provisions pour pensions et obligations similaires engagement de retraite": {}, + "1962-Actif du r\u00e9gime de retraite": {} + }, + "197-Provisions pour restructuration": {}, + "198-Autres provisions pour risques et charges": { + "1981-Provisions pour amendes et p\u00e9nalit\u00e9s": {}, + "1983-Provisions pour propre assureur": {}, + "1984-Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "1985-Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": {}, + "1988-Provisions pour divers risques et charges": {} + } + }, + "root_type": "Equity" + }, + "2-Comptes d\u2019actif immobilis\u00e9": { + "21-Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "211-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "212-Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "2121-Brevets": { + "account_type": "Fixed Asset" + }, + "2122-Licences": { + "account_type": "Fixed Asset" + }, + "2123-Concessions de service public": { + "account_type": "Fixed Asset" + }, + "2128-Autres concessions et droits similaires": { + "account_type": "Fixed Asset" + } + }, + "213-Logiciels et sites internet": { + "account_type": "Fixed Asset", + "2131-Logiciels": { + "account_type": "Fixed Asset" + }, + "2132-Sites internet": { + "account_type": "Fixed Asset" + } + }, + "214-Marques": { + "account_type": "Fixed Asset" + }, + "215-Fonds commercial": { + "account_type": "Fixed Asset" + }, + "216-Droit au bail": { + "account_type": "Fixed Asset" + }, + "217-Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset" + }, + "218-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "2181-Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset" + }, + "2182-Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset" + }, + "2183-Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset" + }, + "2184-Co\u00fbts des franchises": { + "account_type": "Fixed Asset" + }, + "2188-Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset" + } + }, + "219-Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "2191-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "2193-Logiciels et internet": { + "account_type": "Fixed Asset" + }, + "2198-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset" + } + } + }, + "22-Terrains": { + "account_type": "Fixed Asset", + "221-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "2211-Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset" + }, + "2212-Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset" + }, + "2218-Autres terrains": { + "account_type": "Fixed Asset" + } + }, + "222-Terrains nus": { + "account_type": "Fixed Asset", + "2221-Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset" + }, + "2228-Autres terrains nus": { + "account_type": "Fixed Asset" + } + }, + "223-Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "2231-Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset" + }, + "2232-Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset" + }, + "2234-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset" + }, + "2235-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset" + }, + "2238-Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset" + } + }, + "224-Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "2241-Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset" + }, + "2245-Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset" + }, + "2248-Autres travaux": { + "account_type": "Fixed Asset" + } + }, + "225-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "2251-Carri\u00e8res": { + "account_type": "Fixed Asset" + } + }, + "226-Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "2261-Parkings": { + "account_type": "Fixed Asset" + } + }, + "227-Terrains mis en concession": { + "account_type": "Fixed Asset" + }, + "228-Autres terrains": { + "account_type": "Fixed Asset", + "2281-Terrains immeubles de placement": { + "account_type": "Fixed Asset" + }, + "2285-Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset" + }, + "2286-Terrains de location acquisition": { + "account_type": "Fixed Asset" + }, + "2288-Divers terrains": { + "account_type": "Fixed Asset" + } + }, + "229-Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "2291-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset" + }, + "2292-Terrains nus": { + "account_type": "Fixed Asset" + }, + "2295-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset" + }, + "2298-Autres terrains": { + "account_type": "Fixed Asset" + } + } + }, + "23-B\u00e2timents, installations techniques et agencements": { + "231-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "2311-B\u00e2timents industriels": {}, + "2312-B\u00e2timents agricoles": {}, + "2313-B\u00e2timents administratifs et commerciaux": {}, + "2314-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2315-B\u00e2timents immeubles de placement": {}, + "2316-B\u00e2timents de location acquisition": {} + }, + "232-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "2321-B\u00e2timents industriels": {}, + "2322-B\u00e2timents agricoles": {}, + "2323-B\u00e2timents administratifs et commerciaux": {}, + "2324-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2325-B\u00e2timents immeubles de placement": {}, + "2326-B\u00e2timents de location acquisition": {} + }, + "233-Ouvrages d\u2019infrastructure": { + "2331-Voies de terre": {}, + "2332-Voies de fer": {}, + "2333-Voies d\u2019eau": {}, + "2334-Barrages, Digues": {}, + "2335-Pistes d\u2019a\u00e9rodrome": {}, + "2338-Autres ouvrages d\u2019infrastructures": {} + }, + "234-Am\u00e9nagements, agencements et installations techniques": { + "2341-Installations complexes sp\u00e9cialis\u00e9es sur sol propre": {}, + "2342-Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": {}, + "2343-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": {}, + "2344-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": {}, + "2345-Am\u00e9nagements et agencements des b\u00e2timents": {} + }, + "235-Am\u00e9nagements de bureaux": { + "2351-Installations g\u00e9n\u00e9rales": {}, + "2358-Autres am\u00e9nagements de bureaux": {} + }, + "237-B\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "238-Autres installations et agencements": {}, + "239-B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "2391-B\u00e2timents en cours": {}, + "2392-Installations en cours": {}, + "2393-Ouvrages d\u2019infrastructure en cours": {}, + "2394-Am\u00e9nagements et agencements et installations techniques en cours": {}, + "2395-Am\u00e9nagements de bureaux en cours": {}, + "2398-Autres installations et agencements en cours": {} + } + }, + "24-Mat\u00e9riel, mobilier et actifs biologiques": { + "241-Mat\u00e9riel et outillage industriel et commercial": { + "2411-Mat\u00e9riel industriel": {}, + "2412-Outillage industriel": {}, + "2413-Mat\u00e9riel commercial": {}, + "2414-Outillage commercial": {}, + "2416-Mat\u00e9riel & outillage industriel et commercial de location-acquisition": {} + }, + "242-Mat\u00e9riel et outillage agricole": { + "2421-Mat\u00e9riel agricole": {}, + "2422-Outillage agricole": {}, + "2426-Mat\u00e9riel & outillage agricole de location-acquisition": {} + }, + "243-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "244-Mat\u00e9riel et mobilier": { + "2441-Mat\u00e9riel de bureau": {}, + "2442-Mat\u00e9riel informatique": {}, + "2443-Mat\u00e9riel bureautique": {}, + "2444-Mobilier de bureau": {}, + "2445-Mat\u00e9riel et mobilier immeubles de placement": {}, + "2446-Mat\u00e9riel et mobilier de location acquisition": {}, + "2447-Mat\u00e9riel et mobilier des logements du personnel": {} + }, + "245-Mat\u00e9riel de transport": { + "2451-Mat\u00e9riel automobile": {}, + "2452-Mat\u00e9riel ferroviaire": {}, + "2453-Mat\u00e9riel fluvial, lagunaire": {}, + "2454-Mat\u00e9riel naval": {}, + "2455-Mat\u00e9riel a\u00e9rien": {}, + "2456-Mat\u00e9riel de transport de location-acquisition": {}, + "2457-Mat\u00e9riel hippomobile": {}, + "2458-Autres mat\u00e9riels de transport": {} + }, + "246-Actifs biologiques": { + "2461-Cheptel, animaux de trait": {}, + "2462-Cheptel, animaux reproducteurs": {}, + "2463-Animaux de garde": {}, + "2465-Plantations agricoles": {}, + "2468-Autres actifs biologiques": {} + }, + "247-Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "2471-Agencements et am\u00e9nagements du mat\u00e9riel": {}, + "2472-Agencements et am\u00e9nagements des actifs biologiques": {}, + "2478-Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": {} + }, + "248-Autres mat\u00e9riels et mobiliers": { + "2481-Collections et \u0153uvres d\u2019art": {}, + "2488-Divers mat\u00e9riels mobiliers": {} + }, + "249-Mat\u00e9riels et actifs biologiques en cours": { + "2491-Mat\u00e9riel et outillage industriel et commercial": {}, + "2492-Mat\u00e9riel et outillage agricole": {}, + "2493-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2494-Mat\u00e9riel et mobilier de bureau": {}, + "2495-Mat\u00e9riel de transport": {}, + "2496-Actifs biologiques": {}, + "2497-Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": {}, + "2498-Autres mat\u00e9riels et actifs biologiques en cours": {} + } + }, + "25-Avances et acomptes vers\u00e9s sur immobilisations": { + "251-Avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "252-Avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "26-Titres de participation": { + "261-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "262-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "263-Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "265-Participations dans des organismes professionnels": {}, + "266-Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {}, + "268-Autres titres de participation": {} + }, + "27-Autres immobilisations financi\u00e8res": { + "271-Pr\u00eats et cr\u00e9ances": { + "2711-Pr\u00eats participatifs": {}, + "2712-Pr\u00eats aux associ\u00e9s": {}, + "2713-Billets de fonds": {}, + "2714-Titres pr\u00eat\u00e9s": {}, + "2718-Autres pr\u00eats et cr\u00e9ances": {} + }, + "272-Pr\u00eats au personnel": { + "2721-Pr\u00eats immobiliers": {}, + "2722-Pr\u00eats mobiliers et d\u2019installation": {}, + "2728-Autres pr\u00eats au personnel": {} + }, + "273-Cr\u00e9ances sur l\u2019\u00c9tat": { + "2731-Retenues de garantie": {}, + "2733-Fonds r\u00e9glement\u00e9": {}, + "2734-Cr\u00e9ances sur le conc\u00e9dant": {}, + "2738-Autres cr\u00e9ances sur l\u2019\u00c9tat": {} + }, + "274-Titres immobilis\u00e9s": { + "2741-Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": {}, + "2742-Titres participatifs": {}, + "2743-Certificats d\u2019investissement": {}, + "2744-Parts de fonds commun de placement (FCP)": {}, + "2745-Obligations": {}, + "2746-Actions ou parts propres": {}, + "2748-Autres titres immobilis\u00e9s": {} + }, + "275-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "2751-D\u00e9p\u00f4ts pour loyers d\u2019avance": {}, + "2752-D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": {}, + "2753-D\u00e9p\u00f4ts pour l\u2019eau": {}, + "2754-D\u00e9p\u00f4ts pour le gaz": {}, + "2755-D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": {}, + "2756-Cautionnements sur march\u00e9s publics": {}, + "2757-Cautionnements sur autres op\u00e9rations": {}, + "2758-Autres d\u00e9p\u00f4ts et cautionnements": {} + }, + "276-Int\u00e9r\u00eats courus": { + "2761-Pr\u00eats et cr\u00e9ances non commerciales": {}, + "2762-Pr\u00eats au personnel": {}, + "2763-Cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2764-Titres immobilis\u00e9s": {}, + "2765-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2767-Cr\u00e9ances rattach\u00e9es \u00e0 des participations": {}, + "2768-Immobilisations financi\u00e8res diverses": {} + }, + "277-Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "2771-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": {}, + "2772-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": {}, + "2773-Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "2774-Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {} + }, + "278-Immobilisations financi\u00e8res diverses": { + "2781-Cr\u00e9ances diverses groupe": {}, + "2782-Cr\u00e9ances diverses hors groupe": {}, + "2784-Banques d\u00e9p\u00f4ts \u00e0 terme": {}, + "2785-Or et m\u00e9taux pr\u00e9cieux": {}, + "2788-Autres immobilisations financi\u00e8res": {} + } + }, + "28-Amortissements": { + "account_type": "Accumulated Depreciation", + "281-Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "2811-Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation" + }, + "2812-Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation" + }, + "2813-Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation" + }, + "2814-Amortissements des marques": { + "account_type": "Accumulated Depreciation" + }, + "2815-Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation" + }, + "2816-Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation" + }, + "2817-Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation" + }, + "2818-Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation" + } + }, + "282-Amortissements des terrains": { + "2824-Amortissements des travaux de mise en valeur des terrains": {} + }, + "283-Amortissements des b\u00e2timents, installations techniques et agencements": { + "2831-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2832-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2833-Amortissements des ouvrages d\u2019infrastructure": {}, + "2834-Amortissements des am\u00e9nagements, agencements et installations techniques": {}, + "2835-Amortissements des am\u00e9nagements de bureaux": {}, + "2837-Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2838-Amortissements des autres installations et agencements": {} + }, + "284-Amortissements du mat\u00e9riel": { + "2841-Amortissements du mat\u00e9riel et outillage industriel et commercial": {}, + "2842-Amortissements du mat\u00e9riel et outillage agricole": {}, + "2843-Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2844-Amortissements du mat\u00e9riel et mobilier": {}, + "2845-Amortissements du mat\u00e9riel de transport": {}, + "2846-Amortissements des actifs biologiques": {}, + "2847-Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2848-Amortissements des autres mat\u00e9riels": {} + } + }, + "29-D\u00e9pr\u00e9ciations des immobilisations": { + "291-D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "2911-D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": {}, + "2912-D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": {}, + "2913-D\u00e9pr\u00e9ciations des logiciels et sites internet": {}, + "2914-D\u00e9pr\u00e9ciations des marques": {}, + "2915-D\u00e9pr\u00e9ciations du fonds commercial": {}, + "2916-D\u00e9pr\u00e9ciations du droit au bail": {}, + "2917-D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": {}, + "2918-D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": {}, + "2919-D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": {} + }, + "292-D\u00e9pr\u00e9ciations des terrains": { + "2921-D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": {}, + "2922-D\u00e9pr\u00e9ciations des terrains nus": {}, + "2923-D\u00e9pr\u00e9ciations des terrains b\u00e2tis": {}, + "2924-D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": {}, + "2925-D\u00e9pr\u00e9ciations des terrains de gisement": {}, + "2926-D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": {}, + "2927-D\u00e9pr\u00e9ciations des terrains mis en concession": {}, + "2928-D\u00e9pr\u00e9ciations des autres terrains": {}, + "2929-D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": {} + }, + "293-D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "2931-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2932-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2933-D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": {}, + "2934-D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": {}, + "2935-D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": {}, + "2937-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2938-D\u00e9pr\u00e9ciations des autres installations et agencements": {}, + "2939-D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": {} + }, + "294-D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "2941-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": {}, + "2942-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": {}, + "2943-D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2944-D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": {}, + "2945-D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": {}, + "2946-D\u00e9pr\u00e9ciations des actifs biologiques": {}, + "2947-D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2948-D\u00e9pr\u00e9ciations des autres mat\u00e9riels": {}, + "2949-D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": {} + }, + "295-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "2951-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "2952-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "296-D\u00e9pr\u00e9ciations des titres de participation": { + "2961-D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "2962-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "2963-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "2965-D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": {}, + "2966-D\u00e9pr\u00e9ciations des parts dans des GIE": {}, + "2968-D\u00e9pr\u00e9ciations des autres titres de participation": {} + }, + "297-D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "2971-D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": {}, + "2972-D\u00e9pr\u00e9ciations des pr\u00eats au personnel": {}, + "2973-D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2974-D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": {}, + "2975-D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2977-D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": {}, + "2978-D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": {} + } + }, + "root_type": "Asset" + }, + "3-Comptes de Stocks": { + "31-Marchandises": { + "311-Marchandises A": { + "3111-Marchandises A1": {}, + "3112-Marchandises A2": {} + }, + "312-Marchandises B": { + "3121-Marchandises B1": {}, + "3122-Marchandises B2": {} + }, + "313-Actifs biologiques": { + "3131-Animaux": {}, + "3132-V\u00e9g\u00e9taux": {} + }, + "318-Marchandises hors activit\u00e9s ordinaires (HAO)": {} + }, + "32-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "321-Mati\u00e8res A": {}, + "322-Mati\u00e8res B": {}, + "323-Fournitures (A, B)": {} + }, + "33-Autres approvisionnements": { + "331-Mati\u00e8res consommables": {}, + "332-Fournitures d\u2019atelier et d\u2019usine": {}, + "333-Fournitures de magasin": {}, + "334-Fournitures de bureau": {}, + "335-Emballages": { + "3351-Emballages perdus": {}, + "3352-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "3353-Emballages \u00e0 usage mixte": {}, + "3358-Autres emballages": {} + }, + "338-Autres mati\u00e8res": {} + }, + "34-Produits en cours": { + "341-Produits en cours": { + "3411-Produits en cours P1": {}, + "3412-Produits en cours P2": {} + }, + "342-Travaux en cours": { + "3421-Travaux en cours T1": {}, + "3422-Travaux en cours T2": {} + }, + "343-Produits interm\u00e9diaires en cours": { + "3431-Produits interm\u00e9diaires A": {}, + "3432-Produits interm\u00e9diaires B": {} + }, + "344-Produits r\u00e9siduels en cours": { + "3441-Produits r\u00e9siduels A": {}, + "3442-Produits r\u00e9siduels B": {} + }, + "345-Actifs biologiques en cours": { + "3451-Animaux": {}, + "3452-V\u00e9g\u00e9taux": {} + } + }, + "35-Services en cours": { + "351-\u00c9tudes en cours": { + "3511-\u00c9tudes en cours E1": {}, + "3512-\u00c9tudes en cours E2": {} + }, + "352-Prestations de services en cours": { + "3521-Prestations de services S1": {}, + "3522-Prestations de services S2": {} + } + }, + "36-Produits finis": { + "361-Produits finis A": {}, + "362-Produits finis B": {}, + "363-Actifs biologiques": { + "3631-Animaux": {}, + "3632-V\u00e9g\u00e9taux": {}, + "3638-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "37-Produits interm\u00e9diaires et r\u00e9siduels": { + "371-Produits interm\u00e9diaires": { + "3711-Produits interm\u00e9diaires A": {}, + "3712-Produits interm\u00e9diaires B": {} + }, + "372-Produits r\u00e9siduels": { + "3721-D\u00e9chets": {}, + "3722-Rebuts": {}, + "3723-Mati\u00e8res de R\u00e9cup\u00e9ration": {} + }, + "373-Actifs biologiques": { + "3731-Animaux": {}, + "3732-V\u00e9g\u00e9taux": {}, + "3738-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "38-Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "381-Marchandises en cours de route": {}, + "382-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": {}, + "383-Autres approvisionnements en cours de route": {}, + "386-Produits finis en cours de route": {}, + "387-Stock en consignation ou en d\u00e9p\u00f4t": { + "3871-Stock en consignation": {}, + "3872-Stock en d\u00e9p\u00f4t": {} + }, + "388-Stock provenant d\u2019immobilisations mises hors service ou au rebut": {} + }, + "39-D\u00e9pr\u00e9ciations des stocks et encours de production": { + "391-D\u00e9pr\u00e9ciations des stocks de marchandises": {}, + "392-D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "393-D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": {}, + "394-D\u00e9pr\u00e9ciations des productions en cours": {}, + "395-D\u00e9pr\u00e9ciations des services en cours": {}, + "396-D\u00e9pr\u00e9ciations des stocks de produits finis": {}, + "397-D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": {}, + "398-D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": {} + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "409-Fournisseurs d\u00e9biteurs": { + "4091-Fournisseurs Avances et acomptes vers\u00e9s": {}, + "4092-Fournisseurs Groupe avances et acomptes vers\u00e9s": {}, + "4093-Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": {}, + "4094-Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": {}, + "4098-Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": {} + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "411-Clients": { + "4111-Clients": { + "account_type": "Receivable" + }, + "4112-Clients groupe": { + "account_type": "Receivable" + }, + "4114-Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable" + }, + "4115-Clients, organismes internationaux": { + "account_type": "Receivable" + }, + "4116-Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable" + }, + "4117-Client, retenues de garantie": { + "account_type": "Receivable" + }, + "4118-Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "412-Clients, effets \u00e0 recevoir en portefeuille": { + "4121-Clients, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4122-Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4124-\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4125-Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "413-Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "4131-Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable" + }, + "4132-Clients, effets impay\u00e9s": { + "account_type": "Receivable" + }, + "4133-Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable" + }, + "4138-Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "414-Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "4141-Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4142-Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable" + }, + "4146-Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4147-Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "415-Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable" + }, + "416-Cr\u00e9ances clients litigieuses ou douteuses": { + "4161-Cr\u00e9ances litigieuses": { + "account_type": "Receivable" + }, + "4162-Cr\u00e9ances douteuses": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "418-Clients, produits \u00e0 recevoir": { + "4181-Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable" + }, + "4186-Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "421-Personnel, avances et acomptes": { + "4211-Personnel, avances": {}, + "4212-Personnel, acomptes": {}, + "4213-Frais avanc\u00e9s et fournitures au personnel": {} + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "4311-Prestations familiales": {}, + "4312-Accidents de travail": {}, + "4313-Caisse de retraite obligatoire": {}, + "4314-Caisse de retraite facultative": {}, + "4318-Autres cotisations sociales": {} + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "4331-Mutuelle": {}, + "4332-Assurances retraite": {}, + "4333-Assurances et organismes de sant\u00e9": {} + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4387-Produits \u00e0 recevoir": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "443-\u00c9tat, TVA factur\u00e9e": { + "4431-TVA factur\u00e9e sur ventes": {}, + "4432-TVA factur\u00e9e sur prestations de services": {}, + "4433-TVA factur\u00e9e sur travaux": {}, + "4434-TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": {}, + "4435-TVA sur factures \u00e0 \u00e9tablir": {} + }, + "445-\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "4451-TVA r\u00e9cup\u00e9rable sur immobilisations": {}, + "4452-TVA r\u00e9cup\u00e9rable sur achats": {}, + "4453-TVA r\u00e9cup\u00e9rable sur transport": {}, + "4454-TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": {}, + "4455-TVA r\u00e9cup\u00e9rable sur factures non parvenues": {}, + "4456-TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": {} + }, + "448-\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "4486-Charges \u00e0 payer": {}, + "4487-Produits \u00e0 recevoir": {} + }, + "449-\u00c9tat, cr\u00e9ances et dettes diverses": { + "4491-\u00c9tat, obligations cautionn\u00e9es": {}, + "4492-\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": {}, + "4493-\u00c9tat, fonds de dotation \u00e0 recevoir": {}, + "4494-\u00c9tat, subventions investissement \u00e0 recevoir": {}, + "4495-\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": {}, + "4496-\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": {}, + "4497-\u00c9tat, avances sur subventions": {}, + "4499-\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": {} + } + }, + "45-Organismes internationaux (ACTIF)": { + "451-Op\u00e9rations avec les organismes africains": {}, + "452-Op\u00e9rations avec les autres organismes internationaux": {}, + "458-Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "4581-Organismes internationaux, fonds de dotation \u00e0 recevoir": {}, + "4582-Organismes internationaux, subventions \u00e0 recevoir": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "4613-Apporteurs, capital appel\u00e9, non vers\u00e9": {}, + "4614-Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": {}, + "4618-Apporteurs, titres \u00e0 \u00e9changer": {} + }, + "467-Apporteurs, restant d\u00fb sur capital appel\u00e9": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "4721-Cr\u00e9ances sur cessions de titres de placement": {}, + "4726-Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": {} + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "4731-Mandants": {}, + "4732-Mandataires": {}, + "4733-Commettants": {}, + "4734-Commissionnaires": {}, + "4739-\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "4747-Compte de r\u00e9partition p\u00e9riodique des produits": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "4751-Compte actif": { + "account_type": "Temporary" + } + }, + "476-Charges constat\u00e9es d\u2019avance": {}, + "478-\u00c9carts de conversion actif": { + "4781-Diminution des cr\u00e9ances d\u2019exploitation": {}, + "4782-Diminution des cr\u00e9ances financi\u00e8res": {}, + "4783-Augmentation des dettes d\u2019exploitation": {}, + "4784-Augmentation des dettes financi\u00e8res": {}, + "4786-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4788-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "485-Cr\u00e9ances sur cessions d\u2019immobilisations": { + "4851-En compte, immobilisations incorporelles": {}, + "4852-En compte, immobilisations corporelles": {}, + "4853-Effets \u00e0 recevoir, immobilisations incorporelles": {}, + "4854-Effets \u00e0 recevoir, immobilisations corporelles": {}, + "4855-Effets escompt\u00e9s non \u00e9chus": {}, + "4857-Retenues de garantie": {}, + "4858-Factures \u00e0 \u00e9tablir": {} + }, + "488-Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": {} + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "491-D\u00e9pr\u00e9ciations des comptes clients": { + "4911-Cr\u00e9ances litigieuses": {}, + "4912-Cr\u00e9ances douteuses": {} + }, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {}, + "496-D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "4962-Associ\u00e9s, comptes courants": {}, + "4963-Associ\u00e9s, op\u00e9rations faites en commun": {}, + "4966-Groupe, comptes courants": {} + }, + "497-D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": {}, + "498-D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "4985-Cr\u00e9ances sur cessions d\u2019immobilisations": {}, + "4986-Cr\u00e9ances sur cessions de titres de placement": {}, + "4988-Autres cr\u00e9ances HAO": {} + }, + "499-Provisions pour risques \u00e0 court terme": { + "4991-Sur op\u00e9rations d\u2019exploitation": {}, + "4997-Sur op\u00e9rations financi\u00e8res": {}, + "4998-Sur op\u00e9rations HAO": {} + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "401-Fournisseurs, dettes en compte": { + "4011-Fournisseurs": { + "account_type": "Payable" + }, + "4012-Fournisseurs groupe": { + "account_type": "Payable" + }, + "4013-Fournisseurs sous-traitants": { + "account_type": "Payable" + }, + "4016-Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable" + }, + "4017-Fournisseur, retenues de garantie": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "402-Fournisseurs, effets \u00e0 payer": { + "4021-Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable" + }, + "4022-Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable" + }, + "4023-Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "404-Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "4041-Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4042-Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable" + }, + "4046-Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4047-Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "408-Fournisseurs, factures non parvenues": { + "4081-Fournisseurs": { + "account_type": "Stock Received But Not Billed" + }, + "4082-Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed" + }, + "4083-Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed" + }, + "4086-Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "419-Clients cr\u00e9diteurs": { + "4191-Clients, avances et acomptes re\u00e7us": {}, + "4192-Clients groupe, avances et acomptes re\u00e7us": {}, + "4194-Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": {}, + "4198-Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": {} + } + }, + "42-Personnel (PASSIF)": { + "422-Personnel, r\u00e9mun\u00e9rations dues": {}, + "423-Personnel, oppositions, saisies-arr\u00eats": { + "4231-Personnel, oppositions": {}, + "4232-Personnel, saisies-arr\u00eats": {}, + "4233-Personnel, avis \u00e0 tiers d\u00e9tenteur": {} + }, + "424-Personnel, \u0153uvres sociales internes": { + "4241-Assistance m\u00e9dicale": {}, + "4242-Allocations familiales": {}, + "4245-Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": {}, + "4248-Autres \u0153uvres sociales internes": {} + }, + "425-Repr\u00e9sentants du personnel": { + "4251-D\u00e9l\u00e9gu\u00e9s du personnel": {}, + "4252-Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": {}, + "4258-Autres repr\u00e9sentants du personnel": {} + }, + "426-Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "4261-Participation aux b\u00e9n\u00e9fices": {}, + "4264-Participation au capital": {} + }, + "427-Personnel d\u00e9p\u00f4ts": {}, + "428-Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "4281-Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": {}, + "4286-Autres charges \u00e0 payer": {}, + "4287-Produits \u00e0 recevoir": {} + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4381-Charges sociales sur gratifications \u00e0 payer": {}, + "4382-Charges sociales sur cong\u00e9s \u00e0 payer": {}, + "4386-Autres charges \u00e0 payer": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "441-\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": {}, + "442-\u00c9tat, autres imp\u00f4ts et taxes": { + "4421-Imp\u00f4ts et taxes d\u2019\u00c9tat": {}, + "4422-Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": {}, + "4423-Imp\u00f4ts et taxes recouvrables sur des obligataires": {}, + "4424-Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": {}, + "4426-Droits de douane": {}, + "4428-Autres imp\u00f4ts et taxes": {} + }, + "444-\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "4441-\u00c9tat, TVA due": {}, + "4449-\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": {} + }, + "446-\u00c9tat, autres taxes sur le chiffre d\u2019affaires": {}, + "447-\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "4471-Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": {}, + "4472-Imp\u00f4ts sur salaires": {}, + "4473-Contribution nationale": {}, + "4474-Contribution nationale de solidarit\u00e9": {}, + "4478-Autres imp\u00f4ts et contributions": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "4611-Apporteurs, apports en nature": {}, + "4612-Apporteurs, apports en num\u00e9raire": {}, + "4615-Apporteurs, versements re\u00e7us sur augmentation de capital": {}, + "4616-Apporteurs, versements anticip\u00e9s": {}, + "4617-Apporteurs d\u00e9faillants": {}, + "4619-Apporteurs, capital \u00e0 rembourser": {} + }, + "462-Associ\u00e9s, comptes courants": { + "4621-Principal": {}, + "4626-Int\u00e9r\u00eats courus": {} + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "4631-Op\u00e9rations courantes": {}, + "4636-Int\u00e9r\u00eats courus": {} + }, + "465-Associ\u00e9s, dividendes \u00e0 payer": {}, + "466-Groupe, comptes courants": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "4711-D\u00e9biteurs divers": {}, + "4712-Cr\u00e9diteurs divers": {}, + "4713-Obligataires": {}, + "4715-R\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "4716-Compte d\u2019affacturage": {}, + "4717-D\u00e9biteurs divers retenues de garantie": {}, + "4718-Apport, compte de fusion et op\u00e9rations assimil\u00e9es": {}, + "4719-Bons de souscription d\u2019actions et d\u2019obligations": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "4746-Compte de r\u00e9partition p\u00e9riodique des charges": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "4752-Compte passif": {} + }, + "477-Produits constat\u00e9s d\u2019avance": {}, + "479-\u00c9carts de conversion passif": { + "4791-Augmentation des cr\u00e9ances d\u2019exploitation": {}, + "4792-Augmentation des cr\u00e9ances financi\u00e8res": {}, + "4793-Diminution des dettes d\u2019exploitation": {}, + "4794-Diminution des dettes financi\u00e8res": {}, + "4797-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4798-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "481-Fournisseurs d\u2019investissements": { + "4811-Immobilisations incorporelles": {}, + "4812-Immobilisations corporelles": {}, + "4813-Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": {}, + "4816-R\u00e9serve de propri\u00e9t\u00e9": {}, + "4817-Retenues de garantie": {}, + "4818-Factures non parvenues": {} + }, + "482-Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "4821-Immobilisations incorporelles": {}, + "4822-Immobilisations corporelles": {} + }, + "484-Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "4887-Produits": {} + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (PASSIF)": { + "490-D\u00e9pr\u00e9ciations des comptes fournisseurs": {}, + "492-D\u00e9pr\u00e9ciations des comptes personnel": {}, + "493-D\u00e9pr\u00e9ciations des comptes organismes sociaux": {}, + "494-D\u00e9pr\u00e9ciations des comptes \u00c9tat et collectivit\u00e9s publiques": {}, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {} + }, + "root_type": "Liability" + }, + "5-Comptes de tr\u00e9sorerie": { + "50-Titres de placement": { + "501-Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "5011-Titres du Tr\u00e9sor \u00e0 court terme": {}, + "5012-Titres d\u2019organismes financiers": {}, + "5013-Bons de caisse \u00e0 court terme": {}, + "5016-Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": {} + }, + "502-Actions": { + "5021-Actions ou parts propres": {}, + "5022-Actions cot\u00e9es": {}, + "5023-Actions non cot\u00e9es": {}, + "5024-Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": {}, + "5025-Autres actions": {}, + "5026-Frais d\u2019acquisition des actions": {} + }, + "503-Obligations": { + "5031-Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": {}, + "5032-Obligations cot\u00e9es": {}, + "5033-Obligations non cot\u00e9es": {}, + "5035-Autres obligations": {}, + "5036-Frais d\u2019acquisition des obligations": {} + }, + "504-Bons de souscription": { + "5042-Bons de souscription d\u2019actions": {}, + "5043-Bons de souscription d\u2019obligations": {} + }, + "505-Titres n\u00e9gociables hors r\u00e9gion": {}, + "506-Int\u00e9r\u00eats courus": { + "5061-Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": {}, + "5062-Actions": {}, + "5063-Obligations": {} + }, + "508-Autres titres de placement et cr\u00e9ances assimil\u00e9es": {} + }, + "51-Valeurs \u00e0 encaisser": { + "511-Effets \u00e0 encaisser": {}, + "512-Effets \u00e0 l\u2019encaissement": {}, + "513-Ch\u00e8ques \u00e0 encaisser": {}, + "514-Ch\u00e8ques \u00e0 l\u2019encaissement": {}, + "515-Cartes de cr\u00e9dit \u00e0 encaisser": {}, + "518-Autres valeurs \u00e0 l\u2019encaissement": { + "5181-Warrants": {}, + "5182-Billets de fonds": {}, + "5185-Ch\u00e8ques de voyage": {}, + "5186-Coupons \u00e9chus": {}, + "5187-Int\u00e9r\u00eats \u00e9chus des obligations": {} + } + }, + "52-Banques": { + "521-Banques locales": { + "5211-Banques en monnaie nationale": { + "account_type": "Bank" + }, + "5215-Banques en devises": { + "account_type": "Bank" + }, + "account_type": "Bank" + }, + "522-Banques autres \u00c9tats r\u00e9gion": {}, + "523-Banques autres \u00c9tats zone mon\u00e9taire": {}, + "524-Banques hors zone mon\u00e9taire": {}, + "525-Banques d\u00e9p\u00f4t \u00e0 terme": {}, + "526-Banques, int\u00e9r\u00eats courus": { + "5261-Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": {}, + "5267-Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": {} + } + }, + "53-\u00c9tablissements financiers et assimil\u00e9s": { + "531-Ch\u00e8ques postaux": {}, + "532-Tr\u00e9sor": {}, + "533-Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": {}, + "536-\u00c9tablissements financiers, int\u00e9r\u00eats courus": {}, + "538-Autres organismes financiers": {} + }, + "54-Instruments de tr\u00e9sorerie": { + "541-Options de taux d\u2019int\u00e9r\u00eat": {}, + "542-Options de taux de change": {}, + "543-Options de taux boursiers": {}, + "544-Instruments de march\u00e9s \u00e0 terme": {}, + "545-Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": {} + }, + "55-Instruments de monnaie \u00e9lectronique": { + "551-Monnaie \u00e9lectronique carte carburant": {}, + "552-Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": {}, + "553-Monnaie \u00e9lectronique carte p\u00e9age": {}, + "554-Porte-monnaie \u00e9lectronique": {}, + "558-Autres instruments de monnaies \u00e9lectroniques": {} + }, + "56-Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "561-Cr\u00e9dits de tr\u00e9sorerie": {}, + "564-Escompte de cr\u00e9dits de campagne": {}, + "565-Escompte de cr\u00e9dits ordinaires": {}, + "566-Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": {} + }, + "57-Caisse": { + "571-Caisse si\u00e8ge social": { + "5711-Caisse en monnaie nationale": {}, + "5712-Caisse en devises": {} + }, + "572-Caisse succursale A": { + "5721-En monnaie nationale": {}, + "5722-En devises": {} + }, + "573-Caisse succursale B": { + "5731-En monnaie nationale": {}, + "5732-En devises": {} + } + }, + "58-R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "581-R\u00e9gies d\u2019avance": {}, + "582-Accr\u00e9ditifs": {}, + "585-Virements de fonds": {}, + "588-Autres virements internes": {} + }, + "59-D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "590-D\u00e9pr\u00e9ciations des titres de placement": {}, + "591-D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": {}, + "592-D\u00e9pr\u00e9ciations des comptes banques": {}, + "593-D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": {}, + "594-D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": {}, + "599-Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": {} + }, + "root_type": "Asset" + }, + "6-Comptes de charges des activit\u00e9s ordinaires": { + "60-Achats et variations de stocks": { + "601-Achats de marchandises": { + "6011-Dans la R\u00e9gion": {}, + "6012-Hors R\u00e9gion": {}, + "6013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6015-Frais sur achats": {}, + "6019-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "602-Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "6021-Dans la R\u00e9gion": {}, + "6022-Hors R\u00e9gion": {}, + "6023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6025-Frais sur achats": {}, + "6029-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "603-Variations des stocks de biens achet\u00e9s": { + "6031-Variations des stocks de marchandises": {}, + "6032-Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "6033-Variations des stocks d\u2019autres approvisionnements": {} + }, + "604-Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "6041-Mati\u00e8res consommables": {}, + "6042-Mati\u00e8res combustibles": {}, + "6043-Produits d\u2019entretien": {}, + "6044-Fournitures d\u2019atelier et d\u2019usine": {}, + "6045-Frais sur achat": {}, + "6046-Fournitures de magasin": {}, + "6047-Fournitures de bureau": {}, + "6049-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "605-Autres achats": { + "6051-Fournitures non stockables Eau": {}, + "6052-Fournitures non stockables \u00c9lectricit\u00e9": {}, + "6053-Fournitures non stockables Autres \u00e9nergies": {}, + "6054-Fournitures d\u2019entretien non stockables": {}, + "6055-Fournitures de bureau non stockables": {}, + "6056-Achats de petit mat\u00e9riel et outillage": {}, + "6057-Achats d\u2019\u00e9tudes et prestations de services": {}, + "6058-Achats de travaux, mat\u00e9riels et \u00e9quipements": {}, + "6059-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "608-Achats d\u2019emballages": { + "6081-Emballages perdus": {}, + "6082-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "6083-Emballages \u00e0 usage mixte": {}, + "6085-Frais sur achats": {}, + "6089-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + } + }, + "61-Transports": { + "612-Transports sur ventes": {}, + "613-Transports pour le compte de tiers": {}, + "614-Transports du personnel": {}, + "616-Transports de plis": {}, + "618-Autres frais de transport": { + "6181-Voyages et d\u00e9placements": {}, + "6182-Transports entre \u00e9tablissements ou chantiers": {}, + "6183-Transports administratifs": {} + } + }, + "62-Services ext\u00e9rieurs": { + "621-Sous-traitance g\u00e9n\u00e9rale": {}, + "622-Locations, charges locatives": { + "6221-Locations de terrains": {}, + "6222-Locations de b\u00e2timents": {}, + "6223-Locations de mat\u00e9riels et outillages": {}, + "6224-Malis sur emballages": {}, + "6225-Locations d\u2019emballages": {}, + "6226-Fermages et loyers du foncier": {}, + "6228-Locations et charges locatives diverses": {} + }, + "623-Redevances de location acquisition": { + "6232-Cr\u00e9dit-bail immobilier": {}, + "6233-Cr\u00e9dit-bail mobilier": {}, + "6234-Location-vente": {}, + "6238-Autres contrats de location acquisition": {} + }, + "624-Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "6241-Entretien et r\u00e9parations des biens immobiliers": {}, + "6242-Entretien et r\u00e9parations des biens mobiliers": {}, + "6243-Maintenance": {}, + "6244-Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "6248-Autres entretiens et r\u00e9parations": {} + }, + "625-Primes d\u2019assurance": { + "6251-Assurances multirisques": {}, + "6252-Assurances mat\u00e9riel de transport": {}, + "6253-Assurances risques d\u2019exploitation": {}, + "6254-Assurances responsabilit\u00e9 du producteur": {}, + "6255-Assurances insolvabilit\u00e9 clients": {}, + "6257-Assurances transport sur ventes": {}, + "6258-Autres primes d\u2019assurances": {} + }, + "626-\u00c9tudes, recherches et documentation": { + "6261-\u00c9tudes et recherches": {}, + "6265-Documentation g\u00e9n\u00e9rale": {}, + "6266-Documentation technique": {} + }, + "627-Publicit\u00e9, publications, relations publiques": { + "6271-Annonces, insertions": {}, + "6272-Catalogues, imprim\u00e9s publicitaires": {}, + "6273-\u00c9chantillons": {}, + "6274-Foires et expositions": {}, + "6275-Publications": {}, + "6276-Cadeaux \u00e0 la client\u00e8le": {}, + "6277-Frais de colloques, s\u00e9minaires, conf\u00e9rences": {}, + "6278-Autres charges de publicit\u00e9 et relations publiques": {} + }, + "628-Frais de t\u00e9l\u00e9communications": { + "6281-Frais de t\u00e9l\u00e9phone": {}, + "6282-Frais de t\u00e9lex": {}, + "6283-Frais de t\u00e9l\u00e9copie": {}, + "6288-Autres frais de t\u00e9l\u00e9communications": {} + } + }, + "63-Autres services ext\u00e9rieurs": { + "631-Frais bancaires": { + "6311-Frais sur titres (vente, garde)": {}, + "6312-Frais sur effets": {}, + "6313-Location de coffres": {}, + "6314-Commissions d\u2019affacturage": {}, + "6315-Commissions sur cartes de cr\u00e9dit": {}, + "6316-Frais d\u2019\u00e9mission d\u2019emprunts": {}, + "6317-Frais sur instruments monnaie \u00e9lectronique": {}, + "6318-Autres frais bancaires": {} + }, + "632-R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "6322-Commissions et courtages sur ventes": {}, + "6324-Honoraires des professions r\u00e9glement\u00e9es": {}, + "6325-Frais d\u2019actes et de contentieux": {}, + "6326-R\u00e9mun\u00e9rations d\u2019affacturage": {}, + "6327-R\u00e9mun\u00e9rations des autres prestataires de services": {}, + "6328-Divers frais": {} + }, + "633-Frais de formation du personnel": {}, + "634-Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "6342-Redevances pour brevets, licences": {}, + "6343-Redevances pour logiciels": {}, + "6344-Redevances pour marques": {}, + "6345-Redevances pour sites internet": {}, + "6346-Redevances pour concessions, droits et valeurs similaires": {} + }, + "635-Cotisations": { + "6351-Cotisations": {}, + "6358-Concours divers": {} + }, + "637-R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "6371-Personnel int\u00e9rimaire": {}, + "6372-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "638-Autres charges externes": { + "6381-Frais de recrutement du personnel": {}, + "6382-Frais de d\u00e9m\u00e9nagement": {}, + "6383-R\u00e9ceptions": {}, + "6384-Missions": {}, + "6385-Charges de copropri\u00e9t\u00e9": {} + } + }, + "64-Imp\u00f4ts et taxes": { + "641-Imp\u00f4ts et taxes directs": { + "6411-Imp\u00f4ts fonciers et taxes annexes": {}, + "6412-Patentes, licences et taxes annexes": {}, + "6413-Taxes sur appointements et salaires": {}, + "6414-Taxes d\u2019apprentissage": {}, + "6415-Formation professionnelle continue": {}, + "6418-Autres imp\u00f4ts et taxes directs": {} + }, + "645-Imp\u00f4ts et taxes indirects": {}, + "646-Droits d\u2019enregistrement": { + "6461-Droits de mutation": {}, + "6462-Droits de timbre": {}, + "6463-Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": {}, + "6464-Vignettes": {}, + "6468-Autres droits": {} + }, + "647-P\u00e9nalit\u00e9s, amendes fiscales": { + "6471-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": {}, + "6472-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": {}, + "6473-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": {}, + "6474-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": {}, + "6478-Autres p\u00e9nalit\u00e9s et amendes fiscales": {} + }, + "648-Autres imp\u00f4ts et taxes": {} + }, + "65-Autres charges": { + "651-Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "6511-Clients": {}, + "6515-Autres d\u00e9biteurs": {} + }, + "652-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "6521-Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": {}, + "6525-Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "654-Valeurs comptables des cessions courantes d\u2019immobilisations": { + "6541-Immobilisations incorporelles": {}, + "6542-Immobilisations corporelles": {} + }, + "656-Perte de change sur cr\u00e9ances et dettes commerciale": {}, + "657-P\u00e9nalit\u00e9s et amendes p\u00e9nales": {}, + "658-Charges diverses": { + "6581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "6582-Dons": {}, + "6583-M\u00e9c\u00e9nat": {}, + "6588-Autres charges diverses": {} + }, + "659-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "6591-Sur risques \u00e0 court terme": {}, + "6593-Sur stocks": {}, + "6594-Sur cr\u00e9ances": {}, + "6598-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": {} + } + }, + "66-Charges de personnel": { + "661-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "6611-Appointements salaires et commissions": {}, + "6612-Primes et gratifications": {}, + "6613-Cong\u00e9s pay\u00e9s": {}, + "6614-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6615-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6616-Suppl\u00e9ment familial": {}, + "6617-Avantages en nature": {}, + "6618-Autres r\u00e9mun\u00e9rations directes": {} + }, + "662-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "6621-Appointements salaires et commissions": {}, + "6622-Primes et gratifications": {}, + "6623-Cong\u00e9s pay\u00e9s": {}, + "6624-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6625-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6626-Suppl\u00e9ment familial": {}, + "6627-Avantages en nature": {}, + "6628-Autres r\u00e9mun\u00e9rations directes": {} + }, + "663-Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "6631-Indemnit\u00e9s de logement": {}, + "6632-Indemnit\u00e9s de repr\u00e9sentation": {}, + "6633-Indemnit\u00e9s d\u2019expatriation": {}, + "6634-Indemnit\u00e9s de transport": {}, + "6638-Autres indemnit\u00e9s et avantages divers": {} + }, + "664-Charges sociales": { + "6641-Charges sociales sur r\u00e9mun\u00e9ration du personnel national": {}, + "6642-Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": {} + }, + "666-R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "6661-R\u00e9mun\u00e9ration du travail de l\u2019exploitant": {}, + "6662-Charges sociales": {} + }, + "667-R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "6671-Personnel int\u00e9rimaire": {}, + "6672-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "668-Autres charges sociales": { + "6681-Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": {}, + "6682-Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": {}, + "6683-Versements et contributions aux autres \u0153uvres sociales": {}, + "6684-M\u00e9decine du travail et pharmacie": {}, + "6685-Assurances et organismes de sant\u00e9": {}, + "6686-Assurances retraite et fonds de pension": {}, + "6687-Majorations et p\u00e9nalit\u00e9s sociales": {}, + "6688-Charges sociales diverses": {} + } + }, + "67-Frais financiers et charges assimil\u00e9es": { + "671-Int\u00e9r\u00eats des emprunts": { + "6711-Emprunts obligataires": {}, + "6712-Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "6713-Dettes li\u00e9es \u00e0 des participations": {}, + "6714-Primes de remboursement des obligations": {} + }, + "672-Int\u00e9r\u00eats dans loyers de location acquisition": { + "6722-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": {}, + "6723-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": {}, + "6724-Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": {}, + "6728-Int\u00e9r\u00eats dans loyers des autres locations acquisition": {} + }, + "673-Escomptes accord\u00e9s": {}, + "674-Autres int\u00e9r\u00eats": { + "6741-Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": {}, + "6742-Comptes courants bloqu\u00e9s": {}, + "6743-Int\u00e9r\u00eats sur obligations cautionn\u00e9es": {}, + "6744-Int\u00e9r\u00eats sur dettes commerciales": {}, + "6745-Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": {}, + "6748-Int\u00e9r\u00eats sur dettes diverses": {} + }, + "675-Escomptes des effets de commerce": {}, + "676-Pertes de change financi\u00e8res": {}, + "677-Pertes sur titres de placement": { + "6771-Pertes sur cessions de titres de placement": {}, + "6772-Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {} + }, + "678-Pertes et charges sur risques financiers": { + "6781-Sur rentes viag\u00e8res": {}, + "6782-Sur op\u00e9rations financi\u00e8res": {}, + "6784-Sur instruments de tr\u00e9sorerie": {} + }, + "679-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "6791-Sur risques financiers": {}, + "6795-Sur titres de placement": {}, + "6798-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "68-Dotations aux amortissements": { + "681-Dotations aux amortissements d\u2019exploitation": { + "6812-Dotations aux amortissements des immobilisations incorporelles": {}, + "6813-Dotations aux amortissements des immobilisations corporelles": {} + } + }, + "69-Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "691-Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "6911-Dotations aux provisions pour risques et charges": {}, + "6913-Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": {}, + "6914-Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": {} + }, + "697-Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "6971-Dotations aux provisions pour risques et charges": {}, + "6972-Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": {} + } + }, + "root_type": "Expense" + }, + "7-Comptes de produits des activit\u00e9s ordinaires": { + "70-Ventes": { + "701-Ventes de marchandises": { + "7011-Dans la R\u00e9gion": {}, + "7012-Hors R\u00e9gion": {}, + "7013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7015-Sur internet": {}, + "7019-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "702-Ventes de produits finis": { + "7021-Dans la R\u00e9gion": {}, + "7022-Hors R\u00e9gion": {}, + "7023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7025-Sur internet": {}, + "7029-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "703-Ventes de produits interm\u00e9diaires": { + "7031-Dans la R\u00e9gion": {}, + "7032-Hors R\u00e9gion": {}, + "7033-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7034-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7035-Sur internet": {}, + "7039-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "704-Ventes de produits r\u00e9siduels": { + "7041-Dans la R\u00e9gion": {}, + "7042-Hors R\u00e9gion": {}, + "7043-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7044-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7045-Sur internet": {}, + "7049-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "705-Travaux factur\u00e9s": { + "7051-Dans la R\u00e9gion": {}, + "7052-Hors R\u00e9gion": {}, + "7053-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7054-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7055-Sur internet": {}, + "7059-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "706-Services vendus": { + "7061-Dans la R\u00e9gion": {}, + "7062-Hors R\u00e9gion": {}, + "7063-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7064-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7065-Sur internet": {}, + "7069-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "707-Produits accessoires": { + "7071-Ports, emballages perdus et autres frais factur\u00e9s": {}, + "7072-Commissions et courtages": {}, + "7073-Locations": {}, + "7074-Bonis sur reprises et cessions d\u2019emballages": {}, + "7075-Mise \u00e0 disposition de personnel": {}, + "7076-Redevances pour brevets, logiciels, marques et droits similaires": {}, + "7077-Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": {}, + "7078-Autres produits accessoires": {} + } + }, + "71-Subventions d\u2019exploitation": { + "711-Sur produits \u00e0 l\u2019exportation": {}, + "712-Sur produits \u00e0 l\u2019importation": {}, + "713-Sur produits de p\u00e9r\u00e9quation": {}, + "714-Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": {}, + "718-Autres subventions d\u2019exploitation": { + "7181-Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": {}, + "7182-Vers\u00e9es par les organismes internationaux": {}, + "7183-Vers\u00e9es par des tiers": {} + } + }, + "72-Production immobilis\u00e9e": { + "721-Immobilisations incorporelles": {}, + "722-Immobilisations corporelles": { + "7221-Immobilisations corporelles (hors actifs biologiques)": {}, + "7222-Immobilisations corporelles (actifs biologiques)": {} + }, + "724-Production auto-consomm\u00e9e": {}, + "726-Immobilisations financi\u00e8res": {} + }, + "73-Variations des stocks de biens et de services produits": { + "734-Variations des stocks de produits en cours": { + "7341-Produits en cours": {}, + "7342-Travaux en cours": {} + }, + "735-Variations des en-cours de services": { + "7351-\u00c9tudes en cours": {}, + "7352-Prestations de services en cours": {} + }, + "736-Variations des stocks de produits finis": {}, + "737-Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "7371-Produits interm\u00e9diaires": {}, + "7372-Produits r\u00e9siduels": {} + } + }, + "75-Autres produits": { + "751-Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": {}, + "752-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "7521-Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": {}, + "7525-B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "754-Produits des cessions courantes d\u2019immobilisations": { + "7541-Immobilisations incorporelles": {}, + "7542-Immobilisations corporelles": {} + }, + "756-Gains de change sur cr\u00e9ances et dettes commerciales": {}, + "758-Produits divers": { + "7581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "7582-Indemnit\u00e9s d\u2019assurances re\u00e7ues": {}, + "7588-Autres produits divers": {} + }, + "759-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "7591-Sur risques \u00e0 court terme": {}, + "7593-Sur stocks": {}, + "7594-Sur cr\u00e9ances": {}, + "7598-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": {} + } + }, + "77-Revenus financiers et produits assimil\u00e9s": { + "771-Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "7712-Int\u00e9r\u00eats de pr\u00eats": {}, + "7713-Int\u00e9r\u00eats sur cr\u00e9ances diverses": {} + }, + "772-Revenus de participations et autres titres immobilis\u00e9s": { + "7721-Revenus des titres de participation": {}, + "7722-Revenus autres titres immobilis\u00e9s": {} + }, + "773-Escomptes obtenus": {}, + "774-Revenus de placement": { + "7745-Revenus des obligations": {}, + "7746-Revenus des titres de placement": {} + }, + "775-Int\u00e9r\u00eats dans loyers de location acquisition": {}, + "776-Gains de change financiers": {}, + "777-Gains sur cessions de titres de placement": {}, + "778-Gains sur risques financiers": { + "7781-Sur rentes viag\u00e8res": {}, + "7782-Sur op\u00e9rations financi\u00e8res": {}, + "7784-Sur instruments de tr\u00e9sorerie": {} + }, + "779-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "7791-Sur risques financiers": {}, + "7795-Sur titres de placement": {}, + "7798-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "78-Transferts de charges": { + "781-Transferts de charges d\u2019exploitation": {}, + "787-Transferts de charges financi\u00e8res": {} + }, + "79-Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "791-Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "7911-Pour risques et charges": {}, + "7913-Des immobilisations incorporelles": {}, + "7914-Des immobilisations corporelles": {} + }, + "797-Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "7971-Pour risques et charges": {}, + "7972-Des immobilisations financi\u00e8res": {} + }, + "798-Reprises d\u2019amortissements": {}, + "799-Reprises de subventions d\u2019investissement": {} + }, + "root_type": "Income" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "81-Valeurs comptables des cessions d\u2019immobilisations": { + "811-Immobilisations incorporelles": {}, + "812-Immobilisations corporelles": {}, + "816-Immobilisations financi\u00e8res": {} + }, + "83-Charges hors activit\u00e9s ordinaires": { + "831-Charges HAO constat\u00e9es": {}, + "833-Charges li\u00e9es aux op\u00e9rations de restructuration": {}, + "834-Pertes sur cr\u00e9ances HAO": {}, + "835-Dons et lib\u00e9ralit\u00e9s accord\u00e9s": {}, + "836-Abandons de cr\u00e9ances consentis": {}, + "837-Charges li\u00e9es aux op\u00e9rations de liquidation": {}, + "839-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "85-Dotations hors activit\u00e9s ordinaires": { + "851-Dotations aux provisions r\u00e9glement\u00e9es": {}, + "852-Dotations aux amortissements HAO": {}, + "853-Dotations aux d\u00e9pr\u00e9ciations HAO": {}, + "854-Dotations aux provisions pour risques et charges HAO": {}, + "858-Autres dotations HAO": {} + }, + "87-Participation des travailleurs": { + "871-Participation l\u00e9gale aux b\u00e9n\u00e9fices": {}, + "874-Participation contractuelle aux b\u00e9n\u00e9fices": {}, + "878-Autres participations": {} + }, + "89-Imp\u00f4ts sur le r\u00e9sultat": { + "891-Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "8911-Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": {}, + "8912-Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": {}, + "8913-Activit\u00e9s exerc\u00e9es hors R\u00e9gion": {} + }, + "892-Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": {}, + "895-Imp\u00f4t minimum forfaitaire IMF": {}, + "899-D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "8991-D\u00e9gr\u00e8vements": {}, + "8994-Annulations pour pertes r\u00e9troactives": {} + } + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "82-Produits des cessions d\u2019immobilisations": { + "821-Immobilisations incorporelles": {}, + "822-Immobilisations corporelles": {}, + "826-Immobilisations financi\u00e8res": {} + }, + "84-Produits hors activit\u00e9s ordinaires": { + "841-Produits HAO constat\u00e9s": {}, + "843-Produits li\u00e9s aux op\u00e9rations de restructuration": {}, + "844-Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": {}, + "845-Dons et lib\u00e9ralit\u00e9s obtenus": {}, + "846-Abandons de cr\u00e9ances obtenus": {}, + "847-Produits li\u00e9s aux op\u00e9rations de liquidation": {}, + "848-Transferts de charges HAO": {}, + "849-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "86-Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "861-Reprises de provisions r\u00e9glement\u00e9es": {}, + "862-Reprises d\u2019amortissements HAO": {}, + "863-Reprises de d\u00e9pr\u00e9ciations HAO": {}, + "864-Reprises de provisions pour risques et charges HAO": {}, + "868-Autres reprises HAO": {} + }, + "88-Subventions d\u2019\u00e9quilibre": { + "881-\u00c9tat": {}, + "884-Collectivit\u00e9s publiques": {}, + "886-Groupe": {}, + "888-Autres": {} + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/km_plan_comptable_avec_code.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/km_plan_comptable_avec_code.json new file mode 100644 index 00000000000..38f26d5ee4e --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/km_plan_comptable_avec_code.json @@ -0,0 +1,4208 @@ +{ + "country_code": "km", + "name": "Syscohada - Plan Comptable avec code", + "tree": { + "Comptes de ressources durables": { + "Capital": { + "Capital social": { + "Capital souscrit, non appel\u00e9": { + "account_number": "1011" + }, + "Capital souscrit, appel\u00e9, non vers\u00e9": { + "account_number": "1012" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, non amorti": { + "account_number": "1013" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, amorti": { + "account_number": "1014" + }, + "Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": { + "account_number": "1018" + }, + "account_number": "101" + }, + "Capital par dotation": { + "Dotation initiale": { + "account_number": "1021" + }, + "Dotations compl\u00e9mentaires": { + "account_number": "1022" + }, + "Autres dotations": { + "account_number": "1028" + }, + "account_number": "102" + }, + "Capital personnel": { + "account_number": "103" + }, + "Compte de l\u2019exploitant": { + "Apports temporaires": { + "account_number": "1041" + }, + "Op\u00e9rations courantes": { + "account_number": "1042" + }, + "R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": { + "account_number": "1043" + }, + "Pr\u00e9l\u00e8vements d\u2019autoconsommation": { + "account_number": "1047" + }, + "Autres pr\u00e9l\u00e8vements": { + "account_number": "1048" + }, + "account_number": "104" + }, + "Primes li\u00e9es au capital social": { + "Primes d\u2019\u00e9mission": { + "account_number": "1051" + }, + "Primes d\u2019apport": { + "account_number": "1052" + }, + "Primes de fusion": { + "account_number": "1053" + }, + "Primes de conversion": { + "account_number": "1054" + }, + "Autres primes": { + "account_number": "1058" + }, + "account_number": "105" + }, + "\u00c9carts de r\u00e9\u00e9valuation": { + "\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": { + "account_number": "1061" + }, + "\u00c9carts de r\u00e9\u00e9valuation libre": { + "account_number": "1062" + }, + "account_number": "106" + }, + "Apporteurs, capital souscrit, non appel\u00e9": { + "account_number": "109" + }, + "account_number": "10" + }, + "R\u00e9serves": { + "R\u00e9serve l\u00e9gale": { + "account_number": "111" + }, + "R\u00e9serves statutaires ou contractuelles": { + "account_number": "112" + }, + "R\u00e9serves r\u00e9glement\u00e9es": { + "R\u00e9serves de plus-values nettes \u00e0 long terme": { + "account_number": "1131" + }, + "R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "1132" + }, + "R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": { + "account_number": "1133" + }, + "R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": { + "account_number": "1134" + }, + "Autres r\u00e9serves r\u00e9glement\u00e9es": { + "account_number": "1135" + }, + "account_number": "113" + }, + "Autres r\u00e9serves": { + "R\u00e9serves facultatives": { + "account_number": "1181" + }, + "R\u00e9serves diverses": { + "account_number": "1188" + }, + "account_number": "118" + }, + "account_number": "11" + }, + "Report \u00e0 nouveau": { + "Report \u00e0 nouveau cr\u00e9diteur": { + "account_number": "121" + }, + "Report \u00e0 nouveau d\u00e9biteur": { + "Perte nette \u00e0 reporter": { + "account_number": "1291" + }, + "Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": { + "account_number": "1292" + }, + "account_number": "129" + }, + "account_number": "12" + }, + "R\u00e9sultat net de l\u2019exercice": { + "R\u00e9sultat en instance d\u2019affectation": { + "R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": { + "account_number": "1301" + }, + "R\u00e9sultat en instance d\u2019affectation : perte": { + "account_number": "1309" + }, + "account_number": "130" + }, + "R\u00e9sultat net : b\u00e9n\u00e9fice": { + "account_number": "131" + }, + "Marge commerciale (MC)": { + "account_number": "132" + }, + "Valeur ajout\u00e9e (VA)": { + "account_number": "133" + }, + "Exc\u00e9dent brut d\u2019exploitation (EBE)": { + "account_number": "134" + }, + "R\u00e9sultat d\u2019exploitation (RE)": { + "account_number": "135" + }, + "R\u00e9sultat financier (RF)": { + "account_number": "136" + }, + "R\u00e9sultat des activit\u00e9s ordinaires (RAO)": { + "account_number": "137" + }, + "R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "R\u00e9sultat de fusion": { + "account_number": "1381" + }, + "R\u00e9sultat d\u2019apport partiel d\u2019actif": { + "account_number": "1382" + }, + "R\u00e9sultat de scission": { + "account_number": "1383" + }, + "R\u00e9sultat de liquidation": { + "account_number": "1384" + }, + "account_number": "138" + }, + "R\u00e9sultat net : perte": { + "account_number": "139" + }, + "account_number": "13" + }, + "Subventions d\u2019investissement": { + "Subventions d\u2019\u00e9quipement": { + "\u00c9tat": { + "account_number": "1411" + }, + "R\u00e9gions": { + "account_number": "1412" + }, + "D\u00e9partements": { + "account_number": "1413" + }, + "Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": { + "account_number": "1414" + }, + "Entit\u00e9s publiques ou mixtes": { + "account_number": "1415" + }, + "Entit\u00e9s et organismes priv\u00e9s": { + "account_number": "1416" + }, + "Organismes internationaux": { + "account_number": "1417" + }, + "Autres": { + "account_number": "1418" + }, + "account_number": "141" + }, + "Autres subventions d\u2019investissement": { + "account_number": "148" + }, + "account_number": "14" + }, + "Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "Amortissements d\u00e9rogatoires": { + "account_number": "151" + }, + "Plus-values de cession \u00e0 r\u00e9investir": { + "account_number": "152" + }, + "Fonds r\u00e9glement\u00e9s": { + "Fonds National": { + "account_number": "1531" + }, + "Pr\u00e9l\u00e8vement pour le Budget": { + "account_number": "1532" + }, + "account_number": "153" + }, + "Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": { + "account_number": "154" + }, + "Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "Reconstitution des gisements miniers et p\u00e9troliers": { + "account_number": "1551" + }, + "account_number": "155" + }, + "Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "Hausse de prix": { + "account_number": "1561" + }, + "Fluctuation des cours": { + "account_number": "1562" + }, + "account_number": "156" + }, + "Provisions pour investissement": { + "account_number": "157" + }, + "Autres provisions et fonds r\u00e9glement\u00e9s": { + "account_number": "158" + }, + "account_number": "15" + }, + "Emprunts et dettes assimil\u00e9es": { + "Emprunts obligataires": { + "Emprunts obligataires ordinaires": { + "account_number": "1611" + }, + "Emprunts obligataires convertibles en actions": { + "account_number": "1612" + }, + "Emprunts obligataires remboursables en actions": { + "account_number": "1613" + }, + "Autres emprunts obligataires": { + "account_number": "1618" + }, + "account_number": "161" + }, + "Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "162" + }, + "Avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "163" + }, + "Avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "164" + }, + "D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "D\u00e9p\u00f4ts": { + "account_number": "1651" + }, + "Cautionnements": { + "account_number": "1652" + }, + "account_number": "165" + }, + "Int\u00e9r\u00eats courus": { + "Sur emprunts obligataires": { + "account_number": "1661" + }, + "Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "1662" + }, + "Sur avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "1663" + }, + "Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "1664" + }, + "Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "account_number": "1665" + }, + "Sur avances assorties de conditions particuli\u00e8res": { + "account_number": "1667" + }, + "Sur autres emprunts et dettes": { + "account_number": "1668" + }, + "account_number": "166" + }, + "Avances assorties de conditions particuli\u00e8res": { + "Avances bloqu\u00e9es pour augmentation du capital": { + "account_number": "1671" + }, + "Avances conditionn\u00e9es par l\u2019\u00c9tat": { + "account_number": "1672" + }, + "Avances conditionn\u00e9es par les autres organismes africains": { + "account_number": "1673" + }, + "Avances conditionn\u00e9es par les organismes internationaux": { + "account_number": "1674" + }, + "account_number": "167" + }, + "Autres emprunts et dettes": { + "Rentes viag\u00e8res capitalis\u00e9es": { + "account_number": "1681" + }, + "Billets de fonds": { + "account_number": "1682" + }, + "Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": { + "account_number": "1683" + }, + "Emprunts participatifs": { + "account_number": "1684" + }, + "Participation des travailleurs aux b\u00e9n\u00e9fices": { + "account_number": "1685" + }, + "Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": { + "account_number": "1686" + }, + "account_number": "168" + }, + "account_number": "16" + }, + "Dettes de location acquisition": { + "Dettes de location acquisition / cr\u00e9dit bail immobilier": { + "account_number": "172" + }, + "Dettes de location acquisition / cr\u00e9dit bail mobilier": { + "account_number": "173" + }, + "Dettes de location acquisition / location de vente": { + "account_number": "174" + }, + "Int\u00e9r\u00eats courus": { + "Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "1762" + }, + "Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "1763" + }, + "Sur dettes de location acquisition / location-vente": { + "account_number": "1764" + }, + "Sur autres dettes de location acquisition": { + "account_number": "1768" + }, + "account_number": "176" + }, + "Autres dettes de location acquisition": { + "account_number": "178" + }, + "account_number": "17" + }, + "Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "Dettes li\u00e9es \u00e0 des participations": { + "Dettes li\u00e9es \u00e0 des participations (groupe)": { + "account_number": "1811" + }, + "Dettes li\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "1812" + }, + "account_number": "181" + }, + "Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "182" + }, + "Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": { + "account_number": "183" + }, + "Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "184" + }, + "Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "185" + }, + "Comptes de liaison charges": { + "account_number": "186" + }, + "Comptes de liaison produits": { + "account_number": "187" + }, + "Comptes de liaison des soci\u00e9t\u00e9s en participation": { + "account_number": "188" + }, + "account_number": "18" + }, + "Provisions pour risques et charges": { + "Provisions pour litiges": { + "account_number": "191" + }, + "Provisions pour garanties donn\u00e9es aux clients": { + "account_number": "192" + }, + "Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": { + "account_number": "193" + }, + "Provisions pour pertes de change": { + "account_number": "194" + }, + "Provisions pour imp\u00f4ts": { + "account_number": "195" + }, + "Provisions pour pensions et obligations similaires": { + "Provisions pour pensions et obligations similaires engagement de retraite": { + "account_number": "1961" + }, + "Actif du r\u00e9gime de retraite": { + "account_number": "1962" + }, + "account_number": "196" + }, + "Provisions pour restructuration": { + "account_number": "197" + }, + "Autres provisions pour risques et charges": { + "Provisions pour amendes et p\u00e9nalit\u00e9s": { + "account_number": "1981" + }, + "Provisions pour propre assureur": { + "account_number": "1983" + }, + "Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "1984" + }, + "Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": { + "account_number": "1985" + }, + "Provisions pour divers risques et charges": { + "account_number": "1988" + }, + "account_number": "198" + }, + "account_number": "19" + }, + "root_type": "Equity", + "account_number": "1" + }, + "Comptes d\u2019actif immobilis\u00e9": { + "Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "211" + }, + "Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "Brevets": { + "account_type": "Fixed Asset", + "account_number": "2121" + }, + "Licences": { + "account_type": "Fixed Asset", + "account_number": "2122" + }, + "Concessions de service public": { + "account_type": "Fixed Asset", + "account_number": "2123" + }, + "Autres concessions et droits similaires": { + "account_type": "Fixed Asset", + "account_number": "2128" + }, + "account_number": "212" + }, + "Logiciels et sites internet": { + "account_type": "Fixed Asset", + "Logiciels": { + "account_type": "Fixed Asset", + "account_number": "2131" + }, + "Sites internet": { + "account_type": "Fixed Asset", + "account_number": "2132" + }, + "account_number": "213" + }, + "Marques": { + "account_type": "Fixed Asset", + "account_number": "214" + }, + "Fonds commercial": { + "account_type": "Fixed Asset", + "account_number": "215" + }, + "Droit au bail": { + "account_type": "Fixed Asset", + "account_number": "216" + }, + "Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset", + "account_number": "217" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset", + "account_number": "2181" + }, + "Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset", + "account_number": "2182" + }, + "Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset", + "account_number": "2183" + }, + "Co\u00fbts des franchises": { + "account_type": "Fixed Asset", + "account_number": "2184" + }, + "Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset", + "account_number": "2188" + }, + "account_number": "218" + }, + "Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "2191" + }, + "Logiciels et internet": { + "account_type": "Fixed Asset", + "account_number": "2193" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "account_number": "2198" + }, + "account_number": "219" + }, + "account_number": "21" + }, + "Terrains": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset", + "account_number": "2211" + }, + "Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset", + "account_number": "2212" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2218" + }, + "account_number": "221" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset", + "account_number": "2221" + }, + "Autres terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2228" + }, + "account_number": "222" + }, + "Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset", + "account_number": "2231" + }, + "Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset", + "account_number": "2232" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2234" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2235" + }, + "Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "account_number": "2238" + }, + "account_number": "223" + }, + "Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset", + "account_number": "2241" + }, + "Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset", + "account_number": "2245" + }, + "Autres travaux": { + "account_type": "Fixed Asset", + "account_number": "2248" + }, + "account_number": "224" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "Carri\u00e8res": { + "account_type": "Fixed Asset", + "account_number": "2251" + }, + "account_number": "225" + }, + "Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "Parkings": { + "account_type": "Fixed Asset", + "account_number": "2261" + }, + "account_number": "226" + }, + "Terrains mis en concession": { + "account_type": "Fixed Asset", + "account_number": "227" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "Terrains immeubles de placement": { + "account_type": "Fixed Asset", + "account_number": "2281" + }, + "Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset", + "account_number": "2285" + }, + "Terrains de location acquisition": { + "account_type": "Fixed Asset", + "account_number": "2286" + }, + "Divers terrains": { + "account_type": "Fixed Asset", + "account_number": "2288" + }, + "account_number": "228" + }, + "Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "account_number": "2291" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2292" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "account_number": "2295" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2298" + }, + "account_number": "229" + }, + "account_number": "22" + }, + "B\u00e2timents, installations techniques et agencements": { + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "B\u00e2timents industriels": { + "account_number": "2311" + }, + "B\u00e2timents agricoles": { + "account_number": "2312" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2313" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2314" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2315" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2316" + }, + "account_number": "231" + }, + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "B\u00e2timents industriels": { + "account_number": "2321" + }, + "B\u00e2timents agricoles": { + "account_number": "2322" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2323" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2324" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2325" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2326" + }, + "account_number": "232" + }, + "Ouvrages d\u2019infrastructure": { + "Voies de terre": { + "account_number": "2331" + }, + "Voies de fer": { + "account_number": "2332" + }, + "Voies d\u2019eau": { + "account_number": "2333" + }, + "Barrages, Digues": { + "account_number": "2334" + }, + "Pistes d\u2019a\u00e9rodrome": { + "account_number": "2335" + }, + "Autres ouvrages d\u2019infrastructures": { + "account_number": "2338" + }, + "account_number": "233" + }, + "Am\u00e9nagements, agencements et installations techniques": { + "Installations complexes sp\u00e9cialis\u00e9es sur sol propre": { + "account_number": "2341" + }, + "Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": { + "account_number": "2342" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": { + "account_number": "2343" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": { + "account_number": "2344" + }, + "Am\u00e9nagements et agencements des b\u00e2timents": { + "account_number": "2345" + }, + "account_number": "234" + }, + "Am\u00e9nagements de bureaux": { + "Installations g\u00e9n\u00e9rales": { + "account_number": "2351" + }, + "Autres am\u00e9nagements de bureaux": { + "account_number": "2358" + }, + "account_number": "235" + }, + "B\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "237" + }, + "Autres installations et agencements": { + "account_number": "238" + }, + "B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "B\u00e2timents en cours": { + "account_number": "2391" + }, + "Installations en cours": { + "account_number": "2392" + }, + "Ouvrages d\u2019infrastructure en cours": { + "account_number": "2393" + }, + "Am\u00e9nagements et agencements et installations techniques en cours": { + "account_number": "2394" + }, + "Am\u00e9nagements de bureaux en cours": { + "account_number": "2395" + }, + "Autres installations et agencements en cours": { + "account_number": "2398" + }, + "account_number": "239" + }, + "account_number": "23" + }, + "Mat\u00e9riel, mobilier et actifs biologiques": { + "Mat\u00e9riel et outillage industriel et commercial": { + "Mat\u00e9riel industriel": { + "account_number": "2411" + }, + "Outillage industriel": { + "account_number": "2412" + }, + "Mat\u00e9riel commercial": { + "account_number": "2413" + }, + "Outillage commercial": { + "account_number": "2414" + }, + "Mat\u00e9riel & outillage industriel et commercial de location-acquisition": { + "account_number": "2416" + }, + "account_number": "241" + }, + "Mat\u00e9riel et outillage agricole": { + "Mat\u00e9riel agricole": { + "account_number": "2421" + }, + "Outillage agricole": { + "account_number": "2422" + }, + "Mat\u00e9riel & outillage agricole de location-acquisition": { + "account_number": "2426" + }, + "account_number": "242" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "243" + }, + "Mat\u00e9riel et mobilier": { + "Mat\u00e9riel de bureau": { + "account_number": "2441" + }, + "Mat\u00e9riel informatique": { + "account_number": "2442" + }, + "Mat\u00e9riel bureautique": { + "account_number": "2443" + }, + "Mobilier de bureau": { + "account_number": "2444" + }, + "Mat\u00e9riel et mobilier immeubles de placement": { + "account_number": "2445" + }, + "Mat\u00e9riel et mobilier de location acquisition": { + "account_number": "2446" + }, + "Mat\u00e9riel et mobilier des logements du personnel": { + "account_number": "2447" + }, + "account_number": "244" + }, + "Mat\u00e9riel de transport": { + "Mat\u00e9riel automobile": { + "account_number": "2451" + }, + "Mat\u00e9riel ferroviaire": { + "account_number": "2452" + }, + "Mat\u00e9riel fluvial, lagunaire": { + "account_number": "2453" + }, + "Mat\u00e9riel naval": { + "account_number": "2454" + }, + "Mat\u00e9riel a\u00e9rien": { + "account_number": "2455" + }, + "Mat\u00e9riel de transport de location-acquisition": { + "account_number": "2456" + }, + "Mat\u00e9riel hippomobile": { + "account_number": "2457" + }, + "Autres mat\u00e9riels de transport": { + "account_number": "2458" + }, + "account_number": "245" + }, + "Actifs biologiques": { + "Cheptel, animaux de trait": { + "account_number": "2461" + }, + "Cheptel, animaux reproducteurs": { + "account_number": "2462" + }, + "Animaux de garde": { + "account_number": "2463" + }, + "Plantations agricoles": { + "account_number": "2465" + }, + "Autres actifs biologiques": { + "account_number": "2468" + }, + "account_number": "246" + }, + "Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "Agencements et am\u00e9nagements du mat\u00e9riel": { + "account_number": "2471" + }, + "Agencements et am\u00e9nagements des actifs biologiques": { + "account_number": "2472" + }, + "Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2478" + }, + "account_number": "247" + }, + "Autres mat\u00e9riels et mobiliers": { + "Collections et \u0153uvres d\u2019art": { + "account_number": "2481" + }, + "Divers mat\u00e9riels mobiliers": { + "account_number": "2488" + }, + "account_number": "248" + }, + "Mat\u00e9riels et actifs biologiques en cours": { + "Mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2491" + }, + "Mat\u00e9riel et outillage agricole": { + "account_number": "2492" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2493" + }, + "Mat\u00e9riel et mobilier de bureau": { + "account_number": "2494" + }, + "Mat\u00e9riel de transport": { + "account_number": "2495" + }, + "Actifs biologiques": { + "account_number": "2496" + }, + "Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2497" + }, + "Autres mat\u00e9riels et actifs biologiques en cours": { + "account_number": "2498" + }, + "account_number": "249" + }, + "account_number": "24" + }, + "Avances et acomptes vers\u00e9s sur immobilisations": { + "Avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "251" + }, + "Avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "252" + }, + "account_number": "25" + }, + "Titres de participation": { + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "261" + }, + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "262" + }, + "Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "263" + }, + "Participations dans des organismes professionnels": { + "account_number": "265" + }, + "Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "266" + }, + "Autres titres de participation": { + "account_number": "268" + }, + "account_number": "26" + }, + "Autres immobilisations financi\u00e8res": { + "Pr\u00eats et cr\u00e9ances": { + "Pr\u00eats participatifs": { + "account_number": "2711" + }, + "Pr\u00eats aux associ\u00e9s": { + "account_number": "2712" + }, + "Billets de fonds": { + "account_number": "2713" + }, + "Titres pr\u00eat\u00e9s": { + "account_number": "2714" + }, + "Autres pr\u00eats et cr\u00e9ances": { + "account_number": "2718" + }, + "account_number": "271" + }, + "Pr\u00eats au personnel": { + "Pr\u00eats immobiliers": { + "account_number": "2721" + }, + "Pr\u00eats mobiliers et d\u2019installation": { + "account_number": "2722" + }, + "Autres pr\u00eats au personnel": { + "account_number": "2728" + }, + "account_number": "272" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "Retenues de garantie": { + "account_number": "2731" + }, + "Fonds r\u00e9glement\u00e9": { + "account_number": "2733" + }, + "Cr\u00e9ances sur le conc\u00e9dant": { + "account_number": "2734" + }, + "Autres cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2738" + }, + "account_number": "273" + }, + "Titres immobilis\u00e9s": { + "Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": { + "account_number": "2741" + }, + "Titres participatifs": { + "account_number": "2742" + }, + "Certificats d\u2019investissement": { + "account_number": "2743" + }, + "Parts de fonds commun de placement (FCP)": { + "account_number": "2744" + }, + "Obligations": { + "account_number": "2745" + }, + "Actions ou parts propres": { + "account_number": "2746" + }, + "Autres titres immobilis\u00e9s": { + "account_number": "2748" + }, + "account_number": "274" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "D\u00e9p\u00f4ts pour loyers d\u2019avance": { + "account_number": "2751" + }, + "D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": { + "account_number": "2752" + }, + "D\u00e9p\u00f4ts pour l\u2019eau": { + "account_number": "2753" + }, + "D\u00e9p\u00f4ts pour le gaz": { + "account_number": "2754" + }, + "D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": { + "account_number": "2755" + }, + "Cautionnements sur march\u00e9s publics": { + "account_number": "2756" + }, + "Cautionnements sur autres op\u00e9rations": { + "account_number": "2757" + }, + "Autres d\u00e9p\u00f4ts et cautionnements": { + "account_number": "2758" + }, + "account_number": "275" + }, + "Int\u00e9r\u00eats courus": { + "Pr\u00eats et cr\u00e9ances non commerciales": { + "account_number": "2761" + }, + "Pr\u00eats au personnel": { + "account_number": "2762" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2763" + }, + "Titres immobilis\u00e9s": { + "account_number": "2764" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2765" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "account_number": "2767" + }, + "Immobilisations financi\u00e8res diverses": { + "account_number": "2768" + }, + "account_number": "276" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": { + "account_number": "2771" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "2772" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "2773" + }, + "Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "2774" + }, + "account_number": "277" + }, + "Immobilisations financi\u00e8res diverses": { + "Cr\u00e9ances diverses groupe": { + "account_number": "2781" + }, + "Cr\u00e9ances diverses hors groupe": { + "account_number": "2782" + }, + "Banques d\u00e9p\u00f4ts \u00e0 terme": { + "account_number": "2784" + }, + "Or et m\u00e9taux pr\u00e9cieux": { + "account_number": "2785" + }, + "Autres immobilisations financi\u00e8res": { + "account_number": "2788" + }, + "account_number": "278" + }, + "account_number": "27" + }, + "Amortissements": { + "account_type": "Accumulated Depreciation", + "Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation", + "account_number": "2811" + }, + "Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation", + "account_number": "2812" + }, + "Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation", + "account_number": "2813" + }, + "Amortissements des marques": { + "account_type": "Accumulated Depreciation", + "account_number": "2814" + }, + "Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation", + "account_number": "2815" + }, + "Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation", + "account_number": "2816" + }, + "Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation", + "account_number": "2817" + }, + "Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation", + "account_number": "2818" + }, + "account_number": "281" + }, + "Amortissements des terrains": { + "Amortissements des travaux de mise en valeur des terrains": { + "account_number": "2824" + }, + "account_number": "282" + }, + "Amortissements des b\u00e2timents, installations techniques et agencements": { + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2831" + }, + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2832" + }, + "Amortissements des ouvrages d\u2019infrastructure": { + "account_number": "2833" + }, + "Amortissements des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2834" + }, + "Amortissements des am\u00e9nagements de bureaux": { + "account_number": "2835" + }, + "Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2837" + }, + "Amortissements des autres installations et agencements": { + "account_number": "2838" + }, + "account_number": "283" + }, + "Amortissements du mat\u00e9riel": { + "Amortissements du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2841" + }, + "Amortissements du mat\u00e9riel et outillage agricole": { + "account_number": "2842" + }, + "Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2843" + }, + "Amortissements du mat\u00e9riel et mobilier": { + "account_number": "2844" + }, + "Amortissements du mat\u00e9riel de transport": { + "account_number": "2845" + }, + "Amortissements des actifs biologiques": { + "account_number": "2846" + }, + "Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2847" + }, + "Amortissements des autres mat\u00e9riels": { + "account_number": "2848" + }, + "account_number": "284" + }, + "account_number": "28" + }, + "D\u00e9pr\u00e9ciations des immobilisations": { + "D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": { + "account_number": "2911" + }, + "D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": { + "account_number": "2912" + }, + "D\u00e9pr\u00e9ciations des logiciels et sites internet": { + "account_number": "2913" + }, + "D\u00e9pr\u00e9ciations des marques": { + "account_number": "2914" + }, + "D\u00e9pr\u00e9ciations du fonds commercial": { + "account_number": "2915" + }, + "D\u00e9pr\u00e9ciations du droit au bail": { + "account_number": "2916" + }, + "D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": { + "account_number": "2917" + }, + "D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": { + "account_number": "2918" + }, + "D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": { + "account_number": "2919" + }, + "account_number": "291" + }, + "D\u00e9pr\u00e9ciations des terrains": { + "D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": { + "account_number": "2921" + }, + "D\u00e9pr\u00e9ciations des terrains nus": { + "account_number": "2922" + }, + "D\u00e9pr\u00e9ciations des terrains b\u00e2tis": { + "account_number": "2923" + }, + "D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": { + "account_number": "2924" + }, + "D\u00e9pr\u00e9ciations des terrains de gisement": { + "account_number": "2925" + }, + "D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": { + "account_number": "2926" + }, + "D\u00e9pr\u00e9ciations des terrains mis en concession": { + "account_number": "2927" + }, + "D\u00e9pr\u00e9ciations des autres terrains": { + "account_number": "2928" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": { + "account_number": "2929" + }, + "account_number": "292" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2931" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2932" + }, + "D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": { + "account_number": "2933" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2934" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": { + "account_number": "2935" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2937" + }, + "D\u00e9pr\u00e9ciations des autres installations et agencements": { + "account_number": "2938" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": { + "account_number": "2939" + }, + "account_number": "293" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2941" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": { + "account_number": "2942" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2943" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": { + "account_number": "2944" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": { + "account_number": "2945" + }, + "D\u00e9pr\u00e9ciations des actifs biologiques": { + "account_number": "2946" + }, + "D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2947" + }, + "D\u00e9pr\u00e9ciations des autres mat\u00e9riels": { + "account_number": "2948" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": { + "account_number": "2949" + }, + "account_number": "294" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "2951" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "2952" + }, + "account_number": "295" + }, + "D\u00e9pr\u00e9ciations des titres de participation": { + "D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "2961" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "2962" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "2963" + }, + "D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": { + "account_number": "2965" + }, + "D\u00e9pr\u00e9ciations des parts dans des GIE": { + "account_number": "2966" + }, + "D\u00e9pr\u00e9ciations des autres titres de participation": { + "account_number": "2968" + }, + "account_number": "296" + }, + "D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": { + "account_number": "2971" + }, + "D\u00e9pr\u00e9ciations des pr\u00eats au personnel": { + "account_number": "2972" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2973" + }, + "D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": { + "account_number": "2974" + }, + "D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2975" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "account_number": "2977" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": { + "account_number": "2978" + }, + "account_number": "297" + }, + "account_number": "29" + }, + "root_type": "Asset", + "account_number": "2" + }, + "Comptes de Stocks": { + "Marchandises": { + "Marchandises A": { + "Marchandises A1": { + "account_number": "3111" + }, + "Marchandises A2": { + "account_number": "3112" + }, + "account_number": "311" + }, + "Marchandises B": { + "Marchandises B1": { + "account_number": "3121" + }, + "Marchandises B2": { + "account_number": "3122" + }, + "account_number": "312" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3131" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3132" + }, + "account_number": "313" + }, + "Marchandises hors activit\u00e9s ordinaires (HAO)": { + "account_number": "318" + }, + "account_number": "31" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Mati\u00e8res A": { + "account_number": "321" + }, + "Mati\u00e8res B": { + "account_number": "322" + }, + "Fournitures (A, B)": { + "account_number": "323" + }, + "account_number": "32" + }, + "Autres approvisionnements": { + "Mati\u00e8res consommables": { + "account_number": "331" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "332" + }, + "Fournitures de magasin": { + "account_number": "333" + }, + "Fournitures de bureau": { + "account_number": "334" + }, + "Emballages": { + "Emballages perdus": { + "account_number": "3351" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "3352" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "3353" + }, + "Autres emballages": { + "account_number": "3358" + }, + "account_number": "335" + }, + "Autres mati\u00e8res": { + "account_number": "338" + }, + "account_number": "33" + }, + "Produits en cours": { + "Produits en cours": { + "Produits en cours P1": { + "account_number": "3411" + }, + "Produits en cours P2": { + "account_number": "3412" + }, + "account_number": "341" + }, + "Travaux en cours": { + "Travaux en cours T1": { + "account_number": "3421" + }, + "Travaux en cours T2": { + "account_number": "3422" + }, + "account_number": "342" + }, + "Produits interm\u00e9diaires en cours": { + "Produits interm\u00e9diaires A": { + "account_number": "3431" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3432" + }, + "account_number": "343" + }, + "Produits r\u00e9siduels en cours": { + "Produits r\u00e9siduels A": { + "account_number": "3441" + }, + "Produits r\u00e9siduels B": { + "account_number": "3442" + }, + "account_number": "344" + }, + "Actifs biologiques en cours": { + "Animaux": { + "account_number": "3451" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3452" + }, + "account_number": "345" + }, + "account_number": "34" + }, + "Services en cours": { + "\u00c9tudes en cours": { + "\u00c9tudes en cours E1": { + "account_number": "3511" + }, + "\u00c9tudes en cours E2": { + "account_number": "3512" + }, + "account_number": "351" + }, + "Prestations de services en cours": { + "Prestations de services S1": { + "account_number": "3521" + }, + "Prestations de services S2": { + "account_number": "3522" + } + }, + "account_number": "35" + }, + "Produits finis": { + "Produits finis A": { + "account_number": "361" + }, + "Produits finis B": { + "account_number": "362" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3631" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3632" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3638" + }, + "account_number": "363" + }, + "account_number": "36" + }, + "Produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "Produits interm\u00e9diaires A": { + "account_number": "3711" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3712" + }, + "account_number": "371" + }, + "Produits r\u00e9siduels": { + "D\u00e9chets": { + "account_number": "3721" + }, + "Rebuts": { + "account_number": "3722" + }, + "Mati\u00e8res de R\u00e9cup\u00e9ration": { + "account_number": "3723" + }, + "account_number": "372" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3731" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3732" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3738" + }, + "account_number": "373" + }, + "account_number": "37" + }, + "Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "Marchandises en cours de route": { + "account_number": "381" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": { + "account_number": "382" + }, + "Autres approvisionnements en cours de route": { + "account_number": "383" + }, + "Produits finis en cours de route": { + "account_number": "386" + }, + "Stock en consignation ou en d\u00e9p\u00f4t": { + "Stock en consignation": { + "account_number": "3871" + }, + "Stock en d\u00e9p\u00f4t": { + "account_number": "3872" + }, + "account_number": "387" + }, + "Stock provenant d\u2019immobilisations mises hors service ou au rebut": { + "account_number": "388" + }, + "account_number": "38" + }, + "D\u00e9pr\u00e9ciations des stocks et encours de production": { + "D\u00e9pr\u00e9ciations des stocks de marchandises": { + "account_number": "391" + }, + "D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "392" + }, + "D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": { + "account_number": "393" + }, + "D\u00e9pr\u00e9ciations des productions en cours": { + "account_number": "394" + }, + "D\u00e9pr\u00e9ciations des services en cours": { + "account_number": "395" + }, + "D\u00e9pr\u00e9ciations des stocks de produits finis": { + "account_number": "396" + }, + "D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "account_number": "397" + }, + "D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_number": "398" + }, + "account_number": "39" + }, + "root_type": "Asset", + "account_number": "3" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "Fournisseurs d\u00e9biteurs": { + "Fournisseurs Avances et acomptes vers\u00e9s": { + "account_number": "4091" + }, + "Fournisseurs Groupe avances et acomptes vers\u00e9s": { + "account_number": "4092" + }, + "Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": { + "account_number": "4093" + }, + "Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": { + "account_number": "4094" + }, + "Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": { + "account_number": "4098" + }, + "account_number": "409" + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "Clients": { + "Clients": { + "account_type": "Receivable", + "account_number": "4111" + }, + "Clients groupe": { + "account_type": "Receivable", + "account_number": "4112" + }, + "Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable", + "account_number": "4114" + }, + "Clients, organismes internationaux": { + "account_type": "Receivable", + "account_number": "4115" + }, + "Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable", + "account_number": "4116" + }, + "Client, retenues de garantie": { + "account_type": "Receivable", + "account_number": "4117" + }, + "Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable", + "account_number": "4118" + }, + "account_type": "Receivable", + "account_number": "411" + }, + "Clients, effets \u00e0 recevoir en portefeuille": { + "Clients, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4121" + }, + "Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4122" + }, + "\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4124" + }, + "Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4125" + }, + "account_type": "Receivable", + "account_number": "412" + }, + "Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4131" + }, + "Clients, effets impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4132" + }, + "Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4133" + }, + "Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4138" + }, + "account_type": "Receivable", + "account_number": "413" + }, + "Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4141" + }, + "Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4142" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4146" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4147" + }, + "account_type": "Receivable", + "account_number": "414" + }, + "Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable", + "account_number": "415" + }, + "Cr\u00e9ances clients litigieuses ou douteuses": { + "Cr\u00e9ances litigieuses": { + "account_type": "Receivable", + "account_number": "4161" + }, + "Cr\u00e9ances douteuses": { + "account_type": "Receivable", + "account_number": "4162" + }, + "account_type": "Receivable", + "account_number": "416" + }, + "Clients, produits \u00e0 recevoir": { + "Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable", + "account_number": "4181" + }, + "Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable", + "account_number": "4186" + }, + "account_type": "Receivable", + "account_number": "418" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "Personnel, avances et acomptes": { + "Personnel, avances": { + "account_number": "4211" + }, + "Personnel, acomptes": { + "account_number": "4212" + }, + "Frais avanc\u00e9s et fournitures au personnel": { + "account_number": "4213" + }, + "account_number": "421" + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "Prestations familiales": { + "account_number": "4311" + }, + "Accidents de travail": { + "account_number": "4312" + }, + "Caisse de retraite obligatoire": { + "account_number": "4313" + }, + "Caisse de retraite facultative": { + "account_number": "4314" + }, + "Autres cotisations sociales": { + "account_number": "4318" + } + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "Mutuelle": { + "account_number": "4331" + }, + "Assurances retraite": { + "account_number": "4332" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "4333" + } + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Produits \u00e0 recevoir": { + "account_number": "4387" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "\u00c9tat, TVA factur\u00e9e": { + "TVA factur\u00e9e sur ventes": { + "account_number": "4431" + }, + "TVA factur\u00e9e sur prestations de services": { + "account_number": "4432" + }, + "TVA factur\u00e9e sur travaux": { + "account_number": "4433" + }, + "TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": { + "account_number": "4434" + }, + "TVA sur factures \u00e0 \u00e9tablir": { + "account_number": "4435" + }, + "account_number": "443" + }, + "\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "TVA r\u00e9cup\u00e9rable sur immobilisations": { + "account_number": "4451" + }, + "TVA r\u00e9cup\u00e9rable sur achats": { + "account_number": "4452" + }, + "TVA r\u00e9cup\u00e9rable sur transport": { + "account_number": "4453" + }, + "TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": { + "account_number": "4454" + }, + "TVA r\u00e9cup\u00e9rable sur factures non parvenues": { + "account_number": "4455" + }, + "TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": { + "account_number": "4456" + }, + "account_number": "445" + }, + "\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges \u00e0 payer": { + "account_number": "4486" + }, + "Produits \u00e0 recevoir": { + "account_number": "4487" + }, + "account_number": "448" + }, + "\u00c9tat, cr\u00e9ances et dettes diverses": { + "\u00c9tat, obligations cautionn\u00e9es": { + "account_number": "4491" + }, + "\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": { + "account_number": "4492" + }, + "\u00c9tat, fonds de dotation \u00e0 recevoir": { + "account_number": "4493" + }, + "\u00c9tat, subventions investissement \u00e0 recevoir": { + "account_number": "4494" + }, + "\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": { + "account_number": "4495" + }, + "\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": { + "account_number": "4496" + }, + "\u00c9tat, avances sur subventions": { + "account_number": "4497" + }, + "\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": { + "account_number": "4499" + }, + "account_number": "449" + } + }, + "45-Organismes internationaux (ACTIF)": { + "Op\u00e9rations avec les organismes africains": { + "account_number": "451" + }, + "Op\u00e9rations avec les autres organismes internationaux": { + "account_number": "452" + }, + "Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "Organismes internationaux, fonds de dotation \u00e0 recevoir": { + "account_number": "4581" + }, + "Organismes internationaux, subventions \u00e0 recevoir": { + "account_number": "4582" + }, + "account_number": "458" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "Apporteurs, capital appel\u00e9, non vers\u00e9": { + "account_number": "4613" + }, + "Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": { + "account_number": "4614" + }, + "Apporteurs, titres \u00e0 \u00e9changer": { + "account_number": "4618" + } + }, + "Apporteurs, restant d\u00fb sur capital appel\u00e9": { + "account_number": "467" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4721" + }, + "Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": { + "account_number": "4726" + } + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "Mandants": { + "account_number": "4731" + }, + "Mandataires": { + "account_number": "4732" + }, + "Commettants": { + "account_number": "4733" + }, + "Commissionnaires": { + "account_number": "4734" + }, + "\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": { + "account_number": "4739" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "Compte de r\u00e9partition p\u00e9riodique des produits": { + "account_number": "4747" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "Compte actif": { + "account_type": "Temporary", + "account_number": "4751" + } + }, + "Charges constat\u00e9es d\u2019avance": { + "account_number": "476" + }, + "478-\u00c9carts de conversion actif": { + "Diminution des cr\u00e9ances d\u2019exploitation": { + "account_number": "4781" + }, + "Diminution des cr\u00e9ances financi\u00e8res": { + "account_number": "4782" + }, + "Augmentation des dettes d\u2019exploitation": { + "account_number": "4783" + }, + "Augmentation des dettes financi\u00e8res": { + "account_number": "4784" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4786" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4788" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "En compte, immobilisations incorporelles": { + "account_number": "4851" + }, + "En compte, immobilisations corporelles": { + "account_number": "4852" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_number": "4853" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_number": "4854" + }, + "Effets escompt\u00e9s non \u00e9chus": { + "account_number": "4855" + }, + "Retenues de garantie": { + "account_number": "4857" + }, + "Factures \u00e0 \u00e9tablir": { + "account_number": "4858" + }, + "account_number": "485" + }, + "Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": { + "account_number": "488" + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "D\u00e9pr\u00e9ciations des comptes clients": { + "Cr\u00e9ances litigieuses": { + "account_number": "4911" + }, + "Cr\u00e9ances douteuses": { + "account_number": "4912" + }, + "account_number": "491" + }, + "D\u00e9pr\u00e9ciations des comptes organismes internationaux": { + "account_number": "495" + }, + "D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "Associ\u00e9s, comptes courants": { + "account_number": "4962" + }, + "Associ\u00e9s, op\u00e9rations faites en commun": { + "account_number": "4963" + }, + "Groupe, comptes courants": { + "account_number": "4966" + }, + "account_number": "496" + }, + "D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": { + "account_number": "497" + }, + "D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "account_number": "4985" + }, + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4986" + }, + "Autres cr\u00e9ances HAO": { + "account_number": "4988" + }, + "account_number": "498" + }, + "Provisions pour risques \u00e0 court terme": { + "Sur op\u00e9rations d\u2019exploitation": { + "account_number": "4991" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "4997" + }, + "Sur op\u00e9rations HAO": { + "account_number": "4998" + }, + "account_number": "499" + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "Fournisseurs, dettes en compte": { + "Fournisseurs": { + "account_type": "Payable", + "account_number": "4011" + }, + "Fournisseurs groupe": { + "account_type": "Payable", + "account_number": "4012" + }, + "Fournisseurs sous-traitants": { + "account_type": "Payable", + "account_number": "4013" + }, + "Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable", + "account_number": "4016" + }, + "Fournisseur, retenues de garantie": { + "account_type": "Payable", + "account_number": "4017" + }, + "account_type": "Payable", + "account_number": "401" + }, + "Fournisseurs, effets \u00e0 payer": { + "Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4021" + }, + "Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4022" + }, + "Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4023" + }, + "account_type": "Payable", + "account_number": "402" + }, + "Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4041" + }, + "Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4042" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4046" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4047" + }, + "account_type": "Payable", + "account_number": "404" + }, + "Fournisseurs, factures non parvenues": { + "Fournisseurs": { + "account_type": "Stock Received But Not Billed", + "account_number": "4081" + }, + "Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed", + "account_number": "4082" + }, + "Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed", + "account_number": "4083" + }, + "Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed", + "account_number": "4086" + }, + "account_type": "Stock Received But Not Billed", + "account_number": "408" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "Clients cr\u00e9diteurs": { + "Clients, avances et acomptes re\u00e7us": { + "account_number": "4191" + }, + "Clients groupe, avances et acomptes re\u00e7us": { + "account_number": "4192" + }, + "Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": { + "account_number": "4194" + }, + "Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": { + "account_number": "4198" + }, + "account_number": "419" + } + }, + "42-Personnel (PASSIF)": { + "Personnel, r\u00e9mun\u00e9rations dues": { + "account_number": "422" + }, + "Personnel, oppositions, saisies-arr\u00eats": { + "Personnel, oppositions": { + "account_number": "4231" + }, + "Personnel, saisies-arr\u00eats": { + "account_number": "4232" + }, + "Personnel, avis \u00e0 tiers d\u00e9tenteur": { + "account_number": "4233" + }, + "account_number": "423" + }, + "Personnel, \u0153uvres sociales internes": { + "Assistance m\u00e9dicale": { + "account_number": "4241" + }, + "Allocations familiales": { + "account_number": "4242" + }, + "Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": { + "account_number": "4245" + }, + "Autres \u0153uvres sociales internes": { + "account_number": "4248" + }, + "account_number": "424" + }, + "Repr\u00e9sentants du personnel": { + "D\u00e9l\u00e9gu\u00e9s du personnel": { + "account_number": "4251" + }, + "Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": { + "account_number": "4252" + }, + "Autres repr\u00e9sentants du personnel": { + "account_number": "4258" + }, + "account_number": "425" + }, + "Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "Participation aux b\u00e9n\u00e9fices": { + "account_number": "4261" + }, + "Participation au capital": { + "account_number": "4264" + }, + "account_number": "426" + }, + "Personnel d\u00e9p\u00f4ts": { + "account_number": "427" + }, + "Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": { + "account_number": "4281" + }, + "Autres charges \u00e0 payer": { + "account_number": "4286" + }, + "Produits \u00e0 recevoir": { + "account_number": "4287" + }, + "account_number": "428" + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges sociales sur gratifications \u00e0 payer": { + "account_number": "4381" + }, + "Charges sociales sur cong\u00e9s \u00e0 payer": { + "account_number": "4382" + }, + "Autres charges \u00e0 payer": { + "account_number": "4386" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": { + "account_number": "441" + }, + "\u00c9tat, autres imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes d\u2019\u00c9tat": { + "account_number": "4421" + }, + "Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": { + "account_number": "4422" + }, + "Imp\u00f4ts et taxes recouvrables sur des obligataires": { + "account_number": "4423" + }, + "Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": { + "account_number": "4424" + }, + "Droits de douane": { + "account_number": "4426" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "4428" + }, + "account_number": "442" + }, + "\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "\u00c9tat, TVA due": { + "account_number": "4441" + }, + "\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": { + "account_number": "4449" + }, + "account_number": "444" + }, + "\u00c9tat, autres taxes sur le chiffre d\u2019affaires": { + "account_number": "446" + }, + "\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": { + "account_number": "4471" + }, + "Imp\u00f4ts sur salaires": { + "account_number": "4472" + }, + "Contribution nationale": { + "account_number": "4473" + }, + "Contribution nationale de solidarit\u00e9": { + "account_number": "4474" + }, + "Autres imp\u00f4ts et contributions": { + "account_number": "4478" + }, + "account_number": "447" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "Apporteurs, apports en nature": { + "account_number": "4611" + }, + "Apporteurs, apports en num\u00e9raire": { + "account_number": "4612" + }, + "Apporteurs, versements re\u00e7us sur augmentation de capital": { + "account_number": "4615" + }, + "Apporteurs, versements anticip\u00e9s": { + "account_number": "4616" + }, + "Apporteurs d\u00e9faillants": { + "account_number": "4617" + }, + "Apporteurs, capital \u00e0 rembourser": { + "account_number": "4619" + } + }, + "462-Associ\u00e9s, comptes courants": { + "Principal": { + "account_number": "4621" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4626" + } + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "Op\u00e9rations courantes": { + "account_number": "4631" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4636" + } + }, + "Associ\u00e9s, dividendes \u00e0 payer": { + "account_number": "465" + }, + "Groupe, comptes courants": { + "account_number": "466" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "D\u00e9biteurs divers": { + "account_number": "4711" + }, + "Cr\u00e9diteurs divers": { + "account_number": "4712" + }, + "Obligataires": { + "account_number": "4713" + }, + "R\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "4715" + }, + "Compte d\u2019affacturage": { + "account_number": "4716" + }, + "D\u00e9biteurs divers retenues de garantie": { + "account_number": "4717" + }, + "Apport, compte de fusion et op\u00e9rations assimil\u00e9es": { + "account_number": "4718" + }, + "Bons de souscription d\u2019actions et d\u2019obligations": { + "account_number": "4719" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "Compte de r\u00e9partition p\u00e9riodique des charges": { + "account_number": "4746" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "Compte passif": { + "account_number": "4752" + } + }, + "Produits constat\u00e9s d\u2019avance": { + "account_number": "477" + }, + "479-\u00c9carts de conversion passif": { + "Augmentation des cr\u00e9ances d\u2019exploitation": { + "account_number": "4791" + }, + "Augmentation des cr\u00e9ances financi\u00e8res": { + "account_number": "4792" + }, + "Diminution des dettes d\u2019exploitation": { + "account_number": "4793" + }, + "Diminution des dettes financi\u00e8res": { + "account_number": "4794" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4797" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4798" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "Fournisseurs d\u2019investissements": { + "Immobilisations incorporelles": { + "account_number": "4811" + }, + "Immobilisations corporelles": { + "account_number": "4812" + }, + "Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": { + "account_number": "4813" + }, + "R\u00e9serve de propri\u00e9t\u00e9": { + "account_number": "4816" + }, + "Retenues de garantie": { + "account_number": "4817" + }, + "Factures non parvenues": { + "account_number": "4818" + }, + "account_number": "481" + }, + "Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "Immobilisations incorporelles": { + "account_number": "4821" + }, + "Immobilisations corporelles": { + "account_number": "4822" + }, + "account_number": "482" + }, + "Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "Produits": { + "account_number": "4887" + }, + "account_number": "484" + } + }, + "root_type": "Liability" + }, + "Comptes de tr\u00e9sorerie": { + "Titres de placement": { + "Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "Titres du Tr\u00e9sor \u00e0 court terme": { + "account_number": "5011" + }, + "Titres d\u2019organismes financiers": { + "account_number": "5012" + }, + "Bons de caisse \u00e0 court terme": { + "account_number": "5013" + }, + "Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": { + "account_number": "5016" + }, + "account_number": "501" + }, + "Actions": { + "Actions ou parts propres": { + "account_number": "5021" + }, + "Actions cot\u00e9es": { + "account_number": "5022" + }, + "Actions non cot\u00e9es": { + "account_number": "5023" + }, + "Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": { + "account_number": "5024" + }, + "Autres actions": { + "account_number": "5025" + }, + "Frais d\u2019acquisition des actions": { + "account_number": "5026" + }, + "account_number": "502" + }, + "Obligations": { + "Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": { + "account_number": "5031" + }, + "Obligations cot\u00e9es": { + "account_number": "5032" + }, + "Obligations non cot\u00e9es": { + "account_number": "5033" + }, + "Autres obligations": { + "account_number": "5035" + }, + "Frais d\u2019acquisition des obligations": { + "account_number": "5036" + }, + "account_number": "503" + }, + "Bons de souscription": { + "Bons de souscription d\u2019actions": { + "account_number": "5042" + }, + "Bons de souscription d\u2019obligations": { + "account_number": "5043" + }, + "account_number": "504" + }, + "Titres n\u00e9gociables hors r\u00e9gion": { + "account_number": "505" + }, + "Int\u00e9r\u00eats courus": { + "Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": { + "account_number": "5061" + }, + "Actions": { + "account_number": "5062" + }, + "Obligations": { + "account_number": "5063" + }, + "account_number": "506" + }, + "Autres titres de placement et cr\u00e9ances assimil\u00e9es": { + "account_number": "508" + }, + "account_number": "50" + }, + "Valeurs \u00e0 encaisser": { + "Effets \u00e0 encaisser": { + "account_number": "511" + }, + "Effets \u00e0 l\u2019encaissement": { + "account_number": "512" + }, + "Ch\u00e8ques \u00e0 encaisser": { + "account_number": "513" + }, + "Ch\u00e8ques \u00e0 l\u2019encaissement": { + "account_number": "514" + }, + "Cartes de cr\u00e9dit \u00e0 encaisser": { + "account_number": "515" + }, + "Autres valeurs \u00e0 l\u2019encaissement": { + "Warrants": { + "account_number": "5181" + }, + "Billets de fonds": { + "account_number": "5182" + }, + "Ch\u00e8ques de voyage": { + "account_number": "5185" + }, + "Coupons \u00e9chus": { + "account_number": "5186" + }, + "Int\u00e9r\u00eats \u00e9chus des obligations": { + "account_number": "5187" + }, + "account_number": "518" + }, + "account_number": "51" + }, + "Banques": { + "Banques locales": { + "Banques en monnaie nationale": { + "account_type": "Bank", + "account_number": "5211" + }, + "Banques en devises": { + "account_type": "Bank", + "account_number": "5215" + }, + "account_type": "Bank", + "account_number": "521" + }, + "Banques autres \u00c9tats r\u00e9gion": { + "account_number": "522" + }, + "Banques autres \u00c9tats zone mon\u00e9taire": { + "account_number": "523" + }, + "Banques hors zone mon\u00e9taire": { + "account_number": "524" + }, + "Banques d\u00e9p\u00f4t \u00e0 terme": { + "account_number": "525" + }, + "Banques, int\u00e9r\u00eats courus": { + "Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": { + "account_number": "5261" + }, + "Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": { + "account_number": "5267" + }, + "account_number": "526" + }, + "account_number": "52" + }, + "\u00c9tablissements financiers et assimil\u00e9s": { + "Ch\u00e8ques postaux": { + "account_number": "531" + }, + "Tr\u00e9sor": { + "account_number": "532" + }, + "Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": { + "account_number": "533" + }, + "\u00c9tablissements financiers, int\u00e9r\u00eats courus": { + "account_number": "536" + }, + "Autres organismes financiers": { + "account_number": "538" + }, + "account_number": "53" + }, + "Instruments de tr\u00e9sorerie": { + "Options de taux d\u2019int\u00e9r\u00eat": { + "account_number": "541" + }, + "Options de taux de change": { + "account_number": "542" + }, + "Options de taux boursiers": { + "account_number": "543" + }, + "Instruments de march\u00e9s \u00e0 terme": { + "account_number": "544" + }, + "Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": { + "account_number": "545" + }, + "account_number": "54" + }, + "Instruments de monnaie \u00e9lectronique": { + "Monnaie \u00e9lectronique carte carburant": { + "account_number": "551" + }, + "Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": { + "account_number": "552" + }, + "Monnaie \u00e9lectronique carte p\u00e9age": { + "account_number": "553" + }, + "Porte-monnaie \u00e9lectronique": { + "account_number": "554" + }, + "Autres instruments de monnaies \u00e9lectroniques": { + "account_number": "558" + }, + "account_number": "55" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "Cr\u00e9dits de tr\u00e9sorerie": { + "account_number": "561" + }, + "Escompte de cr\u00e9dits de campagne": { + "account_number": "564" + }, + "Escompte de cr\u00e9dits ordinaires": { + "account_number": "565" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": { + "account_number": "566" + }, + "account_number": "56" + }, + "Caisse": { + "Caisse si\u00e8ge social": { + "Caisse en monnaie nationale": { + "account_number": "5711" + }, + "Caisse en devises": { + "account_number": "5712" + }, + "account_number": "571" + }, + "Caisse succursale A": { + "En monnaie nationale": { + "account_number": "5721" + }, + "En devises": { + "account_number": "5722" + }, + "account_number": "572" + }, + "Caisse succursale B": { + "En monnaie nationale": { + "account_number": "5731" + }, + "En devises": { + "account_number": "5732" + }, + "account_number": "573" + }, + "account_number": "57" + }, + "R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "R\u00e9gies d\u2019avance": { + "account_number": "581" + }, + "Accr\u00e9ditifs": { + "account_number": "582" + }, + "Virements de fonds": { + "account_number": "585" + }, + "Autres virements internes": { + "account_number": "588" + }, + "account_number": "58" + }, + "D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "D\u00e9pr\u00e9ciations des titres de placement": { + "account_number": "590" + }, + "D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": { + "account_number": "591" + }, + "D\u00e9pr\u00e9ciations des comptes banques": { + "account_number": "592" + }, + "D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": { + "account_number": "593" + }, + "D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": { + "account_number": "594" + }, + "Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": { + "account_number": "599" + }, + "account_number": "59" + }, + "root_type": "Asset", + "account_number": "5" + }, + "Comptes de charges des activit\u00e9s ordinaires": { + "Achats et variations de stocks": { + "Achats de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "6011" + }, + "Hors R\u00e9gion": { + "account_number": "6012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6014" + }, + "Frais sur achats": { + "account_number": "6015" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6019" + }, + "account_number": "601" + }, + "Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Dans la R\u00e9gion": { + "account_number": "6021" + }, + "Hors R\u00e9gion": { + "account_number": "6022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6024" + }, + "Frais sur achats": { + "account_number": "6025" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6029" + }, + "account_number": "602" + }, + "Variations des stocks de biens achet\u00e9s": { + "Variations des stocks de marchandises": { + "account_number": "6031" + }, + "Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "6032" + }, + "Variations des stocks d\u2019autres approvisionnements": { + "account_number": "6033" + }, + "account_number": "603" + }, + "Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "Mati\u00e8res consommables": { + "account_number": "6041" + }, + "Mati\u00e8res combustibles": { + "account_number": "6042" + }, + "Produits d\u2019entretien": { + "account_number": "6043" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "6044" + }, + "Frais sur achat": { + "account_number": "6045" + }, + "Fournitures de magasin": { + "account_number": "6046" + }, + "Fournitures de bureau": { + "account_number": "6047" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6049" + }, + "account_number": "604" + }, + "Autres achats": { + "Fournitures non stockables Eau": { + "account_number": "6051" + }, + "Fournitures non stockables \u00c9lectricit\u00e9": { + "account_number": "6052" + }, + "Fournitures non stockables Autres \u00e9nergies": { + "account_number": "6053" + }, + "Fournitures d\u2019entretien non stockables": { + "account_number": "6054" + }, + "Fournitures de bureau non stockables": { + "account_number": "6055" + }, + "Achats de petit mat\u00e9riel et outillage": { + "account_number": "6056" + }, + "Achats d\u2019\u00e9tudes et prestations de services": { + "account_number": "6057" + }, + "Achats de travaux, mat\u00e9riels et \u00e9quipements": { + "account_number": "6058" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6059" + }, + "account_number": "605" + }, + "Achats d\u2019emballages": { + "Emballages perdus": { + "account_number": "6081" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "6082" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "6083" + }, + "Frais sur achats": { + "account_number": "6085" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6089" + }, + "account_number": "608" + }, + "account_number": "60" + }, + "Transports": { + "Transports sur ventes": { + "account_number": "612" + }, + "Transports pour le compte de tiers": { + "account_number": "613" + }, + "Transports du personnel": { + "account_number": "614" + }, + "Transports de plis": { + "account_number": "616" + }, + "Autres frais de transport": { + "Voyages et d\u00e9placements": { + "account_number": "6181" + }, + "Transports entre \u00e9tablissements ou chantiers": { + "account_number": "6182" + }, + "Transports administratifs": { + "account_number": "6183" + }, + "account_number": "618" + }, + "account_number": "61" + }, + "Services ext\u00e9rieurs": { + "Sous-traitance g\u00e9n\u00e9rale": { + "account_number": "621" + }, + "Locations, charges locatives": { + "Locations de terrains": { + "account_number": "6221" + }, + "Locations de b\u00e2timents": { + "account_number": "6222" + }, + "Locations de mat\u00e9riels et outillages": { + "account_number": "6223" + }, + "Malis sur emballages": { + "account_number": "6224" + }, + "Locations d\u2019emballages": { + "account_number": "6225" + }, + "Fermages et loyers du foncier": { + "account_number": "6226" + }, + "Locations et charges locatives diverses": { + "account_number": "6228" + }, + "account_number": "622" + }, + "Redevances de location acquisition": { + "Cr\u00e9dit-bail immobilier": { + "account_number": "6232" + }, + "Cr\u00e9dit-bail mobilier": { + "account_number": "6233" + }, + "Location-vente": { + "account_number": "6234" + }, + "Autres contrats de location acquisition": { + "account_number": "6238" + }, + "account_number": "623" + }, + "Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "Entretien et r\u00e9parations des biens immobiliers": { + "account_number": "6241" + }, + "Entretien et r\u00e9parations des biens mobiliers": { + "account_number": "6242" + }, + "Maintenance": { + "account_number": "6243" + }, + "Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "6244" + }, + "Autres entretiens et r\u00e9parations": { + "account_number": "6248" + }, + "account_number": "624" + }, + "Primes d\u2019assurance": { + "Assurances multirisques": { + "account_number": "6251" + }, + "Assurances mat\u00e9riel de transport": { + "account_number": "6252" + }, + "Assurances risques d\u2019exploitation": { + "account_number": "6253" + }, + "Assurances responsabilit\u00e9 du producteur": { + "account_number": "6254" + }, + "Assurances insolvabilit\u00e9 clients": { + "account_number": "6255" + }, + "Assurances transport sur ventes": { + "account_number": "6257" + }, + "Autres primes d\u2019assurances": { + "account_number": "6258" + }, + "account_number": "625" + }, + "\u00c9tudes, recherches et documentation": { + "\u00c9tudes et recherches": { + "account_number": "6261" + }, + "Documentation g\u00e9n\u00e9rale": { + "account_number": "6265" + }, + "Documentation technique": { + "account_number": "6266" + }, + "account_number": "626" + }, + "Publicit\u00e9, publications, relations publiques": { + "Annonces, insertions": { + "account_number": "6271" + }, + "Catalogues, imprim\u00e9s publicitaires": { + "account_number": "6272" + }, + "\u00c9chantillons": { + "account_number": "6273" + }, + "Foires et expositions": { + "account_number": "6274" + }, + "Publications": { + "account_number": "6275" + }, + "Cadeaux \u00e0 la client\u00e8le": { + "account_number": "6276" + }, + "Frais de colloques, s\u00e9minaires, conf\u00e9rences": { + "account_number": "6277" + }, + "Autres charges de publicit\u00e9 et relations publiques": { + "account_number": "6278" + }, + "account_number": "627" + }, + "Frais de t\u00e9l\u00e9communications": { + "Frais de t\u00e9l\u00e9phone": { + "account_number": "6281" + }, + "Frais de t\u00e9lex": { + "account_number": "6282" + }, + "Frais de t\u00e9l\u00e9copie": { + "account_number": "6283" + }, + "Autres frais de t\u00e9l\u00e9communications": { + "account_number": "6288" + }, + "account_number": "628" + }, + "account_number": "62" + }, + "Autres services ext\u00e9rieurs": { + "Frais bancaires": { + "Frais sur titres (vente, garde)": { + "account_number": "6311" + }, + "Frais sur effets": { + "account_number": "6312" + }, + "Location de coffres": { + "account_number": "6313" + }, + "Commissions d\u2019affacturage": { + "account_number": "6314" + }, + "Commissions sur cartes de cr\u00e9dit": { + "account_number": "6315" + }, + "Frais d\u2019\u00e9mission d\u2019emprunts": { + "account_number": "6316" + }, + "Frais sur instruments monnaie \u00e9lectronique": { + "account_number": "6317" + }, + "Autres frais bancaires": { + "account_number": "6318" + }, + "account_number": "631" + }, + "R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "Commissions et courtages sur ventes": { + "account_number": "6322" + }, + "Honoraires des professions r\u00e9glement\u00e9es": { + "account_number": "6324" + }, + "Frais d\u2019actes et de contentieux": { + "account_number": "6325" + }, + "R\u00e9mun\u00e9rations d\u2019affacturage": { + "account_number": "6326" + }, + "R\u00e9mun\u00e9rations des autres prestataires de services": { + "account_number": "6327" + }, + "Divers frais": { + "account_number": "6328" + }, + "account_number": "632" + }, + "Frais de formation du personnel": { + "account_number": "633" + }, + "Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "Redevances pour brevets, licences": { + "account_number": "6342" + }, + "Redevances pour logiciels": { + "account_number": "6343" + }, + "Redevances pour marques": { + "account_number": "6344" + }, + "Redevances pour sites internet": { + "account_number": "6345" + }, + "Redevances pour concessions, droits et valeurs similaires": { + "account_number": "6346" + }, + "account_number": "634" + }, + "Cotisations": { + "Cotisations": { + "account_number": "6351" + }, + "Concours divers": { + "account_number": "6358" + }, + "account_number": "635" + }, + "R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "Personnel int\u00e9rimaire": { + "account_number": "6371" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6372" + }, + "account_number": "637" + }, + "Autres charges externes": { + "Frais de recrutement du personnel": { + "account_number": "6381" + }, + "Frais de d\u00e9m\u00e9nagement": { + "account_number": "6382" + }, + "R\u00e9ceptions": { + "account_number": "6383" + }, + "Missions": { + "account_number": "6384" + }, + "Charges de copropri\u00e9t\u00e9": { + "account_number": "6385" + }, + "account_number": "638" + }, + "account_number": "63" + }, + "Imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes directs": { + "Imp\u00f4ts fonciers et taxes annexes": { + "account_number": "6411" + }, + "Patentes, licences et taxes annexes": { + "account_number": "6412" + }, + "Taxes sur appointements et salaires": { + "account_number": "6413" + }, + "Taxes d\u2019apprentissage": { + "account_number": "6414" + }, + "Formation professionnelle continue": { + "account_number": "6415" + }, + "Autres imp\u00f4ts et taxes directs": { + "account_number": "6418" + }, + "account_number": "641" + }, + "Imp\u00f4ts et taxes indirects": { + "account_number": "645" + }, + "Droits d\u2019enregistrement": { + "Droits de mutation": { + "account_number": "6461" + }, + "Droits de timbre": { + "account_number": "6462" + }, + "Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": { + "account_number": "6463" + }, + "Vignettes": { + "account_number": "6464" + }, + "Autres droits": { + "account_number": "6468" + }, + "account_number": "646" + }, + "P\u00e9nalit\u00e9s, amendes fiscales": { + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": { + "account_number": "6471" + }, + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": { + "account_number": "6472" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": { + "account_number": "6473" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": { + "account_number": "6474" + }, + "Autres p\u00e9nalit\u00e9s et amendes fiscales": { + "account_number": "6478" + }, + "account_number": "647" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "648" + }, + "account_number": "64" + }, + "Autres charges": { + "Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "Clients": { + "account_number": "6511" + }, + "Autres d\u00e9biteurs": { + "account_number": "6515" + }, + "account_number": "651" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "6521" + }, + "Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "6525" + }, + "account_number": "652" + }, + "Valeurs comptables des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "6541" + }, + "Immobilisations corporelles": { + "account_number": "6542" + }, + "account_number": "654" + }, + "Perte de change sur cr\u00e9ances et dettes commerciale": { + "account_number": "656" + }, + "P\u00e9nalit\u00e9s et amendes p\u00e9nales": { + "account_number": "657" + }, + "Charges diverses": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "6581" + }, + "Dons": { + "account_number": "6582" + }, + "M\u00e9c\u00e9nat": { + "account_number": "6583" + }, + "Autres charges diverses": { + "account_number": "6588" + }, + "account_number": "658" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "6591" + }, + "Sur stocks": { + "account_number": "6593" + }, + "Sur cr\u00e9ances": { + "account_number": "6594" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": { + "account_number": "6598" + }, + "account_number": "659" + }, + "account_number": "65" + }, + "Charges de personnel": { + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "Appointements salaires et commissions": { + "account_number": "6611" + }, + "Primes et gratifications": { + "account_number": "6612" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6613" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6614" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6615" + }, + "Suppl\u00e9ment familial": { + "account_number": "6616" + }, + "Avantages en nature": { + "account_number": "6617" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6618" + }, + "account_number": "661" + }, + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "Appointements salaires et commissions": { + "account_number": "6621" + }, + "Primes et gratifications": { + "account_number": "6622" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6623" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6624" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6625" + }, + "Suppl\u00e9ment familial": { + "account_number": "6626" + }, + "Avantages en nature": { + "account_number": "6627" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6628" + }, + "account_number": "662" + }, + "Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "Indemnit\u00e9s de logement": { + "account_number": "6631" + }, + "Indemnit\u00e9s de repr\u00e9sentation": { + "account_number": "6632" + }, + "Indemnit\u00e9s d\u2019expatriation": { + "account_number": "6633" + }, + "Indemnit\u00e9s de transport": { + "account_number": "6634" + }, + "Autres indemnit\u00e9s et avantages divers": { + "account_number": "6638" + }, + "account_number": "663" + }, + "Charges sociales": { + "Charges sociales sur r\u00e9mun\u00e9ration du personnel national": { + "account_number": "6641" + }, + "Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": { + "account_number": "6642" + }, + "account_number": "664" + }, + "R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "R\u00e9mun\u00e9ration du travail de l\u2019exploitant": { + "account_number": "6661" + }, + "Charges sociales": { + "account_number": "6662" + }, + "account_number": "666" + }, + "R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "Personnel int\u00e9rimaire": { + "account_number": "6671" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6672" + }, + "account_number": "667" + }, + "Autres charges sociales": { + "Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": { + "account_number": "6681" + }, + "Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": { + "account_number": "6682" + }, + "Versements et contributions aux autres \u0153uvres sociales": { + "account_number": "6683" + }, + "M\u00e9decine du travail et pharmacie": { + "account_number": "6684" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "6685" + }, + "Assurances retraite et fonds de pension": { + "account_number": "6686" + }, + "Majorations et p\u00e9nalit\u00e9s sociales": { + "account_number": "6687" + }, + "Charges sociales diverses": { + "account_number": "6688" + }, + "account_number": "668" + }, + "account_number": "66" + }, + "Frais financiers et charges assimil\u00e9es": { + "Int\u00e9r\u00eats des emprunts": { + "Emprunts obligataires": { + "account_number": "6711" + }, + "Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "6712" + }, + "Dettes li\u00e9es \u00e0 des participations": { + "account_number": "6713" + }, + "Primes de remboursement des obligations": { + "account_number": "6714" + }, + "account_number": "671" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "6722" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "6723" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": { + "account_number": "6724" + }, + "Int\u00e9r\u00eats dans loyers des autres locations acquisition": { + "account_number": "6728" + }, + "account_number": "672" + }, + "Escomptes accord\u00e9s": { + "account_number": "673" + }, + "Autres int\u00e9r\u00eats": { + "Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": { + "account_number": "6741" + }, + "Comptes courants bloqu\u00e9s": { + "account_number": "6742" + }, + "Int\u00e9r\u00eats sur obligations cautionn\u00e9es": { + "account_number": "6743" + }, + "Int\u00e9r\u00eats sur dettes commerciales": { + "account_number": "6744" + }, + "Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": { + "account_number": "6745" + }, + "Int\u00e9r\u00eats sur dettes diverses": { + "account_number": "6748" + }, + "account_number": "674" + }, + "Escomptes des effets de commerce": { + "account_number": "675" + }, + "Pertes de change financi\u00e8res": { + "account_number": "676" + }, + "Pertes sur titres de placement": { + "Pertes sur cessions de titres de placement": { + "account_number": "6771" + }, + "Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "6772" + }, + "account_number": "677" + }, + "Pertes et charges sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "6781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "6782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "6784" + }, + "account_number": "678" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "6791" + }, + "Sur titres de placement": { + "account_number": "6795" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "6798" + }, + "account_number": "679" + }, + "account_number": "67" + }, + "Dotations aux amortissements": { + "Dotations aux amortissements d\u2019exploitation": { + "Dotations aux amortissements des immobilisations incorporelles": { + "account_number": "6812" + }, + "Dotations aux amortissements des immobilisations corporelles": { + "account_number": "6813" + }, + "account_number": "681" + }, + "account_number": "68" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6911" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "account_number": "6913" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": { + "account_number": "6914" + }, + "account_number": "691" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6971" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": { + "account_number": "6972" + }, + "account_number": "697" + }, + "account_number": "69" + }, + "root_type": "Expense", + "account_number": "6" + }, + "Comptes de produits des activit\u00e9s ordinaires": { + "Ventes": { + "Ventes de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "7011" + }, + "Hors R\u00e9gion": { + "account_number": "7012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7014" + }, + "Sur internet": { + "account_number": "7015" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7019" + }, + "account_number": "701" + }, + "Ventes de produits finis": { + "Dans la R\u00e9gion": { + "account_number": "7021" + }, + "Hors R\u00e9gion": { + "account_number": "7022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7024" + }, + "Sur internet": { + "account_number": "7025" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7029" + }, + "account_number": "702" + }, + "Ventes de produits interm\u00e9diaires": { + "Dans la R\u00e9gion": { + "account_number": "7031" + }, + "Hors R\u00e9gion": { + "account_number": "7032" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7033" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7034" + }, + "Sur internet": { + "account_number": "7035" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7039" + }, + "account_number": "703" + }, + "Ventes de produits r\u00e9siduels": { + "Dans la R\u00e9gion": { + "account_number": "7041" + }, + "Hors R\u00e9gion": { + "account_number": "7042" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7043" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7044" + }, + "Sur internet": { + "account_number": "7045" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7049" + }, + "account_number": "704" + }, + "Travaux factur\u00e9s": { + "Dans la R\u00e9gion": { + "account_number": "7051" + }, + "Hors R\u00e9gion": { + "account_number": "7052" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7053" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7054" + }, + "Sur internet": { + "account_number": "7055" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7059" + }, + "account_number": "705" + }, + "Services vendus": { + "Dans la R\u00e9gion": { + "account_number": "7061" + }, + "Hors R\u00e9gion": { + "account_number": "7062" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7063" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7064" + }, + "Sur internet": { + "account_number": "7065" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7069" + }, + "account_number": "706" + }, + "Produits accessoires": { + "Ports, emballages perdus et autres frais factur\u00e9s": { + "account_number": "7071" + }, + "Commissions et courtages": { + "account_number": "7072" + }, + "Locations": { + "account_number": "7073" + }, + "Bonis sur reprises et cessions d\u2019emballages": { + "account_number": "7074" + }, + "Mise \u00e0 disposition de personnel": { + "account_number": "7075" + }, + "Redevances pour brevets, logiciels, marques et droits similaires": { + "account_number": "7076" + }, + "Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": { + "account_number": "7077" + }, + "Autres produits accessoires": { + "account_number": "7078" + }, + "account_number": "707" + }, + "account_number": "70" + }, + "Subventions d\u2019exploitation": { + "Sur produits \u00e0 l\u2019exportation": { + "account_number": "711" + }, + "Sur produits \u00e0 l\u2019importation": { + "account_number": "712" + }, + "Sur produits de p\u00e9r\u00e9quation": { + "account_number": "713" + }, + "Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": { + "account_number": "714" + }, + "Autres subventions d\u2019exploitation": { + "Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": { + "account_number": "7181" + }, + "Vers\u00e9es par les organismes internationaux": { + "account_number": "7182" + }, + "Vers\u00e9es par des tiers": { + "account_number": "7183" + }, + "account_number": "718" + }, + "account_number": "71" + }, + "Production immobilis\u00e9e": { + "Immobilisations incorporelles": { + "account_number": "721" + }, + "Immobilisations corporelles": { + "Immobilisations corporelles (hors actifs biologiques)": { + "account_number": "7221" + }, + "Immobilisations corporelles (actifs biologiques)": { + "account_number": "7222" + }, + "account_number": "722" + }, + "Production auto-consomm\u00e9e": { + "account_number": "724" + }, + "Immobilisations financi\u00e8res": { + "account_number": "726" + }, + "account_number": "72" + }, + "Variations des stocks de biens et de services produits": { + "Variations des stocks de produits en cours": { + "Produits en cours": { + "account_number": "7341" + }, + "Travaux en cours": { + "account_number": "7342" + }, + "account_number": "734" + }, + "Variations des en-cours de services": { + "\u00c9tudes en cours": { + "account_number": "7351" + }, + "Prestations de services en cours": { + "account_number": "7352" + }, + "account_number": "735" + }, + "Variations des stocks de produits finis": { + "account_number": "736" + }, + "Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "account_number": "7371" + }, + "Produits r\u00e9siduels": { + "account_number": "7372" + }, + "account_number": "737" + }, + "account_number": "73" + }, + "Autres produits": { + "Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "account_number": "751" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "7521" + }, + "B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "7525" + }, + "account_number": "752" + }, + "Produits des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "7541" + }, + "Immobilisations corporelles": { + "account_number": "7542" + }, + "account_number": "754" + }, + "Gains de change sur cr\u00e9ances et dettes commerciales": { + "account_number": "756" + }, + "Produits divers": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "7581" + }, + "Indemnit\u00e9s d\u2019assurances re\u00e7ues": { + "account_number": "7582" + }, + "Autres produits divers": { + "account_number": "7588" + }, + "account_number": "758" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "7591" + }, + "Sur stocks": { + "account_number": "7593" + }, + "Sur cr\u00e9ances": { + "account_number": "7594" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "account_number": "7598" + }, + "account_number": "759" + }, + "account_number": "75" + }, + "Revenus financiers et produits assimil\u00e9s": { + "Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "Int\u00e9r\u00eats de pr\u00eats": { + "account_number": "7712" + }, + "Int\u00e9r\u00eats sur cr\u00e9ances diverses": { + "account_number": "7713" + }, + "account_number": "771" + }, + "Revenus de participations et autres titres immobilis\u00e9s": { + "Revenus des titres de participation": { + "account_number": "7721" + }, + "Revenus autres titres immobilis\u00e9s": { + "account_number": "7722" + }, + "account_number": "772" + }, + "Escomptes obtenus": { + "account_number": "773" + }, + "Revenus de placement": { + "Revenus des obligations": { + "account_number": "7745" + }, + "Revenus des titres de placement": { + "account_number": "7746" + }, + "account_number": "774" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "account_number": "775" + }, + "Gains de change financiers": { + "account_number": "776" + }, + "Gains sur cessions de titres de placement": { + "account_number": "777" + }, + "Gains sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "7781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "7782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "7784" + }, + "account_number": "778" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "7791" + }, + "Sur titres de placement": { + "account_number": "7795" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "7798" + }, + "account_number": "779" + }, + "account_number": "77" + }, + "Transferts de charges": { + "Transferts de charges d\u2019exploitation": { + "account_number": "781" + }, + "Transferts de charges financi\u00e8res": { + "account_number": "787" + }, + "account_number": "78" + }, + "Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Pour risques et charges": { + "account_number": "7911" + }, + "Des immobilisations incorporelles": { + "account_number": "7913" + }, + "Des immobilisations corporelles": { + "account_number": "7914" + }, + "account_number": "791" + }, + "Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "Pour risques et charges": { + "account_number": "7971" + }, + "Des immobilisations financi\u00e8res": { + "account_number": "7972" + }, + "account_number": "797" + }, + "Reprises d\u2019amortissements": { + "account_number": "798" + }, + "Reprises de subventions d\u2019investissement": { + "account_number": "799" + }, + "account_number": "79" + }, + "root_type": "Income", + "account_number": "7" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "Valeurs comptables des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "811" + }, + "Immobilisations corporelles": { + "account_number": "812" + }, + "Immobilisations financi\u00e8res": { + "account_number": "816" + }, + "account_number": "81" + }, + "Charges hors activit\u00e9s ordinaires": { + "Charges HAO constat\u00e9es": { + "account_number": "831" + }, + "Charges li\u00e9es aux op\u00e9rations de restructuration": { + "account_number": "833" + }, + "Pertes sur cr\u00e9ances HAO": { + "account_number": "834" + }, + "Dons et lib\u00e9ralit\u00e9s accord\u00e9s": { + "account_number": "835" + }, + "Abandons de cr\u00e9ances consentis": { + "account_number": "836" + }, + "Charges li\u00e9es aux op\u00e9rations de liquidation": { + "account_number": "837" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "839" + }, + "account_number": "83" + }, + "Dotations hors activit\u00e9s ordinaires": { + "Dotations aux provisions r\u00e9glement\u00e9es": { + "account_number": "851" + }, + "Dotations aux amortissements HAO": { + "account_number": "852" + }, + "Dotations aux d\u00e9pr\u00e9ciations HAO": { + "account_number": "853" + }, + "Dotations aux provisions pour risques et charges HAO": { + "account_number": "854" + }, + "Autres dotations HAO": { + "account_number": "858" + }, + "account_number": "85" + }, + "Participation des travailleurs": { + "Participation l\u00e9gale aux b\u00e9n\u00e9fices": { + "account_number": "871" + }, + "Participation contractuelle aux b\u00e9n\u00e9fices": { + "account_number": "874" + }, + "Autres participations": { + "account_number": "878" + }, + "account_number": "87" + }, + "Imp\u00f4ts sur le r\u00e9sultat": { + "Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": { + "account_number": "8911" + }, + "Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": { + "account_number": "8912" + }, + "Activit\u00e9s exerc\u00e9es hors R\u00e9gion": { + "account_number": "8913" + }, + "account_number": "891" + }, + "Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "account_number": "892" + }, + "Imp\u00f4t minimum forfaitaire IMF": { + "account_number": "895" + }, + "D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "D\u00e9gr\u00e8vements": { + "account_number": "8991" + }, + "Annulations pour pertes r\u00e9troactives": { + "account_number": "8994" + }, + "account_number": "899" + }, + "account_number": "89" + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "Produits des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "821" + }, + "Immobilisations corporelles": { + "account_number": "822" + }, + "Immobilisations financi\u00e8res": { + "account_number": "826" + }, + "account_number": "82" + }, + "Produits hors activit\u00e9s ordinaires": { + "Produits HAO constat\u00e9s": { + "account_number": "841" + }, + "Produits li\u00e9s aux op\u00e9rations de restructuration": { + "account_number": "843" + }, + "Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": { + "account_number": "844" + }, + "Dons et lib\u00e9ralit\u00e9s obtenus": { + "account_number": "845" + }, + "Abandons de cr\u00e9ances obtenus": { + "account_number": "846" + }, + "Produits li\u00e9s aux op\u00e9rations de liquidation": { + "account_number": "847" + }, + "Transferts de charges HAO": { + "account_number": "848" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "849" + }, + "account_number": "84" + }, + "Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "Reprises de provisions r\u00e9glement\u00e9es": { + "account_number": "861" + }, + "Reprises d\u2019amortissements HAO": { + "account_number": "862" + }, + "Reprises de d\u00e9pr\u00e9ciations HAO": { + "account_number": "863" + }, + "Reprises de provisions pour risques et charges HAO": { + "account_number": "864" + }, + "Autres reprises HAO": { + "account_number": "868" + }, + "account_number": "86" + }, + "Subventions d\u2019\u00e9quilibre": { + "\u00c9tat": { + "account_number": "881" + }, + "Collectivit\u00e9s publiques": { + "account_number": "884" + }, + "Groupe": { + "account_number": "886" + }, + "Autres": { + "account_number": "888" + }, + "account_number": "88" + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/ml_plan_comptable.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/ml_plan_comptable.json new file mode 100644 index 00000000000..64c8377f949 --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/ml_plan_comptable.json @@ -0,0 +1,1919 @@ +{ + "country_code": "ml", + "name": "Syscohada - Plan Comptable", + "tree": { + "1-Comptes de ressources durables": { + "10-Capital": { + "101-Capital social": { + "1011-Capital souscrit, non appel\u00e9": {}, + "1012-Capital souscrit, appel\u00e9, non vers\u00e9": {}, + "1013-Capital souscrit, appel\u00e9, vers\u00e9, non amorti": {}, + "1014-Capital souscrit, appel\u00e9, vers\u00e9, amorti": {}, + "1018-Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": {} + }, + "102-Capital par dotation": { + "1021-Dotation initiale": {}, + "1022-Dotations compl\u00e9mentaires": {}, + "1028-Autres dotations": {} + }, + "103-Capital personnel": {}, + "104-Compte de l\u2019exploitant": { + "1041-Apports temporaires": {}, + "1042-Op\u00e9rations courantes": {}, + "1043-R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": {}, + "1047-Pr\u00e9l\u00e8vements d\u2019autoconsommation": {}, + "1048-Autres pr\u00e9l\u00e8vements": {} + }, + "105-Primes li\u00e9es au capital social": { + "1051-Primes d\u2019\u00e9mission": {}, + "1052-Primes d\u2019apport": {}, + "1053-Primes de fusion": {}, + "1054-Primes de conversion": {}, + "1058-Autres primes": {} + }, + "106-\u00c9carts de r\u00e9\u00e9valuation": { + "1061-\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": {}, + "1062-\u00c9carts de r\u00e9\u00e9valuation libre": {} + }, + "109-Apporteurs, capital souscrit, non appel\u00e9": {} + }, + "11-R\u00e9serves": { + "111-R\u00e9serve l\u00e9gale": {}, + "112-R\u00e9serves statutaires ou contractuelles": {}, + "113-R\u00e9serves r\u00e9glement\u00e9es": { + "1131-R\u00e9serves de plus-values nettes \u00e0 long terme": {}, + "1132-R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {}, + "1133-R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": {}, + "1134-R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": {}, + "1135-Autres r\u00e9serves r\u00e9glement\u00e9es": {} + }, + "118-Autres r\u00e9serves": { + "1181-R\u00e9serves facultatives": {}, + "1188-R\u00e9serves diverses": {} + } + }, + "12-Report \u00e0 nouveau": { + "121-Report \u00e0 nouveau cr\u00e9diteur": {}, + "129-Report \u00e0 nouveau d\u00e9biteur": { + "1291-Perte nette \u00e0 reporter": {}, + "1292-Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": {} + } + }, + "13-R\u00e9sultat net de l\u2019exercice": { + "130-R\u00e9sultat en instance d\u2019affectation": { + "1301-R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": {}, + "1309-R\u00e9sultat en instance d\u2019affectation : perte": {} + }, + "131-R\u00e9sultat net : b\u00e9n\u00e9fice": {}, + "132-Marge commerciale (MC)": {}, + "133-Valeur ajout\u00e9e (VA)": {}, + "134-Exc\u00e9dent brut d\u2019exploitation (EBE)": {}, + "135-R\u00e9sultat d\u2019exploitation (RE)": {}, + "136-R\u00e9sultat financier (RF)": {}, + "137-R\u00e9sultat des activit\u00e9s ordinaires (RAO)": {}, + "138-R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "1381-R\u00e9sultat de fusion": {}, + "1382-R\u00e9sultat d\u2019apport partiel d\u2019actif": {}, + "1383-R\u00e9sultat de scission": {}, + "1384-R\u00e9sultat de liquidation": {} + }, + "139-R\u00e9sultat net : perte": {} + }, + "14-Subventions d\u2019investissement": { + "141-Subventions d\u2019\u00e9quipement": { + "1411-\u00c9tat": {}, + "1412-R\u00e9gions": {}, + "1413-D\u00e9partements": {}, + "1414-Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": {}, + "1415-Entit\u00e9s publiques ou mixtes": {}, + "1416-Entit\u00e9s et organismes priv\u00e9s": {}, + "1417-Organismes internationaux": {}, + "1418-Autres": {} + }, + "148-Autres subventions d\u2019investissement": {} + }, + "15-Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "151-Amortissements d\u00e9rogatoires": {}, + "152-Plus-values de cession \u00e0 r\u00e9investir": {}, + "153-Fonds r\u00e9glement\u00e9s": { + "1531-Fonds National": {}, + "1532-Pr\u00e9l\u00e8vement pour le Budget": {} + }, + "154-Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": {}, + "155-Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "1551-Reconstitution des gisements miniers et p\u00e9troliers": {} + }, + "156-Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "1561-Hausse de prix": {}, + "1562-Fluctuation des cours": {} + }, + "157-Provisions pour investissement": {}, + "158-Autres provisions et fonds r\u00e9glement\u00e9s": {} + }, + "16-Emprunts et dettes assimil\u00e9es": { + "161-Emprunts obligataires": { + "1611-Emprunts obligataires ordinaires": {}, + "1612-Emprunts obligataires convertibles en actions": {}, + "1613-Emprunts obligataires remboursables en actions": {}, + "1618-Autres emprunts obligataires": {} + }, + "162-Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "163-Avances re\u00e7ues de l\u2019\u00c9tat": {}, + "164-Avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "165-D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "1651-D\u00e9p\u00f4ts": {}, + "1652-Cautionnements": {} + }, + "166-Int\u00e9r\u00eats courus": { + "1661-Sur emprunts obligataires": {}, + "1662-Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "1663-Sur avances re\u00e7ues de l\u2019\u00c9tat": {}, + "1664-Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "1665-Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": {}, + "1667-Sur avances assorties de conditions particuli\u00e8res": {}, + "1668-Sur autres emprunts et dettes": {} + }, + "167-Avances assorties de conditions particuli\u00e8res": { + "1671-Avances bloqu\u00e9es pour augmentation du capital": {}, + "1672-Avances conditionn\u00e9es par l\u2019\u00c9tat": {}, + "1673-Avances conditionn\u00e9es par les autres organismes africains": {}, + "1674-Avances conditionn\u00e9es par les organismes internationaux": {} + }, + "168-Autres emprunts et dettes": { + "1681-Rentes viag\u00e8res capitalis\u00e9es": {}, + "1682-Billets de fonds": {}, + "1683-Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": {}, + "1684-Emprunts participatifs": {}, + "1685-Participation des travailleurs aux b\u00e9n\u00e9fices": {}, + "1686-Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": {} + } + }, + "17-Dettes de location acquisition": { + "172-Dettes de location acquisition / cr\u00e9dit bail immobilier": {}, + "173-Dettes de location acquisition / cr\u00e9dit bail mobilier": {}, + "174-Dettes de location acquisition / location de vente": {}, + "176-Int\u00e9r\u00eats courus": { + "1762-Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": {}, + "1763-Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": {}, + "1764-Sur dettes de location acquisition / location-vente": {}, + "1768-Sur autres dettes de location acquisition": {} + }, + "178-Autres dettes de location acquisition": {} + }, + "18-Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "181-Dettes li\u00e9es \u00e0 des participations": { + "1811-Dettes li\u00e9es \u00e0 des participations (groupe)": {}, + "1812-Dettes li\u00e9es \u00e0 des participations (hors groupe)": {} + }, + "182-Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "183-Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": {}, + "184-Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "185-Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "186-Comptes de liaison charges": {}, + "187-Comptes de liaison produits": {}, + "188-Comptes de liaison des soci\u00e9t\u00e9s en participation": {} + }, + "19-Provisions pour risques et charges": { + "191-Provisions pour litiges": {}, + "192-Provisions pour garanties donn\u00e9es aux clients": {}, + "193-Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": {}, + "194-Provisions pour pertes de change": {}, + "195-Provisions pour imp\u00f4ts": {}, + "196-Provisions pour pensions et obligations similaires": { + "1961-Provisions pour pensions et obligations similaires engagement de retraite": {}, + "1962-Actif du r\u00e9gime de retraite": {} + }, + "197-Provisions pour restructuration": {}, + "198-Autres provisions pour risques et charges": { + "1981-Provisions pour amendes et p\u00e9nalit\u00e9s": {}, + "1983-Provisions pour propre assureur": {}, + "1984-Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "1985-Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": {}, + "1988-Provisions pour divers risques et charges": {} + } + }, + "root_type": "Equity" + }, + "2-Comptes d\u2019actif immobilis\u00e9": { + "21-Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "211-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "212-Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "2121-Brevets": { + "account_type": "Fixed Asset" + }, + "2122-Licences": { + "account_type": "Fixed Asset" + }, + "2123-Concessions de service public": { + "account_type": "Fixed Asset" + }, + "2128-Autres concessions et droits similaires": { + "account_type": "Fixed Asset" + } + }, + "213-Logiciels et sites internet": { + "account_type": "Fixed Asset", + "2131-Logiciels": { + "account_type": "Fixed Asset" + }, + "2132-Sites internet": { + "account_type": "Fixed Asset" + } + }, + "214-Marques": { + "account_type": "Fixed Asset" + }, + "215-Fonds commercial": { + "account_type": "Fixed Asset" + }, + "216-Droit au bail": { + "account_type": "Fixed Asset" + }, + "217-Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset" + }, + "218-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "2181-Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset" + }, + "2182-Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset" + }, + "2183-Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset" + }, + "2184-Co\u00fbts des franchises": { + "account_type": "Fixed Asset" + }, + "2188-Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset" + } + }, + "219-Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "2191-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "2193-Logiciels et internet": { + "account_type": "Fixed Asset" + }, + "2198-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset" + } + } + }, + "22-Terrains": { + "account_type": "Fixed Asset", + "221-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "2211-Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset" + }, + "2212-Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset" + }, + "2218-Autres terrains": { + "account_type": "Fixed Asset" + } + }, + "222-Terrains nus": { + "account_type": "Fixed Asset", + "2221-Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset" + }, + "2228-Autres terrains nus": { + "account_type": "Fixed Asset" + } + }, + "223-Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "2231-Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset" + }, + "2232-Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset" + }, + "2234-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset" + }, + "2235-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset" + }, + "2238-Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset" + } + }, + "224-Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "2241-Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset" + }, + "2245-Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset" + }, + "2248-Autres travaux": { + "account_type": "Fixed Asset" + } + }, + "225-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "2251-Carri\u00e8res": { + "account_type": "Fixed Asset" + } + }, + "226-Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "2261-Parkings": { + "account_type": "Fixed Asset" + } + }, + "227-Terrains mis en concession": { + "account_type": "Fixed Asset" + }, + "228-Autres terrains": { + "account_type": "Fixed Asset", + "2281-Terrains immeubles de placement": { + "account_type": "Fixed Asset" + }, + "2285-Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset" + }, + "2286-Terrains de location acquisition": { + "account_type": "Fixed Asset" + }, + "2288-Divers terrains": { + "account_type": "Fixed Asset" + } + }, + "229-Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "2291-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset" + }, + "2292-Terrains nus": { + "account_type": "Fixed Asset" + }, + "2295-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset" + }, + "2298-Autres terrains": { + "account_type": "Fixed Asset" + } + } + }, + "23-B\u00e2timents, installations techniques et agencements": { + "231-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "2311-B\u00e2timents industriels": {}, + "2312-B\u00e2timents agricoles": {}, + "2313-B\u00e2timents administratifs et commerciaux": {}, + "2314-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2315-B\u00e2timents immeubles de placement": {}, + "2316-B\u00e2timents de location acquisition": {} + }, + "232-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "2321-B\u00e2timents industriels": {}, + "2322-B\u00e2timents agricoles": {}, + "2323-B\u00e2timents administratifs et commerciaux": {}, + "2324-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2325-B\u00e2timents immeubles de placement": {}, + "2326-B\u00e2timents de location acquisition": {} + }, + "233-Ouvrages d\u2019infrastructure": { + "2331-Voies de terre": {}, + "2332-Voies de fer": {}, + "2333-Voies d\u2019eau": {}, + "2334-Barrages, Digues": {}, + "2335-Pistes d\u2019a\u00e9rodrome": {}, + "2338-Autres ouvrages d\u2019infrastructures": {} + }, + "234-Am\u00e9nagements, agencements et installations techniques": { + "2341-Installations complexes sp\u00e9cialis\u00e9es sur sol propre": {}, + "2342-Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": {}, + "2343-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": {}, + "2344-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": {}, + "2345-Am\u00e9nagements et agencements des b\u00e2timents": {} + }, + "235-Am\u00e9nagements de bureaux": { + "2351-Installations g\u00e9n\u00e9rales": {}, + "2358-Autres am\u00e9nagements de bureaux": {} + }, + "237-B\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "238-Autres installations et agencements": {}, + "239-B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "2391-B\u00e2timents en cours": {}, + "2392-Installations en cours": {}, + "2393-Ouvrages d\u2019infrastructure en cours": {}, + "2394-Am\u00e9nagements et agencements et installations techniques en cours": {}, + "2395-Am\u00e9nagements de bureaux en cours": {}, + "2398-Autres installations et agencements en cours": {} + } + }, + "24-Mat\u00e9riel, mobilier et actifs biologiques": { + "241-Mat\u00e9riel et outillage industriel et commercial": { + "2411-Mat\u00e9riel industriel": {}, + "2412-Outillage industriel": {}, + "2413-Mat\u00e9riel commercial": {}, + "2414-Outillage commercial": {}, + "2416-Mat\u00e9riel & outillage industriel et commercial de location-acquisition": {} + }, + "242-Mat\u00e9riel et outillage agricole": { + "2421-Mat\u00e9riel agricole": {}, + "2422-Outillage agricole": {}, + "2426-Mat\u00e9riel & outillage agricole de location-acquisition": {} + }, + "243-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "244-Mat\u00e9riel et mobilier": { + "2441-Mat\u00e9riel de bureau": {}, + "2442-Mat\u00e9riel informatique": {}, + "2443-Mat\u00e9riel bureautique": {}, + "2444-Mobilier de bureau": {}, + "2445-Mat\u00e9riel et mobilier immeubles de placement": {}, + "2446-Mat\u00e9riel et mobilier de location acquisition": {}, + "2447-Mat\u00e9riel et mobilier des logements du personnel": {} + }, + "245-Mat\u00e9riel de transport": { + "2451-Mat\u00e9riel automobile": {}, + "2452-Mat\u00e9riel ferroviaire": {}, + "2453-Mat\u00e9riel fluvial, lagunaire": {}, + "2454-Mat\u00e9riel naval": {}, + "2455-Mat\u00e9riel a\u00e9rien": {}, + "2456-Mat\u00e9riel de transport de location-acquisition": {}, + "2457-Mat\u00e9riel hippomobile": {}, + "2458-Autres mat\u00e9riels de transport": {} + }, + "246-Actifs biologiques": { + "2461-Cheptel, animaux de trait": {}, + "2462-Cheptel, animaux reproducteurs": {}, + "2463-Animaux de garde": {}, + "2465-Plantations agricoles": {}, + "2468-Autres actifs biologiques": {} + }, + "247-Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "2471-Agencements et am\u00e9nagements du mat\u00e9riel": {}, + "2472-Agencements et am\u00e9nagements des actifs biologiques": {}, + "2478-Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": {} + }, + "248-Autres mat\u00e9riels et mobiliers": { + "2481-Collections et \u0153uvres d\u2019art": {}, + "2488-Divers mat\u00e9riels mobiliers": {} + }, + "249-Mat\u00e9riels et actifs biologiques en cours": { + "2491-Mat\u00e9riel et outillage industriel et commercial": {}, + "2492-Mat\u00e9riel et outillage agricole": {}, + "2493-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2494-Mat\u00e9riel et mobilier de bureau": {}, + "2495-Mat\u00e9riel de transport": {}, + "2496-Actifs biologiques": {}, + "2497-Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": {}, + "2498-Autres mat\u00e9riels et actifs biologiques en cours": {} + } + }, + "25-Avances et acomptes vers\u00e9s sur immobilisations": { + "251-Avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "252-Avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "26-Titres de participation": { + "261-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "262-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "263-Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "265-Participations dans des organismes professionnels": {}, + "266-Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {}, + "268-Autres titres de participation": {} + }, + "27-Autres immobilisations financi\u00e8res": { + "271-Pr\u00eats et cr\u00e9ances": { + "2711-Pr\u00eats participatifs": {}, + "2712-Pr\u00eats aux associ\u00e9s": {}, + "2713-Billets de fonds": {}, + "2714-Titres pr\u00eat\u00e9s": {}, + "2718-Autres pr\u00eats et cr\u00e9ances": {} + }, + "272-Pr\u00eats au personnel": { + "2721-Pr\u00eats immobiliers": {}, + "2722-Pr\u00eats mobiliers et d\u2019installation": {}, + "2728-Autres pr\u00eats au personnel": {} + }, + "273-Cr\u00e9ances sur l\u2019\u00c9tat": { + "2731-Retenues de garantie": {}, + "2733-Fonds r\u00e9glement\u00e9": {}, + "2734-Cr\u00e9ances sur le conc\u00e9dant": {}, + "2738-Autres cr\u00e9ances sur l\u2019\u00c9tat": {} + }, + "274-Titres immobilis\u00e9s": { + "2741-Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": {}, + "2742-Titres participatifs": {}, + "2743-Certificats d\u2019investissement": {}, + "2744-Parts de fonds commun de placement (FCP)": {}, + "2745-Obligations": {}, + "2746-Actions ou parts propres": {}, + "2748-Autres titres immobilis\u00e9s": {} + }, + "275-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "2751-D\u00e9p\u00f4ts pour loyers d\u2019avance": {}, + "2752-D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": {}, + "2753-D\u00e9p\u00f4ts pour l\u2019eau": {}, + "2754-D\u00e9p\u00f4ts pour le gaz": {}, + "2755-D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": {}, + "2756-Cautionnements sur march\u00e9s publics": {}, + "2757-Cautionnements sur autres op\u00e9rations": {}, + "2758-Autres d\u00e9p\u00f4ts et cautionnements": {} + }, + "276-Int\u00e9r\u00eats courus": { + "2761-Pr\u00eats et cr\u00e9ances non commerciales": {}, + "2762-Pr\u00eats au personnel": {}, + "2763-Cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2764-Titres immobilis\u00e9s": {}, + "2765-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2767-Cr\u00e9ances rattach\u00e9es \u00e0 des participations": {}, + "2768-Immobilisations financi\u00e8res diverses": {} + }, + "277-Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "2771-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": {}, + "2772-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": {}, + "2773-Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "2774-Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {} + }, + "278-Immobilisations financi\u00e8res diverses": { + "2781-Cr\u00e9ances diverses groupe": {}, + "2782-Cr\u00e9ances diverses hors groupe": {}, + "2784-Banques d\u00e9p\u00f4ts \u00e0 terme": {}, + "2785-Or et m\u00e9taux pr\u00e9cieux": {}, + "2788-Autres immobilisations financi\u00e8res": {} + } + }, + "28-Amortissements": { + "account_type": "Accumulated Depreciation", + "281-Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "2811-Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation" + }, + "2812-Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation" + }, + "2813-Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation" + }, + "2814-Amortissements des marques": { + "account_type": "Accumulated Depreciation" + }, + "2815-Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation" + }, + "2816-Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation" + }, + "2817-Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation" + }, + "2818-Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation" + } + }, + "282-Amortissements des terrains": { + "2824-Amortissements des travaux de mise en valeur des terrains": {} + }, + "283-Amortissements des b\u00e2timents, installations techniques et agencements": { + "2831-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2832-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2833-Amortissements des ouvrages d\u2019infrastructure": {}, + "2834-Amortissements des am\u00e9nagements, agencements et installations techniques": {}, + "2835-Amortissements des am\u00e9nagements de bureaux": {}, + "2837-Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2838-Amortissements des autres installations et agencements": {} + }, + "284-Amortissements du mat\u00e9riel": { + "2841-Amortissements du mat\u00e9riel et outillage industriel et commercial": {}, + "2842-Amortissements du mat\u00e9riel et outillage agricole": {}, + "2843-Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2844-Amortissements du mat\u00e9riel et mobilier": {}, + "2845-Amortissements du mat\u00e9riel de transport": {}, + "2846-Amortissements des actifs biologiques": {}, + "2847-Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2848-Amortissements des autres mat\u00e9riels": {} + } + }, + "29-D\u00e9pr\u00e9ciations des immobilisations": { + "291-D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "2911-D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": {}, + "2912-D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": {}, + "2913-D\u00e9pr\u00e9ciations des logiciels et sites internet": {}, + "2914-D\u00e9pr\u00e9ciations des marques": {}, + "2915-D\u00e9pr\u00e9ciations du fonds commercial": {}, + "2916-D\u00e9pr\u00e9ciations du droit au bail": {}, + "2917-D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": {}, + "2918-D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": {}, + "2919-D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": {} + }, + "292-D\u00e9pr\u00e9ciations des terrains": { + "2921-D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": {}, + "2922-D\u00e9pr\u00e9ciations des terrains nus": {}, + "2923-D\u00e9pr\u00e9ciations des terrains b\u00e2tis": {}, + "2924-D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": {}, + "2925-D\u00e9pr\u00e9ciations des terrains de gisement": {}, + "2926-D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": {}, + "2927-D\u00e9pr\u00e9ciations des terrains mis en concession": {}, + "2928-D\u00e9pr\u00e9ciations des autres terrains": {}, + "2929-D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": {} + }, + "293-D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "2931-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2932-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2933-D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": {}, + "2934-D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": {}, + "2935-D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": {}, + "2937-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2938-D\u00e9pr\u00e9ciations des autres installations et agencements": {}, + "2939-D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": {} + }, + "294-D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "2941-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": {}, + "2942-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": {}, + "2943-D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2944-D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": {}, + "2945-D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": {}, + "2946-D\u00e9pr\u00e9ciations des actifs biologiques": {}, + "2947-D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2948-D\u00e9pr\u00e9ciations des autres mat\u00e9riels": {}, + "2949-D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": {} + }, + "295-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "2951-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "2952-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "296-D\u00e9pr\u00e9ciations des titres de participation": { + "2961-D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "2962-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "2963-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "2965-D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": {}, + "2966-D\u00e9pr\u00e9ciations des parts dans des GIE": {}, + "2968-D\u00e9pr\u00e9ciations des autres titres de participation": {} + }, + "297-D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "2971-D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": {}, + "2972-D\u00e9pr\u00e9ciations des pr\u00eats au personnel": {}, + "2973-D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2974-D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": {}, + "2975-D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2977-D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": {}, + "2978-D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": {} + } + }, + "root_type": "Asset" + }, + "3-Comptes de Stocks": { + "31-Marchandises": { + "311-Marchandises A": { + "3111-Marchandises A1": {}, + "3112-Marchandises A2": {} + }, + "312-Marchandises B": { + "3121-Marchandises B1": {}, + "3122-Marchandises B2": {} + }, + "313-Actifs biologiques": { + "3131-Animaux": {}, + "3132-V\u00e9g\u00e9taux": {} + }, + "318-Marchandises hors activit\u00e9s ordinaires (HAO)": {} + }, + "32-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "321-Mati\u00e8res A": {}, + "322-Mati\u00e8res B": {}, + "323-Fournitures (A, B)": {} + }, + "33-Autres approvisionnements": { + "331-Mati\u00e8res consommables": {}, + "332-Fournitures d\u2019atelier et d\u2019usine": {}, + "333-Fournitures de magasin": {}, + "334-Fournitures de bureau": {}, + "335-Emballages": { + "3351-Emballages perdus": {}, + "3352-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "3353-Emballages \u00e0 usage mixte": {}, + "3358-Autres emballages": {} + }, + "338-Autres mati\u00e8res": {} + }, + "34-Produits en cours": { + "341-Produits en cours": { + "3411-Produits en cours P1": {}, + "3412-Produits en cours P2": {} + }, + "342-Travaux en cours": { + "3421-Travaux en cours T1": {}, + "3422-Travaux en cours T2": {} + }, + "343-Produits interm\u00e9diaires en cours": { + "3431-Produits interm\u00e9diaires A": {}, + "3432-Produits interm\u00e9diaires B": {} + }, + "344-Produits r\u00e9siduels en cours": { + "3441-Produits r\u00e9siduels A": {}, + "3442-Produits r\u00e9siduels B": {} + }, + "345-Actifs biologiques en cours": { + "3451-Animaux": {}, + "3452-V\u00e9g\u00e9taux": {} + } + }, + "35-Services en cours": { + "351-\u00c9tudes en cours": { + "3511-\u00c9tudes en cours E1": {}, + "3512-\u00c9tudes en cours E2": {} + }, + "352-Prestations de services en cours": { + "3521-Prestations de services S1": {}, + "3522-Prestations de services S2": {} + } + }, + "36-Produits finis": { + "361-Produits finis A": {}, + "362-Produits finis B": {}, + "363-Actifs biologiques": { + "3631-Animaux": {}, + "3632-V\u00e9g\u00e9taux": {}, + "3638-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "37-Produits interm\u00e9diaires et r\u00e9siduels": { + "371-Produits interm\u00e9diaires": { + "3711-Produits interm\u00e9diaires A": {}, + "3712-Produits interm\u00e9diaires B": {} + }, + "372-Produits r\u00e9siduels": { + "3721-D\u00e9chets": {}, + "3722-Rebuts": {}, + "3723-Mati\u00e8res de R\u00e9cup\u00e9ration": {} + }, + "373-Actifs biologiques": { + "3731-Animaux": {}, + "3732-V\u00e9g\u00e9taux": {}, + "3738-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "38-Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "381-Marchandises en cours de route": {}, + "382-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": {}, + "383-Autres approvisionnements en cours de route": {}, + "386-Produits finis en cours de route": {}, + "387-Stock en consignation ou en d\u00e9p\u00f4t": { + "3871-Stock en consignation": {}, + "3872-Stock en d\u00e9p\u00f4t": {} + }, + "388-Stock provenant d\u2019immobilisations mises hors service ou au rebut": {} + }, + "39-D\u00e9pr\u00e9ciations des stocks et encours de production": { + "391-D\u00e9pr\u00e9ciations des stocks de marchandises": {}, + "392-D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "393-D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": {}, + "394-D\u00e9pr\u00e9ciations des productions en cours": {}, + "395-D\u00e9pr\u00e9ciations des services en cours": {}, + "396-D\u00e9pr\u00e9ciations des stocks de produits finis": {}, + "397-D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": {}, + "398-D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": {} + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "409-Fournisseurs d\u00e9biteurs": { + "4091-Fournisseurs Avances et acomptes vers\u00e9s": {}, + "4092-Fournisseurs Groupe avances et acomptes vers\u00e9s": {}, + "4093-Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": {}, + "4094-Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": {}, + "4098-Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": {} + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "411-Clients": { + "4111-Clients": { + "account_type": "Receivable" + }, + "4112-Clients groupe": { + "account_type": "Receivable" + }, + "4114-Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable" + }, + "4115-Clients, organismes internationaux": { + "account_type": "Receivable" + }, + "4116-Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable" + }, + "4117-Client, retenues de garantie": { + "account_type": "Receivable" + }, + "4118-Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "412-Clients, effets \u00e0 recevoir en portefeuille": { + "4121-Clients, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4122-Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4124-\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4125-Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "413-Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "4131-Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable" + }, + "4132-Clients, effets impay\u00e9s": { + "account_type": "Receivable" + }, + "4133-Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable" + }, + "4138-Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "414-Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "4141-Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4142-Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable" + }, + "4146-Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4147-Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "415-Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable" + }, + "416-Cr\u00e9ances clients litigieuses ou douteuses": { + "4161-Cr\u00e9ances litigieuses": { + "account_type": "Receivable" + }, + "4162-Cr\u00e9ances douteuses": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "418-Clients, produits \u00e0 recevoir": { + "4181-Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable" + }, + "4186-Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "421-Personnel, avances et acomptes": { + "4211-Personnel, avances": {}, + "4212-Personnel, acomptes": {}, + "4213-Frais avanc\u00e9s et fournitures au personnel": {} + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "4311-Prestations familiales": {}, + "4312-Accidents de travail": {}, + "4313-Caisse de retraite obligatoire": {}, + "4314-Caisse de retraite facultative": {}, + "4318-Autres cotisations sociales": {} + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "4331-Mutuelle": {}, + "4332-Assurances retraite": {}, + "4333-Assurances et organismes de sant\u00e9": {} + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4387-Produits \u00e0 recevoir": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "443-\u00c9tat, TVA factur\u00e9e": { + "4431-TVA factur\u00e9e sur ventes": {}, + "4432-TVA factur\u00e9e sur prestations de services": {}, + "4433-TVA factur\u00e9e sur travaux": {}, + "4434-TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": {}, + "4435-TVA sur factures \u00e0 \u00e9tablir": {} + }, + "445-\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "4451-TVA r\u00e9cup\u00e9rable sur immobilisations": {}, + "4452-TVA r\u00e9cup\u00e9rable sur achats": {}, + "4453-TVA r\u00e9cup\u00e9rable sur transport": {}, + "4454-TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": {}, + "4455-TVA r\u00e9cup\u00e9rable sur factures non parvenues": {}, + "4456-TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": {} + }, + "448-\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "4486-Charges \u00e0 payer": {}, + "4487-Produits \u00e0 recevoir": {} + }, + "449-\u00c9tat, cr\u00e9ances et dettes diverses": { + "4491-\u00c9tat, obligations cautionn\u00e9es": {}, + "4492-\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": {}, + "4493-\u00c9tat, fonds de dotation \u00e0 recevoir": {}, + "4494-\u00c9tat, subventions investissement \u00e0 recevoir": {}, + "4495-\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": {}, + "4496-\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": {}, + "4497-\u00c9tat, avances sur subventions": {}, + "4499-\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": {} + } + }, + "45-Organismes internationaux (ACTIF)": { + "451-Op\u00e9rations avec les organismes africains": {}, + "452-Op\u00e9rations avec les autres organismes internationaux": {}, + "458-Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "4581-Organismes internationaux, fonds de dotation \u00e0 recevoir": {}, + "4582-Organismes internationaux, subventions \u00e0 recevoir": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "4613-Apporteurs, capital appel\u00e9, non vers\u00e9": {}, + "4614-Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": {}, + "4618-Apporteurs, titres \u00e0 \u00e9changer": {} + }, + "467-Apporteurs, restant d\u00fb sur capital appel\u00e9": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "4721-Cr\u00e9ances sur cessions de titres de placement": {}, + "4726-Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": {} + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "4731-Mandants": {}, + "4732-Mandataires": {}, + "4733-Commettants": {}, + "4734-Commissionnaires": {}, + "4739-\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "4747-Compte de r\u00e9partition p\u00e9riodique des produits": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "4751-Compte actif": { + "account_type": "Temporary" + } + }, + "476-Charges constat\u00e9es d\u2019avance": {}, + "478-\u00c9carts de conversion actif": { + "4781-Diminution des cr\u00e9ances d\u2019exploitation": {}, + "4782-Diminution des cr\u00e9ances financi\u00e8res": {}, + "4783-Augmentation des dettes d\u2019exploitation": {}, + "4784-Augmentation des dettes financi\u00e8res": {}, + "4786-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4788-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "485-Cr\u00e9ances sur cessions d\u2019immobilisations": { + "4851-En compte, immobilisations incorporelles": {}, + "4852-En compte, immobilisations corporelles": {}, + "4853-Effets \u00e0 recevoir, immobilisations incorporelles": {}, + "4854-Effets \u00e0 recevoir, immobilisations corporelles": {}, + "4855-Effets escompt\u00e9s non \u00e9chus": {}, + "4857-Retenues de garantie": {}, + "4858-Factures \u00e0 \u00e9tablir": {} + }, + "488-Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": {} + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "491-D\u00e9pr\u00e9ciations des comptes clients": { + "4911-Cr\u00e9ances litigieuses": {}, + "4912-Cr\u00e9ances douteuses": {} + }, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {}, + "496-D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "4962-Associ\u00e9s, comptes courants": {}, + "4963-Associ\u00e9s, op\u00e9rations faites en commun": {}, + "4966-Groupe, comptes courants": {} + }, + "497-D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": {}, + "498-D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "4985-Cr\u00e9ances sur cessions d\u2019immobilisations": {}, + "4986-Cr\u00e9ances sur cessions de titres de placement": {}, + "4988-Autres cr\u00e9ances HAO": {} + }, + "499-Provisions pour risques \u00e0 court terme": { + "4991-Sur op\u00e9rations d\u2019exploitation": {}, + "4997-Sur op\u00e9rations financi\u00e8res": {}, + "4998-Sur op\u00e9rations HAO": {} + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "401-Fournisseurs, dettes en compte": { + "4011-Fournisseurs": { + "account_type": "Payable" + }, + "4012-Fournisseurs groupe": { + "account_type": "Payable" + }, + "4013-Fournisseurs sous-traitants": { + "account_type": "Payable" + }, + "4016-Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable" + }, + "4017-Fournisseur, retenues de garantie": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "402-Fournisseurs, effets \u00e0 payer": { + "4021-Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable" + }, + "4022-Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable" + }, + "4023-Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "404-Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "4041-Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4042-Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable" + }, + "4046-Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4047-Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "408-Fournisseurs, factures non parvenues": { + "4081-Fournisseurs": { + "account_type": "Stock Received But Not Billed" + }, + "4082-Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed" + }, + "4083-Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed" + }, + "4086-Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "419-Clients cr\u00e9diteurs": { + "4191-Clients, avances et acomptes re\u00e7us": {}, + "4192-Clients groupe, avances et acomptes re\u00e7us": {}, + "4194-Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": {}, + "4198-Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": {} + } + }, + "42-Personnel (PASSIF)": { + "422-Personnel, r\u00e9mun\u00e9rations dues": {}, + "423-Personnel, oppositions, saisies-arr\u00eats": { + "4231-Personnel, oppositions": {}, + "4232-Personnel, saisies-arr\u00eats": {}, + "4233-Personnel, avis \u00e0 tiers d\u00e9tenteur": {} + }, + "424-Personnel, \u0153uvres sociales internes": { + "4241-Assistance m\u00e9dicale": {}, + "4242-Allocations familiales": {}, + "4245-Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": {}, + "4248-Autres \u0153uvres sociales internes": {} + }, + "425-Repr\u00e9sentants du personnel": { + "4251-D\u00e9l\u00e9gu\u00e9s du personnel": {}, + "4252-Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": {}, + "4258-Autres repr\u00e9sentants du personnel": {} + }, + "426-Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "4261-Participation aux b\u00e9n\u00e9fices": {}, + "4264-Participation au capital": {} + }, + "427-Personnel d\u00e9p\u00f4ts": {}, + "428-Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "4281-Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": {}, + "4286-Autres charges \u00e0 payer": {}, + "4287-Produits \u00e0 recevoir": {} + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4381-Charges sociales sur gratifications \u00e0 payer": {}, + "4382-Charges sociales sur cong\u00e9s \u00e0 payer": {}, + "4386-Autres charges \u00e0 payer": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "441-\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": {}, + "442-\u00c9tat, autres imp\u00f4ts et taxes": { + "4421-Imp\u00f4ts et taxes d\u2019\u00c9tat": {}, + "4422-Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": {}, + "4423-Imp\u00f4ts et taxes recouvrables sur des obligataires": {}, + "4424-Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": {}, + "4426-Droits de douane": {}, + "4428-Autres imp\u00f4ts et taxes": {} + }, + "444-\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "4441-\u00c9tat, TVA due": {}, + "4449-\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": {} + }, + "446-\u00c9tat, autres taxes sur le chiffre d\u2019affaires": {}, + "447-\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "4471-Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": {}, + "4472-Imp\u00f4ts sur salaires": {}, + "4473-Contribution nationale": {}, + "4474-Contribution nationale de solidarit\u00e9": {}, + "4478-Autres imp\u00f4ts et contributions": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "4611-Apporteurs, apports en nature": {}, + "4612-Apporteurs, apports en num\u00e9raire": {}, + "4615-Apporteurs, versements re\u00e7us sur augmentation de capital": {}, + "4616-Apporteurs, versements anticip\u00e9s": {}, + "4617-Apporteurs d\u00e9faillants": {}, + "4619-Apporteurs, capital \u00e0 rembourser": {} + }, + "462-Associ\u00e9s, comptes courants": { + "4621-Principal": {}, + "4626-Int\u00e9r\u00eats courus": {} + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "4631-Op\u00e9rations courantes": {}, + "4636-Int\u00e9r\u00eats courus": {} + }, + "465-Associ\u00e9s, dividendes \u00e0 payer": {}, + "466-Groupe, comptes courants": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "4711-D\u00e9biteurs divers": {}, + "4712-Cr\u00e9diteurs divers": {}, + "4713-Obligataires": {}, + "4715-R\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "4716-Compte d\u2019affacturage": {}, + "4717-D\u00e9biteurs divers retenues de garantie": {}, + "4718-Apport, compte de fusion et op\u00e9rations assimil\u00e9es": {}, + "4719-Bons de souscription d\u2019actions et d\u2019obligations": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "4746-Compte de r\u00e9partition p\u00e9riodique des charges": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "4752-Compte passif": {} + }, + "477-Produits constat\u00e9s d\u2019avance": {}, + "479-\u00c9carts de conversion passif": { + "4791-Augmentation des cr\u00e9ances d\u2019exploitation": {}, + "4792-Augmentation des cr\u00e9ances financi\u00e8res": {}, + "4793-Diminution des dettes d\u2019exploitation": {}, + "4794-Diminution des dettes financi\u00e8res": {}, + "4797-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4798-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "481-Fournisseurs d\u2019investissements": { + "4811-Immobilisations incorporelles": {}, + "4812-Immobilisations corporelles": {}, + "4813-Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": {}, + "4816-R\u00e9serve de propri\u00e9t\u00e9": {}, + "4817-Retenues de garantie": {}, + "4818-Factures non parvenues": {} + }, + "482-Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "4821-Immobilisations incorporelles": {}, + "4822-Immobilisations corporelles": {} + }, + "484-Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "4887-Produits": {} + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (PASSIF)": { + "490-D\u00e9pr\u00e9ciations des comptes fournisseurs": {}, + "492-D\u00e9pr\u00e9ciations des comptes personnel": {}, + "493-D\u00e9pr\u00e9ciations des comptes organismes sociaux": {}, + "494-D\u00e9pr\u00e9ciations des comptes \u00c9tat et collectivit\u00e9s publiques": {}, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {} + }, + "root_type": "Liability" + }, + "5-Comptes de tr\u00e9sorerie": { + "50-Titres de placement": { + "501-Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "5011-Titres du Tr\u00e9sor \u00e0 court terme": {}, + "5012-Titres d\u2019organismes financiers": {}, + "5013-Bons de caisse \u00e0 court terme": {}, + "5016-Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": {} + }, + "502-Actions": { + "5021-Actions ou parts propres": {}, + "5022-Actions cot\u00e9es": {}, + "5023-Actions non cot\u00e9es": {}, + "5024-Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": {}, + "5025-Autres actions": {}, + "5026-Frais d\u2019acquisition des actions": {} + }, + "503-Obligations": { + "5031-Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": {}, + "5032-Obligations cot\u00e9es": {}, + "5033-Obligations non cot\u00e9es": {}, + "5035-Autres obligations": {}, + "5036-Frais d\u2019acquisition des obligations": {} + }, + "504-Bons de souscription": { + "5042-Bons de souscription d\u2019actions": {}, + "5043-Bons de souscription d\u2019obligations": {} + }, + "505-Titres n\u00e9gociables hors r\u00e9gion": {}, + "506-Int\u00e9r\u00eats courus": { + "5061-Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": {}, + "5062-Actions": {}, + "5063-Obligations": {} + }, + "508-Autres titres de placement et cr\u00e9ances assimil\u00e9es": {} + }, + "51-Valeurs \u00e0 encaisser": { + "511-Effets \u00e0 encaisser": {}, + "512-Effets \u00e0 l\u2019encaissement": {}, + "513-Ch\u00e8ques \u00e0 encaisser": {}, + "514-Ch\u00e8ques \u00e0 l\u2019encaissement": {}, + "515-Cartes de cr\u00e9dit \u00e0 encaisser": {}, + "518-Autres valeurs \u00e0 l\u2019encaissement": { + "5181-Warrants": {}, + "5182-Billets de fonds": {}, + "5185-Ch\u00e8ques de voyage": {}, + "5186-Coupons \u00e9chus": {}, + "5187-Int\u00e9r\u00eats \u00e9chus des obligations": {} + } + }, + "52-Banques": { + "521-Banques locales": { + "5211-Banques en monnaie nationale": { + "account_type": "Bank" + }, + "5215-Banques en devises": { + "account_type": "Bank" + }, + "account_type": "Bank" + }, + "522-Banques autres \u00c9tats r\u00e9gion": {}, + "523-Banques autres \u00c9tats zone mon\u00e9taire": {}, + "524-Banques hors zone mon\u00e9taire": {}, + "525-Banques d\u00e9p\u00f4t \u00e0 terme": {}, + "526-Banques, int\u00e9r\u00eats courus": { + "5261-Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": {}, + "5267-Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": {} + } + }, + "53-\u00c9tablissements financiers et assimil\u00e9s": { + "531-Ch\u00e8ques postaux": {}, + "532-Tr\u00e9sor": {}, + "533-Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": {}, + "536-\u00c9tablissements financiers, int\u00e9r\u00eats courus": {}, + "538-Autres organismes financiers": {} + }, + "54-Instruments de tr\u00e9sorerie": { + "541-Options de taux d\u2019int\u00e9r\u00eat": {}, + "542-Options de taux de change": {}, + "543-Options de taux boursiers": {}, + "544-Instruments de march\u00e9s \u00e0 terme": {}, + "545-Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": {} + }, + "55-Instruments de monnaie \u00e9lectronique": { + "551-Monnaie \u00e9lectronique carte carburant": {}, + "552-Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": {}, + "553-Monnaie \u00e9lectronique carte p\u00e9age": {}, + "554-Porte-monnaie \u00e9lectronique": {}, + "558-Autres instruments de monnaies \u00e9lectroniques": {} + }, + "56-Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "561-Cr\u00e9dits de tr\u00e9sorerie": {}, + "564-Escompte de cr\u00e9dits de campagne": {}, + "565-Escompte de cr\u00e9dits ordinaires": {}, + "566-Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": {} + }, + "57-Caisse": { + "571-Caisse si\u00e8ge social": { + "5711-Caisse en monnaie nationale": {}, + "5712-Caisse en devises": {} + }, + "572-Caisse succursale A": { + "5721-En monnaie nationale": {}, + "5722-En devises": {} + }, + "573-Caisse succursale B": { + "5731-En monnaie nationale": {}, + "5732-En devises": {} + } + }, + "58-R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "581-R\u00e9gies d\u2019avance": {}, + "582-Accr\u00e9ditifs": {}, + "585-Virements de fonds": {}, + "588-Autres virements internes": {} + }, + "59-D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "590-D\u00e9pr\u00e9ciations des titres de placement": {}, + "591-D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": {}, + "592-D\u00e9pr\u00e9ciations des comptes banques": {}, + "593-D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": {}, + "594-D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": {}, + "599-Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": {} + }, + "root_type": "Asset" + }, + "6-Comptes de charges des activit\u00e9s ordinaires": { + "60-Achats et variations de stocks": { + "601-Achats de marchandises": { + "6011-Dans la R\u00e9gion": {}, + "6012-Hors R\u00e9gion": {}, + "6013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6015-Frais sur achats": {}, + "6019-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "602-Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "6021-Dans la R\u00e9gion": {}, + "6022-Hors R\u00e9gion": {}, + "6023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6025-Frais sur achats": {}, + "6029-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "603-Variations des stocks de biens achet\u00e9s": { + "6031-Variations des stocks de marchandises": {}, + "6032-Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "6033-Variations des stocks d\u2019autres approvisionnements": {} + }, + "604-Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "6041-Mati\u00e8res consommables": {}, + "6042-Mati\u00e8res combustibles": {}, + "6043-Produits d\u2019entretien": {}, + "6044-Fournitures d\u2019atelier et d\u2019usine": {}, + "6045-Frais sur achat": {}, + "6046-Fournitures de magasin": {}, + "6047-Fournitures de bureau": {}, + "6049-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "605-Autres achats": { + "6051-Fournitures non stockables Eau": {}, + "6052-Fournitures non stockables \u00c9lectricit\u00e9": {}, + "6053-Fournitures non stockables Autres \u00e9nergies": {}, + "6054-Fournitures d\u2019entretien non stockables": {}, + "6055-Fournitures de bureau non stockables": {}, + "6056-Achats de petit mat\u00e9riel et outillage": {}, + "6057-Achats d\u2019\u00e9tudes et prestations de services": {}, + "6058-Achats de travaux, mat\u00e9riels et \u00e9quipements": {}, + "6059-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "608-Achats d\u2019emballages": { + "6081-Emballages perdus": {}, + "6082-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "6083-Emballages \u00e0 usage mixte": {}, + "6085-Frais sur achats": {}, + "6089-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + } + }, + "61-Transports": { + "612-Transports sur ventes": {}, + "613-Transports pour le compte de tiers": {}, + "614-Transports du personnel": {}, + "616-Transports de plis": {}, + "618-Autres frais de transport": { + "6181-Voyages et d\u00e9placements": {}, + "6182-Transports entre \u00e9tablissements ou chantiers": {}, + "6183-Transports administratifs": {} + } + }, + "62-Services ext\u00e9rieurs": { + "621-Sous-traitance g\u00e9n\u00e9rale": {}, + "622-Locations, charges locatives": { + "6221-Locations de terrains": {}, + "6222-Locations de b\u00e2timents": {}, + "6223-Locations de mat\u00e9riels et outillages": {}, + "6224-Malis sur emballages": {}, + "6225-Locations d\u2019emballages": {}, + "6226-Fermages et loyers du foncier": {}, + "6228-Locations et charges locatives diverses": {} + }, + "623-Redevances de location acquisition": { + "6232-Cr\u00e9dit-bail immobilier": {}, + "6233-Cr\u00e9dit-bail mobilier": {}, + "6234-Location-vente": {}, + "6238-Autres contrats de location acquisition": {} + }, + "624-Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "6241-Entretien et r\u00e9parations des biens immobiliers": {}, + "6242-Entretien et r\u00e9parations des biens mobiliers": {}, + "6243-Maintenance": {}, + "6244-Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "6248-Autres entretiens et r\u00e9parations": {} + }, + "625-Primes d\u2019assurance": { + "6251-Assurances multirisques": {}, + "6252-Assurances mat\u00e9riel de transport": {}, + "6253-Assurances risques d\u2019exploitation": {}, + "6254-Assurances responsabilit\u00e9 du producteur": {}, + "6255-Assurances insolvabilit\u00e9 clients": {}, + "6257-Assurances transport sur ventes": {}, + "6258-Autres primes d\u2019assurances": {} + }, + "626-\u00c9tudes, recherches et documentation": { + "6261-\u00c9tudes et recherches": {}, + "6265-Documentation g\u00e9n\u00e9rale": {}, + "6266-Documentation technique": {} + }, + "627-Publicit\u00e9, publications, relations publiques": { + "6271-Annonces, insertions": {}, + "6272-Catalogues, imprim\u00e9s publicitaires": {}, + "6273-\u00c9chantillons": {}, + "6274-Foires et expositions": {}, + "6275-Publications": {}, + "6276-Cadeaux \u00e0 la client\u00e8le": {}, + "6277-Frais de colloques, s\u00e9minaires, conf\u00e9rences": {}, + "6278-Autres charges de publicit\u00e9 et relations publiques": {} + }, + "628-Frais de t\u00e9l\u00e9communications": { + "6281-Frais de t\u00e9l\u00e9phone": {}, + "6282-Frais de t\u00e9lex": {}, + "6283-Frais de t\u00e9l\u00e9copie": {}, + "6288-Autres frais de t\u00e9l\u00e9communications": {} + } + }, + "63-Autres services ext\u00e9rieurs": { + "631-Frais bancaires": { + "6311-Frais sur titres (vente, garde)": {}, + "6312-Frais sur effets": {}, + "6313-Location de coffres": {}, + "6314-Commissions d\u2019affacturage": {}, + "6315-Commissions sur cartes de cr\u00e9dit": {}, + "6316-Frais d\u2019\u00e9mission d\u2019emprunts": {}, + "6317-Frais sur instruments monnaie \u00e9lectronique": {}, + "6318-Autres frais bancaires": {} + }, + "632-R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "6322-Commissions et courtages sur ventes": {}, + "6324-Honoraires des professions r\u00e9glement\u00e9es": {}, + "6325-Frais d\u2019actes et de contentieux": {}, + "6326-R\u00e9mun\u00e9rations d\u2019affacturage": {}, + "6327-R\u00e9mun\u00e9rations des autres prestataires de services": {}, + "6328-Divers frais": {} + }, + "633-Frais de formation du personnel": {}, + "634-Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "6342-Redevances pour brevets, licences": {}, + "6343-Redevances pour logiciels": {}, + "6344-Redevances pour marques": {}, + "6345-Redevances pour sites internet": {}, + "6346-Redevances pour concessions, droits et valeurs similaires": {} + }, + "635-Cotisations": { + "6351-Cotisations": {}, + "6358-Concours divers": {} + }, + "637-R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "6371-Personnel int\u00e9rimaire": {}, + "6372-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "638-Autres charges externes": { + "6381-Frais de recrutement du personnel": {}, + "6382-Frais de d\u00e9m\u00e9nagement": {}, + "6383-R\u00e9ceptions": {}, + "6384-Missions": {}, + "6385-Charges de copropri\u00e9t\u00e9": {} + } + }, + "64-Imp\u00f4ts et taxes": { + "641-Imp\u00f4ts et taxes directs": { + "6411-Imp\u00f4ts fonciers et taxes annexes": {}, + "6412-Patentes, licences et taxes annexes": {}, + "6413-Taxes sur appointements et salaires": {}, + "6414-Taxes d\u2019apprentissage": {}, + "6415-Formation professionnelle continue": {}, + "6418-Autres imp\u00f4ts et taxes directs": {} + }, + "645-Imp\u00f4ts et taxes indirects": {}, + "646-Droits d\u2019enregistrement": { + "6461-Droits de mutation": {}, + "6462-Droits de timbre": {}, + "6463-Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": {}, + "6464-Vignettes": {}, + "6468-Autres droits": {} + }, + "647-P\u00e9nalit\u00e9s, amendes fiscales": { + "6471-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": {}, + "6472-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": {}, + "6473-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": {}, + "6474-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": {}, + "6478-Autres p\u00e9nalit\u00e9s et amendes fiscales": {} + }, + "648-Autres imp\u00f4ts et taxes": {} + }, + "65-Autres charges": { + "651-Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "6511-Clients": {}, + "6515-Autres d\u00e9biteurs": {} + }, + "652-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "6521-Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": {}, + "6525-Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "654-Valeurs comptables des cessions courantes d\u2019immobilisations": { + "6541-Immobilisations incorporelles": {}, + "6542-Immobilisations corporelles": {} + }, + "656-Perte de change sur cr\u00e9ances et dettes commerciale": {}, + "657-P\u00e9nalit\u00e9s et amendes p\u00e9nales": {}, + "658-Charges diverses": { + "6581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "6582-Dons": {}, + "6583-M\u00e9c\u00e9nat": {}, + "6588-Autres charges diverses": {} + }, + "659-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "6591-Sur risques \u00e0 court terme": {}, + "6593-Sur stocks": {}, + "6594-Sur cr\u00e9ances": {}, + "6598-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": {} + } + }, + "66-Charges de personnel": { + "661-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "6611-Appointements salaires et commissions": {}, + "6612-Primes et gratifications": {}, + "6613-Cong\u00e9s pay\u00e9s": {}, + "6614-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6615-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6616-Suppl\u00e9ment familial": {}, + "6617-Avantages en nature": {}, + "6618-Autres r\u00e9mun\u00e9rations directes": {} + }, + "662-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "6621-Appointements salaires et commissions": {}, + "6622-Primes et gratifications": {}, + "6623-Cong\u00e9s pay\u00e9s": {}, + "6624-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6625-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6626-Suppl\u00e9ment familial": {}, + "6627-Avantages en nature": {}, + "6628-Autres r\u00e9mun\u00e9rations directes": {} + }, + "663-Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "6631-Indemnit\u00e9s de logement": {}, + "6632-Indemnit\u00e9s de repr\u00e9sentation": {}, + "6633-Indemnit\u00e9s d\u2019expatriation": {}, + "6634-Indemnit\u00e9s de transport": {}, + "6638-Autres indemnit\u00e9s et avantages divers": {} + }, + "664-Charges sociales": { + "6641-Charges sociales sur r\u00e9mun\u00e9ration du personnel national": {}, + "6642-Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": {} + }, + "666-R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "6661-R\u00e9mun\u00e9ration du travail de l\u2019exploitant": {}, + "6662-Charges sociales": {} + }, + "667-R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "6671-Personnel int\u00e9rimaire": {}, + "6672-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "668-Autres charges sociales": { + "6681-Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": {}, + "6682-Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": {}, + "6683-Versements et contributions aux autres \u0153uvres sociales": {}, + "6684-M\u00e9decine du travail et pharmacie": {}, + "6685-Assurances et organismes de sant\u00e9": {}, + "6686-Assurances retraite et fonds de pension": {}, + "6687-Majorations et p\u00e9nalit\u00e9s sociales": {}, + "6688-Charges sociales diverses": {} + } + }, + "67-Frais financiers et charges assimil\u00e9es": { + "671-Int\u00e9r\u00eats des emprunts": { + "6711-Emprunts obligataires": {}, + "6712-Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "6713-Dettes li\u00e9es \u00e0 des participations": {}, + "6714-Primes de remboursement des obligations": {} + }, + "672-Int\u00e9r\u00eats dans loyers de location acquisition": { + "6722-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": {}, + "6723-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": {}, + "6724-Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": {}, + "6728-Int\u00e9r\u00eats dans loyers des autres locations acquisition": {} + }, + "673-Escomptes accord\u00e9s": {}, + "674-Autres int\u00e9r\u00eats": { + "6741-Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": {}, + "6742-Comptes courants bloqu\u00e9s": {}, + "6743-Int\u00e9r\u00eats sur obligations cautionn\u00e9es": {}, + "6744-Int\u00e9r\u00eats sur dettes commerciales": {}, + "6745-Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": {}, + "6748-Int\u00e9r\u00eats sur dettes diverses": {} + }, + "675-Escomptes des effets de commerce": {}, + "676-Pertes de change financi\u00e8res": {}, + "677-Pertes sur titres de placement": { + "6771-Pertes sur cessions de titres de placement": {}, + "6772-Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {} + }, + "678-Pertes et charges sur risques financiers": { + "6781-Sur rentes viag\u00e8res": {}, + "6782-Sur op\u00e9rations financi\u00e8res": {}, + "6784-Sur instruments de tr\u00e9sorerie": {} + }, + "679-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "6791-Sur risques financiers": {}, + "6795-Sur titres de placement": {}, + "6798-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "68-Dotations aux amortissements": { + "681-Dotations aux amortissements d\u2019exploitation": { + "6812-Dotations aux amortissements des immobilisations incorporelles": {}, + "6813-Dotations aux amortissements des immobilisations corporelles": {} + } + }, + "69-Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "691-Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "6911-Dotations aux provisions pour risques et charges": {}, + "6913-Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": {}, + "6914-Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": {} + }, + "697-Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "6971-Dotations aux provisions pour risques et charges": {}, + "6972-Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": {} + } + }, + "root_type": "Expense" + }, + "7-Comptes de produits des activit\u00e9s ordinaires": { + "70-Ventes": { + "701-Ventes de marchandises": { + "7011-Dans la R\u00e9gion": {}, + "7012-Hors R\u00e9gion": {}, + "7013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7015-Sur internet": {}, + "7019-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "702-Ventes de produits finis": { + "7021-Dans la R\u00e9gion": {}, + "7022-Hors R\u00e9gion": {}, + "7023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7025-Sur internet": {}, + "7029-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "703-Ventes de produits interm\u00e9diaires": { + "7031-Dans la R\u00e9gion": {}, + "7032-Hors R\u00e9gion": {}, + "7033-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7034-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7035-Sur internet": {}, + "7039-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "704-Ventes de produits r\u00e9siduels": { + "7041-Dans la R\u00e9gion": {}, + "7042-Hors R\u00e9gion": {}, + "7043-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7044-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7045-Sur internet": {}, + "7049-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "705-Travaux factur\u00e9s": { + "7051-Dans la R\u00e9gion": {}, + "7052-Hors R\u00e9gion": {}, + "7053-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7054-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7055-Sur internet": {}, + "7059-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "706-Services vendus": { + "7061-Dans la R\u00e9gion": {}, + "7062-Hors R\u00e9gion": {}, + "7063-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7064-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7065-Sur internet": {}, + "7069-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "707-Produits accessoires": { + "7071-Ports, emballages perdus et autres frais factur\u00e9s": {}, + "7072-Commissions et courtages": {}, + "7073-Locations": {}, + "7074-Bonis sur reprises et cessions d\u2019emballages": {}, + "7075-Mise \u00e0 disposition de personnel": {}, + "7076-Redevances pour brevets, logiciels, marques et droits similaires": {}, + "7077-Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": {}, + "7078-Autres produits accessoires": {} + } + }, + "71-Subventions d\u2019exploitation": { + "711-Sur produits \u00e0 l\u2019exportation": {}, + "712-Sur produits \u00e0 l\u2019importation": {}, + "713-Sur produits de p\u00e9r\u00e9quation": {}, + "714-Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": {}, + "718-Autres subventions d\u2019exploitation": { + "7181-Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": {}, + "7182-Vers\u00e9es par les organismes internationaux": {}, + "7183-Vers\u00e9es par des tiers": {} + } + }, + "72-Production immobilis\u00e9e": { + "721-Immobilisations incorporelles": {}, + "722-Immobilisations corporelles": { + "7221-Immobilisations corporelles (hors actifs biologiques)": {}, + "7222-Immobilisations corporelles (actifs biologiques)": {} + }, + "724-Production auto-consomm\u00e9e": {}, + "726-Immobilisations financi\u00e8res": {} + }, + "73-Variations des stocks de biens et de services produits": { + "734-Variations des stocks de produits en cours": { + "7341-Produits en cours": {}, + "7342-Travaux en cours": {} + }, + "735-Variations des en-cours de services": { + "7351-\u00c9tudes en cours": {}, + "7352-Prestations de services en cours": {} + }, + "736-Variations des stocks de produits finis": {}, + "737-Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "7371-Produits interm\u00e9diaires": {}, + "7372-Produits r\u00e9siduels": {} + } + }, + "75-Autres produits": { + "751-Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": {}, + "752-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "7521-Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": {}, + "7525-B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "754-Produits des cessions courantes d\u2019immobilisations": { + "7541-Immobilisations incorporelles": {}, + "7542-Immobilisations corporelles": {} + }, + "756-Gains de change sur cr\u00e9ances et dettes commerciales": {}, + "758-Produits divers": { + "7581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "7582-Indemnit\u00e9s d\u2019assurances re\u00e7ues": {}, + "7588-Autres produits divers": {} + }, + "759-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "7591-Sur risques \u00e0 court terme": {}, + "7593-Sur stocks": {}, + "7594-Sur cr\u00e9ances": {}, + "7598-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": {} + } + }, + "77-Revenus financiers et produits assimil\u00e9s": { + "771-Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "7712-Int\u00e9r\u00eats de pr\u00eats": {}, + "7713-Int\u00e9r\u00eats sur cr\u00e9ances diverses": {} + }, + "772-Revenus de participations et autres titres immobilis\u00e9s": { + "7721-Revenus des titres de participation": {}, + "7722-Revenus autres titres immobilis\u00e9s": {} + }, + "773-Escomptes obtenus": {}, + "774-Revenus de placement": { + "7745-Revenus des obligations": {}, + "7746-Revenus des titres de placement": {} + }, + "775-Int\u00e9r\u00eats dans loyers de location acquisition": {}, + "776-Gains de change financiers": {}, + "777-Gains sur cessions de titres de placement": {}, + "778-Gains sur risques financiers": { + "7781-Sur rentes viag\u00e8res": {}, + "7782-Sur op\u00e9rations financi\u00e8res": {}, + "7784-Sur instruments de tr\u00e9sorerie": {} + }, + "779-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "7791-Sur risques financiers": {}, + "7795-Sur titres de placement": {}, + "7798-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "78-Transferts de charges": { + "781-Transferts de charges d\u2019exploitation": {}, + "787-Transferts de charges financi\u00e8res": {} + }, + "79-Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "791-Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "7911-Pour risques et charges": {}, + "7913-Des immobilisations incorporelles": {}, + "7914-Des immobilisations corporelles": {} + }, + "797-Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "7971-Pour risques et charges": {}, + "7972-Des immobilisations financi\u00e8res": {} + }, + "798-Reprises d\u2019amortissements": {}, + "799-Reprises de subventions d\u2019investissement": {} + }, + "root_type": "Income" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "81-Valeurs comptables des cessions d\u2019immobilisations": { + "811-Immobilisations incorporelles": {}, + "812-Immobilisations corporelles": {}, + "816-Immobilisations financi\u00e8res": {} + }, + "83-Charges hors activit\u00e9s ordinaires": { + "831-Charges HAO constat\u00e9es": {}, + "833-Charges li\u00e9es aux op\u00e9rations de restructuration": {}, + "834-Pertes sur cr\u00e9ances HAO": {}, + "835-Dons et lib\u00e9ralit\u00e9s accord\u00e9s": {}, + "836-Abandons de cr\u00e9ances consentis": {}, + "837-Charges li\u00e9es aux op\u00e9rations de liquidation": {}, + "839-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "85-Dotations hors activit\u00e9s ordinaires": { + "851-Dotations aux provisions r\u00e9glement\u00e9es": {}, + "852-Dotations aux amortissements HAO": {}, + "853-Dotations aux d\u00e9pr\u00e9ciations HAO": {}, + "854-Dotations aux provisions pour risques et charges HAO": {}, + "858-Autres dotations HAO": {} + }, + "87-Participation des travailleurs": { + "871-Participation l\u00e9gale aux b\u00e9n\u00e9fices": {}, + "874-Participation contractuelle aux b\u00e9n\u00e9fices": {}, + "878-Autres participations": {} + }, + "89-Imp\u00f4ts sur le r\u00e9sultat": { + "891-Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "8911-Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": {}, + "8912-Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": {}, + "8913-Activit\u00e9s exerc\u00e9es hors R\u00e9gion": {} + }, + "892-Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": {}, + "895-Imp\u00f4t minimum forfaitaire IMF": {}, + "899-D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "8991-D\u00e9gr\u00e8vements": {}, + "8994-Annulations pour pertes r\u00e9troactives": {} + } + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "82-Produits des cessions d\u2019immobilisations": { + "821-Immobilisations incorporelles": {}, + "822-Immobilisations corporelles": {}, + "826-Immobilisations financi\u00e8res": {} + }, + "84-Produits hors activit\u00e9s ordinaires": { + "841-Produits HAO constat\u00e9s": {}, + "843-Produits li\u00e9s aux op\u00e9rations de restructuration": {}, + "844-Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": {}, + "845-Dons et lib\u00e9ralit\u00e9s obtenus": {}, + "846-Abandons de cr\u00e9ances obtenus": {}, + "847-Produits li\u00e9s aux op\u00e9rations de liquidation": {}, + "848-Transferts de charges HAO": {}, + "849-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "86-Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "861-Reprises de provisions r\u00e9glement\u00e9es": {}, + "862-Reprises d\u2019amortissements HAO": {}, + "863-Reprises de d\u00e9pr\u00e9ciations HAO": {}, + "864-Reprises de provisions pour risques et charges HAO": {}, + "868-Autres reprises HAO": {} + }, + "88-Subventions d\u2019\u00e9quilibre": { + "881-\u00c9tat": {}, + "884-Collectivit\u00e9s publiques": {}, + "886-Groupe": {}, + "888-Autres": {} + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/ml_plan_comptable_avec_code.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/ml_plan_comptable_avec_code.json new file mode 100644 index 00000000000..6cb3e8a1806 --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/ml_plan_comptable_avec_code.json @@ -0,0 +1,4208 @@ +{ + "country_code": "ml", + "name": "Syscohada - Plan Comptable avec code", + "tree": { + "Comptes de ressources durables": { + "Capital": { + "Capital social": { + "Capital souscrit, non appel\u00e9": { + "account_number": "1011" + }, + "Capital souscrit, appel\u00e9, non vers\u00e9": { + "account_number": "1012" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, non amorti": { + "account_number": "1013" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, amorti": { + "account_number": "1014" + }, + "Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": { + "account_number": "1018" + }, + "account_number": "101" + }, + "Capital par dotation": { + "Dotation initiale": { + "account_number": "1021" + }, + "Dotations compl\u00e9mentaires": { + "account_number": "1022" + }, + "Autres dotations": { + "account_number": "1028" + }, + "account_number": "102" + }, + "Capital personnel": { + "account_number": "103" + }, + "Compte de l\u2019exploitant": { + "Apports temporaires": { + "account_number": "1041" + }, + "Op\u00e9rations courantes": { + "account_number": "1042" + }, + "R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": { + "account_number": "1043" + }, + "Pr\u00e9l\u00e8vements d\u2019autoconsommation": { + "account_number": "1047" + }, + "Autres pr\u00e9l\u00e8vements": { + "account_number": "1048" + }, + "account_number": "104" + }, + "Primes li\u00e9es au capital social": { + "Primes d\u2019\u00e9mission": { + "account_number": "1051" + }, + "Primes d\u2019apport": { + "account_number": "1052" + }, + "Primes de fusion": { + "account_number": "1053" + }, + "Primes de conversion": { + "account_number": "1054" + }, + "Autres primes": { + "account_number": "1058" + }, + "account_number": "105" + }, + "\u00c9carts de r\u00e9\u00e9valuation": { + "\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": { + "account_number": "1061" + }, + "\u00c9carts de r\u00e9\u00e9valuation libre": { + "account_number": "1062" + }, + "account_number": "106" + }, + "Apporteurs, capital souscrit, non appel\u00e9": { + "account_number": "109" + }, + "account_number": "10" + }, + "R\u00e9serves": { + "R\u00e9serve l\u00e9gale": { + "account_number": "111" + }, + "R\u00e9serves statutaires ou contractuelles": { + "account_number": "112" + }, + "R\u00e9serves r\u00e9glement\u00e9es": { + "R\u00e9serves de plus-values nettes \u00e0 long terme": { + "account_number": "1131" + }, + "R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "1132" + }, + "R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": { + "account_number": "1133" + }, + "R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": { + "account_number": "1134" + }, + "Autres r\u00e9serves r\u00e9glement\u00e9es": { + "account_number": "1135" + }, + "account_number": "113" + }, + "Autres r\u00e9serves": { + "R\u00e9serves facultatives": { + "account_number": "1181" + }, + "R\u00e9serves diverses": { + "account_number": "1188" + }, + "account_number": "118" + }, + "account_number": "11" + }, + "Report \u00e0 nouveau": { + "Report \u00e0 nouveau cr\u00e9diteur": { + "account_number": "121" + }, + "Report \u00e0 nouveau d\u00e9biteur": { + "Perte nette \u00e0 reporter": { + "account_number": "1291" + }, + "Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": { + "account_number": "1292" + }, + "account_number": "129" + }, + "account_number": "12" + }, + "R\u00e9sultat net de l\u2019exercice": { + "R\u00e9sultat en instance d\u2019affectation": { + "R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": { + "account_number": "1301" + }, + "R\u00e9sultat en instance d\u2019affectation : perte": { + "account_number": "1309" + }, + "account_number": "130" + }, + "R\u00e9sultat net : b\u00e9n\u00e9fice": { + "account_number": "131" + }, + "Marge commerciale (MC)": { + "account_number": "132" + }, + "Valeur ajout\u00e9e (VA)": { + "account_number": "133" + }, + "Exc\u00e9dent brut d\u2019exploitation (EBE)": { + "account_number": "134" + }, + "R\u00e9sultat d\u2019exploitation (RE)": { + "account_number": "135" + }, + "R\u00e9sultat financier (RF)": { + "account_number": "136" + }, + "R\u00e9sultat des activit\u00e9s ordinaires (RAO)": { + "account_number": "137" + }, + "R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "R\u00e9sultat de fusion": { + "account_number": "1381" + }, + "R\u00e9sultat d\u2019apport partiel d\u2019actif": { + "account_number": "1382" + }, + "R\u00e9sultat de scission": { + "account_number": "1383" + }, + "R\u00e9sultat de liquidation": { + "account_number": "1384" + }, + "account_number": "138" + }, + "R\u00e9sultat net : perte": { + "account_number": "139" + }, + "account_number": "13" + }, + "Subventions d\u2019investissement": { + "Subventions d\u2019\u00e9quipement": { + "\u00c9tat": { + "account_number": "1411" + }, + "R\u00e9gions": { + "account_number": "1412" + }, + "D\u00e9partements": { + "account_number": "1413" + }, + "Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": { + "account_number": "1414" + }, + "Entit\u00e9s publiques ou mixtes": { + "account_number": "1415" + }, + "Entit\u00e9s et organismes priv\u00e9s": { + "account_number": "1416" + }, + "Organismes internationaux": { + "account_number": "1417" + }, + "Autres": { + "account_number": "1418" + }, + "account_number": "141" + }, + "Autres subventions d\u2019investissement": { + "account_number": "148" + }, + "account_number": "14" + }, + "Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "Amortissements d\u00e9rogatoires": { + "account_number": "151" + }, + "Plus-values de cession \u00e0 r\u00e9investir": { + "account_number": "152" + }, + "Fonds r\u00e9glement\u00e9s": { + "Fonds National": { + "account_number": "1531" + }, + "Pr\u00e9l\u00e8vement pour le Budget": { + "account_number": "1532" + }, + "account_number": "153" + }, + "Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": { + "account_number": "154" + }, + "Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "Reconstitution des gisements miniers et p\u00e9troliers": { + "account_number": "1551" + }, + "account_number": "155" + }, + "Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "Hausse de prix": { + "account_number": "1561" + }, + "Fluctuation des cours": { + "account_number": "1562" + }, + "account_number": "156" + }, + "Provisions pour investissement": { + "account_number": "157" + }, + "Autres provisions et fonds r\u00e9glement\u00e9s": { + "account_number": "158" + }, + "account_number": "15" + }, + "Emprunts et dettes assimil\u00e9es": { + "Emprunts obligataires": { + "Emprunts obligataires ordinaires": { + "account_number": "1611" + }, + "Emprunts obligataires convertibles en actions": { + "account_number": "1612" + }, + "Emprunts obligataires remboursables en actions": { + "account_number": "1613" + }, + "Autres emprunts obligataires": { + "account_number": "1618" + }, + "account_number": "161" + }, + "Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "162" + }, + "Avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "163" + }, + "Avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "164" + }, + "D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "D\u00e9p\u00f4ts": { + "account_number": "1651" + }, + "Cautionnements": { + "account_number": "1652" + }, + "account_number": "165" + }, + "Int\u00e9r\u00eats courus": { + "Sur emprunts obligataires": { + "account_number": "1661" + }, + "Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "1662" + }, + "Sur avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "1663" + }, + "Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "1664" + }, + "Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "account_number": "1665" + }, + "Sur avances assorties de conditions particuli\u00e8res": { + "account_number": "1667" + }, + "Sur autres emprunts et dettes": { + "account_number": "1668" + }, + "account_number": "166" + }, + "Avances assorties de conditions particuli\u00e8res": { + "Avances bloqu\u00e9es pour augmentation du capital": { + "account_number": "1671" + }, + "Avances conditionn\u00e9es par l\u2019\u00c9tat": { + "account_number": "1672" + }, + "Avances conditionn\u00e9es par les autres organismes africains": { + "account_number": "1673" + }, + "Avances conditionn\u00e9es par les organismes internationaux": { + "account_number": "1674" + }, + "account_number": "167" + }, + "Autres emprunts et dettes": { + "Rentes viag\u00e8res capitalis\u00e9es": { + "account_number": "1681" + }, + "Billets de fonds": { + "account_number": "1682" + }, + "Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": { + "account_number": "1683" + }, + "Emprunts participatifs": { + "account_number": "1684" + }, + "Participation des travailleurs aux b\u00e9n\u00e9fices": { + "account_number": "1685" + }, + "Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": { + "account_number": "1686" + }, + "account_number": "168" + }, + "account_number": "16" + }, + "Dettes de location acquisition": { + "Dettes de location acquisition / cr\u00e9dit bail immobilier": { + "account_number": "172" + }, + "Dettes de location acquisition / cr\u00e9dit bail mobilier": { + "account_number": "173" + }, + "Dettes de location acquisition / location de vente": { + "account_number": "174" + }, + "Int\u00e9r\u00eats courus": { + "Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "1762" + }, + "Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "1763" + }, + "Sur dettes de location acquisition / location-vente": { + "account_number": "1764" + }, + "Sur autres dettes de location acquisition": { + "account_number": "1768" + }, + "account_number": "176" + }, + "Autres dettes de location acquisition": { + "account_number": "178" + }, + "account_number": "17" + }, + "Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "Dettes li\u00e9es \u00e0 des participations": { + "Dettes li\u00e9es \u00e0 des participations (groupe)": { + "account_number": "1811" + }, + "Dettes li\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "1812" + }, + "account_number": "181" + }, + "Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "182" + }, + "Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": { + "account_number": "183" + }, + "Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "184" + }, + "Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "185" + }, + "Comptes de liaison charges": { + "account_number": "186" + }, + "Comptes de liaison produits": { + "account_number": "187" + }, + "Comptes de liaison des soci\u00e9t\u00e9s en participation": { + "account_number": "188" + }, + "account_number": "18" + }, + "Provisions pour risques et charges": { + "Provisions pour litiges": { + "account_number": "191" + }, + "Provisions pour garanties donn\u00e9es aux clients": { + "account_number": "192" + }, + "Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": { + "account_number": "193" + }, + "Provisions pour pertes de change": { + "account_number": "194" + }, + "Provisions pour imp\u00f4ts": { + "account_number": "195" + }, + "Provisions pour pensions et obligations similaires": { + "Provisions pour pensions et obligations similaires engagement de retraite": { + "account_number": "1961" + }, + "Actif du r\u00e9gime de retraite": { + "account_number": "1962" + }, + "account_number": "196" + }, + "Provisions pour restructuration": { + "account_number": "197" + }, + "Autres provisions pour risques et charges": { + "Provisions pour amendes et p\u00e9nalit\u00e9s": { + "account_number": "1981" + }, + "Provisions pour propre assureur": { + "account_number": "1983" + }, + "Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "1984" + }, + "Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": { + "account_number": "1985" + }, + "Provisions pour divers risques et charges": { + "account_number": "1988" + }, + "account_number": "198" + }, + "account_number": "19" + }, + "root_type": "Equity", + "account_number": "1" + }, + "Comptes d\u2019actif immobilis\u00e9": { + "Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "211" + }, + "Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "Brevets": { + "account_type": "Fixed Asset", + "account_number": "2121" + }, + "Licences": { + "account_type": "Fixed Asset", + "account_number": "2122" + }, + "Concessions de service public": { + "account_type": "Fixed Asset", + "account_number": "2123" + }, + "Autres concessions et droits similaires": { + "account_type": "Fixed Asset", + "account_number": "2128" + }, + "account_number": "212" + }, + "Logiciels et sites internet": { + "account_type": "Fixed Asset", + "Logiciels": { + "account_type": "Fixed Asset", + "account_number": "2131" + }, + "Sites internet": { + "account_type": "Fixed Asset", + "account_number": "2132" + }, + "account_number": "213" + }, + "Marques": { + "account_type": "Fixed Asset", + "account_number": "214" + }, + "Fonds commercial": { + "account_type": "Fixed Asset", + "account_number": "215" + }, + "Droit au bail": { + "account_type": "Fixed Asset", + "account_number": "216" + }, + "Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset", + "account_number": "217" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset", + "account_number": "2181" + }, + "Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset", + "account_number": "2182" + }, + "Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset", + "account_number": "2183" + }, + "Co\u00fbts des franchises": { + "account_type": "Fixed Asset", + "account_number": "2184" + }, + "Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset", + "account_number": "2188" + }, + "account_number": "218" + }, + "Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "2191" + }, + "Logiciels et internet": { + "account_type": "Fixed Asset", + "account_number": "2193" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "account_number": "2198" + }, + "account_number": "219" + }, + "account_number": "21" + }, + "Terrains": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset", + "account_number": "2211" + }, + "Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset", + "account_number": "2212" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2218" + }, + "account_number": "221" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset", + "account_number": "2221" + }, + "Autres terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2228" + }, + "account_number": "222" + }, + "Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset", + "account_number": "2231" + }, + "Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset", + "account_number": "2232" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2234" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2235" + }, + "Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "account_number": "2238" + }, + "account_number": "223" + }, + "Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset", + "account_number": "2241" + }, + "Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset", + "account_number": "2245" + }, + "Autres travaux": { + "account_type": "Fixed Asset", + "account_number": "2248" + }, + "account_number": "224" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "Carri\u00e8res": { + "account_type": "Fixed Asset", + "account_number": "2251" + }, + "account_number": "225" + }, + "Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "Parkings": { + "account_type": "Fixed Asset", + "account_number": "2261" + }, + "account_number": "226" + }, + "Terrains mis en concession": { + "account_type": "Fixed Asset", + "account_number": "227" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "Terrains immeubles de placement": { + "account_type": "Fixed Asset", + "account_number": "2281" + }, + "Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset", + "account_number": "2285" + }, + "Terrains de location acquisition": { + "account_type": "Fixed Asset", + "account_number": "2286" + }, + "Divers terrains": { + "account_type": "Fixed Asset", + "account_number": "2288" + }, + "account_number": "228" + }, + "Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "account_number": "2291" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2292" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "account_number": "2295" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2298" + }, + "account_number": "229" + }, + "account_number": "22" + }, + "B\u00e2timents, installations techniques et agencements": { + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "B\u00e2timents industriels": { + "account_number": "2311" + }, + "B\u00e2timents agricoles": { + "account_number": "2312" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2313" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2314" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2315" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2316" + }, + "account_number": "231" + }, + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "B\u00e2timents industriels": { + "account_number": "2321" + }, + "B\u00e2timents agricoles": { + "account_number": "2322" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2323" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2324" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2325" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2326" + }, + "account_number": "232" + }, + "Ouvrages d\u2019infrastructure": { + "Voies de terre": { + "account_number": "2331" + }, + "Voies de fer": { + "account_number": "2332" + }, + "Voies d\u2019eau": { + "account_number": "2333" + }, + "Barrages, Digues": { + "account_number": "2334" + }, + "Pistes d\u2019a\u00e9rodrome": { + "account_number": "2335" + }, + "Autres ouvrages d\u2019infrastructures": { + "account_number": "2338" + }, + "account_number": "233" + }, + "Am\u00e9nagements, agencements et installations techniques": { + "Installations complexes sp\u00e9cialis\u00e9es sur sol propre": { + "account_number": "2341" + }, + "Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": { + "account_number": "2342" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": { + "account_number": "2343" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": { + "account_number": "2344" + }, + "Am\u00e9nagements et agencements des b\u00e2timents": { + "account_number": "2345" + }, + "account_number": "234" + }, + "Am\u00e9nagements de bureaux": { + "Installations g\u00e9n\u00e9rales": { + "account_number": "2351" + }, + "Autres am\u00e9nagements de bureaux": { + "account_number": "2358" + }, + "account_number": "235" + }, + "B\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "237" + }, + "Autres installations et agencements": { + "account_number": "238" + }, + "B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "B\u00e2timents en cours": { + "account_number": "2391" + }, + "Installations en cours": { + "account_number": "2392" + }, + "Ouvrages d\u2019infrastructure en cours": { + "account_number": "2393" + }, + "Am\u00e9nagements et agencements et installations techniques en cours": { + "account_number": "2394" + }, + "Am\u00e9nagements de bureaux en cours": { + "account_number": "2395" + }, + "Autres installations et agencements en cours": { + "account_number": "2398" + }, + "account_number": "239" + }, + "account_number": "23" + }, + "Mat\u00e9riel, mobilier et actifs biologiques": { + "Mat\u00e9riel et outillage industriel et commercial": { + "Mat\u00e9riel industriel": { + "account_number": "2411" + }, + "Outillage industriel": { + "account_number": "2412" + }, + "Mat\u00e9riel commercial": { + "account_number": "2413" + }, + "Outillage commercial": { + "account_number": "2414" + }, + "Mat\u00e9riel & outillage industriel et commercial de location-acquisition": { + "account_number": "2416" + }, + "account_number": "241" + }, + "Mat\u00e9riel et outillage agricole": { + "Mat\u00e9riel agricole": { + "account_number": "2421" + }, + "Outillage agricole": { + "account_number": "2422" + }, + "Mat\u00e9riel & outillage agricole de location-acquisition": { + "account_number": "2426" + }, + "account_number": "242" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "243" + }, + "Mat\u00e9riel et mobilier": { + "Mat\u00e9riel de bureau": { + "account_number": "2441" + }, + "Mat\u00e9riel informatique": { + "account_number": "2442" + }, + "Mat\u00e9riel bureautique": { + "account_number": "2443" + }, + "Mobilier de bureau": { + "account_number": "2444" + }, + "Mat\u00e9riel et mobilier immeubles de placement": { + "account_number": "2445" + }, + "Mat\u00e9riel et mobilier de location acquisition": { + "account_number": "2446" + }, + "Mat\u00e9riel et mobilier des logements du personnel": { + "account_number": "2447" + }, + "account_number": "244" + }, + "Mat\u00e9riel de transport": { + "Mat\u00e9riel automobile": { + "account_number": "2451" + }, + "Mat\u00e9riel ferroviaire": { + "account_number": "2452" + }, + "Mat\u00e9riel fluvial, lagunaire": { + "account_number": "2453" + }, + "Mat\u00e9riel naval": { + "account_number": "2454" + }, + "Mat\u00e9riel a\u00e9rien": { + "account_number": "2455" + }, + "Mat\u00e9riel de transport de location-acquisition": { + "account_number": "2456" + }, + "Mat\u00e9riel hippomobile": { + "account_number": "2457" + }, + "Autres mat\u00e9riels de transport": { + "account_number": "2458" + }, + "account_number": "245" + }, + "Actifs biologiques": { + "Cheptel, animaux de trait": { + "account_number": "2461" + }, + "Cheptel, animaux reproducteurs": { + "account_number": "2462" + }, + "Animaux de garde": { + "account_number": "2463" + }, + "Plantations agricoles": { + "account_number": "2465" + }, + "Autres actifs biologiques": { + "account_number": "2468" + }, + "account_number": "246" + }, + "Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "Agencements et am\u00e9nagements du mat\u00e9riel": { + "account_number": "2471" + }, + "Agencements et am\u00e9nagements des actifs biologiques": { + "account_number": "2472" + }, + "Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2478" + }, + "account_number": "247" + }, + "Autres mat\u00e9riels et mobiliers": { + "Collections et \u0153uvres d\u2019art": { + "account_number": "2481" + }, + "Divers mat\u00e9riels mobiliers": { + "account_number": "2488" + }, + "account_number": "248" + }, + "Mat\u00e9riels et actifs biologiques en cours": { + "Mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2491" + }, + "Mat\u00e9riel et outillage agricole": { + "account_number": "2492" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2493" + }, + "Mat\u00e9riel et mobilier de bureau": { + "account_number": "2494" + }, + "Mat\u00e9riel de transport": { + "account_number": "2495" + }, + "Actifs biologiques": { + "account_number": "2496" + }, + "Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2497" + }, + "Autres mat\u00e9riels et actifs biologiques en cours": { + "account_number": "2498" + }, + "account_number": "249" + }, + "account_number": "24" + }, + "Avances et acomptes vers\u00e9s sur immobilisations": { + "Avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "251" + }, + "Avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "252" + }, + "account_number": "25" + }, + "Titres de participation": { + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "261" + }, + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "262" + }, + "Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "263" + }, + "Participations dans des organismes professionnels": { + "account_number": "265" + }, + "Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "266" + }, + "Autres titres de participation": { + "account_number": "268" + }, + "account_number": "26" + }, + "Autres immobilisations financi\u00e8res": { + "Pr\u00eats et cr\u00e9ances": { + "Pr\u00eats participatifs": { + "account_number": "2711" + }, + "Pr\u00eats aux associ\u00e9s": { + "account_number": "2712" + }, + "Billets de fonds": { + "account_number": "2713" + }, + "Titres pr\u00eat\u00e9s": { + "account_number": "2714" + }, + "Autres pr\u00eats et cr\u00e9ances": { + "account_number": "2718" + }, + "account_number": "271" + }, + "Pr\u00eats au personnel": { + "Pr\u00eats immobiliers": { + "account_number": "2721" + }, + "Pr\u00eats mobiliers et d\u2019installation": { + "account_number": "2722" + }, + "Autres pr\u00eats au personnel": { + "account_number": "2728" + }, + "account_number": "272" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "Retenues de garantie": { + "account_number": "2731" + }, + "Fonds r\u00e9glement\u00e9": { + "account_number": "2733" + }, + "Cr\u00e9ances sur le conc\u00e9dant": { + "account_number": "2734" + }, + "Autres cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2738" + }, + "account_number": "273" + }, + "Titres immobilis\u00e9s": { + "Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": { + "account_number": "2741" + }, + "Titres participatifs": { + "account_number": "2742" + }, + "Certificats d\u2019investissement": { + "account_number": "2743" + }, + "Parts de fonds commun de placement (FCP)": { + "account_number": "2744" + }, + "Obligations": { + "account_number": "2745" + }, + "Actions ou parts propres": { + "account_number": "2746" + }, + "Autres titres immobilis\u00e9s": { + "account_number": "2748" + }, + "account_number": "274" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "D\u00e9p\u00f4ts pour loyers d\u2019avance": { + "account_number": "2751" + }, + "D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": { + "account_number": "2752" + }, + "D\u00e9p\u00f4ts pour l\u2019eau": { + "account_number": "2753" + }, + "D\u00e9p\u00f4ts pour le gaz": { + "account_number": "2754" + }, + "D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": { + "account_number": "2755" + }, + "Cautionnements sur march\u00e9s publics": { + "account_number": "2756" + }, + "Cautionnements sur autres op\u00e9rations": { + "account_number": "2757" + }, + "Autres d\u00e9p\u00f4ts et cautionnements": { + "account_number": "2758" + }, + "account_number": "275" + }, + "Int\u00e9r\u00eats courus": { + "Pr\u00eats et cr\u00e9ances non commerciales": { + "account_number": "2761" + }, + "Pr\u00eats au personnel": { + "account_number": "2762" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2763" + }, + "Titres immobilis\u00e9s": { + "account_number": "2764" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2765" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "account_number": "2767" + }, + "Immobilisations financi\u00e8res diverses": { + "account_number": "2768" + }, + "account_number": "276" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": { + "account_number": "2771" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "2772" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "2773" + }, + "Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "2774" + }, + "account_number": "277" + }, + "Immobilisations financi\u00e8res diverses": { + "Cr\u00e9ances diverses groupe": { + "account_number": "2781" + }, + "Cr\u00e9ances diverses hors groupe": { + "account_number": "2782" + }, + "Banques d\u00e9p\u00f4ts \u00e0 terme": { + "account_number": "2784" + }, + "Or et m\u00e9taux pr\u00e9cieux": { + "account_number": "2785" + }, + "Autres immobilisations financi\u00e8res": { + "account_number": "2788" + }, + "account_number": "278" + }, + "account_number": "27" + }, + "Amortissements": { + "account_type": "Accumulated Depreciation", + "Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation", + "account_number": "2811" + }, + "Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation", + "account_number": "2812" + }, + "Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation", + "account_number": "2813" + }, + "Amortissements des marques": { + "account_type": "Accumulated Depreciation", + "account_number": "2814" + }, + "Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation", + "account_number": "2815" + }, + "Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation", + "account_number": "2816" + }, + "Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation", + "account_number": "2817" + }, + "Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation", + "account_number": "2818" + }, + "account_number": "281" + }, + "Amortissements des terrains": { + "Amortissements des travaux de mise en valeur des terrains": { + "account_number": "2824" + }, + "account_number": "282" + }, + "Amortissements des b\u00e2timents, installations techniques et agencements": { + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2831" + }, + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2832" + }, + "Amortissements des ouvrages d\u2019infrastructure": { + "account_number": "2833" + }, + "Amortissements des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2834" + }, + "Amortissements des am\u00e9nagements de bureaux": { + "account_number": "2835" + }, + "Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2837" + }, + "Amortissements des autres installations et agencements": { + "account_number": "2838" + }, + "account_number": "283" + }, + "Amortissements du mat\u00e9riel": { + "Amortissements du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2841" + }, + "Amortissements du mat\u00e9riel et outillage agricole": { + "account_number": "2842" + }, + "Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2843" + }, + "Amortissements du mat\u00e9riel et mobilier": { + "account_number": "2844" + }, + "Amortissements du mat\u00e9riel de transport": { + "account_number": "2845" + }, + "Amortissements des actifs biologiques": { + "account_number": "2846" + }, + "Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2847" + }, + "Amortissements des autres mat\u00e9riels": { + "account_number": "2848" + }, + "account_number": "284" + }, + "account_number": "28" + }, + "D\u00e9pr\u00e9ciations des immobilisations": { + "D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": { + "account_number": "2911" + }, + "D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": { + "account_number": "2912" + }, + "D\u00e9pr\u00e9ciations des logiciels et sites internet": { + "account_number": "2913" + }, + "D\u00e9pr\u00e9ciations des marques": { + "account_number": "2914" + }, + "D\u00e9pr\u00e9ciations du fonds commercial": { + "account_number": "2915" + }, + "D\u00e9pr\u00e9ciations du droit au bail": { + "account_number": "2916" + }, + "D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": { + "account_number": "2917" + }, + "D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": { + "account_number": "2918" + }, + "D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": { + "account_number": "2919" + }, + "account_number": "291" + }, + "D\u00e9pr\u00e9ciations des terrains": { + "D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": { + "account_number": "2921" + }, + "D\u00e9pr\u00e9ciations des terrains nus": { + "account_number": "2922" + }, + "D\u00e9pr\u00e9ciations des terrains b\u00e2tis": { + "account_number": "2923" + }, + "D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": { + "account_number": "2924" + }, + "D\u00e9pr\u00e9ciations des terrains de gisement": { + "account_number": "2925" + }, + "D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": { + "account_number": "2926" + }, + "D\u00e9pr\u00e9ciations des terrains mis en concession": { + "account_number": "2927" + }, + "D\u00e9pr\u00e9ciations des autres terrains": { + "account_number": "2928" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": { + "account_number": "2929" + }, + "account_number": "292" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2931" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2932" + }, + "D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": { + "account_number": "2933" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2934" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": { + "account_number": "2935" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2937" + }, + "D\u00e9pr\u00e9ciations des autres installations et agencements": { + "account_number": "2938" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": { + "account_number": "2939" + }, + "account_number": "293" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2941" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": { + "account_number": "2942" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2943" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": { + "account_number": "2944" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": { + "account_number": "2945" + }, + "D\u00e9pr\u00e9ciations des actifs biologiques": { + "account_number": "2946" + }, + "D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2947" + }, + "D\u00e9pr\u00e9ciations des autres mat\u00e9riels": { + "account_number": "2948" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": { + "account_number": "2949" + }, + "account_number": "294" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "2951" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "2952" + }, + "account_number": "295" + }, + "D\u00e9pr\u00e9ciations des titres de participation": { + "D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "2961" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "2962" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "2963" + }, + "D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": { + "account_number": "2965" + }, + "D\u00e9pr\u00e9ciations des parts dans des GIE": { + "account_number": "2966" + }, + "D\u00e9pr\u00e9ciations des autres titres de participation": { + "account_number": "2968" + }, + "account_number": "296" + }, + "D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": { + "account_number": "2971" + }, + "D\u00e9pr\u00e9ciations des pr\u00eats au personnel": { + "account_number": "2972" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2973" + }, + "D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": { + "account_number": "2974" + }, + "D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2975" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "account_number": "2977" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": { + "account_number": "2978" + }, + "account_number": "297" + }, + "account_number": "29" + }, + "root_type": "Asset", + "account_number": "2" + }, + "Comptes de Stocks": { + "Marchandises": { + "Marchandises A": { + "Marchandises A1": { + "account_number": "3111" + }, + "Marchandises A2": { + "account_number": "3112" + }, + "account_number": "311" + }, + "Marchandises B": { + "Marchandises B1": { + "account_number": "3121" + }, + "Marchandises B2": { + "account_number": "3122" + }, + "account_number": "312" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3131" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3132" + }, + "account_number": "313" + }, + "Marchandises hors activit\u00e9s ordinaires (HAO)": { + "account_number": "318" + }, + "account_number": "31" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Mati\u00e8res A": { + "account_number": "321" + }, + "Mati\u00e8res B": { + "account_number": "322" + }, + "Fournitures (A, B)": { + "account_number": "323" + }, + "account_number": "32" + }, + "Autres approvisionnements": { + "Mati\u00e8res consommables": { + "account_number": "331" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "332" + }, + "Fournitures de magasin": { + "account_number": "333" + }, + "Fournitures de bureau": { + "account_number": "334" + }, + "Emballages": { + "Emballages perdus": { + "account_number": "3351" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "3352" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "3353" + }, + "Autres emballages": { + "account_number": "3358" + }, + "account_number": "335" + }, + "Autres mati\u00e8res": { + "account_number": "338" + }, + "account_number": "33" + }, + "Produits en cours": { + "Produits en cours": { + "Produits en cours P1": { + "account_number": "3411" + }, + "Produits en cours P2": { + "account_number": "3412" + }, + "account_number": "341" + }, + "Travaux en cours": { + "Travaux en cours T1": { + "account_number": "3421" + }, + "Travaux en cours T2": { + "account_number": "3422" + }, + "account_number": "342" + }, + "Produits interm\u00e9diaires en cours": { + "Produits interm\u00e9diaires A": { + "account_number": "3431" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3432" + }, + "account_number": "343" + }, + "Produits r\u00e9siduels en cours": { + "Produits r\u00e9siduels A": { + "account_number": "3441" + }, + "Produits r\u00e9siduels B": { + "account_number": "3442" + }, + "account_number": "344" + }, + "Actifs biologiques en cours": { + "Animaux": { + "account_number": "3451" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3452" + }, + "account_number": "345" + }, + "account_number": "34" + }, + "Services en cours": { + "\u00c9tudes en cours": { + "\u00c9tudes en cours E1": { + "account_number": "3511" + }, + "\u00c9tudes en cours E2": { + "account_number": "3512" + }, + "account_number": "351" + }, + "Prestations de services en cours": { + "Prestations de services S1": { + "account_number": "3521" + }, + "Prestations de services S2": { + "account_number": "3522" + } + }, + "account_number": "35" + }, + "Produits finis": { + "Produits finis A": { + "account_number": "361" + }, + "Produits finis B": { + "account_number": "362" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3631" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3632" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3638" + }, + "account_number": "363" + }, + "account_number": "36" + }, + "Produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "Produits interm\u00e9diaires A": { + "account_number": "3711" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3712" + }, + "account_number": "371" + }, + "Produits r\u00e9siduels": { + "D\u00e9chets": { + "account_number": "3721" + }, + "Rebuts": { + "account_number": "3722" + }, + "Mati\u00e8res de R\u00e9cup\u00e9ration": { + "account_number": "3723" + }, + "account_number": "372" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3731" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3732" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3738" + }, + "account_number": "373" + }, + "account_number": "37" + }, + "Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "Marchandises en cours de route": { + "account_number": "381" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": { + "account_number": "382" + }, + "Autres approvisionnements en cours de route": { + "account_number": "383" + }, + "Produits finis en cours de route": { + "account_number": "386" + }, + "Stock en consignation ou en d\u00e9p\u00f4t": { + "Stock en consignation": { + "account_number": "3871" + }, + "Stock en d\u00e9p\u00f4t": { + "account_number": "3872" + }, + "account_number": "387" + }, + "Stock provenant d\u2019immobilisations mises hors service ou au rebut": { + "account_number": "388" + }, + "account_number": "38" + }, + "D\u00e9pr\u00e9ciations des stocks et encours de production": { + "D\u00e9pr\u00e9ciations des stocks de marchandises": { + "account_number": "391" + }, + "D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "392" + }, + "D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": { + "account_number": "393" + }, + "D\u00e9pr\u00e9ciations des productions en cours": { + "account_number": "394" + }, + "D\u00e9pr\u00e9ciations des services en cours": { + "account_number": "395" + }, + "D\u00e9pr\u00e9ciations des stocks de produits finis": { + "account_number": "396" + }, + "D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "account_number": "397" + }, + "D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_number": "398" + }, + "account_number": "39" + }, + "root_type": "Asset", + "account_number": "3" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "Fournisseurs d\u00e9biteurs": { + "Fournisseurs Avances et acomptes vers\u00e9s": { + "account_number": "4091" + }, + "Fournisseurs Groupe avances et acomptes vers\u00e9s": { + "account_number": "4092" + }, + "Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": { + "account_number": "4093" + }, + "Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": { + "account_number": "4094" + }, + "Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": { + "account_number": "4098" + }, + "account_number": "409" + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "Clients": { + "Clients": { + "account_type": "Receivable", + "account_number": "4111" + }, + "Clients groupe": { + "account_type": "Receivable", + "account_number": "4112" + }, + "Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable", + "account_number": "4114" + }, + "Clients, organismes internationaux": { + "account_type": "Receivable", + "account_number": "4115" + }, + "Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable", + "account_number": "4116" + }, + "Client, retenues de garantie": { + "account_type": "Receivable", + "account_number": "4117" + }, + "Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable", + "account_number": "4118" + }, + "account_type": "Receivable", + "account_number": "411" + }, + "Clients, effets \u00e0 recevoir en portefeuille": { + "Clients, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4121" + }, + "Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4122" + }, + "\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4124" + }, + "Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4125" + }, + "account_type": "Receivable", + "account_number": "412" + }, + "Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4131" + }, + "Clients, effets impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4132" + }, + "Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4133" + }, + "Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4138" + }, + "account_type": "Receivable", + "account_number": "413" + }, + "Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4141" + }, + "Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4142" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4146" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4147" + }, + "account_type": "Receivable", + "account_number": "414" + }, + "Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable", + "account_number": "415" + }, + "Cr\u00e9ances clients litigieuses ou douteuses": { + "Cr\u00e9ances litigieuses": { + "account_type": "Receivable", + "account_number": "4161" + }, + "Cr\u00e9ances douteuses": { + "account_type": "Receivable", + "account_number": "4162" + }, + "account_type": "Receivable", + "account_number": "416" + }, + "Clients, produits \u00e0 recevoir": { + "Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable", + "account_number": "4181" + }, + "Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable", + "account_number": "4186" + }, + "account_type": "Receivable", + "account_number": "418" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "Personnel, avances et acomptes": { + "Personnel, avances": { + "account_number": "4211" + }, + "Personnel, acomptes": { + "account_number": "4212" + }, + "Frais avanc\u00e9s et fournitures au personnel": { + "account_number": "4213" + }, + "account_number": "421" + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "Prestations familiales": { + "account_number": "4311" + }, + "Accidents de travail": { + "account_number": "4312" + }, + "Caisse de retraite obligatoire": { + "account_number": "4313" + }, + "Caisse de retraite facultative": { + "account_number": "4314" + }, + "Autres cotisations sociales": { + "account_number": "4318" + } + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "Mutuelle": { + "account_number": "4331" + }, + "Assurances retraite": { + "account_number": "4332" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "4333" + } + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Produits \u00e0 recevoir": { + "account_number": "4387" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "\u00c9tat, TVA factur\u00e9e": { + "TVA factur\u00e9e sur ventes": { + "account_number": "4431" + }, + "TVA factur\u00e9e sur prestations de services": { + "account_number": "4432" + }, + "TVA factur\u00e9e sur travaux": { + "account_number": "4433" + }, + "TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": { + "account_number": "4434" + }, + "TVA sur factures \u00e0 \u00e9tablir": { + "account_number": "4435" + }, + "account_number": "443" + }, + "\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "TVA r\u00e9cup\u00e9rable sur immobilisations": { + "account_number": "4451" + }, + "TVA r\u00e9cup\u00e9rable sur achats": { + "account_number": "4452" + }, + "TVA r\u00e9cup\u00e9rable sur transport": { + "account_number": "4453" + }, + "TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": { + "account_number": "4454" + }, + "TVA r\u00e9cup\u00e9rable sur factures non parvenues": { + "account_number": "4455" + }, + "TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": { + "account_number": "4456" + }, + "account_number": "445" + }, + "\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges \u00e0 payer": { + "account_number": "4486" + }, + "Produits \u00e0 recevoir": { + "account_number": "4487" + }, + "account_number": "448" + }, + "\u00c9tat, cr\u00e9ances et dettes diverses": { + "\u00c9tat, obligations cautionn\u00e9es": { + "account_number": "4491" + }, + "\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": { + "account_number": "4492" + }, + "\u00c9tat, fonds de dotation \u00e0 recevoir": { + "account_number": "4493" + }, + "\u00c9tat, subventions investissement \u00e0 recevoir": { + "account_number": "4494" + }, + "\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": { + "account_number": "4495" + }, + "\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": { + "account_number": "4496" + }, + "\u00c9tat, avances sur subventions": { + "account_number": "4497" + }, + "\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": { + "account_number": "4499" + }, + "account_number": "449" + } + }, + "45-Organismes internationaux (ACTIF)": { + "Op\u00e9rations avec les organismes africains": { + "account_number": "451" + }, + "Op\u00e9rations avec les autres organismes internationaux": { + "account_number": "452" + }, + "Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "Organismes internationaux, fonds de dotation \u00e0 recevoir": { + "account_number": "4581" + }, + "Organismes internationaux, subventions \u00e0 recevoir": { + "account_number": "4582" + }, + "account_number": "458" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "Apporteurs, capital appel\u00e9, non vers\u00e9": { + "account_number": "4613" + }, + "Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": { + "account_number": "4614" + }, + "Apporteurs, titres \u00e0 \u00e9changer": { + "account_number": "4618" + } + }, + "Apporteurs, restant d\u00fb sur capital appel\u00e9": { + "account_number": "467" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4721" + }, + "Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": { + "account_number": "4726" + } + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "Mandants": { + "account_number": "4731" + }, + "Mandataires": { + "account_number": "4732" + }, + "Commettants": { + "account_number": "4733" + }, + "Commissionnaires": { + "account_number": "4734" + }, + "\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": { + "account_number": "4739" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "Compte de r\u00e9partition p\u00e9riodique des produits": { + "account_number": "4747" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "Compte actif": { + "account_type": "Temporary", + "account_number": "4751" + } + }, + "Charges constat\u00e9es d\u2019avance": { + "account_number": "476" + }, + "478-\u00c9carts de conversion actif": { + "Diminution des cr\u00e9ances d\u2019exploitation": { + "account_number": "4781" + }, + "Diminution des cr\u00e9ances financi\u00e8res": { + "account_number": "4782" + }, + "Augmentation des dettes d\u2019exploitation": { + "account_number": "4783" + }, + "Augmentation des dettes financi\u00e8res": { + "account_number": "4784" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4786" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4788" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "En compte, immobilisations incorporelles": { + "account_number": "4851" + }, + "En compte, immobilisations corporelles": { + "account_number": "4852" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_number": "4853" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_number": "4854" + }, + "Effets escompt\u00e9s non \u00e9chus": { + "account_number": "4855" + }, + "Retenues de garantie": { + "account_number": "4857" + }, + "Factures \u00e0 \u00e9tablir": { + "account_number": "4858" + }, + "account_number": "485" + }, + "Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": { + "account_number": "488" + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "D\u00e9pr\u00e9ciations des comptes clients": { + "Cr\u00e9ances litigieuses": { + "account_number": "4911" + }, + "Cr\u00e9ances douteuses": { + "account_number": "4912" + }, + "account_number": "491" + }, + "D\u00e9pr\u00e9ciations des comptes organismes internationaux": { + "account_number": "495" + }, + "D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "Associ\u00e9s, comptes courants": { + "account_number": "4962" + }, + "Associ\u00e9s, op\u00e9rations faites en commun": { + "account_number": "4963" + }, + "Groupe, comptes courants": { + "account_number": "4966" + }, + "account_number": "496" + }, + "D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": { + "account_number": "497" + }, + "D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "account_number": "4985" + }, + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4986" + }, + "Autres cr\u00e9ances HAO": { + "account_number": "4988" + }, + "account_number": "498" + }, + "Provisions pour risques \u00e0 court terme": { + "Sur op\u00e9rations d\u2019exploitation": { + "account_number": "4991" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "4997" + }, + "Sur op\u00e9rations HAO": { + "account_number": "4998" + }, + "account_number": "499" + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "Fournisseurs, dettes en compte": { + "Fournisseurs": { + "account_type": "Payable", + "account_number": "4011" + }, + "Fournisseurs groupe": { + "account_type": "Payable", + "account_number": "4012" + }, + "Fournisseurs sous-traitants": { + "account_type": "Payable", + "account_number": "4013" + }, + "Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable", + "account_number": "4016" + }, + "Fournisseur, retenues de garantie": { + "account_type": "Payable", + "account_number": "4017" + }, + "account_type": "Payable", + "account_number": "401" + }, + "Fournisseurs, effets \u00e0 payer": { + "Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4021" + }, + "Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4022" + }, + "Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4023" + }, + "account_type": "Payable", + "account_number": "402" + }, + "Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4041" + }, + "Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4042" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4046" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4047" + }, + "account_type": "Payable", + "account_number": "404" + }, + "Fournisseurs, factures non parvenues": { + "Fournisseurs": { + "account_type": "Stock Received But Not Billed", + "account_number": "4081" + }, + "Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed", + "account_number": "4082" + }, + "Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed", + "account_number": "4083" + }, + "Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed", + "account_number": "4086" + }, + "account_type": "Stock Received But Not Billed", + "account_number": "408" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "Clients cr\u00e9diteurs": { + "Clients, avances et acomptes re\u00e7us": { + "account_number": "4191" + }, + "Clients groupe, avances et acomptes re\u00e7us": { + "account_number": "4192" + }, + "Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": { + "account_number": "4194" + }, + "Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": { + "account_number": "4198" + }, + "account_number": "419" + } + }, + "42-Personnel (PASSIF)": { + "Personnel, r\u00e9mun\u00e9rations dues": { + "account_number": "422" + }, + "Personnel, oppositions, saisies-arr\u00eats": { + "Personnel, oppositions": { + "account_number": "4231" + }, + "Personnel, saisies-arr\u00eats": { + "account_number": "4232" + }, + "Personnel, avis \u00e0 tiers d\u00e9tenteur": { + "account_number": "4233" + }, + "account_number": "423" + }, + "Personnel, \u0153uvres sociales internes": { + "Assistance m\u00e9dicale": { + "account_number": "4241" + }, + "Allocations familiales": { + "account_number": "4242" + }, + "Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": { + "account_number": "4245" + }, + "Autres \u0153uvres sociales internes": { + "account_number": "4248" + }, + "account_number": "424" + }, + "Repr\u00e9sentants du personnel": { + "D\u00e9l\u00e9gu\u00e9s du personnel": { + "account_number": "4251" + }, + "Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": { + "account_number": "4252" + }, + "Autres repr\u00e9sentants du personnel": { + "account_number": "4258" + }, + "account_number": "425" + }, + "Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "Participation aux b\u00e9n\u00e9fices": { + "account_number": "4261" + }, + "Participation au capital": { + "account_number": "4264" + }, + "account_number": "426" + }, + "Personnel d\u00e9p\u00f4ts": { + "account_number": "427" + }, + "Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": { + "account_number": "4281" + }, + "Autres charges \u00e0 payer": { + "account_number": "4286" + }, + "Produits \u00e0 recevoir": { + "account_number": "4287" + }, + "account_number": "428" + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges sociales sur gratifications \u00e0 payer": { + "account_number": "4381" + }, + "Charges sociales sur cong\u00e9s \u00e0 payer": { + "account_number": "4382" + }, + "Autres charges \u00e0 payer": { + "account_number": "4386" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": { + "account_number": "441" + }, + "\u00c9tat, autres imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes d\u2019\u00c9tat": { + "account_number": "4421" + }, + "Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": { + "account_number": "4422" + }, + "Imp\u00f4ts et taxes recouvrables sur des obligataires": { + "account_number": "4423" + }, + "Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": { + "account_number": "4424" + }, + "Droits de douane": { + "account_number": "4426" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "4428" + }, + "account_number": "442" + }, + "\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "\u00c9tat, TVA due": { + "account_number": "4441" + }, + "\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": { + "account_number": "4449" + }, + "account_number": "444" + }, + "\u00c9tat, autres taxes sur le chiffre d\u2019affaires": { + "account_number": "446" + }, + "\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": { + "account_number": "4471" + }, + "Imp\u00f4ts sur salaires": { + "account_number": "4472" + }, + "Contribution nationale": { + "account_number": "4473" + }, + "Contribution nationale de solidarit\u00e9": { + "account_number": "4474" + }, + "Autres imp\u00f4ts et contributions": { + "account_number": "4478" + }, + "account_number": "447" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "Apporteurs, apports en nature": { + "account_number": "4611" + }, + "Apporteurs, apports en num\u00e9raire": { + "account_number": "4612" + }, + "Apporteurs, versements re\u00e7us sur augmentation de capital": { + "account_number": "4615" + }, + "Apporteurs, versements anticip\u00e9s": { + "account_number": "4616" + }, + "Apporteurs d\u00e9faillants": { + "account_number": "4617" + }, + "Apporteurs, capital \u00e0 rembourser": { + "account_number": "4619" + } + }, + "462-Associ\u00e9s, comptes courants": { + "Principal": { + "account_number": "4621" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4626" + } + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "Op\u00e9rations courantes": { + "account_number": "4631" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4636" + } + }, + "Associ\u00e9s, dividendes \u00e0 payer": { + "account_number": "465" + }, + "Groupe, comptes courants": { + "account_number": "466" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "D\u00e9biteurs divers": { + "account_number": "4711" + }, + "Cr\u00e9diteurs divers": { + "account_number": "4712" + }, + "Obligataires": { + "account_number": "4713" + }, + "R\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "4715" + }, + "Compte d\u2019affacturage": { + "account_number": "4716" + }, + "D\u00e9biteurs divers retenues de garantie": { + "account_number": "4717" + }, + "Apport, compte de fusion et op\u00e9rations assimil\u00e9es": { + "account_number": "4718" + }, + "Bons de souscription d\u2019actions et d\u2019obligations": { + "account_number": "4719" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "Compte de r\u00e9partition p\u00e9riodique des charges": { + "account_number": "4746" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "Compte passif": { + "account_number": "4752" + } + }, + "Produits constat\u00e9s d\u2019avance": { + "account_number": "477" + }, + "479-\u00c9carts de conversion passif": { + "Augmentation des cr\u00e9ances d\u2019exploitation": { + "account_number": "4791" + }, + "Augmentation des cr\u00e9ances financi\u00e8res": { + "account_number": "4792" + }, + "Diminution des dettes d\u2019exploitation": { + "account_number": "4793" + }, + "Diminution des dettes financi\u00e8res": { + "account_number": "4794" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4797" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4798" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "Fournisseurs d\u2019investissements": { + "Immobilisations incorporelles": { + "account_number": "4811" + }, + "Immobilisations corporelles": { + "account_number": "4812" + }, + "Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": { + "account_number": "4813" + }, + "R\u00e9serve de propri\u00e9t\u00e9": { + "account_number": "4816" + }, + "Retenues de garantie": { + "account_number": "4817" + }, + "Factures non parvenues": { + "account_number": "4818" + }, + "account_number": "481" + }, + "Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "Immobilisations incorporelles": { + "account_number": "4821" + }, + "Immobilisations corporelles": { + "account_number": "4822" + }, + "account_number": "482" + }, + "Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "Produits": { + "account_number": "4887" + }, + "account_number": "484" + } + }, + "root_type": "Liability" + }, + "Comptes de tr\u00e9sorerie": { + "Titres de placement": { + "Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "Titres du Tr\u00e9sor \u00e0 court terme": { + "account_number": "5011" + }, + "Titres d\u2019organismes financiers": { + "account_number": "5012" + }, + "Bons de caisse \u00e0 court terme": { + "account_number": "5013" + }, + "Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": { + "account_number": "5016" + }, + "account_number": "501" + }, + "Actions": { + "Actions ou parts propres": { + "account_number": "5021" + }, + "Actions cot\u00e9es": { + "account_number": "5022" + }, + "Actions non cot\u00e9es": { + "account_number": "5023" + }, + "Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": { + "account_number": "5024" + }, + "Autres actions": { + "account_number": "5025" + }, + "Frais d\u2019acquisition des actions": { + "account_number": "5026" + }, + "account_number": "502" + }, + "Obligations": { + "Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": { + "account_number": "5031" + }, + "Obligations cot\u00e9es": { + "account_number": "5032" + }, + "Obligations non cot\u00e9es": { + "account_number": "5033" + }, + "Autres obligations": { + "account_number": "5035" + }, + "Frais d\u2019acquisition des obligations": { + "account_number": "5036" + }, + "account_number": "503" + }, + "Bons de souscription": { + "Bons de souscription d\u2019actions": { + "account_number": "5042" + }, + "Bons de souscription d\u2019obligations": { + "account_number": "5043" + }, + "account_number": "504" + }, + "Titres n\u00e9gociables hors r\u00e9gion": { + "account_number": "505" + }, + "Int\u00e9r\u00eats courus": { + "Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": { + "account_number": "5061" + }, + "Actions": { + "account_number": "5062" + }, + "Obligations": { + "account_number": "5063" + }, + "account_number": "506" + }, + "Autres titres de placement et cr\u00e9ances assimil\u00e9es": { + "account_number": "508" + }, + "account_number": "50" + }, + "Valeurs \u00e0 encaisser": { + "Effets \u00e0 encaisser": { + "account_number": "511" + }, + "Effets \u00e0 l\u2019encaissement": { + "account_number": "512" + }, + "Ch\u00e8ques \u00e0 encaisser": { + "account_number": "513" + }, + "Ch\u00e8ques \u00e0 l\u2019encaissement": { + "account_number": "514" + }, + "Cartes de cr\u00e9dit \u00e0 encaisser": { + "account_number": "515" + }, + "Autres valeurs \u00e0 l\u2019encaissement": { + "Warrants": { + "account_number": "5181" + }, + "Billets de fonds": { + "account_number": "5182" + }, + "Ch\u00e8ques de voyage": { + "account_number": "5185" + }, + "Coupons \u00e9chus": { + "account_number": "5186" + }, + "Int\u00e9r\u00eats \u00e9chus des obligations": { + "account_number": "5187" + }, + "account_number": "518" + }, + "account_number": "51" + }, + "Banques": { + "Banques locales": { + "Banques en monnaie nationale": { + "account_type": "Bank", + "account_number": "5211" + }, + "Banques en devises": { + "account_type": "Bank", + "account_number": "5215" + }, + "account_type": "Bank", + "account_number": "521" + }, + "Banques autres \u00c9tats r\u00e9gion": { + "account_number": "522" + }, + "Banques autres \u00c9tats zone mon\u00e9taire": { + "account_number": "523" + }, + "Banques hors zone mon\u00e9taire": { + "account_number": "524" + }, + "Banques d\u00e9p\u00f4t \u00e0 terme": { + "account_number": "525" + }, + "Banques, int\u00e9r\u00eats courus": { + "Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": { + "account_number": "5261" + }, + "Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": { + "account_number": "5267" + }, + "account_number": "526" + }, + "account_number": "52" + }, + "\u00c9tablissements financiers et assimil\u00e9s": { + "Ch\u00e8ques postaux": { + "account_number": "531" + }, + "Tr\u00e9sor": { + "account_number": "532" + }, + "Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": { + "account_number": "533" + }, + "\u00c9tablissements financiers, int\u00e9r\u00eats courus": { + "account_number": "536" + }, + "Autres organismes financiers": { + "account_number": "538" + }, + "account_number": "53" + }, + "Instruments de tr\u00e9sorerie": { + "Options de taux d\u2019int\u00e9r\u00eat": { + "account_number": "541" + }, + "Options de taux de change": { + "account_number": "542" + }, + "Options de taux boursiers": { + "account_number": "543" + }, + "Instruments de march\u00e9s \u00e0 terme": { + "account_number": "544" + }, + "Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": { + "account_number": "545" + }, + "account_number": "54" + }, + "Instruments de monnaie \u00e9lectronique": { + "Monnaie \u00e9lectronique carte carburant": { + "account_number": "551" + }, + "Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": { + "account_number": "552" + }, + "Monnaie \u00e9lectronique carte p\u00e9age": { + "account_number": "553" + }, + "Porte-monnaie \u00e9lectronique": { + "account_number": "554" + }, + "Autres instruments de monnaies \u00e9lectroniques": { + "account_number": "558" + }, + "account_number": "55" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "Cr\u00e9dits de tr\u00e9sorerie": { + "account_number": "561" + }, + "Escompte de cr\u00e9dits de campagne": { + "account_number": "564" + }, + "Escompte de cr\u00e9dits ordinaires": { + "account_number": "565" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": { + "account_number": "566" + }, + "account_number": "56" + }, + "Caisse": { + "Caisse si\u00e8ge social": { + "Caisse en monnaie nationale": { + "account_number": "5711" + }, + "Caisse en devises": { + "account_number": "5712" + }, + "account_number": "571" + }, + "Caisse succursale A": { + "En monnaie nationale": { + "account_number": "5721" + }, + "En devises": { + "account_number": "5722" + }, + "account_number": "572" + }, + "Caisse succursale B": { + "En monnaie nationale": { + "account_number": "5731" + }, + "En devises": { + "account_number": "5732" + }, + "account_number": "573" + }, + "account_number": "57" + }, + "R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "R\u00e9gies d\u2019avance": { + "account_number": "581" + }, + "Accr\u00e9ditifs": { + "account_number": "582" + }, + "Virements de fonds": { + "account_number": "585" + }, + "Autres virements internes": { + "account_number": "588" + }, + "account_number": "58" + }, + "D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "D\u00e9pr\u00e9ciations des titres de placement": { + "account_number": "590" + }, + "D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": { + "account_number": "591" + }, + "D\u00e9pr\u00e9ciations des comptes banques": { + "account_number": "592" + }, + "D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": { + "account_number": "593" + }, + "D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": { + "account_number": "594" + }, + "Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": { + "account_number": "599" + }, + "account_number": "59" + }, + "root_type": "Asset", + "account_number": "5" + }, + "Comptes de charges des activit\u00e9s ordinaires": { + "Achats et variations de stocks": { + "Achats de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "6011" + }, + "Hors R\u00e9gion": { + "account_number": "6012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6014" + }, + "Frais sur achats": { + "account_number": "6015" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6019" + }, + "account_number": "601" + }, + "Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Dans la R\u00e9gion": { + "account_number": "6021" + }, + "Hors R\u00e9gion": { + "account_number": "6022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6024" + }, + "Frais sur achats": { + "account_number": "6025" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6029" + }, + "account_number": "602" + }, + "Variations des stocks de biens achet\u00e9s": { + "Variations des stocks de marchandises": { + "account_number": "6031" + }, + "Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "6032" + }, + "Variations des stocks d\u2019autres approvisionnements": { + "account_number": "6033" + }, + "account_number": "603" + }, + "Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "Mati\u00e8res consommables": { + "account_number": "6041" + }, + "Mati\u00e8res combustibles": { + "account_number": "6042" + }, + "Produits d\u2019entretien": { + "account_number": "6043" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "6044" + }, + "Frais sur achat": { + "account_number": "6045" + }, + "Fournitures de magasin": { + "account_number": "6046" + }, + "Fournitures de bureau": { + "account_number": "6047" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6049" + }, + "account_number": "604" + }, + "Autres achats": { + "Fournitures non stockables Eau": { + "account_number": "6051" + }, + "Fournitures non stockables \u00c9lectricit\u00e9": { + "account_number": "6052" + }, + "Fournitures non stockables Autres \u00e9nergies": { + "account_number": "6053" + }, + "Fournitures d\u2019entretien non stockables": { + "account_number": "6054" + }, + "Fournitures de bureau non stockables": { + "account_number": "6055" + }, + "Achats de petit mat\u00e9riel et outillage": { + "account_number": "6056" + }, + "Achats d\u2019\u00e9tudes et prestations de services": { + "account_number": "6057" + }, + "Achats de travaux, mat\u00e9riels et \u00e9quipements": { + "account_number": "6058" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6059" + }, + "account_number": "605" + }, + "Achats d\u2019emballages": { + "Emballages perdus": { + "account_number": "6081" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "6082" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "6083" + }, + "Frais sur achats": { + "account_number": "6085" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6089" + }, + "account_number": "608" + }, + "account_number": "60" + }, + "Transports": { + "Transports sur ventes": { + "account_number": "612" + }, + "Transports pour le compte de tiers": { + "account_number": "613" + }, + "Transports du personnel": { + "account_number": "614" + }, + "Transports de plis": { + "account_number": "616" + }, + "Autres frais de transport": { + "Voyages et d\u00e9placements": { + "account_number": "6181" + }, + "Transports entre \u00e9tablissements ou chantiers": { + "account_number": "6182" + }, + "Transports administratifs": { + "account_number": "6183" + }, + "account_number": "618" + }, + "account_number": "61" + }, + "Services ext\u00e9rieurs": { + "Sous-traitance g\u00e9n\u00e9rale": { + "account_number": "621" + }, + "Locations, charges locatives": { + "Locations de terrains": { + "account_number": "6221" + }, + "Locations de b\u00e2timents": { + "account_number": "6222" + }, + "Locations de mat\u00e9riels et outillages": { + "account_number": "6223" + }, + "Malis sur emballages": { + "account_number": "6224" + }, + "Locations d\u2019emballages": { + "account_number": "6225" + }, + "Fermages et loyers du foncier": { + "account_number": "6226" + }, + "Locations et charges locatives diverses": { + "account_number": "6228" + }, + "account_number": "622" + }, + "Redevances de location acquisition": { + "Cr\u00e9dit-bail immobilier": { + "account_number": "6232" + }, + "Cr\u00e9dit-bail mobilier": { + "account_number": "6233" + }, + "Location-vente": { + "account_number": "6234" + }, + "Autres contrats de location acquisition": { + "account_number": "6238" + }, + "account_number": "623" + }, + "Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "Entretien et r\u00e9parations des biens immobiliers": { + "account_number": "6241" + }, + "Entretien et r\u00e9parations des biens mobiliers": { + "account_number": "6242" + }, + "Maintenance": { + "account_number": "6243" + }, + "Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "6244" + }, + "Autres entretiens et r\u00e9parations": { + "account_number": "6248" + }, + "account_number": "624" + }, + "Primes d\u2019assurance": { + "Assurances multirisques": { + "account_number": "6251" + }, + "Assurances mat\u00e9riel de transport": { + "account_number": "6252" + }, + "Assurances risques d\u2019exploitation": { + "account_number": "6253" + }, + "Assurances responsabilit\u00e9 du producteur": { + "account_number": "6254" + }, + "Assurances insolvabilit\u00e9 clients": { + "account_number": "6255" + }, + "Assurances transport sur ventes": { + "account_number": "6257" + }, + "Autres primes d\u2019assurances": { + "account_number": "6258" + }, + "account_number": "625" + }, + "\u00c9tudes, recherches et documentation": { + "\u00c9tudes et recherches": { + "account_number": "6261" + }, + "Documentation g\u00e9n\u00e9rale": { + "account_number": "6265" + }, + "Documentation technique": { + "account_number": "6266" + }, + "account_number": "626" + }, + "Publicit\u00e9, publications, relations publiques": { + "Annonces, insertions": { + "account_number": "6271" + }, + "Catalogues, imprim\u00e9s publicitaires": { + "account_number": "6272" + }, + "\u00c9chantillons": { + "account_number": "6273" + }, + "Foires et expositions": { + "account_number": "6274" + }, + "Publications": { + "account_number": "6275" + }, + "Cadeaux \u00e0 la client\u00e8le": { + "account_number": "6276" + }, + "Frais de colloques, s\u00e9minaires, conf\u00e9rences": { + "account_number": "6277" + }, + "Autres charges de publicit\u00e9 et relations publiques": { + "account_number": "6278" + }, + "account_number": "627" + }, + "Frais de t\u00e9l\u00e9communications": { + "Frais de t\u00e9l\u00e9phone": { + "account_number": "6281" + }, + "Frais de t\u00e9lex": { + "account_number": "6282" + }, + "Frais de t\u00e9l\u00e9copie": { + "account_number": "6283" + }, + "Autres frais de t\u00e9l\u00e9communications": { + "account_number": "6288" + }, + "account_number": "628" + }, + "account_number": "62" + }, + "Autres services ext\u00e9rieurs": { + "Frais bancaires": { + "Frais sur titres (vente, garde)": { + "account_number": "6311" + }, + "Frais sur effets": { + "account_number": "6312" + }, + "Location de coffres": { + "account_number": "6313" + }, + "Commissions d\u2019affacturage": { + "account_number": "6314" + }, + "Commissions sur cartes de cr\u00e9dit": { + "account_number": "6315" + }, + "Frais d\u2019\u00e9mission d\u2019emprunts": { + "account_number": "6316" + }, + "Frais sur instruments monnaie \u00e9lectronique": { + "account_number": "6317" + }, + "Autres frais bancaires": { + "account_number": "6318" + }, + "account_number": "631" + }, + "R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "Commissions et courtages sur ventes": { + "account_number": "6322" + }, + "Honoraires des professions r\u00e9glement\u00e9es": { + "account_number": "6324" + }, + "Frais d\u2019actes et de contentieux": { + "account_number": "6325" + }, + "R\u00e9mun\u00e9rations d\u2019affacturage": { + "account_number": "6326" + }, + "R\u00e9mun\u00e9rations des autres prestataires de services": { + "account_number": "6327" + }, + "Divers frais": { + "account_number": "6328" + }, + "account_number": "632" + }, + "Frais de formation du personnel": { + "account_number": "633" + }, + "Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "Redevances pour brevets, licences": { + "account_number": "6342" + }, + "Redevances pour logiciels": { + "account_number": "6343" + }, + "Redevances pour marques": { + "account_number": "6344" + }, + "Redevances pour sites internet": { + "account_number": "6345" + }, + "Redevances pour concessions, droits et valeurs similaires": { + "account_number": "6346" + }, + "account_number": "634" + }, + "Cotisations": { + "Cotisations": { + "account_number": "6351" + }, + "Concours divers": { + "account_number": "6358" + }, + "account_number": "635" + }, + "R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "Personnel int\u00e9rimaire": { + "account_number": "6371" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6372" + }, + "account_number": "637" + }, + "Autres charges externes": { + "Frais de recrutement du personnel": { + "account_number": "6381" + }, + "Frais de d\u00e9m\u00e9nagement": { + "account_number": "6382" + }, + "R\u00e9ceptions": { + "account_number": "6383" + }, + "Missions": { + "account_number": "6384" + }, + "Charges de copropri\u00e9t\u00e9": { + "account_number": "6385" + }, + "account_number": "638" + }, + "account_number": "63" + }, + "Imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes directs": { + "Imp\u00f4ts fonciers et taxes annexes": { + "account_number": "6411" + }, + "Patentes, licences et taxes annexes": { + "account_number": "6412" + }, + "Taxes sur appointements et salaires": { + "account_number": "6413" + }, + "Taxes d\u2019apprentissage": { + "account_number": "6414" + }, + "Formation professionnelle continue": { + "account_number": "6415" + }, + "Autres imp\u00f4ts et taxes directs": { + "account_number": "6418" + }, + "account_number": "641" + }, + "Imp\u00f4ts et taxes indirects": { + "account_number": "645" + }, + "Droits d\u2019enregistrement": { + "Droits de mutation": { + "account_number": "6461" + }, + "Droits de timbre": { + "account_number": "6462" + }, + "Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": { + "account_number": "6463" + }, + "Vignettes": { + "account_number": "6464" + }, + "Autres droits": { + "account_number": "6468" + }, + "account_number": "646" + }, + "P\u00e9nalit\u00e9s, amendes fiscales": { + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": { + "account_number": "6471" + }, + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": { + "account_number": "6472" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": { + "account_number": "6473" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": { + "account_number": "6474" + }, + "Autres p\u00e9nalit\u00e9s et amendes fiscales": { + "account_number": "6478" + }, + "account_number": "647" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "648" + }, + "account_number": "64" + }, + "Autres charges": { + "Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "Clients": { + "account_number": "6511" + }, + "Autres d\u00e9biteurs": { + "account_number": "6515" + }, + "account_number": "651" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "6521" + }, + "Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "6525" + }, + "account_number": "652" + }, + "Valeurs comptables des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "6541" + }, + "Immobilisations corporelles": { + "account_number": "6542" + }, + "account_number": "654" + }, + "Perte de change sur cr\u00e9ances et dettes commerciale": { + "account_number": "656" + }, + "P\u00e9nalit\u00e9s et amendes p\u00e9nales": { + "account_number": "657" + }, + "Charges diverses": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "6581" + }, + "Dons": { + "account_number": "6582" + }, + "M\u00e9c\u00e9nat": { + "account_number": "6583" + }, + "Autres charges diverses": { + "account_number": "6588" + }, + "account_number": "658" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "6591" + }, + "Sur stocks": { + "account_number": "6593" + }, + "Sur cr\u00e9ances": { + "account_number": "6594" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": { + "account_number": "6598" + }, + "account_number": "659" + }, + "account_number": "65" + }, + "Charges de personnel": { + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "Appointements salaires et commissions": { + "account_number": "6611" + }, + "Primes et gratifications": { + "account_number": "6612" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6613" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6614" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6615" + }, + "Suppl\u00e9ment familial": { + "account_number": "6616" + }, + "Avantages en nature": { + "account_number": "6617" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6618" + }, + "account_number": "661" + }, + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "Appointements salaires et commissions": { + "account_number": "6621" + }, + "Primes et gratifications": { + "account_number": "6622" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6623" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6624" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6625" + }, + "Suppl\u00e9ment familial": { + "account_number": "6626" + }, + "Avantages en nature": { + "account_number": "6627" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6628" + }, + "account_number": "662" + }, + "Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "Indemnit\u00e9s de logement": { + "account_number": "6631" + }, + "Indemnit\u00e9s de repr\u00e9sentation": { + "account_number": "6632" + }, + "Indemnit\u00e9s d\u2019expatriation": { + "account_number": "6633" + }, + "Indemnit\u00e9s de transport": { + "account_number": "6634" + }, + "Autres indemnit\u00e9s et avantages divers": { + "account_number": "6638" + }, + "account_number": "663" + }, + "Charges sociales": { + "Charges sociales sur r\u00e9mun\u00e9ration du personnel national": { + "account_number": "6641" + }, + "Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": { + "account_number": "6642" + }, + "account_number": "664" + }, + "R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "R\u00e9mun\u00e9ration du travail de l\u2019exploitant": { + "account_number": "6661" + }, + "Charges sociales": { + "account_number": "6662" + }, + "account_number": "666" + }, + "R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "Personnel int\u00e9rimaire": { + "account_number": "6671" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6672" + }, + "account_number": "667" + }, + "Autres charges sociales": { + "Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": { + "account_number": "6681" + }, + "Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": { + "account_number": "6682" + }, + "Versements et contributions aux autres \u0153uvres sociales": { + "account_number": "6683" + }, + "M\u00e9decine du travail et pharmacie": { + "account_number": "6684" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "6685" + }, + "Assurances retraite et fonds de pension": { + "account_number": "6686" + }, + "Majorations et p\u00e9nalit\u00e9s sociales": { + "account_number": "6687" + }, + "Charges sociales diverses": { + "account_number": "6688" + }, + "account_number": "668" + }, + "account_number": "66" + }, + "Frais financiers et charges assimil\u00e9es": { + "Int\u00e9r\u00eats des emprunts": { + "Emprunts obligataires": { + "account_number": "6711" + }, + "Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "6712" + }, + "Dettes li\u00e9es \u00e0 des participations": { + "account_number": "6713" + }, + "Primes de remboursement des obligations": { + "account_number": "6714" + }, + "account_number": "671" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "6722" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "6723" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": { + "account_number": "6724" + }, + "Int\u00e9r\u00eats dans loyers des autres locations acquisition": { + "account_number": "6728" + }, + "account_number": "672" + }, + "Escomptes accord\u00e9s": { + "account_number": "673" + }, + "Autres int\u00e9r\u00eats": { + "Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": { + "account_number": "6741" + }, + "Comptes courants bloqu\u00e9s": { + "account_number": "6742" + }, + "Int\u00e9r\u00eats sur obligations cautionn\u00e9es": { + "account_number": "6743" + }, + "Int\u00e9r\u00eats sur dettes commerciales": { + "account_number": "6744" + }, + "Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": { + "account_number": "6745" + }, + "Int\u00e9r\u00eats sur dettes diverses": { + "account_number": "6748" + }, + "account_number": "674" + }, + "Escomptes des effets de commerce": { + "account_number": "675" + }, + "Pertes de change financi\u00e8res": { + "account_number": "676" + }, + "Pertes sur titres de placement": { + "Pertes sur cessions de titres de placement": { + "account_number": "6771" + }, + "Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "6772" + }, + "account_number": "677" + }, + "Pertes et charges sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "6781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "6782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "6784" + }, + "account_number": "678" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "6791" + }, + "Sur titres de placement": { + "account_number": "6795" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "6798" + }, + "account_number": "679" + }, + "account_number": "67" + }, + "Dotations aux amortissements": { + "Dotations aux amortissements d\u2019exploitation": { + "Dotations aux amortissements des immobilisations incorporelles": { + "account_number": "6812" + }, + "Dotations aux amortissements des immobilisations corporelles": { + "account_number": "6813" + }, + "account_number": "681" + }, + "account_number": "68" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6911" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "account_number": "6913" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": { + "account_number": "6914" + }, + "account_number": "691" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6971" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": { + "account_number": "6972" + }, + "account_number": "697" + }, + "account_number": "69" + }, + "root_type": "Expense", + "account_number": "6" + }, + "Comptes de produits des activit\u00e9s ordinaires": { + "Ventes": { + "Ventes de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "7011" + }, + "Hors R\u00e9gion": { + "account_number": "7012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7014" + }, + "Sur internet": { + "account_number": "7015" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7019" + }, + "account_number": "701" + }, + "Ventes de produits finis": { + "Dans la R\u00e9gion": { + "account_number": "7021" + }, + "Hors R\u00e9gion": { + "account_number": "7022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7024" + }, + "Sur internet": { + "account_number": "7025" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7029" + }, + "account_number": "702" + }, + "Ventes de produits interm\u00e9diaires": { + "Dans la R\u00e9gion": { + "account_number": "7031" + }, + "Hors R\u00e9gion": { + "account_number": "7032" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7033" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7034" + }, + "Sur internet": { + "account_number": "7035" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7039" + }, + "account_number": "703" + }, + "Ventes de produits r\u00e9siduels": { + "Dans la R\u00e9gion": { + "account_number": "7041" + }, + "Hors R\u00e9gion": { + "account_number": "7042" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7043" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7044" + }, + "Sur internet": { + "account_number": "7045" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7049" + }, + "account_number": "704" + }, + "Travaux factur\u00e9s": { + "Dans la R\u00e9gion": { + "account_number": "7051" + }, + "Hors R\u00e9gion": { + "account_number": "7052" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7053" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7054" + }, + "Sur internet": { + "account_number": "7055" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7059" + }, + "account_number": "705" + }, + "Services vendus": { + "Dans la R\u00e9gion": { + "account_number": "7061" + }, + "Hors R\u00e9gion": { + "account_number": "7062" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7063" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7064" + }, + "Sur internet": { + "account_number": "7065" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7069" + }, + "account_number": "706" + }, + "Produits accessoires": { + "Ports, emballages perdus et autres frais factur\u00e9s": { + "account_number": "7071" + }, + "Commissions et courtages": { + "account_number": "7072" + }, + "Locations": { + "account_number": "7073" + }, + "Bonis sur reprises et cessions d\u2019emballages": { + "account_number": "7074" + }, + "Mise \u00e0 disposition de personnel": { + "account_number": "7075" + }, + "Redevances pour brevets, logiciels, marques et droits similaires": { + "account_number": "7076" + }, + "Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": { + "account_number": "7077" + }, + "Autres produits accessoires": { + "account_number": "7078" + }, + "account_number": "707" + }, + "account_number": "70" + }, + "Subventions d\u2019exploitation": { + "Sur produits \u00e0 l\u2019exportation": { + "account_number": "711" + }, + "Sur produits \u00e0 l\u2019importation": { + "account_number": "712" + }, + "Sur produits de p\u00e9r\u00e9quation": { + "account_number": "713" + }, + "Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": { + "account_number": "714" + }, + "Autres subventions d\u2019exploitation": { + "Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": { + "account_number": "7181" + }, + "Vers\u00e9es par les organismes internationaux": { + "account_number": "7182" + }, + "Vers\u00e9es par des tiers": { + "account_number": "7183" + }, + "account_number": "718" + }, + "account_number": "71" + }, + "Production immobilis\u00e9e": { + "Immobilisations incorporelles": { + "account_number": "721" + }, + "Immobilisations corporelles": { + "Immobilisations corporelles (hors actifs biologiques)": { + "account_number": "7221" + }, + "Immobilisations corporelles (actifs biologiques)": { + "account_number": "7222" + }, + "account_number": "722" + }, + "Production auto-consomm\u00e9e": { + "account_number": "724" + }, + "Immobilisations financi\u00e8res": { + "account_number": "726" + }, + "account_number": "72" + }, + "Variations des stocks de biens et de services produits": { + "Variations des stocks de produits en cours": { + "Produits en cours": { + "account_number": "7341" + }, + "Travaux en cours": { + "account_number": "7342" + }, + "account_number": "734" + }, + "Variations des en-cours de services": { + "\u00c9tudes en cours": { + "account_number": "7351" + }, + "Prestations de services en cours": { + "account_number": "7352" + }, + "account_number": "735" + }, + "Variations des stocks de produits finis": { + "account_number": "736" + }, + "Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "account_number": "7371" + }, + "Produits r\u00e9siduels": { + "account_number": "7372" + }, + "account_number": "737" + }, + "account_number": "73" + }, + "Autres produits": { + "Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "account_number": "751" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "7521" + }, + "B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "7525" + }, + "account_number": "752" + }, + "Produits des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "7541" + }, + "Immobilisations corporelles": { + "account_number": "7542" + }, + "account_number": "754" + }, + "Gains de change sur cr\u00e9ances et dettes commerciales": { + "account_number": "756" + }, + "Produits divers": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "7581" + }, + "Indemnit\u00e9s d\u2019assurances re\u00e7ues": { + "account_number": "7582" + }, + "Autres produits divers": { + "account_number": "7588" + }, + "account_number": "758" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "7591" + }, + "Sur stocks": { + "account_number": "7593" + }, + "Sur cr\u00e9ances": { + "account_number": "7594" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "account_number": "7598" + }, + "account_number": "759" + }, + "account_number": "75" + }, + "Revenus financiers et produits assimil\u00e9s": { + "Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "Int\u00e9r\u00eats de pr\u00eats": { + "account_number": "7712" + }, + "Int\u00e9r\u00eats sur cr\u00e9ances diverses": { + "account_number": "7713" + }, + "account_number": "771" + }, + "Revenus de participations et autres titres immobilis\u00e9s": { + "Revenus des titres de participation": { + "account_number": "7721" + }, + "Revenus autres titres immobilis\u00e9s": { + "account_number": "7722" + }, + "account_number": "772" + }, + "Escomptes obtenus": { + "account_number": "773" + }, + "Revenus de placement": { + "Revenus des obligations": { + "account_number": "7745" + }, + "Revenus des titres de placement": { + "account_number": "7746" + }, + "account_number": "774" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "account_number": "775" + }, + "Gains de change financiers": { + "account_number": "776" + }, + "Gains sur cessions de titres de placement": { + "account_number": "777" + }, + "Gains sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "7781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "7782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "7784" + }, + "account_number": "778" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "7791" + }, + "Sur titres de placement": { + "account_number": "7795" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "7798" + }, + "account_number": "779" + }, + "account_number": "77" + }, + "Transferts de charges": { + "Transferts de charges d\u2019exploitation": { + "account_number": "781" + }, + "Transferts de charges financi\u00e8res": { + "account_number": "787" + }, + "account_number": "78" + }, + "Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Pour risques et charges": { + "account_number": "7911" + }, + "Des immobilisations incorporelles": { + "account_number": "7913" + }, + "Des immobilisations corporelles": { + "account_number": "7914" + }, + "account_number": "791" + }, + "Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "Pour risques et charges": { + "account_number": "7971" + }, + "Des immobilisations financi\u00e8res": { + "account_number": "7972" + }, + "account_number": "797" + }, + "Reprises d\u2019amortissements": { + "account_number": "798" + }, + "Reprises de subventions d\u2019investissement": { + "account_number": "799" + }, + "account_number": "79" + }, + "root_type": "Income", + "account_number": "7" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "Valeurs comptables des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "811" + }, + "Immobilisations corporelles": { + "account_number": "812" + }, + "Immobilisations financi\u00e8res": { + "account_number": "816" + }, + "account_number": "81" + }, + "Charges hors activit\u00e9s ordinaires": { + "Charges HAO constat\u00e9es": { + "account_number": "831" + }, + "Charges li\u00e9es aux op\u00e9rations de restructuration": { + "account_number": "833" + }, + "Pertes sur cr\u00e9ances HAO": { + "account_number": "834" + }, + "Dons et lib\u00e9ralit\u00e9s accord\u00e9s": { + "account_number": "835" + }, + "Abandons de cr\u00e9ances consentis": { + "account_number": "836" + }, + "Charges li\u00e9es aux op\u00e9rations de liquidation": { + "account_number": "837" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "839" + }, + "account_number": "83" + }, + "Dotations hors activit\u00e9s ordinaires": { + "Dotations aux provisions r\u00e9glement\u00e9es": { + "account_number": "851" + }, + "Dotations aux amortissements HAO": { + "account_number": "852" + }, + "Dotations aux d\u00e9pr\u00e9ciations HAO": { + "account_number": "853" + }, + "Dotations aux provisions pour risques et charges HAO": { + "account_number": "854" + }, + "Autres dotations HAO": { + "account_number": "858" + }, + "account_number": "85" + }, + "Participation des travailleurs": { + "Participation l\u00e9gale aux b\u00e9n\u00e9fices": { + "account_number": "871" + }, + "Participation contractuelle aux b\u00e9n\u00e9fices": { + "account_number": "874" + }, + "Autres participations": { + "account_number": "878" + }, + "account_number": "87" + }, + "Imp\u00f4ts sur le r\u00e9sultat": { + "Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": { + "account_number": "8911" + }, + "Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": { + "account_number": "8912" + }, + "Activit\u00e9s exerc\u00e9es hors R\u00e9gion": { + "account_number": "8913" + }, + "account_number": "891" + }, + "Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "account_number": "892" + }, + "Imp\u00f4t minimum forfaitaire IMF": { + "account_number": "895" + }, + "D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "D\u00e9gr\u00e8vements": { + "account_number": "8991" + }, + "Annulations pour pertes r\u00e9troactives": { + "account_number": "8994" + }, + "account_number": "899" + }, + "account_number": "89" + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "Produits des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "821" + }, + "Immobilisations corporelles": { + "account_number": "822" + }, + "Immobilisations financi\u00e8res": { + "account_number": "826" + }, + "account_number": "82" + }, + "Produits hors activit\u00e9s ordinaires": { + "Produits HAO constat\u00e9s": { + "account_number": "841" + }, + "Produits li\u00e9s aux op\u00e9rations de restructuration": { + "account_number": "843" + }, + "Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": { + "account_number": "844" + }, + "Dons et lib\u00e9ralit\u00e9s obtenus": { + "account_number": "845" + }, + "Abandons de cr\u00e9ances obtenus": { + "account_number": "846" + }, + "Produits li\u00e9s aux op\u00e9rations de liquidation": { + "account_number": "847" + }, + "Transferts de charges HAO": { + "account_number": "848" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "849" + }, + "account_number": "84" + }, + "Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "Reprises de provisions r\u00e9glement\u00e9es": { + "account_number": "861" + }, + "Reprises d\u2019amortissements HAO": { + "account_number": "862" + }, + "Reprises de d\u00e9pr\u00e9ciations HAO": { + "account_number": "863" + }, + "Reprises de provisions pour risques et charges HAO": { + "account_number": "864" + }, + "Autres reprises HAO": { + "account_number": "868" + }, + "account_number": "86" + }, + "Subventions d\u2019\u00e9quilibre": { + "\u00c9tat": { + "account_number": "881" + }, + "Collectivit\u00e9s publiques": { + "account_number": "884" + }, + "Groupe": { + "account_number": "886" + }, + "Autres": { + "account_number": "888" + }, + "account_number": "88" + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/ne_plan_comptable.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/ne_plan_comptable.json new file mode 100644 index 00000000000..ec296cdc8ec --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/ne_plan_comptable.json @@ -0,0 +1,1919 @@ +{ + "country_code": "ne", + "name": "Syscohada - Plan Comptable", + "tree": { + "1-Comptes de ressources durables": { + "10-Capital": { + "101-Capital social": { + "1011-Capital souscrit, non appel\u00e9": {}, + "1012-Capital souscrit, appel\u00e9, non vers\u00e9": {}, + "1013-Capital souscrit, appel\u00e9, vers\u00e9, non amorti": {}, + "1014-Capital souscrit, appel\u00e9, vers\u00e9, amorti": {}, + "1018-Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": {} + }, + "102-Capital par dotation": { + "1021-Dotation initiale": {}, + "1022-Dotations compl\u00e9mentaires": {}, + "1028-Autres dotations": {} + }, + "103-Capital personnel": {}, + "104-Compte de l\u2019exploitant": { + "1041-Apports temporaires": {}, + "1042-Op\u00e9rations courantes": {}, + "1043-R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": {}, + "1047-Pr\u00e9l\u00e8vements d\u2019autoconsommation": {}, + "1048-Autres pr\u00e9l\u00e8vements": {} + }, + "105-Primes li\u00e9es au capital social": { + "1051-Primes d\u2019\u00e9mission": {}, + "1052-Primes d\u2019apport": {}, + "1053-Primes de fusion": {}, + "1054-Primes de conversion": {}, + "1058-Autres primes": {} + }, + "106-\u00c9carts de r\u00e9\u00e9valuation": { + "1061-\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": {}, + "1062-\u00c9carts de r\u00e9\u00e9valuation libre": {} + }, + "109-Apporteurs, capital souscrit, non appel\u00e9": {} + }, + "11-R\u00e9serves": { + "111-R\u00e9serve l\u00e9gale": {}, + "112-R\u00e9serves statutaires ou contractuelles": {}, + "113-R\u00e9serves r\u00e9glement\u00e9es": { + "1131-R\u00e9serves de plus-values nettes \u00e0 long terme": {}, + "1132-R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {}, + "1133-R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": {}, + "1134-R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": {}, + "1135-Autres r\u00e9serves r\u00e9glement\u00e9es": {} + }, + "118-Autres r\u00e9serves": { + "1181-R\u00e9serves facultatives": {}, + "1188-R\u00e9serves diverses": {} + } + }, + "12-Report \u00e0 nouveau": { + "121-Report \u00e0 nouveau cr\u00e9diteur": {}, + "129-Report \u00e0 nouveau d\u00e9biteur": { + "1291-Perte nette \u00e0 reporter": {}, + "1292-Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": {} + } + }, + "13-R\u00e9sultat net de l\u2019exercice": { + "130-R\u00e9sultat en instance d\u2019affectation": { + "1301-R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": {}, + "1309-R\u00e9sultat en instance d\u2019affectation : perte": {} + }, + "131-R\u00e9sultat net : b\u00e9n\u00e9fice": {}, + "132-Marge commerciale (MC)": {}, + "133-Valeur ajout\u00e9e (VA)": {}, + "134-Exc\u00e9dent brut d\u2019exploitation (EBE)": {}, + "135-R\u00e9sultat d\u2019exploitation (RE)": {}, + "136-R\u00e9sultat financier (RF)": {}, + "137-R\u00e9sultat des activit\u00e9s ordinaires (RAO)": {}, + "138-R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "1381-R\u00e9sultat de fusion": {}, + "1382-R\u00e9sultat d\u2019apport partiel d\u2019actif": {}, + "1383-R\u00e9sultat de scission": {}, + "1384-R\u00e9sultat de liquidation": {} + }, + "139-R\u00e9sultat net : perte": {} + }, + "14-Subventions d\u2019investissement": { + "141-Subventions d\u2019\u00e9quipement": { + "1411-\u00c9tat": {}, + "1412-R\u00e9gions": {}, + "1413-D\u00e9partements": {}, + "1414-Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": {}, + "1415-Entit\u00e9s publiques ou mixtes": {}, + "1416-Entit\u00e9s et organismes priv\u00e9s": {}, + "1417-Organismes internationaux": {}, + "1418-Autres": {} + }, + "148-Autres subventions d\u2019investissement": {} + }, + "15-Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "151-Amortissements d\u00e9rogatoires": {}, + "152-Plus-values de cession \u00e0 r\u00e9investir": {}, + "153-Fonds r\u00e9glement\u00e9s": { + "1531-Fonds National": {}, + "1532-Pr\u00e9l\u00e8vement pour le Budget": {} + }, + "154-Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": {}, + "155-Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "1551-Reconstitution des gisements miniers et p\u00e9troliers": {} + }, + "156-Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "1561-Hausse de prix": {}, + "1562-Fluctuation des cours": {} + }, + "157-Provisions pour investissement": {}, + "158-Autres provisions et fonds r\u00e9glement\u00e9s": {} + }, + "16-Emprunts et dettes assimil\u00e9es": { + "161-Emprunts obligataires": { + "1611-Emprunts obligataires ordinaires": {}, + "1612-Emprunts obligataires convertibles en actions": {}, + "1613-Emprunts obligataires remboursables en actions": {}, + "1618-Autres emprunts obligataires": {} + }, + "162-Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "163-Avances re\u00e7ues de l\u2019\u00c9tat": {}, + "164-Avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "165-D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "1651-D\u00e9p\u00f4ts": {}, + "1652-Cautionnements": {} + }, + "166-Int\u00e9r\u00eats courus": { + "1661-Sur emprunts obligataires": {}, + "1662-Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "1663-Sur avances re\u00e7ues de l\u2019\u00c9tat": {}, + "1664-Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "1665-Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": {}, + "1667-Sur avances assorties de conditions particuli\u00e8res": {}, + "1668-Sur autres emprunts et dettes": {} + }, + "167-Avances assorties de conditions particuli\u00e8res": { + "1671-Avances bloqu\u00e9es pour augmentation du capital": {}, + "1672-Avances conditionn\u00e9es par l\u2019\u00c9tat": {}, + "1673-Avances conditionn\u00e9es par les autres organismes africains": {}, + "1674-Avances conditionn\u00e9es par les organismes internationaux": {} + }, + "168-Autres emprunts et dettes": { + "1681-Rentes viag\u00e8res capitalis\u00e9es": {}, + "1682-Billets de fonds": {}, + "1683-Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": {}, + "1684-Emprunts participatifs": {}, + "1685-Participation des travailleurs aux b\u00e9n\u00e9fices": {}, + "1686-Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": {} + } + }, + "17-Dettes de location acquisition": { + "172-Dettes de location acquisition / cr\u00e9dit bail immobilier": {}, + "173-Dettes de location acquisition / cr\u00e9dit bail mobilier": {}, + "174-Dettes de location acquisition / location de vente": {}, + "176-Int\u00e9r\u00eats courus": { + "1762-Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": {}, + "1763-Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": {}, + "1764-Sur dettes de location acquisition / location-vente": {}, + "1768-Sur autres dettes de location acquisition": {} + }, + "178-Autres dettes de location acquisition": {} + }, + "18-Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "181-Dettes li\u00e9es \u00e0 des participations": { + "1811-Dettes li\u00e9es \u00e0 des participations (groupe)": {}, + "1812-Dettes li\u00e9es \u00e0 des participations (hors groupe)": {} + }, + "182-Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "183-Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": {}, + "184-Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "185-Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "186-Comptes de liaison charges": {}, + "187-Comptes de liaison produits": {}, + "188-Comptes de liaison des soci\u00e9t\u00e9s en participation": {} + }, + "19-Provisions pour risques et charges": { + "191-Provisions pour litiges": {}, + "192-Provisions pour garanties donn\u00e9es aux clients": {}, + "193-Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": {}, + "194-Provisions pour pertes de change": {}, + "195-Provisions pour imp\u00f4ts": {}, + "196-Provisions pour pensions et obligations similaires": { + "1961-Provisions pour pensions et obligations similaires engagement de retraite": {}, + "1962-Actif du r\u00e9gime de retraite": {} + }, + "197-Provisions pour restructuration": {}, + "198-Autres provisions pour risques et charges": { + "1981-Provisions pour amendes et p\u00e9nalit\u00e9s": {}, + "1983-Provisions pour propre assureur": {}, + "1984-Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "1985-Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": {}, + "1988-Provisions pour divers risques et charges": {} + } + }, + "root_type": "Equity" + }, + "2-Comptes d\u2019actif immobilis\u00e9": { + "21-Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "211-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "212-Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "2121-Brevets": { + "account_type": "Fixed Asset" + }, + "2122-Licences": { + "account_type": "Fixed Asset" + }, + "2123-Concessions de service public": { + "account_type": "Fixed Asset" + }, + "2128-Autres concessions et droits similaires": { + "account_type": "Fixed Asset" + } + }, + "213-Logiciels et sites internet": { + "account_type": "Fixed Asset", + "2131-Logiciels": { + "account_type": "Fixed Asset" + }, + "2132-Sites internet": { + "account_type": "Fixed Asset" + } + }, + "214-Marques": { + "account_type": "Fixed Asset" + }, + "215-Fonds commercial": { + "account_type": "Fixed Asset" + }, + "216-Droit au bail": { + "account_type": "Fixed Asset" + }, + "217-Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset" + }, + "218-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "2181-Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset" + }, + "2182-Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset" + }, + "2183-Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset" + }, + "2184-Co\u00fbts des franchises": { + "account_type": "Fixed Asset" + }, + "2188-Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset" + } + }, + "219-Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "2191-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "2193-Logiciels et internet": { + "account_type": "Fixed Asset" + }, + "2198-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset" + } + } + }, + "22-Terrains": { + "account_type": "Fixed Asset", + "221-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "2211-Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset" + }, + "2212-Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset" + }, + "2218-Autres terrains": { + "account_type": "Fixed Asset" + } + }, + "222-Terrains nus": { + "account_type": "Fixed Asset", + "2221-Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset" + }, + "2228-Autres terrains nus": { + "account_type": "Fixed Asset" + } + }, + "223-Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "2231-Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset" + }, + "2232-Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset" + }, + "2234-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset" + }, + "2235-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset" + }, + "2238-Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset" + } + }, + "224-Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "2241-Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset" + }, + "2245-Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset" + }, + "2248-Autres travaux": { + "account_type": "Fixed Asset" + } + }, + "225-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "2251-Carri\u00e8res": { + "account_type": "Fixed Asset" + } + }, + "226-Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "2261-Parkings": { + "account_type": "Fixed Asset" + } + }, + "227-Terrains mis en concession": { + "account_type": "Fixed Asset" + }, + "228-Autres terrains": { + "account_type": "Fixed Asset", + "2281-Terrains immeubles de placement": { + "account_type": "Fixed Asset" + }, + "2285-Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset" + }, + "2286-Terrains de location acquisition": { + "account_type": "Fixed Asset" + }, + "2288-Divers terrains": { + "account_type": "Fixed Asset" + } + }, + "229-Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "2291-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset" + }, + "2292-Terrains nus": { + "account_type": "Fixed Asset" + }, + "2295-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset" + }, + "2298-Autres terrains": { + "account_type": "Fixed Asset" + } + } + }, + "23-B\u00e2timents, installations techniques et agencements": { + "231-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "2311-B\u00e2timents industriels": {}, + "2312-B\u00e2timents agricoles": {}, + "2313-B\u00e2timents administratifs et commerciaux": {}, + "2314-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2315-B\u00e2timents immeubles de placement": {}, + "2316-B\u00e2timents de location acquisition": {} + }, + "232-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "2321-B\u00e2timents industriels": {}, + "2322-B\u00e2timents agricoles": {}, + "2323-B\u00e2timents administratifs et commerciaux": {}, + "2324-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2325-B\u00e2timents immeubles de placement": {}, + "2326-B\u00e2timents de location acquisition": {} + }, + "233-Ouvrages d\u2019infrastructure": { + "2331-Voies de terre": {}, + "2332-Voies de fer": {}, + "2333-Voies d\u2019eau": {}, + "2334-Barrages, Digues": {}, + "2335-Pistes d\u2019a\u00e9rodrome": {}, + "2338-Autres ouvrages d\u2019infrastructures": {} + }, + "234-Am\u00e9nagements, agencements et installations techniques": { + "2341-Installations complexes sp\u00e9cialis\u00e9es sur sol propre": {}, + "2342-Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": {}, + "2343-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": {}, + "2344-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": {}, + "2345-Am\u00e9nagements et agencements des b\u00e2timents": {} + }, + "235-Am\u00e9nagements de bureaux": { + "2351-Installations g\u00e9n\u00e9rales": {}, + "2358-Autres am\u00e9nagements de bureaux": {} + }, + "237-B\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "238-Autres installations et agencements": {}, + "239-B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "2391-B\u00e2timents en cours": {}, + "2392-Installations en cours": {}, + "2393-Ouvrages d\u2019infrastructure en cours": {}, + "2394-Am\u00e9nagements et agencements et installations techniques en cours": {}, + "2395-Am\u00e9nagements de bureaux en cours": {}, + "2398-Autres installations et agencements en cours": {} + } + }, + "24-Mat\u00e9riel, mobilier et actifs biologiques": { + "241-Mat\u00e9riel et outillage industriel et commercial": { + "2411-Mat\u00e9riel industriel": {}, + "2412-Outillage industriel": {}, + "2413-Mat\u00e9riel commercial": {}, + "2414-Outillage commercial": {}, + "2416-Mat\u00e9riel & outillage industriel et commercial de location-acquisition": {} + }, + "242-Mat\u00e9riel et outillage agricole": { + "2421-Mat\u00e9riel agricole": {}, + "2422-Outillage agricole": {}, + "2426-Mat\u00e9riel & outillage agricole de location-acquisition": {} + }, + "243-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "244-Mat\u00e9riel et mobilier": { + "2441-Mat\u00e9riel de bureau": {}, + "2442-Mat\u00e9riel informatique": {}, + "2443-Mat\u00e9riel bureautique": {}, + "2444-Mobilier de bureau": {}, + "2445-Mat\u00e9riel et mobilier immeubles de placement": {}, + "2446-Mat\u00e9riel et mobilier de location acquisition": {}, + "2447-Mat\u00e9riel et mobilier des logements du personnel": {} + }, + "245-Mat\u00e9riel de transport": { + "2451-Mat\u00e9riel automobile": {}, + "2452-Mat\u00e9riel ferroviaire": {}, + "2453-Mat\u00e9riel fluvial, lagunaire": {}, + "2454-Mat\u00e9riel naval": {}, + "2455-Mat\u00e9riel a\u00e9rien": {}, + "2456-Mat\u00e9riel de transport de location-acquisition": {}, + "2457-Mat\u00e9riel hippomobile": {}, + "2458-Autres mat\u00e9riels de transport": {} + }, + "246-Actifs biologiques": { + "2461-Cheptel, animaux de trait": {}, + "2462-Cheptel, animaux reproducteurs": {}, + "2463-Animaux de garde": {}, + "2465-Plantations agricoles": {}, + "2468-Autres actifs biologiques": {} + }, + "247-Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "2471-Agencements et am\u00e9nagements du mat\u00e9riel": {}, + "2472-Agencements et am\u00e9nagements des actifs biologiques": {}, + "2478-Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": {} + }, + "248-Autres mat\u00e9riels et mobiliers": { + "2481-Collections et \u0153uvres d\u2019art": {}, + "2488-Divers mat\u00e9riels mobiliers": {} + }, + "249-Mat\u00e9riels et actifs biologiques en cours": { + "2491-Mat\u00e9riel et outillage industriel et commercial": {}, + "2492-Mat\u00e9riel et outillage agricole": {}, + "2493-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2494-Mat\u00e9riel et mobilier de bureau": {}, + "2495-Mat\u00e9riel de transport": {}, + "2496-Actifs biologiques": {}, + "2497-Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": {}, + "2498-Autres mat\u00e9riels et actifs biologiques en cours": {} + } + }, + "25-Avances et acomptes vers\u00e9s sur immobilisations": { + "251-Avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "252-Avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "26-Titres de participation": { + "261-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "262-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "263-Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "265-Participations dans des organismes professionnels": {}, + "266-Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {}, + "268-Autres titres de participation": {} + }, + "27-Autres immobilisations financi\u00e8res": { + "271-Pr\u00eats et cr\u00e9ances": { + "2711-Pr\u00eats participatifs": {}, + "2712-Pr\u00eats aux associ\u00e9s": {}, + "2713-Billets de fonds": {}, + "2714-Titres pr\u00eat\u00e9s": {}, + "2718-Autres pr\u00eats et cr\u00e9ances": {} + }, + "272-Pr\u00eats au personnel": { + "2721-Pr\u00eats immobiliers": {}, + "2722-Pr\u00eats mobiliers et d\u2019installation": {}, + "2728-Autres pr\u00eats au personnel": {} + }, + "273-Cr\u00e9ances sur l\u2019\u00c9tat": { + "2731-Retenues de garantie": {}, + "2733-Fonds r\u00e9glement\u00e9": {}, + "2734-Cr\u00e9ances sur le conc\u00e9dant": {}, + "2738-Autres cr\u00e9ances sur l\u2019\u00c9tat": {} + }, + "274-Titres immobilis\u00e9s": { + "2741-Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": {}, + "2742-Titres participatifs": {}, + "2743-Certificats d\u2019investissement": {}, + "2744-Parts de fonds commun de placement (FCP)": {}, + "2745-Obligations": {}, + "2746-Actions ou parts propres": {}, + "2748-Autres titres immobilis\u00e9s": {} + }, + "275-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "2751-D\u00e9p\u00f4ts pour loyers d\u2019avance": {}, + "2752-D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": {}, + "2753-D\u00e9p\u00f4ts pour l\u2019eau": {}, + "2754-D\u00e9p\u00f4ts pour le gaz": {}, + "2755-D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": {}, + "2756-Cautionnements sur march\u00e9s publics": {}, + "2757-Cautionnements sur autres op\u00e9rations": {}, + "2758-Autres d\u00e9p\u00f4ts et cautionnements": {} + }, + "276-Int\u00e9r\u00eats courus": { + "2761-Pr\u00eats et cr\u00e9ances non commerciales": {}, + "2762-Pr\u00eats au personnel": {}, + "2763-Cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2764-Titres immobilis\u00e9s": {}, + "2765-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2767-Cr\u00e9ances rattach\u00e9es \u00e0 des participations": {}, + "2768-Immobilisations financi\u00e8res diverses": {} + }, + "277-Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "2771-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": {}, + "2772-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": {}, + "2773-Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "2774-Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {} + }, + "278-Immobilisations financi\u00e8res diverses": { + "2781-Cr\u00e9ances diverses groupe": {}, + "2782-Cr\u00e9ances diverses hors groupe": {}, + "2784-Banques d\u00e9p\u00f4ts \u00e0 terme": {}, + "2785-Or et m\u00e9taux pr\u00e9cieux": {}, + "2788-Autres immobilisations financi\u00e8res": {} + } + }, + "28-Amortissements": { + "account_type": "Accumulated Depreciation", + "281-Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "2811-Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation" + }, + "2812-Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation" + }, + "2813-Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation" + }, + "2814-Amortissements des marques": { + "account_type": "Accumulated Depreciation" + }, + "2815-Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation" + }, + "2816-Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation" + }, + "2817-Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation" + }, + "2818-Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation" + } + }, + "282-Amortissements des terrains": { + "2824-Amortissements des travaux de mise en valeur des terrains": {} + }, + "283-Amortissements des b\u00e2timents, installations techniques et agencements": { + "2831-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2832-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2833-Amortissements des ouvrages d\u2019infrastructure": {}, + "2834-Amortissements des am\u00e9nagements, agencements et installations techniques": {}, + "2835-Amortissements des am\u00e9nagements de bureaux": {}, + "2837-Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2838-Amortissements des autres installations et agencements": {} + }, + "284-Amortissements du mat\u00e9riel": { + "2841-Amortissements du mat\u00e9riel et outillage industriel et commercial": {}, + "2842-Amortissements du mat\u00e9riel et outillage agricole": {}, + "2843-Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2844-Amortissements du mat\u00e9riel et mobilier": {}, + "2845-Amortissements du mat\u00e9riel de transport": {}, + "2846-Amortissements des actifs biologiques": {}, + "2847-Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2848-Amortissements des autres mat\u00e9riels": {} + } + }, + "29-D\u00e9pr\u00e9ciations des immobilisations": { + "291-D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "2911-D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": {}, + "2912-D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": {}, + "2913-D\u00e9pr\u00e9ciations des logiciels et sites internet": {}, + "2914-D\u00e9pr\u00e9ciations des marques": {}, + "2915-D\u00e9pr\u00e9ciations du fonds commercial": {}, + "2916-D\u00e9pr\u00e9ciations du droit au bail": {}, + "2917-D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": {}, + "2918-D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": {}, + "2919-D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": {} + }, + "292-D\u00e9pr\u00e9ciations des terrains": { + "2921-D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": {}, + "2922-D\u00e9pr\u00e9ciations des terrains nus": {}, + "2923-D\u00e9pr\u00e9ciations des terrains b\u00e2tis": {}, + "2924-D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": {}, + "2925-D\u00e9pr\u00e9ciations des terrains de gisement": {}, + "2926-D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": {}, + "2927-D\u00e9pr\u00e9ciations des terrains mis en concession": {}, + "2928-D\u00e9pr\u00e9ciations des autres terrains": {}, + "2929-D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": {} + }, + "293-D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "2931-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2932-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2933-D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": {}, + "2934-D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": {}, + "2935-D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": {}, + "2937-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2938-D\u00e9pr\u00e9ciations des autres installations et agencements": {}, + "2939-D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": {} + }, + "294-D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "2941-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": {}, + "2942-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": {}, + "2943-D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2944-D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": {}, + "2945-D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": {}, + "2946-D\u00e9pr\u00e9ciations des actifs biologiques": {}, + "2947-D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2948-D\u00e9pr\u00e9ciations des autres mat\u00e9riels": {}, + "2949-D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": {} + }, + "295-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "2951-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "2952-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "296-D\u00e9pr\u00e9ciations des titres de participation": { + "2961-D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "2962-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "2963-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "2965-D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": {}, + "2966-D\u00e9pr\u00e9ciations des parts dans des GIE": {}, + "2968-D\u00e9pr\u00e9ciations des autres titres de participation": {} + }, + "297-D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "2971-D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": {}, + "2972-D\u00e9pr\u00e9ciations des pr\u00eats au personnel": {}, + "2973-D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2974-D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": {}, + "2975-D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2977-D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": {}, + "2978-D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": {} + } + }, + "root_type": "Asset" + }, + "3-Comptes de Stocks": { + "31-Marchandises": { + "311-Marchandises A": { + "3111-Marchandises A1": {}, + "3112-Marchandises A2": {} + }, + "312-Marchandises B": { + "3121-Marchandises B1": {}, + "3122-Marchandises B2": {} + }, + "313-Actifs biologiques": { + "3131-Animaux": {}, + "3132-V\u00e9g\u00e9taux": {} + }, + "318-Marchandises hors activit\u00e9s ordinaires (HAO)": {} + }, + "32-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "321-Mati\u00e8res A": {}, + "322-Mati\u00e8res B": {}, + "323-Fournitures (A, B)": {} + }, + "33-Autres approvisionnements": { + "331-Mati\u00e8res consommables": {}, + "332-Fournitures d\u2019atelier et d\u2019usine": {}, + "333-Fournitures de magasin": {}, + "334-Fournitures de bureau": {}, + "335-Emballages": { + "3351-Emballages perdus": {}, + "3352-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "3353-Emballages \u00e0 usage mixte": {}, + "3358-Autres emballages": {} + }, + "338-Autres mati\u00e8res": {} + }, + "34-Produits en cours": { + "341-Produits en cours": { + "3411-Produits en cours P1": {}, + "3412-Produits en cours P2": {} + }, + "342-Travaux en cours": { + "3421-Travaux en cours T1": {}, + "3422-Travaux en cours T2": {} + }, + "343-Produits interm\u00e9diaires en cours": { + "3431-Produits interm\u00e9diaires A": {}, + "3432-Produits interm\u00e9diaires B": {} + }, + "344-Produits r\u00e9siduels en cours": { + "3441-Produits r\u00e9siduels A": {}, + "3442-Produits r\u00e9siduels B": {} + }, + "345-Actifs biologiques en cours": { + "3451-Animaux": {}, + "3452-V\u00e9g\u00e9taux": {} + } + }, + "35-Services en cours": { + "351-\u00c9tudes en cours": { + "3511-\u00c9tudes en cours E1": {}, + "3512-\u00c9tudes en cours E2": {} + }, + "352-Prestations de services en cours": { + "3521-Prestations de services S1": {}, + "3522-Prestations de services S2": {} + } + }, + "36-Produits finis": { + "361-Produits finis A": {}, + "362-Produits finis B": {}, + "363-Actifs biologiques": { + "3631-Animaux": {}, + "3632-V\u00e9g\u00e9taux": {}, + "3638-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "37-Produits interm\u00e9diaires et r\u00e9siduels": { + "371-Produits interm\u00e9diaires": { + "3711-Produits interm\u00e9diaires A": {}, + "3712-Produits interm\u00e9diaires B": {} + }, + "372-Produits r\u00e9siduels": { + "3721-D\u00e9chets": {}, + "3722-Rebuts": {}, + "3723-Mati\u00e8res de R\u00e9cup\u00e9ration": {} + }, + "373-Actifs biologiques": { + "3731-Animaux": {}, + "3732-V\u00e9g\u00e9taux": {}, + "3738-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "38-Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "381-Marchandises en cours de route": {}, + "382-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": {}, + "383-Autres approvisionnements en cours de route": {}, + "386-Produits finis en cours de route": {}, + "387-Stock en consignation ou en d\u00e9p\u00f4t": { + "3871-Stock en consignation": {}, + "3872-Stock en d\u00e9p\u00f4t": {} + }, + "388-Stock provenant d\u2019immobilisations mises hors service ou au rebut": {} + }, + "39-D\u00e9pr\u00e9ciations des stocks et encours de production": { + "391-D\u00e9pr\u00e9ciations des stocks de marchandises": {}, + "392-D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "393-D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": {}, + "394-D\u00e9pr\u00e9ciations des productions en cours": {}, + "395-D\u00e9pr\u00e9ciations des services en cours": {}, + "396-D\u00e9pr\u00e9ciations des stocks de produits finis": {}, + "397-D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": {}, + "398-D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": {} + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "409-Fournisseurs d\u00e9biteurs": { + "4091-Fournisseurs Avances et acomptes vers\u00e9s": {}, + "4092-Fournisseurs Groupe avances et acomptes vers\u00e9s": {}, + "4093-Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": {}, + "4094-Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": {}, + "4098-Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": {} + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "411-Clients": { + "4111-Clients": { + "account_type": "Receivable" + }, + "4112-Clients groupe": { + "account_type": "Receivable" + }, + "4114-Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable" + }, + "4115-Clients, organismes internationaux": { + "account_type": "Receivable" + }, + "4116-Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable" + }, + "4117-Client, retenues de garantie": { + "account_type": "Receivable" + }, + "4118-Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "412-Clients, effets \u00e0 recevoir en portefeuille": { + "4121-Clients, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4122-Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4124-\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4125-Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "413-Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "4131-Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable" + }, + "4132-Clients, effets impay\u00e9s": { + "account_type": "Receivable" + }, + "4133-Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable" + }, + "4138-Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "414-Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "4141-Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4142-Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable" + }, + "4146-Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4147-Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "415-Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable" + }, + "416-Cr\u00e9ances clients litigieuses ou douteuses": { + "4161-Cr\u00e9ances litigieuses": { + "account_type": "Receivable" + }, + "4162-Cr\u00e9ances douteuses": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "418-Clients, produits \u00e0 recevoir": { + "4181-Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable" + }, + "4186-Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "421-Personnel, avances et acomptes": { + "4211-Personnel, avances": {}, + "4212-Personnel, acomptes": {}, + "4213-Frais avanc\u00e9s et fournitures au personnel": {} + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "4311-Prestations familiales": {}, + "4312-Accidents de travail": {}, + "4313-Caisse de retraite obligatoire": {}, + "4314-Caisse de retraite facultative": {}, + "4318-Autres cotisations sociales": {} + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "4331-Mutuelle": {}, + "4332-Assurances retraite": {}, + "4333-Assurances et organismes de sant\u00e9": {} + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4387-Produits \u00e0 recevoir": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "443-\u00c9tat, TVA factur\u00e9e": { + "4431-TVA factur\u00e9e sur ventes": {}, + "4432-TVA factur\u00e9e sur prestations de services": {}, + "4433-TVA factur\u00e9e sur travaux": {}, + "4434-TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": {}, + "4435-TVA sur factures \u00e0 \u00e9tablir": {} + }, + "445-\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "4451-TVA r\u00e9cup\u00e9rable sur immobilisations": {}, + "4452-TVA r\u00e9cup\u00e9rable sur achats": {}, + "4453-TVA r\u00e9cup\u00e9rable sur transport": {}, + "4454-TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": {}, + "4455-TVA r\u00e9cup\u00e9rable sur factures non parvenues": {}, + "4456-TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": {} + }, + "448-\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "4486-Charges \u00e0 payer": {}, + "4487-Produits \u00e0 recevoir": {} + }, + "449-\u00c9tat, cr\u00e9ances et dettes diverses": { + "4491-\u00c9tat, obligations cautionn\u00e9es": {}, + "4492-\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": {}, + "4493-\u00c9tat, fonds de dotation \u00e0 recevoir": {}, + "4494-\u00c9tat, subventions investissement \u00e0 recevoir": {}, + "4495-\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": {}, + "4496-\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": {}, + "4497-\u00c9tat, avances sur subventions": {}, + "4499-\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": {} + } + }, + "45-Organismes internationaux (ACTIF)": { + "451-Op\u00e9rations avec les organismes africains": {}, + "452-Op\u00e9rations avec les autres organismes internationaux": {}, + "458-Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "4581-Organismes internationaux, fonds de dotation \u00e0 recevoir": {}, + "4582-Organismes internationaux, subventions \u00e0 recevoir": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "4613-Apporteurs, capital appel\u00e9, non vers\u00e9": {}, + "4614-Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": {}, + "4618-Apporteurs, titres \u00e0 \u00e9changer": {} + }, + "467-Apporteurs, restant d\u00fb sur capital appel\u00e9": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "4721-Cr\u00e9ances sur cessions de titres de placement": {}, + "4726-Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": {} + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "4731-Mandants": {}, + "4732-Mandataires": {}, + "4733-Commettants": {}, + "4734-Commissionnaires": {}, + "4739-\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "4747-Compte de r\u00e9partition p\u00e9riodique des produits": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "4751-Compte actif": { + "account_type": "Temporary" + } + }, + "476-Charges constat\u00e9es d\u2019avance": {}, + "478-\u00c9carts de conversion actif": { + "4781-Diminution des cr\u00e9ances d\u2019exploitation": {}, + "4782-Diminution des cr\u00e9ances financi\u00e8res": {}, + "4783-Augmentation des dettes d\u2019exploitation": {}, + "4784-Augmentation des dettes financi\u00e8res": {}, + "4786-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4788-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "485-Cr\u00e9ances sur cessions d\u2019immobilisations": { + "4851-En compte, immobilisations incorporelles": {}, + "4852-En compte, immobilisations corporelles": {}, + "4853-Effets \u00e0 recevoir, immobilisations incorporelles": {}, + "4854-Effets \u00e0 recevoir, immobilisations corporelles": {}, + "4855-Effets escompt\u00e9s non \u00e9chus": {}, + "4857-Retenues de garantie": {}, + "4858-Factures \u00e0 \u00e9tablir": {} + }, + "488-Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": {} + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "491-D\u00e9pr\u00e9ciations des comptes clients": { + "4911-Cr\u00e9ances litigieuses": {}, + "4912-Cr\u00e9ances douteuses": {} + }, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {}, + "496-D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "4962-Associ\u00e9s, comptes courants": {}, + "4963-Associ\u00e9s, op\u00e9rations faites en commun": {}, + "4966-Groupe, comptes courants": {} + }, + "497-D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": {}, + "498-D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "4985-Cr\u00e9ances sur cessions d\u2019immobilisations": {}, + "4986-Cr\u00e9ances sur cessions de titres de placement": {}, + "4988-Autres cr\u00e9ances HAO": {} + }, + "499-Provisions pour risques \u00e0 court terme": { + "4991-Sur op\u00e9rations d\u2019exploitation": {}, + "4997-Sur op\u00e9rations financi\u00e8res": {}, + "4998-Sur op\u00e9rations HAO": {} + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "401-Fournisseurs, dettes en compte": { + "4011-Fournisseurs": { + "account_type": "Payable" + }, + "4012-Fournisseurs groupe": { + "account_type": "Payable" + }, + "4013-Fournisseurs sous-traitants": { + "account_type": "Payable" + }, + "4016-Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable" + }, + "4017-Fournisseur, retenues de garantie": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "402-Fournisseurs, effets \u00e0 payer": { + "4021-Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable" + }, + "4022-Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable" + }, + "4023-Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "404-Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "4041-Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4042-Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable" + }, + "4046-Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4047-Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "408-Fournisseurs, factures non parvenues": { + "4081-Fournisseurs": { + "account_type": "Stock Received But Not Billed" + }, + "4082-Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed" + }, + "4083-Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed" + }, + "4086-Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "419-Clients cr\u00e9diteurs": { + "4191-Clients, avances et acomptes re\u00e7us": {}, + "4192-Clients groupe, avances et acomptes re\u00e7us": {}, + "4194-Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": {}, + "4198-Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": {} + } + }, + "42-Personnel (PASSIF)": { + "422-Personnel, r\u00e9mun\u00e9rations dues": {}, + "423-Personnel, oppositions, saisies-arr\u00eats": { + "4231-Personnel, oppositions": {}, + "4232-Personnel, saisies-arr\u00eats": {}, + "4233-Personnel, avis \u00e0 tiers d\u00e9tenteur": {} + }, + "424-Personnel, \u0153uvres sociales internes": { + "4241-Assistance m\u00e9dicale": {}, + "4242-Allocations familiales": {}, + "4245-Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": {}, + "4248-Autres \u0153uvres sociales internes": {} + }, + "425-Repr\u00e9sentants du personnel": { + "4251-D\u00e9l\u00e9gu\u00e9s du personnel": {}, + "4252-Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": {}, + "4258-Autres repr\u00e9sentants du personnel": {} + }, + "426-Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "4261-Participation aux b\u00e9n\u00e9fices": {}, + "4264-Participation au capital": {} + }, + "427-Personnel d\u00e9p\u00f4ts": {}, + "428-Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "4281-Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": {}, + "4286-Autres charges \u00e0 payer": {}, + "4287-Produits \u00e0 recevoir": {} + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4381-Charges sociales sur gratifications \u00e0 payer": {}, + "4382-Charges sociales sur cong\u00e9s \u00e0 payer": {}, + "4386-Autres charges \u00e0 payer": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "441-\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": {}, + "442-\u00c9tat, autres imp\u00f4ts et taxes": { + "4421-Imp\u00f4ts et taxes d\u2019\u00c9tat": {}, + "4422-Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": {}, + "4423-Imp\u00f4ts et taxes recouvrables sur des obligataires": {}, + "4424-Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": {}, + "4426-Droits de douane": {}, + "4428-Autres imp\u00f4ts et taxes": {} + }, + "444-\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "4441-\u00c9tat, TVA due": {}, + "4449-\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": {} + }, + "446-\u00c9tat, autres taxes sur le chiffre d\u2019affaires": {}, + "447-\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "4471-Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": {}, + "4472-Imp\u00f4ts sur salaires": {}, + "4473-Contribution nationale": {}, + "4474-Contribution nationale de solidarit\u00e9": {}, + "4478-Autres imp\u00f4ts et contributions": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "4611-Apporteurs, apports en nature": {}, + "4612-Apporteurs, apports en num\u00e9raire": {}, + "4615-Apporteurs, versements re\u00e7us sur augmentation de capital": {}, + "4616-Apporteurs, versements anticip\u00e9s": {}, + "4617-Apporteurs d\u00e9faillants": {}, + "4619-Apporteurs, capital \u00e0 rembourser": {} + }, + "462-Associ\u00e9s, comptes courants": { + "4621-Principal": {}, + "4626-Int\u00e9r\u00eats courus": {} + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "4631-Op\u00e9rations courantes": {}, + "4636-Int\u00e9r\u00eats courus": {} + }, + "465-Associ\u00e9s, dividendes \u00e0 payer": {}, + "466-Groupe, comptes courants": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "4711-D\u00e9biteurs divers": {}, + "4712-Cr\u00e9diteurs divers": {}, + "4713-Obligataires": {}, + "4715-R\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "4716-Compte d\u2019affacturage": {}, + "4717-D\u00e9biteurs divers retenues de garantie": {}, + "4718-Apport, compte de fusion et op\u00e9rations assimil\u00e9es": {}, + "4719-Bons de souscription d\u2019actions et d\u2019obligations": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "4746-Compte de r\u00e9partition p\u00e9riodique des charges": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "4752-Compte passif": {} + }, + "477-Produits constat\u00e9s d\u2019avance": {}, + "479-\u00c9carts de conversion passif": { + "4791-Augmentation des cr\u00e9ances d\u2019exploitation": {}, + "4792-Augmentation des cr\u00e9ances financi\u00e8res": {}, + "4793-Diminution des dettes d\u2019exploitation": {}, + "4794-Diminution des dettes financi\u00e8res": {}, + "4797-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4798-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "481-Fournisseurs d\u2019investissements": { + "4811-Immobilisations incorporelles": {}, + "4812-Immobilisations corporelles": {}, + "4813-Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": {}, + "4816-R\u00e9serve de propri\u00e9t\u00e9": {}, + "4817-Retenues de garantie": {}, + "4818-Factures non parvenues": {} + }, + "482-Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "4821-Immobilisations incorporelles": {}, + "4822-Immobilisations corporelles": {} + }, + "484-Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "4887-Produits": {} + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (PASSIF)": { + "490-D\u00e9pr\u00e9ciations des comptes fournisseurs": {}, + "492-D\u00e9pr\u00e9ciations des comptes personnel": {}, + "493-D\u00e9pr\u00e9ciations des comptes organismes sociaux": {}, + "494-D\u00e9pr\u00e9ciations des comptes \u00c9tat et collectivit\u00e9s publiques": {}, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {} + }, + "root_type": "Liability" + }, + "5-Comptes de tr\u00e9sorerie": { + "50-Titres de placement": { + "501-Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "5011-Titres du Tr\u00e9sor \u00e0 court terme": {}, + "5012-Titres d\u2019organismes financiers": {}, + "5013-Bons de caisse \u00e0 court terme": {}, + "5016-Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": {} + }, + "502-Actions": { + "5021-Actions ou parts propres": {}, + "5022-Actions cot\u00e9es": {}, + "5023-Actions non cot\u00e9es": {}, + "5024-Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": {}, + "5025-Autres actions": {}, + "5026-Frais d\u2019acquisition des actions": {} + }, + "503-Obligations": { + "5031-Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": {}, + "5032-Obligations cot\u00e9es": {}, + "5033-Obligations non cot\u00e9es": {}, + "5035-Autres obligations": {}, + "5036-Frais d\u2019acquisition des obligations": {} + }, + "504-Bons de souscription": { + "5042-Bons de souscription d\u2019actions": {}, + "5043-Bons de souscription d\u2019obligations": {} + }, + "505-Titres n\u00e9gociables hors r\u00e9gion": {}, + "506-Int\u00e9r\u00eats courus": { + "5061-Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": {}, + "5062-Actions": {}, + "5063-Obligations": {} + }, + "508-Autres titres de placement et cr\u00e9ances assimil\u00e9es": {} + }, + "51-Valeurs \u00e0 encaisser": { + "511-Effets \u00e0 encaisser": {}, + "512-Effets \u00e0 l\u2019encaissement": {}, + "513-Ch\u00e8ques \u00e0 encaisser": {}, + "514-Ch\u00e8ques \u00e0 l\u2019encaissement": {}, + "515-Cartes de cr\u00e9dit \u00e0 encaisser": {}, + "518-Autres valeurs \u00e0 l\u2019encaissement": { + "5181-Warrants": {}, + "5182-Billets de fonds": {}, + "5185-Ch\u00e8ques de voyage": {}, + "5186-Coupons \u00e9chus": {}, + "5187-Int\u00e9r\u00eats \u00e9chus des obligations": {} + } + }, + "52-Banques": { + "521-Banques locales": { + "5211-Banques en monnaie nationale": { + "account_type": "Bank" + }, + "5215-Banques en devises": { + "account_type": "Bank" + }, + "account_type": "Bank" + }, + "522-Banques autres \u00c9tats r\u00e9gion": {}, + "523-Banques autres \u00c9tats zone mon\u00e9taire": {}, + "524-Banques hors zone mon\u00e9taire": {}, + "525-Banques d\u00e9p\u00f4t \u00e0 terme": {}, + "526-Banques, int\u00e9r\u00eats courus": { + "5261-Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": {}, + "5267-Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": {} + } + }, + "53-\u00c9tablissements financiers et assimil\u00e9s": { + "531-Ch\u00e8ques postaux": {}, + "532-Tr\u00e9sor": {}, + "533-Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": {}, + "536-\u00c9tablissements financiers, int\u00e9r\u00eats courus": {}, + "538-Autres organismes financiers": {} + }, + "54-Instruments de tr\u00e9sorerie": { + "541-Options de taux d\u2019int\u00e9r\u00eat": {}, + "542-Options de taux de change": {}, + "543-Options de taux boursiers": {}, + "544-Instruments de march\u00e9s \u00e0 terme": {}, + "545-Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": {} + }, + "55-Instruments de monnaie \u00e9lectronique": { + "551-Monnaie \u00e9lectronique carte carburant": {}, + "552-Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": {}, + "553-Monnaie \u00e9lectronique carte p\u00e9age": {}, + "554-Porte-monnaie \u00e9lectronique": {}, + "558-Autres instruments de monnaies \u00e9lectroniques": {} + }, + "56-Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "561-Cr\u00e9dits de tr\u00e9sorerie": {}, + "564-Escompte de cr\u00e9dits de campagne": {}, + "565-Escompte de cr\u00e9dits ordinaires": {}, + "566-Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": {} + }, + "57-Caisse": { + "571-Caisse si\u00e8ge social": { + "5711-Caisse en monnaie nationale": {}, + "5712-Caisse en devises": {} + }, + "572-Caisse succursale A": { + "5721-En monnaie nationale": {}, + "5722-En devises": {} + }, + "573-Caisse succursale B": { + "5731-En monnaie nationale": {}, + "5732-En devises": {} + } + }, + "58-R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "581-R\u00e9gies d\u2019avance": {}, + "582-Accr\u00e9ditifs": {}, + "585-Virements de fonds": {}, + "588-Autres virements internes": {} + }, + "59-D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "590-D\u00e9pr\u00e9ciations des titres de placement": {}, + "591-D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": {}, + "592-D\u00e9pr\u00e9ciations des comptes banques": {}, + "593-D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": {}, + "594-D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": {}, + "599-Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": {} + }, + "root_type": "Asset" + }, + "6-Comptes de charges des activit\u00e9s ordinaires": { + "60-Achats et variations de stocks": { + "601-Achats de marchandises": { + "6011-Dans la R\u00e9gion": {}, + "6012-Hors R\u00e9gion": {}, + "6013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6015-Frais sur achats": {}, + "6019-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "602-Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "6021-Dans la R\u00e9gion": {}, + "6022-Hors R\u00e9gion": {}, + "6023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6025-Frais sur achats": {}, + "6029-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "603-Variations des stocks de biens achet\u00e9s": { + "6031-Variations des stocks de marchandises": {}, + "6032-Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "6033-Variations des stocks d\u2019autres approvisionnements": {} + }, + "604-Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "6041-Mati\u00e8res consommables": {}, + "6042-Mati\u00e8res combustibles": {}, + "6043-Produits d\u2019entretien": {}, + "6044-Fournitures d\u2019atelier et d\u2019usine": {}, + "6045-Frais sur achat": {}, + "6046-Fournitures de magasin": {}, + "6047-Fournitures de bureau": {}, + "6049-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "605-Autres achats": { + "6051-Fournitures non stockables Eau": {}, + "6052-Fournitures non stockables \u00c9lectricit\u00e9": {}, + "6053-Fournitures non stockables Autres \u00e9nergies": {}, + "6054-Fournitures d\u2019entretien non stockables": {}, + "6055-Fournitures de bureau non stockables": {}, + "6056-Achats de petit mat\u00e9riel et outillage": {}, + "6057-Achats d\u2019\u00e9tudes et prestations de services": {}, + "6058-Achats de travaux, mat\u00e9riels et \u00e9quipements": {}, + "6059-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "608-Achats d\u2019emballages": { + "6081-Emballages perdus": {}, + "6082-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "6083-Emballages \u00e0 usage mixte": {}, + "6085-Frais sur achats": {}, + "6089-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + } + }, + "61-Transports": { + "612-Transports sur ventes": {}, + "613-Transports pour le compte de tiers": {}, + "614-Transports du personnel": {}, + "616-Transports de plis": {}, + "618-Autres frais de transport": { + "6181-Voyages et d\u00e9placements": {}, + "6182-Transports entre \u00e9tablissements ou chantiers": {}, + "6183-Transports administratifs": {} + } + }, + "62-Services ext\u00e9rieurs": { + "621-Sous-traitance g\u00e9n\u00e9rale": {}, + "622-Locations, charges locatives": { + "6221-Locations de terrains": {}, + "6222-Locations de b\u00e2timents": {}, + "6223-Locations de mat\u00e9riels et outillages": {}, + "6224-Malis sur emballages": {}, + "6225-Locations d\u2019emballages": {}, + "6226-Fermages et loyers du foncier": {}, + "6228-Locations et charges locatives diverses": {} + }, + "623-Redevances de location acquisition": { + "6232-Cr\u00e9dit-bail immobilier": {}, + "6233-Cr\u00e9dit-bail mobilier": {}, + "6234-Location-vente": {}, + "6238-Autres contrats de location acquisition": {} + }, + "624-Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "6241-Entretien et r\u00e9parations des biens immobiliers": {}, + "6242-Entretien et r\u00e9parations des biens mobiliers": {}, + "6243-Maintenance": {}, + "6244-Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "6248-Autres entretiens et r\u00e9parations": {} + }, + "625-Primes d\u2019assurance": { + "6251-Assurances multirisques": {}, + "6252-Assurances mat\u00e9riel de transport": {}, + "6253-Assurances risques d\u2019exploitation": {}, + "6254-Assurances responsabilit\u00e9 du producteur": {}, + "6255-Assurances insolvabilit\u00e9 clients": {}, + "6257-Assurances transport sur ventes": {}, + "6258-Autres primes d\u2019assurances": {} + }, + "626-\u00c9tudes, recherches et documentation": { + "6261-\u00c9tudes et recherches": {}, + "6265-Documentation g\u00e9n\u00e9rale": {}, + "6266-Documentation technique": {} + }, + "627-Publicit\u00e9, publications, relations publiques": { + "6271-Annonces, insertions": {}, + "6272-Catalogues, imprim\u00e9s publicitaires": {}, + "6273-\u00c9chantillons": {}, + "6274-Foires et expositions": {}, + "6275-Publications": {}, + "6276-Cadeaux \u00e0 la client\u00e8le": {}, + "6277-Frais de colloques, s\u00e9minaires, conf\u00e9rences": {}, + "6278-Autres charges de publicit\u00e9 et relations publiques": {} + }, + "628-Frais de t\u00e9l\u00e9communications": { + "6281-Frais de t\u00e9l\u00e9phone": {}, + "6282-Frais de t\u00e9lex": {}, + "6283-Frais de t\u00e9l\u00e9copie": {}, + "6288-Autres frais de t\u00e9l\u00e9communications": {} + } + }, + "63-Autres services ext\u00e9rieurs": { + "631-Frais bancaires": { + "6311-Frais sur titres (vente, garde)": {}, + "6312-Frais sur effets": {}, + "6313-Location de coffres": {}, + "6314-Commissions d\u2019affacturage": {}, + "6315-Commissions sur cartes de cr\u00e9dit": {}, + "6316-Frais d\u2019\u00e9mission d\u2019emprunts": {}, + "6317-Frais sur instruments monnaie \u00e9lectronique": {}, + "6318-Autres frais bancaires": {} + }, + "632-R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "6322-Commissions et courtages sur ventes": {}, + "6324-Honoraires des professions r\u00e9glement\u00e9es": {}, + "6325-Frais d\u2019actes et de contentieux": {}, + "6326-R\u00e9mun\u00e9rations d\u2019affacturage": {}, + "6327-R\u00e9mun\u00e9rations des autres prestataires de services": {}, + "6328-Divers frais": {} + }, + "633-Frais de formation du personnel": {}, + "634-Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "6342-Redevances pour brevets, licences": {}, + "6343-Redevances pour logiciels": {}, + "6344-Redevances pour marques": {}, + "6345-Redevances pour sites internet": {}, + "6346-Redevances pour concessions, droits et valeurs similaires": {} + }, + "635-Cotisations": { + "6351-Cotisations": {}, + "6358-Concours divers": {} + }, + "637-R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "6371-Personnel int\u00e9rimaire": {}, + "6372-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "638-Autres charges externes": { + "6381-Frais de recrutement du personnel": {}, + "6382-Frais de d\u00e9m\u00e9nagement": {}, + "6383-R\u00e9ceptions": {}, + "6384-Missions": {}, + "6385-Charges de copropri\u00e9t\u00e9": {} + } + }, + "64-Imp\u00f4ts et taxes": { + "641-Imp\u00f4ts et taxes directs": { + "6411-Imp\u00f4ts fonciers et taxes annexes": {}, + "6412-Patentes, licences et taxes annexes": {}, + "6413-Taxes sur appointements et salaires": {}, + "6414-Taxes d\u2019apprentissage": {}, + "6415-Formation professionnelle continue": {}, + "6418-Autres imp\u00f4ts et taxes directs": {} + }, + "645-Imp\u00f4ts et taxes indirects": {}, + "646-Droits d\u2019enregistrement": { + "6461-Droits de mutation": {}, + "6462-Droits de timbre": {}, + "6463-Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": {}, + "6464-Vignettes": {}, + "6468-Autres droits": {} + }, + "647-P\u00e9nalit\u00e9s, amendes fiscales": { + "6471-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": {}, + "6472-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": {}, + "6473-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": {}, + "6474-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": {}, + "6478-Autres p\u00e9nalit\u00e9s et amendes fiscales": {} + }, + "648-Autres imp\u00f4ts et taxes": {} + }, + "65-Autres charges": { + "651-Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "6511-Clients": {}, + "6515-Autres d\u00e9biteurs": {} + }, + "652-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "6521-Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": {}, + "6525-Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "654-Valeurs comptables des cessions courantes d\u2019immobilisations": { + "6541-Immobilisations incorporelles": {}, + "6542-Immobilisations corporelles": {} + }, + "656-Perte de change sur cr\u00e9ances et dettes commerciale": {}, + "657-P\u00e9nalit\u00e9s et amendes p\u00e9nales": {}, + "658-Charges diverses": { + "6581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "6582-Dons": {}, + "6583-M\u00e9c\u00e9nat": {}, + "6588-Autres charges diverses": {} + }, + "659-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "6591-Sur risques \u00e0 court terme": {}, + "6593-Sur stocks": {}, + "6594-Sur cr\u00e9ances": {}, + "6598-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": {} + } + }, + "66-Charges de personnel": { + "661-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "6611-Appointements salaires et commissions": {}, + "6612-Primes et gratifications": {}, + "6613-Cong\u00e9s pay\u00e9s": {}, + "6614-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6615-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6616-Suppl\u00e9ment familial": {}, + "6617-Avantages en nature": {}, + "6618-Autres r\u00e9mun\u00e9rations directes": {} + }, + "662-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "6621-Appointements salaires et commissions": {}, + "6622-Primes et gratifications": {}, + "6623-Cong\u00e9s pay\u00e9s": {}, + "6624-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6625-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6626-Suppl\u00e9ment familial": {}, + "6627-Avantages en nature": {}, + "6628-Autres r\u00e9mun\u00e9rations directes": {} + }, + "663-Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "6631-Indemnit\u00e9s de logement": {}, + "6632-Indemnit\u00e9s de repr\u00e9sentation": {}, + "6633-Indemnit\u00e9s d\u2019expatriation": {}, + "6634-Indemnit\u00e9s de transport": {}, + "6638-Autres indemnit\u00e9s et avantages divers": {} + }, + "664-Charges sociales": { + "6641-Charges sociales sur r\u00e9mun\u00e9ration du personnel national": {}, + "6642-Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": {} + }, + "666-R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "6661-R\u00e9mun\u00e9ration du travail de l\u2019exploitant": {}, + "6662-Charges sociales": {} + }, + "667-R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "6671-Personnel int\u00e9rimaire": {}, + "6672-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "668-Autres charges sociales": { + "6681-Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": {}, + "6682-Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": {}, + "6683-Versements et contributions aux autres \u0153uvres sociales": {}, + "6684-M\u00e9decine du travail et pharmacie": {}, + "6685-Assurances et organismes de sant\u00e9": {}, + "6686-Assurances retraite et fonds de pension": {}, + "6687-Majorations et p\u00e9nalit\u00e9s sociales": {}, + "6688-Charges sociales diverses": {} + } + }, + "67-Frais financiers et charges assimil\u00e9es": { + "671-Int\u00e9r\u00eats des emprunts": { + "6711-Emprunts obligataires": {}, + "6712-Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "6713-Dettes li\u00e9es \u00e0 des participations": {}, + "6714-Primes de remboursement des obligations": {} + }, + "672-Int\u00e9r\u00eats dans loyers de location acquisition": { + "6722-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": {}, + "6723-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": {}, + "6724-Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": {}, + "6728-Int\u00e9r\u00eats dans loyers des autres locations acquisition": {} + }, + "673-Escomptes accord\u00e9s": {}, + "674-Autres int\u00e9r\u00eats": { + "6741-Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": {}, + "6742-Comptes courants bloqu\u00e9s": {}, + "6743-Int\u00e9r\u00eats sur obligations cautionn\u00e9es": {}, + "6744-Int\u00e9r\u00eats sur dettes commerciales": {}, + "6745-Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": {}, + "6748-Int\u00e9r\u00eats sur dettes diverses": {} + }, + "675-Escomptes des effets de commerce": {}, + "676-Pertes de change financi\u00e8res": {}, + "677-Pertes sur titres de placement": { + "6771-Pertes sur cessions de titres de placement": {}, + "6772-Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {} + }, + "678-Pertes et charges sur risques financiers": { + "6781-Sur rentes viag\u00e8res": {}, + "6782-Sur op\u00e9rations financi\u00e8res": {}, + "6784-Sur instruments de tr\u00e9sorerie": {} + }, + "679-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "6791-Sur risques financiers": {}, + "6795-Sur titres de placement": {}, + "6798-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "68-Dotations aux amortissements": { + "681-Dotations aux amortissements d\u2019exploitation": { + "6812-Dotations aux amortissements des immobilisations incorporelles": {}, + "6813-Dotations aux amortissements des immobilisations corporelles": {} + } + }, + "69-Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "691-Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "6911-Dotations aux provisions pour risques et charges": {}, + "6913-Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": {}, + "6914-Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": {} + }, + "697-Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "6971-Dotations aux provisions pour risques et charges": {}, + "6972-Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": {} + } + }, + "root_type": "Expense" + }, + "7-Comptes de produits des activit\u00e9s ordinaires": { + "70-Ventes": { + "701-Ventes de marchandises": { + "7011-Dans la R\u00e9gion": {}, + "7012-Hors R\u00e9gion": {}, + "7013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7015-Sur internet": {}, + "7019-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "702-Ventes de produits finis": { + "7021-Dans la R\u00e9gion": {}, + "7022-Hors R\u00e9gion": {}, + "7023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7025-Sur internet": {}, + "7029-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "703-Ventes de produits interm\u00e9diaires": { + "7031-Dans la R\u00e9gion": {}, + "7032-Hors R\u00e9gion": {}, + "7033-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7034-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7035-Sur internet": {}, + "7039-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "704-Ventes de produits r\u00e9siduels": { + "7041-Dans la R\u00e9gion": {}, + "7042-Hors R\u00e9gion": {}, + "7043-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7044-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7045-Sur internet": {}, + "7049-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "705-Travaux factur\u00e9s": { + "7051-Dans la R\u00e9gion": {}, + "7052-Hors R\u00e9gion": {}, + "7053-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7054-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7055-Sur internet": {}, + "7059-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "706-Services vendus": { + "7061-Dans la R\u00e9gion": {}, + "7062-Hors R\u00e9gion": {}, + "7063-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7064-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7065-Sur internet": {}, + "7069-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "707-Produits accessoires": { + "7071-Ports, emballages perdus et autres frais factur\u00e9s": {}, + "7072-Commissions et courtages": {}, + "7073-Locations": {}, + "7074-Bonis sur reprises et cessions d\u2019emballages": {}, + "7075-Mise \u00e0 disposition de personnel": {}, + "7076-Redevances pour brevets, logiciels, marques et droits similaires": {}, + "7077-Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": {}, + "7078-Autres produits accessoires": {} + } + }, + "71-Subventions d\u2019exploitation": { + "711-Sur produits \u00e0 l\u2019exportation": {}, + "712-Sur produits \u00e0 l\u2019importation": {}, + "713-Sur produits de p\u00e9r\u00e9quation": {}, + "714-Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": {}, + "718-Autres subventions d\u2019exploitation": { + "7181-Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": {}, + "7182-Vers\u00e9es par les organismes internationaux": {}, + "7183-Vers\u00e9es par des tiers": {} + } + }, + "72-Production immobilis\u00e9e": { + "721-Immobilisations incorporelles": {}, + "722-Immobilisations corporelles": { + "7221-Immobilisations corporelles (hors actifs biologiques)": {}, + "7222-Immobilisations corporelles (actifs biologiques)": {} + }, + "724-Production auto-consomm\u00e9e": {}, + "726-Immobilisations financi\u00e8res": {} + }, + "73-Variations des stocks de biens et de services produits": { + "734-Variations des stocks de produits en cours": { + "7341-Produits en cours": {}, + "7342-Travaux en cours": {} + }, + "735-Variations des en-cours de services": { + "7351-\u00c9tudes en cours": {}, + "7352-Prestations de services en cours": {} + }, + "736-Variations des stocks de produits finis": {}, + "737-Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "7371-Produits interm\u00e9diaires": {}, + "7372-Produits r\u00e9siduels": {} + } + }, + "75-Autres produits": { + "751-Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": {}, + "752-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "7521-Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": {}, + "7525-B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "754-Produits des cessions courantes d\u2019immobilisations": { + "7541-Immobilisations incorporelles": {}, + "7542-Immobilisations corporelles": {} + }, + "756-Gains de change sur cr\u00e9ances et dettes commerciales": {}, + "758-Produits divers": { + "7581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "7582-Indemnit\u00e9s d\u2019assurances re\u00e7ues": {}, + "7588-Autres produits divers": {} + }, + "759-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "7591-Sur risques \u00e0 court terme": {}, + "7593-Sur stocks": {}, + "7594-Sur cr\u00e9ances": {}, + "7598-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": {} + } + }, + "77-Revenus financiers et produits assimil\u00e9s": { + "771-Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "7712-Int\u00e9r\u00eats de pr\u00eats": {}, + "7713-Int\u00e9r\u00eats sur cr\u00e9ances diverses": {} + }, + "772-Revenus de participations et autres titres immobilis\u00e9s": { + "7721-Revenus des titres de participation": {}, + "7722-Revenus autres titres immobilis\u00e9s": {} + }, + "773-Escomptes obtenus": {}, + "774-Revenus de placement": { + "7745-Revenus des obligations": {}, + "7746-Revenus des titres de placement": {} + }, + "775-Int\u00e9r\u00eats dans loyers de location acquisition": {}, + "776-Gains de change financiers": {}, + "777-Gains sur cessions de titres de placement": {}, + "778-Gains sur risques financiers": { + "7781-Sur rentes viag\u00e8res": {}, + "7782-Sur op\u00e9rations financi\u00e8res": {}, + "7784-Sur instruments de tr\u00e9sorerie": {} + }, + "779-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "7791-Sur risques financiers": {}, + "7795-Sur titres de placement": {}, + "7798-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "78-Transferts de charges": { + "781-Transferts de charges d\u2019exploitation": {}, + "787-Transferts de charges financi\u00e8res": {} + }, + "79-Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "791-Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "7911-Pour risques et charges": {}, + "7913-Des immobilisations incorporelles": {}, + "7914-Des immobilisations corporelles": {} + }, + "797-Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "7971-Pour risques et charges": {}, + "7972-Des immobilisations financi\u00e8res": {} + }, + "798-Reprises d\u2019amortissements": {}, + "799-Reprises de subventions d\u2019investissement": {} + }, + "root_type": "Income" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "81-Valeurs comptables des cessions d\u2019immobilisations": { + "811-Immobilisations incorporelles": {}, + "812-Immobilisations corporelles": {}, + "816-Immobilisations financi\u00e8res": {} + }, + "83-Charges hors activit\u00e9s ordinaires": { + "831-Charges HAO constat\u00e9es": {}, + "833-Charges li\u00e9es aux op\u00e9rations de restructuration": {}, + "834-Pertes sur cr\u00e9ances HAO": {}, + "835-Dons et lib\u00e9ralit\u00e9s accord\u00e9s": {}, + "836-Abandons de cr\u00e9ances consentis": {}, + "837-Charges li\u00e9es aux op\u00e9rations de liquidation": {}, + "839-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "85-Dotations hors activit\u00e9s ordinaires": { + "851-Dotations aux provisions r\u00e9glement\u00e9es": {}, + "852-Dotations aux amortissements HAO": {}, + "853-Dotations aux d\u00e9pr\u00e9ciations HAO": {}, + "854-Dotations aux provisions pour risques et charges HAO": {}, + "858-Autres dotations HAO": {} + }, + "87-Participation des travailleurs": { + "871-Participation l\u00e9gale aux b\u00e9n\u00e9fices": {}, + "874-Participation contractuelle aux b\u00e9n\u00e9fices": {}, + "878-Autres participations": {} + }, + "89-Imp\u00f4ts sur le r\u00e9sultat": { + "891-Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "8911-Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": {}, + "8912-Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": {}, + "8913-Activit\u00e9s exerc\u00e9es hors R\u00e9gion": {} + }, + "892-Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": {}, + "895-Imp\u00f4t minimum forfaitaire IMF": {}, + "899-D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "8991-D\u00e9gr\u00e8vements": {}, + "8994-Annulations pour pertes r\u00e9troactives": {} + } + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "82-Produits des cessions d\u2019immobilisations": { + "821-Immobilisations incorporelles": {}, + "822-Immobilisations corporelles": {}, + "826-Immobilisations financi\u00e8res": {} + }, + "84-Produits hors activit\u00e9s ordinaires": { + "841-Produits HAO constat\u00e9s": {}, + "843-Produits li\u00e9s aux op\u00e9rations de restructuration": {}, + "844-Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": {}, + "845-Dons et lib\u00e9ralit\u00e9s obtenus": {}, + "846-Abandons de cr\u00e9ances obtenus": {}, + "847-Produits li\u00e9s aux op\u00e9rations de liquidation": {}, + "848-Transferts de charges HAO": {}, + "849-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "86-Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "861-Reprises de provisions r\u00e9glement\u00e9es": {}, + "862-Reprises d\u2019amortissements HAO": {}, + "863-Reprises de d\u00e9pr\u00e9ciations HAO": {}, + "864-Reprises de provisions pour risques et charges HAO": {}, + "868-Autres reprises HAO": {} + }, + "88-Subventions d\u2019\u00e9quilibre": { + "881-\u00c9tat": {}, + "884-Collectivit\u00e9s publiques": {}, + "886-Groupe": {}, + "888-Autres": {} + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/ne_plan_comptable_avec_code.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/ne_plan_comptable_avec_code.json new file mode 100644 index 00000000000..74c2d768109 --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/ne_plan_comptable_avec_code.json @@ -0,0 +1,4208 @@ +{ + "country_code": "ne", + "name": "Syscohada - Plan Comptable avec code", + "tree": { + "Comptes de ressources durables": { + "Capital": { + "Capital social": { + "Capital souscrit, non appel\u00e9": { + "account_number": "1011" + }, + "Capital souscrit, appel\u00e9, non vers\u00e9": { + "account_number": "1012" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, non amorti": { + "account_number": "1013" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, amorti": { + "account_number": "1014" + }, + "Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": { + "account_number": "1018" + }, + "account_number": "101" + }, + "Capital par dotation": { + "Dotation initiale": { + "account_number": "1021" + }, + "Dotations compl\u00e9mentaires": { + "account_number": "1022" + }, + "Autres dotations": { + "account_number": "1028" + }, + "account_number": "102" + }, + "Capital personnel": { + "account_number": "103" + }, + "Compte de l\u2019exploitant": { + "Apports temporaires": { + "account_number": "1041" + }, + "Op\u00e9rations courantes": { + "account_number": "1042" + }, + "R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": { + "account_number": "1043" + }, + "Pr\u00e9l\u00e8vements d\u2019autoconsommation": { + "account_number": "1047" + }, + "Autres pr\u00e9l\u00e8vements": { + "account_number": "1048" + }, + "account_number": "104" + }, + "Primes li\u00e9es au capital social": { + "Primes d\u2019\u00e9mission": { + "account_number": "1051" + }, + "Primes d\u2019apport": { + "account_number": "1052" + }, + "Primes de fusion": { + "account_number": "1053" + }, + "Primes de conversion": { + "account_number": "1054" + }, + "Autres primes": { + "account_number": "1058" + }, + "account_number": "105" + }, + "\u00c9carts de r\u00e9\u00e9valuation": { + "\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": { + "account_number": "1061" + }, + "\u00c9carts de r\u00e9\u00e9valuation libre": { + "account_number": "1062" + }, + "account_number": "106" + }, + "Apporteurs, capital souscrit, non appel\u00e9": { + "account_number": "109" + }, + "account_number": "10" + }, + "R\u00e9serves": { + "R\u00e9serve l\u00e9gale": { + "account_number": "111" + }, + "R\u00e9serves statutaires ou contractuelles": { + "account_number": "112" + }, + "R\u00e9serves r\u00e9glement\u00e9es": { + "R\u00e9serves de plus-values nettes \u00e0 long terme": { + "account_number": "1131" + }, + "R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "1132" + }, + "R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": { + "account_number": "1133" + }, + "R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": { + "account_number": "1134" + }, + "Autres r\u00e9serves r\u00e9glement\u00e9es": { + "account_number": "1135" + }, + "account_number": "113" + }, + "Autres r\u00e9serves": { + "R\u00e9serves facultatives": { + "account_number": "1181" + }, + "R\u00e9serves diverses": { + "account_number": "1188" + }, + "account_number": "118" + }, + "account_number": "11" + }, + "Report \u00e0 nouveau": { + "Report \u00e0 nouveau cr\u00e9diteur": { + "account_number": "121" + }, + "Report \u00e0 nouveau d\u00e9biteur": { + "Perte nette \u00e0 reporter": { + "account_number": "1291" + }, + "Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": { + "account_number": "1292" + }, + "account_number": "129" + }, + "account_number": "12" + }, + "R\u00e9sultat net de l\u2019exercice": { + "R\u00e9sultat en instance d\u2019affectation": { + "R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": { + "account_number": "1301" + }, + "R\u00e9sultat en instance d\u2019affectation : perte": { + "account_number": "1309" + }, + "account_number": "130" + }, + "R\u00e9sultat net : b\u00e9n\u00e9fice": { + "account_number": "131" + }, + "Marge commerciale (MC)": { + "account_number": "132" + }, + "Valeur ajout\u00e9e (VA)": { + "account_number": "133" + }, + "Exc\u00e9dent brut d\u2019exploitation (EBE)": { + "account_number": "134" + }, + "R\u00e9sultat d\u2019exploitation (RE)": { + "account_number": "135" + }, + "R\u00e9sultat financier (RF)": { + "account_number": "136" + }, + "R\u00e9sultat des activit\u00e9s ordinaires (RAO)": { + "account_number": "137" + }, + "R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "R\u00e9sultat de fusion": { + "account_number": "1381" + }, + "R\u00e9sultat d\u2019apport partiel d\u2019actif": { + "account_number": "1382" + }, + "R\u00e9sultat de scission": { + "account_number": "1383" + }, + "R\u00e9sultat de liquidation": { + "account_number": "1384" + }, + "account_number": "138" + }, + "R\u00e9sultat net : perte": { + "account_number": "139" + }, + "account_number": "13" + }, + "Subventions d\u2019investissement": { + "Subventions d\u2019\u00e9quipement": { + "\u00c9tat": { + "account_number": "1411" + }, + "R\u00e9gions": { + "account_number": "1412" + }, + "D\u00e9partements": { + "account_number": "1413" + }, + "Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": { + "account_number": "1414" + }, + "Entit\u00e9s publiques ou mixtes": { + "account_number": "1415" + }, + "Entit\u00e9s et organismes priv\u00e9s": { + "account_number": "1416" + }, + "Organismes internationaux": { + "account_number": "1417" + }, + "Autres": { + "account_number": "1418" + }, + "account_number": "141" + }, + "Autres subventions d\u2019investissement": { + "account_number": "148" + }, + "account_number": "14" + }, + "Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "Amortissements d\u00e9rogatoires": { + "account_number": "151" + }, + "Plus-values de cession \u00e0 r\u00e9investir": { + "account_number": "152" + }, + "Fonds r\u00e9glement\u00e9s": { + "Fonds National": { + "account_number": "1531" + }, + "Pr\u00e9l\u00e8vement pour le Budget": { + "account_number": "1532" + }, + "account_number": "153" + }, + "Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": { + "account_number": "154" + }, + "Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "Reconstitution des gisements miniers et p\u00e9troliers": { + "account_number": "1551" + }, + "account_number": "155" + }, + "Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "Hausse de prix": { + "account_number": "1561" + }, + "Fluctuation des cours": { + "account_number": "1562" + }, + "account_number": "156" + }, + "Provisions pour investissement": { + "account_number": "157" + }, + "Autres provisions et fonds r\u00e9glement\u00e9s": { + "account_number": "158" + }, + "account_number": "15" + }, + "Emprunts et dettes assimil\u00e9es": { + "Emprunts obligataires": { + "Emprunts obligataires ordinaires": { + "account_number": "1611" + }, + "Emprunts obligataires convertibles en actions": { + "account_number": "1612" + }, + "Emprunts obligataires remboursables en actions": { + "account_number": "1613" + }, + "Autres emprunts obligataires": { + "account_number": "1618" + }, + "account_number": "161" + }, + "Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "162" + }, + "Avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "163" + }, + "Avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "164" + }, + "D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "D\u00e9p\u00f4ts": { + "account_number": "1651" + }, + "Cautionnements": { + "account_number": "1652" + }, + "account_number": "165" + }, + "Int\u00e9r\u00eats courus": { + "Sur emprunts obligataires": { + "account_number": "1661" + }, + "Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "1662" + }, + "Sur avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "1663" + }, + "Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "1664" + }, + "Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "account_number": "1665" + }, + "Sur avances assorties de conditions particuli\u00e8res": { + "account_number": "1667" + }, + "Sur autres emprunts et dettes": { + "account_number": "1668" + }, + "account_number": "166" + }, + "Avances assorties de conditions particuli\u00e8res": { + "Avances bloqu\u00e9es pour augmentation du capital": { + "account_number": "1671" + }, + "Avances conditionn\u00e9es par l\u2019\u00c9tat": { + "account_number": "1672" + }, + "Avances conditionn\u00e9es par les autres organismes africains": { + "account_number": "1673" + }, + "Avances conditionn\u00e9es par les organismes internationaux": { + "account_number": "1674" + }, + "account_number": "167" + }, + "Autres emprunts et dettes": { + "Rentes viag\u00e8res capitalis\u00e9es": { + "account_number": "1681" + }, + "Billets de fonds": { + "account_number": "1682" + }, + "Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": { + "account_number": "1683" + }, + "Emprunts participatifs": { + "account_number": "1684" + }, + "Participation des travailleurs aux b\u00e9n\u00e9fices": { + "account_number": "1685" + }, + "Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": { + "account_number": "1686" + }, + "account_number": "168" + }, + "account_number": "16" + }, + "Dettes de location acquisition": { + "Dettes de location acquisition / cr\u00e9dit bail immobilier": { + "account_number": "172" + }, + "Dettes de location acquisition / cr\u00e9dit bail mobilier": { + "account_number": "173" + }, + "Dettes de location acquisition / location de vente": { + "account_number": "174" + }, + "Int\u00e9r\u00eats courus": { + "Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "1762" + }, + "Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "1763" + }, + "Sur dettes de location acquisition / location-vente": { + "account_number": "1764" + }, + "Sur autres dettes de location acquisition": { + "account_number": "1768" + }, + "account_number": "176" + }, + "Autres dettes de location acquisition": { + "account_number": "178" + }, + "account_number": "17" + }, + "Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "Dettes li\u00e9es \u00e0 des participations": { + "Dettes li\u00e9es \u00e0 des participations (groupe)": { + "account_number": "1811" + }, + "Dettes li\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "1812" + }, + "account_number": "181" + }, + "Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "182" + }, + "Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": { + "account_number": "183" + }, + "Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "184" + }, + "Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "185" + }, + "Comptes de liaison charges": { + "account_number": "186" + }, + "Comptes de liaison produits": { + "account_number": "187" + }, + "Comptes de liaison des soci\u00e9t\u00e9s en participation": { + "account_number": "188" + }, + "account_number": "18" + }, + "Provisions pour risques et charges": { + "Provisions pour litiges": { + "account_number": "191" + }, + "Provisions pour garanties donn\u00e9es aux clients": { + "account_number": "192" + }, + "Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": { + "account_number": "193" + }, + "Provisions pour pertes de change": { + "account_number": "194" + }, + "Provisions pour imp\u00f4ts": { + "account_number": "195" + }, + "Provisions pour pensions et obligations similaires": { + "Provisions pour pensions et obligations similaires engagement de retraite": { + "account_number": "1961" + }, + "Actif du r\u00e9gime de retraite": { + "account_number": "1962" + }, + "account_number": "196" + }, + "Provisions pour restructuration": { + "account_number": "197" + }, + "Autres provisions pour risques et charges": { + "Provisions pour amendes et p\u00e9nalit\u00e9s": { + "account_number": "1981" + }, + "Provisions pour propre assureur": { + "account_number": "1983" + }, + "Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "1984" + }, + "Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": { + "account_number": "1985" + }, + "Provisions pour divers risques et charges": { + "account_number": "1988" + }, + "account_number": "198" + }, + "account_number": "19" + }, + "root_type": "Equity", + "account_number": "1" + }, + "Comptes d\u2019actif immobilis\u00e9": { + "Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "211" + }, + "Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "Brevets": { + "account_type": "Fixed Asset", + "account_number": "2121" + }, + "Licences": { + "account_type": "Fixed Asset", + "account_number": "2122" + }, + "Concessions de service public": { + "account_type": "Fixed Asset", + "account_number": "2123" + }, + "Autres concessions et droits similaires": { + "account_type": "Fixed Asset", + "account_number": "2128" + }, + "account_number": "212" + }, + "Logiciels et sites internet": { + "account_type": "Fixed Asset", + "Logiciels": { + "account_type": "Fixed Asset", + "account_number": "2131" + }, + "Sites internet": { + "account_type": "Fixed Asset", + "account_number": "2132" + }, + "account_number": "213" + }, + "Marques": { + "account_type": "Fixed Asset", + "account_number": "214" + }, + "Fonds commercial": { + "account_type": "Fixed Asset", + "account_number": "215" + }, + "Droit au bail": { + "account_type": "Fixed Asset", + "account_number": "216" + }, + "Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset", + "account_number": "217" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset", + "account_number": "2181" + }, + "Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset", + "account_number": "2182" + }, + "Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset", + "account_number": "2183" + }, + "Co\u00fbts des franchises": { + "account_type": "Fixed Asset", + "account_number": "2184" + }, + "Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset", + "account_number": "2188" + }, + "account_number": "218" + }, + "Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "2191" + }, + "Logiciels et internet": { + "account_type": "Fixed Asset", + "account_number": "2193" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "account_number": "2198" + }, + "account_number": "219" + }, + "account_number": "21" + }, + "Terrains": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset", + "account_number": "2211" + }, + "Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset", + "account_number": "2212" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2218" + }, + "account_number": "221" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset", + "account_number": "2221" + }, + "Autres terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2228" + }, + "account_number": "222" + }, + "Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset", + "account_number": "2231" + }, + "Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset", + "account_number": "2232" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2234" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2235" + }, + "Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "account_number": "2238" + }, + "account_number": "223" + }, + "Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset", + "account_number": "2241" + }, + "Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset", + "account_number": "2245" + }, + "Autres travaux": { + "account_type": "Fixed Asset", + "account_number": "2248" + }, + "account_number": "224" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "Carri\u00e8res": { + "account_type": "Fixed Asset", + "account_number": "2251" + }, + "account_number": "225" + }, + "Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "Parkings": { + "account_type": "Fixed Asset", + "account_number": "2261" + }, + "account_number": "226" + }, + "Terrains mis en concession": { + "account_type": "Fixed Asset", + "account_number": "227" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "Terrains immeubles de placement": { + "account_type": "Fixed Asset", + "account_number": "2281" + }, + "Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset", + "account_number": "2285" + }, + "Terrains de location acquisition": { + "account_type": "Fixed Asset", + "account_number": "2286" + }, + "Divers terrains": { + "account_type": "Fixed Asset", + "account_number": "2288" + }, + "account_number": "228" + }, + "Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "account_number": "2291" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2292" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "account_number": "2295" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2298" + }, + "account_number": "229" + }, + "account_number": "22" + }, + "B\u00e2timents, installations techniques et agencements": { + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "B\u00e2timents industriels": { + "account_number": "2311" + }, + "B\u00e2timents agricoles": { + "account_number": "2312" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2313" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2314" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2315" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2316" + }, + "account_number": "231" + }, + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "B\u00e2timents industriels": { + "account_number": "2321" + }, + "B\u00e2timents agricoles": { + "account_number": "2322" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2323" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2324" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2325" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2326" + }, + "account_number": "232" + }, + "Ouvrages d\u2019infrastructure": { + "Voies de terre": { + "account_number": "2331" + }, + "Voies de fer": { + "account_number": "2332" + }, + "Voies d\u2019eau": { + "account_number": "2333" + }, + "Barrages, Digues": { + "account_number": "2334" + }, + "Pistes d\u2019a\u00e9rodrome": { + "account_number": "2335" + }, + "Autres ouvrages d\u2019infrastructures": { + "account_number": "2338" + }, + "account_number": "233" + }, + "Am\u00e9nagements, agencements et installations techniques": { + "Installations complexes sp\u00e9cialis\u00e9es sur sol propre": { + "account_number": "2341" + }, + "Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": { + "account_number": "2342" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": { + "account_number": "2343" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": { + "account_number": "2344" + }, + "Am\u00e9nagements et agencements des b\u00e2timents": { + "account_number": "2345" + }, + "account_number": "234" + }, + "Am\u00e9nagements de bureaux": { + "Installations g\u00e9n\u00e9rales": { + "account_number": "2351" + }, + "Autres am\u00e9nagements de bureaux": { + "account_number": "2358" + }, + "account_number": "235" + }, + "B\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "237" + }, + "Autres installations et agencements": { + "account_number": "238" + }, + "B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "B\u00e2timents en cours": { + "account_number": "2391" + }, + "Installations en cours": { + "account_number": "2392" + }, + "Ouvrages d\u2019infrastructure en cours": { + "account_number": "2393" + }, + "Am\u00e9nagements et agencements et installations techniques en cours": { + "account_number": "2394" + }, + "Am\u00e9nagements de bureaux en cours": { + "account_number": "2395" + }, + "Autres installations et agencements en cours": { + "account_number": "2398" + }, + "account_number": "239" + }, + "account_number": "23" + }, + "Mat\u00e9riel, mobilier et actifs biologiques": { + "Mat\u00e9riel et outillage industriel et commercial": { + "Mat\u00e9riel industriel": { + "account_number": "2411" + }, + "Outillage industriel": { + "account_number": "2412" + }, + "Mat\u00e9riel commercial": { + "account_number": "2413" + }, + "Outillage commercial": { + "account_number": "2414" + }, + "Mat\u00e9riel & outillage industriel et commercial de location-acquisition": { + "account_number": "2416" + }, + "account_number": "241" + }, + "Mat\u00e9riel et outillage agricole": { + "Mat\u00e9riel agricole": { + "account_number": "2421" + }, + "Outillage agricole": { + "account_number": "2422" + }, + "Mat\u00e9riel & outillage agricole de location-acquisition": { + "account_number": "2426" + }, + "account_number": "242" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "243" + }, + "Mat\u00e9riel et mobilier": { + "Mat\u00e9riel de bureau": { + "account_number": "2441" + }, + "Mat\u00e9riel informatique": { + "account_number": "2442" + }, + "Mat\u00e9riel bureautique": { + "account_number": "2443" + }, + "Mobilier de bureau": { + "account_number": "2444" + }, + "Mat\u00e9riel et mobilier immeubles de placement": { + "account_number": "2445" + }, + "Mat\u00e9riel et mobilier de location acquisition": { + "account_number": "2446" + }, + "Mat\u00e9riel et mobilier des logements du personnel": { + "account_number": "2447" + }, + "account_number": "244" + }, + "Mat\u00e9riel de transport": { + "Mat\u00e9riel automobile": { + "account_number": "2451" + }, + "Mat\u00e9riel ferroviaire": { + "account_number": "2452" + }, + "Mat\u00e9riel fluvial, lagunaire": { + "account_number": "2453" + }, + "Mat\u00e9riel naval": { + "account_number": "2454" + }, + "Mat\u00e9riel a\u00e9rien": { + "account_number": "2455" + }, + "Mat\u00e9riel de transport de location-acquisition": { + "account_number": "2456" + }, + "Mat\u00e9riel hippomobile": { + "account_number": "2457" + }, + "Autres mat\u00e9riels de transport": { + "account_number": "2458" + }, + "account_number": "245" + }, + "Actifs biologiques": { + "Cheptel, animaux de trait": { + "account_number": "2461" + }, + "Cheptel, animaux reproducteurs": { + "account_number": "2462" + }, + "Animaux de garde": { + "account_number": "2463" + }, + "Plantations agricoles": { + "account_number": "2465" + }, + "Autres actifs biologiques": { + "account_number": "2468" + }, + "account_number": "246" + }, + "Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "Agencements et am\u00e9nagements du mat\u00e9riel": { + "account_number": "2471" + }, + "Agencements et am\u00e9nagements des actifs biologiques": { + "account_number": "2472" + }, + "Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2478" + }, + "account_number": "247" + }, + "Autres mat\u00e9riels et mobiliers": { + "Collections et \u0153uvres d\u2019art": { + "account_number": "2481" + }, + "Divers mat\u00e9riels mobiliers": { + "account_number": "2488" + }, + "account_number": "248" + }, + "Mat\u00e9riels et actifs biologiques en cours": { + "Mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2491" + }, + "Mat\u00e9riel et outillage agricole": { + "account_number": "2492" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2493" + }, + "Mat\u00e9riel et mobilier de bureau": { + "account_number": "2494" + }, + "Mat\u00e9riel de transport": { + "account_number": "2495" + }, + "Actifs biologiques": { + "account_number": "2496" + }, + "Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2497" + }, + "Autres mat\u00e9riels et actifs biologiques en cours": { + "account_number": "2498" + }, + "account_number": "249" + }, + "account_number": "24" + }, + "Avances et acomptes vers\u00e9s sur immobilisations": { + "Avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "251" + }, + "Avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "252" + }, + "account_number": "25" + }, + "Titres de participation": { + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "261" + }, + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "262" + }, + "Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "263" + }, + "Participations dans des organismes professionnels": { + "account_number": "265" + }, + "Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "266" + }, + "Autres titres de participation": { + "account_number": "268" + }, + "account_number": "26" + }, + "Autres immobilisations financi\u00e8res": { + "Pr\u00eats et cr\u00e9ances": { + "Pr\u00eats participatifs": { + "account_number": "2711" + }, + "Pr\u00eats aux associ\u00e9s": { + "account_number": "2712" + }, + "Billets de fonds": { + "account_number": "2713" + }, + "Titres pr\u00eat\u00e9s": { + "account_number": "2714" + }, + "Autres pr\u00eats et cr\u00e9ances": { + "account_number": "2718" + }, + "account_number": "271" + }, + "Pr\u00eats au personnel": { + "Pr\u00eats immobiliers": { + "account_number": "2721" + }, + "Pr\u00eats mobiliers et d\u2019installation": { + "account_number": "2722" + }, + "Autres pr\u00eats au personnel": { + "account_number": "2728" + }, + "account_number": "272" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "Retenues de garantie": { + "account_number": "2731" + }, + "Fonds r\u00e9glement\u00e9": { + "account_number": "2733" + }, + "Cr\u00e9ances sur le conc\u00e9dant": { + "account_number": "2734" + }, + "Autres cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2738" + }, + "account_number": "273" + }, + "Titres immobilis\u00e9s": { + "Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": { + "account_number": "2741" + }, + "Titres participatifs": { + "account_number": "2742" + }, + "Certificats d\u2019investissement": { + "account_number": "2743" + }, + "Parts de fonds commun de placement (FCP)": { + "account_number": "2744" + }, + "Obligations": { + "account_number": "2745" + }, + "Actions ou parts propres": { + "account_number": "2746" + }, + "Autres titres immobilis\u00e9s": { + "account_number": "2748" + }, + "account_number": "274" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "D\u00e9p\u00f4ts pour loyers d\u2019avance": { + "account_number": "2751" + }, + "D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": { + "account_number": "2752" + }, + "D\u00e9p\u00f4ts pour l\u2019eau": { + "account_number": "2753" + }, + "D\u00e9p\u00f4ts pour le gaz": { + "account_number": "2754" + }, + "D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": { + "account_number": "2755" + }, + "Cautionnements sur march\u00e9s publics": { + "account_number": "2756" + }, + "Cautionnements sur autres op\u00e9rations": { + "account_number": "2757" + }, + "Autres d\u00e9p\u00f4ts et cautionnements": { + "account_number": "2758" + }, + "account_number": "275" + }, + "Int\u00e9r\u00eats courus": { + "Pr\u00eats et cr\u00e9ances non commerciales": { + "account_number": "2761" + }, + "Pr\u00eats au personnel": { + "account_number": "2762" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2763" + }, + "Titres immobilis\u00e9s": { + "account_number": "2764" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2765" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "account_number": "2767" + }, + "Immobilisations financi\u00e8res diverses": { + "account_number": "2768" + }, + "account_number": "276" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": { + "account_number": "2771" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "2772" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "2773" + }, + "Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "2774" + }, + "account_number": "277" + }, + "Immobilisations financi\u00e8res diverses": { + "Cr\u00e9ances diverses groupe": { + "account_number": "2781" + }, + "Cr\u00e9ances diverses hors groupe": { + "account_number": "2782" + }, + "Banques d\u00e9p\u00f4ts \u00e0 terme": { + "account_number": "2784" + }, + "Or et m\u00e9taux pr\u00e9cieux": { + "account_number": "2785" + }, + "Autres immobilisations financi\u00e8res": { + "account_number": "2788" + }, + "account_number": "278" + }, + "account_number": "27" + }, + "Amortissements": { + "account_type": "Accumulated Depreciation", + "Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation", + "account_number": "2811" + }, + "Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation", + "account_number": "2812" + }, + "Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation", + "account_number": "2813" + }, + "Amortissements des marques": { + "account_type": "Accumulated Depreciation", + "account_number": "2814" + }, + "Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation", + "account_number": "2815" + }, + "Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation", + "account_number": "2816" + }, + "Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation", + "account_number": "2817" + }, + "Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation", + "account_number": "2818" + }, + "account_number": "281" + }, + "Amortissements des terrains": { + "Amortissements des travaux de mise en valeur des terrains": { + "account_number": "2824" + }, + "account_number": "282" + }, + "Amortissements des b\u00e2timents, installations techniques et agencements": { + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2831" + }, + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2832" + }, + "Amortissements des ouvrages d\u2019infrastructure": { + "account_number": "2833" + }, + "Amortissements des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2834" + }, + "Amortissements des am\u00e9nagements de bureaux": { + "account_number": "2835" + }, + "Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2837" + }, + "Amortissements des autres installations et agencements": { + "account_number": "2838" + }, + "account_number": "283" + }, + "Amortissements du mat\u00e9riel": { + "Amortissements du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2841" + }, + "Amortissements du mat\u00e9riel et outillage agricole": { + "account_number": "2842" + }, + "Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2843" + }, + "Amortissements du mat\u00e9riel et mobilier": { + "account_number": "2844" + }, + "Amortissements du mat\u00e9riel de transport": { + "account_number": "2845" + }, + "Amortissements des actifs biologiques": { + "account_number": "2846" + }, + "Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2847" + }, + "Amortissements des autres mat\u00e9riels": { + "account_number": "2848" + }, + "account_number": "284" + }, + "account_number": "28" + }, + "D\u00e9pr\u00e9ciations des immobilisations": { + "D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": { + "account_number": "2911" + }, + "D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": { + "account_number": "2912" + }, + "D\u00e9pr\u00e9ciations des logiciels et sites internet": { + "account_number": "2913" + }, + "D\u00e9pr\u00e9ciations des marques": { + "account_number": "2914" + }, + "D\u00e9pr\u00e9ciations du fonds commercial": { + "account_number": "2915" + }, + "D\u00e9pr\u00e9ciations du droit au bail": { + "account_number": "2916" + }, + "D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": { + "account_number": "2917" + }, + "D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": { + "account_number": "2918" + }, + "D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": { + "account_number": "2919" + }, + "account_number": "291" + }, + "D\u00e9pr\u00e9ciations des terrains": { + "D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": { + "account_number": "2921" + }, + "D\u00e9pr\u00e9ciations des terrains nus": { + "account_number": "2922" + }, + "D\u00e9pr\u00e9ciations des terrains b\u00e2tis": { + "account_number": "2923" + }, + "D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": { + "account_number": "2924" + }, + "D\u00e9pr\u00e9ciations des terrains de gisement": { + "account_number": "2925" + }, + "D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": { + "account_number": "2926" + }, + "D\u00e9pr\u00e9ciations des terrains mis en concession": { + "account_number": "2927" + }, + "D\u00e9pr\u00e9ciations des autres terrains": { + "account_number": "2928" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": { + "account_number": "2929" + }, + "account_number": "292" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2931" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2932" + }, + "D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": { + "account_number": "2933" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2934" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": { + "account_number": "2935" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2937" + }, + "D\u00e9pr\u00e9ciations des autres installations et agencements": { + "account_number": "2938" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": { + "account_number": "2939" + }, + "account_number": "293" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2941" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": { + "account_number": "2942" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2943" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": { + "account_number": "2944" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": { + "account_number": "2945" + }, + "D\u00e9pr\u00e9ciations des actifs biologiques": { + "account_number": "2946" + }, + "D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2947" + }, + "D\u00e9pr\u00e9ciations des autres mat\u00e9riels": { + "account_number": "2948" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": { + "account_number": "2949" + }, + "account_number": "294" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "2951" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "2952" + }, + "account_number": "295" + }, + "D\u00e9pr\u00e9ciations des titres de participation": { + "D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "2961" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "2962" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "2963" + }, + "D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": { + "account_number": "2965" + }, + "D\u00e9pr\u00e9ciations des parts dans des GIE": { + "account_number": "2966" + }, + "D\u00e9pr\u00e9ciations des autres titres de participation": { + "account_number": "2968" + }, + "account_number": "296" + }, + "D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": { + "account_number": "2971" + }, + "D\u00e9pr\u00e9ciations des pr\u00eats au personnel": { + "account_number": "2972" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2973" + }, + "D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": { + "account_number": "2974" + }, + "D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2975" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "account_number": "2977" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": { + "account_number": "2978" + }, + "account_number": "297" + }, + "account_number": "29" + }, + "root_type": "Asset", + "account_number": "2" + }, + "Comptes de Stocks": { + "Marchandises": { + "Marchandises A": { + "Marchandises A1": { + "account_number": "3111" + }, + "Marchandises A2": { + "account_number": "3112" + }, + "account_number": "311" + }, + "Marchandises B": { + "Marchandises B1": { + "account_number": "3121" + }, + "Marchandises B2": { + "account_number": "3122" + }, + "account_number": "312" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3131" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3132" + }, + "account_number": "313" + }, + "Marchandises hors activit\u00e9s ordinaires (HAO)": { + "account_number": "318" + }, + "account_number": "31" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Mati\u00e8res A": { + "account_number": "321" + }, + "Mati\u00e8res B": { + "account_number": "322" + }, + "Fournitures (A, B)": { + "account_number": "323" + }, + "account_number": "32" + }, + "Autres approvisionnements": { + "Mati\u00e8res consommables": { + "account_number": "331" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "332" + }, + "Fournitures de magasin": { + "account_number": "333" + }, + "Fournitures de bureau": { + "account_number": "334" + }, + "Emballages": { + "Emballages perdus": { + "account_number": "3351" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "3352" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "3353" + }, + "Autres emballages": { + "account_number": "3358" + }, + "account_number": "335" + }, + "Autres mati\u00e8res": { + "account_number": "338" + }, + "account_number": "33" + }, + "Produits en cours": { + "Produits en cours": { + "Produits en cours P1": { + "account_number": "3411" + }, + "Produits en cours P2": { + "account_number": "3412" + }, + "account_number": "341" + }, + "Travaux en cours": { + "Travaux en cours T1": { + "account_number": "3421" + }, + "Travaux en cours T2": { + "account_number": "3422" + }, + "account_number": "342" + }, + "Produits interm\u00e9diaires en cours": { + "Produits interm\u00e9diaires A": { + "account_number": "3431" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3432" + }, + "account_number": "343" + }, + "Produits r\u00e9siduels en cours": { + "Produits r\u00e9siduels A": { + "account_number": "3441" + }, + "Produits r\u00e9siduels B": { + "account_number": "3442" + }, + "account_number": "344" + }, + "Actifs biologiques en cours": { + "Animaux": { + "account_number": "3451" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3452" + }, + "account_number": "345" + }, + "account_number": "34" + }, + "Services en cours": { + "\u00c9tudes en cours": { + "\u00c9tudes en cours E1": { + "account_number": "3511" + }, + "\u00c9tudes en cours E2": { + "account_number": "3512" + }, + "account_number": "351" + }, + "Prestations de services en cours": { + "Prestations de services S1": { + "account_number": "3521" + }, + "Prestations de services S2": { + "account_number": "3522" + } + }, + "account_number": "35" + }, + "Produits finis": { + "Produits finis A": { + "account_number": "361" + }, + "Produits finis B": { + "account_number": "362" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3631" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3632" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3638" + }, + "account_number": "363" + }, + "account_number": "36" + }, + "Produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "Produits interm\u00e9diaires A": { + "account_number": "3711" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3712" + }, + "account_number": "371" + }, + "Produits r\u00e9siduels": { + "D\u00e9chets": { + "account_number": "3721" + }, + "Rebuts": { + "account_number": "3722" + }, + "Mati\u00e8res de R\u00e9cup\u00e9ration": { + "account_number": "3723" + }, + "account_number": "372" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3731" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3732" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3738" + }, + "account_number": "373" + }, + "account_number": "37" + }, + "Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "Marchandises en cours de route": { + "account_number": "381" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": { + "account_number": "382" + }, + "Autres approvisionnements en cours de route": { + "account_number": "383" + }, + "Produits finis en cours de route": { + "account_number": "386" + }, + "Stock en consignation ou en d\u00e9p\u00f4t": { + "Stock en consignation": { + "account_number": "3871" + }, + "Stock en d\u00e9p\u00f4t": { + "account_number": "3872" + }, + "account_number": "387" + }, + "Stock provenant d\u2019immobilisations mises hors service ou au rebut": { + "account_number": "388" + }, + "account_number": "38" + }, + "D\u00e9pr\u00e9ciations des stocks et encours de production": { + "D\u00e9pr\u00e9ciations des stocks de marchandises": { + "account_number": "391" + }, + "D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "392" + }, + "D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": { + "account_number": "393" + }, + "D\u00e9pr\u00e9ciations des productions en cours": { + "account_number": "394" + }, + "D\u00e9pr\u00e9ciations des services en cours": { + "account_number": "395" + }, + "D\u00e9pr\u00e9ciations des stocks de produits finis": { + "account_number": "396" + }, + "D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "account_number": "397" + }, + "D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_number": "398" + }, + "account_number": "39" + }, + "root_type": "Asset", + "account_number": "3" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "Fournisseurs d\u00e9biteurs": { + "Fournisseurs Avances et acomptes vers\u00e9s": { + "account_number": "4091" + }, + "Fournisseurs Groupe avances et acomptes vers\u00e9s": { + "account_number": "4092" + }, + "Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": { + "account_number": "4093" + }, + "Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": { + "account_number": "4094" + }, + "Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": { + "account_number": "4098" + }, + "account_number": "409" + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "Clients": { + "Clients": { + "account_type": "Receivable", + "account_number": "4111" + }, + "Clients groupe": { + "account_type": "Receivable", + "account_number": "4112" + }, + "Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable", + "account_number": "4114" + }, + "Clients, organismes internationaux": { + "account_type": "Receivable", + "account_number": "4115" + }, + "Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable", + "account_number": "4116" + }, + "Client, retenues de garantie": { + "account_type": "Receivable", + "account_number": "4117" + }, + "Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable", + "account_number": "4118" + }, + "account_type": "Receivable", + "account_number": "411" + }, + "Clients, effets \u00e0 recevoir en portefeuille": { + "Clients, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4121" + }, + "Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4122" + }, + "\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4124" + }, + "Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4125" + }, + "account_type": "Receivable", + "account_number": "412" + }, + "Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4131" + }, + "Clients, effets impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4132" + }, + "Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4133" + }, + "Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4138" + }, + "account_type": "Receivable", + "account_number": "413" + }, + "Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4141" + }, + "Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4142" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4146" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4147" + }, + "account_type": "Receivable", + "account_number": "414" + }, + "Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable", + "account_number": "415" + }, + "Cr\u00e9ances clients litigieuses ou douteuses": { + "Cr\u00e9ances litigieuses": { + "account_type": "Receivable", + "account_number": "4161" + }, + "Cr\u00e9ances douteuses": { + "account_type": "Receivable", + "account_number": "4162" + }, + "account_type": "Receivable", + "account_number": "416" + }, + "Clients, produits \u00e0 recevoir": { + "Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable", + "account_number": "4181" + }, + "Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable", + "account_number": "4186" + }, + "account_type": "Receivable", + "account_number": "418" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "Personnel, avances et acomptes": { + "Personnel, avances": { + "account_number": "4211" + }, + "Personnel, acomptes": { + "account_number": "4212" + }, + "Frais avanc\u00e9s et fournitures au personnel": { + "account_number": "4213" + }, + "account_number": "421" + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "Prestations familiales": { + "account_number": "4311" + }, + "Accidents de travail": { + "account_number": "4312" + }, + "Caisse de retraite obligatoire": { + "account_number": "4313" + }, + "Caisse de retraite facultative": { + "account_number": "4314" + }, + "Autres cotisations sociales": { + "account_number": "4318" + } + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "Mutuelle": { + "account_number": "4331" + }, + "Assurances retraite": { + "account_number": "4332" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "4333" + } + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Produits \u00e0 recevoir": { + "account_number": "4387" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "\u00c9tat, TVA factur\u00e9e": { + "TVA factur\u00e9e sur ventes": { + "account_number": "4431" + }, + "TVA factur\u00e9e sur prestations de services": { + "account_number": "4432" + }, + "TVA factur\u00e9e sur travaux": { + "account_number": "4433" + }, + "TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": { + "account_number": "4434" + }, + "TVA sur factures \u00e0 \u00e9tablir": { + "account_number": "4435" + }, + "account_number": "443" + }, + "\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "TVA r\u00e9cup\u00e9rable sur immobilisations": { + "account_number": "4451" + }, + "TVA r\u00e9cup\u00e9rable sur achats": { + "account_number": "4452" + }, + "TVA r\u00e9cup\u00e9rable sur transport": { + "account_number": "4453" + }, + "TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": { + "account_number": "4454" + }, + "TVA r\u00e9cup\u00e9rable sur factures non parvenues": { + "account_number": "4455" + }, + "TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": { + "account_number": "4456" + }, + "account_number": "445" + }, + "\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges \u00e0 payer": { + "account_number": "4486" + }, + "Produits \u00e0 recevoir": { + "account_number": "4487" + }, + "account_number": "448" + }, + "\u00c9tat, cr\u00e9ances et dettes diverses": { + "\u00c9tat, obligations cautionn\u00e9es": { + "account_number": "4491" + }, + "\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": { + "account_number": "4492" + }, + "\u00c9tat, fonds de dotation \u00e0 recevoir": { + "account_number": "4493" + }, + "\u00c9tat, subventions investissement \u00e0 recevoir": { + "account_number": "4494" + }, + "\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": { + "account_number": "4495" + }, + "\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": { + "account_number": "4496" + }, + "\u00c9tat, avances sur subventions": { + "account_number": "4497" + }, + "\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": { + "account_number": "4499" + }, + "account_number": "449" + } + }, + "45-Organismes internationaux (ACTIF)": { + "Op\u00e9rations avec les organismes africains": { + "account_number": "451" + }, + "Op\u00e9rations avec les autres organismes internationaux": { + "account_number": "452" + }, + "Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "Organismes internationaux, fonds de dotation \u00e0 recevoir": { + "account_number": "4581" + }, + "Organismes internationaux, subventions \u00e0 recevoir": { + "account_number": "4582" + }, + "account_number": "458" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "Apporteurs, capital appel\u00e9, non vers\u00e9": { + "account_number": "4613" + }, + "Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": { + "account_number": "4614" + }, + "Apporteurs, titres \u00e0 \u00e9changer": { + "account_number": "4618" + } + }, + "Apporteurs, restant d\u00fb sur capital appel\u00e9": { + "account_number": "467" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4721" + }, + "Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": { + "account_number": "4726" + } + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "Mandants": { + "account_number": "4731" + }, + "Mandataires": { + "account_number": "4732" + }, + "Commettants": { + "account_number": "4733" + }, + "Commissionnaires": { + "account_number": "4734" + }, + "\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": { + "account_number": "4739" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "Compte de r\u00e9partition p\u00e9riodique des produits": { + "account_number": "4747" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "Compte actif": { + "account_type": "Temporary", + "account_number": "4751" + } + }, + "Charges constat\u00e9es d\u2019avance": { + "account_number": "476" + }, + "478-\u00c9carts de conversion actif": { + "Diminution des cr\u00e9ances d\u2019exploitation": { + "account_number": "4781" + }, + "Diminution des cr\u00e9ances financi\u00e8res": { + "account_number": "4782" + }, + "Augmentation des dettes d\u2019exploitation": { + "account_number": "4783" + }, + "Augmentation des dettes financi\u00e8res": { + "account_number": "4784" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4786" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4788" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "En compte, immobilisations incorporelles": { + "account_number": "4851" + }, + "En compte, immobilisations corporelles": { + "account_number": "4852" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_number": "4853" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_number": "4854" + }, + "Effets escompt\u00e9s non \u00e9chus": { + "account_number": "4855" + }, + "Retenues de garantie": { + "account_number": "4857" + }, + "Factures \u00e0 \u00e9tablir": { + "account_number": "4858" + }, + "account_number": "485" + }, + "Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": { + "account_number": "488" + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "D\u00e9pr\u00e9ciations des comptes clients": { + "Cr\u00e9ances litigieuses": { + "account_number": "4911" + }, + "Cr\u00e9ances douteuses": { + "account_number": "4912" + }, + "account_number": "491" + }, + "D\u00e9pr\u00e9ciations des comptes organismes internationaux": { + "account_number": "495" + }, + "D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "Associ\u00e9s, comptes courants": { + "account_number": "4962" + }, + "Associ\u00e9s, op\u00e9rations faites en commun": { + "account_number": "4963" + }, + "Groupe, comptes courants": { + "account_number": "4966" + }, + "account_number": "496" + }, + "D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": { + "account_number": "497" + }, + "D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "account_number": "4985" + }, + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4986" + }, + "Autres cr\u00e9ances HAO": { + "account_number": "4988" + }, + "account_number": "498" + }, + "Provisions pour risques \u00e0 court terme": { + "Sur op\u00e9rations d\u2019exploitation": { + "account_number": "4991" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "4997" + }, + "Sur op\u00e9rations HAO": { + "account_number": "4998" + }, + "account_number": "499" + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "Fournisseurs, dettes en compte": { + "Fournisseurs": { + "account_type": "Payable", + "account_number": "4011" + }, + "Fournisseurs groupe": { + "account_type": "Payable", + "account_number": "4012" + }, + "Fournisseurs sous-traitants": { + "account_type": "Payable", + "account_number": "4013" + }, + "Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable", + "account_number": "4016" + }, + "Fournisseur, retenues de garantie": { + "account_type": "Payable", + "account_number": "4017" + }, + "account_type": "Payable", + "account_number": "401" + }, + "Fournisseurs, effets \u00e0 payer": { + "Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4021" + }, + "Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4022" + }, + "Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4023" + }, + "account_type": "Payable", + "account_number": "402" + }, + "Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4041" + }, + "Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4042" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4046" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4047" + }, + "account_type": "Payable", + "account_number": "404" + }, + "Fournisseurs, factures non parvenues": { + "Fournisseurs": { + "account_type": "Stock Received But Not Billed", + "account_number": "4081" + }, + "Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed", + "account_number": "4082" + }, + "Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed", + "account_number": "4083" + }, + "Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed", + "account_number": "4086" + }, + "account_type": "Stock Received But Not Billed", + "account_number": "408" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "Clients cr\u00e9diteurs": { + "Clients, avances et acomptes re\u00e7us": { + "account_number": "4191" + }, + "Clients groupe, avances et acomptes re\u00e7us": { + "account_number": "4192" + }, + "Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": { + "account_number": "4194" + }, + "Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": { + "account_number": "4198" + }, + "account_number": "419" + } + }, + "42-Personnel (PASSIF)": { + "Personnel, r\u00e9mun\u00e9rations dues": { + "account_number": "422" + }, + "Personnel, oppositions, saisies-arr\u00eats": { + "Personnel, oppositions": { + "account_number": "4231" + }, + "Personnel, saisies-arr\u00eats": { + "account_number": "4232" + }, + "Personnel, avis \u00e0 tiers d\u00e9tenteur": { + "account_number": "4233" + }, + "account_number": "423" + }, + "Personnel, \u0153uvres sociales internes": { + "Assistance m\u00e9dicale": { + "account_number": "4241" + }, + "Allocations familiales": { + "account_number": "4242" + }, + "Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": { + "account_number": "4245" + }, + "Autres \u0153uvres sociales internes": { + "account_number": "4248" + }, + "account_number": "424" + }, + "Repr\u00e9sentants du personnel": { + "D\u00e9l\u00e9gu\u00e9s du personnel": { + "account_number": "4251" + }, + "Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": { + "account_number": "4252" + }, + "Autres repr\u00e9sentants du personnel": { + "account_number": "4258" + }, + "account_number": "425" + }, + "Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "Participation aux b\u00e9n\u00e9fices": { + "account_number": "4261" + }, + "Participation au capital": { + "account_number": "4264" + }, + "account_number": "426" + }, + "Personnel d\u00e9p\u00f4ts": { + "account_number": "427" + }, + "Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": { + "account_number": "4281" + }, + "Autres charges \u00e0 payer": { + "account_number": "4286" + }, + "Produits \u00e0 recevoir": { + "account_number": "4287" + }, + "account_number": "428" + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges sociales sur gratifications \u00e0 payer": { + "account_number": "4381" + }, + "Charges sociales sur cong\u00e9s \u00e0 payer": { + "account_number": "4382" + }, + "Autres charges \u00e0 payer": { + "account_number": "4386" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": { + "account_number": "441" + }, + "\u00c9tat, autres imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes d\u2019\u00c9tat": { + "account_number": "4421" + }, + "Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": { + "account_number": "4422" + }, + "Imp\u00f4ts et taxes recouvrables sur des obligataires": { + "account_number": "4423" + }, + "Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": { + "account_number": "4424" + }, + "Droits de douane": { + "account_number": "4426" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "4428" + }, + "account_number": "442" + }, + "\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "\u00c9tat, TVA due": { + "account_number": "4441" + }, + "\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": { + "account_number": "4449" + }, + "account_number": "444" + }, + "\u00c9tat, autres taxes sur le chiffre d\u2019affaires": { + "account_number": "446" + }, + "\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": { + "account_number": "4471" + }, + "Imp\u00f4ts sur salaires": { + "account_number": "4472" + }, + "Contribution nationale": { + "account_number": "4473" + }, + "Contribution nationale de solidarit\u00e9": { + "account_number": "4474" + }, + "Autres imp\u00f4ts et contributions": { + "account_number": "4478" + }, + "account_number": "447" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "Apporteurs, apports en nature": { + "account_number": "4611" + }, + "Apporteurs, apports en num\u00e9raire": { + "account_number": "4612" + }, + "Apporteurs, versements re\u00e7us sur augmentation de capital": { + "account_number": "4615" + }, + "Apporteurs, versements anticip\u00e9s": { + "account_number": "4616" + }, + "Apporteurs d\u00e9faillants": { + "account_number": "4617" + }, + "Apporteurs, capital \u00e0 rembourser": { + "account_number": "4619" + } + }, + "462-Associ\u00e9s, comptes courants": { + "Principal": { + "account_number": "4621" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4626" + } + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "Op\u00e9rations courantes": { + "account_number": "4631" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4636" + } + }, + "Associ\u00e9s, dividendes \u00e0 payer": { + "account_number": "465" + }, + "Groupe, comptes courants": { + "account_number": "466" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "D\u00e9biteurs divers": { + "account_number": "4711" + }, + "Cr\u00e9diteurs divers": { + "account_number": "4712" + }, + "Obligataires": { + "account_number": "4713" + }, + "R\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "4715" + }, + "Compte d\u2019affacturage": { + "account_number": "4716" + }, + "D\u00e9biteurs divers retenues de garantie": { + "account_number": "4717" + }, + "Apport, compte de fusion et op\u00e9rations assimil\u00e9es": { + "account_number": "4718" + }, + "Bons de souscription d\u2019actions et d\u2019obligations": { + "account_number": "4719" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "Compte de r\u00e9partition p\u00e9riodique des charges": { + "account_number": "4746" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "Compte passif": { + "account_number": "4752" + } + }, + "Produits constat\u00e9s d\u2019avance": { + "account_number": "477" + }, + "479-\u00c9carts de conversion passif": { + "Augmentation des cr\u00e9ances d\u2019exploitation": { + "account_number": "4791" + }, + "Augmentation des cr\u00e9ances financi\u00e8res": { + "account_number": "4792" + }, + "Diminution des dettes d\u2019exploitation": { + "account_number": "4793" + }, + "Diminution des dettes financi\u00e8res": { + "account_number": "4794" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4797" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4798" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "Fournisseurs d\u2019investissements": { + "Immobilisations incorporelles": { + "account_number": "4811" + }, + "Immobilisations corporelles": { + "account_number": "4812" + }, + "Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": { + "account_number": "4813" + }, + "R\u00e9serve de propri\u00e9t\u00e9": { + "account_number": "4816" + }, + "Retenues de garantie": { + "account_number": "4817" + }, + "Factures non parvenues": { + "account_number": "4818" + }, + "account_number": "481" + }, + "Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "Immobilisations incorporelles": { + "account_number": "4821" + }, + "Immobilisations corporelles": { + "account_number": "4822" + }, + "account_number": "482" + }, + "Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "Produits": { + "account_number": "4887" + }, + "account_number": "484" + } + }, + "root_type": "Liability" + }, + "Comptes de tr\u00e9sorerie": { + "Titres de placement": { + "Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "Titres du Tr\u00e9sor \u00e0 court terme": { + "account_number": "5011" + }, + "Titres d\u2019organismes financiers": { + "account_number": "5012" + }, + "Bons de caisse \u00e0 court terme": { + "account_number": "5013" + }, + "Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": { + "account_number": "5016" + }, + "account_number": "501" + }, + "Actions": { + "Actions ou parts propres": { + "account_number": "5021" + }, + "Actions cot\u00e9es": { + "account_number": "5022" + }, + "Actions non cot\u00e9es": { + "account_number": "5023" + }, + "Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": { + "account_number": "5024" + }, + "Autres actions": { + "account_number": "5025" + }, + "Frais d\u2019acquisition des actions": { + "account_number": "5026" + }, + "account_number": "502" + }, + "Obligations": { + "Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": { + "account_number": "5031" + }, + "Obligations cot\u00e9es": { + "account_number": "5032" + }, + "Obligations non cot\u00e9es": { + "account_number": "5033" + }, + "Autres obligations": { + "account_number": "5035" + }, + "Frais d\u2019acquisition des obligations": { + "account_number": "5036" + }, + "account_number": "503" + }, + "Bons de souscription": { + "Bons de souscription d\u2019actions": { + "account_number": "5042" + }, + "Bons de souscription d\u2019obligations": { + "account_number": "5043" + }, + "account_number": "504" + }, + "Titres n\u00e9gociables hors r\u00e9gion": { + "account_number": "505" + }, + "Int\u00e9r\u00eats courus": { + "Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": { + "account_number": "5061" + }, + "Actions": { + "account_number": "5062" + }, + "Obligations": { + "account_number": "5063" + }, + "account_number": "506" + }, + "Autres titres de placement et cr\u00e9ances assimil\u00e9es": { + "account_number": "508" + }, + "account_number": "50" + }, + "Valeurs \u00e0 encaisser": { + "Effets \u00e0 encaisser": { + "account_number": "511" + }, + "Effets \u00e0 l\u2019encaissement": { + "account_number": "512" + }, + "Ch\u00e8ques \u00e0 encaisser": { + "account_number": "513" + }, + "Ch\u00e8ques \u00e0 l\u2019encaissement": { + "account_number": "514" + }, + "Cartes de cr\u00e9dit \u00e0 encaisser": { + "account_number": "515" + }, + "Autres valeurs \u00e0 l\u2019encaissement": { + "Warrants": { + "account_number": "5181" + }, + "Billets de fonds": { + "account_number": "5182" + }, + "Ch\u00e8ques de voyage": { + "account_number": "5185" + }, + "Coupons \u00e9chus": { + "account_number": "5186" + }, + "Int\u00e9r\u00eats \u00e9chus des obligations": { + "account_number": "5187" + }, + "account_number": "518" + }, + "account_number": "51" + }, + "Banques": { + "Banques locales": { + "Banques en monnaie nationale": { + "account_type": "Bank", + "account_number": "5211" + }, + "Banques en devises": { + "account_type": "Bank", + "account_number": "5215" + }, + "account_type": "Bank", + "account_number": "521" + }, + "Banques autres \u00c9tats r\u00e9gion": { + "account_number": "522" + }, + "Banques autres \u00c9tats zone mon\u00e9taire": { + "account_number": "523" + }, + "Banques hors zone mon\u00e9taire": { + "account_number": "524" + }, + "Banques d\u00e9p\u00f4t \u00e0 terme": { + "account_number": "525" + }, + "Banques, int\u00e9r\u00eats courus": { + "Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": { + "account_number": "5261" + }, + "Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": { + "account_number": "5267" + }, + "account_number": "526" + }, + "account_number": "52" + }, + "\u00c9tablissements financiers et assimil\u00e9s": { + "Ch\u00e8ques postaux": { + "account_number": "531" + }, + "Tr\u00e9sor": { + "account_number": "532" + }, + "Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": { + "account_number": "533" + }, + "\u00c9tablissements financiers, int\u00e9r\u00eats courus": { + "account_number": "536" + }, + "Autres organismes financiers": { + "account_number": "538" + }, + "account_number": "53" + }, + "Instruments de tr\u00e9sorerie": { + "Options de taux d\u2019int\u00e9r\u00eat": { + "account_number": "541" + }, + "Options de taux de change": { + "account_number": "542" + }, + "Options de taux boursiers": { + "account_number": "543" + }, + "Instruments de march\u00e9s \u00e0 terme": { + "account_number": "544" + }, + "Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": { + "account_number": "545" + }, + "account_number": "54" + }, + "Instruments de monnaie \u00e9lectronique": { + "Monnaie \u00e9lectronique carte carburant": { + "account_number": "551" + }, + "Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": { + "account_number": "552" + }, + "Monnaie \u00e9lectronique carte p\u00e9age": { + "account_number": "553" + }, + "Porte-monnaie \u00e9lectronique": { + "account_number": "554" + }, + "Autres instruments de monnaies \u00e9lectroniques": { + "account_number": "558" + }, + "account_number": "55" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "Cr\u00e9dits de tr\u00e9sorerie": { + "account_number": "561" + }, + "Escompte de cr\u00e9dits de campagne": { + "account_number": "564" + }, + "Escompte de cr\u00e9dits ordinaires": { + "account_number": "565" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": { + "account_number": "566" + }, + "account_number": "56" + }, + "Caisse": { + "Caisse si\u00e8ge social": { + "Caisse en monnaie nationale": { + "account_number": "5711" + }, + "Caisse en devises": { + "account_number": "5712" + }, + "account_number": "571" + }, + "Caisse succursale A": { + "En monnaie nationale": { + "account_number": "5721" + }, + "En devises": { + "account_number": "5722" + }, + "account_number": "572" + }, + "Caisse succursale B": { + "En monnaie nationale": { + "account_number": "5731" + }, + "En devises": { + "account_number": "5732" + }, + "account_number": "573" + }, + "account_number": "57" + }, + "R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "R\u00e9gies d\u2019avance": { + "account_number": "581" + }, + "Accr\u00e9ditifs": { + "account_number": "582" + }, + "Virements de fonds": { + "account_number": "585" + }, + "Autres virements internes": { + "account_number": "588" + }, + "account_number": "58" + }, + "D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "D\u00e9pr\u00e9ciations des titres de placement": { + "account_number": "590" + }, + "D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": { + "account_number": "591" + }, + "D\u00e9pr\u00e9ciations des comptes banques": { + "account_number": "592" + }, + "D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": { + "account_number": "593" + }, + "D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": { + "account_number": "594" + }, + "Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": { + "account_number": "599" + }, + "account_number": "59" + }, + "root_type": "Asset", + "account_number": "5" + }, + "Comptes de charges des activit\u00e9s ordinaires": { + "Achats et variations de stocks": { + "Achats de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "6011" + }, + "Hors R\u00e9gion": { + "account_number": "6012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6014" + }, + "Frais sur achats": { + "account_number": "6015" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6019" + }, + "account_number": "601" + }, + "Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Dans la R\u00e9gion": { + "account_number": "6021" + }, + "Hors R\u00e9gion": { + "account_number": "6022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6024" + }, + "Frais sur achats": { + "account_number": "6025" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6029" + }, + "account_number": "602" + }, + "Variations des stocks de biens achet\u00e9s": { + "Variations des stocks de marchandises": { + "account_number": "6031" + }, + "Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "6032" + }, + "Variations des stocks d\u2019autres approvisionnements": { + "account_number": "6033" + }, + "account_number": "603" + }, + "Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "Mati\u00e8res consommables": { + "account_number": "6041" + }, + "Mati\u00e8res combustibles": { + "account_number": "6042" + }, + "Produits d\u2019entretien": { + "account_number": "6043" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "6044" + }, + "Frais sur achat": { + "account_number": "6045" + }, + "Fournitures de magasin": { + "account_number": "6046" + }, + "Fournitures de bureau": { + "account_number": "6047" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6049" + }, + "account_number": "604" + }, + "Autres achats": { + "Fournitures non stockables Eau": { + "account_number": "6051" + }, + "Fournitures non stockables \u00c9lectricit\u00e9": { + "account_number": "6052" + }, + "Fournitures non stockables Autres \u00e9nergies": { + "account_number": "6053" + }, + "Fournitures d\u2019entretien non stockables": { + "account_number": "6054" + }, + "Fournitures de bureau non stockables": { + "account_number": "6055" + }, + "Achats de petit mat\u00e9riel et outillage": { + "account_number": "6056" + }, + "Achats d\u2019\u00e9tudes et prestations de services": { + "account_number": "6057" + }, + "Achats de travaux, mat\u00e9riels et \u00e9quipements": { + "account_number": "6058" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6059" + }, + "account_number": "605" + }, + "Achats d\u2019emballages": { + "Emballages perdus": { + "account_number": "6081" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "6082" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "6083" + }, + "Frais sur achats": { + "account_number": "6085" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6089" + }, + "account_number": "608" + }, + "account_number": "60" + }, + "Transports": { + "Transports sur ventes": { + "account_number": "612" + }, + "Transports pour le compte de tiers": { + "account_number": "613" + }, + "Transports du personnel": { + "account_number": "614" + }, + "Transports de plis": { + "account_number": "616" + }, + "Autres frais de transport": { + "Voyages et d\u00e9placements": { + "account_number": "6181" + }, + "Transports entre \u00e9tablissements ou chantiers": { + "account_number": "6182" + }, + "Transports administratifs": { + "account_number": "6183" + }, + "account_number": "618" + }, + "account_number": "61" + }, + "Services ext\u00e9rieurs": { + "Sous-traitance g\u00e9n\u00e9rale": { + "account_number": "621" + }, + "Locations, charges locatives": { + "Locations de terrains": { + "account_number": "6221" + }, + "Locations de b\u00e2timents": { + "account_number": "6222" + }, + "Locations de mat\u00e9riels et outillages": { + "account_number": "6223" + }, + "Malis sur emballages": { + "account_number": "6224" + }, + "Locations d\u2019emballages": { + "account_number": "6225" + }, + "Fermages et loyers du foncier": { + "account_number": "6226" + }, + "Locations et charges locatives diverses": { + "account_number": "6228" + }, + "account_number": "622" + }, + "Redevances de location acquisition": { + "Cr\u00e9dit-bail immobilier": { + "account_number": "6232" + }, + "Cr\u00e9dit-bail mobilier": { + "account_number": "6233" + }, + "Location-vente": { + "account_number": "6234" + }, + "Autres contrats de location acquisition": { + "account_number": "6238" + }, + "account_number": "623" + }, + "Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "Entretien et r\u00e9parations des biens immobiliers": { + "account_number": "6241" + }, + "Entretien et r\u00e9parations des biens mobiliers": { + "account_number": "6242" + }, + "Maintenance": { + "account_number": "6243" + }, + "Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "6244" + }, + "Autres entretiens et r\u00e9parations": { + "account_number": "6248" + }, + "account_number": "624" + }, + "Primes d\u2019assurance": { + "Assurances multirisques": { + "account_number": "6251" + }, + "Assurances mat\u00e9riel de transport": { + "account_number": "6252" + }, + "Assurances risques d\u2019exploitation": { + "account_number": "6253" + }, + "Assurances responsabilit\u00e9 du producteur": { + "account_number": "6254" + }, + "Assurances insolvabilit\u00e9 clients": { + "account_number": "6255" + }, + "Assurances transport sur ventes": { + "account_number": "6257" + }, + "Autres primes d\u2019assurances": { + "account_number": "6258" + }, + "account_number": "625" + }, + "\u00c9tudes, recherches et documentation": { + "\u00c9tudes et recherches": { + "account_number": "6261" + }, + "Documentation g\u00e9n\u00e9rale": { + "account_number": "6265" + }, + "Documentation technique": { + "account_number": "6266" + }, + "account_number": "626" + }, + "Publicit\u00e9, publications, relations publiques": { + "Annonces, insertions": { + "account_number": "6271" + }, + "Catalogues, imprim\u00e9s publicitaires": { + "account_number": "6272" + }, + "\u00c9chantillons": { + "account_number": "6273" + }, + "Foires et expositions": { + "account_number": "6274" + }, + "Publications": { + "account_number": "6275" + }, + "Cadeaux \u00e0 la client\u00e8le": { + "account_number": "6276" + }, + "Frais de colloques, s\u00e9minaires, conf\u00e9rences": { + "account_number": "6277" + }, + "Autres charges de publicit\u00e9 et relations publiques": { + "account_number": "6278" + }, + "account_number": "627" + }, + "Frais de t\u00e9l\u00e9communications": { + "Frais de t\u00e9l\u00e9phone": { + "account_number": "6281" + }, + "Frais de t\u00e9lex": { + "account_number": "6282" + }, + "Frais de t\u00e9l\u00e9copie": { + "account_number": "6283" + }, + "Autres frais de t\u00e9l\u00e9communications": { + "account_number": "6288" + }, + "account_number": "628" + }, + "account_number": "62" + }, + "Autres services ext\u00e9rieurs": { + "Frais bancaires": { + "Frais sur titres (vente, garde)": { + "account_number": "6311" + }, + "Frais sur effets": { + "account_number": "6312" + }, + "Location de coffres": { + "account_number": "6313" + }, + "Commissions d\u2019affacturage": { + "account_number": "6314" + }, + "Commissions sur cartes de cr\u00e9dit": { + "account_number": "6315" + }, + "Frais d\u2019\u00e9mission d\u2019emprunts": { + "account_number": "6316" + }, + "Frais sur instruments monnaie \u00e9lectronique": { + "account_number": "6317" + }, + "Autres frais bancaires": { + "account_number": "6318" + }, + "account_number": "631" + }, + "R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "Commissions et courtages sur ventes": { + "account_number": "6322" + }, + "Honoraires des professions r\u00e9glement\u00e9es": { + "account_number": "6324" + }, + "Frais d\u2019actes et de contentieux": { + "account_number": "6325" + }, + "R\u00e9mun\u00e9rations d\u2019affacturage": { + "account_number": "6326" + }, + "R\u00e9mun\u00e9rations des autres prestataires de services": { + "account_number": "6327" + }, + "Divers frais": { + "account_number": "6328" + }, + "account_number": "632" + }, + "Frais de formation du personnel": { + "account_number": "633" + }, + "Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "Redevances pour brevets, licences": { + "account_number": "6342" + }, + "Redevances pour logiciels": { + "account_number": "6343" + }, + "Redevances pour marques": { + "account_number": "6344" + }, + "Redevances pour sites internet": { + "account_number": "6345" + }, + "Redevances pour concessions, droits et valeurs similaires": { + "account_number": "6346" + }, + "account_number": "634" + }, + "Cotisations": { + "Cotisations": { + "account_number": "6351" + }, + "Concours divers": { + "account_number": "6358" + }, + "account_number": "635" + }, + "R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "Personnel int\u00e9rimaire": { + "account_number": "6371" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6372" + }, + "account_number": "637" + }, + "Autres charges externes": { + "Frais de recrutement du personnel": { + "account_number": "6381" + }, + "Frais de d\u00e9m\u00e9nagement": { + "account_number": "6382" + }, + "R\u00e9ceptions": { + "account_number": "6383" + }, + "Missions": { + "account_number": "6384" + }, + "Charges de copropri\u00e9t\u00e9": { + "account_number": "6385" + }, + "account_number": "638" + }, + "account_number": "63" + }, + "Imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes directs": { + "Imp\u00f4ts fonciers et taxes annexes": { + "account_number": "6411" + }, + "Patentes, licences et taxes annexes": { + "account_number": "6412" + }, + "Taxes sur appointements et salaires": { + "account_number": "6413" + }, + "Taxes d\u2019apprentissage": { + "account_number": "6414" + }, + "Formation professionnelle continue": { + "account_number": "6415" + }, + "Autres imp\u00f4ts et taxes directs": { + "account_number": "6418" + }, + "account_number": "641" + }, + "Imp\u00f4ts et taxes indirects": { + "account_number": "645" + }, + "Droits d\u2019enregistrement": { + "Droits de mutation": { + "account_number": "6461" + }, + "Droits de timbre": { + "account_number": "6462" + }, + "Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": { + "account_number": "6463" + }, + "Vignettes": { + "account_number": "6464" + }, + "Autres droits": { + "account_number": "6468" + }, + "account_number": "646" + }, + "P\u00e9nalit\u00e9s, amendes fiscales": { + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": { + "account_number": "6471" + }, + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": { + "account_number": "6472" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": { + "account_number": "6473" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": { + "account_number": "6474" + }, + "Autres p\u00e9nalit\u00e9s et amendes fiscales": { + "account_number": "6478" + }, + "account_number": "647" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "648" + }, + "account_number": "64" + }, + "Autres charges": { + "Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "Clients": { + "account_number": "6511" + }, + "Autres d\u00e9biteurs": { + "account_number": "6515" + }, + "account_number": "651" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "6521" + }, + "Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "6525" + }, + "account_number": "652" + }, + "Valeurs comptables des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "6541" + }, + "Immobilisations corporelles": { + "account_number": "6542" + }, + "account_number": "654" + }, + "Perte de change sur cr\u00e9ances et dettes commerciale": { + "account_number": "656" + }, + "P\u00e9nalit\u00e9s et amendes p\u00e9nales": { + "account_number": "657" + }, + "Charges diverses": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "6581" + }, + "Dons": { + "account_number": "6582" + }, + "M\u00e9c\u00e9nat": { + "account_number": "6583" + }, + "Autres charges diverses": { + "account_number": "6588" + }, + "account_number": "658" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "6591" + }, + "Sur stocks": { + "account_number": "6593" + }, + "Sur cr\u00e9ances": { + "account_number": "6594" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": { + "account_number": "6598" + }, + "account_number": "659" + }, + "account_number": "65" + }, + "Charges de personnel": { + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "Appointements salaires et commissions": { + "account_number": "6611" + }, + "Primes et gratifications": { + "account_number": "6612" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6613" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6614" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6615" + }, + "Suppl\u00e9ment familial": { + "account_number": "6616" + }, + "Avantages en nature": { + "account_number": "6617" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6618" + }, + "account_number": "661" + }, + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "Appointements salaires et commissions": { + "account_number": "6621" + }, + "Primes et gratifications": { + "account_number": "6622" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6623" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6624" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6625" + }, + "Suppl\u00e9ment familial": { + "account_number": "6626" + }, + "Avantages en nature": { + "account_number": "6627" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6628" + }, + "account_number": "662" + }, + "Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "Indemnit\u00e9s de logement": { + "account_number": "6631" + }, + "Indemnit\u00e9s de repr\u00e9sentation": { + "account_number": "6632" + }, + "Indemnit\u00e9s d\u2019expatriation": { + "account_number": "6633" + }, + "Indemnit\u00e9s de transport": { + "account_number": "6634" + }, + "Autres indemnit\u00e9s et avantages divers": { + "account_number": "6638" + }, + "account_number": "663" + }, + "Charges sociales": { + "Charges sociales sur r\u00e9mun\u00e9ration du personnel national": { + "account_number": "6641" + }, + "Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": { + "account_number": "6642" + }, + "account_number": "664" + }, + "R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "R\u00e9mun\u00e9ration du travail de l\u2019exploitant": { + "account_number": "6661" + }, + "Charges sociales": { + "account_number": "6662" + }, + "account_number": "666" + }, + "R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "Personnel int\u00e9rimaire": { + "account_number": "6671" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6672" + }, + "account_number": "667" + }, + "Autres charges sociales": { + "Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": { + "account_number": "6681" + }, + "Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": { + "account_number": "6682" + }, + "Versements et contributions aux autres \u0153uvres sociales": { + "account_number": "6683" + }, + "M\u00e9decine du travail et pharmacie": { + "account_number": "6684" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "6685" + }, + "Assurances retraite et fonds de pension": { + "account_number": "6686" + }, + "Majorations et p\u00e9nalit\u00e9s sociales": { + "account_number": "6687" + }, + "Charges sociales diverses": { + "account_number": "6688" + }, + "account_number": "668" + }, + "account_number": "66" + }, + "Frais financiers et charges assimil\u00e9es": { + "Int\u00e9r\u00eats des emprunts": { + "Emprunts obligataires": { + "account_number": "6711" + }, + "Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "6712" + }, + "Dettes li\u00e9es \u00e0 des participations": { + "account_number": "6713" + }, + "Primes de remboursement des obligations": { + "account_number": "6714" + }, + "account_number": "671" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "6722" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "6723" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": { + "account_number": "6724" + }, + "Int\u00e9r\u00eats dans loyers des autres locations acquisition": { + "account_number": "6728" + }, + "account_number": "672" + }, + "Escomptes accord\u00e9s": { + "account_number": "673" + }, + "Autres int\u00e9r\u00eats": { + "Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": { + "account_number": "6741" + }, + "Comptes courants bloqu\u00e9s": { + "account_number": "6742" + }, + "Int\u00e9r\u00eats sur obligations cautionn\u00e9es": { + "account_number": "6743" + }, + "Int\u00e9r\u00eats sur dettes commerciales": { + "account_number": "6744" + }, + "Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": { + "account_number": "6745" + }, + "Int\u00e9r\u00eats sur dettes diverses": { + "account_number": "6748" + }, + "account_number": "674" + }, + "Escomptes des effets de commerce": { + "account_number": "675" + }, + "Pertes de change financi\u00e8res": { + "account_number": "676" + }, + "Pertes sur titres de placement": { + "Pertes sur cessions de titres de placement": { + "account_number": "6771" + }, + "Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "6772" + }, + "account_number": "677" + }, + "Pertes et charges sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "6781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "6782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "6784" + }, + "account_number": "678" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "6791" + }, + "Sur titres de placement": { + "account_number": "6795" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "6798" + }, + "account_number": "679" + }, + "account_number": "67" + }, + "Dotations aux amortissements": { + "Dotations aux amortissements d\u2019exploitation": { + "Dotations aux amortissements des immobilisations incorporelles": { + "account_number": "6812" + }, + "Dotations aux amortissements des immobilisations corporelles": { + "account_number": "6813" + }, + "account_number": "681" + }, + "account_number": "68" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6911" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "account_number": "6913" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": { + "account_number": "6914" + }, + "account_number": "691" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6971" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": { + "account_number": "6972" + }, + "account_number": "697" + }, + "account_number": "69" + }, + "root_type": "Expense", + "account_number": "6" + }, + "Comptes de produits des activit\u00e9s ordinaires": { + "Ventes": { + "Ventes de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "7011" + }, + "Hors R\u00e9gion": { + "account_number": "7012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7014" + }, + "Sur internet": { + "account_number": "7015" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7019" + }, + "account_number": "701" + }, + "Ventes de produits finis": { + "Dans la R\u00e9gion": { + "account_number": "7021" + }, + "Hors R\u00e9gion": { + "account_number": "7022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7024" + }, + "Sur internet": { + "account_number": "7025" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7029" + }, + "account_number": "702" + }, + "Ventes de produits interm\u00e9diaires": { + "Dans la R\u00e9gion": { + "account_number": "7031" + }, + "Hors R\u00e9gion": { + "account_number": "7032" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7033" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7034" + }, + "Sur internet": { + "account_number": "7035" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7039" + }, + "account_number": "703" + }, + "Ventes de produits r\u00e9siduels": { + "Dans la R\u00e9gion": { + "account_number": "7041" + }, + "Hors R\u00e9gion": { + "account_number": "7042" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7043" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7044" + }, + "Sur internet": { + "account_number": "7045" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7049" + }, + "account_number": "704" + }, + "Travaux factur\u00e9s": { + "Dans la R\u00e9gion": { + "account_number": "7051" + }, + "Hors R\u00e9gion": { + "account_number": "7052" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7053" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7054" + }, + "Sur internet": { + "account_number": "7055" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7059" + }, + "account_number": "705" + }, + "Services vendus": { + "Dans la R\u00e9gion": { + "account_number": "7061" + }, + "Hors R\u00e9gion": { + "account_number": "7062" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7063" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7064" + }, + "Sur internet": { + "account_number": "7065" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7069" + }, + "account_number": "706" + }, + "Produits accessoires": { + "Ports, emballages perdus et autres frais factur\u00e9s": { + "account_number": "7071" + }, + "Commissions et courtages": { + "account_number": "7072" + }, + "Locations": { + "account_number": "7073" + }, + "Bonis sur reprises et cessions d\u2019emballages": { + "account_number": "7074" + }, + "Mise \u00e0 disposition de personnel": { + "account_number": "7075" + }, + "Redevances pour brevets, logiciels, marques et droits similaires": { + "account_number": "7076" + }, + "Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": { + "account_number": "7077" + }, + "Autres produits accessoires": { + "account_number": "7078" + }, + "account_number": "707" + }, + "account_number": "70" + }, + "Subventions d\u2019exploitation": { + "Sur produits \u00e0 l\u2019exportation": { + "account_number": "711" + }, + "Sur produits \u00e0 l\u2019importation": { + "account_number": "712" + }, + "Sur produits de p\u00e9r\u00e9quation": { + "account_number": "713" + }, + "Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": { + "account_number": "714" + }, + "Autres subventions d\u2019exploitation": { + "Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": { + "account_number": "7181" + }, + "Vers\u00e9es par les organismes internationaux": { + "account_number": "7182" + }, + "Vers\u00e9es par des tiers": { + "account_number": "7183" + }, + "account_number": "718" + }, + "account_number": "71" + }, + "Production immobilis\u00e9e": { + "Immobilisations incorporelles": { + "account_number": "721" + }, + "Immobilisations corporelles": { + "Immobilisations corporelles (hors actifs biologiques)": { + "account_number": "7221" + }, + "Immobilisations corporelles (actifs biologiques)": { + "account_number": "7222" + }, + "account_number": "722" + }, + "Production auto-consomm\u00e9e": { + "account_number": "724" + }, + "Immobilisations financi\u00e8res": { + "account_number": "726" + }, + "account_number": "72" + }, + "Variations des stocks de biens et de services produits": { + "Variations des stocks de produits en cours": { + "Produits en cours": { + "account_number": "7341" + }, + "Travaux en cours": { + "account_number": "7342" + }, + "account_number": "734" + }, + "Variations des en-cours de services": { + "\u00c9tudes en cours": { + "account_number": "7351" + }, + "Prestations de services en cours": { + "account_number": "7352" + }, + "account_number": "735" + }, + "Variations des stocks de produits finis": { + "account_number": "736" + }, + "Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "account_number": "7371" + }, + "Produits r\u00e9siduels": { + "account_number": "7372" + }, + "account_number": "737" + }, + "account_number": "73" + }, + "Autres produits": { + "Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "account_number": "751" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "7521" + }, + "B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "7525" + }, + "account_number": "752" + }, + "Produits des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "7541" + }, + "Immobilisations corporelles": { + "account_number": "7542" + }, + "account_number": "754" + }, + "Gains de change sur cr\u00e9ances et dettes commerciales": { + "account_number": "756" + }, + "Produits divers": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "7581" + }, + "Indemnit\u00e9s d\u2019assurances re\u00e7ues": { + "account_number": "7582" + }, + "Autres produits divers": { + "account_number": "7588" + }, + "account_number": "758" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "7591" + }, + "Sur stocks": { + "account_number": "7593" + }, + "Sur cr\u00e9ances": { + "account_number": "7594" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "account_number": "7598" + }, + "account_number": "759" + }, + "account_number": "75" + }, + "Revenus financiers et produits assimil\u00e9s": { + "Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "Int\u00e9r\u00eats de pr\u00eats": { + "account_number": "7712" + }, + "Int\u00e9r\u00eats sur cr\u00e9ances diverses": { + "account_number": "7713" + }, + "account_number": "771" + }, + "Revenus de participations et autres titres immobilis\u00e9s": { + "Revenus des titres de participation": { + "account_number": "7721" + }, + "Revenus autres titres immobilis\u00e9s": { + "account_number": "7722" + }, + "account_number": "772" + }, + "Escomptes obtenus": { + "account_number": "773" + }, + "Revenus de placement": { + "Revenus des obligations": { + "account_number": "7745" + }, + "Revenus des titres de placement": { + "account_number": "7746" + }, + "account_number": "774" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "account_number": "775" + }, + "Gains de change financiers": { + "account_number": "776" + }, + "Gains sur cessions de titres de placement": { + "account_number": "777" + }, + "Gains sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "7781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "7782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "7784" + }, + "account_number": "778" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "7791" + }, + "Sur titres de placement": { + "account_number": "7795" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "7798" + }, + "account_number": "779" + }, + "account_number": "77" + }, + "Transferts de charges": { + "Transferts de charges d\u2019exploitation": { + "account_number": "781" + }, + "Transferts de charges financi\u00e8res": { + "account_number": "787" + }, + "account_number": "78" + }, + "Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Pour risques et charges": { + "account_number": "7911" + }, + "Des immobilisations incorporelles": { + "account_number": "7913" + }, + "Des immobilisations corporelles": { + "account_number": "7914" + }, + "account_number": "791" + }, + "Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "Pour risques et charges": { + "account_number": "7971" + }, + "Des immobilisations financi\u00e8res": { + "account_number": "7972" + }, + "account_number": "797" + }, + "Reprises d\u2019amortissements": { + "account_number": "798" + }, + "Reprises de subventions d\u2019investissement": { + "account_number": "799" + }, + "account_number": "79" + }, + "root_type": "Income", + "account_number": "7" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "Valeurs comptables des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "811" + }, + "Immobilisations corporelles": { + "account_number": "812" + }, + "Immobilisations financi\u00e8res": { + "account_number": "816" + }, + "account_number": "81" + }, + "Charges hors activit\u00e9s ordinaires": { + "Charges HAO constat\u00e9es": { + "account_number": "831" + }, + "Charges li\u00e9es aux op\u00e9rations de restructuration": { + "account_number": "833" + }, + "Pertes sur cr\u00e9ances HAO": { + "account_number": "834" + }, + "Dons et lib\u00e9ralit\u00e9s accord\u00e9s": { + "account_number": "835" + }, + "Abandons de cr\u00e9ances consentis": { + "account_number": "836" + }, + "Charges li\u00e9es aux op\u00e9rations de liquidation": { + "account_number": "837" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "839" + }, + "account_number": "83" + }, + "Dotations hors activit\u00e9s ordinaires": { + "Dotations aux provisions r\u00e9glement\u00e9es": { + "account_number": "851" + }, + "Dotations aux amortissements HAO": { + "account_number": "852" + }, + "Dotations aux d\u00e9pr\u00e9ciations HAO": { + "account_number": "853" + }, + "Dotations aux provisions pour risques et charges HAO": { + "account_number": "854" + }, + "Autres dotations HAO": { + "account_number": "858" + }, + "account_number": "85" + }, + "Participation des travailleurs": { + "Participation l\u00e9gale aux b\u00e9n\u00e9fices": { + "account_number": "871" + }, + "Participation contractuelle aux b\u00e9n\u00e9fices": { + "account_number": "874" + }, + "Autres participations": { + "account_number": "878" + }, + "account_number": "87" + }, + "Imp\u00f4ts sur le r\u00e9sultat": { + "Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": { + "account_number": "8911" + }, + "Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": { + "account_number": "8912" + }, + "Activit\u00e9s exerc\u00e9es hors R\u00e9gion": { + "account_number": "8913" + }, + "account_number": "891" + }, + "Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "account_number": "892" + }, + "Imp\u00f4t minimum forfaitaire IMF": { + "account_number": "895" + }, + "D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "D\u00e9gr\u00e8vements": { + "account_number": "8991" + }, + "Annulations pour pertes r\u00e9troactives": { + "account_number": "8994" + }, + "account_number": "899" + }, + "account_number": "89" + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "Produits des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "821" + }, + "Immobilisations corporelles": { + "account_number": "822" + }, + "Immobilisations financi\u00e8res": { + "account_number": "826" + }, + "account_number": "82" + }, + "Produits hors activit\u00e9s ordinaires": { + "Produits HAO constat\u00e9s": { + "account_number": "841" + }, + "Produits li\u00e9s aux op\u00e9rations de restructuration": { + "account_number": "843" + }, + "Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": { + "account_number": "844" + }, + "Dons et lib\u00e9ralit\u00e9s obtenus": { + "account_number": "845" + }, + "Abandons de cr\u00e9ances obtenus": { + "account_number": "846" + }, + "Produits li\u00e9s aux op\u00e9rations de liquidation": { + "account_number": "847" + }, + "Transferts de charges HAO": { + "account_number": "848" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "849" + }, + "account_number": "84" + }, + "Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "Reprises de provisions r\u00e9glement\u00e9es": { + "account_number": "861" + }, + "Reprises d\u2019amortissements HAO": { + "account_number": "862" + }, + "Reprises de d\u00e9pr\u00e9ciations HAO": { + "account_number": "863" + }, + "Reprises de provisions pour risques et charges HAO": { + "account_number": "864" + }, + "Autres reprises HAO": { + "account_number": "868" + }, + "account_number": "86" + }, + "Subventions d\u2019\u00e9quilibre": { + "\u00c9tat": { + "account_number": "881" + }, + "Collectivit\u00e9s publiques": { + "account_number": "884" + }, + "Groupe": { + "account_number": "886" + }, + "Autres": { + "account_number": "888" + }, + "account_number": "88" + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/se_kontoplan_BAS_2024_with_account_number.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/se_kontoplan_BAS_2024_with_account_number.json new file mode 100644 index 00000000000..6411c04aad6 --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/se_kontoplan_BAS_2024_with_account_number.json @@ -0,0 +1,6300 @@ +{ + "country_code": "se", + "name": "BAS 2024 med Nummer", + "tree": { + "1 Tillgångar": { + "root_type": "Asset", + "account_type": "Fixed Asset", + "is_group": 1, + "10 Immateriella anläggningstillgångar": { + "is_group": 1, + "101 Utvecklingsutgifter": { + "is_group": 1, + "Utvecklingsutgifter": { + "account_number": "1010" + }, + "Balanserade utgifter för forskning och utveckling": { + "account_number": "1011" + }, + "Balanserade utgifter för programvaror": { + "account_number": "1012" + }, + "Ackumulerade nedskrivningar på balanserade utgifter": { + "account_number": "1018", + "account_type": "Accumulated Depreciation" + }, + "Ackumulerade avskrivningar på balanserade utgifter": { + "account_number": "1019", + "account_type": "Accumulated Depreciation" + } + }, + "102 Koncessioner m.m.": { + "is_group": 1, + "Koncessioner m.m.": { + "account_number": "1020" + }, + "Ackumulerade nedskrivningar på koncessioner m.m.": { + "account_number": "1028", + "account_type": "Accumulated Depreciation" + }, + "Ackumulerade avskrivningar på koncessioner m.m.": { + "account_number": "1029", + "account_type": "Accumulated Depreciation" + } + }, + "103 Patent": { + "is_group": 1, + "Patent": { + "account_number": "1030", + "account_type": "Fixed Asset" + }, + "Ackumulerade nedskrivningar på patent": { + "account_number": "1038" + }, + "Ackumulerade avskrivningar på patent": { + "account_number": "1039", + "account_type": "Accumulated Depreciation" + } + }, + "104 Licenser": { + "is_group": 1, + "Licenser": { + "account_number": "1040" + }, + "Ackumulerade nedskrivningar på licenser": { + "account_number": "1048" + }, + "Ackumulerade avskrivningar på licenser": { + "account_number": "1049", + "account_type": "Accumulated Depreciation" + } + }, + "105 Varumärken": { + "is_group": 1, + "Varumärken": { + "account_number": "1050" + }, + "Ackumulerade nedskrivningar på varumärken": { + "account_number": "1058" + }, + "Ackumulerade avskrivningar på varumärken": { + "account_number": "1059", + "account_type": "Accumulated Depreciation" + } + }, + "106 Hyresrätter, tomträtter och liknande": { + "is_group": 1, + "Hyresrätter, tomträtter och liknande": { + "account_number": "1060", + "account_type": "Fixed Asset" + }, + "Ackumulerade nedskrivningar på hyresrätter, tomträtter och liknande": { + "account_number": "1068" + }, + "Ackumulerade avskrivningar på hyresrätter, tomträtter och liknande": { + "account_number": "1069", + "account_type": "Accumulated Depreciation" + } + }, + "107 Goodwill": { + "is_group": 1, + "Goodwill": { + "account_number": "1070" + }, + "Ackumulerade nedskrivningar på goodwill": { + "account_number": "1078" + }, + "Ackumulerade avskrivningar på goodwill": { + "account_number": "1079", + "account_type": "Accumulated Depreciation" + } + }, + "108 Förskott för immateriella anläggningstillgångar": { + "is_group": 1, + "Förskott för immateriell anläggningstillgång": { + "account_number": "1080" + }, + "Pågående projekt för immateriella anläggningstillgångar": { + "account_number": "1081" + }, + "Förskott för immateriella anläggningstillgångar": { + "account_number": "1088" + } + } + }, + "11 Byggnader och mark": { + "is_group": 1, + "111 Byggnader": { + "is_group": 1, + "Byggnader": { + "account_number": "1110", + "account_type": "Fixed Asset" + }, + "Byggnader på egen mark": { + "account_number": "1111" + }, + "Byggnader på annans mark": { + "account_number": "1112" + }, + "Ackumulerade nedskrivningar på byggnader": { + "account_number": "1118", + "account_type": "Accumulated Depreciation" + }, + "Ackumulerade avskrivningar på byggnader": { + "account_number": "1119", + "account_type": "Accumulated Depreciation" + } + }, + "112 Förbättringsutgifter på annans fastighet": { + "is_group": 1, + "Förbättringsutgifter på annans fastighet": { + "account_number": "1120" + }, + "Ackumulerade avskrivningar på förbättringsutgifter på annans fastighet": { + "account_number": "1129", + "account_type": "Accumulated Depreciation" + } + }, + "113 Mark": { + "is_group": 1, + "Mark": { + "account_number": "1130", + "account_type": "Fixed Asset" + } + }, + "114 Tomter och obebyggda markområden": { + "is_group": 1, + "Tomter och obebyggda markområden": { + "account_number": "1140" + } + }, + "115 Markanläggningar": { + "is_group": 1, + "Markanläggningar": { + "account_number": "1150", + "account_type": "Fixed Asset" + }, + "Ackumulerade nedskrivningar på markanläggningar": { + "account_number": "1158" + }, + "Ackumulerade avskrivningar på markanläggningar": { + "account_number": "1159", + "account_type": "Accumulated Depreciation" + } + }, + "118 Pågående nyanläggningar och förskott för byggnader och mark": { + "is_group": 1, + "Pågående nyanläggningar och förskott för byggnader och mark": { + "account_number": "1180", + "account_type": "Fixed Asset" + }, + "Pågående ny-, till- och ombyggnad": { + "account_number": "1181" + }, + "Förskott för byggnader och mark": { + "account_number": "1188", + "account_type": "Accumulated Depreciation" + } + } + }, + "12 Maskiner och inventarier": { + "is_group": 1, + "121 Maskiner och andra tekniska anläggningar": { + "is_group": 1, + "Maskiner och andra tekniska anläggningar": { + "account_number": "1210", + "account_type": "Fixed Asset" + }, + "Maskiner": { + "account_number": "1211", + "account_type": "Fixed Asset" + }, + "Andra tekniska anläggningar": { + "account_number": "1213", + "account_type": "Fixed Asset" + }, + "Ackumulerade nedskrivningar på maskiner och andra tekniska anläggningar": { + "account_number": "1218", + "account_type": "Accumulated Depreciation" + }, + "Ackumulerade avskrivningar på maskiner och andra tekniska anläggningar": { + "account_number": "1219", + "account_type": "Accumulated Depreciation" + } + }, + "122 Inventarier och verktyg": { + "is_group": 1, + "Inventarier och verktyg": { + "account_number": "1220", + "account_type": "Fixed Asset" + }, + "Inventarier": { + "account_number": "1221" + }, + "Byggnadsinventarier": { + "account_number": "1222" + }, + "Verktyg": { + "account_number": "1225" + }, + "Ackumulerade nedskrivningar på inventarier och verktyg": { + "account_number": "1228" + }, + "Ackumulerade avskrivningar på inventarier och verktyg": { + "account_number": "1229", + "account_type": "Accumulated Depreciation" + } + }, + "123 Installationer": { + "is_group": 1, + "Installationer": { + "account_number": "1230", + "account_type": "Fixed Asset" + }, + "Installationer på egen fastighet": { + "account_number": "1231", + "account_type": "Fixed Asset" + }, + "Installationer på annans fastighet": { + "account_number": "1232", + "account_type": "Fixed Asset" + }, + "Ackumulerade nedskrivningar på installationer": { + "account_number": "1238", + "account_type": "Accumulated Depreciation" + }, + "Ackumulerade avskrivningar på installationer": { + "account_number": "1239", + "account_type": "Accumulated Depreciation" + } + }, + "124 Bilar och andra transportmedel": { + "is_group": 1, + "Bilar och andra transportmedel": { + "account_number": "1240", + "account_type": "Fixed Asset" + }, + "Personbilar": { + "account_number": "1241", + "account_type": "Fixed Asset" + }, + "Lastbilar": { + "account_number": "1242", + "account_type": "Fixed Asset" + }, + "Truckar": { + "account_number": "1243", + "account_type": "Fixed Asset" + }, + "Arbetsmaskiner": { + "account_number": "1244", + "account_type": "Fixed Asset" + }, + "Traktorer": { + "account_number": "1245", + "account_type": "Fixed Asset" + }, + "Motorcyklar, mopeder och skotrar": { + "account_number": "1246", + "account_type": "Fixed Asset" + }, + "Båtar, flygplan och helikoptrar": { + "account_number": "1247", + "account_type": "Fixed Asset" + }, + "Ackumulerade nedskrivningar på bilar och andra transportmedel": { + "account_number": "1248", + "account_type": "Fixed Asset" + }, + "Ackumulerade avskrivningar på bilar och andra transportmedel": { + "account_number": "1249", + "account_type": "Accumulated Depreciation" + } + }, + "125 Datorer": { + "is_group": 1, + "Datorer": { + "account_number": "1250", + "account_type": "Fixed Asset" + }, + "Datorer, företaget": { + "account_number": "1251" + }, + "Datorer, personal": { + "account_number": "1257" + }, + "Ackumulerade nedskrivningar på datorer": { + "account_number": "1258", + "account_type": "Accumulated Depreciation" + }, + "Ackumulerade avskrivningar på datorer": { + "account_number": "1259", + "account_type": "Accumulated Depreciation" + } + }, + "126 Leasade tillgångar": { + "is_group": 1, + "Leasade tillgångar": { + "account_number": "1260" + }, + "Ackumulerade avskrivningar på leasade tillgångar": { + "account_number": "1269", + "account_type": "Accumulated Depreciation" + } + }, + "128 Pågående nyanläggningar och förskott för maskiner och inventarier": { + "is_group": 1, + "Pågående nyanläggningar och förskott för maskiner och inventarier": { + "account_number": "1280" + }, + "Pågående nyanläggningar, maskiner och inventarier": { + "account_number": "1281" + }, + "Förskott för maskiner och inventarier": { + "account_number": "1288" + } + }, + "129 Övriga materiella anläggningstillgångar": { + "is_group": 1, + "Övriga materiella anläggningstillgångar": { + "account_number": "1290", + "account_type": "Fixed Asset" + }, + "Konst och liknande tillgångar": { + "account_number": "1291", + "account_type": "Fixed Asset" + }, + "Djur som klassificeras som anläggningstillgång": { + "account_number": "1292" + }, + "Ackumulerade nedskrivningar på övriga materiella anläggningstillgångar": { + "account_number": "1298" + }, + "Ackumulerade avskrivningar på övriga materiella anläggningstillgångar": { + "account_number": "1299", + "account_type": "Accumulated Depreciation" + } + } + }, + "13 Finansiella anläggningstillgångar": { + "is_group": 1, + "131 Andelar i koncernföretag": { + "is_group": 1, + "Andelar i koncernföretag": { + "account_number": "1310" + }, + "Aktier i noterade svenska koncernföretag": { + "account_number": "1311" + }, + "Aktier i onoterade svenska koncernföretag": { + "account_number": "1312" + }, + "Aktier i noterade utländska koncernföretag": { + "account_number": "1313" + }, + "Aktier i onoterade utländska koncernföretag": { + "account_number": "1314" + }, + "Andra andelar i svenska koncernföretag": { + "account_number": "1316" + }, + "Andra andelar i utländska koncernföretag": { + "account_number": "1317" + }, + "Ackumulerade nedskrivningar av andelar i koncernföretag": { + "account_number": "1318" + } + }, + "132 Långfristiga fordringar hos koncernföretag": { + "is_group": 1, + "Långfristiga fordringar hos koncernföretag": { + "account_number": "1320" + }, + "Långfristiga fordringar hos moderföretag": { + "account_number": "1321" + }, + "Långfristiga fordringar hos dotterföretag": { + "account_number": "1322" + }, + "Långfristiga fordringar hosandra koncernföretag": { + "account_number": "1323" + }, + "Ackumulerade nedskrivningar av långfristiga fordringar hos koncernföretag": { + "account_number": "1328" + } + }, + "133 Andelar i intresseföretag, gemensamt styrda företag och övriga företag": { + "is_group": 1, + "Andelar i intresseföretag, gemensamt styrda företag och övriga företag": { + "account_number": "1330" + }, + "Andelar i intresseföretag": { + "account_number": "1331" + }, + "Ackumulerade nedskrivningar av andelar i intresseföretag": { + "account_number": "1332" + }, + "Andelar i gemensamt styrda företag": { + "account_number": "1333" + }, + "Ackumulerade nedskrivningar av andelar i gemensamt styrda företag": { + "account_number": "1334" + }, + "Andelar i övriga företag som det finns ett ägarintresse i": { + "account_number": "1336" + }, + "Ackumulerade nedskrivningar av andelar i övriga företag": { + "account_number": "1337" + }, + "Ackumulerade nedskrivningar av andelar i intresseföretag övriga": { + "account_number": "1338" + } + }, + "134 Långfristiga fordringar hos intresseföretag": { + "is_group": 1, + "Långfristiga fordringar hos intresseföretag, gemensamt styrda företag": { + "account_number": "1340" + }, + "Långfristiga fordringar hos intresseföretag": { + "account_number": "1341" + }, + "Ackumulerade nedskrivningar av långfristiga fordringar hos intresseföretag": { + "account_number": "1342" + }, + "Långfristiga fordringar hos gemensamt styrda företag": { + "account_number": "1343" + }, + "Ackumulerade nedskrivningar av långfristiga fordringar hos gemensamt styrda företag": { + "account_number": "1344" + }, + "Långfristiga fordringar hos övriga företag som det finns ett ägarintresse i": { + "account_number": "1346" + }, + "Ackumulerade nedskrivningar av långfristiga fordringar hos övriga företag": { + "account_number": "1347" + }, + "Ackumulerade nedskrivningar av långfristiga fordringar hos intresseföretag, gemensamt styrda företag": { + "account_number": "1348" + } + }, + "135 Andelar och värdepapper i andra företag": { + "is_group": 1, + "Andelar och värdepapper i andra företag": { + "account_number": "1350" + }, + "Andelar i noterade företag": { + "account_number": "1351" + }, + "Andra andelar": { + "account_number": "1352" + }, + "Andelar i bostadsrättsföreningar": { + "account_number": "1353" + }, + "Obligationer": { + "account_number": "1354" + }, + "Andelar i ekonomiska föreningar, övriga företag": { + "account_number": "1356" + }, + "Andelar i handelsbolag, andra företag": { + "account_number": "1357" + }, + "Ackumulerade nedskrivningar av andra andelar och värdepapper": { + "account_number": "1358" + } + }, + "136 Lån till delägare eller närstående enligt ABL, långfristig del": { + "is_group": 1, + "Lån till delägare eller närstående enligt ABL, långfristig del": { + "account_number": "1360" + }, + "Ackumulerade nedskrivningar av lån till delägare eller närstående enligt ABL, långfristig del": { + "account_number": "1369" + } + }, + "137 Uppskjuten skattefordran": { + "is_group": 1, + "Uppskjuten skattefordran": { + "account_number": "1370" + } + }, + "138 Andra långfristiga fordringar": { + "is_group": 1, + "Andra långfristiga fordringar": { + "account_number": "1380", + "account_type": "Receivable" + }, + "Långfristiga reversfordringar": { + "account_number": "1381" + }, + "Långfristiga fordringar hos anställda": { + "account_number": "1382" + }, + "Lämnade depositioner, långfristiga": { + "account_number": "1383" + }, + "Derivat": { + "account_number": "1384" + }, + "Kapitalförsäkring": { + "account_number": "1385" + }, + "Långfristiga kontraktsfordringar": { + "account_number": "1387" + }, + "Långfristiga kundfordringar": { + "account_number": "1388" + }, + "Ackumulerade nedskrivningar av andra långfristiga fordringar": { + "account_number": "1389" + } + } + }, + "14 Lager, produkter i arbete och pågående arbeten": { + "is_group": 1, + "account_type": "Stock", + "141 Lager av råvaror": { + "is_group": 1, + "Lager av råvaror": { + "account_number": "1410", + "account_type": "Stock" + }, + "Förändring av lager av råvaror": { + "account_number": "1419", + "account_type": "Stock Adjustment" + } + }, + "142 Lager av tillsatsmaterial och förnödenheter": { + "is_group": 1, + "Lager av tillsatsmaterial och förnödenheter": { + "account_number": "1420", + "account_type": "Stock" + }, + "Förändring av lager av tillsatsmaterial och förnödenheter": { + "account_number": "1429", + "account_type": "Stock Adjustment" + } + }, + "144 Produkter i arbete": { + "is_group": 1, + "Produkter i arbete": { + "account_number": "1440", + "account_type": "Stock" + }, + "Förändring av produkter i arbete": { + "account_number": "1449", + "account_type": "Stock Adjustment" + } + }, + "145 Lager av färdiga varor": { + "is_group": 1, + "Lager av färdiga varor": { + "account_number": "1450", + "account_type": "Stock" + }, + "Förändring av lager av färdiga varor": { + "account_number": "1459", + "account_type": "Stock Adjustment" + } + }, + "146 Lager av handelsvaror": { + "is_group": 1, + "Lager av handelsvaror": { + "account_number": "1460", + "account_type": "Stock" + }, + "Lager av varor VMB": { + "account_number": "1465" + }, + "Lager av varor VMB förenklad": { + "account_number": "1467" + }, + "Förändring av lager av handelsvaror": { + "account_number": "1469", + "account_type": "Stock Adjustment" + } + }, + "147 Pågående arbeten": { + "is_group": 1, + "Pågående arbeten": { + "account_number": "1470" + }, + "Pågående arbeten, nedlagda kostnader": { + "account_number": "1471" + }, + "Pågående arbeten, fakturering": { + "account_number": "1478" + }, + "Förändring av pågående arbeten": { + "account_number": "1479" + } + }, + "148 Förskott för varor och tjänster": { + "is_group": 1, + "Förskott för varor och tjänster": { + "account_number": "1480" + }, + "Remburser": { + "account_number": "1481" + }, + "Övriga förskott till leverantörer": { + "account_number": "1489" + } + }, + "149 Övriga lagertillgångar": { + "is_group": 1, + "Övriga lagertillgångar": { + "account_number": "1490" + }, + "Lager av värdepapper": { + "account_number": "1491" + }, + "Lager av fastigheter": { + "account_number": "1492" + }, + "Djur som klassificeras som omsättningstillgång": { + "account_number": "1493" + } + } + }, + "15 Kundfordringar": { + "account_type": "Receivable", + "is_group": 1, + "151 Kundfordringar": { + "is_group": 1, + "Kundfordringar": { + "account_number": "1510", + "account_type": "Receivable" + }, + "Kundfordringar ": { + "account_number": "1511", + "account_type": "Receivable" + }, + "Belånade kundfordringar (factoring)": { + "account_number": "1512", + "account_type": "Receivable" + }, + "Kundfordringar – delad faktura": { + "account_number": "1513", + "account_type": "Receivable" + }, + "Tvistiga kundfordringar": { + "account_number": "1516" + }, + "Ej reskontraförda kundfordringar": { + "account_number": "1518" + }, + "Nedskrivning av kundfordringar": { + "account_number": "1519", + "account_type": "Receivable" + } + }, + "152 Växelfordringar": { + "is_group": 1, + "Växelfordringar": { + "account_number": "1520" + }, + "Osäkra växelfordringar": { + "account_number": "1525" + }, + "Nedskrivning av växelfordringar": { + "account_number": "1529" + } + }, + "153 Kontraktsfordringar": { + "is_group": 1, + "Kontraktsfordringar": { + "account_number": "1530" + }, + "Kontraktsfordringar ": { + "account_number": "1531" + }, + "Belånade kontraktsfordringar": { + "account_number": "1532" + }, + "Tvistiga kontraktsfordringar": { + "account_number": "1536" + }, + "Nedskrivning av kontraktsfordringar": { + "account_number": "1539" + } + }, + "155 Konsignationsfordringar": { + "is_group": 1, + "Konsignationsfordringar": { + "account_number": "1550" + } + }, + "156 Kundfordringar hos koncernföretag": { + "is_group": 1, + "Kundfordringar hos koncernföretag": { + "account_number": "1560" + }, + "Kundfordringar hos moderföretag": { + "account_number": "1561" + }, + "Kundfordringar hos dotterföretag": { + "account_number": "1562" + }, + "Kundfordringar hos andra koncernföretag": { + "account_number": "1563" + }, + "Ej reskontraförda kundfordringar hos koncernföretag": { + "account_number": "1568" + }, + "Nedskrivning av kundfordringar hos koncernföretag": { + "account_number": "1569" + } + }, + "157 Kundfordringar hos intresseföretag, gemensamt styrda företag": { + "is_group": 1, + "Kundfordringar hos intresseföretag, gemensamt styrda företag": { + "account_number": "1570" + }, + "Kundfordringar hos intresseföretag": { + "account_number": "1571" + }, + "Kundfordringar hos gemensamt styrda företag": { + "account_number": "1572" + }, + "Kundfordringar hos övriga företag som det finns ett ägarintresse i": { + "account_number": "1573" + } + }, + "158 Fordringar för kontokort och kuponger": { + "is_group": 1, + "Fordringar för kontokort och kuponger": { + "account_number": "1580" + } + } + }, + "16 Övriga kortfristiga fordringar": { + "is_group": 1, + "161 Kortfristiga fordringar hos anställda": { + "is_group": 1, + "Kortfristiga fordringar hos anställda": { + "account_number": "1610" + }, + "Reseförskott": { + "account_number": "1611" + }, + "Kassaförskott": { + "account_number": "1612" + }, + "Övriga förskott": { + "account_number": "1613" + }, + "Tillfälliga lån till anställda": { + "account_number": "1614" + }, + "Övriga fordringar hos anställda": { + "account_number": "1619" + } + }, + "162 Upparbetad men ej fakturerad intäkt": { + "is_group": 1, + "Upparbetad men ej fakturerad intäkt": { + "account_number": "1620" + } + }, + "163 Avräkning för skatter och avgifter (skattekonto)": { + "is_group": 1, + "Avräkning för skatter och avgifter (skattekonto)": { + "account_number": "1630", + "account_type": "Tax" + } + }, + "164 Skattefordringar": { + "is_group": 1, + "Skattefordringar": { + "account_number": "1640" + } + }, + "165 Momsfordran": { + "is_group": 1, + "Momsfordran": { + "account_number": "1650" + } + }, + "166 Kortfristiga fordringar hos koncernföretag": { + "is_group": 1, + "Kortfristiga fordringar hos koncernföretag": { + "account_number": "1660" + }, + "Kortfristiga fordringar hos moderföretag": { + "account_number": "1661" + }, + "Kortfristiga fordringar hos dotterföretag": { + "account_number": "1662" + }, + "Kortfristiga fordringar hos andra koncernföretag": { + "account_number": "1663" + } + }, + "167 Kortfristiga fordringar hos intresseföretag, gemensamt styrda företag": { + "is_group": 1, + "Kortfristiga fordringar hos intresseföretag, gemensamt styrda företag": { + "account_number": "1670" + }, + "Kortfristiga fordringar hos intresseföretag": { + "account_number": "1671" + }, + "Kortfristiga fordringar hos gemensamt styrda företag": { + "account_number": "1672" + }, + "Kortfristiga fordringar hos övriga företag som det finns ett ögarintresse i": { + "account_number": "1673" + } + }, + "168 Andra kortfristiga fordringar": { + "is_group": 1, + "Andra kortfristiga fordringar": { + "account_number": "1680" + }, + "Utlägg för kunder": { + "account_number": "1681" + }, + "Kortfristiga lånefordringar": { + "account_number": "1682" + }, + "Derivat": { + "account_number": "1683" + }, + "Kortfristiga fordringar hos leverantörer": { + "account_number": "1684" + }, + "Kortfristiga fordringar hos delägare eller närstående": { + "account_number": "1685" + }, + "Kortfristig del av långfristiga fordringar": { + "account_number": "1687" + }, + "Fordran arbetsmarknadsförsäkringar": { + "account_number": "1688" + }, + "Övriga kortfristiga fordringar": { + "account_number": "1689" + } + }, + "169 Fordringar för tecknat men ej inbetalt aktiekapital": { + "is_group": 1, + "Fordringar för tecknat men ej inbetalt aktiekapital": { + "account_number": "1690" + } + } + }, + "17 Förutbetalda kostnader och upplupna intäkter": { + "is_group": 1, + "171 Förutbetalda hyreskostnader": { + "is_group": 1, + "Förutbetalda hyreskostnader": { + "account_number": "1710" + } + }, + "172 Förutbetalda leasingavgifter": { + "is_group": 1, + "Förutbetalda leasingavgifter": { + "account_number": "1720" + } + }, + "173 Förutbetalda försäkringspremier": { + "is_group": 1, + "Förutbetalda försäkringspremier": { + "account_number": "1730" + } + }, + "174 Förutbetalda räntekostnader": { + "is_group": 1, + "Förutbetalda räntekostnader": { + "account_number": "1740" + } + }, + "175 Upplupna hyresintäkter": { + "is_group": 1, + "Upplupna hyresintäkter": { + "account_number": "1750" + } + }, + "176 Upplupna ränteintäkter": { + "is_group": 1, + "Upplupna ränteintäkter": { + "account_number": "1760" + } + }, + "177 Tillgångar av kostnadsnatur": { + "is_group": 1, + "Tillgångar av kostnadsnatur": { + "account_number": "1770" + } + }, + "178 Upplupna avtalsintäkter": { + "is_group": 1, + "Upplupna avtalsintäkter": { + "account_number": "1780" + } + }, + "179 Övriga förutbetalda kostnader och upplupna intäkter": { + "is_group": 1, + "Övriga förutbetalda kostnader och upplupna intäkter": { + "account_number": "1790" + } + } + }, + "18 Kortfristiga placeringar": { + "is_group": 1, + "181 Andelar i börsnoterade företag": { + "is_group": 1, + "Andelar i börsnoterade företag": { + "account_number": "1810" + } + }, + "182 Obligationer": { + "is_group": 1, + "Obligationer": { + "account_number": "1820" + } + }, + "183 Konvertibla skuldebrev": { + "is_group": 1, + "Konvertibla skuldebrev": { + "account_number": "1830" + } + }, + "186 Andelar i koncernföretag, kortfristigt": { + "is_group": 1, + "Andelar i koncernföretag, kortfristigt": { + "account_number": "1860" + } + }, + "188 Andra kortfristiga placeringar": { + "is_group": 1, + "Andra kortfristiga placeringar": { + "account_number": "1880" + }, + "Derivat": { + "account_number": "1886" + }, + "Andelar i övriga företag": { + "account_number": "1889" + } + }, + "189 Nedskrivning av kortfristiga placeringar": { + "is_group": 1, + "Nedskrivning av kortfristiga placeringar": { + "account_number": "1890" + } + } + }, + "19 Kassa och bank": { + "account_type": "Cash", + "is_group": 1, + "191 Kassa": { + "is_group": 1, + "Kassa": { + "account_number": "1910", + "account_type": "Cash" + }, + "Huvudkassa": { + "account_number": "1911" + }, + "Kassa 2": { + "account_number": "1912" + }, + "Kassa 3": { + "account_number": "1913" + } + }, + "192 PlusGiro": { + "is_group": 1, + "PlusGiro": { + "account_number": "1920" + } + }, + "193 Företagskonto/checkkonto/affärskonto": { + "is_group": 1, + "Företagskonto/checkkonto/affärskonto": { + "account_number": "1930", + "account_type": "Bank" + } + }, + "194 Övriga bankkonton": { + "is_group": 1, + "Övriga bankkonton": { + "account_number": "1940" + } + }, + "195 Bankcertifikat": { + "is_group": 1, + "Bankcertifikat": { + "account_number": "1950" + } + }, + "196 Koncernkonto moderföretag": { + "is_group": 1, + "Koncernkonto moderföretag": { + "account_number": "1960" + } + }, + "197 Särskilda bankkonton": { + "is_group": 1, + "Särskilda bankkonton": { + "account_number": "1970" + }, + "Upphovsmannakonto": { + "account_number": "1972" + }, + "Skogskonto": { + "account_number": "1973" + }, + "Spärrade bankmedel": { + "account_number": "1974" + }, + "Övriga särskilda bankkonton": { + "account_number": "1979" + } + }, + "198 Valutakonton": { + "is_group": 1, + "Valutakonton": { + "account_number": "1980" + } + }, + "199 Redovisningsmedel": { + "is_group": 1, + "Redovisningsmedel": { + "account_number": "1990" + } + } + } + }, + "2 Eget Kapital och Skulder": { + "root_type": "Liability", + "is_group": 1, + "20 Eget Kapital": { + "account_type": "Equity", + "is_group": 1, + "201 Eget kapital, delägare 1": { + "is_group": 1, + "Eget kapital": { + "account_number": "2010", + "account_type": "Equity" + }, + "Egna varuuttag": { + "account_number": "2011", + "account_type": "Equity" + }, + "Övriga egna uttag": { + "account_number": "2013", + "account_type": "Equity" + }, + "Årets kapitaltillskott": { + "account_number": "2017", + "account_type": "Equity" + }, + "Övriga egna insättningar": { + "account_number": "2018", + "account_type": "Equity" + }, + "Årets resultat": { + "account_number": "2019", + "account_type": "Equity" + } + }, + "202 Eget kapital, delägare 2": { + "is_group": 1, + "Eget kapital": { + "account_number": "2020", + "account_type": "Equity" + }, + "Egna varuuttag": { + "account_number": "2021", + "account_type": "Equity" + }, + "Övriga egna uttag": { + "account_number": "2023", + "account_type": "Equity" + }, + "Årets kapitaltillskott": { + "account_number": "2027", + "account_type": "Equity" + }, + "Övriga egna insättningar": { + "account_number": "2028", + "account_type": "Equity" + }, + "Årets resultat": { + "account_number": "2029", + "account_type": "Equity" + } + }, + "203 Eget kapital, delägare 3": { + "is_group": 1, + "Eget kapital": { + "account_number": "2030", + "account_type": "Equity" + }, + "Egna varuuttag": { + "account_number": "2031", + "account_type": "Equity" + }, + "Övriga egna uttag": { + "account_number": "2033", + "account_type": "Equity" + }, + "Årets kapitaltillskott": { + "account_number": "2037", + "account_type": "Equity" + }, + "Övriga egna insättningar": { + "account_number": "2038", + "account_type": "Equity" + }, + "Årets resultat": { + "account_number": "2039", + "account_type": "Equity" + } + }, + "204 Eget kapital, delägare 4": { + "is_group": 1, + "Eget kapital": { + "account_number": "2040", + "account_type": "Equity" + }, + "Egna varuuttag": { + "account_number": "2041", + "account_type": "Equity" + }, + "Övriga egna uttag": { + "account_number": "2043", + "account_type": "Equity" + }, + "Årets kapitaltillskott": { + "account_number": "2047", + "account_type": "Equity" + }, + "Övriga egna insättningar": { + "account_number": "2048", + "account_type": "Equity" + }, + "Årets resultat": { + "account_number": "2049", + "account_type": "Equity" + } + }, + "205 Avsättning till expansionsfond": { + "is_group": 1, + "Avsättning till expansionsfond": { + "account_number": "2050" + } + }, + "206 Eget kapital i ideella föreningar, stiftelser och registrerade trossamfund": { + "is_group": 1, + "Eget kapital i ideella föreningar, stiftelser och registrerade trossamfund": { + "account_number": "2060", + "account_type": "Equity" + }, + "Eget kapital/stiftelsekapital/grundkapital": { + "account_number": "2061" + }, + "Förändring i fond för verkligt värde": { + "account_number": "2065" + }, + "Värdesäkringsfond": { + "account_number": "2066" + }, + "Balanserad vinst eller förlust/balanserat kapital": { + "account_number": "2067" + }, + "Vinst eller förlust från föregående år": { + "account_number": "2068" + }, + "Årets resultat": { + "account_number": "2069" + } + }, + "207 Ändamålsbestämda medel": { + "is_group": 1, + "Ändamålsbestämda medel": { + "account_number": "2070", + "account_type": "Equity" + }, + "Ändamål 1": { + "account_number": "2071" + }, + "Ändamål 2": { + "account_number": "2072" + } + }, + "208 Bundet eget kapital": { + "is_group": 1, + "Bundet eget kapital": { + "account_number": "2080" + }, + "Aktiekapital": { + "account_number": "2081", + "account_type": "Equity" + }, + "Ej registrerat aktiekapital": { + "account_number": "2082" + }, + "Medlemsinsatser": { + "account_number": "2083", + "account_type": "Equity" + }, + "Förlagsinsatser": { + "account_number": "2084" + }, + "Uppskrivningsfond": { + "account_number": "2085" + }, + "Reservfond": { + "account_number": "2086", + "account_type": "Equity" + }, + "Bunden överkursfond": { + "account_number": "2087" + }, + "Fond för yttre underhåll": { + "account_number": "2088" + }, + "Fond för utvecklingsutgifter": { + "account_number": "2089" + } + }, + "209 Fritt eget kapital": { + "is_group": 1, + "Fritt eget kapital": { + "account_number": "2090", + "account_type": "Equity" + }, + "Balanserad vinst eller förlust": { + "account_number": "2091", + "account_type": "Equity" + }, + "Mottagna/lämnade koncernbidrag": { + "account_number": "2092" + }, + "Erhållna aktieägartillskott": { + "account_number": "2093" + }, + "Egna aktier": { + "account_number": "2094" + }, + "Fusionsresultat": { + "account_number": "2095" + }, + "Fond för verkligt värde": { + "account_number": "2096" + }, + "Fri överkursfond": { + "account_number": "2097" + }, + "Vinst eller förlust från föregående år": { + "account_number": "2098", + "account_type": "Equity" + }, + "Årets resultat": { + "account_number": "2099", + "account_type": "Equity" + } + } + }, + "21 Obeskattade reserver": { + "root_type": "Equity", + "is_group": 1, + "211 Periodiseringsfonder": { + "account_type": "Equity", + "is_group": 1, + "Periodiseringsfonder": { + "account_number": "2110" + } + }, + "212 Periodiseringsfond 2020": { + "is_group": 1, + "Periodiseringsfond 2020": { + "account_number": "2120", + "account_type": "Equity" + }, + "Periodiseringsfond 2021": { + "account_number": "2121", + "account_type": "Equity" + }, + "Periodiseringsfond 2022": { + "account_number": "2122", + "account_type": "Equity" + }, + "Periodiseringsfond 2023": { + "account_number": "2123", + "account_type": "Equity" + }, + "Periodiseringsfond 2024": { + "account_number": "2124", + "account_type": "Equity" + }, + "Periodiseringsfond 2025": { + "account_number": "2125", + "account_type": "Equity" + }, + "Periodiseringsfond 2017": { + "account_number": "2127", + "account_type": "Equity" + }, + "Periodiseringsfond 2018": { + "account_number": "2128", + "account_type": "Equity" + }, + "Periodiseringsfond 2019": { + "account_number": "2129", + "account_type": "Equity" + } + }, + "213 Periodiseringsfond 2020": { + "is_group": 1, + "Periodiseringsfond 2020": { + "account_number": "2130", + "account_type": "Equity" + }, + "Periodiseringsfond 2021": { + "account_number": "2131", + "account_type": "Equity" + }, + "Periodiseringsfond 2022": { + "account_number": "2132", + "account_type": "Equity" + }, + "Periodiseringsfond 2023": { + "account_number": "2133", + "account_type": "Equity" + }, + "Periodiseringsfond 2024": { + "account_number": "2134", + "account_type": "Equity" + }, + "Periodiseringsfond 2025-2": { + "account_number": "2135", + "account_type": "Equity" + }, + "Periodiseringsfond 2017": { + "account_number": "2137", + "account_type": "Equity" + }, + "Periodiseringsfond 2018": { + "account_number": "2138", + "account_type": "Equity" + }, + "Periodiseringsfond 2019": { + "account_number": "2139", + "account_type": "Equity" + } + }, + "215 Ackumulerade överavskrivningar": { + "is_group": 1, + "Ackumulerade överavskrivningar": { + "account_number": "2150", + "account_type": "Equity" + }, + "Ackumulerade överavskrivningar på immateriella anläggningstillgångar": { + "account_number": "2151" + }, + "Ackumulerade överavskrivningar på byggnader och markanläggningar": { + "account_number": "2152" + }, + "Ackumulerade överavskrivningar på maskiner och inventarier": { + "account_number": "2153" + } + }, + "216 Ersättningsfond": { + "is_group": 1, + "Ersättningsfond": { + "account_number": "2160" + }, + "Ersättningsfond maskiner och inventarier": { + "account_number": "2161" + }, + "Ersättningsfond byggnader och markanläggningar": { + "account_number": "2162" + }, + "Ersättningsfond för djurlager i jordbruk och renskötsel": { + "account_number": "2164" + } + }, + "219 Övriga obeskattade reserver": { + "is_group": 1, + "Övriga obeskattade reserver": { + "account_number": "2190" + }, + "Lagerreserv": { + "account_number": "2196" + }, + "Övriga obeskattade reserver övriga": { + "account_number": "2199" + } + } + }, + "22 Avsättningar": { + "account_type": "Equity", + "is_group": 1, + "221 Avsättningar för pensioner enligt tryggandelagen": { + "account_type": "Equity", + "is_group": 1, + "Avsättningar för pensioner enligt tryggandelagen": { + "account_number": "2210", + "account_type": "Equity" + } + }, + "222 Avsättningar för garantier": { + "account_type": "Equity", + "is_group": 1, + "Avsättningar för garantier": { + "account_number": "2220", + "account_type": "Equity" + } + }, + "223 Övriga avsättningar för pensioner och liknande förpliktelser": { + "account_type": "Equity", + "is_group": 1, + "Övriga avsättningar för pensioner och liknande förpliktelser": { + "account_number": "2230" + } + }, + "224 Avsättningar för uppskjutna skatter": { + "is_group": 1, + "Avsättningar för uppskjutna skatter": { + "account_number": "2240" + } + }, + "225 Övriga avsättningar för skatter": { + "is_group": 1, + "Övriga avsättningar för skatter": { + "account_number": "2250" + }, + "Avsättningar för tvistiga skatter": { + "account_number": "2252" + }, + "Avsättningar särskild löneskatt, deklarationspost": { + "account_number": "2253" + } + }, + "229 Övriga avsättningar": { + "account_type": "Equity", + "is_group": 1, + "Övriga avsättningar": { + "account_number": "2290", + "account_type": "Equity" + } + } + }, + "23 Långfristiga skulder": { + "is_group": 1, + "231 Obligations- och förlagslån": { + "is_group": 1, + "Obligations- och förlagslån": { + "account_number": "2310" + } + }, + "232 Konvertibla lån och liknande": { + "is_group": 1, + "Konvertibla lån och liknande": { + "account_number": "2320" + }, + "Konvertibla lån": { + "account_number": "2321" + }, + "Lån förenade med optionsrätt": { + "account_number": "2322" + }, + "Vinstandelslån": { + "account_number": "2323" + }, + "Kapitalandelslån": { + "account_number": "2334" + } + }, + "233 Checkräkningskredit": { + "is_group": 1, + "Checkräkningskredit": { + "account_number": "2330" + }, + "Checkräkningskredit 1": { + "account_number": "2331" + }, + "Checkräkningskredit 2": { + "account_number": "2332" + } + }, + "234 Byggnadskreditiv": { + "is_group": 1, + "Byggnadskreditiv": { + "account_number": "2340" + } + }, + "235 Andra långfristiga skulder till kreditinstitut": { + "is_group": 1, + "Andra långfristiga skulder till kreditinstitut": { + "account_number": "2350" + }, + "Fastighetslån, långfristig del": { + "account_number": "2351" + }, + "Långfristiga lån i utländsk valuta från kreditinstitut": { + "account_number": "2355" + }, + "Övriga långfristiga lån från kreditinstitut": { + "account_number": "2359" + } + }, + "236 Långfristiga skulder till koncernfäretag": { + "is_group": 1, + "Långfristiga skulder till koncernfäretag": { + "account_number": "2360" + }, + "Långfristiga skulder till moderfäretag": { + "account_number": "2361" + }, + "Långfristiga skulder till dotterfäretag": { + "account_number": "2362" + }, + "Långfristiga skulder till andra koncernfäretag": { + "account_number": "2363" + } + }, + "237 Långfristiga skulder till intresseföretag, gemensamt styrda företag": { + "is_group": 1, + "Långfristiga skulder till intresseföretag, gemensamt styrda företag": { + "account_number": "2370" + }, + "Långfristiga skulder till intresseföretag": { + "account_number": "2371" + }, + "Långfristiga skulder till gemensamt styrda företag": { + "account_number": "2372" + }, + "Långfristiga skulder till övriga företag som det finns ett ägarintresse i": { + "account_number": "2373" + } + }, + "239 Övriga långfristiga skulder": { + "is_group": 1, + "Övriga långfristiga skulder": { + "account_number": "2390" + }, + "Avbetalningskontrakt, långfristig del": { + "account_number": "2391" + }, + "Villkorliga långfristiga skulder": { + "account_number": "2392" + }, + "Lån från närstående personer, långfristig del": { + "account_number": "2393" + }, + "Långfristiga leverantörskrediter": { + "account_number": "2394" + }, + "Andra långfristiga lån i utländsk valuta": { + "account_number": "2395" + }, + "Derivat": { + "account_number": "2396" + }, + "Mottagna depositioner, långfristiga": { + "account_number": "2397" + }, + "Övriga långfristiga skulder övriga": { + "account_number": "2399" + } + } + }, + "24 Kortfristiga skulder till kreditinstitut, kunder och leverantörer": { + "is_group": 1, + "241 Andra kortfristiga låneskulder till kreditinstitut": { + "is_group": 1, + "Andra kortfristiga låneskulder till kreditinstitut": { + "account_number": "2410", + "account_type": "Payable" + }, + "Kortfristiga lån från kreditinstitut": { + "account_number": "2411" + }, + "Byggnadskreditiv, kortfristig del": { + "account_number": "2412" + }, + "Kortfristig del av långfristiga skulder till kreditinstitut": { + "account_number": "2417" + }, + "Övriga kortfristiga skulder till kreditinstitut": { + "account_number": "2419" + } + }, + "242 Förskott från kunder": { + "is_group": 1, + "Förskott från kunder": { + "account_number": "2420", + "account_type": "Payable" + }, + "Ej inlösta presentkort": { + "account_number": "2421" + }, + "Övriga förskott från kunder": { + "account_number": "2429" + } + }, + "243 Pågående arbeten": { + "is_group": 1, + "Pågående arbeten": { + "account_number": "2430", + "account_type": "Payable" + }, + "Pågående arbeten, fakturering": { + "account_number": "2431" + }, + "Pågående arbeten, nedlagda kostnader": { + "account_number": "2438" + }, + "Beräknad fÖrändring av pågående arbeten": { + "account_number": "2439" + } + }, + "244 Leverantörsskulder": { + "is_group": 1, + "Leverantörsskulder": { + "account_number": "2440", + "account_type": "Payable" + }, + "Leverantörsskulder övriga": { + "account_number": "2441" + }, + "Konsignationsskulder": { + "account_number": "2443" + }, + "Tvistiga leverantörsskulder": { + "account_number": "2445" + }, + "Ej reskontraförda leverantörsskulder": { + "account_number": "2448", + "account_type": "Stock Received But Not Billed" + } + }, + "245 Fakturerad men ej upparbetad intäkt": { + "is_group": 1, + "Fakturerad men ej upparbetad intäkt": { + "account_number": "2450" + } + }, + "246 Leverantörsskulder till koncernföretag": { + "is_group": 1, + "Leverantörsskulder till koncernföretag": { + "account_number": "2460" + }, + "Leverantörsskulder till moderföretag": { + "account_number": "2461" + }, + "Leverantörsskulder till dotterföretag": { + "account_number": "2462" + }, + "Leverantörsskulder till andra koncernföretag": { + "account_number": "2463" + } + }, + "247 Leverantörsskulder till intresseföretag, gemensamt styrda företag och övriga företag som det finns ett ägarintresse i": { + "is_group": 1, + "Leverantörsskulder till intresseföretag, gemensamt styrda företag och övriga företag som det finns ett ägarintresse i": { + "account_number": "2470" + }, + "Leverantörsskulder till intresseföretag": { + "account_number": "2471" + }, + "Leverantörsskulder till gemensamt styrda företag": { + "account_number": "2472" + }, + "Leverantörsskulder till övriga företag som det finns ett ägarintresse i": { + "account_number": "2473" + } + }, + "248 Checkräkningskredit, kortfristig": { + "is_group": 1, + "Checkräkningskredit, kortfristig": { + "account_number": "2480" + } + }, + "249 Övriga kortfristiga skulder till kreditinstitut, kunder och leverantörer": { + "is_group": 1, + "Övriga kortfristiga skulder till kreditinstitut, kunder och leverantörer": { + "account_number": "2490" + }, + "Avräkning spelarrangörer": { + "account_number": "2491" + }, + "Växelskulder": { + "account_number": "2492" + }, + "Andra övriga kortfristiga skulder": { + "account_number": "2499" + } + } + }, + "25 Skatteskulder": { + "is_group": 1, + "251 Skatteskulder": { + "is_group": 1, + "Skatteskulder": { + "account_number": "2510" + }, + "Beräknad inkomstskatt": { + "account_number": "2512" + }, + "Beräknad fastighetsskatt/fastighetsavgift": { + "account_number": "2513" + }, + "Beräknad särskild löneskatt på pensionskostnader": { + "account_number": "2514" + }, + "Beräknad avkastningsskatt": { + "account_number": "2515" + }, + "Beräknad utländsk skatt": { + "account_number": "2517" + }, + "Betald F-skatt": { + "account_number": "2518" + } + } + }, + "26 Moms och punktskatter": { + "is_group": 1, + "261 Utgående moms, 25 %": { + "is_group": 1, + "Utgående moms, 25 %": { + "account_number": "2610", + "account_type": "Tax", + "tax_rate": 25.0 + }, + "Utgående moms på försäljning inom Sverige, 25 %": { + "account_number": "2611", + "account_type": "Tax", + "tax_rate": 25.0 + }, + "Utgående moms på egna uttag, 25 %": { + "account_number": "2612", + "account_type": "Tax", + "tax_rate": 25.0 + }, + "Utgående moms för uthyrning, 25 %": { + "account_number": "2613", + "account_type": "Tax", + "tax_rate": 25.0 + }, + "Utgående moms omvänd skattskyldighet, 25 %": { + "account_number": "2614", + "account_type": "Tax", + "tax_rate": 25.0 + }, + "Utgående moms import av varor, 25 %": { + "account_number": "2615", + "account_type": "Tax", + "tax_rate": 25.0 + }, + "Utgående moms VMB 25 %": { + "account_number": "2616", + "account_type": "Tax", + "tax_rate": 25.0 + }, + "Vilande utgående moms, 25 %": { + "account_number": "2618", + "account_type": "Tax", + "tax_rate": 25.0 + } + }, + "262 Utgående moms, 12 %": { + "is_group": 1, + "Utgående moms, 12 %": { + "account_number": "2620", + "account_type": "Tax", + "tax_rate": 12.0 + }, + "Utgående moms på försäljning inom Sverige, 12 %": { + "account_number": "2621", + "account_type": "Tax", + "tax_rate": 12.0 + }, + "Utgående moms på egna uttag, 12 %": { + "account_number": "2622", + "account_type": "Tax", + "tax_rate": 12.0 + }, + "Utgående moms för uthyrning, 12 %": { + "account_number": "2623", + "account_type": "Tax", + "tax_rate": 12.0 + }, + "Utgående moms omvänd skattskyldighet, 12 %": { + "account_number": "2624", + "account_type": "Tax", + "tax_rate": 12.0 + }, + "Utgående moms import av varor, 12 %": { + "account_number": "2625", + "account_type": "Tax", + "tax_rate": 12.0 + }, + "Utgående moms VMB 12 %": { + "account_number": "2626", + "account_type": "Tax", + "tax_rate": 12.0 + }, + "Vilande utgående moms, 12 %": { + "account_number": "2628", + "account_type": "Tax", + "tax_rate": 12.0 + } + }, + "263 Utgående moms, 6 %": { + "is_group": 1, + "Utgående moms, 6 %": { + "account_number": "2630", + "account_type": "Tax", + "tax_rate": 6.0 + }, + "Utgående moms på försäljning inom Sverige, 6 %": { + "account_number": "2631", + "account_type": "Tax", + "tax_rate": 6.0 + }, + "Utgående moms på egna uttag, 6 %": { + "account_number": "2632", + "account_type": "Tax", + "tax_rate": 6.0 + }, + "Utgående moms för uthyrning, 6 %": { + "account_number": "2633", + "account_type": "Tax", + "tax_rate": 6.0 + }, + "Utgående moms omvänd skattskyldighet, 6 %": { + "account_number": "2634", + "account_type": "Tax", + "tax_rate": 6.0 + }, + "Utgående moms import av varor, 6 %": { + "account_number": "2635", + "account_type": "Tax", + "tax_rate": 6.0 + }, + "Utgående moms VMB 6 %": { + "account_number": "2636", + "account_type": "Tax", + "tax_rate": 6.0 + }, + "Vilande utgående moms, 6 %": { + "account_number": "2638", + "account_type": "Tax", + "tax_rate": 6.0 + } + }, + "264 Ingående moms": { + "is_group": 1, + "Ingående moms": { + "account_number": "2640", + "account_type": "Tax" + }, + "Debiterad ingående moms": { + "account_number": "2641", + "account_type": "Tax" + }, + "Debiterad ingående moms i anslutning till frivillig skattskyldighet": { + "account_number": "2642", + "account_type": "Tax" + }, + "Beräknad ingående moms på förvärv från utlandet": { + "account_number": "2645", + "account_type": "Tax" + }, + "Ingående moms på uthyrning": { + "account_number": "2646", + "account_type": "Tax" + }, + "Ingående moms omvänd skattskyldighet varor och tjänster i Sverige": { + "account_number": "2647", + "account_type": "Tax" + }, + "Vilande ingående moms": { + "account_number": "2648", + "account_type": "Tax" + }, + "Ingående moms, blandad verksamhet": { + "account_number": "2649", + "account_type": "Tax" + } + }, + "265 Redovisningskonto för moms": { + "is_group": 1, + "Redovisningskonto för moms": { + "account_number": "2650", + "account_type": "Tax" + } + }, + "266 Punktskatter": { + "is_group": 1, + "Punktskatter": { + "account_number": "2660", + "account_type": "Tax" + } + }, + "267 Utgående moms, OSS": { + "is_group": 1, + "Utgående moms på försäljning inom EU, OSS": { + "account_number": "2670", + "account_type": "Tax" + } + } + }, + "27 Personalens skatter, avgifter och löneavdrag": { + "is_group": 1, + "271 Personalskatt": { + "is_group": 1, + "Personalskatt": { + "account_number": "2710" + } + }, + "273 Lagstadgade sociala avgifter och särskild löneskatt": { + "is_group": 1, + "Lagstadgade sociala avgifter och särskild löneskatt": { + "account_number": "2730" + }, + "Avräkning lagstadgade sociala avgifter": { + "account_number": "2731" + }, + "Avräkning särskild löneskatt": { + "account_number": "2732" + } + }, + "274 Avtalade sociala avgifter": { + "is_group": 1, + "Avtalade sociala avgifter": { + "account_number": "2740" + } + }, + "275 Utmätning i lön m.m.": { + "is_group": 1, + "Utmätning i lön m.m.": { + "account_number": "2750" + } + }, + "276 Semestermedel": { + "is_group": 1, + "Semestermedel": { + "account_number": "2760" + }, + "Avräkning semesterlöner": { + "account_number": "2761" + }, + "Semesterlönekassa": { + "account_number": "2762" + } + }, + "279 Övriga löneavdrag": { + "is_group": 1, + "Övriga löneavdrag": { + "account_number": "2790" + }, + "Personalens intressekonto": { + "account_number": "2791" + }, + "Lönsparande": { + "account_number": "2792" + }, + "Gruppförsäkringspremier": { + "account_number": "2793" + }, + "Fackföreningsavgifter": { + "account_number": "2794" + }, + "Mätnings- och granskningsarvoden": { + "account_number": "2795" + }, + "Övriga löneavdrag övriga": { + "account_number": "2799" + } + } + }, + "28 Övriga kortfristiga skulder": { + "is_group": 1, + "281 Avräkning för factoring och belånade kontraktsfordringar": { + "is_group": 1, + "Avräkning för factoring och belånade kontraktsfordringar": { + "account_number": "2810" + }, + "Avräkning för factoring": { + "account_number": "2811" + }, + "Avräkning för belånade kontraktsfordringar": { + "account_number": "2812" + } + }, + "282 Kortfristiga skulder till anställda": { + "is_group": 1, + "Kortfristiga skulder till anställda": { + "account_number": "2820" + }, + "Löneskulder": { + "account_number": "2821" + }, + "Reseräkningar": { + "account_number": "2822" + }, + "Tantiem, gratifikationer": { + "account_number": "2823" + }, + "Övriga kortfristiga skulder till anställda": { + "account_number": "2829" + } + }, + "283 Avräkning för annans räkning": { + "is_group": 1, + "Avräkning för annans räkning": { + "account_number": "2830" + } + }, + "284 Kortfristiga låneskulder": { + "is_group": 1, + "Kortfristiga låneskulder": { + "account_number": "2840" + }, + "Kortfristig del av långfristiga skulder": { + "account_number": "2841" + }, + "Övriga kortfristiga låneskulder": { + "account_number": "2849" + } + }, + "285 Avräkning för skatter och avgifter (skattekonto)": { + "is_group": 1, + "Avräkning för skatter och avgifter (skattekonto)": { + "account_number": "2850" + }, + "Anståndsbelopp för moms, arbetsgivaravgifter och personalskatt": { + "account_number": "2852" + } + }, + "286 Kortfristiga skulder till koncernföretag": { + "is_group": 1, + "Kortfristiga skulder till koncernföretag": { + "account_number": "2860" + }, + "Kortfristiga skulder till moderföretag": { + "account_number": "2861" + }, + "Kortfristiga skulder till dotterföretag": { + "account_number": "2862" + }, + "Kortfristiga skulder till andra koncernföretag": { + "account_number": "2863" + } + }, + "287 Kortfristiga skulder till intresseföretag, gemensamt styrda företag": { + "is_group": 1, + "Kortfristiga skulder till intresseföretag, gemensamt styrda företag": { + "account_number": "2870" + }, + "Kortfristiga skulder till intresseföretag": { + "account_number": "2871" + }, + "Kortfristiga skulder till gemensamt styrda företag": { + "account_number": "2872" + }, + "Kortfristiga skulder till övriga företag": { + "account_number": "2873" + } + }, + "288 Skuld erhållna bidrag": { + "is_group": 1, + "Skuld erhållna bidrag": { + "account_number": "2880" + } + }, + "289 Övriga kortfristiga skulder": { + "is_group": 1, + "Övriga kortfristiga skulder": { + "account_number": "2890" + }, + "Skulder under indrivning": { + "account_number": "2891" + }, + "Inre reparationsfond/underhållsfond": { + "account_number": "2892" + }, + "Skulder till närstående personer, kortfristig del": { + "account_number": "2893" + }, + "Derivat (kortfristiga skulder)": { + "account_number": "2895" + }, + "Mottagna depositioner, kortfristiga": { + "account_number": "2897" + }, + "Outtagen vinstutdelning": { + "account_number": "2898" + }, + "Övriga kortfristiga skulder övriga": { + "account_number": "2899" + } + } + }, + "29 Upplupna kostnader och förutbetalda intäkter": { + "is_group": 1, + "291 Upplupna löner": { + "is_group": 1, + "Upplupna löner": { + "account_number": "2910" + }, + "Löneskulder": { + "account_number": "2911" + }, + "Ackordsöverskott": { + "account_number": "2912" + }, + "Övriga upplupna löner": { + "account_number": "2919" + } + }, + "292 Upplupna semesterlöner": { + "is_group": 1, + "Upplupna semesterlöner": { + "account_number": "2920" + } + }, + "293 Upplupna pensionskostnader": { + "is_group": 1, + "Upplupna pensionskostnader": { + "account_number": "2930" + }, + "Upplupna pensionsutbetalningar": { + "account_number": "2931" + } + }, + "294 Upplupna lagstadgade sociala och andra avgifter": { + "is_group": 1, + "Upplupna lagstadgade sociala och andra avgifter": { + "account_number": "2940" + }, + "Beräknade upplupna lagstadgade sociala avgifter": { + "account_number": "2941" + }, + "Beräknad upplupen särskild löneskatt": { + "account_number": "2942" + }, + "Beräknad upplupen särskild löneskatt på pensionskostnader, deklarationspost": { + "account_number": "2943" + }, + "Beräknad upplupen avkastningsskatt på pensionskostnader": { + "account_number": "2944" + } + }, + "295 Upplupna avtalade sociala avgifter": { + "is_group": 1, + "Upplupna avtalade sociala avgifter": { + "account_number": "2950" + }, + "Upplupna avtalade arbetsmarknadsförsäkringar": { + "account_number": "2951" + }, + "Upplupna avtalade pensionsförsäkringsavgifter, deklarationspost": { + "account_number": "2959" + } + }, + "296 Upplupna räntekostnader": { + "is_group": 1, + "Upplupna räntekostnader": { + "account_number": "2960" + } + }, + "297 Förutbetalda intäkter": { + "is_group": 1, + "Förutbetalda intäkter": { + "account_number": "2970" + }, + "Förutbetalda hyresintäkter": { + "account_number": "2971" + }, + "Förutbetalda medlemsavgifter": { + "account_number": "2972" + }, + "Övriga förutbetalda intäkter": { + "account_number": "2979" + } + }, + "298 Upplupna avtalskostnader": { + "is_group": 1, + "Upplupna avtalskostnader": { + "account_number": "2980" + } + }, + "299 Övriga upplupna kostnader och förutbetalda intäkter": { + "is_group": 1, + "Övriga upplupna kostnader och förutbetalda intäkter": { + "account_number": "2990" + }, + "Beräknat arvode för bokslut": { + "account_number": "2991" + }, + "Beräknat arvode för revision": { + "account_number": "2992" + }, + "Ospecificerad skuld till leverantörer": { + "account_number": "2993" + }, + "Ej ankomna leverantörsfakturor": { + "account_number": "2995" + }, + "Övriga upplupna kostnader och förutbetalda intäkter övriga": { + "account_number": "2998" + }, + "OBS-konto": { + "account_number": "2999" + } + } + } + }, + "3 Rörelsens inkomster/intäkter": { + "root_type": "Income", + "is_group": 1, + "30 Huvudintäkter": { + "account_type": "Income Account", + "is_group": 1, + "300 Försäljning inom Sverige": { + "is_group": 1, + "Försäljning inom Sverige": { + "account_number": "3000", + "account_type": "Income Account" + }, + "Försäljning inom Sverige, 25 % moms": { + "account_number": "3001" + }, + "Försäljning inom Sverige, 12 % moms": { + "account_number": "3002" + }, + "Försäljning inom Sverige, 6 % moms": { + "account_number": "3003" + }, + "Försäljning inom Sverige, momsfri": { + "account_number": "3004" + } + } + }, + "31 Huvudintäkter": { + "account_type": "Income Account", + "is_group": 1, + "310 Försäljning av varor utanför Sverige": { + "is_group": 1, + "Försäljning av varor utanför Sverige": { + "account_number": "3100" + }, + "Försäljning varor till land utanför EU": { + "account_number": "3105" + }, + "Försäljning varor till annat EU-land, momspliktig": { + "account_number": "3106" + }, + "Försäljning varor till annat EU-land, momsfri": { + "account_number": "3108" + } + } + }, + "32 Huvudintäkter": { + "account_type": "Income Account", + "is_group": 1, + "320 Försäljning VMB och omvänd moms": { + "account_type": "Income Account", + "is_group": 1, + "Försäljning VMB och omvänd moms.": { + "account_number": "3200" + } + }, + "321 Försäljning positiv VMB 25 %": { + "is_group": 1, + "Försäljning positiv VMB 25 %": { + + "account_number": "3211" + }, + "Försäljning negativ VMB 25 %": { + + "account_number": "3212" + } + }, + "323 Försäljning inom byggsektorn, omvänd skattskyldighet moms": { + "account_type": "Income Account", + "is_group": 1, + "Försäljning inom byggsektorn, omvänd skattskyldighet moms": { + "account_number": "3231" + } + } + }, + "33 Huvudintäkter": { + "account_type": "Income Account", + "is_group": 1, + "330 Försäljning av tjänster utanför Sverige": { + "is_group": 1, + "Försäljning av tjänster utanför Sverige": { + "account_number": "3300" + }, + "Försäljning tjänster till land utanför EU": { + "account_number": "3305" + }, + "Försäljning tjänster till annat EU-land": { + "account_type": "Income Account" + } + } + }, + "34 Huvudintäkter": { + "account_type": "Income Account", + "is_group": 1, + "340 Försäljning, egna uttag": { + "is_group": 1, + "Försäljning, egna uttag": { + "account_number": "3400" + }, + "Egna uttag momspliktiga, 25 %": { + "account_number": "3401" + }, + "Egna uttag momspliktiga, 12 %": { + "account_number": "3402" + }, + "Egna uttag momspliktiga, 6 %": { + "account_number": "3403" + }, + "Egna uttag, momsfria": { + "account_number": "3404" + } + } + }, + "35 Fakturerade kostnader": { + "is_group": 1, + "350 Fakturerade kostnader (gruppkonto)": { + "account_type": "Income Account", + "is_group": 1, + "Fakturerade kostnader (gruppkonto)": { + "account_number": "3500" + } + }, + "351 Fakturerat emballage": { + "is_group": 1, + "Fakturerat emballage": { + "account_type": "Income Account", + "account_number": "3510" + }, + "Fakturerat emballage.": { + "account_number": "3511" + }, + "Returnerat emballage": { + "account_number": "3518" + } + }, + "352 Fakturerade frakter": { + "is_group": 1, + "Fakturerade frakter": { + "account_type": "Income Account", + "account_number": "3520" + }, + "Fakturerade frakter, EU-land": { + "account_type": "Income Account", + "account_number": "3521" + }, + "Fakturerade frakter, export": { + "account_type": "Income Account", + "account_number": "3522" + } + }, + "353 Fakturerade tull- och speditionskostnader m.m.": { + "account_type": "Income Account", + "is_group": 1, + "Fakturerade tull- och speditionskostnader m.m.": { + "account_number": "3530" + } + }, + "354 Faktureringsavgifter": { + "account_type": "Income Account", + "is_group": 1, + "Faktureringsavgifter": { + "account_type": "Income Account", + "account_number": "3540" + }, + "Faktureringsavgifter, EU-land": { + "account_type": "Income Account", + "account_number": "3541" + }, + "Faktureringsavgifter, export": { + "account_type": "Income Account", + "account_number": "3542" + } + }, + "355 Fakturerade resekostnader": { + "account_type": "Income Account", + "is_group": 1, + "Fakturerade resekostnader": { + "account_number": "3550" + } + }, + "356 Fakturerade kostnader till koncernföretag": { + "account_type": "Income Account", + "is_group": 1, + "Fakturerade kostnader till koncernföretag": { + "account_number": "3560" + }, + "Fakturerade kostnader till moderföretag": { + "account_number": "3561" + }, + "Fakturerade kostnader till dotterföretag": { + "account_number": "3562" + }, + "Fakturerade kostnader till andra koncernföretag": { + "account_number": "3563" + } + }, + "357 Fakturerade kostnader till intresseföretag, gemensamt styrda företag och övriga företag": { + "account_type": "Income Account", + "is_group": 1, + "Fakturerade kostnader till intresseföretag, gemensamt styrda företag": { + "account_number": "3570" + } + }, + "359 Övriga fakturerade kostnader": { + "account_type": "Income Account", + "is_group": 1, + "Övriga fakturerade kostnader": { + "account_number": "3590" + } + } + }, + "36 Rörelsens sidointäkter": { + "is_group": 1, + "360 Rörelsens sidointäkter (gruppkonto)": { + "account_type": "Income Account", + "is_group": 1, + "Rörelsens sidointäkter (gruppkonto)": { + "account_number": "3600" + } + }, + "361 Försäljning av material": { + "is_group": 1, + "Försäljning av material": { + "account_number": "3610" + }, + "Försäljning av råmaterial": { + "account_number": "3611" + }, + "Försäljning av skrot": { + "account_number": "3612" + }, + "Försäljning av förbrukningsmaterial": { + "account_number": "3613" + }, + "Försäljning av övrigt material": { + "account_number": "3619" + } + }, + "362 Tillfällig uthyrning av personal": { + "account_type": "Income Account", + "is_group": 1, + "Tillfällig uthyrning av personal": { + "account_number": "3620" + } + }, + "363 Tillfällig uthyrning av transportmedel": { + "account_type": "Income Account", + "is_group": 1, + "Tillfällig uthyrning av transportmedel": { + "account_number": "3630" + } + }, + "367 Intäkter från värdepapper": { + "is_group": 1, + "Intäkter från värdepapper": { + "account_number": "3670" + }, + "Försäljning av värdepapper": { + "account_number": "3671" + }, + "Utdelning från värdepapper": { + "account_number": "3672" + }, + "Övriga intäkter från värdepapper": { + "account_number": "3679" + } + }, + "368 Management fees": { + "account_type": "Income Account", + "is_group": 1, + "Management fees": { + "account_number": "3680" + } + }, + "369 Övriga sidointäkter": { + "account_type": "Income Account", + "is_group": 1, + "Övriga sidointäkter": { + "account_number": "3690" + } + } + }, + "37 Intäktskorrigeringar": { + "is_group": 1, + "370 Intäktskorrigeringar (gruppkonto)": { + "account_type": "Income Account", + "is_group": 1, + "Intäktskorrigeringar (gruppkonto)": { + "account_number": "3700" + } + }, + "371 Ofördelade intäktsreduktioner": { + "is_group": 1, + "Ofördelade intäktsreduktioner": { + "account_number": "3710" + } + }, + "373 Lämnade rabatter": { + "is_group": 1, + "Lämnade rabatter": { + "account_number": "3730" + }, + "Lämnade kassarabatter": { + "account_number": "3731" + }, + "Lämnade mängdrabatter": { + "account_number": "3732" + } + }, + "374 Öres- och kronutjämning": { + "is_group": 1, + "Öres- och kronutjämning": { + "account_number": "3740", + "account_type": "Round Off" + } + }, + "375 Punktskatter": { + "is_group": 1, + "Punktskatter": { + "account_number": "3750" + }, + "Intäktsförda punktskatter (kreditkonto)": { + "account_number": "3751" + }, + "Skuldförda punktskatter (debetkonto)": { + "account_number": "3752" + } + }, + "379 Övriga intäktskorrigeringar": { + + "is_group": 1, + "Övriga intäktskorrigeringar": { + "account_number": "3790" + } + } + }, + "38 Aktiverat arbete för egen räkning": { + "is_group": 1, + "380 Aktiverat arbete för egen räkning (gruppkonto)": { + "account_type": "Income Account", + "is_group": 1, + "Aktiverat arbete för egen räkning (gruppkonto)": { + "account_number": "3800" + } + }, + "384 Aktiverat arbete (material)": { + "account_type": "Income Account", + "is_group": 1, + "Aktiverat arbete (material)": { + "account_number": "3840" + } + }, + "385 Aktiverat arbete (omkostnader)": { + "account_type": "Income Account", + "is_group": 1, + "Aktiverat arbete (omkostnader)": { + "account_number": "3850" + } + }, + "387 Aktiverat arbete (personal)": { + "account_type": "Income Account", + "is_group": 1, + "Aktiverat arbete (personal)": { + "account_number": "3870" + } + } + }, + "39 Övriga rörelseintäkter": { + "account_type": "Income Account", + "is_group": 1, + "390 Övriga rörelseintäkter (gruppkonto)": { + "account_type": "Income Account", + "is_group": 1, + "Övriga rörelseintäkter (gruppkonto)": { + "account_number": "3900" + } + }, + "391 Hyres- och arrendeintäkter": { + "is_group": 1, + "Hyres- och arrendeintäkter": { + "account_number": "3910" + }, + "Hyresintäkter": { + "account_number": "3911" + }, + "Arrendeintäkter": { + "account_number": "3912" + }, + "Frivilligt momspliktiga hyresintäkter": { + + "account_number": "3913" + }, + "Övriga momspliktiga hyresintäkter": { + "account_number": "3914" + } + }, + "392 Provisionsintäkter, licensintäkter och royalties": { + "is_group": 1, + "Provisionsintäkter, licensintäkter och royalties": { + "account_number": "3920" + }, + "Provisionsintäkter": { + "account_number": "3921" + }, + "Licensintäkter och royalties": { + "account_number": "3922" + }, + "Franchiseintäkter": { + "account_number": "3925" + } + }, + "394 Orealiserade negativa/positiva värdeförändringar på säkringsinstrument": { + "account_type": "Income Account", + "is_group": 1, + "Orealiserade negativa/positiva värdeförändringar på säkringsinstrument": { + "account_number": "3940" + } + }, + "395 Återvunna, tidigare avskrivna kundfordringar": { + "account_type": "Income Account", + "is_group": 1, + "Återvunna, tidigare avskrivna kundfordringar": { + "account_number": "3950" + } + }, + "396 Valutakursvinster på fordringar och skulder av rörelsekaraktär": { + "account_type": "Income Account", + "is_group": 1, + "Valutakursvinster på fordringar och skulder av rörelsekaraktär": { + "account_number": "3960" + } + }, + "397 Vinst vid avyttring av immateriella och materiella anläggningstillgångar": { + "is_group": 1, + "Vinst vid avyttring av immateriella och materiella anläggningstillgångar": { + + "account_number": "3970" + }, + "Vinst vid avyttring av immateriella anläggningstillgångar": { + "account_number": "3971" + }, + "Vinst vid avyttring av byggnader och mark": { + "account_number": "3972" + }, + "Vinst vid avyttring av maskiner och inventarier": { + "account_number": "3973" + } + }, + "398 Erhållna offentliga bidrag": { + "is_group": 1, + "Erhållna offentliga bidrag": { + + "account_number": "3980" + }, + "Erhållna EU-bidrag": { + "account_number": "3981" + }, + "Erhållna statliga bidrag": { + "account_number": "3985" + }, + "Erhållna kommunala bidrag": { + "account_number": "3987" + }, + "Erhållna offentliga bidrag för personal": { + "account_number": "3988" + }, + "Övriga erhållna offentliga bidrag": { + "account_number": "3989" + } + }, + "399 Övriga ersättningar, bidrag och intäkter": { + "is_group": 1, + "Övriga ersättningar, bidrag och intäkter": { + "account_number": "3990" + }, + "Konfliktersättning": { + "account_number": "3991" + }, + "Erhållna skadestånd": { + "account_number": "3992" + }, + "Erhållna donationer och gåvor": { + "account_number": "3993" + }, + "Försäkringsersättningar": { + "account_number": "3994" + }, + "Erhållet ackord på skulder av rörelsekaraktär": { + "account_number": "3995" + }, + "Erhållna reklambidrag": { + "account_number": "3996" + }, + "Sjuklöneersättning": { + "account_number": "3997" + }, + "Återbäring av överskott från försäkringsföretag": { + "account_number": "3998" + }, + "Övriga rörelseintäkter": { + "account_number": "3999" + } + } + } + }, + "4 Utgifter/kostnader för varor, material och vissa köpta tjänster": { + "root_type": "Expense", + "is_group": 1, + "40 Inköp av varor och material": { + "account_type": "Expense Account", + "is_group": 1, + "400 Inköp av varor från Sverige": { + "is_group": 1, + "Inköp av varor från Sverige": { + "account_number": "4000", + "account_type": "Expense Account" + } + } + }, + "41 Inköp av varor och material": { + "account_type": "Expense Account", + "is_group": 1, + "410 Inköp av varor från Sverige": { + "is_group": 1, + "Inköp av varor från Sverige": { + "account_number": "4100", + "account_type": "Expense Account" + } + } + }, + "42 Inköp av varor och material": { + "is_group": 1, + "420 Sålda varor VMB": { + "is_group": 1, + "Sålda varor VMB": { + "account_number": "4200", + "account_type": "Expense Account" + } + }, + "421 Sålda varor positiv VMB 25 %": { + "is_group": 1, + "Sålda varor positiv VMB 25 %": { + "account_number": "4211", + "account_type": "Expense Account" + }, + "Sålda varor negativ VMB 25 %": { + "account_number": "4212", + "account_type": "Expense Account" + } + } + }, + "43 Inköp av varor och material": { + "account_type": "Expense Account", + "is_group": 1, + "430 Inköp av varor från Sverige": { + "is_group": 1, + "Inköp av varor från Sverige": { + "account_number": "4300", + "account_type": "Expense Account" + } + } + }, + "44 Inköp av varor och material": { + "is_group": 1, + "440 Momspliktiga inköp i Sverige": { + "is_group": 1, + "Momspliktiga inköp i Sverige": { + "account_number": "4400", + "account_type": "Expense Account" + } + }, + "441 Inköpta varor i Sverige, omvänd skattskyldighet": { + "is_group": 1, + "Inköpta varor i Sverige, omvänd skattskyldighet, 25 % moms": { + "account_number": "4415", + "account_type": "Expense Account" + }, + "Inköpta varor i Sverige, omvänd skattskyldighet, 12 % moms": { + "account_number": "4416", + "account_type": "Expense Account" + }, + "Inköpta varor i Sverige, omvänd skattskyldighet, 6 % moms": { + "account_number": "4417", + "account_type": "Expense Account" + } + }, + "442 Inköpta tjänster i Sverige, omvänd skattskyldighet": { + "is_group": 1, + "Inköpta tjänster i Sverige, omvänd skattskyldighet, 25 % moms": { + "account_number": "4425", + "account_type": "Expense Account" + }, + "Inköpta tjänster i Sverige, omvänd skattskyldighet, 12 %": { + "account_number": "4426", + "account_type": "Expense Account" + }, + "Inköpta tjänster i Sverige, omvänd skattskyldighet, 6 %": { + "account_number": "4427", + "account_type": "Expense Account" + } + } + }, + "45 Inköp av varor och material": { + "is_group": 1, + "450 Övriga momspliktiga inköp": { + "is_group": 1, + "Övriga momspliktiga inköp": { + "account_number": "4500", + "account_type": "Expense Account" + } + }, + "451 Inköp av varor från annat EU-land": { + "is_group": 1, + "Inköp av varor från annat EU-land, 25 %": { + "account_number": "4515", + "account_type": "Expense Account" + }, + "Inköp av varor från annat EU-land, 12 %": { + "account_number": "4516", + "account_type": "Expense Account" + }, + "Inköp av varor från annat EU-land, 6 %": { + "account_number": "4517", + "account_type": "Expense Account" + }, + "Inköp av varor från annat EU-land, momsfri": { + "account_number": "4518", + "account_type": "Expense Account" + } + }, + "453 Inköp av tjänster från ett land utanför EU": { + "is_group": 1, + "Inköp av tjänster från ett land utanför EU, 25 % moms": { + "account_number": "4531", + "account_type": "Expense Account" + }, + "Inköp av tjänster från ett land utanför EU, 12 % moms": { + "account_number": "4532", + "account_type": "Expense Account" + }, + "Inköp av tjänster från ett land utanför EU, 6 % moms": { + "account_number": "4533", + "account_type": "Expense Account" + }, + "Inköp av tjänster från annat EU-land, 25 %": { + "account_number": "4535", + "account_type": "Expense Account" + }, + "Inköp av tjänster från annat EU-land, 12 %": { + "account_number": "4536", + "account_type": "Expense Account" + }, + "Inköp av tjänster från annat EU-land, 6 %": { + "account_number": "4537", + "account_type": "Expense Account" + }, + "Inköp av tjänster från annat EU-land, momsfri": { + "account_number": "4538", + "account_type": "Expense Account" + } + }, + "454 Import av varor": { + "is_group": 1, + "Import av varor, 25 % moms": { + "account_number": "4545", + "account_type": "Expense Account" + }, + "Import av varor, 12 % moms": { + "account_number": "4546", + "account_type": "Expense Account" + }, + "Import av varor, 6 % moms": { + "account_number": "4547", + "account_type": "Expense Account" + } + } + }, + "46 Legoarbeten, underentreprenader": { + "is_group": 1, + "460 Legoarbeten och underentreprenader (gruppkonto)": { + "is_group": 1, + "Legoarbeten och underentreprenader (gruppkonto)": { + "account_number": "4600", + "account_type": "Expense Account" + } + } + }, + "47 Reduktion av inköpspriser": { + "is_group": 1, + "470 Reduktion av inköpspriser (gruppkonto)": { + "account_type": "Expense Account", + "is_group": 1, + "Reduktion av inköpspriser (gruppkonto)": { + "account_number": "4700", + "account_type": "Expense Account" + } + }, + "473 Erhållna rabatter": { + "is_group": 1, + "Erhållna rabatter": { + "account_number": "4730" + }, + "Erhållna kassarabatter": { + "account_number": "4731" + }, + "Erhållna mängdrabatter (inkl. bonus)": { + "account_number": "4732" + }, + "Erhållet aktivitetsstöd": { + "account_number": "4733" + } + }, + "479 Övriga reduktioner av inköpspriser": { + "is_group": 1, + "Övriga reduktioner av inköpspriser": { + "account_number": "4790" + } + } + }, + "49 Förändring av lager, produkter i arbete och pågående arbeten": { + "is_group": 1, + "490 Förändring av lager (gruppkonto)": { + "is_group": 1, + "Förändring av lager (gruppkonto)": { + "account_number": "4900", + "account_type": "Stock Adjustment" + } + }, + "491 Förändring av lager av råvaror": { + "is_group": 1, + "Förändring av lager av råvaror": { + "account_number": "4910", + "account_type": "Expense Account" + } + }, + "492 Förändring av lager av tillsatsmaterial och förnödenheter": { + "is_group": 1, + "Förändring av lager av tillsatsmaterial och förnödenheter": { + "account_number": "4920", + "account_type": "Expense Account" + } + }, + "494 Förändring av produkter i arbete": { + "is_group": 1, + "Förändring av produkter i arbete": { + "account_number": "4940", + "account_type": "Expense Account" + }, + "Förändring av produkter i arbete, material och utlägg": { + "account_number": "4944" + }, + "Förändring av produkter i arbete, omkostnader": { + "account_number": "4945" + }, + "Förändring av produkter i arbete, personalkostnader": { + "account_number": "4947" + } + }, + "495 Förändring av lager av färdiga varor": { + "is_group": 1, + "Förändring av lager av färdiga varor": { + "account_number": "4950", + "account_type": "Expense Account" + } + }, + "496 Förändring av lager av handelsvaror": { + "is_group": 1, + "Förändring av lager av handelsvaror": { + "account_number": "4960", + "account_type": "Stock Adjustment" + } + }, + "497 Förändring av pågående arbeten, nedlagda kostnader": { + "is_group": 1, + "Förändring av pågående arbeten, nedlagda kostnader": { + "account_number": "4970", + "account_type": "Expense Account" + }, + "Förändring av pågående arbeten, material och utlägg": { + "account_number": "4974" + }, + "Förändring av pågående arbeten, omkostnader": { + "account_number": "4975" + }, + "Förändring av pågående arbeten, personalkostnader": { + "account_number": "4977" + } + }, + "498 Förändring av lager av värdepapper": { + "is_group": 1, + "Förändring av lager av värdepapper": { + "account_number": "4980" + }, + "Sålda värdepappers anskaffningsvärde": { + "account_number": "4981" + }, + "Nedskrivning av värdepapper": { + "account_number": "4987" + }, + "Återföring av nedskrivning av värdepapper": { + "account_number": "4988" + } + } + } + }, + "5 Övriga externa rörelseutgifter/kostnader": { + "root_type": "Expense", + "is_group": 1, + "50 Lokalkostnader": { + "is_group": 1, + "500 Lokalkostnader (gruppkonto)": { + "account_type": "Expense Account", + "is_group": 1, + "Lokalkostnader (gruppkonto)": { + "account_number": "5000" + } + }, + "501 Lokalhyra": { + "is_group": 1, + "Lokalhyra": { + "account_number": "5010", + "account_type": "Expense Account" + }, + "Hyra för kontorslokaler": { + "account_number": "5011" + }, + "Hyra för garage": { + "account_number": "5012" + }, + "Hyra för lagerlokaler": { + "account_number": "5013" + } + }, + "502 El för belysning": { + "is_group": 1, + "El för belysning": { + "account_number": "5020", + "account_type": "Expense Account" + } + }, + "503 Värme": { + "is_group": 1, + "Värme": { + "account_number": "5030", + "account_type": "Expense Account" + } + }, + "504 Vatten och avlopp": { + "is_group": 1, + "Vatten och avlopp": { + "account_number": "5040", + "account_type": "Expense Account" + } + }, + "505 Lokaltillbehör": { + "is_group": 1, + "Lokaltillbehör": { + "account_number": "5050", + "account_type": "Expense Account" + } + }, + "506 Städning och renhållning": { + "is_group": 1, + "Städning och renhållning": { + "account_number": "5060", + "account_type": "Expense Account" + }, + "Städning": { + "account_number": "5061" + }, + "Sophämtning": { + "account_number": "5062" + }, + "Hyra för sopcontainer": { + "account_number": "5063" + }, + "Snöröjning": { + "account_number": "5064" + }, + "Trädgårdsskötsel": { + "account_number": "5065" + } + }, + "507 Reparation och underhåll av lokaler": { + "is_group": 1, + "Reparation och underhåll av lokaler": { + "account_number": "5070", + "account_type": "Expense Account" + } + }, + "509 Övriga lokalkostnader": { + "account_type": "Expense Account", + "is_group": 1, + "Övriga lokalkostnader": { + "account_number": "5090" + }, + "Övriga lokalkostnader, avdragsgilla": { + "account_number": "5098" + }, + "Övriga lokalkostnader, ej avdragsgilla": { + "account_number": "5099" + } + } + }, + "51 Fastighetskostnader": { + "is_group": 1, + "510 Fastighetskostnader (gruppkonto)": { + "account_type": "Expense Account", + "is_group": 1, + "Fastighetskostnader (gruppkonto)": { + "account_number": "5100" + } + }, + "511 Tomträttsavgäld/arrende": { + "account_type": "Expense Account", + "is_group": 1, + "Tomträttsavgäld/arrende": { + "account_number": "5110" + } + }, + "512 El för belysning": { + "is_group": 1, + "El för belysning": { + "account_number": "5120", + "account_type": "Expense Account" + } + }, + "513 Värme": { + "is_group": 1, + "Värme": { + "account_number": "5130", + "account_type": "Expense Account" + }, + "Uppvärmninig": { + "account_number": "5131", + "account_type": "Expense Account" + }, + "Sotning": { + "account_number": "5132", + "account_type": "Expense Account" + } + }, + "514 Vatten och avlopp": { + "is_group": 1, + "Vatten och avlopp": { + "account_number": "5140", + "account_type": "Expense Account" + } + }, + "516 Städning och renhållning": { + "is_group": 1, + "Städning och renhållning": { + "account_number": "5160", + "account_type": "Expense Account" + }, + "Städning": { + "account_number": "5161" + }, + "Sophämtning": { + "account_number": "5162" + }, + "Hyra för sopcontainer": { + "account_number": "5163" + }, + "Snöröjning": { + "account_number": "5164" + }, + "Trädgårdsskötsel": { + "account_number": "5165" + } + }, + "517 Reparation och underhåll av fastighet": { + "is_group": 1, + "Reparation och underhåll av fastighet": { + "account_number": "5170", + "account_type": "Expense Account" + } + }, + "519 Övriga fastighetskostnader": { + "is_group": 1, + "Övriga fastighetskostnader": { + "account_number": "5190" + }, + "Fastighetsskatt/fastighetsavgift": { + "account_number": "5191" + }, + "Fastighetsförsäkringspremier": { + "account_number": "5192" + }, + "Fastighetsskötsel och förvaltning": { + "account_number": "5193" + }, + "Övriga fastighetskostnader, avdragsgilla": { + "account_number": "5198" + }, + "Övriga fastighetskostnader, ej avdragsgilla": { + "account_number": "5199" + } + } + }, + "52 Hyra av anläggningstillgångar": { + "is_group": 1, + "520 Hyra av anläggningstillgångar (gruppkonto)": { + "is_group": 1, + "Hyra av anläggningstillgångar (gruppkonto)": { + "account_number": "5200", + "account_type": "Expense Account" + } + }, + "521 Hyra av maskiner och andra tekniska anläggningar": { + "is_group": 1, + "Hyra av maskiner och andra tekniska anläggningar": { + "account_number": "5210", + "account_type": "Expense Account" + }, + "Korttidshyra av maskiner och andra tekniska anläggningar": { + "account_number": "5211", + "account_type": "Expense Account" + }, + "Leasing av maskiner och andra tekniska anläggningar": { + "account_number": "5212", + "account_type": "Expense Account" + } + }, + "522 Hyra av inventarier och verktyg": { + "is_group": 1, + "Hyra av inventarier och verktyg": { + "account_number": "5220" + }, + "Korttidshyra av inventarier och verktyg": { + "account_number": "5221" + }, + "Leasing av inventarier och verktyg": { + "account_number": "5222" + } + }, + "525 Hyra av datorer": { + "is_group": 1, + "Hyra av datorer": { + "account_number": "5250" + }, + "Korttidshyra av datorer": { + "account_number": "5251" + }, + "Leasing av datorer": { + "account_number": "5252" + } + }, + "529 Övriga hyreskostnader för anläggningstillgångar": { + "account_type": "Expense Account", + "is_group": 1, + "Övriga hyreskostnader för anläggningstillgångar": { + "account_number": "5290" + } + } + }, + "53 Energikostnader": { + "is_group": 1, + "530 Energikostnader (gruppkonto)": { + "is_group": 1, + "Energikostnader (gruppkonto)": { + "account_number": "5300", + "account_type": "Expense Account" + } + }, + "531 El för drift": { + "account_type": "Expense Account", + "is_group": 1, + "El för drift": { + "account_number": "5310" + } + }, + "532 Gas": { + "account_type": "Expense Account", + "is_group": 1, + "Gas": { + "account_number": "5320" + } + }, + "533 Eldningsolja": { + "account_type": "Expense Account", + "is_group": 1, + "Eldningsolja": { + "account_number": "5330" + } + }, + "534 Stenkol och koks": { + "account_type": "Expense Account", + "is_group": 1, + "Stenkol och koks": { + "account_number": "5340" + } + }, + "535 Torv, träkol, ved och annat träbränsle": { + "account_type": "Expense Account", + "is_group": 1, + "Torv, träkol, ved och annat träbränsle": { + "account_number": "5350" + } + }, + "536 Bensin, fotogen och motorbrännolja": { + "account_type": "Expense Account", + "is_group": 1, + "Bensin, fotogen och motorbrännolja": { + "account_number": "5360" + } + }, + "537 Fjärrvärme, kyla och ånga": { + "account_type": "Expense Account", + "is_group": 1, + "Fjärrvärme, kyla och ånga": { + "account_number": "5370" + } + }, + "538 Vatten": { + "account_type": "Expense Account", + "is_group": 1, + "Vatten": { + "account_number": "5380" + } + }, + "539 Övriga energikostnader": { + "account_type": "Expense Account", + "is_group": 1, + "Övriga energikostnader": { + "account_number": "5390" + } + } + }, + "54 Förbrukningsinventarier och förbrukningsmaterial": { + "is_group": 1, + "540 Förbrukningsinventarier och förbrukningsmaterial": { + "is_group": 1, + "Förbrukningsinventarier och förbrukningsmaterial": { + "account_number": "5400" + } + }, + "541 Förbrukningsinventarier": { + "is_group": 1, + "Förbrukningsinventarier": { + "account_number": "5410", + "account_type": "Expense Account" + }, + "Förbrukningsinventarier med en livslängd på mer än ett år": { + "account_number": "5411", + "account_type": "Expense Account" + }, + "Förbrukningsinventarier med en livslängd på ett år eller mindre": { + "account_number": "5412", + "account_type": "Expense Account" + } + }, + "542 Programvaror": { + "is_group": 1, + "Programvaror": { + "account_number": "5420", + "account_type": "Expense Account" + } + }, + "543 Transportinventarier": { + "account_type": "Expense Account", + "is_group": 1, + "Transportinventarier": { + "account_number": "5430" + } + }, + "544 Förbrukningsemballage": { + "account_type": "Expense Account", + "is_group": 1, + "Förbrukningsemballage": { + "account_number": "5440" + } + }, + "546 Förbrukningsmaterial": { + "is_group": 1, + "BFörbrukningsmaterial": { + "account_number": "5460", + "account_type": "Expense Account" + } + }, + "548 Arbetskläder och skyddsmaterial": { + "account_type": "Expense Account", + "is_group": 1, + "Arbetskläder och skyddsmaterial": { + "account_number": "5480" + } + }, + "549 Övriga förbrukningsinventarier och förbrukningsmaterial": { + "account_type": "Expense Account", + "is_group": 1, + "Övriga förbrukningsinventarier och förbrukningsmaterial": { + "account_number": "5490" + }, + "Övriga förbrukningsinventarier med en livslängd på mer än ett år": { + "account_number": "5491" + }, + "Övriga förbrukningsinventarier med en livslängd på ett år eller mindre": { + "account_number": "5492" + }, + "Övrigt förbrukningsmaterial": { + "account_number": "5493" + } + } + }, + "55 Reparation och underhåll": { + "account_type": "Expense Account", + "is_group": 1, + "550 Reparation och underhåll (gruppkonto)": { + "is_group": 1, + "Reparation och underhåll (gruppkonto)": { + "account_number": "5500", + "account_type": "Expense Account" + } + }, + "551 Reparation och underhåll av maskiner och andra tekniska anläggningar": { + "account_type": "Expense Account", + "is_group": 1, + "Reparation och underhåll av maskiner och andra tekniska anläggningar": { + "account_number": "5510" + } + }, + "552 Reparation och underhåll av inventarier, verktyg och datorer m.m.": { + "account_type": "Expense Account", + "is_group": 1, + "Reparation och underhåll av inventarier, verktyg och datorer m.m.": { + "account_number": "5520" + } + }, + "553 Reparation och underhåll av installationer": { + "account_type": "Expense Account", + "is_group": 1, + "Reparation och underhåll av installationer": { + "account_number": "5530" + } + }, + "555 Reparation och underhåll av förbrukningsinventarier": { + "account_type": "Expense Account", + "is_group": 1, + "Reparation och underhåll av förbrukningsinventarier": { + "account_number": "5550" + } + }, + "558 Underhåll och tvätt av arbetskläder": { + "account_type": "Expense Account", + "is_group": 1, + "Underhåll och tvätt av arbetskläder": { + "account_number": "5580" + } + }, + "559 Övriga kostnader för reparation och underhåll": { + "account_type": "Expense Account", + "is_group": 1, + "Övriga kostnader för reparation och underhåll": { + "account_number": "5590" + } + } + }, + "56 Kostnader för transportmedel": { + "is_group": 1, + "560 Kostnader för transportmedel (gruppkonto)": { + "is_group": 1, + "Kostnader för transportmedel (gruppkonto)": { + "account_number": "5600", + "account_type": "Expense Account" + } + }, + "561 Personbilskostnader": { + "is_group": 1, + "Personbilskostnader": { + "account_number": "5610", + "account_type": "Expense Account" + }, + "Drivmedel för personbilar": { + "account_number": "5611", + "account_type": "Expense Account" + }, + "Försäkring och skatt för personbilar": { + "account_number": "5612", + "account_type": "Expense Account" + }, + "Reparation och underhåll av personbilar": { + "account_number": "5613", + "account_type": "Expense Account" + }, + "Leasing av personbilar": { + "account_number": "5615", + "account_type": "Expense Account" + }, + "Trängselskatt, avdragsgill": { + "account_number": "5616", + "account_type": "Expense Account" + }, + "Övriga personbilskostnader": { + "account_number": "5619", + "account_type": "Expense Account" + } + }, + "562 Lastbilkostnader": { + "account_type": "Expense Account", + "is_group": 1, + "Lastbilkostnader": { + "account_number": "5620" + } + }, + "563 Truckkostnader": { + "account_type": "Expense Account", + "is_group": 1, + "Truckkostnader": { + "account_number": "5630" + } + }, + "564 Kostnader för arbetsmaskiner": { + "account_type": "Expense Account", + "is_group": 1, + "Kostnader för arbetsmaskiner": { + "account_number": "5640" + } + }, + "565 Traktorkostnader": { + "account_type": "Expense Account", + "is_group": 1, + "Traktorkostnader": { + "account_number": "5650" + } + }, + "566 Motorcykel-, moped- och skoterkostnade": { + "account_type": "Expense Account", + "is_group": 1, + "Motorcykel-, moped- och skoterkostnade": { + "account_number": "5660" + } + }, + "567 Båt-, flygplans- och helikopterkostnader": { + "account_type": "Expense Account", + "is_group": 1, + "MBåt-, flygplans- och helikopterkostnader": { + "account_number": "5670" + } + }, + "569 Övriga kostnader för transportmedel": { + "account_type": "Expense Account", + "is_group": 1, + "Övriga kostnader för transportmedel": { + "account_number": "5690" + } + } + }, + "57 Frakter och transporter": { + "account_type": "Expense Account", + "is_group": 1, + "570 Frakter och transporter (gruppkonto)": { + "is_group": 1, + "Frakter och transporter (gruppkonto)": { + "account_number": "5700", + "account_type": "Expense Account" + } + }, + "571 Frakter, transporter och försäkringar vid varudistribution": { + "is_group": 1, + "Frakter, transporter och försäkringar vid varudistribution": { + "account_number": "5710" + } + }, + "572 Tull- och speditionskostnader m.m.": { + "is_group": 1, + "Tull- och speditionskostnader m.m.": { + "account_number": "5720" + } + }, + "573 Arbetstransporter": { + "is_group": 1, + "Arbetstransporter": { + "account_number": "5730" + } + }, + "579 Övriga kostnader för frakter och transporter": { + "is_group": 1, + "Övriga kostnader för frakter och transporter": { + "account_number": "5790" + } + } + }, + "58 Resekostnader": { + "account_type": "Expense Account", + "is_group": 1, + "580 Resekostnader (gruppkonto)": { + "is_group": 1, + "Resekostnader (gruppkonto)": { + "account_number": "5800", + "account_type": "Expense Account" + } + }, + "581 Biljetter": { + "is_group": 1, + "Biljetter": { + "account_number": "5810", + "account_type": "Expense Account" + } + }, + "582 Hyrbilskostnader": { + "is_group": 1, + "Hyrbilskostnader": { + "account_number": "5820", + "account_type": "Expense Account" + } + }, + "583 Kost och logi": { + "is_group": 1, + "Kost och logi": { + "account_number": "5830" + }, + "Kost och logi i Sverige": { + "account_number": "5831", + "account_type": "Expense Account" + }, + "Kost och logi i utlandet": { + "account_number": "5832", + "account_type": "Expense Account" + } + }, + "589 Övriga resekostnader": { + "is_group": 1, + "Övriga resekostnader": { + "account_number": "5890" + } + } + }, + "59 Reklam och PR": { + "account_type": "Expense Account", + "is_group": 1, + "590 Reklam och PR (gruppkonto)": { + "is_group": 1, + "Reklam och PR (gruppkonto)": { + "account_number": "5900", + "account_type": "Expense Account" + } + }, + "591 Annonsering": { + "account_type": "Expense Account", + "is_group": 1, + "Annonsering": { + "account_number": "5910" + } + }, + "592 Utomhus- och trafikreklam": { + "account_type": "Expense Account", + "is_group": 1, + "Utomhus- och trafikreklam": { + "account_number": "5920" + } + }, + "593 Reklamtrycksaker och direktreklam": { + "account_type": "Expense Account", + "is_group": 1, + "Reklamtrycksaker och direktreklam": { + "account_number": "5930" + } + }, + "594 Utställningar och mässor": { + "account_type": "Expense Account", + "is_group": 1, + "Utställningar och mässor": { + "account_number": "5940" + } + }, + "595 Butiksreklam och återförsäljarreklam": { + "account_type": "Expense Account", + "is_group": 1, + "Butiksreklam och återförsäljarreklam": { + "account_number": "5950" + } + }, + "596 Varuprover, reklamgåvor, presentreklam och tävlingar": { + "account_type": "Expense Account", + "is_group": 1, + "Varuprover, reklamgåvor, presentreklam och tävlingar": { + "account_number": "5960" + } + }, + "597 Film-, radio-, TV- och Internetreklam": { + "account_type": "Expense Account", + "is_group": 1, + "Film-, radio-, TV- och Internetreklam": { + "account_number": "5970" + } + }, + "598 PR, institutionell reklam och sponsring": { + "account_type": "Expense Account", + "is_group": 1, + "PR, institutionell reklam och sponsring": { + "account_number": "5980" + } + }, + "599 Övriga kostnader för reklam och PR": { + "account_type": "Expense Account", + "is_group": 1, + "Övriga kostnader för reklam och PR": { + "account_number": "5990" + } + } + } + }, + "6 Övriga externa rörelseutgifter/kostnader": { + "root_type": "Expense", + "is_group": 1, + "60 Övriga försäljningskostnader": { + "is_group": 1, + "600 Övriga försäljningskostnader (gruppkonto)": { + "account_type": "Expense Account", + "is_group": 1, + "Övriga försäljningskostnader (gruppkonto)": { + "account_number": "6000" + } + }, + "601 Kataloger, prislistor m.m.": { + "account_type": "Expense Account", + "is_group": 1, + "Kataloger, prislistor m.m.": { + "account_number": "6010" + } + }, + "602 Egna facktidskrifter": { + "account_type": "Expense Account", + "is_group": 1, + "Egna facktidskrifter": { + "account_number": "6020" + } + }, + "603 Speciella orderkostnader": { + "account_type": "Expense Account", + "is_group": 1, + "Speciella orderkostnader": { + "account_number": "6030" + } + }, + "604 Kontokortsavgifter": { + "account_type": "Expense Account", + "is_group": 1, + "Kontokortsavgifter": { + "account_number": "6040" + } + }, + "605 Försäljningsprovisioner": { + "is_group": 1, + "Försäljningsprovisioner": { + "account_number": "6050" + }, + "Franchisekostnader o.dyl.": { + "account_number": "6055" + } + }, + "606 Kreditförsäljningskostnader": { + "is_group": 1, + "Kreditförsäljningskostnader": { + "account_number": "6060" + }, + "Kreditupplysning": { + "account_number": "6061" + }, + "Inkasso och KFM-avgifter": { + "account_number": "6062" + }, + "Kreditförsäkringspremier": { + "account_number": "6063" + }, + "Factoringavgifter": { + "account_number": "6064" + }, + "Övriga kreditförsäljningskostnader": { + "account_number": "6069" + } + }, + "607 Representation": { + "is_group": 1, + "Representation": { + "account_number": "6070" + }, + "Representation, avdragsgill": { + "account_number": "6071", + "account_type": "Expense Account" + }, + "Representation, ej avdragsgill": { + "account_number": "6072", + "account_type": "Expense Account" + } + }, + "608 Bankgarantier": { + "account_type": "Expense Account", + "is_group": 1, + "Bankgarantier": { + "account_number": "6080" + } + }, + "609 Övriga försäljningskostnader": { + "is_group": 1, + "Övriga försäljningskostnader": { + "account_number": "6090", + "account_type": "Expense Account" + } + } + }, + "61 Kontorsmateriel och trycksaker": { + "is_group": 1, + "610 Kontorsmateriel och trycksaker (gruppkonto)": { + "is_group": 1, + "Kontorsmateriel och trycksaker (gruppkonto)": { + "account_number": "6100", + "account_type": "Expense Account" + } + }, + "611 Kontorsmateriel": { + "account_type": "Expense Account", + "is_group": 1, + "Kontorsmateriel": { + "account_number": "6110" + } + }, + "615 Trycksaker": { + "account_type": "Expense Account", + "is_group": 1, + "Trycksaker": { + "account_number": "6150" + } + } + }, + "62 Tele och post": { + "is_group": 1, + "620 Tele och post (gruppkonto)": { + "account_type": "Expense Account", + "is_group": 1, + "Tele och post (gruppkonto)": { + "account_number": "6200" + } + }, + "621 Telekommunikation": { + "account_type": "Expense Account", + "is_group": 1, + "Telekommunikation": { + "account_number": "6210", + "account_type": "Expense Account" + }, + "Fast telefoni": { + "account_number": "6211", + "account_type": "Expense Account" + }, + "Mobiltelefon": { + "account_number": "6212", + "account_type": "Expense Account" + }, + "Mobilsökning": { + "account_number": "6213", + "account_type": "Expense Account" + }, + "Fax": { + "account_number": "6214", + "account_type": "Expense Account" + }, + "Telex": { + "account_number": "6215", + "account_type": "Expense Account" + } + }, + "623 Datakommunikation": { + "account_type": "Expense Account", + "is_group": 1, + "Datakommunikation": { + "account_number": "6230" + } + }, + "625 Postbefordran": { + "is_group": 1, + "Postbefordran": { + "account_number": "6250", + "account_type": "Expense Account" + } + } + }, + "63 Företagsförsäkringar och övriga riskkostnader": { + "is_group": 1, + "630 Företagsförsäkringar och övriga riskkostnader (gruppkonto)": { + "account_type": "Expense Account", + "is_group": 1, + "Företagsförsäkringar och övriga riskkostnader (gruppkonto)": { + "account_number": "6300" + } + }, + "631 Företagsförsäkringar": { + "is_group": 1, + "Företagsförsäkringar": { + "account_number": "6310", + "account_type": "Expense Account" + } + }, + "632 Självrisker vid skada": { + "account_type": "Expense Account", + "is_group": 1, + "Självrisker vid skada": { + "account_number": "6320" + } + }, + "633 Förluster i pågående arbeten": { + "account_type": "Expense Account", + "is_group": 1, + "Förluster i pågående arbeten": { + "account_number": "6330" + } + }, + "634 Lämnade skadestånd": { + "is_group": 1, + "Lämnade skadestånd": { + "account_number": "6340" + }, + "Lämnade skadestånd, avdragsgilla": { + "account_number": "6341" + }, + "Lämnade skadestånd, ej avdragsgilla": { + "account_number": "6342" + } + }, + "635 Förluster på kundfordringar": { + "account_type": "Expense Account", + "is_group": 1, + "Förluster på kundfordringar": { + "account_number": "6350", + "account_type": "Expense Account" + }, + "Konstaterade förluster på kundfordringar": { + "account_number": "6351", + "account_type": "Expense Account" + }, + "Befarade förluster på kundfordringar": { + "account_number": "6352", + "account_type": "Expense Account" + } + }, + "636 Garantikostnader": { + "account_type": "Expense Account", + "is_group": 1, + "Garantikostnader": { + "account_number": "6360" + }, + "Förändring av garantiavsättning": { + "account_number": "6361" + }, + "Faktiska garantikostnader": { + "account_number": "6362" + } + }, + "637 Kostnader för bevakning och larm": { + "account_type": "Expense Account", + "is_group": 1, + "Kostnader för bevakning och larm": { + "account_number": "6370" + } + }, + "638 Förluster på övriga kortfristiga fordringar": { + "account_type": "Expense Account", + "is_group": 1, + "Förluster på övriga kortfristiga fordringar": { + "account_number": "6380" + } + }, + "639 Övriga riskkostnader": { + "is_group": 1, + "Övriga riskkostnader": { + "account_number": "6390", + "account_type": "Expense Account" + } + } + }, + "64 Förvaltningskostnader": { + "is_group": 1, + "640 Förvaltningskostnader (gruppkonto)": { + "account_type": "Expense Account", + "is_group": 1, + "Förvaltningskostnader (gruppkonto)": { + "account_number": "6400" + } + }, + "641 Styrelsearvoden som inte är lön": { + "is_group": 1, + "Styrelsearvoden som inte är lön": { + "account_number": "6410", + "account_type": "Expense Account" + } + }, + "642 Ersättningar till revisor": { + "account_type": "Expense Account", + "is_group": 1, + "Ersättningar till revisor": { + "account_number": "6420", + "account_type": "Expense Account" + }, + "Revision": { + "account_number": "6421", + "account_type": "Expense Account" + }, + "Revisonsverksamhet utöver revision": { + "account_number": "6422", + "account_type": "Expense Account" + }, + "Skatterådgivning – revisor": { + "account_number": "6423", + "account_type": "Expense Account" + }, + "Övriga tjänster – revisor": { + "account_number": "6424", + "account_type": "Expense Account" + } + }, + "643 Management fees": { + "account_type": "Expense Account", + "is_group": 1, + "Management fees": { + "account_number": "6430" + } + }, + "644 Årsredovisning och delårsrapporter": { + "account_type": "Expense Account", + "is_group": 1, + "Årsredovisning och delårsrapporter": { + "account_number": "6440" + } + }, + "645 Bolagsstämma/års- eller föreningsstämma": { + "account_type": "Expense Account", + "is_group": 1, + "Bolagsstämma/års- eller föreningsstämma": { + "account_number": "6450" + } + }, + "649 Övriga förvaltningskostnader": { + "account_type": "Expense Account", + "is_group": 1, + "Övriga förvaltningskostnader": { + "account_number": "6490" + } + } + }, + "65 Övriga externa tjänster": { + "is_group": 1, + "650 Övriga externa tjänster (gruppkonto)": { + "account_type": "Expense Account", + "is_group": 1, + "Övriga externa tjänster (gruppkonto)": { + "account_number": "6500" + } + }, + "651 Mätningskostnader": { + "account_type": "Expense Account", + "is_group": 1, + "Mätningskostnader": { + "account_number": "6510" + } + }, + "652 Ritnings- och kopieringskostnader": { + "account_type": "Expense Account", + "is_group": 1, + "Ritnings- och kopieringskostnader": { + "account_number": "6520" + } + }, + "653 Redovisningstjänster": { + "is_group": 1, + "Redovisningstjänster": { + "account_number": "6530", + "account_type": "Expense Account" + } + }, + "654 IT-tjänster": { + "is_group": 1, + "IT-tjänster": { + "account_number": "6540", + "account_type": "Expense Account" + } + }, + "655 Konsultarvoden": { + "account_type": "Expense Account", + "is_group": 1, + "Konsultarvoden": { + "account_number": "6550", + "account_type": "Expense Account" + }, + "Arkitekttjänster": { + "account_number": "6551", + "account_type": "Expense Account" + }, + "Teknisk provning och analys": { + "account_number": "6552", + "account_type": "Expense Account" + }, + "Tekniska konsulttjänster": { + "account_number": "6553", + "account_type": "Expense Account" + }, + "Finansiell- och övrig ekonomisk rådgivning": { + "account_number": "6554", + "account_type": "Expense Account" + }, + "Skatterådgivning inkl. insolvens- och konkursförvaltning": { + "account_number": "6555", + "account_type": "Expense Account" + }, + "Köpta tjänster avseende forskning och utveckling": { + "account_number": "6556", + "account_type": "Expense Account" + }, + "Övrig konsultverksamhet": { + "account_number": "6559", + "account_type": "Expense Account" + } + }, + "656 Serviceavgifter till branschorganisationer": { + "is_group": 1, + "Serviceavgifter till branschorganisationer": { + "account_number": "6560", + "account_type": "Expense Account" + } + }, + "657 Bankkostnader": { + "is_group": 1, + "Bankkostnader": { + "account_number": "6570", + "account_type": "Expense Account" + } + }, + "658 Advokat- och rättegångskostnader": { + "account_type": "Expense Account", + "is_group": 1, + "Advokat- och rättegångskostnader": { + "account_number": "6580" + } + }, + "659 Övriga externa tjänster": { + "is_group": 1, + "Övriga externa tjänster": { + "account_number": "6590", + "account_type": "Expense Account" + } + } + }, + "66 (Fri kontogrupp)": { + "account_type": "Expense Account", + "is_group": 1, + "660 (Fri kontogrupp)": { + "account_type": "Expense Account", + "is_group": 1, + "(Fri kontogrupp)": { + "account_number": "6600" + } + } + }, + "67 (Fri kontogrupp)": { + "account_type": "Expense Account", + "is_group": 1, + "670 (Fri kontogrupp)": { + "account_type": "Expense Account", + "is_group": 1, + "(Fri kontogrupp)": { + "account_number": "6700" + } + } + }, + "68 Inhyrd personal": { + "is_group": 1, + "680 Inhyrd personal (gruppkonto)": { + "is_group": 1, + "Inhyrd personal (gruppkonto)": { + "account_number": "6800", + "account_type": "Expense Account" + } + }, + "681 Inhyrd produktionspersonal": { + "account_type": "Expense Account", + "is_group": 1, + "Inhyrd produktionspersonal": { + "account_number": "6810" + } + }, + "682 Inhyrd lagerpersonal": { + "account_type": "Expense Account", + "is_group": 1, + "Inhyrd lagerpersonal": { + "account_number": "6820" + } + }, + "683 Inhyrd transportpersonal": { + "account_type": "Expense Account", + "is_group": 1, + "Inhyrd transportpersonal": { + "account_number": "6830" + } + }, + "684 Inhyrd kontors- och ekonomipersonal": { + "account_type": "Expense Account", + "is_group": 1, + "Inhyrd kontors- och ekonomipersonal": { + "account_number": "6840" + } + }, + "685 Inhyrd IT-personal": { + "account_type": "Expense Account", + "is_group": 1, + "Inhyrd IT-personal": { + "account_number": "6850" + } + }, + "686 Inhyrd marknads- och försäljningspersonal": { + "account_type": "Expense Account", + "is_group": 1, + "Inhyrd marknads- och försäljningspersonal": { + "account_number": "6860" + } + }, + "687 Inhyrd restaurang- och butikspersonal": { + "account_type": "Expense Account", + "is_group": 1, + "Inhyrd restaurang- och butikspersonal": { + "account_number": "6870" + } + }, + "688 Inhyrda företagsledare": { + "account_type": "Expense Account", + "is_group": 1, + "Inhyrda företagsledare": { + "account_number": "6880" + } + }, + "689 Övrig inhyrd personal": { + "account_type": "Expense Account", + "is_group": 1, + "Övrig inhyrd personal": { + "account_number": "6890" + } + } + }, + "69 Övriga externa kostnader": { + "is_group": 1, + "690 Övriga externa kostnader (gruppkonto)": { + "account_type": "Expense Account", + "is_group": 1, + "Övriga externa kostnader (gruppkonto)": { + "account_number": "6900" + } + }, + "691 Licensavgifter och royalties": { + "account_type": "Expense Account", + "is_group": 1, + "Licensavgifter och royalties": { + "account_number": "6910" + } + }, + "692 Kostnader för egna patent": { + "account_type": "Expense Account", + "is_group": 1, + "Kostnader för egna patent": { + "account_number": "6920" + } + }, + "693 Kostnader för varumärken m.m.": { + "account_type": "Expense Account", + "is_group": 1, + "Kostnader för varumärken m.m.": { + "account_number": "6930" + } + }, + "694 Kontroll-, provnings- och stämpelavgifter": { + "account_type": "Expense Account", + "is_group": 1, + "Kontroll-, provnings- och stämpelavgifter": { + "account_number": "6940" + } + }, + "695 Tillsynsavgifter myndigheter": { + "account_type": "Expense Account", + "is_group": 1, + "Tillsynsavgifter myndigheter": { + "account_number": "6950" + } + }, + "697 Tidningar, tidskrifter och facklitteratur": { + "is_group": 1, + "Tidningar, tidskrifter och facklitteratur": { + "account_number": "6970", + "account_type": "Expense Account" + } + }, + "698 Föreningsavgifter": { + "is_group": 1, + "Föreningsavgifter": { + "account_number": "6980", + "account_type": "Expense Account" + }, + "Föreningsavgifter, avdragsgilla": { + "account_number": "6981" + }, + "Föreningsavgifter,ej avdragsgilla": { + "account_number": "6982" + } + }, + "699 Övriga externa kostnader": { + "is_group": 1, + "Övriga externa kostnader": { + "account_number": "6990" + }, + "Övriga externa kostnader, avdragsgilla": { + "account_number": "6991", + "account_type": "Expense Account" + }, + "Övriga externa kostnader, ej avdragsgilla": { + "account_number": "6992", + "account_type": "Expense Account" + }, + "Lämnade bidrag och gåvor": { + "account_number": "6993" + }, + "Betald utländsk inkomstskatt": { + "account_number": "6996" + }, + "Obetald utländsk inkomstskatt": { + "account_number": "6997" + }, + "Utländsk moms": { + "account_number": "6998" + }, + "Ingående moms, blandad verksamhet": { + "account_number": "6999" + } + } + } + }, + "7 Utgifter/kostnader för personal, avskrivningar m.m.": { + "root_type": "Expense", + "is_group": 1, + "70 Löner till kollektivanställda": { + "is_group": 1, + "700 Löner till kollektivanställda (gruppkonto)": { + "account_type": "Expense Account", + "is_group": 1, + "Löner till kollektivanställda (gruppkonto)": { + "account_number": "7000" + } + }, + "701 Löner till kollektivanställda": { + "is_group": 1, + "Löner till kollektivanställda": { + "account_number": "7010", + "account_type": "Expense Account" + }, + "Löner till kollektivanställda övriga": { + "account_number": "7011", + "account_type": "Expense Account" + }, + "Vinstandelar till kollektivanställda": { + "account_number": "7012" + }, + "Lön växa-stöd kollektivanställda 10,21 %": { + "account_number": "7013" + }, + "Avgångsvederlag till kollektivanställda": { + "account_number": "7017" + }, + "Bruttolöneavdrag, kollektivanställda": { + "account_number": "7018" + }, + "Upplupna löner och vinstandelar till kollektivanställda": { + "account_number": "7019" + } + }, + "703 Löner till kollektivanställda (utlandsanställda)": { + "is_group": 1, + "Löner till kollektivanställda (utlandsanställda)": { + "account_number": "7030" + }, + "Löner till kollektivanställda (utlandsanställda) övriga": { + "account_number": "7031" + }, + "Vinstandelar till kollektivanställda (utlandsanställda)": { + "account_number": "7032" + }, + "Avgångsvederlag till kollektivanställda (utlandsanställda)": { + "account_number": "7037" + }, + "Bruttolöneavdrag, kollektivanställda (utlandsanställda)": { + "account_number": "7038" + }, + "Upplupna löner och vinstandelar till kollektivanställda (utlandsanställda)": { + "account_number": "7039" + } + }, + "708 Löner till kollektivanställda för ej arbetad tid": { + "is_group": 1, + "Löner till kollektivanställda för ej arbetad tid": { + "account_number": "7080" + }, + "Sjuklöner till kollektivanställda": { + "account_number": "7081" + }, + "Semesterlöner till kollektivanställda": { + "account_number": "7082" + }, + "Föräldraersättning till kollektivanställda": { + "account_number": "7083" + }, + "Övriga löner till kollektivanställda för ej arbetad tid": { + "account_number": "7089" + } + }, + "709 Förändring av semesterlöneskuld": { + "is_group": 1, + "Förändring av semesterlöneskuld": { + "account_number": "7090", + "account_type": "Expense Account" + } + } + }, + "71 (Fri kontogrupp)": { + "account_type": "Expense Account", + "is_group": 1, + "710 (Fri kontogrupp)": { + "account_type": "Expense Account", + "is_group": 1, + "(Fri kontogrupp)": { + "account_number": "7100" + } + } + }, + "72 Löner till tjänstemän och företagsledare": { + "is_group": 1, + "720 Löner till tjänstemän och företagsledare (gruppkonto)": { + "account_type": "Expense Account", + "Löner till tjänstemän och företagsledare (gruppkonto)": { + "account_number": "7200" + } + }, + "721 Löner till tjänstemän": { + "is_group": 1, + "Löner till tjänstemän": { + "account_number": "7210", + "account_type": "Expense Account" + }, + "Vinstandelar till tjänstemän": { + "account_number": "7212" + }, + "Lön växa-stöd tjänstemän 10,21 %": { + "account_number": "7213" + }, + "Avgångsvederlag till tjänstemän": { + "account_number": "7217" + }, + "Bruttolöneavdrag, tjänstemän": { + "account_number": "7218" + }, + "Upplupna löner och vinstandelar till tjänstemän": { + "account_number": "7219" + } + }, + "722 Löner till företagsledare": { + "is_group": 1, + "Löner till företagsledare": { + "account_number": "7220", + "account_type": "Expense Account" + }, + "Löner till företagsledare övriga": { + "account_number": "7221" + }, + "Tantiem till företagsledare": { + "account_number": "7222" + }, + "Avgångsvederlag till företagsledare": { + "account_number": "7227" + }, + "Bruttolöneavdrag, företagsledare": { + "account_number": "7228" + }, + "Upplupna löner och tantiem till företagsledare": { + "account_number": "7229" + } + }, + "723 Löner till tjänstemän och ftgsledare (utlandsanställda)": { + "is_group": 1, + "Löner till tjänstemän och ftgsledare (utlandsanställda)": { + "account_number": "7230" + }, + "Löner till tjänstemän och ftgsledare övriga (utlandsanställda)": { + "account_number": "7231" + }, + "Vinstandelar till tjänstemän och ftgsledare (utlandsanställda)": { + "account_number": "7232" + }, + "Avgångsvederlag till tjänstemän och ftgsledare (utlandsanställda)": { + "account_number": "7237" + }, + "Bruttolöneavdrag, tjänstemän och ftgsledare (utlandsanställda)": { + "account_number": "7238" + }, + "Upplupna löner och vinstandelar till tjänstemän och ftgsledare (utlandsanställda)": { + "account_number": "7239" + } + }, + "724 Styrelsearvoden": { + "is_group": 1, + "Styrelsearvoden": { + "account_number": "7240", + "account_type": "Expense Account" + } + }, + "728 Löner till tjänstemän och företagsledare för ej arbetad tid": { + "is_group": 1, + "Löner till tjänstemän och företagsledare för ej arbetad tid": { + "account_number": "7280" + }, + "Sjuklöner till tjänstemän": { + "account_number": "7281" + }, + "Sjuklöner till företagsledare": { + "account_number": "7282" + }, + "Föräldraersättning till tjänstemän": { + "account_number": "7283" + }, + "Föräldraersättning till företagsledare": { + "account_number": "7284" + }, + "Semesterlöner till tjänstemän": { + "account_number": "7285" + }, + "Semesterlöner till företagsledare": { + "account_number": "7286" + }, + "Övriga löner till tjänstemän för ej arbetad tid": { + "account_number": "7288" + }, + "Övriga löner till företagsledare för ej arbetad tid": { + "account_number": "7289" + } + }, + "729 Förändring av semesterlöneskuld": { + "account_type": "Expense Account", + "is_group": 1, + "Förändring av semesterlöneskuld": { + "account_number": "7290", + "account_type": "Expense Account" + }, + "Förändring av semesterlöneskuld till tjänstemän": { + "account_number": "7291" + }, + "Förändring av semesterlöneskuld till företagsledare": { + "account_number": "7292" + } + } + }, + "73 Kostnadsersättningar och förmåner": { + "is_group": 1, + "730 Kostnadsersättningar och förmåner (gruppkonto)": { + "account_type": "Expense Account", + "is_group": 1, + "Kostnadsersättningar och förmåner (gruppkonto)": { + "account_number": "7300" + } + }, + "731 Kontanta extraersättningar": { + "is_group": 1, + "Kontanta extraersättningar": { + "account_number": "7310", + "account_type": "Expense Account" + }, + "Ersättningar för sammanträden m.m.": { + "account_number": "7311" + }, + "Ersättningar för förslagsverksamhet och uppfinningar": { + "account_number": "7312" + }, + "Ersättningar för/bidrag till bostadskostnader": { + "account_number": "7313" + }, + "Ersättningar för/bidrag till måltidskostnader": { + "account_number": "7314" + }, + "Ersättningar för/bidrag till resor till och från arbetsplatsen": { + "account_number": "7315" + }, + "Ersättningar för/bidrag till arbetskläder": { + "account_number": "7316" + }, + "Ersättningar för/bidrag till arbetsmaterial och arbetsverktyg": { + "account_number": "7317" + }, + "Felräkningspengar": { + "account_number": "7318" + }, + "Övriga kontanta extraersättningar": { + "account_number": "7319" + } + }, + "732 Traktamenten vid tjänsteresa": { + "is_group": 1, + "Traktamenten vid tjänsteresa": { + "account_number": "7320" + }, + "Skattefria traktamenten, Sverige": { + "account_number": "7321", + "account_type": "Expense Account" + }, + "Skattepliktiga traktamenten, Sverige": { + "account_number": "7322", + "account_type": "Expense Account" + }, + "Skattefria traktamenten, utlandet": { + "account_number": "7323", + "account_type": "Expense Account" + }, + "Skattepliktiga traktamenten, utlandet": { + "account_number": "7324", + "account_type": "Expense Account" + } + }, + "733 Bilersättningar": { + "is_group": 1, + "Bilersättningar": { + "account_number": "7330" + }, + "Skattefria bilersättningar": { + "account_number": "7331", + "account_type": "Expense Account" + }, + "Skattepliktiga bilersättningar": { + "account_number": "7332", + "account_type": "Expense Account" + }, + "Ersättning för trängselskatt, skattefri": { + "account_number": "7333", + "account_type": "Expense Account" + } + }, + "735 Ersättningar för föreskrivna arbetskläder": { + "account_type": "Expense Account", + "is_group": 1, + "Ersättningar för föreskrivna arbetskläder": { + "account_number": "7350" + } + }, + "737 Representationsersättningar": { + "account_type": "Expense Account", + "is_group": 1, + "Representationsersättningar": { + "account_number": "7370" + } + }, + "738 Kostnader för förmåner till anställda": { + "is_group": 1, + "Kostnader för förmåner till anställda": { + "account_number": "7380", + "account_type": "Expense Account" + }, + "Kostnader för fri bostad": { + "account_number": "7381" + }, + "Kostnader för fria eller subventionerade måltider": { + "account_number": "7382" + }, + "Kostnader för fria resor till och från arbetsplatsen": { + "account_number": "7383" + }, + "Kostnader för fria eller subventionerade arbetskläder": { + "account_number": "7384" + }, + "Kostnader för fri bil": { + "account_number": "7385", + "account_type": "Expense Account" + }, + "Subventionerad ränta": { + "account_number": "7386" + }, + "Kostnader för lånedatorer": { + "account_number": "7387" + }, + "Anställdas ersättning för erhållna förmåner": { + "account_number": "7388" + }, + "Övriga kostnader för förmåner": { + "account_number": "7389" + } + }, + "739 Övriga kostnadsersättningar och förmåner": { + "is_group": 1, + "Övriga kostnadsersättningar och förmåner": { + "account_number": "7390", + "account_type": "Expense Account" + }, + "Kostnad för trängselskatteförmån": { + "account_number": "7391" + }, + "Kostnad för förmån av hushållsnära tjänster": { + "account_number": "7392" + } + } + }, + "74 Löner till tjänstemän och företagsledare": { + "is_group": 1, + "740 Pensionskostnader (gruppkonto)": { + "account_type": "Expense Account", + "is_group": 1, + "Pensionskostnader (gruppkonto)": { + "account_number": "7400" + } + }, + "741 Pensionsförsäkringspremier": { + "is_group": 1, + "Pensionsförsäkringspremier": { + "account_number": "7410", + "account_type": "Expense Account" + }, + "Premier för kollektiva pensionsförsäkringar": { + "account_number": "7411" + }, + "Premier för individuella pensionsförsäkringar": { + "account_number": "7412" + } + }, + "742 Förändring av pensionsskuld": { + "account_type": "Expense Account", + "is_group": 1, + "Förändring av pensionsskuld": { + "account_number": "7420" + } + }, + "743 Avdrag för räntedel i pensionskostnad": { + "account_type": "Expense Account", + "is_group": 1, + "Avdrag för räntedel i pensionskostnad": { + "account_number": "7430" + } + }, + "744 Förändring av pensionsstiftelsekapital": { + "is_group": 1, + "Förändring av pensionsstiftelsekapital": { + "account_number": "7440" + }, + "Överföring av medel till pensionsstiftelse": { + "account_number": "7441" + }, + "Gottgörelse från pensionsstiftelse": { + "account_number": "7448" + } + }, + "746 Pensionsutbetalningar": { + "is_group": 1, + "Pensionsutbetalningar": { + "account_number": "7460" + }, + "Pensionsutbetalningar till f.d. kollektivanställda": { + "account_number": "7461" + }, + "Pensionsutbetalningar till f.d. tjänstemän": { + "account_number": "7462" + }, + "Pensionsutbetalningar till f.d. företagsledare": { + "account_number": "7463" + } + }, + "747 Förvaltnings- och kreditförsäkringsavgifter": { + "account_type": "Expense Account", + "is_group": 1, + "Förvaltnings- och kreditförsäkringsavgifter": { + "account_number": "7470" + } + }, + "749 Övriga pensionskostnader": { + "is_group": 1, + "Övriga pensionskostnader": { + "account_number": "7490", + "account_type": "Expense Account" + } + } + }, + "75 Sociala och andra avgifter enligt lag och avtal": { + "is_group": 1, + "750 Sociala och andra avgifter enligt lag och avtal (gruppkonto)": { + "account_type": "Expense Account", + "is_group": 1, + "Sociala och andra avgifter enligt lag och avtal (gruppkonto)": { + "account_number": "7500" + } + }, + "751 Arbetsgivaravgifter 31,42 %": { + "is_group": 1, + "Arbetsgivaravgifter 31,42 %": { + "account_number": "7510" + }, + "Arbetsgivaravgifter för löner och ersättningar": { + "account_number": "7511", + "account_type": "Expense Account" + }, + "Arbetsgivaravgifter för förmånsvärden": { + "account_number": "7512", + "account_type": "Expense Account" + }, + "Arbetsgivaravgifter på skattepliktiga kostnadsersättningar": { + "account_number": "7515" + }, + "Arbetsgivaravgifter på arvoden": { + "account_number": "7516" + }, + "Arbetsgivaravgifter på bruttolöneavdrag m.m.": { + "account_number": "7518" + }, + "Arbetsgivaravgifter för semester- och löneskulder": { + "account_number": "7519", + "account_type": "Expense Account" + } + }, + "753 Särskild löneskatt": { + "is_group": 1, + "Särskild löneskatt": { + "account_number": "7530", + "account_type": "Expense Account" + }, + "Särskild löneskatt för vissa försäkringsersättningar m.m.": { + "account_number": "7531" + }, + "Särskild löneskatt pensionskostnader, deklarationspost": { + "account_number": "7532" + }, + "Särskild löneskatt för pensionskostnader": { + "account_number": "7533" + } + }, + "755 Avkastningsskatt på pensionsmedel": { + "is_group": 1, + "Avkastningsskatt på pensionsmedel": { + "account_number": "7550", + "account_type": "Expense Account" + }, + "Avkastningsskatt 15 % försäkringsföretag m.fl. samt avsatt till pensioner": { + "account_number": "7551" + }, + "Avkastningsskatt 15 % utländska pensionsförsäkringar": { + "account_number": "7552" + }, + "Avkastningsskatt 30 % utländska försäkringsföretag m.fl.": { + "account_number": "7553" + }, + "Avkastningsskatt 30 % utländska kapitalförsäkringar": { + "account_number": "7554" + } + }, + "757 Premier för arbetsmarknadsförsäkringar": { + "is_group": 1, + "Premier för arbetsmarknadsförsäkringar": { + "account_number": "7570", + "account_type": "Expense Account" + }, + "Arbetsmarknadsförsäkringar": { + "account_number": "7571" + }, + "Arbetsmarknadsförsäkringar pensionsförsäkringspremier, deklarationspost": { + "account_number": "7572" + } + }, + "758 Gruppförsäkringspremier": { + "is_group": 1, + "Gruppförsäkringspremier": { + "account_number": "7580", + "account_type": "Expense Account" + }, + "Grupplivförsäkringspremier": { + "account_number": "7581" + }, + "Gruppsjukförsäkringspremier": { + "account_number": "7582" + }, + "Gruppolycksfallsförsäkringspremier": { + "account_number": "7583" + }, + "Övriga gruppförsäkringspremier": { + "account_number": "7589" + } + }, + "759 Övriga sociala och andra avgifter enligt lag och avtal": { + "is_group": 1, + "Övriga sociala och andra avgifter enligt lag och avtal": { + "account_number": "7590", + "account_type": "Expense Account" + } + } + }, + "76 Övriga personalkostnader": { + "is_group": 1, + "760 Övriga personalkostnader (gruppkonto)": { + "is_group": 1, + "Övriga personalkostnader (gruppkonto)": { + "account_number": "7600", + "account_type": "Expense Account" + } + }, + "761 Utbildning": { + "is_group": 1, + "Utbildning": { + "account_number": "7610", + "account_type": "Expense Account" + } + }, + "762 Sjuk- och hälsovård": { + "is_group": 1, + "Sjuk- och hälsovård": { + "account_number": "7620" + }, + "Sjuk- och hälsovård, avdragsgill": { + "account_number": "7621", + "account_type": "Expense Account" + }, + "Sjuk- och hälsovård, ej avdragsgill": { + "account_number": "7622", + "account_type": "Expense Account" + }, + "Sjukvårdsförsäkring, ej avdragsgill": { + "account_number": "7623" + } + }, + "763 Personalrepresentation": { + "is_group": 1, + "Personalrepresentation": { + "account_number": "7630" + }, + "Personalrepresentation, avdragsgill": { + "account_number": "7631", + "account_type": "Expense Account" + }, + "Personalrepresentation, ej avdragsgill": { + "account_number": "7632", + "account_type": "Expense Account" + } + }, + "765 Sjuklöneförsäkring": { + "account_type": "Expense Account", + "is_group": 1, + "Sjuklöneförsäkring": { + "account_number": "7650" + } + }, + "767 Förändring av personalstiftelsekapital": { + "is_group": 1, + "Förändring av personalstiftelsekapital": { + "account_number": "7670" + }, + "Avsättning till personalstiftelse": { + "account_number": "7671" + }, + "Gottgörelse från personalstiftelse": { + "account_number": "7678" + } + }, + "769 Övrig personalkostnad": { + "is_group": 1, + "Övriga personalkostnader": { + "account_number": "7690" + }, + "Personalrekrytering": { + "account_number": "7691" + }, + "Begravningshjälp": { + "account_number": "7692" + }, + "Fritidsverksamhet": { + "account_number": "7693" + }, + "Övriga personalkostnader övriga": { + "account_number": "7699" + } + } + }, + "77 Nedskrivningar och återföring av nedskrivningar": { + "is_group": 1, + "771 Nedskrivningar av immateriella anläggningstillgångar": { + "account_type": "Expense Account", + "is_group": 1, + "Nedskrivningar av immateriella anläggningstillgångar": { + "account_number": "7710" + } + }, + "772 Nedskrivningar av byggnader och mark": { + "is_group": 1, + "Nedskrivningar av byggnader och mark": { + "account_number": "7720", + "account_type": "Expense Account" + } + }, + "773 Nedskrivningar av maskiner och inventarier": { + "is_group": 1, + "Nedskrivningar av maskiner och inventarier": { + "account_number": "7730", + "account_type": "Expense Account" + } + }, + "774 Nedskrivningar av vissa omsättningstillgångar": { + "account_type": "Expense Account", + "is_group": 1, + "Nedskrivningar av vissa omsättningstillgångar": { + "account_number": "7740" + } + }, + "776 Återföring av nedskrivningar av immateriella anläggningstillgångar": { + "account_type": "Expense Account", + "is_group": 1, + "Återföring av nedskrivningar av immateriella anläggningstillgångar": { + "account_number": "7760" + } + }, + "777 Återföring av nedskrivningar av byggnader och mark": { + "account_type": "Expense Account", + "is_group": 1, + "Återföring av nedskrivningar av byggnader och mark": { + "account_number": "7770" + } + }, + "778 Återföring av nedskrivningar av maskiner och inventarier": { + "account_type": "Expense Account", + "is_group": 1, + "Återföring av nedskrivningar av maskiner och inventarier": { + "account_number": "7780" + } + }, + "779 Återföring av nedskrivningar av vissa omsättningstillgångar": { + "account_type": "Expense Account", + "is_group": 1, + "Återföring av nedskrivningar av vissa omsättningstillgångar": { + "account_number": "7790" + } + } + }, + "78 Avskrivningar enligt plan": { + "is_group": 1, + "781 Avskrivningar på immateriella anläggningstillgångar": { + "is_group": 1, + "Avskrivningar på immateriella anläggningstillgångar": { + "account_number": "7810", + "account_type": "Depreciation" + }, + "Avskrivningar på balanserade utgifter": { + "account_number": "7811" + }, + "Avskrivningar på patent": { + "account_number": "7813" + }, + "Avskrivningar på licenser": { + "account_number": "7814" + }, + "Avskrivningar på hyresrätter": { + "account_number": "7816" + }, + "Avskrivningar på goodwill": { + "account_number": "7817" + }, + "Avskrivningar på övriga immateriella anläggningstillgångar": { + "account_number": "7819", + "account_type": "Depreciation" + } + }, + "782 Avskrivningar på byggnader och markanläggningar": { + "is_group": 1, + "Avskrivningar på byggnader och markanläggningar": { + "account_number": "7820", + "account_type": "Expense Account" + }, + "Avskrivningar på byggnader": { + "account_number": "7821" + }, + "Avskrivningar på markanläggningar": { + "account_number": "7824" + }, + "Avskrivningar på övriga byggnader": { + "account_number": "7829" + } + }, + "783 Avskrivningar på maskiner och inventarier": { + "is_group": 1, + "Avskrivningar på maskiner och inventarier": { + "account_number": "7830", + "account_type": "Depreciation" + }, + "Avskrivningar på maskiner och andra tekniska anläggningar": { + "account_number": "7831", + "account_type": "Depreciation" + }, + "Avskrivningar på inventarier och verktyg": { + "account_number": "7832", + "account_type": "Depreciation" + }, + "Avskrivningar på installationer": { + "account_number": "7833", + "account_type": "Depreciation" + }, + "Avskrivningar på bilar och andra transportmedel": { + "account_number": "7834", + "account_type": "Depreciation" + }, + "Avskrivningar på datorer": { + "account_number": "7835", + "account_type": "Depreciation" + }, + "Avskrivningar på leasade tillgångar": { + "account_number": "7836", + "account_type": "Depreciation" + }, + "Avskrivningar på övriga maskiner och inventarier": { + "account_number": "7839", + "account_type": "Depreciation" + } + }, + "784 Avskrivningar på förbättringsutgifter på annans fastighet": { + "is_group": 1, + "Avskrivningar på förbättringsutgifter på annans fastighet": { + "account_number": "7840" + } + } + }, + "79 Övriga rörelsekostnader": { + "is_group": 1, + "794 Orealiserade positiva/negativa värdeförändringar på säkringsinstrument": { + "account_type": "Expense Account", + "is_group": 1, + "Orealiserade positiva/negativa värdeförändringar på säkringsinstrument": { + "account_number": "7940" + } + }, + "796 Valutakursförluster på fordringar och skulder av rörelsekaraktär": { + "account_type": "Expense Account", + "is_group": 1, + "Valutakursförluster på fordringar och skulder av rörelsekaraktär": { + "account_number": "7960" + } + }, + "797 Förlust vid avyttring av immateriella och materiella anläggningstillgångar": { + "is_group": 1, + "Förlust vid avyttring av immateriella och materiella anläggningstillgångar": { + "account_number": "7970", + "account_type": "Expense Account" + }, + "Förlust vid avyttring av immateriella anläggningstillgångar": { + "account_number": "7971" + }, + "Förlust vid avyttring av byggnader och mark": { + "account_number": "7972" + }, + "Förlust vid avyttring av maskiner och inventarier": { + "account_number": "7973" + } + }, + "799 Övriga rörelsekostnader": { + "is_group": 1, + "Övriga rörelsekostnader": { + "account_number": "7999", + "account_type": "Expense Account" + } + } + } + }, + "8 Finansiella och andra inkomster/intäkter och utgifter/kostnader": { + "root_type": "Expense", + "is_group": 1, + "80 Resultat från andelar i koncernföretag": { + "is_group": 1, + "801 Utdelning på andelar i koncernföretag": { + "is_group": 1, + "Utdelning på andelar i koncernföretag": { + "account_number": "8010" + }, + "Utdelning på andelar i dotterföretag": { + "account_number": "8012" + }, + "Emissionsinsats, koncernföretag": { + "account_number": "8016" + } + }, + "802 Resultat vid försäljning av andelar i koncernföretag": { + "is_group": 1, + "Resultat vid försäljning av andelar i koncernföretag": { + "account_number": "8020" + }, + "Resultat vid försäljning av andelar i dotterföretag": { + "account_number": "8022" + } + }, + "803 Resultatandelar från handelsbolag (dotterföretag)": { + "is_group": 1, + "Resultatandelar från handelsbolag (dotterföretag)": { + "account_number": "8030" + } + }, + "807 Nedskrivningar av andelar i och långfristiga fordringar hos koncernföretag": { + "is_group": 1, + "Nedskrivningar av andelar i och långfristiga fordringar hos koncernföretag": { + "account_number": "8070" + }, + "Nedskrivningar av andelar i dotterföretag": { + "account_number": "8072" + }, + "Nedskrivningar av långfristiga fordringar hos moderföretag": { + "account_number": "8076" + }, + "Nedskrivningar av långfristiga fordringar hos dotterföretag": { + "account_number": "8077" + } + }, + "808 återföringar av nedskrivningar av andelar i och långfristiga fordringar hos koncernföretag": { + "is_group": 1, + "återföringar av nedskrivningar av andelar i och långfristiga fordringar hos koncernföretag": { + "account_number": "8080" + }, + "återföringar av nedskrivningar av andelar i dotterföretag": { + "account_number": "8082" + }, + "återföringar av nedskrivningar av långfristiga fordringar hos moderföretag": { + "account_number": "8086" + }, + "återföringar av nedskrivningar av långfristiga fordringar hos dotterföretag": { + "account_number": "8087" + } + } + }, + "81 Resultat från andelar i intresseföretag": { + "account_type": "Expense Account", + "is_group": 1, + "811 Utdelningar på andelar i intresseföretag": { + "account_type": "Expense Account", + "is_group": 1, + "Utdelningar på andelar i intresseföretag": { + "account_number": "8110" + }, + "Utdelningar på andelar i intresseföretag övriga": { + "account_number": "8111" + }, + "Utdelningar på andelar i gemensamt styrda företag": { + "account_number": "8112" + }, + "Utdelningar på andelar i övriga företag": { + "account_number": "8113" + }, + "Emissionsinsats, intresseföretag": { + "account_number": "8116" + }, + "Emissionsinsats, gemensamt styrda företag": { + "account_number": "8117" + }, + "Emissionsinsats, övriga företag": { + "account_number": "8118" + } + }, + "812 Resultat vid försäljning av andelar i intresseföretag": { + "account_type": "Expense Account", + "is_group": 1, + "Resultat vid försäljning av andelar i intresseföretag": { + "account_number": "8120" + }, + "Resultat vid försäljning av andelar i intresseföretag övriga": { + "account_number": "8121" + }, + "Resultat vid försäljning av andelar i gemensamt styrda företag": { + "account_number": "8122" + }, + "Resultat vid försäljning av andelar i övriga företag": { + "account_number": "8123" + } + }, + "813 Resultatandelar från handelsbolag": { + "account_type": "Expense Account", + "is_group": 1, + "Resultatandelar från handelsbolag (intresseföretag, gemensamt styrda företag)": { + "account_number": "8130" + }, + "Resultatandelar från handelsbolag (intresseföretag)": { + "account_number": "8131" + }, + "Resultatandelar från handelsbolag (gemensamt styrda företag)": { + "account_number": "8132" + }, + "Resultatandelar från handelsbolag (övriga företag)": { + "account_number": "8133" + } + }, + "817 Nedskrivningar av andelar i och långfristiga fordringar hos intresseföretag": { + "account_type": "Expense Account", + "is_group": 1, + "Nedskrivningar av andelar i och långfristiga fordringar hos intresseföretag": { + "account_number": "8170" + }, + "Nedskrivningar av andelar i intresseföretag": { + "account_number": "8171" + }, + "Nedskrivningar av långfristiga fordringar hos intresseföretag": { + "account_number": "8172" + }, + "Nedskrivningar av andelar i gemensamt styrda företag": { + "account_number": "8173" + }, + "Nedskrivningar av långfristiga fordringar hos gemensamt styrda företag": { + "account_number": "8174" + }, + "Nedskrivningar av andelar i övriga företag som det finns ett ägarintresse i": { + "account_number": "8176" + }, + "Nedskrivningar av långfristiga fordringar hos övriga företag": { + "account_number": "8177" + } + }, + "818 Återföringar av nedskrivningar av andelar i och långfristiga fordringar hos intresseföretag": { + "account_type": "Expense Account", + "is_group": 1, + "Återföringar av nedskrivningar av andelar i och långfristiga fordringar hos intresseföretag": { + "account_number": "8180" + }, + "Återföringar av nedskrivningar av andelar i intresseföretag": { + "account_number": "8181" + }, + "Återföringar av nedskrivningar av långfristiga fordringar hos intresseföretag": { + "account_number": "8182" + }, + "Återföringar av nedskrivningar av andelar i gemensamt styrda företag": { + "account_number": "8183" + }, + "Återföringar av nedskrivningar av långfristiga fordringar hos gemensamt styrda företag": { + "account_number": "8184" + }, + "Återföringar av nedskrivningar av andelar i övriga företag": { + "account_number": "8186" + }, + "Återföringar av nedskrivningar av långfristiga fordringar hos övriga företag": { + "account_number": "8187" + } + } + }, + "82 Resultat från övriga värdepapper och långfristiga fordringar (anläggningstillgångar)": { + "is_group": 1, + "821 Utdelningar på andelar i andra företag": { + "is_group": 1, + "Utdelningar på andelar i andra företag": { + "account_number": "8210" + }, + "Utdelningar, övriga företag": { + "account_number": "8212" + }, + "Insatsemissioner, övriga företag": { + "account_number": "8216" + } + }, + "822 Resultat vid försäljning av värdepapper i och långfristiga fordringar hos andra företag": { + "is_group": 1, + "Resultat vid försäljning av värdepapper i och långfristiga fordringar hos andra företag": { + "account_number": "8220" + }, + "Resultat vid försäljning av andelar i andra företag": { + "account_number": "8221" + }, + "Resultat vid försäljning av långfristiga fordringar hos andra företag": { + "account_number": "8222" + }, + "Resultat vid försäljning av derivat (långfristiga värdepappersinnehav)": { + "account_number": "8223" + } + }, + "823 Valutakursdifferenser på långfristiga fordringar": { + "is_group": 1, + "Valutakursdifferenser på långfristiga fordringar": { + "account_number": "8230" + }, + "Valutakursvinster på långfristiga fordringar": { + "account_number": "8231" + }, + "Valutakursförluster på långfristiga fordringar": { + "account_number": "8236" + } + }, + "824 Resultatandelar från handelsbolag (andra företag)": { + "is_group": 1, + "Resultatandelar från handelsbolag (andra företag)": { + "account_number": "8240" + } + }, + "825 Ränteintäkter från långfristiga fordringar hos och värdepapper i andra företag": { + "is_group": 1, + "Ränteintäkter från långfristiga fordringar hos och värdepapper i andra företag": { + "account_number": "8250" + }, + "Ränteintäkter från långfristiga fordringar": { + "account_number": "8251" + }, + "Ränteintäkter från övriga värdepapper": { + "account_number": "8252" + }, + "Skattefria ränteintäkter, långfristiga tillgångar": { + "account_number": "8254" + }, + "Avkastningsskatt kapitalplacering": { + "account_number": "8255" + } + }, + "826 Ränteintäkter från långfristiga fordringar hos koncernföretag": { + "is_group": 1, + "Ränteintäkter från långfristiga fordringar hos koncernföretag": { + "account_number": "8260" + }, + "Ränteintäkter från långfristiga fordringar hos moderföretag": { + "account_number": "8261" + }, + "Ränteintäkter från långfristiga fordringar hos dotterföretag": { + "account_number": "8262" + }, + "Ränteintäkter från långfristiga fordringar hos andra koncernföretag": { + "account_number": "8263" + } + }, + "827 Nedskrivningar av innehav av andelar i och långfristiga fordringar hos andra företag": { + "is_group": 1, + "Nedskrivningar av innehav av andelar i och långfristiga fordringar hos andra företag": { + "account_number": "8270" + }, + "Nedskrivningar av andelar i andra företag": { + "account_number": "8271" + }, + "Nedskrivningar av långfristiga fordringar hos andra företag": { + "account_number": "8272" + }, + "Nedskrivningar av övriga värdepapper hos andra företag": { + "account_number": "8273" + } + }, + "828 Återföringar av nedskrivningar av andelar i och långfristiga fordringar hos andra företag": { + "is_group": 1, + "Återföringar av nedskrivningar av andelar i och långfristiga fordringar hos andra företag": { + "account_number": "8280" + }, + "Återföringar av nedskrivningar av andelar i andra företag": { + "account_number": "8281" + }, + "Återföringar av nedskrivningar av långfristiga fordringar hos andra företag": { + "account_number": "8282" + }, + "Återföringar av nedskrivningar av övriga värdepapper i andra företag": { + "account_number": "8283" + } + }, + "829 Värdering till verkligt värde, anläggningstillgångar": { + "is_group": 1, + "Värdering till verkligt värde, anläggningstillgångar": { + "account_number": "8290" + }, + "Orealiserade värdeförändringar på anläggningstillgångar": { + "account_number": "8291" + }, + "Orealiserade värdeförändringar på derivatinstrument": { + "account_number": "8295" + } + } + }, + "83 Övriga ränteintäkter och liknande resultatposter": { + "is_group": 1, + "831 Ränteintäkter från omsättningstillgångar": { + "is_group": 1, + "Ränteintäkter från omsättningstillgångar": { + "account_number": "8310" + }, + "Ränteintäkter från bank": { + "account_number": "8311" + }, + "Ränteintäkter från kortfristiga placeringar": { + "account_number": "8312" + }, + "Ränteintäkter från kortfristiga fordringar": { + "account_number": "8313" + }, + "Skattefria ränteintäkter": { + "account_number": "8314", + "account_type": "Income Account" + }, + "Ränteintäkter för dold räntekompensation": { + "account_number": "8317" + }, + "Övriga ränteintäkter från omsättningstillgångar": { + "account_number": "8319" + } + }, + "832 Värdering till verkligt värde, omsättningstillgångar": { + "is_group": 1, + "Värdering till verkligt värde, omsättningstillgångar": { + "account_number": "8320" + }, + "Orealiserade värdeförändringar på omsättningstillgångar": { + "account_number": "8321" + }, + "Orealiserade värdeförändringar på derivatinstrument (oms.-tillg.)": { + "account_number": "8325" + } + }, + "833 Valutakursdifferenser på kortfristiga fordringar och placeringar": { + "is_group": 1, + "Valutakursdifferenser på kortfristiga fordringar och placeringar": { + "account_number": "8330" + }, + "Valutakursvinster på kortfristiga fordringar och placeringar": { + "account_number": "8331" + }, + "Valutakursförluster på kortfristiga fordringar och placeringar": { + "account_number": "8336" + } + }, + "834 Utdelningar på kortfristiga placeringar": { + "is_group": 1, + "Utdelningar på kortfristiga placeringar": { + "account_number": "8340" + } + }, + "835 Resultat vid försäljning av kortfristiga placeringar": { + "is_group": 1, + "Resultat vid försäljning av kortfristiga placeringar": { + "account_number": "8350" + } + }, + "836 Övriga ränteintäkter från koncernföretag": { + "is_group": 1, + "Övriga ränteintäkter från koncernföretag": { + "account_number": "8360" + }, + "Övriga ränteintäkter från moderföretag": { + "account_number": "8361" + }, + "Övriga ränteintäkter från dotterföretag": { + "account_number": "8362" + }, + "Övriga ränteintäkter från andra koncernföretag": { + "account_number": "8363" + } + }, + "837 Nedskrivningar av kortfristiga placeringar": { + "is_group": 1, + "Nedskrivningar av kortfristiga placeringar": { + "account_number": "8370" + } + }, + "838 Återföringar av nedskrivningar av kortfristiga placeringar": { + "is_group": 1, + "Återföringar av nedskrivningar av kortfristiga placeringar": { + "account_number": "8380" + } + }, + "839 Övriga finansiella intäkter": { + "is_group": 1, + "Övriga finansiella intäkter": { + "account_number": "8390" + } + } + }, + "84 Räntekostnader och liknande resultatposter": { + "is_group": 1, + "840 Räntekostnader (gruppkonto)": { + "is_group": 1, + "Räntekostnader (gruppkonto)": { + "account_number": "8400" + } + }, + "841 Räntekostnader för långfristiga skulder": { + "is_group": 1, + "Räntekostnader för långfristiga skulder": { + "account_number": "8410", + "account_type": "Expense Account" + }, + "Räntekostnader för obligations-, förlags- och konvertibla lån": { + "account_number": "8411" + }, + "Räntedel i årets pensionskostnad": { + "account_number": "8412" + }, + "Räntekostnader för checkräkningskredit": { + "account_number": "8413" + }, + "Räntekostnader för andra skulder till kreditinstitut": { + "account_number": "8415" + }, + "Räntekostnader för dold räntekompensation m.m.": { + "account_number": "8417" + }, + "Avdragspost för räntesubventioner": { + "account_number": "8418" + }, + "Övriga räntekostnader för långfristiga skulder": { + "account_number": "8419" + } + }, + "842 Räntekostnader för kortfristiga skulder": { + "is_group": 1, + "Räntekostnader för kortfristiga skulder": { + "account_number": "8420", + "account_type": "Expense Account" + }, + "Räntekostnader till kreditinstitut": { + "account_number": "8421", + "account_type": "Expense Account" + }, + "Dröjsmålsräntor för leverantörsskulder": { + "account_number": "8422", + "account_type": "Expense Account" + }, + "Räntekostnader för skatter och avgifter": { + "account_number": "8423", + "account_type": "Expense Account" + }, + "Räntekostnader byggnadskreditiv": { + "account_number": "8424" + }, + "Övriga räntekostnader för kortfristiga skulder": { + "account_number": "8429" + } + }, + "843 Valutakursdifferenser på skulder": { + "is_group": 1, + "Valutakursdifferenser på skulder": { + "account_number": "8430", + "account_type": "Expense Account" + }, + "Valutakursvinster på skulder": { + "account_number": "8431" + }, + "Valutakursförluster på skulder": { + "account_number": "8436" + } + }, + "844 Erhållna räntebidrag": { + "is_group": 1, + "Erhållna räntebidrag": { + "account_number": "8440" + } + }, + "845 Orealiserade värdeförändringar på skulder": { + "is_group": 1, + "Orealiserade värdeförändringar på skulder": { + "account_number": "8450" + }, + "Orealiserade värdeförändringar på skulder övriga": { + "account_number": "8451" + }, + "Orealiserade värdeförändringar på säkringsinstrument": { + "account_number": "8455" + } + }, + "846 Räntekostnader till koncernföretag": { + "is_group": 1, + "Räntekostnader till koncernföretag": { + "account_number": "8460" + }, + "Räntekostnader till moderföretag": { + "account_number": "8461" + }, + "Räntekostnader till dotterföretag": { + "account_number": "8462" + }, + "Räntekostnader till andra koncernföretag": { + "account_number": "8463" + } + }, + "848 Aktiverade ränteutgifter": { + "is_group": 1, + "Aktiverade ränteutgifter": { + "account_number": "8480" + } + }, + "849 Övriga skuldrelaterade poster": { + "is_group": 1, + "Övriga skuldrelaterade poster": { + "account_number": "8490" + }, + "Erhållet ackord på skulder till kreditinstitut m.m.": { + "account_number": "8491" + } + } + }, + "85 (Fri kontogrupp)": { + "is_group": 1, + "(Fri kontogrupp)": { + "account_number": "8500" + } + }, + "86 (Fri kontogrupp)": { + "is_group": 1, + "(Fri kontogrupp)": { + "account_number": "8600" + } + }, + "87 (Fri kontogrupp)": { + "is_group": 1, + "(Fri kontogrupp)": { + "account_number": "8700" + } + }, + "88 Bokslutsdispositioner": { + "is_group": 1, + "881 Förändring av periodiseringsfond": { + "is_group": 1, + "Förändring av periodiseringsfond": { + "account_number": "8810" + }, + "Avsättning till periodiseringsfond": { + "account_number": "8811" + }, + "Återföring från periodiseringsfond": { + "account_number": "8819" + } + }, + "882 Mottagna koncernbidrag": { + "is_group": 1, + "Mottagna koncernbidrag": { + "account_number": "8820" + } + }, + "883 Lämnade koncernbidrag": { + "is_group": 1, + "Lämnade koncernbidrag": { + "account_number": "8830" + } + }, + "884 Lämnade gottgörelser": { + "is_group": 1, + "Lämnade gottgörelser": { + "account_number": "8840" + } + }, + "885 Förändring av överavskrivningar": { + "is_group": 1, + "Förändring av överavskrivningar": { + "account_number": "8850" + }, + "Förändring av överavskrivningar, immateriella anläggningstillgångar": { + "account_number": "8851" + }, + "Förändring av överavskrivningar, byggnader och markanläggningar": { + "account_number": "8852" + }, + "Förändring av överavskrivningar, maskiner och inventarier": { + "account_number": "8853" + } + }, + "886 Förändring av ersättningsfond": { + "is_group": 1, + "Förändring av ersättningsfond": { + "account_number": "8860" + }, + "Avsättning till ersättningsfond för inventarier": { + "account_number": "8861" + }, + "Avsättning till ersättningsfond för byggnader och markanläggningar": { + "account_number": "8862" + }, + "Avsättning till ersättningsfond för djurlager i jordbruk och rensku00f6tsel": { + "account_number": "8864" + }, + "Ianspråktagande av ersättningsfond för avskrivningar": { + "account_number": "8865" + }, + "Ianspråktagande av ersättningsfond för annat än avskrivningar": { + "account_number": "8866" + }, + "Återföring från ersättningsfond": { + "account_number": "8869" + } + }, + "889 Övriga bokslutsdispositioner": { + "is_group": 1, + "Övriga bokslutsdispositioner": { + "account_number": "8890" + }, + "Nedskrivningar av konsolideringskaraktär av anläggningstillgångar": { + "account_number": "8892" + }, + "Förändring av lagerreserv": { + "account_number": "8896" + }, + "Övriga bokslutsdispositioner övriga": { + "account_number": "8899" + } + } + }, + "89 Skatter och årets resultat": { + "is_group": 1, + "891 Skatt som belastar årets resultat": { + "is_group": 1, + "Skatt som belastar årets resultat": { + "account_number": "8910" + } + }, + "892 Skatt på grund av ändrad beskattning": { + "is_group": 1, + "Skatt på grund av ändrad beskattning": { + "account_number": "8920" + } + }, + "893 Restituerad skatt": { + "is_group": 1, + "Restituerad skatt": { + "account_number": "8930" + } + }, + "894 Uppskjuten skatt": { + "is_group": 1, + "Uppskjuten skatt": { + "account_number": "8940" + } + }, + "898 Övriga skatter": { + "is_group": 1, + "Övriga skatter": { + "account_number": "8980" + } + }, + "899 Resultat": { + "is_group": 1, + "Resultat": { + "account_number": "8990" + }, + "Årets resultat": { + "account_number": "8999" + } + } + } + }, + "9 Eget Kapital": { + "root_type": "Equity", + "is_group": 1, + "90 Eget Kapital": { + "account_type": "Equity", + "is_group": 1, + "901 Eget kapital, delägare 1": { + "is_group": 1, + "Eget kapital": { + "account_number": "9010", + "account_type": "Equity" + }, + "Egna varuuttag": { + "account_number": "9011", + "account_type": "Equity" + }, + "Övriga egna uttag": { + "account_number": "9013", + "account_type": "Equity" + }, + "Årets kapitaltillskott": { + "account_number": "9017", + "account_type": "Equity" + }, + "Övriga egna insättningar": { + "account_number": "9018", + "account_type": "Equity" + }, + "Årets resultat": { + "account_number": "9019", + "account_type": "Equity" + } + }, + "902 Eget kapital, delägare 2": { + "is_group": 1, + "Eget kapital": { + "account_number": "9020", + "account_type": "Equity" + }, + "Egna varuuttag": { + "account_number": "9021", + "account_type": "Equity" + }, + "Övriga egna uttag": { + "account_number": "9023", + "account_type": "Equity" + }, + "Årets kapitaltillskott": { + "account_number": "9027", + "account_type": "Equity" + }, + "Övriga egna insättningar": { + "account_number": "9028", + "account_type": "Equity" + }, + "Årets resultat": { + "account_number": "9029", + "account_type": "Equity" + } + }, + "903 Eget kapital, delägare 3": { + "is_group": 1, + "Eget kapital": { + "account_number": "9030", + "account_type": "Equity" + }, + "Egna varuuttag": { + "account_number": "9031", + "account_type": "Equity" + }, + "Övriga egna uttag": { + "account_number": "9033", + "account_type": "Equity" + }, + "Årets kapitaltillskott": { + "account_number": "9037", + "account_type": "Equity" + }, + "Övriga egna insättningar": { + "account_number": "9038", + "account_type": "Equity" + }, + "Årets resultat": { + "account_number": "9039", + "account_type": "Equity" + } + }, + "904 Eget kapital, delägare 4": { + "is_group": 1, + "Eget kapital": { + "account_number": "9040", + "account_type": "Equity" + }, + "Egna varuuttag": { + "account_number": "9041", + "account_type": "Equity" + }, + "Övriga egna uttag": { + "account_number": "9043", + "account_type": "Equity" + }, + "Årets kapitaltillskott": { + "account_number": "9047", + "account_type": "Equity" + }, + "Övriga egna insättningar": { + "account_number": "9048", + "account_type": "Equity" + }, + "Årets resultat": { + "account_number": "9049", + "account_type": "Equity" + } + }, + "905 Avsättning till expansionsfond": { + "is_group": 1, + "Avsättning till expansionsfond": { + "account_number": "9050" + } + }, + "906 Eget kapital i ideella föreningar, stiftelser och registrerade trossamfund": { + "is_group": 1, + "Eget kapital i ideella föreningar, stiftelser och registrerade trossamfund": { + "account_number": "9060", + "account_type": "Equity" + }, + "Eget kapital/stiftelsekapital/grundkapital": { + "account_number": "9061" + }, + "Förändring i fond för verkligt värde": { + "account_number": "9065" + }, + "Värdesäkringsfond": { + "account_number": "9066" + }, + "Balanserad vinst eller förlust/balanserat kapital": { + "account_number": "9067" + }, + "Vinst eller förlust från föregående år": { + "account_number": "9068" + }, + "Årets resultat": { + "account_number": "9069" + } + }, + "907 Ändamålsbestämda medel": { + "is_group": 1, + "Ändamålsbestämda medel": { + "account_number": "9070", + "account_type": "Equity" + }, + "Ändamål 1": { + "account_number": "9071" + }, + "Ändamål 2": { + "account_number": "9072" + } + }, + "908 Bundet eget kapital": { + "is_group": 1, + "Bundet eget kapital": { + "account_number": "9080" + }, + "Aktiekapital": { + "account_number": "9081", + "account_type": "Equity" + }, + "Ej registrerat aktiekapital": { + "account_number": "9082" + }, + "Medlemsinsatser": { + "account_number": "9083", + "account_type": "Equity" + }, + "Förlagsinsatser": { + "account_number": "9084" + }, + "Uppskrivningsfond": { + "account_number": "9085" + }, + "Reservfond": { + "account_number": "9086", + "account_type": "Equity" + }, + "Bunden överkursfond": { + "account_number": "9087" + }, + "Fond för yttre underhåll": { + "account_number": "9088" + }, + "Fond för utvecklingsutgifter": { + "account_number": "9089" + } + }, + "909 Fritt eget kapital": { + "is_group": 1, + "Fritt eget kapital": { + "account_number": "9090", + "account_type": "Equity" + }, + "Balanserad vinst eller förlust": { + "account_number": "9091", + "account_type": "Equity" + }, + "Mottagna/lämnade koncernbidrag": { + "account_number": "9092" + }, + "Erhållna aktieägartillskott": { + "account_number": "9093" + }, + "Egna aktier": { + "account_number": "9094" + }, + "Fusionsresultat": { + "account_number": "9095" + }, + "Fond för verkligt värde": { + "account_number": "9096" + }, + "Fri överkursfond": { + "account_number": "9097" + }, + "Vinst eller förlust från föregående år": { + "account_number": "9098", + "account_type": "Equity" + }, + "Årets resultat": { + "account_number": "9099", + "account_type": "Equity" + } + } + }, + "91 Obeskattade reserver": { + "root_type": "Equity", + "is_group": 1, + "911 Periodiseringsfonder": { + "account_type": "Equity", + "is_group": 1, + "Periodiseringsfonder": { + "account_number": "9110" + } + }, + "912 Periodiseringsfond 2020": { + "is_group": 1, + "Periodiseringsfond 2020": { + "account_number": "9120", + "account_type": "Equity" + }, + "Periodiseringsfond 2021": { + "account_number": "9121", + "account_type": "Equity" + }, + "Periodiseringsfond 2022": { + "account_number": "9122", + "account_type": "Equity" + }, + "Periodiseringsfond 2023": { + "account_number": "9123", + "account_type": "Equity" + }, + "Periodiseringsfond 2024": { + "account_number": "9124", + "account_type": "Equity" + }, + "Periodiseringsfond 2016": { + "account_number": "9126", + "account_type": "Equity" + }, + "Periodiseringsfond 2017": { + "account_number": "9127", + "account_type": "Equity" + }, + "Periodiseringsfond 2018": { + "account_number": "9128", + "account_type": "Equity" + }, + "Periodiseringsfond 2019": { + "account_number": "9129", + "account_type": "Equity" + } + }, + "913 Periodiseringsfond 2020": { + "is_group": 1, + "Periodiseringsfond 2020": { + "account_number": "9130", + "account_type": "Equity" + }, + "Periodiseringsfond 2021": { + "account_number": "9131", + "account_type": "Equity" + }, + "Periodiseringsfond 2022": { + "account_number": "9132", + "account_type": "Equity" + }, + "Periodiseringsfond 2023": { + "account_number": "9133", + "account_type": "Equity" + }, + "Periodiseringsfond 2024": { + "account_number": "9134", + "account_type": "Equity" + }, + "Periodiseringsfond 2016": { + "account_number": "9136", + "account_type": "Equity" + }, + "Periodiseringsfond 2017": { + "account_number": "9137", + "account_type": "Equity" + }, + "Periodiseringsfond 2018": { + "account_number": "9138", + "account_type": "Equity" + }, + "Periodiseringsfond 2019": { + "account_number": "9139", + "account_type": "Equity" + } + }, + "915 Ackumulerade överavskrivningar": { + "is_group": 1, + "Ackumulerade överavskrivningar": { + "account_number": "9150", + "account_type": "Equity" + }, + "Ackumulerade överavskrivningar på immateriella anläggningstillgångar": { + "account_number": "9151" + }, + "Ackumulerade överavskrivningar på byggnader och markanläggningar": { + "account_number": "9152" + }, + "Ackumulerade överavskrivningar på maskiner och inventarier": { + "account_number": "9153" + } + }, + "916 Ersättningsfond": { + "is_group": 1, + "Ersättningsfond": { + "account_number": "9160" + }, + "Ersättningsfond maskiner och inventarier": { + "account_number": "9161" + }, + "Ersättningsfond byggnader och markanläggningar": { + "account_number": "9162" + }, + "Ersättningsfond för djurlager i jordbruk och renskötsel": { + "account_number": "9164" + } + }, + "919 Övriga obeskattade reserver": { + "is_group": 1, + "Övriga obeskattade reserver": { + "account_number": "9190" + }, + "Lagerreserv": { + "account_number": "9196" + }, + "Övriga obeskattade reserver övriga": { + "account_number": "9199" + } + } + }, + "92 Avsättningar": { + "account_type": "Equity", + "is_group": 1, + "921 Avsättningar för pensioner enligt tryggandelagen": { + "account_type": "Equity", + "is_group": 1, + "Avsättningar för pensioner enligt tryggandelagen": { + "account_number": "9210", + "account_type": "Equity" + } + }, + "922 Avsättningar för garantier": { + "account_type": "Equity", + "is_group": 1, + "Avsättningar för garantier": { + "account_number": "9220", + "account_type": "Equity" + } + }, + "923 Övriga avsättningar för pensioner och liknande förpliktelser": { + "account_type": "Equity", + "is_group": 1, + "Övriga avsättningar för pensioner och liknande förpliktelser": { + "account_number": "9230" + } + }, + "924 Avsättningar för uppskjutna skatter": { + "is_group": 1, + "Avsättningar för uppskjutna skatter": { + "account_number": "9240" + } + }, + "925 Övriga avsättningar för skatter": { + "is_group": 1, + "Övriga avsättningar för skatter": { + "account_number": "9250" + }, + "Avsättningar för tvistiga skatter": { + "account_number": "9252" + }, + "Avsättningar särskild löneskatt, deklarationspost": { + "account_number": "9253" + } + }, + "929 Övriga avsättningar": { + "account_type": "Equity", + "is_group": 1, + "Övriga avsättningar": { + "account_number": "9290", + "account_type": "Equity" + } + } + } + } + + } +} diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/sn_plan_comptable.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/sn_plan_comptable.json new file mode 100644 index 00000000000..4acd0d1fd77 --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/sn_plan_comptable.json @@ -0,0 +1,1919 @@ +{ + "country_code": "sn", + "name": "Syscohada - Plan Comptable", + "tree": { + "1-Comptes de ressources durables": { + "10-Capital": { + "101-Capital social": { + "1011-Capital souscrit, non appel\u00e9": {}, + "1012-Capital souscrit, appel\u00e9, non vers\u00e9": {}, + "1013-Capital souscrit, appel\u00e9, vers\u00e9, non amorti": {}, + "1014-Capital souscrit, appel\u00e9, vers\u00e9, amorti": {}, + "1018-Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": {} + }, + "102-Capital par dotation": { + "1021-Dotation initiale": {}, + "1022-Dotations compl\u00e9mentaires": {}, + "1028-Autres dotations": {} + }, + "103-Capital personnel": {}, + "104-Compte de l\u2019exploitant": { + "1041-Apports temporaires": {}, + "1042-Op\u00e9rations courantes": {}, + "1043-R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": {}, + "1047-Pr\u00e9l\u00e8vements d\u2019autoconsommation": {}, + "1048-Autres pr\u00e9l\u00e8vements": {} + }, + "105-Primes li\u00e9es au capital social": { + "1051-Primes d\u2019\u00e9mission": {}, + "1052-Primes d\u2019apport": {}, + "1053-Primes de fusion": {}, + "1054-Primes de conversion": {}, + "1058-Autres primes": {} + }, + "106-\u00c9carts de r\u00e9\u00e9valuation": { + "1061-\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": {}, + "1062-\u00c9carts de r\u00e9\u00e9valuation libre": {} + }, + "109-Apporteurs, capital souscrit, non appel\u00e9": {} + }, + "11-R\u00e9serves": { + "111-R\u00e9serve l\u00e9gale": {}, + "112-R\u00e9serves statutaires ou contractuelles": {}, + "113-R\u00e9serves r\u00e9glement\u00e9es": { + "1131-R\u00e9serves de plus-values nettes \u00e0 long terme": {}, + "1132-R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {}, + "1133-R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": {}, + "1134-R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": {}, + "1135-Autres r\u00e9serves r\u00e9glement\u00e9es": {} + }, + "118-Autres r\u00e9serves": { + "1181-R\u00e9serves facultatives": {}, + "1188-R\u00e9serves diverses": {} + } + }, + "12-Report \u00e0 nouveau": { + "121-Report \u00e0 nouveau cr\u00e9diteur": {}, + "129-Report \u00e0 nouveau d\u00e9biteur": { + "1291-Perte nette \u00e0 reporter": {}, + "1292-Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": {} + } + }, + "13-R\u00e9sultat net de l\u2019exercice": { + "130-R\u00e9sultat en instance d\u2019affectation": { + "1301-R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": {}, + "1309-R\u00e9sultat en instance d\u2019affectation : perte": {} + }, + "131-R\u00e9sultat net : b\u00e9n\u00e9fice": {}, + "132-Marge commerciale (MC)": {}, + "133-Valeur ajout\u00e9e (VA)": {}, + "134-Exc\u00e9dent brut d\u2019exploitation (EBE)": {}, + "135-R\u00e9sultat d\u2019exploitation (RE)": {}, + "136-R\u00e9sultat financier (RF)": {}, + "137-R\u00e9sultat des activit\u00e9s ordinaires (RAO)": {}, + "138-R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "1381-R\u00e9sultat de fusion": {}, + "1382-R\u00e9sultat d\u2019apport partiel d\u2019actif": {}, + "1383-R\u00e9sultat de scission": {}, + "1384-R\u00e9sultat de liquidation": {} + }, + "139-R\u00e9sultat net : perte": {} + }, + "14-Subventions d\u2019investissement": { + "141-Subventions d\u2019\u00e9quipement": { + "1411-\u00c9tat": {}, + "1412-R\u00e9gions": {}, + "1413-D\u00e9partements": {}, + "1414-Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": {}, + "1415-Entit\u00e9s publiques ou mixtes": {}, + "1416-Entit\u00e9s et organismes priv\u00e9s": {}, + "1417-Organismes internationaux": {}, + "1418-Autres": {} + }, + "148-Autres subventions d\u2019investissement": {} + }, + "15-Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "151-Amortissements d\u00e9rogatoires": {}, + "152-Plus-values de cession \u00e0 r\u00e9investir": {}, + "153-Fonds r\u00e9glement\u00e9s": { + "1531-Fonds National": {}, + "1532-Pr\u00e9l\u00e8vement pour le Budget": {} + }, + "154-Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": {}, + "155-Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "1551-Reconstitution des gisements miniers et p\u00e9troliers": {} + }, + "156-Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "1561-Hausse de prix": {}, + "1562-Fluctuation des cours": {} + }, + "157-Provisions pour investissement": {}, + "158-Autres provisions et fonds r\u00e9glement\u00e9s": {} + }, + "16-Emprunts et dettes assimil\u00e9es": { + "161-Emprunts obligataires": { + "1611-Emprunts obligataires ordinaires": {}, + "1612-Emprunts obligataires convertibles en actions": {}, + "1613-Emprunts obligataires remboursables en actions": {}, + "1618-Autres emprunts obligataires": {} + }, + "162-Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "163-Avances re\u00e7ues de l\u2019\u00c9tat": {}, + "164-Avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "165-D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "1651-D\u00e9p\u00f4ts": {}, + "1652-Cautionnements": {} + }, + "166-Int\u00e9r\u00eats courus": { + "1661-Sur emprunts obligataires": {}, + "1662-Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "1663-Sur avances re\u00e7ues de l\u2019\u00c9tat": {}, + "1664-Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "1665-Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": {}, + "1667-Sur avances assorties de conditions particuli\u00e8res": {}, + "1668-Sur autres emprunts et dettes": {} + }, + "167-Avances assorties de conditions particuli\u00e8res": { + "1671-Avances bloqu\u00e9es pour augmentation du capital": {}, + "1672-Avances conditionn\u00e9es par l\u2019\u00c9tat": {}, + "1673-Avances conditionn\u00e9es par les autres organismes africains": {}, + "1674-Avances conditionn\u00e9es par les organismes internationaux": {} + }, + "168-Autres emprunts et dettes": { + "1681-Rentes viag\u00e8res capitalis\u00e9es": {}, + "1682-Billets de fonds": {}, + "1683-Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": {}, + "1684-Emprunts participatifs": {}, + "1685-Participation des travailleurs aux b\u00e9n\u00e9fices": {}, + "1686-Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": {} + } + }, + "17-Dettes de location acquisition": { + "172-Dettes de location acquisition / cr\u00e9dit bail immobilier": {}, + "173-Dettes de location acquisition / cr\u00e9dit bail mobilier": {}, + "174-Dettes de location acquisition / location de vente": {}, + "176-Int\u00e9r\u00eats courus": { + "1762-Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": {}, + "1763-Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": {}, + "1764-Sur dettes de location acquisition / location-vente": {}, + "1768-Sur autres dettes de location acquisition": {} + }, + "178-Autres dettes de location acquisition": {} + }, + "18-Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "181-Dettes li\u00e9es \u00e0 des participations": { + "1811-Dettes li\u00e9es \u00e0 des participations (groupe)": {}, + "1812-Dettes li\u00e9es \u00e0 des participations (hors groupe)": {} + }, + "182-Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "183-Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": {}, + "184-Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "185-Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "186-Comptes de liaison charges": {}, + "187-Comptes de liaison produits": {}, + "188-Comptes de liaison des soci\u00e9t\u00e9s en participation": {} + }, + "19-Provisions pour risques et charges": { + "191-Provisions pour litiges": {}, + "192-Provisions pour garanties donn\u00e9es aux clients": {}, + "193-Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": {}, + "194-Provisions pour pertes de change": {}, + "195-Provisions pour imp\u00f4ts": {}, + "196-Provisions pour pensions et obligations similaires": { + "1961-Provisions pour pensions et obligations similaires engagement de retraite": {}, + "1962-Actif du r\u00e9gime de retraite": {} + }, + "197-Provisions pour restructuration": {}, + "198-Autres provisions pour risques et charges": { + "1981-Provisions pour amendes et p\u00e9nalit\u00e9s": {}, + "1983-Provisions pour propre assureur": {}, + "1984-Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "1985-Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": {}, + "1988-Provisions pour divers risques et charges": {} + } + }, + "root_type": "Equity" + }, + "2-Comptes d\u2019actif immobilis\u00e9": { + "21-Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "211-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "212-Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "2121-Brevets": { + "account_type": "Fixed Asset" + }, + "2122-Licences": { + "account_type": "Fixed Asset" + }, + "2123-Concessions de service public": { + "account_type": "Fixed Asset" + }, + "2128-Autres concessions et droits similaires": { + "account_type": "Fixed Asset" + } + }, + "213-Logiciels et sites internet": { + "account_type": "Fixed Asset", + "2131-Logiciels": { + "account_type": "Fixed Asset" + }, + "2132-Sites internet": { + "account_type": "Fixed Asset" + } + }, + "214-Marques": { + "account_type": "Fixed Asset" + }, + "215-Fonds commercial": { + "account_type": "Fixed Asset" + }, + "216-Droit au bail": { + "account_type": "Fixed Asset" + }, + "217-Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset" + }, + "218-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "2181-Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset" + }, + "2182-Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset" + }, + "2183-Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset" + }, + "2184-Co\u00fbts des franchises": { + "account_type": "Fixed Asset" + }, + "2188-Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset" + } + }, + "219-Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "2191-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "2193-Logiciels et internet": { + "account_type": "Fixed Asset" + }, + "2198-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset" + } + } + }, + "22-Terrains": { + "account_type": "Fixed Asset", + "221-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "2211-Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset" + }, + "2212-Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset" + }, + "2218-Autres terrains": { + "account_type": "Fixed Asset" + } + }, + "222-Terrains nus": { + "account_type": "Fixed Asset", + "2221-Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset" + }, + "2228-Autres terrains nus": { + "account_type": "Fixed Asset" + } + }, + "223-Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "2231-Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset" + }, + "2232-Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset" + }, + "2234-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset" + }, + "2235-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset" + }, + "2238-Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset" + } + }, + "224-Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "2241-Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset" + }, + "2245-Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset" + }, + "2248-Autres travaux": { + "account_type": "Fixed Asset" + } + }, + "225-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "2251-Carri\u00e8res": { + "account_type": "Fixed Asset" + } + }, + "226-Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "2261-Parkings": { + "account_type": "Fixed Asset" + } + }, + "227-Terrains mis en concession": { + "account_type": "Fixed Asset" + }, + "228-Autres terrains": { + "account_type": "Fixed Asset", + "2281-Terrains immeubles de placement": { + "account_type": "Fixed Asset" + }, + "2285-Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset" + }, + "2286-Terrains de location acquisition": { + "account_type": "Fixed Asset" + }, + "2288-Divers terrains": { + "account_type": "Fixed Asset" + } + }, + "229-Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "2291-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset" + }, + "2292-Terrains nus": { + "account_type": "Fixed Asset" + }, + "2295-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset" + }, + "2298-Autres terrains": { + "account_type": "Fixed Asset" + } + } + }, + "23-B\u00e2timents, installations techniques et agencements": { + "231-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "2311-B\u00e2timents industriels": {}, + "2312-B\u00e2timents agricoles": {}, + "2313-B\u00e2timents administratifs et commerciaux": {}, + "2314-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2315-B\u00e2timents immeubles de placement": {}, + "2316-B\u00e2timents de location acquisition": {} + }, + "232-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "2321-B\u00e2timents industriels": {}, + "2322-B\u00e2timents agricoles": {}, + "2323-B\u00e2timents administratifs et commerciaux": {}, + "2324-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2325-B\u00e2timents immeubles de placement": {}, + "2326-B\u00e2timents de location acquisition": {} + }, + "233-Ouvrages d\u2019infrastructure": { + "2331-Voies de terre": {}, + "2332-Voies de fer": {}, + "2333-Voies d\u2019eau": {}, + "2334-Barrages, Digues": {}, + "2335-Pistes d\u2019a\u00e9rodrome": {}, + "2338-Autres ouvrages d\u2019infrastructures": {} + }, + "234-Am\u00e9nagements, agencements et installations techniques": { + "2341-Installations complexes sp\u00e9cialis\u00e9es sur sol propre": {}, + "2342-Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": {}, + "2343-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": {}, + "2344-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": {}, + "2345-Am\u00e9nagements et agencements des b\u00e2timents": {} + }, + "235-Am\u00e9nagements de bureaux": { + "2351-Installations g\u00e9n\u00e9rales": {}, + "2358-Autres am\u00e9nagements de bureaux": {} + }, + "237-B\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "238-Autres installations et agencements": {}, + "239-B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "2391-B\u00e2timents en cours": {}, + "2392-Installations en cours": {}, + "2393-Ouvrages d\u2019infrastructure en cours": {}, + "2394-Am\u00e9nagements et agencements et installations techniques en cours": {}, + "2395-Am\u00e9nagements de bureaux en cours": {}, + "2398-Autres installations et agencements en cours": {} + } + }, + "24-Mat\u00e9riel, mobilier et actifs biologiques": { + "241-Mat\u00e9riel et outillage industriel et commercial": { + "2411-Mat\u00e9riel industriel": {}, + "2412-Outillage industriel": {}, + "2413-Mat\u00e9riel commercial": {}, + "2414-Outillage commercial": {}, + "2416-Mat\u00e9riel & outillage industriel et commercial de location-acquisition": {} + }, + "242-Mat\u00e9riel et outillage agricole": { + "2421-Mat\u00e9riel agricole": {}, + "2422-Outillage agricole": {}, + "2426-Mat\u00e9riel & outillage agricole de location-acquisition": {} + }, + "243-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "244-Mat\u00e9riel et mobilier": { + "2441-Mat\u00e9riel de bureau": {}, + "2442-Mat\u00e9riel informatique": {}, + "2443-Mat\u00e9riel bureautique": {}, + "2444-Mobilier de bureau": {}, + "2445-Mat\u00e9riel et mobilier immeubles de placement": {}, + "2446-Mat\u00e9riel et mobilier de location acquisition": {}, + "2447-Mat\u00e9riel et mobilier des logements du personnel": {} + }, + "245-Mat\u00e9riel de transport": { + "2451-Mat\u00e9riel automobile": {}, + "2452-Mat\u00e9riel ferroviaire": {}, + "2453-Mat\u00e9riel fluvial, lagunaire": {}, + "2454-Mat\u00e9riel naval": {}, + "2455-Mat\u00e9riel a\u00e9rien": {}, + "2456-Mat\u00e9riel de transport de location-acquisition": {}, + "2457-Mat\u00e9riel hippomobile": {}, + "2458-Autres mat\u00e9riels de transport": {} + }, + "246-Actifs biologiques": { + "2461-Cheptel, animaux de trait": {}, + "2462-Cheptel, animaux reproducteurs": {}, + "2463-Animaux de garde": {}, + "2465-Plantations agricoles": {}, + "2468-Autres actifs biologiques": {} + }, + "247-Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "2471-Agencements et am\u00e9nagements du mat\u00e9riel": {}, + "2472-Agencements et am\u00e9nagements des actifs biologiques": {}, + "2478-Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": {} + }, + "248-Autres mat\u00e9riels et mobiliers": { + "2481-Collections et \u0153uvres d\u2019art": {}, + "2488-Divers mat\u00e9riels mobiliers": {} + }, + "249-Mat\u00e9riels et actifs biologiques en cours": { + "2491-Mat\u00e9riel et outillage industriel et commercial": {}, + "2492-Mat\u00e9riel et outillage agricole": {}, + "2493-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2494-Mat\u00e9riel et mobilier de bureau": {}, + "2495-Mat\u00e9riel de transport": {}, + "2496-Actifs biologiques": {}, + "2497-Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": {}, + "2498-Autres mat\u00e9riels et actifs biologiques en cours": {} + } + }, + "25-Avances et acomptes vers\u00e9s sur immobilisations": { + "251-Avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "252-Avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "26-Titres de participation": { + "261-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "262-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "263-Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "265-Participations dans des organismes professionnels": {}, + "266-Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {}, + "268-Autres titres de participation": {} + }, + "27-Autres immobilisations financi\u00e8res": { + "271-Pr\u00eats et cr\u00e9ances": { + "2711-Pr\u00eats participatifs": {}, + "2712-Pr\u00eats aux associ\u00e9s": {}, + "2713-Billets de fonds": {}, + "2714-Titres pr\u00eat\u00e9s": {}, + "2718-Autres pr\u00eats et cr\u00e9ances": {} + }, + "272-Pr\u00eats au personnel": { + "2721-Pr\u00eats immobiliers": {}, + "2722-Pr\u00eats mobiliers et d\u2019installation": {}, + "2728-Autres pr\u00eats au personnel": {} + }, + "273-Cr\u00e9ances sur l\u2019\u00c9tat": { + "2731-Retenues de garantie": {}, + "2733-Fonds r\u00e9glement\u00e9": {}, + "2734-Cr\u00e9ances sur le conc\u00e9dant": {}, + "2738-Autres cr\u00e9ances sur l\u2019\u00c9tat": {} + }, + "274-Titres immobilis\u00e9s": { + "2741-Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": {}, + "2742-Titres participatifs": {}, + "2743-Certificats d\u2019investissement": {}, + "2744-Parts de fonds commun de placement (FCP)": {}, + "2745-Obligations": {}, + "2746-Actions ou parts propres": {}, + "2748-Autres titres immobilis\u00e9s": {} + }, + "275-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "2751-D\u00e9p\u00f4ts pour loyers d\u2019avance": {}, + "2752-D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": {}, + "2753-D\u00e9p\u00f4ts pour l\u2019eau": {}, + "2754-D\u00e9p\u00f4ts pour le gaz": {}, + "2755-D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": {}, + "2756-Cautionnements sur march\u00e9s publics": {}, + "2757-Cautionnements sur autres op\u00e9rations": {}, + "2758-Autres d\u00e9p\u00f4ts et cautionnements": {} + }, + "276-Int\u00e9r\u00eats courus": { + "2761-Pr\u00eats et cr\u00e9ances non commerciales": {}, + "2762-Pr\u00eats au personnel": {}, + "2763-Cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2764-Titres immobilis\u00e9s": {}, + "2765-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2767-Cr\u00e9ances rattach\u00e9es \u00e0 des participations": {}, + "2768-Immobilisations financi\u00e8res diverses": {} + }, + "277-Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "2771-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": {}, + "2772-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": {}, + "2773-Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "2774-Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {} + }, + "278-Immobilisations financi\u00e8res diverses": { + "2781-Cr\u00e9ances diverses groupe": {}, + "2782-Cr\u00e9ances diverses hors groupe": {}, + "2784-Banques d\u00e9p\u00f4ts \u00e0 terme": {}, + "2785-Or et m\u00e9taux pr\u00e9cieux": {}, + "2788-Autres immobilisations financi\u00e8res": {} + } + }, + "28-Amortissements": { + "account_type": "Accumulated Depreciation", + "281-Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "2811-Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation" + }, + "2812-Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation" + }, + "2813-Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation" + }, + "2814-Amortissements des marques": { + "account_type": "Accumulated Depreciation" + }, + "2815-Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation" + }, + "2816-Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation" + }, + "2817-Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation" + }, + "2818-Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation" + } + }, + "282-Amortissements des terrains": { + "2824-Amortissements des travaux de mise en valeur des terrains": {} + }, + "283-Amortissements des b\u00e2timents, installations techniques et agencements": { + "2831-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2832-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2833-Amortissements des ouvrages d\u2019infrastructure": {}, + "2834-Amortissements des am\u00e9nagements, agencements et installations techniques": {}, + "2835-Amortissements des am\u00e9nagements de bureaux": {}, + "2837-Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2838-Amortissements des autres installations et agencements": {} + }, + "284-Amortissements du mat\u00e9riel": { + "2841-Amortissements du mat\u00e9riel et outillage industriel et commercial": {}, + "2842-Amortissements du mat\u00e9riel et outillage agricole": {}, + "2843-Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2844-Amortissements du mat\u00e9riel et mobilier": {}, + "2845-Amortissements du mat\u00e9riel de transport": {}, + "2846-Amortissements des actifs biologiques": {}, + "2847-Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2848-Amortissements des autres mat\u00e9riels": {} + } + }, + "29-D\u00e9pr\u00e9ciations des immobilisations": { + "291-D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "2911-D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": {}, + "2912-D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": {}, + "2913-D\u00e9pr\u00e9ciations des logiciels et sites internet": {}, + "2914-D\u00e9pr\u00e9ciations des marques": {}, + "2915-D\u00e9pr\u00e9ciations du fonds commercial": {}, + "2916-D\u00e9pr\u00e9ciations du droit au bail": {}, + "2917-D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": {}, + "2918-D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": {}, + "2919-D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": {} + }, + "292-D\u00e9pr\u00e9ciations des terrains": { + "2921-D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": {}, + "2922-D\u00e9pr\u00e9ciations des terrains nus": {}, + "2923-D\u00e9pr\u00e9ciations des terrains b\u00e2tis": {}, + "2924-D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": {}, + "2925-D\u00e9pr\u00e9ciations des terrains de gisement": {}, + "2926-D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": {}, + "2927-D\u00e9pr\u00e9ciations des terrains mis en concession": {}, + "2928-D\u00e9pr\u00e9ciations des autres terrains": {}, + "2929-D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": {} + }, + "293-D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "2931-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2932-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2933-D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": {}, + "2934-D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": {}, + "2935-D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": {}, + "2937-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2938-D\u00e9pr\u00e9ciations des autres installations et agencements": {}, + "2939-D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": {} + }, + "294-D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "2941-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": {}, + "2942-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": {}, + "2943-D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2944-D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": {}, + "2945-D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": {}, + "2946-D\u00e9pr\u00e9ciations des actifs biologiques": {}, + "2947-D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2948-D\u00e9pr\u00e9ciations des autres mat\u00e9riels": {}, + "2949-D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": {} + }, + "295-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "2951-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "2952-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "296-D\u00e9pr\u00e9ciations des titres de participation": { + "2961-D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "2962-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "2963-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "2965-D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": {}, + "2966-D\u00e9pr\u00e9ciations des parts dans des GIE": {}, + "2968-D\u00e9pr\u00e9ciations des autres titres de participation": {} + }, + "297-D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "2971-D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": {}, + "2972-D\u00e9pr\u00e9ciations des pr\u00eats au personnel": {}, + "2973-D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2974-D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": {}, + "2975-D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2977-D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": {}, + "2978-D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": {} + } + }, + "root_type": "Asset" + }, + "3-Comptes de Stocks": { + "31-Marchandises": { + "311-Marchandises A": { + "3111-Marchandises A1": {}, + "3112-Marchandises A2": {} + }, + "312-Marchandises B": { + "3121-Marchandises B1": {}, + "3122-Marchandises B2": {} + }, + "313-Actifs biologiques": { + "3131-Animaux": {}, + "3132-V\u00e9g\u00e9taux": {} + }, + "318-Marchandises hors activit\u00e9s ordinaires (HAO)": {} + }, + "32-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "321-Mati\u00e8res A": {}, + "322-Mati\u00e8res B": {}, + "323-Fournitures (A, B)": {} + }, + "33-Autres approvisionnements": { + "331-Mati\u00e8res consommables": {}, + "332-Fournitures d\u2019atelier et d\u2019usine": {}, + "333-Fournitures de magasin": {}, + "334-Fournitures de bureau": {}, + "335-Emballages": { + "3351-Emballages perdus": {}, + "3352-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "3353-Emballages \u00e0 usage mixte": {}, + "3358-Autres emballages": {} + }, + "338-Autres mati\u00e8res": {} + }, + "34-Produits en cours": { + "341-Produits en cours": { + "3411-Produits en cours P1": {}, + "3412-Produits en cours P2": {} + }, + "342-Travaux en cours": { + "3421-Travaux en cours T1": {}, + "3422-Travaux en cours T2": {} + }, + "343-Produits interm\u00e9diaires en cours": { + "3431-Produits interm\u00e9diaires A": {}, + "3432-Produits interm\u00e9diaires B": {} + }, + "344-Produits r\u00e9siduels en cours": { + "3441-Produits r\u00e9siduels A": {}, + "3442-Produits r\u00e9siduels B": {} + }, + "345-Actifs biologiques en cours": { + "3451-Animaux": {}, + "3452-V\u00e9g\u00e9taux": {} + } + }, + "35-Services en cours": { + "351-\u00c9tudes en cours": { + "3511-\u00c9tudes en cours E1": {}, + "3512-\u00c9tudes en cours E2": {} + }, + "352-Prestations de services en cours": { + "3521-Prestations de services S1": {}, + "3522-Prestations de services S2": {} + } + }, + "36-Produits finis": { + "361-Produits finis A": {}, + "362-Produits finis B": {}, + "363-Actifs biologiques": { + "3631-Animaux": {}, + "3632-V\u00e9g\u00e9taux": {}, + "3638-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "37-Produits interm\u00e9diaires et r\u00e9siduels": { + "371-Produits interm\u00e9diaires": { + "3711-Produits interm\u00e9diaires A": {}, + "3712-Produits interm\u00e9diaires B": {} + }, + "372-Produits r\u00e9siduels": { + "3721-D\u00e9chets": {}, + "3722-Rebuts": {}, + "3723-Mati\u00e8res de R\u00e9cup\u00e9ration": {} + }, + "373-Actifs biologiques": { + "3731-Animaux": {}, + "3732-V\u00e9g\u00e9taux": {}, + "3738-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "38-Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "381-Marchandises en cours de route": {}, + "382-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": {}, + "383-Autres approvisionnements en cours de route": {}, + "386-Produits finis en cours de route": {}, + "387-Stock en consignation ou en d\u00e9p\u00f4t": { + "3871-Stock en consignation": {}, + "3872-Stock en d\u00e9p\u00f4t": {} + }, + "388-Stock provenant d\u2019immobilisations mises hors service ou au rebut": {} + }, + "39-D\u00e9pr\u00e9ciations des stocks et encours de production": { + "391-D\u00e9pr\u00e9ciations des stocks de marchandises": {}, + "392-D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "393-D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": {}, + "394-D\u00e9pr\u00e9ciations des productions en cours": {}, + "395-D\u00e9pr\u00e9ciations des services en cours": {}, + "396-D\u00e9pr\u00e9ciations des stocks de produits finis": {}, + "397-D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": {}, + "398-D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": {} + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "409-Fournisseurs d\u00e9biteurs": { + "4091-Fournisseurs Avances et acomptes vers\u00e9s": {}, + "4092-Fournisseurs Groupe avances et acomptes vers\u00e9s": {}, + "4093-Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": {}, + "4094-Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": {}, + "4098-Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": {} + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "411-Clients": { + "4111-Clients": { + "account_type": "Receivable" + }, + "4112-Clients groupe": { + "account_type": "Receivable" + }, + "4114-Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable" + }, + "4115-Clients, organismes internationaux": { + "account_type": "Receivable" + }, + "4116-Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable" + }, + "4117-Client, retenues de garantie": { + "account_type": "Receivable" + }, + "4118-Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "412-Clients, effets \u00e0 recevoir en portefeuille": { + "4121-Clients, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4122-Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4124-\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4125-Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "413-Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "4131-Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable" + }, + "4132-Clients, effets impay\u00e9s": { + "account_type": "Receivable" + }, + "4133-Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable" + }, + "4138-Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "414-Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "4141-Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4142-Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable" + }, + "4146-Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4147-Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "415-Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable" + }, + "416-Cr\u00e9ances clients litigieuses ou douteuses": { + "4161-Cr\u00e9ances litigieuses": { + "account_type": "Receivable" + }, + "4162-Cr\u00e9ances douteuses": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "418-Clients, produits \u00e0 recevoir": { + "4181-Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable" + }, + "4186-Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "421-Personnel, avances et acomptes": { + "4211-Personnel, avances": {}, + "4212-Personnel, acomptes": {}, + "4213-Frais avanc\u00e9s et fournitures au personnel": {} + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "4311-Prestations familiales": {}, + "4312-Accidents de travail": {}, + "4313-Caisse de retraite obligatoire": {}, + "4314-Caisse de retraite facultative": {}, + "4318-Autres cotisations sociales": {} + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "4331-Mutuelle": {}, + "4332-Assurances retraite": {}, + "4333-Assurances et organismes de sant\u00e9": {} + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4387-Produits \u00e0 recevoir": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "443-\u00c9tat, TVA factur\u00e9e": { + "4431-TVA factur\u00e9e sur ventes": {}, + "4432-TVA factur\u00e9e sur prestations de services": {}, + "4433-TVA factur\u00e9e sur travaux": {}, + "4434-TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": {}, + "4435-TVA sur factures \u00e0 \u00e9tablir": {} + }, + "445-\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "4451-TVA r\u00e9cup\u00e9rable sur immobilisations": {}, + "4452-TVA r\u00e9cup\u00e9rable sur achats": {}, + "4453-TVA r\u00e9cup\u00e9rable sur transport": {}, + "4454-TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": {}, + "4455-TVA r\u00e9cup\u00e9rable sur factures non parvenues": {}, + "4456-TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": {} + }, + "448-\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "4486-Charges \u00e0 payer": {}, + "4487-Produits \u00e0 recevoir": {} + }, + "449-\u00c9tat, cr\u00e9ances et dettes diverses": { + "4491-\u00c9tat, obligations cautionn\u00e9es": {}, + "4492-\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": {}, + "4493-\u00c9tat, fonds de dotation \u00e0 recevoir": {}, + "4494-\u00c9tat, subventions investissement \u00e0 recevoir": {}, + "4495-\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": {}, + "4496-\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": {}, + "4497-\u00c9tat, avances sur subventions": {}, + "4499-\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": {} + } + }, + "45-Organismes internationaux (ACTIF)": { + "451-Op\u00e9rations avec les organismes africains": {}, + "452-Op\u00e9rations avec les autres organismes internationaux": {}, + "458-Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "4581-Organismes internationaux, fonds de dotation \u00e0 recevoir": {}, + "4582-Organismes internationaux, subventions \u00e0 recevoir": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "4613-Apporteurs, capital appel\u00e9, non vers\u00e9": {}, + "4614-Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": {}, + "4618-Apporteurs, titres \u00e0 \u00e9changer": {} + }, + "467-Apporteurs, restant d\u00fb sur capital appel\u00e9": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "4721-Cr\u00e9ances sur cessions de titres de placement": {}, + "4726-Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": {} + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "4731-Mandants": {}, + "4732-Mandataires": {}, + "4733-Commettants": {}, + "4734-Commissionnaires": {}, + "4739-\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "4747-Compte de r\u00e9partition p\u00e9riodique des produits": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "4751-Compte actif": { + "account_type": "Temporary" + } + }, + "476-Charges constat\u00e9es d\u2019avance": {}, + "478-\u00c9carts de conversion actif": { + "4781-Diminution des cr\u00e9ances d\u2019exploitation": {}, + "4782-Diminution des cr\u00e9ances financi\u00e8res": {}, + "4783-Augmentation des dettes d\u2019exploitation": {}, + "4784-Augmentation des dettes financi\u00e8res": {}, + "4786-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4788-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "485-Cr\u00e9ances sur cessions d\u2019immobilisations": { + "4851-En compte, immobilisations incorporelles": {}, + "4852-En compte, immobilisations corporelles": {}, + "4853-Effets \u00e0 recevoir, immobilisations incorporelles": {}, + "4854-Effets \u00e0 recevoir, immobilisations corporelles": {}, + "4855-Effets escompt\u00e9s non \u00e9chus": {}, + "4857-Retenues de garantie": {}, + "4858-Factures \u00e0 \u00e9tablir": {} + }, + "488-Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": {} + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "491-D\u00e9pr\u00e9ciations des comptes clients": { + "4911-Cr\u00e9ances litigieuses": {}, + "4912-Cr\u00e9ances douteuses": {} + }, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {}, + "496-D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "4962-Associ\u00e9s, comptes courants": {}, + "4963-Associ\u00e9s, op\u00e9rations faites en commun": {}, + "4966-Groupe, comptes courants": {} + }, + "497-D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": {}, + "498-D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "4985-Cr\u00e9ances sur cessions d\u2019immobilisations": {}, + "4986-Cr\u00e9ances sur cessions de titres de placement": {}, + "4988-Autres cr\u00e9ances HAO": {} + }, + "499-Provisions pour risques \u00e0 court terme": { + "4991-Sur op\u00e9rations d\u2019exploitation": {}, + "4997-Sur op\u00e9rations financi\u00e8res": {}, + "4998-Sur op\u00e9rations HAO": {} + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "401-Fournisseurs, dettes en compte": { + "4011-Fournisseurs": { + "account_type": "Payable" + }, + "4012-Fournisseurs groupe": { + "account_type": "Payable" + }, + "4013-Fournisseurs sous-traitants": { + "account_type": "Payable" + }, + "4016-Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable" + }, + "4017-Fournisseur, retenues de garantie": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "402-Fournisseurs, effets \u00e0 payer": { + "4021-Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable" + }, + "4022-Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable" + }, + "4023-Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "404-Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "4041-Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4042-Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable" + }, + "4046-Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4047-Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "408-Fournisseurs, factures non parvenues": { + "4081-Fournisseurs": { + "account_type": "Stock Received But Not Billed" + }, + "4082-Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed" + }, + "4083-Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed" + }, + "4086-Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "419-Clients cr\u00e9diteurs": { + "4191-Clients, avances et acomptes re\u00e7us": {}, + "4192-Clients groupe, avances et acomptes re\u00e7us": {}, + "4194-Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": {}, + "4198-Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": {} + } + }, + "42-Personnel (PASSIF)": { + "422-Personnel, r\u00e9mun\u00e9rations dues": {}, + "423-Personnel, oppositions, saisies-arr\u00eats": { + "4231-Personnel, oppositions": {}, + "4232-Personnel, saisies-arr\u00eats": {}, + "4233-Personnel, avis \u00e0 tiers d\u00e9tenteur": {} + }, + "424-Personnel, \u0153uvres sociales internes": { + "4241-Assistance m\u00e9dicale": {}, + "4242-Allocations familiales": {}, + "4245-Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": {}, + "4248-Autres \u0153uvres sociales internes": {} + }, + "425-Repr\u00e9sentants du personnel": { + "4251-D\u00e9l\u00e9gu\u00e9s du personnel": {}, + "4252-Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": {}, + "4258-Autres repr\u00e9sentants du personnel": {} + }, + "426-Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "4261-Participation aux b\u00e9n\u00e9fices": {}, + "4264-Participation au capital": {} + }, + "427-Personnel d\u00e9p\u00f4ts": {}, + "428-Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "4281-Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": {}, + "4286-Autres charges \u00e0 payer": {}, + "4287-Produits \u00e0 recevoir": {} + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4381-Charges sociales sur gratifications \u00e0 payer": {}, + "4382-Charges sociales sur cong\u00e9s \u00e0 payer": {}, + "4386-Autres charges \u00e0 payer": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "441-\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": {}, + "442-\u00c9tat, autres imp\u00f4ts et taxes": { + "4421-Imp\u00f4ts et taxes d\u2019\u00c9tat": {}, + "4422-Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": {}, + "4423-Imp\u00f4ts et taxes recouvrables sur des obligataires": {}, + "4424-Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": {}, + "4426-Droits de douane": {}, + "4428-Autres imp\u00f4ts et taxes": {} + }, + "444-\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "4441-\u00c9tat, TVA due": {}, + "4449-\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": {} + }, + "446-\u00c9tat, autres taxes sur le chiffre d\u2019affaires": {}, + "447-\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "4471-Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": {}, + "4472-Imp\u00f4ts sur salaires": {}, + "4473-Contribution nationale": {}, + "4474-Contribution nationale de solidarit\u00e9": {}, + "4478-Autres imp\u00f4ts et contributions": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "4611-Apporteurs, apports en nature": {}, + "4612-Apporteurs, apports en num\u00e9raire": {}, + "4615-Apporteurs, versements re\u00e7us sur augmentation de capital": {}, + "4616-Apporteurs, versements anticip\u00e9s": {}, + "4617-Apporteurs d\u00e9faillants": {}, + "4619-Apporteurs, capital \u00e0 rembourser": {} + }, + "462-Associ\u00e9s, comptes courants": { + "4621-Principal": {}, + "4626-Int\u00e9r\u00eats courus": {} + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "4631-Op\u00e9rations courantes": {}, + "4636-Int\u00e9r\u00eats courus": {} + }, + "465-Associ\u00e9s, dividendes \u00e0 payer": {}, + "466-Groupe, comptes courants": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "4711-D\u00e9biteurs divers": {}, + "4712-Cr\u00e9diteurs divers": {}, + "4713-Obligataires": {}, + "4715-R\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "4716-Compte d\u2019affacturage": {}, + "4717-D\u00e9biteurs divers retenues de garantie": {}, + "4718-Apport, compte de fusion et op\u00e9rations assimil\u00e9es": {}, + "4719-Bons de souscription d\u2019actions et d\u2019obligations": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "4746-Compte de r\u00e9partition p\u00e9riodique des charges": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "4752-Compte passif": {} + }, + "477-Produits constat\u00e9s d\u2019avance": {}, + "479-\u00c9carts de conversion passif": { + "4791-Augmentation des cr\u00e9ances d\u2019exploitation": {}, + "4792-Augmentation des cr\u00e9ances financi\u00e8res": {}, + "4793-Diminution des dettes d\u2019exploitation": {}, + "4794-Diminution des dettes financi\u00e8res": {}, + "4797-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4798-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "481-Fournisseurs d\u2019investissements": { + "4811-Immobilisations incorporelles": {}, + "4812-Immobilisations corporelles": {}, + "4813-Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": {}, + "4816-R\u00e9serve de propri\u00e9t\u00e9": {}, + "4817-Retenues de garantie": {}, + "4818-Factures non parvenues": {} + }, + "482-Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "4821-Immobilisations incorporelles": {}, + "4822-Immobilisations corporelles": {} + }, + "484-Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "4887-Produits": {} + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (PASSIF)": { + "490-D\u00e9pr\u00e9ciations des comptes fournisseurs": {}, + "492-D\u00e9pr\u00e9ciations des comptes personnel": {}, + "493-D\u00e9pr\u00e9ciations des comptes organismes sociaux": {}, + "494-D\u00e9pr\u00e9ciations des comptes \u00c9tat et collectivit\u00e9s publiques": {}, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {} + }, + "root_type": "Liability" + }, + "5-Comptes de tr\u00e9sorerie": { + "50-Titres de placement": { + "501-Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "5011-Titres du Tr\u00e9sor \u00e0 court terme": {}, + "5012-Titres d\u2019organismes financiers": {}, + "5013-Bons de caisse \u00e0 court terme": {}, + "5016-Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": {} + }, + "502-Actions": { + "5021-Actions ou parts propres": {}, + "5022-Actions cot\u00e9es": {}, + "5023-Actions non cot\u00e9es": {}, + "5024-Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": {}, + "5025-Autres actions": {}, + "5026-Frais d\u2019acquisition des actions": {} + }, + "503-Obligations": { + "5031-Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": {}, + "5032-Obligations cot\u00e9es": {}, + "5033-Obligations non cot\u00e9es": {}, + "5035-Autres obligations": {}, + "5036-Frais d\u2019acquisition des obligations": {} + }, + "504-Bons de souscription": { + "5042-Bons de souscription d\u2019actions": {}, + "5043-Bons de souscription d\u2019obligations": {} + }, + "505-Titres n\u00e9gociables hors r\u00e9gion": {}, + "506-Int\u00e9r\u00eats courus": { + "5061-Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": {}, + "5062-Actions": {}, + "5063-Obligations": {} + }, + "508-Autres titres de placement et cr\u00e9ances assimil\u00e9es": {} + }, + "51-Valeurs \u00e0 encaisser": { + "511-Effets \u00e0 encaisser": {}, + "512-Effets \u00e0 l\u2019encaissement": {}, + "513-Ch\u00e8ques \u00e0 encaisser": {}, + "514-Ch\u00e8ques \u00e0 l\u2019encaissement": {}, + "515-Cartes de cr\u00e9dit \u00e0 encaisser": {}, + "518-Autres valeurs \u00e0 l\u2019encaissement": { + "5181-Warrants": {}, + "5182-Billets de fonds": {}, + "5185-Ch\u00e8ques de voyage": {}, + "5186-Coupons \u00e9chus": {}, + "5187-Int\u00e9r\u00eats \u00e9chus des obligations": {} + } + }, + "52-Banques": { + "521-Banques locales": { + "5211-Banques en monnaie nationale": { + "account_type": "Bank" + }, + "5215-Banques en devises": { + "account_type": "Bank" + }, + "account_type": "Bank" + }, + "522-Banques autres \u00c9tats r\u00e9gion": {}, + "523-Banques autres \u00c9tats zone mon\u00e9taire": {}, + "524-Banques hors zone mon\u00e9taire": {}, + "525-Banques d\u00e9p\u00f4t \u00e0 terme": {}, + "526-Banques, int\u00e9r\u00eats courus": { + "5261-Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": {}, + "5267-Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": {} + } + }, + "53-\u00c9tablissements financiers et assimil\u00e9s": { + "531-Ch\u00e8ques postaux": {}, + "532-Tr\u00e9sor": {}, + "533-Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": {}, + "536-\u00c9tablissements financiers, int\u00e9r\u00eats courus": {}, + "538-Autres organismes financiers": {} + }, + "54-Instruments de tr\u00e9sorerie": { + "541-Options de taux d\u2019int\u00e9r\u00eat": {}, + "542-Options de taux de change": {}, + "543-Options de taux boursiers": {}, + "544-Instruments de march\u00e9s \u00e0 terme": {}, + "545-Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": {} + }, + "55-Instruments de monnaie \u00e9lectronique": { + "551-Monnaie \u00e9lectronique carte carburant": {}, + "552-Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": {}, + "553-Monnaie \u00e9lectronique carte p\u00e9age": {}, + "554-Porte-monnaie \u00e9lectronique": {}, + "558-Autres instruments de monnaies \u00e9lectroniques": {} + }, + "56-Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "561-Cr\u00e9dits de tr\u00e9sorerie": {}, + "564-Escompte de cr\u00e9dits de campagne": {}, + "565-Escompte de cr\u00e9dits ordinaires": {}, + "566-Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": {} + }, + "57-Caisse": { + "571-Caisse si\u00e8ge social": { + "5711-Caisse en monnaie nationale": {}, + "5712-Caisse en devises": {} + }, + "572-Caisse succursale A": { + "5721-En monnaie nationale": {}, + "5722-En devises": {} + }, + "573-Caisse succursale B": { + "5731-En monnaie nationale": {}, + "5732-En devises": {} + } + }, + "58-R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "581-R\u00e9gies d\u2019avance": {}, + "582-Accr\u00e9ditifs": {}, + "585-Virements de fonds": {}, + "588-Autres virements internes": {} + }, + "59-D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "590-D\u00e9pr\u00e9ciations des titres de placement": {}, + "591-D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": {}, + "592-D\u00e9pr\u00e9ciations des comptes banques": {}, + "593-D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": {}, + "594-D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": {}, + "599-Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": {} + }, + "root_type": "Asset" + }, + "6-Comptes de charges des activit\u00e9s ordinaires": { + "60-Achats et variations de stocks": { + "601-Achats de marchandises": { + "6011-Dans la R\u00e9gion": {}, + "6012-Hors R\u00e9gion": {}, + "6013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6015-Frais sur achats": {}, + "6019-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "602-Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "6021-Dans la R\u00e9gion": {}, + "6022-Hors R\u00e9gion": {}, + "6023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6025-Frais sur achats": {}, + "6029-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "603-Variations des stocks de biens achet\u00e9s": { + "6031-Variations des stocks de marchandises": {}, + "6032-Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "6033-Variations des stocks d\u2019autres approvisionnements": {} + }, + "604-Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "6041-Mati\u00e8res consommables": {}, + "6042-Mati\u00e8res combustibles": {}, + "6043-Produits d\u2019entretien": {}, + "6044-Fournitures d\u2019atelier et d\u2019usine": {}, + "6045-Frais sur achat": {}, + "6046-Fournitures de magasin": {}, + "6047-Fournitures de bureau": {}, + "6049-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "605-Autres achats": { + "6051-Fournitures non stockables Eau": {}, + "6052-Fournitures non stockables \u00c9lectricit\u00e9": {}, + "6053-Fournitures non stockables Autres \u00e9nergies": {}, + "6054-Fournitures d\u2019entretien non stockables": {}, + "6055-Fournitures de bureau non stockables": {}, + "6056-Achats de petit mat\u00e9riel et outillage": {}, + "6057-Achats d\u2019\u00e9tudes et prestations de services": {}, + "6058-Achats de travaux, mat\u00e9riels et \u00e9quipements": {}, + "6059-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "608-Achats d\u2019emballages": { + "6081-Emballages perdus": {}, + "6082-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "6083-Emballages \u00e0 usage mixte": {}, + "6085-Frais sur achats": {}, + "6089-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + } + }, + "61-Transports": { + "612-Transports sur ventes": {}, + "613-Transports pour le compte de tiers": {}, + "614-Transports du personnel": {}, + "616-Transports de plis": {}, + "618-Autres frais de transport": { + "6181-Voyages et d\u00e9placements": {}, + "6182-Transports entre \u00e9tablissements ou chantiers": {}, + "6183-Transports administratifs": {} + } + }, + "62-Services ext\u00e9rieurs": { + "621-Sous-traitance g\u00e9n\u00e9rale": {}, + "622-Locations, charges locatives": { + "6221-Locations de terrains": {}, + "6222-Locations de b\u00e2timents": {}, + "6223-Locations de mat\u00e9riels et outillages": {}, + "6224-Malis sur emballages": {}, + "6225-Locations d\u2019emballages": {}, + "6226-Fermages et loyers du foncier": {}, + "6228-Locations et charges locatives diverses": {} + }, + "623-Redevances de location acquisition": { + "6232-Cr\u00e9dit-bail immobilier": {}, + "6233-Cr\u00e9dit-bail mobilier": {}, + "6234-Location-vente": {}, + "6238-Autres contrats de location acquisition": {} + }, + "624-Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "6241-Entretien et r\u00e9parations des biens immobiliers": {}, + "6242-Entretien et r\u00e9parations des biens mobiliers": {}, + "6243-Maintenance": {}, + "6244-Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "6248-Autres entretiens et r\u00e9parations": {} + }, + "625-Primes d\u2019assurance": { + "6251-Assurances multirisques": {}, + "6252-Assurances mat\u00e9riel de transport": {}, + "6253-Assurances risques d\u2019exploitation": {}, + "6254-Assurances responsabilit\u00e9 du producteur": {}, + "6255-Assurances insolvabilit\u00e9 clients": {}, + "6257-Assurances transport sur ventes": {}, + "6258-Autres primes d\u2019assurances": {} + }, + "626-\u00c9tudes, recherches et documentation": { + "6261-\u00c9tudes et recherches": {}, + "6265-Documentation g\u00e9n\u00e9rale": {}, + "6266-Documentation technique": {} + }, + "627-Publicit\u00e9, publications, relations publiques": { + "6271-Annonces, insertions": {}, + "6272-Catalogues, imprim\u00e9s publicitaires": {}, + "6273-\u00c9chantillons": {}, + "6274-Foires et expositions": {}, + "6275-Publications": {}, + "6276-Cadeaux \u00e0 la client\u00e8le": {}, + "6277-Frais de colloques, s\u00e9minaires, conf\u00e9rences": {}, + "6278-Autres charges de publicit\u00e9 et relations publiques": {} + }, + "628-Frais de t\u00e9l\u00e9communications": { + "6281-Frais de t\u00e9l\u00e9phone": {}, + "6282-Frais de t\u00e9lex": {}, + "6283-Frais de t\u00e9l\u00e9copie": {}, + "6288-Autres frais de t\u00e9l\u00e9communications": {} + } + }, + "63-Autres services ext\u00e9rieurs": { + "631-Frais bancaires": { + "6311-Frais sur titres (vente, garde)": {}, + "6312-Frais sur effets": {}, + "6313-Location de coffres": {}, + "6314-Commissions d\u2019affacturage": {}, + "6315-Commissions sur cartes de cr\u00e9dit": {}, + "6316-Frais d\u2019\u00e9mission d\u2019emprunts": {}, + "6317-Frais sur instruments monnaie \u00e9lectronique": {}, + "6318-Autres frais bancaires": {} + }, + "632-R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "6322-Commissions et courtages sur ventes": {}, + "6324-Honoraires des professions r\u00e9glement\u00e9es": {}, + "6325-Frais d\u2019actes et de contentieux": {}, + "6326-R\u00e9mun\u00e9rations d\u2019affacturage": {}, + "6327-R\u00e9mun\u00e9rations des autres prestataires de services": {}, + "6328-Divers frais": {} + }, + "633-Frais de formation du personnel": {}, + "634-Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "6342-Redevances pour brevets, licences": {}, + "6343-Redevances pour logiciels": {}, + "6344-Redevances pour marques": {}, + "6345-Redevances pour sites internet": {}, + "6346-Redevances pour concessions, droits et valeurs similaires": {} + }, + "635-Cotisations": { + "6351-Cotisations": {}, + "6358-Concours divers": {} + }, + "637-R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "6371-Personnel int\u00e9rimaire": {}, + "6372-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "638-Autres charges externes": { + "6381-Frais de recrutement du personnel": {}, + "6382-Frais de d\u00e9m\u00e9nagement": {}, + "6383-R\u00e9ceptions": {}, + "6384-Missions": {}, + "6385-Charges de copropri\u00e9t\u00e9": {} + } + }, + "64-Imp\u00f4ts et taxes": { + "641-Imp\u00f4ts et taxes directs": { + "6411-Imp\u00f4ts fonciers et taxes annexes": {}, + "6412-Patentes, licences et taxes annexes": {}, + "6413-Taxes sur appointements et salaires": {}, + "6414-Taxes d\u2019apprentissage": {}, + "6415-Formation professionnelle continue": {}, + "6418-Autres imp\u00f4ts et taxes directs": {} + }, + "645-Imp\u00f4ts et taxes indirects": {}, + "646-Droits d\u2019enregistrement": { + "6461-Droits de mutation": {}, + "6462-Droits de timbre": {}, + "6463-Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": {}, + "6464-Vignettes": {}, + "6468-Autres droits": {} + }, + "647-P\u00e9nalit\u00e9s, amendes fiscales": { + "6471-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": {}, + "6472-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": {}, + "6473-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": {}, + "6474-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": {}, + "6478-Autres p\u00e9nalit\u00e9s et amendes fiscales": {} + }, + "648-Autres imp\u00f4ts et taxes": {} + }, + "65-Autres charges": { + "651-Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "6511-Clients": {}, + "6515-Autres d\u00e9biteurs": {} + }, + "652-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "6521-Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": {}, + "6525-Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "654-Valeurs comptables des cessions courantes d\u2019immobilisations": { + "6541-Immobilisations incorporelles": {}, + "6542-Immobilisations corporelles": {} + }, + "656-Perte de change sur cr\u00e9ances et dettes commerciale": {}, + "657-P\u00e9nalit\u00e9s et amendes p\u00e9nales": {}, + "658-Charges diverses": { + "6581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "6582-Dons": {}, + "6583-M\u00e9c\u00e9nat": {}, + "6588-Autres charges diverses": {} + }, + "659-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "6591-Sur risques \u00e0 court terme": {}, + "6593-Sur stocks": {}, + "6594-Sur cr\u00e9ances": {}, + "6598-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": {} + } + }, + "66-Charges de personnel": { + "661-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "6611-Appointements salaires et commissions": {}, + "6612-Primes et gratifications": {}, + "6613-Cong\u00e9s pay\u00e9s": {}, + "6614-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6615-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6616-Suppl\u00e9ment familial": {}, + "6617-Avantages en nature": {}, + "6618-Autres r\u00e9mun\u00e9rations directes": {} + }, + "662-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "6621-Appointements salaires et commissions": {}, + "6622-Primes et gratifications": {}, + "6623-Cong\u00e9s pay\u00e9s": {}, + "6624-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6625-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6626-Suppl\u00e9ment familial": {}, + "6627-Avantages en nature": {}, + "6628-Autres r\u00e9mun\u00e9rations directes": {} + }, + "663-Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "6631-Indemnit\u00e9s de logement": {}, + "6632-Indemnit\u00e9s de repr\u00e9sentation": {}, + "6633-Indemnit\u00e9s d\u2019expatriation": {}, + "6634-Indemnit\u00e9s de transport": {}, + "6638-Autres indemnit\u00e9s et avantages divers": {} + }, + "664-Charges sociales": { + "6641-Charges sociales sur r\u00e9mun\u00e9ration du personnel national": {}, + "6642-Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": {} + }, + "666-R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "6661-R\u00e9mun\u00e9ration du travail de l\u2019exploitant": {}, + "6662-Charges sociales": {} + }, + "667-R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "6671-Personnel int\u00e9rimaire": {}, + "6672-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "668-Autres charges sociales": { + "6681-Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": {}, + "6682-Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": {}, + "6683-Versements et contributions aux autres \u0153uvres sociales": {}, + "6684-M\u00e9decine du travail et pharmacie": {}, + "6685-Assurances et organismes de sant\u00e9": {}, + "6686-Assurances retraite et fonds de pension": {}, + "6687-Majorations et p\u00e9nalit\u00e9s sociales": {}, + "6688-Charges sociales diverses": {} + } + }, + "67-Frais financiers et charges assimil\u00e9es": { + "671-Int\u00e9r\u00eats des emprunts": { + "6711-Emprunts obligataires": {}, + "6712-Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "6713-Dettes li\u00e9es \u00e0 des participations": {}, + "6714-Primes de remboursement des obligations": {} + }, + "672-Int\u00e9r\u00eats dans loyers de location acquisition": { + "6722-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": {}, + "6723-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": {}, + "6724-Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": {}, + "6728-Int\u00e9r\u00eats dans loyers des autres locations acquisition": {} + }, + "673-Escomptes accord\u00e9s": {}, + "674-Autres int\u00e9r\u00eats": { + "6741-Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": {}, + "6742-Comptes courants bloqu\u00e9s": {}, + "6743-Int\u00e9r\u00eats sur obligations cautionn\u00e9es": {}, + "6744-Int\u00e9r\u00eats sur dettes commerciales": {}, + "6745-Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": {}, + "6748-Int\u00e9r\u00eats sur dettes diverses": {} + }, + "675-Escomptes des effets de commerce": {}, + "676-Pertes de change financi\u00e8res": {}, + "677-Pertes sur titres de placement": { + "6771-Pertes sur cessions de titres de placement": {}, + "6772-Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {} + }, + "678-Pertes et charges sur risques financiers": { + "6781-Sur rentes viag\u00e8res": {}, + "6782-Sur op\u00e9rations financi\u00e8res": {}, + "6784-Sur instruments de tr\u00e9sorerie": {} + }, + "679-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "6791-Sur risques financiers": {}, + "6795-Sur titres de placement": {}, + "6798-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "68-Dotations aux amortissements": { + "681-Dotations aux amortissements d\u2019exploitation": { + "6812-Dotations aux amortissements des immobilisations incorporelles": {}, + "6813-Dotations aux amortissements des immobilisations corporelles": {} + } + }, + "69-Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "691-Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "6911-Dotations aux provisions pour risques et charges": {}, + "6913-Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": {}, + "6914-Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": {} + }, + "697-Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "6971-Dotations aux provisions pour risques et charges": {}, + "6972-Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": {} + } + }, + "root_type": "Expense" + }, + "7-Comptes de produits des activit\u00e9s ordinaires": { + "70-Ventes": { + "701-Ventes de marchandises": { + "7011-Dans la R\u00e9gion": {}, + "7012-Hors R\u00e9gion": {}, + "7013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7015-Sur internet": {}, + "7019-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "702-Ventes de produits finis": { + "7021-Dans la R\u00e9gion": {}, + "7022-Hors R\u00e9gion": {}, + "7023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7025-Sur internet": {}, + "7029-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "703-Ventes de produits interm\u00e9diaires": { + "7031-Dans la R\u00e9gion": {}, + "7032-Hors R\u00e9gion": {}, + "7033-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7034-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7035-Sur internet": {}, + "7039-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "704-Ventes de produits r\u00e9siduels": { + "7041-Dans la R\u00e9gion": {}, + "7042-Hors R\u00e9gion": {}, + "7043-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7044-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7045-Sur internet": {}, + "7049-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "705-Travaux factur\u00e9s": { + "7051-Dans la R\u00e9gion": {}, + "7052-Hors R\u00e9gion": {}, + "7053-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7054-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7055-Sur internet": {}, + "7059-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "706-Services vendus": { + "7061-Dans la R\u00e9gion": {}, + "7062-Hors R\u00e9gion": {}, + "7063-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7064-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7065-Sur internet": {}, + "7069-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "707-Produits accessoires": { + "7071-Ports, emballages perdus et autres frais factur\u00e9s": {}, + "7072-Commissions et courtages": {}, + "7073-Locations": {}, + "7074-Bonis sur reprises et cessions d\u2019emballages": {}, + "7075-Mise \u00e0 disposition de personnel": {}, + "7076-Redevances pour brevets, logiciels, marques et droits similaires": {}, + "7077-Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": {}, + "7078-Autres produits accessoires": {} + } + }, + "71-Subventions d\u2019exploitation": { + "711-Sur produits \u00e0 l\u2019exportation": {}, + "712-Sur produits \u00e0 l\u2019importation": {}, + "713-Sur produits de p\u00e9r\u00e9quation": {}, + "714-Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": {}, + "718-Autres subventions d\u2019exploitation": { + "7181-Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": {}, + "7182-Vers\u00e9es par les organismes internationaux": {}, + "7183-Vers\u00e9es par des tiers": {} + } + }, + "72-Production immobilis\u00e9e": { + "721-Immobilisations incorporelles": {}, + "722-Immobilisations corporelles": { + "7221-Immobilisations corporelles (hors actifs biologiques)": {}, + "7222-Immobilisations corporelles (actifs biologiques)": {} + }, + "724-Production auto-consomm\u00e9e": {}, + "726-Immobilisations financi\u00e8res": {} + }, + "73-Variations des stocks de biens et de services produits": { + "734-Variations des stocks de produits en cours": { + "7341-Produits en cours": {}, + "7342-Travaux en cours": {} + }, + "735-Variations des en-cours de services": { + "7351-\u00c9tudes en cours": {}, + "7352-Prestations de services en cours": {} + }, + "736-Variations des stocks de produits finis": {}, + "737-Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "7371-Produits interm\u00e9diaires": {}, + "7372-Produits r\u00e9siduels": {} + } + }, + "75-Autres produits": { + "751-Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": {}, + "752-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "7521-Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": {}, + "7525-B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "754-Produits des cessions courantes d\u2019immobilisations": { + "7541-Immobilisations incorporelles": {}, + "7542-Immobilisations corporelles": {} + }, + "756-Gains de change sur cr\u00e9ances et dettes commerciales": {}, + "758-Produits divers": { + "7581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "7582-Indemnit\u00e9s d\u2019assurances re\u00e7ues": {}, + "7588-Autres produits divers": {} + }, + "759-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "7591-Sur risques \u00e0 court terme": {}, + "7593-Sur stocks": {}, + "7594-Sur cr\u00e9ances": {}, + "7598-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": {} + } + }, + "77-Revenus financiers et produits assimil\u00e9s": { + "771-Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "7712-Int\u00e9r\u00eats de pr\u00eats": {}, + "7713-Int\u00e9r\u00eats sur cr\u00e9ances diverses": {} + }, + "772-Revenus de participations et autres titres immobilis\u00e9s": { + "7721-Revenus des titres de participation": {}, + "7722-Revenus autres titres immobilis\u00e9s": {} + }, + "773-Escomptes obtenus": {}, + "774-Revenus de placement": { + "7745-Revenus des obligations": {}, + "7746-Revenus des titres de placement": {} + }, + "775-Int\u00e9r\u00eats dans loyers de location acquisition": {}, + "776-Gains de change financiers": {}, + "777-Gains sur cessions de titres de placement": {}, + "778-Gains sur risques financiers": { + "7781-Sur rentes viag\u00e8res": {}, + "7782-Sur op\u00e9rations financi\u00e8res": {}, + "7784-Sur instruments de tr\u00e9sorerie": {} + }, + "779-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "7791-Sur risques financiers": {}, + "7795-Sur titres de placement": {}, + "7798-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "78-Transferts de charges": { + "781-Transferts de charges d\u2019exploitation": {}, + "787-Transferts de charges financi\u00e8res": {} + }, + "79-Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "791-Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "7911-Pour risques et charges": {}, + "7913-Des immobilisations incorporelles": {}, + "7914-Des immobilisations corporelles": {} + }, + "797-Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "7971-Pour risques et charges": {}, + "7972-Des immobilisations financi\u00e8res": {} + }, + "798-Reprises d\u2019amortissements": {}, + "799-Reprises de subventions d\u2019investissement": {} + }, + "root_type": "Income" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "81-Valeurs comptables des cessions d\u2019immobilisations": { + "811-Immobilisations incorporelles": {}, + "812-Immobilisations corporelles": {}, + "816-Immobilisations financi\u00e8res": {} + }, + "83-Charges hors activit\u00e9s ordinaires": { + "831-Charges HAO constat\u00e9es": {}, + "833-Charges li\u00e9es aux op\u00e9rations de restructuration": {}, + "834-Pertes sur cr\u00e9ances HAO": {}, + "835-Dons et lib\u00e9ralit\u00e9s accord\u00e9s": {}, + "836-Abandons de cr\u00e9ances consentis": {}, + "837-Charges li\u00e9es aux op\u00e9rations de liquidation": {}, + "839-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "85-Dotations hors activit\u00e9s ordinaires": { + "851-Dotations aux provisions r\u00e9glement\u00e9es": {}, + "852-Dotations aux amortissements HAO": {}, + "853-Dotations aux d\u00e9pr\u00e9ciations HAO": {}, + "854-Dotations aux provisions pour risques et charges HAO": {}, + "858-Autres dotations HAO": {} + }, + "87-Participation des travailleurs": { + "871-Participation l\u00e9gale aux b\u00e9n\u00e9fices": {}, + "874-Participation contractuelle aux b\u00e9n\u00e9fices": {}, + "878-Autres participations": {} + }, + "89-Imp\u00f4ts sur le r\u00e9sultat": { + "891-Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "8911-Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": {}, + "8912-Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": {}, + "8913-Activit\u00e9s exerc\u00e9es hors R\u00e9gion": {} + }, + "892-Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": {}, + "895-Imp\u00f4t minimum forfaitaire IMF": {}, + "899-D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "8991-D\u00e9gr\u00e8vements": {}, + "8994-Annulations pour pertes r\u00e9troactives": {} + } + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "82-Produits des cessions d\u2019immobilisations": { + "821-Immobilisations incorporelles": {}, + "822-Immobilisations corporelles": {}, + "826-Immobilisations financi\u00e8res": {} + }, + "84-Produits hors activit\u00e9s ordinaires": { + "841-Produits HAO constat\u00e9s": {}, + "843-Produits li\u00e9s aux op\u00e9rations de restructuration": {}, + "844-Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": {}, + "845-Dons et lib\u00e9ralit\u00e9s obtenus": {}, + "846-Abandons de cr\u00e9ances obtenus": {}, + "847-Produits li\u00e9s aux op\u00e9rations de liquidation": {}, + "848-Transferts de charges HAO": {}, + "849-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "86-Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "861-Reprises de provisions r\u00e9glement\u00e9es": {}, + "862-Reprises d\u2019amortissements HAO": {}, + "863-Reprises de d\u00e9pr\u00e9ciations HAO": {}, + "864-Reprises de provisions pour risques et charges HAO": {}, + "868-Autres reprises HAO": {} + }, + "88-Subventions d\u2019\u00e9quilibre": { + "881-\u00c9tat": {}, + "884-Collectivit\u00e9s publiques": {}, + "886-Groupe": {}, + "888-Autres": {} + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/sn_plan_comptable_avec_code.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/sn_plan_comptable_avec_code.json new file mode 100644 index 00000000000..d75ae5d172b --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/sn_plan_comptable_avec_code.json @@ -0,0 +1,4208 @@ +{ + "country_code": "sn", + "name": "Syscohada - Plan Comptable avec code", + "tree": { + "Comptes de ressources durables": { + "Capital": { + "Capital social": { + "Capital souscrit, non appel\u00e9": { + "account_number": "1011" + }, + "Capital souscrit, appel\u00e9, non vers\u00e9": { + "account_number": "1012" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, non amorti": { + "account_number": "1013" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, amorti": { + "account_number": "1014" + }, + "Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": { + "account_number": "1018" + }, + "account_number": "101" + }, + "Capital par dotation": { + "Dotation initiale": { + "account_number": "1021" + }, + "Dotations compl\u00e9mentaires": { + "account_number": "1022" + }, + "Autres dotations": { + "account_number": "1028" + }, + "account_number": "102" + }, + "Capital personnel": { + "account_number": "103" + }, + "Compte de l\u2019exploitant": { + "Apports temporaires": { + "account_number": "1041" + }, + "Op\u00e9rations courantes": { + "account_number": "1042" + }, + "R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": { + "account_number": "1043" + }, + "Pr\u00e9l\u00e8vements d\u2019autoconsommation": { + "account_number": "1047" + }, + "Autres pr\u00e9l\u00e8vements": { + "account_number": "1048" + }, + "account_number": "104" + }, + "Primes li\u00e9es au capital social": { + "Primes d\u2019\u00e9mission": { + "account_number": "1051" + }, + "Primes d\u2019apport": { + "account_number": "1052" + }, + "Primes de fusion": { + "account_number": "1053" + }, + "Primes de conversion": { + "account_number": "1054" + }, + "Autres primes": { + "account_number": "1058" + }, + "account_number": "105" + }, + "\u00c9carts de r\u00e9\u00e9valuation": { + "\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": { + "account_number": "1061" + }, + "\u00c9carts de r\u00e9\u00e9valuation libre": { + "account_number": "1062" + }, + "account_number": "106" + }, + "Apporteurs, capital souscrit, non appel\u00e9": { + "account_number": "109" + }, + "account_number": "10" + }, + "R\u00e9serves": { + "R\u00e9serve l\u00e9gale": { + "account_number": "111" + }, + "R\u00e9serves statutaires ou contractuelles": { + "account_number": "112" + }, + "R\u00e9serves r\u00e9glement\u00e9es": { + "R\u00e9serves de plus-values nettes \u00e0 long terme": { + "account_number": "1131" + }, + "R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "1132" + }, + "R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": { + "account_number": "1133" + }, + "R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": { + "account_number": "1134" + }, + "Autres r\u00e9serves r\u00e9glement\u00e9es": { + "account_number": "1135" + }, + "account_number": "113" + }, + "Autres r\u00e9serves": { + "R\u00e9serves facultatives": { + "account_number": "1181" + }, + "R\u00e9serves diverses": { + "account_number": "1188" + }, + "account_number": "118" + }, + "account_number": "11" + }, + "Report \u00e0 nouveau": { + "Report \u00e0 nouveau cr\u00e9diteur": { + "account_number": "121" + }, + "Report \u00e0 nouveau d\u00e9biteur": { + "Perte nette \u00e0 reporter": { + "account_number": "1291" + }, + "Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": { + "account_number": "1292" + }, + "account_number": "129" + }, + "account_number": "12" + }, + "R\u00e9sultat net de l\u2019exercice": { + "R\u00e9sultat en instance d\u2019affectation": { + "R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": { + "account_number": "1301" + }, + "R\u00e9sultat en instance d\u2019affectation : perte": { + "account_number": "1309" + }, + "account_number": "130" + }, + "R\u00e9sultat net : b\u00e9n\u00e9fice": { + "account_number": "131" + }, + "Marge commerciale (MC)": { + "account_number": "132" + }, + "Valeur ajout\u00e9e (VA)": { + "account_number": "133" + }, + "Exc\u00e9dent brut d\u2019exploitation (EBE)": { + "account_number": "134" + }, + "R\u00e9sultat d\u2019exploitation (RE)": { + "account_number": "135" + }, + "R\u00e9sultat financier (RF)": { + "account_number": "136" + }, + "R\u00e9sultat des activit\u00e9s ordinaires (RAO)": { + "account_number": "137" + }, + "R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "R\u00e9sultat de fusion": { + "account_number": "1381" + }, + "R\u00e9sultat d\u2019apport partiel d\u2019actif": { + "account_number": "1382" + }, + "R\u00e9sultat de scission": { + "account_number": "1383" + }, + "R\u00e9sultat de liquidation": { + "account_number": "1384" + }, + "account_number": "138" + }, + "R\u00e9sultat net : perte": { + "account_number": "139" + }, + "account_number": "13" + }, + "Subventions d\u2019investissement": { + "Subventions d\u2019\u00e9quipement": { + "\u00c9tat": { + "account_number": "1411" + }, + "R\u00e9gions": { + "account_number": "1412" + }, + "D\u00e9partements": { + "account_number": "1413" + }, + "Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": { + "account_number": "1414" + }, + "Entit\u00e9s publiques ou mixtes": { + "account_number": "1415" + }, + "Entit\u00e9s et organismes priv\u00e9s": { + "account_number": "1416" + }, + "Organismes internationaux": { + "account_number": "1417" + }, + "Autres": { + "account_number": "1418" + }, + "account_number": "141" + }, + "Autres subventions d\u2019investissement": { + "account_number": "148" + }, + "account_number": "14" + }, + "Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "Amortissements d\u00e9rogatoires": { + "account_number": "151" + }, + "Plus-values de cession \u00e0 r\u00e9investir": { + "account_number": "152" + }, + "Fonds r\u00e9glement\u00e9s": { + "Fonds National": { + "account_number": "1531" + }, + "Pr\u00e9l\u00e8vement pour le Budget": { + "account_number": "1532" + }, + "account_number": "153" + }, + "Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": { + "account_number": "154" + }, + "Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "Reconstitution des gisements miniers et p\u00e9troliers": { + "account_number": "1551" + }, + "account_number": "155" + }, + "Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "Hausse de prix": { + "account_number": "1561" + }, + "Fluctuation des cours": { + "account_number": "1562" + }, + "account_number": "156" + }, + "Provisions pour investissement": { + "account_number": "157" + }, + "Autres provisions et fonds r\u00e9glement\u00e9s": { + "account_number": "158" + }, + "account_number": "15" + }, + "Emprunts et dettes assimil\u00e9es": { + "Emprunts obligataires": { + "Emprunts obligataires ordinaires": { + "account_number": "1611" + }, + "Emprunts obligataires convertibles en actions": { + "account_number": "1612" + }, + "Emprunts obligataires remboursables en actions": { + "account_number": "1613" + }, + "Autres emprunts obligataires": { + "account_number": "1618" + }, + "account_number": "161" + }, + "Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "162" + }, + "Avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "163" + }, + "Avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "164" + }, + "D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "D\u00e9p\u00f4ts": { + "account_number": "1651" + }, + "Cautionnements": { + "account_number": "1652" + }, + "account_number": "165" + }, + "Int\u00e9r\u00eats courus": { + "Sur emprunts obligataires": { + "account_number": "1661" + }, + "Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "1662" + }, + "Sur avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "1663" + }, + "Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "1664" + }, + "Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "account_number": "1665" + }, + "Sur avances assorties de conditions particuli\u00e8res": { + "account_number": "1667" + }, + "Sur autres emprunts et dettes": { + "account_number": "1668" + }, + "account_number": "166" + }, + "Avances assorties de conditions particuli\u00e8res": { + "Avances bloqu\u00e9es pour augmentation du capital": { + "account_number": "1671" + }, + "Avances conditionn\u00e9es par l\u2019\u00c9tat": { + "account_number": "1672" + }, + "Avances conditionn\u00e9es par les autres organismes africains": { + "account_number": "1673" + }, + "Avances conditionn\u00e9es par les organismes internationaux": { + "account_number": "1674" + }, + "account_number": "167" + }, + "Autres emprunts et dettes": { + "Rentes viag\u00e8res capitalis\u00e9es": { + "account_number": "1681" + }, + "Billets de fonds": { + "account_number": "1682" + }, + "Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": { + "account_number": "1683" + }, + "Emprunts participatifs": { + "account_number": "1684" + }, + "Participation des travailleurs aux b\u00e9n\u00e9fices": { + "account_number": "1685" + }, + "Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": { + "account_number": "1686" + }, + "account_number": "168" + }, + "account_number": "16" + }, + "Dettes de location acquisition": { + "Dettes de location acquisition / cr\u00e9dit bail immobilier": { + "account_number": "172" + }, + "Dettes de location acquisition / cr\u00e9dit bail mobilier": { + "account_number": "173" + }, + "Dettes de location acquisition / location de vente": { + "account_number": "174" + }, + "Int\u00e9r\u00eats courus": { + "Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "1762" + }, + "Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "1763" + }, + "Sur dettes de location acquisition / location-vente": { + "account_number": "1764" + }, + "Sur autres dettes de location acquisition": { + "account_number": "1768" + }, + "account_number": "176" + }, + "Autres dettes de location acquisition": { + "account_number": "178" + }, + "account_number": "17" + }, + "Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "Dettes li\u00e9es \u00e0 des participations": { + "Dettes li\u00e9es \u00e0 des participations (groupe)": { + "account_number": "1811" + }, + "Dettes li\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "1812" + }, + "account_number": "181" + }, + "Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "182" + }, + "Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": { + "account_number": "183" + }, + "Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "184" + }, + "Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "185" + }, + "Comptes de liaison charges": { + "account_number": "186" + }, + "Comptes de liaison produits": { + "account_number": "187" + }, + "Comptes de liaison des soci\u00e9t\u00e9s en participation": { + "account_number": "188" + }, + "account_number": "18" + }, + "Provisions pour risques et charges": { + "Provisions pour litiges": { + "account_number": "191" + }, + "Provisions pour garanties donn\u00e9es aux clients": { + "account_number": "192" + }, + "Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": { + "account_number": "193" + }, + "Provisions pour pertes de change": { + "account_number": "194" + }, + "Provisions pour imp\u00f4ts": { + "account_number": "195" + }, + "Provisions pour pensions et obligations similaires": { + "Provisions pour pensions et obligations similaires engagement de retraite": { + "account_number": "1961" + }, + "Actif du r\u00e9gime de retraite": { + "account_number": "1962" + }, + "account_number": "196" + }, + "Provisions pour restructuration": { + "account_number": "197" + }, + "Autres provisions pour risques et charges": { + "Provisions pour amendes et p\u00e9nalit\u00e9s": { + "account_number": "1981" + }, + "Provisions pour propre assureur": { + "account_number": "1983" + }, + "Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "1984" + }, + "Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": { + "account_number": "1985" + }, + "Provisions pour divers risques et charges": { + "account_number": "1988" + }, + "account_number": "198" + }, + "account_number": "19" + }, + "root_type": "Equity", + "account_number": "1" + }, + "Comptes d\u2019actif immobilis\u00e9": { + "Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "211" + }, + "Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "Brevets": { + "account_type": "Fixed Asset", + "account_number": "2121" + }, + "Licences": { + "account_type": "Fixed Asset", + "account_number": "2122" + }, + "Concessions de service public": { + "account_type": "Fixed Asset", + "account_number": "2123" + }, + "Autres concessions et droits similaires": { + "account_type": "Fixed Asset", + "account_number": "2128" + }, + "account_number": "212" + }, + "Logiciels et sites internet": { + "account_type": "Fixed Asset", + "Logiciels": { + "account_type": "Fixed Asset", + "account_number": "2131" + }, + "Sites internet": { + "account_type": "Fixed Asset", + "account_number": "2132" + }, + "account_number": "213" + }, + "Marques": { + "account_type": "Fixed Asset", + "account_number": "214" + }, + "Fonds commercial": { + "account_type": "Fixed Asset", + "account_number": "215" + }, + "Droit au bail": { + "account_type": "Fixed Asset", + "account_number": "216" + }, + "Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset", + "account_number": "217" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset", + "account_number": "2181" + }, + "Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset", + "account_number": "2182" + }, + "Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset", + "account_number": "2183" + }, + "Co\u00fbts des franchises": { + "account_type": "Fixed Asset", + "account_number": "2184" + }, + "Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset", + "account_number": "2188" + }, + "account_number": "218" + }, + "Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "2191" + }, + "Logiciels et internet": { + "account_type": "Fixed Asset", + "account_number": "2193" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "account_number": "2198" + }, + "account_number": "219" + }, + "account_number": "21" + }, + "Terrains": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset", + "account_number": "2211" + }, + "Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset", + "account_number": "2212" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2218" + }, + "account_number": "221" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset", + "account_number": "2221" + }, + "Autres terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2228" + }, + "account_number": "222" + }, + "Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset", + "account_number": "2231" + }, + "Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset", + "account_number": "2232" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2234" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2235" + }, + "Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "account_number": "2238" + }, + "account_number": "223" + }, + "Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset", + "account_number": "2241" + }, + "Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset", + "account_number": "2245" + }, + "Autres travaux": { + "account_type": "Fixed Asset", + "account_number": "2248" + }, + "account_number": "224" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "Carri\u00e8res": { + "account_type": "Fixed Asset", + "account_number": "2251" + }, + "account_number": "225" + }, + "Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "Parkings": { + "account_type": "Fixed Asset", + "account_number": "2261" + }, + "account_number": "226" + }, + "Terrains mis en concession": { + "account_type": "Fixed Asset", + "account_number": "227" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "Terrains immeubles de placement": { + "account_type": "Fixed Asset", + "account_number": "2281" + }, + "Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset", + "account_number": "2285" + }, + "Terrains de location acquisition": { + "account_type": "Fixed Asset", + "account_number": "2286" + }, + "Divers terrains": { + "account_type": "Fixed Asset", + "account_number": "2288" + }, + "account_number": "228" + }, + "Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "account_number": "2291" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2292" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "account_number": "2295" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2298" + }, + "account_number": "229" + }, + "account_number": "22" + }, + "B\u00e2timents, installations techniques et agencements": { + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "B\u00e2timents industriels": { + "account_number": "2311" + }, + "B\u00e2timents agricoles": { + "account_number": "2312" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2313" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2314" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2315" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2316" + }, + "account_number": "231" + }, + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "B\u00e2timents industriels": { + "account_number": "2321" + }, + "B\u00e2timents agricoles": { + "account_number": "2322" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2323" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2324" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2325" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2326" + }, + "account_number": "232" + }, + "Ouvrages d\u2019infrastructure": { + "Voies de terre": { + "account_number": "2331" + }, + "Voies de fer": { + "account_number": "2332" + }, + "Voies d\u2019eau": { + "account_number": "2333" + }, + "Barrages, Digues": { + "account_number": "2334" + }, + "Pistes d\u2019a\u00e9rodrome": { + "account_number": "2335" + }, + "Autres ouvrages d\u2019infrastructures": { + "account_number": "2338" + }, + "account_number": "233" + }, + "Am\u00e9nagements, agencements et installations techniques": { + "Installations complexes sp\u00e9cialis\u00e9es sur sol propre": { + "account_number": "2341" + }, + "Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": { + "account_number": "2342" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": { + "account_number": "2343" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": { + "account_number": "2344" + }, + "Am\u00e9nagements et agencements des b\u00e2timents": { + "account_number": "2345" + }, + "account_number": "234" + }, + "Am\u00e9nagements de bureaux": { + "Installations g\u00e9n\u00e9rales": { + "account_number": "2351" + }, + "Autres am\u00e9nagements de bureaux": { + "account_number": "2358" + }, + "account_number": "235" + }, + "B\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "237" + }, + "Autres installations et agencements": { + "account_number": "238" + }, + "B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "B\u00e2timents en cours": { + "account_number": "2391" + }, + "Installations en cours": { + "account_number": "2392" + }, + "Ouvrages d\u2019infrastructure en cours": { + "account_number": "2393" + }, + "Am\u00e9nagements et agencements et installations techniques en cours": { + "account_number": "2394" + }, + "Am\u00e9nagements de bureaux en cours": { + "account_number": "2395" + }, + "Autres installations et agencements en cours": { + "account_number": "2398" + }, + "account_number": "239" + }, + "account_number": "23" + }, + "Mat\u00e9riel, mobilier et actifs biologiques": { + "Mat\u00e9riel et outillage industriel et commercial": { + "Mat\u00e9riel industriel": { + "account_number": "2411" + }, + "Outillage industriel": { + "account_number": "2412" + }, + "Mat\u00e9riel commercial": { + "account_number": "2413" + }, + "Outillage commercial": { + "account_number": "2414" + }, + "Mat\u00e9riel & outillage industriel et commercial de location-acquisition": { + "account_number": "2416" + }, + "account_number": "241" + }, + "Mat\u00e9riel et outillage agricole": { + "Mat\u00e9riel agricole": { + "account_number": "2421" + }, + "Outillage agricole": { + "account_number": "2422" + }, + "Mat\u00e9riel & outillage agricole de location-acquisition": { + "account_number": "2426" + }, + "account_number": "242" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "243" + }, + "Mat\u00e9riel et mobilier": { + "Mat\u00e9riel de bureau": { + "account_number": "2441" + }, + "Mat\u00e9riel informatique": { + "account_number": "2442" + }, + "Mat\u00e9riel bureautique": { + "account_number": "2443" + }, + "Mobilier de bureau": { + "account_number": "2444" + }, + "Mat\u00e9riel et mobilier immeubles de placement": { + "account_number": "2445" + }, + "Mat\u00e9riel et mobilier de location acquisition": { + "account_number": "2446" + }, + "Mat\u00e9riel et mobilier des logements du personnel": { + "account_number": "2447" + }, + "account_number": "244" + }, + "Mat\u00e9riel de transport": { + "Mat\u00e9riel automobile": { + "account_number": "2451" + }, + "Mat\u00e9riel ferroviaire": { + "account_number": "2452" + }, + "Mat\u00e9riel fluvial, lagunaire": { + "account_number": "2453" + }, + "Mat\u00e9riel naval": { + "account_number": "2454" + }, + "Mat\u00e9riel a\u00e9rien": { + "account_number": "2455" + }, + "Mat\u00e9riel de transport de location-acquisition": { + "account_number": "2456" + }, + "Mat\u00e9riel hippomobile": { + "account_number": "2457" + }, + "Autres mat\u00e9riels de transport": { + "account_number": "2458" + }, + "account_number": "245" + }, + "Actifs biologiques": { + "Cheptel, animaux de trait": { + "account_number": "2461" + }, + "Cheptel, animaux reproducteurs": { + "account_number": "2462" + }, + "Animaux de garde": { + "account_number": "2463" + }, + "Plantations agricoles": { + "account_number": "2465" + }, + "Autres actifs biologiques": { + "account_number": "2468" + }, + "account_number": "246" + }, + "Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "Agencements et am\u00e9nagements du mat\u00e9riel": { + "account_number": "2471" + }, + "Agencements et am\u00e9nagements des actifs biologiques": { + "account_number": "2472" + }, + "Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2478" + }, + "account_number": "247" + }, + "Autres mat\u00e9riels et mobiliers": { + "Collections et \u0153uvres d\u2019art": { + "account_number": "2481" + }, + "Divers mat\u00e9riels mobiliers": { + "account_number": "2488" + }, + "account_number": "248" + }, + "Mat\u00e9riels et actifs biologiques en cours": { + "Mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2491" + }, + "Mat\u00e9riel et outillage agricole": { + "account_number": "2492" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2493" + }, + "Mat\u00e9riel et mobilier de bureau": { + "account_number": "2494" + }, + "Mat\u00e9riel de transport": { + "account_number": "2495" + }, + "Actifs biologiques": { + "account_number": "2496" + }, + "Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2497" + }, + "Autres mat\u00e9riels et actifs biologiques en cours": { + "account_number": "2498" + }, + "account_number": "249" + }, + "account_number": "24" + }, + "Avances et acomptes vers\u00e9s sur immobilisations": { + "Avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "251" + }, + "Avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "252" + }, + "account_number": "25" + }, + "Titres de participation": { + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "261" + }, + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "262" + }, + "Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "263" + }, + "Participations dans des organismes professionnels": { + "account_number": "265" + }, + "Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "266" + }, + "Autres titres de participation": { + "account_number": "268" + }, + "account_number": "26" + }, + "Autres immobilisations financi\u00e8res": { + "Pr\u00eats et cr\u00e9ances": { + "Pr\u00eats participatifs": { + "account_number": "2711" + }, + "Pr\u00eats aux associ\u00e9s": { + "account_number": "2712" + }, + "Billets de fonds": { + "account_number": "2713" + }, + "Titres pr\u00eat\u00e9s": { + "account_number": "2714" + }, + "Autres pr\u00eats et cr\u00e9ances": { + "account_number": "2718" + }, + "account_number": "271" + }, + "Pr\u00eats au personnel": { + "Pr\u00eats immobiliers": { + "account_number": "2721" + }, + "Pr\u00eats mobiliers et d\u2019installation": { + "account_number": "2722" + }, + "Autres pr\u00eats au personnel": { + "account_number": "2728" + }, + "account_number": "272" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "Retenues de garantie": { + "account_number": "2731" + }, + "Fonds r\u00e9glement\u00e9": { + "account_number": "2733" + }, + "Cr\u00e9ances sur le conc\u00e9dant": { + "account_number": "2734" + }, + "Autres cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2738" + }, + "account_number": "273" + }, + "Titres immobilis\u00e9s": { + "Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": { + "account_number": "2741" + }, + "Titres participatifs": { + "account_number": "2742" + }, + "Certificats d\u2019investissement": { + "account_number": "2743" + }, + "Parts de fonds commun de placement (FCP)": { + "account_number": "2744" + }, + "Obligations": { + "account_number": "2745" + }, + "Actions ou parts propres": { + "account_number": "2746" + }, + "Autres titres immobilis\u00e9s": { + "account_number": "2748" + }, + "account_number": "274" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "D\u00e9p\u00f4ts pour loyers d\u2019avance": { + "account_number": "2751" + }, + "D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": { + "account_number": "2752" + }, + "D\u00e9p\u00f4ts pour l\u2019eau": { + "account_number": "2753" + }, + "D\u00e9p\u00f4ts pour le gaz": { + "account_number": "2754" + }, + "D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": { + "account_number": "2755" + }, + "Cautionnements sur march\u00e9s publics": { + "account_number": "2756" + }, + "Cautionnements sur autres op\u00e9rations": { + "account_number": "2757" + }, + "Autres d\u00e9p\u00f4ts et cautionnements": { + "account_number": "2758" + }, + "account_number": "275" + }, + "Int\u00e9r\u00eats courus": { + "Pr\u00eats et cr\u00e9ances non commerciales": { + "account_number": "2761" + }, + "Pr\u00eats au personnel": { + "account_number": "2762" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2763" + }, + "Titres immobilis\u00e9s": { + "account_number": "2764" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2765" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "account_number": "2767" + }, + "Immobilisations financi\u00e8res diverses": { + "account_number": "2768" + }, + "account_number": "276" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": { + "account_number": "2771" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "2772" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "2773" + }, + "Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "2774" + }, + "account_number": "277" + }, + "Immobilisations financi\u00e8res diverses": { + "Cr\u00e9ances diverses groupe": { + "account_number": "2781" + }, + "Cr\u00e9ances diverses hors groupe": { + "account_number": "2782" + }, + "Banques d\u00e9p\u00f4ts \u00e0 terme": { + "account_number": "2784" + }, + "Or et m\u00e9taux pr\u00e9cieux": { + "account_number": "2785" + }, + "Autres immobilisations financi\u00e8res": { + "account_number": "2788" + }, + "account_number": "278" + }, + "account_number": "27" + }, + "Amortissements": { + "account_type": "Accumulated Depreciation", + "Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation", + "account_number": "2811" + }, + "Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation", + "account_number": "2812" + }, + "Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation", + "account_number": "2813" + }, + "Amortissements des marques": { + "account_type": "Accumulated Depreciation", + "account_number": "2814" + }, + "Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation", + "account_number": "2815" + }, + "Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation", + "account_number": "2816" + }, + "Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation", + "account_number": "2817" + }, + "Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation", + "account_number": "2818" + }, + "account_number": "281" + }, + "Amortissements des terrains": { + "Amortissements des travaux de mise en valeur des terrains": { + "account_number": "2824" + }, + "account_number": "282" + }, + "Amortissements des b\u00e2timents, installations techniques et agencements": { + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2831" + }, + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2832" + }, + "Amortissements des ouvrages d\u2019infrastructure": { + "account_number": "2833" + }, + "Amortissements des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2834" + }, + "Amortissements des am\u00e9nagements de bureaux": { + "account_number": "2835" + }, + "Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2837" + }, + "Amortissements des autres installations et agencements": { + "account_number": "2838" + }, + "account_number": "283" + }, + "Amortissements du mat\u00e9riel": { + "Amortissements du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2841" + }, + "Amortissements du mat\u00e9riel et outillage agricole": { + "account_number": "2842" + }, + "Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2843" + }, + "Amortissements du mat\u00e9riel et mobilier": { + "account_number": "2844" + }, + "Amortissements du mat\u00e9riel de transport": { + "account_number": "2845" + }, + "Amortissements des actifs biologiques": { + "account_number": "2846" + }, + "Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2847" + }, + "Amortissements des autres mat\u00e9riels": { + "account_number": "2848" + }, + "account_number": "284" + }, + "account_number": "28" + }, + "D\u00e9pr\u00e9ciations des immobilisations": { + "D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": { + "account_number": "2911" + }, + "D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": { + "account_number": "2912" + }, + "D\u00e9pr\u00e9ciations des logiciels et sites internet": { + "account_number": "2913" + }, + "D\u00e9pr\u00e9ciations des marques": { + "account_number": "2914" + }, + "D\u00e9pr\u00e9ciations du fonds commercial": { + "account_number": "2915" + }, + "D\u00e9pr\u00e9ciations du droit au bail": { + "account_number": "2916" + }, + "D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": { + "account_number": "2917" + }, + "D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": { + "account_number": "2918" + }, + "D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": { + "account_number": "2919" + }, + "account_number": "291" + }, + "D\u00e9pr\u00e9ciations des terrains": { + "D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": { + "account_number": "2921" + }, + "D\u00e9pr\u00e9ciations des terrains nus": { + "account_number": "2922" + }, + "D\u00e9pr\u00e9ciations des terrains b\u00e2tis": { + "account_number": "2923" + }, + "D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": { + "account_number": "2924" + }, + "D\u00e9pr\u00e9ciations des terrains de gisement": { + "account_number": "2925" + }, + "D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": { + "account_number": "2926" + }, + "D\u00e9pr\u00e9ciations des terrains mis en concession": { + "account_number": "2927" + }, + "D\u00e9pr\u00e9ciations des autres terrains": { + "account_number": "2928" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": { + "account_number": "2929" + }, + "account_number": "292" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2931" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2932" + }, + "D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": { + "account_number": "2933" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2934" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": { + "account_number": "2935" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2937" + }, + "D\u00e9pr\u00e9ciations des autres installations et agencements": { + "account_number": "2938" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": { + "account_number": "2939" + }, + "account_number": "293" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2941" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": { + "account_number": "2942" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2943" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": { + "account_number": "2944" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": { + "account_number": "2945" + }, + "D\u00e9pr\u00e9ciations des actifs biologiques": { + "account_number": "2946" + }, + "D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2947" + }, + "D\u00e9pr\u00e9ciations des autres mat\u00e9riels": { + "account_number": "2948" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": { + "account_number": "2949" + }, + "account_number": "294" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "2951" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "2952" + }, + "account_number": "295" + }, + "D\u00e9pr\u00e9ciations des titres de participation": { + "D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "2961" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "2962" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "2963" + }, + "D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": { + "account_number": "2965" + }, + "D\u00e9pr\u00e9ciations des parts dans des GIE": { + "account_number": "2966" + }, + "D\u00e9pr\u00e9ciations des autres titres de participation": { + "account_number": "2968" + }, + "account_number": "296" + }, + "D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": { + "account_number": "2971" + }, + "D\u00e9pr\u00e9ciations des pr\u00eats au personnel": { + "account_number": "2972" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2973" + }, + "D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": { + "account_number": "2974" + }, + "D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2975" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "account_number": "2977" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": { + "account_number": "2978" + }, + "account_number": "297" + }, + "account_number": "29" + }, + "root_type": "Asset", + "account_number": "2" + }, + "Comptes de Stocks": { + "Marchandises": { + "Marchandises A": { + "Marchandises A1": { + "account_number": "3111" + }, + "Marchandises A2": { + "account_number": "3112" + }, + "account_number": "311" + }, + "Marchandises B": { + "Marchandises B1": { + "account_number": "3121" + }, + "Marchandises B2": { + "account_number": "3122" + }, + "account_number": "312" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3131" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3132" + }, + "account_number": "313" + }, + "Marchandises hors activit\u00e9s ordinaires (HAO)": { + "account_number": "318" + }, + "account_number": "31" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Mati\u00e8res A": { + "account_number": "321" + }, + "Mati\u00e8res B": { + "account_number": "322" + }, + "Fournitures (A, B)": { + "account_number": "323" + }, + "account_number": "32" + }, + "Autres approvisionnements": { + "Mati\u00e8res consommables": { + "account_number": "331" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "332" + }, + "Fournitures de magasin": { + "account_number": "333" + }, + "Fournitures de bureau": { + "account_number": "334" + }, + "Emballages": { + "Emballages perdus": { + "account_number": "3351" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "3352" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "3353" + }, + "Autres emballages": { + "account_number": "3358" + }, + "account_number": "335" + }, + "Autres mati\u00e8res": { + "account_number": "338" + }, + "account_number": "33" + }, + "Produits en cours": { + "Produits en cours": { + "Produits en cours P1": { + "account_number": "3411" + }, + "Produits en cours P2": { + "account_number": "3412" + }, + "account_number": "341" + }, + "Travaux en cours": { + "Travaux en cours T1": { + "account_number": "3421" + }, + "Travaux en cours T2": { + "account_number": "3422" + }, + "account_number": "342" + }, + "Produits interm\u00e9diaires en cours": { + "Produits interm\u00e9diaires A": { + "account_number": "3431" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3432" + }, + "account_number": "343" + }, + "Produits r\u00e9siduels en cours": { + "Produits r\u00e9siduels A": { + "account_number": "3441" + }, + "Produits r\u00e9siduels B": { + "account_number": "3442" + }, + "account_number": "344" + }, + "Actifs biologiques en cours": { + "Animaux": { + "account_number": "3451" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3452" + }, + "account_number": "345" + }, + "account_number": "34" + }, + "Services en cours": { + "\u00c9tudes en cours": { + "\u00c9tudes en cours E1": { + "account_number": "3511" + }, + "\u00c9tudes en cours E2": { + "account_number": "3512" + }, + "account_number": "351" + }, + "Prestations de services en cours": { + "Prestations de services S1": { + "account_number": "3521" + }, + "Prestations de services S2": { + "account_number": "3522" + } + }, + "account_number": "35" + }, + "Produits finis": { + "Produits finis A": { + "account_number": "361" + }, + "Produits finis B": { + "account_number": "362" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3631" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3632" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3638" + }, + "account_number": "363" + }, + "account_number": "36" + }, + "Produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "Produits interm\u00e9diaires A": { + "account_number": "3711" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3712" + }, + "account_number": "371" + }, + "Produits r\u00e9siduels": { + "D\u00e9chets": { + "account_number": "3721" + }, + "Rebuts": { + "account_number": "3722" + }, + "Mati\u00e8res de R\u00e9cup\u00e9ration": { + "account_number": "3723" + }, + "account_number": "372" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3731" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3732" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3738" + }, + "account_number": "373" + }, + "account_number": "37" + }, + "Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "Marchandises en cours de route": { + "account_number": "381" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": { + "account_number": "382" + }, + "Autres approvisionnements en cours de route": { + "account_number": "383" + }, + "Produits finis en cours de route": { + "account_number": "386" + }, + "Stock en consignation ou en d\u00e9p\u00f4t": { + "Stock en consignation": { + "account_number": "3871" + }, + "Stock en d\u00e9p\u00f4t": { + "account_number": "3872" + }, + "account_number": "387" + }, + "Stock provenant d\u2019immobilisations mises hors service ou au rebut": { + "account_number": "388" + }, + "account_number": "38" + }, + "D\u00e9pr\u00e9ciations des stocks et encours de production": { + "D\u00e9pr\u00e9ciations des stocks de marchandises": { + "account_number": "391" + }, + "D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "392" + }, + "D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": { + "account_number": "393" + }, + "D\u00e9pr\u00e9ciations des productions en cours": { + "account_number": "394" + }, + "D\u00e9pr\u00e9ciations des services en cours": { + "account_number": "395" + }, + "D\u00e9pr\u00e9ciations des stocks de produits finis": { + "account_number": "396" + }, + "D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "account_number": "397" + }, + "D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_number": "398" + }, + "account_number": "39" + }, + "root_type": "Asset", + "account_number": "3" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "Fournisseurs d\u00e9biteurs": { + "Fournisseurs Avances et acomptes vers\u00e9s": { + "account_number": "4091" + }, + "Fournisseurs Groupe avances et acomptes vers\u00e9s": { + "account_number": "4092" + }, + "Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": { + "account_number": "4093" + }, + "Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": { + "account_number": "4094" + }, + "Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": { + "account_number": "4098" + }, + "account_number": "409" + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "Clients": { + "Clients": { + "account_type": "Receivable", + "account_number": "4111" + }, + "Clients groupe": { + "account_type": "Receivable", + "account_number": "4112" + }, + "Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable", + "account_number": "4114" + }, + "Clients, organismes internationaux": { + "account_type": "Receivable", + "account_number": "4115" + }, + "Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable", + "account_number": "4116" + }, + "Client, retenues de garantie": { + "account_type": "Receivable", + "account_number": "4117" + }, + "Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable", + "account_number": "4118" + }, + "account_type": "Receivable", + "account_number": "411" + }, + "Clients, effets \u00e0 recevoir en portefeuille": { + "Clients, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4121" + }, + "Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4122" + }, + "\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4124" + }, + "Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4125" + }, + "account_type": "Receivable", + "account_number": "412" + }, + "Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4131" + }, + "Clients, effets impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4132" + }, + "Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4133" + }, + "Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4138" + }, + "account_type": "Receivable", + "account_number": "413" + }, + "Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4141" + }, + "Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4142" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4146" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4147" + }, + "account_type": "Receivable", + "account_number": "414" + }, + "Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable", + "account_number": "415" + }, + "Cr\u00e9ances clients litigieuses ou douteuses": { + "Cr\u00e9ances litigieuses": { + "account_type": "Receivable", + "account_number": "4161" + }, + "Cr\u00e9ances douteuses": { + "account_type": "Receivable", + "account_number": "4162" + }, + "account_type": "Receivable", + "account_number": "416" + }, + "Clients, produits \u00e0 recevoir": { + "Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable", + "account_number": "4181" + }, + "Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable", + "account_number": "4186" + }, + "account_type": "Receivable", + "account_number": "418" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "Personnel, avances et acomptes": { + "Personnel, avances": { + "account_number": "4211" + }, + "Personnel, acomptes": { + "account_number": "4212" + }, + "Frais avanc\u00e9s et fournitures au personnel": { + "account_number": "4213" + }, + "account_number": "421" + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "Prestations familiales": { + "account_number": "4311" + }, + "Accidents de travail": { + "account_number": "4312" + }, + "Caisse de retraite obligatoire": { + "account_number": "4313" + }, + "Caisse de retraite facultative": { + "account_number": "4314" + }, + "Autres cotisations sociales": { + "account_number": "4318" + } + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "Mutuelle": { + "account_number": "4331" + }, + "Assurances retraite": { + "account_number": "4332" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "4333" + } + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Produits \u00e0 recevoir": { + "account_number": "4387" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "\u00c9tat, TVA factur\u00e9e": { + "TVA factur\u00e9e sur ventes": { + "account_number": "4431" + }, + "TVA factur\u00e9e sur prestations de services": { + "account_number": "4432" + }, + "TVA factur\u00e9e sur travaux": { + "account_number": "4433" + }, + "TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": { + "account_number": "4434" + }, + "TVA sur factures \u00e0 \u00e9tablir": { + "account_number": "4435" + }, + "account_number": "443" + }, + "\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "TVA r\u00e9cup\u00e9rable sur immobilisations": { + "account_number": "4451" + }, + "TVA r\u00e9cup\u00e9rable sur achats": { + "account_number": "4452" + }, + "TVA r\u00e9cup\u00e9rable sur transport": { + "account_number": "4453" + }, + "TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": { + "account_number": "4454" + }, + "TVA r\u00e9cup\u00e9rable sur factures non parvenues": { + "account_number": "4455" + }, + "TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": { + "account_number": "4456" + }, + "account_number": "445" + }, + "\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges \u00e0 payer": { + "account_number": "4486" + }, + "Produits \u00e0 recevoir": { + "account_number": "4487" + }, + "account_number": "448" + }, + "\u00c9tat, cr\u00e9ances et dettes diverses": { + "\u00c9tat, obligations cautionn\u00e9es": { + "account_number": "4491" + }, + "\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": { + "account_number": "4492" + }, + "\u00c9tat, fonds de dotation \u00e0 recevoir": { + "account_number": "4493" + }, + "\u00c9tat, subventions investissement \u00e0 recevoir": { + "account_number": "4494" + }, + "\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": { + "account_number": "4495" + }, + "\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": { + "account_number": "4496" + }, + "\u00c9tat, avances sur subventions": { + "account_number": "4497" + }, + "\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": { + "account_number": "4499" + }, + "account_number": "449" + } + }, + "45-Organismes internationaux (ACTIF)": { + "Op\u00e9rations avec les organismes africains": { + "account_number": "451" + }, + "Op\u00e9rations avec les autres organismes internationaux": { + "account_number": "452" + }, + "Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "Organismes internationaux, fonds de dotation \u00e0 recevoir": { + "account_number": "4581" + }, + "Organismes internationaux, subventions \u00e0 recevoir": { + "account_number": "4582" + }, + "account_number": "458" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "Apporteurs, capital appel\u00e9, non vers\u00e9": { + "account_number": "4613" + }, + "Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": { + "account_number": "4614" + }, + "Apporteurs, titres \u00e0 \u00e9changer": { + "account_number": "4618" + } + }, + "Apporteurs, restant d\u00fb sur capital appel\u00e9": { + "account_number": "467" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4721" + }, + "Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": { + "account_number": "4726" + } + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "Mandants": { + "account_number": "4731" + }, + "Mandataires": { + "account_number": "4732" + }, + "Commettants": { + "account_number": "4733" + }, + "Commissionnaires": { + "account_number": "4734" + }, + "\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": { + "account_number": "4739" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "Compte de r\u00e9partition p\u00e9riodique des produits": { + "account_number": "4747" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "Compte actif": { + "account_type": "Temporary", + "account_number": "4751" + } + }, + "Charges constat\u00e9es d\u2019avance": { + "account_number": "476" + }, + "478-\u00c9carts de conversion actif": { + "Diminution des cr\u00e9ances d\u2019exploitation": { + "account_number": "4781" + }, + "Diminution des cr\u00e9ances financi\u00e8res": { + "account_number": "4782" + }, + "Augmentation des dettes d\u2019exploitation": { + "account_number": "4783" + }, + "Augmentation des dettes financi\u00e8res": { + "account_number": "4784" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4786" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4788" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "En compte, immobilisations incorporelles": { + "account_number": "4851" + }, + "En compte, immobilisations corporelles": { + "account_number": "4852" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_number": "4853" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_number": "4854" + }, + "Effets escompt\u00e9s non \u00e9chus": { + "account_number": "4855" + }, + "Retenues de garantie": { + "account_number": "4857" + }, + "Factures \u00e0 \u00e9tablir": { + "account_number": "4858" + }, + "account_number": "485" + }, + "Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": { + "account_number": "488" + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "D\u00e9pr\u00e9ciations des comptes clients": { + "Cr\u00e9ances litigieuses": { + "account_number": "4911" + }, + "Cr\u00e9ances douteuses": { + "account_number": "4912" + }, + "account_number": "491" + }, + "D\u00e9pr\u00e9ciations des comptes organismes internationaux": { + "account_number": "495" + }, + "D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "Associ\u00e9s, comptes courants": { + "account_number": "4962" + }, + "Associ\u00e9s, op\u00e9rations faites en commun": { + "account_number": "4963" + }, + "Groupe, comptes courants": { + "account_number": "4966" + }, + "account_number": "496" + }, + "D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": { + "account_number": "497" + }, + "D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "account_number": "4985" + }, + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4986" + }, + "Autres cr\u00e9ances HAO": { + "account_number": "4988" + }, + "account_number": "498" + }, + "Provisions pour risques \u00e0 court terme": { + "Sur op\u00e9rations d\u2019exploitation": { + "account_number": "4991" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "4997" + }, + "Sur op\u00e9rations HAO": { + "account_number": "4998" + }, + "account_number": "499" + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "Fournisseurs, dettes en compte": { + "Fournisseurs": { + "account_type": "Payable", + "account_number": "4011" + }, + "Fournisseurs groupe": { + "account_type": "Payable", + "account_number": "4012" + }, + "Fournisseurs sous-traitants": { + "account_type": "Payable", + "account_number": "4013" + }, + "Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable", + "account_number": "4016" + }, + "Fournisseur, retenues de garantie": { + "account_type": "Payable", + "account_number": "4017" + }, + "account_type": "Payable", + "account_number": "401" + }, + "Fournisseurs, effets \u00e0 payer": { + "Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4021" + }, + "Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4022" + }, + "Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4023" + }, + "account_type": "Payable", + "account_number": "402" + }, + "Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4041" + }, + "Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4042" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4046" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4047" + }, + "account_type": "Payable", + "account_number": "404" + }, + "Fournisseurs, factures non parvenues": { + "Fournisseurs": { + "account_type": "Stock Received But Not Billed", + "account_number": "4081" + }, + "Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed", + "account_number": "4082" + }, + "Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed", + "account_number": "4083" + }, + "Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed", + "account_number": "4086" + }, + "account_type": "Stock Received But Not Billed", + "account_number": "408" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "Clients cr\u00e9diteurs": { + "Clients, avances et acomptes re\u00e7us": { + "account_number": "4191" + }, + "Clients groupe, avances et acomptes re\u00e7us": { + "account_number": "4192" + }, + "Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": { + "account_number": "4194" + }, + "Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": { + "account_number": "4198" + }, + "account_number": "419" + } + }, + "42-Personnel (PASSIF)": { + "Personnel, r\u00e9mun\u00e9rations dues": { + "account_number": "422" + }, + "Personnel, oppositions, saisies-arr\u00eats": { + "Personnel, oppositions": { + "account_number": "4231" + }, + "Personnel, saisies-arr\u00eats": { + "account_number": "4232" + }, + "Personnel, avis \u00e0 tiers d\u00e9tenteur": { + "account_number": "4233" + }, + "account_number": "423" + }, + "Personnel, \u0153uvres sociales internes": { + "Assistance m\u00e9dicale": { + "account_number": "4241" + }, + "Allocations familiales": { + "account_number": "4242" + }, + "Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": { + "account_number": "4245" + }, + "Autres \u0153uvres sociales internes": { + "account_number": "4248" + }, + "account_number": "424" + }, + "Repr\u00e9sentants du personnel": { + "D\u00e9l\u00e9gu\u00e9s du personnel": { + "account_number": "4251" + }, + "Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": { + "account_number": "4252" + }, + "Autres repr\u00e9sentants du personnel": { + "account_number": "4258" + }, + "account_number": "425" + }, + "Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "Participation aux b\u00e9n\u00e9fices": { + "account_number": "4261" + }, + "Participation au capital": { + "account_number": "4264" + }, + "account_number": "426" + }, + "Personnel d\u00e9p\u00f4ts": { + "account_number": "427" + }, + "Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": { + "account_number": "4281" + }, + "Autres charges \u00e0 payer": { + "account_number": "4286" + }, + "Produits \u00e0 recevoir": { + "account_number": "4287" + }, + "account_number": "428" + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges sociales sur gratifications \u00e0 payer": { + "account_number": "4381" + }, + "Charges sociales sur cong\u00e9s \u00e0 payer": { + "account_number": "4382" + }, + "Autres charges \u00e0 payer": { + "account_number": "4386" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": { + "account_number": "441" + }, + "\u00c9tat, autres imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes d\u2019\u00c9tat": { + "account_number": "4421" + }, + "Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": { + "account_number": "4422" + }, + "Imp\u00f4ts et taxes recouvrables sur des obligataires": { + "account_number": "4423" + }, + "Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": { + "account_number": "4424" + }, + "Droits de douane": { + "account_number": "4426" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "4428" + }, + "account_number": "442" + }, + "\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "\u00c9tat, TVA due": { + "account_number": "4441" + }, + "\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": { + "account_number": "4449" + }, + "account_number": "444" + }, + "\u00c9tat, autres taxes sur le chiffre d\u2019affaires": { + "account_number": "446" + }, + "\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": { + "account_number": "4471" + }, + "Imp\u00f4ts sur salaires": { + "account_number": "4472" + }, + "Contribution nationale": { + "account_number": "4473" + }, + "Contribution nationale de solidarit\u00e9": { + "account_number": "4474" + }, + "Autres imp\u00f4ts et contributions": { + "account_number": "4478" + }, + "account_number": "447" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "Apporteurs, apports en nature": { + "account_number": "4611" + }, + "Apporteurs, apports en num\u00e9raire": { + "account_number": "4612" + }, + "Apporteurs, versements re\u00e7us sur augmentation de capital": { + "account_number": "4615" + }, + "Apporteurs, versements anticip\u00e9s": { + "account_number": "4616" + }, + "Apporteurs d\u00e9faillants": { + "account_number": "4617" + }, + "Apporteurs, capital \u00e0 rembourser": { + "account_number": "4619" + } + }, + "462-Associ\u00e9s, comptes courants": { + "Principal": { + "account_number": "4621" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4626" + } + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "Op\u00e9rations courantes": { + "account_number": "4631" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4636" + } + }, + "Associ\u00e9s, dividendes \u00e0 payer": { + "account_number": "465" + }, + "Groupe, comptes courants": { + "account_number": "466" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "D\u00e9biteurs divers": { + "account_number": "4711" + }, + "Cr\u00e9diteurs divers": { + "account_number": "4712" + }, + "Obligataires": { + "account_number": "4713" + }, + "R\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "4715" + }, + "Compte d\u2019affacturage": { + "account_number": "4716" + }, + "D\u00e9biteurs divers retenues de garantie": { + "account_number": "4717" + }, + "Apport, compte de fusion et op\u00e9rations assimil\u00e9es": { + "account_number": "4718" + }, + "Bons de souscription d\u2019actions et d\u2019obligations": { + "account_number": "4719" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "Compte de r\u00e9partition p\u00e9riodique des charges": { + "account_number": "4746" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "Compte passif": { + "account_number": "4752" + } + }, + "Produits constat\u00e9s d\u2019avance": { + "account_number": "477" + }, + "479-\u00c9carts de conversion passif": { + "Augmentation des cr\u00e9ances d\u2019exploitation": { + "account_number": "4791" + }, + "Augmentation des cr\u00e9ances financi\u00e8res": { + "account_number": "4792" + }, + "Diminution des dettes d\u2019exploitation": { + "account_number": "4793" + }, + "Diminution des dettes financi\u00e8res": { + "account_number": "4794" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4797" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4798" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "Fournisseurs d\u2019investissements": { + "Immobilisations incorporelles": { + "account_number": "4811" + }, + "Immobilisations corporelles": { + "account_number": "4812" + }, + "Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": { + "account_number": "4813" + }, + "R\u00e9serve de propri\u00e9t\u00e9": { + "account_number": "4816" + }, + "Retenues de garantie": { + "account_number": "4817" + }, + "Factures non parvenues": { + "account_number": "4818" + }, + "account_number": "481" + }, + "Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "Immobilisations incorporelles": { + "account_number": "4821" + }, + "Immobilisations corporelles": { + "account_number": "4822" + }, + "account_number": "482" + }, + "Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "Produits": { + "account_number": "4887" + }, + "account_number": "484" + } + }, + "root_type": "Liability" + }, + "Comptes de tr\u00e9sorerie": { + "Titres de placement": { + "Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "Titres du Tr\u00e9sor \u00e0 court terme": { + "account_number": "5011" + }, + "Titres d\u2019organismes financiers": { + "account_number": "5012" + }, + "Bons de caisse \u00e0 court terme": { + "account_number": "5013" + }, + "Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": { + "account_number": "5016" + }, + "account_number": "501" + }, + "Actions": { + "Actions ou parts propres": { + "account_number": "5021" + }, + "Actions cot\u00e9es": { + "account_number": "5022" + }, + "Actions non cot\u00e9es": { + "account_number": "5023" + }, + "Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": { + "account_number": "5024" + }, + "Autres actions": { + "account_number": "5025" + }, + "Frais d\u2019acquisition des actions": { + "account_number": "5026" + }, + "account_number": "502" + }, + "Obligations": { + "Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": { + "account_number": "5031" + }, + "Obligations cot\u00e9es": { + "account_number": "5032" + }, + "Obligations non cot\u00e9es": { + "account_number": "5033" + }, + "Autres obligations": { + "account_number": "5035" + }, + "Frais d\u2019acquisition des obligations": { + "account_number": "5036" + }, + "account_number": "503" + }, + "Bons de souscription": { + "Bons de souscription d\u2019actions": { + "account_number": "5042" + }, + "Bons de souscription d\u2019obligations": { + "account_number": "5043" + }, + "account_number": "504" + }, + "Titres n\u00e9gociables hors r\u00e9gion": { + "account_number": "505" + }, + "Int\u00e9r\u00eats courus": { + "Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": { + "account_number": "5061" + }, + "Actions": { + "account_number": "5062" + }, + "Obligations": { + "account_number": "5063" + }, + "account_number": "506" + }, + "Autres titres de placement et cr\u00e9ances assimil\u00e9es": { + "account_number": "508" + }, + "account_number": "50" + }, + "Valeurs \u00e0 encaisser": { + "Effets \u00e0 encaisser": { + "account_number": "511" + }, + "Effets \u00e0 l\u2019encaissement": { + "account_number": "512" + }, + "Ch\u00e8ques \u00e0 encaisser": { + "account_number": "513" + }, + "Ch\u00e8ques \u00e0 l\u2019encaissement": { + "account_number": "514" + }, + "Cartes de cr\u00e9dit \u00e0 encaisser": { + "account_number": "515" + }, + "Autres valeurs \u00e0 l\u2019encaissement": { + "Warrants": { + "account_number": "5181" + }, + "Billets de fonds": { + "account_number": "5182" + }, + "Ch\u00e8ques de voyage": { + "account_number": "5185" + }, + "Coupons \u00e9chus": { + "account_number": "5186" + }, + "Int\u00e9r\u00eats \u00e9chus des obligations": { + "account_number": "5187" + }, + "account_number": "518" + }, + "account_number": "51" + }, + "Banques": { + "Banques locales": { + "Banques en monnaie nationale": { + "account_type": "Bank", + "account_number": "5211" + }, + "Banques en devises": { + "account_type": "Bank", + "account_number": "5215" + }, + "account_type": "Bank", + "account_number": "521" + }, + "Banques autres \u00c9tats r\u00e9gion": { + "account_number": "522" + }, + "Banques autres \u00c9tats zone mon\u00e9taire": { + "account_number": "523" + }, + "Banques hors zone mon\u00e9taire": { + "account_number": "524" + }, + "Banques d\u00e9p\u00f4t \u00e0 terme": { + "account_number": "525" + }, + "Banques, int\u00e9r\u00eats courus": { + "Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": { + "account_number": "5261" + }, + "Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": { + "account_number": "5267" + }, + "account_number": "526" + }, + "account_number": "52" + }, + "\u00c9tablissements financiers et assimil\u00e9s": { + "Ch\u00e8ques postaux": { + "account_number": "531" + }, + "Tr\u00e9sor": { + "account_number": "532" + }, + "Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": { + "account_number": "533" + }, + "\u00c9tablissements financiers, int\u00e9r\u00eats courus": { + "account_number": "536" + }, + "Autres organismes financiers": { + "account_number": "538" + }, + "account_number": "53" + }, + "Instruments de tr\u00e9sorerie": { + "Options de taux d\u2019int\u00e9r\u00eat": { + "account_number": "541" + }, + "Options de taux de change": { + "account_number": "542" + }, + "Options de taux boursiers": { + "account_number": "543" + }, + "Instruments de march\u00e9s \u00e0 terme": { + "account_number": "544" + }, + "Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": { + "account_number": "545" + }, + "account_number": "54" + }, + "Instruments de monnaie \u00e9lectronique": { + "Monnaie \u00e9lectronique carte carburant": { + "account_number": "551" + }, + "Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": { + "account_number": "552" + }, + "Monnaie \u00e9lectronique carte p\u00e9age": { + "account_number": "553" + }, + "Porte-monnaie \u00e9lectronique": { + "account_number": "554" + }, + "Autres instruments de monnaies \u00e9lectroniques": { + "account_number": "558" + }, + "account_number": "55" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "Cr\u00e9dits de tr\u00e9sorerie": { + "account_number": "561" + }, + "Escompte de cr\u00e9dits de campagne": { + "account_number": "564" + }, + "Escompte de cr\u00e9dits ordinaires": { + "account_number": "565" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": { + "account_number": "566" + }, + "account_number": "56" + }, + "Caisse": { + "Caisse si\u00e8ge social": { + "Caisse en monnaie nationale": { + "account_number": "5711" + }, + "Caisse en devises": { + "account_number": "5712" + }, + "account_number": "571" + }, + "Caisse succursale A": { + "En monnaie nationale": { + "account_number": "5721" + }, + "En devises": { + "account_number": "5722" + }, + "account_number": "572" + }, + "Caisse succursale B": { + "En monnaie nationale": { + "account_number": "5731" + }, + "En devises": { + "account_number": "5732" + }, + "account_number": "573" + }, + "account_number": "57" + }, + "R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "R\u00e9gies d\u2019avance": { + "account_number": "581" + }, + "Accr\u00e9ditifs": { + "account_number": "582" + }, + "Virements de fonds": { + "account_number": "585" + }, + "Autres virements internes": { + "account_number": "588" + }, + "account_number": "58" + }, + "D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "D\u00e9pr\u00e9ciations des titres de placement": { + "account_number": "590" + }, + "D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": { + "account_number": "591" + }, + "D\u00e9pr\u00e9ciations des comptes banques": { + "account_number": "592" + }, + "D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": { + "account_number": "593" + }, + "D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": { + "account_number": "594" + }, + "Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": { + "account_number": "599" + }, + "account_number": "59" + }, + "root_type": "Asset", + "account_number": "5" + }, + "Comptes de charges des activit\u00e9s ordinaires": { + "Achats et variations de stocks": { + "Achats de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "6011" + }, + "Hors R\u00e9gion": { + "account_number": "6012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6014" + }, + "Frais sur achats": { + "account_number": "6015" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6019" + }, + "account_number": "601" + }, + "Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Dans la R\u00e9gion": { + "account_number": "6021" + }, + "Hors R\u00e9gion": { + "account_number": "6022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6024" + }, + "Frais sur achats": { + "account_number": "6025" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6029" + }, + "account_number": "602" + }, + "Variations des stocks de biens achet\u00e9s": { + "Variations des stocks de marchandises": { + "account_number": "6031" + }, + "Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "6032" + }, + "Variations des stocks d\u2019autres approvisionnements": { + "account_number": "6033" + }, + "account_number": "603" + }, + "Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "Mati\u00e8res consommables": { + "account_number": "6041" + }, + "Mati\u00e8res combustibles": { + "account_number": "6042" + }, + "Produits d\u2019entretien": { + "account_number": "6043" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "6044" + }, + "Frais sur achat": { + "account_number": "6045" + }, + "Fournitures de magasin": { + "account_number": "6046" + }, + "Fournitures de bureau": { + "account_number": "6047" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6049" + }, + "account_number": "604" + }, + "Autres achats": { + "Fournitures non stockables Eau": { + "account_number": "6051" + }, + "Fournitures non stockables \u00c9lectricit\u00e9": { + "account_number": "6052" + }, + "Fournitures non stockables Autres \u00e9nergies": { + "account_number": "6053" + }, + "Fournitures d\u2019entretien non stockables": { + "account_number": "6054" + }, + "Fournitures de bureau non stockables": { + "account_number": "6055" + }, + "Achats de petit mat\u00e9riel et outillage": { + "account_number": "6056" + }, + "Achats d\u2019\u00e9tudes et prestations de services": { + "account_number": "6057" + }, + "Achats de travaux, mat\u00e9riels et \u00e9quipements": { + "account_number": "6058" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6059" + }, + "account_number": "605" + }, + "Achats d\u2019emballages": { + "Emballages perdus": { + "account_number": "6081" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "6082" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "6083" + }, + "Frais sur achats": { + "account_number": "6085" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6089" + }, + "account_number": "608" + }, + "account_number": "60" + }, + "Transports": { + "Transports sur ventes": { + "account_number": "612" + }, + "Transports pour le compte de tiers": { + "account_number": "613" + }, + "Transports du personnel": { + "account_number": "614" + }, + "Transports de plis": { + "account_number": "616" + }, + "Autres frais de transport": { + "Voyages et d\u00e9placements": { + "account_number": "6181" + }, + "Transports entre \u00e9tablissements ou chantiers": { + "account_number": "6182" + }, + "Transports administratifs": { + "account_number": "6183" + }, + "account_number": "618" + }, + "account_number": "61" + }, + "Services ext\u00e9rieurs": { + "Sous-traitance g\u00e9n\u00e9rale": { + "account_number": "621" + }, + "Locations, charges locatives": { + "Locations de terrains": { + "account_number": "6221" + }, + "Locations de b\u00e2timents": { + "account_number": "6222" + }, + "Locations de mat\u00e9riels et outillages": { + "account_number": "6223" + }, + "Malis sur emballages": { + "account_number": "6224" + }, + "Locations d\u2019emballages": { + "account_number": "6225" + }, + "Fermages et loyers du foncier": { + "account_number": "6226" + }, + "Locations et charges locatives diverses": { + "account_number": "6228" + }, + "account_number": "622" + }, + "Redevances de location acquisition": { + "Cr\u00e9dit-bail immobilier": { + "account_number": "6232" + }, + "Cr\u00e9dit-bail mobilier": { + "account_number": "6233" + }, + "Location-vente": { + "account_number": "6234" + }, + "Autres contrats de location acquisition": { + "account_number": "6238" + }, + "account_number": "623" + }, + "Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "Entretien et r\u00e9parations des biens immobiliers": { + "account_number": "6241" + }, + "Entretien et r\u00e9parations des biens mobiliers": { + "account_number": "6242" + }, + "Maintenance": { + "account_number": "6243" + }, + "Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "6244" + }, + "Autres entretiens et r\u00e9parations": { + "account_number": "6248" + }, + "account_number": "624" + }, + "Primes d\u2019assurance": { + "Assurances multirisques": { + "account_number": "6251" + }, + "Assurances mat\u00e9riel de transport": { + "account_number": "6252" + }, + "Assurances risques d\u2019exploitation": { + "account_number": "6253" + }, + "Assurances responsabilit\u00e9 du producteur": { + "account_number": "6254" + }, + "Assurances insolvabilit\u00e9 clients": { + "account_number": "6255" + }, + "Assurances transport sur ventes": { + "account_number": "6257" + }, + "Autres primes d\u2019assurances": { + "account_number": "6258" + }, + "account_number": "625" + }, + "\u00c9tudes, recherches et documentation": { + "\u00c9tudes et recherches": { + "account_number": "6261" + }, + "Documentation g\u00e9n\u00e9rale": { + "account_number": "6265" + }, + "Documentation technique": { + "account_number": "6266" + }, + "account_number": "626" + }, + "Publicit\u00e9, publications, relations publiques": { + "Annonces, insertions": { + "account_number": "6271" + }, + "Catalogues, imprim\u00e9s publicitaires": { + "account_number": "6272" + }, + "\u00c9chantillons": { + "account_number": "6273" + }, + "Foires et expositions": { + "account_number": "6274" + }, + "Publications": { + "account_number": "6275" + }, + "Cadeaux \u00e0 la client\u00e8le": { + "account_number": "6276" + }, + "Frais de colloques, s\u00e9minaires, conf\u00e9rences": { + "account_number": "6277" + }, + "Autres charges de publicit\u00e9 et relations publiques": { + "account_number": "6278" + }, + "account_number": "627" + }, + "Frais de t\u00e9l\u00e9communications": { + "Frais de t\u00e9l\u00e9phone": { + "account_number": "6281" + }, + "Frais de t\u00e9lex": { + "account_number": "6282" + }, + "Frais de t\u00e9l\u00e9copie": { + "account_number": "6283" + }, + "Autres frais de t\u00e9l\u00e9communications": { + "account_number": "6288" + }, + "account_number": "628" + }, + "account_number": "62" + }, + "Autres services ext\u00e9rieurs": { + "Frais bancaires": { + "Frais sur titres (vente, garde)": { + "account_number": "6311" + }, + "Frais sur effets": { + "account_number": "6312" + }, + "Location de coffres": { + "account_number": "6313" + }, + "Commissions d\u2019affacturage": { + "account_number": "6314" + }, + "Commissions sur cartes de cr\u00e9dit": { + "account_number": "6315" + }, + "Frais d\u2019\u00e9mission d\u2019emprunts": { + "account_number": "6316" + }, + "Frais sur instruments monnaie \u00e9lectronique": { + "account_number": "6317" + }, + "Autres frais bancaires": { + "account_number": "6318" + }, + "account_number": "631" + }, + "R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "Commissions et courtages sur ventes": { + "account_number": "6322" + }, + "Honoraires des professions r\u00e9glement\u00e9es": { + "account_number": "6324" + }, + "Frais d\u2019actes et de contentieux": { + "account_number": "6325" + }, + "R\u00e9mun\u00e9rations d\u2019affacturage": { + "account_number": "6326" + }, + "R\u00e9mun\u00e9rations des autres prestataires de services": { + "account_number": "6327" + }, + "Divers frais": { + "account_number": "6328" + }, + "account_number": "632" + }, + "Frais de formation du personnel": { + "account_number": "633" + }, + "Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "Redevances pour brevets, licences": { + "account_number": "6342" + }, + "Redevances pour logiciels": { + "account_number": "6343" + }, + "Redevances pour marques": { + "account_number": "6344" + }, + "Redevances pour sites internet": { + "account_number": "6345" + }, + "Redevances pour concessions, droits et valeurs similaires": { + "account_number": "6346" + }, + "account_number": "634" + }, + "Cotisations": { + "Cotisations": { + "account_number": "6351" + }, + "Concours divers": { + "account_number": "6358" + }, + "account_number": "635" + }, + "R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "Personnel int\u00e9rimaire": { + "account_number": "6371" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6372" + }, + "account_number": "637" + }, + "Autres charges externes": { + "Frais de recrutement du personnel": { + "account_number": "6381" + }, + "Frais de d\u00e9m\u00e9nagement": { + "account_number": "6382" + }, + "R\u00e9ceptions": { + "account_number": "6383" + }, + "Missions": { + "account_number": "6384" + }, + "Charges de copropri\u00e9t\u00e9": { + "account_number": "6385" + }, + "account_number": "638" + }, + "account_number": "63" + }, + "Imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes directs": { + "Imp\u00f4ts fonciers et taxes annexes": { + "account_number": "6411" + }, + "Patentes, licences et taxes annexes": { + "account_number": "6412" + }, + "Taxes sur appointements et salaires": { + "account_number": "6413" + }, + "Taxes d\u2019apprentissage": { + "account_number": "6414" + }, + "Formation professionnelle continue": { + "account_number": "6415" + }, + "Autres imp\u00f4ts et taxes directs": { + "account_number": "6418" + }, + "account_number": "641" + }, + "Imp\u00f4ts et taxes indirects": { + "account_number": "645" + }, + "Droits d\u2019enregistrement": { + "Droits de mutation": { + "account_number": "6461" + }, + "Droits de timbre": { + "account_number": "6462" + }, + "Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": { + "account_number": "6463" + }, + "Vignettes": { + "account_number": "6464" + }, + "Autres droits": { + "account_number": "6468" + }, + "account_number": "646" + }, + "P\u00e9nalit\u00e9s, amendes fiscales": { + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": { + "account_number": "6471" + }, + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": { + "account_number": "6472" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": { + "account_number": "6473" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": { + "account_number": "6474" + }, + "Autres p\u00e9nalit\u00e9s et amendes fiscales": { + "account_number": "6478" + }, + "account_number": "647" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "648" + }, + "account_number": "64" + }, + "Autres charges": { + "Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "Clients": { + "account_number": "6511" + }, + "Autres d\u00e9biteurs": { + "account_number": "6515" + }, + "account_number": "651" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "6521" + }, + "Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "6525" + }, + "account_number": "652" + }, + "Valeurs comptables des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "6541" + }, + "Immobilisations corporelles": { + "account_number": "6542" + }, + "account_number": "654" + }, + "Perte de change sur cr\u00e9ances et dettes commerciale": { + "account_number": "656" + }, + "P\u00e9nalit\u00e9s et amendes p\u00e9nales": { + "account_number": "657" + }, + "Charges diverses": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "6581" + }, + "Dons": { + "account_number": "6582" + }, + "M\u00e9c\u00e9nat": { + "account_number": "6583" + }, + "Autres charges diverses": { + "account_number": "6588" + }, + "account_number": "658" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "6591" + }, + "Sur stocks": { + "account_number": "6593" + }, + "Sur cr\u00e9ances": { + "account_number": "6594" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": { + "account_number": "6598" + }, + "account_number": "659" + }, + "account_number": "65" + }, + "Charges de personnel": { + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "Appointements salaires et commissions": { + "account_number": "6611" + }, + "Primes et gratifications": { + "account_number": "6612" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6613" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6614" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6615" + }, + "Suppl\u00e9ment familial": { + "account_number": "6616" + }, + "Avantages en nature": { + "account_number": "6617" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6618" + }, + "account_number": "661" + }, + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "Appointements salaires et commissions": { + "account_number": "6621" + }, + "Primes et gratifications": { + "account_number": "6622" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6623" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6624" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6625" + }, + "Suppl\u00e9ment familial": { + "account_number": "6626" + }, + "Avantages en nature": { + "account_number": "6627" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6628" + }, + "account_number": "662" + }, + "Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "Indemnit\u00e9s de logement": { + "account_number": "6631" + }, + "Indemnit\u00e9s de repr\u00e9sentation": { + "account_number": "6632" + }, + "Indemnit\u00e9s d\u2019expatriation": { + "account_number": "6633" + }, + "Indemnit\u00e9s de transport": { + "account_number": "6634" + }, + "Autres indemnit\u00e9s et avantages divers": { + "account_number": "6638" + }, + "account_number": "663" + }, + "Charges sociales": { + "Charges sociales sur r\u00e9mun\u00e9ration du personnel national": { + "account_number": "6641" + }, + "Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": { + "account_number": "6642" + }, + "account_number": "664" + }, + "R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "R\u00e9mun\u00e9ration du travail de l\u2019exploitant": { + "account_number": "6661" + }, + "Charges sociales": { + "account_number": "6662" + }, + "account_number": "666" + }, + "R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "Personnel int\u00e9rimaire": { + "account_number": "6671" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6672" + }, + "account_number": "667" + }, + "Autres charges sociales": { + "Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": { + "account_number": "6681" + }, + "Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": { + "account_number": "6682" + }, + "Versements et contributions aux autres \u0153uvres sociales": { + "account_number": "6683" + }, + "M\u00e9decine du travail et pharmacie": { + "account_number": "6684" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "6685" + }, + "Assurances retraite et fonds de pension": { + "account_number": "6686" + }, + "Majorations et p\u00e9nalit\u00e9s sociales": { + "account_number": "6687" + }, + "Charges sociales diverses": { + "account_number": "6688" + }, + "account_number": "668" + }, + "account_number": "66" + }, + "Frais financiers et charges assimil\u00e9es": { + "Int\u00e9r\u00eats des emprunts": { + "Emprunts obligataires": { + "account_number": "6711" + }, + "Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "6712" + }, + "Dettes li\u00e9es \u00e0 des participations": { + "account_number": "6713" + }, + "Primes de remboursement des obligations": { + "account_number": "6714" + }, + "account_number": "671" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "6722" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "6723" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": { + "account_number": "6724" + }, + "Int\u00e9r\u00eats dans loyers des autres locations acquisition": { + "account_number": "6728" + }, + "account_number": "672" + }, + "Escomptes accord\u00e9s": { + "account_number": "673" + }, + "Autres int\u00e9r\u00eats": { + "Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": { + "account_number": "6741" + }, + "Comptes courants bloqu\u00e9s": { + "account_number": "6742" + }, + "Int\u00e9r\u00eats sur obligations cautionn\u00e9es": { + "account_number": "6743" + }, + "Int\u00e9r\u00eats sur dettes commerciales": { + "account_number": "6744" + }, + "Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": { + "account_number": "6745" + }, + "Int\u00e9r\u00eats sur dettes diverses": { + "account_number": "6748" + }, + "account_number": "674" + }, + "Escomptes des effets de commerce": { + "account_number": "675" + }, + "Pertes de change financi\u00e8res": { + "account_number": "676" + }, + "Pertes sur titres de placement": { + "Pertes sur cessions de titres de placement": { + "account_number": "6771" + }, + "Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "6772" + }, + "account_number": "677" + }, + "Pertes et charges sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "6781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "6782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "6784" + }, + "account_number": "678" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "6791" + }, + "Sur titres de placement": { + "account_number": "6795" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "6798" + }, + "account_number": "679" + }, + "account_number": "67" + }, + "Dotations aux amortissements": { + "Dotations aux amortissements d\u2019exploitation": { + "Dotations aux amortissements des immobilisations incorporelles": { + "account_number": "6812" + }, + "Dotations aux amortissements des immobilisations corporelles": { + "account_number": "6813" + }, + "account_number": "681" + }, + "account_number": "68" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6911" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "account_number": "6913" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": { + "account_number": "6914" + }, + "account_number": "691" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6971" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": { + "account_number": "6972" + }, + "account_number": "697" + }, + "account_number": "69" + }, + "root_type": "Expense", + "account_number": "6" + }, + "Comptes de produits des activit\u00e9s ordinaires": { + "Ventes": { + "Ventes de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "7011" + }, + "Hors R\u00e9gion": { + "account_number": "7012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7014" + }, + "Sur internet": { + "account_number": "7015" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7019" + }, + "account_number": "701" + }, + "Ventes de produits finis": { + "Dans la R\u00e9gion": { + "account_number": "7021" + }, + "Hors R\u00e9gion": { + "account_number": "7022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7024" + }, + "Sur internet": { + "account_number": "7025" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7029" + }, + "account_number": "702" + }, + "Ventes de produits interm\u00e9diaires": { + "Dans la R\u00e9gion": { + "account_number": "7031" + }, + "Hors R\u00e9gion": { + "account_number": "7032" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7033" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7034" + }, + "Sur internet": { + "account_number": "7035" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7039" + }, + "account_number": "703" + }, + "Ventes de produits r\u00e9siduels": { + "Dans la R\u00e9gion": { + "account_number": "7041" + }, + "Hors R\u00e9gion": { + "account_number": "7042" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7043" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7044" + }, + "Sur internet": { + "account_number": "7045" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7049" + }, + "account_number": "704" + }, + "Travaux factur\u00e9s": { + "Dans la R\u00e9gion": { + "account_number": "7051" + }, + "Hors R\u00e9gion": { + "account_number": "7052" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7053" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7054" + }, + "Sur internet": { + "account_number": "7055" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7059" + }, + "account_number": "705" + }, + "Services vendus": { + "Dans la R\u00e9gion": { + "account_number": "7061" + }, + "Hors R\u00e9gion": { + "account_number": "7062" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7063" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7064" + }, + "Sur internet": { + "account_number": "7065" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7069" + }, + "account_number": "706" + }, + "Produits accessoires": { + "Ports, emballages perdus et autres frais factur\u00e9s": { + "account_number": "7071" + }, + "Commissions et courtages": { + "account_number": "7072" + }, + "Locations": { + "account_number": "7073" + }, + "Bonis sur reprises et cessions d\u2019emballages": { + "account_number": "7074" + }, + "Mise \u00e0 disposition de personnel": { + "account_number": "7075" + }, + "Redevances pour brevets, logiciels, marques et droits similaires": { + "account_number": "7076" + }, + "Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": { + "account_number": "7077" + }, + "Autres produits accessoires": { + "account_number": "7078" + }, + "account_number": "707" + }, + "account_number": "70" + }, + "Subventions d\u2019exploitation": { + "Sur produits \u00e0 l\u2019exportation": { + "account_number": "711" + }, + "Sur produits \u00e0 l\u2019importation": { + "account_number": "712" + }, + "Sur produits de p\u00e9r\u00e9quation": { + "account_number": "713" + }, + "Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": { + "account_number": "714" + }, + "Autres subventions d\u2019exploitation": { + "Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": { + "account_number": "7181" + }, + "Vers\u00e9es par les organismes internationaux": { + "account_number": "7182" + }, + "Vers\u00e9es par des tiers": { + "account_number": "7183" + }, + "account_number": "718" + }, + "account_number": "71" + }, + "Production immobilis\u00e9e": { + "Immobilisations incorporelles": { + "account_number": "721" + }, + "Immobilisations corporelles": { + "Immobilisations corporelles (hors actifs biologiques)": { + "account_number": "7221" + }, + "Immobilisations corporelles (actifs biologiques)": { + "account_number": "7222" + }, + "account_number": "722" + }, + "Production auto-consomm\u00e9e": { + "account_number": "724" + }, + "Immobilisations financi\u00e8res": { + "account_number": "726" + }, + "account_number": "72" + }, + "Variations des stocks de biens et de services produits": { + "Variations des stocks de produits en cours": { + "Produits en cours": { + "account_number": "7341" + }, + "Travaux en cours": { + "account_number": "7342" + }, + "account_number": "734" + }, + "Variations des en-cours de services": { + "\u00c9tudes en cours": { + "account_number": "7351" + }, + "Prestations de services en cours": { + "account_number": "7352" + }, + "account_number": "735" + }, + "Variations des stocks de produits finis": { + "account_number": "736" + }, + "Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "account_number": "7371" + }, + "Produits r\u00e9siduels": { + "account_number": "7372" + }, + "account_number": "737" + }, + "account_number": "73" + }, + "Autres produits": { + "Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "account_number": "751" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "7521" + }, + "B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "7525" + }, + "account_number": "752" + }, + "Produits des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "7541" + }, + "Immobilisations corporelles": { + "account_number": "7542" + }, + "account_number": "754" + }, + "Gains de change sur cr\u00e9ances et dettes commerciales": { + "account_number": "756" + }, + "Produits divers": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "7581" + }, + "Indemnit\u00e9s d\u2019assurances re\u00e7ues": { + "account_number": "7582" + }, + "Autres produits divers": { + "account_number": "7588" + }, + "account_number": "758" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "7591" + }, + "Sur stocks": { + "account_number": "7593" + }, + "Sur cr\u00e9ances": { + "account_number": "7594" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "account_number": "7598" + }, + "account_number": "759" + }, + "account_number": "75" + }, + "Revenus financiers et produits assimil\u00e9s": { + "Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "Int\u00e9r\u00eats de pr\u00eats": { + "account_number": "7712" + }, + "Int\u00e9r\u00eats sur cr\u00e9ances diverses": { + "account_number": "7713" + }, + "account_number": "771" + }, + "Revenus de participations et autres titres immobilis\u00e9s": { + "Revenus des titres de participation": { + "account_number": "7721" + }, + "Revenus autres titres immobilis\u00e9s": { + "account_number": "7722" + }, + "account_number": "772" + }, + "Escomptes obtenus": { + "account_number": "773" + }, + "Revenus de placement": { + "Revenus des obligations": { + "account_number": "7745" + }, + "Revenus des titres de placement": { + "account_number": "7746" + }, + "account_number": "774" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "account_number": "775" + }, + "Gains de change financiers": { + "account_number": "776" + }, + "Gains sur cessions de titres de placement": { + "account_number": "777" + }, + "Gains sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "7781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "7782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "7784" + }, + "account_number": "778" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "7791" + }, + "Sur titres de placement": { + "account_number": "7795" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "7798" + }, + "account_number": "779" + }, + "account_number": "77" + }, + "Transferts de charges": { + "Transferts de charges d\u2019exploitation": { + "account_number": "781" + }, + "Transferts de charges financi\u00e8res": { + "account_number": "787" + }, + "account_number": "78" + }, + "Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Pour risques et charges": { + "account_number": "7911" + }, + "Des immobilisations incorporelles": { + "account_number": "7913" + }, + "Des immobilisations corporelles": { + "account_number": "7914" + }, + "account_number": "791" + }, + "Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "Pour risques et charges": { + "account_number": "7971" + }, + "Des immobilisations financi\u00e8res": { + "account_number": "7972" + }, + "account_number": "797" + }, + "Reprises d\u2019amortissements": { + "account_number": "798" + }, + "Reprises de subventions d\u2019investissement": { + "account_number": "799" + }, + "account_number": "79" + }, + "root_type": "Income", + "account_number": "7" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "Valeurs comptables des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "811" + }, + "Immobilisations corporelles": { + "account_number": "812" + }, + "Immobilisations financi\u00e8res": { + "account_number": "816" + }, + "account_number": "81" + }, + "Charges hors activit\u00e9s ordinaires": { + "Charges HAO constat\u00e9es": { + "account_number": "831" + }, + "Charges li\u00e9es aux op\u00e9rations de restructuration": { + "account_number": "833" + }, + "Pertes sur cr\u00e9ances HAO": { + "account_number": "834" + }, + "Dons et lib\u00e9ralit\u00e9s accord\u00e9s": { + "account_number": "835" + }, + "Abandons de cr\u00e9ances consentis": { + "account_number": "836" + }, + "Charges li\u00e9es aux op\u00e9rations de liquidation": { + "account_number": "837" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "839" + }, + "account_number": "83" + }, + "Dotations hors activit\u00e9s ordinaires": { + "Dotations aux provisions r\u00e9glement\u00e9es": { + "account_number": "851" + }, + "Dotations aux amortissements HAO": { + "account_number": "852" + }, + "Dotations aux d\u00e9pr\u00e9ciations HAO": { + "account_number": "853" + }, + "Dotations aux provisions pour risques et charges HAO": { + "account_number": "854" + }, + "Autres dotations HAO": { + "account_number": "858" + }, + "account_number": "85" + }, + "Participation des travailleurs": { + "Participation l\u00e9gale aux b\u00e9n\u00e9fices": { + "account_number": "871" + }, + "Participation contractuelle aux b\u00e9n\u00e9fices": { + "account_number": "874" + }, + "Autres participations": { + "account_number": "878" + }, + "account_number": "87" + }, + "Imp\u00f4ts sur le r\u00e9sultat": { + "Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": { + "account_number": "8911" + }, + "Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": { + "account_number": "8912" + }, + "Activit\u00e9s exerc\u00e9es hors R\u00e9gion": { + "account_number": "8913" + }, + "account_number": "891" + }, + "Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "account_number": "892" + }, + "Imp\u00f4t minimum forfaitaire IMF": { + "account_number": "895" + }, + "D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "D\u00e9gr\u00e8vements": { + "account_number": "8991" + }, + "Annulations pour pertes r\u00e9troactives": { + "account_number": "8994" + }, + "account_number": "899" + }, + "account_number": "89" + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "Produits des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "821" + }, + "Immobilisations corporelles": { + "account_number": "822" + }, + "Immobilisations financi\u00e8res": { + "account_number": "826" + }, + "account_number": "82" + }, + "Produits hors activit\u00e9s ordinaires": { + "Produits HAO constat\u00e9s": { + "account_number": "841" + }, + "Produits li\u00e9s aux op\u00e9rations de restructuration": { + "account_number": "843" + }, + "Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": { + "account_number": "844" + }, + "Dons et lib\u00e9ralit\u00e9s obtenus": { + "account_number": "845" + }, + "Abandons de cr\u00e9ances obtenus": { + "account_number": "846" + }, + "Produits li\u00e9s aux op\u00e9rations de liquidation": { + "account_number": "847" + }, + "Transferts de charges HAO": { + "account_number": "848" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "849" + }, + "account_number": "84" + }, + "Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "Reprises de provisions r\u00e9glement\u00e9es": { + "account_number": "861" + }, + "Reprises d\u2019amortissements HAO": { + "account_number": "862" + }, + "Reprises de d\u00e9pr\u00e9ciations HAO": { + "account_number": "863" + }, + "Reprises de provisions pour risques et charges HAO": { + "account_number": "864" + }, + "Autres reprises HAO": { + "account_number": "868" + }, + "account_number": "86" + }, + "Subventions d\u2019\u00e9quilibre": { + "\u00c9tat": { + "account_number": "881" + }, + "Collectivit\u00e9s publiques": { + "account_number": "884" + }, + "Groupe": { + "account_number": "886" + }, + "Autres": { + "account_number": "888" + }, + "account_number": "88" + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py b/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py index e30ad24a374..5a5e232db8d 100644 --- a/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py @@ -72,6 +72,7 @@ def get(): _("Write Off"): {}, _("Exchange Gain/Loss"): {}, _("Gain/Loss on Asset Disposal"): {}, + _("Impairment"): {}, }, "root_type": "Expense", }, @@ -104,6 +105,7 @@ def get(): _("Dividends Paid"): {"account_type": "Equity"}, _("Opening Balance Equity"): {"account_type": "Equity"}, _("Retained Earnings"): {"account_type": "Equity"}, + _("Revaluation Surplus"): {"account_type": "Equity"}, "root_type": "Equity", }, } diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/syscohada_chart_of_accounts.py b/erpnext/accounts/doctype/account/chart_of_accounts/verified/syscohada_chart_of_accounts.py new file mode 100644 index 00000000000..2bf52dde92e --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/syscohada_chart_of_accounts.py @@ -0,0 +1,34 @@ +import json +from pathlib import Path + +syscohada_countries = [ + "bj", # Bénin + "bf", # Burkina-Faso + "cm", # Cameroun + "cf", # Centrafrique + "ci", # Côte d'Ivoire + "cg", # Congo + "km", # Comores + "ga", # Gabon + "gn", # Guinée + "gw", # Guinée-Bissau + "gq", # Guinée Equatoriale + "ml", # Mali + "ne", # Niger + "cd", # République Démocratique du Congo + "sn", # Sénégal + "td", # Tchad + "tg", # Togo +] + +folder = Path(__file__).parent +generic_charts = Path(folder).glob("syscohada*.json") + +for file in generic_charts: + with open(file) as f: + chart = json.load(f) + for country in syscohada_countries: + chart["country_code"] = country + json_object = json.dumps(chart, indent=4) + with open(Path(folder, file.name.replace("syscohada", country)), "w") as outfile: + outfile.write(json_object) diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/syscohada_plan_comptable.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/syscohada_plan_comptable.json new file mode 100644 index 00000000000..a5a9821ca05 --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/syscohada_plan_comptable.json @@ -0,0 +1,2892 @@ +{ + "country_code":"PLACEHOLDER", + "name":"Syscohada - Plan Comptable", + "tree":{ + "1-Comptes de ressources durables":{ + "10-Capital":{ + "101-Capital social":{ + "1011-Capital souscrit, non appelé":{ + }, + "1012-Capital souscrit, appelé, non versé":{ + }, + "1013-Capital souscrit, appelé, versé, non amorti":{ + }, + "1014-Capital souscrit, appelé, versé, amorti":{ + }, + "1018-Capital souscrit soumis à des conditions particulières":{ + } + }, + "102-Capital par dotation":{ + "1021-Dotation initiale":{ + }, + "1022-Dotations complémentaires":{ + }, + "1028-Autres dotations":{ + } + }, + "103-Capital personnel":{ + }, + "104-Compte de l’exploitant":{ + "1041-Apports temporaires":{ + }, + "1042-Opérations courantes":{ + }, + "1043-Rémunérations, impôts et autres charges personnelles":{ + }, + "1047-Prélèvements d’autoconsommation":{ + }, + "1048-Autres prélèvements":{ + } + }, + "105-Primes liées au capital social":{ + "1051-Primes d’émission":{ + }, + "1052-Primes d’apport":{ + }, + "1053-Primes de fusion":{ + }, + "1054-Primes de conversion":{ + }, + "1058-Autres primes":{ + } + }, + "106-Écarts de réévaluation":{ + "1061-Écarts de réévaluation légale":{ + }, + "1062-Écarts de réévaluation libre":{ + } + }, + "109-Apporteurs, capital souscrit, non appelé":{ + } + }, + "11-Réserves":{ + "111-Réserve légale":{ + }, + "112-Réserves statutaires ou contractuelles":{ + }, + "113-Réserves réglementées":{ + "1131-Réserves de plus-values nettes à long terme":{ + }, + "1132-Réserves d’attribution gratuite d’actions au personnel salarié et aux dirigeants":{ + }, + "1133-Réserves consécutives à l’octroi de subventions d’investissement":{ + }, + "1134-Réserves des valeurs mobilières donnant accès au capital":{ + }, + "1135-Autres réserves réglementées":{ + } + }, + "118-Autres réserves":{ + "1181-Réserves facultatives":{ + }, + "1188-Réserves diverses":{ + } + } + }, + "12-Report à nouveau":{ + "121-Report à nouveau créditeur":{ + }, + "129-Report à nouveau débiteur":{ + "1291-Perte nette à reporter":{ + }, + "1292-Perte Amortissements réputés différés":{ + } + } + }, + "13-Résultat net de l’exercice":{ + "130-Résultat en instance d’affectation":{ + "1301-Résultat en instance d’affectation : bénéfice":{ + }, + "1309-Résultat en instance d’affectation : perte":{ + } + }, + "131-Résultat net : bénéfice":{ + }, + "132-Marge commerciale (MC)":{ + }, + "133-Valeur ajoutée (VA)":{ + }, + "134-Excédent brut d’exploitation (EBE)":{ + }, + "135-Résultat d’exploitation (RE)":{ + }, + "136-Résultat financier (RF)":{ + }, + "137-Résultat des activités ordinaires (RAO)":{ + }, + "138-Résultat hors activités ordinaires (RHAO)":{ + "1381-Résultat de fusion":{ + }, + "1382-Résultat d’apport partiel d’actif":{ + }, + "1383-Résultat de scission":{ + }, + "1384-Résultat de liquidation":{ + } + }, + "139-Résultat net : perte":{ + } + }, + "14-Subventions d’investissement":{ + "141-Subventions d’équipement":{ + "1411-État":{ + }, + "1412-Régions":{ + }, + "1413-Départements":{ + }, + "1414-Communes et collectivités publiques décentralisées":{ + }, + "1415-Entités publiques ou mixtes":{ + }, + "1416-Entités et organismes privés":{ + }, + "1417-Organismes internationaux":{ + }, + "1418-Autres":{ + } + }, + "148-Autres subventions d’investissement":{ + } + }, + "15-Provisions réglementées et fonds assimilés":{ + "151-Amortissements dérogatoires":{ + }, + "152-Plus-values de cession à réinvestir":{ + }, + "153-Fonds réglementés":{ + "1531-Fonds National":{ + }, + "1532-Prélèvement pour le Budget":{ + } + }, + "154-Provisions spéciales de réévaluation":{ + }, + "155-Provisions réglementées relatives aux immobilisations":{ + "1551-Reconstitution des gisements miniers et pétroliers":{ + } + }, + "156-Provisions réglementées relatives aux stocks":{ + "1561-Hausse de prix":{ + }, + "1562-Fluctuation des cours":{ + } + }, + "157-Provisions pour investissement":{ + }, + "158-Autres provisions et fonds réglementés":{ + } + }, + "16-Emprunts et dettes assimilées":{ + "161-Emprunts obligataires":{ + "1611-Emprunts obligataires ordinaires":{ + }, + "1612-Emprunts obligataires convertibles en actions":{ + }, + "1613-Emprunts obligataires remboursables en actions":{ + }, + "1618-Autres emprunts obligataires":{ + } + }, + "162-Emprunts et dettes auprès des établissements de crédit":{ + }, + "163-Avances reçues de l’État":{ + }, + "164-Avances reçues et comptes courants bloqués":{ + }, + "165-Dépôts et cautionnements reçus":{ + "1651-Dépôts":{ + }, + "1652-Cautionnements":{ + } + }, + "166-Intérêts courus":{ + "1661-Sur emprunts obligataires":{ + }, + "1662-Sur emprunts et dettes auprès des établissements de crédit":{ + }, + "1663-Sur avances reçues de l’État":{ + }, + "1664-Sur avances reçues et comptes courants bloqués":{ + }, + "1665-Sur dépôts et cautionnements reçus":{ + }, + "1667-Sur avances assorties de conditions particulières":{ + }, + "1668-Sur autres emprunts et dettes":{ + } + }, + "167-Avances assorties de conditions particulières":{ + "1671-Avances bloquées pour augmentation du capital":{ + }, + "1672-Avances conditionnées par l’État":{ + }, + "1673-Avances conditionnées par les autres organismes africains":{ + }, + "1674-Avances conditionnées par les organismes internationaux":{ + } + }, + "168-Autres emprunts et dettes":{ + "1681-Rentes viagères capitalisées":{ + }, + "1682-Billets de fonds":{ + }, + "1683-Dettes consécutives à des titres empruntés":{ + }, + "1684-Emprunts participatifs":{ + }, + "1685-Participation des travailleurs aux bénéfices":{ + }, + "1686-Emprunts et dettes contractés auprès des autres tiers":{ + } + } + }, + "17-Dettes de location acquisition":{ + "172-Dettes de location acquisition / crédit bail immobilier":{ + }, + "173-Dettes de location acquisition / crédit bail mobilier":{ + }, + "174-Dettes de location acquisition / location de vente":{ + }, + "176-Intérêts courus":{ + "1762-Sur dettes de location acquisition / crédit-bail immobilier":{ + }, + "1763-Sur dettes de location acquisition / crédit-bail mobilier":{ + }, + "1764-Sur dettes de location acquisition / location-vente":{ + }, + "1768-Sur autres dettes de location acquisition":{ + } + }, + "178-Autres dettes de location acquisition":{ + } + }, + "18-Dettes liées à des participations et comptes de liaison des établissements et sociétés en participation":{ + "181-Dettes liées à des participations":{ + "1811-Dettes liées à des participations (groupe)":{ + }, + "1812-Dettes liées à des participations (hors groupe)":{ + } + }, + "182-Dettes liées à des sociétés en participation":{ + }, + "183-Intérêts courus sur dettes liées à des participations":{ + }, + "184-Comptes permanents bloqués des établissements et succursales":{ + }, + "185-Comptes permanents non bloqués des établissements et succursales":{ + }, + "186-Comptes de liaison charges":{ + }, + "187-Comptes de liaison produits":{ + }, + "188-Comptes de liaison des sociétés en participation":{ + } + }, + "19-Provisions pour risques et charges":{ + "191-Provisions pour litiges":{ + }, + "192-Provisions pour garanties données aux clients":{ + }, + "193-Provisions pour pertes sur marchés à achèvement futur":{ + }, + "194-Provisions pour pertes de change":{ + }, + "195-Provisions pour impôts":{ + }, + "196-Provisions pour pensions et obligations similaires":{ + "1961-Provisions pour pensions et obligations similaires engagement de retraite":{ + }, + "1962-Actif du régime de retraite":{ + } + }, + "197-Provisions pour restructuration":{ + }, + "198-Autres provisions pour risques et charges":{ + "1981-Provisions pour amendes et pénalités":{ + }, + "1983-Provisions pour propre assureur":{ + }, + "1984-Provisions pour démantèlement et remise en état":{ + }, + "1985-Provisions pour droits à réduction ou avantage en nature (chèques cadeau, cartes de fidélité...)":{ + }, + "1988-Provisions pour divers risques et charges":{ + } + } + }, + "root_type":"Equity" + }, + "2-Comptes d’actif immobilisé":{ + "21-Immobilisations incorporelles":{ + "account_type":"Fixed Asset", + "211-Frais de développement":{ + "account_type":"Fixed Asset" + }, + "212-Brevets, licences, concessions et droits similaires":{ + "account_type":"Fixed Asset", + "2121-Brevets":{ + "account_type":"Fixed Asset" + }, + "2122-Licences":{ + "account_type":"Fixed Asset" + }, + "2123-Concessions de service public":{ + "account_type":"Fixed Asset" + }, + "2128-Autres concessions et droits similaires":{ + "account_type":"Fixed Asset" + } + }, + "213-Logiciels et sites internet":{ + "account_type":"Fixed Asset", + "2131-Logiciels":{ + "account_type":"Fixed Asset" + }, + "2132-Sites internet":{ + "account_type":"Fixed Asset" + } + }, + "214-Marques":{ + "account_type":"Fixed Asset" + }, + "215-Fonds commercial":{ + "account_type":"Fixed Asset" + }, + "216-Droit au bail":{ + "account_type":"Fixed Asset" + }, + "217-Investissements de création":{ + "account_type":"Fixed Asset" + }, + "218-Autres droits et valeurs incorporels":{ + "account_type":"Fixed Asset", + "2181-Frais de prospection et d’évaluation de ressources minérales":{ + "account_type":"Fixed Asset" + }, + "2182-Coûts d’obtention du contrat":{ + "account_type":"Fixed Asset" + }, + "2183-Fichiers clients, notices, titres de journaux et magazines":{ + "account_type":"Fixed Asset" + }, + "2184-Coûts des franchises":{ + "account_type":"Fixed Asset" + }, + "2188-Divers droits et valeurs incorporelles":{ + "account_type":"Fixed Asset" + } + }, + "219-Immobilisations incorporelles en cours":{ + "account_type":"Fixed Asset", + "2191-Frais de développement":{ + "account_type":"Fixed Asset" + }, + "2193-Logiciels et internet":{ + "account_type":"Fixed Asset" + }, + "2198-Autres droits et valeurs incorporels":{ + "account_type":"Fixed Asset" + } + } + }, + "22-Terrains":{ + "account_type":"Fixed Asset", + "221-Terrains agricoles et forestiers":{ + "account_type":"Fixed Asset", + "2211-Terrains d’exploitation agricole":{ + "account_type":"Fixed Asset" + }, + "2212-Terrains d’exploitation forestière":{ + "account_type":"Fixed Asset" + }, + "2218-Autres terrains":{ + "account_type":"Fixed Asset" + } + }, + "222-Terrains nus":{ + "account_type":"Fixed Asset", + "2221-Terrains à bâtir":{ + "account_type":"Fixed Asset" + }, + "2228-Autres terrains nus":{ + "account_type":"Fixed Asset" + } + }, + "223-Terrains bâtis":{ + "account_type":"Fixed Asset", + "2231-Pour bâtiments industriels et agricoles":{ + "account_type":"Fixed Asset" + }, + "2232-Pour bâtiments administratifs et commerciaux":{ + "account_type":"Fixed Asset" + }, + "2234-Pour bâtiments affectés aux autres opérations professionnelles":{ + "account_type":"Fixed Asset" + }, + "2235-Pour bâtiments affectés aux autres opérations non professionnelles":{ + "account_type":"Fixed Asset" + }, + "2238-Autres terrains bâtis":{ + "account_type":"Fixed Asset" + } + }, + "224-Travaux de mise en valeur des terrains":{ + "account_type":"Fixed Asset", + "2241-Plantation d’arbres et d’arbustes":{ + "account_type":"Fixed Asset" + }, + "2245-Améliorations du fonds":{ + "account_type":"Fixed Asset" + }, + "2248-Autres travaux":{ + "account_type":"Fixed Asset" + } + }, + "225-Terrains de carrières tréfonds":{ + "account_type":"Fixed Asset", + "2251-Carrières":{ + "account_type":"Fixed Asset" + } + }, + "226-Terrains aménagés":{ + "account_type":"Fixed Asset", + "2261-Parkings":{ + "account_type":"Fixed Asset" + } + }, + "227-Terrains mis en concession":{ + "account_type":"Fixed Asset" + }, + "228-Autres terrains":{ + "account_type":"Fixed Asset", + "2281-Terrains immeubles de placement":{ + "account_type":"Fixed Asset" + }, + "2285-Terrains des logements affectés au personnel":{ + "account_type":"Fixed Asset" + }, + "2286-Terrains de location acquisition":{ + "account_type":"Fixed Asset" + }, + "2288-Divers terrains":{ + "account_type":"Fixed Asset" + } + }, + "229-Aménagements de terrains en cours":{ + "account_type":"Fixed Asset", + "2291-Terrains agricoles et forestiers":{ + "account_type":"Fixed Asset" + }, + "2292-Terrains nus":{ + "account_type":"Fixed Asset" + }, + "2295-Terrains de carrières tréfonds":{ + "account_type":"Fixed Asset" + }, + "2298-Autres terrains":{ + "account_type":"Fixed Asset" + } + } + }, + "23-Bâtiments, installations techniques et agencements":{ + "231-Bâtiments industriels, agricoles, administratifs et commerciaux sur sol propre":{ + "2311-Bâtiments industriels":{ + }, + "2312-Bâtiments agricoles":{ + }, + "2313-Bâtiments administratifs et commerciaux":{ + }, + "2314-Bâtiments affectés au logement du personnel":{ + }, + "2315-Bâtiments immeubles de placement":{ + }, + "2316-Bâtiments de location acquisition":{ + } + }, + "232-Bâtiments industriels, agricoles, administratifs et commerciaux sur sol d’autrui":{ + "2321-Bâtiments industriels":{ + }, + "2322-Bâtiments agricoles":{ + }, + "2323-Bâtiments administratifs et commerciaux":{ + }, + "2324-Bâtiments affectés au logement du personnel":{ + }, + "2325-Bâtiments immeubles de placement":{ + }, + "2326-Bâtiments de location acquisition":{ + } + }, + "233-Ouvrages d’infrastructure":{ + "2331-Voies de terre":{ + }, + "2332-Voies de fer":{ + }, + "2333-Voies d’eau":{ + }, + "2334-Barrages, Digues":{ + }, + "2335-Pistes d’aérodrome":{ + }, + "2338-Autres ouvrages d’infrastructures":{ + } + }, + "234-Aménagements, agencements et installations techniques":{ + "2341-Installations complexes spécialisées sur sol propre":{ + }, + "2342-Installations complexes spécialisées sur sol d’autrui":{ + }, + "2343-Installations à caractère spécifique sur sol propre":{ + }, + "2344-Installations à caractère spécifique sur sol d’autrui":{ + }, + "2345-Aménagements et agencements des bâtiments":{ + } + }, + "235-Aménagements de bureaux":{ + "2351-Installations générales":{ + }, + "2358-Autres aménagements de bureaux":{ + } + }, + "237-Bâtiments industriels, agricoles et commerciaux mis en concession":{ + }, + "238-Autres installations et agencements":{ + }, + "239-Bâtiments aménagements, agencements et installations en cours":{ + "2391-Bâtiments en cours":{ + }, + "2392-Installations en cours":{ + }, + "2393-Ouvrages d’infrastructure en cours":{ + }, + "2394-Aménagements et agencements et installations techniques en cours":{ + }, + "2395-Aménagements de bureaux en cours":{ + }, + "2398-Autres installations et agencements en cours":{ + } + } + }, + "24-Matériel, mobilier et actifs biologiques":{ + "241-Matériel et outillage industriel et commercial":{ + "2411-Matériel industriel":{ + }, + "2412-Outillage industriel":{ + }, + "2413-Matériel commercial":{ + }, + "2414-Outillage commercial":{ + }, + "2416-Matériel & outillage industriel et commercial de location-acquisition":{ + } + }, + "242-Matériel et outillage agricole":{ + "2421-Matériel agricole":{ + }, + "2422-Outillage agricole":{ + }, + "2426-Matériel & outillage agricole de location-acquisition":{ + } + }, + "243-Matériel d’emballage récupérable et identifiable":{ + }, + "244-Matériel et mobilier":{ + "2441-Matériel de bureau":{ + }, + "2442-Matériel informatique":{ + }, + "2443-Matériel bureautique":{ + }, + "2444-Mobilier de bureau":{ + }, + "2445-Matériel et mobilier immeubles de placement":{ + }, + "2446-Matériel et mobilier de location acquisition":{ + }, + "2447-Matériel et mobilier des logements du personnel":{ + } + }, + "245-Matériel de transport":{ + "2451-Matériel automobile":{ + }, + "2452-Matériel ferroviaire":{ + }, + "2453-Matériel fluvial, lagunaire":{ + }, + "2454-Matériel naval":{ + }, + "2455-Matériel aérien":{ + }, + "2456-Matériel de transport de location-acquisition":{ + }, + "2457-Matériel hippomobile":{ + }, + "2458-Autres matériels de transport":{ + } + }, + "246-Actifs biologiques":{ + "2461-Cheptel, animaux de trait":{ + }, + "2462-Cheptel, animaux reproducteurs":{ + }, + "2463-Animaux de garde":{ + }, + "2465-Plantations agricoles":{ + }, + "2468-Autres actifs biologiques":{ + } + }, + "247-Agencements, aménagements du matériel et actifs biologiques":{ + "2471-Agencements et aménagements du matériel":{ + }, + "2472-Agencements et aménagements des actifs biologiques":{ + }, + "2478-Autres agencements, aménagements du matériel et actifs biologiques":{ + } + }, + "248-Autres matériels et mobiliers":{ + "2481-Collections et œuvres d’art":{ + }, + "2488-Divers matériels mobiliers":{ + } + }, + "249-Matériels et actifs biologiques en cours":{ + "2491-Matériel et outillage industriel et commercial":{ + }, + "2492-Matériel et outillage agricole":{ + }, + "2493-Matériel d’emballage récupérable et identifiable":{ + }, + "2494-Matériel et mobilier de bureau":{ + }, + "2495-Matériel de transport":{ + }, + "2496-Actifs biologiques":{ + }, + "2497-Agencements aménagements du matériel et actifs biologiques":{ + }, + "2498-Autres matériels et actifs biologiques en cours":{ + } + } + }, + "25-Avances et acomptes versés sur immobilisations":{ + "251-Avances et acomptes versés sur immobilisations incorporelles":{ + }, + "252-Avances et acomptes versés sur immobilisations corporelles":{ + } + }, + "26-Titres de participation":{ + "261-Titres de participation dans des sociétés sous contrôle exclusif":{ + }, + "262-Titres de participation dans des sociétés sous contrôle conjoint":{ + }, + "263-Titres de participation dans des sociétés conférant une influence notable":{ + }, + "265-Participations dans des organismes professionnels":{ + }, + "266-Parts dans des groupements d’intérêt économique (GIE)":{ + }, + "268-Autres titres de participation":{ + } + }, + "27-Autres immobilisations financières":{ + "271-Prêts et créances":{ + "2711-Prêts participatifs":{ + }, + "2712-Prêts aux associés":{ + }, + "2713-Billets de fonds":{ + }, + "2714-Titres prêtés":{ + }, + "2718-Autres prêts et créances":{ + } + }, + "272-Prêts au personnel":{ + "2721-Prêts immobiliers":{ + }, + "2722-Prêts mobiliers et d’installation":{ + }, + "2728-Autres prêts au personnel":{ + } + }, + "273-Créances sur l’État":{ + "2731-Retenues de garantie":{ + }, + "2733-Fonds réglementé":{ + }, + "2734-Créances sur le concédant":{ + }, + "2738-Autres créances sur l’État":{ + } + }, + "274-Titres immobilisés":{ + "2741-Titres immobilisés de l’activité de portefeuille (TIAP)":{ + }, + "2742-Titres participatifs":{ + }, + "2743-Certificats d’investissement":{ + }, + "2744-Parts de fonds commun de placement (FCP)":{ + }, + "2745-Obligations":{ + }, + "2746-Actions ou parts propres":{ + }, + "2748-Autres titres immobilisés":{ + } + }, + "275-Dépôts et cautionnements versés":{ + "2751-Dépôts pour loyers d’avance":{ + }, + "2752-Dépôts pour l’électricité":{ + }, + "2753-Dépôts pour l’eau":{ + }, + "2754-Dépôts pour le gaz":{ + }, + "2755-Dépôts pour le téléphone, le télex, la télécopie":{ + }, + "2756-Cautionnements sur marchés publics":{ + }, + "2757-Cautionnements sur autres opérations":{ + }, + "2758-Autres dépôts et cautionnements":{ + } + }, + "276-Intérêts courus":{ + "2761-Prêts et créances non commerciales":{ + }, + "2762-Prêts au personnel":{ + }, + "2763-Créances sur l’État":{ + }, + "2764-Titres immobilisés":{ + }, + "2765-Dépôts et cautionnements versés":{ + }, + "2767-Créances rattachées à des participations":{ + }, + "2768-Immobilisations financières diverses":{ + } + }, + "277-Créances rattachées à des participations et avances à des GIE":{ + "2771-Créances rattachées à des participations (groupe)":{ + }, + "2772-Créances rattachées à des participations (hors groupe)":{ + }, + "2773-Créances rattachées à des sociétés en participation":{ + }, + "2774-Avances à des Groupements d’intérêt économique (GIE)":{ + } + }, + "278-Immobilisations financières diverses":{ + "2781-Créances diverses groupe":{ + }, + "2782-Créances diverses hors groupe":{ + }, + "2784-Banques dépôts à terme":{ + }, + "2785-Or et métaux précieux":{ + }, + "2788-Autres immobilisations financières":{ + } + } + }, + "28-Amortissements":{ + "account_type":"Accumulated Depreciation", + "281-Amortissements des immobilisations corporelles":{ + "account_type":"Accumulated Depreciation", + "2811-Amortissements des frais de développement":{ + "account_type":"Accumulated Depreciation" + }, + "2812-Amortissements des brevets, licences, concessions et droits similaires":{ + "account_type":"Accumulated Depreciation" + }, + "2813-Amortissements des logiciels et sites internet":{ + "account_type":"Accumulated Depreciation" + }, + "2814-Amortissements des marques":{ + "account_type":"Accumulated Depreciation" + }, + "2815-Amortissements du fonds commercial":{ + "account_type":"Accumulated Depreciation" + }, + "2816-Amortissements du droit au bail":{ + "account_type":"Accumulated Depreciation" + }, + "2817-Amortissements des investissements de création":{ + "account_type":"Accumulated Depreciation" + }, + "2818-Amortissements des autres droits et valeurs incorporels":{ + "account_type":"Accumulated Depreciation" + } + }, + "282-Amortissements des terrains":{ + "2824-Amortissements des travaux de mise en valeur des terrains":{ + } + }, + "283-Amortissements des bâtiments, installations techniques et agencements":{ + "2831-Amortissements des bâtiments industriels, agricoles, administratifs et commerciaux sur sol propre":{ + }, + "2832-Amortissements des bâtiments industriels, agricoles, administratifs et commerciaux sur sol d’autrui":{ + }, + "2833-Amortissements des ouvrages d’infrastructure":{ + }, + "2834-Amortissements des aménagements, agencements et installations techniques":{ + }, + "2835-Amortissements des aménagements de bureaux":{ + }, + "2837-Amortissements des bâtiments industriels, agricoles et commerciaux mis en concession":{ + }, + "2838-Amortissements des autres installations et agencements":{ + } + }, + "284-Amortissements du matériel":{ + "2841-Amortissements du matériel et outillage industriel et commercial":{ + }, + "2842-Amortissements du matériel et outillage agricole":{ + }, + "2843-Amortissements du matériel d’emballage récupérable et identifiable":{ + }, + "2844-Amortissements du matériel et mobilier":{ + }, + "2845-Amortissements du matériel de transport":{ + }, + "2846-Amortissements des actifs biologiques":{ + }, + "2847-Amortissements des agencements et aménagements du matériel et des actifs biologiques":{ + }, + "2848-Amortissements des autres matériels":{ + } + } + }, + "29-Dépréciations des immobilisations":{ + "291-Dépréciations des immobilisations incorporelles":{ + "2911-Dépréciations des frais de développement":{ + }, + "2912-Dépréciations des brevets, licences, concessions et droits similaires":{ + }, + "2913-Dépréciations des logiciels et sites internet":{ + }, + "2914-Dépréciations des marques":{ + }, + "2915-Dépréciations du fonds commercial":{ + }, + "2916-Dépréciations du droit au bail":{ + }, + "2917-Dépréciations des investissements de création":{ + }, + "2918-Dépréciations des autres droits et valeurs incorporels":{ + }, + "2919-Dépréciations des immobilisations incorporelles en cours":{ + } + }, + "292-Dépréciations des terrains":{ + "2921-Dépréciations des terrains agricoles et forestiers":{ + }, + "2922-Dépréciations des terrains nus":{ + }, + "2923-Dépréciations des terrains bâtis":{ + }, + "2924-Dépréciations des travaux de mise en valeur des terrains":{ + }, + "2925-Dépréciations des terrains de gisement":{ + }, + "2926-Dépréciations des terrains aménagés":{ + }, + "2927-Dépréciations des terrains mis en concession":{ + }, + "2928-Dépréciations des autres terrains":{ + }, + "2929-Dépréciations des aménagements de terrains en cours":{ + } + }, + "293-Dépréciations des bâtiments, installations techniques et agencements":{ + "2931-Dépréciations des bâtiments industriels, agricoles, administratifs et commerciaux sur sol propre":{ + }, + "2932-Dépréciations des bâtiments industriels, agricoles, administratifs et commerciaux sur sol d’autrui":{ + }, + "2933-Dépréciations des ouvrages d’infrastructures":{ + }, + "2934-Dépréciations des aménagements, agencements et installations techniques":{ + }, + "2935-Dépréciations des aménagements de bureaux":{ + }, + "2937-Dépréciations des bâtiments industriels, agricoles et commerciaux mis en concession":{ + }, + "2938-Dépréciations des autres installations et agencements":{ + }, + "2939-Dépréciations des bâtiments et installations en cours":{ + } + }, + "294-Dépréciations de matériel, du mobilier et de l’actif biologique":{ + "2941-Dépréciations du matériel et outillage industriel et commercial":{ + }, + "2942-Dépréciations du matériel et outillage agricole":{ + }, + "2943-Dépréciations du matériel d’emballage récupérable et identifiable":{ + }, + "2944-Dépréciations du matériel et mobilier":{ + }, + "2945-Dépréciations du matériel de transport":{ + }, + "2946-Dépréciations des actifs biologiques":{ + }, + "2947-Dépréciations des agencements et aménagements du matériel et des actifs biologiques":{ + }, + "2948-Dépréciations des autres matériels":{ + }, + "2949-Dépréciations de matériel en cours":{ + } + }, + "295-Dépréciations des avances et acomptes versés sur immobilisations":{ + "2951-Dépréciations des avances et acomptes versés sur immobilisations incorporelles":{ + }, + "2952-Dépréciations des avances et acomptes versés sur immobilisations corporelles":{ + } + }, + "296-Dépréciations des titres de participation":{ + "2961-Dépréciations des titres de participation dans des sociétés sous contrôle exclusif":{ + }, + "2962-Dépréciations des titres de participation dans les sociétés sous contrôle conjoint":{ + }, + "2963-Dépréciations des titres de participation dans les sociétés conférant une influence notable":{ + }, + "2965-Dépréciations des participations dans des organismes professionnels":{ + }, + "2966-Dépréciations des parts dans des GIE":{ + }, + "2968-Dépréciations des autres titres de participation":{ + } + }, + "297-Dépréciations des autres immobilisations financières":{ + "2971-Dépréciations des prêts et créances":{ + }, + "2972-Dépréciations des prêts au personnel":{ + }, + "2973-Dépréciations des créances sur l’État":{ + }, + "2974-Dépréciations des titres immobilisés":{ + }, + "2975-Dépréciations des dépôts et cautionnements versés":{ + }, + "2977-Dépréciations des créances rattachées à des participations et avances à des GIE":{ + }, + "2978-Dépréciations des créances financières diverses":{ + } + } + }, + "root_type":"Asset" + }, + "3-Comptes de Stocks":{ + "31-Marchandises":{ + "311-Marchandises A":{ + "3111-Marchandises A1":{ + }, + "3112-Marchandises A2":{ + } + }, + "312-Marchandises B":{ + "3121-Marchandises B1":{ + }, + "3122-Marchandises B2":{ + } + }, + "313-Actifs biologiques":{ + "3131-Animaux":{ + }, + "3132-Végétaux":{ + } + }, + "318-Marchandises hors activités ordinaires (HAO)":{ + } + }, + "32-Matières premières et fournitures liées":{ + "321-Matières A":{ + }, + "322-Matières B":{ + }, + "323-Fournitures (A, B)":{ + } + }, + "33-Autres approvisionnements":{ + "331-Matières consommables":{ + }, + "332-Fournitures d’atelier et d’usine":{ + }, + "333-Fournitures de magasin":{ + }, + "334-Fournitures de bureau":{ + }, + "335-Emballages":{ + "3351-Emballages perdus":{ + }, + "3352-Emballages récupérables non identifiables":{ + }, + "3353-Emballages à usage mixte":{ + }, + "3358-Autres emballages":{ + } + }, + "338-Autres matières":{ + } + }, + "34-Produits en cours":{ + "341-Produits en cours":{ + "3411-Produits en cours P1":{ + }, + "3412-Produits en cours P2":{ + } + }, + "342-Travaux en cours":{ + "3421-Travaux en cours T1":{ + }, + "3422-Travaux en cours T2":{ + } + }, + "343-Produits intermédiaires en cours":{ + "3431-Produits intermédiaires A":{ + }, + "3432-Produits intermédiaires B":{ + } + }, + "344-Produits résiduels en cours":{ + "3441-Produits résiduels A":{ + }, + "3442-Produits résiduels B":{ + } + }, + "345-Actifs biologiques en cours":{ + "3451-Animaux":{ + }, + "3452-Végétaux":{ + } + } + }, + "35-Services en cours":{ + "351-Études en cours":{ + "3511-Études en cours E1":{ + }, + "3512-Études en cours E2":{ + } + }, + "352-Prestations de services en cours":{ + "3521-Prestations de services S1":{ + }, + "3522-Prestations de services S2":{ + } + } + }, + "36-Produits finis":{ + "361-Produits finis A":{ + }, + "362-Produits finis B":{ + }, + "363-Actifs biologiques":{ + "3631-Animaux":{ + }, + "3632-Végétaux":{ + }, + "3638-Autres stocks (activités annexes)":{ + } + } + }, + "37-Produits intermédiaires et résiduels":{ + "371-Produits intermédiaires":{ + "3711-Produits intermédiaires A":{ + }, + "3712-Produits intermédiaires B":{ + } + }, + "372-Produits résiduels":{ + "3721-Déchets":{ + }, + "3722-Rebuts":{ + }, + "3723-Matières de Récupération":{ + } + }, + "373-Actifs biologiques":{ + "3731-Animaux":{ + }, + "3732-Végétaux":{ + }, + "3738-Autres stocks (activités annexes)":{ + } + } + }, + "38-Stocks en cours de route, en consignation ou en dépôt":{ + "account_type":"Stock", + "381-Marchandises en cours de route":{ + }, + "382-Matières premières et fournitures liées en cours de route":{ + }, + "383-Autres approvisionnements en cours de route":{ + }, + "386-Produits finis en cours de route":{ + }, + "387-Stock en consignation ou en dépôt":{ + "3871-Stock en consignation":{ + }, + "3872-Stock en dépôt":{ + } + }, + "388-Stock provenant d’immobilisations mises hors service ou au rebut":{ + } + }, + "39-Dépréciations des stocks et encours de production":{ + "391-Dépréciations des stocks de marchandises":{ + }, + "392-Dépréciations des stocks de matières premières et fournitures liées":{ + }, + "393-Dépréciations des stocks d’autres approvisionnements":{ + }, + "394-Dépréciations des productions en cours":{ + }, + "395-Dépréciations des services en cours":{ + }, + "396-Dépréciations des stocks de produits finis":{ + }, + "397-Dépréciations des stocks de produits intermédiaires et résiduels":{ + }, + "398-Dépréciations des stocks en cours de route, en consignation ou en dépôt":{ + } + }, + "root_type":"Asset" + }, + "4-Comptes de Tiers (ACTIF)":{ + "40-Fournisseurs et comptes rattachés (ACTIF)":{ + "409-Fournisseurs débiteurs":{ + "4091-Fournisseurs Avances et acomptes versés":{ + }, + "4092-Fournisseurs Groupe avances et acomptes versés":{ + }, + "4093-Fournisseurs Sous-traitants avances et acomptes versés":{ + }, + "4094-Fournisseurs Créances pour emballages et matériels à rendre":{ + }, + "4098-Fournisseurs Rabais, remises, ristournes et autres avoirs à obtenir":{ + } + } + }, + "41-Clients et comptes rattachés (ACTIF)":{ + "411-Clients":{ + "4111-Clients":{ + "account_type":"Receivable" + }, + "4112-Clients groupe":{ + "account_type":"Receivable" + }, + "4114-Clients, État et Collectivités publiques":{ + "account_type":"Receivable" + }, + "4115-Clients, organismes internationaux":{ + "account_type":"Receivable" + }, + "4116-Clients, réserve de propriété":{ + "account_type":"Receivable" + }, + "4117-Client, retenues de garantie":{ + "account_type":"Receivable" + }, + "4118-Clients, dégrèvement de taxes sur la valeur ajoutée (TVA)":{ + "account_type":"Receivable" + }, + "account_type":"Receivable" + }, + "412-Clients, effets à recevoir en portefeuille":{ + "4121-Clients, effets à recevoir":{ + "account_type":"Receivable" + }, + "4122-Clients Groupe, effets à recevoir":{ + "account_type":"Receivable" + }, + "4124-État et Collectivités publiques, effets à recevoir":{ + "account_type":"Receivable" + }, + "4125-Organismes Internationaux, effets à recevoir":{ + "account_type":"Receivable" + }, + "account_type":"Receivable" + }, + "413-Clients, chèques, effets et autres valeurs impayées":{ + "4131-Clients, chèques impayés":{ + "account_type":"Receivable" + }, + "4132-Clients, effets impayés":{ + "account_type":"Receivable" + }, + "4133-Clients, cartes de crédit impayées":{ + "account_type":"Receivable" + }, + "4138-Clients, autres valeurs impayées":{ + "account_type":"Receivable" + }, + "account_type":"Receivable" + }, + "414-Créances sur cessions courantes d’immobilisations":{ + "4141-Créances en compte, immobilisations incorporelles":{ + "account_type":"Receivable" + }, + "4142-Créances en compte, immobilisations corporelles":{ + "account_type":"Receivable" + }, + "4146-Effets à recevoir, immobilisations incorporelles":{ + "account_type":"Receivable" + }, + "4147-Effets à recevoir, immobilisations corporelles":{ + "account_type":"Receivable" + }, + "account_type":"Receivable" + }, + "415-Clients, effets escomptés non échus":{ + "account_type":"Receivable" + }, + "416-Créances clients litigieuses ou douteuses":{ + "4161-Créances litigieuses":{ + "account_type":"Receivable" + }, + "4162-Créances douteuses":{ + "account_type":"Receivable" + }, + "account_type":"Receivable" + }, + "418-Clients, produits à recevoir":{ + "4181-Clients, factures à établir":{ + "account_type":"Receivable" + }, + "4186-Clients, intérêts courus":{ + "account_type":"Receivable" + }, + "account_type":"Receivable" + }, + "account_type":"Receivable" + }, + "42-Personnel (ACTIF)":{ + "421-Personnel, avances et acomptes":{ + "4211-Personnel, avances":{ + }, + "4212-Personnel, acomptes":{ + }, + "4213-Frais avancés et fournitures au personnel":{ + } + } + }, + "43-Organismes sociaux (ACTIF)":{ + "431-Sécurité sociale":{ + "4311-Prestations familiales":{ + }, + "4312-Accidents de travail":{ + }, + "4313-Caisse de retraite obligatoire":{ + }, + "4314-Caisse de retraite facultative":{ + }, + "4318-Autres cotisations sociales":{ + } + }, + "432-Caisses de retraite complémentaire":{ + }, + "433-Autres organismes sociaux":{ + "4331-Mutuelle":{ + }, + "4332-Assurances retraite":{ + }, + "4333-Assurances et organismes de santé":{ + } + }, + "438-Organismes sociaux, charges à payer et produits à recevoir":{ + "4387-Produits à recevoir":{ + } + } + }, + "44-État et collectivités publiques (ACTIF)":{ + "443-État, TVA facturée":{ + "4431-TVA facturée sur ventes":{ + }, + "4432-TVA facturée sur prestations de services":{ + }, + "4433-TVA facturée sur travaux":{ + }, + "4434-TVA facturée sur production livrée à soi-même":{ + }, + "4435-TVA sur factures à établir":{ + } + }, + "445-État, TVA récupérable":{ + "4451-TVA récupérable sur immobilisations":{ + }, + "4452-TVA récupérable sur achats":{ + }, + "4453-TVA récupérable sur transport":{ + }, + "4454-TVA récupérable sur services extérieurs et autres charges":{ + }, + "4455-TVA récupérable sur factures non parvenues":{ + }, + "4456-TVA transférée par d’autres entités":{ + } + }, + "448-État, charges à payer et produits à recevoir":{ + "4486-Charges à payer":{ + }, + "4487-Produits à recevoir":{ + } + }, + "449-État, créances et dettes diverses":{ + "4491-État, obligations cautionnées":{ + }, + "4492-État, avances et acomptes versés sur impôts":{ + }, + "4493-État, fonds de dotation à recevoir":{ + }, + "4494-État, subventions investissement à recevoir":{ + }, + "4495-État, subventions d’exploitation à recevoir":{ + }, + "4496-État, subventions d’équilibre à recevoir":{ + }, + "4497-État, avances sur subventions":{ + }, + "4499-État, fonds réglementés provisionnés":{ + } + } + }, + "45-Organismes internationaux (ACTIF)":{ + "451-Opérations avec les organismes africains":{ + }, + "452-Opérations avec les autres organismes internationaux":{ + }, + "458-Organismes internationaux, fonds de dotation et subventions à recevoir":{ + "4581-Organismes internationaux, fonds de dotation à recevoir":{ + }, + "4582-Organismes internationaux, subventions à recevoir":{ + } + } + }, + "46-Apporteurs, associés et groupe (ACTIF)":{ + "461-Apporteurs, opérations sur le capital":{ + "4613-Apporteurs, capital appelé, non versé":{ + }, + "4614-Apporteurs, compte d’apport, opérations de restructuration (fusion...)":{ + }, + "4618-Apporteurs, titres à échanger":{ + } + }, + "467-Apporteurs, restant dû sur capital appelé":{ + } + }, + "47-Débiteurs et créditeurs divers (ACTIF)":{ + "472-Créances et dettes sur titres de placement":{ + "4721-Créances sur cessions de titres de placement":{ + }, + "4726-Versements restant à effectuer sur titres de placement non libérés":{ + } + }, + "473-Intermédiaires Opérations faites pour compte de tiers":{ + "4731-Mandants":{ + }, + "4732-Mandataires":{ + }, + "4733-Commettants":{ + }, + "4734-Commissionnaires":{ + }, + "4739-État, Collectivités publiques, fonds global d’allocation":{ + } + }, + "474-Compte de répartition périodique des charges et des produits":{ + "4747-Compte de répartition périodique des produits":{ + } + }, + "475-Compte transitoire, ajustement spécial lié à la révision du SYSCOHADA":{ + "4751-Compte actif":{ + "account_type":"Temporary" + } + }, + "476-Charges constatées d’avance":{ + }, + "478-Écarts de conversion actif":{ + "4781-Diminution des créances d’exploitation":{ + }, + "4782-Diminution des créances financières":{ + }, + "4783-Augmentation des dettes d’exploitation":{ + }, + "4784-Augmentation des dettes financières":{ + }, + "4786-Différences d’évaluation sur instruments de trésorerie":{ + }, + "4788-Différences compensées par couverture de change":{ + } + } + }, + "48-Créances et dettes hors activités ordinaires (ACTIF)":{ + "485-Créances sur cessions d’immobilisations":{ + "4851-En compte, immobilisations incorporelles":{ + }, + "4852-En compte, immobilisations corporelles":{ + }, + "4853-Effets à recevoir, immobilisations incorporelles":{ + }, + "4854-Effets à recevoir, immobilisations corporelles":{ + }, + "4855-Effets escomptés non échus":{ + }, + "4857-Retenues de garantie":{ + }, + "4858-Factures à établir":{ + } + }, + "488-Autres créances hors activités ordinaires (HAO)":{ + } + }, + "49-Dépréciations et provisions pour risques à court terme (tiers) (ACTIF)":{ + "491-Dépréciations des comptes clients":{ + "4911-Créances litigieuses":{ + }, + "4912-Créances douteuses":{ + } + }, + "495-Dépréciations des comptes organismes internationaux":{ + }, + "496-Dépréciations des comptes apporteurs, associés et groupe":{ + "4962-Associés, comptes courants":{ + }, + "4963-Associés, opérations faites en commun":{ + }, + "4966-Groupe, comptes courants":{ + } + }, + "497-Dépréciations des comptes débiteurs divers":{ + }, + "498-Dépréciations des comptes de créances HAO":{ + "4985-Créances sur cessions d’immobilisations":{ + }, + "4986-Créances sur cessions de titres de placement":{ + }, + "4988-Autres créances HAO":{ + } + }, + "499-Provisions pour risques à court terme":{ + "4991-Sur opérations d’exploitation":{ + }, + "4997-Sur opérations financières":{ + }, + "4998-Sur opérations HAO":{ + } + } + }, + "root_type":"Asset" + }, + "4-Comptes de Tiers (PASSIF)":{ + "40-Fournisseurs et comptes rattachés (PASSIF)":{ + "401-Fournisseurs, dettes en compte":{ + "4011-Fournisseurs":{ + "account_type":"Payable" + }, + "4012-Fournisseurs groupe":{ + "account_type":"Payable" + }, + "4013-Fournisseurs sous-traitants":{ + "account_type":"Payable" + }, + "4016-Fournisseurs, réserve de propriété":{ + "account_type":"Payable" + }, + "4017-Fournisseur, retenues de garantie":{ + "account_type":"Payable" + }, + "account_type":"Payable" + }, + "402-Fournisseurs, effets à payer":{ + "4021-Fournisseurs Effets à payer":{ + "account_type":"Payable" + }, + "4022-Fournisseurs Groupe, effets à payer":{ + "account_type":"Payable" + }, + "4023-Fournisseurs Sous-traitants, effets à payer":{ + "account_type":"Payable" + }, + "account_type":"Payable" + }, + "404-Fournisseurs, acquisitions courantes d’immobilisations":{ + "4041-Fournisseurs Dettes en comptes, immobilisations incorporelles":{ + "account_type":"Payable" + }, + "4042-Fournisseurs Dettes en comptes, immobilisations corporelles":{ + "account_type":"Payable" + }, + "4046-Fournisseurs Effets à payer, immobilisations incorporelles":{ + "account_type":"Payable" + }, + "4047-Fournisseurs Effets à payer, immobilisations corporelles":{ + "account_type":"Payable" + }, + "account_type":"Payable" + }, + "408-Fournisseurs, factures non parvenues":{ + "4081-Fournisseurs":{ + "account_type":"Stock Received But Not Billed" + }, + "4082-Fournisseurs groupe":{ + "account_type":"Stock Received But Not Billed" + }, + "4083-Fournisseurs sous-traitants":{ + "account_type":"Stock Received But Not Billed" + }, + "4086-Fournisseurs, intérêts courus":{ + "account_type":"Stock Received But Not Billed" + }, + "account_type":"Stock Received But Not Billed" + }, + "account_type":"Payable" + }, + "41-Clients et comptes rattachés (PASSIF)":{ + "419-Clients créditeurs":{ + "4191-Clients, avances et acomptes reçus":{ + }, + "4192-Clients groupe, avances et acomptes reçus":{ + }, + "4194-Clients, dettes pour emballages et matériels consignés":{ + }, + "4198-Clients, rabais, remises, ristournes et autres avoirs à accorder":{ + } + } + }, + "42-Personnel (PASSIF)":{ + "422-Personnel, rémunérations dues":{ + }, + "423-Personnel, oppositions, saisies-arrêts":{ + "4231-Personnel, oppositions":{ + }, + "4232-Personnel, saisies-arrêts":{ + }, + "4233-Personnel, avis à tiers détenteur":{ + } + }, + "424-Personnel, œuvres sociales internes":{ + "4241-Assistance médicale":{ + }, + "4242-Allocations familiales":{ + }, + "4245-Organismes sociaux rattachés à l’entité":{ + }, + "4248-Autres œuvres sociales internes":{ + } + }, + "425-Représentants du personnel":{ + "4251-Délégués du personnel":{ + }, + "4252-Syndicats et Comités d’entreprises, d’Établissement":{ + }, + "4258-Autres représentants du personnel":{ + } + }, + "426-Personnel, participation aux bénéfices et au capital":{ + "4261-Participation aux bénéfices":{ + }, + "4264-Participation au capital":{ + } + }, + "427-Personnel dépôts":{ + }, + "428-Personnel, charges à payer et produits à recevoir":{ + "4281-Dettes provisionnées pour congés à payer":{ + }, + "4286-Autres charges à payer":{ + }, + "4287-Produits à recevoir":{ + } + } + }, + "43-Organismes sociaux (PASSIF)":{ + "438-Organismes sociaux, charges à payer et produits à recevoir":{ + "4381-Charges sociales sur gratifications à payer":{ + }, + "4382-Charges sociales sur congés à payer":{ + }, + "4386-Autres charges à payer":{ + } + } + }, + "44-État et collectivités publiques (PASSIF)":{ + "441-État, impôt sur les bénéfices":{ + }, + "442-État, autres impôts et taxes":{ + "4421-Impôts et taxes d’État":{ + }, + "4422-Impôts et taxes pour les collectivités publiques":{ + }, + "4423-Impôts et taxes recouvrables sur des obligataires":{ + }, + "4424-Impôts et taxes recouvrables sur des associés":{ + }, + "4426-Droits de douane":{ + }, + "4428-Autres impôts et taxes":{ + } + }, + "444-État, TVA due ou crédit de TVA":{ + "4441-État, TVA due":{ + }, + "4449-État, crédit de TVA à reporter":{ + } + }, + "446-État, autres taxes sur le chiffre d’affaires":{ + }, + "447-État, impôts retenus à la source":{ + "4471-Impôt Général sur le revenu":{ + }, + "4472-Impôts sur salaires":{ + }, + "4473-Contribution nationale":{ + }, + "4474-Contribution nationale de solidarité":{ + }, + "4478-Autres impôts et contributions":{ + } + } + }, + "46-Apporteurs, associés et groupe (PASSIF)":{ + "461-Apporteurs, opérations sur le capital (PASSIF)":{ + "4611-Apporteurs, apports en nature":{ + }, + "4612-Apporteurs, apports en numéraire":{ + }, + "4615-Apporteurs, versements reçus sur augmentation de capital":{ + }, + "4616-Apporteurs, versements anticipés":{ + }, + "4617-Apporteurs défaillants":{ + }, + "4619-Apporteurs, capital à rembourser":{ + } + }, + "462-Associés, comptes courants":{ + "4621-Principal":{ + }, + "4626-Intérêts courus":{ + } + }, + "463-Associés, opérations faites en commun et GIE":{ + "4631-Opérations courantes":{ + }, + "4636-Intérêts courus":{ + } + }, + "465-Associés, dividendes à payer":{ + }, + "466-Groupe, comptes courants":{ + } + }, + "47-Débiteurs et créditeurs divers (PASSIF)":{ + "471-Débiteurs et créditeurs divers":{ + "4711-Débiteurs divers":{ + }, + "4712-Créditeurs divers":{ + }, + "4713-Obligataires":{ + }, + "4715-Rémunérations d’administrateurs":{ + }, + "4716-Compte d’affacturage":{ + }, + "4717-Débiteurs divers retenues de garantie":{ + }, + "4718-Apport, compte de fusion et opérations assimilées":{ + }, + "4719-Bons de souscription d’actions et d’obligations":{ + } + }, + "474-Compte de répartition périodique des charges et des produits (PASSIF)":{ + "4746-Compte de répartition périodique des charges":{ + } + }, + "475-Compte transitoire, ajustement spécial lié à la révision du SYSCOHADA (PASSIF)":{ + "4752-Compte passif":{ + } + }, + "477-Produits constatés d’avance":{ + }, + "479-Écarts de conversion passif":{ + "4791-Augmentation des créances d’exploitation":{ + }, + "4792-Augmentation des créances financières":{ + }, + "4793-Diminution des dettes d’exploitation":{ + }, + "4794-Diminution des dettes financières":{ + }, + "4797-Différences d’évaluation sur instruments de trésorerie":{ + }, + "4798-Différences compensées par couverture de change":{ + } + } + }, + "48-Créances et dettes hors activités ordinaires (HAO) (PASSIF)":{ + "481-Fournisseurs d’investissements":{ + "4811-Immobilisations incorporelles":{ + }, + "4812-Immobilisations corporelles":{ + }, + "4813-Versements restant à effectuer sur titres de participation et titres immobilisés non libérés":{ + }, + "4816-Réserve de propriété":{ + }, + "4817-Retenues de garantie":{ + }, + "4818-Factures non parvenues":{ + } + }, + "482-Fournisseurs d’investissements, effets à payer":{ + "4821-Immobilisations incorporelles":{ + }, + "4822-Immobilisations corporelles":{ + } + }, + "484-Autres dettes hors activités ordinaires (HAO)":{ + "4887-Produits":{ + } + } + }, + "49-Dépréciations et provisions pour risques à court terme (tiers) (PASSIF)":{ + "490-Dépréciations des comptes fournisseurs":{ + }, + "492-Dépréciations des comptes personnel":{ + }, + "493-Dépréciations des comptes organismes sociaux":{ + }, + "494-Dépréciations des comptes État et collectivités publiques":{ + }, + "495-Dépréciations des comptes organismes internationaux":{ + } + }, + "root_type":"Liability" + }, + "5-Comptes de trésorerie":{ + "50-Titres de placement":{ + "501-Titres du trésor et bons de caisse à court terme":{ + "5011-Titres du Trésor à court terme":{ + }, + "5012-Titres d’organismes financiers":{ + }, + "5013-Bons de caisse à court terme":{ + }, + "5016-Frais d’acquisition des titres de trésor et bons de caisse":{ + } + }, + "502-Actions":{ + "5021-Actions ou parts propres":{ + }, + "5022-Actions cotées":{ + }, + "5023-Actions non cotées":{ + }, + "5024-Actions démembrées (certificats d’investissement, droits de vote)":{ + }, + "5025-Autres actions":{ + }, + "5026-Frais d’acquisition des actions":{ + } + }, + "503-Obligations":{ + "5031-Obligations émises par la société et rachetées par elle":{ + }, + "5032-Obligations cotées":{ + }, + "5033-Obligations non cotées":{ + }, + "5035-Autres obligations":{ + }, + "5036-Frais d’acquisition des obligations":{ + } + }, + "504-Bons de souscription":{ + "5042-Bons de souscription d’actions":{ + }, + "5043-Bons de souscription d’obligations":{ + } + }, + "505-Titres négociables hors région":{ + }, + "506-Intérêts courus":{ + "5061-Titres du Trésor et bons de caisse à court terme":{ + }, + "5062-Actions":{ + }, + "5063-Obligations":{ + } + }, + "508-Autres titres de placement et créances assimilées":{ + } + }, + "51-Valeurs à encaisser":{ + "511-Effets à encaisser":{ + }, + "512-Effets à l’encaissement":{ + }, + "513-Chèques à encaisser":{ + }, + "514-Chèques à l’encaissement":{ + }, + "515-Cartes de crédit à encaisser":{ + }, + "518-Autres valeurs à l’encaissement":{ + "5181-Warrants":{ + }, + "5182-Billets de fonds":{ + }, + "5185-Chèques de voyage":{ + }, + "5186-Coupons échus":{ + }, + "5187-Intérêts échus des obligations":{ + } + } + }, + "52-Banques":{ + "521-Banques locales":{ + "5211-Banques en monnaie nationale":{ + "account_type": "Bank" + }, + "5215-Banques en devises":{ + "account_type": "Bank" + }, + "account_type": "Bank" + }, + "522-Banques autres États région":{ + }, + "523-Banques autres États zone monétaire":{ + }, + "524-Banques hors zone monétaire":{ + }, + "525-Banques dépôt à terme":{ + }, + "526-Banques, intérêts courus":{ + "5261-Banque, intérêts courus, charges à payer":{ + }, + "5267-Banque, intérêts courus, produits à recevoir":{ + } + } + }, + "53-Établissements financiers et assimilés":{ + "531-Chèques postaux":{ + }, + "532-Trésor":{ + }, + "533-Sociétés de gestion et d’intermédiation (SGI)":{ + }, + "536-Établissements financiers, intérêts courus":{ + }, + "538-Autres organismes financiers":{ + } + }, + "54-Instruments de trésorerie":{ + "541-Options de taux d’intérêt":{ + }, + "542-Options de taux de change":{ + }, + "543-Options de taux boursiers":{ + }, + "544-Instruments de marchés à terme":{ + }, + "545-Avoirs d’or et autres métaux précieux":{ + } + }, + "55-Instruments de monnaie électronique":{ + "551-Monnaie électronique carte carburant":{ + }, + "552-Monnaie électronique téléphone portable":{ + }, + "553-Monnaie électronique carte péage":{ + }, + "554-Porte-monnaie électronique":{ + }, + "558-Autres instruments de monnaies électroniques":{ + } + }, + "56-Banques, crédits de trésorerie et d’escompte":{ + "561-Crédits de trésorerie":{ + }, + "564-Escompte de crédits de campagne":{ + }, + "565-Escompte de crédits ordinaires":{ + }, + "566-Banques, crédits de trésorerie, intérêts courus":{ + } + }, + "57-Caisse":{ + "571-Caisse siège social":{ + "5711-Caisse en monnaie nationale":{ + }, + "5712-Caisse en devises":{ + } + }, + "572-Caisse succursale A":{ + "5721-En monnaie nationale":{ + }, + "5722-En devises":{ + } + }, + "573-Caisse succursale B":{ + "5731-En monnaie nationale":{ + }, + "5732-En devises":{ + } + } + }, + "58-Régies d’avances, accréditifs et virements internes":{ + "581-Régies d’avance":{ + }, + "582-Accréditifs":{ + }, + "585-Virements de fonds":{ + }, + "588-Autres virements internes":{ + } + }, + "59-Dépréciations et provisions pour risque à court terme":{ + "590-Dépréciations des titres de placement":{ + }, + "591-Dépréciations des titres et valeurs à encaisser":{ + }, + "592-Dépréciations des comptes banques":{ + }, + "593-Dépréciations des comptes établissements financiers et assimilés":{ + }, + "594-Dépréciations des comptes d’instruments de trésorerie":{ + }, + "599-Provisions pour risque à court terme à caractère financier":{ + } + }, + "root_type":"Asset" + }, + "6-Comptes de charges des activités ordinaires":{ + "60-Achats et variations de stocks":{ + "601-Achats de marchandises":{ + "6011-Dans la Région":{ + }, + "6012-Hors Région":{ + }, + "6013-Aux entités du groupe dans la Région":{ + }, + "6014-Aux entités du groupe hors Région":{ + }, + "6015-Frais sur achats":{ + }, + "6019-Rabais, remises et ristournes obtenus (non ventilés)":{ + } + }, + "602-Achats de matières premières et fournitures liées":{ + "6021-Dans la Région":{ + }, + "6022-Hors Région":{ + }, + "6023-Aux entités du groupe dans la Région":{ + }, + "6024-Aux entités du groupe hors Région":{ + }, + "6025-Frais sur achats":{ + }, + "6029-Rabais, remises et ristournes obtenus (non ventilés)":{ + } + }, + "603-Variations des stocks de biens achetés":{ + "6031-Variations des stocks de marchandises":{ + }, + "6032-Variations des stocks de matières premières et fournitures liées":{ + }, + "6033-Variations des stocks d’autres approvisionnements":{ + } + }, + "604-Achats stockés de matières et fournitures consommables":{ + "6041-Matières consommables":{ + }, + "6042-Matières combustibles":{ + }, + "6043-Produits d’entretien":{ + }, + "6044-Fournitures d’atelier et d’usine":{ + }, + "6045-Frais sur achat":{ + }, + "6046-Fournitures de magasin":{ + }, + "6047-Fournitures de bureau":{ + }, + "6049-Rabais, remises et ristournes obtenus (non ventilés)":{ + } + }, + "605-Autres achats":{ + "6051-Fournitures non stockables Eau":{ + }, + "6052-Fournitures non stockables Électricité":{ + }, + "6053-Fournitures non stockables Autres énergies":{ + }, + "6054-Fournitures d’entretien non stockables":{ + }, + "6055-Fournitures de bureau non stockables":{ + }, + "6056-Achats de petit matériel et outillage":{ + }, + "6057-Achats d’études et prestations de services":{ + }, + "6058-Achats de travaux, matériels et équipements":{ + }, + "6059-Rabais, remises et ristournes obtenus (non ventilés)":{ + } + }, + "608-Achats d’emballages":{ + "6081-Emballages perdus":{ + }, + "6082-Emballages récupérables non identifiables":{ + }, + "6083-Emballages à usage mixte":{ + }, + "6085-Frais sur achats":{ + }, + "6089-Rabais, remises et ristournes obtenus (non ventilés)":{ + } + } + }, + "61-Transports":{ + "612-Transports sur ventes":{ + }, + "613-Transports pour le compte de tiers":{ + }, + "614-Transports du personnel":{ + }, + "616-Transports de plis":{ + }, + "618-Autres frais de transport":{ + "6181-Voyages et déplacements":{ + }, + "6182-Transports entre établissements ou chantiers":{ + }, + "6183-Transports administratifs":{ + } + } + }, + "62-Services extérieurs":{ + "621-Sous-traitance générale":{ + }, + "622-Locations, charges locatives":{ + "6221-Locations de terrains":{ + }, + "6222-Locations de bâtiments":{ + }, + "6223-Locations de matériels et outillages":{ + }, + "6224-Malis sur emballages":{ + }, + "6225-Locations d’emballages":{ + }, + "6226-Fermages et loyers du foncier":{ + }, + "6228-Locations et charges locatives diverses":{ + } + }, + "623-Redevances de location acquisition":{ + "6232-Crédit-bail immobilier":{ + }, + "6233-Crédit-bail mobilier":{ + }, + "6234-Location-vente":{ + }, + "6238-Autres contrats de location acquisition":{ + } + }, + "624-Entretien, réparations, remise en état et maintenance":{ + "6241-Entretien et réparations des biens immobiliers":{ + }, + "6242-Entretien et réparations des biens mobiliers":{ + }, + "6243-Maintenance":{ + }, + "6244-Charges de démantèlement et remise en état":{ + }, + "6248-Autres entretiens et réparations":{ + } + }, + "625-Primes d’assurance":{ + "6251-Assurances multirisques":{ + }, + "6252-Assurances matériel de transport":{ + }, + "6253-Assurances risques d’exploitation":{ + }, + "6254-Assurances responsabilité du producteur":{ + }, + "6255-Assurances insolvabilité clients":{ + }, + "6257-Assurances transport sur ventes":{ + }, + "6258-Autres primes d’assurances":{ + } + }, + "626-Études, recherches et documentation":{ + "6261-Études et recherches":{ + }, + "6265-Documentation générale":{ + }, + "6266-Documentation technique":{ + } + }, + "627-Publicité, publications, relations publiques":{ + "6271-Annonces, insertions":{ + }, + "6272-Catalogues, imprimés publicitaires":{ + }, + "6273-Échantillons":{ + }, + "6274-Foires et expositions":{ + }, + "6275-Publications":{ + }, + "6276-Cadeaux à la clientèle":{ + }, + "6277-Frais de colloques, séminaires, conférences":{ + }, + "6278-Autres charges de publicité et relations publiques":{ + } + }, + "628-Frais de télécommunications":{ + "6281-Frais de téléphone":{ + }, + "6282-Frais de télex":{ + }, + "6283-Frais de télécopie":{ + }, + "6288-Autres frais de télécommunications":{ + } + } + }, + "63-Autres services extérieurs":{ + "631-Frais bancaires":{ + "6311-Frais sur titres (vente, garde)":{ + }, + "6312-Frais sur effets":{ + }, + "6313-Location de coffres":{ + }, + "6314-Commissions d’affacturage":{ + }, + "6315-Commissions sur cartes de crédit":{ + }, + "6316-Frais d’émission d’emprunts":{ + }, + "6317-Frais sur instruments monnaie électronique":{ + }, + "6318-Autres frais bancaires":{ + } + }, + "632-Rémunérations d’intermédiaires et de conseils":{ + "6322-Commissions et courtages sur ventes":{ + }, + "6324-Honoraires des professions réglementées":{ + }, + "6325-Frais d’actes et de contentieux":{ + }, + "6326-Rémunérations d’affacturage":{ + }, + "6327-Rémunérations des autres prestataires de services":{ + }, + "6328-Divers frais":{ + } + }, + "633-Frais de formation du personnel":{ + }, + "634-Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires":{ + "6342-Redevances pour brevets, licences":{ + }, + "6343-Redevances pour logiciels":{ + }, + "6344-Redevances pour marques":{ + }, + "6345-Redevances pour sites internet":{ + }, + "6346-Redevances pour concessions, droits et valeurs similaires":{ + } + }, + "635-Cotisations":{ + "6351-Cotisations":{ + }, + "6358-Concours divers":{ + } + }, + "637-Rémunérations de personnel extérieur à l’entité":{ + "6371-Personnel intérimaire":{ + }, + "6372-Personnel détaché ou prêté à l’entité":{ + } + }, + "638-Autres charges externes":{ + "6381-Frais de recrutement du personnel":{ + }, + "6382-Frais de déménagement":{ + }, + "6383-Réceptions":{ + }, + "6384-Missions":{ + }, + "6385-Charges de copropriété":{ + } + } + }, + "64-Impôts et taxes":{ + "641-Impôts et taxes directs":{ + "6411-Impôts fonciers et taxes annexes":{ + }, + "6412-Patentes, licences et taxes annexes":{ + }, + "6413-Taxes sur appointements et salaires":{ + }, + "6414-Taxes d’apprentissage":{ + }, + "6415-Formation professionnelle continue":{ + }, + "6418-Autres impôts et taxes directs":{ + } + }, + "645-Impôts et taxes indirects":{ + }, + "646-Droits d’enregistrement":{ + "6461-Droits de mutation":{ + }, + "6462-Droits de timbre":{ + }, + "6463-Taxes sur les véhicules de société":{ + }, + "6464-Vignettes":{ + }, + "6468-Autres droits":{ + } + }, + "647-Pénalités, amendes fiscales":{ + "6471-Pénalités d’assiette, impôts directs":{ + }, + "6472-Pénalités d’assiette, impôts indirects":{ + }, + "6473-Pénalités de recouvrement, impôts directs":{ + }, + "6474-Pénalités de recouvrement, impôts indirects":{ + }, + "6478-Autres pénalités et amendes fiscales":{ + } + }, + "648-Autres impôts et taxes":{ + } + }, + "65-Autres charges":{ + "651-Pertes sur créances clients et autres débiteurs":{ + "6511-Clients":{ + }, + "6515-Autres débiteurs":{ + } + }, + "652-Quote-part de résultat sur opérations faites en commun":{ + "6521-Quote-part transférée de bénéfices (comptabilité du gérant)":{ + }, + "6525-Pertes imputées par transfert (comptabilité des associés non gérants)":{ + } + }, + "654-Valeurs comptables des cessions courantes d’immobilisations":{ + "6541-Immobilisations incorporelles":{ + }, + "6542-Immobilisations corporelles":{ + } + }, + "656-Perte de change sur créances et dettes commerciale":{ + }, + "657-Pénalités et amendes pénales":{ + }, + "658-Charges diverses":{ + "6581-Indemnités de fonction et autres rémunérations d’administrateurs":{ + }, + "6582-Dons":{ + }, + "6583-Mécénat":{ + }, + "6588-Autres charges diverses":{ + } + }, + "659-Charges pour dépréciations et provisions pour risques à court terme d’exploitation":{ + "6591-Sur risques à court terme":{ + }, + "6593-Sur stocks":{ + }, + "6594-Sur créances":{ + }, + "6598-Autres charges pour dépréciations et provisions pour risques à court terme":{ + } + } + }, + "66-Charges de personnel":{ + "661-Rémunérations directes versées au personnel national":{ + "6611-Appointements salaires et commissions":{ + }, + "6612-Primes et gratifications":{ + }, + "6613-Congés payés":{ + }, + "6614-Indemnités de préavis, de licenciement et de recherche d’embauche":{ + }, + "6615-Indemnités de maladie versées aux travailleurs":{ + }, + "6616-Supplément familial":{ + }, + "6617-Avantages en nature":{ + }, + "6618-Autres rémunérations directes":{ + } + }, + "662-Rémunérations directes versées au personnel non national":{ + "6621-Appointements salaires et commissions":{ + }, + "6622-Primes et gratifications":{ + }, + "6623-Congés payés":{ + }, + "6624-Indemnités de préavis, de licenciement et de recherche d’embauche":{ + }, + "6625-Indemnités de maladie versées aux travailleurs":{ + }, + "6626-Supplément familial":{ + }, + "6627-Avantages en nature":{ + }, + "6628-Autres rémunérations directes":{ + } + }, + "663-Indemnités forfaitaires versées au personnel":{ + "6631-Indemnités de logement":{ + }, + "6632-Indemnités de représentation":{ + }, + "6633-Indemnités d’expatriation":{ + }, + "6634-Indemnités de transport":{ + }, + "6638-Autres indemnités et avantages divers":{ + } + }, + "664-Charges sociales":{ + "6641-Charges sociales sur rémunération du personnel national":{ + }, + "6642-Charges sociales sur rémunération du personnel non national":{ + } + }, + "666-Rémunérations et charges sociales de l’exploitant individuel":{ + "6661-Rémunération du travail de l’exploitant":{ + }, + "6662-Charges sociales":{ + } + }, + "667-Rémunération transférée de personnel extérieur":{ + "6671-Personnel intérimaire":{ + }, + "6672-Personnel détaché ou prêté à l’entité":{ + } + }, + "668-Autres charges sociales":{ + "6681-Versements aux syndicats et comités d’entreprise, d’établissement":{ + }, + "6682-Versements aux comités d’hygiène et de sécurité":{ + }, + "6683-Versements et contributions aux autres œuvres sociales":{ + }, + "6684-Médecine du travail et pharmacie":{ + }, + "6685-Assurances et organismes de santé":{ + }, + "6686-Assurances retraite et fonds de pension":{ + }, + "6687-Majorations et pénalités sociales":{ + }, + "6688-Charges sociales diverses":{ + } + } + }, + "67-Frais financiers et charges assimilées":{ + "671-Intérêts des emprunts":{ + "6711-Emprunts obligataires":{ + }, + "6712-Emprunts auprès des établissements de crédit":{ + }, + "6713-Dettes liées à des participations":{ + }, + "6714-Primes de remboursement des obligations":{ + } + }, + "672-Intérêts dans loyers de location acquisition":{ + "6722-Intérêts dans loyers de location acquisition / crédit-bail immobilier":{ + }, + "6723-Intérêts dans loyers de location acquisition / crédit-bail mobilier":{ + }, + "6724-Intérêts dans loyers de location acquisition / location-vente":{ + }, + "6728-Intérêts dans loyers des autres locations acquisition":{ + } + }, + "673-Escomptes accordés":{ + }, + "674-Autres intérêts":{ + "6741-Avances reçues et dépôts créditeurs":{ + }, + "6742-Comptes courants bloqués":{ + }, + "6743-Intérêts sur obligations cautionnées":{ + }, + "6744-Intérêts sur dettes commerciales":{ + }, + "6745-Intérêts bancaires et sur opérations de financement (escompte...)":{ + }, + "6748-Intérêts sur dettes diverses":{ + } + }, + "675-Escomptes des effets de commerce":{ + }, + "676-Pertes de change financières":{ + }, + "677-Pertes sur titres de placement":{ + "6771-Pertes sur cessions de titres de placement":{ + }, + "6772-Mali provenant d’attribution gratuite d’actions au personnel salarié et aux dirigeants":{ + } + }, + "678-Pertes et charges sur risques financiers":{ + "6781-Sur rentes viagères":{ + }, + "6782-Sur opérations financières":{ + }, + "6784-Sur instruments de trésorerie":{ + } + }, + "679-Charges pour dépréciations et provisions pour risques à court terme financières":{ + "6791-Sur risques financiers":{ + }, + "6795-Sur titres de placement":{ + }, + "6798-Autres charges pour dépréciations et provisions pour risques à court terme financières":{ + } + } + }, + "68-Dotations aux amortissements":{ + "681-Dotations aux amortissements d’exploitation":{ + "6812-Dotations aux amortissements des immobilisations incorporelles":{ + }, + "6813-Dotations aux amortissements des immobilisations corporelles":{ + } + } + }, + "69-Dotations aux provisions et aux dépréciations":{ + "691-Dotations aux provisions et aux dépréciations d’exploitation":{ + "6911-Dotations aux provisions pour risques et charges":{ + }, + "6913-Dotations aux dépréciations des immobilisations incorporelles":{ + }, + "6914-Dotations aux dépréciations des immobilisations corporelles":{ + } + }, + "697-Dotations aux provisions et aux dépréciations financières":{ + "6971-Dotations aux provisions pour risques et charges":{ + }, + "6972-Dotations aux dépréciations des immobilisations financières":{ + } + } + }, + "root_type":"Expense" + }, + "7-Comptes de produits des activités ordinaires":{ + "70-Ventes":{ + "701-Ventes de marchandises":{ + "7011-Dans la Région":{ + }, + "7012-Hors Région":{ + }, + "7013-Aux entités du groupe dans la Région":{ + }, + "7014-Aux entités du groupe hors Région":{ + }, + "7015-Sur internet":{ + }, + "7019-Rabais, remises, ristournes accordés (non ventilés)":{ + } + }, + "702-Ventes de produits finis":{ + "7021-Dans la Région":{ + }, + "7022-Hors Région":{ + }, + "7023-Aux entités du groupe dans la Région":{ + }, + "7024-Aux entités du groupe hors Région":{ + }, + "7025-Sur internet":{ + }, + "7029-Rabais, remises, ristournes accordés (non ventilés)":{ + } + }, + "703-Ventes de produits intermédiaires":{ + "7031-Dans la Région":{ + }, + "7032-Hors Région":{ + }, + "7033-Aux entités du groupe dans la Région":{ + }, + "7034-Aux entités du groupe hors Région":{ + }, + "7035-Sur internet":{ + }, + "7039-Rabais, remises, ristournes accordés (non ventilés)":{ + } + }, + "704-Ventes de produits résiduels":{ + "7041-Dans la Région":{ + }, + "7042-Hors Région":{ + }, + "7043-Aux entités du groupe dans la Région":{ + }, + "7044-Aux entités du groupe hors Région":{ + }, + "7045-Sur internet":{ + }, + "7049-Rabais, remises, ristournes accordés (non ventilés)":{ + } + }, + "705-Travaux facturés":{ + "7051-Dans la Région":{ + }, + "7052-Hors Région":{ + }, + "7053-Aux entités du groupe dans la Région":{ + }, + "7054-Aux entités du groupe hors Région":{ + }, + "7055-Sur internet":{ + }, + "7059-Rabais, remises, ristournes accordés (non ventilés)":{ + } + }, + "706-Services vendus":{ + "7061-Dans la Région":{ + }, + "7062-Hors Région":{ + }, + "7063-Aux entités du groupe dans la Région":{ + }, + "7064-Aux entités du groupe hors Région":{ + }, + "7065-Sur internet":{ + }, + "7069-Rabais, remises, ristournes accordés (non ventilés)":{ + } + }, + "707-Produits accessoires":{ + "7071-Ports, emballages perdus et autres frais facturés":{ + }, + "7072-Commissions et courtages":{ + }, + "7073-Locations":{ + }, + "7074-Bonis sur reprises et cessions d’emballages":{ + }, + "7075-Mise à disposition de personnel":{ + }, + "7076-Redevances pour brevets, logiciels, marques et droits similaires":{ + }, + "7077-Services exploités dans l’intérêt du personnel":{ + }, + "7078-Autres produits accessoires":{ + } + } + }, + "71-Subventions d’exploitation":{ + "711-Sur produits à l’exportation":{ + }, + "712-Sur produits à l’importation":{ + }, + "713-Sur produits de péréquation":{ + }, + "714-Indemnités et subventions d’exploitation (entité agricole)":{ + }, + "718-Autres subventions d’exploitation":{ + "7181-Versées par l’État et les collectivités publiques":{ + }, + "7182-Versées par les organismes internationaux":{ + }, + "7183-Versées par des tiers":{ + } + } + }, + "72-Production immobilisée":{ + "721-Immobilisations incorporelles":{ + }, + "722-Immobilisations corporelles":{ + "7221-Immobilisations corporelles (hors actifs biologiques)":{ + }, + "7222-Immobilisations corporelles (actifs biologiques)":{ + } + }, + "724-Production auto-consommée":{ + }, + "726-Immobilisations financières":{ + } + }, + "73-Variations des stocks de biens et de services produits":{ + "734-Variations des stocks de produits en cours":{ + "7341-Produits en cours":{ + }, + "7342-Travaux en cours":{ + } + }, + "735-Variations des en-cours de services":{ + "7351-Études en cours":{ + }, + "7352-Prestations de services en cours":{ + } + }, + "736-Variations des stocks de produits finis":{ + }, + "737-Variations des stocks de produits intermédiaires et résiduels":{ + "7371-Produits intermédiaires":{ + }, + "7372-Produits résiduels":{ + } + } + }, + "75-Autres produits":{ + "751-Profits sur créances clients et autres débiteurs":{ + }, + "752-Quote-part de résultat sur opérations faites en commun":{ + "7521-Quote-part transférée de pertes (comptabilité du gérant)":{ + }, + "7525-Bénéfices attribués par transfert (comptabilité des associés non gérants)":{ + } + }, + "754-Produits des cessions courantes d’immobilisations":{ + "7541-Immobilisations incorporelles":{ + }, + "7542-Immobilisations corporelles":{ + } + }, + "756-Gains de change sur créances et dettes commerciales":{ + }, + "758-Produits divers":{ + "7581-Indemnités de fonction et autres rémunérations d’administrateurs":{ + }, + "7582-Indemnités d’assurances reçues":{ + }, + "7588-Autres produits divers":{ + } + }, + "759-Reprises de charges pour dépréciations et provisions pour risques à court terme d’exploitation":{ + "7591-Sur risques à court terme":{ + }, + "7593-Sur stocks":{ + }, + "7594-Sur créances":{ + }, + "7598-Sur autres charges pour dépréciations et provisions pour risques à court terme d’exploitation":{ + } + } + }, + "77-Revenus financiers et produits assimilés":{ + "771-Intérêts de prêts et créances diverses":{ + "7712-Intérêts de prêts":{ + }, + "7713-Intérêts sur créances diverses":{ + } + }, + "772-Revenus de participations et autres titres immobilisés":{ + "7721-Revenus des titres de participation":{ + }, + "7722-Revenus autres titres immobilisés":{ + } + }, + "773-Escomptes obtenus":{ + }, + "774-Revenus de placement":{ + "7745-Revenus des obligations":{ + }, + "7746-Revenus des titres de placement":{ + } + }, + "775-Intérêts dans loyers de location acquisition":{ + }, + "776-Gains de change financiers":{ + }, + "777-Gains sur cessions de titres de placement":{ + }, + "778-Gains sur risques financiers":{ + "7781-Sur rentes viagères":{ + }, + "7782-Sur opérations financières":{ + }, + "7784-Sur instruments de trésorerie":{ + } + }, + "779-Reprises de charges pour dépréciations et provisions à court terme financières":{ + "7791-Sur risques financiers":{ + }, + "7795-Sur titres de placement":{ + }, + "7798-Sur autres charges pour dépréciations et provisions pour risques à court terme financières":{ + } + } + }, + "78-Transferts de charges":{ + "781-Transferts de charges d’exploitation":{ + }, + "787-Transferts de charges financières":{ + } + }, + "79-Reprises de provisions, de dépréciations et autres":{ + "791-Reprises de provisions et dépréciations d’exploitation":{ + "7911-Pour risques et charges":{ + }, + "7913-Des immobilisations incorporelles":{ + }, + "7914-Des immobilisations corporelles":{ + } + }, + "797-Reprises de provisions et dépréciations financières":{ + "7971-Pour risques et charges":{ + }, + "7972-Des immobilisations financières":{ + } + }, + "798-Reprises d’amortissements":{ + }, + "799-Reprises de subventions d’investissement":{ + } + }, + "root_type":"Income" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)":{ + "81-Valeurs comptables des cessions d’immobilisations":{ + "811-Immobilisations incorporelles":{ + }, + "812-Immobilisations corporelles":{ + }, + "816-Immobilisations financières":{ + } + }, + "83-Charges hors activités ordinaires":{ + "831-Charges HAO constatées":{ + }, + "833-Charges liées aux opérations de restructuration":{ + }, + "834-Pertes sur créances HAO":{ + }, + "835-Dons et libéralités accordés":{ + }, + "836-Abandons de créances consentis":{ + }, + "837-Charges liées aux opérations de liquidation":{ + }, + "839-Charges pour dépréciations et provisions pour risques à court terme HAO":{ + } + }, + "85-Dotations hors activités ordinaires":{ + "851-Dotations aux provisions réglementées":{ + }, + "852-Dotations aux amortissements HAO":{ + }, + "853-Dotations aux dépréciations HAO":{ + }, + "854-Dotations aux provisions pour risques et charges HAO":{ + }, + "858-Autres dotations HAO":{ + } + }, + "87-Participation des travailleurs":{ + "871-Participation légale aux bénéfices":{ + }, + "874-Participation contractuelle aux bénéfices":{ + }, + "878-Autres participations":{ + } + }, + "89-Impôts sur le résultat":{ + "891-Impôts sur les bénéfices de l’exercice":{ + "8911-Activités exercées dans l’État":{ + }, + "8912-Activités exercées dans les autres États de la Région":{ + }, + "8913-Activités exercées hors Région":{ + } + }, + "892-Rappel d’impôts sur résultats antérieurs":{ + }, + "895-Impôt minimum forfaitaire IMF":{ + }, + "899-Dégrèvements et annulations d’impôts sur résultats antérieurs":{ + "8991-Dégrèvements":{ + }, + "8994-Annulations pour pertes rétroactives":{ + } + } + }, + "root_type":"Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)":{ + "82-Produits des cessions d’immobilisations":{ + "821-Immobilisations incorporelles":{ + }, + "822-Immobilisations corporelles":{ + }, + "826-Immobilisations financières":{ + } + }, + "84-Produits hors activités ordinaires":{ + "841-Produits HAO constatés":{ + }, + "843-Produits liés aux opérations de restructuration":{ + }, + "844-Indemnités et subventions HAO (entité agricole)":{ + }, + "845-Dons et libéralités obtenus":{ + }, + "846-Abandons de créances obtenus":{ + }, + "847-Produits liés aux opérations de liquidation":{ + }, + "848-Transferts de charges HAO":{ + }, + "849-Reprises de charges pour dépréciations et provisions pour risques à court terme HAO":{ + } + }, + "86-Reprises de charges, provisions et dépréciations HAO":{ + "861-Reprises de provisions réglementées":{ + }, + "862-Reprises d’amortissements HAO":{ + }, + "863-Reprises de dépréciations HAO":{ + }, + "864-Reprises de provisions pour risques et charges HAO":{ + }, + "868-Autres reprises HAO":{ + } + }, + "88-Subventions d’équilibre":{ + "881-État":{ + }, + "884-Collectivités publiques":{ + }, + "886-Groupe":{ + }, + "888-Autres":{ + } + }, + "root_type":"Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/syscohada_plan_comptable_avec_code.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/syscohada_plan_comptable_avec_code.json new file mode 100644 index 00000000000..e01f01fdfe5 --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/syscohada_plan_comptable_avec_code.json @@ -0,0 +1,4209 @@ +{ + "country_code":"PLACEHOLDER", + "name":"Syscohada - Plan Comptable avec code", + "tree":{ + "Comptes de ressources durables":{ + "Capital":{ + "Capital social":{ + "Capital souscrit, non appelé":{ + "account_number": "1011" + }, + "Capital souscrit, appelé, non versé":{ + "account_number": "1012" + }, + "Capital souscrit, appelé, versé, non amorti":{ + "account_number": "1013" + }, + "Capital souscrit, appelé, versé, amorti":{ + "account_number": "1014" + }, + "Capital souscrit soumis à des conditions particulières":{ + "account_number": "1018" + }, + "account_number": "101" + }, + "Capital par dotation":{ + "Dotation initiale":{ + "account_number": "1021" + }, + "Dotations complémentaires":{ + "account_number": "1022" + }, + "Autres dotations":{ + "account_number": "1028" + }, + "account_number": "102" + }, + "Capital personnel":{ + "account_number": "103" + }, + "Compte de l’exploitant":{ + "Apports temporaires":{ + "account_number": "1041" + }, + "Opérations courantes":{ + "account_number": "1042" + }, + "Rémunérations, impôts et autres charges personnelles":{ + "account_number": "1043" + }, + "Prélèvements d’autoconsommation":{ + "account_number": "1047" + }, + "Autres prélèvements":{ + "account_number": "1048" + }, + "account_number": "104" + }, + "Primes liées au capital social":{ + "Primes d’émission":{ + "account_number": "1051" + }, + "Primes d’apport":{ + "account_number": "1052" + }, + "Primes de fusion":{ + "account_number": "1053" + }, + "Primes de conversion":{ + "account_number": "1054" + }, + "Autres primes":{ + "account_number": "1058" + }, + "account_number": "105" + }, + "Écarts de réévaluation":{ + "Écarts de réévaluation légale":{ + "account_number": "1061" + }, + "Écarts de réévaluation libre":{ + "account_number": "1062" + }, + "account_number": "106" + }, + "Apporteurs, capital souscrit, non appelé":{ + "account_number": "109" + }, + "account_number": "10" + }, + "Réserves":{ + "Réserve légale":{ + "account_number": "111" + }, + "Réserves statutaires ou contractuelles":{ + "account_number": "112" + }, + "Réserves réglementées":{ + "Réserves de plus-values nettes à long terme":{ + "account_number": "1131" + }, + "Réserves d’attribution gratuite d’actions au personnel salarié et aux dirigeants":{ + "account_number": "1132" + }, + "Réserves consécutives à l’octroi de subventions d’investissement":{ + "account_number": "1133" + }, + "Réserves des valeurs mobilières donnant accès au capital":{ + "account_number": "1134" + }, + "Autres réserves réglementées":{ + "account_number": "1135" + }, + "account_number": "113" + }, + "Autres réserves":{ + "Réserves facultatives":{ + "account_number": "1181" + }, + "Réserves diverses":{ + "account_number": "1188" + }, + "account_number": "118" + }, + "account_number": "11" + }, + "Report à nouveau":{ + "Report à nouveau créditeur":{ + "account_number": "121" + }, + "Report à nouveau débiteur":{ + "Perte nette à reporter":{ + "account_number": "1291" + }, + "Perte Amortissements réputés différés":{ + "account_number": "1292" + }, + "account_number": "129" + }, + "account_number": "12" + }, + "Résultat net de l’exercice":{ + "Résultat en instance d’affectation":{ + "Résultat en instance d’affectation : bénéfice":{ + "account_number": "1301" + }, + "Résultat en instance d’affectation : perte":{ + "account_number": "1309" + }, + "account_number": "130" + }, + "Résultat net : bénéfice":{ + "account_number": "131" + }, + "Marge commerciale (MC)":{ + "account_number": "132" + }, + "Valeur ajoutée (VA)":{ + "account_number": "133" + }, + "Excédent brut d’exploitation (EBE)":{ + "account_number": "134" + }, + "Résultat d’exploitation (RE)":{ + "account_number": "135" + }, + "Résultat financier (RF)":{ + "account_number": "136" + }, + "Résultat des activités ordinaires (RAO)":{ + "account_number": "137" + }, + "Résultat hors activités ordinaires (RHAO)":{ + "Résultat de fusion":{ + "account_number": "1381" + }, + "Résultat d’apport partiel d’actif":{ + "account_number": "1382" + }, + "Résultat de scission":{ + "account_number": "1383" + }, + "Résultat de liquidation":{ + "account_number": "1384" + }, + "account_number": "138" + }, + "Résultat net : perte":{ + "account_number": "139" + }, + "account_number": "13" + }, + "Subventions d’investissement":{ + "Subventions d’équipement":{ + "État":{ + "account_number": "1411" + }, + "Régions":{ + "account_number": "1412" + }, + "Départements":{ + "account_number": "1413" + }, + "Communes et collectivités publiques décentralisées":{ + "account_number": "1414" + }, + "Entités publiques ou mixtes":{ + "account_number": "1415" + }, + "Entités et organismes privés":{ + "account_number": "1416" + }, + "Organismes internationaux":{ + "account_number": "1417" + }, + "Autres":{ + "account_number": "1418" + }, + "account_number": "141" + }, + "Autres subventions d’investissement":{ + "account_number": "148" + }, + "account_number": "14" + }, + "Provisions réglementées et fonds assimilés":{ + "Amortissements dérogatoires":{ + "account_number": "151" + }, + "Plus-values de cession à réinvestir":{ + "account_number": "152" + }, + "Fonds réglementés":{ + "Fonds National":{ + "account_number": "1531" + }, + "Prélèvement pour le Budget":{ + "account_number": "1532" + }, + "account_number": "153" + }, + "Provisions spéciales de réévaluation":{ + "account_number": "154" + }, + "Provisions réglementées relatives aux immobilisations":{ + "Reconstitution des gisements miniers et pétroliers":{ + "account_number": "1551" + }, + "account_number": "155" + }, + "Provisions réglementées relatives aux stocks":{ + "Hausse de prix":{ + "account_number": "1561" + }, + "Fluctuation des cours":{ + "account_number": "1562" + }, + "account_number": "156" + }, + "Provisions pour investissement":{ + "account_number": "157" + }, + "Autres provisions et fonds réglementés":{ + "account_number": "158" + }, + "account_number": "15" + }, + "Emprunts et dettes assimilées":{ + "Emprunts obligataires":{ + "Emprunts obligataires ordinaires":{ + "account_number": "1611" + }, + "Emprunts obligataires convertibles en actions":{ + "account_number": "1612" + }, + "Emprunts obligataires remboursables en actions":{ + "account_number": "1613" + }, + "Autres emprunts obligataires":{ + "account_number": "1618" + }, + "account_number": "161" + }, + "Emprunts et dettes auprès des établissements de crédit":{ + "account_number": "162" + }, + "Avances reçues de l’État":{ + "account_number": "163" + }, + "Avances reçues et comptes courants bloqués":{ + "account_number": "164" + }, + "Dépôts et cautionnements reçus":{ + "Dépôts":{ + "account_number": "1651" + }, + "Cautionnements":{ + "account_number": "1652" + }, + "account_number": "165" + }, + "Intérêts courus":{ + "Sur emprunts obligataires":{ + "account_number": "1661" + }, + "Sur emprunts et dettes auprès des établissements de crédit":{ + "account_number": "1662" + }, + "Sur avances reçues de l’État":{ + "account_number": "1663" + }, + "Sur avances reçues et comptes courants bloqués":{ + "account_number": "1664" + }, + "Sur dépôts et cautionnements reçus":{ + "account_number": "1665" + }, + "Sur avances assorties de conditions particulières":{ + "account_number": "1667" + }, + "Sur autres emprunts et dettes":{ + "account_number": "1668" + }, + "account_number": "166" + }, + "Avances assorties de conditions particulières":{ + "Avances bloquées pour augmentation du capital":{ + "account_number": "1671" + }, + "Avances conditionnées par l’État":{ + "account_number": "1672" + }, + "Avances conditionnées par les autres organismes africains":{ + "account_number": "1673" + }, + "Avances conditionnées par les organismes internationaux":{ + "account_number": "1674" + }, + "account_number": "167" + }, + "Autres emprunts et dettes":{ + "Rentes viagères capitalisées":{ + "account_number": "1681" + }, + "Billets de fonds":{ + "account_number": "1682" + }, + "Dettes consécutives à des titres empruntés":{ + "account_number": "1683" + }, + "Emprunts participatifs":{ + "account_number": "1684" + }, + "Participation des travailleurs aux bénéfices":{ + "account_number": "1685" + }, + "Emprunts et dettes contractés auprès des autres tiers":{ + "account_number": "1686" + }, + "account_number": "168" + }, + "account_number": "16" + }, + "Dettes de location acquisition":{ + "Dettes de location acquisition / crédit bail immobilier":{ + "account_number": "172" + }, + "Dettes de location acquisition / crédit bail mobilier":{ + "account_number": "173" + }, + "Dettes de location acquisition / location de vente":{ + "account_number": "174" + }, + "Intérêts courus":{ + "Sur dettes de location acquisition / crédit-bail immobilier":{ + "account_number": "1762" + }, + "Sur dettes de location acquisition / crédit-bail mobilier":{ + "account_number": "1763" + }, + "Sur dettes de location acquisition / location-vente":{ + "account_number": "1764" + }, + "Sur autres dettes de location acquisition":{ + "account_number": "1768" + }, + "account_number": "176" + }, + "Autres dettes de location acquisition":{ + "account_number": "178" + }, + "account_number": "17" + }, + "Dettes liées à des participations et comptes de liaison des établissements et sociétés en participation":{ + "Dettes liées à des participations":{ + "Dettes liées à des participations (groupe)":{ + "account_number": "1811" + }, + "Dettes liées à des participations (hors groupe)":{ + "account_number": "1812" + }, + "account_number": "181" + }, + "Dettes liées à des sociétés en participation":{ + "account_number": "182" + }, + "Intérêts courus sur dettes liées à des participations":{ + "account_number": "183" + }, + "Comptes permanents bloqués des établissements et succursales":{ + "account_number": "184" + }, + "Comptes permanents non bloqués des établissements et succursales":{ + "account_number": "185" + }, + "Comptes de liaison charges":{ + "account_number": "186" + }, + "Comptes de liaison produits":{ + "account_number": "187" + }, + "Comptes de liaison des sociétés en participation":{ + "account_number": "188" + }, + "account_number": "18" + }, + "Provisions pour risques et charges":{ + "Provisions pour litiges":{ + "account_number": "191" + }, + "Provisions pour garanties données aux clients":{ + "account_number": "192" + }, + "Provisions pour pertes sur marchés à achèvement futur":{ + "account_number": "193" + }, + "Provisions pour pertes de change":{ + "account_number": "194" + }, + "Provisions pour impôts":{ + "account_number": "195" + }, + "Provisions pour pensions et obligations similaires":{ + "Provisions pour pensions et obligations similaires engagement de retraite":{ + "account_number": "1961" + }, + "Actif du régime de retraite":{ + "account_number": "1962" + }, + "account_number": "196" + }, + "Provisions pour restructuration":{ + "account_number": "197" + }, + "Autres provisions pour risques et charges":{ + "Provisions pour amendes et pénalités":{ + "account_number": "1981" + }, + "Provisions pour propre assureur":{ + "account_number": "1983" + }, + "Provisions pour démantèlement et remise en état":{ + "account_number": "1984" + }, + "Provisions pour droits à réduction ou avantage en nature (chèques cadeau, cartes de fidélité...)":{ + "account_number": "1985" + }, + "Provisions pour divers risques et charges":{ + "account_number": "1988" + }, + "account_number": "198" + }, + "account_number": "19" + }, + "root_type":"Equity", + "account_number": "1" + }, + "Comptes d’actif immobilisé":{ + "Immobilisations incorporelles":{ + "account_type":"Fixed Asset", + "Frais de développement":{ + "account_type":"Fixed Asset", + "account_number": "211" + }, + "Brevets, licences, concessions et droits similaires":{ + "account_type":"Fixed Asset", + "Brevets":{ + "account_type":"Fixed Asset", + "account_number": "2121" + }, + "Licences":{ + "account_type":"Fixed Asset", + "account_number": "2122" + }, + "Concessions de service public":{ + "account_type":"Fixed Asset", + "account_number": "2123" + }, + "Autres concessions et droits similaires":{ + "account_type":"Fixed Asset", + "account_number": "2128" + }, + "account_number": "212" + }, + "Logiciels et sites internet":{ + "account_type":"Fixed Asset", + "Logiciels":{ + "account_type":"Fixed Asset", + "account_number": "2131" + }, + "Sites internet":{ + "account_type":"Fixed Asset", + "account_number": "2132" + }, + "account_number": "213" + }, + "Marques":{ + "account_type":"Fixed Asset", + "account_number": "214" + }, + "Fonds commercial":{ + "account_type":"Fixed Asset", + "account_number": "215" + }, + "Droit au bail":{ + "account_type":"Fixed Asset", + "account_number": "216" + }, + "Investissements de création":{ + "account_type":"Fixed Asset", + "account_number": "217" + }, + "Autres droits et valeurs incorporels":{ + "account_type":"Fixed Asset", + "Frais de prospection et d’évaluation de ressources minérales":{ + "account_type":"Fixed Asset", + "account_number": "2181" + }, + "Coûts d’obtention du contrat":{ + "account_type":"Fixed Asset", + "account_number": "2182" + }, + "Fichiers clients, notices, titres de journaux et magazines":{ + "account_type":"Fixed Asset", + "account_number": "2183" + }, + "Coûts des franchises":{ + "account_type":"Fixed Asset", + "account_number": "2184" + }, + "Divers droits et valeurs incorporelles":{ + "account_type":"Fixed Asset", + "account_number": "2188" + }, + "account_number": "218" + }, + "Immobilisations incorporelles en cours":{ + "account_type":"Fixed Asset", + "Frais de développement":{ + "account_type":"Fixed Asset", + "account_number": "2191" + }, + "Logiciels et internet":{ + "account_type":"Fixed Asset", + "account_number": "2193" + }, + "Autres droits et valeurs incorporels":{ + "account_type":"Fixed Asset", + "account_number": "2198" + }, + "account_number": "219" + }, + "account_number": "21" + }, + "Terrains":{ + "account_type":"Fixed Asset", + "Terrains agricoles et forestiers":{ + "account_type":"Fixed Asset", + "Terrains d’exploitation agricole":{ + "account_type":"Fixed Asset", + "account_number": "2211" + }, + "Terrains d’exploitation forestière":{ + "account_type":"Fixed Asset", + "account_number": "2212" + }, + "Autres terrains":{ + "account_type":"Fixed Asset", + "account_number": "2218" + }, + "account_number": "221" + }, + "Terrains nus":{ + "account_type":"Fixed Asset", + "Terrains à bâtir":{ + "account_type":"Fixed Asset", + "account_number": "2221" + }, + "Autres terrains nus":{ + "account_type":"Fixed Asset", + "account_number": "2228" + }, + "account_number": "222" + }, + "Terrains bâtis":{ + "account_type":"Fixed Asset", + "Pour bâtiments industriels et agricoles":{ + "account_type":"Fixed Asset", + "account_number": "2231" + }, + "Pour bâtiments administratifs et commerciaux":{ + "account_type":"Fixed Asset", + "account_number": "2232" + }, + "Pour bâtiments affectés aux autres opérations professionnelles":{ + "account_type":"Fixed Asset", + "account_number": "2234" + }, + "Pour bâtiments affectés aux autres opérations non professionnelles":{ + "account_type":"Fixed Asset", + "account_number": "2235" + }, + "Autres terrains bâtis":{ + "account_type":"Fixed Asset", + "account_number": "2238" + }, + "account_number": "223" + }, + "Travaux de mise en valeur des terrains":{ + "account_type":"Fixed Asset", + "Plantation d’arbres et d’arbustes":{ + "account_type":"Fixed Asset", + "account_number": "2241" + }, + "Améliorations du fonds":{ + "account_type":"Fixed Asset", + "account_number": "2245" + }, + "Autres travaux":{ + "account_type":"Fixed Asset", + "account_number": "2248" + }, + "account_number": "224" + }, + "Terrains de carrières tréfonds":{ + "account_type":"Fixed Asset", + "Carrières":{ + "account_type":"Fixed Asset", + "account_number": "2251" + }, + "account_number": "225" + }, + "Terrains aménagés":{ + "account_type":"Fixed Asset", + "Parkings":{ + "account_type":"Fixed Asset", + "account_number": "2261" + }, + "account_number": "226" + }, + "Terrains mis en concession":{ + "account_type":"Fixed Asset", + "account_number": "227" + }, + "Autres terrains":{ + "account_type":"Fixed Asset", + "Terrains immeubles de placement":{ + "account_type":"Fixed Asset", + "account_number": "2281" + }, + "Terrains des logements affectés au personnel":{ + "account_type":"Fixed Asset", + "account_number": "2285" + }, + "Terrains de location acquisition":{ + "account_type":"Fixed Asset", + "account_number": "2286" + }, + "Divers terrains":{ + "account_type":"Fixed Asset", + "account_number": "2288" + }, + "account_number": "228" + }, + "Aménagements de terrains en cours":{ + "account_type":"Fixed Asset", + "Terrains agricoles et forestiers":{ + "account_type":"Fixed Asset", + "account_number": "2291" + }, + "Terrains nus":{ + "account_type":"Fixed Asset", + "account_number": "2292" + }, + "Terrains de carrières tréfonds":{ + "account_type":"Fixed Asset", + "account_number": "2295" + }, + "Autres terrains":{ + "account_type":"Fixed Asset", + "account_number": "2298" + }, + "account_number": "229" + }, + "account_number": "22" + }, + "Bâtiments, installations techniques et agencements":{ + "Bâtiments industriels, agricoles, administratifs et commerciaux sur sol propre":{ + "Bâtiments industriels":{ + "account_number": "2311" + }, + "Bâtiments agricoles":{ + "account_number": "2312" + }, + "Bâtiments administratifs et commerciaux":{ + "account_number": "2313" + }, + "Bâtiments affectés au logement du personnel":{ + "account_number": "2314" + }, + "Bâtiments immeubles de placement":{ + "account_number": "2315" + }, + "Bâtiments de location acquisition":{ + "account_number": "2316" + }, + "account_number": "231" + }, + "Bâtiments industriels, agricoles, administratifs et commerciaux sur sol d’autrui":{ + "Bâtiments industriels":{ + "account_number": "2321" + }, + "Bâtiments agricoles":{ + "account_number": "2322" + }, + "Bâtiments administratifs et commerciaux":{ + "account_number": "2323" + }, + "Bâtiments affectés au logement du personnel":{ + "account_number": "2324" + }, + "Bâtiments immeubles de placement":{ + "account_number": "2325" + }, + "Bâtiments de location acquisition":{ + "account_number": "2326" + }, + "account_number": "232" + }, + "Ouvrages d’infrastructure":{ + "Voies de terre":{ + "account_number": "2331" + }, + "Voies de fer":{ + "account_number": "2332" + }, + "Voies d’eau":{ + "account_number": "2333" + }, + "Barrages, Digues":{ + "account_number": "2334" + }, + "Pistes d’aérodrome":{ + "account_number": "2335" + }, + "Autres ouvrages d’infrastructures":{ + "account_number": "2338" + }, + "account_number": "233" + }, + "Aménagements, agencements et installations techniques":{ + "Installations complexes spécialisées sur sol propre":{ + "account_number": "2341" + }, + "Installations complexes spécialisées sur sol d’autrui":{ + "account_number": "2342" + }, + "Installations à caractère spécifique sur sol propre":{ + "account_number": "2343" + }, + "Installations à caractère spécifique sur sol d’autrui":{ + "account_number": "2344" + }, + "Aménagements et agencements des bâtiments":{ + "account_number": "2345" + }, + "account_number": "234" + }, + "Aménagements de bureaux":{ + "Installations générales":{ + "account_number": "2351" + }, + "Autres aménagements de bureaux":{ + "account_number": "2358" + }, + "account_number": "235" + }, + "Bâtiments industriels, agricoles et commerciaux mis en concession":{ + "account_number": "237" + }, + "Autres installations et agencements":{ + "account_number": "238" + }, + "Bâtiments aménagements, agencements et installations en cours":{ + "Bâtiments en cours":{ + "account_number": "2391" + }, + "Installations en cours":{ + "account_number": "2392" + }, + "Ouvrages d’infrastructure en cours":{ + "account_number": "2393" + }, + "Aménagements et agencements et installations techniques en cours":{ + "account_number": "2394" + }, + "Aménagements de bureaux en cours":{ + "account_number": "2395" + }, + "Autres installations et agencements en cours":{ + "account_number": "2398" + }, + "account_number": "239" + }, + "account_number": "23" + }, + "Matériel, mobilier et actifs biologiques":{ + "Matériel et outillage industriel et commercial":{ + "Matériel industriel":{ + "account_number": "2411" + }, + "Outillage industriel":{ + "account_number": "2412" + }, + "Matériel commercial":{ + "account_number": "2413" + }, + "Outillage commercial":{ + "account_number": "2414" + }, + "Matériel & outillage industriel et commercial de location-acquisition":{ + "account_number": "2416" + }, + "account_number": "241" + }, + "Matériel et outillage agricole":{ + "Matériel agricole":{ + "account_number": "2421" + }, + "Outillage agricole":{ + "account_number": "2422" + }, + "Matériel & outillage agricole de location-acquisition":{ + "account_number": "2426" + }, + "account_number": "242" + }, + "Matériel d’emballage récupérable et identifiable":{ + "account_number": "243" + }, + "Matériel et mobilier":{ + "Matériel de bureau":{ + "account_number": "2441" + }, + "Matériel informatique":{ + "account_number": "2442" + }, + "Matériel bureautique":{ + "account_number": "2443" + }, + "Mobilier de bureau":{ + "account_number": "2444" + }, + "Matériel et mobilier immeubles de placement":{ + "account_number": "2445" + }, + "Matériel et mobilier de location acquisition":{ + "account_number": "2446" + }, + "Matériel et mobilier des logements du personnel":{ + "account_number": "2447" + }, + "account_number": "244" + }, + "Matériel de transport":{ + "Matériel automobile":{ + "account_number": "2451" + }, + "Matériel ferroviaire":{ + "account_number": "2452" + }, + "Matériel fluvial, lagunaire":{ + "account_number": "2453" + }, + "Matériel naval":{ + "account_number": "2454" + }, + "Matériel aérien":{ + "account_number": "2455" + }, + "Matériel de transport de location-acquisition":{ + "account_number": "2456" + }, + "Matériel hippomobile":{ + "account_number": "2457" + }, + "Autres matériels de transport":{ + "account_number": "2458" + }, + "account_number": "245" + }, + "Actifs biologiques":{ + "Cheptel, animaux de trait":{ + "account_number": "2461" + }, + "Cheptel, animaux reproducteurs":{ + "account_number": "2462" + }, + "Animaux de garde":{ + "account_number": "2463" + }, + "Plantations agricoles":{ + "account_number": "2465" + }, + "Autres actifs biologiques":{ + "account_number": "2468" + }, + "account_number": "246" + }, + "Agencements, aménagements du matériel et actifs biologiques":{ + "Agencements et aménagements du matériel":{ + "account_number": "2471" + }, + "Agencements et aménagements des actifs biologiques":{ + "account_number": "2472" + }, + "Autres agencements, aménagements du matériel et actifs biologiques":{ + "account_number": "2478" + }, + "account_number": "247" + }, + "Autres matériels et mobiliers":{ + "Collections et œuvres d’art":{ + "account_number": "2481" + }, + "Divers matériels mobiliers":{ + "account_number": "2488" + }, + "account_number": "248" + }, + "Matériels et actifs biologiques en cours":{ + "Matériel et outillage industriel et commercial":{ + "account_number": "2491" + }, + "Matériel et outillage agricole":{ + "account_number": "2492" + }, + "Matériel d’emballage récupérable et identifiable":{ + "account_number": "2493" + }, + "Matériel et mobilier de bureau":{ + "account_number": "2494" + }, + "Matériel de transport":{ + "account_number": "2495" + }, + "Actifs biologiques":{ + "account_number": "2496" + }, + "Agencements aménagements du matériel et actifs biologiques":{ + "account_number": "2497" + }, + "Autres matériels et actifs biologiques en cours":{ + "account_number": "2498" + }, + "account_number": "249" + }, + "account_number": "24" + }, + "Avances et acomptes versés sur immobilisations":{ + "Avances et acomptes versés sur immobilisations incorporelles":{ + "account_number": "251" + }, + "Avances et acomptes versés sur immobilisations corporelles":{ + "account_number": "252" + }, + "account_number": "25" + }, + "Titres de participation":{ + "Titres de participation dans des sociétés sous contrôle exclusif":{ + "account_number": "261" + }, + "Titres de participation dans des sociétés sous contrôle conjoint":{ + "account_number": "262" + }, + "Titres de participation dans des sociétés conférant une influence notable":{ + "account_number": "263" + }, + "Participations dans des organismes professionnels":{ + "account_number": "265" + }, + "Parts dans des groupements d’intérêt économique (GIE)":{ + "account_number": "266" + }, + "Autres titres de participation":{ + "account_number": "268" + }, + "account_number": "26" + }, + "Autres immobilisations financières":{ + "Prêts et créances":{ + "Prêts participatifs":{ + "account_number": "2711" + }, + "Prêts aux associés":{ + "account_number": "2712" + }, + "Billets de fonds":{ + "account_number": "2713" + }, + "Titres prêtés":{ + "account_number": "2714" + }, + "Autres prêts et créances":{ + "account_number": "2718" + }, + "account_number": "271" + }, + "Prêts au personnel":{ + "Prêts immobiliers":{ + "account_number": "2721" + }, + "Prêts mobiliers et d’installation":{ + "account_number": "2722" + }, + "Autres prêts au personnel":{ + "account_number": "2728" + }, + "account_number": "272" + }, + "Créances sur l’État":{ + "Retenues de garantie":{ + "account_number": "2731" + }, + "Fonds réglementé":{ + "account_number": "2733" + }, + "Créances sur le concédant":{ + "account_number": "2734" + }, + "Autres créances sur l’État":{ + "account_number": "2738" + }, + "account_number": "273" + }, + "Titres immobilisés":{ + "Titres immobilisés de l’activité de portefeuille (TIAP)":{ + "account_number": "2741" + }, + "Titres participatifs":{ + "account_number": "2742" + }, + "Certificats d’investissement":{ + "account_number": "2743" + }, + "Parts de fonds commun de placement (FCP)":{ + "account_number": "2744" + }, + "Obligations":{ + "account_number": "2745" + }, + "Actions ou parts propres":{ + "account_number": "2746" + }, + "Autres titres immobilisés":{ + "account_number": "2748" + }, + "account_number": "274" + }, + "Dépôts et cautionnements versés":{ + "Dépôts pour loyers d’avance":{ + "account_number": "2751" + }, + "Dépôts pour l’électricité":{ + "account_number": "2752" + }, + "Dépôts pour l’eau":{ + "account_number": "2753" + }, + "Dépôts pour le gaz":{ + "account_number": "2754" + }, + "Dépôts pour le téléphone, le télex, la télécopie":{ + "account_number": "2755" + }, + "Cautionnements sur marchés publics":{ + "account_number": "2756" + }, + "Cautionnements sur autres opérations":{ + "account_number": "2757" + }, + "Autres dépôts et cautionnements":{ + "account_number": "2758" + }, + "account_number": "275" + }, + "Intérêts courus":{ + "Prêts et créances non commerciales":{ + "account_number": "2761" + }, + "Prêts au personnel":{ + "account_number": "2762" + }, + "Créances sur l’État":{ + "account_number": "2763" + }, + "Titres immobilisés":{ + "account_number": "2764" + }, + "Dépôts et cautionnements versés":{ + "account_number": "2765" + }, + "Créances rattachées à des participations":{ + "account_number": "2767" + }, + "Immobilisations financières diverses":{ + "account_number": "2768" + }, + "account_number": "276" + }, + "Créances rattachées à des participations et avances à des GIE":{ + "Créances rattachées à des participations (groupe)":{ + "account_number": "2771" + }, + "Créances rattachées à des participations (hors groupe)":{ + "account_number": "2772" + }, + "Créances rattachées à des sociétés en participation":{ + "account_number": "2773" + }, + "Avances à des Groupements d’intérêt économique (GIE)":{ + "account_number": "2774" + }, + "account_number": "277" + }, + "Immobilisations financières diverses":{ + "Créances diverses groupe":{ + "account_number": "2781" + }, + "Créances diverses hors groupe":{ + "account_number": "2782" + }, + "Banques dépôts à terme":{ + "account_number": "2784" + }, + "Or et métaux précieux":{ + "account_number": "2785" + }, + "Autres immobilisations financières":{ + "account_number": "2788" + }, + "account_number": "278" + }, + "account_number": "27" + }, + "Amortissements":{ + "account_type":"Accumulated Depreciation", + "Amortissements des immobilisations corporelles":{ + "account_type":"Accumulated Depreciation", + "Amortissements des frais de développement":{ + "account_type":"Accumulated Depreciation", + "account_number": "2811" + }, + "Amortissements des brevets, licences, concessions et droits similaires":{ + "account_type":"Accumulated Depreciation", + "account_number": "2812" + }, + "Amortissements des logiciels et sites internet":{ + "account_type":"Accumulated Depreciation", + "account_number": "2813" + }, + "Amortissements des marques":{ + "account_type":"Accumulated Depreciation", + "account_number": "2814" + }, + "Amortissements du fonds commercial":{ + "account_type":"Accumulated Depreciation", + "account_number": "2815" + }, + "Amortissements du droit au bail":{ + "account_type":"Accumulated Depreciation", + "account_number": "2816" + }, + "Amortissements des investissements de création":{ + "account_type":"Accumulated Depreciation", + "account_number": "2817" + }, + "Amortissements des autres droits et valeurs incorporels":{ + "account_type":"Accumulated Depreciation", + "account_number": "2818" + }, + "account_number": "281" + }, + "Amortissements des terrains":{ + "Amortissements des travaux de mise en valeur des terrains":{ + "account_number": "2824" + }, + "account_number": "282" + }, + "Amortissements des bâtiments, installations techniques et agencements":{ + "Amortissements des bâtiments industriels, agricoles, administratifs et commerciaux sur sol propre":{ + "account_number": "2831" + }, + "Amortissements des bâtiments industriels, agricoles, administratifs et commerciaux sur sol d’autrui":{ + "account_number": "2832" + }, + "Amortissements des ouvrages d’infrastructure":{ + "account_number": "2833" + }, + "Amortissements des aménagements, agencements et installations techniques":{ + "account_number": "2834" + }, + "Amortissements des aménagements de bureaux":{ + "account_number": "2835" + }, + "Amortissements des bâtiments industriels, agricoles et commerciaux mis en concession":{ + "account_number": "2837" + }, + "Amortissements des autres installations et agencements":{ + "account_number": "2838" + }, + "account_number": "283" + }, + "Amortissements du matériel":{ + "Amortissements du matériel et outillage industriel et commercial":{ + "account_number": "2841" + }, + "Amortissements du matériel et outillage agricole":{ + "account_number": "2842" + }, + "Amortissements du matériel d’emballage récupérable et identifiable":{ + "account_number": "2843" + }, + "Amortissements du matériel et mobilier":{ + "account_number": "2844" + }, + "Amortissements du matériel de transport":{ + "account_number": "2845" + }, + "Amortissements des actifs biologiques":{ + "account_number": "2846" + }, + "Amortissements des agencements et aménagements du matériel et des actifs biologiques":{ + "account_number": "2847" + }, + "Amortissements des autres matériels":{ + "account_number": "2848" + }, + "account_number": "284" + }, + "account_number": "28" + }, + "Dépréciations des immobilisations":{ + "Dépréciations des immobilisations incorporelles":{ + "Dépréciations des frais de développement":{ + "account_number": "2911" + }, + "Dépréciations des brevets, licences, concessions et droits similaires":{ + "account_number": "2912" + }, + "Dépréciations des logiciels et sites internet":{ + "account_number": "2913" + }, + "Dépréciations des marques":{ + "account_number": "2914" + }, + "Dépréciations du fonds commercial":{ + "account_number": "2915" + }, + "Dépréciations du droit au bail":{ + "account_number": "2916" + }, + "Dépréciations des investissements de création":{ + "account_number": "2917" + }, + "Dépréciations des autres droits et valeurs incorporels":{ + "account_number": "2918" + }, + "Dépréciations des immobilisations incorporelles en cours":{ + "account_number": "2919" + }, + "account_number": "291" + }, + "Dépréciations des terrains":{ + "Dépréciations des terrains agricoles et forestiers":{ + "account_number": "2921" + }, + "Dépréciations des terrains nus":{ + "account_number": "2922" + }, + "Dépréciations des terrains bâtis":{ + "account_number": "2923" + }, + "Dépréciations des travaux de mise en valeur des terrains":{ + "account_number": "2924" + }, + "Dépréciations des terrains de gisement":{ + "account_number": "2925" + }, + "Dépréciations des terrains aménagés":{ + "account_number": "2926" + }, + "Dépréciations des terrains mis en concession":{ + "account_number": "2927" + }, + "Dépréciations des autres terrains":{ + "account_number": "2928" + }, + "Dépréciations des aménagements de terrains en cours":{ + "account_number": "2929" + }, + "account_number": "292" + }, + "Dépréciations des bâtiments, installations techniques et agencements":{ + "Dépréciations des bâtiments industriels, agricoles, administratifs et commerciaux sur sol propre":{ + "account_number": "2931" + }, + "Dépréciations des bâtiments industriels, agricoles, administratifs et commerciaux sur sol d’autrui":{ + "account_number": "2932" + }, + "Dépréciations des ouvrages d’infrastructures":{ + "account_number": "2933" + }, + "Dépréciations des aménagements, agencements et installations techniques":{ + "account_number": "2934" + }, + "Dépréciations des aménagements de bureaux":{ + "account_number": "2935" + }, + "Dépréciations des bâtiments industriels, agricoles et commerciaux mis en concession":{ + "account_number": "2937" + }, + "Dépréciations des autres installations et agencements":{ + "account_number": "2938" + }, + "Dépréciations des bâtiments et installations en cours":{ + "account_number": "2939" + }, + "account_number": "293" + }, + "Dépréciations de matériel, du mobilier et de l’actif biologique":{ + "Dépréciations du matériel et outillage industriel et commercial":{ + "account_number": "2941" + }, + "Dépréciations du matériel et outillage agricole":{ + "account_number": "2942" + }, + "Dépréciations du matériel d’emballage récupérable et identifiable":{ + "account_number": "2943" + }, + "Dépréciations du matériel et mobilier":{ + "account_number": "2944" + }, + "Dépréciations du matériel de transport":{ + "account_number": "2945" + }, + "Dépréciations des actifs biologiques":{ + "account_number": "2946" + }, + "Dépréciations des agencements et aménagements du matériel et des actifs biologiques":{ + "account_number": "2947" + }, + "Dépréciations des autres matériels":{ + "account_number": "2948" + }, + "Dépréciations de matériel en cours":{ + "account_number": "2949" + }, + "account_number": "294" + }, + "Dépréciations des avances et acomptes versés sur immobilisations":{ + "Dépréciations des avances et acomptes versés sur immobilisations incorporelles":{ + "account_number": "2951" + }, + "Dépréciations des avances et acomptes versés sur immobilisations corporelles":{ + "account_number": "2952" + }, + "account_number": "295" + }, + "Dépréciations des titres de participation":{ + "Dépréciations des titres de participation dans des sociétés sous contrôle exclusif":{ + "account_number": "2961" + }, + "Dépréciations des titres de participation dans les sociétés sous contrôle conjoint":{ + "account_number": "2962" + }, + "Dépréciations des titres de participation dans les sociétés conférant une influence notable":{ + "account_number": "2963" + }, + "Dépréciations des participations dans des organismes professionnels":{ + "account_number": "2965" + }, + "Dépréciations des parts dans des GIE":{ + "account_number": "2966" + }, + "Dépréciations des autres titres de participation":{ + "account_number": "2968" + }, + "account_number": "296" + }, + "Dépréciations des autres immobilisations financières":{ + "Dépréciations des prêts et créances":{ + "account_number": "2971" + }, + "Dépréciations des prêts au personnel":{ + "account_number": "2972" + }, + "Dépréciations des créances sur l’État":{ + "account_number": "2973" + }, + "Dépréciations des titres immobilisés":{ + "account_number": "2974" + }, + "Dépréciations des dépôts et cautionnements versés":{ + "account_number": "2975" + }, + "Dépréciations des créances rattachées à des participations et avances à des GIE":{ + "account_number": "2977" + }, + "Dépréciations des créances financières diverses":{ + "account_number": "2978" + }, + "account_number": "297" + }, + "account_number": "29" + }, + "root_type":"Asset", + "account_number": "2" + }, + "Comptes de Stocks":{ + "Marchandises":{ + "Marchandises A":{ + "Marchandises A1":{ + "account_number": "3111" + }, + "Marchandises A2":{ + "account_number": "3112" + }, + "account_number": "311" + }, + "Marchandises B":{ + "Marchandises B1":{ + "account_number": "3121" + }, + "Marchandises B2":{ + "account_number": "3122" + }, + "account_number": "312" + }, + "Actifs biologiques":{ + "Animaux":{ + "account_number": "3131" + }, + "Végétaux":{ + "account_number": "3132" + }, + "account_number": "313" + }, + "Marchandises hors activités ordinaires (HAO)":{ + "account_number": "318" + }, + "account_number": "31" + }, + "Matières premières et fournitures liées":{ + "Matières A":{ + "account_number": "321" + }, + "Matières B":{ + "account_number": "322" + }, + "Fournitures (A, B)":{ + "account_number": "323" + }, + "account_number": "32" + }, + "Autres approvisionnements":{ + "Matières consommables":{ + "account_number": "331" + }, + "Fournitures d’atelier et d’usine":{ + "account_number": "332" + }, + "Fournitures de magasin":{ + "account_number": "333" + }, + "Fournitures de bureau":{ + "account_number": "334" + }, + "Emballages":{ + "Emballages perdus":{ + "account_number": "3351" + }, + "Emballages récupérables non identifiables":{ + "account_number": "3352" + }, + "Emballages à usage mixte":{ + "account_number": "3353" + }, + "Autres emballages":{ + "account_number": "3358" + }, + "account_number": "335" + }, + "Autres matières":{ + "account_number": "338" + }, + "account_number": "33" + }, + "Produits en cours":{ + "Produits en cours":{ + "Produits en cours P1":{ + "account_number": "3411" + }, + "Produits en cours P2":{ + "account_number": "3412" + }, + "account_number": "341" + }, + "Travaux en cours":{ + "Travaux en cours T1":{ + "account_number": "3421" + }, + "Travaux en cours T2":{ + "account_number": "3422" + }, + "account_number": "342" + }, + "Produits intermédiaires en cours":{ + "Produits intermédiaires A":{ + "account_number": "3431" + }, + "Produits intermédiaires B":{ + "account_number": "3432" + }, + "account_number": "343" + }, + "Produits résiduels en cours":{ + "Produits résiduels A":{ + "account_number": "3441" + }, + "Produits résiduels B":{ + "account_number": "3442" + }, + "account_number": "344" + }, + "Actifs biologiques en cours":{ + "Animaux":{ + "account_number": "3451" + }, + "Végétaux":{ + "account_number": "3452" + }, + "account_number": "345" + }, + "account_number": "34" + }, + "Services en cours":{ + "Études en cours":{ + "Études en cours E1":{ + "account_number": "3511" + }, + "Études en cours E2":{ + "account_number": "3512" + }, + "account_number": "351" + }, + "Prestations de services en cours":{ + "Prestations de services S1":{ + "account_number": "3521" + }, + "Prestations de services S2":{ + "account_number": "3522" + } + }, + "account_number": "35" + }, + "Produits finis":{ + "Produits finis A":{ + "account_number": "361" + }, + "Produits finis B":{ + "account_number": "362" + }, + "Actifs biologiques":{ + "Animaux":{ + "account_number": "3631" + }, + "Végétaux":{ + "account_number": "3632" + }, + "Autres stocks (activités annexes)":{ + "account_number": "3638" + }, + "account_number": "363" + }, + "account_number": "36" + }, + "Produits intermédiaires et résiduels":{ + "Produits intermédiaires":{ + "Produits intermédiaires A":{ + "account_number": "3711" + }, + "Produits intermédiaires B":{ + "account_number": "3712" + }, + "account_number": "371" + }, + "Produits résiduels":{ + "Déchets":{ + "account_number": "3721" + }, + "Rebuts":{ + "account_number": "3722" + }, + "Matières de Récupération":{ + "account_number": "3723" + }, + "account_number": "372" + }, + "Actifs biologiques":{ + "Animaux":{ + "account_number": "3731" + }, + "Végétaux":{ + "account_number": "3732" + }, + "Autres stocks (activités annexes)":{ + "account_number": "3738" + }, + "account_number": "373" + }, + "account_number": "37" + }, + "Stocks en cours de route, en consignation ou en dépôt":{ + "account_type":"Stock", + "Marchandises en cours de route":{ + "account_number": "381" + }, + "Matières premières et fournitures liées en cours de route":{ + "account_number": "382" + }, + "Autres approvisionnements en cours de route":{ + "account_number": "383" + }, + "Produits finis en cours de route":{ + "account_number": "386" + }, + "Stock en consignation ou en dépôt":{ + "Stock en consignation":{ + "account_number": "3871" + }, + "Stock en dépôt":{ + "account_number": "3872" + }, + "account_number": "387" + }, + "Stock provenant d’immobilisations mises hors service ou au rebut":{ + "account_number": "388" + }, + "account_number": "38" + }, + "Dépréciations des stocks et encours de production":{ + "Dépréciations des stocks de marchandises":{ + "account_number": "391" + }, + "Dépréciations des stocks de matières premières et fournitures liées":{ + "account_number": "392" + }, + "Dépréciations des stocks d’autres approvisionnements":{ + "account_number": "393" + }, + "Dépréciations des productions en cours":{ + "account_number": "394" + }, + "Dépréciations des services en cours":{ + "account_number": "395" + }, + "Dépréciations des stocks de produits finis":{ + "account_number": "396" + }, + "Dépréciations des stocks de produits intermédiaires et résiduels":{ + "account_number": "397" + }, + "Dépréciations des stocks en cours de route, en consignation ou en dépôt":{ + "account_number": "398" + }, + "account_number": "39" + }, + "root_type":"Asset", + "account_number": "3" + }, + "4-Comptes de Tiers (ACTIF)":{ + "40-Fournisseurs et comptes rattachés (ACTIF)":{ + "Fournisseurs débiteurs":{ + "Fournisseurs Avances et acomptes versés":{ + "account_number": "4091" + }, + "Fournisseurs Groupe avances et acomptes versés":{ + "account_number": "4092" + }, + "Fournisseurs Sous-traitants avances et acomptes versés":{ + "account_number": "4093" + }, + "Fournisseurs Créances pour emballages et matériels à rendre":{ + "account_number": "4094" + }, + "Fournisseurs Rabais, remises, ristournes et autres avoirs à obtenir":{ + "account_number": "4098" + }, + "account_number": "409" + } + }, + "41-Clients et comptes rattachés (ACTIF)":{ + "Clients":{ + "Clients":{ + "account_type":"Receivable", + "account_number": "4111" + }, + "Clients groupe":{ + "account_type":"Receivable", + "account_number": "4112" + }, + "Clients, État et Collectivités publiques":{ + "account_type":"Receivable", + "account_number": "4114" + }, + "Clients, organismes internationaux":{ + "account_type":"Receivable", + "account_number": "4115" + }, + "Clients, réserve de propriété":{ + "account_type":"Receivable", + "account_number": "4116" + }, + "Client, retenues de garantie":{ + "account_type":"Receivable", + "account_number": "4117" + }, + "Clients, dégrèvement de taxes sur la valeur ajoutée (TVA)":{ + "account_type":"Receivable", + "account_number": "4118" + }, + "account_type":"Receivable", + "account_number": "411" + }, + "Clients, effets à recevoir en portefeuille":{ + "Clients, effets à recevoir":{ + "account_type":"Receivable", + "account_number": "4121" + }, + "Clients Groupe, effets à recevoir":{ + "account_type":"Receivable", + "account_number": "4122" + }, + "État et Collectivités publiques, effets à recevoir":{ + "account_type":"Receivable", + "account_number": "4124" + }, + "Organismes Internationaux, effets à recevoir":{ + "account_type":"Receivable", + "account_number": "4125" + }, + "account_type":"Receivable", + "account_number": "412" + }, + "Clients, chèques, effets et autres valeurs impayées":{ + "Clients, chèques impayés":{ + "account_type":"Receivable", + "account_number": "4131" + }, + "Clients, effets impayés":{ + "account_type":"Receivable", + "account_number": "4132" + }, + "Clients, cartes de crédit impayées":{ + "account_type":"Receivable", + "account_number": "4133" + }, + "Clients, autres valeurs impayées":{ + "account_type":"Receivable", + "account_number": "4138" + }, + "account_type":"Receivable", + "account_number": "413" + }, + "Créances sur cessions courantes d’immobilisations":{ + "Créances en compte, immobilisations incorporelles":{ + "account_type":"Receivable", + "account_number": "4141" + }, + "Créances en compte, immobilisations corporelles":{ + "account_type":"Receivable", + "account_number": "4142" + }, + "Effets à recevoir, immobilisations incorporelles":{ + "account_type":"Receivable", + "account_number": "4146" + }, + "Effets à recevoir, immobilisations corporelles":{ + "account_type":"Receivable", + "account_number": "4147" + }, + "account_type":"Receivable", + "account_number": "414" + }, + "Clients, effets escomptés non échus":{ + "account_type":"Receivable", + "account_number": "415" + }, + "Créances clients litigieuses ou douteuses":{ + "Créances litigieuses":{ + "account_type":"Receivable", + "account_number": "4161" + }, + "Créances douteuses":{ + "account_type":"Receivable", + "account_number": "4162" + }, + "account_type":"Receivable", + "account_number": "416" + }, + "Clients, produits à recevoir":{ + "Clients, factures à établir":{ + "account_type":"Receivable", + "account_number": "4181" + }, + "Clients, intérêts courus":{ + "account_type":"Receivable", + "account_number": "4186" + }, + "account_type":"Receivable", + "account_number": "418" + }, + "account_type":"Receivable" + }, + "42-Personnel (ACTIF)":{ + "Personnel, avances et acomptes":{ + "Personnel, avances":{ + "account_number": "4211" + }, + "Personnel, acomptes":{ + "account_number": "4212" + }, + "Frais avancés et fournitures au personnel":{ + "account_number": "4213" + }, + "account_number": "421" + } + }, + "43-Organismes sociaux (ACTIF)":{ + "431-Sécurité sociale":{ + "Prestations familiales":{ + "account_number": "4311" + }, + "Accidents de travail":{ + "account_number": "4312" + }, + "Caisse de retraite obligatoire":{ + "account_number": "4313" + }, + "Caisse de retraite facultative":{ + "account_number": "4314" + }, + "Autres cotisations sociales":{ + "account_number": "4318" + } + }, + "432-Caisses de retraite complémentaire":{ + }, + "433-Autres organismes sociaux":{ + "Mutuelle":{ + "account_number": "4331" + }, + "Assurances retraite":{ + "account_number": "4332" + }, + "Assurances et organismes de santé":{ + "account_number": "4333" + } + }, + "438-Organismes sociaux, charges à payer et produits à recevoir":{ + "Produits à recevoir":{ + "account_number": "4387" + } + } + }, + "44-État et collectivités publiques (ACTIF)":{ + "État, TVA facturée":{ + "TVA facturée sur ventes":{ + "account_number": "4431" + }, + "TVA facturée sur prestations de services":{ + "account_number": "4432" + }, + "TVA facturée sur travaux":{ + "account_number": "4433" + }, + "TVA facturée sur production livrée à soi-même":{ + "account_number": "4434" + }, + "TVA sur factures à établir":{ + "account_number": "4435" + }, + "account_number": "443" + }, + "État, TVA récupérable":{ + "TVA récupérable sur immobilisations":{ + "account_number": "4451" + }, + "TVA récupérable sur achats":{ + "account_number": "4452" + }, + "TVA récupérable sur transport":{ + "account_number": "4453" + }, + "TVA récupérable sur services extérieurs et autres charges":{ + "account_number": "4454" + }, + "TVA récupérable sur factures non parvenues":{ + "account_number": "4455" + }, + "TVA transférée par d’autres entités":{ + "account_number": "4456" + }, + "account_number": "445" + }, + "État, charges à payer et produits à recevoir":{ + "Charges à payer":{ + "account_number": "4486" + }, + "Produits à recevoir":{ + "account_number": "4487" + }, + "account_number": "448" + }, + "État, créances et dettes diverses":{ + "État, obligations cautionnées":{ + "account_number": "4491" + }, + "État, avances et acomptes versés sur impôts":{ + "account_number": "4492" + }, + "État, fonds de dotation à recevoir":{ + "account_number": "4493" + }, + "État, subventions investissement à recevoir":{ + "account_number": "4494" + }, + "État, subventions d’exploitation à recevoir":{ + "account_number": "4495" + }, + "État, subventions d’équilibre à recevoir":{ + "account_number": "4496" + }, + "État, avances sur subventions":{ + "account_number": "4497" + }, + "État, fonds réglementés provisionnés":{ + "account_number": "4499" + }, + "account_number": "449" + } + }, + "45-Organismes internationaux (ACTIF)":{ + "Opérations avec les organismes africains":{ + "account_number": "451" + }, + "Opérations avec les autres organismes internationaux":{ + "account_number": "452" + }, + "Organismes internationaux, fonds de dotation et subventions à recevoir":{ + "Organismes internationaux, fonds de dotation à recevoir":{ + "account_number": "4581" + }, + "Organismes internationaux, subventions à recevoir":{ + "account_number": "4582" + }, + "account_number": "458" + } + }, + "46-Apporteurs, associés et groupe (ACTIF)":{ + "461-Apporteurs, opérations sur le capital":{ + "Apporteurs, capital appelé, non versé":{ + "account_number": "4613" + }, + "Apporteurs, compte d’apport, opérations de restructuration (fusion...)":{ + "account_number": "4614" + }, + "Apporteurs, titres à échanger":{ + "account_number": "4618" + } + }, + "Apporteurs, restant dû sur capital appelé":{ + "account_number": "467" + } + }, + "47-Débiteurs et créditeurs divers (ACTIF)":{ + "472-Créances et dettes sur titres de placement":{ + "Créances sur cessions de titres de placement":{ + "account_number": "4721" + }, + "Versements restant à effectuer sur titres de placement non libérés":{ + "account_number": "4726" + } + }, + "473-Intermédiaires Opérations faites pour compte de tiers":{ + "Mandants":{ + "account_number": "4731" + }, + "Mandataires":{ + "account_number": "4732" + }, + "Commettants":{ + "account_number": "4733" + }, + "Commissionnaires":{ + "account_number": "4734" + }, + "État, Collectivités publiques, fonds global d’allocation":{ + "account_number": "4739" + } + }, + "474-Compte de répartition périodique des charges et des produits":{ + "Compte de répartition périodique des produits":{ + "account_number": "4747" + } + }, + "475-Compte transitoire, ajustement spécial lié à la révision du SYSCOHADA":{ + "Compte actif":{ + "account_type":"Temporary", + "account_number": "4751" + } + }, + "Charges constatées d’avance":{ + "account_number": "476" + }, + "478-Écarts de conversion actif":{ + "Diminution des créances d’exploitation":{ + "account_number": "4781" + }, + "Diminution des créances financières":{ + "account_number": "4782" + }, + "Augmentation des dettes d’exploitation":{ + "account_number": "4783" + }, + "Augmentation des dettes financières":{ + "account_number": "4784" + }, + "Différences d’évaluation sur instruments de trésorerie":{ + "account_number": "4786" + }, + "Différences compensées par couverture de change":{ + "account_number": "4788" + } + } + }, + "48-Créances et dettes hors activités ordinaires (ACTIF)":{ + "Créances sur cessions d’immobilisations":{ + "En compte, immobilisations incorporelles":{ + "account_number": "4851" + }, + "En compte, immobilisations corporelles":{ + "account_number": "4852" + }, + "Effets à recevoir, immobilisations incorporelles":{ + "account_number": "4853" + }, + "Effets à recevoir, immobilisations corporelles":{ + "account_number": "4854" + }, + "Effets escomptés non échus":{ + "account_number": "4855" + }, + "Retenues de garantie":{ + "account_number": "4857" + }, + "Factures à établir":{ + "account_number": "4858" + }, + "account_number": "485" + }, + "Autres créances hors activités ordinaires (HAO)":{ + "account_number": "488" + } + }, + "49-Dépréciations et provisions pour risques à court terme (tiers) (ACTIF)":{ + "Dépréciations des comptes clients":{ + "Créances litigieuses":{ + "account_number": "4911" + }, + "Créances douteuses":{ + "account_number": "4912" + }, + "account_number": "491" + }, + "Dépréciations des comptes organismes internationaux":{ + "account_number": "495" + }, + "Dépréciations des comptes apporteurs, associés et groupe":{ + "Associés, comptes courants":{ + "account_number": "4962" + }, + "Associés, opérations faites en commun":{ + "account_number": "4963" + }, + "Groupe, comptes courants":{ + "account_number": "4966" + }, + "account_number": "496" + }, + "Dépréciations des comptes débiteurs divers":{ + "account_number": "497" + }, + "Dépréciations des comptes de créances HAO":{ + "Créances sur cessions d’immobilisations":{ + "account_number": "4985" + }, + "Créances sur cessions de titres de placement":{ + "account_number": "4986" + }, + "Autres créances HAO":{ + "account_number": "4988" + }, + "account_number": "498" + }, + "Provisions pour risques à court terme":{ + "Sur opérations d’exploitation":{ + "account_number": "4991" + }, + "Sur opérations financières":{ + "account_number": "4997" + }, + "Sur opérations HAO":{ + "account_number": "4998" + }, + "account_number": "499" + } + }, + "root_type":"Asset" + }, + "4-Comptes de Tiers (PASSIF)":{ + "40-Fournisseurs et comptes rattachés (PASSIF)":{ + "Fournisseurs, dettes en compte":{ + "Fournisseurs":{ + "account_type":"Payable", + "account_number": "4011" + }, + "Fournisseurs groupe":{ + "account_type":"Payable", + "account_number": "4012" + }, + "Fournisseurs sous-traitants":{ + "account_type":"Payable", + "account_number": "4013" + }, + "Fournisseurs, réserve de propriété":{ + "account_type":"Payable", + "account_number": "4016" + }, + "Fournisseur, retenues de garantie":{ + "account_type":"Payable", + "account_number": "4017" + }, + "account_type":"Payable", + "account_number": "401" + }, + "Fournisseurs, effets à payer":{ + "Fournisseurs Effets à payer":{ + "account_type":"Payable", + "account_number": "4021" + }, + "Fournisseurs Groupe, effets à payer":{ + "account_type":"Payable", + "account_number": "4022" + }, + "Fournisseurs Sous-traitants, effets à payer":{ + "account_type":"Payable", + "account_number": "4023" + }, + "account_type":"Payable", + "account_number": "402" + }, + "Fournisseurs, acquisitions courantes d’immobilisations":{ + "Fournisseurs Dettes en comptes, immobilisations incorporelles":{ + "account_type":"Payable", + "account_number": "4041" + }, + "Fournisseurs Dettes en comptes, immobilisations corporelles":{ + "account_type":"Payable", + "account_number": "4042" + }, + "Fournisseurs Effets à payer, immobilisations incorporelles":{ + "account_type":"Payable", + "account_number": "4046" + }, + "Fournisseurs Effets à payer, immobilisations corporelles":{ + "account_type":"Payable", + "account_number": "4047" + }, + "account_type":"Payable", + "account_number": "404" + }, + "Fournisseurs, factures non parvenues":{ + "Fournisseurs":{ + "account_type":"Stock Received But Not Billed", + "account_number": "4081" + }, + "Fournisseurs groupe":{ + "account_type":"Stock Received But Not Billed", + "account_number": "4082" + }, + "Fournisseurs sous-traitants":{ + "account_type":"Stock Received But Not Billed", + "account_number": "4083" + }, + "Fournisseurs, intérêts courus":{ + "account_type":"Stock Received But Not Billed", + "account_number": "4086" + }, + "account_type":"Stock Received But Not Billed", + "account_number": "408" + }, + "account_type":"Payable" + }, + "41-Clients et comptes rattachés (PASSIF)":{ + "Clients créditeurs":{ + "Clients, avances et acomptes reçus":{ + "account_number": "4191" + }, + "Clients groupe, avances et acomptes reçus":{ + "account_number": "4192" + }, + "Clients, dettes pour emballages et matériels consignés":{ + "account_number": "4194" + }, + "Clients, rabais, remises, ristournes et autres avoirs à accorder":{ + "account_number": "4198" + }, + "account_number": "419" + } + }, + "42-Personnel (PASSIF)":{ + "Personnel, rémunérations dues":{ + "account_number": "422" + }, + "Personnel, oppositions, saisies-arrêts":{ + "Personnel, oppositions":{ + "account_number": "4231" + }, + "Personnel, saisies-arrêts":{ + "account_number": "4232" + }, + "Personnel, avis à tiers détenteur":{ + "account_number": "4233" + }, + "account_number": "423" + }, + "Personnel, œuvres sociales internes":{ + "Assistance médicale":{ + "account_number": "4241" + }, + "Allocations familiales":{ + "account_number": "4242" + }, + "Organismes sociaux rattachés à l’entité":{ + "account_number": "4245" + }, + "Autres œuvres sociales internes":{ + "account_number": "4248" + }, + "account_number": "424" + }, + "Représentants du personnel":{ + "Délégués du personnel":{ + "account_number": "4251" + }, + "Syndicats et Comités d’entreprises, d’Établissement":{ + "account_number": "4252" + }, + "Autres représentants du personnel":{ + "account_number": "4258" + }, + "account_number": "425" + }, + "Personnel, participation aux bénéfices et au capital":{ + "Participation aux bénéfices":{ + "account_number": "4261" + }, + "Participation au capital":{ + "account_number": "4264" + }, + "account_number": "426" + }, + "Personnel dépôts":{ + "account_number": "427" + }, + "Personnel, charges à payer et produits à recevoir":{ + "Dettes provisionnées pour congés à payer":{ + "account_number": "4281" + }, + "Autres charges à payer":{ + "account_number": "4286" + }, + "Produits à recevoir":{ + "account_number": "4287" + }, + "account_number": "428" + } + }, + "43-Organismes sociaux (PASSIF)":{ + "438-Organismes sociaux, charges à payer et produits à recevoir":{ + "Charges sociales sur gratifications à payer":{ + "account_number": "4381" + }, + "Charges sociales sur congés à payer":{ + "account_number": "4382" + }, + "Autres charges à payer":{ + "account_number": "4386" + } + } + }, + "44-État et collectivités publiques (PASSIF)":{ + "État, impôt sur les bénéfices":{ + "account_number": "441" + }, + "État, autres impôts et taxes":{ + "Impôts et taxes d’État":{ + "account_number": "4421" + }, + "Impôts et taxes pour les collectivités publiques":{ + "account_number": "4422" + }, + "Impôts et taxes recouvrables sur des obligataires":{ + "account_number": "4423" + }, + "Impôts et taxes recouvrables sur des associés":{ + "account_number": "4424" + }, + "Droits de douane":{ + "account_number": "4426" + }, + "Autres impôts et taxes":{ + "account_number": "4428" + }, + "account_number": "442" + }, + "État, TVA due ou crédit de TVA":{ + "État, TVA due":{ + "account_number": "4441" + }, + "État, crédit de TVA à reporter":{ + "account_number": "4449" + }, + "account_number": "444" + }, + "État, autres taxes sur le chiffre d’affaires":{ + "account_number": "446" + }, + "État, impôts retenus à la source":{ + "Impôt Général sur le revenu":{ + "account_number": "4471" + }, + "Impôts sur salaires":{ + "account_number": "4472" + }, + "Contribution nationale":{ + "account_number": "4473" + }, + "Contribution nationale de solidarité":{ + "account_number": "4474" + }, + "Autres impôts et contributions":{ + "account_number": "4478" + }, + "account_number": "447" + } + }, + "46-Apporteurs, associés et groupe (PASSIF)":{ + "461-Apporteurs, opérations sur le capital (PASSIF)":{ + "Apporteurs, apports en nature":{ + "account_number": "4611" + }, + "Apporteurs, apports en numéraire":{ + "account_number": "4612" + }, + "Apporteurs, versements reçus sur augmentation de capital":{ + "account_number": "4615" + }, + "Apporteurs, versements anticipés":{ + "account_number": "4616" + }, + "Apporteurs défaillants":{ + "account_number": "4617" + }, + "Apporteurs, capital à rembourser":{ + "account_number": "4619" + } + }, + "462-Associés, comptes courants":{ + "Principal":{ + "account_number": "4621" + }, + "Intérêts courus":{ + "account_number": "4626" + } + }, + "463-Associés, opérations faites en commun et GIE":{ + "Opérations courantes":{ + "account_number": "4631" + }, + "Intérêts courus":{ + "account_number": "4636" + } + }, + "Associés, dividendes à payer":{ + "account_number": "465" + }, + "Groupe, comptes courants":{ + "account_number": "466" + } + }, + "47-Débiteurs et créditeurs divers (PASSIF)":{ + "471-Débiteurs et créditeurs divers":{ + "Débiteurs divers":{ + "account_number": "4711" + }, + "Créditeurs divers":{ + "account_number": "4712" + }, + "Obligataires":{ + "account_number": "4713" + }, + "Rémunérations d’administrateurs":{ + "account_number": "4715" + }, + "Compte d’affacturage":{ + "account_number": "4716" + }, + "Débiteurs divers retenues de garantie":{ + "account_number": "4717" + }, + "Apport, compte de fusion et opérations assimilées":{ + "account_number": "4718" + }, + "Bons de souscription d’actions et d’obligations":{ + "account_number": "4719" + } + }, + "474-Compte de répartition périodique des charges et des produits (PASSIF)":{ + "Compte de répartition périodique des charges":{ + "account_number": "4746" + } + }, + "475-Compte transitoire, ajustement spécial lié à la révision du SYSCOHADA (PASSIF)":{ + "Compte passif":{ + "account_number": "4752" + } + }, + "Produits constatés d’avance":{ + "account_number": "477" + }, + "479-Écarts de conversion passif":{ + "Augmentation des créances d’exploitation":{ + "account_number": "4791" + }, + "Augmentation des créances financières":{ + "account_number": "4792" + }, + "Diminution des dettes d’exploitation":{ + "account_number": "4793" + }, + "Diminution des dettes financières":{ + "account_number": "4794" + }, + "Différences d’évaluation sur instruments de trésorerie":{ + "account_number": "4797" + }, + "Différences compensées par couverture de change":{ + "account_number": "4798" + } + } + }, + "48-Créances et dettes hors activités ordinaires (HAO) (PASSIF)":{ + "Fournisseurs d’investissements":{ + "Immobilisations incorporelles":{ + "account_number": "4811" + }, + "Immobilisations corporelles":{ + "account_number": "4812" + }, + "Versements restant à effectuer sur titres de participation et titres immobilisés non libérés":{ + "account_number": "4813" + }, + "Réserve de propriété":{ + "account_number": "4816" + }, + "Retenues de garantie":{ + "account_number": "4817" + }, + "Factures non parvenues":{ + "account_number": "4818" + }, + "account_number": "481" + }, + "Fournisseurs d’investissements, effets à payer":{ + "Immobilisations incorporelles":{ + "account_number": "4821" + }, + "Immobilisations corporelles":{ + "account_number": "4822" + }, + "account_number": "482" + }, + "Autres dettes hors activités ordinaires (HAO)":{ + "Produits":{ + "account_number": "4887" + }, + "account_number": "484" + } + }, + "root_type":"Liability" + }, + "Comptes de trésorerie":{ + "Titres de placement":{ + "Titres du trésor et bons de caisse à court terme":{ + "Titres du Trésor à court terme":{ + "account_number": "5011" + }, + "Titres d’organismes financiers":{ + "account_number": "5012" + }, + "Bons de caisse à court terme":{ + "account_number": "5013" + }, + "Frais d’acquisition des titres de trésor et bons de caisse":{ + "account_number": "5016" + }, + "account_number": "501" + }, + "Actions":{ + "Actions ou parts propres":{ + "account_number": "5021" + }, + "Actions cotées":{ + "account_number": "5022" + }, + "Actions non cotées":{ + "account_number": "5023" + }, + "Actions démembrées (certificats d’investissement, droits de vote)":{ + "account_number": "5024" + }, + "Autres actions":{ + "account_number": "5025" + }, + "Frais d’acquisition des actions":{ + "account_number": "5026" + }, + "account_number": "502" + }, + "Obligations":{ + "Obligations émises par la société et rachetées par elle":{ + "account_number": "5031" + }, + "Obligations cotées":{ + "account_number": "5032" + }, + "Obligations non cotées":{ + "account_number": "5033" + }, + "Autres obligations":{ + "account_number": "5035" + }, + "Frais d’acquisition des obligations":{ + "account_number": "5036" + }, + "account_number": "503" + }, + "Bons de souscription":{ + "Bons de souscription d’actions":{ + "account_number": "5042" + }, + "Bons de souscription d’obligations":{ + "account_number": "5043" + }, + "account_number": "504" + }, + "Titres négociables hors région":{ + "account_number": "505" + }, + "Intérêts courus":{ + "Titres du Trésor et bons de caisse à court terme":{ + "account_number": "5061" + }, + "Actions":{ + "account_number": "5062" + }, + "Obligations":{ + "account_number": "5063" + }, + "account_number": "506" + }, + "Autres titres de placement et créances assimilées":{ + "account_number": "508" + }, + "account_number": "50" + }, + "Valeurs à encaisser":{ + "Effets à encaisser":{ + "account_number": "511" + }, + "Effets à l’encaissement":{ + "account_number": "512" + }, + "Chèques à encaisser":{ + "account_number": "513" + }, + "Chèques à l’encaissement":{ + "account_number": "514" + }, + "Cartes de crédit à encaisser":{ + "account_number": "515" + }, + "Autres valeurs à l’encaissement":{ + "Warrants":{ + "account_number": "5181" + }, + "Billets de fonds":{ + "account_number": "5182" + }, + "Chèques de voyage":{ + "account_number": "5185" + }, + "Coupons échus":{ + "account_number": "5186" + }, + "Intérêts échus des obligations":{ + "account_number": "5187" + }, + "account_number": "518" + }, + "account_number": "51" + }, + "Banques":{ + "Banques locales":{ + "Banques en monnaie nationale":{ + "account_type": "Bank", + "account_number": "5211" + }, + "Banques en devises":{ + "account_type": "Bank", + "account_number": "5215" + }, + "account_type": "Bank", + "account_number": "521" + }, + "Banques autres États région":{ + "account_number": "522" + }, + "Banques autres États zone monétaire":{ + "account_number": "523" + }, + "Banques hors zone monétaire":{ + "account_number": "524" + }, + "Banques dépôt à terme":{ + "account_number": "525" + }, + "Banques, intérêts courus":{ + "Banque, intérêts courus, charges à payer":{ + "account_number": "5261" + }, + "Banque, intérêts courus, produits à recevoir":{ + "account_number": "5267" + }, + "account_number": "526" + }, + "account_number": "52" + }, + "Établissements financiers et assimilés":{ + "Chèques postaux":{ + "account_number": "531" + }, + "Trésor":{ + "account_number": "532" + }, + "Sociétés de gestion et d’intermédiation (SGI)":{ + "account_number": "533" + }, + "Établissements financiers, intérêts courus":{ + "account_number": "536" + }, + "Autres organismes financiers":{ + "account_number": "538" + }, + "account_number": "53" + }, + "Instruments de trésorerie":{ + "Options de taux d’intérêt":{ + "account_number": "541" + }, + "Options de taux de change":{ + "account_number": "542" + }, + "Options de taux boursiers":{ + "account_number": "543" + }, + "Instruments de marchés à terme":{ + "account_number": "544" + }, + "Avoirs d’or et autres métaux précieux":{ + "account_number": "545" + }, + "account_number": "54" + }, + "Instruments de monnaie électronique":{ + "Monnaie électronique carte carburant":{ + "account_number": "551" + }, + "Monnaie électronique téléphone portable":{ + "account_number": "552" + }, + "Monnaie électronique carte péage":{ + "account_number": "553" + }, + "Porte-monnaie électronique":{ + "account_number": "554" + }, + "Autres instruments de monnaies électroniques":{ + "account_number": "558" + }, + "account_number": "55" + }, + "Banques, crédits de trésorerie et d’escompte":{ + "Crédits de trésorerie":{ + "account_number": "561" + }, + "Escompte de crédits de campagne":{ + "account_number": "564" + }, + "Escompte de crédits ordinaires":{ + "account_number": "565" + }, + "Banques, crédits de trésorerie, intérêts courus":{ + "account_number": "566" + }, + "account_number": "56" + }, + "Caisse":{ + "Caisse siège social":{ + "Caisse en monnaie nationale":{ + "account_number": "5711" + }, + "Caisse en devises":{ + "account_number": "5712" + }, + "account_number": "571" + }, + "Caisse succursale A":{ + "En monnaie nationale":{ + "account_number": "5721" + }, + "En devises":{ + "account_number": "5722" + }, + "account_number": "572" + }, + "Caisse succursale B":{ + "En monnaie nationale":{ + "account_number": "5731" + }, + "En devises":{ + "account_number": "5732" + }, + "account_number": "573" + }, + "account_number": "57" + }, + "Régies d’avances, accréditifs et virements internes":{ + "Régies d’avance":{ + "account_number": "581" + }, + "Accréditifs":{ + "account_number": "582" + }, + "Virements de fonds":{ + "account_number": "585" + }, + "Autres virements internes":{ + "account_number": "588" + }, + "account_number": "58" + }, + "Dépréciations et provisions pour risque à court terme":{ + "Dépréciations des titres de placement":{ + "account_number": "590" + }, + "Dépréciations des titres et valeurs à encaisser":{ + "account_number": "591" + }, + "Dépréciations des comptes banques":{ + "account_number": "592" + }, + "Dépréciations des comptes établissements financiers et assimilés":{ + "account_number": "593" + }, + "Dépréciations des comptes d’instruments de trésorerie":{ + "account_number": "594" + }, + "Provisions pour risque à court terme à caractère financier":{ + "account_number": "599" + }, + "account_number": "59" + }, + "root_type":"Asset", + "account_number": "5" + }, + "Comptes de charges des activités ordinaires":{ + "Achats et variations de stocks":{ + "Achats de marchandises":{ + "Dans la Région":{ + "account_number": "6011" + }, + "Hors Région":{ + "account_number": "6012" + }, + "Aux entités du groupe dans la Région":{ + "account_number": "6013" + }, + "Aux entités du groupe hors Région":{ + "account_number": "6014" + }, + "Frais sur achats":{ + "account_number": "6015" + }, + "Rabais, remises et ristournes obtenus (non ventilés)":{ + "account_number": "6019" + }, + "account_number": "601" + }, + "Achats de matières premières et fournitures liées":{ + "Dans la Région":{ + "account_number": "6021" + }, + "Hors Région":{ + "account_number": "6022" + }, + "Aux entités du groupe dans la Région":{ + "account_number": "6023" + }, + "Aux entités du groupe hors Région":{ + "account_number": "6024" + }, + "Frais sur achats":{ + "account_number": "6025" + }, + "Rabais, remises et ristournes obtenus (non ventilés)":{ + "account_number": "6029" + }, + "account_number": "602" + }, + "Variations des stocks de biens achetés":{ + "Variations des stocks de marchandises":{ + "account_number": "6031" + }, + "Variations des stocks de matières premières et fournitures liées":{ + "account_number": "6032" + }, + "Variations des stocks d’autres approvisionnements":{ + "account_number": "6033" + }, + "account_number": "603" + }, + "Achats stockés de matières et fournitures consommables":{ + "Matières consommables":{ + "account_number": "6041" + }, + "Matières combustibles":{ + "account_number": "6042" + }, + "Produits d’entretien":{ + "account_number": "6043" + }, + "Fournitures d’atelier et d’usine":{ + "account_number": "6044" + }, + "Frais sur achat":{ + "account_number": "6045" + }, + "Fournitures de magasin":{ + "account_number": "6046" + }, + "Fournitures de bureau":{ + "account_number": "6047" + }, + "Rabais, remises et ristournes obtenus (non ventilés)":{ + "account_number": "6049" + }, + "account_number": "604" + }, + "Autres achats":{ + "Fournitures non stockables Eau":{ + "account_number": "6051" + }, + "Fournitures non stockables Électricité":{ + "account_number": "6052" + }, + "Fournitures non stockables Autres énergies":{ + "account_number": "6053" + }, + "Fournitures d’entretien non stockables":{ + "account_number": "6054" + }, + "Fournitures de bureau non stockables":{ + "account_number": "6055" + }, + "Achats de petit matériel et outillage":{ + "account_number": "6056" + }, + "Achats d’études et prestations de services":{ + "account_number": "6057" + }, + "Achats de travaux, matériels et équipements":{ + "account_number": "6058" + }, + "Rabais, remises et ristournes obtenus (non ventilés)":{ + "account_number": "6059" + }, + "account_number": "605" + }, + "Achats d’emballages":{ + "Emballages perdus":{ + "account_number": "6081" + }, + "Emballages récupérables non identifiables":{ + "account_number": "6082" + }, + "Emballages à usage mixte":{ + "account_number": "6083" + }, + "Frais sur achats":{ + "account_number": "6085" + }, + "Rabais, remises et ristournes obtenus (non ventilés)":{ + "account_number": "6089" + }, + "account_number": "608" + }, + "account_number": "60" + }, + "Transports":{ + "Transports sur ventes":{ + "account_number": "612" + }, + "Transports pour le compte de tiers":{ + "account_number": "613" + }, + "Transports du personnel":{ + "account_number": "614" + }, + "Transports de plis":{ + "account_number": "616" + }, + "Autres frais de transport":{ + "Voyages et déplacements":{ + "account_number": "6181" + }, + "Transports entre établissements ou chantiers":{ + "account_number": "6182" + }, + "Transports administratifs":{ + "account_number": "6183" + }, + "account_number": "618" + }, + "account_number": "61" + }, + "Services extérieurs":{ + "Sous-traitance générale":{ + "account_number": "621" + }, + "Locations, charges locatives":{ + "Locations de terrains":{ + "account_number": "6221" + }, + "Locations de bâtiments":{ + "account_number": "6222" + }, + "Locations de matériels et outillages":{ + "account_number": "6223" + }, + "Malis sur emballages":{ + "account_number": "6224" + }, + "Locations d’emballages":{ + "account_number": "6225" + }, + "Fermages et loyers du foncier":{ + "account_number": "6226" + }, + "Locations et charges locatives diverses":{ + "account_number": "6228" + }, + "account_number": "622" + }, + "Redevances de location acquisition":{ + "Crédit-bail immobilier":{ + "account_number": "6232" + }, + "Crédit-bail mobilier":{ + "account_number": "6233" + }, + "Location-vente":{ + "account_number": "6234" + }, + "Autres contrats de location acquisition":{ + "account_number": "6238" + }, + "account_number": "623" + }, + "Entretien, réparations, remise en état et maintenance":{ + "Entretien et réparations des biens immobiliers":{ + "account_number": "6241" + }, + "Entretien et réparations des biens mobiliers":{ + "account_number": "6242" + }, + "Maintenance":{ + "account_number": "6243" + }, + "Charges de démantèlement et remise en état":{ + "account_number": "6244" + }, + "Autres entretiens et réparations":{ + "account_number": "6248" + }, + "account_number": "624" + }, + "Primes d’assurance":{ + "Assurances multirisques":{ + "account_number": "6251" + }, + "Assurances matériel de transport":{ + "account_number": "6252" + }, + "Assurances risques d’exploitation":{ + "account_number": "6253" + }, + "Assurances responsabilité du producteur":{ + "account_number": "6254" + }, + "Assurances insolvabilité clients":{ + "account_number": "6255" + }, + "Assurances transport sur ventes":{ + "account_number": "6257" + }, + "Autres primes d’assurances":{ + "account_number": "6258" + }, + "account_number": "625" + }, + "Études, recherches et documentation":{ + "Études et recherches":{ + "account_number": "6261" + }, + "Documentation générale":{ + "account_number": "6265" + }, + "Documentation technique":{ + "account_number": "6266" + }, + "account_number": "626" + }, + "Publicité, publications, relations publiques":{ + "Annonces, insertions":{ + "account_number": "6271" + }, + "Catalogues, imprimés publicitaires":{ + "account_number": "6272" + }, + "Échantillons":{ + "account_number": "6273" + }, + "Foires et expositions":{ + "account_number": "6274" + }, + "Publications":{ + "account_number": "6275" + }, + "Cadeaux à la clientèle":{ + "account_number": "6276" + }, + "Frais de colloques, séminaires, conférences":{ + "account_number": "6277" + }, + "Autres charges de publicité et relations publiques":{ + "account_number": "6278" + }, + "account_number": "627" + }, + "Frais de télécommunications":{ + "Frais de téléphone":{ + "account_number": "6281" + }, + "Frais de télex":{ + "account_number": "6282" + }, + "Frais de télécopie":{ + "account_number": "6283" + }, + "Autres frais de télécommunications":{ + "account_number": "6288" + }, + "account_number": "628" + }, + "account_number": "62" + }, + "Autres services extérieurs":{ + "Frais bancaires":{ + "Frais sur titres (vente, garde)":{ + "account_number": "6311" + }, + "Frais sur effets":{ + "account_number": "6312" + }, + "Location de coffres":{ + "account_number": "6313" + }, + "Commissions d’affacturage":{ + "account_number": "6314" + }, + "Commissions sur cartes de crédit":{ + "account_number": "6315" + }, + "Frais d’émission d’emprunts":{ + "account_number": "6316" + }, + "Frais sur instruments monnaie électronique":{ + "account_number": "6317" + }, + "Autres frais bancaires":{ + "account_number": "6318" + }, + "account_number": "631" + }, + "Rémunérations d’intermédiaires et de conseils":{ + "Commissions et courtages sur ventes":{ + "account_number": "6322" + }, + "Honoraires des professions réglementées":{ + "account_number": "6324" + }, + "Frais d’actes et de contentieux":{ + "account_number": "6325" + }, + "Rémunérations d’affacturage":{ + "account_number": "6326" + }, + "Rémunérations des autres prestataires de services":{ + "account_number": "6327" + }, + "Divers frais":{ + "account_number": "6328" + }, + "account_number": "632" + }, + "Frais de formation du personnel":{ + "account_number": "633" + }, + "Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires":{ + "Redevances pour brevets, licences":{ + "account_number": "6342" + }, + "Redevances pour logiciels":{ + "account_number": "6343" + }, + "Redevances pour marques":{ + "account_number": "6344" + }, + "Redevances pour sites internet":{ + "account_number": "6345" + }, + "Redevances pour concessions, droits et valeurs similaires":{ + "account_number": "6346" + }, + "account_number": "634" + }, + "Cotisations":{ + "Cotisations":{ + "account_number": "6351" + }, + "Concours divers":{ + "account_number": "6358" + }, + "account_number": "635" + }, + "Rémunérations de personnel extérieur à l’entité":{ + "Personnel intérimaire":{ + "account_number": "6371" + }, + "Personnel détaché ou prêté à l’entité":{ + "account_number": "6372" + }, + "account_number": "637" + }, + "Autres charges externes":{ + "Frais de recrutement du personnel":{ + "account_number": "6381" + }, + "Frais de déménagement":{ + "account_number": "6382" + }, + "Réceptions":{ + "account_number": "6383" + }, + "Missions":{ + "account_number": "6384" + }, + "Charges de copropriété":{ + "account_number": "6385" + }, + "account_number": "638" + }, + "account_number": "63" + }, + "Impôts et taxes":{ + "Impôts et taxes directs":{ + "Impôts fonciers et taxes annexes":{ + "account_number": "6411" + }, + "Patentes, licences et taxes annexes":{ + "account_number": "6412" + }, + "Taxes sur appointements et salaires":{ + "account_number": "6413" + }, + "Taxes d’apprentissage":{ + "account_number": "6414" + }, + "Formation professionnelle continue":{ + "account_number": "6415" + }, + "Autres impôts et taxes directs":{ + "account_number": "6418" + }, + "account_number": "641" + }, + "Impôts et taxes indirects":{ + "account_number": "645" + }, + "Droits d’enregistrement":{ + "Droits de mutation":{ + "account_number": "6461" + }, + "Droits de timbre":{ + "account_number": "6462" + }, + "Taxes sur les véhicules de société":{ + "account_number": "6463" + }, + "Vignettes":{ + "account_number": "6464" + }, + "Autres droits":{ + "account_number": "6468" + }, + "account_number": "646" + }, + "Pénalités, amendes fiscales":{ + "Pénalités d’assiette, impôts directs":{ + "account_number": "6471" + }, + "Pénalités d’assiette, impôts indirects":{ + "account_number": "6472" + }, + "Pénalités de recouvrement, impôts directs":{ + "account_number": "6473" + }, + "Pénalités de recouvrement, impôts indirects":{ + "account_number": "6474" + }, + "Autres pénalités et amendes fiscales":{ + "account_number": "6478" + }, + "account_number": "647" + }, + "Autres impôts et taxes":{ + "account_number": "648" + }, + "account_number": "64" + }, + "Autres charges":{ + "Pertes sur créances clients et autres débiteurs":{ + "Clients":{ + "account_number": "6511" + }, + "Autres débiteurs":{ + "account_number": "6515" + }, + "account_number": "651" + }, + "Quote-part de résultat sur opérations faites en commun":{ + "Quote-part transférée de bénéfices (comptabilité du gérant)":{ + "account_number": "6521" + }, + "Pertes imputées par transfert (comptabilité des associés non gérants)":{ + "account_number": "6525" + }, + "account_number": "652" + }, + "Valeurs comptables des cessions courantes d’immobilisations":{ + "Immobilisations incorporelles":{ + "account_number": "6541" + }, + "Immobilisations corporelles":{ + "account_number": "6542" + }, + "account_number": "654" + }, + "Perte de change sur créances et dettes commerciale":{ + "account_number": "656" + }, + "Pénalités et amendes pénales":{ + "account_number": "657" + }, + "Charges diverses":{ + "Indemnités de fonction et autres rémunérations d’administrateurs":{ + "account_number": "6581" + }, + "Dons":{ + "account_number": "6582" + }, + "Mécénat":{ + "account_number": "6583" + }, + "Autres charges diverses":{ + "account_number": "6588" + }, + "account_number": "658" + }, + "Charges pour dépréciations et provisions pour risques à court terme d’exploitation":{ + "Sur risques à court terme":{ + "account_number": "6591" + }, + "Sur stocks":{ + "account_number": "6593" + }, + "Sur créances":{ + "account_number": "6594" + }, + "Autres charges pour dépréciations et provisions pour risques à court terme":{ + "account_number": "6598" + }, + "account_number": "659" + }, + "account_number": "65" + }, + "Charges de personnel":{ + "Rémunérations directes versées au personnel national":{ + "Appointements salaires et commissions":{ + "account_number": "6611" + }, + "Primes et gratifications":{ + "account_number": "6612" + }, + "Congés payés":{ + "account_number": "6613" + }, + "Indemnités de préavis, de licenciement et de recherche d’embauche":{ + "account_number": "6614" + }, + "Indemnités de maladie versées aux travailleurs":{ + "account_number": "6615" + }, + "Supplément familial":{ + "account_number": "6616" + }, + "Avantages en nature":{ + "account_number": "6617" + }, + "Autres rémunérations directes":{ + "account_number": "6618" + }, + "account_number": "661" + }, + "Rémunérations directes versées au personnel non national":{ + "Appointements salaires et commissions":{ + "account_number": "6621" + }, + "Primes et gratifications":{ + "account_number": "6622" + }, + "Congés payés":{ + "account_number": "6623" + }, + "Indemnités de préavis, de licenciement et de recherche d’embauche":{ + "account_number": "6624" + }, + "Indemnités de maladie versées aux travailleurs":{ + "account_number": "6625" + }, + "Supplément familial":{ + "account_number": "6626" + }, + "Avantages en nature":{ + "account_number": "6627" + }, + "Autres rémunérations directes":{ + "account_number": "6628" + }, + "account_number": "662" + }, + "Indemnités forfaitaires versées au personnel":{ + "Indemnités de logement":{ + "account_number": "6631" + }, + "Indemnités de représentation":{ + "account_number": "6632" + }, + "Indemnités d’expatriation":{ + "account_number": "6633" + }, + "Indemnités de transport":{ + "account_number": "6634" + }, + "Autres indemnités et avantages divers":{ + "account_number": "6638" + }, + "account_number": "663" + }, + "Charges sociales":{ + "Charges sociales sur rémunération du personnel national":{ + "account_number": "6641" + }, + "Charges sociales sur rémunération du personnel non national":{ + "account_number": "6642" + }, + "account_number": "664" + }, + "Rémunérations et charges sociales de l’exploitant individuel":{ + "Rémunération du travail de l’exploitant":{ + "account_number": "6661" + }, + "Charges sociales":{ + "account_number": "6662" + }, + "account_number": "666" + }, + "Rémunération transférée de personnel extérieur":{ + "Personnel intérimaire":{ + "account_number": "6671" + }, + "Personnel détaché ou prêté à l’entité":{ + "account_number": "6672" + }, + "account_number": "667" + }, + "Autres charges sociales":{ + "Versements aux syndicats et comités d’entreprise, d’établissement":{ + "account_number": "6681" + }, + "Versements aux comités d’hygiène et de sécurité":{ + "account_number": "6682" + }, + "Versements et contributions aux autres œuvres sociales":{ + "account_number": "6683" + }, + "Médecine du travail et pharmacie":{ + "account_number": "6684" + }, + "Assurances et organismes de santé":{ + "account_number": "6685" + }, + "Assurances retraite et fonds de pension":{ + "account_number": "6686" + }, + "Majorations et pénalités sociales":{ + "account_number": "6687" + }, + "Charges sociales diverses":{ + "account_number": "6688" + }, + "account_number": "668" + }, + "account_number": "66" + }, + "Frais financiers et charges assimilées":{ + "Intérêts des emprunts":{ + "Emprunts obligataires":{ + "account_number": "6711" + }, + "Emprunts auprès des établissements de crédit":{ + "account_number": "6712" + }, + "Dettes liées à des participations":{ + "account_number": "6713" + }, + "Primes de remboursement des obligations":{ + "account_number": "6714" + }, + "account_number": "671" + }, + "Intérêts dans loyers de location acquisition":{ + "Intérêts dans loyers de location acquisition / crédit-bail immobilier":{ + "account_number": "6722" + }, + "Intérêts dans loyers de location acquisition / crédit-bail mobilier":{ + "account_number": "6723" + }, + "Intérêts dans loyers de location acquisition / location-vente":{ + "account_number": "6724" + }, + "Intérêts dans loyers des autres locations acquisition":{ + "account_number": "6728" + }, + "account_number": "672" + }, + "Escomptes accordés":{ + "account_number": "673" + }, + "Autres intérêts":{ + "Avances reçues et dépôts créditeurs":{ + "account_number": "6741" + }, + "Comptes courants bloqués":{ + "account_number": "6742" + }, + "Intérêts sur obligations cautionnées":{ + "account_number": "6743" + }, + "Intérêts sur dettes commerciales":{ + "account_number": "6744" + }, + "Intérêts bancaires et sur opérations de financement (escompte...)":{ + "account_number": "6745" + }, + "Intérêts sur dettes diverses":{ + "account_number": "6748" + }, + "account_number": "674" + }, + "Escomptes des effets de commerce":{ + "account_number": "675" + }, + "Pertes de change financières":{ + "account_number": "676" + }, + "Pertes sur titres de placement":{ + "Pertes sur cessions de titres de placement":{ + "account_number": "6771" + }, + "Mali provenant d’attribution gratuite d’actions au personnel salarié et aux dirigeants":{ + "account_number": "6772" + }, + "account_number": "677" + }, + "Pertes et charges sur risques financiers":{ + "Sur rentes viagères":{ + "account_number": "6781" + }, + "Sur opérations financières":{ + "account_number": "6782" + }, + "Sur instruments de trésorerie":{ + "account_number": "6784" + }, + "account_number": "678" + }, + "Charges pour dépréciations et provisions pour risques à court terme financières":{ + "Sur risques financiers":{ + "account_number": "6791" + }, + "Sur titres de placement":{ + "account_number": "6795" + }, + "Autres charges pour dépréciations et provisions pour risques à court terme financières":{ + "account_number": "6798" + }, + "account_number": "679" + }, + "account_number": "67" + }, + "Dotations aux amortissements":{ + "Dotations aux amortissements d’exploitation":{ + "Dotations aux amortissements des immobilisations incorporelles":{ + "account_number": "6812" + }, + "Dotations aux amortissements des immobilisations corporelles":{ + "account_number": "6813" + }, + "account_number": "681" + }, + "account_number": "68" + }, + "Dotations aux provisions et aux dépréciations":{ + "Dotations aux provisions et aux dépréciations d’exploitation":{ + "Dotations aux provisions pour risques et charges":{ + "account_number": "6911" + }, + "Dotations aux dépréciations des immobilisations incorporelles":{ + "account_number": "6913" + }, + "Dotations aux dépréciations des immobilisations corporelles":{ + "account_number": "6914" + }, + "account_number": "691" + }, + "Dotations aux provisions et aux dépréciations financières":{ + "Dotations aux provisions pour risques et charges":{ + "account_number": "6971" + }, + "Dotations aux dépréciations des immobilisations financières":{ + "account_number": "6972" + }, + "account_number": "697" + }, + "account_number": "69" + }, + "root_type":"Expense", + "account_number": "6" + }, + "Comptes de produits des activités ordinaires":{ + "Ventes":{ + "Ventes de marchandises":{ + "Dans la Région":{ + "account_number": "7011" + }, + "Hors Région":{ + "account_number": "7012" + }, + "Aux entités du groupe dans la Région":{ + "account_number": "7013" + }, + "Aux entités du groupe hors Région":{ + "account_number": "7014" + }, + "Sur internet":{ + "account_number": "7015" + }, + "Rabais, remises, ristournes accordés (non ventilés)":{ + "account_number": "7019" + }, + "account_number": "701" + }, + "Ventes de produits finis":{ + "Dans la Région":{ + "account_number": "7021" + }, + "Hors Région":{ + "account_number": "7022" + }, + "Aux entités du groupe dans la Région":{ + "account_number": "7023" + }, + "Aux entités du groupe hors Région":{ + "account_number": "7024" + }, + "Sur internet":{ + "account_number": "7025" + }, + "Rabais, remises, ristournes accordés (non ventilés)":{ + "account_number": "7029" + }, + "account_number": "702" + }, + "Ventes de produits intermédiaires":{ + "Dans la Région":{ + "account_number": "7031" + }, + "Hors Région":{ + "account_number": "7032" + }, + "Aux entités du groupe dans la Région":{ + "account_number": "7033" + }, + "Aux entités du groupe hors Région":{ + "account_number": "7034" + }, + "Sur internet":{ + "account_number": "7035" + }, + "Rabais, remises, ristournes accordés (non ventilés)":{ + "account_number": "7039" + }, + "account_number": "703" + }, + "Ventes de produits résiduels":{ + "Dans la Région":{ + "account_number": "7041" + }, + "Hors Région":{ + "account_number": "7042" + }, + "Aux entités du groupe dans la Région":{ + "account_number": "7043" + }, + "Aux entités du groupe hors Région":{ + "account_number": "7044" + }, + "Sur internet":{ + "account_number": "7045" + }, + "Rabais, remises, ristournes accordés (non ventilés)":{ + "account_number": "7049" + }, + "account_number": "704" + }, + "Travaux facturés":{ + "Dans la Région":{ + "account_number": "7051" + }, + "Hors Région":{ + "account_number": "7052" + }, + "Aux entités du groupe dans la Région":{ + "account_number": "7053" + }, + "Aux entités du groupe hors Région":{ + "account_number": "7054" + }, + "Sur internet":{ + "account_number": "7055" + }, + "Rabais, remises, ristournes accordés (non ventilés)":{ + "account_number": "7059" + }, + "account_number": "705" + }, + "Services vendus":{ + "Dans la Région":{ + "account_number": "7061" + }, + "Hors Région":{ + "account_number": "7062" + }, + "Aux entités du groupe dans la Région":{ + "account_number": "7063" + }, + "Aux entités du groupe hors Région":{ + "account_number": "7064" + }, + "Sur internet":{ + "account_number": "7065" + }, + "Rabais, remises, ristournes accordés (non ventilés)":{ + "account_number": "7069" + }, + "account_number": "706" + }, + "Produits accessoires":{ + "Ports, emballages perdus et autres frais facturés":{ + "account_number": "7071" + }, + "Commissions et courtages":{ + "account_number": "7072" + }, + "Locations":{ + "account_number": "7073" + }, + "Bonis sur reprises et cessions d’emballages":{ + "account_number": "7074" + }, + "Mise à disposition de personnel":{ + "account_number": "7075" + }, + "Redevances pour brevets, logiciels, marques et droits similaires":{ + "account_number": "7076" + }, + "Services exploités dans l’intérêt du personnel":{ + "account_number": "7077" + }, + "Autres produits accessoires":{ + "account_number": "7078" + }, + "account_number": "707" + }, + "account_number": "70" + }, + "Subventions d’exploitation":{ + "Sur produits à l’exportation":{ + "account_number": "711" + }, + "Sur produits à l’importation":{ + "account_number": "712" + }, + "Sur produits de péréquation":{ + "account_number": "713" + }, + "Indemnités et subventions d’exploitation (entité agricole)":{ + "account_number": "714" + }, + "Autres subventions d’exploitation":{ + "Versées par l’État et les collectivités publiques":{ + "account_number": "7181" + }, + "Versées par les organismes internationaux":{ + "account_number": "7182" + }, + "Versées par des tiers":{ + "account_number": "7183" + }, + "account_number": "718" + }, + "account_number": "71" + }, + "Production immobilisée":{ + "Immobilisations incorporelles":{ + "account_number": "721" + }, + "Immobilisations corporelles":{ + "Immobilisations corporelles (hors actifs biologiques)":{ + "account_number": "7221" + }, + "Immobilisations corporelles (actifs biologiques)":{ + "account_number": "7222" + }, + "account_number": "722" + }, + "Production auto-consommée":{ + "account_number": "724" + }, + "Immobilisations financières":{ + "account_number": "726" + }, + "account_number": "72" + }, + "Variations des stocks de biens et de services produits":{ + "Variations des stocks de produits en cours":{ + "Produits en cours":{ + "account_number": "7341" + }, + "Travaux en cours":{ + "account_number": "7342" + }, + "account_number": "734" + }, + "Variations des en-cours de services":{ + "Études en cours":{ + "account_number": "7351" + }, + "Prestations de services en cours":{ + "account_number": "7352" + }, + "account_number": "735" + }, + "Variations des stocks de produits finis":{ + "account_number": "736" + }, + "Variations des stocks de produits intermédiaires et résiduels":{ + "Produits intermédiaires":{ + "account_number": "7371" + }, + "Produits résiduels":{ + "account_number": "7372" + }, + "account_number": "737" + }, + "account_number": "73" + }, + "Autres produits":{ + "Profits sur créances clients et autres débiteurs":{ + "account_number": "751" + }, + "Quote-part de résultat sur opérations faites en commun":{ + "Quote-part transférée de pertes (comptabilité du gérant)":{ + "account_number": "7521" + }, + "Bénéfices attribués par transfert (comptabilité des associés non gérants)":{ + "account_number": "7525" + }, + "account_number": "752" + }, + "Produits des cessions courantes d’immobilisations":{ + "Immobilisations incorporelles":{ + "account_number": "7541" + }, + "Immobilisations corporelles":{ + "account_number": "7542" + }, + "account_number": "754" + }, + "Gains de change sur créances et dettes commerciales":{ + "account_number": "756" + }, + "Produits divers":{ + "Indemnités de fonction et autres rémunérations d’administrateurs":{ + "account_number": "7581" + }, + "Indemnités d’assurances reçues":{ + "account_number": "7582" + }, + "Autres produits divers":{ + "account_number": "7588" + }, + "account_number": "758" + }, + "Reprises de charges pour dépréciations et provisions pour risques à court terme d’exploitation":{ + "Sur risques à court terme":{ + "account_number": "7591" + }, + "Sur stocks":{ + "account_number": "7593" + }, + "Sur créances":{ + "account_number": "7594" + }, + "Sur autres charges pour dépréciations et provisions pour risques à court terme d’exploitation":{ + "account_number": "7598" + }, + "account_number": "759" + }, + "account_number": "75" + }, + "Revenus financiers et produits assimilés":{ + "Intérêts de prêts et créances diverses":{ + "Intérêts de prêts":{ + "account_number": "7712" + }, + "Intérêts sur créances diverses":{ + "account_number": "7713" + }, + "account_number": "771" + }, + "Revenus de participations et autres titres immobilisés":{ + "Revenus des titres de participation":{ + "account_number": "7721" + }, + "Revenus autres titres immobilisés":{ + "account_number": "7722" + }, + "account_number": "772" + }, + "Escomptes obtenus":{ + "account_number": "773" + }, + "Revenus de placement":{ + "Revenus des obligations":{ + "account_number": "7745" + }, + "Revenus des titres de placement":{ + "account_number": "7746" + }, + "account_number": "774" + }, + "Intérêts dans loyers de location acquisition":{ + "account_number": "775" + }, + "Gains de change financiers":{ + "account_number": "776" + }, + "Gains sur cessions de titres de placement":{ + "account_number": "777" + }, + "Gains sur risques financiers":{ + "Sur rentes viagères":{ + "account_number": "7781" + }, + "Sur opérations financières":{ + "account_number": "7782" + }, + "Sur instruments de trésorerie":{ + "account_number": "7784" + }, + "account_number": "778" + }, + "Reprises de charges pour dépréciations et provisions à court terme financières":{ + "Sur risques financiers":{ + "account_number": "7791" + }, + "Sur titres de placement":{ + "account_number": "7795" + }, + "Sur autres charges pour dépréciations et provisions pour risques à court terme financières":{ + "account_number": "7798" + }, + "account_number": "779" + }, + "account_number": "77" + }, + "Transferts de charges":{ + "Transferts de charges d’exploitation":{ + "account_number": "781" + }, + "Transferts de charges financières":{ + "account_number": "787" + }, + "account_number": "78" + }, + "Reprises de provisions, de dépréciations et autres":{ + "Reprises de provisions et dépréciations d’exploitation":{ + "Pour risques et charges":{ + "account_number": "7911" + }, + "Des immobilisations incorporelles":{ + "account_number": "7913" + }, + "Des immobilisations corporelles":{ + "account_number": "7914" + }, + "account_number": "791" + }, + "Reprises de provisions et dépréciations financières":{ + "Pour risques et charges":{ + "account_number": "7971" + }, + "Des immobilisations financières":{ + "account_number": "7972" + }, + "account_number": "797" + }, + "Reprises d’amortissements":{ + "account_number": "798" + }, + "Reprises de subventions d’investissement":{ + "account_number": "799" + }, + "account_number": "79" + }, + "root_type":"Income", + "account_number": "7" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)":{ + "Valeurs comptables des cessions d’immobilisations":{ + "Immobilisations incorporelles":{ + "account_number": "811" + }, + "Immobilisations corporelles":{ + "account_number": "812" + }, + "Immobilisations financières":{ + "account_number": "816" + }, + "account_number": "81" + }, + "Charges hors activités ordinaires":{ + "Charges HAO constatées":{ + "account_number": "831" + }, + "Charges liées aux opérations de restructuration":{ + "account_number": "833" + }, + "Pertes sur créances HAO":{ + "account_number": "834" + }, + "Dons et libéralités accordés":{ + "account_number": "835" + }, + "Abandons de créances consentis":{ + "account_number": "836" + }, + "Charges liées aux opérations de liquidation":{ + "account_number": "837" + }, + "Charges pour dépréciations et provisions pour risques à court terme HAO":{ + "account_number": "839" + }, + "account_number": "83" + }, + "Dotations hors activités ordinaires":{ + "Dotations aux provisions réglementées":{ + "account_number": "851" + }, + "Dotations aux amortissements HAO":{ + "account_number": "852" + }, + "Dotations aux dépréciations HAO":{ + "account_number": "853" + }, + "Dotations aux provisions pour risques et charges HAO":{ + "account_number": "854" + }, + "Autres dotations HAO":{ + "account_number": "858" + }, + "account_number": "85" + }, + "Participation des travailleurs":{ + "Participation légale aux bénéfices":{ + "account_number": "871" + }, + "Participation contractuelle aux bénéfices":{ + "account_number": "874" + }, + "Autres participations":{ + "account_number": "878" + }, + "account_number": "87" + }, + "Impôts sur le résultat":{ + "Impôts sur les bénéfices de l’exercice":{ + "Activités exercées dans l’État":{ + "account_number": "8911" + }, + "Activités exercées dans les autres États de la Région":{ + "account_number": "8912" + }, + "Activités exercées hors Région":{ + "account_number": "8913" + }, + "account_number": "891" + }, + "Rappel d’impôts sur résultats antérieurs":{ + "account_number": "892" + }, + "Impôt minimum forfaitaire IMF":{ + "account_number": "895" + }, + "Dégrèvements et annulations d’impôts sur résultats antérieurs":{ + "Dégrèvements":{ + "account_number": "8991" + }, + "Annulations pour pertes rétroactives":{ + "account_number": "8994" + }, + "account_number": "899" + }, + "account_number": "89" + }, + "root_type":"Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)":{ + "Produits des cessions d’immobilisations":{ + "Immobilisations incorporelles":{ + "account_number": "821" + }, + "Immobilisations corporelles":{ + "account_number": "822" + }, + "Immobilisations financières":{ + "account_number": "826" + }, + "account_number": "82" + }, + "Produits hors activités ordinaires":{ + "Produits HAO constatés":{ + "account_number": "841" + }, + "Produits liés aux opérations de restructuration":{ + "account_number": "843" + }, + "Indemnités et subventions HAO (entité agricole)":{ + "account_number": "844" + }, + "Dons et libéralités obtenus":{ + "account_number": "845" + }, + "Abandons de créances obtenus":{ + "account_number": "846" + }, + "Produits liés aux opérations de liquidation":{ + "account_number": "847" + }, + "Transferts de charges HAO":{ + "account_number": "848" + }, + "Reprises de charges pour dépréciations et provisions pour risques à court terme HAO":{ + "account_number": "849" + }, + "account_number": "84" + }, + "Reprises de charges, provisions et dépréciations HAO":{ + "Reprises de provisions réglementées":{ + "account_number": "861" + }, + "Reprises d’amortissements HAO":{ + "account_number": "862" + }, + "Reprises de dépréciations HAO":{ + "account_number": "863" + }, + "Reprises de provisions pour risques et charges HAO":{ + "account_number": "864" + }, + "Autres reprises HAO":{ + "account_number": "868" + }, + "account_number": "86" + }, + "Subventions d’équilibre":{ + "État":{ + "account_number": "881" + }, + "Collectivités publiques":{ + "account_number": "884" + }, + "Groupe":{ + "account_number": "886" + }, + "Autres":{ + "account_number": "888" + }, + "account_number": "88" + }, + "root_type":"Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/td_plan_comptable.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/td_plan_comptable.json new file mode 100644 index 00000000000..f57a98345da --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/td_plan_comptable.json @@ -0,0 +1,1919 @@ +{ + "country_code": "td", + "name": "Syscohada - Plan Comptable", + "tree": { + "1-Comptes de ressources durables": { + "10-Capital": { + "101-Capital social": { + "1011-Capital souscrit, non appel\u00e9": {}, + "1012-Capital souscrit, appel\u00e9, non vers\u00e9": {}, + "1013-Capital souscrit, appel\u00e9, vers\u00e9, non amorti": {}, + "1014-Capital souscrit, appel\u00e9, vers\u00e9, amorti": {}, + "1018-Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": {} + }, + "102-Capital par dotation": { + "1021-Dotation initiale": {}, + "1022-Dotations compl\u00e9mentaires": {}, + "1028-Autres dotations": {} + }, + "103-Capital personnel": {}, + "104-Compte de l\u2019exploitant": { + "1041-Apports temporaires": {}, + "1042-Op\u00e9rations courantes": {}, + "1043-R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": {}, + "1047-Pr\u00e9l\u00e8vements d\u2019autoconsommation": {}, + "1048-Autres pr\u00e9l\u00e8vements": {} + }, + "105-Primes li\u00e9es au capital social": { + "1051-Primes d\u2019\u00e9mission": {}, + "1052-Primes d\u2019apport": {}, + "1053-Primes de fusion": {}, + "1054-Primes de conversion": {}, + "1058-Autres primes": {} + }, + "106-\u00c9carts de r\u00e9\u00e9valuation": { + "1061-\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": {}, + "1062-\u00c9carts de r\u00e9\u00e9valuation libre": {} + }, + "109-Apporteurs, capital souscrit, non appel\u00e9": {} + }, + "11-R\u00e9serves": { + "111-R\u00e9serve l\u00e9gale": {}, + "112-R\u00e9serves statutaires ou contractuelles": {}, + "113-R\u00e9serves r\u00e9glement\u00e9es": { + "1131-R\u00e9serves de plus-values nettes \u00e0 long terme": {}, + "1132-R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {}, + "1133-R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": {}, + "1134-R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": {}, + "1135-Autres r\u00e9serves r\u00e9glement\u00e9es": {} + }, + "118-Autres r\u00e9serves": { + "1181-R\u00e9serves facultatives": {}, + "1188-R\u00e9serves diverses": {} + } + }, + "12-Report \u00e0 nouveau": { + "121-Report \u00e0 nouveau cr\u00e9diteur": {}, + "129-Report \u00e0 nouveau d\u00e9biteur": { + "1291-Perte nette \u00e0 reporter": {}, + "1292-Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": {} + } + }, + "13-R\u00e9sultat net de l\u2019exercice": { + "130-R\u00e9sultat en instance d\u2019affectation": { + "1301-R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": {}, + "1309-R\u00e9sultat en instance d\u2019affectation : perte": {} + }, + "131-R\u00e9sultat net : b\u00e9n\u00e9fice": {}, + "132-Marge commerciale (MC)": {}, + "133-Valeur ajout\u00e9e (VA)": {}, + "134-Exc\u00e9dent brut d\u2019exploitation (EBE)": {}, + "135-R\u00e9sultat d\u2019exploitation (RE)": {}, + "136-R\u00e9sultat financier (RF)": {}, + "137-R\u00e9sultat des activit\u00e9s ordinaires (RAO)": {}, + "138-R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "1381-R\u00e9sultat de fusion": {}, + "1382-R\u00e9sultat d\u2019apport partiel d\u2019actif": {}, + "1383-R\u00e9sultat de scission": {}, + "1384-R\u00e9sultat de liquidation": {} + }, + "139-R\u00e9sultat net : perte": {} + }, + "14-Subventions d\u2019investissement": { + "141-Subventions d\u2019\u00e9quipement": { + "1411-\u00c9tat": {}, + "1412-R\u00e9gions": {}, + "1413-D\u00e9partements": {}, + "1414-Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": {}, + "1415-Entit\u00e9s publiques ou mixtes": {}, + "1416-Entit\u00e9s et organismes priv\u00e9s": {}, + "1417-Organismes internationaux": {}, + "1418-Autres": {} + }, + "148-Autres subventions d\u2019investissement": {} + }, + "15-Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "151-Amortissements d\u00e9rogatoires": {}, + "152-Plus-values de cession \u00e0 r\u00e9investir": {}, + "153-Fonds r\u00e9glement\u00e9s": { + "1531-Fonds National": {}, + "1532-Pr\u00e9l\u00e8vement pour le Budget": {} + }, + "154-Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": {}, + "155-Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "1551-Reconstitution des gisements miniers et p\u00e9troliers": {} + }, + "156-Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "1561-Hausse de prix": {}, + "1562-Fluctuation des cours": {} + }, + "157-Provisions pour investissement": {}, + "158-Autres provisions et fonds r\u00e9glement\u00e9s": {} + }, + "16-Emprunts et dettes assimil\u00e9es": { + "161-Emprunts obligataires": { + "1611-Emprunts obligataires ordinaires": {}, + "1612-Emprunts obligataires convertibles en actions": {}, + "1613-Emprunts obligataires remboursables en actions": {}, + "1618-Autres emprunts obligataires": {} + }, + "162-Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "163-Avances re\u00e7ues de l\u2019\u00c9tat": {}, + "164-Avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "165-D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "1651-D\u00e9p\u00f4ts": {}, + "1652-Cautionnements": {} + }, + "166-Int\u00e9r\u00eats courus": { + "1661-Sur emprunts obligataires": {}, + "1662-Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "1663-Sur avances re\u00e7ues de l\u2019\u00c9tat": {}, + "1664-Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "1665-Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": {}, + "1667-Sur avances assorties de conditions particuli\u00e8res": {}, + "1668-Sur autres emprunts et dettes": {} + }, + "167-Avances assorties de conditions particuli\u00e8res": { + "1671-Avances bloqu\u00e9es pour augmentation du capital": {}, + "1672-Avances conditionn\u00e9es par l\u2019\u00c9tat": {}, + "1673-Avances conditionn\u00e9es par les autres organismes africains": {}, + "1674-Avances conditionn\u00e9es par les organismes internationaux": {} + }, + "168-Autres emprunts et dettes": { + "1681-Rentes viag\u00e8res capitalis\u00e9es": {}, + "1682-Billets de fonds": {}, + "1683-Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": {}, + "1684-Emprunts participatifs": {}, + "1685-Participation des travailleurs aux b\u00e9n\u00e9fices": {}, + "1686-Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": {} + } + }, + "17-Dettes de location acquisition": { + "172-Dettes de location acquisition / cr\u00e9dit bail immobilier": {}, + "173-Dettes de location acquisition / cr\u00e9dit bail mobilier": {}, + "174-Dettes de location acquisition / location de vente": {}, + "176-Int\u00e9r\u00eats courus": { + "1762-Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": {}, + "1763-Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": {}, + "1764-Sur dettes de location acquisition / location-vente": {}, + "1768-Sur autres dettes de location acquisition": {} + }, + "178-Autres dettes de location acquisition": {} + }, + "18-Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "181-Dettes li\u00e9es \u00e0 des participations": { + "1811-Dettes li\u00e9es \u00e0 des participations (groupe)": {}, + "1812-Dettes li\u00e9es \u00e0 des participations (hors groupe)": {} + }, + "182-Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "183-Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": {}, + "184-Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "185-Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "186-Comptes de liaison charges": {}, + "187-Comptes de liaison produits": {}, + "188-Comptes de liaison des soci\u00e9t\u00e9s en participation": {} + }, + "19-Provisions pour risques et charges": { + "191-Provisions pour litiges": {}, + "192-Provisions pour garanties donn\u00e9es aux clients": {}, + "193-Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": {}, + "194-Provisions pour pertes de change": {}, + "195-Provisions pour imp\u00f4ts": {}, + "196-Provisions pour pensions et obligations similaires": { + "1961-Provisions pour pensions et obligations similaires engagement de retraite": {}, + "1962-Actif du r\u00e9gime de retraite": {} + }, + "197-Provisions pour restructuration": {}, + "198-Autres provisions pour risques et charges": { + "1981-Provisions pour amendes et p\u00e9nalit\u00e9s": {}, + "1983-Provisions pour propre assureur": {}, + "1984-Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "1985-Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": {}, + "1988-Provisions pour divers risques et charges": {} + } + }, + "root_type": "Equity" + }, + "2-Comptes d\u2019actif immobilis\u00e9": { + "21-Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "211-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "212-Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "2121-Brevets": { + "account_type": "Fixed Asset" + }, + "2122-Licences": { + "account_type": "Fixed Asset" + }, + "2123-Concessions de service public": { + "account_type": "Fixed Asset" + }, + "2128-Autres concessions et droits similaires": { + "account_type": "Fixed Asset" + } + }, + "213-Logiciels et sites internet": { + "account_type": "Fixed Asset", + "2131-Logiciels": { + "account_type": "Fixed Asset" + }, + "2132-Sites internet": { + "account_type": "Fixed Asset" + } + }, + "214-Marques": { + "account_type": "Fixed Asset" + }, + "215-Fonds commercial": { + "account_type": "Fixed Asset" + }, + "216-Droit au bail": { + "account_type": "Fixed Asset" + }, + "217-Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset" + }, + "218-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "2181-Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset" + }, + "2182-Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset" + }, + "2183-Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset" + }, + "2184-Co\u00fbts des franchises": { + "account_type": "Fixed Asset" + }, + "2188-Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset" + } + }, + "219-Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "2191-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "2193-Logiciels et internet": { + "account_type": "Fixed Asset" + }, + "2198-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset" + } + } + }, + "22-Terrains": { + "account_type": "Fixed Asset", + "221-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "2211-Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset" + }, + "2212-Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset" + }, + "2218-Autres terrains": { + "account_type": "Fixed Asset" + } + }, + "222-Terrains nus": { + "account_type": "Fixed Asset", + "2221-Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset" + }, + "2228-Autres terrains nus": { + "account_type": "Fixed Asset" + } + }, + "223-Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "2231-Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset" + }, + "2232-Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset" + }, + "2234-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset" + }, + "2235-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset" + }, + "2238-Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset" + } + }, + "224-Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "2241-Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset" + }, + "2245-Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset" + }, + "2248-Autres travaux": { + "account_type": "Fixed Asset" + } + }, + "225-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "2251-Carri\u00e8res": { + "account_type": "Fixed Asset" + } + }, + "226-Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "2261-Parkings": { + "account_type": "Fixed Asset" + } + }, + "227-Terrains mis en concession": { + "account_type": "Fixed Asset" + }, + "228-Autres terrains": { + "account_type": "Fixed Asset", + "2281-Terrains immeubles de placement": { + "account_type": "Fixed Asset" + }, + "2285-Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset" + }, + "2286-Terrains de location acquisition": { + "account_type": "Fixed Asset" + }, + "2288-Divers terrains": { + "account_type": "Fixed Asset" + } + }, + "229-Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "2291-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset" + }, + "2292-Terrains nus": { + "account_type": "Fixed Asset" + }, + "2295-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset" + }, + "2298-Autres terrains": { + "account_type": "Fixed Asset" + } + } + }, + "23-B\u00e2timents, installations techniques et agencements": { + "231-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "2311-B\u00e2timents industriels": {}, + "2312-B\u00e2timents agricoles": {}, + "2313-B\u00e2timents administratifs et commerciaux": {}, + "2314-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2315-B\u00e2timents immeubles de placement": {}, + "2316-B\u00e2timents de location acquisition": {} + }, + "232-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "2321-B\u00e2timents industriels": {}, + "2322-B\u00e2timents agricoles": {}, + "2323-B\u00e2timents administratifs et commerciaux": {}, + "2324-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2325-B\u00e2timents immeubles de placement": {}, + "2326-B\u00e2timents de location acquisition": {} + }, + "233-Ouvrages d\u2019infrastructure": { + "2331-Voies de terre": {}, + "2332-Voies de fer": {}, + "2333-Voies d\u2019eau": {}, + "2334-Barrages, Digues": {}, + "2335-Pistes d\u2019a\u00e9rodrome": {}, + "2338-Autres ouvrages d\u2019infrastructures": {} + }, + "234-Am\u00e9nagements, agencements et installations techniques": { + "2341-Installations complexes sp\u00e9cialis\u00e9es sur sol propre": {}, + "2342-Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": {}, + "2343-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": {}, + "2344-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": {}, + "2345-Am\u00e9nagements et agencements des b\u00e2timents": {} + }, + "235-Am\u00e9nagements de bureaux": { + "2351-Installations g\u00e9n\u00e9rales": {}, + "2358-Autres am\u00e9nagements de bureaux": {} + }, + "237-B\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "238-Autres installations et agencements": {}, + "239-B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "2391-B\u00e2timents en cours": {}, + "2392-Installations en cours": {}, + "2393-Ouvrages d\u2019infrastructure en cours": {}, + "2394-Am\u00e9nagements et agencements et installations techniques en cours": {}, + "2395-Am\u00e9nagements de bureaux en cours": {}, + "2398-Autres installations et agencements en cours": {} + } + }, + "24-Mat\u00e9riel, mobilier et actifs biologiques": { + "241-Mat\u00e9riel et outillage industriel et commercial": { + "2411-Mat\u00e9riel industriel": {}, + "2412-Outillage industriel": {}, + "2413-Mat\u00e9riel commercial": {}, + "2414-Outillage commercial": {}, + "2416-Mat\u00e9riel & outillage industriel et commercial de location-acquisition": {} + }, + "242-Mat\u00e9riel et outillage agricole": { + "2421-Mat\u00e9riel agricole": {}, + "2422-Outillage agricole": {}, + "2426-Mat\u00e9riel & outillage agricole de location-acquisition": {} + }, + "243-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "244-Mat\u00e9riel et mobilier": { + "2441-Mat\u00e9riel de bureau": {}, + "2442-Mat\u00e9riel informatique": {}, + "2443-Mat\u00e9riel bureautique": {}, + "2444-Mobilier de bureau": {}, + "2445-Mat\u00e9riel et mobilier immeubles de placement": {}, + "2446-Mat\u00e9riel et mobilier de location acquisition": {}, + "2447-Mat\u00e9riel et mobilier des logements du personnel": {} + }, + "245-Mat\u00e9riel de transport": { + "2451-Mat\u00e9riel automobile": {}, + "2452-Mat\u00e9riel ferroviaire": {}, + "2453-Mat\u00e9riel fluvial, lagunaire": {}, + "2454-Mat\u00e9riel naval": {}, + "2455-Mat\u00e9riel a\u00e9rien": {}, + "2456-Mat\u00e9riel de transport de location-acquisition": {}, + "2457-Mat\u00e9riel hippomobile": {}, + "2458-Autres mat\u00e9riels de transport": {} + }, + "246-Actifs biologiques": { + "2461-Cheptel, animaux de trait": {}, + "2462-Cheptel, animaux reproducteurs": {}, + "2463-Animaux de garde": {}, + "2465-Plantations agricoles": {}, + "2468-Autres actifs biologiques": {} + }, + "247-Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "2471-Agencements et am\u00e9nagements du mat\u00e9riel": {}, + "2472-Agencements et am\u00e9nagements des actifs biologiques": {}, + "2478-Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": {} + }, + "248-Autres mat\u00e9riels et mobiliers": { + "2481-Collections et \u0153uvres d\u2019art": {}, + "2488-Divers mat\u00e9riels mobiliers": {} + }, + "249-Mat\u00e9riels et actifs biologiques en cours": { + "2491-Mat\u00e9riel et outillage industriel et commercial": {}, + "2492-Mat\u00e9riel et outillage agricole": {}, + "2493-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2494-Mat\u00e9riel et mobilier de bureau": {}, + "2495-Mat\u00e9riel de transport": {}, + "2496-Actifs biologiques": {}, + "2497-Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": {}, + "2498-Autres mat\u00e9riels et actifs biologiques en cours": {} + } + }, + "25-Avances et acomptes vers\u00e9s sur immobilisations": { + "251-Avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "252-Avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "26-Titres de participation": { + "261-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "262-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "263-Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "265-Participations dans des organismes professionnels": {}, + "266-Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {}, + "268-Autres titres de participation": {} + }, + "27-Autres immobilisations financi\u00e8res": { + "271-Pr\u00eats et cr\u00e9ances": { + "2711-Pr\u00eats participatifs": {}, + "2712-Pr\u00eats aux associ\u00e9s": {}, + "2713-Billets de fonds": {}, + "2714-Titres pr\u00eat\u00e9s": {}, + "2718-Autres pr\u00eats et cr\u00e9ances": {} + }, + "272-Pr\u00eats au personnel": { + "2721-Pr\u00eats immobiliers": {}, + "2722-Pr\u00eats mobiliers et d\u2019installation": {}, + "2728-Autres pr\u00eats au personnel": {} + }, + "273-Cr\u00e9ances sur l\u2019\u00c9tat": { + "2731-Retenues de garantie": {}, + "2733-Fonds r\u00e9glement\u00e9": {}, + "2734-Cr\u00e9ances sur le conc\u00e9dant": {}, + "2738-Autres cr\u00e9ances sur l\u2019\u00c9tat": {} + }, + "274-Titres immobilis\u00e9s": { + "2741-Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": {}, + "2742-Titres participatifs": {}, + "2743-Certificats d\u2019investissement": {}, + "2744-Parts de fonds commun de placement (FCP)": {}, + "2745-Obligations": {}, + "2746-Actions ou parts propres": {}, + "2748-Autres titres immobilis\u00e9s": {} + }, + "275-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "2751-D\u00e9p\u00f4ts pour loyers d\u2019avance": {}, + "2752-D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": {}, + "2753-D\u00e9p\u00f4ts pour l\u2019eau": {}, + "2754-D\u00e9p\u00f4ts pour le gaz": {}, + "2755-D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": {}, + "2756-Cautionnements sur march\u00e9s publics": {}, + "2757-Cautionnements sur autres op\u00e9rations": {}, + "2758-Autres d\u00e9p\u00f4ts et cautionnements": {} + }, + "276-Int\u00e9r\u00eats courus": { + "2761-Pr\u00eats et cr\u00e9ances non commerciales": {}, + "2762-Pr\u00eats au personnel": {}, + "2763-Cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2764-Titres immobilis\u00e9s": {}, + "2765-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2767-Cr\u00e9ances rattach\u00e9es \u00e0 des participations": {}, + "2768-Immobilisations financi\u00e8res diverses": {} + }, + "277-Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "2771-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": {}, + "2772-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": {}, + "2773-Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "2774-Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {} + }, + "278-Immobilisations financi\u00e8res diverses": { + "2781-Cr\u00e9ances diverses groupe": {}, + "2782-Cr\u00e9ances diverses hors groupe": {}, + "2784-Banques d\u00e9p\u00f4ts \u00e0 terme": {}, + "2785-Or et m\u00e9taux pr\u00e9cieux": {}, + "2788-Autres immobilisations financi\u00e8res": {} + } + }, + "28-Amortissements": { + "account_type": "Accumulated Depreciation", + "281-Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "2811-Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation" + }, + "2812-Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation" + }, + "2813-Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation" + }, + "2814-Amortissements des marques": { + "account_type": "Accumulated Depreciation" + }, + "2815-Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation" + }, + "2816-Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation" + }, + "2817-Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation" + }, + "2818-Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation" + } + }, + "282-Amortissements des terrains": { + "2824-Amortissements des travaux de mise en valeur des terrains": {} + }, + "283-Amortissements des b\u00e2timents, installations techniques et agencements": { + "2831-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2832-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2833-Amortissements des ouvrages d\u2019infrastructure": {}, + "2834-Amortissements des am\u00e9nagements, agencements et installations techniques": {}, + "2835-Amortissements des am\u00e9nagements de bureaux": {}, + "2837-Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2838-Amortissements des autres installations et agencements": {} + }, + "284-Amortissements du mat\u00e9riel": { + "2841-Amortissements du mat\u00e9riel et outillage industriel et commercial": {}, + "2842-Amortissements du mat\u00e9riel et outillage agricole": {}, + "2843-Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2844-Amortissements du mat\u00e9riel et mobilier": {}, + "2845-Amortissements du mat\u00e9riel de transport": {}, + "2846-Amortissements des actifs biologiques": {}, + "2847-Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2848-Amortissements des autres mat\u00e9riels": {} + } + }, + "29-D\u00e9pr\u00e9ciations des immobilisations": { + "291-D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "2911-D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": {}, + "2912-D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": {}, + "2913-D\u00e9pr\u00e9ciations des logiciels et sites internet": {}, + "2914-D\u00e9pr\u00e9ciations des marques": {}, + "2915-D\u00e9pr\u00e9ciations du fonds commercial": {}, + "2916-D\u00e9pr\u00e9ciations du droit au bail": {}, + "2917-D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": {}, + "2918-D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": {}, + "2919-D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": {} + }, + "292-D\u00e9pr\u00e9ciations des terrains": { + "2921-D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": {}, + "2922-D\u00e9pr\u00e9ciations des terrains nus": {}, + "2923-D\u00e9pr\u00e9ciations des terrains b\u00e2tis": {}, + "2924-D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": {}, + "2925-D\u00e9pr\u00e9ciations des terrains de gisement": {}, + "2926-D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": {}, + "2927-D\u00e9pr\u00e9ciations des terrains mis en concession": {}, + "2928-D\u00e9pr\u00e9ciations des autres terrains": {}, + "2929-D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": {} + }, + "293-D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "2931-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2932-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2933-D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": {}, + "2934-D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": {}, + "2935-D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": {}, + "2937-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2938-D\u00e9pr\u00e9ciations des autres installations et agencements": {}, + "2939-D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": {} + }, + "294-D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "2941-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": {}, + "2942-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": {}, + "2943-D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2944-D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": {}, + "2945-D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": {}, + "2946-D\u00e9pr\u00e9ciations des actifs biologiques": {}, + "2947-D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2948-D\u00e9pr\u00e9ciations des autres mat\u00e9riels": {}, + "2949-D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": {} + }, + "295-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "2951-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "2952-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "296-D\u00e9pr\u00e9ciations des titres de participation": { + "2961-D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "2962-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "2963-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "2965-D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": {}, + "2966-D\u00e9pr\u00e9ciations des parts dans des GIE": {}, + "2968-D\u00e9pr\u00e9ciations des autres titres de participation": {} + }, + "297-D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "2971-D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": {}, + "2972-D\u00e9pr\u00e9ciations des pr\u00eats au personnel": {}, + "2973-D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2974-D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": {}, + "2975-D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2977-D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": {}, + "2978-D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": {} + } + }, + "root_type": "Asset" + }, + "3-Comptes de Stocks": { + "31-Marchandises": { + "311-Marchandises A": { + "3111-Marchandises A1": {}, + "3112-Marchandises A2": {} + }, + "312-Marchandises B": { + "3121-Marchandises B1": {}, + "3122-Marchandises B2": {} + }, + "313-Actifs biologiques": { + "3131-Animaux": {}, + "3132-V\u00e9g\u00e9taux": {} + }, + "318-Marchandises hors activit\u00e9s ordinaires (HAO)": {} + }, + "32-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "321-Mati\u00e8res A": {}, + "322-Mati\u00e8res B": {}, + "323-Fournitures (A, B)": {} + }, + "33-Autres approvisionnements": { + "331-Mati\u00e8res consommables": {}, + "332-Fournitures d\u2019atelier et d\u2019usine": {}, + "333-Fournitures de magasin": {}, + "334-Fournitures de bureau": {}, + "335-Emballages": { + "3351-Emballages perdus": {}, + "3352-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "3353-Emballages \u00e0 usage mixte": {}, + "3358-Autres emballages": {} + }, + "338-Autres mati\u00e8res": {} + }, + "34-Produits en cours": { + "341-Produits en cours": { + "3411-Produits en cours P1": {}, + "3412-Produits en cours P2": {} + }, + "342-Travaux en cours": { + "3421-Travaux en cours T1": {}, + "3422-Travaux en cours T2": {} + }, + "343-Produits interm\u00e9diaires en cours": { + "3431-Produits interm\u00e9diaires A": {}, + "3432-Produits interm\u00e9diaires B": {} + }, + "344-Produits r\u00e9siduels en cours": { + "3441-Produits r\u00e9siduels A": {}, + "3442-Produits r\u00e9siduels B": {} + }, + "345-Actifs biologiques en cours": { + "3451-Animaux": {}, + "3452-V\u00e9g\u00e9taux": {} + } + }, + "35-Services en cours": { + "351-\u00c9tudes en cours": { + "3511-\u00c9tudes en cours E1": {}, + "3512-\u00c9tudes en cours E2": {} + }, + "352-Prestations de services en cours": { + "3521-Prestations de services S1": {}, + "3522-Prestations de services S2": {} + } + }, + "36-Produits finis": { + "361-Produits finis A": {}, + "362-Produits finis B": {}, + "363-Actifs biologiques": { + "3631-Animaux": {}, + "3632-V\u00e9g\u00e9taux": {}, + "3638-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "37-Produits interm\u00e9diaires et r\u00e9siduels": { + "371-Produits interm\u00e9diaires": { + "3711-Produits interm\u00e9diaires A": {}, + "3712-Produits interm\u00e9diaires B": {} + }, + "372-Produits r\u00e9siduels": { + "3721-D\u00e9chets": {}, + "3722-Rebuts": {}, + "3723-Mati\u00e8res de R\u00e9cup\u00e9ration": {} + }, + "373-Actifs biologiques": { + "3731-Animaux": {}, + "3732-V\u00e9g\u00e9taux": {}, + "3738-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "38-Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "381-Marchandises en cours de route": {}, + "382-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": {}, + "383-Autres approvisionnements en cours de route": {}, + "386-Produits finis en cours de route": {}, + "387-Stock en consignation ou en d\u00e9p\u00f4t": { + "3871-Stock en consignation": {}, + "3872-Stock en d\u00e9p\u00f4t": {} + }, + "388-Stock provenant d\u2019immobilisations mises hors service ou au rebut": {} + }, + "39-D\u00e9pr\u00e9ciations des stocks et encours de production": { + "391-D\u00e9pr\u00e9ciations des stocks de marchandises": {}, + "392-D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "393-D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": {}, + "394-D\u00e9pr\u00e9ciations des productions en cours": {}, + "395-D\u00e9pr\u00e9ciations des services en cours": {}, + "396-D\u00e9pr\u00e9ciations des stocks de produits finis": {}, + "397-D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": {}, + "398-D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": {} + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "409-Fournisseurs d\u00e9biteurs": { + "4091-Fournisseurs Avances et acomptes vers\u00e9s": {}, + "4092-Fournisseurs Groupe avances et acomptes vers\u00e9s": {}, + "4093-Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": {}, + "4094-Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": {}, + "4098-Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": {} + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "411-Clients": { + "4111-Clients": { + "account_type": "Receivable" + }, + "4112-Clients groupe": { + "account_type": "Receivable" + }, + "4114-Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable" + }, + "4115-Clients, organismes internationaux": { + "account_type": "Receivable" + }, + "4116-Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable" + }, + "4117-Client, retenues de garantie": { + "account_type": "Receivable" + }, + "4118-Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "412-Clients, effets \u00e0 recevoir en portefeuille": { + "4121-Clients, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4122-Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4124-\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4125-Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "413-Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "4131-Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable" + }, + "4132-Clients, effets impay\u00e9s": { + "account_type": "Receivable" + }, + "4133-Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable" + }, + "4138-Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "414-Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "4141-Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4142-Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable" + }, + "4146-Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4147-Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "415-Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable" + }, + "416-Cr\u00e9ances clients litigieuses ou douteuses": { + "4161-Cr\u00e9ances litigieuses": { + "account_type": "Receivable" + }, + "4162-Cr\u00e9ances douteuses": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "418-Clients, produits \u00e0 recevoir": { + "4181-Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable" + }, + "4186-Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "421-Personnel, avances et acomptes": { + "4211-Personnel, avances": {}, + "4212-Personnel, acomptes": {}, + "4213-Frais avanc\u00e9s et fournitures au personnel": {} + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "4311-Prestations familiales": {}, + "4312-Accidents de travail": {}, + "4313-Caisse de retraite obligatoire": {}, + "4314-Caisse de retraite facultative": {}, + "4318-Autres cotisations sociales": {} + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "4331-Mutuelle": {}, + "4332-Assurances retraite": {}, + "4333-Assurances et organismes de sant\u00e9": {} + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4387-Produits \u00e0 recevoir": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "443-\u00c9tat, TVA factur\u00e9e": { + "4431-TVA factur\u00e9e sur ventes": {}, + "4432-TVA factur\u00e9e sur prestations de services": {}, + "4433-TVA factur\u00e9e sur travaux": {}, + "4434-TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": {}, + "4435-TVA sur factures \u00e0 \u00e9tablir": {} + }, + "445-\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "4451-TVA r\u00e9cup\u00e9rable sur immobilisations": {}, + "4452-TVA r\u00e9cup\u00e9rable sur achats": {}, + "4453-TVA r\u00e9cup\u00e9rable sur transport": {}, + "4454-TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": {}, + "4455-TVA r\u00e9cup\u00e9rable sur factures non parvenues": {}, + "4456-TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": {} + }, + "448-\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "4486-Charges \u00e0 payer": {}, + "4487-Produits \u00e0 recevoir": {} + }, + "449-\u00c9tat, cr\u00e9ances et dettes diverses": { + "4491-\u00c9tat, obligations cautionn\u00e9es": {}, + "4492-\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": {}, + "4493-\u00c9tat, fonds de dotation \u00e0 recevoir": {}, + "4494-\u00c9tat, subventions investissement \u00e0 recevoir": {}, + "4495-\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": {}, + "4496-\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": {}, + "4497-\u00c9tat, avances sur subventions": {}, + "4499-\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": {} + } + }, + "45-Organismes internationaux (ACTIF)": { + "451-Op\u00e9rations avec les organismes africains": {}, + "452-Op\u00e9rations avec les autres organismes internationaux": {}, + "458-Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "4581-Organismes internationaux, fonds de dotation \u00e0 recevoir": {}, + "4582-Organismes internationaux, subventions \u00e0 recevoir": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "4613-Apporteurs, capital appel\u00e9, non vers\u00e9": {}, + "4614-Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": {}, + "4618-Apporteurs, titres \u00e0 \u00e9changer": {} + }, + "467-Apporteurs, restant d\u00fb sur capital appel\u00e9": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "4721-Cr\u00e9ances sur cessions de titres de placement": {}, + "4726-Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": {} + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "4731-Mandants": {}, + "4732-Mandataires": {}, + "4733-Commettants": {}, + "4734-Commissionnaires": {}, + "4739-\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "4747-Compte de r\u00e9partition p\u00e9riodique des produits": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "4751-Compte actif": { + "account_type": "Temporary" + } + }, + "476-Charges constat\u00e9es d\u2019avance": {}, + "478-\u00c9carts de conversion actif": { + "4781-Diminution des cr\u00e9ances d\u2019exploitation": {}, + "4782-Diminution des cr\u00e9ances financi\u00e8res": {}, + "4783-Augmentation des dettes d\u2019exploitation": {}, + "4784-Augmentation des dettes financi\u00e8res": {}, + "4786-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4788-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "485-Cr\u00e9ances sur cessions d\u2019immobilisations": { + "4851-En compte, immobilisations incorporelles": {}, + "4852-En compte, immobilisations corporelles": {}, + "4853-Effets \u00e0 recevoir, immobilisations incorporelles": {}, + "4854-Effets \u00e0 recevoir, immobilisations corporelles": {}, + "4855-Effets escompt\u00e9s non \u00e9chus": {}, + "4857-Retenues de garantie": {}, + "4858-Factures \u00e0 \u00e9tablir": {} + }, + "488-Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": {} + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "491-D\u00e9pr\u00e9ciations des comptes clients": { + "4911-Cr\u00e9ances litigieuses": {}, + "4912-Cr\u00e9ances douteuses": {} + }, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {}, + "496-D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "4962-Associ\u00e9s, comptes courants": {}, + "4963-Associ\u00e9s, op\u00e9rations faites en commun": {}, + "4966-Groupe, comptes courants": {} + }, + "497-D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": {}, + "498-D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "4985-Cr\u00e9ances sur cessions d\u2019immobilisations": {}, + "4986-Cr\u00e9ances sur cessions de titres de placement": {}, + "4988-Autres cr\u00e9ances HAO": {} + }, + "499-Provisions pour risques \u00e0 court terme": { + "4991-Sur op\u00e9rations d\u2019exploitation": {}, + "4997-Sur op\u00e9rations financi\u00e8res": {}, + "4998-Sur op\u00e9rations HAO": {} + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "401-Fournisseurs, dettes en compte": { + "4011-Fournisseurs": { + "account_type": "Payable" + }, + "4012-Fournisseurs groupe": { + "account_type": "Payable" + }, + "4013-Fournisseurs sous-traitants": { + "account_type": "Payable" + }, + "4016-Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable" + }, + "4017-Fournisseur, retenues de garantie": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "402-Fournisseurs, effets \u00e0 payer": { + "4021-Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable" + }, + "4022-Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable" + }, + "4023-Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "404-Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "4041-Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4042-Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable" + }, + "4046-Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4047-Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "408-Fournisseurs, factures non parvenues": { + "4081-Fournisseurs": { + "account_type": "Stock Received But Not Billed" + }, + "4082-Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed" + }, + "4083-Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed" + }, + "4086-Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "419-Clients cr\u00e9diteurs": { + "4191-Clients, avances et acomptes re\u00e7us": {}, + "4192-Clients groupe, avances et acomptes re\u00e7us": {}, + "4194-Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": {}, + "4198-Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": {} + } + }, + "42-Personnel (PASSIF)": { + "422-Personnel, r\u00e9mun\u00e9rations dues": {}, + "423-Personnel, oppositions, saisies-arr\u00eats": { + "4231-Personnel, oppositions": {}, + "4232-Personnel, saisies-arr\u00eats": {}, + "4233-Personnel, avis \u00e0 tiers d\u00e9tenteur": {} + }, + "424-Personnel, \u0153uvres sociales internes": { + "4241-Assistance m\u00e9dicale": {}, + "4242-Allocations familiales": {}, + "4245-Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": {}, + "4248-Autres \u0153uvres sociales internes": {} + }, + "425-Repr\u00e9sentants du personnel": { + "4251-D\u00e9l\u00e9gu\u00e9s du personnel": {}, + "4252-Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": {}, + "4258-Autres repr\u00e9sentants du personnel": {} + }, + "426-Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "4261-Participation aux b\u00e9n\u00e9fices": {}, + "4264-Participation au capital": {} + }, + "427-Personnel d\u00e9p\u00f4ts": {}, + "428-Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "4281-Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": {}, + "4286-Autres charges \u00e0 payer": {}, + "4287-Produits \u00e0 recevoir": {} + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4381-Charges sociales sur gratifications \u00e0 payer": {}, + "4382-Charges sociales sur cong\u00e9s \u00e0 payer": {}, + "4386-Autres charges \u00e0 payer": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "441-\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": {}, + "442-\u00c9tat, autres imp\u00f4ts et taxes": { + "4421-Imp\u00f4ts et taxes d\u2019\u00c9tat": {}, + "4422-Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": {}, + "4423-Imp\u00f4ts et taxes recouvrables sur des obligataires": {}, + "4424-Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": {}, + "4426-Droits de douane": {}, + "4428-Autres imp\u00f4ts et taxes": {} + }, + "444-\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "4441-\u00c9tat, TVA due": {}, + "4449-\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": {} + }, + "446-\u00c9tat, autres taxes sur le chiffre d\u2019affaires": {}, + "447-\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "4471-Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": {}, + "4472-Imp\u00f4ts sur salaires": {}, + "4473-Contribution nationale": {}, + "4474-Contribution nationale de solidarit\u00e9": {}, + "4478-Autres imp\u00f4ts et contributions": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "4611-Apporteurs, apports en nature": {}, + "4612-Apporteurs, apports en num\u00e9raire": {}, + "4615-Apporteurs, versements re\u00e7us sur augmentation de capital": {}, + "4616-Apporteurs, versements anticip\u00e9s": {}, + "4617-Apporteurs d\u00e9faillants": {}, + "4619-Apporteurs, capital \u00e0 rembourser": {} + }, + "462-Associ\u00e9s, comptes courants": { + "4621-Principal": {}, + "4626-Int\u00e9r\u00eats courus": {} + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "4631-Op\u00e9rations courantes": {}, + "4636-Int\u00e9r\u00eats courus": {} + }, + "465-Associ\u00e9s, dividendes \u00e0 payer": {}, + "466-Groupe, comptes courants": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "4711-D\u00e9biteurs divers": {}, + "4712-Cr\u00e9diteurs divers": {}, + "4713-Obligataires": {}, + "4715-R\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "4716-Compte d\u2019affacturage": {}, + "4717-D\u00e9biteurs divers retenues de garantie": {}, + "4718-Apport, compte de fusion et op\u00e9rations assimil\u00e9es": {}, + "4719-Bons de souscription d\u2019actions et d\u2019obligations": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "4746-Compte de r\u00e9partition p\u00e9riodique des charges": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "4752-Compte passif": {} + }, + "477-Produits constat\u00e9s d\u2019avance": {}, + "479-\u00c9carts de conversion passif": { + "4791-Augmentation des cr\u00e9ances d\u2019exploitation": {}, + "4792-Augmentation des cr\u00e9ances financi\u00e8res": {}, + "4793-Diminution des dettes d\u2019exploitation": {}, + "4794-Diminution des dettes financi\u00e8res": {}, + "4797-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4798-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "481-Fournisseurs d\u2019investissements": { + "4811-Immobilisations incorporelles": {}, + "4812-Immobilisations corporelles": {}, + "4813-Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": {}, + "4816-R\u00e9serve de propri\u00e9t\u00e9": {}, + "4817-Retenues de garantie": {}, + "4818-Factures non parvenues": {} + }, + "482-Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "4821-Immobilisations incorporelles": {}, + "4822-Immobilisations corporelles": {} + }, + "484-Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "4887-Produits": {} + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (PASSIF)": { + "490-D\u00e9pr\u00e9ciations des comptes fournisseurs": {}, + "492-D\u00e9pr\u00e9ciations des comptes personnel": {}, + "493-D\u00e9pr\u00e9ciations des comptes organismes sociaux": {}, + "494-D\u00e9pr\u00e9ciations des comptes \u00c9tat et collectivit\u00e9s publiques": {}, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {} + }, + "root_type": "Liability" + }, + "5-Comptes de tr\u00e9sorerie": { + "50-Titres de placement": { + "501-Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "5011-Titres du Tr\u00e9sor \u00e0 court terme": {}, + "5012-Titres d\u2019organismes financiers": {}, + "5013-Bons de caisse \u00e0 court terme": {}, + "5016-Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": {} + }, + "502-Actions": { + "5021-Actions ou parts propres": {}, + "5022-Actions cot\u00e9es": {}, + "5023-Actions non cot\u00e9es": {}, + "5024-Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": {}, + "5025-Autres actions": {}, + "5026-Frais d\u2019acquisition des actions": {} + }, + "503-Obligations": { + "5031-Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": {}, + "5032-Obligations cot\u00e9es": {}, + "5033-Obligations non cot\u00e9es": {}, + "5035-Autres obligations": {}, + "5036-Frais d\u2019acquisition des obligations": {} + }, + "504-Bons de souscription": { + "5042-Bons de souscription d\u2019actions": {}, + "5043-Bons de souscription d\u2019obligations": {} + }, + "505-Titres n\u00e9gociables hors r\u00e9gion": {}, + "506-Int\u00e9r\u00eats courus": { + "5061-Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": {}, + "5062-Actions": {}, + "5063-Obligations": {} + }, + "508-Autres titres de placement et cr\u00e9ances assimil\u00e9es": {} + }, + "51-Valeurs \u00e0 encaisser": { + "511-Effets \u00e0 encaisser": {}, + "512-Effets \u00e0 l\u2019encaissement": {}, + "513-Ch\u00e8ques \u00e0 encaisser": {}, + "514-Ch\u00e8ques \u00e0 l\u2019encaissement": {}, + "515-Cartes de cr\u00e9dit \u00e0 encaisser": {}, + "518-Autres valeurs \u00e0 l\u2019encaissement": { + "5181-Warrants": {}, + "5182-Billets de fonds": {}, + "5185-Ch\u00e8ques de voyage": {}, + "5186-Coupons \u00e9chus": {}, + "5187-Int\u00e9r\u00eats \u00e9chus des obligations": {} + } + }, + "52-Banques": { + "521-Banques locales": { + "5211-Banques en monnaie nationale": { + "account_type": "Bank" + }, + "5215-Banques en devises": { + "account_type": "Bank" + }, + "account_type": "Bank" + }, + "522-Banques autres \u00c9tats r\u00e9gion": {}, + "523-Banques autres \u00c9tats zone mon\u00e9taire": {}, + "524-Banques hors zone mon\u00e9taire": {}, + "525-Banques d\u00e9p\u00f4t \u00e0 terme": {}, + "526-Banques, int\u00e9r\u00eats courus": { + "5261-Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": {}, + "5267-Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": {} + } + }, + "53-\u00c9tablissements financiers et assimil\u00e9s": { + "531-Ch\u00e8ques postaux": {}, + "532-Tr\u00e9sor": {}, + "533-Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": {}, + "536-\u00c9tablissements financiers, int\u00e9r\u00eats courus": {}, + "538-Autres organismes financiers": {} + }, + "54-Instruments de tr\u00e9sorerie": { + "541-Options de taux d\u2019int\u00e9r\u00eat": {}, + "542-Options de taux de change": {}, + "543-Options de taux boursiers": {}, + "544-Instruments de march\u00e9s \u00e0 terme": {}, + "545-Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": {} + }, + "55-Instruments de monnaie \u00e9lectronique": { + "551-Monnaie \u00e9lectronique carte carburant": {}, + "552-Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": {}, + "553-Monnaie \u00e9lectronique carte p\u00e9age": {}, + "554-Porte-monnaie \u00e9lectronique": {}, + "558-Autres instruments de monnaies \u00e9lectroniques": {} + }, + "56-Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "561-Cr\u00e9dits de tr\u00e9sorerie": {}, + "564-Escompte de cr\u00e9dits de campagne": {}, + "565-Escompte de cr\u00e9dits ordinaires": {}, + "566-Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": {} + }, + "57-Caisse": { + "571-Caisse si\u00e8ge social": { + "5711-Caisse en monnaie nationale": {}, + "5712-Caisse en devises": {} + }, + "572-Caisse succursale A": { + "5721-En monnaie nationale": {}, + "5722-En devises": {} + }, + "573-Caisse succursale B": { + "5731-En monnaie nationale": {}, + "5732-En devises": {} + } + }, + "58-R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "581-R\u00e9gies d\u2019avance": {}, + "582-Accr\u00e9ditifs": {}, + "585-Virements de fonds": {}, + "588-Autres virements internes": {} + }, + "59-D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "590-D\u00e9pr\u00e9ciations des titres de placement": {}, + "591-D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": {}, + "592-D\u00e9pr\u00e9ciations des comptes banques": {}, + "593-D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": {}, + "594-D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": {}, + "599-Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": {} + }, + "root_type": "Asset" + }, + "6-Comptes de charges des activit\u00e9s ordinaires": { + "60-Achats et variations de stocks": { + "601-Achats de marchandises": { + "6011-Dans la R\u00e9gion": {}, + "6012-Hors R\u00e9gion": {}, + "6013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6015-Frais sur achats": {}, + "6019-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "602-Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "6021-Dans la R\u00e9gion": {}, + "6022-Hors R\u00e9gion": {}, + "6023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6025-Frais sur achats": {}, + "6029-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "603-Variations des stocks de biens achet\u00e9s": { + "6031-Variations des stocks de marchandises": {}, + "6032-Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "6033-Variations des stocks d\u2019autres approvisionnements": {} + }, + "604-Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "6041-Mati\u00e8res consommables": {}, + "6042-Mati\u00e8res combustibles": {}, + "6043-Produits d\u2019entretien": {}, + "6044-Fournitures d\u2019atelier et d\u2019usine": {}, + "6045-Frais sur achat": {}, + "6046-Fournitures de magasin": {}, + "6047-Fournitures de bureau": {}, + "6049-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "605-Autres achats": { + "6051-Fournitures non stockables Eau": {}, + "6052-Fournitures non stockables \u00c9lectricit\u00e9": {}, + "6053-Fournitures non stockables Autres \u00e9nergies": {}, + "6054-Fournitures d\u2019entretien non stockables": {}, + "6055-Fournitures de bureau non stockables": {}, + "6056-Achats de petit mat\u00e9riel et outillage": {}, + "6057-Achats d\u2019\u00e9tudes et prestations de services": {}, + "6058-Achats de travaux, mat\u00e9riels et \u00e9quipements": {}, + "6059-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "608-Achats d\u2019emballages": { + "6081-Emballages perdus": {}, + "6082-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "6083-Emballages \u00e0 usage mixte": {}, + "6085-Frais sur achats": {}, + "6089-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + } + }, + "61-Transports": { + "612-Transports sur ventes": {}, + "613-Transports pour le compte de tiers": {}, + "614-Transports du personnel": {}, + "616-Transports de plis": {}, + "618-Autres frais de transport": { + "6181-Voyages et d\u00e9placements": {}, + "6182-Transports entre \u00e9tablissements ou chantiers": {}, + "6183-Transports administratifs": {} + } + }, + "62-Services ext\u00e9rieurs": { + "621-Sous-traitance g\u00e9n\u00e9rale": {}, + "622-Locations, charges locatives": { + "6221-Locations de terrains": {}, + "6222-Locations de b\u00e2timents": {}, + "6223-Locations de mat\u00e9riels et outillages": {}, + "6224-Malis sur emballages": {}, + "6225-Locations d\u2019emballages": {}, + "6226-Fermages et loyers du foncier": {}, + "6228-Locations et charges locatives diverses": {} + }, + "623-Redevances de location acquisition": { + "6232-Cr\u00e9dit-bail immobilier": {}, + "6233-Cr\u00e9dit-bail mobilier": {}, + "6234-Location-vente": {}, + "6238-Autres contrats de location acquisition": {} + }, + "624-Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "6241-Entretien et r\u00e9parations des biens immobiliers": {}, + "6242-Entretien et r\u00e9parations des biens mobiliers": {}, + "6243-Maintenance": {}, + "6244-Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "6248-Autres entretiens et r\u00e9parations": {} + }, + "625-Primes d\u2019assurance": { + "6251-Assurances multirisques": {}, + "6252-Assurances mat\u00e9riel de transport": {}, + "6253-Assurances risques d\u2019exploitation": {}, + "6254-Assurances responsabilit\u00e9 du producteur": {}, + "6255-Assurances insolvabilit\u00e9 clients": {}, + "6257-Assurances transport sur ventes": {}, + "6258-Autres primes d\u2019assurances": {} + }, + "626-\u00c9tudes, recherches et documentation": { + "6261-\u00c9tudes et recherches": {}, + "6265-Documentation g\u00e9n\u00e9rale": {}, + "6266-Documentation technique": {} + }, + "627-Publicit\u00e9, publications, relations publiques": { + "6271-Annonces, insertions": {}, + "6272-Catalogues, imprim\u00e9s publicitaires": {}, + "6273-\u00c9chantillons": {}, + "6274-Foires et expositions": {}, + "6275-Publications": {}, + "6276-Cadeaux \u00e0 la client\u00e8le": {}, + "6277-Frais de colloques, s\u00e9minaires, conf\u00e9rences": {}, + "6278-Autres charges de publicit\u00e9 et relations publiques": {} + }, + "628-Frais de t\u00e9l\u00e9communications": { + "6281-Frais de t\u00e9l\u00e9phone": {}, + "6282-Frais de t\u00e9lex": {}, + "6283-Frais de t\u00e9l\u00e9copie": {}, + "6288-Autres frais de t\u00e9l\u00e9communications": {} + } + }, + "63-Autres services ext\u00e9rieurs": { + "631-Frais bancaires": { + "6311-Frais sur titres (vente, garde)": {}, + "6312-Frais sur effets": {}, + "6313-Location de coffres": {}, + "6314-Commissions d\u2019affacturage": {}, + "6315-Commissions sur cartes de cr\u00e9dit": {}, + "6316-Frais d\u2019\u00e9mission d\u2019emprunts": {}, + "6317-Frais sur instruments monnaie \u00e9lectronique": {}, + "6318-Autres frais bancaires": {} + }, + "632-R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "6322-Commissions et courtages sur ventes": {}, + "6324-Honoraires des professions r\u00e9glement\u00e9es": {}, + "6325-Frais d\u2019actes et de contentieux": {}, + "6326-R\u00e9mun\u00e9rations d\u2019affacturage": {}, + "6327-R\u00e9mun\u00e9rations des autres prestataires de services": {}, + "6328-Divers frais": {} + }, + "633-Frais de formation du personnel": {}, + "634-Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "6342-Redevances pour brevets, licences": {}, + "6343-Redevances pour logiciels": {}, + "6344-Redevances pour marques": {}, + "6345-Redevances pour sites internet": {}, + "6346-Redevances pour concessions, droits et valeurs similaires": {} + }, + "635-Cotisations": { + "6351-Cotisations": {}, + "6358-Concours divers": {} + }, + "637-R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "6371-Personnel int\u00e9rimaire": {}, + "6372-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "638-Autres charges externes": { + "6381-Frais de recrutement du personnel": {}, + "6382-Frais de d\u00e9m\u00e9nagement": {}, + "6383-R\u00e9ceptions": {}, + "6384-Missions": {}, + "6385-Charges de copropri\u00e9t\u00e9": {} + } + }, + "64-Imp\u00f4ts et taxes": { + "641-Imp\u00f4ts et taxes directs": { + "6411-Imp\u00f4ts fonciers et taxes annexes": {}, + "6412-Patentes, licences et taxes annexes": {}, + "6413-Taxes sur appointements et salaires": {}, + "6414-Taxes d\u2019apprentissage": {}, + "6415-Formation professionnelle continue": {}, + "6418-Autres imp\u00f4ts et taxes directs": {} + }, + "645-Imp\u00f4ts et taxes indirects": {}, + "646-Droits d\u2019enregistrement": { + "6461-Droits de mutation": {}, + "6462-Droits de timbre": {}, + "6463-Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": {}, + "6464-Vignettes": {}, + "6468-Autres droits": {} + }, + "647-P\u00e9nalit\u00e9s, amendes fiscales": { + "6471-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": {}, + "6472-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": {}, + "6473-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": {}, + "6474-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": {}, + "6478-Autres p\u00e9nalit\u00e9s et amendes fiscales": {} + }, + "648-Autres imp\u00f4ts et taxes": {} + }, + "65-Autres charges": { + "651-Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "6511-Clients": {}, + "6515-Autres d\u00e9biteurs": {} + }, + "652-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "6521-Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": {}, + "6525-Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "654-Valeurs comptables des cessions courantes d\u2019immobilisations": { + "6541-Immobilisations incorporelles": {}, + "6542-Immobilisations corporelles": {} + }, + "656-Perte de change sur cr\u00e9ances et dettes commerciale": {}, + "657-P\u00e9nalit\u00e9s et amendes p\u00e9nales": {}, + "658-Charges diverses": { + "6581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "6582-Dons": {}, + "6583-M\u00e9c\u00e9nat": {}, + "6588-Autres charges diverses": {} + }, + "659-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "6591-Sur risques \u00e0 court terme": {}, + "6593-Sur stocks": {}, + "6594-Sur cr\u00e9ances": {}, + "6598-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": {} + } + }, + "66-Charges de personnel": { + "661-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "6611-Appointements salaires et commissions": {}, + "6612-Primes et gratifications": {}, + "6613-Cong\u00e9s pay\u00e9s": {}, + "6614-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6615-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6616-Suppl\u00e9ment familial": {}, + "6617-Avantages en nature": {}, + "6618-Autres r\u00e9mun\u00e9rations directes": {} + }, + "662-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "6621-Appointements salaires et commissions": {}, + "6622-Primes et gratifications": {}, + "6623-Cong\u00e9s pay\u00e9s": {}, + "6624-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6625-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6626-Suppl\u00e9ment familial": {}, + "6627-Avantages en nature": {}, + "6628-Autres r\u00e9mun\u00e9rations directes": {} + }, + "663-Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "6631-Indemnit\u00e9s de logement": {}, + "6632-Indemnit\u00e9s de repr\u00e9sentation": {}, + "6633-Indemnit\u00e9s d\u2019expatriation": {}, + "6634-Indemnit\u00e9s de transport": {}, + "6638-Autres indemnit\u00e9s et avantages divers": {} + }, + "664-Charges sociales": { + "6641-Charges sociales sur r\u00e9mun\u00e9ration du personnel national": {}, + "6642-Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": {} + }, + "666-R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "6661-R\u00e9mun\u00e9ration du travail de l\u2019exploitant": {}, + "6662-Charges sociales": {} + }, + "667-R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "6671-Personnel int\u00e9rimaire": {}, + "6672-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "668-Autres charges sociales": { + "6681-Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": {}, + "6682-Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": {}, + "6683-Versements et contributions aux autres \u0153uvres sociales": {}, + "6684-M\u00e9decine du travail et pharmacie": {}, + "6685-Assurances et organismes de sant\u00e9": {}, + "6686-Assurances retraite et fonds de pension": {}, + "6687-Majorations et p\u00e9nalit\u00e9s sociales": {}, + "6688-Charges sociales diverses": {} + } + }, + "67-Frais financiers et charges assimil\u00e9es": { + "671-Int\u00e9r\u00eats des emprunts": { + "6711-Emprunts obligataires": {}, + "6712-Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "6713-Dettes li\u00e9es \u00e0 des participations": {}, + "6714-Primes de remboursement des obligations": {} + }, + "672-Int\u00e9r\u00eats dans loyers de location acquisition": { + "6722-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": {}, + "6723-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": {}, + "6724-Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": {}, + "6728-Int\u00e9r\u00eats dans loyers des autres locations acquisition": {} + }, + "673-Escomptes accord\u00e9s": {}, + "674-Autres int\u00e9r\u00eats": { + "6741-Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": {}, + "6742-Comptes courants bloqu\u00e9s": {}, + "6743-Int\u00e9r\u00eats sur obligations cautionn\u00e9es": {}, + "6744-Int\u00e9r\u00eats sur dettes commerciales": {}, + "6745-Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": {}, + "6748-Int\u00e9r\u00eats sur dettes diverses": {} + }, + "675-Escomptes des effets de commerce": {}, + "676-Pertes de change financi\u00e8res": {}, + "677-Pertes sur titres de placement": { + "6771-Pertes sur cessions de titres de placement": {}, + "6772-Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {} + }, + "678-Pertes et charges sur risques financiers": { + "6781-Sur rentes viag\u00e8res": {}, + "6782-Sur op\u00e9rations financi\u00e8res": {}, + "6784-Sur instruments de tr\u00e9sorerie": {} + }, + "679-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "6791-Sur risques financiers": {}, + "6795-Sur titres de placement": {}, + "6798-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "68-Dotations aux amortissements": { + "681-Dotations aux amortissements d\u2019exploitation": { + "6812-Dotations aux amortissements des immobilisations incorporelles": {}, + "6813-Dotations aux amortissements des immobilisations corporelles": {} + } + }, + "69-Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "691-Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "6911-Dotations aux provisions pour risques et charges": {}, + "6913-Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": {}, + "6914-Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": {} + }, + "697-Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "6971-Dotations aux provisions pour risques et charges": {}, + "6972-Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": {} + } + }, + "root_type": "Expense" + }, + "7-Comptes de produits des activit\u00e9s ordinaires": { + "70-Ventes": { + "701-Ventes de marchandises": { + "7011-Dans la R\u00e9gion": {}, + "7012-Hors R\u00e9gion": {}, + "7013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7015-Sur internet": {}, + "7019-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "702-Ventes de produits finis": { + "7021-Dans la R\u00e9gion": {}, + "7022-Hors R\u00e9gion": {}, + "7023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7025-Sur internet": {}, + "7029-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "703-Ventes de produits interm\u00e9diaires": { + "7031-Dans la R\u00e9gion": {}, + "7032-Hors R\u00e9gion": {}, + "7033-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7034-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7035-Sur internet": {}, + "7039-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "704-Ventes de produits r\u00e9siduels": { + "7041-Dans la R\u00e9gion": {}, + "7042-Hors R\u00e9gion": {}, + "7043-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7044-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7045-Sur internet": {}, + "7049-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "705-Travaux factur\u00e9s": { + "7051-Dans la R\u00e9gion": {}, + "7052-Hors R\u00e9gion": {}, + "7053-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7054-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7055-Sur internet": {}, + "7059-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "706-Services vendus": { + "7061-Dans la R\u00e9gion": {}, + "7062-Hors R\u00e9gion": {}, + "7063-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7064-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7065-Sur internet": {}, + "7069-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "707-Produits accessoires": { + "7071-Ports, emballages perdus et autres frais factur\u00e9s": {}, + "7072-Commissions et courtages": {}, + "7073-Locations": {}, + "7074-Bonis sur reprises et cessions d\u2019emballages": {}, + "7075-Mise \u00e0 disposition de personnel": {}, + "7076-Redevances pour brevets, logiciels, marques et droits similaires": {}, + "7077-Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": {}, + "7078-Autres produits accessoires": {} + } + }, + "71-Subventions d\u2019exploitation": { + "711-Sur produits \u00e0 l\u2019exportation": {}, + "712-Sur produits \u00e0 l\u2019importation": {}, + "713-Sur produits de p\u00e9r\u00e9quation": {}, + "714-Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": {}, + "718-Autres subventions d\u2019exploitation": { + "7181-Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": {}, + "7182-Vers\u00e9es par les organismes internationaux": {}, + "7183-Vers\u00e9es par des tiers": {} + } + }, + "72-Production immobilis\u00e9e": { + "721-Immobilisations incorporelles": {}, + "722-Immobilisations corporelles": { + "7221-Immobilisations corporelles (hors actifs biologiques)": {}, + "7222-Immobilisations corporelles (actifs biologiques)": {} + }, + "724-Production auto-consomm\u00e9e": {}, + "726-Immobilisations financi\u00e8res": {} + }, + "73-Variations des stocks de biens et de services produits": { + "734-Variations des stocks de produits en cours": { + "7341-Produits en cours": {}, + "7342-Travaux en cours": {} + }, + "735-Variations des en-cours de services": { + "7351-\u00c9tudes en cours": {}, + "7352-Prestations de services en cours": {} + }, + "736-Variations des stocks de produits finis": {}, + "737-Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "7371-Produits interm\u00e9diaires": {}, + "7372-Produits r\u00e9siduels": {} + } + }, + "75-Autres produits": { + "751-Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": {}, + "752-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "7521-Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": {}, + "7525-B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "754-Produits des cessions courantes d\u2019immobilisations": { + "7541-Immobilisations incorporelles": {}, + "7542-Immobilisations corporelles": {} + }, + "756-Gains de change sur cr\u00e9ances et dettes commerciales": {}, + "758-Produits divers": { + "7581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "7582-Indemnit\u00e9s d\u2019assurances re\u00e7ues": {}, + "7588-Autres produits divers": {} + }, + "759-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "7591-Sur risques \u00e0 court terme": {}, + "7593-Sur stocks": {}, + "7594-Sur cr\u00e9ances": {}, + "7598-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": {} + } + }, + "77-Revenus financiers et produits assimil\u00e9s": { + "771-Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "7712-Int\u00e9r\u00eats de pr\u00eats": {}, + "7713-Int\u00e9r\u00eats sur cr\u00e9ances diverses": {} + }, + "772-Revenus de participations et autres titres immobilis\u00e9s": { + "7721-Revenus des titres de participation": {}, + "7722-Revenus autres titres immobilis\u00e9s": {} + }, + "773-Escomptes obtenus": {}, + "774-Revenus de placement": { + "7745-Revenus des obligations": {}, + "7746-Revenus des titres de placement": {} + }, + "775-Int\u00e9r\u00eats dans loyers de location acquisition": {}, + "776-Gains de change financiers": {}, + "777-Gains sur cessions de titres de placement": {}, + "778-Gains sur risques financiers": { + "7781-Sur rentes viag\u00e8res": {}, + "7782-Sur op\u00e9rations financi\u00e8res": {}, + "7784-Sur instruments de tr\u00e9sorerie": {} + }, + "779-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "7791-Sur risques financiers": {}, + "7795-Sur titres de placement": {}, + "7798-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "78-Transferts de charges": { + "781-Transferts de charges d\u2019exploitation": {}, + "787-Transferts de charges financi\u00e8res": {} + }, + "79-Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "791-Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "7911-Pour risques et charges": {}, + "7913-Des immobilisations incorporelles": {}, + "7914-Des immobilisations corporelles": {} + }, + "797-Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "7971-Pour risques et charges": {}, + "7972-Des immobilisations financi\u00e8res": {} + }, + "798-Reprises d\u2019amortissements": {}, + "799-Reprises de subventions d\u2019investissement": {} + }, + "root_type": "Income" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "81-Valeurs comptables des cessions d\u2019immobilisations": { + "811-Immobilisations incorporelles": {}, + "812-Immobilisations corporelles": {}, + "816-Immobilisations financi\u00e8res": {} + }, + "83-Charges hors activit\u00e9s ordinaires": { + "831-Charges HAO constat\u00e9es": {}, + "833-Charges li\u00e9es aux op\u00e9rations de restructuration": {}, + "834-Pertes sur cr\u00e9ances HAO": {}, + "835-Dons et lib\u00e9ralit\u00e9s accord\u00e9s": {}, + "836-Abandons de cr\u00e9ances consentis": {}, + "837-Charges li\u00e9es aux op\u00e9rations de liquidation": {}, + "839-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "85-Dotations hors activit\u00e9s ordinaires": { + "851-Dotations aux provisions r\u00e9glement\u00e9es": {}, + "852-Dotations aux amortissements HAO": {}, + "853-Dotations aux d\u00e9pr\u00e9ciations HAO": {}, + "854-Dotations aux provisions pour risques et charges HAO": {}, + "858-Autres dotations HAO": {} + }, + "87-Participation des travailleurs": { + "871-Participation l\u00e9gale aux b\u00e9n\u00e9fices": {}, + "874-Participation contractuelle aux b\u00e9n\u00e9fices": {}, + "878-Autres participations": {} + }, + "89-Imp\u00f4ts sur le r\u00e9sultat": { + "891-Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "8911-Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": {}, + "8912-Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": {}, + "8913-Activit\u00e9s exerc\u00e9es hors R\u00e9gion": {} + }, + "892-Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": {}, + "895-Imp\u00f4t minimum forfaitaire IMF": {}, + "899-D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "8991-D\u00e9gr\u00e8vements": {}, + "8994-Annulations pour pertes r\u00e9troactives": {} + } + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "82-Produits des cessions d\u2019immobilisations": { + "821-Immobilisations incorporelles": {}, + "822-Immobilisations corporelles": {}, + "826-Immobilisations financi\u00e8res": {} + }, + "84-Produits hors activit\u00e9s ordinaires": { + "841-Produits HAO constat\u00e9s": {}, + "843-Produits li\u00e9s aux op\u00e9rations de restructuration": {}, + "844-Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": {}, + "845-Dons et lib\u00e9ralit\u00e9s obtenus": {}, + "846-Abandons de cr\u00e9ances obtenus": {}, + "847-Produits li\u00e9s aux op\u00e9rations de liquidation": {}, + "848-Transferts de charges HAO": {}, + "849-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "86-Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "861-Reprises de provisions r\u00e9glement\u00e9es": {}, + "862-Reprises d\u2019amortissements HAO": {}, + "863-Reprises de d\u00e9pr\u00e9ciations HAO": {}, + "864-Reprises de provisions pour risques et charges HAO": {}, + "868-Autres reprises HAO": {} + }, + "88-Subventions d\u2019\u00e9quilibre": { + "881-\u00c9tat": {}, + "884-Collectivit\u00e9s publiques": {}, + "886-Groupe": {}, + "888-Autres": {} + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/td_plan_comptable_avec_code.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/td_plan_comptable_avec_code.json new file mode 100644 index 00000000000..226e21e20fc --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/td_plan_comptable_avec_code.json @@ -0,0 +1,4208 @@ +{ + "country_code": "td", + "name": "Syscohada - Plan Comptable avec code", + "tree": { + "Comptes de ressources durables": { + "Capital": { + "Capital social": { + "Capital souscrit, non appel\u00e9": { + "account_number": "1011" + }, + "Capital souscrit, appel\u00e9, non vers\u00e9": { + "account_number": "1012" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, non amorti": { + "account_number": "1013" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, amorti": { + "account_number": "1014" + }, + "Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": { + "account_number": "1018" + }, + "account_number": "101" + }, + "Capital par dotation": { + "Dotation initiale": { + "account_number": "1021" + }, + "Dotations compl\u00e9mentaires": { + "account_number": "1022" + }, + "Autres dotations": { + "account_number": "1028" + }, + "account_number": "102" + }, + "Capital personnel": { + "account_number": "103" + }, + "Compte de l\u2019exploitant": { + "Apports temporaires": { + "account_number": "1041" + }, + "Op\u00e9rations courantes": { + "account_number": "1042" + }, + "R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": { + "account_number": "1043" + }, + "Pr\u00e9l\u00e8vements d\u2019autoconsommation": { + "account_number": "1047" + }, + "Autres pr\u00e9l\u00e8vements": { + "account_number": "1048" + }, + "account_number": "104" + }, + "Primes li\u00e9es au capital social": { + "Primes d\u2019\u00e9mission": { + "account_number": "1051" + }, + "Primes d\u2019apport": { + "account_number": "1052" + }, + "Primes de fusion": { + "account_number": "1053" + }, + "Primes de conversion": { + "account_number": "1054" + }, + "Autres primes": { + "account_number": "1058" + }, + "account_number": "105" + }, + "\u00c9carts de r\u00e9\u00e9valuation": { + "\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": { + "account_number": "1061" + }, + "\u00c9carts de r\u00e9\u00e9valuation libre": { + "account_number": "1062" + }, + "account_number": "106" + }, + "Apporteurs, capital souscrit, non appel\u00e9": { + "account_number": "109" + }, + "account_number": "10" + }, + "R\u00e9serves": { + "R\u00e9serve l\u00e9gale": { + "account_number": "111" + }, + "R\u00e9serves statutaires ou contractuelles": { + "account_number": "112" + }, + "R\u00e9serves r\u00e9glement\u00e9es": { + "R\u00e9serves de plus-values nettes \u00e0 long terme": { + "account_number": "1131" + }, + "R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "1132" + }, + "R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": { + "account_number": "1133" + }, + "R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": { + "account_number": "1134" + }, + "Autres r\u00e9serves r\u00e9glement\u00e9es": { + "account_number": "1135" + }, + "account_number": "113" + }, + "Autres r\u00e9serves": { + "R\u00e9serves facultatives": { + "account_number": "1181" + }, + "R\u00e9serves diverses": { + "account_number": "1188" + }, + "account_number": "118" + }, + "account_number": "11" + }, + "Report \u00e0 nouveau": { + "Report \u00e0 nouveau cr\u00e9diteur": { + "account_number": "121" + }, + "Report \u00e0 nouveau d\u00e9biteur": { + "Perte nette \u00e0 reporter": { + "account_number": "1291" + }, + "Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": { + "account_number": "1292" + }, + "account_number": "129" + }, + "account_number": "12" + }, + "R\u00e9sultat net de l\u2019exercice": { + "R\u00e9sultat en instance d\u2019affectation": { + "R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": { + "account_number": "1301" + }, + "R\u00e9sultat en instance d\u2019affectation : perte": { + "account_number": "1309" + }, + "account_number": "130" + }, + "R\u00e9sultat net : b\u00e9n\u00e9fice": { + "account_number": "131" + }, + "Marge commerciale (MC)": { + "account_number": "132" + }, + "Valeur ajout\u00e9e (VA)": { + "account_number": "133" + }, + "Exc\u00e9dent brut d\u2019exploitation (EBE)": { + "account_number": "134" + }, + "R\u00e9sultat d\u2019exploitation (RE)": { + "account_number": "135" + }, + "R\u00e9sultat financier (RF)": { + "account_number": "136" + }, + "R\u00e9sultat des activit\u00e9s ordinaires (RAO)": { + "account_number": "137" + }, + "R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "R\u00e9sultat de fusion": { + "account_number": "1381" + }, + "R\u00e9sultat d\u2019apport partiel d\u2019actif": { + "account_number": "1382" + }, + "R\u00e9sultat de scission": { + "account_number": "1383" + }, + "R\u00e9sultat de liquidation": { + "account_number": "1384" + }, + "account_number": "138" + }, + "R\u00e9sultat net : perte": { + "account_number": "139" + }, + "account_number": "13" + }, + "Subventions d\u2019investissement": { + "Subventions d\u2019\u00e9quipement": { + "\u00c9tat": { + "account_number": "1411" + }, + "R\u00e9gions": { + "account_number": "1412" + }, + "D\u00e9partements": { + "account_number": "1413" + }, + "Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": { + "account_number": "1414" + }, + "Entit\u00e9s publiques ou mixtes": { + "account_number": "1415" + }, + "Entit\u00e9s et organismes priv\u00e9s": { + "account_number": "1416" + }, + "Organismes internationaux": { + "account_number": "1417" + }, + "Autres": { + "account_number": "1418" + }, + "account_number": "141" + }, + "Autres subventions d\u2019investissement": { + "account_number": "148" + }, + "account_number": "14" + }, + "Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "Amortissements d\u00e9rogatoires": { + "account_number": "151" + }, + "Plus-values de cession \u00e0 r\u00e9investir": { + "account_number": "152" + }, + "Fonds r\u00e9glement\u00e9s": { + "Fonds National": { + "account_number": "1531" + }, + "Pr\u00e9l\u00e8vement pour le Budget": { + "account_number": "1532" + }, + "account_number": "153" + }, + "Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": { + "account_number": "154" + }, + "Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "Reconstitution des gisements miniers et p\u00e9troliers": { + "account_number": "1551" + }, + "account_number": "155" + }, + "Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "Hausse de prix": { + "account_number": "1561" + }, + "Fluctuation des cours": { + "account_number": "1562" + }, + "account_number": "156" + }, + "Provisions pour investissement": { + "account_number": "157" + }, + "Autres provisions et fonds r\u00e9glement\u00e9s": { + "account_number": "158" + }, + "account_number": "15" + }, + "Emprunts et dettes assimil\u00e9es": { + "Emprunts obligataires": { + "Emprunts obligataires ordinaires": { + "account_number": "1611" + }, + "Emprunts obligataires convertibles en actions": { + "account_number": "1612" + }, + "Emprunts obligataires remboursables en actions": { + "account_number": "1613" + }, + "Autres emprunts obligataires": { + "account_number": "1618" + }, + "account_number": "161" + }, + "Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "162" + }, + "Avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "163" + }, + "Avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "164" + }, + "D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "D\u00e9p\u00f4ts": { + "account_number": "1651" + }, + "Cautionnements": { + "account_number": "1652" + }, + "account_number": "165" + }, + "Int\u00e9r\u00eats courus": { + "Sur emprunts obligataires": { + "account_number": "1661" + }, + "Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "1662" + }, + "Sur avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "1663" + }, + "Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "1664" + }, + "Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "account_number": "1665" + }, + "Sur avances assorties de conditions particuli\u00e8res": { + "account_number": "1667" + }, + "Sur autres emprunts et dettes": { + "account_number": "1668" + }, + "account_number": "166" + }, + "Avances assorties de conditions particuli\u00e8res": { + "Avances bloqu\u00e9es pour augmentation du capital": { + "account_number": "1671" + }, + "Avances conditionn\u00e9es par l\u2019\u00c9tat": { + "account_number": "1672" + }, + "Avances conditionn\u00e9es par les autres organismes africains": { + "account_number": "1673" + }, + "Avances conditionn\u00e9es par les organismes internationaux": { + "account_number": "1674" + }, + "account_number": "167" + }, + "Autres emprunts et dettes": { + "Rentes viag\u00e8res capitalis\u00e9es": { + "account_number": "1681" + }, + "Billets de fonds": { + "account_number": "1682" + }, + "Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": { + "account_number": "1683" + }, + "Emprunts participatifs": { + "account_number": "1684" + }, + "Participation des travailleurs aux b\u00e9n\u00e9fices": { + "account_number": "1685" + }, + "Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": { + "account_number": "1686" + }, + "account_number": "168" + }, + "account_number": "16" + }, + "Dettes de location acquisition": { + "Dettes de location acquisition / cr\u00e9dit bail immobilier": { + "account_number": "172" + }, + "Dettes de location acquisition / cr\u00e9dit bail mobilier": { + "account_number": "173" + }, + "Dettes de location acquisition / location de vente": { + "account_number": "174" + }, + "Int\u00e9r\u00eats courus": { + "Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "1762" + }, + "Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "1763" + }, + "Sur dettes de location acquisition / location-vente": { + "account_number": "1764" + }, + "Sur autres dettes de location acquisition": { + "account_number": "1768" + }, + "account_number": "176" + }, + "Autres dettes de location acquisition": { + "account_number": "178" + }, + "account_number": "17" + }, + "Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "Dettes li\u00e9es \u00e0 des participations": { + "Dettes li\u00e9es \u00e0 des participations (groupe)": { + "account_number": "1811" + }, + "Dettes li\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "1812" + }, + "account_number": "181" + }, + "Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "182" + }, + "Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": { + "account_number": "183" + }, + "Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "184" + }, + "Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "185" + }, + "Comptes de liaison charges": { + "account_number": "186" + }, + "Comptes de liaison produits": { + "account_number": "187" + }, + "Comptes de liaison des soci\u00e9t\u00e9s en participation": { + "account_number": "188" + }, + "account_number": "18" + }, + "Provisions pour risques et charges": { + "Provisions pour litiges": { + "account_number": "191" + }, + "Provisions pour garanties donn\u00e9es aux clients": { + "account_number": "192" + }, + "Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": { + "account_number": "193" + }, + "Provisions pour pertes de change": { + "account_number": "194" + }, + "Provisions pour imp\u00f4ts": { + "account_number": "195" + }, + "Provisions pour pensions et obligations similaires": { + "Provisions pour pensions et obligations similaires engagement de retraite": { + "account_number": "1961" + }, + "Actif du r\u00e9gime de retraite": { + "account_number": "1962" + }, + "account_number": "196" + }, + "Provisions pour restructuration": { + "account_number": "197" + }, + "Autres provisions pour risques et charges": { + "Provisions pour amendes et p\u00e9nalit\u00e9s": { + "account_number": "1981" + }, + "Provisions pour propre assureur": { + "account_number": "1983" + }, + "Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "1984" + }, + "Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": { + "account_number": "1985" + }, + "Provisions pour divers risques et charges": { + "account_number": "1988" + }, + "account_number": "198" + }, + "account_number": "19" + }, + "root_type": "Equity", + "account_number": "1" + }, + "Comptes d\u2019actif immobilis\u00e9": { + "Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "211" + }, + "Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "Brevets": { + "account_type": "Fixed Asset", + "account_number": "2121" + }, + "Licences": { + "account_type": "Fixed Asset", + "account_number": "2122" + }, + "Concessions de service public": { + "account_type": "Fixed Asset", + "account_number": "2123" + }, + "Autres concessions et droits similaires": { + "account_type": "Fixed Asset", + "account_number": "2128" + }, + "account_number": "212" + }, + "Logiciels et sites internet": { + "account_type": "Fixed Asset", + "Logiciels": { + "account_type": "Fixed Asset", + "account_number": "2131" + }, + "Sites internet": { + "account_type": "Fixed Asset", + "account_number": "2132" + }, + "account_number": "213" + }, + "Marques": { + "account_type": "Fixed Asset", + "account_number": "214" + }, + "Fonds commercial": { + "account_type": "Fixed Asset", + "account_number": "215" + }, + "Droit au bail": { + "account_type": "Fixed Asset", + "account_number": "216" + }, + "Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset", + "account_number": "217" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset", + "account_number": "2181" + }, + "Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset", + "account_number": "2182" + }, + "Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset", + "account_number": "2183" + }, + "Co\u00fbts des franchises": { + "account_type": "Fixed Asset", + "account_number": "2184" + }, + "Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset", + "account_number": "2188" + }, + "account_number": "218" + }, + "Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "2191" + }, + "Logiciels et internet": { + "account_type": "Fixed Asset", + "account_number": "2193" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "account_number": "2198" + }, + "account_number": "219" + }, + "account_number": "21" + }, + "Terrains": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset", + "account_number": "2211" + }, + "Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset", + "account_number": "2212" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2218" + }, + "account_number": "221" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset", + "account_number": "2221" + }, + "Autres terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2228" + }, + "account_number": "222" + }, + "Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset", + "account_number": "2231" + }, + "Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset", + "account_number": "2232" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2234" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2235" + }, + "Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "account_number": "2238" + }, + "account_number": "223" + }, + "Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset", + "account_number": "2241" + }, + "Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset", + "account_number": "2245" + }, + "Autres travaux": { + "account_type": "Fixed Asset", + "account_number": "2248" + }, + "account_number": "224" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "Carri\u00e8res": { + "account_type": "Fixed Asset", + "account_number": "2251" + }, + "account_number": "225" + }, + "Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "Parkings": { + "account_type": "Fixed Asset", + "account_number": "2261" + }, + "account_number": "226" + }, + "Terrains mis en concession": { + "account_type": "Fixed Asset", + "account_number": "227" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "Terrains immeubles de placement": { + "account_type": "Fixed Asset", + "account_number": "2281" + }, + "Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset", + "account_number": "2285" + }, + "Terrains de location acquisition": { + "account_type": "Fixed Asset", + "account_number": "2286" + }, + "Divers terrains": { + "account_type": "Fixed Asset", + "account_number": "2288" + }, + "account_number": "228" + }, + "Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "account_number": "2291" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2292" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "account_number": "2295" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2298" + }, + "account_number": "229" + }, + "account_number": "22" + }, + "B\u00e2timents, installations techniques et agencements": { + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "B\u00e2timents industriels": { + "account_number": "2311" + }, + "B\u00e2timents agricoles": { + "account_number": "2312" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2313" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2314" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2315" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2316" + }, + "account_number": "231" + }, + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "B\u00e2timents industriels": { + "account_number": "2321" + }, + "B\u00e2timents agricoles": { + "account_number": "2322" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2323" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2324" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2325" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2326" + }, + "account_number": "232" + }, + "Ouvrages d\u2019infrastructure": { + "Voies de terre": { + "account_number": "2331" + }, + "Voies de fer": { + "account_number": "2332" + }, + "Voies d\u2019eau": { + "account_number": "2333" + }, + "Barrages, Digues": { + "account_number": "2334" + }, + "Pistes d\u2019a\u00e9rodrome": { + "account_number": "2335" + }, + "Autres ouvrages d\u2019infrastructures": { + "account_number": "2338" + }, + "account_number": "233" + }, + "Am\u00e9nagements, agencements et installations techniques": { + "Installations complexes sp\u00e9cialis\u00e9es sur sol propre": { + "account_number": "2341" + }, + "Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": { + "account_number": "2342" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": { + "account_number": "2343" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": { + "account_number": "2344" + }, + "Am\u00e9nagements et agencements des b\u00e2timents": { + "account_number": "2345" + }, + "account_number": "234" + }, + "Am\u00e9nagements de bureaux": { + "Installations g\u00e9n\u00e9rales": { + "account_number": "2351" + }, + "Autres am\u00e9nagements de bureaux": { + "account_number": "2358" + }, + "account_number": "235" + }, + "B\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "237" + }, + "Autres installations et agencements": { + "account_number": "238" + }, + "B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "B\u00e2timents en cours": { + "account_number": "2391" + }, + "Installations en cours": { + "account_number": "2392" + }, + "Ouvrages d\u2019infrastructure en cours": { + "account_number": "2393" + }, + "Am\u00e9nagements et agencements et installations techniques en cours": { + "account_number": "2394" + }, + "Am\u00e9nagements de bureaux en cours": { + "account_number": "2395" + }, + "Autres installations et agencements en cours": { + "account_number": "2398" + }, + "account_number": "239" + }, + "account_number": "23" + }, + "Mat\u00e9riel, mobilier et actifs biologiques": { + "Mat\u00e9riel et outillage industriel et commercial": { + "Mat\u00e9riel industriel": { + "account_number": "2411" + }, + "Outillage industriel": { + "account_number": "2412" + }, + "Mat\u00e9riel commercial": { + "account_number": "2413" + }, + "Outillage commercial": { + "account_number": "2414" + }, + "Mat\u00e9riel & outillage industriel et commercial de location-acquisition": { + "account_number": "2416" + }, + "account_number": "241" + }, + "Mat\u00e9riel et outillage agricole": { + "Mat\u00e9riel agricole": { + "account_number": "2421" + }, + "Outillage agricole": { + "account_number": "2422" + }, + "Mat\u00e9riel & outillage agricole de location-acquisition": { + "account_number": "2426" + }, + "account_number": "242" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "243" + }, + "Mat\u00e9riel et mobilier": { + "Mat\u00e9riel de bureau": { + "account_number": "2441" + }, + "Mat\u00e9riel informatique": { + "account_number": "2442" + }, + "Mat\u00e9riel bureautique": { + "account_number": "2443" + }, + "Mobilier de bureau": { + "account_number": "2444" + }, + "Mat\u00e9riel et mobilier immeubles de placement": { + "account_number": "2445" + }, + "Mat\u00e9riel et mobilier de location acquisition": { + "account_number": "2446" + }, + "Mat\u00e9riel et mobilier des logements du personnel": { + "account_number": "2447" + }, + "account_number": "244" + }, + "Mat\u00e9riel de transport": { + "Mat\u00e9riel automobile": { + "account_number": "2451" + }, + "Mat\u00e9riel ferroviaire": { + "account_number": "2452" + }, + "Mat\u00e9riel fluvial, lagunaire": { + "account_number": "2453" + }, + "Mat\u00e9riel naval": { + "account_number": "2454" + }, + "Mat\u00e9riel a\u00e9rien": { + "account_number": "2455" + }, + "Mat\u00e9riel de transport de location-acquisition": { + "account_number": "2456" + }, + "Mat\u00e9riel hippomobile": { + "account_number": "2457" + }, + "Autres mat\u00e9riels de transport": { + "account_number": "2458" + }, + "account_number": "245" + }, + "Actifs biologiques": { + "Cheptel, animaux de trait": { + "account_number": "2461" + }, + "Cheptel, animaux reproducteurs": { + "account_number": "2462" + }, + "Animaux de garde": { + "account_number": "2463" + }, + "Plantations agricoles": { + "account_number": "2465" + }, + "Autres actifs biologiques": { + "account_number": "2468" + }, + "account_number": "246" + }, + "Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "Agencements et am\u00e9nagements du mat\u00e9riel": { + "account_number": "2471" + }, + "Agencements et am\u00e9nagements des actifs biologiques": { + "account_number": "2472" + }, + "Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2478" + }, + "account_number": "247" + }, + "Autres mat\u00e9riels et mobiliers": { + "Collections et \u0153uvres d\u2019art": { + "account_number": "2481" + }, + "Divers mat\u00e9riels mobiliers": { + "account_number": "2488" + }, + "account_number": "248" + }, + "Mat\u00e9riels et actifs biologiques en cours": { + "Mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2491" + }, + "Mat\u00e9riel et outillage agricole": { + "account_number": "2492" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2493" + }, + "Mat\u00e9riel et mobilier de bureau": { + "account_number": "2494" + }, + "Mat\u00e9riel de transport": { + "account_number": "2495" + }, + "Actifs biologiques": { + "account_number": "2496" + }, + "Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2497" + }, + "Autres mat\u00e9riels et actifs biologiques en cours": { + "account_number": "2498" + }, + "account_number": "249" + }, + "account_number": "24" + }, + "Avances et acomptes vers\u00e9s sur immobilisations": { + "Avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "251" + }, + "Avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "252" + }, + "account_number": "25" + }, + "Titres de participation": { + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "261" + }, + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "262" + }, + "Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "263" + }, + "Participations dans des organismes professionnels": { + "account_number": "265" + }, + "Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "266" + }, + "Autres titres de participation": { + "account_number": "268" + }, + "account_number": "26" + }, + "Autres immobilisations financi\u00e8res": { + "Pr\u00eats et cr\u00e9ances": { + "Pr\u00eats participatifs": { + "account_number": "2711" + }, + "Pr\u00eats aux associ\u00e9s": { + "account_number": "2712" + }, + "Billets de fonds": { + "account_number": "2713" + }, + "Titres pr\u00eat\u00e9s": { + "account_number": "2714" + }, + "Autres pr\u00eats et cr\u00e9ances": { + "account_number": "2718" + }, + "account_number": "271" + }, + "Pr\u00eats au personnel": { + "Pr\u00eats immobiliers": { + "account_number": "2721" + }, + "Pr\u00eats mobiliers et d\u2019installation": { + "account_number": "2722" + }, + "Autres pr\u00eats au personnel": { + "account_number": "2728" + }, + "account_number": "272" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "Retenues de garantie": { + "account_number": "2731" + }, + "Fonds r\u00e9glement\u00e9": { + "account_number": "2733" + }, + "Cr\u00e9ances sur le conc\u00e9dant": { + "account_number": "2734" + }, + "Autres cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2738" + }, + "account_number": "273" + }, + "Titres immobilis\u00e9s": { + "Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": { + "account_number": "2741" + }, + "Titres participatifs": { + "account_number": "2742" + }, + "Certificats d\u2019investissement": { + "account_number": "2743" + }, + "Parts de fonds commun de placement (FCP)": { + "account_number": "2744" + }, + "Obligations": { + "account_number": "2745" + }, + "Actions ou parts propres": { + "account_number": "2746" + }, + "Autres titres immobilis\u00e9s": { + "account_number": "2748" + }, + "account_number": "274" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "D\u00e9p\u00f4ts pour loyers d\u2019avance": { + "account_number": "2751" + }, + "D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": { + "account_number": "2752" + }, + "D\u00e9p\u00f4ts pour l\u2019eau": { + "account_number": "2753" + }, + "D\u00e9p\u00f4ts pour le gaz": { + "account_number": "2754" + }, + "D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": { + "account_number": "2755" + }, + "Cautionnements sur march\u00e9s publics": { + "account_number": "2756" + }, + "Cautionnements sur autres op\u00e9rations": { + "account_number": "2757" + }, + "Autres d\u00e9p\u00f4ts et cautionnements": { + "account_number": "2758" + }, + "account_number": "275" + }, + "Int\u00e9r\u00eats courus": { + "Pr\u00eats et cr\u00e9ances non commerciales": { + "account_number": "2761" + }, + "Pr\u00eats au personnel": { + "account_number": "2762" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2763" + }, + "Titres immobilis\u00e9s": { + "account_number": "2764" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2765" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "account_number": "2767" + }, + "Immobilisations financi\u00e8res diverses": { + "account_number": "2768" + }, + "account_number": "276" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": { + "account_number": "2771" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "2772" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "2773" + }, + "Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "2774" + }, + "account_number": "277" + }, + "Immobilisations financi\u00e8res diverses": { + "Cr\u00e9ances diverses groupe": { + "account_number": "2781" + }, + "Cr\u00e9ances diverses hors groupe": { + "account_number": "2782" + }, + "Banques d\u00e9p\u00f4ts \u00e0 terme": { + "account_number": "2784" + }, + "Or et m\u00e9taux pr\u00e9cieux": { + "account_number": "2785" + }, + "Autres immobilisations financi\u00e8res": { + "account_number": "2788" + }, + "account_number": "278" + }, + "account_number": "27" + }, + "Amortissements": { + "account_type": "Accumulated Depreciation", + "Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation", + "account_number": "2811" + }, + "Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation", + "account_number": "2812" + }, + "Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation", + "account_number": "2813" + }, + "Amortissements des marques": { + "account_type": "Accumulated Depreciation", + "account_number": "2814" + }, + "Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation", + "account_number": "2815" + }, + "Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation", + "account_number": "2816" + }, + "Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation", + "account_number": "2817" + }, + "Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation", + "account_number": "2818" + }, + "account_number": "281" + }, + "Amortissements des terrains": { + "Amortissements des travaux de mise en valeur des terrains": { + "account_number": "2824" + }, + "account_number": "282" + }, + "Amortissements des b\u00e2timents, installations techniques et agencements": { + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2831" + }, + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2832" + }, + "Amortissements des ouvrages d\u2019infrastructure": { + "account_number": "2833" + }, + "Amortissements des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2834" + }, + "Amortissements des am\u00e9nagements de bureaux": { + "account_number": "2835" + }, + "Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2837" + }, + "Amortissements des autres installations et agencements": { + "account_number": "2838" + }, + "account_number": "283" + }, + "Amortissements du mat\u00e9riel": { + "Amortissements du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2841" + }, + "Amortissements du mat\u00e9riel et outillage agricole": { + "account_number": "2842" + }, + "Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2843" + }, + "Amortissements du mat\u00e9riel et mobilier": { + "account_number": "2844" + }, + "Amortissements du mat\u00e9riel de transport": { + "account_number": "2845" + }, + "Amortissements des actifs biologiques": { + "account_number": "2846" + }, + "Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2847" + }, + "Amortissements des autres mat\u00e9riels": { + "account_number": "2848" + }, + "account_number": "284" + }, + "account_number": "28" + }, + "D\u00e9pr\u00e9ciations des immobilisations": { + "D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": { + "account_number": "2911" + }, + "D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": { + "account_number": "2912" + }, + "D\u00e9pr\u00e9ciations des logiciels et sites internet": { + "account_number": "2913" + }, + "D\u00e9pr\u00e9ciations des marques": { + "account_number": "2914" + }, + "D\u00e9pr\u00e9ciations du fonds commercial": { + "account_number": "2915" + }, + "D\u00e9pr\u00e9ciations du droit au bail": { + "account_number": "2916" + }, + "D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": { + "account_number": "2917" + }, + "D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": { + "account_number": "2918" + }, + "D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": { + "account_number": "2919" + }, + "account_number": "291" + }, + "D\u00e9pr\u00e9ciations des terrains": { + "D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": { + "account_number": "2921" + }, + "D\u00e9pr\u00e9ciations des terrains nus": { + "account_number": "2922" + }, + "D\u00e9pr\u00e9ciations des terrains b\u00e2tis": { + "account_number": "2923" + }, + "D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": { + "account_number": "2924" + }, + "D\u00e9pr\u00e9ciations des terrains de gisement": { + "account_number": "2925" + }, + "D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": { + "account_number": "2926" + }, + "D\u00e9pr\u00e9ciations des terrains mis en concession": { + "account_number": "2927" + }, + "D\u00e9pr\u00e9ciations des autres terrains": { + "account_number": "2928" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": { + "account_number": "2929" + }, + "account_number": "292" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2931" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2932" + }, + "D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": { + "account_number": "2933" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2934" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": { + "account_number": "2935" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2937" + }, + "D\u00e9pr\u00e9ciations des autres installations et agencements": { + "account_number": "2938" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": { + "account_number": "2939" + }, + "account_number": "293" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2941" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": { + "account_number": "2942" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2943" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": { + "account_number": "2944" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": { + "account_number": "2945" + }, + "D\u00e9pr\u00e9ciations des actifs biologiques": { + "account_number": "2946" + }, + "D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2947" + }, + "D\u00e9pr\u00e9ciations des autres mat\u00e9riels": { + "account_number": "2948" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": { + "account_number": "2949" + }, + "account_number": "294" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "2951" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "2952" + }, + "account_number": "295" + }, + "D\u00e9pr\u00e9ciations des titres de participation": { + "D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "2961" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "2962" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "2963" + }, + "D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": { + "account_number": "2965" + }, + "D\u00e9pr\u00e9ciations des parts dans des GIE": { + "account_number": "2966" + }, + "D\u00e9pr\u00e9ciations des autres titres de participation": { + "account_number": "2968" + }, + "account_number": "296" + }, + "D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": { + "account_number": "2971" + }, + "D\u00e9pr\u00e9ciations des pr\u00eats au personnel": { + "account_number": "2972" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2973" + }, + "D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": { + "account_number": "2974" + }, + "D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2975" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "account_number": "2977" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": { + "account_number": "2978" + }, + "account_number": "297" + }, + "account_number": "29" + }, + "root_type": "Asset", + "account_number": "2" + }, + "Comptes de Stocks": { + "Marchandises": { + "Marchandises A": { + "Marchandises A1": { + "account_number": "3111" + }, + "Marchandises A2": { + "account_number": "3112" + }, + "account_number": "311" + }, + "Marchandises B": { + "Marchandises B1": { + "account_number": "3121" + }, + "Marchandises B2": { + "account_number": "3122" + }, + "account_number": "312" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3131" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3132" + }, + "account_number": "313" + }, + "Marchandises hors activit\u00e9s ordinaires (HAO)": { + "account_number": "318" + }, + "account_number": "31" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Mati\u00e8res A": { + "account_number": "321" + }, + "Mati\u00e8res B": { + "account_number": "322" + }, + "Fournitures (A, B)": { + "account_number": "323" + }, + "account_number": "32" + }, + "Autres approvisionnements": { + "Mati\u00e8res consommables": { + "account_number": "331" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "332" + }, + "Fournitures de magasin": { + "account_number": "333" + }, + "Fournitures de bureau": { + "account_number": "334" + }, + "Emballages": { + "Emballages perdus": { + "account_number": "3351" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "3352" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "3353" + }, + "Autres emballages": { + "account_number": "3358" + }, + "account_number": "335" + }, + "Autres mati\u00e8res": { + "account_number": "338" + }, + "account_number": "33" + }, + "Produits en cours": { + "Produits en cours": { + "Produits en cours P1": { + "account_number": "3411" + }, + "Produits en cours P2": { + "account_number": "3412" + }, + "account_number": "341" + }, + "Travaux en cours": { + "Travaux en cours T1": { + "account_number": "3421" + }, + "Travaux en cours T2": { + "account_number": "3422" + }, + "account_number": "342" + }, + "Produits interm\u00e9diaires en cours": { + "Produits interm\u00e9diaires A": { + "account_number": "3431" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3432" + }, + "account_number": "343" + }, + "Produits r\u00e9siduels en cours": { + "Produits r\u00e9siduels A": { + "account_number": "3441" + }, + "Produits r\u00e9siduels B": { + "account_number": "3442" + }, + "account_number": "344" + }, + "Actifs biologiques en cours": { + "Animaux": { + "account_number": "3451" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3452" + }, + "account_number": "345" + }, + "account_number": "34" + }, + "Services en cours": { + "\u00c9tudes en cours": { + "\u00c9tudes en cours E1": { + "account_number": "3511" + }, + "\u00c9tudes en cours E2": { + "account_number": "3512" + }, + "account_number": "351" + }, + "Prestations de services en cours": { + "Prestations de services S1": { + "account_number": "3521" + }, + "Prestations de services S2": { + "account_number": "3522" + } + }, + "account_number": "35" + }, + "Produits finis": { + "Produits finis A": { + "account_number": "361" + }, + "Produits finis B": { + "account_number": "362" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3631" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3632" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3638" + }, + "account_number": "363" + }, + "account_number": "36" + }, + "Produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "Produits interm\u00e9diaires A": { + "account_number": "3711" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3712" + }, + "account_number": "371" + }, + "Produits r\u00e9siduels": { + "D\u00e9chets": { + "account_number": "3721" + }, + "Rebuts": { + "account_number": "3722" + }, + "Mati\u00e8res de R\u00e9cup\u00e9ration": { + "account_number": "3723" + }, + "account_number": "372" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3731" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3732" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3738" + }, + "account_number": "373" + }, + "account_number": "37" + }, + "Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "Marchandises en cours de route": { + "account_number": "381" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": { + "account_number": "382" + }, + "Autres approvisionnements en cours de route": { + "account_number": "383" + }, + "Produits finis en cours de route": { + "account_number": "386" + }, + "Stock en consignation ou en d\u00e9p\u00f4t": { + "Stock en consignation": { + "account_number": "3871" + }, + "Stock en d\u00e9p\u00f4t": { + "account_number": "3872" + }, + "account_number": "387" + }, + "Stock provenant d\u2019immobilisations mises hors service ou au rebut": { + "account_number": "388" + }, + "account_number": "38" + }, + "D\u00e9pr\u00e9ciations des stocks et encours de production": { + "D\u00e9pr\u00e9ciations des stocks de marchandises": { + "account_number": "391" + }, + "D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "392" + }, + "D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": { + "account_number": "393" + }, + "D\u00e9pr\u00e9ciations des productions en cours": { + "account_number": "394" + }, + "D\u00e9pr\u00e9ciations des services en cours": { + "account_number": "395" + }, + "D\u00e9pr\u00e9ciations des stocks de produits finis": { + "account_number": "396" + }, + "D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "account_number": "397" + }, + "D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_number": "398" + }, + "account_number": "39" + }, + "root_type": "Asset", + "account_number": "3" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "Fournisseurs d\u00e9biteurs": { + "Fournisseurs Avances et acomptes vers\u00e9s": { + "account_number": "4091" + }, + "Fournisseurs Groupe avances et acomptes vers\u00e9s": { + "account_number": "4092" + }, + "Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": { + "account_number": "4093" + }, + "Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": { + "account_number": "4094" + }, + "Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": { + "account_number": "4098" + }, + "account_number": "409" + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "Clients": { + "Clients": { + "account_type": "Receivable", + "account_number": "4111" + }, + "Clients groupe": { + "account_type": "Receivable", + "account_number": "4112" + }, + "Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable", + "account_number": "4114" + }, + "Clients, organismes internationaux": { + "account_type": "Receivable", + "account_number": "4115" + }, + "Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable", + "account_number": "4116" + }, + "Client, retenues de garantie": { + "account_type": "Receivable", + "account_number": "4117" + }, + "Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable", + "account_number": "4118" + }, + "account_type": "Receivable", + "account_number": "411" + }, + "Clients, effets \u00e0 recevoir en portefeuille": { + "Clients, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4121" + }, + "Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4122" + }, + "\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4124" + }, + "Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4125" + }, + "account_type": "Receivable", + "account_number": "412" + }, + "Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4131" + }, + "Clients, effets impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4132" + }, + "Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4133" + }, + "Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4138" + }, + "account_type": "Receivable", + "account_number": "413" + }, + "Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4141" + }, + "Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4142" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4146" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4147" + }, + "account_type": "Receivable", + "account_number": "414" + }, + "Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable", + "account_number": "415" + }, + "Cr\u00e9ances clients litigieuses ou douteuses": { + "Cr\u00e9ances litigieuses": { + "account_type": "Receivable", + "account_number": "4161" + }, + "Cr\u00e9ances douteuses": { + "account_type": "Receivable", + "account_number": "4162" + }, + "account_type": "Receivable", + "account_number": "416" + }, + "Clients, produits \u00e0 recevoir": { + "Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable", + "account_number": "4181" + }, + "Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable", + "account_number": "4186" + }, + "account_type": "Receivable", + "account_number": "418" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "Personnel, avances et acomptes": { + "Personnel, avances": { + "account_number": "4211" + }, + "Personnel, acomptes": { + "account_number": "4212" + }, + "Frais avanc\u00e9s et fournitures au personnel": { + "account_number": "4213" + }, + "account_number": "421" + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "Prestations familiales": { + "account_number": "4311" + }, + "Accidents de travail": { + "account_number": "4312" + }, + "Caisse de retraite obligatoire": { + "account_number": "4313" + }, + "Caisse de retraite facultative": { + "account_number": "4314" + }, + "Autres cotisations sociales": { + "account_number": "4318" + } + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "Mutuelle": { + "account_number": "4331" + }, + "Assurances retraite": { + "account_number": "4332" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "4333" + } + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Produits \u00e0 recevoir": { + "account_number": "4387" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "\u00c9tat, TVA factur\u00e9e": { + "TVA factur\u00e9e sur ventes": { + "account_number": "4431" + }, + "TVA factur\u00e9e sur prestations de services": { + "account_number": "4432" + }, + "TVA factur\u00e9e sur travaux": { + "account_number": "4433" + }, + "TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": { + "account_number": "4434" + }, + "TVA sur factures \u00e0 \u00e9tablir": { + "account_number": "4435" + }, + "account_number": "443" + }, + "\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "TVA r\u00e9cup\u00e9rable sur immobilisations": { + "account_number": "4451" + }, + "TVA r\u00e9cup\u00e9rable sur achats": { + "account_number": "4452" + }, + "TVA r\u00e9cup\u00e9rable sur transport": { + "account_number": "4453" + }, + "TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": { + "account_number": "4454" + }, + "TVA r\u00e9cup\u00e9rable sur factures non parvenues": { + "account_number": "4455" + }, + "TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": { + "account_number": "4456" + }, + "account_number": "445" + }, + "\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges \u00e0 payer": { + "account_number": "4486" + }, + "Produits \u00e0 recevoir": { + "account_number": "4487" + }, + "account_number": "448" + }, + "\u00c9tat, cr\u00e9ances et dettes diverses": { + "\u00c9tat, obligations cautionn\u00e9es": { + "account_number": "4491" + }, + "\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": { + "account_number": "4492" + }, + "\u00c9tat, fonds de dotation \u00e0 recevoir": { + "account_number": "4493" + }, + "\u00c9tat, subventions investissement \u00e0 recevoir": { + "account_number": "4494" + }, + "\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": { + "account_number": "4495" + }, + "\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": { + "account_number": "4496" + }, + "\u00c9tat, avances sur subventions": { + "account_number": "4497" + }, + "\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": { + "account_number": "4499" + }, + "account_number": "449" + } + }, + "45-Organismes internationaux (ACTIF)": { + "Op\u00e9rations avec les organismes africains": { + "account_number": "451" + }, + "Op\u00e9rations avec les autres organismes internationaux": { + "account_number": "452" + }, + "Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "Organismes internationaux, fonds de dotation \u00e0 recevoir": { + "account_number": "4581" + }, + "Organismes internationaux, subventions \u00e0 recevoir": { + "account_number": "4582" + }, + "account_number": "458" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "Apporteurs, capital appel\u00e9, non vers\u00e9": { + "account_number": "4613" + }, + "Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": { + "account_number": "4614" + }, + "Apporteurs, titres \u00e0 \u00e9changer": { + "account_number": "4618" + } + }, + "Apporteurs, restant d\u00fb sur capital appel\u00e9": { + "account_number": "467" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4721" + }, + "Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": { + "account_number": "4726" + } + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "Mandants": { + "account_number": "4731" + }, + "Mandataires": { + "account_number": "4732" + }, + "Commettants": { + "account_number": "4733" + }, + "Commissionnaires": { + "account_number": "4734" + }, + "\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": { + "account_number": "4739" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "Compte de r\u00e9partition p\u00e9riodique des produits": { + "account_number": "4747" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "Compte actif": { + "account_type": "Temporary", + "account_number": "4751" + } + }, + "Charges constat\u00e9es d\u2019avance": { + "account_number": "476" + }, + "478-\u00c9carts de conversion actif": { + "Diminution des cr\u00e9ances d\u2019exploitation": { + "account_number": "4781" + }, + "Diminution des cr\u00e9ances financi\u00e8res": { + "account_number": "4782" + }, + "Augmentation des dettes d\u2019exploitation": { + "account_number": "4783" + }, + "Augmentation des dettes financi\u00e8res": { + "account_number": "4784" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4786" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4788" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "En compte, immobilisations incorporelles": { + "account_number": "4851" + }, + "En compte, immobilisations corporelles": { + "account_number": "4852" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_number": "4853" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_number": "4854" + }, + "Effets escompt\u00e9s non \u00e9chus": { + "account_number": "4855" + }, + "Retenues de garantie": { + "account_number": "4857" + }, + "Factures \u00e0 \u00e9tablir": { + "account_number": "4858" + }, + "account_number": "485" + }, + "Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": { + "account_number": "488" + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "D\u00e9pr\u00e9ciations des comptes clients": { + "Cr\u00e9ances litigieuses": { + "account_number": "4911" + }, + "Cr\u00e9ances douteuses": { + "account_number": "4912" + }, + "account_number": "491" + }, + "D\u00e9pr\u00e9ciations des comptes organismes internationaux": { + "account_number": "495" + }, + "D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "Associ\u00e9s, comptes courants": { + "account_number": "4962" + }, + "Associ\u00e9s, op\u00e9rations faites en commun": { + "account_number": "4963" + }, + "Groupe, comptes courants": { + "account_number": "4966" + }, + "account_number": "496" + }, + "D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": { + "account_number": "497" + }, + "D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "account_number": "4985" + }, + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4986" + }, + "Autres cr\u00e9ances HAO": { + "account_number": "4988" + }, + "account_number": "498" + }, + "Provisions pour risques \u00e0 court terme": { + "Sur op\u00e9rations d\u2019exploitation": { + "account_number": "4991" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "4997" + }, + "Sur op\u00e9rations HAO": { + "account_number": "4998" + }, + "account_number": "499" + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "Fournisseurs, dettes en compte": { + "Fournisseurs": { + "account_type": "Payable", + "account_number": "4011" + }, + "Fournisseurs groupe": { + "account_type": "Payable", + "account_number": "4012" + }, + "Fournisseurs sous-traitants": { + "account_type": "Payable", + "account_number": "4013" + }, + "Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable", + "account_number": "4016" + }, + "Fournisseur, retenues de garantie": { + "account_type": "Payable", + "account_number": "4017" + }, + "account_type": "Payable", + "account_number": "401" + }, + "Fournisseurs, effets \u00e0 payer": { + "Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4021" + }, + "Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4022" + }, + "Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4023" + }, + "account_type": "Payable", + "account_number": "402" + }, + "Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4041" + }, + "Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4042" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4046" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4047" + }, + "account_type": "Payable", + "account_number": "404" + }, + "Fournisseurs, factures non parvenues": { + "Fournisseurs": { + "account_type": "Stock Received But Not Billed", + "account_number": "4081" + }, + "Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed", + "account_number": "4082" + }, + "Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed", + "account_number": "4083" + }, + "Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed", + "account_number": "4086" + }, + "account_type": "Stock Received But Not Billed", + "account_number": "408" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "Clients cr\u00e9diteurs": { + "Clients, avances et acomptes re\u00e7us": { + "account_number": "4191" + }, + "Clients groupe, avances et acomptes re\u00e7us": { + "account_number": "4192" + }, + "Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": { + "account_number": "4194" + }, + "Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": { + "account_number": "4198" + }, + "account_number": "419" + } + }, + "42-Personnel (PASSIF)": { + "Personnel, r\u00e9mun\u00e9rations dues": { + "account_number": "422" + }, + "Personnel, oppositions, saisies-arr\u00eats": { + "Personnel, oppositions": { + "account_number": "4231" + }, + "Personnel, saisies-arr\u00eats": { + "account_number": "4232" + }, + "Personnel, avis \u00e0 tiers d\u00e9tenteur": { + "account_number": "4233" + }, + "account_number": "423" + }, + "Personnel, \u0153uvres sociales internes": { + "Assistance m\u00e9dicale": { + "account_number": "4241" + }, + "Allocations familiales": { + "account_number": "4242" + }, + "Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": { + "account_number": "4245" + }, + "Autres \u0153uvres sociales internes": { + "account_number": "4248" + }, + "account_number": "424" + }, + "Repr\u00e9sentants du personnel": { + "D\u00e9l\u00e9gu\u00e9s du personnel": { + "account_number": "4251" + }, + "Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": { + "account_number": "4252" + }, + "Autres repr\u00e9sentants du personnel": { + "account_number": "4258" + }, + "account_number": "425" + }, + "Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "Participation aux b\u00e9n\u00e9fices": { + "account_number": "4261" + }, + "Participation au capital": { + "account_number": "4264" + }, + "account_number": "426" + }, + "Personnel d\u00e9p\u00f4ts": { + "account_number": "427" + }, + "Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": { + "account_number": "4281" + }, + "Autres charges \u00e0 payer": { + "account_number": "4286" + }, + "Produits \u00e0 recevoir": { + "account_number": "4287" + }, + "account_number": "428" + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges sociales sur gratifications \u00e0 payer": { + "account_number": "4381" + }, + "Charges sociales sur cong\u00e9s \u00e0 payer": { + "account_number": "4382" + }, + "Autres charges \u00e0 payer": { + "account_number": "4386" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": { + "account_number": "441" + }, + "\u00c9tat, autres imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes d\u2019\u00c9tat": { + "account_number": "4421" + }, + "Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": { + "account_number": "4422" + }, + "Imp\u00f4ts et taxes recouvrables sur des obligataires": { + "account_number": "4423" + }, + "Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": { + "account_number": "4424" + }, + "Droits de douane": { + "account_number": "4426" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "4428" + }, + "account_number": "442" + }, + "\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "\u00c9tat, TVA due": { + "account_number": "4441" + }, + "\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": { + "account_number": "4449" + }, + "account_number": "444" + }, + "\u00c9tat, autres taxes sur le chiffre d\u2019affaires": { + "account_number": "446" + }, + "\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": { + "account_number": "4471" + }, + "Imp\u00f4ts sur salaires": { + "account_number": "4472" + }, + "Contribution nationale": { + "account_number": "4473" + }, + "Contribution nationale de solidarit\u00e9": { + "account_number": "4474" + }, + "Autres imp\u00f4ts et contributions": { + "account_number": "4478" + }, + "account_number": "447" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "Apporteurs, apports en nature": { + "account_number": "4611" + }, + "Apporteurs, apports en num\u00e9raire": { + "account_number": "4612" + }, + "Apporteurs, versements re\u00e7us sur augmentation de capital": { + "account_number": "4615" + }, + "Apporteurs, versements anticip\u00e9s": { + "account_number": "4616" + }, + "Apporteurs d\u00e9faillants": { + "account_number": "4617" + }, + "Apporteurs, capital \u00e0 rembourser": { + "account_number": "4619" + } + }, + "462-Associ\u00e9s, comptes courants": { + "Principal": { + "account_number": "4621" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4626" + } + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "Op\u00e9rations courantes": { + "account_number": "4631" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4636" + } + }, + "Associ\u00e9s, dividendes \u00e0 payer": { + "account_number": "465" + }, + "Groupe, comptes courants": { + "account_number": "466" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "D\u00e9biteurs divers": { + "account_number": "4711" + }, + "Cr\u00e9diteurs divers": { + "account_number": "4712" + }, + "Obligataires": { + "account_number": "4713" + }, + "R\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "4715" + }, + "Compte d\u2019affacturage": { + "account_number": "4716" + }, + "D\u00e9biteurs divers retenues de garantie": { + "account_number": "4717" + }, + "Apport, compte de fusion et op\u00e9rations assimil\u00e9es": { + "account_number": "4718" + }, + "Bons de souscription d\u2019actions et d\u2019obligations": { + "account_number": "4719" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "Compte de r\u00e9partition p\u00e9riodique des charges": { + "account_number": "4746" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "Compte passif": { + "account_number": "4752" + } + }, + "Produits constat\u00e9s d\u2019avance": { + "account_number": "477" + }, + "479-\u00c9carts de conversion passif": { + "Augmentation des cr\u00e9ances d\u2019exploitation": { + "account_number": "4791" + }, + "Augmentation des cr\u00e9ances financi\u00e8res": { + "account_number": "4792" + }, + "Diminution des dettes d\u2019exploitation": { + "account_number": "4793" + }, + "Diminution des dettes financi\u00e8res": { + "account_number": "4794" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4797" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4798" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "Fournisseurs d\u2019investissements": { + "Immobilisations incorporelles": { + "account_number": "4811" + }, + "Immobilisations corporelles": { + "account_number": "4812" + }, + "Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": { + "account_number": "4813" + }, + "R\u00e9serve de propri\u00e9t\u00e9": { + "account_number": "4816" + }, + "Retenues de garantie": { + "account_number": "4817" + }, + "Factures non parvenues": { + "account_number": "4818" + }, + "account_number": "481" + }, + "Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "Immobilisations incorporelles": { + "account_number": "4821" + }, + "Immobilisations corporelles": { + "account_number": "4822" + }, + "account_number": "482" + }, + "Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "Produits": { + "account_number": "4887" + }, + "account_number": "484" + } + }, + "root_type": "Liability" + }, + "Comptes de tr\u00e9sorerie": { + "Titres de placement": { + "Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "Titres du Tr\u00e9sor \u00e0 court terme": { + "account_number": "5011" + }, + "Titres d\u2019organismes financiers": { + "account_number": "5012" + }, + "Bons de caisse \u00e0 court terme": { + "account_number": "5013" + }, + "Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": { + "account_number": "5016" + }, + "account_number": "501" + }, + "Actions": { + "Actions ou parts propres": { + "account_number": "5021" + }, + "Actions cot\u00e9es": { + "account_number": "5022" + }, + "Actions non cot\u00e9es": { + "account_number": "5023" + }, + "Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": { + "account_number": "5024" + }, + "Autres actions": { + "account_number": "5025" + }, + "Frais d\u2019acquisition des actions": { + "account_number": "5026" + }, + "account_number": "502" + }, + "Obligations": { + "Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": { + "account_number": "5031" + }, + "Obligations cot\u00e9es": { + "account_number": "5032" + }, + "Obligations non cot\u00e9es": { + "account_number": "5033" + }, + "Autres obligations": { + "account_number": "5035" + }, + "Frais d\u2019acquisition des obligations": { + "account_number": "5036" + }, + "account_number": "503" + }, + "Bons de souscription": { + "Bons de souscription d\u2019actions": { + "account_number": "5042" + }, + "Bons de souscription d\u2019obligations": { + "account_number": "5043" + }, + "account_number": "504" + }, + "Titres n\u00e9gociables hors r\u00e9gion": { + "account_number": "505" + }, + "Int\u00e9r\u00eats courus": { + "Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": { + "account_number": "5061" + }, + "Actions": { + "account_number": "5062" + }, + "Obligations": { + "account_number": "5063" + }, + "account_number": "506" + }, + "Autres titres de placement et cr\u00e9ances assimil\u00e9es": { + "account_number": "508" + }, + "account_number": "50" + }, + "Valeurs \u00e0 encaisser": { + "Effets \u00e0 encaisser": { + "account_number": "511" + }, + "Effets \u00e0 l\u2019encaissement": { + "account_number": "512" + }, + "Ch\u00e8ques \u00e0 encaisser": { + "account_number": "513" + }, + "Ch\u00e8ques \u00e0 l\u2019encaissement": { + "account_number": "514" + }, + "Cartes de cr\u00e9dit \u00e0 encaisser": { + "account_number": "515" + }, + "Autres valeurs \u00e0 l\u2019encaissement": { + "Warrants": { + "account_number": "5181" + }, + "Billets de fonds": { + "account_number": "5182" + }, + "Ch\u00e8ques de voyage": { + "account_number": "5185" + }, + "Coupons \u00e9chus": { + "account_number": "5186" + }, + "Int\u00e9r\u00eats \u00e9chus des obligations": { + "account_number": "5187" + }, + "account_number": "518" + }, + "account_number": "51" + }, + "Banques": { + "Banques locales": { + "Banques en monnaie nationale": { + "account_type": "Bank", + "account_number": "5211" + }, + "Banques en devises": { + "account_type": "Bank", + "account_number": "5215" + }, + "account_type": "Bank", + "account_number": "521" + }, + "Banques autres \u00c9tats r\u00e9gion": { + "account_number": "522" + }, + "Banques autres \u00c9tats zone mon\u00e9taire": { + "account_number": "523" + }, + "Banques hors zone mon\u00e9taire": { + "account_number": "524" + }, + "Banques d\u00e9p\u00f4t \u00e0 terme": { + "account_number": "525" + }, + "Banques, int\u00e9r\u00eats courus": { + "Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": { + "account_number": "5261" + }, + "Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": { + "account_number": "5267" + }, + "account_number": "526" + }, + "account_number": "52" + }, + "\u00c9tablissements financiers et assimil\u00e9s": { + "Ch\u00e8ques postaux": { + "account_number": "531" + }, + "Tr\u00e9sor": { + "account_number": "532" + }, + "Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": { + "account_number": "533" + }, + "\u00c9tablissements financiers, int\u00e9r\u00eats courus": { + "account_number": "536" + }, + "Autres organismes financiers": { + "account_number": "538" + }, + "account_number": "53" + }, + "Instruments de tr\u00e9sorerie": { + "Options de taux d\u2019int\u00e9r\u00eat": { + "account_number": "541" + }, + "Options de taux de change": { + "account_number": "542" + }, + "Options de taux boursiers": { + "account_number": "543" + }, + "Instruments de march\u00e9s \u00e0 terme": { + "account_number": "544" + }, + "Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": { + "account_number": "545" + }, + "account_number": "54" + }, + "Instruments de monnaie \u00e9lectronique": { + "Monnaie \u00e9lectronique carte carburant": { + "account_number": "551" + }, + "Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": { + "account_number": "552" + }, + "Monnaie \u00e9lectronique carte p\u00e9age": { + "account_number": "553" + }, + "Porte-monnaie \u00e9lectronique": { + "account_number": "554" + }, + "Autres instruments de monnaies \u00e9lectroniques": { + "account_number": "558" + }, + "account_number": "55" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "Cr\u00e9dits de tr\u00e9sorerie": { + "account_number": "561" + }, + "Escompte de cr\u00e9dits de campagne": { + "account_number": "564" + }, + "Escompte de cr\u00e9dits ordinaires": { + "account_number": "565" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": { + "account_number": "566" + }, + "account_number": "56" + }, + "Caisse": { + "Caisse si\u00e8ge social": { + "Caisse en monnaie nationale": { + "account_number": "5711" + }, + "Caisse en devises": { + "account_number": "5712" + }, + "account_number": "571" + }, + "Caisse succursale A": { + "En monnaie nationale": { + "account_number": "5721" + }, + "En devises": { + "account_number": "5722" + }, + "account_number": "572" + }, + "Caisse succursale B": { + "En monnaie nationale": { + "account_number": "5731" + }, + "En devises": { + "account_number": "5732" + }, + "account_number": "573" + }, + "account_number": "57" + }, + "R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "R\u00e9gies d\u2019avance": { + "account_number": "581" + }, + "Accr\u00e9ditifs": { + "account_number": "582" + }, + "Virements de fonds": { + "account_number": "585" + }, + "Autres virements internes": { + "account_number": "588" + }, + "account_number": "58" + }, + "D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "D\u00e9pr\u00e9ciations des titres de placement": { + "account_number": "590" + }, + "D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": { + "account_number": "591" + }, + "D\u00e9pr\u00e9ciations des comptes banques": { + "account_number": "592" + }, + "D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": { + "account_number": "593" + }, + "D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": { + "account_number": "594" + }, + "Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": { + "account_number": "599" + }, + "account_number": "59" + }, + "root_type": "Asset", + "account_number": "5" + }, + "Comptes de charges des activit\u00e9s ordinaires": { + "Achats et variations de stocks": { + "Achats de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "6011" + }, + "Hors R\u00e9gion": { + "account_number": "6012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6014" + }, + "Frais sur achats": { + "account_number": "6015" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6019" + }, + "account_number": "601" + }, + "Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Dans la R\u00e9gion": { + "account_number": "6021" + }, + "Hors R\u00e9gion": { + "account_number": "6022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6024" + }, + "Frais sur achats": { + "account_number": "6025" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6029" + }, + "account_number": "602" + }, + "Variations des stocks de biens achet\u00e9s": { + "Variations des stocks de marchandises": { + "account_number": "6031" + }, + "Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "6032" + }, + "Variations des stocks d\u2019autres approvisionnements": { + "account_number": "6033" + }, + "account_number": "603" + }, + "Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "Mati\u00e8res consommables": { + "account_number": "6041" + }, + "Mati\u00e8res combustibles": { + "account_number": "6042" + }, + "Produits d\u2019entretien": { + "account_number": "6043" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "6044" + }, + "Frais sur achat": { + "account_number": "6045" + }, + "Fournitures de magasin": { + "account_number": "6046" + }, + "Fournitures de bureau": { + "account_number": "6047" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6049" + }, + "account_number": "604" + }, + "Autres achats": { + "Fournitures non stockables Eau": { + "account_number": "6051" + }, + "Fournitures non stockables \u00c9lectricit\u00e9": { + "account_number": "6052" + }, + "Fournitures non stockables Autres \u00e9nergies": { + "account_number": "6053" + }, + "Fournitures d\u2019entretien non stockables": { + "account_number": "6054" + }, + "Fournitures de bureau non stockables": { + "account_number": "6055" + }, + "Achats de petit mat\u00e9riel et outillage": { + "account_number": "6056" + }, + "Achats d\u2019\u00e9tudes et prestations de services": { + "account_number": "6057" + }, + "Achats de travaux, mat\u00e9riels et \u00e9quipements": { + "account_number": "6058" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6059" + }, + "account_number": "605" + }, + "Achats d\u2019emballages": { + "Emballages perdus": { + "account_number": "6081" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "6082" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "6083" + }, + "Frais sur achats": { + "account_number": "6085" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6089" + }, + "account_number": "608" + }, + "account_number": "60" + }, + "Transports": { + "Transports sur ventes": { + "account_number": "612" + }, + "Transports pour le compte de tiers": { + "account_number": "613" + }, + "Transports du personnel": { + "account_number": "614" + }, + "Transports de plis": { + "account_number": "616" + }, + "Autres frais de transport": { + "Voyages et d\u00e9placements": { + "account_number": "6181" + }, + "Transports entre \u00e9tablissements ou chantiers": { + "account_number": "6182" + }, + "Transports administratifs": { + "account_number": "6183" + }, + "account_number": "618" + }, + "account_number": "61" + }, + "Services ext\u00e9rieurs": { + "Sous-traitance g\u00e9n\u00e9rale": { + "account_number": "621" + }, + "Locations, charges locatives": { + "Locations de terrains": { + "account_number": "6221" + }, + "Locations de b\u00e2timents": { + "account_number": "6222" + }, + "Locations de mat\u00e9riels et outillages": { + "account_number": "6223" + }, + "Malis sur emballages": { + "account_number": "6224" + }, + "Locations d\u2019emballages": { + "account_number": "6225" + }, + "Fermages et loyers du foncier": { + "account_number": "6226" + }, + "Locations et charges locatives diverses": { + "account_number": "6228" + }, + "account_number": "622" + }, + "Redevances de location acquisition": { + "Cr\u00e9dit-bail immobilier": { + "account_number": "6232" + }, + "Cr\u00e9dit-bail mobilier": { + "account_number": "6233" + }, + "Location-vente": { + "account_number": "6234" + }, + "Autres contrats de location acquisition": { + "account_number": "6238" + }, + "account_number": "623" + }, + "Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "Entretien et r\u00e9parations des biens immobiliers": { + "account_number": "6241" + }, + "Entretien et r\u00e9parations des biens mobiliers": { + "account_number": "6242" + }, + "Maintenance": { + "account_number": "6243" + }, + "Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "6244" + }, + "Autres entretiens et r\u00e9parations": { + "account_number": "6248" + }, + "account_number": "624" + }, + "Primes d\u2019assurance": { + "Assurances multirisques": { + "account_number": "6251" + }, + "Assurances mat\u00e9riel de transport": { + "account_number": "6252" + }, + "Assurances risques d\u2019exploitation": { + "account_number": "6253" + }, + "Assurances responsabilit\u00e9 du producteur": { + "account_number": "6254" + }, + "Assurances insolvabilit\u00e9 clients": { + "account_number": "6255" + }, + "Assurances transport sur ventes": { + "account_number": "6257" + }, + "Autres primes d\u2019assurances": { + "account_number": "6258" + }, + "account_number": "625" + }, + "\u00c9tudes, recherches et documentation": { + "\u00c9tudes et recherches": { + "account_number": "6261" + }, + "Documentation g\u00e9n\u00e9rale": { + "account_number": "6265" + }, + "Documentation technique": { + "account_number": "6266" + }, + "account_number": "626" + }, + "Publicit\u00e9, publications, relations publiques": { + "Annonces, insertions": { + "account_number": "6271" + }, + "Catalogues, imprim\u00e9s publicitaires": { + "account_number": "6272" + }, + "\u00c9chantillons": { + "account_number": "6273" + }, + "Foires et expositions": { + "account_number": "6274" + }, + "Publications": { + "account_number": "6275" + }, + "Cadeaux \u00e0 la client\u00e8le": { + "account_number": "6276" + }, + "Frais de colloques, s\u00e9minaires, conf\u00e9rences": { + "account_number": "6277" + }, + "Autres charges de publicit\u00e9 et relations publiques": { + "account_number": "6278" + }, + "account_number": "627" + }, + "Frais de t\u00e9l\u00e9communications": { + "Frais de t\u00e9l\u00e9phone": { + "account_number": "6281" + }, + "Frais de t\u00e9lex": { + "account_number": "6282" + }, + "Frais de t\u00e9l\u00e9copie": { + "account_number": "6283" + }, + "Autres frais de t\u00e9l\u00e9communications": { + "account_number": "6288" + }, + "account_number": "628" + }, + "account_number": "62" + }, + "Autres services ext\u00e9rieurs": { + "Frais bancaires": { + "Frais sur titres (vente, garde)": { + "account_number": "6311" + }, + "Frais sur effets": { + "account_number": "6312" + }, + "Location de coffres": { + "account_number": "6313" + }, + "Commissions d\u2019affacturage": { + "account_number": "6314" + }, + "Commissions sur cartes de cr\u00e9dit": { + "account_number": "6315" + }, + "Frais d\u2019\u00e9mission d\u2019emprunts": { + "account_number": "6316" + }, + "Frais sur instruments monnaie \u00e9lectronique": { + "account_number": "6317" + }, + "Autres frais bancaires": { + "account_number": "6318" + }, + "account_number": "631" + }, + "R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "Commissions et courtages sur ventes": { + "account_number": "6322" + }, + "Honoraires des professions r\u00e9glement\u00e9es": { + "account_number": "6324" + }, + "Frais d\u2019actes et de contentieux": { + "account_number": "6325" + }, + "R\u00e9mun\u00e9rations d\u2019affacturage": { + "account_number": "6326" + }, + "R\u00e9mun\u00e9rations des autres prestataires de services": { + "account_number": "6327" + }, + "Divers frais": { + "account_number": "6328" + }, + "account_number": "632" + }, + "Frais de formation du personnel": { + "account_number": "633" + }, + "Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "Redevances pour brevets, licences": { + "account_number": "6342" + }, + "Redevances pour logiciels": { + "account_number": "6343" + }, + "Redevances pour marques": { + "account_number": "6344" + }, + "Redevances pour sites internet": { + "account_number": "6345" + }, + "Redevances pour concessions, droits et valeurs similaires": { + "account_number": "6346" + }, + "account_number": "634" + }, + "Cotisations": { + "Cotisations": { + "account_number": "6351" + }, + "Concours divers": { + "account_number": "6358" + }, + "account_number": "635" + }, + "R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "Personnel int\u00e9rimaire": { + "account_number": "6371" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6372" + }, + "account_number": "637" + }, + "Autres charges externes": { + "Frais de recrutement du personnel": { + "account_number": "6381" + }, + "Frais de d\u00e9m\u00e9nagement": { + "account_number": "6382" + }, + "R\u00e9ceptions": { + "account_number": "6383" + }, + "Missions": { + "account_number": "6384" + }, + "Charges de copropri\u00e9t\u00e9": { + "account_number": "6385" + }, + "account_number": "638" + }, + "account_number": "63" + }, + "Imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes directs": { + "Imp\u00f4ts fonciers et taxes annexes": { + "account_number": "6411" + }, + "Patentes, licences et taxes annexes": { + "account_number": "6412" + }, + "Taxes sur appointements et salaires": { + "account_number": "6413" + }, + "Taxes d\u2019apprentissage": { + "account_number": "6414" + }, + "Formation professionnelle continue": { + "account_number": "6415" + }, + "Autres imp\u00f4ts et taxes directs": { + "account_number": "6418" + }, + "account_number": "641" + }, + "Imp\u00f4ts et taxes indirects": { + "account_number": "645" + }, + "Droits d\u2019enregistrement": { + "Droits de mutation": { + "account_number": "6461" + }, + "Droits de timbre": { + "account_number": "6462" + }, + "Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": { + "account_number": "6463" + }, + "Vignettes": { + "account_number": "6464" + }, + "Autres droits": { + "account_number": "6468" + }, + "account_number": "646" + }, + "P\u00e9nalit\u00e9s, amendes fiscales": { + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": { + "account_number": "6471" + }, + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": { + "account_number": "6472" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": { + "account_number": "6473" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": { + "account_number": "6474" + }, + "Autres p\u00e9nalit\u00e9s et amendes fiscales": { + "account_number": "6478" + }, + "account_number": "647" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "648" + }, + "account_number": "64" + }, + "Autres charges": { + "Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "Clients": { + "account_number": "6511" + }, + "Autres d\u00e9biteurs": { + "account_number": "6515" + }, + "account_number": "651" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "6521" + }, + "Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "6525" + }, + "account_number": "652" + }, + "Valeurs comptables des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "6541" + }, + "Immobilisations corporelles": { + "account_number": "6542" + }, + "account_number": "654" + }, + "Perte de change sur cr\u00e9ances et dettes commerciale": { + "account_number": "656" + }, + "P\u00e9nalit\u00e9s et amendes p\u00e9nales": { + "account_number": "657" + }, + "Charges diverses": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "6581" + }, + "Dons": { + "account_number": "6582" + }, + "M\u00e9c\u00e9nat": { + "account_number": "6583" + }, + "Autres charges diverses": { + "account_number": "6588" + }, + "account_number": "658" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "6591" + }, + "Sur stocks": { + "account_number": "6593" + }, + "Sur cr\u00e9ances": { + "account_number": "6594" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": { + "account_number": "6598" + }, + "account_number": "659" + }, + "account_number": "65" + }, + "Charges de personnel": { + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "Appointements salaires et commissions": { + "account_number": "6611" + }, + "Primes et gratifications": { + "account_number": "6612" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6613" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6614" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6615" + }, + "Suppl\u00e9ment familial": { + "account_number": "6616" + }, + "Avantages en nature": { + "account_number": "6617" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6618" + }, + "account_number": "661" + }, + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "Appointements salaires et commissions": { + "account_number": "6621" + }, + "Primes et gratifications": { + "account_number": "6622" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6623" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6624" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6625" + }, + "Suppl\u00e9ment familial": { + "account_number": "6626" + }, + "Avantages en nature": { + "account_number": "6627" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6628" + }, + "account_number": "662" + }, + "Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "Indemnit\u00e9s de logement": { + "account_number": "6631" + }, + "Indemnit\u00e9s de repr\u00e9sentation": { + "account_number": "6632" + }, + "Indemnit\u00e9s d\u2019expatriation": { + "account_number": "6633" + }, + "Indemnit\u00e9s de transport": { + "account_number": "6634" + }, + "Autres indemnit\u00e9s et avantages divers": { + "account_number": "6638" + }, + "account_number": "663" + }, + "Charges sociales": { + "Charges sociales sur r\u00e9mun\u00e9ration du personnel national": { + "account_number": "6641" + }, + "Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": { + "account_number": "6642" + }, + "account_number": "664" + }, + "R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "R\u00e9mun\u00e9ration du travail de l\u2019exploitant": { + "account_number": "6661" + }, + "Charges sociales": { + "account_number": "6662" + }, + "account_number": "666" + }, + "R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "Personnel int\u00e9rimaire": { + "account_number": "6671" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6672" + }, + "account_number": "667" + }, + "Autres charges sociales": { + "Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": { + "account_number": "6681" + }, + "Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": { + "account_number": "6682" + }, + "Versements et contributions aux autres \u0153uvres sociales": { + "account_number": "6683" + }, + "M\u00e9decine du travail et pharmacie": { + "account_number": "6684" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "6685" + }, + "Assurances retraite et fonds de pension": { + "account_number": "6686" + }, + "Majorations et p\u00e9nalit\u00e9s sociales": { + "account_number": "6687" + }, + "Charges sociales diverses": { + "account_number": "6688" + }, + "account_number": "668" + }, + "account_number": "66" + }, + "Frais financiers et charges assimil\u00e9es": { + "Int\u00e9r\u00eats des emprunts": { + "Emprunts obligataires": { + "account_number": "6711" + }, + "Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "6712" + }, + "Dettes li\u00e9es \u00e0 des participations": { + "account_number": "6713" + }, + "Primes de remboursement des obligations": { + "account_number": "6714" + }, + "account_number": "671" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "6722" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "6723" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": { + "account_number": "6724" + }, + "Int\u00e9r\u00eats dans loyers des autres locations acquisition": { + "account_number": "6728" + }, + "account_number": "672" + }, + "Escomptes accord\u00e9s": { + "account_number": "673" + }, + "Autres int\u00e9r\u00eats": { + "Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": { + "account_number": "6741" + }, + "Comptes courants bloqu\u00e9s": { + "account_number": "6742" + }, + "Int\u00e9r\u00eats sur obligations cautionn\u00e9es": { + "account_number": "6743" + }, + "Int\u00e9r\u00eats sur dettes commerciales": { + "account_number": "6744" + }, + "Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": { + "account_number": "6745" + }, + "Int\u00e9r\u00eats sur dettes diverses": { + "account_number": "6748" + }, + "account_number": "674" + }, + "Escomptes des effets de commerce": { + "account_number": "675" + }, + "Pertes de change financi\u00e8res": { + "account_number": "676" + }, + "Pertes sur titres de placement": { + "Pertes sur cessions de titres de placement": { + "account_number": "6771" + }, + "Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "6772" + }, + "account_number": "677" + }, + "Pertes et charges sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "6781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "6782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "6784" + }, + "account_number": "678" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "6791" + }, + "Sur titres de placement": { + "account_number": "6795" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "6798" + }, + "account_number": "679" + }, + "account_number": "67" + }, + "Dotations aux amortissements": { + "Dotations aux amortissements d\u2019exploitation": { + "Dotations aux amortissements des immobilisations incorporelles": { + "account_number": "6812" + }, + "Dotations aux amortissements des immobilisations corporelles": { + "account_number": "6813" + }, + "account_number": "681" + }, + "account_number": "68" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6911" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "account_number": "6913" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": { + "account_number": "6914" + }, + "account_number": "691" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6971" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": { + "account_number": "6972" + }, + "account_number": "697" + }, + "account_number": "69" + }, + "root_type": "Expense", + "account_number": "6" + }, + "Comptes de produits des activit\u00e9s ordinaires": { + "Ventes": { + "Ventes de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "7011" + }, + "Hors R\u00e9gion": { + "account_number": "7012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7014" + }, + "Sur internet": { + "account_number": "7015" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7019" + }, + "account_number": "701" + }, + "Ventes de produits finis": { + "Dans la R\u00e9gion": { + "account_number": "7021" + }, + "Hors R\u00e9gion": { + "account_number": "7022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7024" + }, + "Sur internet": { + "account_number": "7025" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7029" + }, + "account_number": "702" + }, + "Ventes de produits interm\u00e9diaires": { + "Dans la R\u00e9gion": { + "account_number": "7031" + }, + "Hors R\u00e9gion": { + "account_number": "7032" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7033" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7034" + }, + "Sur internet": { + "account_number": "7035" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7039" + }, + "account_number": "703" + }, + "Ventes de produits r\u00e9siduels": { + "Dans la R\u00e9gion": { + "account_number": "7041" + }, + "Hors R\u00e9gion": { + "account_number": "7042" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7043" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7044" + }, + "Sur internet": { + "account_number": "7045" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7049" + }, + "account_number": "704" + }, + "Travaux factur\u00e9s": { + "Dans la R\u00e9gion": { + "account_number": "7051" + }, + "Hors R\u00e9gion": { + "account_number": "7052" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7053" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7054" + }, + "Sur internet": { + "account_number": "7055" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7059" + }, + "account_number": "705" + }, + "Services vendus": { + "Dans la R\u00e9gion": { + "account_number": "7061" + }, + "Hors R\u00e9gion": { + "account_number": "7062" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7063" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7064" + }, + "Sur internet": { + "account_number": "7065" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7069" + }, + "account_number": "706" + }, + "Produits accessoires": { + "Ports, emballages perdus et autres frais factur\u00e9s": { + "account_number": "7071" + }, + "Commissions et courtages": { + "account_number": "7072" + }, + "Locations": { + "account_number": "7073" + }, + "Bonis sur reprises et cessions d\u2019emballages": { + "account_number": "7074" + }, + "Mise \u00e0 disposition de personnel": { + "account_number": "7075" + }, + "Redevances pour brevets, logiciels, marques et droits similaires": { + "account_number": "7076" + }, + "Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": { + "account_number": "7077" + }, + "Autres produits accessoires": { + "account_number": "7078" + }, + "account_number": "707" + }, + "account_number": "70" + }, + "Subventions d\u2019exploitation": { + "Sur produits \u00e0 l\u2019exportation": { + "account_number": "711" + }, + "Sur produits \u00e0 l\u2019importation": { + "account_number": "712" + }, + "Sur produits de p\u00e9r\u00e9quation": { + "account_number": "713" + }, + "Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": { + "account_number": "714" + }, + "Autres subventions d\u2019exploitation": { + "Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": { + "account_number": "7181" + }, + "Vers\u00e9es par les organismes internationaux": { + "account_number": "7182" + }, + "Vers\u00e9es par des tiers": { + "account_number": "7183" + }, + "account_number": "718" + }, + "account_number": "71" + }, + "Production immobilis\u00e9e": { + "Immobilisations incorporelles": { + "account_number": "721" + }, + "Immobilisations corporelles": { + "Immobilisations corporelles (hors actifs biologiques)": { + "account_number": "7221" + }, + "Immobilisations corporelles (actifs biologiques)": { + "account_number": "7222" + }, + "account_number": "722" + }, + "Production auto-consomm\u00e9e": { + "account_number": "724" + }, + "Immobilisations financi\u00e8res": { + "account_number": "726" + }, + "account_number": "72" + }, + "Variations des stocks de biens et de services produits": { + "Variations des stocks de produits en cours": { + "Produits en cours": { + "account_number": "7341" + }, + "Travaux en cours": { + "account_number": "7342" + }, + "account_number": "734" + }, + "Variations des en-cours de services": { + "\u00c9tudes en cours": { + "account_number": "7351" + }, + "Prestations de services en cours": { + "account_number": "7352" + }, + "account_number": "735" + }, + "Variations des stocks de produits finis": { + "account_number": "736" + }, + "Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "account_number": "7371" + }, + "Produits r\u00e9siduels": { + "account_number": "7372" + }, + "account_number": "737" + }, + "account_number": "73" + }, + "Autres produits": { + "Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "account_number": "751" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "7521" + }, + "B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "7525" + }, + "account_number": "752" + }, + "Produits des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "7541" + }, + "Immobilisations corporelles": { + "account_number": "7542" + }, + "account_number": "754" + }, + "Gains de change sur cr\u00e9ances et dettes commerciales": { + "account_number": "756" + }, + "Produits divers": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "7581" + }, + "Indemnit\u00e9s d\u2019assurances re\u00e7ues": { + "account_number": "7582" + }, + "Autres produits divers": { + "account_number": "7588" + }, + "account_number": "758" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "7591" + }, + "Sur stocks": { + "account_number": "7593" + }, + "Sur cr\u00e9ances": { + "account_number": "7594" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "account_number": "7598" + }, + "account_number": "759" + }, + "account_number": "75" + }, + "Revenus financiers et produits assimil\u00e9s": { + "Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "Int\u00e9r\u00eats de pr\u00eats": { + "account_number": "7712" + }, + "Int\u00e9r\u00eats sur cr\u00e9ances diverses": { + "account_number": "7713" + }, + "account_number": "771" + }, + "Revenus de participations et autres titres immobilis\u00e9s": { + "Revenus des titres de participation": { + "account_number": "7721" + }, + "Revenus autres titres immobilis\u00e9s": { + "account_number": "7722" + }, + "account_number": "772" + }, + "Escomptes obtenus": { + "account_number": "773" + }, + "Revenus de placement": { + "Revenus des obligations": { + "account_number": "7745" + }, + "Revenus des titres de placement": { + "account_number": "7746" + }, + "account_number": "774" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "account_number": "775" + }, + "Gains de change financiers": { + "account_number": "776" + }, + "Gains sur cessions de titres de placement": { + "account_number": "777" + }, + "Gains sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "7781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "7782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "7784" + }, + "account_number": "778" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "7791" + }, + "Sur titres de placement": { + "account_number": "7795" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "7798" + }, + "account_number": "779" + }, + "account_number": "77" + }, + "Transferts de charges": { + "Transferts de charges d\u2019exploitation": { + "account_number": "781" + }, + "Transferts de charges financi\u00e8res": { + "account_number": "787" + }, + "account_number": "78" + }, + "Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Pour risques et charges": { + "account_number": "7911" + }, + "Des immobilisations incorporelles": { + "account_number": "7913" + }, + "Des immobilisations corporelles": { + "account_number": "7914" + }, + "account_number": "791" + }, + "Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "Pour risques et charges": { + "account_number": "7971" + }, + "Des immobilisations financi\u00e8res": { + "account_number": "7972" + }, + "account_number": "797" + }, + "Reprises d\u2019amortissements": { + "account_number": "798" + }, + "Reprises de subventions d\u2019investissement": { + "account_number": "799" + }, + "account_number": "79" + }, + "root_type": "Income", + "account_number": "7" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "Valeurs comptables des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "811" + }, + "Immobilisations corporelles": { + "account_number": "812" + }, + "Immobilisations financi\u00e8res": { + "account_number": "816" + }, + "account_number": "81" + }, + "Charges hors activit\u00e9s ordinaires": { + "Charges HAO constat\u00e9es": { + "account_number": "831" + }, + "Charges li\u00e9es aux op\u00e9rations de restructuration": { + "account_number": "833" + }, + "Pertes sur cr\u00e9ances HAO": { + "account_number": "834" + }, + "Dons et lib\u00e9ralit\u00e9s accord\u00e9s": { + "account_number": "835" + }, + "Abandons de cr\u00e9ances consentis": { + "account_number": "836" + }, + "Charges li\u00e9es aux op\u00e9rations de liquidation": { + "account_number": "837" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "839" + }, + "account_number": "83" + }, + "Dotations hors activit\u00e9s ordinaires": { + "Dotations aux provisions r\u00e9glement\u00e9es": { + "account_number": "851" + }, + "Dotations aux amortissements HAO": { + "account_number": "852" + }, + "Dotations aux d\u00e9pr\u00e9ciations HAO": { + "account_number": "853" + }, + "Dotations aux provisions pour risques et charges HAO": { + "account_number": "854" + }, + "Autres dotations HAO": { + "account_number": "858" + }, + "account_number": "85" + }, + "Participation des travailleurs": { + "Participation l\u00e9gale aux b\u00e9n\u00e9fices": { + "account_number": "871" + }, + "Participation contractuelle aux b\u00e9n\u00e9fices": { + "account_number": "874" + }, + "Autres participations": { + "account_number": "878" + }, + "account_number": "87" + }, + "Imp\u00f4ts sur le r\u00e9sultat": { + "Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": { + "account_number": "8911" + }, + "Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": { + "account_number": "8912" + }, + "Activit\u00e9s exerc\u00e9es hors R\u00e9gion": { + "account_number": "8913" + }, + "account_number": "891" + }, + "Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "account_number": "892" + }, + "Imp\u00f4t minimum forfaitaire IMF": { + "account_number": "895" + }, + "D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "D\u00e9gr\u00e8vements": { + "account_number": "8991" + }, + "Annulations pour pertes r\u00e9troactives": { + "account_number": "8994" + }, + "account_number": "899" + }, + "account_number": "89" + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "Produits des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "821" + }, + "Immobilisations corporelles": { + "account_number": "822" + }, + "Immobilisations financi\u00e8res": { + "account_number": "826" + }, + "account_number": "82" + }, + "Produits hors activit\u00e9s ordinaires": { + "Produits HAO constat\u00e9s": { + "account_number": "841" + }, + "Produits li\u00e9s aux op\u00e9rations de restructuration": { + "account_number": "843" + }, + "Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": { + "account_number": "844" + }, + "Dons et lib\u00e9ralit\u00e9s obtenus": { + "account_number": "845" + }, + "Abandons de cr\u00e9ances obtenus": { + "account_number": "846" + }, + "Produits li\u00e9s aux op\u00e9rations de liquidation": { + "account_number": "847" + }, + "Transferts de charges HAO": { + "account_number": "848" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "849" + }, + "account_number": "84" + }, + "Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "Reprises de provisions r\u00e9glement\u00e9es": { + "account_number": "861" + }, + "Reprises d\u2019amortissements HAO": { + "account_number": "862" + }, + "Reprises de d\u00e9pr\u00e9ciations HAO": { + "account_number": "863" + }, + "Reprises de provisions pour risques et charges HAO": { + "account_number": "864" + }, + "Autres reprises HAO": { + "account_number": "868" + }, + "account_number": "86" + }, + "Subventions d\u2019\u00e9quilibre": { + "\u00c9tat": { + "account_number": "881" + }, + "Collectivit\u00e9s publiques": { + "account_number": "884" + }, + "Groupe": { + "account_number": "886" + }, + "Autres": { + "account_number": "888" + }, + "account_number": "88" + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/tg_plan_comptable.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/tg_plan_comptable.json new file mode 100644 index 00000000000..dca6c08db7a --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/tg_plan_comptable.json @@ -0,0 +1,1919 @@ +{ + "country_code": "tg", + "name": "Syscohada - Plan Comptable", + "tree": { + "1-Comptes de ressources durables": { + "10-Capital": { + "101-Capital social": { + "1011-Capital souscrit, non appel\u00e9": {}, + "1012-Capital souscrit, appel\u00e9, non vers\u00e9": {}, + "1013-Capital souscrit, appel\u00e9, vers\u00e9, non amorti": {}, + "1014-Capital souscrit, appel\u00e9, vers\u00e9, amorti": {}, + "1018-Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": {} + }, + "102-Capital par dotation": { + "1021-Dotation initiale": {}, + "1022-Dotations compl\u00e9mentaires": {}, + "1028-Autres dotations": {} + }, + "103-Capital personnel": {}, + "104-Compte de l\u2019exploitant": { + "1041-Apports temporaires": {}, + "1042-Op\u00e9rations courantes": {}, + "1043-R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": {}, + "1047-Pr\u00e9l\u00e8vements d\u2019autoconsommation": {}, + "1048-Autres pr\u00e9l\u00e8vements": {} + }, + "105-Primes li\u00e9es au capital social": { + "1051-Primes d\u2019\u00e9mission": {}, + "1052-Primes d\u2019apport": {}, + "1053-Primes de fusion": {}, + "1054-Primes de conversion": {}, + "1058-Autres primes": {} + }, + "106-\u00c9carts de r\u00e9\u00e9valuation": { + "1061-\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": {}, + "1062-\u00c9carts de r\u00e9\u00e9valuation libre": {} + }, + "109-Apporteurs, capital souscrit, non appel\u00e9": {} + }, + "11-R\u00e9serves": { + "111-R\u00e9serve l\u00e9gale": {}, + "112-R\u00e9serves statutaires ou contractuelles": {}, + "113-R\u00e9serves r\u00e9glement\u00e9es": { + "1131-R\u00e9serves de plus-values nettes \u00e0 long terme": {}, + "1132-R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {}, + "1133-R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": {}, + "1134-R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": {}, + "1135-Autres r\u00e9serves r\u00e9glement\u00e9es": {} + }, + "118-Autres r\u00e9serves": { + "1181-R\u00e9serves facultatives": {}, + "1188-R\u00e9serves diverses": {} + } + }, + "12-Report \u00e0 nouveau": { + "121-Report \u00e0 nouveau cr\u00e9diteur": {}, + "129-Report \u00e0 nouveau d\u00e9biteur": { + "1291-Perte nette \u00e0 reporter": {}, + "1292-Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": {} + } + }, + "13-R\u00e9sultat net de l\u2019exercice": { + "130-R\u00e9sultat en instance d\u2019affectation": { + "1301-R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": {}, + "1309-R\u00e9sultat en instance d\u2019affectation : perte": {} + }, + "131-R\u00e9sultat net : b\u00e9n\u00e9fice": {}, + "132-Marge commerciale (MC)": {}, + "133-Valeur ajout\u00e9e (VA)": {}, + "134-Exc\u00e9dent brut d\u2019exploitation (EBE)": {}, + "135-R\u00e9sultat d\u2019exploitation (RE)": {}, + "136-R\u00e9sultat financier (RF)": {}, + "137-R\u00e9sultat des activit\u00e9s ordinaires (RAO)": {}, + "138-R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "1381-R\u00e9sultat de fusion": {}, + "1382-R\u00e9sultat d\u2019apport partiel d\u2019actif": {}, + "1383-R\u00e9sultat de scission": {}, + "1384-R\u00e9sultat de liquidation": {} + }, + "139-R\u00e9sultat net : perte": {} + }, + "14-Subventions d\u2019investissement": { + "141-Subventions d\u2019\u00e9quipement": { + "1411-\u00c9tat": {}, + "1412-R\u00e9gions": {}, + "1413-D\u00e9partements": {}, + "1414-Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": {}, + "1415-Entit\u00e9s publiques ou mixtes": {}, + "1416-Entit\u00e9s et organismes priv\u00e9s": {}, + "1417-Organismes internationaux": {}, + "1418-Autres": {} + }, + "148-Autres subventions d\u2019investissement": {} + }, + "15-Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "151-Amortissements d\u00e9rogatoires": {}, + "152-Plus-values de cession \u00e0 r\u00e9investir": {}, + "153-Fonds r\u00e9glement\u00e9s": { + "1531-Fonds National": {}, + "1532-Pr\u00e9l\u00e8vement pour le Budget": {} + }, + "154-Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": {}, + "155-Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "1551-Reconstitution des gisements miniers et p\u00e9troliers": {} + }, + "156-Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "1561-Hausse de prix": {}, + "1562-Fluctuation des cours": {} + }, + "157-Provisions pour investissement": {}, + "158-Autres provisions et fonds r\u00e9glement\u00e9s": {} + }, + "16-Emprunts et dettes assimil\u00e9es": { + "161-Emprunts obligataires": { + "1611-Emprunts obligataires ordinaires": {}, + "1612-Emprunts obligataires convertibles en actions": {}, + "1613-Emprunts obligataires remboursables en actions": {}, + "1618-Autres emprunts obligataires": {} + }, + "162-Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "163-Avances re\u00e7ues de l\u2019\u00c9tat": {}, + "164-Avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "165-D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "1651-D\u00e9p\u00f4ts": {}, + "1652-Cautionnements": {} + }, + "166-Int\u00e9r\u00eats courus": { + "1661-Sur emprunts obligataires": {}, + "1662-Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "1663-Sur avances re\u00e7ues de l\u2019\u00c9tat": {}, + "1664-Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": {}, + "1665-Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": {}, + "1667-Sur avances assorties de conditions particuli\u00e8res": {}, + "1668-Sur autres emprunts et dettes": {} + }, + "167-Avances assorties de conditions particuli\u00e8res": { + "1671-Avances bloqu\u00e9es pour augmentation du capital": {}, + "1672-Avances conditionn\u00e9es par l\u2019\u00c9tat": {}, + "1673-Avances conditionn\u00e9es par les autres organismes africains": {}, + "1674-Avances conditionn\u00e9es par les organismes internationaux": {} + }, + "168-Autres emprunts et dettes": { + "1681-Rentes viag\u00e8res capitalis\u00e9es": {}, + "1682-Billets de fonds": {}, + "1683-Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": {}, + "1684-Emprunts participatifs": {}, + "1685-Participation des travailleurs aux b\u00e9n\u00e9fices": {}, + "1686-Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": {} + } + }, + "17-Dettes de location acquisition": { + "172-Dettes de location acquisition / cr\u00e9dit bail immobilier": {}, + "173-Dettes de location acquisition / cr\u00e9dit bail mobilier": {}, + "174-Dettes de location acquisition / location de vente": {}, + "176-Int\u00e9r\u00eats courus": { + "1762-Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": {}, + "1763-Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": {}, + "1764-Sur dettes de location acquisition / location-vente": {}, + "1768-Sur autres dettes de location acquisition": {} + }, + "178-Autres dettes de location acquisition": {} + }, + "18-Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "181-Dettes li\u00e9es \u00e0 des participations": { + "1811-Dettes li\u00e9es \u00e0 des participations (groupe)": {}, + "1812-Dettes li\u00e9es \u00e0 des participations (hors groupe)": {} + }, + "182-Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "183-Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": {}, + "184-Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "185-Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": {}, + "186-Comptes de liaison charges": {}, + "187-Comptes de liaison produits": {}, + "188-Comptes de liaison des soci\u00e9t\u00e9s en participation": {} + }, + "19-Provisions pour risques et charges": { + "191-Provisions pour litiges": {}, + "192-Provisions pour garanties donn\u00e9es aux clients": {}, + "193-Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": {}, + "194-Provisions pour pertes de change": {}, + "195-Provisions pour imp\u00f4ts": {}, + "196-Provisions pour pensions et obligations similaires": { + "1961-Provisions pour pensions et obligations similaires engagement de retraite": {}, + "1962-Actif du r\u00e9gime de retraite": {} + }, + "197-Provisions pour restructuration": {}, + "198-Autres provisions pour risques et charges": { + "1981-Provisions pour amendes et p\u00e9nalit\u00e9s": {}, + "1983-Provisions pour propre assureur": {}, + "1984-Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "1985-Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": {}, + "1988-Provisions pour divers risques et charges": {} + } + }, + "root_type": "Equity" + }, + "2-Comptes d\u2019actif immobilis\u00e9": { + "21-Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "211-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "212-Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "2121-Brevets": { + "account_type": "Fixed Asset" + }, + "2122-Licences": { + "account_type": "Fixed Asset" + }, + "2123-Concessions de service public": { + "account_type": "Fixed Asset" + }, + "2128-Autres concessions et droits similaires": { + "account_type": "Fixed Asset" + } + }, + "213-Logiciels et sites internet": { + "account_type": "Fixed Asset", + "2131-Logiciels": { + "account_type": "Fixed Asset" + }, + "2132-Sites internet": { + "account_type": "Fixed Asset" + } + }, + "214-Marques": { + "account_type": "Fixed Asset" + }, + "215-Fonds commercial": { + "account_type": "Fixed Asset" + }, + "216-Droit au bail": { + "account_type": "Fixed Asset" + }, + "217-Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset" + }, + "218-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "2181-Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset" + }, + "2182-Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset" + }, + "2183-Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset" + }, + "2184-Co\u00fbts des franchises": { + "account_type": "Fixed Asset" + }, + "2188-Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset" + } + }, + "219-Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "2191-Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset" + }, + "2193-Logiciels et internet": { + "account_type": "Fixed Asset" + }, + "2198-Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset" + } + } + }, + "22-Terrains": { + "account_type": "Fixed Asset", + "221-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "2211-Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset" + }, + "2212-Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset" + }, + "2218-Autres terrains": { + "account_type": "Fixed Asset" + } + }, + "222-Terrains nus": { + "account_type": "Fixed Asset", + "2221-Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset" + }, + "2228-Autres terrains nus": { + "account_type": "Fixed Asset" + } + }, + "223-Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "2231-Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset" + }, + "2232-Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset" + }, + "2234-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset" + }, + "2235-Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset" + }, + "2238-Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset" + } + }, + "224-Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "2241-Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset" + }, + "2245-Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset" + }, + "2248-Autres travaux": { + "account_type": "Fixed Asset" + } + }, + "225-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "2251-Carri\u00e8res": { + "account_type": "Fixed Asset" + } + }, + "226-Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "2261-Parkings": { + "account_type": "Fixed Asset" + } + }, + "227-Terrains mis en concession": { + "account_type": "Fixed Asset" + }, + "228-Autres terrains": { + "account_type": "Fixed Asset", + "2281-Terrains immeubles de placement": { + "account_type": "Fixed Asset" + }, + "2285-Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset" + }, + "2286-Terrains de location acquisition": { + "account_type": "Fixed Asset" + }, + "2288-Divers terrains": { + "account_type": "Fixed Asset" + } + }, + "229-Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "2291-Terrains agricoles et forestiers": { + "account_type": "Fixed Asset" + }, + "2292-Terrains nus": { + "account_type": "Fixed Asset" + }, + "2295-Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset" + }, + "2298-Autres terrains": { + "account_type": "Fixed Asset" + } + } + }, + "23-B\u00e2timents, installations techniques et agencements": { + "231-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "2311-B\u00e2timents industriels": {}, + "2312-B\u00e2timents agricoles": {}, + "2313-B\u00e2timents administratifs et commerciaux": {}, + "2314-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2315-B\u00e2timents immeubles de placement": {}, + "2316-B\u00e2timents de location acquisition": {} + }, + "232-B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "2321-B\u00e2timents industriels": {}, + "2322-B\u00e2timents agricoles": {}, + "2323-B\u00e2timents administratifs et commerciaux": {}, + "2324-B\u00e2timents affect\u00e9s au logement du personnel": {}, + "2325-B\u00e2timents immeubles de placement": {}, + "2326-B\u00e2timents de location acquisition": {} + }, + "233-Ouvrages d\u2019infrastructure": { + "2331-Voies de terre": {}, + "2332-Voies de fer": {}, + "2333-Voies d\u2019eau": {}, + "2334-Barrages, Digues": {}, + "2335-Pistes d\u2019a\u00e9rodrome": {}, + "2338-Autres ouvrages d\u2019infrastructures": {} + }, + "234-Am\u00e9nagements, agencements et installations techniques": { + "2341-Installations complexes sp\u00e9cialis\u00e9es sur sol propre": {}, + "2342-Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": {}, + "2343-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": {}, + "2344-Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": {}, + "2345-Am\u00e9nagements et agencements des b\u00e2timents": {} + }, + "235-Am\u00e9nagements de bureaux": { + "2351-Installations g\u00e9n\u00e9rales": {}, + "2358-Autres am\u00e9nagements de bureaux": {} + }, + "237-B\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "238-Autres installations et agencements": {}, + "239-B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "2391-B\u00e2timents en cours": {}, + "2392-Installations en cours": {}, + "2393-Ouvrages d\u2019infrastructure en cours": {}, + "2394-Am\u00e9nagements et agencements et installations techniques en cours": {}, + "2395-Am\u00e9nagements de bureaux en cours": {}, + "2398-Autres installations et agencements en cours": {} + } + }, + "24-Mat\u00e9riel, mobilier et actifs biologiques": { + "241-Mat\u00e9riel et outillage industriel et commercial": { + "2411-Mat\u00e9riel industriel": {}, + "2412-Outillage industriel": {}, + "2413-Mat\u00e9riel commercial": {}, + "2414-Outillage commercial": {}, + "2416-Mat\u00e9riel & outillage industriel et commercial de location-acquisition": {} + }, + "242-Mat\u00e9riel et outillage agricole": { + "2421-Mat\u00e9riel agricole": {}, + "2422-Outillage agricole": {}, + "2426-Mat\u00e9riel & outillage agricole de location-acquisition": {} + }, + "243-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "244-Mat\u00e9riel et mobilier": { + "2441-Mat\u00e9riel de bureau": {}, + "2442-Mat\u00e9riel informatique": {}, + "2443-Mat\u00e9riel bureautique": {}, + "2444-Mobilier de bureau": {}, + "2445-Mat\u00e9riel et mobilier immeubles de placement": {}, + "2446-Mat\u00e9riel et mobilier de location acquisition": {}, + "2447-Mat\u00e9riel et mobilier des logements du personnel": {} + }, + "245-Mat\u00e9riel de transport": { + "2451-Mat\u00e9riel automobile": {}, + "2452-Mat\u00e9riel ferroviaire": {}, + "2453-Mat\u00e9riel fluvial, lagunaire": {}, + "2454-Mat\u00e9riel naval": {}, + "2455-Mat\u00e9riel a\u00e9rien": {}, + "2456-Mat\u00e9riel de transport de location-acquisition": {}, + "2457-Mat\u00e9riel hippomobile": {}, + "2458-Autres mat\u00e9riels de transport": {} + }, + "246-Actifs biologiques": { + "2461-Cheptel, animaux de trait": {}, + "2462-Cheptel, animaux reproducteurs": {}, + "2463-Animaux de garde": {}, + "2465-Plantations agricoles": {}, + "2468-Autres actifs biologiques": {} + }, + "247-Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "2471-Agencements et am\u00e9nagements du mat\u00e9riel": {}, + "2472-Agencements et am\u00e9nagements des actifs biologiques": {}, + "2478-Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": {} + }, + "248-Autres mat\u00e9riels et mobiliers": { + "2481-Collections et \u0153uvres d\u2019art": {}, + "2488-Divers mat\u00e9riels mobiliers": {} + }, + "249-Mat\u00e9riels et actifs biologiques en cours": { + "2491-Mat\u00e9riel et outillage industriel et commercial": {}, + "2492-Mat\u00e9riel et outillage agricole": {}, + "2493-Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2494-Mat\u00e9riel et mobilier de bureau": {}, + "2495-Mat\u00e9riel de transport": {}, + "2496-Actifs biologiques": {}, + "2497-Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": {}, + "2498-Autres mat\u00e9riels et actifs biologiques en cours": {} + } + }, + "25-Avances et acomptes vers\u00e9s sur immobilisations": { + "251-Avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "252-Avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "26-Titres de participation": { + "261-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "262-Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "263-Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "265-Participations dans des organismes professionnels": {}, + "266-Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {}, + "268-Autres titres de participation": {} + }, + "27-Autres immobilisations financi\u00e8res": { + "271-Pr\u00eats et cr\u00e9ances": { + "2711-Pr\u00eats participatifs": {}, + "2712-Pr\u00eats aux associ\u00e9s": {}, + "2713-Billets de fonds": {}, + "2714-Titres pr\u00eat\u00e9s": {}, + "2718-Autres pr\u00eats et cr\u00e9ances": {} + }, + "272-Pr\u00eats au personnel": { + "2721-Pr\u00eats immobiliers": {}, + "2722-Pr\u00eats mobiliers et d\u2019installation": {}, + "2728-Autres pr\u00eats au personnel": {} + }, + "273-Cr\u00e9ances sur l\u2019\u00c9tat": { + "2731-Retenues de garantie": {}, + "2733-Fonds r\u00e9glement\u00e9": {}, + "2734-Cr\u00e9ances sur le conc\u00e9dant": {}, + "2738-Autres cr\u00e9ances sur l\u2019\u00c9tat": {} + }, + "274-Titres immobilis\u00e9s": { + "2741-Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": {}, + "2742-Titres participatifs": {}, + "2743-Certificats d\u2019investissement": {}, + "2744-Parts de fonds commun de placement (FCP)": {}, + "2745-Obligations": {}, + "2746-Actions ou parts propres": {}, + "2748-Autres titres immobilis\u00e9s": {} + }, + "275-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "2751-D\u00e9p\u00f4ts pour loyers d\u2019avance": {}, + "2752-D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": {}, + "2753-D\u00e9p\u00f4ts pour l\u2019eau": {}, + "2754-D\u00e9p\u00f4ts pour le gaz": {}, + "2755-D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": {}, + "2756-Cautionnements sur march\u00e9s publics": {}, + "2757-Cautionnements sur autres op\u00e9rations": {}, + "2758-Autres d\u00e9p\u00f4ts et cautionnements": {} + }, + "276-Int\u00e9r\u00eats courus": { + "2761-Pr\u00eats et cr\u00e9ances non commerciales": {}, + "2762-Pr\u00eats au personnel": {}, + "2763-Cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2764-Titres immobilis\u00e9s": {}, + "2765-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2767-Cr\u00e9ances rattach\u00e9es \u00e0 des participations": {}, + "2768-Immobilisations financi\u00e8res diverses": {} + }, + "277-Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "2771-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": {}, + "2772-Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": {}, + "2773-Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": {}, + "2774-Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": {} + }, + "278-Immobilisations financi\u00e8res diverses": { + "2781-Cr\u00e9ances diverses groupe": {}, + "2782-Cr\u00e9ances diverses hors groupe": {}, + "2784-Banques d\u00e9p\u00f4ts \u00e0 terme": {}, + "2785-Or et m\u00e9taux pr\u00e9cieux": {}, + "2788-Autres immobilisations financi\u00e8res": {} + } + }, + "28-Amortissements": { + "account_type": "Accumulated Depreciation", + "281-Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "2811-Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation" + }, + "2812-Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation" + }, + "2813-Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation" + }, + "2814-Amortissements des marques": { + "account_type": "Accumulated Depreciation" + }, + "2815-Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation" + }, + "2816-Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation" + }, + "2817-Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation" + }, + "2818-Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation" + } + }, + "282-Amortissements des terrains": { + "2824-Amortissements des travaux de mise en valeur des terrains": {} + }, + "283-Amortissements des b\u00e2timents, installations techniques et agencements": { + "2831-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2832-Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2833-Amortissements des ouvrages d\u2019infrastructure": {}, + "2834-Amortissements des am\u00e9nagements, agencements et installations techniques": {}, + "2835-Amortissements des am\u00e9nagements de bureaux": {}, + "2837-Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2838-Amortissements des autres installations et agencements": {} + }, + "284-Amortissements du mat\u00e9riel": { + "2841-Amortissements du mat\u00e9riel et outillage industriel et commercial": {}, + "2842-Amortissements du mat\u00e9riel et outillage agricole": {}, + "2843-Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2844-Amortissements du mat\u00e9riel et mobilier": {}, + "2845-Amortissements du mat\u00e9riel de transport": {}, + "2846-Amortissements des actifs biologiques": {}, + "2847-Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2848-Amortissements des autres mat\u00e9riels": {} + } + }, + "29-D\u00e9pr\u00e9ciations des immobilisations": { + "291-D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "2911-D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": {}, + "2912-D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": {}, + "2913-D\u00e9pr\u00e9ciations des logiciels et sites internet": {}, + "2914-D\u00e9pr\u00e9ciations des marques": {}, + "2915-D\u00e9pr\u00e9ciations du fonds commercial": {}, + "2916-D\u00e9pr\u00e9ciations du droit au bail": {}, + "2917-D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": {}, + "2918-D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": {}, + "2919-D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": {} + }, + "292-D\u00e9pr\u00e9ciations des terrains": { + "2921-D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": {}, + "2922-D\u00e9pr\u00e9ciations des terrains nus": {}, + "2923-D\u00e9pr\u00e9ciations des terrains b\u00e2tis": {}, + "2924-D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": {}, + "2925-D\u00e9pr\u00e9ciations des terrains de gisement": {}, + "2926-D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": {}, + "2927-D\u00e9pr\u00e9ciations des terrains mis en concession": {}, + "2928-D\u00e9pr\u00e9ciations des autres terrains": {}, + "2929-D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": {} + }, + "293-D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "2931-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": {}, + "2932-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": {}, + "2933-D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": {}, + "2934-D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": {}, + "2935-D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": {}, + "2937-D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": {}, + "2938-D\u00e9pr\u00e9ciations des autres installations et agencements": {}, + "2939-D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": {} + }, + "294-D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "2941-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": {}, + "2942-D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": {}, + "2943-D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": {}, + "2944-D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": {}, + "2945-D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": {}, + "2946-D\u00e9pr\u00e9ciations des actifs biologiques": {}, + "2947-D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": {}, + "2948-D\u00e9pr\u00e9ciations des autres mat\u00e9riels": {}, + "2949-D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": {} + }, + "295-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "2951-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": {}, + "2952-D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": {} + }, + "296-D\u00e9pr\u00e9ciations des titres de participation": { + "2961-D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": {}, + "2962-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": {}, + "2963-D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": {}, + "2965-D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": {}, + "2966-D\u00e9pr\u00e9ciations des parts dans des GIE": {}, + "2968-D\u00e9pr\u00e9ciations des autres titres de participation": {} + }, + "297-D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "2971-D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": {}, + "2972-D\u00e9pr\u00e9ciations des pr\u00eats au personnel": {}, + "2973-D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": {}, + "2974-D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": {}, + "2975-D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": {}, + "2977-D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": {}, + "2978-D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": {} + } + }, + "root_type": "Asset" + }, + "3-Comptes de Stocks": { + "31-Marchandises": { + "311-Marchandises A": { + "3111-Marchandises A1": {}, + "3112-Marchandises A2": {} + }, + "312-Marchandises B": { + "3121-Marchandises B1": {}, + "3122-Marchandises B2": {} + }, + "313-Actifs biologiques": { + "3131-Animaux": {}, + "3132-V\u00e9g\u00e9taux": {} + }, + "318-Marchandises hors activit\u00e9s ordinaires (HAO)": {} + }, + "32-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "321-Mati\u00e8res A": {}, + "322-Mati\u00e8res B": {}, + "323-Fournitures (A, B)": {} + }, + "33-Autres approvisionnements": { + "331-Mati\u00e8res consommables": {}, + "332-Fournitures d\u2019atelier et d\u2019usine": {}, + "333-Fournitures de magasin": {}, + "334-Fournitures de bureau": {}, + "335-Emballages": { + "3351-Emballages perdus": {}, + "3352-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "3353-Emballages \u00e0 usage mixte": {}, + "3358-Autres emballages": {} + }, + "338-Autres mati\u00e8res": {} + }, + "34-Produits en cours": { + "341-Produits en cours": { + "3411-Produits en cours P1": {}, + "3412-Produits en cours P2": {} + }, + "342-Travaux en cours": { + "3421-Travaux en cours T1": {}, + "3422-Travaux en cours T2": {} + }, + "343-Produits interm\u00e9diaires en cours": { + "3431-Produits interm\u00e9diaires A": {}, + "3432-Produits interm\u00e9diaires B": {} + }, + "344-Produits r\u00e9siduels en cours": { + "3441-Produits r\u00e9siduels A": {}, + "3442-Produits r\u00e9siduels B": {} + }, + "345-Actifs biologiques en cours": { + "3451-Animaux": {}, + "3452-V\u00e9g\u00e9taux": {} + } + }, + "35-Services en cours": { + "351-\u00c9tudes en cours": { + "3511-\u00c9tudes en cours E1": {}, + "3512-\u00c9tudes en cours E2": {} + }, + "352-Prestations de services en cours": { + "3521-Prestations de services S1": {}, + "3522-Prestations de services S2": {} + } + }, + "36-Produits finis": { + "361-Produits finis A": {}, + "362-Produits finis B": {}, + "363-Actifs biologiques": { + "3631-Animaux": {}, + "3632-V\u00e9g\u00e9taux": {}, + "3638-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "37-Produits interm\u00e9diaires et r\u00e9siduels": { + "371-Produits interm\u00e9diaires": { + "3711-Produits interm\u00e9diaires A": {}, + "3712-Produits interm\u00e9diaires B": {} + }, + "372-Produits r\u00e9siduels": { + "3721-D\u00e9chets": {}, + "3722-Rebuts": {}, + "3723-Mati\u00e8res de R\u00e9cup\u00e9ration": {} + }, + "373-Actifs biologiques": { + "3731-Animaux": {}, + "3732-V\u00e9g\u00e9taux": {}, + "3738-Autres stocks (activit\u00e9s annexes)": {} + } + }, + "38-Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "381-Marchandises en cours de route": {}, + "382-Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": {}, + "383-Autres approvisionnements en cours de route": {}, + "386-Produits finis en cours de route": {}, + "387-Stock en consignation ou en d\u00e9p\u00f4t": { + "3871-Stock en consignation": {}, + "3872-Stock en d\u00e9p\u00f4t": {} + }, + "388-Stock provenant d\u2019immobilisations mises hors service ou au rebut": {} + }, + "39-D\u00e9pr\u00e9ciations des stocks et encours de production": { + "391-D\u00e9pr\u00e9ciations des stocks de marchandises": {}, + "392-D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "393-D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": {}, + "394-D\u00e9pr\u00e9ciations des productions en cours": {}, + "395-D\u00e9pr\u00e9ciations des services en cours": {}, + "396-D\u00e9pr\u00e9ciations des stocks de produits finis": {}, + "397-D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": {}, + "398-D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": {} + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "409-Fournisseurs d\u00e9biteurs": { + "4091-Fournisseurs Avances et acomptes vers\u00e9s": {}, + "4092-Fournisseurs Groupe avances et acomptes vers\u00e9s": {}, + "4093-Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": {}, + "4094-Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": {}, + "4098-Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": {} + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "411-Clients": { + "4111-Clients": { + "account_type": "Receivable" + }, + "4112-Clients groupe": { + "account_type": "Receivable" + }, + "4114-Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable" + }, + "4115-Clients, organismes internationaux": { + "account_type": "Receivable" + }, + "4116-Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable" + }, + "4117-Client, retenues de garantie": { + "account_type": "Receivable" + }, + "4118-Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "412-Clients, effets \u00e0 recevoir en portefeuille": { + "4121-Clients, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4122-Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4124-\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "4125-Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "413-Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "4131-Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable" + }, + "4132-Clients, effets impay\u00e9s": { + "account_type": "Receivable" + }, + "4133-Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable" + }, + "4138-Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "414-Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "4141-Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4142-Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable" + }, + "4146-Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable" + }, + "4147-Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "415-Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable" + }, + "416-Cr\u00e9ances clients litigieuses ou douteuses": { + "4161-Cr\u00e9ances litigieuses": { + "account_type": "Receivable" + }, + "4162-Cr\u00e9ances douteuses": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "418-Clients, produits \u00e0 recevoir": { + "4181-Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable" + }, + "4186-Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "421-Personnel, avances et acomptes": { + "4211-Personnel, avances": {}, + "4212-Personnel, acomptes": {}, + "4213-Frais avanc\u00e9s et fournitures au personnel": {} + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "4311-Prestations familiales": {}, + "4312-Accidents de travail": {}, + "4313-Caisse de retraite obligatoire": {}, + "4314-Caisse de retraite facultative": {}, + "4318-Autres cotisations sociales": {} + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "4331-Mutuelle": {}, + "4332-Assurances retraite": {}, + "4333-Assurances et organismes de sant\u00e9": {} + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4387-Produits \u00e0 recevoir": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "443-\u00c9tat, TVA factur\u00e9e": { + "4431-TVA factur\u00e9e sur ventes": {}, + "4432-TVA factur\u00e9e sur prestations de services": {}, + "4433-TVA factur\u00e9e sur travaux": {}, + "4434-TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": {}, + "4435-TVA sur factures \u00e0 \u00e9tablir": {} + }, + "445-\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "4451-TVA r\u00e9cup\u00e9rable sur immobilisations": {}, + "4452-TVA r\u00e9cup\u00e9rable sur achats": {}, + "4453-TVA r\u00e9cup\u00e9rable sur transport": {}, + "4454-TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": {}, + "4455-TVA r\u00e9cup\u00e9rable sur factures non parvenues": {}, + "4456-TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": {} + }, + "448-\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "4486-Charges \u00e0 payer": {}, + "4487-Produits \u00e0 recevoir": {} + }, + "449-\u00c9tat, cr\u00e9ances et dettes diverses": { + "4491-\u00c9tat, obligations cautionn\u00e9es": {}, + "4492-\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": {}, + "4493-\u00c9tat, fonds de dotation \u00e0 recevoir": {}, + "4494-\u00c9tat, subventions investissement \u00e0 recevoir": {}, + "4495-\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": {}, + "4496-\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": {}, + "4497-\u00c9tat, avances sur subventions": {}, + "4499-\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": {} + } + }, + "45-Organismes internationaux (ACTIF)": { + "451-Op\u00e9rations avec les organismes africains": {}, + "452-Op\u00e9rations avec les autres organismes internationaux": {}, + "458-Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "4581-Organismes internationaux, fonds de dotation \u00e0 recevoir": {}, + "4582-Organismes internationaux, subventions \u00e0 recevoir": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "4613-Apporteurs, capital appel\u00e9, non vers\u00e9": {}, + "4614-Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": {}, + "4618-Apporteurs, titres \u00e0 \u00e9changer": {} + }, + "467-Apporteurs, restant d\u00fb sur capital appel\u00e9": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "4721-Cr\u00e9ances sur cessions de titres de placement": {}, + "4726-Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": {} + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "4731-Mandants": {}, + "4732-Mandataires": {}, + "4733-Commettants": {}, + "4734-Commissionnaires": {}, + "4739-\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "4747-Compte de r\u00e9partition p\u00e9riodique des produits": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "4751-Compte actif": { + "account_type": "Temporary" + } + }, + "476-Charges constat\u00e9es d\u2019avance": {}, + "478-\u00c9carts de conversion actif": { + "4781-Diminution des cr\u00e9ances d\u2019exploitation": {}, + "4782-Diminution des cr\u00e9ances financi\u00e8res": {}, + "4783-Augmentation des dettes d\u2019exploitation": {}, + "4784-Augmentation des dettes financi\u00e8res": {}, + "4786-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4788-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "485-Cr\u00e9ances sur cessions d\u2019immobilisations": { + "4851-En compte, immobilisations incorporelles": {}, + "4852-En compte, immobilisations corporelles": {}, + "4853-Effets \u00e0 recevoir, immobilisations incorporelles": {}, + "4854-Effets \u00e0 recevoir, immobilisations corporelles": {}, + "4855-Effets escompt\u00e9s non \u00e9chus": {}, + "4857-Retenues de garantie": {}, + "4858-Factures \u00e0 \u00e9tablir": {} + }, + "488-Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": {} + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "491-D\u00e9pr\u00e9ciations des comptes clients": { + "4911-Cr\u00e9ances litigieuses": {}, + "4912-Cr\u00e9ances douteuses": {} + }, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {}, + "496-D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "4962-Associ\u00e9s, comptes courants": {}, + "4963-Associ\u00e9s, op\u00e9rations faites en commun": {}, + "4966-Groupe, comptes courants": {} + }, + "497-D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": {}, + "498-D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "4985-Cr\u00e9ances sur cessions d\u2019immobilisations": {}, + "4986-Cr\u00e9ances sur cessions de titres de placement": {}, + "4988-Autres cr\u00e9ances HAO": {} + }, + "499-Provisions pour risques \u00e0 court terme": { + "4991-Sur op\u00e9rations d\u2019exploitation": {}, + "4997-Sur op\u00e9rations financi\u00e8res": {}, + "4998-Sur op\u00e9rations HAO": {} + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "401-Fournisseurs, dettes en compte": { + "4011-Fournisseurs": { + "account_type": "Payable" + }, + "4012-Fournisseurs groupe": { + "account_type": "Payable" + }, + "4013-Fournisseurs sous-traitants": { + "account_type": "Payable" + }, + "4016-Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable" + }, + "4017-Fournisseur, retenues de garantie": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "402-Fournisseurs, effets \u00e0 payer": { + "4021-Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable" + }, + "4022-Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable" + }, + "4023-Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "404-Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "4041-Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4042-Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable" + }, + "4046-Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable" + }, + "4047-Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable" + }, + "account_type": "Payable" + }, + "408-Fournisseurs, factures non parvenues": { + "4081-Fournisseurs": { + "account_type": "Stock Received But Not Billed" + }, + "4082-Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed" + }, + "4083-Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed" + }, + "4086-Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Stock Received But Not Billed" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "419-Clients cr\u00e9diteurs": { + "4191-Clients, avances et acomptes re\u00e7us": {}, + "4192-Clients groupe, avances et acomptes re\u00e7us": {}, + "4194-Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": {}, + "4198-Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": {} + } + }, + "42-Personnel (PASSIF)": { + "422-Personnel, r\u00e9mun\u00e9rations dues": {}, + "423-Personnel, oppositions, saisies-arr\u00eats": { + "4231-Personnel, oppositions": {}, + "4232-Personnel, saisies-arr\u00eats": {}, + "4233-Personnel, avis \u00e0 tiers d\u00e9tenteur": {} + }, + "424-Personnel, \u0153uvres sociales internes": { + "4241-Assistance m\u00e9dicale": {}, + "4242-Allocations familiales": {}, + "4245-Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": {}, + "4248-Autres \u0153uvres sociales internes": {} + }, + "425-Repr\u00e9sentants du personnel": { + "4251-D\u00e9l\u00e9gu\u00e9s du personnel": {}, + "4252-Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": {}, + "4258-Autres repr\u00e9sentants du personnel": {} + }, + "426-Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "4261-Participation aux b\u00e9n\u00e9fices": {}, + "4264-Participation au capital": {} + }, + "427-Personnel d\u00e9p\u00f4ts": {}, + "428-Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "4281-Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": {}, + "4286-Autres charges \u00e0 payer": {}, + "4287-Produits \u00e0 recevoir": {} + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "4381-Charges sociales sur gratifications \u00e0 payer": {}, + "4382-Charges sociales sur cong\u00e9s \u00e0 payer": {}, + "4386-Autres charges \u00e0 payer": {} + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "441-\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": {}, + "442-\u00c9tat, autres imp\u00f4ts et taxes": { + "4421-Imp\u00f4ts et taxes d\u2019\u00c9tat": {}, + "4422-Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": {}, + "4423-Imp\u00f4ts et taxes recouvrables sur des obligataires": {}, + "4424-Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": {}, + "4426-Droits de douane": {}, + "4428-Autres imp\u00f4ts et taxes": {} + }, + "444-\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "4441-\u00c9tat, TVA due": {}, + "4449-\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": {} + }, + "446-\u00c9tat, autres taxes sur le chiffre d\u2019affaires": {}, + "447-\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "4471-Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": {}, + "4472-Imp\u00f4ts sur salaires": {}, + "4473-Contribution nationale": {}, + "4474-Contribution nationale de solidarit\u00e9": {}, + "4478-Autres imp\u00f4ts et contributions": {} + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "4611-Apporteurs, apports en nature": {}, + "4612-Apporteurs, apports en num\u00e9raire": {}, + "4615-Apporteurs, versements re\u00e7us sur augmentation de capital": {}, + "4616-Apporteurs, versements anticip\u00e9s": {}, + "4617-Apporteurs d\u00e9faillants": {}, + "4619-Apporteurs, capital \u00e0 rembourser": {} + }, + "462-Associ\u00e9s, comptes courants": { + "4621-Principal": {}, + "4626-Int\u00e9r\u00eats courus": {} + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "4631-Op\u00e9rations courantes": {}, + "4636-Int\u00e9r\u00eats courus": {} + }, + "465-Associ\u00e9s, dividendes \u00e0 payer": {}, + "466-Groupe, comptes courants": {} + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "4711-D\u00e9biteurs divers": {}, + "4712-Cr\u00e9diteurs divers": {}, + "4713-Obligataires": {}, + "4715-R\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "4716-Compte d\u2019affacturage": {}, + "4717-D\u00e9biteurs divers retenues de garantie": {}, + "4718-Apport, compte de fusion et op\u00e9rations assimil\u00e9es": {}, + "4719-Bons de souscription d\u2019actions et d\u2019obligations": {} + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "4746-Compte de r\u00e9partition p\u00e9riodique des charges": {} + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "4752-Compte passif": {} + }, + "477-Produits constat\u00e9s d\u2019avance": {}, + "479-\u00c9carts de conversion passif": { + "4791-Augmentation des cr\u00e9ances d\u2019exploitation": {}, + "4792-Augmentation des cr\u00e9ances financi\u00e8res": {}, + "4793-Diminution des dettes d\u2019exploitation": {}, + "4794-Diminution des dettes financi\u00e8res": {}, + "4797-Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": {}, + "4798-Diff\u00e9rences compens\u00e9es par couverture de change": {} + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "481-Fournisseurs d\u2019investissements": { + "4811-Immobilisations incorporelles": {}, + "4812-Immobilisations corporelles": {}, + "4813-Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": {}, + "4816-R\u00e9serve de propri\u00e9t\u00e9": {}, + "4817-Retenues de garantie": {}, + "4818-Factures non parvenues": {} + }, + "482-Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "4821-Immobilisations incorporelles": {}, + "4822-Immobilisations corporelles": {} + }, + "484-Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "4887-Produits": {} + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (PASSIF)": { + "490-D\u00e9pr\u00e9ciations des comptes fournisseurs": {}, + "492-D\u00e9pr\u00e9ciations des comptes personnel": {}, + "493-D\u00e9pr\u00e9ciations des comptes organismes sociaux": {}, + "494-D\u00e9pr\u00e9ciations des comptes \u00c9tat et collectivit\u00e9s publiques": {}, + "495-D\u00e9pr\u00e9ciations des comptes organismes internationaux": {} + }, + "root_type": "Liability" + }, + "5-Comptes de tr\u00e9sorerie": { + "50-Titres de placement": { + "501-Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "5011-Titres du Tr\u00e9sor \u00e0 court terme": {}, + "5012-Titres d\u2019organismes financiers": {}, + "5013-Bons de caisse \u00e0 court terme": {}, + "5016-Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": {} + }, + "502-Actions": { + "5021-Actions ou parts propres": {}, + "5022-Actions cot\u00e9es": {}, + "5023-Actions non cot\u00e9es": {}, + "5024-Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": {}, + "5025-Autres actions": {}, + "5026-Frais d\u2019acquisition des actions": {} + }, + "503-Obligations": { + "5031-Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": {}, + "5032-Obligations cot\u00e9es": {}, + "5033-Obligations non cot\u00e9es": {}, + "5035-Autres obligations": {}, + "5036-Frais d\u2019acquisition des obligations": {} + }, + "504-Bons de souscription": { + "5042-Bons de souscription d\u2019actions": {}, + "5043-Bons de souscription d\u2019obligations": {} + }, + "505-Titres n\u00e9gociables hors r\u00e9gion": {}, + "506-Int\u00e9r\u00eats courus": { + "5061-Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": {}, + "5062-Actions": {}, + "5063-Obligations": {} + }, + "508-Autres titres de placement et cr\u00e9ances assimil\u00e9es": {} + }, + "51-Valeurs \u00e0 encaisser": { + "511-Effets \u00e0 encaisser": {}, + "512-Effets \u00e0 l\u2019encaissement": {}, + "513-Ch\u00e8ques \u00e0 encaisser": {}, + "514-Ch\u00e8ques \u00e0 l\u2019encaissement": {}, + "515-Cartes de cr\u00e9dit \u00e0 encaisser": {}, + "518-Autres valeurs \u00e0 l\u2019encaissement": { + "5181-Warrants": {}, + "5182-Billets de fonds": {}, + "5185-Ch\u00e8ques de voyage": {}, + "5186-Coupons \u00e9chus": {}, + "5187-Int\u00e9r\u00eats \u00e9chus des obligations": {} + } + }, + "52-Banques": { + "521-Banques locales": { + "5211-Banques en monnaie nationale": { + "account_type": "Bank" + }, + "5215-Banques en devises": { + "account_type": "Bank" + }, + "account_type": "Bank" + }, + "522-Banques autres \u00c9tats r\u00e9gion": {}, + "523-Banques autres \u00c9tats zone mon\u00e9taire": {}, + "524-Banques hors zone mon\u00e9taire": {}, + "525-Banques d\u00e9p\u00f4t \u00e0 terme": {}, + "526-Banques, int\u00e9r\u00eats courus": { + "5261-Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": {}, + "5267-Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": {} + } + }, + "53-\u00c9tablissements financiers et assimil\u00e9s": { + "531-Ch\u00e8ques postaux": {}, + "532-Tr\u00e9sor": {}, + "533-Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": {}, + "536-\u00c9tablissements financiers, int\u00e9r\u00eats courus": {}, + "538-Autres organismes financiers": {} + }, + "54-Instruments de tr\u00e9sorerie": { + "541-Options de taux d\u2019int\u00e9r\u00eat": {}, + "542-Options de taux de change": {}, + "543-Options de taux boursiers": {}, + "544-Instruments de march\u00e9s \u00e0 terme": {}, + "545-Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": {} + }, + "55-Instruments de monnaie \u00e9lectronique": { + "551-Monnaie \u00e9lectronique carte carburant": {}, + "552-Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": {}, + "553-Monnaie \u00e9lectronique carte p\u00e9age": {}, + "554-Porte-monnaie \u00e9lectronique": {}, + "558-Autres instruments de monnaies \u00e9lectroniques": {} + }, + "56-Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "561-Cr\u00e9dits de tr\u00e9sorerie": {}, + "564-Escompte de cr\u00e9dits de campagne": {}, + "565-Escompte de cr\u00e9dits ordinaires": {}, + "566-Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": {} + }, + "57-Caisse": { + "571-Caisse si\u00e8ge social": { + "5711-Caisse en monnaie nationale": {}, + "5712-Caisse en devises": {} + }, + "572-Caisse succursale A": { + "5721-En monnaie nationale": {}, + "5722-En devises": {} + }, + "573-Caisse succursale B": { + "5731-En monnaie nationale": {}, + "5732-En devises": {} + } + }, + "58-R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "581-R\u00e9gies d\u2019avance": {}, + "582-Accr\u00e9ditifs": {}, + "585-Virements de fonds": {}, + "588-Autres virements internes": {} + }, + "59-D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "590-D\u00e9pr\u00e9ciations des titres de placement": {}, + "591-D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": {}, + "592-D\u00e9pr\u00e9ciations des comptes banques": {}, + "593-D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": {}, + "594-D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": {}, + "599-Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": {} + }, + "root_type": "Asset" + }, + "6-Comptes de charges des activit\u00e9s ordinaires": { + "60-Achats et variations de stocks": { + "601-Achats de marchandises": { + "6011-Dans la R\u00e9gion": {}, + "6012-Hors R\u00e9gion": {}, + "6013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6015-Frais sur achats": {}, + "6019-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "602-Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "6021-Dans la R\u00e9gion": {}, + "6022-Hors R\u00e9gion": {}, + "6023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "6024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "6025-Frais sur achats": {}, + "6029-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "603-Variations des stocks de biens achet\u00e9s": { + "6031-Variations des stocks de marchandises": {}, + "6032-Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": {}, + "6033-Variations des stocks d\u2019autres approvisionnements": {} + }, + "604-Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "6041-Mati\u00e8res consommables": {}, + "6042-Mati\u00e8res combustibles": {}, + "6043-Produits d\u2019entretien": {}, + "6044-Fournitures d\u2019atelier et d\u2019usine": {}, + "6045-Frais sur achat": {}, + "6046-Fournitures de magasin": {}, + "6047-Fournitures de bureau": {}, + "6049-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "605-Autres achats": { + "6051-Fournitures non stockables Eau": {}, + "6052-Fournitures non stockables \u00c9lectricit\u00e9": {}, + "6053-Fournitures non stockables Autres \u00e9nergies": {}, + "6054-Fournitures d\u2019entretien non stockables": {}, + "6055-Fournitures de bureau non stockables": {}, + "6056-Achats de petit mat\u00e9riel et outillage": {}, + "6057-Achats d\u2019\u00e9tudes et prestations de services": {}, + "6058-Achats de travaux, mat\u00e9riels et \u00e9quipements": {}, + "6059-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + }, + "608-Achats d\u2019emballages": { + "6081-Emballages perdus": {}, + "6082-Emballages r\u00e9cup\u00e9rables non identifiables": {}, + "6083-Emballages \u00e0 usage mixte": {}, + "6085-Frais sur achats": {}, + "6089-Rabais, remises et ristournes obtenus (non ventil\u00e9s)": {} + } + }, + "61-Transports": { + "612-Transports sur ventes": {}, + "613-Transports pour le compte de tiers": {}, + "614-Transports du personnel": {}, + "616-Transports de plis": {}, + "618-Autres frais de transport": { + "6181-Voyages et d\u00e9placements": {}, + "6182-Transports entre \u00e9tablissements ou chantiers": {}, + "6183-Transports administratifs": {} + } + }, + "62-Services ext\u00e9rieurs": { + "621-Sous-traitance g\u00e9n\u00e9rale": {}, + "622-Locations, charges locatives": { + "6221-Locations de terrains": {}, + "6222-Locations de b\u00e2timents": {}, + "6223-Locations de mat\u00e9riels et outillages": {}, + "6224-Malis sur emballages": {}, + "6225-Locations d\u2019emballages": {}, + "6226-Fermages et loyers du foncier": {}, + "6228-Locations et charges locatives diverses": {} + }, + "623-Redevances de location acquisition": { + "6232-Cr\u00e9dit-bail immobilier": {}, + "6233-Cr\u00e9dit-bail mobilier": {}, + "6234-Location-vente": {}, + "6238-Autres contrats de location acquisition": {} + }, + "624-Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "6241-Entretien et r\u00e9parations des biens immobiliers": {}, + "6242-Entretien et r\u00e9parations des biens mobiliers": {}, + "6243-Maintenance": {}, + "6244-Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": {}, + "6248-Autres entretiens et r\u00e9parations": {} + }, + "625-Primes d\u2019assurance": { + "6251-Assurances multirisques": {}, + "6252-Assurances mat\u00e9riel de transport": {}, + "6253-Assurances risques d\u2019exploitation": {}, + "6254-Assurances responsabilit\u00e9 du producteur": {}, + "6255-Assurances insolvabilit\u00e9 clients": {}, + "6257-Assurances transport sur ventes": {}, + "6258-Autres primes d\u2019assurances": {} + }, + "626-\u00c9tudes, recherches et documentation": { + "6261-\u00c9tudes et recherches": {}, + "6265-Documentation g\u00e9n\u00e9rale": {}, + "6266-Documentation technique": {} + }, + "627-Publicit\u00e9, publications, relations publiques": { + "6271-Annonces, insertions": {}, + "6272-Catalogues, imprim\u00e9s publicitaires": {}, + "6273-\u00c9chantillons": {}, + "6274-Foires et expositions": {}, + "6275-Publications": {}, + "6276-Cadeaux \u00e0 la client\u00e8le": {}, + "6277-Frais de colloques, s\u00e9minaires, conf\u00e9rences": {}, + "6278-Autres charges de publicit\u00e9 et relations publiques": {} + }, + "628-Frais de t\u00e9l\u00e9communications": { + "6281-Frais de t\u00e9l\u00e9phone": {}, + "6282-Frais de t\u00e9lex": {}, + "6283-Frais de t\u00e9l\u00e9copie": {}, + "6288-Autres frais de t\u00e9l\u00e9communications": {} + } + }, + "63-Autres services ext\u00e9rieurs": { + "631-Frais bancaires": { + "6311-Frais sur titres (vente, garde)": {}, + "6312-Frais sur effets": {}, + "6313-Location de coffres": {}, + "6314-Commissions d\u2019affacturage": {}, + "6315-Commissions sur cartes de cr\u00e9dit": {}, + "6316-Frais d\u2019\u00e9mission d\u2019emprunts": {}, + "6317-Frais sur instruments monnaie \u00e9lectronique": {}, + "6318-Autres frais bancaires": {} + }, + "632-R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "6322-Commissions et courtages sur ventes": {}, + "6324-Honoraires des professions r\u00e9glement\u00e9es": {}, + "6325-Frais d\u2019actes et de contentieux": {}, + "6326-R\u00e9mun\u00e9rations d\u2019affacturage": {}, + "6327-R\u00e9mun\u00e9rations des autres prestataires de services": {}, + "6328-Divers frais": {} + }, + "633-Frais de formation du personnel": {}, + "634-Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "6342-Redevances pour brevets, licences": {}, + "6343-Redevances pour logiciels": {}, + "6344-Redevances pour marques": {}, + "6345-Redevances pour sites internet": {}, + "6346-Redevances pour concessions, droits et valeurs similaires": {} + }, + "635-Cotisations": { + "6351-Cotisations": {}, + "6358-Concours divers": {} + }, + "637-R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "6371-Personnel int\u00e9rimaire": {}, + "6372-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "638-Autres charges externes": { + "6381-Frais de recrutement du personnel": {}, + "6382-Frais de d\u00e9m\u00e9nagement": {}, + "6383-R\u00e9ceptions": {}, + "6384-Missions": {}, + "6385-Charges de copropri\u00e9t\u00e9": {} + } + }, + "64-Imp\u00f4ts et taxes": { + "641-Imp\u00f4ts et taxes directs": { + "6411-Imp\u00f4ts fonciers et taxes annexes": {}, + "6412-Patentes, licences et taxes annexes": {}, + "6413-Taxes sur appointements et salaires": {}, + "6414-Taxes d\u2019apprentissage": {}, + "6415-Formation professionnelle continue": {}, + "6418-Autres imp\u00f4ts et taxes directs": {} + }, + "645-Imp\u00f4ts et taxes indirects": {}, + "646-Droits d\u2019enregistrement": { + "6461-Droits de mutation": {}, + "6462-Droits de timbre": {}, + "6463-Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": {}, + "6464-Vignettes": {}, + "6468-Autres droits": {} + }, + "647-P\u00e9nalit\u00e9s, amendes fiscales": { + "6471-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": {}, + "6472-P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": {}, + "6473-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": {}, + "6474-P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": {}, + "6478-Autres p\u00e9nalit\u00e9s et amendes fiscales": {} + }, + "648-Autres imp\u00f4ts et taxes": {} + }, + "65-Autres charges": { + "651-Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "6511-Clients": {}, + "6515-Autres d\u00e9biteurs": {} + }, + "652-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "6521-Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": {}, + "6525-Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "654-Valeurs comptables des cessions courantes d\u2019immobilisations": { + "6541-Immobilisations incorporelles": {}, + "6542-Immobilisations corporelles": {} + }, + "656-Perte de change sur cr\u00e9ances et dettes commerciale": {}, + "657-P\u00e9nalit\u00e9s et amendes p\u00e9nales": {}, + "658-Charges diverses": { + "6581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "6582-Dons": {}, + "6583-M\u00e9c\u00e9nat": {}, + "6588-Autres charges diverses": {} + }, + "659-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "6591-Sur risques \u00e0 court terme": {}, + "6593-Sur stocks": {}, + "6594-Sur cr\u00e9ances": {}, + "6598-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": {} + } + }, + "66-Charges de personnel": { + "661-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "6611-Appointements salaires et commissions": {}, + "6612-Primes et gratifications": {}, + "6613-Cong\u00e9s pay\u00e9s": {}, + "6614-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6615-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6616-Suppl\u00e9ment familial": {}, + "6617-Avantages en nature": {}, + "6618-Autres r\u00e9mun\u00e9rations directes": {} + }, + "662-R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "6621-Appointements salaires et commissions": {}, + "6622-Primes et gratifications": {}, + "6623-Cong\u00e9s pay\u00e9s": {}, + "6624-Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": {}, + "6625-Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": {}, + "6626-Suppl\u00e9ment familial": {}, + "6627-Avantages en nature": {}, + "6628-Autres r\u00e9mun\u00e9rations directes": {} + }, + "663-Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "6631-Indemnit\u00e9s de logement": {}, + "6632-Indemnit\u00e9s de repr\u00e9sentation": {}, + "6633-Indemnit\u00e9s d\u2019expatriation": {}, + "6634-Indemnit\u00e9s de transport": {}, + "6638-Autres indemnit\u00e9s et avantages divers": {} + }, + "664-Charges sociales": { + "6641-Charges sociales sur r\u00e9mun\u00e9ration du personnel national": {}, + "6642-Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": {} + }, + "666-R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "6661-R\u00e9mun\u00e9ration du travail de l\u2019exploitant": {}, + "6662-Charges sociales": {} + }, + "667-R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "6671-Personnel int\u00e9rimaire": {}, + "6672-Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": {} + }, + "668-Autres charges sociales": { + "6681-Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": {}, + "6682-Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": {}, + "6683-Versements et contributions aux autres \u0153uvres sociales": {}, + "6684-M\u00e9decine du travail et pharmacie": {}, + "6685-Assurances et organismes de sant\u00e9": {}, + "6686-Assurances retraite et fonds de pension": {}, + "6687-Majorations et p\u00e9nalit\u00e9s sociales": {}, + "6688-Charges sociales diverses": {} + } + }, + "67-Frais financiers et charges assimil\u00e9es": { + "671-Int\u00e9r\u00eats des emprunts": { + "6711-Emprunts obligataires": {}, + "6712-Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": {}, + "6713-Dettes li\u00e9es \u00e0 des participations": {}, + "6714-Primes de remboursement des obligations": {} + }, + "672-Int\u00e9r\u00eats dans loyers de location acquisition": { + "6722-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": {}, + "6723-Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": {}, + "6724-Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": {}, + "6728-Int\u00e9r\u00eats dans loyers des autres locations acquisition": {} + }, + "673-Escomptes accord\u00e9s": {}, + "674-Autres int\u00e9r\u00eats": { + "6741-Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": {}, + "6742-Comptes courants bloqu\u00e9s": {}, + "6743-Int\u00e9r\u00eats sur obligations cautionn\u00e9es": {}, + "6744-Int\u00e9r\u00eats sur dettes commerciales": {}, + "6745-Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": {}, + "6748-Int\u00e9r\u00eats sur dettes diverses": {} + }, + "675-Escomptes des effets de commerce": {}, + "676-Pertes de change financi\u00e8res": {}, + "677-Pertes sur titres de placement": { + "6771-Pertes sur cessions de titres de placement": {}, + "6772-Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": {} + }, + "678-Pertes et charges sur risques financiers": { + "6781-Sur rentes viag\u00e8res": {}, + "6782-Sur op\u00e9rations financi\u00e8res": {}, + "6784-Sur instruments de tr\u00e9sorerie": {} + }, + "679-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "6791-Sur risques financiers": {}, + "6795-Sur titres de placement": {}, + "6798-Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "68-Dotations aux amortissements": { + "681-Dotations aux amortissements d\u2019exploitation": { + "6812-Dotations aux amortissements des immobilisations incorporelles": {}, + "6813-Dotations aux amortissements des immobilisations corporelles": {} + } + }, + "69-Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "691-Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "6911-Dotations aux provisions pour risques et charges": {}, + "6913-Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": {}, + "6914-Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": {} + }, + "697-Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "6971-Dotations aux provisions pour risques et charges": {}, + "6972-Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": {} + } + }, + "root_type": "Expense" + }, + "7-Comptes de produits des activit\u00e9s ordinaires": { + "70-Ventes": { + "701-Ventes de marchandises": { + "7011-Dans la R\u00e9gion": {}, + "7012-Hors R\u00e9gion": {}, + "7013-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7014-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7015-Sur internet": {}, + "7019-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "702-Ventes de produits finis": { + "7021-Dans la R\u00e9gion": {}, + "7022-Hors R\u00e9gion": {}, + "7023-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7024-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7025-Sur internet": {}, + "7029-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "703-Ventes de produits interm\u00e9diaires": { + "7031-Dans la R\u00e9gion": {}, + "7032-Hors R\u00e9gion": {}, + "7033-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7034-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7035-Sur internet": {}, + "7039-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "704-Ventes de produits r\u00e9siduels": { + "7041-Dans la R\u00e9gion": {}, + "7042-Hors R\u00e9gion": {}, + "7043-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7044-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7045-Sur internet": {}, + "7049-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "705-Travaux factur\u00e9s": { + "7051-Dans la R\u00e9gion": {}, + "7052-Hors R\u00e9gion": {}, + "7053-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7054-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7055-Sur internet": {}, + "7059-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "706-Services vendus": { + "7061-Dans la R\u00e9gion": {}, + "7062-Hors R\u00e9gion": {}, + "7063-Aux entit\u00e9s du groupe dans la R\u00e9gion": {}, + "7064-Aux entit\u00e9s du groupe hors R\u00e9gion": {}, + "7065-Sur internet": {}, + "7069-Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": {} + }, + "707-Produits accessoires": { + "7071-Ports, emballages perdus et autres frais factur\u00e9s": {}, + "7072-Commissions et courtages": {}, + "7073-Locations": {}, + "7074-Bonis sur reprises et cessions d\u2019emballages": {}, + "7075-Mise \u00e0 disposition de personnel": {}, + "7076-Redevances pour brevets, logiciels, marques et droits similaires": {}, + "7077-Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": {}, + "7078-Autres produits accessoires": {} + } + }, + "71-Subventions d\u2019exploitation": { + "711-Sur produits \u00e0 l\u2019exportation": {}, + "712-Sur produits \u00e0 l\u2019importation": {}, + "713-Sur produits de p\u00e9r\u00e9quation": {}, + "714-Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": {}, + "718-Autres subventions d\u2019exploitation": { + "7181-Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": {}, + "7182-Vers\u00e9es par les organismes internationaux": {}, + "7183-Vers\u00e9es par des tiers": {} + } + }, + "72-Production immobilis\u00e9e": { + "721-Immobilisations incorporelles": {}, + "722-Immobilisations corporelles": { + "7221-Immobilisations corporelles (hors actifs biologiques)": {}, + "7222-Immobilisations corporelles (actifs biologiques)": {} + }, + "724-Production auto-consomm\u00e9e": {}, + "726-Immobilisations financi\u00e8res": {} + }, + "73-Variations des stocks de biens et de services produits": { + "734-Variations des stocks de produits en cours": { + "7341-Produits en cours": {}, + "7342-Travaux en cours": {} + }, + "735-Variations des en-cours de services": { + "7351-\u00c9tudes en cours": {}, + "7352-Prestations de services en cours": {} + }, + "736-Variations des stocks de produits finis": {}, + "737-Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "7371-Produits interm\u00e9diaires": {}, + "7372-Produits r\u00e9siduels": {} + } + }, + "75-Autres produits": { + "751-Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": {}, + "752-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "7521-Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": {}, + "7525-B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": {} + }, + "754-Produits des cessions courantes d\u2019immobilisations": { + "7541-Immobilisations incorporelles": {}, + "7542-Immobilisations corporelles": {} + }, + "756-Gains de change sur cr\u00e9ances et dettes commerciales": {}, + "758-Produits divers": { + "7581-Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": {}, + "7582-Indemnit\u00e9s d\u2019assurances re\u00e7ues": {}, + "7588-Autres produits divers": {} + }, + "759-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "7591-Sur risques \u00e0 court terme": {}, + "7593-Sur stocks": {}, + "7594-Sur cr\u00e9ances": {}, + "7598-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": {} + } + }, + "77-Revenus financiers et produits assimil\u00e9s": { + "771-Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "7712-Int\u00e9r\u00eats de pr\u00eats": {}, + "7713-Int\u00e9r\u00eats sur cr\u00e9ances diverses": {} + }, + "772-Revenus de participations et autres titres immobilis\u00e9s": { + "7721-Revenus des titres de participation": {}, + "7722-Revenus autres titres immobilis\u00e9s": {} + }, + "773-Escomptes obtenus": {}, + "774-Revenus de placement": { + "7745-Revenus des obligations": {}, + "7746-Revenus des titres de placement": {} + }, + "775-Int\u00e9r\u00eats dans loyers de location acquisition": {}, + "776-Gains de change financiers": {}, + "777-Gains sur cessions de titres de placement": {}, + "778-Gains sur risques financiers": { + "7781-Sur rentes viag\u00e8res": {}, + "7782-Sur op\u00e9rations financi\u00e8res": {}, + "7784-Sur instruments de tr\u00e9sorerie": {} + }, + "779-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "7791-Sur risques financiers": {}, + "7795-Sur titres de placement": {}, + "7798-Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": {} + } + }, + "78-Transferts de charges": { + "781-Transferts de charges d\u2019exploitation": {}, + "787-Transferts de charges financi\u00e8res": {} + }, + "79-Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "791-Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "7911-Pour risques et charges": {}, + "7913-Des immobilisations incorporelles": {}, + "7914-Des immobilisations corporelles": {} + }, + "797-Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "7971-Pour risques et charges": {}, + "7972-Des immobilisations financi\u00e8res": {} + }, + "798-Reprises d\u2019amortissements": {}, + "799-Reprises de subventions d\u2019investissement": {} + }, + "root_type": "Income" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "81-Valeurs comptables des cessions d\u2019immobilisations": { + "811-Immobilisations incorporelles": {}, + "812-Immobilisations corporelles": {}, + "816-Immobilisations financi\u00e8res": {} + }, + "83-Charges hors activit\u00e9s ordinaires": { + "831-Charges HAO constat\u00e9es": {}, + "833-Charges li\u00e9es aux op\u00e9rations de restructuration": {}, + "834-Pertes sur cr\u00e9ances HAO": {}, + "835-Dons et lib\u00e9ralit\u00e9s accord\u00e9s": {}, + "836-Abandons de cr\u00e9ances consentis": {}, + "837-Charges li\u00e9es aux op\u00e9rations de liquidation": {}, + "839-Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "85-Dotations hors activit\u00e9s ordinaires": { + "851-Dotations aux provisions r\u00e9glement\u00e9es": {}, + "852-Dotations aux amortissements HAO": {}, + "853-Dotations aux d\u00e9pr\u00e9ciations HAO": {}, + "854-Dotations aux provisions pour risques et charges HAO": {}, + "858-Autres dotations HAO": {} + }, + "87-Participation des travailleurs": { + "871-Participation l\u00e9gale aux b\u00e9n\u00e9fices": {}, + "874-Participation contractuelle aux b\u00e9n\u00e9fices": {}, + "878-Autres participations": {} + }, + "89-Imp\u00f4ts sur le r\u00e9sultat": { + "891-Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "8911-Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": {}, + "8912-Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": {}, + "8913-Activit\u00e9s exerc\u00e9es hors R\u00e9gion": {} + }, + "892-Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": {}, + "895-Imp\u00f4t minimum forfaitaire IMF": {}, + "899-D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "8991-D\u00e9gr\u00e8vements": {}, + "8994-Annulations pour pertes r\u00e9troactives": {} + } + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "82-Produits des cessions d\u2019immobilisations": { + "821-Immobilisations incorporelles": {}, + "822-Immobilisations corporelles": {}, + "826-Immobilisations financi\u00e8res": {} + }, + "84-Produits hors activit\u00e9s ordinaires": { + "841-Produits HAO constat\u00e9s": {}, + "843-Produits li\u00e9s aux op\u00e9rations de restructuration": {}, + "844-Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": {}, + "845-Dons et lib\u00e9ralit\u00e9s obtenus": {}, + "846-Abandons de cr\u00e9ances obtenus": {}, + "847-Produits li\u00e9s aux op\u00e9rations de liquidation": {}, + "848-Transferts de charges HAO": {}, + "849-Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": {} + }, + "86-Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "861-Reprises de provisions r\u00e9glement\u00e9es": {}, + "862-Reprises d\u2019amortissements HAO": {}, + "863-Reprises de d\u00e9pr\u00e9ciations HAO": {}, + "864-Reprises de provisions pour risques et charges HAO": {}, + "868-Autres reprises HAO": {} + }, + "88-Subventions d\u2019\u00e9quilibre": { + "881-\u00c9tat": {}, + "884-Collectivit\u00e9s publiques": {}, + "886-Groupe": {}, + "888-Autres": {} + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/tg_plan_comptable_avec_code.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/tg_plan_comptable_avec_code.json new file mode 100644 index 00000000000..a797b971e1d --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/tg_plan_comptable_avec_code.json @@ -0,0 +1,4208 @@ +{ + "country_code": "tg", + "name": "Syscohada - Plan Comptable avec code", + "tree": { + "Comptes de ressources durables": { + "Capital": { + "Capital social": { + "Capital souscrit, non appel\u00e9": { + "account_number": "1011" + }, + "Capital souscrit, appel\u00e9, non vers\u00e9": { + "account_number": "1012" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, non amorti": { + "account_number": "1013" + }, + "Capital souscrit, appel\u00e9, vers\u00e9, amorti": { + "account_number": "1014" + }, + "Capital souscrit soumis \u00e0 des conditions particuli\u00e8res": { + "account_number": "1018" + }, + "account_number": "101" + }, + "Capital par dotation": { + "Dotation initiale": { + "account_number": "1021" + }, + "Dotations compl\u00e9mentaires": { + "account_number": "1022" + }, + "Autres dotations": { + "account_number": "1028" + }, + "account_number": "102" + }, + "Capital personnel": { + "account_number": "103" + }, + "Compte de l\u2019exploitant": { + "Apports temporaires": { + "account_number": "1041" + }, + "Op\u00e9rations courantes": { + "account_number": "1042" + }, + "R\u00e9mun\u00e9rations, imp\u00f4ts et autres charges personnelles": { + "account_number": "1043" + }, + "Pr\u00e9l\u00e8vements d\u2019autoconsommation": { + "account_number": "1047" + }, + "Autres pr\u00e9l\u00e8vements": { + "account_number": "1048" + }, + "account_number": "104" + }, + "Primes li\u00e9es au capital social": { + "Primes d\u2019\u00e9mission": { + "account_number": "1051" + }, + "Primes d\u2019apport": { + "account_number": "1052" + }, + "Primes de fusion": { + "account_number": "1053" + }, + "Primes de conversion": { + "account_number": "1054" + }, + "Autres primes": { + "account_number": "1058" + }, + "account_number": "105" + }, + "\u00c9carts de r\u00e9\u00e9valuation": { + "\u00c9carts de r\u00e9\u00e9valuation l\u00e9gale": { + "account_number": "1061" + }, + "\u00c9carts de r\u00e9\u00e9valuation libre": { + "account_number": "1062" + }, + "account_number": "106" + }, + "Apporteurs, capital souscrit, non appel\u00e9": { + "account_number": "109" + }, + "account_number": "10" + }, + "R\u00e9serves": { + "R\u00e9serve l\u00e9gale": { + "account_number": "111" + }, + "R\u00e9serves statutaires ou contractuelles": { + "account_number": "112" + }, + "R\u00e9serves r\u00e9glement\u00e9es": { + "R\u00e9serves de plus-values nettes \u00e0 long terme": { + "account_number": "1131" + }, + "R\u00e9serves d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "1132" + }, + "R\u00e9serves cons\u00e9cutives \u00e0 l\u2019octroi de subventions d\u2019investissement": { + "account_number": "1133" + }, + "R\u00e9serves des valeurs mobili\u00e8res donnant acc\u00e8s au capital": { + "account_number": "1134" + }, + "Autres r\u00e9serves r\u00e9glement\u00e9es": { + "account_number": "1135" + }, + "account_number": "113" + }, + "Autres r\u00e9serves": { + "R\u00e9serves facultatives": { + "account_number": "1181" + }, + "R\u00e9serves diverses": { + "account_number": "1188" + }, + "account_number": "118" + }, + "account_number": "11" + }, + "Report \u00e0 nouveau": { + "Report \u00e0 nouveau cr\u00e9diteur": { + "account_number": "121" + }, + "Report \u00e0 nouveau d\u00e9biteur": { + "Perte nette \u00e0 reporter": { + "account_number": "1291" + }, + "Perte Amortissements r\u00e9put\u00e9s diff\u00e9r\u00e9s": { + "account_number": "1292" + }, + "account_number": "129" + }, + "account_number": "12" + }, + "R\u00e9sultat net de l\u2019exercice": { + "R\u00e9sultat en instance d\u2019affectation": { + "R\u00e9sultat en instance d\u2019affectation : b\u00e9n\u00e9fice": { + "account_number": "1301" + }, + "R\u00e9sultat en instance d\u2019affectation : perte": { + "account_number": "1309" + }, + "account_number": "130" + }, + "R\u00e9sultat net : b\u00e9n\u00e9fice": { + "account_number": "131" + }, + "Marge commerciale (MC)": { + "account_number": "132" + }, + "Valeur ajout\u00e9e (VA)": { + "account_number": "133" + }, + "Exc\u00e9dent brut d\u2019exploitation (EBE)": { + "account_number": "134" + }, + "R\u00e9sultat d\u2019exploitation (RE)": { + "account_number": "135" + }, + "R\u00e9sultat financier (RF)": { + "account_number": "136" + }, + "R\u00e9sultat des activit\u00e9s ordinaires (RAO)": { + "account_number": "137" + }, + "R\u00e9sultat hors activit\u00e9s ordinaires (RHAO)": { + "R\u00e9sultat de fusion": { + "account_number": "1381" + }, + "R\u00e9sultat d\u2019apport partiel d\u2019actif": { + "account_number": "1382" + }, + "R\u00e9sultat de scission": { + "account_number": "1383" + }, + "R\u00e9sultat de liquidation": { + "account_number": "1384" + }, + "account_number": "138" + }, + "R\u00e9sultat net : perte": { + "account_number": "139" + }, + "account_number": "13" + }, + "Subventions d\u2019investissement": { + "Subventions d\u2019\u00e9quipement": { + "\u00c9tat": { + "account_number": "1411" + }, + "R\u00e9gions": { + "account_number": "1412" + }, + "D\u00e9partements": { + "account_number": "1413" + }, + "Communes et collectivit\u00e9s publiques d\u00e9centralis\u00e9es": { + "account_number": "1414" + }, + "Entit\u00e9s publiques ou mixtes": { + "account_number": "1415" + }, + "Entit\u00e9s et organismes priv\u00e9s": { + "account_number": "1416" + }, + "Organismes internationaux": { + "account_number": "1417" + }, + "Autres": { + "account_number": "1418" + }, + "account_number": "141" + }, + "Autres subventions d\u2019investissement": { + "account_number": "148" + }, + "account_number": "14" + }, + "Provisions r\u00e9glement\u00e9es et fonds assimil\u00e9s": { + "Amortissements d\u00e9rogatoires": { + "account_number": "151" + }, + "Plus-values de cession \u00e0 r\u00e9investir": { + "account_number": "152" + }, + "Fonds r\u00e9glement\u00e9s": { + "Fonds National": { + "account_number": "1531" + }, + "Pr\u00e9l\u00e8vement pour le Budget": { + "account_number": "1532" + }, + "account_number": "153" + }, + "Provisions sp\u00e9ciales de r\u00e9\u00e9valuation": { + "account_number": "154" + }, + "Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "Reconstitution des gisements miniers et p\u00e9troliers": { + "account_number": "1551" + }, + "account_number": "155" + }, + "Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "Hausse de prix": { + "account_number": "1561" + }, + "Fluctuation des cours": { + "account_number": "1562" + }, + "account_number": "156" + }, + "Provisions pour investissement": { + "account_number": "157" + }, + "Autres provisions et fonds r\u00e9glement\u00e9s": { + "account_number": "158" + }, + "account_number": "15" + }, + "Emprunts et dettes assimil\u00e9es": { + "Emprunts obligataires": { + "Emprunts obligataires ordinaires": { + "account_number": "1611" + }, + "Emprunts obligataires convertibles en actions": { + "account_number": "1612" + }, + "Emprunts obligataires remboursables en actions": { + "account_number": "1613" + }, + "Autres emprunts obligataires": { + "account_number": "1618" + }, + "account_number": "161" + }, + "Emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "162" + }, + "Avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "163" + }, + "Avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "164" + }, + "D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "D\u00e9p\u00f4ts": { + "account_number": "1651" + }, + "Cautionnements": { + "account_number": "1652" + }, + "account_number": "165" + }, + "Int\u00e9r\u00eats courus": { + "Sur emprunts obligataires": { + "account_number": "1661" + }, + "Sur emprunts et dettes aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "1662" + }, + "Sur avances re\u00e7ues de l\u2019\u00c9tat": { + "account_number": "1663" + }, + "Sur avances re\u00e7ues et comptes courants bloqu\u00e9s": { + "account_number": "1664" + }, + "Sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "account_number": "1665" + }, + "Sur avances assorties de conditions particuli\u00e8res": { + "account_number": "1667" + }, + "Sur autres emprunts et dettes": { + "account_number": "1668" + }, + "account_number": "166" + }, + "Avances assorties de conditions particuli\u00e8res": { + "Avances bloqu\u00e9es pour augmentation du capital": { + "account_number": "1671" + }, + "Avances conditionn\u00e9es par l\u2019\u00c9tat": { + "account_number": "1672" + }, + "Avances conditionn\u00e9es par les autres organismes africains": { + "account_number": "1673" + }, + "Avances conditionn\u00e9es par les organismes internationaux": { + "account_number": "1674" + }, + "account_number": "167" + }, + "Autres emprunts et dettes": { + "Rentes viag\u00e8res capitalis\u00e9es": { + "account_number": "1681" + }, + "Billets de fonds": { + "account_number": "1682" + }, + "Dettes cons\u00e9cutives \u00e0 des titres emprunt\u00e9s": { + "account_number": "1683" + }, + "Emprunts participatifs": { + "account_number": "1684" + }, + "Participation des travailleurs aux b\u00e9n\u00e9fices": { + "account_number": "1685" + }, + "Emprunts et dettes contract\u00e9s aupr\u00e8s des autres tiers": { + "account_number": "1686" + }, + "account_number": "168" + }, + "account_number": "16" + }, + "Dettes de location acquisition": { + "Dettes de location acquisition / cr\u00e9dit bail immobilier": { + "account_number": "172" + }, + "Dettes de location acquisition / cr\u00e9dit bail mobilier": { + "account_number": "173" + }, + "Dettes de location acquisition / location de vente": { + "account_number": "174" + }, + "Int\u00e9r\u00eats courus": { + "Sur dettes de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "1762" + }, + "Sur dettes de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "1763" + }, + "Sur dettes de location acquisition / location-vente": { + "account_number": "1764" + }, + "Sur autres dettes de location acquisition": { + "account_number": "1768" + }, + "account_number": "176" + }, + "Autres dettes de location acquisition": { + "account_number": "178" + }, + "account_number": "17" + }, + "Dettes li\u00e9es \u00e0 des participations et comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "Dettes li\u00e9es \u00e0 des participations": { + "Dettes li\u00e9es \u00e0 des participations (groupe)": { + "account_number": "1811" + }, + "Dettes li\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "1812" + }, + "account_number": "181" + }, + "Dettes li\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "182" + }, + "Int\u00e9r\u00eats courus sur dettes li\u00e9es \u00e0 des participations": { + "account_number": "183" + }, + "Comptes permanents bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "184" + }, + "Comptes permanents non bloqu\u00e9s des \u00e9tablissements et succursales": { + "account_number": "185" + }, + "Comptes de liaison charges": { + "account_number": "186" + }, + "Comptes de liaison produits": { + "account_number": "187" + }, + "Comptes de liaison des soci\u00e9t\u00e9s en participation": { + "account_number": "188" + }, + "account_number": "18" + }, + "Provisions pour risques et charges": { + "Provisions pour litiges": { + "account_number": "191" + }, + "Provisions pour garanties donn\u00e9es aux clients": { + "account_number": "192" + }, + "Provisions pour pertes sur march\u00e9s \u00e0 ach\u00e8vement futur": { + "account_number": "193" + }, + "Provisions pour pertes de change": { + "account_number": "194" + }, + "Provisions pour imp\u00f4ts": { + "account_number": "195" + }, + "Provisions pour pensions et obligations similaires": { + "Provisions pour pensions et obligations similaires engagement de retraite": { + "account_number": "1961" + }, + "Actif du r\u00e9gime de retraite": { + "account_number": "1962" + }, + "account_number": "196" + }, + "Provisions pour restructuration": { + "account_number": "197" + }, + "Autres provisions pour risques et charges": { + "Provisions pour amendes et p\u00e9nalit\u00e9s": { + "account_number": "1981" + }, + "Provisions pour propre assureur": { + "account_number": "1983" + }, + "Provisions pour d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "1984" + }, + "Provisions pour droits \u00e0 r\u00e9duction ou avantage en nature (ch\u00e8ques cadeau, cartes de fid\u00e9lit\u00e9...)": { + "account_number": "1985" + }, + "Provisions pour divers risques et charges": { + "account_number": "1988" + }, + "account_number": "198" + }, + "account_number": "19" + }, + "root_type": "Equity", + "account_number": "1" + }, + "Comptes d\u2019actif immobilis\u00e9": { + "Immobilisations incorporelles": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "211" + }, + "Brevets, licences, concessions et droits similaires": { + "account_type": "Fixed Asset", + "Brevets": { + "account_type": "Fixed Asset", + "account_number": "2121" + }, + "Licences": { + "account_type": "Fixed Asset", + "account_number": "2122" + }, + "Concessions de service public": { + "account_type": "Fixed Asset", + "account_number": "2123" + }, + "Autres concessions et droits similaires": { + "account_type": "Fixed Asset", + "account_number": "2128" + }, + "account_number": "212" + }, + "Logiciels et sites internet": { + "account_type": "Fixed Asset", + "Logiciels": { + "account_type": "Fixed Asset", + "account_number": "2131" + }, + "Sites internet": { + "account_type": "Fixed Asset", + "account_number": "2132" + }, + "account_number": "213" + }, + "Marques": { + "account_type": "Fixed Asset", + "account_number": "214" + }, + "Fonds commercial": { + "account_type": "Fixed Asset", + "account_number": "215" + }, + "Droit au bail": { + "account_type": "Fixed Asset", + "account_number": "216" + }, + "Investissements de cr\u00e9ation": { + "account_type": "Fixed Asset", + "account_number": "217" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "Frais de prospection et d\u2019\u00e9valuation de ressources min\u00e9rales": { + "account_type": "Fixed Asset", + "account_number": "2181" + }, + "Co\u00fbts d\u2019obtention du contrat": { + "account_type": "Fixed Asset", + "account_number": "2182" + }, + "Fichiers clients, notices, titres de journaux et magazines": { + "account_type": "Fixed Asset", + "account_number": "2183" + }, + "Co\u00fbts des franchises": { + "account_type": "Fixed Asset", + "account_number": "2184" + }, + "Divers droits et valeurs incorporelles": { + "account_type": "Fixed Asset", + "account_number": "2188" + }, + "account_number": "218" + }, + "Immobilisations incorporelles en cours": { + "account_type": "Fixed Asset", + "Frais de d\u00e9veloppement": { + "account_type": "Fixed Asset", + "account_number": "2191" + }, + "Logiciels et internet": { + "account_type": "Fixed Asset", + "account_number": "2193" + }, + "Autres droits et valeurs incorporels": { + "account_type": "Fixed Asset", + "account_number": "2198" + }, + "account_number": "219" + }, + "account_number": "21" + }, + "Terrains": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "Terrains d\u2019exploitation agricole": { + "account_type": "Fixed Asset", + "account_number": "2211" + }, + "Terrains d\u2019exploitation foresti\u00e8re": { + "account_type": "Fixed Asset", + "account_number": "2212" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2218" + }, + "account_number": "221" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "Terrains \u00e0 b\u00e2tir": { + "account_type": "Fixed Asset", + "account_number": "2221" + }, + "Autres terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2228" + }, + "account_number": "222" + }, + "Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "Pour b\u00e2timents industriels et agricoles": { + "account_type": "Fixed Asset", + "account_number": "2231" + }, + "Pour b\u00e2timents administratifs et commerciaux": { + "account_type": "Fixed Asset", + "account_number": "2232" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2234" + }, + "Pour b\u00e2timents affect\u00e9s aux autres op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset", + "account_number": "2235" + }, + "Autres terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "account_number": "2238" + }, + "account_number": "223" + }, + "Travaux de mise en valeur des terrains": { + "account_type": "Fixed Asset", + "Plantation d\u2019arbres et d\u2019arbustes": { + "account_type": "Fixed Asset", + "account_number": "2241" + }, + "Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset", + "account_number": "2245" + }, + "Autres travaux": { + "account_type": "Fixed Asset", + "account_number": "2248" + }, + "account_number": "224" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "Carri\u00e8res": { + "account_type": "Fixed Asset", + "account_number": "2251" + }, + "account_number": "225" + }, + "Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "Parkings": { + "account_type": "Fixed Asset", + "account_number": "2261" + }, + "account_number": "226" + }, + "Terrains mis en concession": { + "account_type": "Fixed Asset", + "account_number": "227" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "Terrains immeubles de placement": { + "account_type": "Fixed Asset", + "account_number": "2281" + }, + "Terrains des logements affect\u00e9s au personnel": { + "account_type": "Fixed Asset", + "account_number": "2285" + }, + "Terrains de location acquisition": { + "account_type": "Fixed Asset", + "account_number": "2286" + }, + "Divers terrains": { + "account_type": "Fixed Asset", + "account_number": "2288" + }, + "account_number": "228" + }, + "Am\u00e9nagements de terrains en cours": { + "account_type": "Fixed Asset", + "Terrains agricoles et forestiers": { + "account_type": "Fixed Asset", + "account_number": "2291" + }, + "Terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2292" + }, + "Terrains de carri\u00e8res tr\u00e9fonds": { + "account_type": "Fixed Asset", + "account_number": "2295" + }, + "Autres terrains": { + "account_type": "Fixed Asset", + "account_number": "2298" + }, + "account_number": "229" + }, + "account_number": "22" + }, + "B\u00e2timents, installations techniques et agencements": { + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "B\u00e2timents industriels": { + "account_number": "2311" + }, + "B\u00e2timents agricoles": { + "account_number": "2312" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2313" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2314" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2315" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2316" + }, + "account_number": "231" + }, + "B\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "B\u00e2timents industriels": { + "account_number": "2321" + }, + "B\u00e2timents agricoles": { + "account_number": "2322" + }, + "B\u00e2timents administratifs et commerciaux": { + "account_number": "2323" + }, + "B\u00e2timents affect\u00e9s au logement du personnel": { + "account_number": "2324" + }, + "B\u00e2timents immeubles de placement": { + "account_number": "2325" + }, + "B\u00e2timents de location acquisition": { + "account_number": "2326" + }, + "account_number": "232" + }, + "Ouvrages d\u2019infrastructure": { + "Voies de terre": { + "account_number": "2331" + }, + "Voies de fer": { + "account_number": "2332" + }, + "Voies d\u2019eau": { + "account_number": "2333" + }, + "Barrages, Digues": { + "account_number": "2334" + }, + "Pistes d\u2019a\u00e9rodrome": { + "account_number": "2335" + }, + "Autres ouvrages d\u2019infrastructures": { + "account_number": "2338" + }, + "account_number": "233" + }, + "Am\u00e9nagements, agencements et installations techniques": { + "Installations complexes sp\u00e9cialis\u00e9es sur sol propre": { + "account_number": "2341" + }, + "Installations complexes sp\u00e9cialis\u00e9es sur sol d\u2019autrui": { + "account_number": "2342" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": { + "account_number": "2343" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d\u2019autrui": { + "account_number": "2344" + }, + "Am\u00e9nagements et agencements des b\u00e2timents": { + "account_number": "2345" + }, + "account_number": "234" + }, + "Am\u00e9nagements de bureaux": { + "Installations g\u00e9n\u00e9rales": { + "account_number": "2351" + }, + "Autres am\u00e9nagements de bureaux": { + "account_number": "2358" + }, + "account_number": "235" + }, + "B\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "237" + }, + "Autres installations et agencements": { + "account_number": "238" + }, + "B\u00e2timents am\u00e9nagements, agencements et installations en cours": { + "B\u00e2timents en cours": { + "account_number": "2391" + }, + "Installations en cours": { + "account_number": "2392" + }, + "Ouvrages d\u2019infrastructure en cours": { + "account_number": "2393" + }, + "Am\u00e9nagements et agencements et installations techniques en cours": { + "account_number": "2394" + }, + "Am\u00e9nagements de bureaux en cours": { + "account_number": "2395" + }, + "Autres installations et agencements en cours": { + "account_number": "2398" + }, + "account_number": "239" + }, + "account_number": "23" + }, + "Mat\u00e9riel, mobilier et actifs biologiques": { + "Mat\u00e9riel et outillage industriel et commercial": { + "Mat\u00e9riel industriel": { + "account_number": "2411" + }, + "Outillage industriel": { + "account_number": "2412" + }, + "Mat\u00e9riel commercial": { + "account_number": "2413" + }, + "Outillage commercial": { + "account_number": "2414" + }, + "Mat\u00e9riel & outillage industriel et commercial de location-acquisition": { + "account_number": "2416" + }, + "account_number": "241" + }, + "Mat\u00e9riel et outillage agricole": { + "Mat\u00e9riel agricole": { + "account_number": "2421" + }, + "Outillage agricole": { + "account_number": "2422" + }, + "Mat\u00e9riel & outillage agricole de location-acquisition": { + "account_number": "2426" + }, + "account_number": "242" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "243" + }, + "Mat\u00e9riel et mobilier": { + "Mat\u00e9riel de bureau": { + "account_number": "2441" + }, + "Mat\u00e9riel informatique": { + "account_number": "2442" + }, + "Mat\u00e9riel bureautique": { + "account_number": "2443" + }, + "Mobilier de bureau": { + "account_number": "2444" + }, + "Mat\u00e9riel et mobilier immeubles de placement": { + "account_number": "2445" + }, + "Mat\u00e9riel et mobilier de location acquisition": { + "account_number": "2446" + }, + "Mat\u00e9riel et mobilier des logements du personnel": { + "account_number": "2447" + }, + "account_number": "244" + }, + "Mat\u00e9riel de transport": { + "Mat\u00e9riel automobile": { + "account_number": "2451" + }, + "Mat\u00e9riel ferroviaire": { + "account_number": "2452" + }, + "Mat\u00e9riel fluvial, lagunaire": { + "account_number": "2453" + }, + "Mat\u00e9riel naval": { + "account_number": "2454" + }, + "Mat\u00e9riel a\u00e9rien": { + "account_number": "2455" + }, + "Mat\u00e9riel de transport de location-acquisition": { + "account_number": "2456" + }, + "Mat\u00e9riel hippomobile": { + "account_number": "2457" + }, + "Autres mat\u00e9riels de transport": { + "account_number": "2458" + }, + "account_number": "245" + }, + "Actifs biologiques": { + "Cheptel, animaux de trait": { + "account_number": "2461" + }, + "Cheptel, animaux reproducteurs": { + "account_number": "2462" + }, + "Animaux de garde": { + "account_number": "2463" + }, + "Plantations agricoles": { + "account_number": "2465" + }, + "Autres actifs biologiques": { + "account_number": "2468" + }, + "account_number": "246" + }, + "Agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "Agencements et am\u00e9nagements du mat\u00e9riel": { + "account_number": "2471" + }, + "Agencements et am\u00e9nagements des actifs biologiques": { + "account_number": "2472" + }, + "Autres agencements, am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2478" + }, + "account_number": "247" + }, + "Autres mat\u00e9riels et mobiliers": { + "Collections et \u0153uvres d\u2019art": { + "account_number": "2481" + }, + "Divers mat\u00e9riels mobiliers": { + "account_number": "2488" + }, + "account_number": "248" + }, + "Mat\u00e9riels et actifs biologiques en cours": { + "Mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2491" + }, + "Mat\u00e9riel et outillage agricole": { + "account_number": "2492" + }, + "Mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2493" + }, + "Mat\u00e9riel et mobilier de bureau": { + "account_number": "2494" + }, + "Mat\u00e9riel de transport": { + "account_number": "2495" + }, + "Actifs biologiques": { + "account_number": "2496" + }, + "Agencements am\u00e9nagements du mat\u00e9riel et actifs biologiques": { + "account_number": "2497" + }, + "Autres mat\u00e9riels et actifs biologiques en cours": { + "account_number": "2498" + }, + "account_number": "249" + }, + "account_number": "24" + }, + "Avances et acomptes vers\u00e9s sur immobilisations": { + "Avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "251" + }, + "Avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "252" + }, + "account_number": "25" + }, + "Titres de participation": { + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "261" + }, + "Titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "262" + }, + "Titres de participation dans des soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "263" + }, + "Participations dans des organismes professionnels": { + "account_number": "265" + }, + "Parts dans des groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "266" + }, + "Autres titres de participation": { + "account_number": "268" + }, + "account_number": "26" + }, + "Autres immobilisations financi\u00e8res": { + "Pr\u00eats et cr\u00e9ances": { + "Pr\u00eats participatifs": { + "account_number": "2711" + }, + "Pr\u00eats aux associ\u00e9s": { + "account_number": "2712" + }, + "Billets de fonds": { + "account_number": "2713" + }, + "Titres pr\u00eat\u00e9s": { + "account_number": "2714" + }, + "Autres pr\u00eats et cr\u00e9ances": { + "account_number": "2718" + }, + "account_number": "271" + }, + "Pr\u00eats au personnel": { + "Pr\u00eats immobiliers": { + "account_number": "2721" + }, + "Pr\u00eats mobiliers et d\u2019installation": { + "account_number": "2722" + }, + "Autres pr\u00eats au personnel": { + "account_number": "2728" + }, + "account_number": "272" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "Retenues de garantie": { + "account_number": "2731" + }, + "Fonds r\u00e9glement\u00e9": { + "account_number": "2733" + }, + "Cr\u00e9ances sur le conc\u00e9dant": { + "account_number": "2734" + }, + "Autres cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2738" + }, + "account_number": "273" + }, + "Titres immobilis\u00e9s": { + "Titres immobilis\u00e9s de l\u2019activit\u00e9 de portefeuille (TIAP)": { + "account_number": "2741" + }, + "Titres participatifs": { + "account_number": "2742" + }, + "Certificats d\u2019investissement": { + "account_number": "2743" + }, + "Parts de fonds commun de placement (FCP)": { + "account_number": "2744" + }, + "Obligations": { + "account_number": "2745" + }, + "Actions ou parts propres": { + "account_number": "2746" + }, + "Autres titres immobilis\u00e9s": { + "account_number": "2748" + }, + "account_number": "274" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "D\u00e9p\u00f4ts pour loyers d\u2019avance": { + "account_number": "2751" + }, + "D\u00e9p\u00f4ts pour l\u2019\u00e9lectricit\u00e9": { + "account_number": "2752" + }, + "D\u00e9p\u00f4ts pour l\u2019eau": { + "account_number": "2753" + }, + "D\u00e9p\u00f4ts pour le gaz": { + "account_number": "2754" + }, + "D\u00e9p\u00f4ts pour le t\u00e9l\u00e9phone, le t\u00e9lex, la t\u00e9l\u00e9copie": { + "account_number": "2755" + }, + "Cautionnements sur march\u00e9s publics": { + "account_number": "2756" + }, + "Cautionnements sur autres op\u00e9rations": { + "account_number": "2757" + }, + "Autres d\u00e9p\u00f4ts et cautionnements": { + "account_number": "2758" + }, + "account_number": "275" + }, + "Int\u00e9r\u00eats courus": { + "Pr\u00eats et cr\u00e9ances non commerciales": { + "account_number": "2761" + }, + "Pr\u00eats au personnel": { + "account_number": "2762" + }, + "Cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2763" + }, + "Titres immobilis\u00e9s": { + "account_number": "2764" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2765" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "account_number": "2767" + }, + "Immobilisations financi\u00e8res diverses": { + "account_number": "2768" + }, + "account_number": "276" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": { + "account_number": "2771" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (hors groupe)": { + "account_number": "2772" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "2773" + }, + "Avances \u00e0 des Groupements d\u2019int\u00e9r\u00eat \u00e9conomique (GIE)": { + "account_number": "2774" + }, + "account_number": "277" + }, + "Immobilisations financi\u00e8res diverses": { + "Cr\u00e9ances diverses groupe": { + "account_number": "2781" + }, + "Cr\u00e9ances diverses hors groupe": { + "account_number": "2782" + }, + "Banques d\u00e9p\u00f4ts \u00e0 terme": { + "account_number": "2784" + }, + "Or et m\u00e9taux pr\u00e9cieux": { + "account_number": "2785" + }, + "Autres immobilisations financi\u00e8res": { + "account_number": "2788" + }, + "account_number": "278" + }, + "account_number": "27" + }, + "Amortissements": { + "account_type": "Accumulated Depreciation", + "Amortissements des immobilisations corporelles": { + "account_type": "Accumulated Depreciation", + "Amortissements des frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation", + "account_number": "2811" + }, + "Amortissements des brevets, licences, concessions et droits similaires": { + "account_type": "Accumulated Depreciation", + "account_number": "2812" + }, + "Amortissements des logiciels et sites internet": { + "account_type": "Accumulated Depreciation", + "account_number": "2813" + }, + "Amortissements des marques": { + "account_type": "Accumulated Depreciation", + "account_number": "2814" + }, + "Amortissements du fonds commercial": { + "account_type": "Accumulated Depreciation", + "account_number": "2815" + }, + "Amortissements du droit au bail": { + "account_type": "Accumulated Depreciation", + "account_number": "2816" + }, + "Amortissements des investissements de cr\u00e9ation": { + "account_type": "Accumulated Depreciation", + "account_number": "2817" + }, + "Amortissements des autres droits et valeurs incorporels": { + "account_type": "Accumulated Depreciation", + "account_number": "2818" + }, + "account_number": "281" + }, + "Amortissements des terrains": { + "Amortissements des travaux de mise en valeur des terrains": { + "account_number": "2824" + }, + "account_number": "282" + }, + "Amortissements des b\u00e2timents, installations techniques et agencements": { + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2831" + }, + "Amortissements des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2832" + }, + "Amortissements des ouvrages d\u2019infrastructure": { + "account_number": "2833" + }, + "Amortissements des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2834" + }, + "Amortissements des am\u00e9nagements de bureaux": { + "account_number": "2835" + }, + "Amortissements des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2837" + }, + "Amortissements des autres installations et agencements": { + "account_number": "2838" + }, + "account_number": "283" + }, + "Amortissements du mat\u00e9riel": { + "Amortissements du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2841" + }, + "Amortissements du mat\u00e9riel et outillage agricole": { + "account_number": "2842" + }, + "Amortissements du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2843" + }, + "Amortissements du mat\u00e9riel et mobilier": { + "account_number": "2844" + }, + "Amortissements du mat\u00e9riel de transport": { + "account_number": "2845" + }, + "Amortissements des actifs biologiques": { + "account_number": "2846" + }, + "Amortissements des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2847" + }, + "Amortissements des autres mat\u00e9riels": { + "account_number": "2848" + }, + "account_number": "284" + }, + "account_number": "28" + }, + "D\u00e9pr\u00e9ciations des immobilisations": { + "D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "D\u00e9pr\u00e9ciations des frais de d\u00e9veloppement": { + "account_number": "2911" + }, + "D\u00e9pr\u00e9ciations des brevets, licences, concessions et droits similaires": { + "account_number": "2912" + }, + "D\u00e9pr\u00e9ciations des logiciels et sites internet": { + "account_number": "2913" + }, + "D\u00e9pr\u00e9ciations des marques": { + "account_number": "2914" + }, + "D\u00e9pr\u00e9ciations du fonds commercial": { + "account_number": "2915" + }, + "D\u00e9pr\u00e9ciations du droit au bail": { + "account_number": "2916" + }, + "D\u00e9pr\u00e9ciations des investissements de cr\u00e9ation": { + "account_number": "2917" + }, + "D\u00e9pr\u00e9ciations des autres droits et valeurs incorporels": { + "account_number": "2918" + }, + "D\u00e9pr\u00e9ciations des immobilisations incorporelles en cours": { + "account_number": "2919" + }, + "account_number": "291" + }, + "D\u00e9pr\u00e9ciations des terrains": { + "D\u00e9pr\u00e9ciations des terrains agricoles et forestiers": { + "account_number": "2921" + }, + "D\u00e9pr\u00e9ciations des terrains nus": { + "account_number": "2922" + }, + "D\u00e9pr\u00e9ciations des terrains b\u00e2tis": { + "account_number": "2923" + }, + "D\u00e9pr\u00e9ciations des travaux de mise en valeur des terrains": { + "account_number": "2924" + }, + "D\u00e9pr\u00e9ciations des terrains de gisement": { + "account_number": "2925" + }, + "D\u00e9pr\u00e9ciations des terrains am\u00e9nag\u00e9s": { + "account_number": "2926" + }, + "D\u00e9pr\u00e9ciations des terrains mis en concession": { + "account_number": "2927" + }, + "D\u00e9pr\u00e9ciations des autres terrains": { + "account_number": "2928" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de terrains en cours": { + "account_number": "2929" + }, + "account_number": "292" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents, installations techniques et agencements": { + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol propre": { + "account_number": "2931" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles, administratifs et commerciaux sur sol d\u2019autrui": { + "account_number": "2932" + }, + "D\u00e9pr\u00e9ciations des ouvrages d\u2019infrastructures": { + "account_number": "2933" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements, agencements et installations techniques": { + "account_number": "2934" + }, + "D\u00e9pr\u00e9ciations des am\u00e9nagements de bureaux": { + "account_number": "2935" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents industriels, agricoles et commerciaux mis en concession": { + "account_number": "2937" + }, + "D\u00e9pr\u00e9ciations des autres installations et agencements": { + "account_number": "2938" + }, + "D\u00e9pr\u00e9ciations des b\u00e2timents et installations en cours": { + "account_number": "2939" + }, + "account_number": "293" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel, du mobilier et de l\u2019actif biologique": { + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage industriel et commercial": { + "account_number": "2941" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et outillage agricole": { + "account_number": "2942" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel d\u2019emballage r\u00e9cup\u00e9rable et identifiable": { + "account_number": "2943" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel et mobilier": { + "account_number": "2944" + }, + "D\u00e9pr\u00e9ciations du mat\u00e9riel de transport": { + "account_number": "2945" + }, + "D\u00e9pr\u00e9ciations des actifs biologiques": { + "account_number": "2946" + }, + "D\u00e9pr\u00e9ciations des agencements et am\u00e9nagements du mat\u00e9riel et des actifs biologiques": { + "account_number": "2947" + }, + "D\u00e9pr\u00e9ciations des autres mat\u00e9riels": { + "account_number": "2948" + }, + "D\u00e9pr\u00e9ciations de mat\u00e9riel en cours": { + "account_number": "2949" + }, + "account_number": "294" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations": { + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "2951" + }, + "D\u00e9pr\u00e9ciations des avances et acomptes vers\u00e9s sur immobilisations corporelles": { + "account_number": "2952" + }, + "account_number": "295" + }, + "D\u00e9pr\u00e9ciations des titres de participation": { + "D\u00e9pr\u00e9ciations des titres de participation dans des soci\u00e9t\u00e9s sous contr\u00f4le exclusif": { + "account_number": "2961" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s sous contr\u00f4le conjoint": { + "account_number": "2962" + }, + "D\u00e9pr\u00e9ciations des titres de participation dans les soci\u00e9t\u00e9s conf\u00e9rant une influence notable": { + "account_number": "2963" + }, + "D\u00e9pr\u00e9ciations des participations dans des organismes professionnels": { + "account_number": "2965" + }, + "D\u00e9pr\u00e9ciations des parts dans des GIE": { + "account_number": "2966" + }, + "D\u00e9pr\u00e9ciations des autres titres de participation": { + "account_number": "2968" + }, + "account_number": "296" + }, + "D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "D\u00e9pr\u00e9ciations des pr\u00eats et cr\u00e9ances": { + "account_number": "2971" + }, + "D\u00e9pr\u00e9ciations des pr\u00eats au personnel": { + "account_number": "2972" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances sur l\u2019\u00c9tat": { + "account_number": "2973" + }, + "D\u00e9pr\u00e9ciations des titres immobilis\u00e9s": { + "account_number": "2974" + }, + "D\u00e9pr\u00e9ciations des d\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2975" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances rattach\u00e9es \u00e0 des participations et avances \u00e0 des GIE": { + "account_number": "2977" + }, + "D\u00e9pr\u00e9ciations des cr\u00e9ances financi\u00e8res diverses": { + "account_number": "2978" + }, + "account_number": "297" + }, + "account_number": "29" + }, + "root_type": "Asset", + "account_number": "2" + }, + "Comptes de Stocks": { + "Marchandises": { + "Marchandises A": { + "Marchandises A1": { + "account_number": "3111" + }, + "Marchandises A2": { + "account_number": "3112" + }, + "account_number": "311" + }, + "Marchandises B": { + "Marchandises B1": { + "account_number": "3121" + }, + "Marchandises B2": { + "account_number": "3122" + }, + "account_number": "312" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3131" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3132" + }, + "account_number": "313" + }, + "Marchandises hors activit\u00e9s ordinaires (HAO)": { + "account_number": "318" + }, + "account_number": "31" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Mati\u00e8res A": { + "account_number": "321" + }, + "Mati\u00e8res B": { + "account_number": "322" + }, + "Fournitures (A, B)": { + "account_number": "323" + }, + "account_number": "32" + }, + "Autres approvisionnements": { + "Mati\u00e8res consommables": { + "account_number": "331" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "332" + }, + "Fournitures de magasin": { + "account_number": "333" + }, + "Fournitures de bureau": { + "account_number": "334" + }, + "Emballages": { + "Emballages perdus": { + "account_number": "3351" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "3352" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "3353" + }, + "Autres emballages": { + "account_number": "3358" + }, + "account_number": "335" + }, + "Autres mati\u00e8res": { + "account_number": "338" + }, + "account_number": "33" + }, + "Produits en cours": { + "Produits en cours": { + "Produits en cours P1": { + "account_number": "3411" + }, + "Produits en cours P2": { + "account_number": "3412" + }, + "account_number": "341" + }, + "Travaux en cours": { + "Travaux en cours T1": { + "account_number": "3421" + }, + "Travaux en cours T2": { + "account_number": "3422" + }, + "account_number": "342" + }, + "Produits interm\u00e9diaires en cours": { + "Produits interm\u00e9diaires A": { + "account_number": "3431" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3432" + }, + "account_number": "343" + }, + "Produits r\u00e9siduels en cours": { + "Produits r\u00e9siduels A": { + "account_number": "3441" + }, + "Produits r\u00e9siduels B": { + "account_number": "3442" + }, + "account_number": "344" + }, + "Actifs biologiques en cours": { + "Animaux": { + "account_number": "3451" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3452" + }, + "account_number": "345" + }, + "account_number": "34" + }, + "Services en cours": { + "\u00c9tudes en cours": { + "\u00c9tudes en cours E1": { + "account_number": "3511" + }, + "\u00c9tudes en cours E2": { + "account_number": "3512" + }, + "account_number": "351" + }, + "Prestations de services en cours": { + "Prestations de services S1": { + "account_number": "3521" + }, + "Prestations de services S2": { + "account_number": "3522" + } + }, + "account_number": "35" + }, + "Produits finis": { + "Produits finis A": { + "account_number": "361" + }, + "Produits finis B": { + "account_number": "362" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3631" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3632" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3638" + }, + "account_number": "363" + }, + "account_number": "36" + }, + "Produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "Produits interm\u00e9diaires A": { + "account_number": "3711" + }, + "Produits interm\u00e9diaires B": { + "account_number": "3712" + }, + "account_number": "371" + }, + "Produits r\u00e9siduels": { + "D\u00e9chets": { + "account_number": "3721" + }, + "Rebuts": { + "account_number": "3722" + }, + "Mati\u00e8res de R\u00e9cup\u00e9ration": { + "account_number": "3723" + }, + "account_number": "372" + }, + "Actifs biologiques": { + "Animaux": { + "account_number": "3731" + }, + "V\u00e9g\u00e9taux": { + "account_number": "3732" + }, + "Autres stocks (activit\u00e9s annexes)": { + "account_number": "3738" + }, + "account_number": "373" + }, + "account_number": "37" + }, + "Stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_type": "Stock", + "Marchandises en cours de route": { + "account_number": "381" + }, + "Mati\u00e8res premi\u00e8res et fournitures li\u00e9es en cours de route": { + "account_number": "382" + }, + "Autres approvisionnements en cours de route": { + "account_number": "383" + }, + "Produits finis en cours de route": { + "account_number": "386" + }, + "Stock en consignation ou en d\u00e9p\u00f4t": { + "Stock en consignation": { + "account_number": "3871" + }, + "Stock en d\u00e9p\u00f4t": { + "account_number": "3872" + }, + "account_number": "387" + }, + "Stock provenant d\u2019immobilisations mises hors service ou au rebut": { + "account_number": "388" + }, + "account_number": "38" + }, + "D\u00e9pr\u00e9ciations des stocks et encours de production": { + "D\u00e9pr\u00e9ciations des stocks de marchandises": { + "account_number": "391" + }, + "D\u00e9pr\u00e9ciations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "392" + }, + "D\u00e9pr\u00e9ciations des stocks d\u2019autres approvisionnements": { + "account_number": "393" + }, + "D\u00e9pr\u00e9ciations des productions en cours": { + "account_number": "394" + }, + "D\u00e9pr\u00e9ciations des services en cours": { + "account_number": "395" + }, + "D\u00e9pr\u00e9ciations des stocks de produits finis": { + "account_number": "396" + }, + "D\u00e9pr\u00e9ciations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "account_number": "397" + }, + "D\u00e9pr\u00e9ciations des stocks en cours de route, en consignation ou en d\u00e9p\u00f4t": { + "account_number": "398" + }, + "account_number": "39" + }, + "root_type": "Asset", + "account_number": "3" + }, + "4-Comptes de Tiers (ACTIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "Fournisseurs d\u00e9biteurs": { + "Fournisseurs Avances et acomptes vers\u00e9s": { + "account_number": "4091" + }, + "Fournisseurs Groupe avances et acomptes vers\u00e9s": { + "account_number": "4092" + }, + "Fournisseurs Sous-traitants avances et acomptes vers\u00e9s": { + "account_number": "4093" + }, + "Fournisseurs Cr\u00e9ances pour emballages et mat\u00e9riels \u00e0 rendre": { + "account_number": "4094" + }, + "Fournisseurs Rabais, remises, ristournes et autres avoirs \u00e0 obtenir": { + "account_number": "4098" + }, + "account_number": "409" + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "Clients": { + "Clients": { + "account_type": "Receivable", + "account_number": "4111" + }, + "Clients groupe": { + "account_type": "Receivable", + "account_number": "4112" + }, + "Clients, \u00c9tat et Collectivit\u00e9s publiques": { + "account_type": "Receivable", + "account_number": "4114" + }, + "Clients, organismes internationaux": { + "account_type": "Receivable", + "account_number": "4115" + }, + "Clients, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Receivable", + "account_number": "4116" + }, + "Client, retenues de garantie": { + "account_type": "Receivable", + "account_number": "4117" + }, + "Clients, d\u00e9gr\u00e8vement de taxes sur la valeur ajout\u00e9e (TVA)": { + "account_type": "Receivable", + "account_number": "4118" + }, + "account_type": "Receivable", + "account_number": "411" + }, + "Clients, effets \u00e0 recevoir en portefeuille": { + "Clients, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4121" + }, + "Clients Groupe, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4122" + }, + "\u00c9tat et Collectivit\u00e9s publiques, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4124" + }, + "Organismes Internationaux, effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "4125" + }, + "account_type": "Receivable", + "account_number": "412" + }, + "Clients, ch\u00e8ques, effets et autres valeurs impay\u00e9es": { + "Clients, ch\u00e8ques impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4131" + }, + "Clients, effets impay\u00e9s": { + "account_type": "Receivable", + "account_number": "4132" + }, + "Clients, cartes de cr\u00e9dit impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4133" + }, + "Clients, autres valeurs impay\u00e9es": { + "account_type": "Receivable", + "account_number": "4138" + }, + "account_type": "Receivable", + "account_number": "413" + }, + "Cr\u00e9ances sur cessions courantes d\u2019immobilisations": { + "Cr\u00e9ances en compte, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4141" + }, + "Cr\u00e9ances en compte, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4142" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_type": "Receivable", + "account_number": "4146" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_type": "Receivable", + "account_number": "4147" + }, + "account_type": "Receivable", + "account_number": "414" + }, + "Clients, effets escompt\u00e9s non \u00e9chus": { + "account_type": "Receivable", + "account_number": "415" + }, + "Cr\u00e9ances clients litigieuses ou douteuses": { + "Cr\u00e9ances litigieuses": { + "account_type": "Receivable", + "account_number": "4161" + }, + "Cr\u00e9ances douteuses": { + "account_type": "Receivable", + "account_number": "4162" + }, + "account_type": "Receivable", + "account_number": "416" + }, + "Clients, produits \u00e0 recevoir": { + "Clients, factures \u00e0 \u00e9tablir": { + "account_type": "Receivable", + "account_number": "4181" + }, + "Clients, int\u00e9r\u00eats courus": { + "account_type": "Receivable", + "account_number": "4186" + }, + "account_type": "Receivable", + "account_number": "418" + }, + "account_type": "Receivable" + }, + "42-Personnel (ACTIF)": { + "Personnel, avances et acomptes": { + "Personnel, avances": { + "account_number": "4211" + }, + "Personnel, acomptes": { + "account_number": "4212" + }, + "Frais avanc\u00e9s et fournitures au personnel": { + "account_number": "4213" + }, + "account_number": "421" + } + }, + "43-Organismes sociaux (ACTIF)": { + "431-S\u00e9curit\u00e9 sociale": { + "Prestations familiales": { + "account_number": "4311" + }, + "Accidents de travail": { + "account_number": "4312" + }, + "Caisse de retraite obligatoire": { + "account_number": "4313" + }, + "Caisse de retraite facultative": { + "account_number": "4314" + }, + "Autres cotisations sociales": { + "account_number": "4318" + } + }, + "432-Caisses de retraite compl\u00e9mentaire": {}, + "433-Autres organismes sociaux": { + "Mutuelle": { + "account_number": "4331" + }, + "Assurances retraite": { + "account_number": "4332" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "4333" + } + }, + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Produits \u00e0 recevoir": { + "account_number": "4387" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (ACTIF)": { + "\u00c9tat, TVA factur\u00e9e": { + "TVA factur\u00e9e sur ventes": { + "account_number": "4431" + }, + "TVA factur\u00e9e sur prestations de services": { + "account_number": "4432" + }, + "TVA factur\u00e9e sur travaux": { + "account_number": "4433" + }, + "TVA factur\u00e9e sur production livr\u00e9e \u00e0 soi-m\u00eame": { + "account_number": "4434" + }, + "TVA sur factures \u00e0 \u00e9tablir": { + "account_number": "4435" + }, + "account_number": "443" + }, + "\u00c9tat, TVA r\u00e9cup\u00e9rable": { + "TVA r\u00e9cup\u00e9rable sur immobilisations": { + "account_number": "4451" + }, + "TVA r\u00e9cup\u00e9rable sur achats": { + "account_number": "4452" + }, + "TVA r\u00e9cup\u00e9rable sur transport": { + "account_number": "4453" + }, + "TVA r\u00e9cup\u00e9rable sur services ext\u00e9rieurs et autres charges": { + "account_number": "4454" + }, + "TVA r\u00e9cup\u00e9rable sur factures non parvenues": { + "account_number": "4455" + }, + "TVA transf\u00e9r\u00e9e par d\u2019autres entit\u00e9s": { + "account_number": "4456" + }, + "account_number": "445" + }, + "\u00c9tat, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges \u00e0 payer": { + "account_number": "4486" + }, + "Produits \u00e0 recevoir": { + "account_number": "4487" + }, + "account_number": "448" + }, + "\u00c9tat, cr\u00e9ances et dettes diverses": { + "\u00c9tat, obligations cautionn\u00e9es": { + "account_number": "4491" + }, + "\u00c9tat, avances et acomptes vers\u00e9s sur imp\u00f4ts": { + "account_number": "4492" + }, + "\u00c9tat, fonds de dotation \u00e0 recevoir": { + "account_number": "4493" + }, + "\u00c9tat, subventions investissement \u00e0 recevoir": { + "account_number": "4494" + }, + "\u00c9tat, subventions d\u2019exploitation \u00e0 recevoir": { + "account_number": "4495" + }, + "\u00c9tat, subventions d\u2019\u00e9quilibre \u00e0 recevoir": { + "account_number": "4496" + }, + "\u00c9tat, avances sur subventions": { + "account_number": "4497" + }, + "\u00c9tat, fonds r\u00e9glement\u00e9s provisionn\u00e9s": { + "account_number": "4499" + }, + "account_number": "449" + } + }, + "45-Organismes internationaux (ACTIF)": { + "Op\u00e9rations avec les organismes africains": { + "account_number": "451" + }, + "Op\u00e9rations avec les autres organismes internationaux": { + "account_number": "452" + }, + "Organismes internationaux, fonds de dotation et subventions \u00e0 recevoir": { + "Organismes internationaux, fonds de dotation \u00e0 recevoir": { + "account_number": "4581" + }, + "Organismes internationaux, subventions \u00e0 recevoir": { + "account_number": "4582" + }, + "account_number": "458" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (ACTIF)": { + "461-Apporteurs, op\u00e9rations sur le capital": { + "Apporteurs, capital appel\u00e9, non vers\u00e9": { + "account_number": "4613" + }, + "Apporteurs, compte d\u2019apport, op\u00e9rations de restructuration (fusion...)": { + "account_number": "4614" + }, + "Apporteurs, titres \u00e0 \u00e9changer": { + "account_number": "4618" + } + }, + "Apporteurs, restant d\u00fb sur capital appel\u00e9": { + "account_number": "467" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (ACTIF)": { + "472-Cr\u00e9ances et dettes sur titres de placement": { + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4721" + }, + "Versements restant \u00e0 effectuer sur titres de placement non lib\u00e9r\u00e9s": { + "account_number": "4726" + } + }, + "473-Interm\u00e9diaires Op\u00e9rations faites pour compte de tiers": { + "Mandants": { + "account_number": "4731" + }, + "Mandataires": { + "account_number": "4732" + }, + "Commettants": { + "account_number": "4733" + }, + "Commissionnaires": { + "account_number": "4734" + }, + "\u00c9tat, Collectivit\u00e9s publiques, fonds global d\u2019allocation": { + "account_number": "4739" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits": { + "Compte de r\u00e9partition p\u00e9riodique des produits": { + "account_number": "4747" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA": { + "Compte actif": { + "account_type": "Temporary", + "account_number": "4751" + } + }, + "Charges constat\u00e9es d\u2019avance": { + "account_number": "476" + }, + "478-\u00c9carts de conversion actif": { + "Diminution des cr\u00e9ances d\u2019exploitation": { + "account_number": "4781" + }, + "Diminution des cr\u00e9ances financi\u00e8res": { + "account_number": "4782" + }, + "Augmentation des dettes d\u2019exploitation": { + "account_number": "4783" + }, + "Augmentation des dettes financi\u00e8res": { + "account_number": "4784" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4786" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4788" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (ACTIF)": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "En compte, immobilisations incorporelles": { + "account_number": "4851" + }, + "En compte, immobilisations corporelles": { + "account_number": "4852" + }, + "Effets \u00e0 recevoir, immobilisations incorporelles": { + "account_number": "4853" + }, + "Effets \u00e0 recevoir, immobilisations corporelles": { + "account_number": "4854" + }, + "Effets escompt\u00e9s non \u00e9chus": { + "account_number": "4855" + }, + "Retenues de garantie": { + "account_number": "4857" + }, + "Factures \u00e0 \u00e9tablir": { + "account_number": "4858" + }, + "account_number": "485" + }, + "Autres cr\u00e9ances hors activit\u00e9s ordinaires (HAO)": { + "account_number": "488" + } + }, + "49-D\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme (tiers) (ACTIF)": { + "D\u00e9pr\u00e9ciations des comptes clients": { + "Cr\u00e9ances litigieuses": { + "account_number": "4911" + }, + "Cr\u00e9ances douteuses": { + "account_number": "4912" + }, + "account_number": "491" + }, + "D\u00e9pr\u00e9ciations des comptes organismes internationaux": { + "account_number": "495" + }, + "D\u00e9pr\u00e9ciations des comptes apporteurs, associ\u00e9s et groupe": { + "Associ\u00e9s, comptes courants": { + "account_number": "4962" + }, + "Associ\u00e9s, op\u00e9rations faites en commun": { + "account_number": "4963" + }, + "Groupe, comptes courants": { + "account_number": "4966" + }, + "account_number": "496" + }, + "D\u00e9pr\u00e9ciations des comptes d\u00e9biteurs divers": { + "account_number": "497" + }, + "D\u00e9pr\u00e9ciations des comptes de cr\u00e9ances HAO": { + "Cr\u00e9ances sur cessions d\u2019immobilisations": { + "account_number": "4985" + }, + "Cr\u00e9ances sur cessions de titres de placement": { + "account_number": "4986" + }, + "Autres cr\u00e9ances HAO": { + "account_number": "4988" + }, + "account_number": "498" + }, + "Provisions pour risques \u00e0 court terme": { + "Sur op\u00e9rations d\u2019exploitation": { + "account_number": "4991" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "4997" + }, + "Sur op\u00e9rations HAO": { + "account_number": "4998" + }, + "account_number": "499" + } + }, + "root_type": "Asset" + }, + "4-Comptes de Tiers (PASSIF)": { + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "Fournisseurs, dettes en compte": { + "Fournisseurs": { + "account_type": "Payable", + "account_number": "4011" + }, + "Fournisseurs groupe": { + "account_type": "Payable", + "account_number": "4012" + }, + "Fournisseurs sous-traitants": { + "account_type": "Payable", + "account_number": "4013" + }, + "Fournisseurs, r\u00e9serve de propri\u00e9t\u00e9": { + "account_type": "Payable", + "account_number": "4016" + }, + "Fournisseur, retenues de garantie": { + "account_type": "Payable", + "account_number": "4017" + }, + "account_type": "Payable", + "account_number": "401" + }, + "Fournisseurs, effets \u00e0 payer": { + "Fournisseurs Effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4021" + }, + "Fournisseurs Groupe, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4022" + }, + "Fournisseurs Sous-traitants, effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "4023" + }, + "account_type": "Payable", + "account_number": "402" + }, + "Fournisseurs, acquisitions courantes d\u2019immobilisations": { + "Fournisseurs Dettes en comptes, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4041" + }, + "Fournisseurs Dettes en comptes, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4042" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations incorporelles": { + "account_type": "Payable", + "account_number": "4046" + }, + "Fournisseurs Effets \u00e0 payer, immobilisations corporelles": { + "account_type": "Payable", + "account_number": "4047" + }, + "account_type": "Payable", + "account_number": "404" + }, + "Fournisseurs, factures non parvenues": { + "Fournisseurs": { + "account_type": "Stock Received But Not Billed", + "account_number": "4081" + }, + "Fournisseurs groupe": { + "account_type": "Stock Received But Not Billed", + "account_number": "4082" + }, + "Fournisseurs sous-traitants": { + "account_type": "Stock Received But Not Billed", + "account_number": "4083" + }, + "Fournisseurs, int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed", + "account_number": "4086" + }, + "account_type": "Stock Received But Not Billed", + "account_number": "408" + }, + "account_type": "Payable" + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "Clients cr\u00e9diteurs": { + "Clients, avances et acomptes re\u00e7us": { + "account_number": "4191" + }, + "Clients groupe, avances et acomptes re\u00e7us": { + "account_number": "4192" + }, + "Clients, dettes pour emballages et mat\u00e9riels consign\u00e9s": { + "account_number": "4194" + }, + "Clients, rabais, remises, ristournes et autres avoirs \u00e0 accorder": { + "account_number": "4198" + }, + "account_number": "419" + } + }, + "42-Personnel (PASSIF)": { + "Personnel, r\u00e9mun\u00e9rations dues": { + "account_number": "422" + }, + "Personnel, oppositions, saisies-arr\u00eats": { + "Personnel, oppositions": { + "account_number": "4231" + }, + "Personnel, saisies-arr\u00eats": { + "account_number": "4232" + }, + "Personnel, avis \u00e0 tiers d\u00e9tenteur": { + "account_number": "4233" + }, + "account_number": "423" + }, + "Personnel, \u0153uvres sociales internes": { + "Assistance m\u00e9dicale": { + "account_number": "4241" + }, + "Allocations familiales": { + "account_number": "4242" + }, + "Organismes sociaux rattach\u00e9s \u00e0 l\u2019entit\u00e9": { + "account_number": "4245" + }, + "Autres \u0153uvres sociales internes": { + "account_number": "4248" + }, + "account_number": "424" + }, + "Repr\u00e9sentants du personnel": { + "D\u00e9l\u00e9gu\u00e9s du personnel": { + "account_number": "4251" + }, + "Syndicats et Comit\u00e9s d\u2019entreprises, d\u2019\u00c9tablissement": { + "account_number": "4252" + }, + "Autres repr\u00e9sentants du personnel": { + "account_number": "4258" + }, + "account_number": "425" + }, + "Personnel, participation aux b\u00e9n\u00e9fices et au capital": { + "Participation aux b\u00e9n\u00e9fices": { + "account_number": "4261" + }, + "Participation au capital": { + "account_number": "4264" + }, + "account_number": "426" + }, + "Personnel d\u00e9p\u00f4ts": { + "account_number": "427" + }, + "Personnel, charges \u00e0 payer et produits \u00e0 recevoir": { + "Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": { + "account_number": "4281" + }, + "Autres charges \u00e0 payer": { + "account_number": "4286" + }, + "Produits \u00e0 recevoir": { + "account_number": "4287" + }, + "account_number": "428" + } + }, + "43-Organismes sociaux (PASSIF)": { + "438-Organismes sociaux, charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges sociales sur gratifications \u00e0 payer": { + "account_number": "4381" + }, + "Charges sociales sur cong\u00e9s \u00e0 payer": { + "account_number": "4382" + }, + "Autres charges \u00e0 payer": { + "account_number": "4386" + } + } + }, + "44-\u00c9tat et collectivit\u00e9s publiques (PASSIF)": { + "\u00c9tat, imp\u00f4t sur les b\u00e9n\u00e9fices": { + "account_number": "441" + }, + "\u00c9tat, autres imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes d\u2019\u00c9tat": { + "account_number": "4421" + }, + "Imp\u00f4ts et taxes pour les collectivit\u00e9s publiques": { + "account_number": "4422" + }, + "Imp\u00f4ts et taxes recouvrables sur des obligataires": { + "account_number": "4423" + }, + "Imp\u00f4ts et taxes recouvrables sur des associ\u00e9s": { + "account_number": "4424" + }, + "Droits de douane": { + "account_number": "4426" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "4428" + }, + "account_number": "442" + }, + "\u00c9tat, TVA due ou cr\u00e9dit de TVA": { + "\u00c9tat, TVA due": { + "account_number": "4441" + }, + "\u00c9tat, cr\u00e9dit de TVA \u00e0 reporter": { + "account_number": "4449" + }, + "account_number": "444" + }, + "\u00c9tat, autres taxes sur le chiffre d\u2019affaires": { + "account_number": "446" + }, + "\u00c9tat, imp\u00f4ts retenus \u00e0 la source": { + "Imp\u00f4t G\u00e9n\u00e9ral sur le revenu": { + "account_number": "4471" + }, + "Imp\u00f4ts sur salaires": { + "account_number": "4472" + }, + "Contribution nationale": { + "account_number": "4473" + }, + "Contribution nationale de solidarit\u00e9": { + "account_number": "4474" + }, + "Autres imp\u00f4ts et contributions": { + "account_number": "4478" + }, + "account_number": "447" + } + }, + "46-Apporteurs, associ\u00e9s et groupe (PASSIF)": { + "461-Apporteurs, op\u00e9rations sur le capital (PASSIF)": { + "Apporteurs, apports en nature": { + "account_number": "4611" + }, + "Apporteurs, apports en num\u00e9raire": { + "account_number": "4612" + }, + "Apporteurs, versements re\u00e7us sur augmentation de capital": { + "account_number": "4615" + }, + "Apporteurs, versements anticip\u00e9s": { + "account_number": "4616" + }, + "Apporteurs d\u00e9faillants": { + "account_number": "4617" + }, + "Apporteurs, capital \u00e0 rembourser": { + "account_number": "4619" + } + }, + "462-Associ\u00e9s, comptes courants": { + "Principal": { + "account_number": "4621" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4626" + } + }, + "463-Associ\u00e9s, op\u00e9rations faites en commun et GIE": { + "Op\u00e9rations courantes": { + "account_number": "4631" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4636" + } + }, + "Associ\u00e9s, dividendes \u00e0 payer": { + "account_number": "465" + }, + "Groupe, comptes courants": { + "account_number": "466" + } + }, + "47-D\u00e9biteurs et cr\u00e9diteurs divers (PASSIF)": { + "471-D\u00e9biteurs et cr\u00e9diteurs divers": { + "D\u00e9biteurs divers": { + "account_number": "4711" + }, + "Cr\u00e9diteurs divers": { + "account_number": "4712" + }, + "Obligataires": { + "account_number": "4713" + }, + "R\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "4715" + }, + "Compte d\u2019affacturage": { + "account_number": "4716" + }, + "D\u00e9biteurs divers retenues de garantie": { + "account_number": "4717" + }, + "Apport, compte de fusion et op\u00e9rations assimil\u00e9es": { + "account_number": "4718" + }, + "Bons de souscription d\u2019actions et d\u2019obligations": { + "account_number": "4719" + } + }, + "474-Compte de r\u00e9partition p\u00e9riodique des charges et des produits (PASSIF)": { + "Compte de r\u00e9partition p\u00e9riodique des charges": { + "account_number": "4746" + } + }, + "475-Compte transitoire, ajustement sp\u00e9cial li\u00e9 \u00e0 la r\u00e9vision du SYSCOHADA (PASSIF)": { + "Compte passif": { + "account_number": "4752" + } + }, + "Produits constat\u00e9s d\u2019avance": { + "account_number": "477" + }, + "479-\u00c9carts de conversion passif": { + "Augmentation des cr\u00e9ances d\u2019exploitation": { + "account_number": "4791" + }, + "Augmentation des cr\u00e9ances financi\u00e8res": { + "account_number": "4792" + }, + "Diminution des dettes d\u2019exploitation": { + "account_number": "4793" + }, + "Diminution des dettes financi\u00e8res": { + "account_number": "4794" + }, + "Diff\u00e9rences d\u2019\u00e9valuation sur instruments de tr\u00e9sorerie": { + "account_number": "4797" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4798" + } + } + }, + "48-Cr\u00e9ances et dettes hors activit\u00e9s ordinaires (HAO) (PASSIF)": { + "Fournisseurs d\u2019investissements": { + "Immobilisations incorporelles": { + "account_number": "4811" + }, + "Immobilisations corporelles": { + "account_number": "4812" + }, + "Versements restant \u00e0 effectuer sur titres de participation et titres immobilis\u00e9s non lib\u00e9r\u00e9s": { + "account_number": "4813" + }, + "R\u00e9serve de propri\u00e9t\u00e9": { + "account_number": "4816" + }, + "Retenues de garantie": { + "account_number": "4817" + }, + "Factures non parvenues": { + "account_number": "4818" + }, + "account_number": "481" + }, + "Fournisseurs d\u2019investissements, effets \u00e0 payer": { + "Immobilisations incorporelles": { + "account_number": "4821" + }, + "Immobilisations corporelles": { + "account_number": "4822" + }, + "account_number": "482" + }, + "Autres dettes hors activit\u00e9s ordinaires (HAO)": { + "Produits": { + "account_number": "4887" + }, + "account_number": "484" + } + }, + "root_type": "Liability" + }, + "Comptes de tr\u00e9sorerie": { + "Titres de placement": { + "Titres du tr\u00e9sor et bons de caisse \u00e0 court terme": { + "Titres du Tr\u00e9sor \u00e0 court terme": { + "account_number": "5011" + }, + "Titres d\u2019organismes financiers": { + "account_number": "5012" + }, + "Bons de caisse \u00e0 court terme": { + "account_number": "5013" + }, + "Frais d\u2019acquisition des titres de tr\u00e9sor et bons de caisse": { + "account_number": "5016" + }, + "account_number": "501" + }, + "Actions": { + "Actions ou parts propres": { + "account_number": "5021" + }, + "Actions cot\u00e9es": { + "account_number": "5022" + }, + "Actions non cot\u00e9es": { + "account_number": "5023" + }, + "Actions d\u00e9membr\u00e9es (certificats d\u2019investissement, droits de vote)": { + "account_number": "5024" + }, + "Autres actions": { + "account_number": "5025" + }, + "Frais d\u2019acquisition des actions": { + "account_number": "5026" + }, + "account_number": "502" + }, + "Obligations": { + "Obligations \u00e9mises par la soci\u00e9t\u00e9 et rachet\u00e9es par elle": { + "account_number": "5031" + }, + "Obligations cot\u00e9es": { + "account_number": "5032" + }, + "Obligations non cot\u00e9es": { + "account_number": "5033" + }, + "Autres obligations": { + "account_number": "5035" + }, + "Frais d\u2019acquisition des obligations": { + "account_number": "5036" + }, + "account_number": "503" + }, + "Bons de souscription": { + "Bons de souscription d\u2019actions": { + "account_number": "5042" + }, + "Bons de souscription d\u2019obligations": { + "account_number": "5043" + }, + "account_number": "504" + }, + "Titres n\u00e9gociables hors r\u00e9gion": { + "account_number": "505" + }, + "Int\u00e9r\u00eats courus": { + "Titres du Tr\u00e9sor et bons de caisse \u00e0 court terme": { + "account_number": "5061" + }, + "Actions": { + "account_number": "5062" + }, + "Obligations": { + "account_number": "5063" + }, + "account_number": "506" + }, + "Autres titres de placement et cr\u00e9ances assimil\u00e9es": { + "account_number": "508" + }, + "account_number": "50" + }, + "Valeurs \u00e0 encaisser": { + "Effets \u00e0 encaisser": { + "account_number": "511" + }, + "Effets \u00e0 l\u2019encaissement": { + "account_number": "512" + }, + "Ch\u00e8ques \u00e0 encaisser": { + "account_number": "513" + }, + "Ch\u00e8ques \u00e0 l\u2019encaissement": { + "account_number": "514" + }, + "Cartes de cr\u00e9dit \u00e0 encaisser": { + "account_number": "515" + }, + "Autres valeurs \u00e0 l\u2019encaissement": { + "Warrants": { + "account_number": "5181" + }, + "Billets de fonds": { + "account_number": "5182" + }, + "Ch\u00e8ques de voyage": { + "account_number": "5185" + }, + "Coupons \u00e9chus": { + "account_number": "5186" + }, + "Int\u00e9r\u00eats \u00e9chus des obligations": { + "account_number": "5187" + }, + "account_number": "518" + }, + "account_number": "51" + }, + "Banques": { + "Banques locales": { + "Banques en monnaie nationale": { + "account_type": "Bank", + "account_number": "5211" + }, + "Banques en devises": { + "account_type": "Bank", + "account_number": "5215" + }, + "account_type": "Bank", + "account_number": "521" + }, + "Banques autres \u00c9tats r\u00e9gion": { + "account_number": "522" + }, + "Banques autres \u00c9tats zone mon\u00e9taire": { + "account_number": "523" + }, + "Banques hors zone mon\u00e9taire": { + "account_number": "524" + }, + "Banques d\u00e9p\u00f4t \u00e0 terme": { + "account_number": "525" + }, + "Banques, int\u00e9r\u00eats courus": { + "Banque, int\u00e9r\u00eats courus, charges \u00e0 payer": { + "account_number": "5261" + }, + "Banque, int\u00e9r\u00eats courus, produits \u00e0 recevoir": { + "account_number": "5267" + }, + "account_number": "526" + }, + "account_number": "52" + }, + "\u00c9tablissements financiers et assimil\u00e9s": { + "Ch\u00e8ques postaux": { + "account_number": "531" + }, + "Tr\u00e9sor": { + "account_number": "532" + }, + "Soci\u00e9t\u00e9s de gestion et d\u2019interm\u00e9diation (SGI)": { + "account_number": "533" + }, + "\u00c9tablissements financiers, int\u00e9r\u00eats courus": { + "account_number": "536" + }, + "Autres organismes financiers": { + "account_number": "538" + }, + "account_number": "53" + }, + "Instruments de tr\u00e9sorerie": { + "Options de taux d\u2019int\u00e9r\u00eat": { + "account_number": "541" + }, + "Options de taux de change": { + "account_number": "542" + }, + "Options de taux boursiers": { + "account_number": "543" + }, + "Instruments de march\u00e9s \u00e0 terme": { + "account_number": "544" + }, + "Avoirs d\u2019or et autres m\u00e9taux pr\u00e9cieux": { + "account_number": "545" + }, + "account_number": "54" + }, + "Instruments de monnaie \u00e9lectronique": { + "Monnaie \u00e9lectronique carte carburant": { + "account_number": "551" + }, + "Monnaie \u00e9lectronique t\u00e9l\u00e9phone portable": { + "account_number": "552" + }, + "Monnaie \u00e9lectronique carte p\u00e9age": { + "account_number": "553" + }, + "Porte-monnaie \u00e9lectronique": { + "account_number": "554" + }, + "Autres instruments de monnaies \u00e9lectroniques": { + "account_number": "558" + }, + "account_number": "55" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie et d\u2019escompte": { + "Cr\u00e9dits de tr\u00e9sorerie": { + "account_number": "561" + }, + "Escompte de cr\u00e9dits de campagne": { + "account_number": "564" + }, + "Escompte de cr\u00e9dits ordinaires": { + "account_number": "565" + }, + "Banques, cr\u00e9dits de tr\u00e9sorerie, int\u00e9r\u00eats courus": { + "account_number": "566" + }, + "account_number": "56" + }, + "Caisse": { + "Caisse si\u00e8ge social": { + "Caisse en monnaie nationale": { + "account_number": "5711" + }, + "Caisse en devises": { + "account_number": "5712" + }, + "account_number": "571" + }, + "Caisse succursale A": { + "En monnaie nationale": { + "account_number": "5721" + }, + "En devises": { + "account_number": "5722" + }, + "account_number": "572" + }, + "Caisse succursale B": { + "En monnaie nationale": { + "account_number": "5731" + }, + "En devises": { + "account_number": "5732" + }, + "account_number": "573" + }, + "account_number": "57" + }, + "R\u00e9gies d\u2019avances, accr\u00e9ditifs et virements internes": { + "R\u00e9gies d\u2019avance": { + "account_number": "581" + }, + "Accr\u00e9ditifs": { + "account_number": "582" + }, + "Virements de fonds": { + "account_number": "585" + }, + "Autres virements internes": { + "account_number": "588" + }, + "account_number": "58" + }, + "D\u00e9pr\u00e9ciations et provisions pour risque \u00e0 court terme": { + "D\u00e9pr\u00e9ciations des titres de placement": { + "account_number": "590" + }, + "D\u00e9pr\u00e9ciations des titres et valeurs \u00e0 encaisser": { + "account_number": "591" + }, + "D\u00e9pr\u00e9ciations des comptes banques": { + "account_number": "592" + }, + "D\u00e9pr\u00e9ciations des comptes \u00e9tablissements financiers et assimil\u00e9s": { + "account_number": "593" + }, + "D\u00e9pr\u00e9ciations des comptes d\u2019instruments de tr\u00e9sorerie": { + "account_number": "594" + }, + "Provisions pour risque \u00e0 court terme \u00e0 caract\u00e8re financier": { + "account_number": "599" + }, + "account_number": "59" + }, + "root_type": "Asset", + "account_number": "5" + }, + "Comptes de charges des activit\u00e9s ordinaires": { + "Achats et variations de stocks": { + "Achats de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "6011" + }, + "Hors R\u00e9gion": { + "account_number": "6012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6014" + }, + "Frais sur achats": { + "account_number": "6015" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6019" + }, + "account_number": "601" + }, + "Achats de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "Dans la R\u00e9gion": { + "account_number": "6021" + }, + "Hors R\u00e9gion": { + "account_number": "6022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "6023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "6024" + }, + "Frais sur achats": { + "account_number": "6025" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6029" + }, + "account_number": "602" + }, + "Variations des stocks de biens achet\u00e9s": { + "Variations des stocks de marchandises": { + "account_number": "6031" + }, + "Variations des stocks de mati\u00e8res premi\u00e8res et fournitures li\u00e9es": { + "account_number": "6032" + }, + "Variations des stocks d\u2019autres approvisionnements": { + "account_number": "6033" + }, + "account_number": "603" + }, + "Achats stock\u00e9s de mati\u00e8res et fournitures consommables": { + "Mati\u00e8res consommables": { + "account_number": "6041" + }, + "Mati\u00e8res combustibles": { + "account_number": "6042" + }, + "Produits d\u2019entretien": { + "account_number": "6043" + }, + "Fournitures d\u2019atelier et d\u2019usine": { + "account_number": "6044" + }, + "Frais sur achat": { + "account_number": "6045" + }, + "Fournitures de magasin": { + "account_number": "6046" + }, + "Fournitures de bureau": { + "account_number": "6047" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6049" + }, + "account_number": "604" + }, + "Autres achats": { + "Fournitures non stockables Eau": { + "account_number": "6051" + }, + "Fournitures non stockables \u00c9lectricit\u00e9": { + "account_number": "6052" + }, + "Fournitures non stockables Autres \u00e9nergies": { + "account_number": "6053" + }, + "Fournitures d\u2019entretien non stockables": { + "account_number": "6054" + }, + "Fournitures de bureau non stockables": { + "account_number": "6055" + }, + "Achats de petit mat\u00e9riel et outillage": { + "account_number": "6056" + }, + "Achats d\u2019\u00e9tudes et prestations de services": { + "account_number": "6057" + }, + "Achats de travaux, mat\u00e9riels et \u00e9quipements": { + "account_number": "6058" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6059" + }, + "account_number": "605" + }, + "Achats d\u2019emballages": { + "Emballages perdus": { + "account_number": "6081" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "6082" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "6083" + }, + "Frais sur achats": { + "account_number": "6085" + }, + "Rabais, remises et ristournes obtenus (non ventil\u00e9s)": { + "account_number": "6089" + }, + "account_number": "608" + }, + "account_number": "60" + }, + "Transports": { + "Transports sur ventes": { + "account_number": "612" + }, + "Transports pour le compte de tiers": { + "account_number": "613" + }, + "Transports du personnel": { + "account_number": "614" + }, + "Transports de plis": { + "account_number": "616" + }, + "Autres frais de transport": { + "Voyages et d\u00e9placements": { + "account_number": "6181" + }, + "Transports entre \u00e9tablissements ou chantiers": { + "account_number": "6182" + }, + "Transports administratifs": { + "account_number": "6183" + }, + "account_number": "618" + }, + "account_number": "61" + }, + "Services ext\u00e9rieurs": { + "Sous-traitance g\u00e9n\u00e9rale": { + "account_number": "621" + }, + "Locations, charges locatives": { + "Locations de terrains": { + "account_number": "6221" + }, + "Locations de b\u00e2timents": { + "account_number": "6222" + }, + "Locations de mat\u00e9riels et outillages": { + "account_number": "6223" + }, + "Malis sur emballages": { + "account_number": "6224" + }, + "Locations d\u2019emballages": { + "account_number": "6225" + }, + "Fermages et loyers du foncier": { + "account_number": "6226" + }, + "Locations et charges locatives diverses": { + "account_number": "6228" + }, + "account_number": "622" + }, + "Redevances de location acquisition": { + "Cr\u00e9dit-bail immobilier": { + "account_number": "6232" + }, + "Cr\u00e9dit-bail mobilier": { + "account_number": "6233" + }, + "Location-vente": { + "account_number": "6234" + }, + "Autres contrats de location acquisition": { + "account_number": "6238" + }, + "account_number": "623" + }, + "Entretien, r\u00e9parations, remise en \u00e9tat et maintenance": { + "Entretien et r\u00e9parations des biens immobiliers": { + "account_number": "6241" + }, + "Entretien et r\u00e9parations des biens mobiliers": { + "account_number": "6242" + }, + "Maintenance": { + "account_number": "6243" + }, + "Charges de d\u00e9mant\u00e8lement et remise en \u00e9tat": { + "account_number": "6244" + }, + "Autres entretiens et r\u00e9parations": { + "account_number": "6248" + }, + "account_number": "624" + }, + "Primes d\u2019assurance": { + "Assurances multirisques": { + "account_number": "6251" + }, + "Assurances mat\u00e9riel de transport": { + "account_number": "6252" + }, + "Assurances risques d\u2019exploitation": { + "account_number": "6253" + }, + "Assurances responsabilit\u00e9 du producteur": { + "account_number": "6254" + }, + "Assurances insolvabilit\u00e9 clients": { + "account_number": "6255" + }, + "Assurances transport sur ventes": { + "account_number": "6257" + }, + "Autres primes d\u2019assurances": { + "account_number": "6258" + }, + "account_number": "625" + }, + "\u00c9tudes, recherches et documentation": { + "\u00c9tudes et recherches": { + "account_number": "6261" + }, + "Documentation g\u00e9n\u00e9rale": { + "account_number": "6265" + }, + "Documentation technique": { + "account_number": "6266" + }, + "account_number": "626" + }, + "Publicit\u00e9, publications, relations publiques": { + "Annonces, insertions": { + "account_number": "6271" + }, + "Catalogues, imprim\u00e9s publicitaires": { + "account_number": "6272" + }, + "\u00c9chantillons": { + "account_number": "6273" + }, + "Foires et expositions": { + "account_number": "6274" + }, + "Publications": { + "account_number": "6275" + }, + "Cadeaux \u00e0 la client\u00e8le": { + "account_number": "6276" + }, + "Frais de colloques, s\u00e9minaires, conf\u00e9rences": { + "account_number": "6277" + }, + "Autres charges de publicit\u00e9 et relations publiques": { + "account_number": "6278" + }, + "account_number": "627" + }, + "Frais de t\u00e9l\u00e9communications": { + "Frais de t\u00e9l\u00e9phone": { + "account_number": "6281" + }, + "Frais de t\u00e9lex": { + "account_number": "6282" + }, + "Frais de t\u00e9l\u00e9copie": { + "account_number": "6283" + }, + "Autres frais de t\u00e9l\u00e9communications": { + "account_number": "6288" + }, + "account_number": "628" + }, + "account_number": "62" + }, + "Autres services ext\u00e9rieurs": { + "Frais bancaires": { + "Frais sur titres (vente, garde)": { + "account_number": "6311" + }, + "Frais sur effets": { + "account_number": "6312" + }, + "Location de coffres": { + "account_number": "6313" + }, + "Commissions d\u2019affacturage": { + "account_number": "6314" + }, + "Commissions sur cartes de cr\u00e9dit": { + "account_number": "6315" + }, + "Frais d\u2019\u00e9mission d\u2019emprunts": { + "account_number": "6316" + }, + "Frais sur instruments monnaie \u00e9lectronique": { + "account_number": "6317" + }, + "Autres frais bancaires": { + "account_number": "6318" + }, + "account_number": "631" + }, + "R\u00e9mun\u00e9rations d\u2019interm\u00e9diaires et de conseils": { + "Commissions et courtages sur ventes": { + "account_number": "6322" + }, + "Honoraires des professions r\u00e9glement\u00e9es": { + "account_number": "6324" + }, + "Frais d\u2019actes et de contentieux": { + "account_number": "6325" + }, + "R\u00e9mun\u00e9rations d\u2019affacturage": { + "account_number": "6326" + }, + "R\u00e9mun\u00e9rations des autres prestataires de services": { + "account_number": "6327" + }, + "Divers frais": { + "account_number": "6328" + }, + "account_number": "632" + }, + "Frais de formation du personnel": { + "account_number": "633" + }, + "Redevances pour brevets, licences, logiciels, concessions et droits et valeurs similaires": { + "Redevances pour brevets, licences": { + "account_number": "6342" + }, + "Redevances pour logiciels": { + "account_number": "6343" + }, + "Redevances pour marques": { + "account_number": "6344" + }, + "Redevances pour sites internet": { + "account_number": "6345" + }, + "Redevances pour concessions, droits et valeurs similaires": { + "account_number": "6346" + }, + "account_number": "634" + }, + "Cotisations": { + "Cotisations": { + "account_number": "6351" + }, + "Concours divers": { + "account_number": "6358" + }, + "account_number": "635" + }, + "R\u00e9mun\u00e9rations de personnel ext\u00e9rieur \u00e0 l\u2019entit\u00e9": { + "Personnel int\u00e9rimaire": { + "account_number": "6371" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6372" + }, + "account_number": "637" + }, + "Autres charges externes": { + "Frais de recrutement du personnel": { + "account_number": "6381" + }, + "Frais de d\u00e9m\u00e9nagement": { + "account_number": "6382" + }, + "R\u00e9ceptions": { + "account_number": "6383" + }, + "Missions": { + "account_number": "6384" + }, + "Charges de copropri\u00e9t\u00e9": { + "account_number": "6385" + }, + "account_number": "638" + }, + "account_number": "63" + }, + "Imp\u00f4ts et taxes": { + "Imp\u00f4ts et taxes directs": { + "Imp\u00f4ts fonciers et taxes annexes": { + "account_number": "6411" + }, + "Patentes, licences et taxes annexes": { + "account_number": "6412" + }, + "Taxes sur appointements et salaires": { + "account_number": "6413" + }, + "Taxes d\u2019apprentissage": { + "account_number": "6414" + }, + "Formation professionnelle continue": { + "account_number": "6415" + }, + "Autres imp\u00f4ts et taxes directs": { + "account_number": "6418" + }, + "account_number": "641" + }, + "Imp\u00f4ts et taxes indirects": { + "account_number": "645" + }, + "Droits d\u2019enregistrement": { + "Droits de mutation": { + "account_number": "6461" + }, + "Droits de timbre": { + "account_number": "6462" + }, + "Taxes sur les v\u00e9hicules de soci\u00e9t\u00e9": { + "account_number": "6463" + }, + "Vignettes": { + "account_number": "6464" + }, + "Autres droits": { + "account_number": "6468" + }, + "account_number": "646" + }, + "P\u00e9nalit\u00e9s, amendes fiscales": { + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts directs": { + "account_number": "6471" + }, + "P\u00e9nalit\u00e9s d\u2019assiette, imp\u00f4ts indirects": { + "account_number": "6472" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts directs": { + "account_number": "6473" + }, + "P\u00e9nalit\u00e9s de recouvrement, imp\u00f4ts indirects": { + "account_number": "6474" + }, + "Autres p\u00e9nalit\u00e9s et amendes fiscales": { + "account_number": "6478" + }, + "account_number": "647" + }, + "Autres imp\u00f4ts et taxes": { + "account_number": "648" + }, + "account_number": "64" + }, + "Autres charges": { + "Pertes sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "Clients": { + "account_number": "6511" + }, + "Autres d\u00e9biteurs": { + "account_number": "6515" + }, + "account_number": "651" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de b\u00e9n\u00e9fices (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "6521" + }, + "Pertes imput\u00e9es par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "6525" + }, + "account_number": "652" + }, + "Valeurs comptables des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "6541" + }, + "Immobilisations corporelles": { + "account_number": "6542" + }, + "account_number": "654" + }, + "Perte de change sur cr\u00e9ances et dettes commerciale": { + "account_number": "656" + }, + "P\u00e9nalit\u00e9s et amendes p\u00e9nales": { + "account_number": "657" + }, + "Charges diverses": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "6581" + }, + "Dons": { + "account_number": "6582" + }, + "M\u00e9c\u00e9nat": { + "account_number": "6583" + }, + "Autres charges diverses": { + "account_number": "6588" + }, + "account_number": "658" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "6591" + }, + "Sur stocks": { + "account_number": "6593" + }, + "Sur cr\u00e9ances": { + "account_number": "6594" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme": { + "account_number": "6598" + }, + "account_number": "659" + }, + "account_number": "65" + }, + "Charges de personnel": { + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel national": { + "Appointements salaires et commissions": { + "account_number": "6611" + }, + "Primes et gratifications": { + "account_number": "6612" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6613" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6614" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6615" + }, + "Suppl\u00e9ment familial": { + "account_number": "6616" + }, + "Avantages en nature": { + "account_number": "6617" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6618" + }, + "account_number": "661" + }, + "R\u00e9mun\u00e9rations directes vers\u00e9es au personnel non national": { + "Appointements salaires et commissions": { + "account_number": "6621" + }, + "Primes et gratifications": { + "account_number": "6622" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6623" + }, + "Indemnit\u00e9s de pr\u00e9avis, de licenciement et de recherche d\u2019embauche": { + "account_number": "6624" + }, + "Indemnit\u00e9s de maladie vers\u00e9es aux travailleurs": { + "account_number": "6625" + }, + "Suppl\u00e9ment familial": { + "account_number": "6626" + }, + "Avantages en nature": { + "account_number": "6627" + }, + "Autres r\u00e9mun\u00e9rations directes": { + "account_number": "6628" + }, + "account_number": "662" + }, + "Indemnit\u00e9s forfaitaires vers\u00e9es au personnel": { + "Indemnit\u00e9s de logement": { + "account_number": "6631" + }, + "Indemnit\u00e9s de repr\u00e9sentation": { + "account_number": "6632" + }, + "Indemnit\u00e9s d\u2019expatriation": { + "account_number": "6633" + }, + "Indemnit\u00e9s de transport": { + "account_number": "6634" + }, + "Autres indemnit\u00e9s et avantages divers": { + "account_number": "6638" + }, + "account_number": "663" + }, + "Charges sociales": { + "Charges sociales sur r\u00e9mun\u00e9ration du personnel national": { + "account_number": "6641" + }, + "Charges sociales sur r\u00e9mun\u00e9ration du personnel non national": { + "account_number": "6642" + }, + "account_number": "664" + }, + "R\u00e9mun\u00e9rations et charges sociales de l\u2019exploitant individuel": { + "R\u00e9mun\u00e9ration du travail de l\u2019exploitant": { + "account_number": "6661" + }, + "Charges sociales": { + "account_number": "6662" + }, + "account_number": "666" + }, + "R\u00e9mun\u00e9ration transf\u00e9r\u00e9e de personnel ext\u00e9rieur": { + "Personnel int\u00e9rimaire": { + "account_number": "6671" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l\u2019entit\u00e9": { + "account_number": "6672" + }, + "account_number": "667" + }, + "Autres charges sociales": { + "Versements aux syndicats et comit\u00e9s d\u2019entreprise, d\u2019\u00e9tablissement": { + "account_number": "6681" + }, + "Versements aux comit\u00e9s d\u2019hygi\u00e8ne et de s\u00e9curit\u00e9": { + "account_number": "6682" + }, + "Versements et contributions aux autres \u0153uvres sociales": { + "account_number": "6683" + }, + "M\u00e9decine du travail et pharmacie": { + "account_number": "6684" + }, + "Assurances et organismes de sant\u00e9": { + "account_number": "6685" + }, + "Assurances retraite et fonds de pension": { + "account_number": "6686" + }, + "Majorations et p\u00e9nalit\u00e9s sociales": { + "account_number": "6687" + }, + "Charges sociales diverses": { + "account_number": "6688" + }, + "account_number": "668" + }, + "account_number": "66" + }, + "Frais financiers et charges assimil\u00e9es": { + "Int\u00e9r\u00eats des emprunts": { + "Emprunts obligataires": { + "account_number": "6711" + }, + "Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "6712" + }, + "Dettes li\u00e9es \u00e0 des participations": { + "account_number": "6713" + }, + "Primes de remboursement des obligations": { + "account_number": "6714" + }, + "account_number": "671" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail immobilier": { + "account_number": "6722" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / cr\u00e9dit-bail mobilier": { + "account_number": "6723" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition / location-vente": { + "account_number": "6724" + }, + "Int\u00e9r\u00eats dans loyers des autres locations acquisition": { + "account_number": "6728" + }, + "account_number": "672" + }, + "Escomptes accord\u00e9s": { + "account_number": "673" + }, + "Autres int\u00e9r\u00eats": { + "Avances re\u00e7ues et d\u00e9p\u00f4ts cr\u00e9diteurs": { + "account_number": "6741" + }, + "Comptes courants bloqu\u00e9s": { + "account_number": "6742" + }, + "Int\u00e9r\u00eats sur obligations cautionn\u00e9es": { + "account_number": "6743" + }, + "Int\u00e9r\u00eats sur dettes commerciales": { + "account_number": "6744" + }, + "Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte...)": { + "account_number": "6745" + }, + "Int\u00e9r\u00eats sur dettes diverses": { + "account_number": "6748" + }, + "account_number": "674" + }, + "Escomptes des effets de commerce": { + "account_number": "675" + }, + "Pertes de change financi\u00e8res": { + "account_number": "676" + }, + "Pertes sur titres de placement": { + "Pertes sur cessions de titres de placement": { + "account_number": "6771" + }, + "Mali provenant d\u2019attribution gratuite d\u2019actions au personnel salari\u00e9 et aux dirigeants": { + "account_number": "6772" + }, + "account_number": "677" + }, + "Pertes et charges sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "6781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "6782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "6784" + }, + "account_number": "678" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "6791" + }, + "Sur titres de placement": { + "account_number": "6795" + }, + "Autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "6798" + }, + "account_number": "679" + }, + "account_number": "67" + }, + "Dotations aux amortissements": { + "Dotations aux amortissements d\u2019exploitation": { + "Dotations aux amortissements des immobilisations incorporelles": { + "account_number": "6812" + }, + "Dotations aux amortissements des immobilisations corporelles": { + "account_number": "6813" + }, + "account_number": "681" + }, + "account_number": "68" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations": { + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6911" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "account_number": "6913" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations corporelles": { + "account_number": "6914" + }, + "account_number": "691" + }, + "Dotations aux provisions et aux d\u00e9pr\u00e9ciations financi\u00e8res": { + "Dotations aux provisions pour risques et charges": { + "account_number": "6971" + }, + "Dotations aux d\u00e9pr\u00e9ciations des immobilisations financi\u00e8res": { + "account_number": "6972" + }, + "account_number": "697" + }, + "account_number": "69" + }, + "root_type": "Expense", + "account_number": "6" + }, + "Comptes de produits des activit\u00e9s ordinaires": { + "Ventes": { + "Ventes de marchandises": { + "Dans la R\u00e9gion": { + "account_number": "7011" + }, + "Hors R\u00e9gion": { + "account_number": "7012" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7013" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7014" + }, + "Sur internet": { + "account_number": "7015" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7019" + }, + "account_number": "701" + }, + "Ventes de produits finis": { + "Dans la R\u00e9gion": { + "account_number": "7021" + }, + "Hors R\u00e9gion": { + "account_number": "7022" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7023" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7024" + }, + "Sur internet": { + "account_number": "7025" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7029" + }, + "account_number": "702" + }, + "Ventes de produits interm\u00e9diaires": { + "Dans la R\u00e9gion": { + "account_number": "7031" + }, + "Hors R\u00e9gion": { + "account_number": "7032" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7033" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7034" + }, + "Sur internet": { + "account_number": "7035" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7039" + }, + "account_number": "703" + }, + "Ventes de produits r\u00e9siduels": { + "Dans la R\u00e9gion": { + "account_number": "7041" + }, + "Hors R\u00e9gion": { + "account_number": "7042" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7043" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7044" + }, + "Sur internet": { + "account_number": "7045" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7049" + }, + "account_number": "704" + }, + "Travaux factur\u00e9s": { + "Dans la R\u00e9gion": { + "account_number": "7051" + }, + "Hors R\u00e9gion": { + "account_number": "7052" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7053" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7054" + }, + "Sur internet": { + "account_number": "7055" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7059" + }, + "account_number": "705" + }, + "Services vendus": { + "Dans la R\u00e9gion": { + "account_number": "7061" + }, + "Hors R\u00e9gion": { + "account_number": "7062" + }, + "Aux entit\u00e9s du groupe dans la R\u00e9gion": { + "account_number": "7063" + }, + "Aux entit\u00e9s du groupe hors R\u00e9gion": { + "account_number": "7064" + }, + "Sur internet": { + "account_number": "7065" + }, + "Rabais, remises, ristournes accord\u00e9s (non ventil\u00e9s)": { + "account_number": "7069" + }, + "account_number": "706" + }, + "Produits accessoires": { + "Ports, emballages perdus et autres frais factur\u00e9s": { + "account_number": "7071" + }, + "Commissions et courtages": { + "account_number": "7072" + }, + "Locations": { + "account_number": "7073" + }, + "Bonis sur reprises et cessions d\u2019emballages": { + "account_number": "7074" + }, + "Mise \u00e0 disposition de personnel": { + "account_number": "7075" + }, + "Redevances pour brevets, logiciels, marques et droits similaires": { + "account_number": "7076" + }, + "Services exploit\u00e9s dans l\u2019int\u00e9r\u00eat du personnel": { + "account_number": "7077" + }, + "Autres produits accessoires": { + "account_number": "7078" + }, + "account_number": "707" + }, + "account_number": "70" + }, + "Subventions d\u2019exploitation": { + "Sur produits \u00e0 l\u2019exportation": { + "account_number": "711" + }, + "Sur produits \u00e0 l\u2019importation": { + "account_number": "712" + }, + "Sur produits de p\u00e9r\u00e9quation": { + "account_number": "713" + }, + "Indemnit\u00e9s et subventions d\u2019exploitation (entit\u00e9 agricole)": { + "account_number": "714" + }, + "Autres subventions d\u2019exploitation": { + "Vers\u00e9es par l\u2019\u00c9tat et les collectivit\u00e9s publiques": { + "account_number": "7181" + }, + "Vers\u00e9es par les organismes internationaux": { + "account_number": "7182" + }, + "Vers\u00e9es par des tiers": { + "account_number": "7183" + }, + "account_number": "718" + }, + "account_number": "71" + }, + "Production immobilis\u00e9e": { + "Immobilisations incorporelles": { + "account_number": "721" + }, + "Immobilisations corporelles": { + "Immobilisations corporelles (hors actifs biologiques)": { + "account_number": "7221" + }, + "Immobilisations corporelles (actifs biologiques)": { + "account_number": "7222" + }, + "account_number": "722" + }, + "Production auto-consomm\u00e9e": { + "account_number": "724" + }, + "Immobilisations financi\u00e8res": { + "account_number": "726" + }, + "account_number": "72" + }, + "Variations des stocks de biens et de services produits": { + "Variations des stocks de produits en cours": { + "Produits en cours": { + "account_number": "7341" + }, + "Travaux en cours": { + "account_number": "7342" + }, + "account_number": "734" + }, + "Variations des en-cours de services": { + "\u00c9tudes en cours": { + "account_number": "7351" + }, + "Prestations de services en cours": { + "account_number": "7352" + }, + "account_number": "735" + }, + "Variations des stocks de produits finis": { + "account_number": "736" + }, + "Variations des stocks de produits interm\u00e9diaires et r\u00e9siduels": { + "Produits interm\u00e9diaires": { + "account_number": "7371" + }, + "Produits r\u00e9siduels": { + "account_number": "7372" + }, + "account_number": "737" + }, + "account_number": "73" + }, + "Autres produits": { + "Profits sur cr\u00e9ances clients et autres d\u00e9biteurs": { + "account_number": "751" + }, + "Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part transf\u00e9r\u00e9e de pertes (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "7521" + }, + "B\u00e9n\u00e9fices attribu\u00e9s par transfert (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "7525" + }, + "account_number": "752" + }, + "Produits des cessions courantes d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "7541" + }, + "Immobilisations corporelles": { + "account_number": "7542" + }, + "account_number": "754" + }, + "Gains de change sur cr\u00e9ances et dettes commerciales": { + "account_number": "756" + }, + "Produits divers": { + "Indemnit\u00e9s de fonction et autres r\u00e9mun\u00e9rations d\u2019administrateurs": { + "account_number": "7581" + }, + "Indemnit\u00e9s d\u2019assurances re\u00e7ues": { + "account_number": "7582" + }, + "Autres produits divers": { + "account_number": "7588" + }, + "account_number": "758" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "Sur risques \u00e0 court terme": { + "account_number": "7591" + }, + "Sur stocks": { + "account_number": "7593" + }, + "Sur cr\u00e9ances": { + "account_number": "7594" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme d\u2019exploitation": { + "account_number": "7598" + }, + "account_number": "759" + }, + "account_number": "75" + }, + "Revenus financiers et produits assimil\u00e9s": { + "Int\u00e9r\u00eats de pr\u00eats et cr\u00e9ances diverses": { + "Int\u00e9r\u00eats de pr\u00eats": { + "account_number": "7712" + }, + "Int\u00e9r\u00eats sur cr\u00e9ances diverses": { + "account_number": "7713" + }, + "account_number": "771" + }, + "Revenus de participations et autres titres immobilis\u00e9s": { + "Revenus des titres de participation": { + "account_number": "7721" + }, + "Revenus autres titres immobilis\u00e9s": { + "account_number": "7722" + }, + "account_number": "772" + }, + "Escomptes obtenus": { + "account_number": "773" + }, + "Revenus de placement": { + "Revenus des obligations": { + "account_number": "7745" + }, + "Revenus des titres de placement": { + "account_number": "7746" + }, + "account_number": "774" + }, + "Int\u00e9r\u00eats dans loyers de location acquisition": { + "account_number": "775" + }, + "Gains de change financiers": { + "account_number": "776" + }, + "Gains sur cessions de titres de placement": { + "account_number": "777" + }, + "Gains sur risques financiers": { + "Sur rentes viag\u00e8res": { + "account_number": "7781" + }, + "Sur op\u00e9rations financi\u00e8res": { + "account_number": "7782" + }, + "Sur instruments de tr\u00e9sorerie": { + "account_number": "7784" + }, + "account_number": "778" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions \u00e0 court terme financi\u00e8res": { + "Sur risques financiers": { + "account_number": "7791" + }, + "Sur titres de placement": { + "account_number": "7795" + }, + "Sur autres charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme financi\u00e8res": { + "account_number": "7798" + }, + "account_number": "779" + }, + "account_number": "77" + }, + "Transferts de charges": { + "Transferts de charges d\u2019exploitation": { + "account_number": "781" + }, + "Transferts de charges financi\u00e8res": { + "account_number": "787" + }, + "account_number": "78" + }, + "Reprises de provisions, de d\u00e9pr\u00e9ciations et autres": { + "Reprises de provisions et d\u00e9pr\u00e9ciations d\u2019exploitation": { + "Pour risques et charges": { + "account_number": "7911" + }, + "Des immobilisations incorporelles": { + "account_number": "7913" + }, + "Des immobilisations corporelles": { + "account_number": "7914" + }, + "account_number": "791" + }, + "Reprises de provisions et d\u00e9pr\u00e9ciations financi\u00e8res": { + "Pour risques et charges": { + "account_number": "7971" + }, + "Des immobilisations financi\u00e8res": { + "account_number": "7972" + }, + "account_number": "797" + }, + "Reprises d\u2019amortissements": { + "account_number": "798" + }, + "Reprises de subventions d\u2019investissement": { + "account_number": "799" + }, + "account_number": "79" + }, + "root_type": "Income", + "account_number": "7" + }, + "8-Comptes des autres charges et des autres produits (CHARGES)": { + "Valeurs comptables des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "811" + }, + "Immobilisations corporelles": { + "account_number": "812" + }, + "Immobilisations financi\u00e8res": { + "account_number": "816" + }, + "account_number": "81" + }, + "Charges hors activit\u00e9s ordinaires": { + "Charges HAO constat\u00e9es": { + "account_number": "831" + }, + "Charges li\u00e9es aux op\u00e9rations de restructuration": { + "account_number": "833" + }, + "Pertes sur cr\u00e9ances HAO": { + "account_number": "834" + }, + "Dons et lib\u00e9ralit\u00e9s accord\u00e9s": { + "account_number": "835" + }, + "Abandons de cr\u00e9ances consentis": { + "account_number": "836" + }, + "Charges li\u00e9es aux op\u00e9rations de liquidation": { + "account_number": "837" + }, + "Charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "839" + }, + "account_number": "83" + }, + "Dotations hors activit\u00e9s ordinaires": { + "Dotations aux provisions r\u00e9glement\u00e9es": { + "account_number": "851" + }, + "Dotations aux amortissements HAO": { + "account_number": "852" + }, + "Dotations aux d\u00e9pr\u00e9ciations HAO": { + "account_number": "853" + }, + "Dotations aux provisions pour risques et charges HAO": { + "account_number": "854" + }, + "Autres dotations HAO": { + "account_number": "858" + }, + "account_number": "85" + }, + "Participation des travailleurs": { + "Participation l\u00e9gale aux b\u00e9n\u00e9fices": { + "account_number": "871" + }, + "Participation contractuelle aux b\u00e9n\u00e9fices": { + "account_number": "874" + }, + "Autres participations": { + "account_number": "878" + }, + "account_number": "87" + }, + "Imp\u00f4ts sur le r\u00e9sultat": { + "Imp\u00f4ts sur les b\u00e9n\u00e9fices de l\u2019exercice": { + "Activit\u00e9s exerc\u00e9es dans l\u2019\u00c9tat": { + "account_number": "8911" + }, + "Activit\u00e9s exerc\u00e9es dans les autres \u00c9tats de la R\u00e9gion": { + "account_number": "8912" + }, + "Activit\u00e9s exerc\u00e9es hors R\u00e9gion": { + "account_number": "8913" + }, + "account_number": "891" + }, + "Rappel d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "account_number": "892" + }, + "Imp\u00f4t minimum forfaitaire IMF": { + "account_number": "895" + }, + "D\u00e9gr\u00e8vements et annulations d\u2019imp\u00f4ts sur r\u00e9sultats ant\u00e9rieurs": { + "D\u00e9gr\u00e8vements": { + "account_number": "8991" + }, + "Annulations pour pertes r\u00e9troactives": { + "account_number": "8994" + }, + "account_number": "899" + }, + "account_number": "89" + }, + "root_type": "Expense" + }, + "8-Comptes des autres charges et des autres produits (PRODUITS)": { + "Produits des cessions d\u2019immobilisations": { + "Immobilisations incorporelles": { + "account_number": "821" + }, + "Immobilisations corporelles": { + "account_number": "822" + }, + "Immobilisations financi\u00e8res": { + "account_number": "826" + }, + "account_number": "82" + }, + "Produits hors activit\u00e9s ordinaires": { + "Produits HAO constat\u00e9s": { + "account_number": "841" + }, + "Produits li\u00e9s aux op\u00e9rations de restructuration": { + "account_number": "843" + }, + "Indemnit\u00e9s et subventions HAO (entit\u00e9 agricole)": { + "account_number": "844" + }, + "Dons et lib\u00e9ralit\u00e9s obtenus": { + "account_number": "845" + }, + "Abandons de cr\u00e9ances obtenus": { + "account_number": "846" + }, + "Produits li\u00e9s aux op\u00e9rations de liquidation": { + "account_number": "847" + }, + "Transferts de charges HAO": { + "account_number": "848" + }, + "Reprises de charges pour d\u00e9pr\u00e9ciations et provisions pour risques \u00e0 court terme HAO": { + "account_number": "849" + }, + "account_number": "84" + }, + "Reprises de charges, provisions et d\u00e9pr\u00e9ciations HAO": { + "Reprises de provisions r\u00e9glement\u00e9es": { + "account_number": "861" + }, + "Reprises d\u2019amortissements HAO": { + "account_number": "862" + }, + "Reprises de d\u00e9pr\u00e9ciations HAO": { + "account_number": "863" + }, + "Reprises de provisions pour risques et charges HAO": { + "account_number": "864" + }, + "Autres reprises HAO": { + "account_number": "868" + }, + "account_number": "86" + }, + "Subventions d\u2019\u00e9quilibre": { + "\u00c9tat": { + "account_number": "881" + }, + "Collectivit\u00e9s publiques": { + "account_number": "884" + }, + "Groupe": { + "account_number": "886" + }, + "Autres": { + "account_number": "888" + }, + "account_number": "88" + }, + "root_type": "Income" + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account_closing_balance/account_closing_balance.py b/erpnext/accounts/doctype/account_closing_balance/account_closing_balance.py index 82821e140ea..6d5e023f039 100644 --- a/erpnext/accounts/doctype/account_closing_balance/account_closing_balance.py +++ b/erpnext/accounts/doctype/account_closing_balance/account_closing_balance.py @@ -113,9 +113,9 @@ def get_previous_closing_entries(company, closing_date, accounting_dimensions): entries = [] last_period_closing_voucher = frappe.db.get_all( "Period Closing Voucher", - filters={"docstatus": 1, "company": company, "posting_date": ("<", closing_date)}, + filters={"docstatus": 1, "company": company, "period_end_date": ("<", closing_date)}, fields=["name"], - order_by="posting_date desc", + order_by="period_end_date desc", limit=1, ) diff --git a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.js b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.js index 4e45dede1d5..6f4f9f8d782 100644 --- a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.js +++ b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.js @@ -58,7 +58,7 @@ frappe.ui.form.on("Accounting Dimension", { }, label: function (frm) { - frm.set_value("fieldname", frappe.model.scrub(frm.doc.label)); + frm.set_value("fieldname", frm.doc.label.replace(/ /g, "_").replace(/-/g, "_").toLowerCase()); }, document_type: function (frm) { diff --git a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.json b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.json index 5858f10bb0b..f05d20a0a49 100644 --- a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.json +++ b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.json @@ -31,7 +31,8 @@ "label": "Reference Document Type", "options": "DocType", "read_only_depends_on": "eval:!doc.__islocal", - "reqd": 1 + "reqd": 1, + "search_index": 1 }, { "default": "0", diff --git a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py index db99bcd223b..81937469f21 100644 --- a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py +++ b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py @@ -7,6 +7,7 @@ import json import frappe from frappe import _, scrub from frappe.custom.doctype.custom_field.custom_field import create_custom_field +from frappe.database.schema import validate_column_name from frappe.model import core_doctypes_list from frappe.model.document import Document from frappe.utils import cstr @@ -40,6 +41,11 @@ class AccountingDimension(Document): self.set_fieldname_and_label() def validate(self): + self.validate_doctype() + validate_column_name(self.fieldname) + self.validate_dimension_defaults() + + def validate_doctype(self): if self.document_type in ( *core_doctypes_list, "Accounting Dimension", @@ -48,6 +54,7 @@ class AccountingDimension(Document): "Accounting Dimension Detail", "Company", "Account", + "Finance Book", ): msg = _("Not allowed to create accounting dimension for {0}").format(self.document_type) frappe.throw(msg) @@ -60,8 +67,6 @@ class AccountingDimension(Document): if not self.is_new(): self.validate_document_type_change() - self.validate_dimension_defaults() - def validate_document_type_change(self): doctype_before_save = frappe.db.get_value("Accounting Dimension", self.name, "document_type") if doctype_before_save != self.document_type: @@ -100,6 +105,7 @@ class AccountingDimension(Document): def on_update(self): frappe.flags.accounting_dimensions = None + frappe.flags.accounting_dimensions_details = None def make_dimension_in_accounting_doctypes(doc, doclist=None): @@ -260,7 +266,7 @@ def get_checks_for_pl_and_bs_accounts(): frappe.flags.accounting_dimensions_details = frappe.db.sql( """SELECT p.label, p.disabled, p.fieldname, c.default_dimension, c.company, c.mandatory_for_pl, c.mandatory_for_bs FROM `tabAccounting Dimension`p ,`tabAccounting Dimension Detail` c - WHERE p.name = c.parent""", + WHERE p.name = c.parent AND p.disabled = 0""", as_dict=1, ) diff --git a/erpnext/accounts/doctype/accounting_dimension_filter/accounting_dimension_filter.py b/erpnext/accounts/doctype/accounting_dimension_filter/accounting_dimension_filter.py index 1954b4b0efe..7c843cf552e 100644 --- a/erpnext/accounts/doctype/accounting_dimension_filter/accounting_dimension_filter.py +++ b/erpnext/accounts/doctype/accounting_dimension_filter/accounting_dimension_filter.py @@ -74,12 +74,12 @@ def get_dimension_filter_map(): a.applicable_on_account, d.dimension_value, p.accounting_dimension, p.allow_or_restrict, a.is_mandatory FROM - `tabApplicable On Account` a, `tabAllowed Dimension` d, + `tabApplicable On Account` a, `tabAccounting Dimension Filter` p + LEFT JOIN `tabAllowed Dimension` d ON d.parent = p.name WHERE p.name = a.parent AND p.disabled = 0 - AND p.name = d.parent """, as_dict=1, ) @@ -97,7 +97,6 @@ def get_dimension_filter_map(): f.allow_or_restrict, f.is_mandatory, ) - frappe.flags.dimension_filter_map = dimension_filter_map return frappe.flags.dimension_filter_map diff --git a/erpnext/accounts/doctype/accounting_period/accounting_period.py b/erpnext/accounts/doctype/accounting_period/accounting_period.py index 172ef93f14d..300d216618e 100644 --- a/erpnext/accounts/doctype/accounting_period/accounting_period.py +++ b/erpnext/accounts/doctype/accounting_period/accounting_period.py @@ -101,6 +101,8 @@ def validate_accounting_period_on_doc_save(doc, method=None): date = doc.available_for_use_date elif doc.doctype == "Asset Repair": date = doc.completion_date + elif doc.doctype == "Period Closing Voucher": + date = doc.period_end_date else: date = doc.posting_date diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.js b/erpnext/accounts/doctype/accounts_settings/accounts_settings.js index 4f59085db0a..95332acdc28 100644 --- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.js +++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.js @@ -12,7 +12,7 @@ frappe.ui.form.on("Accounts Settings", { msg += " "; msg += __("Please enable only if the understand the effects of enabling this."); msg += "
"; - msg += "Do you still want to enable immutable ledger?"; + msg += __("Do you still want to enable immutable ledger?"); frappe.confirm( msg, diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json index e9b383776f3..3f343f610e0 100644 --- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json +++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json @@ -40,9 +40,14 @@ "show_payment_schedule_in_print", "currency_exchange_section", "allow_stale", + "column_break_yuug", + "stale_days", "section_break_jpd0", "auto_reconcile_payments", - "stale_days", + "auto_reconciliation_job_trigger", + "reconciliation_queue_size", + "column_break_resa", + "exchange_gain_loss_posting_date", "invoicing_settings_tab", "accounts_transactions_settings_section", "over_billing_allowance", @@ -72,6 +77,7 @@ "reports_tab", "remarks_section", "general_ledger_remarks_length", + "ignore_is_opening_check_for_reporting", "column_break_lvjk", "receivable_payable_remarks_length", "payment_request_settings", @@ -384,7 +390,7 @@ { "fieldname": "section_break_jpd0", "fieldtype": "Section Break", - "label": "Payment Reconciliations" + "label": "Payment Reconciliation Settings" }, { "default": "0", @@ -489,6 +495,43 @@ "fieldname": "create_pr_in_draft_status", "fieldtype": "Check", "label": "Create in Draft Status" + }, + { + "fieldname": "column_break_yuug", + "fieldtype": "Column Break" + }, + { + "fieldname": "column_break_resa", + "fieldtype": "Column Break" + }, + { + "default": "15", + "description": "Interval should be between 1 to 59 MInutes", + "fieldname": "auto_reconciliation_job_trigger", + "fieldtype": "Int", + "label": "Auto Reconciliation Job Trigger" + }, + { + "default": "5", + "description": "Documents Processed on each trigger. Queue Size should be between 5 and 100", + "fieldname": "reconciliation_queue_size", + "fieldtype": "Int", + "label": "Reconciliation Queue Size" + }, + { + "default": "0", + "description": "Ignores legacy Is Opening field in GL Entry that allows adding opening balance post the system is in use while generating reports", + "fieldname": "ignore_is_opening_check_for_reporting", + "fieldtype": "Check", + "label": "Ignore Is Opening check for reporting" + }, + { + "default": "Payment", + "description": "Only applies for Normal Payments", + "fieldname": "exchange_gain_loss_posting_date", + "fieldtype": "Select", + "label": "Posting Date Inheritance for Exchange Gain / Loss", + "options": "Invoice\nPayment\nReconciliation Date" } ], "icon": "icon-cog", @@ -496,7 +539,7 @@ "index_web_pages_for_search": 1, "issingle": 1, "links": [], - "modified": "2024-07-26 06:48:52.714630", + "modified": "2025-01-23 13:15:44.077853", "modified_by": "Administrator", "module": "Accounts", "name": "Accounts Settings", diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.py b/erpnext/accounts/doctype/accounts_settings/accounts_settings.py index 608b3a96f2f..31249e22455 100644 --- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.py +++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.py @@ -10,6 +10,7 @@ from frappe.custom.doctype.property_setter.property_setter import make_property_ from frappe.model.document import Document from frappe.utils import cint +from erpnext.accounts.utils import sync_auto_reconcile_config from erpnext.stock.utils import check_pending_reposting @@ -27,6 +28,7 @@ class AccountsSettings(Document): allow_multi_currency_invoices_against_single_party_account: DF.Check allow_stale: DF.Check auto_reconcile_payments: DF.Check + auto_reconciliation_job_trigger: DF.Int automatically_fetch_payment_terms: DF.Check automatically_process_deferred_accounting_entry: DF.Check book_asset_depreciation_entry_automatically: DF.Check @@ -43,14 +45,17 @@ class AccountsSettings(Document): enable_fuzzy_matching: DF.Check enable_immutable_ledger: DF.Check enable_party_matching: DF.Check + exchange_gain_loss_posting_date: DF.Literal["Invoice", "Payment", "Reconciliation Date"] frozen_accounts_modifier: DF.Link | None general_ledger_remarks_length: DF.Int ignore_account_closing_balance: DF.Check + ignore_is_opening_check_for_reporting: DF.Check make_payment_via_journal_entry: DF.Check merge_similar_account_heads: DF.Check over_billing_allowance: DF.Currency post_change_gl_entries: DF.Check receivable_payable_remarks_length: DF.Int + reconciliation_queue_size: DF.Int role_allowed_to_over_bill: DF.Link | None round_row_wise_tax: DF.Check show_balance_in_coa: DF.Check @@ -90,6 +95,8 @@ class AccountsSettings(Document): if clear_cache: frappe.clear_cache() + self.validate_and_sync_auto_reconcile_config() + def validate_stale_days(self): if not self.allow_stale and cint(self.stale_days) <= 0: frappe.msgprint( @@ -114,3 +121,17 @@ class AccountsSettings(Document): def validate_pending_reposts(self): if self.acc_frozen_upto: check_pending_reposting(self.acc_frozen_upto) + + def validate_and_sync_auto_reconcile_config(self): + if self.has_value_changed("auto_reconciliation_job_trigger"): + if ( + cint(self.auto_reconciliation_job_trigger) > 0 + and cint(self.auto_reconciliation_job_trigger) < 60 + ): + sync_auto_reconcile_config(self.auto_reconciliation_job_trigger) + else: + frappe.throw(_("Cron Interval should be between 1 and 59 Min")) + + if self.has_value_changed("reconciliation_queue_size"): + if cint(self.reconciliation_queue_size) < 5 or cint(self.reconciliation_queue_size) > 100: + frappe.throw(_("Queue Size should be between 5 and 100")) diff --git a/erpnext/erpnext_integrations/doctype/quickbooks_migrator/__init__.py b/erpnext/accounts/doctype/advance_payment_ledger_entry/__init__.py similarity index 100% rename from erpnext/erpnext_integrations/doctype/quickbooks_migrator/__init__.py rename to erpnext/accounts/doctype/advance_payment_ledger_entry/__init__.py diff --git a/erpnext/accounts/doctype/advance_payment_ledger_entry/advance_payment_ledger_entry.js b/erpnext/accounts/doctype/advance_payment_ledger_entry/advance_payment_ledger_entry.js new file mode 100644 index 00000000000..1a0dc1e7272 --- /dev/null +++ b/erpnext/accounts/doctype/advance_payment_ledger_entry/advance_payment_ledger_entry.js @@ -0,0 +1,8 @@ +// Copyright (c) 2024, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt + +// frappe.ui.form.on("Advance Payment Ledger Entry", { +// refresh(frm) { + +// }, +// }); diff --git a/erpnext/accounts/doctype/advance_payment_ledger_entry/advance_payment_ledger_entry.json b/erpnext/accounts/doctype/advance_payment_ledger_entry/advance_payment_ledger_entry.json new file mode 100644 index 00000000000..290ed11c98e --- /dev/null +++ b/erpnext/accounts/doctype/advance_payment_ledger_entry/advance_payment_ledger_entry.json @@ -0,0 +1,113 @@ +{ + "actions": [], + "allow_rename": 1, + "creation": "2024-10-16 16:57:12.085072", + "doctype": "DocType", + "engine": "InnoDB", + "field_order": [ + "company", + "voucher_type", + "voucher_no", + "against_voucher_type", + "against_voucher_no", + "amount", + "currency", + "event" + ], + "fields": [ + { + "fieldname": "voucher_type", + "fieldtype": "Link", + "label": "Voucher Type", + "options": "DocType", + "read_only": 1 + }, + { + "fieldname": "voucher_no", + "fieldtype": "Dynamic Link", + "label": "Voucher No", + "options": "voucher_type", + "read_only": 1 + }, + { + "fieldname": "against_voucher_type", + "fieldtype": "Link", + "label": "Against Voucher Type", + "options": "DocType", + "read_only": 1 + }, + { + "fieldname": "against_voucher_no", + "fieldtype": "Dynamic Link", + "label": "Against Voucher No", + "options": "against_voucher_type", + "read_only": 1 + }, + { + "fieldname": "amount", + "fieldtype": "Currency", + "label": "Amount", + "read_only": 1 + }, + { + "fieldname": "currency", + "fieldtype": "Link", + "label": "Currency", + "options": "Currency", + "read_only": 1 + }, + { + "fieldname": "event", + "fieldtype": "Data", + "label": "Event", + "read_only": 1 + }, + { + "fieldname": "company", + "fieldtype": "Link", + "label": "Company", + "options": "Company", + "read_only": 1 + } + ], + "in_create": 1, + "index_web_pages_for_search": 1, + "links": [], + "modified": "2024-11-05 10:31:28.736671", + "modified_by": "Administrator", + "module": "Accounts", + "name": "Advance Payment Ledger Entry", + "owner": "Administrator", + "permissions": [ + { + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Accounts User", + "share": 1 + }, + { + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Accounts Manager", + "share": 1 + }, + { + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Auditor", + "share": 1 + } + ], + "sort_field": "creation", + "sort_order": "DESC", + "states": [] +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/advance_payment_ledger_entry/advance_payment_ledger_entry.py b/erpnext/accounts/doctype/advance_payment_ledger_entry/advance_payment_ledger_entry.py new file mode 100644 index 00000000000..0ec2d411761 --- /dev/null +++ b/erpnext/accounts/doctype/advance_payment_ledger_entry/advance_payment_ledger_entry.py @@ -0,0 +1,27 @@ +# Copyright (c) 2024, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +# import frappe +from frappe.model.document import Document + + +class AdvancePaymentLedgerEntry(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 + + against_voucher_no: DF.DynamicLink | None + against_voucher_type: DF.Link | None + amount: DF.Currency + company: DF.Link | None + currency: DF.Link | None + event: DF.Data | None + voucher_no: DF.DynamicLink | None + voucher_type: DF.Link | None + # end: auto-generated types + + pass diff --git a/erpnext/accounts/doctype/advance_payment_ledger_entry/test_advance_payment_ledger_entry.py b/erpnext/accounts/doctype/advance_payment_ledger_entry/test_advance_payment_ledger_entry.py new file mode 100644 index 00000000000..2f578aed172 --- /dev/null +++ b/erpnext/accounts/doctype/advance_payment_ledger_entry/test_advance_payment_ledger_entry.py @@ -0,0 +1,222 @@ +# Copyright (c) 2024, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt + +import frappe +from frappe.tests.utils import FrappeTestCase +from frappe.utils import nowdate, today + +from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry +from erpnext.accounts.test.accounts_mixin import AccountsTestMixin +from erpnext.buying.doctype.purchase_order.test_purchase_order import create_purchase_order +from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order + + +class TestAdvancePaymentLedgerEntry(AccountsTestMixin, FrappeTestCase): + """ + Integration tests for AdvancePaymentLedgerEntry. + Use this class for testing interactions between multiple components. + """ + + def setUp(self): + self.create_company() + self.create_usd_receivable_account() + self.create_usd_payable_account() + self.create_item() + self.clear_old_entries() + + def tearDown(self): + frappe.db.rollback() + + def create_sales_order(self, qty=1, rate=100, currency="INR", do_not_submit=False): + """ + Helper method + """ + so = make_sales_order( + company=self.company, + customer=self.customer, + currency=currency, + item=self.item, + qty=qty, + rate=rate, + transaction_date=today(), + do_not_submit=do_not_submit, + ) + return so + + def create_purchase_order(self, qty=1, rate=100, currency="INR", do_not_submit=False): + """ + Helper method + """ + po = create_purchase_order( + company=self.company, + customer=self.supplier, + currency=currency, + item=self.item, + qty=qty, + rate=rate, + transaction_date=today(), + do_not_submit=do_not_submit, + ) + return po + + def test_so_advance_paid_and_currency_with_payment(self): + self.create_customer("_Test USD Customer", "USD") + + so = self.create_sales_order(currency="USD", do_not_submit=True) + so.conversion_rate = 80 + so.submit() + + pe_exchange_rate = 85 + pe = get_payment_entry(so.doctype, so.name, bank_account=self.cash) + pe.reference_no = "1" + pe.reference_date = nowdate() + pe.paid_from = self.debtors_usd + pe.paid_from_account_currency = "USD" + pe.source_exchange_rate = pe_exchange_rate + pe.paid_amount = so.grand_total + pe.received_amount = pe_exchange_rate * pe.paid_amount + pe.references[0].outstanding_amount = 100 + pe.references[0].total_amount = 100 + pe.references[0].allocated_amount = 100 + pe.save().submit() + + so.reload() + self.assertEqual(so.advance_paid, 100) + self.assertEqual(so.party_account_currency, "USD") + + # cancel advance payment + pe.reload() + pe.cancel() + + so.reload() + self.assertEqual(so.advance_paid, 0) + self.assertEqual(so.party_account_currency, "USD") + + def test_so_advance_paid_and_currency_with_journal(self): + self.create_customer("_Test USD Customer", "USD") + + so = self.create_sales_order(currency="USD", do_not_submit=True) + so.conversion_rate = 80 + so.submit() + + je_exchange_rate = 85 + je = frappe.get_doc( + { + "doctype": "Journal Entry", + "company": self.company, + "voucher_type": "Journal Entry", + "posting_date": so.transaction_date, + "multi_currency": True, + "accounts": [ + { + "account": self.debtors_usd, + "party_type": "Customer", + "party": so.customer, + "credit": 8500, + "credit_in_account_currency": 100, + "is_advance": "Yes", + "reference_type": so.doctype, + "reference_name": so.name, + "exchange_rate": je_exchange_rate, + }, + { + "account": self.cash, + "debit": 8500, + "debit_in_account_currency": 8500, + }, + ], + } + ) + je.save().submit() + so.reload() + self.assertEqual(so.advance_paid, 100) + self.assertEqual(so.party_account_currency, "USD") + + # cancel advance payment + je.reload() + je.cancel() + + so.reload() + self.assertEqual(so.advance_paid, 0) + self.assertEqual(so.party_account_currency, "USD") + + def test_po_advance_paid_and_currency_with_payment(self): + self.create_supplier("_Test USD Supplier", "USD") + + po = self.create_purchase_order(currency="USD", do_not_submit=True) + po.conversion_rate = 80 + po.submit() + + pe_exchange_rate = 85 + pe = get_payment_entry(po.doctype, po.name, bank_account=self.cash) + pe.reference_no = "1" + pe.reference_date = nowdate() + pe.paid_to = self.creditors_usd + pe.paid_to_account_currency = "USD" + pe.target_exchange_rate = pe_exchange_rate + pe.received_amount = po.grand_total + pe.paid_amount = pe_exchange_rate * pe.received_amount + pe.references[0].outstanding_amount = 100 + pe.references[0].total_amount = 100 + pe.references[0].allocated_amount = 100 + pe.save().submit() + + po.reload() + self.assertEqual(po.advance_paid, 100) + self.assertEqual(po.party_account_currency, "USD") + + # cancel advance payment + pe.reload() + pe.cancel() + + po.reload() + self.assertEqual(po.advance_paid, 0) + self.assertEqual(po.party_account_currency, "USD") + + def test_po_advance_paid_and_currency_with_journal(self): + self.create_supplier("_Test USD Supplier", "USD") + + po = self.create_purchase_order(currency="USD", do_not_submit=True) + po.conversion_rate = 80 + po.submit() + + je_exchange_rate = 85 + je = frappe.get_doc( + { + "doctype": "Journal Entry", + "company": self.company, + "voucher_type": "Journal Entry", + "posting_date": po.transaction_date, + "multi_currency": True, + "accounts": [ + { + "account": self.creditors_usd, + "party_type": "Supplier", + "party": po.supplier, + "debit": 8500, + "debit_in_account_currency": 100, + "is_advance": "Yes", + "reference_type": po.doctype, + "reference_name": po.name, + "exchange_rate": je_exchange_rate, + }, + { + "account": self.cash, + "credit": 8500, + "credit_in_account_currency": 8500, + }, + ], + } + ) + je.save().submit() + po.reload() + self.assertEqual(po.advance_paid, 100) + self.assertEqual(po.party_account_currency, "USD") + + # cancel advance payment + je.reload() + je.cancel() + + po.reload() + self.assertEqual(po.advance_paid, 0) + self.assertEqual(po.party_account_currency, "USD") diff --git a/erpnext/accounts/doctype/advance_taxes_and_charges/advance_taxes_and_charges.json b/erpnext/accounts/doctype/advance_taxes_and_charges/advance_taxes_and_charges.json index 05b284ae16f..544f4fd6640 100644 --- a/erpnext/accounts/doctype/advance_taxes_and_charges/advance_taxes_and_charges.json +++ b/erpnext/accounts/doctype/advance_taxes_and_charges/advance_taxes_and_charges.json @@ -101,7 +101,7 @@ "fieldname": "rate", "fieldtype": "Float", "in_list_view": 1, - "label": "Rate", + "label": "Tax Rate", "oldfieldname": "rate", "oldfieldtype": "Currency" }, diff --git a/erpnext/accounts/doctype/bank_account/bank_account.json b/erpnext/accounts/doctype/bank_account/bank_account.json index 32f1c675d3b..962551b2417 100644 --- a/erpnext/accounts/doctype/bank_account/bank_account.json +++ b/erpnext/accounts/doctype/bank_account/bank_account.json @@ -208,8 +208,49 @@ "label": "Disabled" } ], - "links": [], - "modified": "2023-09-22 21:31:34.763977", + "links": [ + { + "group": "Transactions", + "link_doctype": "Payment Request", + "link_fieldname": "bank_account" + }, + { + "group": "Transactions", + "link_doctype": "Payment Order", + "link_fieldname": "bank_account" + }, + { + "group": "Transactions", + "link_doctype": "Bank Guarantee", + "link_fieldname": "bank_account" + }, + { + "group": "Transactions", + "link_doctype": "Bank Transaction", + "link_fieldname": "bank_account" + }, + { + "group": "Accounting", + "link_doctype": "Payment Entry", + "link_fieldname": "bank_account" + }, + { + "group": "Accounting", + "link_doctype": "Journal Entry", + "link_fieldname": "bank_account" + }, + { + "group": "Party", + "link_doctype": "Customer", + "link_fieldname": "default_bank_account" + }, + { + "group": "Party", + "link_doctype": "Supplier", + "link_fieldname": "default_bank_account" + } + ], + "modified": "2024-10-30 09:41:14.113414", "modified_by": "Administrator", "module": "Accounts", "name": "Bank Account", @@ -246,4 +287,4 @@ "sort_order": "DESC", "states": [], "track_changes": 1 -} \ No newline at end of file +} diff --git a/erpnext/accounts/doctype/bank_account/bank_account.py b/erpnext/accounts/doctype/bank_account/bank_account.py index c7c693a1cba..4155f0edeef 100644 --- a/erpnext/accounts/doctype/bank_account/bank_account.py +++ b/erpnext/accounts/doctype/bank_account/bank_account.py @@ -48,7 +48,7 @@ class BankAccount(Document): self.name = self.account_name + " - " + self.bank def on_trash(self): - delete_contact_and_address("BankAccount", self.name) + delete_contact_and_address("Bank Account", self.name) def validate(self): self.validate_company() diff --git a/erpnext/accounts/doctype/bank_account/bank_account_dashboard.py b/erpnext/accounts/doctype/bank_account/bank_account_dashboard.py deleted file mode 100644 index 8bf8d8a5cd0..00000000000 --- a/erpnext/accounts/doctype/bank_account/bank_account_dashboard.py +++ /dev/null @@ -1,20 +0,0 @@ -from frappe import _ - - -def get_data(): - return { - "fieldname": "bank_account", - "non_standard_fieldnames": { - "Customer": "default_bank_account", - "Supplier": "default_bank_account", - }, - "transactions": [ - { - "label": _("Payments"), - "items": ["Payment Entry", "Payment Request", "Payment Order", "Payroll Entry"], - }, - {"label": _("Party"), "items": ["Customer", "Supplier"]}, - {"items": ["Bank Guarantee"]}, - {"items": ["Journal Entry"]}, - ], - } diff --git a/erpnext/accounts/doctype/bank_clearance/bank_clearance.py b/erpnext/accounts/doctype/bank_clearance/bank_clearance.py index 85713c6c9a6..55ddfa698b7 100644 --- a/erpnext/accounts/doctype/bank_clearance/bank_clearance.py +++ b/erpnext/accounts/doctype/bank_clearance/bank_clearance.py @@ -108,8 +108,18 @@ class BankClearance(Document): if not d.clearance_date: d.clearance_date = None - payment_entry = frappe.get_doc(d.payment_document, d.payment_entry) - payment_entry.db_set("clearance_date", d.clearance_date) + if d.payment_document == "Sales Invoice": + frappe.db.set_value( + "Sales Invoice Payment", + {"parent": d.payment_entry, "account": self.get("account"), "amount": [">", 0]}, + "clearance_date", + d.clearance_date, + ) + + else: + # using db_set to trigger notification + payment_entry = frappe.get_doc(d.payment_document, d.payment_entry) + payment_entry.db_set("clearance_date", d.clearance_date) clearance_date_updated = True @@ -149,16 +159,13 @@ def get_payment_entries_for_bank_clearance( as_dict=1, ) - if bank_account: - condition += "and bank_account = %(bank_account)s" - payment_entries = frappe.db.sql( f""" select "Payment Entry" as payment_document, name as payment_entry, reference_no as cheque_number, reference_date as cheque_date, if(paid_from=%(account)s, paid_amount + total_taxes_and_charges, 0) as credit, - if(paid_from=%(account)s, 0, received_amount) as debit, + if(paid_from=%(account)s, 0, received_amount + total_taxes_and_charges) as debit, posting_date, ifnull(party,if(paid_from=%(account)s,paid_to,paid_from)) as against_account, clearance_date, if(paid_to=%(account)s, paid_to_account_currency, paid_from_account_currency) as account_currency from `tabPayment Entry` @@ -173,7 +180,6 @@ def get_payment_entries_for_bank_clearance( "account": account, "from": from_date, "to": to_date, - "bank_account": bank_account, }, as_dict=1, ) diff --git a/erpnext/accounts/doctype/bank_clearance/test_bank_clearance.py b/erpnext/accounts/doctype/bank_clearance/test_bank_clearance.py index d785bfbfef2..658a69a4803 100644 --- a/erpnext/accounts/doctype/bank_clearance/test_bank_clearance.py +++ b/erpnext/accounts/doctype/bank_clearance/test_bank_clearance.py @@ -6,16 +6,29 @@ import unittest import frappe from frappe.utils import add_months, getdate +from erpnext.accounts.doctype.cost_center.test_cost_center import create_cost_center from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice +from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice +from erpnext.stock.doctype.item.test_item import create_item +from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse from erpnext.tests.utils import if_lending_app_installed, if_lending_app_not_installed class TestBankClearance(unittest.TestCase): @classmethod def setUpClass(cls): + create_warehouse( + warehouse_name="_Test Warehouse", + properties={"parent_warehouse": "All Warehouses - _TC"}, + company="_Test Company", + ) + create_item("_Test Item") + create_cost_center(cost_center_name="_Test Cost Center", company="_Test Company") + clear_payment_entries() clear_loan_transactions() + clear_pos_sales_invoices() make_bank_account() add_transactions() @@ -83,11 +96,41 @@ class TestBankClearance(unittest.TestCase): bank_clearance.get_payment_entries() self.assertEqual(len(bank_clearance.payment_entries), 3) + def test_update_clearance_date_on_si(self): + sales_invoice = make_pos_sales_invoice() + + date = getdate() + bank_clearance = frappe.get_doc("Bank Clearance") + bank_clearance.account = "_Test Bank Clearance - _TC" + bank_clearance.from_date = add_months(date, -1) + bank_clearance.to_date = date + bank_clearance.include_pos_transactions = 1 + bank_clearance.get_payment_entries() + + self.assertNotEqual(len(bank_clearance.payment_entries), 0) + for payment in bank_clearance.payment_entries: + if payment.payment_entry == sales_invoice.name: + payment.clearance_date = date + + bank_clearance.update_clearance_date() + + si_clearance_date = frappe.db.get_value( + "Sales Invoice Payment", + {"parent": sales_invoice.name, "account": bank_clearance.account}, + "clearance_date", + ) + + self.assertEqual(si_clearance_date, date) + def clear_payment_entries(): frappe.db.delete("Payment Entry") +def clear_pos_sales_invoices(): + frappe.db.delete("Sales Invoice", {"is_pos": 1}) + + @if_lending_app_installed def clear_loan_transactions(): for dt in [ @@ -115,9 +158,45 @@ def add_transactions(): def make_payment_entry(): - pi = make_purchase_invoice(supplier="_Test Supplier", qty=1, rate=690) + from erpnext.buying.doctype.supplier.test_supplier import create_supplier + + supplier = create_supplier(supplier_name="_Test Supplier") + pi = make_purchase_invoice( + supplier=supplier, + supplier_warehouse="_Test Warehouse - _TC", + expense_account="Cost of Goods Sold - _TC", + uom="Nos", + qty=1, + rate=690, + ) pe = get_payment_entry("Purchase Invoice", pi.name, bank_account="_Test Bank Clearance - _TC") pe.reference_no = "Conrad Oct 18" pe.reference_date = "2018-10-24" pe.insert() pe.submit() + + +def make_pos_sales_invoice(): + from erpnext.accounts.doctype.opening_invoice_creation_tool.test_opening_invoice_creation_tool import ( + make_customer, + ) + + mode_of_payment = frappe.get_doc({"doctype": "Mode of Payment", "name": "Cash"}) + + if not frappe.db.get_value("Mode of Payment Account", {"company": "_Test Company", "parent": "Cash"}): + mode_of_payment.append( + "accounts", {"company": "_Test Company", "default_account": "_Test Bank Clearance - _TC"} + ) + mode_of_payment.save() + + customer = make_customer(customer="_Test Customer") + + si = create_sales_invoice(customer=customer, item="_Test Item", is_pos=1, qty=1, rate=1000, do_not_save=1) + si.set("payments", []) + si.append( + "payments", {"mode_of_payment": "Cash", "account": "_Test Bank Clearance - _TC", "amount": 1000} + ) + si.insert() + si.submit() + + return si 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 b15745d834c..d0910a8e68c 100644 --- a/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js +++ b/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.js @@ -19,10 +19,15 @@ frappe.ui.form.on("Bank Reconciliation Tool", { }, onload: function (frm) { + if (!frm.doc.company) { + frm.set_value("company", frappe.defaults.get_default("company")); + } + // Set default filter dates let today = frappe.datetime.get_today(); frm.doc.bank_statement_from_date = frappe.datetime.add_months(today, -1); frm.doc.bank_statement_to_date = today; + frm.trigger("bank_account"); }, @@ -98,7 +103,7 @@ frappe.ui.form.on("Bank Reconciliation Tool", { make_reconciliation_tool(frm) { frm.get_field("reconciliation_tool_cards").$wrapper.empty(); - if (frm.doc.bank_account && frm.doc.bank_statement_to_date) { + if (frm.doc.company && frm.doc.bank_account && frm.doc.bank_statement_to_date) { frm.trigger("get_cleared_balance").then(() => { if ( frm.doc.bank_account && @@ -114,12 +119,13 @@ frappe.ui.form.on("Bank Reconciliation Tool", { }, get_account_opening_balance(frm) { - if (frm.doc.bank_account && frm.doc.bank_statement_from_date) { + if (frm.doc.company && frm.doc.bank_account && frm.doc.bank_statement_from_date) { frappe.call({ method: "erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool.get_account_balance", args: { bank_account: frm.doc.bank_account, till_date: frappe.datetime.add_days(frm.doc.bank_statement_from_date, -1), + company: frm.doc.company, }, callback: (response) => { frm.set_value("account_opening_balance", response.message); @@ -129,12 +135,13 @@ frappe.ui.form.on("Bank Reconciliation Tool", { }, get_cleared_balance(frm) { - if (frm.doc.bank_account && frm.doc.bank_statement_to_date) { + if (frm.doc.company && frm.doc.bank_account && frm.doc.bank_statement_to_date) { return frappe.call({ method: "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_to_date, + company: frm.doc.company, }, callback: (response) => { frm.cleared_balance = response.message; diff --git a/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py b/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py index 42b1a54dea6..7f97c3677bd 100644 --- a/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py +++ b/erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py @@ -8,10 +8,12 @@ import frappe from frappe import _ from frappe.model.document import Document from frappe.query_builder.custom import ConstantColumn +from frappe.query_builder.functions import Sum from frappe.utils import cint, flt from erpnext import get_default_cost_center from erpnext.accounts.doctype.bank_transaction.bank_transaction import get_total_allocated_amount +from erpnext.accounts.party import get_party_account from erpnext.accounts.report.bank_reconciliation_statement.bank_reconciliation_statement import ( get_amounts_not_reflected_in_system, get_entries, @@ -78,10 +80,17 @@ def get_bank_transactions(bank_account, from_date=None, to_date=None): @frappe.whitelist() -def get_account_balance(bank_account, till_date): +def get_account_balance(bank_account, till_date, company): # returns account balance till the specified date account = frappe.db.get_value("Bank Account", bank_account, "account") - filters = frappe._dict({"account": account, "report_date": till_date, "include_pos_transactions": 1}) + filters = frappe._dict( + { + "account": account, + "report_date": till_date, + "include_pos_transactions": 1, + "company": company, + } + ) data = get_entries(filters) balance_as_per_system = get_balance_on(filters["account"], filters["report_date"]) @@ -93,11 +102,7 @@ def get_account_balance(bank_account, till_date): amounts_not_reflected_in_system = get_amounts_not_reflected_in_system(filters) - bank_bal = ( - flt(balance_as_per_system) - flt(total_debit) + flt(total_credit) + amounts_not_reflected_in_system - ) - - return bank_bal + return flt(balance_as_per_system) - flt(total_debit) + flt(total_credit) + amounts_not_reflected_in_system @frappe.whitelist() @@ -304,54 +309,56 @@ def create_payment_entry_bts( bank_transaction = frappe.db.get_values( "Bank Transaction", bank_transaction_name, - fieldname=["name", "unallocated_amount", "deposit", "bank_account"], + fieldname=["name", "unallocated_amount", "deposit", "bank_account", "currency"], as_dict=True, )[0] - paid_amount = bank_transaction.unallocated_amount + payment_type = "Receive" if bank_transaction.deposit > 0.0 else "Pay" - company_account = frappe.get_value("Bank Account", bank_transaction.bank_account, "account") - company = frappe.get_value("Account", company_account, "company") - payment_entry_dict = { - "company": company, - "payment_type": payment_type, - "reference_no": reference_number, - "reference_date": reference_date, - "party_type": party_type, - "party": party, - "posting_date": posting_date, - "paid_amount": paid_amount, - "received_amount": paid_amount, - } - payment_entry = frappe.new_doc("Payment Entry") + bank_account = frappe.get_cached_value("Bank Account", bank_transaction.bank_account, "account") + company = frappe.get_cached_value("Account", bank_account, "company") + party_account = get_party_account(party_type, party, company) - payment_entry.update(payment_entry_dict) + bank_currency = bank_transaction.currency + party_currency = frappe.get_cached_value("Account", party_account, "account_currency") - if mode_of_payment: - payment_entry.mode_of_payment = mode_of_payment - if project: - payment_entry.project = project - if cost_center: - payment_entry.cost_center = cost_center - if payment_type == "Receive": - payment_entry.paid_to = company_account - else: - payment_entry.paid_from = company_account + exc_rate = get_exchange_rate(bank_currency, party_currency, posting_date) - payment_entry.validate() + amt_in_bank_acc_currency = bank_transaction.unallocated_amount + amount_in_party_currency = bank_transaction.unallocated_amount * exc_rate + + pe = frappe.new_doc("Payment Entry") + pe.payment_type = payment_type + pe.company = company + pe.reference_no = reference_number + pe.reference_date = reference_date + pe.party_type = party_type + pe.party = party + pe.posting_date = posting_date + pe.paid_from = party_account if payment_type == "Receive" else bank_account + pe.paid_to = party_account if payment_type == "Pay" else bank_account + pe.paid_from_account_currency = party_currency if payment_type == "Receive" else bank_currency + pe.paid_to_account_currency = party_currency if payment_type == "Pay" else bank_currency + pe.paid_amount = amount_in_party_currency if payment_type == "Receive" else amt_in_bank_acc_currency + pe.received_amount = amount_in_party_currency if payment_type == "Pay" else amt_in_bank_acc_currency + pe.mode_of_payment = mode_of_payment + pe.project = project + pe.cost_center = cost_center + + pe.validate() if allow_edit: - return payment_entry + return pe - payment_entry.insert() + pe.insert() + pe.submit() - payment_entry.submit() vouchers = json.dumps( [ { "payment_doctype": "Payment Entry", - "payment_name": payment_entry.name, - "amount": paid_amount, + "payment_name": pe.name, + "amount": amt_in_bank_acc_currency, } ] ) @@ -367,10 +374,37 @@ def auto_reconcile_vouchers( from_reference_date=None, to_reference_date=None, ): - frappe.flags.auto_reconcile_vouchers = True - reconciled, partially_reconciled = set(), set() - bank_transactions = get_bank_transactions(bank_account) + + if len(bank_transactions) > 10: + frappe.enqueue( + method="erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool.start_auto_reconcile", + queue="long", + bank_transactions=bank_transactions, + from_date=from_date, + to_date=to_date, + filter_by_reference_date=filter_by_reference_date, + from_reference_date=from_reference_date, + to_reference_date=to_reference_date, + ) + frappe.msgprint(_("Auto Reconciliation has started in the background")) + else: + start_auto_reconcile( + bank_transactions, + from_date, + to_date, + filter_by_reference_date, + from_reference_date, + to_reference_date, + ) + + +def start_auto_reconcile( + bank_transactions, from_date, to_date, filter_by_reference_date, from_reference_date, to_reference_date +): + frappe.flags.auto_reconcile_vouchers = True + + reconciled, partially_reconciled = set(), set() for transaction in bank_transactions: linked_payments = get_linked_payments( transaction.name, @@ -408,7 +442,6 @@ def auto_reconcile_vouchers( frappe.msgprint(title=_("Auto Reconciliation"), msg=alert_message, indicator=indicator) frappe.flags.auto_reconcile_vouchers = False - return reconciled, partially_reconciled def get_auto_reconcile_message(partially_reconciled, reconciled): @@ -480,17 +513,28 @@ def get_linked_payments( def subtract_allocations(gl_account, vouchers): "Look up & subtract any existing Bank Transaction allocations" copied = [] - for voucher in vouchers: - rows = get_total_allocated_amount(voucher.get("doctype"), voucher.get("name")) - filtered_row = list(filter(lambda row: row.get("gl_account") == gl_account, rows)) - if amount := None if not filtered_row else filtered_row[0]["total"]: + voucher_docs = [(voucher.get("doctype"), voucher.get("name")) for voucher in vouchers] + voucher_allocated_amounts = get_total_allocated_amount(voucher_docs) + + for voucher in vouchers: + if amount := get_allocated_amount(voucher_allocated_amounts, voucher, gl_account): voucher["paid_amount"] -= amount copied.append(voucher) return copied +def get_allocated_amount(voucher_allocated_amounts, voucher, gl_account): + if not (voucher_details := voucher_allocated_amounts.get((voucher.get("doctype"), voucher.get("name")))): + return + + if not (row := voucher_details.get(gl_account)): + return + + return row.get("total") + + def check_matching( bank_account, company, @@ -719,7 +763,7 @@ def get_pe_matching_query( (ref_rank + amount_rank + party_rank + 1).as_("rank"), ConstantColumn("Payment Entry").as_("doctype"), pe.name, - pe.paid_amount_after_tax.as_("paid_amount"), + pe.base_paid_amount_after_tax.as_("paid_amount"), pe.reference_no, pe.reference_date, pe.party, @@ -760,26 +804,20 @@ def get_je_matching_query( je = frappe.qb.DocType("Journal Entry") jea = frappe.qb.DocType("Journal Entry Account") - ref_condition = je.cheque_no == transaction.reference_number - ref_rank = frappe.qb.terms.Case().when(ref_condition, 1).else_(0) - amount_field = f"{cr_or_dr}_in_account_currency" - amount_equality = getattr(jea, amount_field) == transaction.unallocated_amount - amount_rank = frappe.qb.terms.Case().when(amount_equality, 1).else_(0) filter_by_date = je.posting_date.between(from_date, to_date) if cint(filter_by_reference_date): filter_by_date = je.cheque_date.between(from_reference_date, to_reference_date) - query = ( + subquery = ( frappe.qb.from_(jea) .join(je) .on(jea.parent == je.name) .select( - (ref_rank + amount_rank + 1).as_("rank"), + Sum(getattr(jea, amount_field)).as_("paid_amount"), ConstantColumn("Journal Entry").as_("doctype"), je.name, - getattr(jea, amount_field).as_("paid_amount"), je.cheque_no.as_("reference_no"), je.cheque_date.as_("reference_date"), je.pay_to_recd_from.as_("party"), @@ -791,14 +829,26 @@ def get_je_matching_query( .where(je.voucher_type != "Opening Entry") .where(je.clearance_date.isnull()) .where(jea.account == common_filters.bank_account) - .where(amount_equality if exact_match else getattr(jea, amount_field) > 0.0) - .where(je.docstatus == 1) .where(filter_by_date) + .groupby(je.name) .orderby(je.cheque_date if cint(filter_by_reference_date) else je.posting_date) ) if frappe.flags.auto_reconcile_vouchers is True: - query = query.where(ref_condition) + subquery = subquery.where(je.cheque_no == transaction.reference_number) + + ref_rank = frappe.qb.terms.Case().when(subquery.reference_no == transaction.reference_number, 1).else_(0) + amount_equality = subquery.paid_amount == transaction.unallocated_amount + amount_rank = frappe.qb.terms.Case().when(amount_equality, 1).else_(0) + + query = ( + frappe.qb.from_(subquery) + .select( + "*", + (ref_rank + amount_rank + 1).as_("rank"), + ) + .where(amount_equality if exact_match else subquery.paid_amount > 0.0) + ) return query diff --git a/erpnext/accounts/doctype/bank_transaction/auto_match_party.py b/erpnext/accounts/doctype/bank_transaction/auto_match_party.py index a1271b9c32a..66aab9d62dd 100644 --- a/erpnext/accounts/doctype/bank_transaction/auto_match_party.py +++ b/erpnext/accounts/doctype/bank_transaction/auto_match_party.py @@ -45,45 +45,41 @@ class AutoMatchbyAccountIBAN: if not (self.bank_party_account_number or self.bank_party_iban): return None - result = self.match_account_in_party() - return result + return self.match_account_in_party() def match_account_in_party(self) -> tuple | None: - """Check if there is a IBAN/Account No. match in Customer/Supplier/Employee""" - result = None - parties = get_parties_in_order(self.deposit) - or_filters = self.get_or_filters() + """ + Returns (Party Type, Party) if a matching account is found in Bank Account or Employee: + 1. Get party from a matching (iban/account no) Bank Account + 2. If not found, get party from Employee with matching bank account details (iban/account no) + """ + if not (self.bank_party_account_number or self.bank_party_iban): + # Nothing to match + return None - for party in parties: - party_result = frappe.db.get_all( - "Bank Account", or_filters=or_filters, pluck="party", limit_page_length=1 - ) + # Search for a matching Bank Account that has party set + party_result = frappe.db.get_all( + "Bank Account", + or_filters=self.get_or_filters(), + filters={"party_type": ("is", "set"), "party": ("is", "set")}, + fields=["party", "party_type"], + limit_page_length=1, + ) + if result := party_result[0] if party_result else None: + return (result["party_type"], result["party"]) - if party == "Employee" and not party_result: - # Search in Bank Accounts first for Employee, and then Employee record - if "bank_account_no" in or_filters: - or_filters["bank_ac_no"] = or_filters.pop("bank_account_no") + # If no party is found, search in Employee (since it has bank account details) + if employee_result := frappe.db.get_all( + "Employee", or_filters=self.get_or_filters("Employee"), pluck="name", limit_page_length=1 + ): + return ("Employee", employee_result[0]) - party_result = frappe.db.get_all( - party, or_filters=or_filters, pluck="name", limit_page_length=1 - ) - - if "bank_ac_no" in or_filters: - or_filters["bank_account_no"] = or_filters.pop("bank_ac_no") - - if party_result: - result = ( - party, - party_result[0], - ) - break - - return result - - def get_or_filters(self) -> dict: + def get_or_filters(self, party: str | None = None) -> dict: + """Return OR filters for Bank Account and IBAN""" or_filters = {} if self.bank_party_account_number: - or_filters["bank_account_no"] = self.bank_party_account_number + bank_ac_field = "bank_ac_no" if party == "Employee" else "bank_account_no" + or_filters[bank_ac_field] = self.bank_party_account_number if self.bank_party_iban: or_filters["iban"] = self.bank_party_iban @@ -103,8 +99,7 @@ class AutoMatchbyPartyNameDescription: if not (self.bank_party_name or self.description): return None - result = self.match_party_name_desc_in_party() - return result + return self.match_party_name_desc_in_party() def match_party_name_desc_in_party(self) -> tuple | None: """Fuzzy search party name and/or description against parties in the system""" @@ -113,7 +108,8 @@ class AutoMatchbyPartyNameDescription: for party in parties: filters = {"status": "Active"} if party == "Employee" else {"disabled": 0} - names = frappe.get_all(party, filters=filters, pluck=party.lower() + "_name") + field = f"{party.lower()}_name" + names = frappe.get_all(party, filters=filters, fields=[f"{field} as party_name", "name"]) for field in ["bank_party_name", "description"]: if not self.get(field): @@ -132,16 +128,14 @@ class AutoMatchbyPartyNameDescription: def fuzzy_search_and_return_result(self, party, names, field) -> tuple | None: skip = False - result = process.extract(query=self.get(field), choices=names, scorer=fuzz.token_set_ratio) + result = process.extract( + query=self.get(field), + choices={row.get("name"): row.get("party_name") for row in names}, + scorer=fuzz.token_set_ratio, + ) party_name, skip = self.process_fuzzy_result(result) - if not party_name: - return None, skip - - return ( - party, - party_name, - ), skip + return ((party, party_name), skip) if party_name else (None, skip) def process_fuzzy_result(self, result: list | None): """ @@ -150,30 +144,30 @@ class AutoMatchbyPartyNameDescription: Returns: Result, Skip (whether or not to discontinue matching) """ - PARTY, SCORE, CUTOFF = 0, 1, 80 + SCORE, PARTY_ID, CUTOFF = 1, 2, 80 if not result or not len(result): return None, False first_result = result[0] if len(result) == 1: - return (first_result[PARTY] if first_result[SCORE] > CUTOFF else None), True + return (first_result[PARTY_ID] if first_result[SCORE] > CUTOFF else None), True - second_result = result[1] if first_result[SCORE] > CUTOFF: + second_result = result[1] # If multiple matches with the same score, return None but discontinue matching # Matches were found but were too close to distinguish between if first_result[SCORE] == second_result[SCORE]: return None, True - return first_result[PARTY], True + return first_result[PARTY_ID], True else: return None, False def get_parties_in_order(deposit: float) -> list: - parties = ["Supplier", "Employee", "Customer"] # most -> least likely to receive - if flt(deposit) > 0: - parties = ["Customer", "Supplier", "Employee"] # most -> least likely to pay - - return parties + return ( + ["Customer", "Supplier", "Employee"] # most -> least likely to pay us + if flt(deposit) > 0 + else ["Supplier", "Employee", "Customer"] # most -> least likely to receive from us + ) diff --git a/erpnext/accounts/doctype/bank_transaction/bank_transaction.js b/erpnext/accounts/doctype/bank_transaction/bank_transaction.js index d899d429178..1ca76a68fde 100644 --- a/erpnext/accounts/doctype/bank_transaction/bank_transaction.js +++ b/erpnext/accounts/doctype/bank_transaction/bank_transaction.js @@ -2,27 +2,6 @@ // For license information, please see license.txt frappe.ui.form.on("Bank Transaction", { - onload(frm) { - frm.set_query("payment_document", "payment_entries", function () { - const payment_doctypes = frm.events.get_payment_doctypes(frm); - return { - filters: { - name: ["in", payment_doctypes], - }, - }; - }); - }, - refresh(frm) { - if (!frm.is_dirty() && frm.doc.payment_entries.length > 0) { - frm.add_custom_button(__("Unreconcile Transaction"), () => { - frm.call("remove_payment_entries").then(() => frm.refresh()); - }); - } - }, - bank_account: function (frm) { - set_bank_statement_filter(frm); - }, - setup: function (frm) { frm.set_query("party_type", function () { return { @@ -31,6 +10,41 @@ frappe.ui.form.on("Bank Transaction", { }, }; }); + + frm.set_query("bank_account", function () { + return { + filters: { is_company_account: 1 }, + }; + }); + + frm.set_query("payment_document", "payment_entries", function () { + const payment_doctypes = frm.events.get_payment_doctypes(frm); + return { + filters: { + name: ["in", payment_doctypes], + }, + }; + }); + + frm.set_query("payment_entry", "payment_entries", function () { + return { + filters: { + docstatus: ["!=", 2], + }, + }; + }); + }, + + refresh(frm) { + if (!frm.is_dirty() && frm.doc.payment_entries.length > 0) { + frm.add_custom_button(__("Unreconcile Transaction"), () => { + frm.call("remove_payment_entries").then(() => frm.refresh()); + }); + } + }, + + bank_account: function (frm) { + set_bank_statement_filter(frm); }, get_payment_doctypes: function () { @@ -39,31 +53,6 @@ frappe.ui.form.on("Bank Transaction", { }, }); -frappe.ui.form.on("Bank Transaction Payments", { - payment_entries_remove: function (frm, cdt, cdn) { - update_clearance_date(frm, cdt, cdn); - }, -}); - -const update_clearance_date = (frm, cdt, cdn) => { - if (frm.doc.docstatus === 1) { - frappe - .xcall("erpnext.accounts.doctype.bank_transaction.bank_transaction.unclear_reference_payment", { - doctype: cdt, - docname: cdn, - bt_name: frm.doc.name, - }) - .then((e) => { - if (e == "success") { - frappe.show_alert({ - message: __("Document {0} successfully uncleared", [e]), - indicator: "green", - }); - } - }); - } -}; - function set_bank_statement_filter(frm) { frm.set_query("bank_statement", function () { return { diff --git a/erpnext/accounts/doctype/bank_transaction/bank_transaction.py b/erpnext/accounts/doctype/bank_transaction/bank_transaction.py index 4354f238a42..39ea5fde777 100644 --- a/erpnext/accounts/doctype/bank_transaction/bank_transaction.py +++ b/erpnext/accounts/doctype/bank_transaction/bank_transaction.py @@ -5,7 +5,7 @@ import frappe from frappe import _ from frappe.model.docstatus import DocStatus from frappe.model.document import Document -from frappe.utils import flt +from frappe.utils import flt, getdate class BankTransaction(Document): @@ -84,16 +84,16 @@ class BankTransaction(Document): if not self.payment_entries: return - pe = [] + references = set() for row in self.payment_entries: reference = (row.payment_document, row.payment_entry) - if reference in pe: + if reference in references: frappe.throw( _("{0} {1} is allocated twice in this Bank Transaction").format( row.payment_document, row.payment_entry ) ) - pe.append(reference) + references.add(reference) def update_allocated_amount(self): allocated_amount = ( @@ -104,6 +104,19 @@ class BankTransaction(Document): self.allocated_amount = flt(allocated_amount, self.precision("allocated_amount")) self.unallocated_amount = flt(unallocated_amount, self.precision("unallocated_amount")) + def delink_old_payment_entries(self): + if self.flags.updating_linked_bank_transaction: + return + + old_doc = self.get_doc_before_save() + payment_entry_names = set(pe.name for pe in self.payment_entries) + + for old_pe in old_doc.payment_entries: + if old_pe.name in payment_entry_names: + continue + + self.delink_payment_entry(old_pe) + def before_submit(self): self.allocate_payment_entries() self.set_status() @@ -113,13 +126,14 @@ class BankTransaction(Document): def before_update_after_submit(self): self.validate_duplicate_references() - self.allocate_payment_entries() self.update_allocated_amount() + self.delink_old_payment_entries() + self.allocate_payment_entries() self.set_status() def on_cancel(self): for payment_entry in self.payment_entries: - self.clear_linked_payment_entry(payment_entry, for_cancel=True) + self.delink_payment_entry(payment_entry) self.set_status() @@ -152,37 +166,55 @@ class BankTransaction(Document): - 0 > a: Error: already over-allocated - clear means: set the latest transaction date as clearance date """ + if self.flags.updating_linked_bank_transaction or not self.payment_entries: + return + remaining_amount = self.unallocated_amount - to_remove = [] - for payment_entry in self.payment_entries: - if payment_entry.allocated_amount == 0.0: - unallocated_amount, should_clear, latest_transaction = get_clearance_details( - self, payment_entry + payment_entry_docs = [(pe.payment_document, pe.payment_entry) for pe in self.payment_entries] + pe_bt_allocations = get_total_allocated_amount(payment_entry_docs) + gl_entries = get_related_bank_gl_entries(payment_entry_docs) + gl_bank_account = frappe.db.get_value("Bank Account", self.bank_account, "account") + + for payment_entry in list(self.payment_entries): + if payment_entry.allocated_amount != 0: + continue + + allocable_amount, should_clear, clearance_date = get_clearance_details( + self, + payment_entry, + pe_bt_allocations.get((payment_entry.payment_document, payment_entry.payment_entry)) or {}, + gl_entries.get((payment_entry.payment_document, payment_entry.payment_entry)) or {}, + gl_bank_account, + ) + + if allocable_amount < 0: + frappe.throw(_("Voucher {0} is over-allocated by {1}").format(allocable_amount)) + + if remaining_amount <= 0: + self.remove(payment_entry) + continue + + if allocable_amount == 0: + if should_clear: + self.clear_linked_payment_entry(payment_entry, clearance_date=clearance_date) + self.remove(payment_entry) + continue + + should_clear = should_clear and allocable_amount <= remaining_amount + payment_entry.allocated_amount = min(allocable_amount, remaining_amount) + remaining_amount = flt( + remaining_amount - payment_entry.allocated_amount, + self.precision("unallocated_amount"), + ) + + if payment_entry.payment_document == "Bank Transaction": + self.update_linked_bank_transaction( + payment_entry.payment_entry, payment_entry.allocated_amount ) + elif should_clear: + self.clear_linked_payment_entry(payment_entry, clearance_date=clearance_date) - if 0.0 == unallocated_amount: - if should_clear: - latest_transaction.clear_linked_payment_entry(payment_entry) - to_remove.append(payment_entry) - - elif remaining_amount <= 0.0: - to_remove.append(payment_entry) - - elif 0.0 < unallocated_amount <= remaining_amount: - payment_entry.allocated_amount = unallocated_amount - remaining_amount -= unallocated_amount - if should_clear: - latest_transaction.clear_linked_payment_entry(payment_entry) - - elif 0.0 < unallocated_amount: - payment_entry.allocated_amount = remaining_amount - remaining_amount = 0.0 - - elif 0.0 > unallocated_amount: - frappe.throw(_("Voucher {0} is over-allocated by {1}").format(unallocated_amount)) - - for payment_entry in to_remove: - self.remove(payment_entry) + self.update_allocated_amount() @frappe.whitelist() def remove_payment_entries(self): @@ -193,204 +225,21 @@ class BankTransaction(Document): def remove_payment_entry(self, payment_entry): "Clear payment entry and clearance" - self.clear_linked_payment_entry(payment_entry, for_cancel=True) + self.delink_payment_entry(payment_entry) self.remove(payment_entry) - def clear_linked_payment_entry(self, payment_entry, for_cancel=False): - clearance_date = None if for_cancel else self.date - set_voucher_clearance( - payment_entry.payment_document, payment_entry.payment_entry, clearance_date, self - ) - - def auto_set_party(self): - from erpnext.accounts.doctype.bank_transaction.auto_match_party import AutoMatchParty - - if self.party_type and self.party: - return - - result = AutoMatchParty( - bank_party_account_number=self.bank_party_account_number, - bank_party_iban=self.bank_party_iban, - bank_party_name=self.bank_party_name, - description=self.description, - deposit=self.deposit, - ).match() - - if not result: - return - - self.party_type, self.party = result - - -@frappe.whitelist() -def get_doctypes_for_bank_reconciliation(): - """Get Bank Reconciliation doctypes from all the apps""" - return frappe.get_hooks("bank_reconciliation_doctypes") - - -def get_clearance_details(transaction, payment_entry): - """ - There should only be one bank gle for a voucher. - Could be none for a Bank Transaction. - But if a JE, could affect two banks. - Should only clear the voucher if all bank gles are allocated. - """ - gl_bank_account = frappe.db.get_value("Bank Account", transaction.bank_account, "account") - gles = get_related_bank_gl_entries(payment_entry.payment_document, payment_entry.payment_entry) - bt_allocations = get_total_allocated_amount(payment_entry.payment_document, payment_entry.payment_entry) - - unallocated_amount = min( - transaction.unallocated_amount, - get_paid_amount(payment_entry, transaction.currency, gl_bank_account), - ) - unmatched_gles = len(gles) - latest_transaction = transaction - for gle in gles: - if gle["gl_account"] == gl_bank_account: - if gle["amount"] <= 0.0: - frappe.throw( - _("Voucher {0} value is broken: {1}").format(payment_entry.payment_entry, gle["amount"]) - ) - - unmatched_gles -= 1 - unallocated_amount = gle["amount"] - for a in bt_allocations: - if a["gl_account"] == gle["gl_account"]: - unallocated_amount = gle["amount"] - a["total"] - if frappe.utils.getdate(transaction.date) < a["latest_date"]: - latest_transaction = frappe.get_doc("Bank Transaction", a["latest_name"]) + def delink_payment_entry(self, payment_entry): + if payment_entry.payment_document == "Bank Transaction": + self.update_linked_bank_transaction(payment_entry.payment_entry, allocated_amount=None) else: - # Must be a Journal Entry affecting more than one bank - for a in bt_allocations: - if a["gl_account"] == gle["gl_account"] and a["total"] == gle["amount"]: - unmatched_gles -= 1 + self.clear_linked_payment_entry(payment_entry, clearance_date=None) - return unallocated_amount, unmatched_gles == 0, latest_transaction + def clear_linked_payment_entry(self, payment_entry, clearance_date=None): + doctype = payment_entry.payment_document + docname = payment_entry.payment_entry - -def get_related_bank_gl_entries(doctype, docname): - # nosemgrep: frappe-semgrep-rules.rules.frappe-using-db-sql - return frappe.db.sql( - """ - SELECT - ABS(gle.credit_in_account_currency - gle.debit_in_account_currency) AS amount, - gle.account AS gl_account - FROM - `tabGL Entry` gle - LEFT JOIN - `tabAccount` ac ON ac.name=gle.account - WHERE - ac.account_type = 'Bank' - AND gle.voucher_type = %(doctype)s - AND gle.voucher_no = %(docname)s - AND is_cancelled = 0 - """, - dict(doctype=doctype, docname=docname), - as_dict=True, - ) - - -def get_total_allocated_amount(doctype, docname): - """ - Gets the sum of allocations for a voucher on each bank GL account - along with the latest bank transaction name & date - NOTE: query may also include just saved vouchers/payments but with zero allocated_amount - """ - # nosemgrep: frappe-semgrep-rules.rules.frappe-using-db-sql - result = frappe.db.sql( - """ - SELECT total, latest_name, latest_date, gl_account FROM ( - SELECT - ROW_NUMBER() OVER w AS rownum, - SUM(btp.allocated_amount) OVER(PARTITION BY ba.account) AS total, - FIRST_VALUE(bt.name) OVER w AS latest_name, - FIRST_VALUE(bt.date) OVER w AS latest_date, - ba.account AS gl_account - FROM - `tabBank Transaction Payments` btp - LEFT JOIN `tabBank Transaction` bt ON bt.name=btp.parent - LEFT JOIN `tabBank Account` ba ON ba.name=bt.bank_account - WHERE - btp.payment_document = %(doctype)s - AND btp.payment_entry = %(docname)s - AND bt.docstatus = 1 - WINDOW w AS (PARTITION BY ba.account ORDER BY bt.date desc) - ) temp - WHERE - rownum = 1 - """, - dict(doctype=doctype, docname=docname), - as_dict=True, - ) - for row in result: - # Why is this *sometimes* a byte string? - if isinstance(row["latest_name"], bytes): - row["latest_name"] = row["latest_name"].decode() - row["latest_date"] = frappe.utils.getdate(row["latest_date"]) - return result - - -def get_paid_amount(payment_entry, currency, gl_bank_account): - if payment_entry.payment_document in ["Payment Entry", "Sales Invoice", "Purchase Invoice"]: - paid_amount_field = "paid_amount" - if payment_entry.payment_document == "Payment Entry": - doc = frappe.get_doc("Payment Entry", payment_entry.payment_entry) - - if doc.payment_type == "Receive": - paid_amount_field = ( - "received_amount" if doc.paid_to_account_currency == currency else "base_received_amount" - ) - elif doc.payment_type == "Pay": - paid_amount_field = ( - "paid_amount" if doc.paid_from_account_currency == currency else "base_paid_amount" - ) - - return frappe.db.get_value( - payment_entry.payment_document, payment_entry.payment_entry, paid_amount_field - ) - - elif payment_entry.payment_document == "Journal Entry": - return abs( - frappe.db.get_value( - "Journal Entry Account", - {"parent": payment_entry.payment_entry, "account": gl_bank_account}, - "sum(debit_in_account_currency-credit_in_account_currency)", - ) - or 0 - ) - - elif payment_entry.payment_document == "Expense Claim": - return frappe.db.get_value( - payment_entry.payment_document, payment_entry.payment_entry, "total_amount_reimbursed" - ) - - elif payment_entry.payment_document == "Loan Disbursement": - return frappe.db.get_value( - payment_entry.payment_document, payment_entry.payment_entry, "disbursed_amount" - ) - - elif payment_entry.payment_document == "Loan Repayment": - return frappe.db.get_value(payment_entry.payment_document, payment_entry.payment_entry, "amount_paid") - - elif payment_entry.payment_document == "Bank Transaction": - dep, wth = frappe.db.get_value( - "Bank Transaction", payment_entry.payment_entry, ("deposit", "withdrawal") - ) - return abs(flt(wth) - flt(dep)) - - else: - frappe.throw( - f"Please reconcile {payment_entry.payment_document}: {payment_entry.payment_entry} manually" - ) - - -def set_voucher_clearance(doctype, docname, clearance_date, self): - if doctype in get_doctypes_for_bank_reconciliation(): - if ( - doctype == "Payment Entry" - and frappe.db.get_value("Payment Entry", docname, "payment_type") == "Internal Transfer" - and len(get_reconciled_bank_transactions(doctype, docname)) < 2 - ): + # might be a bank transaction + if doctype not in get_doctypes_for_bank_reconciliation(): return if doctype == "Sales Invoice": @@ -404,19 +253,208 @@ def set_voucher_clearance(doctype, docname, clearance_date, self): frappe.db.set_value(doctype, docname, "clearance_date", clearance_date) - elif doctype == "Bank Transaction": - # For when a second bank transaction has fixed another, e.g. refund - bt = frappe.get_doc(doctype, docname) - if clearance_date: - vouchers = [{"payment_doctype": "Bank Transaction", "payment_name": self.name}] - bt.add_payment_entries(vouchers) - bt.save() + def update_linked_bank_transaction(self, bank_transaction_name, allocated_amount=None): + """For when a second bank transaction has fixed another, e.g. refund""" + + bt = frappe.get_doc(self.doctype, bank_transaction_name) + if allocated_amount: + bt.append( + "payment_entries", + { + "payment_document": self.doctype, + "payment_entry": self.name, + "allocated_amount": allocated_amount, + }, + ) + else: - for pe in bt.payment_entries: - if pe.payment_document == self.doctype and pe.payment_entry == self.name: - bt.remove(pe) - bt.save() - break + pe = next( + ( + pe + for pe in bt.payment_entries + if pe.payment_document == self.doctype and pe.payment_entry == self.name + ), + None, + ) + if not pe: + return + + bt.flags.updating_linked_bank_transaction = True + bt.remove(pe) + + bt.save() + + def auto_set_party(self): + from erpnext.accounts.doctype.bank_transaction.auto_match_party import AutoMatchParty + + if self.party_type and self.party: + return + + result = None + try: + result = AutoMatchParty( + bank_party_account_number=self.bank_party_account_number, + bank_party_iban=self.bank_party_iban, + bank_party_name=self.bank_party_name, + description=self.description, + deposit=self.deposit, + ).match() + except Exception: + frappe.log_error(title=_("Error in party matching for Bank Transaction {0}").format(self.name)) + + if not result: + return + + self.party_type, self.party = result + + +@frappe.whitelist() +def get_doctypes_for_bank_reconciliation(): + """Get Bank Reconciliation doctypes from all the apps""" + return frappe.get_hooks("bank_reconciliation_doctypes") + + +def get_clearance_details(transaction, payment_entry, bt_allocations, gl_entries, gl_bank_account): + """ + There should only be one bank gl entry for a voucher, except for JE. + For JE, there can be multiple bank gl entries for the same account. + In this case, the allocable_amount will be the sum of amounts of all gl entries of the account. + There will be no gl entry for a Bank Transaction so return the unallocated amount. + Should only clear the voucher if all bank gl entries are allocated. + """ + + transaction_date = getdate(transaction.date) + + if payment_entry.payment_document == "Bank Transaction": + bt = frappe.db.get_value( + "Bank Transaction", + payment_entry.payment_entry, + ("unallocated_amount", "bank_account"), + as_dict=True, + ) + + if bt.bank_account != gl_bank_account: + frappe.throw( + _("Bank Account {} in Bank Transaction {} is not matching with Bank Account {}").format( + bt.bank_account, payment_entry.payment_entry, gl_bank_account + ) + ) + + return abs(bt.unallocated_amount), True, transaction_date + + if gl_bank_account not in gl_entries: + frappe.throw( + _("{} {} is not affecting bank account {}").format( + payment_entry.payment_document, payment_entry.payment_entry, gl_bank_account + ) + ) + + allocable_amount = gl_entries.pop(gl_bank_account) or 0 + if allocable_amount <= 0.0: + frappe.throw( + _("Invalid amount in accounting entries of {} {} for Account {}: {}").format( + payment_entry.payment_document, payment_entry.payment_entry, gl_bank_account, allocable_amount + ) + ) + + matching_bt_allocaion = bt_allocations.pop(gl_bank_account, {}) + + allocable_amount = flt( + allocable_amount - matching_bt_allocaion.get("total", 0), transaction.precision("unallocated_amount") + ) + + should_clear = all( + gl_entries[gle_account] == bt_allocations.get(gle_account, {}).get("total", 0) + for gle_account in gl_entries + ) + + bt_allocation_date = matching_bt_allocaion.get("latest_date", None) + clearance_date = transaction_date if not bt_allocation_date else max(transaction_date, bt_allocation_date) + + return allocable_amount, should_clear, clearance_date + + +def get_related_bank_gl_entries(docs): + # nosemgrep: frappe-semgrep-rules.rules.frappe-using-db-sql + if not docs: + return {} + + result = frappe.db.sql( + """ + SELECT + gle.voucher_type AS doctype, + gle.voucher_no AS docname, + gle.account AS gl_account, + SUM(ABS(gle.credit_in_account_currency - gle.debit_in_account_currency)) AS amount + FROM + `tabGL Entry` gle + LEFT JOIN + `tabAccount` ac ON ac.name = gle.account + WHERE + ac.account_type = 'Bank' + AND (gle.voucher_type, gle.voucher_no) IN %(docs)s + AND gle.is_cancelled = 0 + GROUP BY + gle.voucher_type, gle.voucher_no, gle.account + """, + {"docs": docs}, + as_dict=True, + ) + + entries = {} + for row in result: + key = (row["doctype"], row["docname"]) + if key not in entries: + entries[key] = {} + entries[key][row["gl_account"]] = row["amount"] + + return entries + + +def get_total_allocated_amount(docs): + """ + Gets the sum of allocations for a voucher on each bank GL account + along with the latest bank transaction date + NOTE: query may also include just saved vouchers/payments but with zero allocated_amount + """ + if not docs: + return {} + + # nosemgrep: frappe-semgrep-rules.rules.frappe-using-db-sql + result = frappe.db.sql( + """ + SELECT total, latest_date, gl_account, payment_document, payment_entry FROM ( + SELECT + ROW_NUMBER() OVER w AS rownum, + SUM(btp.allocated_amount) OVER(PARTITION BY ba.account, btp.payment_document, btp.payment_entry) AS total, + FIRST_VALUE(bt.date) OVER w AS latest_date, + ba.account AS gl_account, + btp.payment_document, + btp.payment_entry + FROM + `tabBank Transaction Payments` btp + LEFT JOIN `tabBank Transaction` bt ON bt.name=btp.parent + LEFT JOIN `tabBank Account` ba ON ba.name=bt.bank_account + WHERE + (btp.payment_document, btp.payment_entry) IN %(docs)s + AND bt.docstatus = 1 + WINDOW w AS (PARTITION BY ba.account, btp.payment_document, btp.payment_entry ORDER BY bt.date DESC) + ) temp + WHERE + rownum = 1 + """, + dict(docs=docs), + as_dict=True, + ) + + payment_allocation_details = {} + for row in result: + row["latest_date"] = getdate(row["latest_date"]) + payment_allocation_details.setdefault((row["payment_document"], row["payment_entry"]), {})[ + row["gl_account"] + ] = row + + return payment_allocation_details def get_reconciled_bank_transactions(doctype, docname): @@ -427,13 +465,6 @@ def get_reconciled_bank_transactions(doctype, docname): ) -@frappe.whitelist() -def unclear_reference_payment(doctype, docname, bt_name): - bt = frappe.get_doc("Bank Transaction", bt_name) - set_voucher_clearance(doctype, docname, None, bt) - return docname - - def remove_from_bank_transaction(doctype, docname): """Remove a (cancelled) voucher from all Bank Transactions.""" for bt_name in get_reconciled_bank_transactions(doctype, docname): diff --git a/erpnext/accounts/doctype/budget/budget.py b/erpnext/accounts/doctype/budget/budget.py index 145480138d6..2f2b549cf46 100644 --- a/erpnext/accounts/doctype/budget/budget.py +++ b/erpnext/accounts/doctype/budget/budget.py @@ -490,13 +490,20 @@ def get_actual_expense(args): def get_accumulated_monthly_budget(monthly_distribution, posting_date, fiscal_year, annual_budget): distribution = {} if monthly_distribution: - for d in frappe.db.sql( - """select mdp.month, mdp.percentage_allocation - from `tabMonthly Distribution Percentage` mdp, `tabMonthly Distribution` md - where mdp.parent=md.name and md.fiscal_year=%s""", - fiscal_year, - as_dict=1, - ): + mdp = frappe.qb.DocType("Monthly Distribution Percentage") + md = frappe.qb.DocType("Monthly Distribution") + + res = ( + frappe.qb.from_(mdp) + .join(md) + .on(mdp.parent == md.name) + .select(mdp.month, mdp.percentage_allocation) + .where(md.fiscal_year == fiscal_year) + .where(md.name == monthly_distribution) + .run(as_dict=True) + ) + + for d in res: distribution.setdefault(d.month, d.percentage_allocation) dt = frappe.get_cached_value("Fiscal Year", fiscal_year, "year_start_date") diff --git a/erpnext/accounts/doctype/cost_center_allocation/test_cost_center_allocation.py b/erpnext/accounts/doctype/cost_center_allocation/test_cost_center_allocation.py index 65784dbb6c7..4abc82d8bec 100644 --- a/erpnext/accounts/doctype/cost_center_allocation/test_cost_center_allocation.py +++ b/erpnext/accounts/doctype/cost_center_allocation/test_cost_center_allocation.py @@ -22,8 +22,10 @@ class TestCostCenterAllocation(unittest.TestCase): cost_centers = [ "Main Cost Center 1", "Main Cost Center 2", + "Main Cost Center 3", "Sub Cost Center 1", "Sub Cost Center 2", + "Sub Cost Center 3", ] for cc in cost_centers: create_cost_center(cost_center_name=cc, company="_Test Company") @@ -36,7 +38,7 @@ class TestCostCenterAllocation(unittest.TestCase): ) jv = make_journal_entry( - "_Test Cash - _TC", "Sales - _TC", 100, cost_center="Main Cost Center 1 - _TC", submit=True + "Cash - _TC", "Sales - _TC", 100, cost_center="Main Cost Center 1 - _TC", submit=True ) expected_values = [["Sub Cost Center 1 - _TC", 0.0, 60], ["Sub Cost Center 2 - _TC", 0.0, 40]] @@ -120,7 +122,7 @@ class TestCostCenterAllocation(unittest.TestCase): def test_valid_from_based_on_existing_gle(self): # GLE posted against Sub Cost Center 1 on today jv = make_journal_entry( - "_Test Cash - _TC", + "Cash - _TC", "Sales - _TC", 100, cost_center="Main Cost Center 1 - _TC", @@ -141,6 +143,53 @@ class TestCostCenterAllocation(unittest.TestCase): jv.cancel() + def test_multiple_cost_center_allocation_on_same_main_cost_center(self): + coa1 = create_cost_center_allocation( + "_Test Company", + "Main Cost Center 3 - _TC", + {"Sub Cost Center 1 - _TC": 30, "Sub Cost Center 2 - _TC": 30, "Sub Cost Center 3 - _TC": 40}, + valid_from=add_days(today(), -5), + ) + + coa2 = create_cost_center_allocation( + "_Test Company", + "Main Cost Center 3 - _TC", + {"Sub Cost Center 1 - _TC": 50, "Sub Cost Center 2 - _TC": 50}, + valid_from=add_days(today(), -1), + ) + + jv = make_journal_entry( + "Cash - _TC", + "Sales - _TC", + 100, + cost_center="Main Cost Center 3 - _TC", + posting_date=today(), + submit=True, + ) + + expected_values = {"Sub Cost Center 1 - _TC": 50, "Sub Cost Center 2 - _TC": 50} + + gle = frappe.qb.DocType("GL Entry") + gl_entries = ( + frappe.qb.from_(gle) + .select(gle.cost_center, gle.debit, gle.credit) + .where(gle.voucher_type == "Journal Entry") + .where(gle.voucher_no == jv.name) + .where(gle.account == "Sales - _TC") + .orderby(gle.cost_center) + ).run(as_dict=1) + + self.assertTrue(gl_entries) + + for gle in gl_entries: + self.assertTrue(gle.cost_center in expected_values) + self.assertEqual(gle.debit, 0) + self.assertEqual(gle.credit, expected_values[gle.cost_center]) + + coa1.cancel() + coa2.cancel() + jv.cancel() + def create_cost_center_allocation( company, diff --git a/erpnext/accounts/doctype/coupon_code/test_coupon_code.py b/erpnext/accounts/doctype/coupon_code/test_coupon_code.py index aad341e9e1d..8a21542d031 100644 --- a/erpnext/accounts/doctype/coupon_code/test_coupon_code.py +++ b/erpnext/accounts/doctype/coupon_code/test_coupon_code.py @@ -128,7 +128,7 @@ class TestCouponCode(unittest.TestCase): item_code="_Test Tesla Car", rate=5000, qty=1, - do_not_submit=True, + do_not_save=True, ) self.assertEqual(so.items[0].rate, 5000) diff --git a/erpnext/accounts/doctype/currency_exchange_settings/currency_exchange_settings.py b/erpnext/accounts/doctype/currency_exchange_settings/currency_exchange_settings.py index 8cbb99e9252..160e791978e 100644 --- a/erpnext/accounts/doctype/currency_exchange_settings/currency_exchange_settings.py +++ b/erpnext/accounts/doctype/currency_exchange_settings/currency_exchange_settings.py @@ -109,7 +109,7 @@ def get_api_endpoint(service_provider: str | None = None, use_http: bool = False if service_provider == "exchangerate.host": api = "api.exchangerate.host/convert" elif service_provider == "frankfurter.app": - api = "frankfurter.app/{transaction_date}" + api = "api.frankfurter.app/{transaction_date}" protocol = "https://" if use_http: diff --git a/erpnext/accounts/doctype/dunning/dunning.json b/erpnext/accounts/doctype/dunning/dunning.json index b7e8aeaaafd..496097417ba 100644 --- a/erpnext/accounts/doctype/dunning/dunning.json +++ b/erpnext/accounts/doctype/dunning/dunning.json @@ -19,16 +19,6 @@ "currency", "column_break_11", "conversion_rate", - "address_and_contact_section", - "customer_address", - "address_display", - "contact_person", - "contact_display", - "column_break_16", - "company_address", - "company_address_display", - "contact_mobile", - "contact_email", "section_break_6", "dunning_type", "column_break_8", @@ -56,7 +46,21 @@ "income_account", "column_break_48", "cost_center", - "amended_from" + "amended_from", + "address_and_contact_tab", + "address_and_contact_section", + "customer_address", + "address_display", + "column_break_vodj", + "contact_person", + "contact_display", + "contact_mobile", + "contact_email", + "section_break_xban", + "column_break_16", + "company_address", + "company_address_display", + "column_break_lqmf" ], "fields": [ { @@ -178,10 +182,8 @@ "label": "Rate of Interest (%) Yearly" }, { - "collapsible": 1, "fieldname": "address_and_contact_section", - "fieldtype": "Section Break", - "label": "Address and Contact" + "fieldtype": "Section Break" }, { "fieldname": "address_display", @@ -377,11 +379,28 @@ { "fieldname": "column_break_48", "fieldtype": "Column Break" + }, + { + "fieldname": "address_and_contact_tab", + "fieldtype": "Tab Break", + "label": "Address & Contact" + }, + { + "fieldname": "column_break_vodj", + "fieldtype": "Column Break" + }, + { + "fieldname": "section_break_xban", + "fieldtype": "Section Break" + }, + { + "fieldname": "column_break_lqmf", + "fieldtype": "Column Break" } ], "is_submittable": 1, "links": [], - "modified": "2023-06-15 15:46:53.865712", + "modified": "2024-11-26 13:46:07.760867", "modified_by": "Administrator", "module": "Accounts", "name": "Dunning", @@ -435,4 +454,4 @@ "states": [], "title_field": "customer_name", "track_changes": 1 -} \ No newline at end of file +} diff --git a/erpnext/accounts/doctype/dunning/dunning.py b/erpnext/accounts/doctype/dunning/dunning.py index ad58761e1bf..00ed85a4e0b 100644 --- a/erpnext/accounts/doctype/dunning/dunning.py +++ b/erpnext/accounts/doctype/dunning/dunning.py @@ -210,19 +210,32 @@ def get_linked_dunnings_as_per_state(sales_invoice, state): @frappe.whitelist() -def get_dunning_letter_text(dunning_type, doc, language=None): +def get_dunning_letter_text(dunning_type: str, doc: str | dict, language: str | None = None) -> dict: + DOCTYPE = "Dunning Letter Text" + FIELDS = ["body_text", "closing_text", "language"] + if isinstance(doc, str): doc = json.loads(doc) + + if not language: + language = doc.get("language") + + letter_text = None if language: - filters = {"parent": dunning_type, "language": language} - else: - filters = {"parent": dunning_type, "is_default_language": 1} - letter_text = frappe.db.get_value( - "Dunning Letter Text", filters, ["body_text", "closing_text", "language"], as_dict=1 - ) - if letter_text: - return { - "body_text": frappe.render_template(letter_text.body_text, doc), - "closing_text": frappe.render_template(letter_text.closing_text, doc), - "language": letter_text.language, - } + letter_text = frappe.db.get_value( + DOCTYPE, {"parent": dunning_type, "language": language}, FIELDS, as_dict=1 + ) + + if not letter_text: + letter_text = frappe.db.get_value( + DOCTYPE, {"parent": dunning_type, "is_default_language": 1}, FIELDS, as_dict=1 + ) + + if not letter_text: + return {} + + return { + "body_text": frappe.render_template(letter_text.body_text, doc), + "closing_text": frappe.render_template(letter_text.closing_text, doc), + "language": letter_text.language, + } diff --git a/erpnext/accounts/doctype/dunning/test_dunning.py b/erpnext/accounts/doctype/dunning/test_dunning.py index 62a0c90046b..ad45b882035 100644 --- a/erpnext/accounts/doctype/dunning/test_dunning.py +++ b/erpnext/accounts/doctype/dunning/test_dunning.py @@ -1,6 +1,9 @@ # Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and Contributors # See license.txt +import json + import frappe +from frappe.model import mapper from frappe.tests.utils import FrappeTestCase from frappe.utils import add_days, nowdate, today @@ -68,6 +71,36 @@ class TestDunning(FrappeTestCase): dunning.reload() self.assertEqual(dunning.status, "Resolved") + def test_fetch_overdue_payments(self): + """ + Create SI with overdue payment. Check if overdue payment is fetched in Dunning. + """ + si1 = create_sales_invoice_against_cost_center( + posting_date=add_days(today(), -1 * 6), + qty=1, + rate=100, + ) + + si2 = create_sales_invoice_against_cost_center( + posting_date=add_days(today(), -1 * 6), + qty=1, + rate=300, + ) + + dunning = create_dunning_from_sales_invoice(si1.name) + dunning.overdue_payments = [] + + method = "erpnext.accounts.doctype.sales_invoice.sales_invoice.create_dunning" + updated_dunning = mapper.map_docs(method, json.dumps([si1.name, si2.name]), dunning) + + self.assertEqual(len(updated_dunning.overdue_payments), 2) + + self.assertEqual(updated_dunning.overdue_payments[0].sales_invoice, si1.name) + self.assertEqual(updated_dunning.overdue_payments[0].outstanding, si1.outstanding_amount) + + self.assertEqual(updated_dunning.overdue_payments[1].sales_invoice, si2.name) + self.assertEqual(updated_dunning.overdue_payments[1].outstanding, si2.outstanding_amount) + def test_dunning_and_payment_against_partially_due_invoice(self): """ Create SI with first installment overdue. Check impact of Dunning and Payment Entry. diff --git a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py index 8607d1ed71f..c08bd3878d5 100644 --- a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py +++ b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py @@ -74,6 +74,21 @@ class ExchangeRateRevaluation(Document): if not (self.company and self.posting_date): frappe.throw(_("Please select Company and Posting Date to getting entries")) + def before_submit(self): + self.remove_accounts_without_gain_loss() + + def remove_accounts_without_gain_loss(self): + self.accounts = [account for account in self.accounts if account.gain_loss] + + if not self.accounts: + frappe.throw(_("At least one account with exchange gain or loss is required")) + + frappe.msgprint( + _("Removing rows without exchange gain or loss"), + alert=True, + indicator="yellow", + ) + def on_cancel(self): self.ignore_linked_doctypes = "GL Entry" @@ -248,23 +263,23 @@ class ExchangeRateRevaluation(Document): new_exchange_rate = get_exchange_rate(d.account_currency, company_currency, posting_date) new_balance_in_base_currency = flt(d.balance_in_account_currency * new_exchange_rate) gain_loss = flt(new_balance_in_base_currency, precision) - flt(d.balance, precision) - if gain_loss: - accounts.append( - { - "account": d.account, - "party_type": d.party_type, - "party": d.party, - "account_currency": d.account_currency, - "balance_in_base_currency": d.balance, - "balance_in_account_currency": d.balance_in_account_currency, - "zero_balance": d.zero_balance, - "current_exchange_rate": current_exchange_rate, - "new_exchange_rate": new_exchange_rate, - "new_balance_in_base_currency": new_balance_in_base_currency, - "new_balance_in_account_currency": d.balance_in_account_currency, - "gain_loss": gain_loss, - } - ) + + accounts.append( + { + "account": d.account, + "party_type": d.party_type, + "party": d.party, + "account_currency": d.account_currency, + "balance_in_base_currency": d.balance, + "balance_in_account_currency": d.balance_in_account_currency, + "zero_balance": d.zero_balance, + "current_exchange_rate": current_exchange_rate, + "new_exchange_rate": new_exchange_rate, + "new_balance_in_base_currency": new_balance_in_base_currency, + "new_balance_in_account_currency": d.balance_in_account_currency, + "gain_loss": gain_loss, + } + ) # Handle Accounts with '0' balance in Account/Base Currency for d in [x for x in account_details if x.zero_balance]: @@ -288,23 +303,22 @@ class ExchangeRateRevaluation(Document): current_exchange_rate * d.balance_in_account_currency ) - if gain_loss: - accounts.append( - { - "account": d.account, - "party_type": d.party_type, - "party": d.party, - "account_currency": d.account_currency, - "balance_in_base_currency": d.balance, - "balance_in_account_currency": d.balance_in_account_currency, - "zero_balance": d.zero_balance, - "current_exchange_rate": current_exchange_rate, - "new_exchange_rate": new_exchange_rate, - "new_balance_in_base_currency": new_balance_in_base_currency, - "new_balance_in_account_currency": new_balance_in_account_currency, - "gain_loss": gain_loss, - } - ) + accounts.append( + { + "account": d.account, + "party_type": d.party_type, + "party": d.party, + "account_currency": d.account_currency, + "balance_in_base_currency": d.balance, + "balance_in_account_currency": d.balance_in_account_currency, + "zero_balance": d.zero_balance, + "current_exchange_rate": current_exchange_rate, + "new_exchange_rate": new_exchange_rate, + "new_balance_in_base_currency": new_balance_in_base_currency, + "new_balance_in_account_currency": new_balance_in_account_currency, + "gain_loss": gain_loss, + } + ) return accounts diff --git a/erpnext/accounts/doctype/exchange_rate_revaluation/test_exchange_rate_revaluation.py b/erpnext/accounts/doctype/exchange_rate_revaluation/test_exchange_rate_revaluation.py index 51053f1f68c..3eef6ab3832 100644 --- a/erpnext/accounts/doctype/exchange_rate_revaluation/test_exchange_rate_revaluation.py +++ b/erpnext/accounts/doctype/exchange_rate_revaluation/test_exchange_rate_revaluation.py @@ -188,7 +188,7 @@ class TestExchangeRateRevaluation(AccountsTestMixin, FrappeTestCase): pe = get_payment_entry(si.doctype, si.name) pe.paid_amount = 95 - pe.source_exchange_rate = 84.211 + pe.source_exchange_rate = 84.2105 pe.received_amount = 8000 pe.references = [] pe.save().submit() @@ -229,7 +229,7 @@ class TestExchangeRateRevaluation(AccountsTestMixin, FrappeTestCase): row = next(x for x in je.accounts if x.account == self.debtors_usd) self.assertEqual(flt(row.credit_in_account_currency, precision), 5.0) # in USD row = next(x for x in je.accounts if x.account != self.debtors_usd) - self.assertEqual(flt(row.debit_in_account_currency, precision), 421.06) # in INR + self.assertEqual(flt(row.debit_in_account_currency, precision), 421.05) # in INR # total_debit and total_credit will be 0.0, as JV is posting only to account currency fields self.assertEqual(flt(je.total_debit, precision), 0.0) diff --git a/erpnext/accounts/doctype/fiscal_year/fiscal_year.js b/erpnext/accounts/doctype/fiscal_year/fiscal_year.js index a44b52f08f8..aeb9f982b4d 100644 --- a/erpnext/accounts/doctype/fiscal_year/fiscal_year.js +++ b/erpnext/accounts/doctype/fiscal_year/fiscal_year.js @@ -4,10 +4,7 @@ frappe.ui.form.on("Fiscal Year", { onload: function (frm) { if (frm.doc.__islocal) { - frm.set_value( - "year_start_date", - frappe.datetime.add_days(frappe.defaults.get_default("year_end_date"), 1) - ); + frm.set_value("year_start_date", frappe.datetime.year_start()); } }, year_start_date: function (frm) { diff --git a/erpnext/accounts/doctype/fiscal_year/fiscal_year.json b/erpnext/accounts/doctype/fiscal_year/fiscal_year.json index 66db37fe13b..de8f0337a3d 100644 --- a/erpnext/accounts/doctype/fiscal_year/fiscal_year.json +++ b/erpnext/accounts/doctype/fiscal_year/fiscal_year.json @@ -72,10 +72,10 @@ }, { "default": "0", - "description": "Less than 12 months.", + "description": "More/Less than 12 months.", "fieldname": "is_short_year", "fieldtype": "Check", - "label": "Is Short Year", + "label": "Is Short/Long Year", "set_only_once": 1 } ], diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.json b/erpnext/accounts/doctype/gl_entry/gl_entry.json index 2d106ad8cee..b438dbbe4ec 100644 --- a/erpnext/accounts/doctype/gl_entry/gl_entry.json +++ b/erpnext/accounts/doctype/gl_entry/gl_entry.json @@ -6,38 +6,50 @@ "document_type": "Document", "engine": "InnoDB", "field_order": [ + "dates_section", "posting_date", "transaction_date", + "column_break_avko", + "fiscal_year", + "due_date", + "account_details_section", "account", + "account_currency", + "column_break_ifvf", + "against", "party_type", "party", - "cost_center", - "debit", - "credit", - "account_currency", - "debit_in_account_currency", - "credit_in_account_currency", - "against", + "transaction_details_section", + "voucher_type", + "voucher_no", + "voucher_subtype", + "transaction_currency", + "column_break_dpsx", "against_voucher_type", "against_voucher", - "voucher_type", - "voucher_subtype", - "voucher_no", "voucher_detail_no", + "transaction_exchange_rate", + "amounts_section", + "debit_in_account_currency", + "debit", + "debit_in_transaction_currency", + "column_break_bm1w", + "credit_in_account_currency", + "credit", + "credit_in_transaction_currency", + "dimensions_section", + "cost_center", + "column_break_lmnm", "project", - "remarks", + "more_info_section", + "finance_book", + "company", "is_opening", "is_advance", - "fiscal_year", - "company", - "finance_book", + "column_break_8abq", "to_rename", - "due_date", "is_cancelled", - "transaction_currency", - "debit_in_transaction_currency", - "credit_in_transaction_currency", - "transaction_exchange_rate" + "remarks" ], "fields": [ { @@ -267,7 +279,8 @@ { "fieldname": "transaction_exchange_rate", "fieldtype": "Float", - "label": "Transaction Exchange Rate" + "label": "Transaction Exchange Rate", + "precision": "9" }, { "fieldname": "debit_in_transaction_currency", @@ -285,13 +298,67 @@ "fieldname": "voucher_subtype", "fieldtype": "Small Text", "label": "Voucher Subtype" + }, + { + "fieldname": "dates_section", + "fieldtype": "Section Break", + "label": "Dates" + }, + { + "fieldname": "column_break_avko", + "fieldtype": "Column Break" + }, + { + "fieldname": "account_details_section", + "fieldtype": "Section Break", + "label": "Account Details" + }, + { + "fieldname": "column_break_ifvf", + "fieldtype": "Column Break" + }, + { + "fieldname": "transaction_details_section", + "fieldtype": "Section Break", + "label": "Transaction Details" + }, + { + "fieldname": "amounts_section", + "fieldtype": "Section Break", + "label": "Amounts" + }, + { + "fieldname": "column_break_dpsx", + "fieldtype": "Column Break" + }, + { + "fieldname": "more_info_section", + "fieldtype": "Section Break", + "label": "More Info" + }, + { + "fieldname": "column_break_bm1w", + "fieldtype": "Column Break" + }, + { + "fieldname": "dimensions_section", + "fieldtype": "Section Break", + "label": "Dimensions" + }, + { + "fieldname": "column_break_lmnm", + "fieldtype": "Column Break" + }, + { + "fieldname": "column_break_8abq", + "fieldtype": "Column Break" } ], "icon": "fa fa-list", "idx": 1, "in_create": 1, "links": [], - "modified": "2024-07-02 14:31:51.496466", + "modified": "2025-02-21 14:36:49.431166", "modified_by": "Administrator", "module": "Accounts", "name": "GL Entry", diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.py b/erpnext/accounts/doctype/gl_entry/gl_entry.py index d74224c4aa2..2243420f13c 100644 --- a/erpnext/accounts/doctype/gl_entry/gl_entry.py +++ b/erpnext/accounts/doctype/gl_entry/gl_entry.py @@ -7,13 +7,17 @@ from frappe import _ from frappe.model.document import Document from frappe.model.meta import get_field_precision from frappe.model.naming import set_name_from_naming_options -from frappe.utils import flt, fmt_money +from frappe.utils import flt, fmt_money, now import erpnext from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import ( get_checks_for_pl_and_bs_accounts, ) -from erpnext.accounts.party import validate_party_frozen_disabled, validate_party_gle_currency +from erpnext.accounts.party import ( + validate_account_party_type, + validate_party_frozen_disabled, + validate_party_gle_currency, +) from erpnext.accounts.utils import get_account_currency, get_fiscal_year from erpnext.exceptions import InvalidAccountCurrency @@ -125,7 +129,7 @@ class GLEntry(Document): if not self.get(k): frappe.throw(_("{0} is required").format(_(self.meta.get_label(k)))) - if not (self.party_type and self.party): + if not self.is_cancelled and not (self.party_type and self.party): account_type = frappe.get_cached_value("Account", self.account, "account_type") if account_type == "Receivable": frappe.throw( @@ -268,8 +272,12 @@ class GLEntry(Document): def validate_party(self): validate_party_frozen_disabled(self.party_type, self.party) + validate_account_party_type(self) def validate_currency(self): + if self.is_cancelled: + return + company_currency = erpnext.get_company_currency(self.company) account_currency = get_account_currency(self.account) @@ -430,8 +438,9 @@ def update_against_account(voucher_type, voucher_no): def on_doctype_update(): - frappe.db.add_index("GL Entry", ["against_voucher_type", "against_voucher"]) frappe.db.add_index("GL Entry", ["voucher_type", "voucher_no"]) + frappe.db.add_index("GL Entry", ["posting_date", "company"]) + frappe.db.add_index("GL Entry", ["party_type", "party"]) def rename_gle_sle_docs(): @@ -447,7 +456,7 @@ def rename_temporarily_named_docs(doctype): set_name_from_naming_options(frappe.get_meta(doctype).autoname, doc) newname = doc.name frappe.db.sql( - f"UPDATE `tab{doctype}` SET name = %s, to_rename = 0 where name = %s", - (newname, oldname), + f"UPDATE `tab{doctype}` SET name = %s, to_rename = 0, modified = %s where name = %s", + (newname, now(), oldname), auto_commit=True, ) diff --git a/erpnext/accounts/doctype/gl_entry/test_gl_entry.py b/erpnext/accounts/doctype/gl_entry/test_gl_entry.py index 3edfd67b005..6ff378559c0 100644 --- a/erpnext/accounts/doctype/gl_entry/test_gl_entry.py +++ b/erpnext/accounts/doctype/gl_entry/test_gl_entry.py @@ -79,3 +79,65 @@ class TestGLEntry(unittest.TestCase): "SELECT current from tabSeries where name = %s", naming_series )[0][0] self.assertEqual(old_naming_series_current_value + 2, new_naming_series_current_value) + + def test_validate_account_party_type(self): + jv = make_journal_entry( + "_Test Account Cost for Goods Sold - _TC", + "_Test Bank - _TC", + 100, + "_Test Cost Center - _TC", + save=False, + submit=False, + ) + + for row in jv.accounts: + row.party_type = "Supplier" + break + + jv.save() + try: + jv.submit() + except Exception as e: + self.assertEqual( + str(e), + "Party Type and Party can only be set for Receivable / Payable account_Test Account Cost for Goods Sold - _TC", + ) + + jv1 = make_journal_entry( + "_Test Account Cost for Goods Sold - _TC", + "_Test Bank - _TC", + 100, + "_Test Cost Center - _TC", + save=False, + submit=False, + ) + + for row in jv.accounts: + row.party_type = "Customer" + break + + jv1.save() + try: + jv1.submit() + except Exception as e: + self.assertEqual( + str(e), + "Party Type and Party can only be set for Receivable / Payable account_Test Account Cost for Goods Sold - _TC", + ) + + def test_validate_account_party_type_shareholder(self): + jv = make_journal_entry( + "Opening Balance Equity - _TC", + "Cash - _TC", + 100, + "_Test Cost Center - _TC", + save=False, + submit=False, + ) + + for row in jv.accounts: + row.party_type = "Shareholder" + break + + jv.save().submit() + self.assertEqual(1, jv.docstatus) diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.js b/erpnext/accounts/doctype/journal_entry/journal_entry.js index d290d794df1..a64aba417a6 100644 --- a/erpnext/accounts/doctype/journal_entry/journal_entry.js +++ b/erpnext/accounts/doctype/journal_entry/journal_entry.js @@ -360,21 +360,23 @@ erpnext.accounts.JournalEntry = class JournalEntry extends frappe.ui.form.Contro accounts_add(doc, cdt, cdn) { var row = frappe.get_doc(cdt, cdn); + row.exchange_rate = 1; $.each(doc.accounts, function (i, d) { if (d.account && d.party && d.party_type) { row.account = d.account; row.party = d.party; row.party_type = d.party_type; + row.exchange_rate = d.exchange_rate; } }); // set difference if (doc.difference) { if (doc.difference > 0) { - row.credit_in_account_currency = doc.difference; + row.credit_in_account_currency = doc.difference / row.exchange_rate; row.credit = doc.difference; } else { - row.debit_in_account_currency = -doc.difference; + row.debit_in_account_currency = -doc.difference / row.exchange_rate; row.debit = -doc.difference; } } @@ -428,12 +430,6 @@ frappe.ui.form.on("Journal Entry Account", { }); } }, - cost_center: function (frm, dt, dn) { - // Don't reset for Gain/Loss type journals, as it will make Debit and Credit values '0' - if (frm.doc.voucher_type != "Exchange Gain Or Loss") { - erpnext.journal_entry.set_account_details(frm, dt, dn); - } - }, account: function (frm, dt, dn) { erpnext.journal_entry.set_account_details(frm, dt, dn); @@ -680,6 +676,7 @@ $.extend(erpnext.journal_entry, { callback: function (r) { if (r.message) { $.extend(d, r.message); + erpnext.journal_entry.set_amount_on_last_row(frm, dt, dn); erpnext.journal_entry.set_debit_credit_in_company_currency(frm, dt, dn); refresh_field("accounts"); } @@ -687,4 +684,26 @@ $.extend(erpnext.journal_entry, { }); } }, + set_amount_on_last_row: function (frm, dt, dn) { + let row = locals[dt][dn]; + let length = frm.doc.accounts.length; + if (row.idx != length) return; + + let difference = frm.doc.accounts.reduce((total, row) => { + if (row.idx == length) return total; + + return total + row.debit - row.credit; + }, 0); + + if (difference) { + if (difference > 0) { + row.credit_in_account_currency = difference / row.exchange_rate; + row.credit = difference; + } else { + row.debit_in_account_currency = -difference / row.exchange_rate; + row.debit = -difference; + } + } + refresh_field("accounts"); + }, }); diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py index 6adc8be3f7d..e8ac493d659 100644 --- a/erpnext/accounts/doctype/journal_entry/journal_entry.py +++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py @@ -127,9 +127,6 @@ class JournalEntry(AccountsController): self.set_amounts_in_company_currency() self.validate_debit_credit_amount() self.set_total_debit_credit() - # Do not validate while importing via data import - if not frappe.flags.in_import: - self.validate_total_debit_and_credit() if not frappe.flags.is_reverse_depr_entry: self.validate_against_jv() @@ -144,6 +141,7 @@ class JournalEntry(AccountsController): self.validate_empty_accounts_table() self.validate_inter_company_accounts() self.validate_depr_entry_voucher_type() + self.validate_company_in_accounting_dimension() self.validate_advance_accounts() if self.docstatus == 0: @@ -184,10 +182,16 @@ class JournalEntry(AccountsController): else: return self._cancel() + def before_submit(self): + # Do not validate while importing via data import + if not frappe.flags.in_import: + self.validate_total_debit_and_credit() + def on_submit(self): self.validate_cheque_info() self.check_credit_limit() self.make_gl_entries() + self.make_advance_payment_ledger_entries() self.update_advance_paid() self.update_asset_value() self.update_inter_company_jv() @@ -195,6 +199,11 @@ class JournalEntry(AccountsController): self.update_booked_depreciation() def on_update_after_submit(self): + # Flag will be set on Reconciliation + # Reconciliation tool will anyways repost ledger entries. So, no need to check and do implicit repost. + if self.flags.get("ignore_reposting_on_reconciliation"): + return + self.needs_repost = self.check_if_fields_updated(fields_to_check=[], child_tables={"accounts": []}) if self.needs_repost: self.validate_for_repost() @@ -213,8 +222,10 @@ class JournalEntry(AccountsController): "Repost Accounting Ledger Items", "Unreconcile Payment", "Unreconcile Payment Entries", + "Advance Payment Ledger Entry", ) self.make_gl_entries(1) + self.make_advance_payment_ledger_entries() self.update_advance_paid() self.unlink_advance_entry_reference() self.unlink_asset_reference() @@ -254,7 +265,7 @@ class JournalEntry(AccountsController): frappe.throw(_("Journal Entry type should be set as Depreciation Entry for asset depreciation")) def validate_stock_accounts(self): - stock_accounts = get_stock_accounts(self.company, self.doctype, self.name) + stock_accounts = get_stock_accounts(self.company, accounts=self.accounts) for account in stock_accounts: account_bal, stock_bal, warehouse_list = get_stock_and_account_balance( account, self.posting_date, self.company @@ -565,8 +576,22 @@ class JournalEntry(AccountsController): if customers: from erpnext.selling.doctype.customer.customer import check_credit_limit + customer_details = frappe._dict( + frappe.db.get_all( + "Customer Credit Limit", + filters={ + "parent": ["in", customers], + "parenttype": ["=", "Customer"], + "company": ["=", self.company], + }, + fields=["parent", "bypass_credit_limit_check"], + as_list=True, + ) + ) + for customer in customers: - check_credit_limit(customer, self.company) + ignore_outstanding_sales_order = bool(customer_details.get(customer)) + check_credit_limit(customer, self.company, ignore_outstanding_sales_order) def validate_cheque_info(self): if self.voucher_type in ["Bank Entry"]: @@ -1049,14 +1074,15 @@ class JournalEntry(AccountsController): gl_map = [] company_currency = erpnext.get_company_currency(self.company) + self.transaction_currency = company_currency + self.transaction_exchange_rate = 1 if self.multi_currency: for row in self.get("accounts"): if row.account_currency != company_currency: - self.currency = row.account_currency - self.conversion_rate = row.exchange_rate + # Journal assumes the first foreign currency as transaction currency + self.transaction_currency = row.account_currency + self.transaction_exchange_rate = row.exchange_rate break - else: - self.currency = company_currency for d in self.get("accounts"): if d.debit or d.credit or (self.voucher_type == "Exchange Gain Or Loss"): @@ -1081,6 +1107,18 @@ class JournalEntry(AccountsController): "credit_in_account_currency": flt( d.credit_in_account_currency, d.precision("credit_in_account_currency") ), + "transaction_currency": self.transaction_currency, + "transaction_exchange_rate": self.transaction_exchange_rate, + "debit_in_transaction_currency": flt( + d.debit_in_account_currency, d.precision("debit_in_account_currency") + ) + if self.transaction_currency == d.account_currency + else flt(d.debit, d.precision("debit")) / self.transaction_exchange_rate, + "credit_in_transaction_currency": flt( + d.credit_in_account_currency, d.precision("credit_in_account_currency") + ) + if self.transaction_currency == d.account_currency + else flt(d.credit, d.precision("credit")) / self.transaction_exchange_rate, "against_voucher_type": d.reference_type, "against_voucher": d.reference_name, "remarks": remarks, @@ -1663,6 +1701,8 @@ def make_reverse_journal_entry(source_name, target_doc=None): "debit": "credit", "credit_in_account_currency": "debit_in_account_currency", "credit": "debit", + "reference_type": "reference_type", + "reference_name": "reference_name", }, }, }, diff --git a/erpnext/accounts/doctype/journal_entry/test_journal_entry.py b/erpnext/accounts/doctype/journal_entry/test_journal_entry.py index c53faf9ff39..4d2d14abea4 100644 --- a/erpnext/accounts/doctype/journal_entry/test_journal_entry.py +++ b/erpnext/accounts/doctype/journal_entry/test_journal_entry.py @@ -146,10 +146,9 @@ class TestJournalEntry(unittest.TestCase): "credit_in_account_currency": 0 if diff > 0 else abs(diff), }, ) - jv.insert() if account_bal == stock_bal: - self.assertRaises(StockAccountInvalidTransaction, jv.submit) + self.assertRaises(StockAccountInvalidTransaction, jv.save) frappe.db.rollback() else: jv.submit() @@ -515,6 +514,72 @@ class TestJournalEntry(unittest.TestCase): self.assertEqual(row.debit_in_account_currency, 100) self.assertEqual(row.credit_in_account_currency, 100) + def test_toggle_debit_credit_if_negative(self): + from erpnext.accounts.general_ledger import process_gl_map + + # Create JV with defaut cost center - _Test Cost Center + frappe.db.set_single_value("Accounts Settings", "merge_similar_account_heads", 0) + + jv = frappe.new_doc("Journal Entry") + jv.posting_date = nowdate() + jv.company = "_Test Company" + jv.user_remark = "test" + jv.extend( + "accounts", + [ + { + "account": "_Test Cash - _TC", + "debit": 100 * -1, + "debit_in_account_currency": 100 * -1, + "exchange_rate": 1, + }, + { + "account": "_Test Bank - _TC", + "credit": 100 * -1, + "credit_in_account_currency": 100 * -1, + "exchange_rate": 1, + }, + ], + ) + + jv.flags.ignore_validate = True + jv.save() + + self.assertEqual(len(jv.accounts), 2) + + gl_map = jv.build_gl_map() + + for row in gl_map: + if row.account == "_Test Cash - _TC": + self.assertEqual(row.debit, 100 * -1) + self.assertEqual(row.debit_in_account_currency, 100 * -1) + self.assertEqual(row.debit_in_transaction_currency, 100 * -1) + + gl_map = process_gl_map(gl_map, False) + + for row in gl_map: + if row.account == "_Test Cash - _TC": + self.assertEqual(row.credit, 100) + self.assertEqual(row.credit_in_account_currency, 100) + self.assertEqual(row.credit_in_transaction_currency, 100) + + def test_transaction_exchange_rate_on_journals(self): + jv = make_journal_entry("_Test Bank - _TC", "_Test Receivable USD - _TC", 100, save=False) + jv.accounts[0].update({"debit_in_account_currency": 8500, "exchange_rate": 1}) + jv.accounts[1].update({"party_type": "Customer", "party": "_Test Customer USD", "exchange_rate": 85}) + jv.submit() + actual = frappe.db.get_all( + "GL Entry", + filters={"voucher_no": jv.name, "is_cancelled": 0}, + fields=["account", "transaction_exchange_rate"], + order_by="account", + ) + expected = [ + {"account": "_Test Bank - _TC", "transaction_exchange_rate": 85.0}, + {"account": "_Test Receivable USD - _TC", "transaction_exchange_rate": 85.0}, + ] + self.assertEqual(expected, actual) + def make_journal_entry( account1, @@ -526,13 +591,14 @@ def make_journal_entry( save=True, submit=False, project=None, + company=None, ): if not cost_center: cost_center = "_Test Cost Center - _TC" jv = frappe.new_doc("Journal Entry") jv.posting_date = posting_date or nowdate() - jv.company = "_Test Company" + jv.company = company or "_Test Company" jv.user_remark = "test" jv.multi_currency = 1 jv.set( diff --git a/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.js b/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.js index f1efba8a954..4938e6690e5 100644 --- a/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.js +++ b/erpnext/accounts/doctype/opening_invoice_creation_tool/opening_invoice_creation_tool.js @@ -28,7 +28,12 @@ frappe.ui.form.on("Opening Invoice Creation Tool", { frm.refresh_fields(); frm.page.clear_indicator(); frm.dashboard.hide_progress(); - frappe.msgprint(__("Opening {0} Invoices created", [frm.doc.invoice_type])); + + if (frm.doc.invoice_type == "Sales") { + frappe.msgprint(__("Opening Sales Invoices have been created.")); + } else { + frappe.msgprint(__("Opening Purchase Invoices have been created.")); + } }, 1500, data.title @@ -48,12 +53,19 @@ frappe.ui.form.on("Opening Invoice Creation Tool", { !frm.doc.import_in_progress && frm.trigger("make_dashboard"); frm.page.set_primary_action(__("Create Invoices"), () => { let btn_primary = frm.page.btn_primary.get(0); + let freeze_message; + if (frm.doc.invoice_type == "Sales") { + freeze_message = __("Creating Sales Invoices ..."); + } else { + freeze_message = __("Creating Purchase Invoices ..."); + } + return frm.call({ doc: frm.doc, btn: $(btn_primary), method: "make_invoices", freeze: 1, - freeze_message: __("Creating {0} Invoice", [frm.doc.invoice_type]), + freeze_message: freeze_message, }); }); diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.js b/erpnext/accounts/doctype/payment_entry/payment_entry.js index b50dcd217e7..2e13c932de4 100644 --- a/erpnext/accounts/doctype/payment_entry/payment_entry.js +++ b/erpnext/accounts/doctype/payment_entry/payment_entry.js @@ -26,6 +26,22 @@ frappe.ui.form.on("Payment Entry", { } erpnext.accounts.dimensions.setup_dimension_filters(frm, frm.doctype); + + // project excluded in setup_dimension_filters + frm.set_query("project", function (doc) { + let filters = { + company: doc.company, + }; + if (doc.party_type == "Customer") filters.customer = doc.party; + return { + query: "erpnext.controllers.queries.get_project_name", + filters, + }; + }); + + if (frm.is_new()) { + set_default_party_type(frm); + } }, setup: function (frm) { @@ -174,6 +190,21 @@ frappe.ui.form.on("Payment Entry", { }; }); + frm.set_query("payment_request", "references", function (doc, cdt, cdn) { + const row = frappe.get_doc(cdt, cdn); + return { + query: "erpnext.accounts.doctype.payment_request.payment_request.get_open_payment_requests_query", + filters: { + reference_doctype: row.reference_doctype, + reference_name: row.reference_name, + company: doc.company, + status: ["!=", "Paid"], + outstanding_amount: [">", 0], // for compatibility with old data + docstatus: 1, + }, + }; + }); + frm.set_query("sales_taxes_and_charges_template", function () { return { filters: { @@ -191,7 +222,15 @@ frappe.ui.form.on("Payment Entry", { }, }; }); + + frm.add_fetch( + "payment_request", + "outstanding_amount", + "payment_request_outstanding", + "Payment Entry Reference" + ); }, + refresh: function (frm) { erpnext.hide_company(frm); frm.events.hide_unhide_fields(frm); @@ -216,6 +255,11 @@ frappe.ui.form.on("Payment Entry", { ); } erpnext.accounts.unreconcile_payment.add_unreconcile_btn(frm); + frappe.flags.allocate_payment_amount = true; + }, + + validate: async function (frm) { + await frm.events.set_exchange_gain_loss_deduction(frm); }, validate_company: (frm) => { @@ -296,11 +340,6 @@ frappe.ui.form.on("Payment Entry", { "write_off_difference_amount", frm.doc.difference_amount && frm.doc.party && frm.doc.total_allocated_amount > party_amount ); - - frm.toggle_display( - "set_exchange_gain_loss", - frm.doc.paid_amount && frm.doc.received_amount && frm.doc.difference_amount - ); }, set_dynamic_labels: function (frm) { @@ -383,9 +422,19 @@ frappe.ui.form.on("Payment Entry", { }, payment_type: function (frm) { + set_default_party_type(frm); + if (frm.doc.payment_type == "Internal Transfer") { $.each( - ["party", "party_balance", "paid_from", "paid_to", "references", "total_allocated_amount"], + [ + "party", + "party_type", + "party_balance", + "paid_from", + "paid_to", + "references", + "total_allocated_amount", + ], function (i, field) { frm.set_value(field, null); } @@ -767,29 +816,43 @@ frappe.ui.form.on("Payment Entry", { paid_amount: function (frm) { frm.set_value("base_paid_amount", flt(frm.doc.paid_amount) * flt(frm.doc.source_exchange_rate)); + let company_currency = frappe.get_doc(":Company", frm.doc.company).default_currency; + if (!frm.doc.received_amount) { + if (frm.doc.paid_from_account_currency == frm.doc.paid_to_account_currency) { + frm.set_value("received_amount", frm.doc.paid_amount); + } else if (company_currency == frm.doc.paid_to_account_currency) { + frm.set_value("received_amount", frm.doc.base_paid_amount); + frm.set_value("base_received_amount", frm.doc.base_paid_amount); + } + } frm.trigger("reset_received_amount"); frm.events.hide_unhide_fields(frm); }, received_amount: function (frm) { + let company_currency = frappe.get_doc(":Company", frm.doc.company).default_currency; frm.set_paid_amount_based_on_received_amount = true; - if (!frm.doc.paid_amount && frm.doc.paid_from_account_currency == frm.doc.paid_to_account_currency) { - frm.set_value("paid_amount", frm.doc.received_amount); - - if (frm.doc.target_exchange_rate) { - frm.set_value("source_exchange_rate", frm.doc.target_exchange_rate); - } - frm.set_value("base_paid_amount", frm.doc.base_received_amount); - } - frm.set_value( "base_received_amount", flt(frm.doc.received_amount) * flt(frm.doc.target_exchange_rate) ); + if (!frm.doc.paid_amount) { + if (frm.doc.paid_from_account_currency == frm.doc.paid_to_account_currency) { + frm.set_value("paid_amount", frm.doc.received_amount); + if (frm.doc.target_exchange_rate) { + frm.set_value("source_exchange_rate", frm.doc.target_exchange_rate); + } + frm.set_value("base_paid_amount", frm.doc.base_received_amount); + } else if (company_currency == frm.doc.paid_from_account_currency) { + frm.set_value("paid_amount", frm.doc.base_received_amount); + frm.set_value("base_paid_amount", frm.doc.base_received_amount); + } + } + if (frm.doc.payment_type == "Pay") - frm.events.allocate_party_amount_against_ref_docs(frm, frm.doc.received_amount, 1); + frm.events.allocate_party_amount_against_ref_docs(frm, frm.doc.received_amount, true); else frm.events.set_unallocated_amount(frm); frm.set_paid_amount_based_on_received_amount = false; @@ -810,7 +873,7 @@ frappe.ui.form.on("Payment Entry", { } if (frm.doc.payment_type == "Receive") - frm.events.allocate_party_amount_against_ref_docs(frm, frm.doc.paid_amount, 1); + frm.events.allocate_party_amount_against_ref_docs(frm, frm.doc.paid_amount, true); else frm.events.set_unallocated_amount(frm); }, @@ -981,6 +1044,7 @@ frappe.ui.form.on("Payment Entry", { c.outstanding_amount = d.outstanding_amount; c.bill_no = d.bill_no; c.payment_term = d.payment_term; + c.payment_term_outstanding = d.payment_term_outstanding; c.allocated_amount = d.allocated_amount; c.account = d.account; @@ -1030,7 +1094,8 @@ frappe.ui.form.on("Payment Entry", { frm.events.allocate_party_amount_against_ref_docs( frm, - frm.doc.payment_type == "Receive" ? frm.doc.paid_amount : frm.doc.received_amount + frm.doc.payment_type == "Receive" ? frm.doc.paid_amount : frm.doc.received_amount, + false ); }, }); @@ -1044,93 +1109,13 @@ frappe.ui.form.on("Payment Entry", { return ["Sales Invoice", "Purchase Invoice"]; }, - allocate_party_amount_against_ref_docs: function (frm, paid_amount, paid_amount_change) { - var total_positive_outstanding_including_order = 0; - var total_negative_outstanding = 0; - var total_deductions = frappe.utils.sum( - $.map(frm.doc.deductions || [], function (d) { - return flt(d.amount); - }) - ); - - paid_amount -= total_deductions; - - $.each(frm.doc.references || [], function (i, row) { - if (flt(row.outstanding_amount) > 0) - total_positive_outstanding_including_order += flt(row.outstanding_amount); - else total_negative_outstanding += Math.abs(flt(row.outstanding_amount)); + allocate_party_amount_against_ref_docs: async function (frm, paid_amount, paid_amount_change) { + await frm.call("allocate_amount_to_references", { + paid_amount: paid_amount, + paid_amount_change: paid_amount_change, + allocate_payment_amount: frappe.flags.allocate_payment_amount ?? false, }); - var allocated_negative_outstanding = 0; - if ( - (frm.doc.payment_type == "Receive" && frm.doc.party_type == "Customer") || - (frm.doc.payment_type == "Pay" && frm.doc.party_type == "Supplier") || - (frm.doc.payment_type == "Pay" && frm.doc.party_type == "Employee") - ) { - if (total_positive_outstanding_including_order > paid_amount) { - var remaining_outstanding = total_positive_outstanding_including_order - paid_amount; - allocated_negative_outstanding = - total_negative_outstanding < remaining_outstanding - ? total_negative_outstanding - : remaining_outstanding; - } - - var allocated_positive_outstanding = paid_amount + allocated_negative_outstanding; - } else if (["Customer", "Supplier"].includes(frm.doc.party_type)) { - total_negative_outstanding = flt(total_negative_outstanding, precision("outstanding_amount")); - if (paid_amount > total_negative_outstanding) { - if (total_negative_outstanding == 0) { - frappe.msgprint( - __("Cannot {0} {1} {2} without any negative outstanding invoice", [ - frm.doc.payment_type, - frm.doc.party_type == "Customer" ? "to" : "from", - frm.doc.party_type, - ]) - ); - return false; - } else { - frappe.msgprint( - __("Paid Amount cannot be greater than total negative outstanding amount {0}", [ - total_negative_outstanding, - ]) - ); - return false; - } - } else { - allocated_positive_outstanding = total_negative_outstanding - paid_amount; - allocated_negative_outstanding = - paid_amount + - (total_positive_outstanding_including_order < allocated_positive_outstanding - ? total_positive_outstanding_including_order - : allocated_positive_outstanding); - } - } - - $.each(frm.doc.references || [], function (i, row) { - if (frappe.flags.allocate_payment_amount == 0) { - //If allocate payment amount checkbox is unchecked, set zero to allocate amount - row.allocated_amount = 0; - } else if ( - frappe.flags.allocate_payment_amount != 0 && - (!row.allocated_amount || paid_amount_change) - ) { - if (row.outstanding_amount > 0 && allocated_positive_outstanding >= 0) { - row.allocated_amount = - row.outstanding_amount >= allocated_positive_outstanding - ? allocated_positive_outstanding - : row.outstanding_amount; - allocated_positive_outstanding -= flt(row.allocated_amount); - } else if (row.outstanding_amount < 0 && allocated_negative_outstanding) { - row.allocated_amount = - Math.abs(row.outstanding_amount) >= allocated_negative_outstanding - ? -1 * allocated_negative_outstanding - : row.outstanding_amount; - allocated_negative_outstanding -= Math.abs(flt(row.allocated_amount)); - } - } - }); - - frm.refresh_fields(); frm.events.set_total_allocated_amount(frm); }, @@ -1159,36 +1144,34 @@ frappe.ui.form.on("Payment Entry", { }, set_unallocated_amount: function (frm) { - var unallocated_amount = 0; - var total_deductions = frappe.utils.sum( - $.map(frm.doc.deductions || [], function (d) { - return flt(d.amount); - }) - ); + let unallocated_amount = 0; + let deductions_to_consider = 0; + + for (const row of frm.doc.deductions || []) { + if (!row.is_exchange_gain_loss) deductions_to_consider += flt(row.amount); + } + const included_taxes = get_included_taxes(frm); if (frm.doc.party) { if ( frm.doc.payment_type == "Receive" && - frm.doc.base_total_allocated_amount < frm.doc.base_received_amount + total_deductions && - frm.doc.total_allocated_amount < - frm.doc.paid_amount + total_deductions / frm.doc.source_exchange_rate - ) { - unallocated_amount = - (frm.doc.base_received_amount + - total_deductions - - flt(frm.doc.base_total_taxes_and_charges) - - frm.doc.base_total_allocated_amount) / - frm.doc.source_exchange_rate; - } else if ( - frm.doc.payment_type == "Pay" && - frm.doc.base_total_allocated_amount < frm.doc.base_paid_amount - total_deductions && - frm.doc.total_allocated_amount < - frm.doc.received_amount + total_deductions / frm.doc.target_exchange_rate + frm.doc.base_total_allocated_amount < frm.doc.base_paid_amount + deductions_to_consider ) { unallocated_amount = (frm.doc.base_paid_amount + - flt(frm.doc.base_total_taxes_and_charges) - - (total_deductions + frm.doc.base_total_allocated_amount)) / + deductions_to_consider - + frm.doc.base_total_allocated_amount - + included_taxes) / + frm.doc.source_exchange_rate; + } else if ( + frm.doc.payment_type == "Pay" && + frm.doc.base_total_allocated_amount < frm.doc.base_received_amount - deductions_to_consider + ) { + unallocated_amount = + (frm.doc.base_received_amount - + deductions_to_consider - + frm.doc.base_total_allocated_amount - + included_taxes) / frm.doc.target_exchange_rate; } } @@ -1282,77 +1265,85 @@ frappe.ui.form.on("Payment Entry", { }, write_off_difference_amount: function (frm) { - frm.events.set_deductions_entry(frm, "write_off_account"); + frm.events.set_write_off_deduction(frm); }, - set_exchange_gain_loss: function (frm) { - frm.events.set_deductions_entry(frm, "exchange_gain_loss_account"); + base_paid_amount: function (frm) { + frm.events.set_exchange_gain_loss_deduction(frm); }, - set_deductions_entry: function (frm, account) { - if (frm.doc.difference_amount) { - frappe.call({ - method: "erpnext.accounts.doctype.payment_entry.payment_entry.get_company_defaults", - args: { - company: frm.doc.company, - }, - callback: function (r, rt) { - if (r.message) { - const write_off_row = $.map(frm.doc["deductions"] || [], function (t) { - return t.account == r.message[account] ? t : null; - }); + base_received_amount: function (frm) { + frm.events.set_exchange_gain_loss_deduction(frm); + }, - const difference_amount = flt( - frm.doc.difference_amount, - precision("difference_amount") - ); + set_exchange_gain_loss_deduction: async function (frm) { + // wait for allocate_party_amount_against_ref_docs to finish + await frappe.after_ajax(); + const base_paid_amount = frm.doc.base_paid_amount || 0; + const base_received_amount = frm.doc.base_received_amount || 0; + const exchange_gain_loss = flt( + base_paid_amount - base_received_amount, + get_deduction_amount_precision() + ); - const add_deductions = (details) => { - let row = null; - if (!write_off_row.length && difference_amount) { - row = frm.add_child("deductions"); - row.account = details[account]; - row.cost_center = details["cost_center"]; - } else { - row = write_off_row[0]; - } - - if (row) { - row.amount = flt(row.amount) + difference_amount; - } else { - frappe.msgprint(__("No gain or loss in the exchange rate")); - } - refresh_field("deductions"); - }; - - if (!r.message[account]) { - frappe.prompt( - { - label: __("Please Specify Account"), - fieldname: account, - fieldtype: "Link", - options: "Account", - get_query: () => ({ - filters: { - company: frm.doc.company, - }, - }), - }, - (values) => { - const details = Object.assign({}, r.message, values); - add_deductions(details); - }, - __(frappe.unscrub(account)) - ); - } else { - add_deductions(r.message); - } - - frm.events.set_unallocated_amount(frm); - } - }, - }); + if (!exchange_gain_loss) { + frm.events.delete_exchange_gain_loss(frm); + return; } + + const account_fieldname = "exchange_gain_loss_account"; + let row = (frm.doc.deductions || []).find((t) => t.is_exchange_gain_loss); + + if (!row) { + const response = await get_company_defaults(frm.doc.company); + + const account = + response.message?.[account_fieldname] || + (await prompt_for_missing_account(frm, account_fieldname)); + + row = frm.add_child("deductions"); + row.account = account; + row.cost_center = response.message?.cost_center; + row.is_exchange_gain_loss = 1; + } + + row.amount = exchange_gain_loss; + frm.refresh_field("deductions"); + frm.events.set_unallocated_amount(frm); + }, + + delete_exchange_gain_loss: function (frm) { + const exchange_gain_loss_row = (frm.doc.deductions || []).find((row) => row.is_exchange_gain_loss); + + if (!exchange_gain_loss_row) return; + + exchange_gain_loss_row.amount = 0; + frm.get_field("deductions").grid.grid_rows[exchange_gain_loss_row.idx - 1].remove(); + frm.refresh_field("deductions"); + }, + + set_write_off_deduction: async function (frm) { + const difference_amount = flt(frm.doc.difference_amount, get_deduction_amount_precision()); + if (!difference_amount) return; + + const account_fieldname = "write_off_account"; + const response = await get_company_defaults(frm.doc.company); + const write_off_account = + response.message?.[account_fieldname] || + (await prompt_for_missing_account(frm, account_fieldname)); + + if (!write_off_account) return; + + let row = (frm.doc["deductions"] || []).find((t) => t.account == write_off_account); + if (!row) { + row = frm.add_child("deductions"); + row.account = write_off_account; + row.cost_center = response.message?.cost_center; + } + + row.amount = flt(row.amount) + difference_amount; + frm.refresh_field("deductions"); + frm.events.set_unallocated_amount(frm); }, bank_account: function (frm) { @@ -1367,6 +1358,24 @@ frappe.ui.form.on("Payment Entry", { if (r.message) { if (!frm.doc.mode_of_payment) { frm.set_value(field, r.message.account); + } else { + frappe.call({ + method: "frappe.client.get_value", + args: { + doctype: "Mode of Payment Account", + filters: { + parent: frm.doc.mode_of_payment, + company: frm.doc.company, + }, + fieldname: "default_account", + parent: "Mode of Payment", + }, + callback: function (res) { + if (!res.message.default_account) { + frm.set_value(field, r.message.account); + } + }, + }); } frm.set_value("bank", r.message.bank); frm.set_value("bank_account_no", r.message.bank_account_no); @@ -1678,6 +1687,62 @@ frappe.ui.form.on("Payment Entry", { return current_tax_amount; }, + + cost_center: function (frm) { + if (frm.doc.posting_date && (frm.doc.paid_from || frm.doc.paid_to)) { + return frappe.call({ + method: "erpnext.accounts.doctype.payment_entry.payment_entry.get_party_and_account_balance", + args: { + company: frm.doc.company, + date: frm.doc.posting_date, + paid_from: frm.doc.paid_from, + paid_to: frm.doc.paid_to, + ptype: frm.doc.party_type, + pty: frm.doc.party, + cost_center: frm.doc.cost_center, + }, + callback: function (r, rt) { + if (r.message) { + frappe.run_serially([ + () => { + frm.set_value( + "paid_from_account_balance", + r.message.paid_from_account_balance + ); + frm.set_value("paid_to_account_balance", r.message.paid_to_account_balance); + frm.set_value("party_balance", r.message.party_balance); + }, + ]); + } + }, + }); + } + }, + + after_save: function (frm) { + const { matched_payment_requests } = frappe.last_response; + if (!matched_payment_requests) return; + + const COLUMN_LABEL = [ + [__("Reference DocType"), __("Reference Name"), __("Allocated Amount"), __("Payment Request")], + ]; + + frappe.msgprint({ + title: __("Unset Matched Payment Request"), + message: COLUMN_LABEL.concat(matched_payment_requests), + as_table: true, + wide: true, + primary_action: { + label: __("Allocate Payment Request"), + action() { + frappe.hide_msgprint(); + frm.call("set_matched_payment_requests", { matched_payment_requests }, () => { + frm.dirty(); + }); + }, + }, + }); + }, }); frappe.ui.form.on("Payment Entry Reference", { @@ -1762,6 +1827,13 @@ frappe.ui.form.on("Advance Taxes and Charges", { }); frappe.ui.form.on("Payment Entry Deduction", { + before_deductions_remove: function (doc, cdt, cdn) { + const row = frappe.get_doc(cdt, cdn); + if (row.is_exchange_gain_loss && row.amount) { + frappe.throw(__("Cannot delete Exchange Gain/Loss row")); + } + }, + amount: function (frm) { frm.events.set_unallocated_amount(frm); }, @@ -1770,35 +1842,64 @@ frappe.ui.form.on("Payment Entry Deduction", { frm.events.set_unallocated_amount(frm); }, }); -frappe.ui.form.on("Payment Entry", { - cost_center: function (frm) { - if (frm.doc.posting_date && (frm.doc.paid_from || frm.doc.paid_to)) { - return frappe.call({ - method: "erpnext.accounts.doctype.payment_entry.payment_entry.get_party_and_account_balance", - args: { - company: frm.doc.company, - date: frm.doc.posting_date, - paid_from: frm.doc.paid_from, - paid_to: frm.doc.paid_to, - ptype: frm.doc.party_type, - pty: frm.doc.party, - cost_center: frm.doc.cost_center, - }, - callback: function (r, rt) { - if (r.message) { - frappe.run_serially([ - () => { - frm.set_value( - "paid_from_account_balance", - r.message.paid_from_account_balance - ); - frm.set_value("paid_to_account_balance", r.message.paid_to_account_balance); - frm.set_value("party_balance", r.message.party_balance); - }, - ]); - } - }, - }); + +function set_default_party_type(frm) { + if (frm.doc.party) return; + + let party_type; + if (frm.doc.payment_type == "Receive") { + party_type = "Customer"; + } else if (frm.doc.payment_type == "Pay") { + party_type = "Supplier"; + } + + if (party_type) frm.set_value("party_type", party_type); +} + +function get_included_taxes(frm) { + let included_taxes = 0; + for (const tax of frm.doc.taxes) { + if (!tax.included_in_paid_amount) continue; + + if (tax.add_deduct_tax == "Add") { + included_taxes += tax.base_tax_amount; + } else { + included_taxes -= tax.base_tax_amount; } - }, -}); + } + + return included_taxes; +} + +function get_company_defaults(company) { + return frappe.call({ + method: "erpnext.accounts.doctype.payment_entry.payment_entry.get_company_defaults", + args: { + company: company, + }, + }); +} + +function prompt_for_missing_account(frm, account) { + return new Promise((resolve) => { + const dialog = frappe.prompt( + { + label: __(frappe.unscrub(account)), + fieldname: account, + fieldtype: "Link", + options: "Account", + get_query: () => ({ + filters: { + company: frm.doc.company, + }, + }), + }, + (values) => resolve(values?.[account]), + __("Please Specify Account") + ); + }); +} + +function get_deduction_amount_precision() { + return frappe.meta.get_field_precision(frappe.meta.get_field("Payment Entry Deduction", "amount")); +} diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.json b/erpnext/accounts/doctype/payment_entry/payment_entry.json index d420bcca342..c7e05f70d7f 100644 --- a/erpnext/accounts/doctype/payment_entry/payment_entry.json +++ b/erpnext/accounts/doctype/payment_entry/payment_entry.json @@ -21,6 +21,7 @@ "party_name", "book_advance_payments_in_separate_party_account", "reconcile_on_advance_payment_date", + "advance_reconciliation_takes_effect_on", "column_break_11", "bank_account", "party_bank_account", @@ -56,7 +57,6 @@ "section_break_34", "total_allocated_amount", "base_total_allocated_amount", - "set_exchange_gain_loss", "column_break_36", "unallocated_amount", "difference_amount", @@ -203,14 +203,14 @@ "fieldtype": "Column Break" }, { - "depends_on": "party", + "depends_on": "eval: doc.party && doc.party_type !== \"Employee\"", "fieldname": "contact_person", "fieldtype": "Link", "label": "Contact", "options": "Contact" }, { - "depends_on": "contact_person", + "depends_on": "eval: (doc.contact_person || doc.party_type === \"Employee\") && doc.contact_email", "fieldname": "contact_email", "fieldtype": "Data", "label": "Email", @@ -224,6 +224,7 @@ "label": "Accounts" }, { + "allow_on_submit": 1, "depends_on": "party", "fieldname": "party_balance", "fieldtype": "Currency", @@ -253,6 +254,7 @@ "reqd": 1 }, { + "allow_on_submit": 1, "depends_on": "paid_from", "fieldname": "paid_from_account_balance", "fieldtype": "Currency", @@ -286,6 +288,7 @@ "reqd": 1 }, { + "allow_on_submit": 1, "depends_on": "paid_to", "fieldname": "paid_to_account_balance", "fieldtype": "Currency", @@ -390,11 +393,6 @@ "print_hide": 1, "read_only": 1 }, - { - "fieldname": "set_exchange_gain_loss", - "fieldtype": "Button", - "label": "Set Exchange Gain / Loss" - }, { "fieldname": "column_break_36", "fieldtype": "Column Break" @@ -788,6 +786,16 @@ "options": "No\nYes", "print_hide": 1, "search_index": 1 + }, + { + "default": "Oldest Of Invoice Or Advance", + "fetch_from": "company.reconciliation_takes_effect_on", + "fieldname": "advance_reconciliation_takes_effect_on", + "fieldtype": "Select", + "hidden": 1, + "label": "Advance Reconciliation Takes Effect On", + "no_copy": 1, + "options": "Advance Payment Date\nOldest Of Invoice Or Advance\nReconciliation Date" } ], "index_web_pages_for_search": 1, @@ -801,7 +809,7 @@ "table_fieldname": "payment_entries" } ], - "modified": "2024-05-31 17:07:06.197249", + "modified": "2025-03-24 16:18:19.920701", "modified_by": "Administrator", "module": "Accounts", "name": "Payment Entry", diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py index 13baff9e7a8..77eeba5cf3a 100644 --- a/erpnext/accounts/doctype/payment_entry/payment_entry.py +++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py @@ -7,8 +7,11 @@ from functools import reduce import frappe from frappe import ValidationError, _, qb, scrub, throw +from frappe.model.meta import get_field_precision +from frappe.query_builder import Tuple +from frappe.query_builder.functions import Count from frappe.utils import cint, comma_or, flt, getdate, nowdate -from frappe.utils.data import comma_and, fmt_money +from frappe.utils.data import comma_and, fmt_money, get_link_to_form from pypika import Case from pypika.functions import Coalesce, Sum @@ -23,6 +26,10 @@ from erpnext.accounts.doctype.invoice_discounting.invoice_discounting import ( get_party_account_based_on_invoice_discounting, ) from erpnext.accounts.doctype.journal_entry.journal_entry import get_default_bank_cash_account +from erpnext.accounts.doctype.repost_accounting_ledger.repost_accounting_ledger import ( + validate_docs_for_deferred_accounting, + validate_docs_for_voucher_types, +) from erpnext.accounts.doctype.tax_withholding_category.tax_withholding_category import ( get_party_tax_withholding_details, ) @@ -31,7 +38,11 @@ from erpnext.accounts.general_ledger import ( make_reverse_gl_entries, process_gl_map, ) -from erpnext.accounts.party import get_party_account +from erpnext.accounts.party import ( + complete_contact_details, + get_default_contact, + get_party_account, +) from erpnext.accounts.utils import ( cancel_exchange_gain_loss_journal, get_account_currency, @@ -98,15 +109,37 @@ class PaymentEntry(AccountsController): self.set_status() self.set_total_in_words() + def before_save(self): + self.set_matched_unset_payment_requests_to_response() + def on_submit(self): if self.difference_amount: frappe.throw(_("Difference Amount must be zero")) self.make_gl_entries() self.update_outstanding_amounts() - self.update_advance_paid() self.update_payment_schedule() + self.update_payment_requests() + self.make_advance_payment_ledger_entries() + self.update_advance_paid() # advance_paid_status depends on the payment request amount self.set_status() + def validate_for_repost(self): + validate_docs_for_voucher_types(["Payment Entry"]) + validate_docs_for_deferred_accounting([self.name], []) + + def on_update_after_submit(self): + # Flag will be set on Reconciliation + # Reconciliation tool will anyways repost ledger entries. So, no need to check and do implicit repost. + if self.flags.get("ignore_reposting_on_reconciliation"): + return + + self.needs_repost = self.check_if_fields_updated( + fields_to_check=[], child_tables={"references": [], "taxes": [], "deductions": []} + ) + if self.needs_repost: + self.validate_for_repost() + self.repost_accounting_entries() + def set_liability_account(self): # Auto setting liability account should only be done during 'draft' status if self.docstatus > 0 or self.payment_type == "Internal Transfer": @@ -145,9 +178,21 @@ class PaymentEntry(AccountsController): self.is_opening = "No" return - liability_account = get_party_account( - self.party_type, self.party, self.company, include_advance=True - )[1] + accounts = get_party_account(self.party_type, self.party, self.company, include_advance=True) + + liability_account = accounts[1] if len(accounts) > 1 else None + fieldname = ( + "default_advance_received_account" + if self.party_type == "Customer" + else "default_advance_paid_account" + ) + + if not liability_account: + throw( + _("Please set default {0} in Company {1}").format( + frappe.bold(frappe.get_meta("Company").get_label(fieldname)), frappe.bold(self.company) + ) + ) self.set(self.party_account_field, liability_account) @@ -172,46 +217,54 @@ class PaymentEntry(AccountsController): "Repost Accounting Ledger Items", "Unreconcile Payment", "Unreconcile Payment Entries", + "Advance Payment Ledger Entry", ) super().on_cancel() self.make_gl_entries(cancel=1) self.update_outstanding_amounts() - self.update_advance_paid() self.delink_advance_entry_references() self.update_payment_schedule(cancel=1) - self.set_payment_req_status() + self.update_payment_requests(cancel=True) + self.make_advance_payment_ledger_entries() + self.update_advance_paid() # advance_paid_status depends on the payment request amount self.set_status() - def set_payment_req_status(self): - from erpnext.accounts.doctype.payment_request.payment_request import update_payment_req_status + def update_payment_requests(self, cancel=False): + from erpnext.accounts.doctype.payment_request.payment_request import ( + update_payment_requests_as_per_pe_references, + ) - update_payment_req_status(self, None) + update_payment_requests_as_per_pe_references(self.references, cancel=cancel) def update_outstanding_amounts(self): self.set_missing_ref_details(force=True) def validate_duplicate_entry(self): - reference_names = [] + reference_names = set() for d in self.get("references"): - if (d.reference_doctype, d.reference_name, d.payment_term) in reference_names: + key = (d.reference_doctype, d.reference_name, d.payment_term, d.payment_request) + if key in reference_names: frappe.throw( _("Row #{0}: Duplicate entry in References {1} {2}").format( d.idx, d.reference_doctype, d.reference_name ) ) - reference_names.append((d.reference_doctype, d.reference_name, d.payment_term)) + + reference_names.add(key) def set_bank_account_data(self): - if self.bank_account: - bank_data = get_bank_account_details(self.bank_account) + if not self.bank_account: + return - field = "paid_from" if self.payment_type == "Pay" else "paid_to" + bank_data = get_bank_account_details(self.bank_account) - self.bank = bank_data.bank - self.bank_account_no = bank_data.bank_account_no + field = "paid_from" if self.payment_type == "Pay" else "paid_to" - if not self.get(field): - self.set(field, bank_data.account) + self.bank = bank_data.bank + self.bank_account_no = bank_data.bank_account_no + + if not self.get(field): + self.set(field, bank_data.account) def validate_payment_type_with_outstanding(self): total_outstanding = sum(d.allocated_amount for d in self.get("references")) @@ -225,17 +278,41 @@ class PaymentEntry(AccountsController): if self.payment_type == "Internal Transfer": return + self.validate_allocated_amount_as_per_payment_request() + if self.party_type in ("Customer", "Supplier"): self.validate_allocated_amount_with_latest_data() - else: - fail_message = _("Row #{0}: Allocated Amount cannot be greater than outstanding amount.") - for d in self.get("references"): - if (flt(d.allocated_amount)) > 0 and flt(d.allocated_amount) > flt(d.outstanding_amount): - frappe.throw(fail_message.format(d.idx)) + return - # Check for negative outstanding invoices as well - if flt(d.allocated_amount) < 0 and flt(d.allocated_amount) < flt(d.outstanding_amount): - frappe.throw(fail_message.format(d.idx)) + fail_message = _("Row #{0}: Allocated Amount cannot be greater than outstanding amount.") + for d in self.get("references"): + if (flt(d.allocated_amount)) > 0 and flt(d.allocated_amount) > flt(d.outstanding_amount): + frappe.throw(fail_message.format(d.idx)) + + # Check for negative outstanding invoices as well + if flt(d.allocated_amount) < 0 and flt(d.allocated_amount) < flt(d.outstanding_amount): + frappe.throw(fail_message.format(d.idx)) + + def validate_allocated_amount_as_per_payment_request(self): + """ + Allocated amount should not be greater than the outstanding amount of the Payment Request. + """ + if not self.references: + return + + pr_outstanding_amounts = get_payment_request_outstanding_set_in_references(self.references) + + if not pr_outstanding_amounts: + return + + for ref in self.references: + if ref.payment_request and ref.allocated_amount > pr_outstanding_amounts[ref.payment_request]: + frappe.throw( + msg=_( + "Row #{0}: Allocated Amount cannot be greater than Outstanding Amount of Payment Request {1}" + ).format(ref.idx, get_link_to_form("Payment Request", ref.payment_request)), + title=_("Invalid Allocated Amount"), + ) def term_based_allocation_enabled_for_reference( self, reference_doctype: str, reference_name: str @@ -252,91 +329,89 @@ class PaymentEntry(AccountsController): return False def validate_allocated_amount_with_latest_data(self): - if self.references: - uniq_vouchers = set([(x.reference_doctype, x.reference_name) for x in self.references]) - vouchers = [frappe._dict({"voucher_type": x[0], "voucher_no": x[1]}) for x in uniq_vouchers] - latest_references = get_outstanding_reference_documents( - { - "posting_date": self.posting_date, - "company": self.company, - "party_type": self.party_type, - "payment_type": self.payment_type, - "party": self.party, - "party_account": self.paid_from if self.payment_type == "Receive" else self.paid_to, - "get_outstanding_invoices": True, - "get_orders_to_be_billed": True, - "vouchers": vouchers, - "book_advance_payments_in_separate_party_account": self.book_advance_payments_in_separate_party_account, - }, - validate=True, - ) + if not self.references: + return - # Group latest_references by (voucher_type, voucher_no) - latest_lookup = {} - for d in latest_references: - d = frappe._dict(d) - latest_lookup.setdefault((d.voucher_type, d.voucher_no), frappe._dict())[d.payment_term] = d + uniq_vouchers = {(x.reference_doctype, x.reference_name) for x in self.references} + vouchers = [frappe._dict({"voucher_type": x[0], "voucher_no": x[1]}) for x in uniq_vouchers] + latest_references = get_outstanding_reference_documents( + { + "posting_date": self.posting_date, + "company": self.company, + "party_type": self.party_type, + "payment_type": self.payment_type, + "party": self.party, + "party_account": self.paid_from if self.payment_type == "Receive" else self.paid_to, + "get_outstanding_invoices": True, + "get_orders_to_be_billed": True, + "vouchers": vouchers, + "book_advance_payments_in_separate_party_account": self.book_advance_payments_in_separate_party_account, + }, + validate=True, + ) - for idx, d in enumerate(self.get("references"), start=1): - latest = latest_lookup.get((d.reference_doctype, d.reference_name)) or frappe._dict() + # Group latest_references by (voucher_type, voucher_no) + latest_lookup = {} + for d in latest_references: + d = frappe._dict(d) + latest_lookup.setdefault((d.voucher_type, d.voucher_no), frappe._dict())[d.payment_term] = d - # If term based allocation is enabled, throw - if ( - d.payment_term is None or d.payment_term == "" - ) and self.term_based_allocation_enabled_for_reference(d.reference_doctype, d.reference_name): - frappe.throw( - _( - "{0} has Payment Term based allocation enabled. Select a Payment Term for Row #{1} in Payment References section" - ).format(frappe.bold(d.reference_name), frappe.bold(idx)) - ) + for idx, d in enumerate(self.get("references"), start=1): + latest = latest_lookup.get((d.reference_doctype, d.reference_name)) or frappe._dict() - # if no payment template is used by invoice and has a custom term(no `payment_term`), then invoice outstanding will be in 'None' key - latest = latest.get(d.payment_term) or latest.get(None) - # The reference has already been fully paid - if not latest: - frappe.throw( - _("{0} {1} has already been fully paid.").format( - _(d.reference_doctype), d.reference_name - ) - ) - # The reference has already been partly paid - elif ( - latest.outstanding_amount < latest.invoice_amount - and flt(d.outstanding_amount, d.precision("outstanding_amount")) - != flt(latest.outstanding_amount, d.precision("outstanding_amount")) - and d.payment_term == "" - ): - frappe.throw( - _( - "{0} {1} has already been partly paid. Please use the 'Get Outstanding Invoice' or the 'Get Outstanding Orders' button to get the latest outstanding amounts." - ).format(_(d.reference_doctype), d.reference_name) - ) + # If term based allocation is enabled, throw + if ( + d.payment_term is None or d.payment_term == "" + ) and self.term_based_allocation_enabled_for_reference(d.reference_doctype, d.reference_name): + frappe.throw( + _( + "{0} has Payment Term based allocation enabled. Select a Payment Term for Row #{1} in Payment References section" + ).format(frappe.bold(d.reference_name), frappe.bold(idx)) + ) - fail_message = _("Row #{0}: Allocated Amount cannot be greater than outstanding amount.") + # if no payment template is used by invoice and has a custom term(no `payment_term`), then invoice outstanding will be in 'None' key + latest = latest.get(d.payment_term) or latest.get(None) + # The reference has already been fully paid + if not latest: + frappe.throw( + _("{0} {1} has already been fully paid.").format(_(d.reference_doctype), d.reference_name) + ) + # The reference has already been partly paid + elif ( + latest.outstanding_amount < latest.invoice_amount + and flt(d.outstanding_amount, d.precision("outstanding_amount")) + != flt(latest.outstanding_amount, d.precision("outstanding_amount")) + and d.payment_term == "" + ): + frappe.throw( + _( + "{0} {1} has already been partly paid. Please use the 'Get Outstanding Invoice' or the 'Get Outstanding Orders' button to get the latest outstanding amounts." + ).format(_(d.reference_doctype), d.reference_name) + ) - if ( - d.payment_term - and ( - (flt(d.allocated_amount)) > 0 - and latest.payment_term_outstanding - and (flt(d.allocated_amount) > flt(latest.payment_term_outstanding)) - ) - and self.term_based_allocation_enabled_for_reference( - d.reference_doctype, d.reference_name - ) - ): - frappe.throw( - _( - "Row #{0}: Allocated amount:{1} is greater than outstanding amount:{2} for Payment Term {3}" - ).format(d.idx, d.allocated_amount, latest.payment_term_outstanding, d.payment_term) - ) + fail_message = _("Row #{0}: Allocated Amount cannot be greater than outstanding amount.") - if (flt(d.allocated_amount)) > 0 and flt(d.allocated_amount) > flt(latest.outstanding_amount): - frappe.throw(fail_message.format(d.idx)) + if ( + d.payment_term + and ( + (flt(d.allocated_amount)) > 0 + and latest.payment_term_outstanding + and (flt(d.allocated_amount) > flt(latest.payment_term_outstanding)) + ) + and self.term_based_allocation_enabled_for_reference(d.reference_doctype, d.reference_name) + ): + frappe.throw( + _( + "Row #{0}: Allocated amount:{1} is greater than outstanding amount:{2} for Payment Term {3}" + ).format(d.idx, d.allocated_amount, latest.payment_term_outstanding, d.payment_term) + ) - # Check for negative outstanding invoices as well - if flt(d.allocated_amount) < 0 and flt(d.allocated_amount) < flt(latest.outstanding_amount): - frappe.throw(fail_message.format(d.idx)) + if (flt(d.allocated_amount)) > 0 and flt(d.allocated_amount) > flt(latest.outstanding_amount): + frappe.throw(fail_message.format(d.idx)) + + # Check for negative outstanding invoices as well + if flt(d.allocated_amount) < 0 and flt(d.allocated_amount) < flt(latest.outstanding_amount): + frappe.throw(fail_message.format(d.idx)) def delink_advance_entry_references(self): for reference in self.references: @@ -370,6 +445,12 @@ class PaymentEntry(AccountsController): self.party_name = frappe.db.get_value(self.party_type, self.party, "name") if self.party: + if self.party_type == "Employee": + self.contact_person = None + elif not self.contact_person: + self.contact_person = get_default_contact(self.party_type, self.party) + + complete_contact_details(self) if not self.party_balance: self.party_balance = get_balance_on( party_type=self.party_type, party=self.party, date=self.posting_date, company=self.company @@ -380,15 +461,25 @@ class PaymentEntry(AccountsController): self.set(self.party_account_field, party_account) self.party_account = party_account - if self.paid_from and not (self.paid_from_account_currency or self.paid_from_account_balance): + if self.paid_from and ( + not self.paid_from_account_currency + or not self.paid_from_account_balance + or not self.paid_from_account_type + ): acc = get_account_details(self.paid_from, self.posting_date, self.cost_center) self.paid_from_account_currency = acc.account_currency self.paid_from_account_balance = acc.account_balance + self.paid_from_account_type = acc.account_type - if self.paid_to and not (self.paid_to_account_currency or self.paid_to_account_balance): + if self.paid_to and ( + not self.paid_to_account_currency + or not self.paid_to_account_balance + or not self.paid_to_account_type + ): acc = get_account_details(self.paid_to, self.posting_date, self.cost_center) self.paid_to_account_currency = acc.account_currency self.paid_to_account_balance = acc.account_balance + self.paid_to_account_type = acc.account_type self.party_account_currency = ( self.paid_from_account_currency @@ -403,47 +494,48 @@ class PaymentEntry(AccountsController): reference_exchange_details: dict | None = None, ) -> None: for d in self.get("references"): - if d.allocated_amount: - if update_ref_details_only_for and ( - (d.reference_doctype, d.reference_name) not in update_ref_details_only_for - ): + if not d.allocated_amount: + continue + + if update_ref_details_only_for and ( + (d.reference_doctype, d.reference_name) not in update_ref_details_only_for + ): + continue + + ref_details = get_reference_details( + d.reference_doctype, + d.reference_name, + self.party_account_currency, + self.party_type, + self.party, + ) + + # Only update exchange rate when the reference is Journal Entry + if ( + reference_exchange_details + and d.reference_doctype == reference_exchange_details.reference_doctype + and d.reference_name == reference_exchange_details.reference_name + ): + ref_details.update({"exchange_rate": reference_exchange_details.exchange_rate}) + + for field, value in ref_details.items(): + if d.exchange_gain_loss: + # for cases where gain/loss is booked into invoice + # exchange_gain_loss is calculated from invoice & populated + # and row.exchange_rate is already set to payment entry's exchange rate + # refer -> `update_reference_in_payment_entry()` in utils.py continue - ref_details = get_reference_details( - d.reference_doctype, - d.reference_name, - self.party_account_currency, - self.party_type, - self.party, - ) - - # Only update exchange rate when the reference is Journal Entry - if ( - reference_exchange_details - and d.reference_doctype == reference_exchange_details.reference_doctype - and d.reference_name == reference_exchange_details.reference_name - ): - ref_details.update({"exchange_rate": reference_exchange_details.exchange_rate}) - - for field, value in ref_details.items(): - if d.exchange_gain_loss: - # for cases where gain/loss is booked into invoice - # exchange_gain_loss is calculated from invoice & populated - # and row.exchange_rate is already set to payment entry's exchange rate - # refer -> `update_reference_in_payment_entry()` in utils.py - continue - - if field == "exchange_rate" or not d.get(field) or force: - d.db_set(field, value) + if field == "exchange_rate" or not d.get(field) or force: + d.db_set(field, value) def validate_payment_type(self): if self.payment_type not in ("Receive", "Pay", "Internal Transfer"): frappe.throw(_("Payment Type must be one of Receive, Pay and Internal Transfer")) def validate_party_details(self): - if self.party: - if not frappe.db.exists(self.party_type, self.party): - frappe.throw(_("{0} {1} does not exist").format(_(self.party_type), self.party)) + if self.party and not frappe.db.exists(self.party_type, self.party): + frappe.throw(_("{0} {1} does not exist").format(_(self.party_type), self.party)) def set_exchange_rate(self, ref_doc=None): self.set_source_exchange_rate(ref_doc) @@ -453,12 +545,8 @@ class PaymentEntry(AccountsController): if self.paid_from: if self.paid_from_account_currency == self.company_currency: self.source_exchange_rate = 1 - else: - if ref_doc: - if self.paid_from_account_currency == ref_doc.currency: - self.source_exchange_rate = ref_doc.get("exchange_rate") or ref_doc.get( - "conversion_rate" - ) + elif ref_doc and self.paid_from_account_currency == ref_doc.currency: + self.source_exchange_rate = ref_doc.get("exchange_rate") or ref_doc.get("conversion_rate") if not self.source_exchange_rate: self.source_exchange_rate = get_exchange_rate( @@ -469,9 +557,8 @@ class PaymentEntry(AccountsController): if self.paid_from_account_currency == self.paid_to_account_currency: self.target_exchange_rate = self.source_exchange_rate elif self.paid_to and not self.target_exchange_rate: - if ref_doc: - if self.paid_to_account_currency == ref_doc.currency: - self.target_exchange_rate = ref_doc.get("exchange_rate") or ref_doc.get("conversion_rate") + if ref_doc and self.paid_to_account_currency == ref_doc.currency: + self.target_exchange_rate = ref_doc.get("exchange_rate") or ref_doc.get("conversion_rate") if not self.target_exchange_rate: self.target_exchange_rate = get_exchange_rate( @@ -495,70 +582,68 @@ class PaymentEntry(AccountsController): if d.reference_doctype not in valid_reference_doctypes: frappe.throw( _("Reference Doctype must be one of {0}").format( - comma_or(_(d) for d in valid_reference_doctypes) + comma_or([_(d) for d in valid_reference_doctypes]) ) ) elif d.reference_name: if not frappe.db.exists(d.reference_doctype, d.reference_name): frappe.throw(_("{0} {1} does not exist").format(d.reference_doctype, d.reference_name)) - else: - ref_doc = frappe.get_doc(d.reference_doctype, d.reference_name) - if d.reference_doctype != "Journal Entry": - if self.party != ref_doc.get(scrub(self.party_type)): - frappe.throw( - _("{0} {1} is not associated with {2} {3}").format( - _(d.reference_doctype), d.reference_name, _(self.party_type), self.party - ) - ) - else: - self.validate_journal_entry() + ref_doc = frappe.get_doc(d.reference_doctype, d.reference_name) - if d.reference_doctype in frappe.get_hooks("invoice_doctypes"): - if self.party_type == "Customer": - ref_party_account = ( - get_party_account_based_on_invoice_discounting(d.reference_name) - or ref_doc.debit_to - ) - elif self.party_type == "Supplier": - ref_party_account = ref_doc.credit_to - elif self.party_type == "Employee": - ref_party_account = ref_doc.payable_account - - if ( - ref_party_account != self.party_account - and not self.book_advance_payments_in_separate_party_account - ): - frappe.throw( - _("{0} {1} is associated with {2}, but Party Account is {3}").format( - _(d.reference_doctype), - d.reference_name, - ref_party_account, - self.party_account, - ) - ) - - if ref_doc.doctype == "Purchase Invoice" and ref_doc.get("on_hold"): - frappe.throw( - _("{0} {1} is on hold").format(_(d.reference_doctype), d.reference_name), - title=_("Invalid Purchase Invoice"), - ) - - if ref_doc.docstatus != 1: + if d.reference_doctype != "Journal Entry": + if self.party != ref_doc.get(scrub(self.party_type)): frappe.throw( - _("{0} {1} must be submitted").format(_(d.reference_doctype), d.reference_name) + _("{0} {1} is not associated with {2} {3}").format( + _(d.reference_doctype), d.reference_name, _(self.party_type), self.party + ) ) + else: + self.validate_journal_entry() + + if d.reference_doctype in frappe.get_hooks("invoice_doctypes"): + if self.party_type == "Customer": + ref_party_account = ( + get_party_account_based_on_invoice_discounting(d.reference_name) + or ref_doc.debit_to + ) + elif self.party_type == "Supplier": + ref_party_account = ref_doc.credit_to + elif self.party_type == "Employee": + ref_party_account = ref_doc.payable_account + + if ( + ref_party_account != self.party_account + and not self.book_advance_payments_in_separate_party_account + ): + frappe.throw( + _("{0} {1} is associated with {2}, but Party Account is {3}").format( + _(d.reference_doctype), + d.reference_name, + ref_party_account, + self.party_account, + ) + ) + + if ref_doc.doctype == "Purchase Invoice" and ref_doc.get("on_hold"): + frappe.throw( + _("{0} {1} is on hold").format(_(d.reference_doctype), d.reference_name), + title=_("Invalid Purchase Invoice"), + ) + + if ref_doc.docstatus != 1: + frappe.throw( + _("{0} {1} must be submitted").format(_(d.reference_doctype), d.reference_name) + ) def get_valid_reference_doctypes(self): if self.party_type == "Customer": return ("Sales Order", "Sales Invoice", "Journal Entry", "Dunning", "Payment Entry") + elif self.party_type in ["Shareholder", "Employee"]: + return ("Journal Entry",) elif self.party_type == "Supplier": return ("Purchase Order", "Purchase Invoice", "Journal Entry", "Payment Entry") - elif self.party_type == "Shareholder": - return ("Journal Entry",) - elif self.party_type == "Employee": - return ("Journal Entry",) def validate_paid_invoices(self): no_oustanding_refs = {} @@ -624,37 +709,39 @@ class PaymentEntry(AccountsController): invoice_paid_amount_map = {} for ref in self.get("references"): - if ref.payment_term and ref.reference_name: - key = (ref.payment_term, ref.reference_name, ref.reference_doctype) - invoice_payment_amount_map.setdefault(key, 0.0) - invoice_payment_amount_map[key] += ref.allocated_amount + if not ref.payment_term or not ref.reference_name: + continue - if not invoice_paid_amount_map.get(key): - payment_schedule = frappe.get_all( - "Payment Schedule", - filters={"parent": ref.reference_name}, - fields=[ - "paid_amount", - "payment_amount", - "payment_term", - "discount", - "outstanding", - "discount_type", - ], - ) - for term in payment_schedule: - invoice_key = (term.payment_term, ref.reference_name, ref.reference_doctype) - invoice_paid_amount_map.setdefault(invoice_key, {}) - invoice_paid_amount_map[invoice_key]["outstanding"] = term.outstanding - if not (term.discount_type and term.discount): - continue + key = (ref.payment_term, ref.reference_name, ref.reference_doctype) + invoice_payment_amount_map.setdefault(key, 0.0) + invoice_payment_amount_map[key] += ref.allocated_amount - if term.discount_type == "Percentage": - invoice_paid_amount_map[invoice_key]["discounted_amt"] = ref.total_amount * ( - term.discount / 100 - ) - else: - invoice_paid_amount_map[invoice_key]["discounted_amt"] = term.discount + if not invoice_paid_amount_map.get(key): + payment_schedule = frappe.get_all( + "Payment Schedule", + filters={"parent": ref.reference_name}, + fields=[ + "paid_amount", + "payment_amount", + "payment_term", + "discount", + "outstanding", + "discount_type", + ], + ) + for term in payment_schedule: + invoice_key = (term.payment_term, ref.reference_name, ref.reference_doctype) + invoice_paid_amount_map.setdefault(invoice_key, {}) + invoice_paid_amount_map[invoice_key]["outstanding"] = term.outstanding + if not (term.discount_type and term.discount): + continue + + if term.discount_type == "Percentage": + invoice_paid_amount_map[invoice_key]["discounted_amt"] = ref.total_amount * ( + term.discount / 100 + ) + else: + invoice_paid_amount_map[invoice_key]["discounted_amt"] = term.discount for idx, (key, allocated_amount) in enumerate(invoice_payment_amount_map.items(), 1): if not invoice_paid_amount_map.get(key): @@ -667,16 +754,39 @@ class PaymentEntry(AccountsController): outstanding = flt(invoice_paid_amount_map.get(key, {}).get("outstanding")) discounted_amt = flt(invoice_paid_amount_map.get(key, {}).get("discounted_amt")) + conversion_rate = frappe.db.get_value(key[2], {"name": key[1]}, "conversion_rate") + base_paid_amount_precision = get_field_precision( + frappe.get_meta("Payment Schedule").get_field("base_paid_amount") + ) + base_outstanding_precision = get_field_precision( + frappe.get_meta("Payment Schedule").get_field("base_outstanding") + ) + + base_paid_amount = flt( + (allocated_amount - discounted_amt) * conversion_rate, base_paid_amount_precision + ) + base_outstanding = flt(allocated_amount * conversion_rate, base_outstanding_precision) + if cancel: frappe.db.sql( """ UPDATE `tabPayment Schedule` SET paid_amount = `paid_amount` - %s, + base_paid_amount = `base_paid_amount` - %s, discounted_amount = `discounted_amount` - %s, - outstanding = `outstanding` + %s + outstanding = `outstanding` + %s, + base_outstanding = `base_outstanding` - %s WHERE parent = %s and payment_term = %s""", - (allocated_amount - discounted_amt, discounted_amt, allocated_amount, key[1], key[0]), + ( + allocated_amount - discounted_amt, + base_paid_amount, + discounted_amt, + allocated_amount, + base_outstanding, + key[1], + key[0], + ), ) else: if allocated_amount > outstanding: @@ -692,10 +802,20 @@ class PaymentEntry(AccountsController): UPDATE `tabPayment Schedule` SET paid_amount = `paid_amount` + %s, + base_paid_amount = `base_paid_amount` + %s, discounted_amount = `discounted_amount` + %s, - outstanding = `outstanding` - %s + outstanding = `outstanding` - %s, + base_outstanding = `base_outstanding` - %s WHERE parent = %s and payment_term = %s""", - (allocated_amount - discounted_amt, discounted_amt, allocated_amount, key[1], key[0]), + ( + allocated_amount - discounted_amt, + base_paid_amount, + discounted_amt, + allocated_amount, + base_outstanding, + key[1], + key[0], + ), ) def get_allocated_amount_in_transaction_currency( @@ -845,6 +965,7 @@ class PaymentEntry(AccountsController): self.set_amounts_in_company_currency() self.set_total_allocated_amount() self.set_unallocated_amount() + self.set_exchange_gain_loss() self.set_difference_amount() def validate_amounts(self): @@ -867,14 +988,14 @@ class PaymentEntry(AccountsController): applicable_tax = 0 base_applicable_tax = 0 for tax in self.get("taxes"): - if not tax.included_in_paid_amount: - amount = -1 * tax.tax_amount if tax.add_deduct_tax == "Deduct" else tax.tax_amount - base_amount = ( - -1 * tax.base_tax_amount if tax.add_deduct_tax == "Deduct" else tax.base_tax_amount - ) + if tax.included_in_paid_amount: + continue - applicable_tax += amount - base_applicable_tax += base_amount + amount = -1 * tax.tax_amount if tax.add_deduct_tax == "Deduct" else tax.tax_amount + base_amount = -1 * tax.base_tax_amount if tax.add_deduct_tax == "Deduct" else tax.base_tax_amount + + applicable_tax += amount + base_applicable_tax += base_amount self.paid_amount_after_tax = flt( flt(self.paid_amount) + flt(applicable_tax), self.precision("paid_amount_after_tax") @@ -940,10 +1061,10 @@ class PaymentEntry(AccountsController): if d.exchange_rate is None: d.exchange_rate = 1 - allocated_amount_in_pe_exchange_rate = flt( + allocated_amount_in_ref_exchange_rate = flt( flt(d.allocated_amount) * flt(d.exchange_rate), self.precision("base_paid_amount") ) - d.exchange_gain_loss = base_allocated_amount - allocated_amount_in_pe_exchange_rate + d.exchange_gain_loss = base_allocated_amount - allocated_amount_in_ref_exchange_rate return base_allocated_amount def set_total_allocated_amount(self): @@ -961,29 +1082,80 @@ class PaymentEntry(AccountsController): def set_unallocated_amount(self): self.unallocated_amount = 0 - if self.party: - total_deductions = sum(flt(d.amount) for d in self.get("deductions")) - included_taxes = self.get_included_taxes() - if ( - self.payment_type == "Receive" - and self.base_total_allocated_amount < self.base_received_amount + total_deductions - and self.total_allocated_amount - < flt(self.paid_amount) + (total_deductions / self.source_exchange_rate) - ): - self.unallocated_amount = ( - self.base_received_amount + total_deductions - self.base_total_allocated_amount - ) / self.source_exchange_rate - self.unallocated_amount -= included_taxes - elif ( - self.payment_type == "Pay" - and self.base_total_allocated_amount < (self.base_paid_amount - total_deductions) - and self.total_allocated_amount - < flt(self.received_amount) + (total_deductions / self.target_exchange_rate) - ): - self.unallocated_amount = ( - self.base_paid_amount - (total_deductions + self.base_total_allocated_amount) - ) / self.target_exchange_rate - self.unallocated_amount -= included_taxes + if not self.party: + return + + deductions_to_consider = sum( + flt(d.amount) for d in self.get("deductions") if not d.is_exchange_gain_loss + ) + included_taxes = self.get_included_taxes() + + if self.payment_type == "Receive" and self.base_total_allocated_amount < ( + self.base_paid_amount + deductions_to_consider + ): + self.unallocated_amount = ( + self.base_paid_amount + + deductions_to_consider + - self.base_total_allocated_amount + - included_taxes + ) / self.source_exchange_rate + elif self.payment_type == "Pay" and self.base_total_allocated_amount < ( + self.base_received_amount - deductions_to_consider + ): + self.unallocated_amount = ( + self.base_received_amount + - deductions_to_consider + - self.base_total_allocated_amount + - included_taxes + ) / self.target_exchange_rate + + def set_exchange_gain_loss(self): + exchange_gain_loss = flt( + self.base_paid_amount - self.base_received_amount, + self.precision("amount", "deductions"), + ) + + exchange_gain_loss_rows = [row for row in self.get("deductions") if row.is_exchange_gain_loss] + exchange_gain_loss_row = exchange_gain_loss_rows.pop(0) if exchange_gain_loss_rows else None + + for row in exchange_gain_loss_rows: + self.remove(row) + + if not exchange_gain_loss: + if exchange_gain_loss_row: + self.remove(exchange_gain_loss_row) + + return + + if not exchange_gain_loss_row: + values = frappe.get_cached_value( + "Company", self.company, ("exchange_gain_loss_account", "cost_center"), as_dict=True + ) + + for fieldname, value in values.items(): + if value: + continue + + label = _(frappe.get_meta("Company").get_label(fieldname)) + return frappe.msgprint( + _("Please set {0} in Company {1} to account for Exchange Gain / Loss").format( + label, get_link_to_form("Company", self.company) + ), + title=_("Missing Default in Company"), + indicator="red" if self.docstatus.is_submitted() else "yellow", + raise_exception=self.docstatus.is_submitted(), + ) + + exchange_gain_loss_row = self.append( + "deductions", + { + "account": values.exchange_gain_loss_account, + "cost_center": values.cost_center, + "is_exchange_gain_loss": 1, + }, + ) + + exchange_gain_loss_row.amount = exchange_gain_loss def set_difference_amount(self): base_unallocated_amount = flt(self.unallocated_amount) * ( @@ -1011,11 +1183,13 @@ class PaymentEntry(AccountsController): def get_included_taxes(self): included_taxes = 0 for tax in self.get("taxes"): - if tax.included_in_paid_amount: - if tax.add_deduct_tax == "Add": - included_taxes += tax.base_tax_amount - else: - included_taxes -= tax.base_tax_amount + if not tax.included_in_paid_amount: + continue + + if tax.add_deduct_tax == "Add": + included_taxes += tax.base_tax_amount + else: + included_taxes -= tax.base_tax_amount return included_taxes @@ -1094,9 +1268,22 @@ class PaymentEntry(AccountsController): self.set("remarks", "\n".join(remarks)) + def set_transaction_currency_and_rate(self): + company_currency = erpnext.get_company_currency(self.company) + self.transaction_currency = company_currency + self.transaction_exchange_rate = 1 + + if self.paid_from_account_currency != company_currency: + self.transaction_currency = self.paid_from_account_currency + self.transaction_exchange_rate = self.source_exchange_rate + elif self.paid_to_account_currency != company_currency: + self.transaction_currency = self.paid_to_account_currency + self.transaction_exchange_rate = self.target_exchange_rate + def build_gl_map(self): if self.payment_type in ("Receive", "Pay") and not self.get("party_account_field"): self.setup_party_account_field() + self.set_transaction_currency_and_rate() gl_entries = [] self.add_party_gl_entries(gl_entries) @@ -1121,6 +1308,8 @@ class PaymentEntry(AccountsController): if not self.party_account: return + advance_payment_doctypes = frappe.get_hooks("advance_payment_doctypes") + if self.payment_type == "Receive": against_account = self.paid_to else: @@ -1163,14 +1352,44 @@ class PaymentEntry(AccountsController): dr_or_cr = "debit" if dr_or_cr == "credit" else "credit" gle.update( - { - dr_or_cr: allocated_amount_in_company_currency, - dr_or_cr + "_in_account_currency": d.allocated_amount, - "against_voucher_type": d.reference_doctype, - "against_voucher": d.reference_name, - "cost_center": cost_center, - } + self.get_gl_dict( + { + "account": self.party_account, + "party_type": self.party_type, + "party": self.party, + "against": against_account, + "account_currency": self.party_account_currency, + "cost_center": cost_center, + dr_or_cr + "_in_account_currency": d.allocated_amount, + dr_or_cr: allocated_amount_in_company_currency, + dr_or_cr + "_in_transaction_currency": d.allocated_amount + if self.transaction_currency == self.party_account_currency + else allocated_amount_in_company_currency / self.transaction_exchange_rate, + }, + item=self, + ) ) + + if self.book_advance_payments_in_separate_party_account: + if d.reference_doctype in advance_payment_doctypes: + # Upon reconciliation, whole ledger will be reposted. So, reference to SO/PO is fine + gle.update( + { + "against_voucher_type": d.reference_doctype, + "against_voucher": d.reference_name, + } + ) + else: + # Do not reference Invoices while Advance is in separate party account + gle.update({"against_voucher_type": self.doctype, "against_voucher": self.name}) + else: + gle.update( + { + "against_voucher_type": d.reference_doctype, + "against_voucher": d.reference_name, + } + ) + gl_entries.append(gle) if self.unallocated_amount: @@ -1179,13 +1398,25 @@ class PaymentEntry(AccountsController): base_unallocated_amount = self.unallocated_amount * exchange_rate gle = party_gl_dict.copy() - gle.update( - { - dr_or_cr + "_in_account_currency": self.unallocated_amount, - dr_or_cr: base_unallocated_amount, - } - ) + gle.update( + self.get_gl_dict( + { + "account": self.party_account, + "party_type": self.party_type, + "party": self.party, + "against": against_account, + "account_currency": self.party_account_currency, + "cost_center": self.cost_center, + dr_or_cr + "_in_account_currency": self.unallocated_amount, + dr_or_cr + "_in_transaction_currency": self.unallocated_amount + if self.party_account_currency == self.transaction_currency + else base_unallocated_amount / self.transaction_exchange_rate, + dr_or_cr: base_unallocated_amount, + }, + item=self, + ) + ) if self.book_advance_payments_in_separate_party_account: gle.update( { @@ -1198,6 +1429,7 @@ class PaymentEntry(AccountsController): def make_advance_gl_entries( self, entry: object | dict = None, cancel: bool = 0, update_outstanding: str = "Yes" ): + self.set_transaction_currency_and_rate() gl_entries = [] self.add_advance_gl_entries(gl_entries, entry) @@ -1255,21 +1487,38 @@ class PaymentEntry(AccountsController): "voucher_detail_no": invoice.name, } - if self.reconcile_on_advance_payment_date: - posting_date = self.posting_date + if invoice.reconcile_effect_on: + posting_date = invoice.reconcile_effect_on else: - date_field = "posting_date" - if invoice.reference_doctype in ["Sales Order", "Purchase Order"]: - date_field = "transaction_date" - posting_date = frappe.db.get_value(invoice.reference_doctype, invoice.reference_name, date_field) - - if getdate(posting_date) < getdate(self.posting_date): + # For backwards compatibility + # Supporting reposting on payment entries reconciled before select field introduction + if self.advance_reconciliation_takes_effect_on == "Advance Payment Date": posting_date = self.posting_date + elif self.advance_reconciliation_takes_effect_on == "Oldest Of Invoice Or Advance": + date_field = "posting_date" + if invoice.reference_doctype in ["Sales Order", "Purchase Order"]: + date_field = "transaction_date" + posting_date = frappe.db.get_value( + invoice.reference_doctype, invoice.reference_name, date_field + ) + + if getdate(posting_date) < getdate(self.posting_date): + posting_date = self.posting_date + elif self.advance_reconciliation_takes_effect_on == "Reconciliation Date": + posting_date = nowdate() + frappe.db.set_value("Payment Entry Reference", invoice.name, "reconcile_effect_on", posting_date) dr_or_cr, account = self.get_dr_and_account_for_advances(invoice) + base_allocated_amount = self.calculate_base_allocated_amount_for_reference(invoice) args_dict["account"] = account - args_dict[dr_or_cr] = self.calculate_base_allocated_amount_for_reference(invoice) + args_dict[dr_or_cr] = base_allocated_amount args_dict[dr_or_cr + "_in_account_currency"] = invoice.allocated_amount + args_dict[dr_or_cr + "_in_transaction_currency"] = ( + invoice.allocated_amount + if self.party_account_currency == self.transaction_currency + else base_allocated_amount / self.transaction_exchange_rate + ) + args_dict.update( { "against_voucher_type": invoice.reference_doctype, @@ -1287,8 +1536,13 @@ class PaymentEntry(AccountsController): args_dict[dr_or_cr + "_in_account_currency"] = 0 dr_or_cr = "debit" if dr_or_cr == "credit" else "credit" args_dict["account"] = self.party_account - args_dict[dr_or_cr] = self.calculate_base_allocated_amount_for_reference(invoice) + args_dict[dr_or_cr] = base_allocated_amount args_dict[dr_or_cr + "_in_account_currency"] = invoice.allocated_amount + args_dict[dr_or_cr + "_in_transaction_currency"] = ( + invoice.allocated_amount + if self.party_account_currency == self.transaction_currency + else base_allocated_amount / self.transaction_exchange_rate + ) args_dict.update( { "against_voucher_type": "Payment Entry", @@ -1310,6 +1564,9 @@ class PaymentEntry(AccountsController): "account_currency": self.paid_from_account_currency, "against": self.party if self.payment_type == "Pay" else self.paid_to, "credit_in_account_currency": self.paid_amount, + "credit_in_transaction_currency": self.paid_amount + if self.paid_from_account_currency == self.transaction_currency + else self.base_paid_amount / self.transaction_exchange_rate, "credit": self.base_paid_amount, "cost_center": self.cost_center, "post_net_value": True, @@ -1325,6 +1582,9 @@ class PaymentEntry(AccountsController): "account_currency": self.paid_to_account_currency, "against": self.party if self.payment_type == "Receive" else self.paid_from, "debit_in_account_currency": self.received_amount, + "debit_in_transaction_currency": self.received_amount + if self.paid_to_account_currency == self.transaction_currency + else self.base_received_amount / self.transaction_exchange_rate, "debit": self.base_received_amount, "cost_center": self.cost_center, }, @@ -1360,6 +1620,8 @@ class PaymentEntry(AccountsController): dr_or_cr + "_in_account_currency": base_tax_amount if account_currency == self.company_currency else d.tax_amount, + dr_or_cr + "_in_transaction_currency": base_tax_amount + / self.transaction_exchange_rate, "cost_center": d.cost_center, "post_net_value": True, }, @@ -1385,6 +1647,8 @@ class PaymentEntry(AccountsController): rev_dr_or_cr + "_in_account_currency": base_tax_amount if account_currency == self.company_currency else d.tax_amount, + rev_dr_or_cr + "_in_transaction_currency": base_tax_amount + / self.transaction_exchange_rate, "cost_center": self.cost_center, "post_net_value": True, }, @@ -1395,24 +1659,27 @@ class PaymentEntry(AccountsController): def add_deductions_gl_entries(self, gl_entries): for d in self.get("deductions"): - if d.amount: - account_currency = get_account_currency(d.account) - if account_currency != self.company_currency: - frappe.throw(_("Currency for {0} must be {1}").format(d.account, self.company_currency)) + if not d.amount: + continue - gl_entries.append( - self.get_gl_dict( - { - "account": d.account, - "account_currency": account_currency, - "against": self.party or self.paid_from, - "debit_in_account_currency": d.amount, - "debit": d.amount, - "cost_center": d.cost_center, - }, - item=d, - ) + account_currency = get_account_currency(d.account) + if account_currency != self.company_currency: + frappe.throw(_("Currency for {0} must be {1}").format(d.account, self.company_currency)) + + gl_entries.append( + self.get_gl_dict( + { + "account": d.account, + "account_currency": account_currency, + "against": self.party or self.paid_from, + "debit_in_account_currency": d.amount, + "debit_in_transaction_currency": d.amount / self.transaction_exchange_rate, + "debit": d.amount, + "cost_center": d.cost_center, + }, + item=d, ) + ) def get_party_account_for_taxes(self): if self.payment_type == "Receive": @@ -1420,6 +1687,14 @@ class PaymentEntry(AccountsController): elif self.payment_type in ("Pay", "Internal Transfer"): return self.paid_from + def get_value_in_transaction_currency(self, account_currency, gl_dict, field): + company_currency = erpnext.get_company_currency(self.company) + conversion_rate = self.target_exchange_rate + if self.paid_from_account_currency != company_currency: + conversion_rate = self.source_exchange_rate + + return flt(gl_dict.get(field, 0) / (conversion_rate or 1)) + def update_advance_paid(self): if self.payment_type in ("Receive", "Pay") and self.party: for d in self.get("references"): @@ -1594,6 +1869,380 @@ class PaymentEntry(AccountsController): return current_tax_fraction + def set_matched_unset_payment_requests_to_response(self): + """ + Find matched Payment Requests for those references which have no Payment Request set.\n + And set to `frappe.response` to show in the frontend for allocation. + """ + if not self.references: + return + + matched_payment_requests = get_matched_payment_request_of_references( + [row for row in self.references if not row.payment_request] + ) + + if not matched_payment_requests: + return + + frappe.response["matched_payment_requests"] = matched_payment_requests + + @frappe.whitelist() + def allocate_amount_to_references(self, paid_amount, paid_amount_change, allocate_payment_amount): + """ + Allocate `Allocated Amount` and `Payment Request` against `Reference` based on `Paid Amount` and `Outstanding Amount`.\n + :param paid_amount: Paid Amount / Received Amount. + :param paid_amount_change: Flag to check if `Paid Amount` is changed or not. + :param allocate_payment_amount: Flag to allocate amount or not. (Payment Request is also dependent on this flag) + """ + if not self.references: + return + + if not allocate_payment_amount: + for ref in self.references: + ref.allocated_amount = 0 + return + + # calculating outstanding amounts + precision = self.precision("paid_amount") + total_positive_outstanding_including_order = 0 + total_negative_outstanding = 0 + paid_amount -= sum(flt(d.amount, precision) for d in self.deductions) + + for ref in self.references: + reference_outstanding_amount = flt(ref.outstanding_amount) + abs_outstanding_amount = abs(reference_outstanding_amount) + + if reference_outstanding_amount > 0: + total_positive_outstanding_including_order += abs_outstanding_amount + else: + total_negative_outstanding += abs_outstanding_amount + + # calculating allocated outstanding amounts + allocated_negative_outstanding = 0 + allocated_positive_outstanding = 0 + + # checking party type and payment type + if (self.payment_type == "Receive" and self.party_type == "Customer") or ( + self.payment_type == "Pay" and self.party_type in ("Supplier", "Employee") + ): + if total_positive_outstanding_including_order > paid_amount: + remaining_outstanding = flt( + total_positive_outstanding_including_order - paid_amount, precision + ) + allocated_negative_outstanding = min(remaining_outstanding, total_negative_outstanding) + + allocated_positive_outstanding = paid_amount + allocated_negative_outstanding + + elif self.party_type in ("Supplier", "Customer"): + if paid_amount > total_negative_outstanding: + if total_negative_outstanding == 0: + frappe.msgprint( + _("Cannot {0} from {1} without any negative outstanding invoice").format( + self.payment_type, + self.party_type, + ) + ) + else: + frappe.msgprint( + _("Paid Amount cannot be greater than total negative outstanding amount {0}").format( + total_negative_outstanding + ) + ) + + return + + else: + allocated_positive_outstanding = flt(total_negative_outstanding - paid_amount, precision) + allocated_negative_outstanding = paid_amount + min( + total_positive_outstanding_including_order, allocated_positive_outstanding + ) + + # inner function to set `allocated_amount` to those row which have no PR + def _allocation_to_unset_pr_row( + row, outstanding_amount, allocated_positive_outstanding, allocated_negative_outstanding + ): + if outstanding_amount > 0 and allocated_positive_outstanding >= 0: + row.allocated_amount = min(allocated_positive_outstanding, outstanding_amount) + allocated_positive_outstanding = flt( + allocated_positive_outstanding - row.allocated_amount, precision + ) + elif outstanding_amount < 0 and allocated_negative_outstanding: + row.allocated_amount = min(allocated_negative_outstanding, abs(outstanding_amount)) * -1 + allocated_negative_outstanding = flt( + allocated_negative_outstanding - abs(row.allocated_amount), precision + ) + return allocated_positive_outstanding, allocated_negative_outstanding + + # allocate amount based on `paid_amount` is changed or not + if not paid_amount_change: + for ref in self.references: + allocated_positive_outstanding, allocated_negative_outstanding = _allocation_to_unset_pr_row( + ref, + ref.outstanding_amount, + allocated_positive_outstanding, + allocated_negative_outstanding, + ) + + allocate_open_payment_requests_to_references(self.references, self.precision("paid_amount")) + + else: + payment_request_outstanding_amounts = ( + get_payment_request_outstanding_set_in_references(self.references) or {} + ) + references_outstanding_amounts = get_references_outstanding_amount(self.references) or {} + remaining_references_allocated_amounts = references_outstanding_amounts.copy() + + # Re allocate amount to those references which have PR set (Higher priority) + for ref in self.references: + if not ref.payment_request: + continue + + # fetch outstanding_amount of `Reference` (Payment Term) and `Payment Request` to allocate new amount + key = (ref.reference_doctype, ref.reference_name, ref.get("payment_term")) + reference_outstanding_amount = references_outstanding_amounts[key] + pr_outstanding_amount = payment_request_outstanding_amounts[ref.payment_request] + + if reference_outstanding_amount > 0 and allocated_positive_outstanding >= 0: + # allocate amount according to outstanding amounts + outstanding_amounts = ( + allocated_positive_outstanding, + reference_outstanding_amount, + pr_outstanding_amount, + ) + + ref.allocated_amount = min(outstanding_amounts) + + # update amounts to track allocation + allocated_amount = ref.allocated_amount + allocated_positive_outstanding = flt( + allocated_positive_outstanding - allocated_amount, precision + ) + remaining_references_allocated_amounts[key] = flt( + remaining_references_allocated_amounts[key] - allocated_amount, precision + ) + payment_request_outstanding_amounts[ref.payment_request] = flt( + payment_request_outstanding_amounts[ref.payment_request] - allocated_amount, precision + ) + + elif reference_outstanding_amount < 0 and allocated_negative_outstanding: + # allocate amount according to outstanding amounts + outstanding_amounts = ( + allocated_negative_outstanding, + abs(reference_outstanding_amount), + pr_outstanding_amount, + ) + + ref.allocated_amount = min(outstanding_amounts) * -1 + + # update amounts to track allocation + allocated_amount = abs(ref.allocated_amount) + allocated_negative_outstanding = flt( + allocated_negative_outstanding - allocated_amount, precision + ) + remaining_references_allocated_amounts[key] += allocated_amount # negative amount + payment_request_outstanding_amounts[ref.payment_request] = flt( + payment_request_outstanding_amounts[ref.payment_request] - allocated_amount, precision + ) + # Re allocate amount to those references which have no PR (Lower priority) + for ref in self.references: + if ref.payment_request: + continue + + key = (ref.reference_doctype, ref.reference_name, ref.get("payment_term")) + reference_outstanding_amount = remaining_references_allocated_amounts[key] + + allocated_positive_outstanding, allocated_negative_outstanding = _allocation_to_unset_pr_row( + ref, + reference_outstanding_amount, + allocated_positive_outstanding, + allocated_negative_outstanding, + ) + + @frappe.whitelist() + def set_matched_payment_requests(self, matched_payment_requests): + """ + Set `Payment Request` against `Reference` based on `matched_payment_requests`.\n + :param matched_payment_requests: List of tuple of matched Payment Requests. + + --- + Example: [(reference_doctype, reference_name, allocated_amount, payment_request), ...] + """ + if not self.references or not matched_payment_requests: + return + + if isinstance(matched_payment_requests, str): + matched_payment_requests = json.loads(matched_payment_requests) + + # modify matched_payment_requests + # like (reference_doctype, reference_name, allocated_amount): payment_request + payment_requests = {} + + for row in matched_payment_requests: + key = tuple(row[:3]) + payment_requests[key] = row[3] + + for ref in self.references: + if ref.payment_request: + continue + + key = (ref.reference_doctype, ref.reference_name, ref.allocated_amount) + + if key in payment_requests: + ref.payment_request = payment_requests[key] + del payment_requests[key] # to avoid duplicate allocation + + +def get_matched_payment_request_of_references(references=None): + """ + Get those `Payment Requests` which are matched with `References`.\n + - Amount must be same. + - Only single `Payment Request` available for this amount. + + Example: [(reference_doctype, reference_name, allocated_amount, payment_request), ...] + """ + if not references: + return + + # to fetch matched rows + refs = { + (row.reference_doctype, row.reference_name, row.allocated_amount) + for row in references + if row.reference_doctype and row.reference_name and row.allocated_amount + } + + if not refs: + return + + PR = frappe.qb.DocType("Payment Request") + + # query to group by reference_doctype, reference_name, outstanding_amount + subquery = ( + frappe.qb.from_(PR) + .select( + PR.reference_doctype, + PR.reference_name, + PR.outstanding_amount.as_("allocated_amount"), + PR.name.as_("payment_request"), + Count("*").as_("count"), + ) + .where(Tuple(PR.reference_doctype, PR.reference_name, PR.outstanding_amount).isin(refs)) + .where(PR.status != "Paid") + .where(PR.docstatus == 1) + .groupby(PR.reference_doctype, PR.reference_name, PR.outstanding_amount) + ) + + # query to fetch matched rows which are single + matched_prs = ( + frappe.qb.from_(subquery) + .select( + subquery.reference_doctype, + subquery.reference_name, + subquery.allocated_amount, + subquery.payment_request, + ) + .where(subquery.count == 1) + .run() + ) + + return matched_prs if matched_prs else None + + +def get_references_outstanding_amount(references=None): + """ + Fetch accurate outstanding amount of `References`.\n + - If `Payment Term` is set, then fetch outstanding amount from `Payment Schedule`. + - If `Payment Term` is not set, then fetch outstanding amount from `References` it self. + + Example: {(reference_doctype, reference_name, payment_term): outstanding_amount, ...} + """ + if not references: + return + + refs_with_payment_term = get_outstanding_of_references_with_payment_term(references) or {} + refs_without_payment_term = get_outstanding_of_references_with_no_payment_term(references) or {} + + return {**refs_with_payment_term, **refs_without_payment_term} + + +def get_outstanding_of_references_with_payment_term(references=None): + """ + Fetch outstanding amount of `References` which have `Payment Term` set.\n + Example: {(reference_doctype, reference_name, payment_term): outstanding_amount, ...} + """ + if not references: + return + + refs = { + (row.reference_doctype, row.reference_name, row.payment_term) + for row in references + if row.reference_doctype and row.reference_name and row.payment_term + } + + if not refs: + return + + PS = frappe.qb.DocType("Payment Schedule") + + response = ( + frappe.qb.from_(PS) + .select(PS.parenttype, PS.parent, PS.payment_term, PS.outstanding) + .where(Tuple(PS.parenttype, PS.parent, PS.payment_term).isin(refs)) + ).run(as_dict=True) + + if not response: + return + + return {(row.parenttype, row.parent, row.payment_term): row.outstanding for row in response} + + +def get_outstanding_of_references_with_no_payment_term(references): + """ + Fetch outstanding amount of `References` which have no `Payment Term` set.\n + - Fetch outstanding amount from `References` it self. + + Note: `None` is used for allocation of `Payment Request` + Example: {(reference_doctype, reference_name, None): outstanding_amount, ...} + """ + if not references: + return + + outstanding_amounts = {} + + for ref in references: + if ref.payment_term: + continue + + key = (ref.reference_doctype, ref.reference_name, None) + + if key not in outstanding_amounts: + outstanding_amounts[key] = ref.outstanding_amount + + return outstanding_amounts + + +def get_payment_request_outstanding_set_in_references(references=None): + """ + Fetch outstanding amount of `Payment Request` which are set in `References`.\n + Example: {payment_request: outstanding_amount, ...} + """ + if not references: + return + + referenced_payment_requests = {row.payment_request for row in references if row.payment_request} + + if not referenced_payment_requests: + return + + PR = frappe.qb.DocType("Payment Request") + + response = ( + frappe.qb.from_(PR) + .select(PR.name, PR.outstanding_amount) + .where(PR.name.isin(referenced_payment_requests)) + ).run() + + return dict(response) if response else None + def validate_inclusive_tax(tax, doc): def _on_previous_row_error(row_range): @@ -1705,10 +2354,17 @@ def get_outstanding_reference_documents(args, validate=False): outstanding_invoices = [] negative_outstanding_invoices = [] + party_account = args.get("party_account") + + # get party account if advance account is set. if args.get("book_advance_payments_in_separate_party_account"): - party_account = get_party_account(args.get("party_type"), args.get("party"), args.get("company")) - else: - party_account = args.get("party_account") + accounts = get_party_account( + args.get("party_type"), args.get("party"), args.get("company"), include_advance=True + ) + advance_account = accounts[1] if len(accounts) >= 1 else None + + if party_account == advance_account: + party_account = accounts[0] if args.get("get_outstanding_invoices"): outstanding_invoices = get_outstanding_invoices( @@ -2046,7 +2702,9 @@ def get_party_details(company, party_type, party, date, cost_center=None): account_balance = get_balance_on(party_account, date, cost_center=cost_center) _party_name = "title" if party_type == "Shareholder" else party_type.lower() + "_name" party_name = frappe.db.get_value(party_type, party, _party_name) - party_balance = get_balance_on(party_type=party_type, party=party, cost_center=cost_center) + party_balance = get_balance_on( + party_type=party_type, party=party, company=company, cost_center=cost_center + ) if party_type in ["Customer", "Supplier"]: party_bank_account = get_party_bank_account(party_type, party) bank_account = get_default_company_bank_account(company, party_type, party) @@ -2224,6 +2882,8 @@ def get_payment_entry( party_type=None, payment_type=None, reference_date=None, + ignore_permissions=False, + created_from_payment_request=False, ): doc = frappe.get_doc(dt, dn) over_billing_allowance = frappe.db.get_single_value("Accounts Settings", "over_billing_allowance") @@ -2272,7 +2932,7 @@ def get_payment_entry( pe.party_type = party_type pe.party = doc.get(scrub(party_type)) pe.contact_person = doc.get("contact_person") - pe.contact_email = doc.get("contact_email") + complete_contact_details(pe) pe.ensure_supplier_is_not_blocked() pe.paid_from = party_account if payment_type == "Receive" else bank.account @@ -2284,6 +2944,9 @@ def get_payment_entry( pe.paid_amount = paid_amount pe.received_amount = received_amount pe.letter_head = doc.get("letter_head") + pe.bank_account = frappe.db.get_value( + "Bank Account", {"is_company_account": 1, "is_default": 1, "company": doc.company}, "name" + ) if dt in ["Purchase Order", "Sales Order", "Sales Invoice", "Purchase Invoice"]: pe.project = doc.get("project") or reduce( @@ -2292,7 +2955,7 @@ def get_payment_entry( if pe.party_type in ["Customer", "Supplier"]: bank_account = get_party_bank_account(pe.party_type, pe.party) - pe.set("bank_account", bank_account) + pe.set("party_bank_account", bank_account) pe.set_bank_account_data() # only Purchase Invoice can be blocked individually @@ -2359,9 +3022,6 @@ def get_payment_entry( update_accounting_dimensions(pe, doc) if party_account and bank: - pe.set_exchange_rate(ref_doc=doc) - pe.set_amounts() - if discount_amount: base_total_discount_loss = 0 if frappe.db.get_single_value("Accounts Settings", "book_tax_discount_loss"): @@ -2371,11 +3031,183 @@ def get_payment_entry( pe, doc, discount_amount, base_total_discount_loss, party_account_currency ) - pe.set_difference_amount() + pe.set_exchange_rate(ref_doc=doc) + pe.set_amounts() + + # If PE is created from PR directly, then no need to find open PRs for the references + if not created_from_payment_request: + allocate_open_payment_requests_to_references(pe.references, pe.precision("paid_amount")) return pe +def get_open_payment_requests_for_references(references=None): + """ + Fetch all unpaid Payment Requests for the references. \n + - Each reference can have multiple Payment Requests. \n + + Example: {("Sales Invoice", "SINV-00001"): {"PREQ-00001": 1000, "PREQ-00002": 2000}} + """ + if not references: + return + + refs = { + (row.reference_doctype, row.reference_name) + for row in references + if row.reference_doctype and row.reference_name and row.allocated_amount + } + + if not refs: + return + + PR = frappe.qb.DocType("Payment Request") + + response = ( + frappe.qb.from_(PR) + .select(PR.name, PR.reference_doctype, PR.reference_name, PR.outstanding_amount) + .where(Tuple(PR.reference_doctype, PR.reference_name).isin(list(refs))) + .where(PR.status != "Paid") + .where(PR.docstatus == 1) + .where(PR.outstanding_amount > 0) # to avoid old PRs with 0 outstanding amount + .orderby(Coalesce(PR.transaction_date, PR.creation), order=frappe.qb.asc) + ).run(as_dict=True) + + if not response: + return + + reference_payment_requests = {} + + for row in response: + key = (row.reference_doctype, row.reference_name) + + if key not in reference_payment_requests: + reference_payment_requests[key] = {row.name: row.outstanding_amount} + else: + reference_payment_requests[key][row.name] = row.outstanding_amount + + return reference_payment_requests + + +def allocate_open_payment_requests_to_references(references=None, precision=None): + """ + Allocate unpaid Payment Requests to the references. \n + --- + - Allocation based on below factors + - Reference Allocated Amount + - Reference Outstanding Amount (With Payment Terms or without Payment Terms) + - Reference Payment Request's outstanding amount + --- + - Allocation based on below scenarios + - Reference's Allocated Amount == Payment Request's Outstanding Amount + - Allocate the Payment Request to the reference + - This PR will not be allocated further + - Reference's Allocated Amount < Payment Request's Outstanding Amount + - Allocate the Payment Request to the reference + - Reduce the PR's outstanding amount by the allocated amount + - This PR can be allocated further + - Reference's Allocated Amount > Payment Request's Outstanding Amount + - Allocate the Payment Request to the reference + - Reduce Allocated Amount of the reference by the PR's outstanding amount + - Create a new row for the remaining amount until the Allocated Amount is 0 + - Allocate PR if available + --- + - Note: + - Priority is given to the first Payment Request of respective references. + - Single Reference can have multiple rows. + - With Payment Terms or without Payment Terms + - With Payment Request or without Payment Request + """ + if not references: + return + + # get all unpaid payment requests for the references + references_open_payment_requests = get_open_payment_requests_for_references(references) + + if not references_open_payment_requests: + return + + if not precision: + precision = references[0].precision("allocated_amount") + + # to manage new rows + row_number = 1 + MOVE_TO_NEXT_ROW = 1 + TO_SKIP_NEW_ROW = 2 + + while row_number <= len(references): + row = references[row_number - 1] + reference_key = (row.reference_doctype, row.reference_name) + + # update the idx to maintain the order + row.idx = row_number + + # unpaid payment requests for the reference + reference_payment_requests = references_open_payment_requests.get(reference_key) + + if not reference_payment_requests: + row_number += MOVE_TO_NEXT_ROW # to move to next reference row + continue + + # get the first payment request and its outstanding amount + payment_request, pr_outstanding_amount = next(iter(reference_payment_requests.items())) + allocated_amount = row.allocated_amount + + # allocate the payment request to the reference and PR's outstanding amount + row.payment_request = payment_request + + if pr_outstanding_amount == allocated_amount: + del reference_payment_requests[payment_request] + row_number += MOVE_TO_NEXT_ROW + + elif pr_outstanding_amount > allocated_amount: + # reduce the outstanding amount of the payment request + reference_payment_requests[payment_request] -= allocated_amount + row_number += MOVE_TO_NEXT_ROW + + else: + # split the reference row to allocate the remaining amount + del reference_payment_requests[payment_request] + row.allocated_amount = pr_outstanding_amount + allocated_amount = flt(allocated_amount - pr_outstanding_amount, precision) + + # set the remaining amount to the next row + while allocated_amount: + # create a new row for the remaining amount + new_row = frappe.copy_doc(row) + references.insert(row_number, new_row) + + # get the first payment request and its outstanding amount + payment_request, pr_outstanding_amount = next( + iter(reference_payment_requests.items()), (None, None) + ) + + # update new row + new_row.idx = row_number + 1 + new_row.payment_request = payment_request + new_row.allocated_amount = min( + pr_outstanding_amount if pr_outstanding_amount else allocated_amount, allocated_amount + ) + + if not payment_request or not pr_outstanding_amount: + row_number += TO_SKIP_NEW_ROW + break + + elif pr_outstanding_amount == allocated_amount: + del reference_payment_requests[payment_request] + row_number += TO_SKIP_NEW_ROW + break + + elif pr_outstanding_amount > allocated_amount: + reference_payment_requests[payment_request] -= allocated_amount + row_number += TO_SKIP_NEW_ROW + break + + else: + allocated_amount = flt(allocated_amount - pr_outstanding_amount, precision) + del reference_payment_requests[payment_request] + row_number += MOVE_TO_NEXT_ROW + + def update_accounting_dimensions(pe, doc): """ Updates accounting dimensions in Payment Entry based on the accounting dimensions in the reference document @@ -2547,13 +3379,14 @@ def set_pending_discount_loss(pe, doc, discount_amount, base_total_discount_loss book_tax_loss = frappe.db.get_single_value("Accounts Settings", "book_tax_discount_loss") account_type = "round_off_account" if book_tax_loss else "default_discount_account" - pe.set_gain_or_loss( - account_details={ + pe.append( + "deductions", + { "account": frappe.get_cached_value("Company", pe.company, account_type), "cost_center": pe.cost_center or frappe.get_cached_value("Company", pe.company, "cost_center"), "amount": discount_amount * positive_negative, - } + }, ) @@ -2596,13 +3429,14 @@ def add_income_discount_loss(pe, doc, total_discount_percent) -> float: """Add loss on income discount in base currency.""" precision = doc.precision("total") base_loss_on_income = doc.get("base_total") * (total_discount_percent / 100) + positive_negative = -1 if pe.payment_type == "Pay" else 1 pe.append( "deductions", { "account": frappe.get_cached_value("Company", pe.company, "default_discount_account"), "cost_center": pe.cost_center or frappe.get_cached_value("Company", pe.company, "cost_center"), - "amount": flt(base_loss_on_income, precision), + "amount": flt(base_loss_on_income, precision) * positive_negative, }, ) @@ -2614,6 +3448,7 @@ def add_tax_discount_loss(pe, doc, total_discount_percentage) -> float: tax_discount_loss = {} base_total_tax_loss = 0 precision = doc.precision("tax_amount_after_discount_amount", "taxes") + positive_negative = -1 if pe.payment_type == "Pay" else 1 # The same account head could be used more than once for tax in doc.get("taxes", []): @@ -2636,7 +3471,7 @@ def add_tax_discount_loss(pe, doc, total_discount_percentage) -> float: "account": account, "cost_center": pe.cost_center or frappe.get_cached_value("Company", pe.company, "cost_center"), - "amount": flt(loss, precision), + "amount": flt(loss, precision) * positive_negative, }, ) diff --git a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py index cc03dc260bb..1d0810852f0 100644 --- a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py +++ b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py @@ -49,6 +49,8 @@ class TestPaymentEntry(FrappeTestCase): pe.insert() pe.submit() + self.assertEqual(pe.paid_to_account_type, "Cash") + expected_gle = dict( (d[0], d) for d in [["Debtors - _TC", 0, 1000, so.name], ["_Test Cash - _TC", 1000.0, 0, None]] ) @@ -282,6 +284,48 @@ class TestPaymentEntry(FrappeTestCase): self.assertEqual(si.payment_schedule[0].paid_amount, 200.0) self.assertEqual(si.payment_schedule[1].paid_amount, 36.0) + def test_payment_entry_against_payment_terms_with_discount_on_pi(self): + pi = make_purchase_invoice(do_not_save=1) + create_payment_terms_template_with_discount() + pi.payment_terms_template = "Test Discount Template" + + frappe.db.set_value("Company", pi.company, "default_discount_account", "Write Off - _TC") + + pi.append( + "taxes", + { + "charge_type": "On Net Total", + "account_head": "_Test Account Service Tax - _TC", + "cost_center": "_Test Cost Center - _TC", + "description": "Service Tax", + "rate": 18, + }, + ) + pi.save() + pi.submit() + + frappe.db.set_single_value("Accounts Settings", "book_tax_discount_loss", 1) + pe_with_tax_loss = get_payment_entry("Purchase Invoice", pi.name, bank_account="_Test Cash - _TC") + + self.assertEqual(pe_with_tax_loss.references[0].payment_term, "30 Credit Days with 10% Discount") + self.assertEqual(pe_with_tax_loss.payment_type, "Pay") + self.assertEqual(pe_with_tax_loss.references[0].allocated_amount, 295.0) + self.assertEqual(pe_with_tax_loss.paid_amount, 265.5) + self.assertEqual(pe_with_tax_loss.difference_amount, 0) + self.assertEqual(pe_with_tax_loss.deductions[0].amount, -25.0) # Loss on Income + self.assertEqual(pe_with_tax_loss.deductions[1].amount, -4.5) # Loss on Tax + self.assertEqual(pe_with_tax_loss.deductions[1].account, "_Test Account Service Tax - _TC") + + frappe.db.set_single_value("Accounts Settings", "book_tax_discount_loss", 0) + pe = get_payment_entry("Purchase Invoice", pi.name, bank_account="_Test Cash - _TC") + + self.assertEqual(pe.references[0].payment_term, "30 Credit Days with 10% Discount") + self.assertEqual(pe.payment_type, "Pay") + self.assertEqual(pe.references[0].allocated_amount, 295.0) + self.assertEqual(pe.paid_amount, 265.5) + self.assertEqual(pe.deductions[0].amount, -29.5) + self.assertEqual(pe.difference_amount, 0) + def test_payment_entry_against_payment_terms_with_discount(self): si = create_sales_invoice(do_not_save=1, qty=1, rate=200) create_payment_terms_template_with_discount() @@ -479,16 +523,9 @@ class TestPaymentEntry(FrappeTestCase): self.assertEqual(pe.deductions[0].account, "Write Off - _TC") # Exchange loss - self.assertEqual(pe.difference_amount, 300.0) - - pe.append( - "deductions", - { - "account": "_Test Exchange Gain/Loss - _TC", - "cost_center": "_Test Cost Center - _TC", - "amount": 300.0, - }, - ) + self.assertEqual(pe.deductions[-1].amount, 300.0) + pe.deductions[-1].account = "_Test Exchange Gain/Loss - _TC" + pe.deductions[-1].cost_center = "_Test Cost Center - _TC" pe.insert() pe.submit() @@ -525,6 +562,8 @@ class TestPaymentEntry(FrappeTestCase): pe.insert() pe.submit() + self.assertEqual(pe.paid_from_account_type, "Bank") + outstanding_amount, status = frappe.db.get_value( "Purchase Invoice", pi.name, ["outstanding_amount", "status"] ) @@ -552,16 +591,10 @@ class TestPaymentEntry(FrappeTestCase): pe.reference_no = "1" pe.reference_date = "2016-01-01" - self.assertEqual(pe.difference_amount, 100) + self.assertEqual(pe.deductions[0].amount, 100) + pe.deductions[0].account = "_Test Exchange Gain/Loss - _TC" + pe.deductions[0].cost_center = "_Test Cost Center - _TC" - pe.append( - "deductions", - { - "account": "_Test Exchange Gain/Loss - _TC", - "cost_center": "_Test Cost Center - _TC", - "amount": 100, - }, - ) pe.insert() pe.submit() @@ -654,16 +687,9 @@ class TestPaymentEntry(FrappeTestCase): pe.set_exchange_rate() pe.set_amounts() - self.assertEqual(pe.difference_amount, 500) - - pe.append( - "deductions", - { - "account": "_Test Exchange Gain/Loss - _TC", - "cost_center": "_Test Cost Center - _TC", - "amount": 500, - }, - ) + self.assertEqual(pe.deductions[0].amount, 500) + pe.deductions[0].account = "_Test Exchange Gain/Loss - _TC" + pe.deductions[0].cost_center = "_Test Cost Center - _TC" pe.insert() pe.submit() @@ -956,6 +982,53 @@ class TestPaymentEntry(FrappeTestCase): self.assertEqual(flt(expected_party_balance), party_balance) self.assertEqual(flt(expected_party_account_balance, 2), flt(party_account_balance, 2)) + def test_gl_of_multi_currency_payment_transaction(self): + from erpnext.setup.doctype.currency_exchange.test_currency_exchange import ( + save_new_records, + test_records, + ) + + save_new_records(test_records) + paid_from = create_account( + parent_account="Current Liabilities - _TC", + account_name="_Test Cash USD", + company="_Test Company", + account_type="Cash", + account_currency="USD", + ) + payment_entry = create_payment_entry( + party="_Test Supplier USD", + paid_from=paid_from, + paid_to="_Test Payable USD - _TC", + paid_amount=100, + save=True, + ) + payment_entry.source_exchange_rate = 84.4 + payment_entry.target_exchange_rate = 84.4 + payment_entry.save() + payment_entry = payment_entry.submit() + gle = qb.DocType("GL Entry") + gl_entries = ( + qb.from_(gle) + .select( + gle.account, + gle.debit, + gle.credit, + gle.debit_in_account_currency, + gle.credit_in_account_currency, + gle.debit_in_transaction_currency, + gle.credit_in_transaction_currency, + ) + .orderby(gle.account) + .where(gle.voucher_no == payment_entry.name) + .run() + ) + expected_gl_entries = ( + (paid_from, 0.0, 8440.0, 0.0, 100.0, 0.0, 100.0), + ("_Test Payable USD - _TC", 8440.0, 0.0, 100.0, 0.0, 100.0, 0.0), + ) + self.assertEqual(gl_entries, expected_gl_entries) + def test_multi_currency_payment_entry_with_taxes(self): payment_entry = create_payment_entry( party="_Test Supplier USD", paid_to="_Test Payable USD - _TC", save=True @@ -1452,7 +1525,7 @@ class TestPaymentEntry(FrappeTestCase): parent_account="Current Liabilities - _TC", account_name="Advances Paid", company=company, - account_type="Liability", + account_type="Payable", ) frappe.db.set_value( @@ -1791,6 +1864,79 @@ class TestPaymentEntry(FrappeTestCase): # 'Is Opening' should always be 'No' for normal advance payments self.assertEqual(gl_with_opening_set, []) + @change_settings("Accounts Settings", {"delete_linked_ledger_entries": 1}) + def test_delete_linked_exchange_gain_loss_journal(self): + from erpnext.accounts.doctype.account.test_account import create_account + from erpnext.accounts.doctype.opening_invoice_creation_tool.test_opening_invoice_creation_tool import ( + make_customer, + ) + + debtors = create_account( + account_name="Debtors USD", + parent_account="Accounts Receivable - _TC", + company="_Test Company", + account_currency="USD", + account_type="Receivable", + ) + + # create a customer + customer = make_customer(customer="_Test Party USD") + cust_doc = frappe.get_doc("Customer", customer) + cust_doc.default_currency = "USD" + test_account_details = { + "company": "_Test Company", + "account": debtors, + } + cust_doc.append("accounts", test_account_details) + cust_doc.save() + + # create a sales invoice + si = create_sales_invoice( + customer=customer, + currency="USD", + conversion_rate=83.970000000, + debit_to=debtors, + do_not_save=1, + ) + si.party_account_currency = "USD" + si.save() + si.submit() + + # create a payment entry for the invoice + pe = get_payment_entry("Sales Invoice", si.name) + pe.reference_no = "1" + pe.reference_date = frappe.utils.nowdate() + pe.paid_amount = 100 + pe.source_exchange_rate = 90 + pe.append( + "deductions", + { + "account": "_Test Exchange Gain/Loss - _TC", + "cost_center": "_Test Cost Center - _TC", + "amount": 2710, + }, + ) + pe.save() + pe.submit() + + # check creation of journal entry + jv = frappe.get_all( + "Journal Entry Account", + {"reference_type": pe.doctype, "reference_name": pe.name, "docstatus": 1}, + pluck="parent", + ) + self.assertTrue(jv) + + # check cancellation of payment entry and journal entry + pe.cancel() + self.assertTrue(pe.docstatus == 2) + self.assertTrue(frappe.db.get_value("Journal Entry", {"name": jv[0]}, "docstatus") == 2) + + # check deletion of payment entry and journal entry + pe.delete() + self.assertRaises(frappe.DoesNotExistError, frappe.get_doc, pe.doctype, pe.name) + self.assertRaises(frappe.DoesNotExistError, frappe.get_doc, "Journal Entry", jv[0]) + def create_payment_entry(**args): payment_entry = frappe.new_doc("Payment Entry") diff --git a/erpnext/accounts/doctype/payment_entry_deduction/payment_entry_deduction.json b/erpnext/accounts/doctype/payment_entry_deduction/payment_entry_deduction.json index 1c31829f0ea..e47b51ae028 100644 --- a/erpnext/accounts/doctype/payment_entry_deduction/payment_entry_deduction.json +++ b/erpnext/accounts/doctype/payment_entry_deduction/payment_entry_deduction.json @@ -9,6 +9,7 @@ "cost_center", "amount", "column_break_2", + "is_exchange_gain_loss", "description" ], "fields": [ @@ -45,12 +46,20 @@ "fieldname": "description", "fieldtype": "Small Text", "label": "Description" + }, + { + "default": "0", + "depends_on": "eval:doc.is_exchange_gain_loss", + "fieldname": "is_exchange_gain_loss", + "fieldtype": "Check", + "label": "Is Exchange Gain / Loss?", + "read_only": 1 } ], "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2023-03-06 07:11:57.739619", + "modified": "2024-11-05 16:07:47.307971", "modified_by": "Administrator", "module": "Accounts", "name": "Payment Entry Deduction", diff --git a/erpnext/accounts/doctype/payment_entry_deduction/payment_entry_deduction.py b/erpnext/accounts/doctype/payment_entry_deduction/payment_entry_deduction.py index fc67c526b28..ae4134fc27a 100644 --- a/erpnext/accounts/doctype/payment_entry_deduction/payment_entry_deduction.py +++ b/erpnext/accounts/doctype/payment_entry_deduction/payment_entry_deduction.py @@ -18,6 +18,7 @@ class PaymentEntryDeduction(Document): amount: DF.Currency cost_center: DF.Link description: DF.SmallText | None + is_exchange_gain_loss: DF.Check parent: DF.Data parentfield: DF.Data parenttype: DF.Data diff --git a/erpnext/accounts/doctype/payment_entry_reference/payment_entry_reference.json b/erpnext/accounts/doctype/payment_entry_reference/payment_entry_reference.json index 23ed8252333..57e401275fd 100644 --- a/erpnext/accounts/doctype/payment_entry_reference/payment_entry_reference.json +++ b/erpnext/accounts/doctype/payment_entry_reference/payment_entry_reference.json @@ -10,15 +10,19 @@ "due_date", "bill_no", "payment_term", + "payment_term_outstanding", "account_type", "payment_type", + "reconcile_effect_on", "column_break_4", "total_amount", "outstanding_amount", "allocated_amount", "exchange_rate", "exchange_gain_loss", - "account" + "account", + "payment_request", + "payment_request_outstanding" ], "fields": [ { @@ -120,12 +124,39 @@ "fieldname": "payment_type", "fieldtype": "Data", "label": "Payment Type" + }, + { + "fieldname": "payment_request", + "fieldtype": "Link", + "label": "Payment Request", + "options": "Payment Request" + }, + { + "depends_on": "eval: doc.payment_term", + "fieldname": "payment_term_outstanding", + "fieldtype": "Float", + "label": "Payment Term Outstanding", + "read_only": 1 + }, + { + "depends_on": "eval: doc.payment_request && doc.payment_request_outstanding", + "fieldname": "payment_request_outstanding", + "fieldtype": "Float", + "is_virtual": 1, + "label": "Payment Request Outstanding", + "read_only": 1 + }, + { + "fieldname": "reconcile_effect_on", + "fieldtype": "Date", + "label": "Reconcile Effect On", + "read_only": 1 } ], "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2024-04-05 09:44:08.310593", + "modified": "2025-01-13 15:56:18.895082", "modified_by": "Administrator", "module": "Accounts", "name": "Payment Entry Reference", diff --git a/erpnext/accounts/doctype/payment_entry_reference/payment_entry_reference.py b/erpnext/accounts/doctype/payment_entry_reference/payment_entry_reference.py index 4a027b4ee32..1d869b92715 100644 --- a/erpnext/accounts/doctype/payment_entry_reference/payment_entry_reference.py +++ b/erpnext/accounts/doctype/payment_entry_reference/payment_entry_reference.py @@ -1,7 +1,7 @@ # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors # For license information, please see license.txt - +import frappe from frappe.model.document import Document @@ -25,11 +25,20 @@ class PaymentEntryReference(Document): parent: DF.Data parentfield: DF.Data parenttype: DF.Data + payment_request: DF.Link | None + payment_request_outstanding: DF.Float payment_term: DF.Link | None + payment_term_outstanding: DF.Float payment_type: DF.Data | None + reconcile_effect_on: DF.Date | None reference_doctype: DF.Link reference_name: DF.DynamicLink total_amount: DF.Float # end: auto-generated types - pass + @property + def payment_request_outstanding(self): + if not self.payment_request: + return + + return frappe.db.get_value("Payment Request", self.payment_request, "outstanding_amount") diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py index 8481fd8ffa4..72aa4905900 100644 --- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py +++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py @@ -153,10 +153,7 @@ class PaymentReconciliation(Document): self.add_payment_entries(non_reconciled_payments) def get_payment_entries(self): - if self.default_advance_account: - party_account = [self.receivable_payable_account, self.default_advance_account] - else: - party_account = [self.receivable_payable_account] + party_account = [self.receivable_payable_account] order_doctype = "Sales Order" if self.party_type == "Customer" else "Purchase Order" condition = frappe._dict( @@ -187,6 +184,7 @@ class PaymentReconciliation(Document): self.party, party_account, order_doctype, + default_advance_account=self.default_advance_account, against_all_orders=True, limit=self.payment_limit, condition=condition, @@ -211,12 +209,14 @@ class PaymentReconciliation(Document): if self.get("cost_center"): conditions.append(jea.cost_center == self.cost_center) - dr_or_cr = ( - "credit_in_account_currency" - if erpnext.get_party_account_type(self.party_type) == "Receivable" - else "debit_in_account_currency" - ) - conditions.append(jea[dr_or_cr].gt(0)) + account_type = erpnext.get_party_account_type(self.party_type) + + if account_type == "Receivable": + dr_or_cr = jea.credit_in_account_currency - jea.debit_in_account_currency + elif account_type == "Payable": + dr_or_cr = jea.debit_in_account_currency - jea.credit_in_account_currency + + conditions.append(dr_or_cr.gt(0)) if self.bank_cash_account: conditions.append(jea.against_account.like(f"%%{self.bank_cash_account}%%")) @@ -231,7 +231,7 @@ class PaymentReconciliation(Document): je.posting_date, je.remark.as_("remarks"), jea.name.as_("reference_row"), - jea[dr_or_cr].as_("amount"), + dr_or_cr.as_("amount"), jea.is_advance, jea.exchange_rate, jea.account_currency.as_("currency"), @@ -323,6 +323,7 @@ class PaymentReconciliation(Document): "posting_date": inv.posting_date, "currency": inv.currency, "cost_center": inv.cost_center, + "remarks": inv.remarks, } ) ) @@ -334,6 +335,7 @@ class PaymentReconciliation(Document): for payment in non_reconciled_payments: row = self.append("payments", {}) row.update(payment) + row.is_advance = payment.book_advance_payments_in_separate_party_account def get_invoice_entries(self): # Fetch JVs, Sales and Purchase Invoices for 'invoices' to reconcile against @@ -370,6 +372,10 @@ class PaymentReconciliation(Document): if self.invoice_limit: non_reconciled_invoices = non_reconciled_invoices[: self.invoice_limit] + non_reconciled_invoices = sorted( + non_reconciled_invoices, key=lambda k: k["posting_date"] or getdate(nowdate()) + ) + self.add_invoice_entries(non_reconciled_invoices) def add_invoice_entries(self, non_reconciled_invoices): @@ -419,6 +425,9 @@ class PaymentReconciliation(Document): def allocate_entries(self, args): self.validate_entries() + exc_gain_loss_posting_date = frappe.db.get_single_value( + "Accounts Settings", "exchange_gain_loss_posting_date", cache=True + ) invoice_exchange_map = self.get_invoice_exchange_map(args.get("invoices"), args.get("payments")) default_exchange_gain_loss_account = frappe.get_cached_value( "Company", self.company, "exchange_gain_loss_account" @@ -445,6 +454,11 @@ class PaymentReconciliation(Document): res.difference_account = default_exchange_gain_loss_account res.exchange_rate = inv.get("exchange_rate") res.update({"gain_loss_posting_date": pay.get("posting_date")}) + if not pay.get("is_advance"): + if exc_gain_loss_posting_date == "Invoice": + res.update({"gain_loss_posting_date": inv.get("invoice_date")}) + elif exc_gain_loss_posting_date == "Reconciliation Date": + res.update({"gain_loss_posting_date": nowdate()}) if pay.get("amount") == 0: entries.append(res) diff --git a/erpnext/accounts/doctype/payment_reconciliation/test_payment_reconciliation.py b/erpnext/accounts/doctype/payment_reconciliation/test_payment_reconciliation.py index 5aa411158a8..061bbf556fc 100644 --- a/erpnext/accounts/doctype/payment_reconciliation/test_payment_reconciliation.py +++ b/erpnext/accounts/doctype/payment_reconciliation/test_payment_reconciliation.py @@ -5,7 +5,8 @@ import frappe from frappe import qb from frappe.tests.utils import FrappeTestCase, change_settings -from frappe.utils import add_days, flt, nowdate +from frappe.utils import add_days, add_years, flt, getdate, nowdate, today +from frappe.utils.data import getdate as convert_to_date from erpnext import get_default_cost_center from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry @@ -13,6 +14,7 @@ from erpnext.accounts.doctype.payment_entry.test_payment_entry import create_pay from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice from erpnext.accounts.party import get_party_account +from erpnext.accounts.utils import get_fiscal_year from erpnext.buying.doctype.purchase_order.test_purchase_order import create_purchase_order from erpnext.stock.doctype.item.test_item import create_item @@ -631,6 +633,42 @@ class TestPaymentReconciliation(FrappeTestCase): self.assertEqual(len(pr.get("invoices")), 0) self.assertEqual(len(pr.get("payments")), 0) + def test_negative_debit_or_credit_journal_against_invoice(self): + transaction_date = nowdate() + amount = 100 + si = self.create_sales_invoice(qty=1, rate=amount, posting_date=transaction_date) + + # credit debtors account to record a payment + je = self.create_journal_entry(self.bank, self.debit_to, amount, transaction_date) + je.accounts[1].party_type = "Customer" + je.accounts[1].party = self.customer + je.accounts[1].credit_in_account_currency = 0 + je.accounts[1].debit_in_account_currency = -1 * amount + je.save() + je.submit() + + pr = self.create_payment_reconciliation() + + pr.get_unreconciled_entries() + invoices = [x.as_dict() for x in pr.get("invoices")] + payments = [x.as_dict() for x in pr.get("payments")] + pr.allocate_entries(frappe._dict({"invoices": invoices, "payments": payments})) + + # Difference amount should not be calculated for base currency accounts + for row in pr.allocation: + self.assertEqual(flt(row.get("difference_amount")), 0.0) + + pr.reconcile() + + # assert outstanding + si.reload() + self.assertEqual(si.status, "Paid") + self.assertEqual(si.outstanding_amount, 0) + + # check PR tool output + self.assertEqual(len(pr.get("invoices")), 0) + self.assertEqual(len(pr.get("payments")), 0) + def test_journal_against_journal(self): transaction_date = nowdate() sales = "Sales - _PR" @@ -953,6 +991,100 @@ class TestPaymentReconciliation(FrappeTestCase): frappe.db.get_value("Journal Entry", jea_parent.parent, "voucher_type"), "Exchange Gain Or Loss" ) + def test_difference_amount_via_negative_debit_or_credit_journal_entry(self): + # Make Sale Invoice + si = self.create_sales_invoice( + qty=1, rate=100, posting_date=nowdate(), do_not_save=True, do_not_submit=True + ) + si.customer = self.customer4 + si.currency = "EUR" + si.conversion_rate = 85 + si.debit_to = self.debtors_eur + si.save().submit() + + # Make payment using Journal Entry + je1 = self.create_journal_entry("HDFC - _PR", self.debtors_eur, 100, nowdate()) + je1.multi_currency = 1 + je1.accounts[0].exchange_rate = 1 + je1.accounts[0].credit_in_account_currency = -8000 + je1.accounts[0].credit = -8000 + je1.accounts[0].debit_in_account_currency = 0 + je1.accounts[0].debit = 0 + je1.accounts[1].party_type = "Customer" + je1.accounts[1].party = self.customer4 + je1.accounts[1].exchange_rate = 80 + je1.accounts[1].credit_in_account_currency = 100 + je1.accounts[1].credit = 8000 + je1.accounts[1].debit_in_account_currency = 0 + je1.accounts[1].debit = 0 + je1.save() + je1.submit() + + je2 = self.create_journal_entry("HDFC - _PR", self.debtors_eur, 200, nowdate()) + je2.multi_currency = 1 + je2.accounts[0].exchange_rate = 1 + je2.accounts[0].credit_in_account_currency = -16000 + je2.accounts[0].credit = -16000 + je2.accounts[0].debit_in_account_currency = 0 + je2.accounts[0].debit = 0 + je2.accounts[1].party_type = "Customer" + je2.accounts[1].party = self.customer4 + je2.accounts[1].exchange_rate = 80 + je2.accounts[1].credit_in_account_currency = 200 + je1.accounts[1].credit = 16000 + je1.accounts[1].debit_in_account_currency = 0 + je1.accounts[1].debit = 0 + je2.save() + je2.submit() + + pr = self.create_payment_reconciliation() + pr.party = self.customer4 + pr.receivable_payable_account = self.debtors_eur + pr.get_unreconciled_entries() + + self.assertEqual(len(pr.invoices), 1) + self.assertEqual(len(pr.payments), 2) + + # Test exact payment allocation + invoices = [x.as_dict() for x in pr.invoices] + payments = [pr.payments[0].as_dict()] + pr.allocate_entries(frappe._dict({"invoices": invoices, "payments": payments})) + + self.assertEqual(pr.allocation[0].allocated_amount, 100) + self.assertEqual(pr.allocation[0].difference_amount, -500) + + # Test partial payment allocation (with excess payment entry) + pr.set("allocation", []) + pr.get_unreconciled_entries() + invoices = [x.as_dict() for x in pr.invoices] + payments = [pr.payments[1].as_dict()] + pr.allocate_entries(frappe._dict({"invoices": invoices, "payments": payments})) + pr.allocation[0].difference_account = "Exchange Gain/Loss - _PR" + + self.assertEqual(pr.allocation[0].allocated_amount, 100) + self.assertEqual(pr.allocation[0].difference_amount, -500) + + # Check if difference journal entry gets generated for difference amount after reconciliation + pr.reconcile() + total_credit_amount = frappe.db.get_all( + "Journal Entry Account", + {"account": self.debtors_eur, "docstatus": 1, "reference_name": si.name}, + "sum(credit) as amount", + group_by="reference_name", + )[0].amount + + # total credit includes the exchange gain/loss amount + self.assertEqual(flt(total_credit_amount, 2), 8500) + + jea_parent = frappe.db.get_all( + "Journal Entry Account", + filters={"account": self.debtors_eur, "docstatus": 1, "reference_name": si.name, "credit": 500}, + fields=["parent"], + )[0] + self.assertEqual( + frappe.db.get_value("Journal Entry", jea_parent.parent, "voucher_type"), "Exchange Gain Or Loss" + ) + def test_difference_amount_via_payment_entry(self): # Make Sale Invoice si = self.create_sales_invoice( @@ -1540,7 +1672,7 @@ class TestPaymentReconciliation(FrappeTestCase): { "book_advance_payments_in_separate_party_account": 1, "default_advance_paid_account": self.advance_payable_account, - "reconcile_on_advance_payment_date": 1, + "reconciliation_takes_effect_on": "Advance Payment Date", }, ) @@ -1589,7 +1721,7 @@ class TestPaymentReconciliation(FrappeTestCase): { "book_advance_payments_in_separate_party_account": 1, "default_advance_received_account": self.advance_receivable_account, - "reconcile_on_advance_payment_date": 0, + "reconciliation_takes_effect_on": "Oldest Of Invoice Or Advance", }, ) amount = 200.0 @@ -1698,7 +1830,7 @@ class TestPaymentReconciliation(FrappeTestCase): { "book_advance_payments_in_separate_party_account": 1, "default_advance_paid_account": self.advance_payable_account, - "reconcile_on_advance_payment_date": 0, + "reconciliation_takes_effect_on": "Oldest Of Invoice Or Advance", }, ) amount = 200.0 @@ -1845,6 +1977,174 @@ class TestPaymentReconciliation(FrappeTestCase): self.assertEqual(len(pr.invoices), 1) self.assertEqual(len(pr.payments), 1) + def test_reconciliation_on_closed_period_payment(self): + # create backdated fiscal year + first_fy_start_date = frappe.db.get_value("Fiscal Year", {"disabled": 0}, "min(year_start_date)") + prev_fy_start_date = add_years(first_fy_start_date, -1) + prev_fy_end_date = add_days(first_fy_start_date, -1) + create_fiscal_year( + company=self.company, year_start_date=prev_fy_start_date, year_end_date=prev_fy_end_date + ) + + # make journal entry for previous year + je_1 = frappe.new_doc("Journal Entry") + je_1.posting_date = add_days(prev_fy_start_date, 20) + je_1.company = self.company + je_1.user_remark = "test" + je_1.set( + "accounts", + [ + { + "account": self.debit_to, + "cost_center": self.cost_center, + "party_type": "Customer", + "party": self.customer, + "debit_in_account_currency": 0, + "credit_in_account_currency": 1000, + }, + { + "account": self.bank, + "cost_center": self.sub_cc.name, + "credit_in_account_currency": 0, + "debit_in_account_currency": 500, + }, + { + "account": self.cash, + "cost_center": self.sub_cc.name, + "credit_in_account_currency": 0, + "debit_in_account_currency": 500, + }, + ], + ) + je_1.submit() + + # make period closing voucher + pcv = make_period_closing_voucher( + company=self.company, cost_center=self.cost_center, posting_date=prev_fy_end_date + ) + pcv.reload() + # check if period closing voucher is completed + self.assertEqual(pcv.gle_processing_status, "Completed") + + # make journal entry for active year + je_2 = self.create_journal_entry( + acc1=self.debit_to, acc2=self.income_account, amount=1000, posting_date=today() + ) + je_2.accounts[0].party_type = "Customer" + je_2.accounts[0].party = self.customer + je_2.submit() + + # process reconciliation on closed period payment + pr = self.create_payment_reconciliation(party_is_customer=True) + pr.from_invoice_date = pr.to_invoice_date = pr.from_payment_date = pr.to_payment_date = None + pr.get_unreconciled_entries() + invoices = [invoice.as_dict() for invoice in pr.invoices] + payments = [payment.as_dict() for payment in pr.payments] + pr.allocate_entries(frappe._dict({"invoices": invoices, "payments": payments})) + pr.reconcile() + je_1.reload() + je_2.reload() + + # check whether the payment reconciliation is done on the closed period + self.assertEqual(pr.get("invoices"), []) + self.assertEqual(pr.get("payments"), []) + + def test_advance_reconciliation_effect_on_same_date(self): + frappe.db.set_value( + "Company", + self.company, + { + "book_advance_payments_in_separate_party_account": 1, + "default_advance_received_account": self.advance_receivable_account, + "reconciliation_takes_effect_on": "Reconciliation Date", + }, + ) + inv_date = convert_to_date(add_days(nowdate(), -1)) + adv_date = convert_to_date(add_days(nowdate(), -2)) + + si = self.create_sales_invoice(posting_date=inv_date, qty=1, rate=200) + pe = self.create_payment_entry(posting_date=adv_date, amount=80).save().submit() + + pr = self.create_payment_reconciliation() + pr.from_invoice_date = add_days(nowdate(), -1) + pr.to_invoice_date = nowdate() + pr.from_payment_date = add_days(nowdate(), -2) + pr.to_payment_date = nowdate() + pr.default_advance_account = self.advance_receivable_account + + # reconcile multiple payments against invoice + pr.get_unreconciled_entries() + invoices = [x.as_dict() for x in pr.get("invoices")] + payments = [x.as_dict() for x in pr.get("payments")] + pr.allocate_entries(frappe._dict({"invoices": invoices, "payments": payments})) + + # Difference amount should not be calculated for base currency accounts + for row in pr.allocation: + self.assertEqual(flt(row.get("difference_amount")), 0.0) + + pr.reconcile() + + si.reload() + self.assertEqual(si.status, "Partly Paid") + # check PR tool output post reconciliation + self.assertEqual(len(pr.get("invoices")), 1) + self.assertEqual(pr.get("invoices")[0].get("outstanding_amount"), 120) + self.assertEqual(pr.get("payments"), []) + + # Assert Ledger Entries + gl_entries = frappe.db.get_all( + "GL Entry", + filters={"voucher_no": pe.name}, + fields=["account", "posting_date", "voucher_no", "against_voucher", "debit", "credit"], + order_by="account, against_voucher, debit", + ) + + expected_gl = [ + { + "account": self.advance_receivable_account, + "posting_date": adv_date, + "voucher_no": pe.name, + "against_voucher": pe.name, + "debit": 0.0, + "credit": 80.0, + }, + { + "account": self.advance_receivable_account, + "posting_date": convert_to_date(nowdate()), + "voucher_no": pe.name, + "against_voucher": pe.name, + "debit": 80.0, + "credit": 0.0, + }, + { + "account": self.debit_to, + "posting_date": convert_to_date(nowdate()), + "voucher_no": pe.name, + "against_voucher": si.name, + "debit": 0.0, + "credit": 80.0, + }, + { + "account": self.bank, + "posting_date": adv_date, + "voucher_no": pe.name, + "against_voucher": None, + "debit": 80.0, + "credit": 0.0, + }, + ] + + self.assertEqual(expected_gl, gl_entries) + + # cancel PE + pe.reload() + pe.cancel() + pr.get_unreconciled_entries() + # check PR tool output + self.assertEqual(len(pr.get("invoices")), 1) + self.assertEqual(len(pr.get("payments")), 0) + self.assertEqual(pr.get("invoices")[0].get("outstanding_amount"), 200) + def make_customer(customer_name, currency=None): if not frappe.db.exists("Customer", customer_name): @@ -1872,3 +2172,63 @@ def make_supplier(supplier_name, currency=None): return supplier.name else: return supplier_name + + +def create_fiscal_year(company, year_start_date, year_end_date): + fy_docname = frappe.db.exists( + "Fiscal Year", {"year_start_date": year_start_date, "year_end_date": year_end_date} + ) + if not fy_docname: + fy_doc = frappe.get_doc( + { + "doctype": "Fiscal Year", + "year": f"{getdate(year_start_date).year}-{getdate(year_end_date).year}", + "year_start_date": year_start_date, + "year_end_date": year_end_date, + "companies": [{"company": company}], + } + ).save() + return fy_doc + else: + fy_doc = frappe.get_doc("Fiscal Year", fy_docname) + if not frappe.db.exists("Fiscal Year Company", {"parent": fy_docname, "company": company}): + fy_doc.append("companies", {"company": company}) + fy_doc.save() + return fy_doc + + +def make_period_closing_voucher(company, cost_center, posting_date=None, submit=True): + from erpnext.accounts.doctype.account.test_account import create_account + + parent_account = frappe.db.get_value( + "Account", {"company": company, "account_name": "Current Liabilities", "is_group": 1}, "name" + ) + surplus_account = create_account( + account_name="Reserve and Surplus", + is_group=0, + company=company, + root_type="Liability", + report_type="Balance Sheet", + account_currency="INR", + parent_account=parent_account, + doctype="Account", + ) + fy = get_fiscal_year(posting_date, company=company) + pcv = frappe.get_doc( + { + "doctype": "Period Closing Voucher", + "transaction_date": posting_date or today(), + "period_start_date": fy[1], + "period_end_date": fy[2], + "company": company, + "fiscal_year": fy[0], + "cost_center": cost_center, + "closing_account_head": surplus_account, + "remarks": "test", + } + ) + pcv.insert() + if submit: + pcv.submit() + + return pcv diff --git a/erpnext/accounts/doctype/payment_reconciliation_payment/payment_reconciliation_payment.json b/erpnext/accounts/doctype/payment_reconciliation_payment/payment_reconciliation_payment.json index d199236ae99..010e93558cf 100644 --- a/erpnext/accounts/doctype/payment_reconciliation_payment/payment_reconciliation_payment.json +++ b/erpnext/accounts/doctype/payment_reconciliation_payment/payment_reconciliation_payment.json @@ -14,7 +14,7 @@ "amount", "difference_amount", "sec_break1", - "remark", + "remarks", "currency", "exchange_rate", "cost_center" @@ -74,12 +74,6 @@ "fieldname": "sec_break1", "fieldtype": "Section Break" }, - { - "fieldname": "remark", - "fieldtype": "Small Text", - "label": "Remark", - "read_only": 1 - }, { "fieldname": "currency", "fieldtype": "Link", @@ -105,12 +99,18 @@ "fieldtype": "Link", "label": "Cost Center", "options": "Cost Center" + }, + { + "fieldname": "remarks", + "fieldtype": "Small Text", + "label": "Remarks", + "read_only": 1 } ], "is_virtual": 1, "istable": 1, "links": [], - "modified": "2023-11-17 17:33:34.818530", + "modified": "2024-10-29 16:24:43.021230", "modified_by": "Administrator", "module": "Accounts", "name": "Payment Reconciliation Payment", diff --git a/erpnext/accounts/doctype/payment_reconciliation_payment/payment_reconciliation_payment.py b/erpnext/accounts/doctype/payment_reconciliation_payment/payment_reconciliation_payment.py index 4ab80ecaafe..49c17eae41b 100644 --- a/erpnext/accounts/doctype/payment_reconciliation_payment/payment_reconciliation_payment.py +++ b/erpnext/accounts/doctype/payment_reconciliation_payment/payment_reconciliation_payment.py @@ -27,7 +27,7 @@ class PaymentReconciliationPayment(Document): reference_name: DF.DynamicLink | None reference_row: DF.Data | None reference_type: DF.Link | None - remark: DF.SmallText | None + remarks: DF.SmallText | None # end: auto-generated types @staticmethod diff --git a/erpnext/accounts/doctype/payment_request/payment_request.js b/erpnext/accounts/doctype/payment_request/payment_request.js index e45aa512fe8..50f96a4e2b6 100644 --- a/erpnext/accounts/doctype/payment_request/payment_request.js +++ b/erpnext/accounts/doctype/payment_request/payment_request.js @@ -48,8 +48,8 @@ frappe.ui.form.on("Payment Request", "refresh", function (frm) { } if ( - (!frm.doc.payment_gateway_account || frm.doc.payment_request_type == "Outward") && - frm.doc.status == "Initiated" + frm.doc.payment_request_type == "Outward" && + ["Initiated", "Partially Paid"].includes(frm.doc.status) ) { frm.add_custom_button(__("Create Payment Entry"), function () { frappe.call({ diff --git a/erpnext/accounts/doctype/payment_request/payment_request.json b/erpnext/accounts/doctype/payment_request/payment_request.json index d0651f74bdf..5a19a080484 100644 --- a/erpnext/accounts/doctype/payment_request/payment_request.json +++ b/erpnext/accounts/doctype/payment_request/payment_request.json @@ -14,14 +14,17 @@ "party_details", "party_type", "party", + "party_name", "column_break_4", "reference_doctype", "reference_name", "transaction_details", "grand_total", + "currency", "is_a_subscription", "column_break_18", - "currency", + "outstanding_amount", + "party_account_currency", "subscription_section", "subscription_plans", "bank_account_details", @@ -55,7 +58,9 @@ "payment_account", "payment_channel", "payment_order", - "amended_from" + "amended_from", + "column_break_iiuv", + "phone_number" ], "fields": [ { @@ -69,6 +74,7 @@ { "fieldname": "transaction_date", "fieldtype": "Date", + "in_preview": 1, "label": "Transaction Date" }, { @@ -133,7 +139,8 @@ "no_copy": 1, "options": "reference_doctype", "print_hide": 1, - "read_only": 1 + "read_only": 1, + "search_index": 1 }, { "fieldname": "transaction_details", @@ -141,12 +148,14 @@ "label": "Transaction Details" }, { - "description": "Amount in customer's currency", + "description": "Amount in transaction currency", "fieldname": "grand_total", "fieldtype": "Currency", + "in_preview": 1, "label": "Amount", "non_negative": 1, - "options": "currency" + "options": "currency", + "reqd": 1 }, { "default": "0", @@ -369,6 +378,7 @@ "read_only": 1 }, { + "depends_on": "eval: doc.payment_channel==\"Phone\"", "fetch_from": "payment_gateway_account.payment_channel", "fieldname": "payment_channel", "fieldtype": "Select", @@ -392,19 +402,52 @@ "print_hide": 1, "read_only": 1 }, + { + "depends_on": "eval: doc.docstatus === 1", + "description": "Amount in party's bank account currency", + "fieldname": "outstanding_amount", + "fieldtype": "Currency", + "in_preview": 1, + "label": "Outstanding Amount", + "non_negative": 1, + "options": "party_account_currency", + "read_only": 1 + }, { "fieldname": "company", "fieldtype": "Link", "label": "Company", "options": "Company", "read_only": 1 + }, + { + "fieldname": "party_account_currency", + "fieldtype": "Link", + "label": "Party Account Currency", + "options": "Currency", + "read_only": 1 + }, + { + "fieldname": "party_name", + "fieldtype": "Data", + "label": "Party Name", + "read_only": 1 + }, + { + "fieldname": "column_break_iiuv", + "fieldtype": "Column Break" + }, + { + "fieldname": "phone_number", + "fieldtype": "Data", + "label": "Phone Number" } ], "in_create": 1, "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2024-08-07 16:39:54.288002", + "modified": "2024-12-27 21:29:10.361894", "modified_by": "Administrator", "module": "Accounts", "name": "Payment Request", @@ -439,7 +482,8 @@ "write": 1 } ], + "show_preview_popup": 1, "sort_field": "modified", "sort_order": "DESC", "states": [] -} +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/payment_request/payment_request.py b/erpnext/accounts/doctype/payment_request/payment_request.py index f368c2a9613..0027f0aa8be 100644 --- a/erpnext/accounts/doctype/payment_request/payment_request.py +++ b/erpnext/accounts/doctype/payment_request/payment_request.py @@ -3,14 +3,15 @@ import json import frappe from frappe import _ from frappe.model.document import Document +from frappe.query_builder.functions import Sum from frappe.utils import flt, nowdate from frappe.utils.background_jobs import enqueue +from erpnext import get_company_currency from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import ( get_accounting_dimensions, ) from erpnext.accounts.doctype.payment_entry.payment_entry import ( - get_company_defaults, get_payment_entry, ) from erpnext.accounts.doctype.subscription_plan.subscription_plan import get_plan_rate @@ -18,6 +19,15 @@ from erpnext.accounts.party import get_party_account, get_party_bank_account from erpnext.accounts.utils import get_account_currency, get_currency_precision from erpnext.utilities import payment_app_import_guard +ALLOWED_DOCTYPES_FOR_PAYMENT_REQUEST = [ + "Sales Order", + "Purchase Order", + "Sales Invoice", + "Purchase Invoice", + "POS Invoice", + "Fees", +] + def _get_payment_gateway_controller(*args, **kwargs): with payment_app_import_guard(): @@ -45,6 +55,7 @@ class PaymentRequest(Document): bank_account: DF.Link | None bank_account_no: DF.ReadOnly | None branch_code: DF.ReadOnly | None + company: DF.Link | None cost_center: DF.Link | None currency: DF.Link | None email_to: DF.Data | None @@ -56,16 +67,19 @@ class PaymentRequest(Document): mode_of_payment: DF.Link | None mute_email: DF.Check naming_series: DF.Literal["ACC-PRQ-.YYYY.-"] + outstanding_amount: DF.Currency party: DF.DynamicLink | None + party_account_currency: DF.Link | None + party_name: DF.Data | None party_type: DF.Link | None payment_account: DF.ReadOnly | None - payment_channel: DF.Literal["", "Email", "Phone"] + payment_channel: DF.Literal["", "Email", "Phone", "Other"] payment_gateway: DF.ReadOnly | None payment_gateway_account: DF.Link | None payment_order: DF.Link | None payment_request_type: DF.Literal["Outward", "Inward"] payment_url: DF.Data | None - print_format: DF.Literal + print_format: DF.Literal[None] project: DF.Link | None reference_doctype: DF.Link | None reference_name: DF.DynamicLink | None @@ -84,7 +98,6 @@ class PaymentRequest(Document): subscription_plans: DF.Table[SubscriptionPlanDetail] swift_number: DF.ReadOnly | None transaction_date: DF.Date | None - company: DF.Link | None # end: auto-generated types def validate(self): @@ -100,13 +113,19 @@ class PaymentRequest(Document): frappe.throw(_("To create a Payment Request reference document is required")) def validate_payment_request_amount(self): - existing_payment_request_amount = flt( - get_existing_payment_request_amount(self.reference_doctype, self.reference_name) - ) + if self.grand_total == 0: + frappe.throw( + _("{0} cannot be zero").format(self.get_label_from_fieldname("grand_total")), + title=_("Invalid Amount"), + ) ref_doc = frappe.get_doc(self.reference_doctype, self.reference_name) if not hasattr(ref_doc, "order_type") or ref_doc.order_type != "Shopping Cart": ref_amount = get_amount(ref_doc, self.payment_account) + if not ref_amount: + frappe.throw(_("Payment Entry is already created")) + + existing_payment_request_amount = flt(get_existing_payment_request_amount(ref_doc)) if existing_payment_request_amount + flt(self.grand_total) > ref_amount: frappe.throw( @@ -147,6 +166,28 @@ class PaymentRequest(Document): ).format(self.grand_total, amount) ) + def before_submit(self): + if ( + self.currency != self.party_account_currency + and self.party_account_currency == get_company_currency(self.company) + ): + # set outstanding amount in party account currency + invoice = frappe.get_value( + self.reference_doctype, + self.reference_name, + ["rounded_total", "grand_total", "base_rounded_total", "base_grand_total"], + as_dict=1, + ) + grand_total = invoice.get("rounded_total") or invoice.get("grand_total") + base_grand_total = invoice.get("base_rounded_total") or invoice.get("base_grand_total") + self.outstanding_amount = flt( + self.grand_total / grand_total * base_grand_total, + self.precision("outstanding_amount"), + ) + + else: + self.outstanding_amount = self.grand_total + def on_submit(self): if self.payment_request_type == "Outward": self.db_set("status", "Initiated") @@ -182,6 +223,7 @@ class PaymentRequest(Document): sender=self.email_to, currency=self.currency, payment_gateway=self.payment_gateway, + phone_number=self.phone_number, ) controller.validate_transaction_currency(self.currency) @@ -262,20 +304,21 @@ class PaymentRequest(Document): return controller.get_payment_url( **{ "amount": flt(self.grand_total, self.precision("grand_total")), - "title": data.company.encode("utf-8"), - "description": self.subject.encode("utf-8"), + "title": data.company, + "description": self.subject, "reference_doctype": "Payment Request", "reference_docname": self.name, "payer_email": self.email_to or frappe.session.user, - "payer_name": frappe.safe_encode(data.customer_name), + "payer_name": data.customer_name, "order_id": self.name, "currency": self.currency, + "payment_gateway": self.payment_gateway, } ) def set_as_paid(self): if self.payment_channel == "Phone": - self.db_set("status", "Paid") + self.db_set({"status": "Paid", "outstanding_amount": 0}) else: payment_entry = self.create_payment_entry() @@ -296,26 +339,32 @@ class PaymentRequest(Document): else: party_account = get_party_account("Customer", ref_doc.get("customer"), ref_doc.company) - party_account_currency = ref_doc.get("party_account_currency") or get_account_currency(party_account) + party_account_currency = ( + self.get("party_account_currency") + or ref_doc.get("party_account_currency") + or get_account_currency(party_account) + ) + + party_amount = bank_amount = self.outstanding_amount - bank_amount = self.grand_total if party_account_currency == ref_doc.company_currency and party_account_currency != self.currency: - party_amount = ref_doc.get("base_rounded_total") or ref_doc.get("base_grand_total") - else: - party_amount = self.grand_total + exchange_rate = ref_doc.get("conversion_rate") + bank_amount = flt(self.outstanding_amount / exchange_rate, self.precision("grand_total")) + # outstanding amount is already in Part's account currency payment_entry = get_payment_entry( self.reference_doctype, self.reference_name, party_amount=party_amount, bank_account=self.payment_account, bank_amount=bank_amount, + created_from_payment_request=True, ) payment_entry.update( { "mode_of_payment": self.mode_of_payment, - "reference_no": self.name, + "reference_no": self.name, # to prevent validation error "reference_date": nowdate(), "remarks": "Payment Entry against {} {} via Payment Request {}".format( self.reference_doctype, self.reference_name, self.name @@ -323,6 +372,9 @@ class PaymentRequest(Document): } ) + # Allocate payment_request for each reference in payment_entry (Payment Term can splits the row) + self._allocate_payment_request_to_pe_references(references=payment_entry.references) + # Update dimensions payment_entry.update( { @@ -331,14 +383,6 @@ class PaymentRequest(Document): } ) - if party_account_currency == ref_doc.company_currency and party_account_currency != self.currency: - amount = payment_entry.base_paid_amount - else: - amount = self.grand_total - - payment_entry.received_amount = amount - payment_entry.get("references")[0].allocated_amount = amount - # Update 'Paid Amount' on Forex transactions if self.currency != ref_doc.company_currency: if ( @@ -429,6 +473,62 @@ class PaymentRequest(Document): return create_stripe_subscription(gateway_controller, data) + def _allocate_payment_request_to_pe_references(self, references): + """ + Allocate the Payment Request to the Payment Entry references based on\n + - Allocated Amount. + - Outstanding Amount of Payment Request.\n + Payment Request is doc itself and references are the rows of Payment Entry. + """ + if len(references) == 1: + references[0].payment_request = self.name + return + + precision = references[0].precision("allocated_amount") + outstanding_amount = self.outstanding_amount + + # to manage rows + row_number = 1 + MOVE_TO_NEXT_ROW = 1 + TO_SKIP_NEW_ROW = 2 + NEW_ROW_ADDED = False + + while row_number <= len(references): + row = references[row_number - 1] + + # update the idx to maintain the order + row.idx = row_number + + if outstanding_amount == 0: + if not NEW_ROW_ADDED: + break + + row_number += MOVE_TO_NEXT_ROW + continue + + # allocate the payment request to the row + row.payment_request = self.name + + if row.allocated_amount <= outstanding_amount: + outstanding_amount = flt(outstanding_amount - row.allocated_amount, precision) + row_number += MOVE_TO_NEXT_ROW + else: + remaining_allocated_amount = flt(row.allocated_amount - outstanding_amount, precision) + row.allocated_amount = outstanding_amount + outstanding_amount = 0 + + # create a new row without PR for remaining unallocated amount + new_row = frappe.copy_doc(row) + references.insert(row_number, new_row) + + # update new row + new_row.idx = row_number + 1 + new_row.payment_request = None + new_row.allocated_amount = remaining_allocated_amount + + NEW_ROW_ADDED = True + row_number += TO_SKIP_NEW_ROW + @frappe.whitelist(allow_guest=True) def make_payment_request(**args): @@ -436,10 +536,15 @@ def make_payment_request(**args): args = frappe._dict(args) + if args.dt not in ALLOWED_DOCTYPES_FOR_PAYMENT_REQUEST: + frappe.throw(_("Payment Requests cannot be created against: {0}").format(frappe.bold(args.dt))) + ref_doc = frappe.get_doc(args.dt, args.dn) gateway_account = get_gateway_details(args) or frappe._dict() grand_total = get_amount(ref_doc, gateway_account.get("payment_account")) + if not grand_total: + frappe.throw(_("Payment Entry is already created")) if args.loyalty_points and args.dt == "Sales Order": from erpnext.accounts.doctype.loyalty_program.loyalty_program import validate_loyalty_points @@ -450,26 +555,44 @@ def make_payment_request(**args): frappe.db.set_value("Sales Order", args.dn, "loyalty_amount", loyalty_amount, update_modified=False) grand_total = grand_total - loyalty_amount - bank_account = ( - get_party_bank_account(args.get("party_type"), args.get("party")) if args.get("party_type") else "" - ) + # fetches existing payment request `grand_total` amount + existing_payment_request_amount = get_existing_payment_request_amount(ref_doc) + + def validate_and_calculate_grand_total(grand_total, existing_payment_request_amount): + grand_total -= existing_payment_request_amount + if not grand_total: + frappe.throw(_("Payment Request is already created")) + return grand_total + + if existing_payment_request_amount: + if args.order_type == "Shopping Cart": + # If Payment Request is in an advanced stage, then create for remaining amount. + if get_existing_payment_request_amount( + ref_doc, ["Initiated", "Partially Paid", "Payment Ordered", "Paid"] + ): + grand_total = validate_and_calculate_grand_total(grand_total, existing_payment_request_amount) + else: + # If PR's are processed, cancel all of them. + cancel_old_payment_requests(ref_doc.doctype, ref_doc.name) + else: + grand_total = validate_and_calculate_grand_total(grand_total, existing_payment_request_amount) draft_payment_request = frappe.db.get_value( "Payment Request", - {"reference_doctype": args.dt, "reference_name": args.dn, "docstatus": 0}, + {"reference_doctype": ref_doc.doctype, "reference_name": ref_doc.name, "docstatus": 0}, ) - existing_payment_request_amount = get_existing_payment_request_amount(args.dt, args.dn) - - if existing_payment_request_amount: - grand_total -= existing_payment_request_amount - if draft_payment_request: frappe.db.set_value( "Payment Request", draft_payment_request, "grand_total", grand_total, update_modified=False ) pr = frappe.get_doc("Payment Request", draft_payment_request) else: + bank_account = ( + get_party_bank_account(args.get("party_type"), args.get("party")) + if args.get("party_type") + else "" + ) pr = frappe.new_doc("Payment Request") if not args.get("payment_request_type"): @@ -477,6 +600,13 @@ def make_payment_request(**args): "Outward" if args.get("dt") in ["Purchase Order", "Purchase Invoice"] else "Inward" ) + party_type = args.get("party_type") or "Customer" + party_account_currency = ref_doc.get("party_account_currency") + + if not party_account_currency: + party_account = get_party_account(party_type, ref_doc.get(party_type.lower()), ref_doc.company) + party_account_currency = get_account_currency(party_account) + pr.update( { "payment_gateway_account": gateway_account.get("name"), @@ -485,6 +615,7 @@ def make_payment_request(**args): "payment_channel": gateway_account.get("payment_channel"), "payment_request_type": args.get("payment_request_type"), "currency": ref_doc.currency, + "party_account_currency": party_account_currency, "grand_total": grand_total, "mode_of_payment": args.mode_of_payment, "email_to": args.recipient_id or ref_doc.owner, @@ -493,9 +624,11 @@ def make_payment_request(**args): "reference_doctype": args.dt, "reference_name": args.dn, "company": ref_doc.get("company"), - "party_type": args.get("party_type") or "Customer", + "party_type": party_type, "party": args.get("party") or ref_doc.get("customer"), "bank_account": bank_account, + "party_name": args.get("party_name") or ref_doc.get("customer_name"), + "phone_number": args.get("phone_number") if args.get("phone_number") else None, } ) @@ -516,6 +649,8 @@ def make_payment_request(**args): if frappe.db.get_single_value("Accounts Settings", "create_pr_in_draft_status", cache=True): pr.insert(ignore_permissions=True) if args.submit_doc: + if pr.get("__unsaved"): + pr.insert(ignore_permissions=True) pr.submit() if args.order_type == "Shopping Cart": @@ -531,20 +666,35 @@ def make_payment_request(**args): def get_amount(ref_doc, payment_account=None): """get amount based on doctype""" + grand_total = 0 + dt = ref_doc.doctype if dt in ["Sales Order", "Purchase Order"]: - grand_total = flt(ref_doc.rounded_total) or flt(ref_doc.grand_total) + grand_total = (flt(ref_doc.rounded_total) or flt(ref_doc.grand_total)) - ref_doc.advance_paid elif dt in ["Sales Invoice", "Purchase Invoice"]: - if not ref_doc.get("is_pos"): + if ( + dt == "Sales Invoice" + and ref_doc.is_pos + and ref_doc.payments + and any( + [ + payment.type == "Phone" and payment.account == payment_account + for payment in ref_doc.payments + ] + ) + ): + grand_total = sum( + [ + payment.amount + for payment in ref_doc.payments + if payment.type == "Phone" and payment.account == payment_account + ] + ) + else: if ref_doc.party_account_currency == ref_doc.currency: - grand_total = flt(ref_doc.grand_total) + grand_total = flt(ref_doc.outstanding_amount) else: - grand_total = flt(ref_doc.base_grand_total) / ref_doc.conversion_rate - elif dt == "Sales Invoice": - for pay in ref_doc.payments: - if pay.type == "Phone" and pay.account == payment_account: - grand_total = pay.amount - break + grand_total = flt(flt(ref_doc.outstanding_amount) / ref_doc.conversion_rate) elif dt == "POS Invoice": for pay in ref_doc.payments: if pay.type == "Phone" and pay.account == payment_account: @@ -553,32 +703,74 @@ def get_amount(ref_doc, payment_account=None): elif dt == "Fees": grand_total = ref_doc.outstanding_amount - if grand_total > 0: - return flt(grand_total, get_currency_precision()) - else: - frappe.throw(_("Payment Entry is already created")) + return flt(grand_total, get_currency_precision()) if grand_total > 0 else 0 -def get_existing_payment_request_amount(ref_dt, ref_dn): +def get_irequest_status(payment_requests: None | list = None) -> list: + IR = frappe.qb.DocType("Integration Request") + res = [] + if payment_requests: + res = ( + frappe.qb.from_(IR) + .select(IR.name) + .where(IR.reference_doctype.eq("Payment Request")) + .where(IR.reference_docname.isin(payment_requests)) + .where(IR.status.isin(["Authorized", "Completed"])) + .run(as_dict=True) + ) + return res + + +def cancel_old_payment_requests(ref_dt, ref_dn): + PR = frappe.qb.DocType("Payment Request") + + if res := ( + frappe.qb.from_(PR) + .select(PR.name) + .where(PR.reference_doctype == ref_dt) + .where(PR.reference_name == ref_dn) + .where(PR.docstatus == 1) + .where(PR.status.isin(["Draft", "Requested"])) + .run(as_dict=True) + ): + if get_irequest_status([x.name for x in res]): + frappe.throw(_("Another Payment Request is already processed")) + else: + for x in res: + doc = frappe.get_doc("Payment Request", x.name) + doc.flags.ignore_permissions = True + doc.cancel() + + if ireqs := get_irequests_of_payment_request(doc.name): + for ireq in ireqs: + frappe.db.set_value("Integration Request", ireq.name, "status", "Cancelled") + + +def get_existing_payment_request_amount(ref_doc, statuses: list | None = None) -> list: """ - Get the existing payment request which are unpaid or partially paid for payment channel other than Phone - and get the summation of existing paid payment request for Phone payment channel. + Return the total amount of Payment Requests against a reference document. """ - existing_payment_request_amount = frappe.db.sql( - """ - select sum(grand_total) - from `tabPayment Request` - where - reference_doctype = %s - and reference_name = %s - and docstatus = 1 - and (status != 'Paid' - or (payment_channel = 'Phone' - and status = 'Paid')) - """, - (ref_dt, ref_dn), + PR = frappe.qb.DocType("Payment Request") + + query = ( + frappe.qb.from_(PR) + .select(Sum(PR.outstanding_amount)) + .where(PR.reference_doctype == ref_doc.doctype) + .where(PR.reference_name == ref_doc.name) + .where(PR.docstatus == 1) ) - return flt(existing_payment_request_amount[0][0]) if existing_payment_request_amount else 0 + + if statuses: + query = query.where(PR.status.isin(statuses)) + + response = query.run() + + os_amount_in_transaction_currency = flt(response[0][0] if response[0] else 0) + + if ref_doc.currency != ref_doc.party_account_currency: + os_amount_in_transaction_currency = flt(os_amount_in_transaction_currency / ref_doc.conversion_rate) + + return os_amount_in_transaction_currency def get_gateway_details(args): # nosemgrep @@ -625,41 +817,66 @@ def make_payment_entry(docname): return doc.create_payment_entry(submit=False).as_dict() -def update_payment_req_status(doc, method): - from erpnext.accounts.doctype.payment_entry.payment_entry import get_reference_details +def update_payment_requests_as_per_pe_references(references=None, cancel=False): + """ + Update Payment Request's `Status` and `Outstanding Amount` based on Payment Entry Reference's `Allocated Amount`. + """ + if not references: + return - for ref in doc.references: - payment_request_name = frappe.db.get_value( - "Payment Request", - { - "reference_doctype": ref.reference_doctype, - "reference_name": ref.reference_name, - "docstatus": 1, - }, + precision = references[0].precision("allocated_amount") + + referenced_payment_requests = frappe.get_all( + "Payment Request", + filters={"name": ["in", {row.payment_request for row in references if row.payment_request}]}, + fields=[ + "name", + "grand_total", + "outstanding_amount", + "payment_request_type", + ], + ) + + referenced_payment_requests = {pr.name: pr for pr in referenced_payment_requests} + + for ref in references: + if not ref.payment_request: + continue + + payment_request = referenced_payment_requests[ref.payment_request] + pr_outstanding = payment_request["outstanding_amount"] + + # update outstanding amount + new_outstanding_amount = flt( + pr_outstanding + ref.allocated_amount if cancel else pr_outstanding - ref.allocated_amount, + precision, ) - if payment_request_name: - ref_details = get_reference_details( - ref.reference_doctype, - ref.reference_name, - doc.party_account_currency, - doc.party_type, - doc.party, + # to handle same payment request for the multiple allocations + payment_request["outstanding_amount"] = new_outstanding_amount + + if not cancel and new_outstanding_amount < 0: + frappe.throw( + msg=_( + "The allocated amount is greater than the outstanding amount of Payment Request {0}" + ).format(ref.payment_request), + title=_("Invalid Allocated Amount"), ) - pay_req_doc = frappe.get_doc("Payment Request", payment_request_name) - status = pay_req_doc.status - if status != "Paid" and not ref_details.outstanding_amount: - status = "Paid" - elif status != "Partially Paid" and ref_details.outstanding_amount != ref_details.total_amount: - status = "Partially Paid" - elif ref_details.outstanding_amount == ref_details.total_amount: - if pay_req_doc.payment_request_type == "Outward": - status = "Initiated" - elif pay_req_doc.payment_request_type == "Inward": - status = "Requested" + # update status + if new_outstanding_amount == payment_request["grand_total"]: + status = "Initiated" if payment_request["payment_request_type"] == "Outward" else "Requested" + elif new_outstanding_amount == 0: + status = "Paid" + elif new_outstanding_amount > 0: + status = "Partially Paid" - pay_req_doc.db_set("status", status) + # update database + frappe.db.set_value( + "Payment Request", + ref.payment_request, + {"outstanding_amount": new_outstanding_amount, "status": status}, + ) def get_dummy_message(doc): @@ -743,3 +960,45 @@ def validate_payment(doc, method=None): doc.reference_docname ) ) + + +@frappe.whitelist() +def get_open_payment_requests_query(doctype, txt, searchfield, start, page_len, filters): + # permission checks in `get_list()` + filters = frappe._dict(filters) + + if not filters.reference_doctype or not filters.reference_name: + return [] + + if txt: + filters.name = ["like", f"%{txt}%"] + + open_payment_requests = frappe.get_list( + "Payment Request", + filters=filters, + fields=["name", "grand_total", "outstanding_amount"], + order_by="transaction_date ASC,creation ASC", + ) + + return [ + ( + pr.name, + _("Grand Total: {0}").format(pr.grand_total), + _("Outstanding Amount: {0}").format(pr.outstanding_amount), + ) + for pr in open_payment_requests + ] + + +def get_irequests_of_payment_request(doc: str | None = None) -> list: + res = [] + if doc: + res = frappe.db.get_all( + "Integration Request", + { + "reference_doctype": "Payment Request", + "reference_docname": doc, + "status": "Queued", + }, + ) + return res diff --git a/erpnext/accounts/doctype/payment_request/payment_request_dashboard.py b/erpnext/accounts/doctype/payment_request/payment_request_dashboard.py new file mode 100644 index 00000000000..02ad5684792 --- /dev/null +++ b/erpnext/accounts/doctype/payment_request/payment_request_dashboard.py @@ -0,0 +1,14 @@ +from frappe import _ + + +def get_data(): + return { + "fieldname": "payment_request", + "internal_links": { + "Payment Entry": ["references", "payment_request"], + "Payment Order": ["references", "payment_order"], + }, + "transactions": [ + {"label": _("Payment"), "items": ["Payment Entry", "Payment Order"]}, + ], + } diff --git a/erpnext/accounts/doctype/payment_request/payment_request_list.js b/erpnext/accounts/doctype/payment_request/payment_request_list.js index 183ca7c4584..6e4aada66c6 100644 --- a/erpnext/accounts/doctype/payment_request/payment_request_list.js +++ b/erpnext/accounts/doctype/payment_request/payment_request_list.js @@ -1,19 +1,18 @@ +const INDICATORS = { + "Partially Paid": "orange", + Cancelled: "red", + Draft: "red", + Failed: "red", + Initiated: "green", + Paid: "blue", + Requested: "green", +}; + frappe.listview_settings["Payment Request"] = { add_fields: ["status"], get_indicator: function (doc) { - if (doc.status == "Draft") { - return [__("Draft"), "gray", "status,=,Draft"]; - } - if (doc.status == "Requested") { - return [__("Requested"), "green", "status,=,Requested"]; - } else if (doc.status == "Initiated") { - return [__("Initiated"), "green", "status,=,Initiated"]; - } else if (doc.status == "Partially Paid") { - return [__("Partially Paid"), "orange", "status,=,Partially Paid"]; - } else if (doc.status == "Paid") { - return [__("Paid"), "blue", "status,=,Paid"]; - } else if (doc.status == "Cancelled") { - return [__("Cancelled"), "red", "status,=,Cancelled"]; - } + if (!doc.status || !INDICATORS[doc.status]) return; + + return [__(doc.status), INDICATORS[doc.status], `status,=,${doc.status}`]; }, }; diff --git a/erpnext/accounts/doctype/payment_request/test_payment_request.py b/erpnext/accounts/doctype/payment_request/test_payment_request.py index 6d15f84d7cf..c9628bda433 100644 --- a/erpnext/accounts/doctype/payment_request/test_payment_request.py +++ b/erpnext/accounts/doctype/payment_request/test_payment_request.py @@ -1,11 +1,14 @@ # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors # See license.txt +import re import unittest import frappe -from frappe.tests.utils import FrappeTestCase +from frappe.tests.utils import FrappeTestCase, change_settings +from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry +from erpnext.accounts.doctype.payment_entry.test_payment_entry import create_payment_terms_template from erpnext.accounts.doctype.payment_request.payment_request import make_payment_request from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice @@ -15,6 +18,7 @@ from erpnext.setup.utils import get_exchange_rate test_dependencies = ["Currency Exchange", "Journal Entry", "Contact", "Address"] + payment_gateway = {"doctype": "Payment Gateway", "gateway": "_Test Gateway"} payment_method = [ @@ -79,8 +83,7 @@ class TestPaymentRequest(FrappeTestCase): def test_payment_entry_against_purchase_invoice(self): si_usd = make_purchase_invoice( - customer="_Test Supplier USD", - debit_to="_Test Payable USD - _TC", + supplier="_Test Supplier USD", currency="USD", conversion_rate=50, ) @@ -104,8 +107,7 @@ class TestPaymentRequest(FrappeTestCase): def test_multiple_payment_entry_against_purchase_invoice(self): purchase_invoice = make_purchase_invoice( - customer="_Test Supplier USD", - debit_to="_Test Payable USD - _TC", + supplier="_Test Supplier USD", currency="USD", conversion_rate=50, ) @@ -278,3 +280,379 @@ class TestPaymentRequest(FrappeTestCase): self.assertEqual(pe.paid_amount, 800) self.assertEqual(pe.base_received_amount, 800) self.assertEqual(pe.received_amount, 10) + + def test_multiple_payment_if_partially_paid_for_same_currency(self): + so = make_sales_order(currency="INR", qty=1, rate=1000) + + pr = make_payment_request( + dt="Sales Order", + dn=so.name, + mute_email=1, + submit_doc=1, + return_doc=1, + ) + + self.assertEqual(pr.grand_total, 1000) + self.assertEqual(pr.outstanding_amount, pr.grand_total) + self.assertEqual(pr.party_account_currency, pr.currency) # INR + + so.load_from_db() + + # to make partial payment + pe = pr.create_payment_entry(submit=False) + pe.paid_amount = 200 + pe.references[0].allocated_amount = 200 + pe.submit() + + self.assertEqual(pe.references[0].payment_request, pr.name) + + so.load_from_db() + + pr.load_from_db() + self.assertEqual(pr.status, "Partially Paid") + self.assertEqual(pr.outstanding_amount, 800) + self.assertEqual(pr.grand_total, 1000) + + self.assertRaisesRegex( + frappe.exceptions.ValidationError, + re.compile(r"Payment Request is already created"), + make_payment_request, + dt="Sales Order", + dn=so.name, + mute_email=1, + submit_doc=1, + return_doc=1, + ) + # complete payment + pe = pr.create_payment_entry() + + self.assertEqual(pe.paid_amount, 800) # paid amount set from pr's outstanding amount + self.assertEqual(pe.references[0].allocated_amount, 800) + self.assertEqual(pe.references[0].outstanding_amount, 800) # for Orders it is not zero + self.assertEqual(pe.references[0].payment_request, pr.name) + + so.load_from_db() + + pr.load_from_db() + self.assertEqual(pr.status, "Paid") + self.assertEqual(pr.outstanding_amount, 0) + self.assertEqual(pr.grand_total, 1000) + + # creating a more payment Request must not allowed + self.assertRaisesRegex( + frappe.exceptions.ValidationError, + re.compile(r"Payment Entry is already created"), + make_payment_request, + dt="Sales Order", + dn=so.name, + mute_email=1, + submit_doc=1, + return_doc=1, + ) + + @change_settings("Accounts Settings", {"allow_multi_currency_invoices_against_single_party_account": 1}) + def test_multiple_payment_if_partially_paid_for_multi_currency(self): + pi = make_purchase_invoice(currency="USD", conversion_rate=50, qty=1, rate=100, do_not_save=1) + pi.credit_to = "Creditors - _TC" + pi.submit() + + pr = make_payment_request( + dt="Purchase Invoice", + dn=pi.name, + mute_email=1, + submit_doc=1, + return_doc=1, + ) + + # 100 USD -> 5000 INR + self.assertEqual(pr.grand_total, 100) + self.assertEqual(pr.outstanding_amount, 5000) + self.assertEqual(pr.currency, "USD") + self.assertEqual(pr.party_account_currency, "INR") + self.assertEqual(pr.status, "Initiated") + + self.assertRaisesRegex( + frappe.exceptions.ValidationError, + re.compile(r"Payment Request is already created"), + make_payment_request, + dt="Purchase Invoice", + dn=pi.name, + mute_email=1, + submit_doc=1, + return_doc=1, + ) + + # to make partial payment + pe = pr.create_payment_entry(submit=False) + pe.paid_amount = 2000 + pe.references[0].allocated_amount = 2000 + pe.submit() + + self.assertEqual(pe.references[0].payment_request, pr.name) + + pr.load_from_db() + self.assertEqual(pr.status, "Partially Paid") + self.assertEqual(pr.outstanding_amount, 3000) + self.assertEqual(pr.grand_total, 100) + + # complete payment + pe = pr.create_payment_entry() + self.assertEqual(pe.paid_amount, 3000) # paid amount set from pr's outstanding amount + self.assertEqual(pe.references[0].allocated_amount, 3000) + self.assertEqual(pe.references[0].outstanding_amount, 0) # for Invoices it will zero + self.assertEqual(pe.references[0].payment_request, pr.name) + + pr.load_from_db() + self.assertEqual(pr.status, "Paid") + self.assertEqual(pr.outstanding_amount, 0) + self.assertEqual(pr.grand_total, 100) + + # creating a more payment Request must not allowed + self.assertRaisesRegex( + frappe.exceptions.ValidationError, + re.compile(r"Payment Entry is already created"), + make_payment_request, + dt="Purchase Invoice", + dn=pi.name, + mute_email=1, + submit_doc=1, + return_doc=1, + ) + + def test_single_payment_with_payment_term_for_same_currency(self): + create_payment_terms_template() + + po = create_purchase_order(do_not_save=1, currency="INR", qty=1, rate=20000) + po.payment_terms_template = "Test Receivable Template" # 84.746 and 15.254 + po.save() + po.submit() + + pr = make_payment_request( + dt="Purchase Order", + dn=po.name, + mute_email=1, + submit_doc=1, + return_doc=1, + ) + + self.assertEqual(pr.grand_total, 20000) + self.assertEqual(pr.outstanding_amount, pr.grand_total) + self.assertEqual(pr.party_account_currency, pr.currency) # INR + self.assertEqual(pr.status, "Initiated") + + po.load_from_db() + + pe = pr.create_payment_entry() + + self.assertEqual(len(pe.references), 2) + self.assertEqual(pe.paid_amount, 20000) + + # check 1st payment term + self.assertEqual(pe.references[0].allocated_amount, 16949.2) + self.assertEqual(pe.references[0].payment_request, pr.name) + + # check 2nd payment term + self.assertEqual(pe.references[1].allocated_amount, 3050.8) + self.assertEqual(pe.references[1].payment_request, pr.name) + + po.load_from_db() + + pr.load_from_db() + self.assertEqual(pr.status, "Paid") + self.assertEqual(pr.outstanding_amount, 0) + self.assertEqual(pr.grand_total, 20000) + + @change_settings("Accounts Settings", {"allow_multi_currency_invoices_against_single_party_account": 1}) + def test_single_payment_with_payment_term_for_multi_currency(self): + create_payment_terms_template() + + si = create_sales_invoice( + do_not_save=1, currency="USD", debit_to="Debtors - _TC", qty=1, rate=200, conversion_rate=50 + ) + si.payment_terms_template = "Test Receivable Template" # 84.746 and 15.254 + si.save() + si.submit() + + pr = make_payment_request( + dt="Sales Invoice", + dn=si.name, + mute_email=1, + submit_doc=1, + return_doc=1, + ) + + # 200 USD -> 10000 INR + self.assertEqual(pr.grand_total, 200) + self.assertEqual(pr.outstanding_amount, 10000) + self.assertEqual(pr.currency, "USD") + self.assertEqual(pr.party_account_currency, "INR") + + pe = pr.create_payment_entry() + self.assertEqual(len(pe.references), 2) + self.assertEqual(pe.paid_amount, 10000) + + # check 1st payment term + # convert it via dollar and conversion_rate + self.assertEqual(pe.references[0].allocated_amount, 8474.5) # multi currency conversion + self.assertEqual(pe.references[0].payment_request, pr.name) + + # check 2nd payment term + self.assertEqual(pe.references[1].allocated_amount, 1525.5) # multi currency conversion + self.assertEqual(pe.references[1].payment_request, pr.name) + + pr.load_from_db() + self.assertEqual(pr.status, "Paid") + self.assertEqual(pr.outstanding_amount, 0) + self.assertEqual(pr.grand_total, 200) + + def test_payment_cancel_process(self): + so = make_sales_order(currency="INR", qty=1, rate=1000) + + pr = make_payment_request( + dt="Sales Order", + dn=so.name, + mute_email=1, + submit_doc=1, + return_doc=1, + ) + + self.assertEqual(pr.grand_total, 1000) + self.assertEqual(pr.outstanding_amount, pr.grand_total) + + so.load_from_db() + + pe = pr.create_payment_entry(submit=False) + pe.paid_amount = 800 + pe.references[0].allocated_amount = 800 + pe.submit() + + self.assertEqual(pe.references[0].payment_request, pr.name) + + so.load_from_db() + + pr.load_from_db() + self.assertEqual(pr.status, "Partially Paid") + self.assertEqual(pr.outstanding_amount, 200) + self.assertEqual(pr.grand_total, 1000) + + # cancelling PE + pe.cancel() + + pr.load_from_db() + self.assertEqual(pr.status, "Requested") + self.assertEqual(pr.outstanding_amount, 1000) + self.assertEqual(pr.grand_total, 1000) + + so.load_from_db() + + def test_partial_paid_invoice_with_payment_request(self): + si = create_sales_invoice(currency="INR", qty=1, rate=5000) + si.save() + si.submit() + + pe = get_payment_entry("Sales Invoice", si.name, bank_account="_Test Bank - _TC") + pe.reference_no = "PAYEE0002" + pe.reference_date = frappe.utils.nowdate() + pe.paid_amount = 2500 + pe.references[0].allocated_amount = 2500 + pe.save() + pe.submit() + + si.load_from_db() + pr = make_payment_request(dt="Sales Invoice", dn=si.name, mute_email=1) + + self.assertEqual(pr.grand_total, si.outstanding_amount) + + def test_partial_paid_invoice_with_more_payment_entry(self): + pi = make_purchase_invoice(currency="INR", qty=1, rate=500) + pi.submit() + pi_1 = make_purchase_invoice(currency="INR", qty=1, rate=300) + pi_1.submit() + + pr = make_payment_request(dt="Purchase Invoice", dn=pi.name, mute_email=1, submit_doc=0, return_doc=1) + pr.grand_total = 200 + pr.submit() + pr.create_payment_entry() + pr_1 = make_payment_request( + dt="Purchase Invoice", dn=pi.name, mute_email=1, submit_doc=0, return_doc=1 + ) + pr_1.grand_total = 200 + pr_1.submit() + pr_1.create_payment_entry() + + pe = get_payment_entry(dt="Purchase Invoice", dn=pi.name) + pe.paid_amount = 200 + pe.references[0].reference_doctype = pi.doctype + pe.references[0].reference_name = pi.name + pe.references[0].grand_total = pi.grand_total + pe.references[0].outstanding_amount = pi.outstanding_amount + pe.references[0].allocated_amount = 100 + pe.append( + "references", + { + "reference_doctype": pi_1.doctype, + "reference_name": pi_1.name, + "grand_total": pi_1.grand_total, + "outstanding_amount": pi_1.outstanding_amount, + "allocated_amount": 100, + }, + ) + + pr_2 = make_payment_request(dt="Purchase Invoice", dn=pi.name, mute_email=1) + pi.load_from_db() + self.assertEqual(pr_2.grand_total, pi.outstanding_amount) + + def test_consider_journal_entry_and_return_invoice(self): + from erpnext.accounts.doctype.journal_entry.test_journal_entry import make_journal_entry + + si = create_sales_invoice(currency="INR", qty=5, rate=500) + + je = make_journal_entry("_Test Cash - _TC", "Debtors - _TC", 500, save=False) + je.accounts[1].party_type = "Customer" + je.accounts[1].party = si.customer + je.accounts[1].reference_type = "Sales Invoice" + je.accounts[1].reference_name = si.name + je.accounts[1].credit_in_account_currency = 500 + je.submit() + + pe = get_payment_entry("Sales Invoice", si.name) + pe.paid_amount = 500 + pe.references[0].allocated_amount = 500 + pe.save() + pe.submit() + + cr_note = create_sales_invoice(qty=-1, rate=500, is_return=1, return_against=si.name, do_not_save=1) + cr_note.update_outstanding_for_self = 0 + cr_note.save() + cr_note.submit() + + si.load_from_db() + pr = make_payment_request(dt="Sales Invoice", dn=si.name, mute_email=1) + self.assertEqual(pr.grand_total, si.outstanding_amount) + + +def test_partial_paid_invoice_with_submitted_payment_entry(self): + pi = make_purchase_invoice(currency="INR", qty=1, rate=5000) + pi.save() + pi.submit() + + pe = get_payment_entry("Purchase Invoice", pi.name, bank_account="_Test Bank - _TC") + pe.reference_no = "PURINV0001" + pe.reference_date = frappe.utils.nowdate() + pe.paid_amount = 2500 + pe.references[0].allocated_amount = 2500 + pe.save() + pe.submit() + pe.cancel() + + pe = get_payment_entry("Purchase Invoice", pi.name, bank_account="_Test Bank - _TC") + pe.reference_no = "PURINV0002" + pe.reference_date = frappe.utils.nowdate() + pe.paid_amount = 2500 + pe.references[0].allocated_amount = 2500 + pe.save() + pe.submit() + + pi.load_from_db() + pr = make_payment_request(dt="Purchase Invoice", dn=pi.name, mute_email=1) + self.assertEqual(pr.grand_total, pi.outstanding_amount) diff --git a/erpnext/accounts/doctype/payment_schedule/payment_schedule.json b/erpnext/accounts/doctype/payment_schedule/payment_schedule.json index dde9980ce53..b72281b6314 100644 --- a/erpnext/accounts/doctype/payment_schedule/payment_schedule.json +++ b/erpnext/accounts/doctype/payment_schedule/payment_schedule.json @@ -24,7 +24,9 @@ "paid_amount", "discounted_amount", "column_break_3", - "base_payment_amount" + "base_payment_amount", + "base_outstanding", + "base_paid_amount" ], "fields": [ { @@ -155,19 +157,35 @@ "fieldtype": "Currency", "label": "Payment Amount (Company Currency)", "options": "Company:company:default_currency" + }, + { + "fieldname": "base_outstanding", + "fieldtype": "Currency", + "label": "Outstanding (Company Currency)", + "options": "Company:company:default_currency", + "read_only": 1 + }, + { + "depends_on": "base_paid_amount", + "fieldname": "base_paid_amount", + "fieldtype": "Currency", + "label": "Paid Amount (Company Currency)", + "options": "Company:company:default_currency", + "read_only": 1 } ], "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2022-09-16 13:57:06.382859", + "modified": "2025-03-11 11:06:51.792982", "modified_by": "Administrator", "module": "Accounts", "name": "Payment Schedule", "owner": "Administrator", "permissions": [], "quick_entry": 1, - "sort_field": "modified", + "row_format": "Dynamic", + "sort_field": "creation", "sort_order": "DESC", "states": [], "track_changes": 1 diff --git a/erpnext/accounts/doctype/payment_schedule/payment_schedule.py b/erpnext/accounts/doctype/payment_schedule/payment_schedule.py index 8a292fd3aba..a3d1dbe5564 100644 --- a/erpnext/accounts/doctype/payment_schedule/payment_schedule.py +++ b/erpnext/accounts/doctype/payment_schedule/payment_schedule.py @@ -14,6 +14,8 @@ class PaymentSchedule(Document): if TYPE_CHECKING: from frappe.types import DF + base_outstanding: DF.Currency + base_paid_amount: DF.Currency base_payment_amount: DF.Currency description: DF.SmallText | None discount: DF.Float diff --git a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.js b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.js index 82d8cb37fe7..095310c7e70 100644 --- a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.js +++ b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.js @@ -19,6 +19,24 @@ frappe.ui.form.on("Period Closing Voucher", { }); }, + fiscal_year: function (frm) { + if (frm.doc.fiscal_year) { + frappe.call({ + method: "erpnext.accounts.doctype.period_closing_voucher.period_closing_voucher.get_period_start_end_date", + args: { + fiscal_year: frm.doc.fiscal_year, + company: frm.doc.company, + }, + callback: function (r) { + if (r.message) { + frm.set_value("period_start_date", r.message[0]); + frm.set_value("period_end_date", r.message[1]); + } + }, + }); + } + }, + refresh: function (frm) { if (frm.doc.docstatus > 0) { frm.add_custom_button( diff --git a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.json b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.json index 624b5f82f64..f41cff0e0d8 100644 --- a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.json +++ b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.json @@ -6,39 +6,32 @@ "engine": "InnoDB", "field_order": [ "transaction_date", - "posting_date", - "fiscal_year", - "year_start_date", - "amended_from", "company", + "fiscal_year", + "period_start_date", + "period_end_date", + "amended_from", "column_break1", "closing_account_head", - "remarks", "gle_processing_status", + "remarks", "error_message" ], "fields": [ { + "default": "Today", "fieldname": "transaction_date", "fieldtype": "Date", "label": "Transaction Date", "oldfieldname": "transaction_date", "oldfieldtype": "Date" }, - { - "fieldname": "posting_date", - "fieldtype": "Date", - "label": "Posting Date", - "oldfieldname": "posting_date", - "oldfieldtype": "Date", - "reqd": 1 - }, { "fieldname": "fiscal_year", "fieldtype": "Link", "in_list_view": 1, "in_standard_filter": 1, - "label": "Closing Fiscal Year", + "label": "Fiscal Year", "oldfieldname": "fiscal_year", "oldfieldtype": "Select", "options": "Fiscal Year", @@ -103,16 +96,25 @@ "read_only": 1 }, { - "fieldname": "year_start_date", + "fieldname": "period_end_date", "fieldtype": "Date", - "label": "Year Start Date" + "label": "Period End Date", + "reqd": 1 + }, + { + "fieldname": "period_start_date", + "fieldtype": "Date", + "label": "Period Start Date", + "oldfieldname": "posting_date", + "oldfieldtype": "Date", + "reqd": 1 } ], "icon": "fa fa-file-text", "idx": 1, "is_submittable": 1, "links": [], - "modified": "2023-09-11 20:19:11.810533", + "modified": "2024-09-15 17:22:45.291628", "modified_by": "Administrator", "module": "Accounts", "name": "Period Closing Voucher", @@ -148,7 +150,7 @@ "write": 1 } ], - "search_fields": "posting_date, fiscal_year", + "search_fields": "fiscal_year, period_start_date, period_end_date", "sort_field": "modified", "sort_order": "DESC", "states": [], diff --git a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py index 9bc110d243e..790ada3f63e 100644 --- a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py +++ b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py @@ -2,15 +2,20 @@ # License: GNU General Public License v3. See license.txt +import copy + import frappe from frappe import _ from frappe.query_builder.functions import Sum -from frappe.utils import add_days, flt +from frappe.utils import add_days, flt, formatdate, getdate +from erpnext.accounts.doctype.account_closing_balance.account_closing_balance import ( + make_closing_entries, +) from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import ( get_accounting_dimensions, ) -from erpnext.accounts.utils import get_account_currency, get_fiscal_year, validate_fiscal_year +from erpnext.accounts.utils import get_account_currency, get_fiscal_year from erpnext.controllers.accounts_controller import AccountsController @@ -29,38 +34,387 @@ class PeriodClosingVoucher(AccountsController): error_message: DF.Text | None fiscal_year: DF.Link gle_processing_status: DF.Literal["In Progress", "Completed", "Failed"] - posting_date: DF.Date + period_end_date: DF.Date + period_start_date: DF.Date remarks: DF.SmallText transaction_date: DF.Date | None - year_start_date: DF.Date | None # end: auto-generated types def validate(self): - self.validate_account_head() - self.validate_posting_date() + self.validate_start_and_end_date() + self.check_if_previous_year_closed() + self.block_if_future_closing_voucher_exists() + self.check_closing_account_type() + self.check_closing_account_currency() + + def validate_start_and_end_date(self): + self.fy_start_date, self.fy_end_date = frappe.db.get_value( + "Fiscal Year", self.fiscal_year, ["year_start_date", "year_end_date"] + ) + + prev_closed_period_end_date = get_previous_closed_period_in_current_year( + self.fiscal_year, self.company + ) + valid_start_date = ( + add_days(prev_closed_period_end_date, 1) if prev_closed_period_end_date else self.fy_start_date + ) + + if getdate(self.period_start_date) != getdate(valid_start_date): + frappe.throw(_("Period Start Date must be {0}").format(formatdate(valid_start_date))) + + if getdate(self.period_start_date) > getdate(self.period_end_date): + frappe.throw(_("Period Start Date cannot be greater than Period End Date")) + + if getdate(self.period_end_date) > getdate(self.fy_end_date): + frappe.throw(_("Period End Date cannot be greater than Fiscal Year End Date")) + + def check_if_previous_year_closed(self): + last_year_closing = add_days(self.fy_start_date, -1) + previous_fiscal_year = get_fiscal_year(last_year_closing, company=self.company, boolean=True) + if not previous_fiscal_year: + return + + previous_fiscal_year_start_date = previous_fiscal_year[0][1] + gle_exists_in_previous_year = frappe.db.exists( + "GL Entry", + { + "posting_date": ("between", [previous_fiscal_year_start_date, last_year_closing]), + "company": self.company, + "is_cancelled": 0, + }, + ) + if not gle_exists_in_previous_year: + return + + previous_fiscal_year_closed = frappe.db.exists( + "Period Closing Voucher", + { + "period_end_date": ("between", [previous_fiscal_year_start_date, last_year_closing]), + "docstatus": 1, + "company": self.company, + }, + ) + if not previous_fiscal_year_closed: + frappe.throw(_("Previous Year is not closed, please close it first")) + + def block_if_future_closing_voucher_exists(self): + future_closing_voucher = self.get_future_closing_voucher() + if future_closing_voucher and future_closing_voucher[0][0]: + action = "cancel" if self.docstatus == 2 else "create" + frappe.throw( + _( + "You cannot {0} this document because another Period Closing Entry {1} exists after {2}" + ).format(action, future_closing_voucher[0][0], self.period_end_date) + ) + + def get_future_closing_voucher(self): + return frappe.db.get_value( + "Period Closing Voucher", + {"period_end_date": (">", self.period_end_date), "docstatus": 1, "company": self.company}, + "name", + ) + + def check_closing_account_type(self): + closing_account_type = frappe.get_cached_value("Account", self.closing_account_head, "root_type") + + if closing_account_type not in ["Liability", "Equity"]: + frappe.throw( + _("Closing Account {0} must be of type Liability / Equity").format(self.closing_account_head) + ) + + def check_closing_account_currency(self): + account_currency = get_account_currency(self.closing_account_head) + company_currency = frappe.get_cached_value("Company", self.company, "default_currency") + if account_currency != company_currency: + frappe.throw(_("Currency of the Closing Account must be {0}").format(company_currency)) def on_submit(self): self.db_set("gle_processing_status", "In Progress") - get_opening_entries = False - - if not frappe.db.exists( - "Period Closing Voucher", {"company": self.company, "docstatus": 1, "name": ("!=", self.name)} - ): - get_opening_entries = True - - self.make_gl_entries(get_opening_entries=get_opening_entries) + self.make_gl_entries() def on_cancel(self): - self.validate_future_closing_vouchers() - self.db_set("gle_processing_status", "In Progress") self.ignore_linked_doctypes = ("GL Entry", "Stock Ledger Entry", "Payment Ledger Entry") - gle_count = frappe.db.count( - "GL Entry", - {"voucher_type": "Period Closing Voucher", "voucher_no": self.name, "is_cancelled": 0}, - ) - if gle_count > 5000: + self.block_if_future_closing_voucher_exists() + self.db_set("gle_processing_status", "In Progress") + self.cancel_gl_entries() + + def make_gl_entries(self): + if frappe.db.estimate_count("GL Entry") > 100_000: frappe.enqueue( - make_reverse_gl_entries, + process_gl_and_closing_entries, + doc=self, + timeout=1800, + ) + frappe.msgprint( + _( + "The GL Entries and closing balances will be processed in the background, it can take a few minutes." + ), + alert=True, + ) + else: + process_gl_and_closing_entries(self) + + def get_pcv_gl_entries(self): + self.pl_accounts_reverse_gle = [] + self.closing_account_gle = [] + + pl_account_balances = self.get_account_balances_based_on_dimensions(report_type="Profit and Loss") + for dimensions, account_balances in pl_account_balances.items(): + for acc, balances in account_balances.items(): + balance_in_company_currency = flt(balances.debit) - flt(balances.credit) + if balance_in_company_currency and acc != "balances": + self.pl_accounts_reverse_gle.append( + self.get_gle_for_pl_account(acc, balances, dimensions) + ) + + # closing liability account + self.closing_account_gle.append( + self.get_gle_for_closing_account(account_balances["balances"], dimensions) + ) + + return self.pl_accounts_reverse_gle + self.closing_account_gle + + def get_gle_for_pl_account(self, acc, balances, dimensions): + balance_in_account_currency = flt(balances.debit_in_account_currency) - flt( + balances.credit_in_account_currency + ) + balance_in_company_currency = flt(balances.debit) - flt(balances.credit) + gl_entry = frappe._dict( + { + "company": self.company, + "posting_date": self.period_end_date, + "account": acc, + "account_currency": balances.account_currency, + "debit_in_account_currency": abs(balance_in_account_currency) + if balance_in_account_currency < 0 + else 0, + "debit": abs(balance_in_company_currency) if balance_in_company_currency < 0 else 0, + "credit_in_account_currency": abs(balance_in_account_currency) + if balance_in_account_currency > 0 + else 0, + "credit": abs(balance_in_company_currency) if balance_in_company_currency > 0 else 0, + "is_period_closing_voucher_entry": 1, + "voucher_type": "Period Closing Voucher", + "voucher_no": self.name, + "fiscal_year": self.fiscal_year, + "remarks": self.remarks, + "is_opening": "No", + } + ) + self.update_default_dimensions(gl_entry, dimensions) + return gl_entry + + def get_gle_for_closing_account(self, dimension_balance, dimensions): + balance_in_account_currency = flt(dimension_balance.balance_in_account_currency) + balance_in_company_currency = flt(dimension_balance.balance_in_company_currency) + gl_entry = frappe._dict( + { + "company": self.company, + "posting_date": self.period_end_date, + "account": self.closing_account_head, + "account_currency": frappe.db.get_value( + "Account", self.closing_account_head, "account_currency" + ), + "debit_in_account_currency": balance_in_account_currency + if balance_in_account_currency > 0 + else 0, + "debit": balance_in_company_currency if balance_in_company_currency > 0 else 0, + "credit_in_account_currency": abs(balance_in_account_currency) + if balance_in_account_currency < 0 + else 0, + "credit": abs(balance_in_company_currency) if balance_in_company_currency < 0 else 0, + "is_period_closing_voucher_entry": 1, + "voucher_type": "Period Closing Voucher", + "voucher_no": self.name, + "fiscal_year": self.fiscal_year, + "remarks": self.remarks, + "is_opening": "No", + } + ) + self.update_default_dimensions(gl_entry, dimensions) + return gl_entry + + def update_default_dimensions(self, gl_entry, dimensions): + for i, dimension in enumerate(self.accounting_dimension_fields): + gl_entry[dimension] = dimensions[i] + + def get_account_balances_based_on_dimensions(self, report_type): + """Get balance for dimension-wise pl accounts""" + self.get_accounting_dimension_fields() + acc_bal_dict = frappe._dict() + gl_entries = [] + + with frappe.db.unbuffered_cursor(): + gl_entries = self.get_gl_entries_for_current_period(report_type, as_iterator=True) + for gle in gl_entries: + acc_bal_dict = self.set_account_balance_dict(gle, acc_bal_dict) + + if report_type == "Balance Sheet" and self.is_first_period_closing_voucher(): + opening_entries = self.get_gl_entries_for_current_period(report_type, only_opening_entries=True) + for gle in opening_entries: + acc_bal_dict = self.set_account_balance_dict(gle, acc_bal_dict) + + return acc_bal_dict + + def get_accounting_dimension_fields(self): + default_dimensions = ["cost_center", "finance_book", "project"] + self.accounting_dimension_fields = default_dimensions + get_accounting_dimensions() + + def get_gl_entries_for_current_period(self, report_type, only_opening_entries=False, as_iterator=False): + date_condition = "" + if only_opening_entries: + date_condition = "is_opening = 'Yes'" + else: + date_condition = f"posting_date BETWEEN '{self.period_start_date}' AND '{self.period_end_date}' and is_opening = 'No'" + + # nosemgrep + return frappe.db.sql( + """ + SELECT + name, + posting_date, + account, + account_currency, + debit_in_account_currency, + credit_in_account_currency, + debit, + credit, + {} + FROM `tabGL Entry` + WHERE + {} + AND company = %s + AND voucher_type != 'Period Closing Voucher' + AND EXISTS(SELECT name FROM `tabAccount` WHERE name = account AND report_type = %s) + AND is_cancelled = 0 + """.format( + ", ".join(self.accounting_dimension_fields), + date_condition, + ), + (self.company, report_type), + as_dict=1, + as_iterator=as_iterator, + ) + + def set_account_balance_dict(self, gle, acc_bal_dict): + key = self.get_key(gle) + + acc_bal_dict.setdefault(key, frappe._dict()).setdefault( + gle.account, + frappe._dict( + { + "debit_in_account_currency": 0, + "credit_in_account_currency": 0, + "debit": 0, + "credit": 0, + "account_currency": gle.account_currency, + } + ), + ) + + acc_bal_dict[key][gle.account].debit_in_account_currency += flt(gle.debit_in_account_currency) + acc_bal_dict[key][gle.account].credit_in_account_currency += flt(gle.credit_in_account_currency) + acc_bal_dict[key][gle.account].debit += flt(gle.debit) + acc_bal_dict[key][gle.account].credit += flt(gle.credit) + + # dimension-wise total balances + acc_bal_dict[key].setdefault( + "balances", + frappe._dict( + { + "balance_in_account_currency": 0, + "balance_in_company_currency": 0, + } + ), + ) + + balance_in_account_currency = flt(gle.debit_in_account_currency) - flt(gle.credit_in_account_currency) + balance_in_company_currency = flt(gle.debit) - flt(gle.credit) + + acc_bal_dict[key]["balances"].balance_in_account_currency += balance_in_account_currency + acc_bal_dict[key]["balances"].balance_in_company_currency += balance_in_company_currency + + return acc_bal_dict + + def get_key(self, gle): + return tuple([gle.get(dimension) for dimension in self.accounting_dimension_fields]) + + def get_account_closing_balances(self): + pl_closing_entries = self.get_closing_entries_for_pl_accounts() + bs_closing_entries = self.get_closing_entries_for_balance_sheet_accounts() + closing_entries_for_closing_account = self.get_closing_entries_for_closing_account() + closing_entries = pl_closing_entries + bs_closing_entries + closing_entries_for_closing_account + return closing_entries + + def get_closing_entries_for_pl_accounts(self): + closing_entries = copy.deepcopy(self.pl_accounts_reverse_gle) + for d in self.pl_accounts_reverse_gle: + # reverse debit and credit + gle_copy = copy.deepcopy(d) + gle_copy.debit = d.credit + gle_copy.credit = d.debit + gle_copy.debit_in_account_currency = d.credit_in_account_currency + gle_copy.credit_in_account_currency = d.debit_in_account_currency + gle_copy.is_period_closing_voucher_entry = 0 + gle_copy.period_closing_voucher = self.name + closing_entries.append(gle_copy) + + return closing_entries + + def get_closing_entries_for_balance_sheet_accounts(self): + closing_entries = [] + balance_sheet_account_balances = self.get_account_balances_based_on_dimensions( + report_type="Balance Sheet" + ) + + for dimensions, account_balances in balance_sheet_account_balances.items(): + for acc, balances in account_balances.items(): + balance_in_company_currency = flt(balances.debit) - flt(balances.credit) + if acc != "balances" and balance_in_company_currency: + closing_entries.append(self.get_closing_entry(acc, balances, dimensions)) + + return closing_entries + + def get_closing_entry(self, account, balances, dimensions): + closing_entry = frappe._dict( + { + "company": self.company, + "closing_date": self.period_end_date, + "period_closing_voucher": self.name, + "account": account, + "account_currency": balances.account_currency, + "debit_in_account_currency": flt(balances.debit_in_account_currency), + "debit": flt(balances.debit), + "credit_in_account_currency": flt(balances.credit_in_account_currency), + "credit": flt(balances.credit), + "is_period_closing_voucher_entry": 0, + } + ) + self.update_default_dimensions(closing_entry, dimensions) + return closing_entry + + def get_closing_entries_for_closing_account(self): + closing_entries = copy.deepcopy(self.closing_account_gle) + for d in closing_entries: + d.period_closing_voucher = self.name + + return closing_entries + + def is_first_period_closing_voucher(self): + first_pcv = frappe.db.get_value( + "Period Closing Voucher", + {"company": self.company, "docstatus": 1}, + "name", + order_by="period_end_date asc", + ) + + if not first_pcv or first_pcv == self.name: + return True + + def cancel_gl_entries(self): + if self.get_gle_count_against_current_pcv() > 5000: + frappe.enqueue( + process_cancellation, voucher_type="Period Closing Voucher", voucher_no=self.name, queue="long", @@ -71,341 +425,74 @@ class PeriodClosingVoucher(AccountsController): alert=True, ) else: - make_reverse_gl_entries(voucher_type="Period Closing Voucher", voucher_no=self.name) + process_cancellation(voucher_type="Period Closing Voucher", voucher_no=self.name) - self.delete_closing_entries() - - def validate_future_closing_vouchers(self): - if frappe.db.exists( - "Period Closing Voucher", - {"posting_date": (">", self.posting_date), "docstatus": 1, "company": self.company}, - ): - frappe.throw( - _( - "You can not cancel this Period Closing Voucher, please cancel the future Period Closing Vouchers first" - ) - ) - - def delete_closing_entries(self): - closing_balance = frappe.qb.DocType("Account Closing Balance") - frappe.qb.from_(closing_balance).delete().where( - closing_balance.period_closing_voucher == self.name - ).run() - - def validate_account_head(self): - closing_account_type = frappe.get_cached_value("Account", self.closing_account_head, "root_type") - - if closing_account_type not in ["Liability", "Equity"]: - frappe.throw( - _("Closing Account {0} must be of type Liability / Equity").format(self.closing_account_head) - ) - - account_currency = get_account_currency(self.closing_account_head) - company_currency = frappe.get_cached_value("Company", self.company, "default_currency") - if account_currency != company_currency: - frappe.throw(_("Currency of the Closing Account must be {0}").format(company_currency)) - - def validate_posting_date(self): - validate_fiscal_year( - self.posting_date, self.fiscal_year, self.company, label=_("Posting Date"), doc=self - ) - - self.year_start_date = get_fiscal_year(self.posting_date, self.fiscal_year, company=self.company)[1] - - self.check_if_previous_year_closed() - - pcv = frappe.qb.DocType("Period Closing Voucher") - existing_entry = ( - frappe.qb.from_(pcv) - .select(pcv.name) - .where( - (pcv.posting_date >= self.posting_date) - & (pcv.fiscal_year == self.fiscal_year) - & (pcv.docstatus == 1) - & (pcv.company == self.company) - ) - .run() - ) - - if existing_entry and existing_entry[0][0]: - frappe.throw( - _("Another Period Closing Entry {0} has been made after {1}").format( - existing_entry[0][0], self.posting_date - ) - ) - - def check_if_previous_year_closed(self): - last_year_closing = add_days(self.year_start_date, -1) - previous_fiscal_year = get_fiscal_year(last_year_closing, company=self.company, boolean=True) - if not previous_fiscal_year: - return - - previous_fiscal_year_start_date = previous_fiscal_year[0][1] - if not frappe.db.exists( + def get_gle_count_against_current_pcv(self): + return frappe.db.count( "GL Entry", - { - "posting_date": ("between", [previous_fiscal_year_start_date, last_year_closing]), - "company": self.company, - "is_cancelled": 0, - }, - ): - return - - if not frappe.db.exists( - "Period Closing Voucher", - { - "posting_date": ("between", [previous_fiscal_year_start_date, last_year_closing]), - "docstatus": 1, - "company": self.company, - }, - ): - frappe.throw(_("Previous Year is not closed, please close it first")) - - def make_gl_entries(self, get_opening_entries=False): - gl_entries = self.get_gl_entries() - closing_entries = self.get_grouped_gl_entries(get_opening_entries=get_opening_entries) - if len(gl_entries + closing_entries) > 3000: - frappe.enqueue( - process_gl_entries, - gl_entries=gl_entries, - voucher_name=self.name, - timeout=3000, - ) - - frappe.enqueue( - process_closing_entries, - gl_entries=gl_entries, - closing_entries=closing_entries, - voucher_name=self.name, - company=self.company, - closing_date=self.posting_date, - timeout=3000, - ) - - frappe.msgprint( - _("The GL Entries will be processed in the background, it can take a few minutes."), - alert=True, - ) - else: - process_gl_entries(gl_entries, self.name) - process_closing_entries(gl_entries, closing_entries, self.name, self.company, self.posting_date) - - def get_grouped_gl_entries(self, get_opening_entries=False): - closing_entries = [] - for acc in self.get_balances_based_on_dimensions( - group_by_account=True, for_aggregation=True, get_opening_entries=get_opening_entries - ): - closing_entries.append(self.get_closing_entries(acc)) - - return closing_entries - - def get_gl_entries(self): - gl_entries = [] - - # pl account - for acc in self.get_balances_based_on_dimensions( - group_by_account=True, report_type="Profit and Loss" - ): - if flt(acc.bal_in_company_currency): - gl_entries.append(self.get_gle_for_pl_account(acc)) - - # closing liability account - for acc in self.get_balances_based_on_dimensions( - group_by_account=False, report_type="Profit and Loss" - ): - if flt(acc.bal_in_company_currency): - gl_entries.append(self.get_gle_for_closing_account(acc)) - - return gl_entries - - def get_gle_for_pl_account(self, acc): - gl_entry = self.get_gl_dict( - { - "company": self.company, - "closing_date": self.posting_date, - "account": acc.account, - "cost_center": acc.cost_center, - "finance_book": acc.finance_book, - "account_currency": acc.account_currency, - "debit_in_account_currency": abs(flt(acc.bal_in_account_currency)) - if flt(acc.bal_in_account_currency) < 0 - else 0, - "debit": abs(flt(acc.bal_in_company_currency)) if flt(acc.bal_in_company_currency) < 0 else 0, - "credit_in_account_currency": abs(flt(acc.bal_in_account_currency)) - if flt(acc.bal_in_account_currency) > 0 - else 0, - "credit": abs(flt(acc.bal_in_company_currency)) - if flt(acc.bal_in_company_currency) > 0 - else 0, - "is_period_closing_voucher_entry": 1, - }, - item=acc, - ) - self.update_default_dimensions(gl_entry, acc) - return gl_entry - - def get_gle_for_closing_account(self, acc): - gl_entry = self.get_gl_dict( - { - "company": self.company, - "closing_date": self.posting_date, - "account": self.closing_account_head, - "cost_center": acc.cost_center, - "finance_book": acc.finance_book, - "account_currency": acc.account_currency, - "debit_in_account_currency": abs(flt(acc.bal_in_account_currency)) - if flt(acc.bal_in_account_currency) > 0 - else 0, - "debit": abs(flt(acc.bal_in_company_currency)) if flt(acc.bal_in_company_currency) > 0 else 0, - "credit_in_account_currency": abs(flt(acc.bal_in_account_currency)) - if flt(acc.bal_in_account_currency) < 0 - else 0, - "credit": abs(flt(acc.bal_in_company_currency)) - if flt(acc.bal_in_company_currency) < 0 - else 0, - "is_period_closing_voucher_entry": 1, - }, - item=acc, - ) - self.update_default_dimensions(gl_entry, acc) - return gl_entry - - def get_closing_entries(self, acc): - closing_entry = self.get_gl_dict( - { - "company": self.company, - "closing_date": self.posting_date, - "period_closing_voucher": self.name, - "account": acc.account, - "cost_center": acc.cost_center, - "finance_book": acc.finance_book, - "account_currency": acc.account_currency, - "debit_in_account_currency": flt(acc.debit_in_account_currency), - "debit": flt(acc.debit), - "credit_in_account_currency": flt(acc.credit_in_account_currency), - "credit": flt(acc.credit), - }, - item=acc, + {"voucher_type": "Period Closing Voucher", "voucher_no": self.name, "is_cancelled": 0}, ) - for dimension in self.accounting_dimensions: - closing_entry.update({dimension: acc.get(dimension)}) - return closing_entry - - def update_default_dimensions(self, gl_entry, acc): - if not self.accounting_dimensions: - self.accounting_dimensions = get_accounting_dimensions() - - for dimension in self.accounting_dimensions: - gl_entry.update({dimension: acc.get(dimension)}) - - def get_balances_based_on_dimensions( - self, group_by_account=False, report_type=None, for_aggregation=False, get_opening_entries=False - ): - """Get balance for dimension-wise pl accounts""" - - qb_dimension_fields = ["cost_center", "finance_book", "project"] - - self.accounting_dimensions = get_accounting_dimensions() - for dimension in self.accounting_dimensions: - qb_dimension_fields.append(dimension) - - if group_by_account: - qb_dimension_fields.append("account") - - account_filters = { - "company": self.company, - "is_group": 0, - } - - if report_type: - account_filters.update({"report_type": report_type}) - - accounts = frappe.get_all("Account", filters=account_filters, pluck="name") - - gl_entry = frappe.qb.DocType("GL Entry") - query = frappe.qb.from_(gl_entry).select(gl_entry.account, gl_entry.account_currency) - - if not for_aggregation: - query = query.select( - (Sum(gl_entry.debit_in_account_currency) - Sum(gl_entry.credit_in_account_currency)).as_( - "bal_in_account_currency" - ), - (Sum(gl_entry.debit) - Sum(gl_entry.credit)).as_("bal_in_company_currency"), - ) - else: - query = query.select( - (Sum(gl_entry.debit_in_account_currency)).as_("debit_in_account_currency"), - (Sum(gl_entry.credit_in_account_currency)).as_("credit_in_account_currency"), - (Sum(gl_entry.debit)).as_("debit"), - (Sum(gl_entry.credit)).as_("credit"), - ) - - for dimension in qb_dimension_fields: - query = query.select(gl_entry[dimension]) - - query = query.where( - (gl_entry.company == self.company) - & (gl_entry.is_cancelled == 0) - & (gl_entry.account.isin(accounts)) - ) - - if get_opening_entries: - query = query.where( - gl_entry.posting_date.between(self.get("year_start_date"), self.posting_date) - | gl_entry.is_opening - == "Yes" - ) - else: - query = query.where( - gl_entry.posting_date.between(self.get("year_start_date"), self.posting_date) - & gl_entry.is_opening - == "No" - ) - - if for_aggregation: - query = query.where(gl_entry.voucher_type != "Period Closing Voucher") - - for dimension in qb_dimension_fields: - query = query.groupby(gl_entry[dimension]) - - return query.run(as_dict=1) - - -def process_gl_entries(gl_entries, voucher_name): +def process_gl_and_closing_entries(doc): from erpnext.accounts.general_ledger import make_gl_entries try: + gl_entries = doc.get_pcv_gl_entries() if gl_entries: make_gl_entries(gl_entries, merge_entries=False) - frappe.db.set_value("Period Closing Voucher", voucher_name, "gle_processing_status", "Completed") + + closing_entries = doc.get_account_closing_balances() + make_closing_entries(closing_entries, doc.name, doc.company, doc.period_end_date) + + frappe.db.set_value(doc.doctype, doc.name, "gle_processing_status", "Completed") except Exception as e: frappe.db.rollback() frappe.log_error(e) - frappe.db.set_value("Period Closing Voucher", voucher_name, "gle_processing_status", "Failed") + frappe.db.set_value(doc.doctype, doc.name, "gle_processing_status", "Failed") -def process_closing_entries(gl_entries, closing_entries, voucher_name, company, closing_date): - from erpnext.accounts.doctype.account_closing_balance.account_closing_balance import ( - make_closing_entries, - ) - - try: - if gl_entries + closing_entries: - make_closing_entries(gl_entries + closing_entries, voucher_name, company, closing_date) - except Exception as e: - frappe.db.rollback() - frappe.log_error(e) - - -def make_reverse_gl_entries(voucher_type, voucher_no): +def process_cancellation(voucher_type, voucher_no): from erpnext.accounts.general_ledger import make_reverse_gl_entries try: make_reverse_gl_entries(voucher_type=voucher_type, voucher_no=voucher_no) + delete_closing_entries(voucher_no) frappe.db.set_value("Period Closing Voucher", voucher_no, "gle_processing_status", "Completed") except Exception as e: frappe.db.rollback() frappe.log_error(e) frappe.db.set_value("Period Closing Voucher", voucher_no, "gle_processing_status", "Failed") + + +def delete_closing_entries(voucher_no): + closing_balance = frappe.qb.DocType("Account Closing Balance") + frappe.qb.from_(closing_balance).delete().where( + closing_balance.period_closing_voucher == voucher_no + ).run() + + +@frappe.whitelist() +def get_period_start_end_date(fiscal_year, company): + fy_start_date, fy_end_date = frappe.db.get_value( + "Fiscal Year", fiscal_year, ["year_start_date", "year_end_date"] + ) + prev_closed_period_end_date = get_previous_closed_period_in_current_year(fiscal_year, company) + period_start_date = ( + add_days(prev_closed_period_end_date, 1) if prev_closed_period_end_date else fy_start_date + ) + return period_start_date, fy_end_date + + +def get_previous_closed_period_in_current_year(fiscal_year, company): + prev_closed_period_end_date = frappe.db.get_value( + "Period Closing Voucher", + filters={ + "company": company, + "fiscal_year": fiscal_year, + "docstatus": 1, + }, + fieldname=["period_end_date"], + order_by="period_end_date desc", + ) + return prev_closed_period_end_date diff --git a/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py b/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py index 1bd565e1b36..34e2fdd9082 100644 --- a/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py +++ b/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py @@ -27,6 +27,7 @@ class TestPeriodClosingVoucher(unittest.TestCase): account1="Cash - TPC", account2="Sales - TPC", cost_center=cost_center, + company=company, save=False, ) jv1.company = company @@ -39,6 +40,7 @@ class TestPeriodClosingVoucher(unittest.TestCase): account1="Cost of Goods Sold - TPC", account2="Cash - TPC", cost_center=cost_center, + company=company, save=False, ) jv2.company = company @@ -156,6 +158,7 @@ class TestPeriodClosingVoucher(unittest.TestCase): amount=400, cost_center=cost_center, posting_date="2021-03-15", + company=company, ) jv.company = company jv.finance_book = create_finance_book().name @@ -198,6 +201,7 @@ class TestPeriodClosingVoucher(unittest.TestCase): account1="Cash - TPC", account2="Sales - TPC", cost_center=cost_center, + company=company, save=False, ) jv1.company = company @@ -220,6 +224,7 @@ class TestPeriodClosingVoucher(unittest.TestCase): account1="Cash - TPC", account2="Sales - TPC", cost_center=cost_center1, + company=company, save=False, ) jv1.company = company @@ -232,6 +237,7 @@ class TestPeriodClosingVoucher(unittest.TestCase): account1="Cash - TPC", account2="Sales - TPC", cost_center=cost_center2, + company=company, save=False, ) jv2.company = company @@ -261,6 +267,7 @@ class TestPeriodClosingVoucher(unittest.TestCase): account1="Cash - TPC", account2="Sales - TPC", cost_center=cost_center2, + company=company, save=False, ) @@ -317,16 +324,18 @@ class TestPeriodClosingVoucher(unittest.TestCase): repost_doc.posting_date = today() repost_doc.save() - def make_period_closing_voucher(self, posting_date=None, submit=True): + def make_period_closing_voucher(self, posting_date, submit=True): surplus_account = create_account() cost_center = create_cost_center("Test Cost Center 1") + fy = get_fiscal_year(posting_date, company="Test PCV Company") pcv = frappe.get_doc( { "doctype": "Period Closing Voucher", "transaction_date": posting_date or today(), - "posting_date": posting_date or today(), + "period_start_date": fy[1], + "period_end_date": fy[2], "company": "Test PCV Company", - "fiscal_year": get_fiscal_year(today(), company="Test PCV Company")[0], + "fiscal_year": fy[0], "cost_center": cost_center, "closing_account_head": surplus_account, "remarks": "test", diff --git a/erpnext/accounts/doctype/pos_closing_entry/closing_voucher_details.html b/erpnext/accounts/doctype/pos_closing_entry/closing_voucher_details.html index 983f49563cd..63e88cf44c2 100644 --- a/erpnext/accounts/doctype/pos_closing_entry/closing_voucher_details.html +++ b/erpnext/accounts/doctype/pos_closing_entry/closing_voucher_details.html @@ -12,15 +12,15 @@ - {{ _('Grand Total') }} + {{ _("Grand Total") }} {{ frappe.utils.fmt_money(data.grand_total or '', currency=currency) }} - {{ _('Net Total') }} + {{ _("Net Total") }} {{ frappe.utils.fmt_money(data.net_total or '', currency=currency) }} - {{ _('Total Quantity') }} + {{ _("Total Quantity") }} {{ data.total_quantity or '' }} @@ -44,7 +44,7 @@ {% for d in data.payment_reconciliation %} - {{ d.mode_of_payment }} + {{ _(d.mode_of_payment) }} {{ frappe.utils.fmt_money(d.expected_amount - d.opening_amount, currency=currency) }} {% endfor %} @@ -63,7 +63,7 @@ {{ _("Account") }} - {{ _("Rate") }} + {{ _("Tax Rate") }} {{ _("Amount") }} diff --git a/erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.js b/erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.js index 68a85f7ee96..7504c79141b 100644 --- a/erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.js +++ b/erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.js @@ -80,8 +80,10 @@ frappe.ui.form.on("POS Closing Entry", { ) { reset_values(frm); frappe.run_serially([ + () => frappe.dom.freeze(__("Loading Invoices! Please Wait...")), () => frm.trigger("set_opening_amounts"), () => frm.trigger("get_pos_invoices"), + () => frappe.dom.unfreeze(), ]); } }, @@ -145,7 +147,7 @@ frappe.ui.form.on("POS Closing Entry", { frm.doc.grand_total += flt(doc.grand_total); frm.doc.net_total += flt(doc.net_total); frm.doc.total_quantity += flt(doc.total_qty); - refresh_payments(doc, frm); + refresh_payments(doc, frm, false); refresh_taxes(doc, frm); refresh_fields(frm); set_html_data(frm); @@ -170,7 +172,7 @@ function set_form_data(data, frm) { frm.doc.grand_total += flt(d.grand_total); frm.doc.net_total += flt(d.net_total); frm.doc.total_quantity += flt(d.total_qty); - refresh_payments(d, frm); + refresh_payments(d, frm, true); refresh_taxes(d, frm); }); } @@ -184,7 +186,7 @@ function add_to_pos_transaction(d, frm) { }); } -function refresh_payments(d, frm) { +function refresh_payments(d, frm, is_new) { d.payments.forEach((p) => { const payment = frm.doc.payment_reconciliation.find( (pay) => pay.mode_of_payment === p.mode_of_payment @@ -194,7 +196,7 @@ function refresh_payments(d, frm) { } if (payment) { payment.expected_amount += flt(p.amount); - payment.closing_amount = payment.expected_amount; + if (is_new) payment.closing_amount = payment.expected_amount; payment.difference = payment.closing_amount - payment.expected_amount; } else { frm.add_child("payment_reconciliation", { diff --git a/erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.py b/erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.py index fda868cfe51..4fa8317ff76 100644 --- a/erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.py +++ b/erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.py @@ -124,6 +124,11 @@ class POSClosingEntry(StatusUpdater): def on_submit(self): consolidate_pos_invoices(closing_entry=self) + frappe.publish_realtime( + f"poe_{self.pos_opening_entry}_closed", + self, + docname=f"POS Opening Entry/{self.pos_opening_entry}", + ) def on_cancel(self): unconsolidate_pos_invoices(closing_entry=self) diff --git a/erpnext/accounts/doctype/pos_closing_entry/test_pos_closing_entry.py b/erpnext/accounts/doctype/pos_closing_entry/test_pos_closing_entry.py index e2084e89c43..34585ec200d 100644 --- a/erpnext/accounts/doctype/pos_closing_entry/test_pos_closing_entry.py +++ b/erpnext/accounts/doctype/pos_closing_entry/test_pos_closing_entry.py @@ -39,10 +39,12 @@ class TestPOSClosingEntry(unittest.TestCase): pos_inv1 = create_pos_invoice(rate=3500, do_not_submit=1) pos_inv1.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3500}) + pos_inv1.save() pos_inv1.submit() pos_inv2 = create_pos_invoice(rate=3200, do_not_submit=1) pos_inv2.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3200}) + pos_inv2.save() pos_inv2.submit() pcv_doc = make_closing_entry_from_opening(opening_entry) @@ -68,6 +70,7 @@ class TestPOSClosingEntry(unittest.TestCase): pos_inv = create_pos_invoice(rate=3500, do_not_submit=1, item_name="Test Item", without_item_code=1) pos_inv.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3500}) + pos_inv.save() pos_inv.submit() pcv_doc = make_closing_entry_from_opening(opening_entry) @@ -86,10 +89,12 @@ class TestPOSClosingEntry(unittest.TestCase): pos_inv1 = create_pos_invoice(rate=3500, do_not_submit=1) pos_inv1.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3500}) + pos_inv1.save() pos_inv1.submit() pos_inv2 = create_pos_invoice(rate=3200, do_not_submit=1) pos_inv2.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3200}) + pos_inv2.save() pos_inv2.submit() # make return entry of pos_inv2 @@ -111,10 +116,12 @@ class TestPOSClosingEntry(unittest.TestCase): pos_inv1 = create_pos_invoice(rate=3500, do_not_submit=1) pos_inv1.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3500}) + pos_inv1.save() pos_inv1.submit() pos_inv2 = create_pos_invoice(rate=3200, do_not_submit=1) pos_inv2.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3200}) + pos_inv2.save() pos_inv2.submit() pcv_doc = make_closing_entry_from_opening(opening_entry) @@ -165,6 +172,7 @@ class TestPOSClosingEntry(unittest.TestCase): opening_entry = create_opening_entry(pos_profile, test_user.name) pos_inv1 = create_pos_invoice(rate=350, do_not_submit=1, pos_profile=pos_profile.name) pos_inv1.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3500}) + pos_inv1.save() pos_inv1.submit() # if in between a mandatory accounting dimension is added to the POS Profile then @@ -218,14 +226,27 @@ class TestPOSClosingEntry(unittest.TestCase): opening_entry = create_opening_entry(pos_profile, test_user.name) pos_inv = create_pos_invoice( - item_code=item_code, qty=5, rate=300, use_serial_batch_fields=1, batch_no=batch_no + item_code=item_code, + qty=5, + rate=300, + use_serial_batch_fields=1, + batch_no=batch_no, + do_not_submit=True, ) + pos_inv.payments[0].amount = pos_inv.grand_total + pos_inv.save() + pos_inv.submit() pos_inv2 = create_pos_invoice( - item_code=item_code, qty=5, rate=300, use_serial_batch_fields=1, batch_no=batch_no + item_code=item_code, + qty=5, + rate=300, + use_serial_batch_fields=1, + batch_no=batch_no, + do_not_submit=True, ) - - batch_qty = frappe.db.get_value("Batch", batch_no, "batch_qty") - self.assertEqual(batch_qty, 10) + pos_inv2.payments[0].amount = pos_inv2.grand_total + pos_inv2.save() + pos_inv2.submit() batch_qty_with_pos = get_batch_qty(batch_no, "_Test Warehouse - _TC", item_code) self.assertEqual(batch_qty_with_pos, 0.0) @@ -256,9 +277,6 @@ class TestPOSClosingEntry(unittest.TestCase): pcv_doc.reload() pcv_doc.cancel() - batch_qty = frappe.db.get_value("Batch", batch_no, "batch_qty") - self.assertEqual(batch_qty, 10) - batch_qty_with_pos = get_batch_qty(batch_no, "_Test Warehouse - _TC", item_code) self.assertEqual(batch_qty_with_pos, 0.0) diff --git a/erpnext/accounts/doctype/pos_closing_entry_taxes/pos_closing_entry_taxes.json b/erpnext/accounts/doctype/pos_closing_entry_taxes/pos_closing_entry_taxes.json index 42e7d0ef965..7e3e9c259f1 100644 --- a/erpnext/accounts/doctype/pos_closing_entry_taxes/pos_closing_entry_taxes.json +++ b/erpnext/accounts/doctype/pos_closing_entry_taxes/pos_closing_entry_taxes.json @@ -14,7 +14,7 @@ "fieldname": "rate", "fieldtype": "Percent", "in_list_view": 1, - "label": "Rate", + "label": "Tax Rate", "read_only": 1 }, { diff --git a/erpnext/accounts/doctype/pos_invoice/pos_invoice.js b/erpnext/accounts/doctype/pos_invoice/pos_invoice.js index a6e8bfa6286..6a537a2559a 100644 --- a/erpnext/accounts/doctype/pos_invoice/pos_invoice.js +++ b/erpnext/accounts/doctype/pos_invoice/pos_invoice.js @@ -40,10 +40,24 @@ erpnext.selling.POSInvoiceController = class POSInvoiceController extends erpnex }; }); + this.frm.set_query("item_code", "items", function (doc) { + return { + query: "erpnext.accounts.doctype.pos_invoice.pos_invoice.item_query", + filters: { + has_variants: ["=", 0], + is_sales_item: ["=", 1], + disabled: ["=", 0], + is_fixed_asset: ["=", 0], + pos_profile: ["=", doc.pos_profile], + }, + }; + }); + erpnext.accounts.dimensions.setup_dimension_filters(this.frm, this.frm.doctype); } onload_post_render(frm) { + super.onload_post_render(); this.pos_profile(frm); } @@ -51,7 +65,7 @@ erpnext.selling.POSInvoiceController = class POSInvoiceController extends erpnex super.refresh(); if (doc.docstatus == 1 && !doc.is_return) { - this.frm.add_custom_button(__("Return"), this.make_sales_return, __("Create")); + this.frm.add_custom_button(__("Return"), this.make_sales_return.bind(this), __("Create")); this.frm.page.set_inner_btn_group_as_primary(__("Create")); } diff --git a/erpnext/accounts/doctype/pos_invoice/pos_invoice.json b/erpnext/accounts/doctype/pos_invoice/pos_invoice.json index d7b173667ec..c15309df294 100644 --- a/erpnext/accounts/doctype/pos_invoice/pos_invoice.json +++ b/erpnext/accounts/doctype/pos_invoice/pos_invoice.json @@ -48,6 +48,7 @@ "shipping_address", "company_address", "company_address_display", + "company_contact_person", "currency_and_price_list", "currency", "conversion_rate", @@ -1558,12 +1559,19 @@ "fieldname": "update_billed_amount_in_delivery_note", "fieldtype": "Check", "label": "Update Billed Amount in Delivery Note" + }, + { + "fieldname": "company_contact_person", + "fieldtype": "Link", + "label": "Company Contact Person", + "options": "Contact", + "print_hide": 1 } ], "icon": "fa fa-file-text", "is_submittable": 1, "links": [], - "modified": "2024-03-20 16:00:34.268756", + "modified": "2024-11-26 13:10:50.309570", "modified_by": "Administrator", "module": "Accounts", "name": "POS Invoice", @@ -1615,6 +1623,5 @@ "states": [], "timeline_field": "customer", "title_field": "title", - "track_changes": 1, - "track_seen": 1 -} \ No newline at end of file + "track_changes": 1 +} diff --git a/erpnext/accounts/doctype/pos_invoice/pos_invoice.py b/erpnext/accounts/doctype/pos_invoice/pos_invoice.py index d517c9d6da2..58c14a2bc5d 100644 --- a/erpnext/accounts/doctype/pos_invoice/pos_invoice.py +++ b/erpnext/accounts/doctype/pos_invoice/pos_invoice.py @@ -6,6 +6,7 @@ import frappe from frappe import _, bold from frappe.query_builder.functions import IfNull, Sum from frappe.utils import cint, flt, get_link_to_form, getdate, nowdate +from frappe.utils.nestedset import get_descendants_of from erpnext.accounts.doctype.loyalty_program.loyalty_program import validate_loyalty_points from erpnext.accounts.doctype.payment_request.payment_request import make_payment_request @@ -15,9 +16,14 @@ from erpnext.accounts.doctype.sales_invoice.sales_invoice import ( update_multi_mode_option, ) from erpnext.accounts.party import get_due_date, get_party_account +from erpnext.controllers.queries import item_query as _item_query from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos +class PartialPaymentValidationError(frappe.ValidationError): + pass + + class POSInvoice(SalesInvoice): # begin: auto-generated types # This code is auto-generated. Do not modify anything in this block. @@ -30,12 +36,8 @@ class POSInvoice(SalesInvoice): from erpnext.accounts.doctype.payment_schedule.payment_schedule import PaymentSchedule from erpnext.accounts.doctype.pos_invoice_item.pos_invoice_item import POSInvoiceItem from erpnext.accounts.doctype.pricing_rule_detail.pricing_rule_detail import PricingRuleDetail - from erpnext.accounts.doctype.sales_invoice_advance.sales_invoice_advance import ( - SalesInvoiceAdvance, - ) - from erpnext.accounts.doctype.sales_invoice_payment.sales_invoice_payment import ( - SalesInvoicePayment, - ) + from erpnext.accounts.doctype.sales_invoice_advance.sales_invoice_advance import SalesInvoiceAdvance + from erpnext.accounts.doctype.sales_invoice_payment.sales_invoice_payment import SalesInvoicePayment from erpnext.accounts.doctype.sales_invoice_timesheet.sales_invoice_timesheet import ( SalesInvoiceTimesheet, ) @@ -73,6 +75,7 @@ class POSInvoice(SalesInvoice): company: DF.Link company_address: DF.Link | None company_address_display: DF.SmallText | None + company_contact_person: DF.Link | None consolidated_invoice: DF.Link | None contact_display: DF.SmallText | None contact_email: DF.Data | None @@ -193,6 +196,7 @@ class POSInvoice(SalesInvoice): # run on validate method of selling controller super(SalesInvoice, self).validate() + self.validate_pos_opening_entry() self.validate_auto_set_posting_time() self.validate_mode_of_payment() self.validate_uom_is_integer("stock_uom", "stock_qty") @@ -211,6 +215,7 @@ class POSInvoice(SalesInvoice): self.validate_payment_amount() self.validate_loyalty_transaction() self.validate_company_with_pos_company() + self.validate_full_payment() if self.coupon_code: from erpnext.accounts.doctype.pricing_rule.utils import validate_coupon_code @@ -316,6 +321,18 @@ class POSInvoice(SalesInvoice): _("Payment related to {0} is not completed").format(pay.mode_of_payment) ) + def validate_pos_opening_entry(self): + opening_entries = frappe.get_list( + "POS Opening Entry", filters={"pos_profile": self.pos_profile, "status": "Open", "docstatus": 1} + ) + if len(opening_entries) == 0: + frappe.throw( + title=_("POS Opening Entry Missing"), + msg=_("No open POS Opening Entry found for POS Profile {0}.").format( + frappe.bold(self.pos_profile) + ), + ) + def validate_stock_availablility(self): if self.is_return: return @@ -449,7 +466,7 @@ class POSInvoice(SalesInvoice): if self.is_return and entry.amount > 0: frappe.throw(_("Row #{0} (Payment Table): Amount must be negative").format(entry.idx)) - if self.is_return: + if self.is_return and self.docstatus != 0: invoice_total = self.rounded_total or self.grand_total total_amount_in_payments = flt(total_amount_in_payments, self.precision("grand_total")) if total_amount_in_payments and total_amount_in_payments < invoice_total: @@ -478,6 +495,23 @@ class POSInvoice(SalesInvoice): if self.redeem_loyalty_points and self.loyalty_program and self.loyalty_points: validate_loyalty_points(self, self.loyalty_points) + def validate_full_payment(self): + invoice_total = flt(self.rounded_total) or flt(self.grand_total) + is_partial_payment_allowed = frappe.db.get_value( + "POS Profile", self.pos_profile, "allow_partial_payment" + ) + + if self.docstatus == 1 and not is_partial_payment_allowed: + if self.is_return and self.paid_amount != invoice_total: + frappe.throw( + msg=_("Partial Payment in POS Invoice is not allowed."), exc=PartialPaymentValidationError + ) + + if self.paid_amount < invoice_total: + frappe.throw( + msg=_("Partial Payment in POS Invoice is not allowed."), exc=PartialPaymentValidationError + ) + def set_status(self, update=False, status=None, update_modified=True): if self.is_new(): if self.get("amended_from"): @@ -837,3 +871,30 @@ def add_return_modes(doc, pos_profile): ]: payment_mode = get_mode_of_payment_info(mode_of_payment, doc.company) append_payment(payment_mode[0]) + + +@frappe.whitelist() +@frappe.validate_and_sanitize_search_inputs +def item_query(doctype, txt, searchfield, start, page_len, filters, as_dict=False): + if pos_profile := filters.get("pos_profile")[1]: + pos_profile = frappe.get_cached_doc("POS Profile", pos_profile) + if item_groups := get_item_group(pos_profile): + filters["item_group"] = ["in", tuple(item_groups)] + + del filters["pos_profile"] + + else: + filters.pop("pos_profile", None) + + return _item_query(doctype, txt, searchfield, start, page_len, filters, as_dict) + + +def get_item_group(pos_profile): + item_groups = [] + if pos_profile.get("item_groups"): + # Get items based on the item groups defined in the POS profile + for row in pos_profile.get("item_groups"): + item_groups.append(row.item_group) + item_groups.extend(get_descendants_of("Item Group", row.item_group)) + + return list(set(item_groups)) diff --git a/erpnext/accounts/doctype/pos_invoice/test_pos_invoice.py b/erpnext/accounts/doctype/pos_invoice/test_pos_invoice.py index f210a6434cf..cfe805be4ce 100644 --- a/erpnext/accounts/doctype/pos_invoice/test_pos_invoice.py +++ b/erpnext/accounts/doctype/pos_invoice/test_pos_invoice.py @@ -7,7 +7,7 @@ import unittest import frappe from frappe import _ -from erpnext.accounts.doctype.pos_invoice.pos_invoice import make_sales_return +from erpnext.accounts.doctype.pos_invoice.pos_invoice import PartialPaymentValidationError, make_sales_return from erpnext.accounts.doctype.pos_profile.test_pos_profile import make_pos_profile from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice from erpnext.stock.doctype.item.test_item import make_item @@ -26,6 +26,12 @@ class TestPOSInvoice(unittest.TestCase): make_stock_entry(target="_Test Warehouse - _TC", item_code="_Test Item", qty=800, basic_rate=100) frappe.db.sql("delete from `tabTax Rule`") + from erpnext.accounts.doctype.pos_closing_entry.test_pos_closing_entry import init_user_and_profile + from erpnext.accounts.doctype.pos_opening_entry.test_pos_opening_entry import create_opening_entry + + cls.test_user, cls.pos_profile = init_user_and_profile() + create_opening_entry(cls.pos_profile, cls.test_user) + def tearDown(self): if frappe.session.user != "Administrator": frappe.set_user("Administrator") @@ -93,7 +99,7 @@ class TestPOSInvoice(unittest.TestCase): inv.save() - self.assertEqual(inv.net_total, 4298.25) + self.assertEqual(inv.net_total, 4298.24) self.assertEqual(inv.grand_total, 4900.00) def test_tax_calculation_with_multiple_items(self): @@ -313,7 +319,7 @@ class TestPOSInvoice(unittest.TestCase): ) pos.append( - "payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 1000, "default": 1} + "payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 2000, "default": 1} ) pos.insert() @@ -324,6 +330,11 @@ class TestPOSInvoice(unittest.TestCase): # partial return 1 pos_return1.get("items")[0].qty = -1 + pos_return1.set("payments", []) + pos_return1.append( + "payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": -1000, "default": 1} + ) + pos_return1.paid_amount = -1000 pos_return1.submit() pos_return1.reload() @@ -338,6 +349,11 @@ class TestPOSInvoice(unittest.TestCase): # partial return 2 pos_return2 = make_sales_return(pos.name) + pos_return2.set("payments", []) + pos_return2.append( + "payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": -1000, "default": 1} + ) + pos_return2.paid_amount = -1000 pos_return2.submit() self.assertEqual(pos_return2.get("items")[0].qty, -1) @@ -373,6 +389,15 @@ class TestPOSInvoice(unittest.TestCase): inv.payments = [] self.assertRaises(frappe.ValidationError, inv.insert) + def test_partial_payment(self): + pos_inv = create_pos_invoice(rate=10000, do_not_save=1) + pos_inv.append( + "payments", + {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 9000}, + ) + pos_inv.insert() + self.assertRaises(PartialPaymentValidationError, pos_inv.submit) + def test_serialized_item_transaction(self): from erpnext.stock.doctype.stock_entry.test_stock_entry import make_serialized_item @@ -581,7 +606,13 @@ class TestPOSInvoice(unittest.TestCase): "Test Loyalty Customer", company="_Test Company", loyalty_program="Test Single Loyalty" ) - inv = create_pos_invoice(customer="Test Loyalty Customer", rate=10000) + inv = create_pos_invoice(customer="Test Loyalty Customer", rate=10000, do_not_save=1) + inv.append( + "payments", + {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 10000}, + ) + inv.insert() + inv.submit() lpe = frappe.get_doc( "Loyalty Point Entry", @@ -607,7 +638,13 @@ class TestPOSInvoice(unittest.TestCase): ) # add 10 loyalty points - create_pos_invoice(customer="Test Loyalty Customer", rate=10000) + pos_inv = create_pos_invoice(customer="Test Loyalty Customer", rate=10000, do_not_save=1) + pos_inv.append( + "payments", + {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 10000}, + ) + pos_inv.paid_amount = 10000 + pos_inv.submit() before_lp_details = get_loyalty_program_details_with_points( "Test Loyalty Customer", company="_Test Company", loyalty_program="Test Single Loyalty" @@ -641,10 +678,12 @@ class TestPOSInvoice(unittest.TestCase): test_user, pos_profile = init_user_and_profile() pos_inv = create_pos_invoice(rate=300, additional_discount_percentage=10, do_not_submit=1) pos_inv.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 270}) + pos_inv.save() pos_inv.submit() pos_inv2 = create_pos_invoice(rate=3200, do_not_submit=1) pos_inv2.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3200}) + pos_inv2.save() pos_inv2.submit() consolidate_pos_invoices() @@ -676,6 +715,7 @@ class TestPOSInvoice(unittest.TestCase): "included_in_print_rate": 1, }, ) + pos_inv.save() pos_inv.submit() pos_inv2 = create_pos_invoice(rate=300, qty=2, do_not_submit=1) @@ -692,6 +732,7 @@ class TestPOSInvoice(unittest.TestCase): "included_in_print_rate": 1, }, ) + pos_inv2.save() pos_inv2.submit() consolidate_pos_invoices() @@ -744,6 +785,7 @@ class TestPOSInvoice(unittest.TestCase): "included_in_print_rate": 1, }, ) + pos_inv2.save() pos_inv2.submit() consolidate_pos_invoices() @@ -774,7 +816,10 @@ class TestPOSInvoice(unittest.TestCase): # POS Invoice 1, for the batch without bundle pos_inv1 = create_pos_invoice(item="_BATCH ITEM Test For Reserve", rate=300, qty=15, do_not_save=1) - + pos_inv1.append( + "payments", + {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 4500}, + ) pos_inv1.items[0].batch_no = batch_no pos_inv1.save() pos_inv1.submit() @@ -790,8 +835,14 @@ class TestPOSInvoice(unittest.TestCase): # POS Invoice 2, for the batch with bundle pos_inv2 = create_pos_invoice( - item="_BATCH ITEM Test For Reserve", rate=300, qty=10, batch_no=batch_no + item="_BATCH ITEM Test For Reserve", rate=300, qty=10, batch_no=batch_no, do_not_save=1 ) + pos_inv2.append( + "payments", + {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3000}, + ) + pos_inv2.save() + pos_inv2.submit() pos_inv2.reload() self.assertTrue(pos_inv2.items[0].serial_and_batch_bundle) @@ -826,6 +877,10 @@ class TestPOSInvoice(unittest.TestCase): pos_inv1 = create_pos_invoice( item=item.name, rate=300, qty=1, do_not_submit=1, batch_no="TestBatch 01" ) + pos_inv1.append( + "payments", + {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 300}, + ) pos_inv1.save() pos_inv1.submit() @@ -835,7 +890,8 @@ class TestPOSInvoice(unittest.TestCase): { "item_code": item.name, "warehouse": pos_inv2.items[0].warehouse, - "voucher_type": "Delivery Note", + "voucher_type": "POS Invoice", + "voucher_no": pos_inv2.name, "qty": 2, "avg_rate": 300, "batches": frappe._dict({"TestBatch 01": 2}), diff --git a/erpnext/accounts/doctype/pos_invoice_item/pos_invoice_item.json b/erpnext/accounts/doctype/pos_invoice_item/pos_invoice_item.json index 799a112c0c1..0a0be67edc2 100644 --- a/erpnext/accounts/doctype/pos_invoice_item/pos_invoice_item.json +++ b/erpnext/accounts/doctype/pos_invoice_item/pos_invoice_item.json @@ -858,7 +858,7 @@ ], "istable": 1, "links": [], - "modified": "2024-05-07 15:56:53.343317", + "modified": "2024-05-07 15:56:54.343317", "modified_by": "Administrator", "module": "Accounts", "name": "POS Invoice Item", diff --git a/erpnext/accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.py b/erpnext/accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.py index aecdac0b3a1..a8eba648545 100644 --- a/erpnext/accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.py +++ b/erpnext/accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.py @@ -8,11 +8,14 @@ import frappe from frappe import _ from frappe.model.document import Document from frappe.model.mapper import map_child_doc, map_doc +from frappe.query_builder import DocType from frappe.utils import cint, flt, get_time, getdate, nowdate, nowtime from frappe.utils.background_jobs import enqueue, is_job_enqueued from frappe.utils.scheduler import is_scheduler_inactive -from erpnext.accounts.doctype.pos_profile.pos_profile import required_accounting_dimensions +from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import ( + get_checks_for_pl_and_bs_accounts, +) class POSInvoiceMergeLog(Document): @@ -116,15 +119,18 @@ class POSInvoiceMergeLog(Document): returns = [d for d in pos_invoice_docs if d.get("is_return") == 1] sales = [d for d in pos_invoice_docs if d.get("is_return") == 0] - sales_invoice, credit_note = "", "" - if returns: - credit_note = self.process_merging_into_credit_note(returns) - + sales_invoice, credit_notes = "", {} + sales_invoice_doc = None if sales: - sales_invoice = self.process_merging_into_sales_invoice(sales) + sales_invoice_doc = self.process_merging_into_sales_invoice(sales) + sales_invoice = sales_invoice_doc.name + + if returns: + distinguished_returns = self.distinguish_return_pos_invoices(returns, sales_invoice_doc) + credit_notes = self.process_merging_into_credit_notes(distinguished_returns) self.save() # save consolidated_sales_invoice & consolidated_credit_note ref in merge log - self.update_pos_invoices(pos_invoice_docs, sales_invoice, credit_note) + self.update_pos_invoices(pos_invoice_docs, sales_invoice, credit_notes) def on_cancel(self): pos_invoice_docs = [frappe.get_cached_doc("POS Invoice", d.pos_invoice) for d in self.pos_invoices] @@ -132,6 +138,7 @@ class POSInvoiceMergeLog(Document): self.update_pos_invoices(pos_invoice_docs) self.serial_and_batch_bundle_reference_for_pos_invoice() self.cancel_linked_invoices() + self.delink_serial_and_batch_bundle() def process_merging_into_sales_invoice(self, data): sales_invoice = self.get_new_sales_invoice() @@ -139,33 +146,64 @@ class POSInvoiceMergeLog(Document): sales_invoice.is_consolidated = 1 sales_invoice.set_posting_time = 1 - sales_invoice.posting_date = getdate(self.posting_date) - sales_invoice.posting_time = get_time(self.posting_time) + + if not sales_invoice.posting_date: + sales_invoice.posting_date = getdate(self.posting_date) + + if not sales_invoice.posting_time: + sales_invoice.posting_time = get_time(self.posting_time) + sales_invoice.save() sales_invoice.submit() self.consolidated_invoice = sales_invoice.name - return sales_invoice.name + return sales_invoice - def process_merging_into_credit_note(self, data): - credit_note = self.get_new_sales_invoice() - credit_note.is_return = 1 + def process_merging_into_credit_notes(self, data): + credit_notes = {} + for key, value in data.items(): + if not value: + continue - credit_note = self.merge_pos_invoice_into(credit_note, data) + credit_note = self.get_new_sales_invoice() + credit_note.is_return = 1 - credit_note.is_consolidated = 1 - credit_note.set_posting_time = 1 - credit_note.posting_date = getdate(self.posting_date) - credit_note.posting_time = get_time(self.posting_time) - # TODO: return could be against multiple sales invoice which could also have been consolidated? - # credit_note.return_against = self.consolidated_invoice - credit_note.save() - credit_note.submit() + credit_note = self.merge_pos_invoice_into(credit_note, value) + credit_note.return_against = key - self.consolidated_credit_note = credit_note.name + credit_note.is_consolidated = 1 + credit_note.set_posting_time = 1 + credit_note.posting_date = getdate(self.posting_date) + credit_note.posting_time = get_time(self.posting_time) + # TODO: return could be against multiple sales invoice which could also have been consolidated? + # credit_note.return_against = self.consolidated_invoice + credit_note.save() + credit_note.submit() - return credit_note.name + self.consolidated_credit_note = credit_note.name + credit_notes[credit_note.name] = [d.name for d in value] + + return credit_notes + + def distinguish_return_pos_invoices(self, data, sales_invoice_doc=None): + return_invoices = {} + + return_invoices[sales_invoice_doc.name if sales_invoice_doc else None] = [] + + for doc in data: + sales_invoices_of_return_against = frappe.db.get_value( + "POS Invoice", doc.return_against, "consolidated_invoice" + ) + if sales_invoices_of_return_against: + if sales_invoices_of_return_against in return_invoices: + return_invoices[sales_invoices_of_return_against].append(doc) + else: + return_invoices[sales_invoices_of_return_against] = [doc] + else: + return_invoices[sales_invoice_doc.name if sales_invoice_doc else None].append(doc) + + return return_invoices def merge_pos_invoice_into(self, invoice, data): items, payments, taxes = [], [], [] @@ -180,6 +218,10 @@ class POSInvoiceMergeLog(Document): for doc in data: map_doc(doc, invoice, table_map={"doctype": invoice.doctype}) + if doc.get("posting_date"): + invoice.posting_date = getdate(doc.posting_date) + invoice.posting_time = get_time(doc.posting_time) + if doc.redeem_loyalty_points: invoice.loyalty_redemption_account = doc.loyalty_redemption_account invoice.loyalty_redemption_cost_center = doc.loyalty_redemption_cost_center @@ -187,33 +229,20 @@ class POSInvoiceMergeLog(Document): loyalty_amount_sum += doc.loyalty_amount for item in doc.get("items"): - found = False - for i in items: - if ( - i.item_code == item.item_code - and not i.serial_and_batch_bundle - and not i.serial_no - and not i.batch_no - and i.uom == item.uom - and i.net_rate == item.net_rate - and i.warehouse == item.warehouse - ): - found = True - i.qty = i.qty + item.qty - i.amount = i.amount + item.net_amount - i.net_amount = i.amount - i.base_amount = i.base_amount + item.base_net_amount - i.base_net_amount = i.base_amount - - if not found: - item.rate = item.net_rate - item.amount = item.net_amount - item.base_amount = item.base_net_amount - item.price_list_rate = 0 - si_item = map_child_doc(item, invoice, {"doctype": "Sales Invoice Item"}) - if item.serial_and_batch_bundle: - si_item.serial_and_batch_bundle = item.serial_and_batch_bundle - items.append(si_item) + item.rate = item.net_rate + item.amount = item.net_amount + item.base_amount = item.base_net_amount + item.price_list_rate = 0 + si_item = map_child_doc(item, invoice, {"doctype": "Sales Invoice Item"}) + si_item.pos_invoice = doc.name + si_item.pos_invoice_item = item.name + if doc.is_return: + si_item.sales_invoice_item = get_sales_invoice_item( + doc.return_against, item.pos_invoice_item + ) + if item.serial_and_batch_bundle: + si_item.serial_and_batch_bundle = item.serial_and_batch_bundle + items.append(si_item) for tax in doc.get("taxes"): found = False @@ -270,22 +299,23 @@ class POSInvoiceMergeLog(Document): invoice.disable_rounded_total = cint( frappe.db.get_value("POS Profile", invoice.pos_profile, "disable_rounded_total") ) - accounting_dimensions = required_accounting_dimensions() + accounting_dimensions = get_checks_for_pl_and_bs_accounts() + accounting_dimensions_fields = [d.fieldname for d in accounting_dimensions] dimension_values = frappe.db.get_value( - "POS Profile", {"name": invoice.pos_profile}, accounting_dimensions, as_dict=1 + "POS Profile", {"name": invoice.pos_profile}, accounting_dimensions_fields, as_dict=1 ) for dimension in accounting_dimensions: - dimension_value = dimension_values.get(dimension) + dimension_value = dimension_values.get(dimension.fieldname) - if not dimension_value: + if not dimension_value and (dimension.mandatory_for_pl or dimension.mandatory_for_bs): frappe.throw( _("Please set Accounting Dimension {} in {}").format( - frappe.bold(frappe.unscrub(dimension)), + frappe.bold(dimension.label), frappe.get_desk_link("POS Profile", invoice.pos_profile), ) ) - invoice.set(dimension, dimension_value) + invoice.set(dimension.fieldname, dimension_value) if self.merge_invoices_based_on == "Customer Group": invoice.flags.ignore_pos_profile = True @@ -297,19 +327,21 @@ class POSInvoiceMergeLog(Document): sales_invoice = frappe.new_doc("Sales Invoice") sales_invoice.customer = self.customer sales_invoice.is_pos = 1 + sales_invoice.posting_date = None + sales_invoice.posting_time = None return sales_invoice - def update_pos_invoices(self, invoice_docs, sales_invoice="", credit_note=""): + def update_pos_invoices(self, invoice_docs, sales_invoice="", credit_notes=None): for doc in invoice_docs: doc.load_from_db() - doc.update( - { - "consolidated_invoice": None - if self.docstatus == 2 - else (credit_note if doc.is_return else sales_invoice) - } - ) + inv = sales_invoice + if doc.is_return: + for key, value in credit_notes.items(): + if doc.name in value: + inv = key + break + doc.update({"consolidated_invoice": None if self.docstatus == 2 else inv}) doc.set_status(update=True) doc.save() @@ -319,8 +351,45 @@ class POSInvoiceMergeLog(Document): for table_name in ["items", "packed_items"]: pos_invoice.set_serial_and_batch_bundle(table_name) + def delink_serial_and_batch_bundle(self): + bundles = self.get_serial_and_batch_bundles() + if not bundles: + return + + sle_table = frappe.qb.DocType("Stock Ledger Entry") + query = ( + frappe.qb.update(sle_table) + .set(sle_table.serial_and_batch_bundle, None) + .where(sle_table.serial_and_batch_bundle.isin(bundles) & sle_table.is_cancelled == 1) + ) + + query.run() + + def get_serial_and_batch_bundles(self): + pos_invoices = [] + for d in self.pos_invoices: + pos_invoices.append(d.pos_invoice) + + if pos_invoices: + return frappe.get_all( + "POS Invoice Item", + filters={ + "docstatus": 1, + "parent": ["in", pos_invoices], + "serial_and_batch_bundle": ["is", "set"], + }, + pluck="serial_and_batch_bundle", + ) + + return [] + def cancel_linked_invoices(self): - for si_name in [self.consolidated_invoice, self.consolidated_credit_note]: + invoices = [self.consolidated_invoice, self.consolidated_credit_note] + if not invoices: + return + + invoices.reverse() + for si_name in invoices: if not si_name: continue si = frappe.get_doc("Sales Invoice", si_name) @@ -438,7 +507,9 @@ def split_invoices(invoices): if not item.serial_no and not item.serial_and_batch_bundle: continue - return_against_is_added = any(d for d in _invoices if d.pos_invoice == pos_invoice.return_against) + return_against_is_added = any( + d for d in _invoices if d and d[0].pos_invoice == pos_invoice.return_against + ) if return_against_is_added: break @@ -501,6 +572,9 @@ def cancel_merge_logs(merge_logs, closing_entry=None): try: for log in merge_logs: merge_log = frappe.get_doc("POS Invoice Merge Log", log) + if merge_log.docstatus == 2: + continue + merge_log.flags.ignore_permissions = True merge_log.cancel() @@ -559,3 +633,26 @@ def get_error_message(message) -> str: return message["message"] except Exception: return str(message) + + +def get_sales_invoice_item(return_against_pos_invoice, pos_invoice_item): + try: + SalesInvoice = DocType("Sales Invoice") + SalesInvoiceItem = DocType("Sales Invoice Item") + + query = ( + frappe.qb.from_(SalesInvoice) + .from_(SalesInvoiceItem) + .select(SalesInvoiceItem.name) + .where( + (SalesInvoice.name == SalesInvoiceItem.parent) + & (SalesInvoice.is_return == 0) + & (SalesInvoiceItem.pos_invoice == return_against_pos_invoice) + & (SalesInvoiceItem.pos_invoice_item == pos_invoice_item) + ) + ) + + result = query.run(as_dict=True) + return result[0].name if result else None + except Exception: + return None diff --git a/erpnext/accounts/doctype/pos_invoice_merge_log/test_pos_invoice_merge_log.py b/erpnext/accounts/doctype/pos_invoice_merge_log/test_pos_invoice_merge_log.py index 20f6ddb5ba9..e0d37436be5 100644 --- a/erpnext/accounts/doctype/pos_invoice_merge_log/test_pos_invoice_merge_log.py +++ b/erpnext/accounts/doctype/pos_invoice_merge_log/test_pos_invoice_merge_log.py @@ -28,14 +28,17 @@ class TestPOSInvoiceMergeLog(unittest.TestCase): pos_inv = create_pos_invoice(rate=300, do_not_submit=1) pos_inv.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 300}) + pos_inv.save() pos_inv.submit() pos_inv2 = create_pos_invoice(rate=3200, do_not_submit=1) pos_inv2.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3200}) + pos_inv2.save() pos_inv2.submit() pos_inv3 = create_pos_invoice(customer="_Test Customer 2", rate=2300, do_not_submit=1) pos_inv3.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 2300}) + pos_inv3.save() pos_inv3.submit() consolidate_pos_invoices() @@ -61,14 +64,17 @@ class TestPOSInvoiceMergeLog(unittest.TestCase): pos_inv = create_pos_invoice(rate=300, do_not_submit=1) pos_inv.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 300}) + pos_inv.save() pos_inv.submit() pos_inv2 = create_pos_invoice(rate=3200, do_not_submit=1) pos_inv2.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3200}) + pos_inv2.save() pos_inv2.submit() pos_inv3 = create_pos_invoice(customer="_Test Customer 2", rate=2300, do_not_submit=1) pos_inv3.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 2300}) + pos_inv3.save() pos_inv3.submit() pos_inv_cn = make_sales_return(pos_inv.name) @@ -122,6 +128,8 @@ class TestPOSInvoiceMergeLog(unittest.TestCase): }, ) inv.insert() + inv.payments[0].amount = inv.grand_total + inv.save() inv.submit() inv2 = create_pos_invoice(qty=1, rate=100, do_not_save=True) @@ -138,6 +146,8 @@ class TestPOSInvoiceMergeLog(unittest.TestCase): }, ) inv2.insert() + inv2.payments[0].amount = inv.grand_total + inv2.save() inv2.submit() consolidate_pos_invoices() @@ -272,7 +282,7 @@ class TestPOSInvoiceMergeLog(unittest.TestCase): inv2.submit() inv3 = create_pos_invoice(qty=3, rate=600, do_not_save=True) - inv3.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 1000}) + inv3.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 1800}) inv3.insert() inv3.submit() @@ -280,8 +290,8 @@ class TestPOSInvoiceMergeLog(unittest.TestCase): inv.load_from_db() consolidated_invoice = frappe.get_doc("Sales Invoice", inv.consolidated_invoice) - self.assertEqual(consolidated_invoice.outstanding_amount, 800) - self.assertNotEqual(consolidated_invoice.status, "Paid") + self.assertNotEqual(consolidated_invoice.outstanding_amount, 800) + self.assertEqual(consolidated_invoice.status, "Paid") finally: frappe.set_user("Administrator") @@ -343,7 +353,7 @@ class TestPOSInvoiceMergeLog(unittest.TestCase): inv.load_from_db() consolidated_invoice = frappe.get_doc("Sales Invoice", inv.consolidated_invoice) self.assertEqual(consolidated_invoice.status, "Return") - self.assertEqual(consolidated_invoice.rounding_adjustment, -0.001) + self.assertEqual(consolidated_invoice.rounding_adjustment, -0.002) finally: frappe.set_user("Administrator") @@ -416,6 +426,7 @@ class TestPOSInvoiceMergeLog(unittest.TestCase): do_not_submit=1, ) pos_inv.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 100}) + pos_inv.save() pos_inv.submit() pos_inv_cn = make_sales_return(pos_inv.name) @@ -430,6 +441,7 @@ class TestPOSInvoiceMergeLog(unittest.TestCase): do_not_submit=1, ) pos_inv2.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 100}) + pos_inv2.save() pos_inv2.submit() consolidate_pos_invoices() diff --git a/erpnext/accounts/doctype/pos_opening_entry/pos_opening_entry.py b/erpnext/accounts/doctype/pos_opening_entry/pos_opening_entry.py index 10b07c2c800..7f1890ceabf 100644 --- a/erpnext/accounts/doctype/pos_opening_entry/pos_opening_entry.py +++ b/erpnext/accounts/doctype/pos_opening_entry/pos_opening_entry.py @@ -70,3 +70,6 @@ class POSOpeningEntry(StatusUpdater): def on_submit(self): self.set_status(update=True) + + def on_cancel(self): + self.set_status(update=True) diff --git a/erpnext/accounts/doctype/pos_profile/pos_profile.json b/erpnext/accounts/doctype/pos_profile/pos_profile.json index 994b6776e3c..9ed39322f4f 100644 --- a/erpnext/accounts/doctype/pos_profile/pos_profile.json +++ b/erpnext/accounts/doctype/pos_profile/pos_profile.json @@ -23,11 +23,14 @@ "hide_unavailable_items", "auto_add_item_to_cart", "validate_stock_on_save", + "print_receipt_on_order_complete", "column_break_16", "update_stock", "ignore_pricing_rule", "allow_rate_change", "allow_discount_change", + "disable_grand_total_to_default_mop", + "allow_partial_payment", "section_break_23", "item_groups", "column_break_25", @@ -54,7 +57,8 @@ "apply_discount_on", "accounting_dimensions_section", "cost_center", - "dimension_col_break" + "dimension_col_break", + "project" ], "fields": [ { @@ -375,6 +379,32 @@ "fieldname": "disable_rounded_total", "fieldtype": "Check", "label": "Disable Rounded Total" + }, + { + "default": "0", + "fieldname": "print_receipt_on_order_complete", + "fieldtype": "Check", + "label": "Print Receipt on Order Complete" + }, + { + "default": "0", + "fieldname": "disable_grand_total_to_default_mop", + "fieldtype": "Check", + "label": "Disable auto setting Grand Total to default Payment Mode" + }, + { + "fieldname": "project", + "fieldtype": "Link", + "label": "Project", + "oldfieldname": "cost_center", + "oldfieldtype": "Link", + "options": "Project" + }, + { + "default": "0", + "fieldname": "allow_partial_payment", + "fieldtype": "Check", + "label": "Allow Partial Payment" } ], "icon": "icon-cog", @@ -402,7 +432,7 @@ "link_fieldname": "pos_profile" } ], - "modified": "2022-08-10 12:57:06.241439", + "modified": "2025-04-14 15:58:20.497426", "modified_by": "Administrator", "module": "Accounts", "name": "POS Profile", @@ -428,7 +458,8 @@ "role": "Accounts User" } ], - "sort_field": "modified", + "row_format": "Dynamic", + "sort_field": "creation", "sort_order": "DESC", "states": [] } \ No newline at end of file diff --git a/erpnext/accounts/doctype/pos_profile/pos_profile.py b/erpnext/accounts/doctype/pos_profile/pos_profile.py index 37197e1fb7a..143407eb750 100644 --- a/erpnext/accounts/doctype/pos_profile/pos_profile.py +++ b/erpnext/accounts/doctype/pos_profile/pos_profile.py @@ -4,9 +4,14 @@ import frappe from frappe import _, msgprint, scrub, unscrub +from frappe.core.doctype.user_permission.user_permission import get_permitted_documents from frappe.model.document import Document from frappe.utils import get_link_to_form, now +from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import ( + get_checks_for_pl_and_bs_accounts, +) + class POSProfile(Document): # begin: auto-generated types @@ -24,6 +29,7 @@ class POSProfile(Document): account_for_change_amount: DF.Link | None allow_discount_change: DF.Check + allow_partial_payment: DF.Check allow_rate_change: DF.Check applicable_for_users: DF.Table[POSProfileUser] apply_discount_on: DF.Literal["Grand Total", "Net Total"] @@ -36,6 +42,7 @@ class POSProfile(Document): currency: DF.Link customer: DF.Link | None customer_groups: DF.Table[POSCustomerGroup] + disable_grand_total_to_default_mop: DF.Check disable_rounded_total: DF.Check disabled: DF.Check expense_account: DF.Link | None @@ -47,6 +54,8 @@ class POSProfile(Document): letter_head: DF.Link | None payments: DF.Table[POSPaymentMethod] print_format: DF.Link | None + print_receipt_on_order_complete: DF.Check + project: DF.Link | None select_print_heading: DF.Link | None selling_price_list: DF.Link | None tax_category: DF.Link | None @@ -68,15 +77,19 @@ class POSProfile(Document): self.validate_accounting_dimensions() def validate_accounting_dimensions(self): - acc_dim_names = required_accounting_dimensions() - for acc_dim in acc_dim_names: - if not self.get(acc_dim): + acc_dims = get_checks_for_pl_and_bs_accounts() + for acc_dim in acc_dims: + if ( + self.company == acc_dim.company + and not self.get(acc_dim.fieldname) + and (acc_dim.mandatory_for_pl or acc_dim.mandatory_for_bs) + ): frappe.throw( _( "{0} is a mandatory Accounting Dimension.
" "Please set a value for {0} in Accounting Dimensions section." ).format( - unscrub(frappe.bold(acc_dim)), + frappe.bold(acc_dim.label), ), title=_("Mandatory Accounting Dimension"), ) @@ -194,17 +207,41 @@ class POSProfile(Document): def get_item_groups(pos_profile): item_groups = [] pos_profile = frappe.get_cached_doc("POS Profile", pos_profile) + permitted_item_groups = get_permitted_nodes("Item Group") if pos_profile.get("item_groups"): # Get items based on the item groups defined in the POS profile for data in pos_profile.get("item_groups"): item_groups.extend( - ["%s" % frappe.db.escape(d.name) for d in get_child_nodes("Item Group", data.item_group)] + [ + "%s" % frappe.db.escape(d.name) + for d in get_child_nodes("Item Group", data.item_group) + if not permitted_item_groups or d.name in permitted_item_groups + ] ) + if not item_groups and permitted_item_groups: + item_groups = ["%s" % frappe.db.escape(d) for d in permitted_item_groups] + return list(set(item_groups)) +def get_permitted_nodes(group_type): + nodes = [] + permitted_nodes = get_permitted_documents(group_type) + + if not permitted_nodes: + return nodes + + for node in permitted_nodes: + if frappe.db.get_value(group_type, node, "is_group"): + nodes.extend([d.name for d in get_child_nodes(group_type, node)]) + else: + nodes.append(node) + + return nodes + + def get_child_nodes(group_type, root): lft, rgt = frappe.db.get_value(group_type, root, ["lft", "rgt"]) return frappe.db.sql( @@ -214,23 +251,6 @@ def get_child_nodes(group_type, root): ) -def required_accounting_dimensions(): - p = frappe.qb.DocType("Accounting Dimension") - c = frappe.qb.DocType("Accounting Dimension Detail") - - acc_dim_doc = ( - frappe.qb.from_(p) - .inner_join(c) - .on(p.name == c.parent) - .select(c.parent) - .where((c.mandatory_for_bs == 1) | (c.mandatory_for_pl == 1)) - .where(p.disabled == 0) - ).run(as_dict=1) - - acc_dim_names = [scrub(d.parent) for d in acc_dim_doc] - return acc_dim_names - - @frappe.whitelist() @frappe.validate_and_sanitize_search_inputs def pos_profile_query(doctype, txt, searchfield, start, page_len, filters): diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.json b/erpnext/accounts/doctype/pricing_rule/pricing_rule.json index 6f191c106c9..c4825a6d519 100644 --- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.json +++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.json @@ -53,6 +53,7 @@ "column_break_42", "free_item_uom", "round_free_qty", + "dont_enforce_free_item_qty", "is_recursive", "recurse_for", "apply_recursion_over", @@ -419,7 +420,8 @@ "depends_on": "eval:doc.rate_or_discount==\"Rate\"", "fieldname": "rate", "fieldtype": "Currency", - "label": "Rate" + "label": "Rate", + "options": "currency" }, { "default": "0", @@ -642,12 +644,19 @@ "fieldname": "has_priority", "fieldtype": "Check", "label": "Has Priority" + }, + { + "default": "0", + "depends_on": "eval:doc.price_or_product_discount == 'Product'", + "fieldname": "dont_enforce_free_item_qty", + "fieldtype": "Check", + "label": "Don't Enforce Free Item Qty" } ], "icon": "fa fa-gift", "idx": 1, "links": [], - "modified": "2024-05-17 13:16:34.496704", + "modified": "2025-02-17 18:15:39.824639", "modified_by": "Administrator", "module": "Accounts", "name": "Pricing Rule", @@ -709,4 +718,4 @@ "sort_order": "DESC", "states": [], "title_field": "title" -} +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py index 1a1ff78a217..f0481ad63f6 100644 --- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py @@ -60,6 +60,7 @@ class PricingRule(Document): disable: DF.Check discount_amount: DF.Currency discount_percentage: DF.Float + dont_enforce_free_item_qty: DF.Check for_price_list: DF.Link | None free_item: DF.Link | None free_item_rate: DF.Currency @@ -446,7 +447,19 @@ def get_pricing_rule_for_item(args, doc=None, for_validate=False): if isinstance(pricing_rule, str): pricing_rule = frappe.get_cached_doc("Pricing Rule", pricing_rule) update_pricing_rule_uom(pricing_rule, args) - pricing_rule.apply_rule_on_other_items = get_pricing_rule_items(pricing_rule) or [] + fetch_other_item = True if pricing_rule.apply_rule_on_other else False + pricing_rule.apply_rule_on_other_items = ( + get_pricing_rule_items(pricing_rule, other_items=fetch_other_item) or [] + ) + + if pricing_rule.coupon_code_based == 1: + if not args.coupon_code: + continue + coupon_code = frappe.db.get_value( + doctype="Coupon Code", filters={"pricing_rule": pricing_rule.name}, fieldname="name" + ) + if args.coupon_code != coupon_code: + continue if pricing_rule.get("suggestion"): continue @@ -473,9 +486,6 @@ def get_pricing_rule_for_item(args, doc=None, for_validate=False): pricing_rule.apply_rule_on_other_items ) - if pricing_rule.coupon_code_based == 1 and args.coupon_code is None: - return item_details - if not pricing_rule.validate_applied_rule: if pricing_rule.price_or_product_discount == "Price": apply_price_discount_rule(pricing_rule, item_details, args) @@ -635,7 +645,7 @@ def remove_pricing_rule_for_item(pricing_rules, item_details, item_code=None, ra if pricing_rule.margin_type in ["Percentage", "Amount"]: item_details.margin_rate_or_amount = 0.0 item_details.margin_type = None - elif pricing_rule.get("free_item"): + elif pricing_rule.get("free_item") and not pricing_rule.get("dont_enforce_free_item_qty"): item_details.remove_free_item = ( item_code if pricing_rule.get("same_item") else pricing_rule.get("free_item") ) diff --git a/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py index 235fddf3ab3..3ad3d45ee47 100644 --- a/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py +++ b/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py @@ -5,6 +5,7 @@ import unittest import frappe +from frappe.tests.utils import FrappeTestCase, change_settings from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice @@ -14,7 +15,7 @@ from erpnext.stock.doctype.item.test_item import make_item from erpnext.stock.get_item_details import get_item_details -class TestPricingRule(unittest.TestCase): +class TestPricingRule(FrappeTestCase): def setUp(self): delete_existing_pricing_rules() setup_pricing_rule_data() @@ -427,6 +428,54 @@ class TestPricingRule(unittest.TestCase): self.assertEqual(so.items[1].is_free_item, 1) self.assertEqual(so.items[1].item_code, "_Test Item 2") + def test_dont_enforce_free_item_qty(self): + # this test is only for testing non-enforcement as all other tests in this file already test with enforcement + frappe.delete_doc_if_exists("Pricing Rule", "_Test Pricing Rule") + test_record = { + "doctype": "Pricing Rule", + "title": "_Test Pricing Rule", + "apply_on": "Item Code", + "currency": "USD", + "items": [ + { + "item_code": "_Test Item", + } + ], + "selling": 1, + "rate_or_discount": "Discount Percentage", + "rate": 0, + "min_qty": 0, + "max_qty": 7, + "discount_percentage": 17.5, + "price_or_product_discount": "Product", + "same_item": 0, + "free_item": "_Test Item 2", + "free_qty": 1, + "company": "_Test Company", + } + pricing_rule = frappe.get_doc(test_record.copy()).insert() + + # With enforcement + so = make_sales_order(item_code="_Test Item", qty=1, do_not_submit=True) + self.assertEqual(so.items[1].is_free_item, 1) + self.assertEqual(so.items[1].item_code, "_Test Item 2") + + # Test 1 : Saving a document with an item with pricing list without it's corresponding free item will cause it the free item to be refetched on save + so.items.pop(1) + so.save() + so.reload() + self.assertEqual(len(so.items), 2) + + # Without enforcement + pricing_rule.dont_enforce_free_item_qty = 1 + pricing_rule.save() + + # Test 2 : Deleted free item will not be fetched again on save without enforcement + so.items.pop(1) + so.save() + so.reload() + self.assertEqual(len(so.items), 1) + def test_cumulative_pricing_rule(self): frappe.delete_doc_if_exists("Pricing Rule", "_Test Cumulative Pricing Rule") test_record = { @@ -1130,6 +1179,51 @@ class TestPricingRule(unittest.TestCase): self.assertEqual(so.items[1].item_code, "_Test Item") self.assertEqual(so.items[1].qty, 3) + so = make_sales_order(item_code="_Test Item", qty=5, do_not_submit=1) + so.items[0].qty = 1 + del so.items[-1] + so.save() + self.assertEqual(len(so.items), 1) + + def test_pricing_rule_for_product_free_item_round_free_qty(self): + frappe.delete_doc_if_exists("Pricing Rule", "_Test Pricing Rule") + test_record = { + "doctype": "Pricing Rule", + "title": "_Test Pricing Rule", + "apply_on": "Item Code", + "currency": "USD", + "items": [ + { + "item_code": "_Test Item", + } + ], + "selling": 1, + "rate": 0, + "min_qty": 100, + "max_qty": 0, + "price_or_product_discount": "Product", + "same_item": 1, + "free_qty": 10, + "round_free_qty": 1, + "is_recursive": 1, + "recurse_for": 100, + "company": "_Test Company", + } + frappe.get_doc(test_record.copy()).insert() + + # With pricing rule + so = make_sales_order(item_code="_Test Item", qty=100) + so.load_from_db() + self.assertEqual(so.items[1].is_free_item, 1) + self.assertEqual(so.items[1].item_code, "_Test Item") + self.assertEqual(so.items[1].qty, 10) + + so = make_sales_order(item_code="_Test Item", qty=150) + so.load_from_db() + self.assertEqual(so.items[1].is_free_item, 1) + self.assertEqual(so.items[1].item_code, "_Test Item") + self.assertEqual(so.items[1].qty, 10) + def test_apply_multiple_pricing_rules_for_discount_percentage_and_amount(self): frappe.delete_doc_if_exists("Pricing Rule", "_Test Pricing Rule 1") frappe.delete_doc_if_exists("Pricing Rule", "_Test Pricing Rule 2") @@ -1405,6 +1499,7 @@ def make_pricing_rule(**args): "discount_amount": args.discount_amount or 0.0, "apply_multiple_pricing_rules": args.apply_multiple_pricing_rules or 0, "has_priority": args.has_priority or 0, + "enforce_free_item_qty": args.dont_enforce_free_item_qty or 0, } ) diff --git a/erpnext/accounts/doctype/pricing_rule/utils.py b/erpnext/accounts/doctype/pricing_rule/utils.py index b848fde08d8..bbf73e80809 100644 --- a/erpnext/accounts/doctype/pricing_rule/utils.py +++ b/erpnext/accounts/doctype/pricing_rule/utils.py @@ -651,11 +651,23 @@ def get_product_discount_rule(pricing_rule, item_details, args=None, doc=None): qty = pricing_rule.free_qty or 1 if pricing_rule.is_recursive: - transaction_qty = (args.get("qty") if args else doc.total_qty) - pricing_rule.apply_recursion_over - if transaction_qty: + transaction_qty = sum( + [ + row.qty + for row in doc.items + if not row.is_free_item + and row.item_code == args.item_code + and row.pricing_rules == args.pricing_rules + ] + ) + transaction_qty = transaction_qty - pricing_rule.apply_recursion_over + if transaction_qty and transaction_qty > 0: qty = flt(transaction_qty) * qty / pricing_rule.recurse_for if pricing_rule.round_free_qty: - qty = math.floor(qty) + qty = (flt(transaction_qty) // pricing_rule.recurse_for) * (pricing_rule.free_qty or 1) + + if not qty: + return free_item_data_args = { "item_code": free_item, @@ -701,7 +713,10 @@ def apply_pricing_rule_for_free_items(doc, pricing_rule_args): args.pop((item.item_code, item.pricing_rules)) for free_item in args.values(): - doc.append("items", free_item) + if doc.is_new() or not frappe.get_value( + "Pricing Rule", free_item["pricing_rules"], "dont_enforce_free_item_qty" + ): + doc.append("items", free_item) def get_pricing_rule_items(pr_doc, other_items=False) -> list: @@ -725,14 +740,11 @@ def get_pricing_rule_items(pr_doc, other_items=False) -> list: def validate_coupon_code(coupon_name): coupon = frappe.get_doc("Coupon Code", coupon_name) - - if coupon.valid_from: - if coupon.valid_from > getdate(today()): - frappe.throw(_("Sorry, this coupon code's validity has not started")) - elif coupon.valid_upto: - if coupon.valid_upto < getdate(today()): - frappe.throw(_("Sorry, this coupon code's validity has expired")) - elif coupon.used >= coupon.maximum_use: + if coupon.valid_from and coupon.valid_from > getdate(today()): + frappe.throw(_("Sorry, this coupon code's validity has not started")) + elif coupon.valid_upto and coupon.valid_upto < getdate(today()): + frappe.throw(_("Sorry, this coupon code's validity has expired")) + elif coupon.maximum_use and coupon.used >= coupon.maximum_use: frappe.throw(_("Sorry, this coupon code is no longer valid")) diff --git a/erpnext/accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.js b/erpnext/accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.js index 0f52a4d998e..d72c4724690 100644 --- a/erpnext/accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.js +++ b/erpnext/accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.js @@ -20,6 +20,17 @@ frappe.ui.form.on("Process Payment Reconciliation", { }, }; }); + + frm.set_query("default_advance_account", function (doc) { + return { + filters: { + company: doc.company, + is_group: 0, + account_type: doc.party_type == "Customer" ? "Receivable" : "Payable", + root_type: doc.party_type == "Customer" ? "Liability" : "Asset", + }, + }; + }); frm.set_query("cost_center", function (doc) { return { filters: { @@ -102,6 +113,7 @@ frappe.ui.form.on("Process Payment Reconciliation", { company(frm) { frm.set_value("party", ""); frm.set_value("receivable_payable_account", ""); + frm.set_value("default_advance_account", ""); }, party_type(frm) { frm.set_value("party", ""); @@ -109,6 +121,7 @@ frappe.ui.form.on("Process Payment Reconciliation", { party(frm) { frm.set_value("receivable_payable_account", ""); + frm.set_value("default_advance_account", ""); if (!frm.doc.receivable_payable_account && frm.doc.party_type && frm.doc.party) { return frappe.call({ method: "erpnext.accounts.party.get_party_account", @@ -116,10 +129,16 @@ frappe.ui.form.on("Process Payment Reconciliation", { company: frm.doc.company, party_type: frm.doc.party_type, party: frm.doc.party, + include_advance: 1, }, callback: (r) => { if (!r.exc && r.message) { - frm.set_value("receivable_payable_account", r.message); + if (typeof r.message === "string") { + frm.set_value("receivable_payable_account", r.message); + } else if (Array.isArray(r.message)) { + frm.set_value("receivable_payable_account", r.message[0]); + frm.set_value("default_advance_account", r.message[1]); + } } frm.refresh(); }, diff --git a/erpnext/accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.json b/erpnext/accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.json index 1a1ab4d800e..bfd4e0ad63a 100644 --- a/erpnext/accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.json +++ b/erpnext/accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.json @@ -1,7 +1,6 @@ { "actions": [], "autoname": "format:ACC-PPR-{#####}", - "beta": 1, "creation": "2023-03-30 21:28:39.793927", "default_view": "List", "doctype": "DocType", @@ -13,6 +12,7 @@ "column_break_io6c", "party", "receivable_payable_account", + "default_advance_account", "filter_section", "from_invoice_date", "to_invoice_date", @@ -141,12 +141,23 @@ { "fieldname": "section_break_a8yx", "fieldtype": "Section Break" + }, + { + "depends_on": "eval:doc.party", + "description": "Only 'Payment Entries' made against this advance account are supported.", + "documentation_url": "https://docs.erpnext.com/docs/user/manual/en/advance-in-separate-party-account", + "fieldname": "default_advance_account", + "fieldtype": "Link", + "label": "Default Advance Account", + "mandatory_depends_on": "doc.party_type", + "options": "Account", + "reqd": 1 } ], "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2023-08-11 10:56:51.699137", + "modified": "2025-01-08 08:22:14.798085", "modified_by": "Administrator", "module": "Accounts", "name": "Process Payment Reconciliation", 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 5048fc5e25e..c4c75913d65 100644 --- a/erpnext/accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.py +++ b/erpnext/accounts/doctype/process_payment_reconciliation/process_payment_reconciliation.py @@ -23,6 +23,7 @@ class ProcessPaymentReconciliation(Document): bank_cash_account: DF.Link | None company: DF.Link cost_center: DF.Link | None + default_advance_account: DF.Link error_log: DF.LongText | None from_invoice_date: DF.Date | None from_payment_date: DF.Date | None @@ -101,6 +102,7 @@ def get_pr_instance(doc: str): "party_type", "party", "receivable_payable_account", + "default_advance_account", "from_invoice_date", "to_invoice_date", "from_payment_date", @@ -208,9 +210,9 @@ def trigger_reconciliation_for_queued_docs(): docs_to_trigger = [] unique_filters = set() - queue_size = 5 + queue_size = frappe.db.get_single_value("Accounts Settings", "reconciliation_queue_size") or 5 - fields = ["company", "party_type", "party", "receivable_payable_account"] + fields = ["company", "party_type", "party", "receivable_payable_account", "default_advance_account"] def get_filters_as_tuple(fields, doc): filters = () diff --git a/erpnext/accounts/doctype/process_payment_reconciliation_log/process_payment_reconciliation_log.json b/erpnext/accounts/doctype/process_payment_reconciliation_log/process_payment_reconciliation_log.json index b4ac9812cbf..3e3e231fe1d 100644 --- a/erpnext/accounts/doctype/process_payment_reconciliation_log/process_payment_reconciliation_log.json +++ b/erpnext/accounts/doctype/process_payment_reconciliation_log/process_payment_reconciliation_log.json @@ -1,7 +1,6 @@ { "actions": [], "autoname": "format:PPR-LOG-{##}", - "beta": 1, "creation": "2023-03-13 15:00:09.149681", "default_view": "List", "doctype": "DocType", @@ -110,7 +109,7 @@ "in_create": 1, "index_web_pages_for_search": 1, "links": [], - "modified": "2023-11-02 11:32:12.254018", + "modified": "2025-01-08 08:22:19.104975", "modified_by": "Administrator", "module": "Accounts", "name": "Process Payment Reconciliation Log", diff --git a/erpnext/accounts/doctype/process_payment_reconciliation_log_allocations/process_payment_reconciliation_log_allocations.json b/erpnext/accounts/doctype/process_payment_reconciliation_log_allocations/process_payment_reconciliation_log_allocations.json index b97d73886a9..9d20ca3a87d 100644 --- a/erpnext/accounts/doctype/process_payment_reconciliation_log_allocations/process_payment_reconciliation_log_allocations.json +++ b/erpnext/accounts/doctype/process_payment_reconciliation_log_allocations/process_payment_reconciliation_log_allocations.json @@ -20,6 +20,7 @@ "is_advance", "section_break_5", "difference_amount", + "gain_loss_posting_date", "column_break_7", "difference_account", "exchange_rate", @@ -153,11 +154,16 @@ "fieldtype": "Check", "in_list_view": 1, "label": "Reconciled" + }, + { + "fieldname": "gain_loss_posting_date", + "fieldtype": "Date", + "label": "Difference Posting Date" } ], "istable": 1, "links": [], - "modified": "2023-03-20 21:05:43.121945", + "modified": "2025-01-23 16:09:01.058574", "modified_by": "Administrator", "module": "Accounts", "name": "Process Payment Reconciliation Log Allocations", @@ -167,4 +173,4 @@ "sort_order": "DESC", "states": [], "track_changes": 1 -} \ No newline at end of file +} diff --git a/erpnext/accounts/doctype/process_payment_reconciliation_log_allocations/process_payment_reconciliation_log_allocations.py b/erpnext/accounts/doctype/process_payment_reconciliation_log_allocations/process_payment_reconciliation_log_allocations.py index da02e1a41e6..ca1785afdae 100644 --- a/erpnext/accounts/doctype/process_payment_reconciliation_log_allocations/process_payment_reconciliation_log_allocations.py +++ b/erpnext/accounts/doctype/process_payment_reconciliation_log_allocations/process_payment_reconciliation_log_allocations.py @@ -20,6 +20,7 @@ class ProcessPaymentReconciliationLogAllocations(Document): difference_account: DF.Link | None difference_amount: DF.Currency exchange_rate: DF.Float + gain_loss_posting_date: DF.Date | None invoice_number: DF.DynamicLink invoice_type: DF.Link is_advance: DF.Data | None diff --git a/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.json b/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.json index 22be5299280..ed9a4d84f53 100644 --- a/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.json +++ b/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.json @@ -25,6 +25,7 @@ "payment_terms_template", "sales_partner", "sales_person", + "show_remarks", "based_on_payment_terms", "section_break_3", "customer_collection", @@ -243,9 +244,9 @@ }, { "fieldname": "cc_to", - "fieldtype": "Link", + "fieldtype": "Table MultiSelect", "label": "CC To", - "options": "User" + "options": "Process Statement Of Accounts CC" }, { "default": "1", @@ -390,10 +391,16 @@ "fieldname": "ignore_cr_dr_notes", "fieldtype": "Check", "label": "Ignore System Generated Credit / Debit Notes" + }, + { + "default": "0", + "fieldname": "show_remarks", + "fieldtype": "Check", + "label": "Show Remarks" } ], "links": [], - "modified": "2024-08-13 10:41:18.381165", + "modified": "2024-12-11 12:11:13.543134", "modified_by": "Administrator", "module": "Accounts", "name": "Process Statement Of Accounts", diff --git a/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py b/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py index 509199ccae6..48f400e1a46 100644 --- a/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py +++ b/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py @@ -31,6 +31,9 @@ class ProcessStatementOfAccounts(Document): if TYPE_CHECKING: from frappe.types import DF + from erpnext.accounts.doctype.process_statement_of_accounts_cc.process_statement_of_accounts_cc import ( + ProcessStatementOfAccountsCC, + ) from erpnext.accounts.doctype.process_statement_of_accounts_customer.process_statement_of_accounts_customer import ( ProcessStatementOfAccountsCustomer, ) @@ -41,7 +44,7 @@ class ProcessStatementOfAccounts(Document): ageing_based_on: DF.Literal["Due Date", "Posting Date"] based_on_payment_terms: DF.Check body: DF.TextEditor | None - cc_to: DF.Link | None + cc_to: DF.TableMultiSelect[ProcessStatementOfAccountsCC] collection_name: DF.DynamicLink | None company: DF.Link cost_center: DF.TableMultiSelect[PSOACostCenter] @@ -70,6 +73,7 @@ class ProcessStatementOfAccounts(Document): sales_person: DF.Link | None sender: DF.Link | None show_net_values_in_party_account: DF.Check + show_remarks: DF.Check start_date: DF.Date | None subject: DF.Data | None terms_and_conditions: DF.Link | None @@ -187,6 +191,7 @@ def get_common_filters(doc): "finance_book": doc.finance_book if doc.finance_book else None, "account": [doc.account] if doc.account else None, "cost_center": [cc.cost_center_name for cc in doc.cost_center], + "show_remarks": doc.show_remarks, } ) @@ -231,17 +236,21 @@ def get_ar_filters(doc, entry): def get_html(doc, filters, entry, col, res, ageing): base_template_path = "frappe/www/printview.html" - template_path = ( - "erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html" - if doc.report == "General Ledger" - else "erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html" - ) + template_path = "erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html" + if doc.report == "General Ledger": + template_path = ( + "erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html" + ) + + process_soa_html = frappe.get_hooks("process_soa_html") + # fetching custom print format for Process Statement of Accounts + if process_soa_html and process_soa_html.get(doc.report): + template_path = process_soa_html[doc.report][-1] if doc.letter_head: from frappe.www.printview import get_letter_head letter_head = get_letter_head(doc, 0) - html = frappe.render_template( template_path, { @@ -257,7 +266,6 @@ def get_html(doc, filters, entry, col, res, ageing): else None, }, ) - html = frappe.render_template( base_template_path, {"body": html, "css": get_print_style(), "title": "Statement For " + entry.customer}, @@ -316,13 +324,16 @@ def get_recipients_and_cc(customer, doc): recipients = [] for clist in doc.customers: if clist.customer == customer: - recipients.append(clist.billing_email) + if clist.billing_email: + for email in clist.billing_email.split(","): + recipients.append(email.strip()) if doc.primary_mandatory and clist.primary_email: - recipients.append(clist.primary_email) + for email in clist.primary_email.split(","): + recipients.append(email.strip()) cc = [] if doc.cc_to != "": try: - cc = [frappe.get_value("User", doc.cc_to, "email")] + cc = [frappe.get_value("User", user.cc, "email") for user in doc.cc_to] except Exception: pass @@ -472,6 +483,7 @@ def send_emails(document_name, from_scheduler=False, posting_date=None): reference_doctype="Process Statement Of Accounts", reference_name=document_name, attachments=attachments, + expose_recipients="header", ) if doc.enable_auto_email and from_scheduler: diff --git a/erpnext/erpnext_integrations/doctype/tally_migration/__init__.py b/erpnext/accounts/doctype/process_statement_of_accounts_cc/__init__.py similarity index 100% rename from erpnext/erpnext_integrations/doctype/tally_migration/__init__.py rename to erpnext/accounts/doctype/process_statement_of_accounts_cc/__init__.py diff --git a/erpnext/accounts/doctype/process_statement_of_accounts_cc/process_statement_of_accounts_cc.json b/erpnext/accounts/doctype/process_statement_of_accounts_cc/process_statement_of_accounts_cc.json new file mode 100644 index 00000000000..c6103048b50 --- /dev/null +++ b/erpnext/accounts/doctype/process_statement_of_accounts_cc/process_statement_of_accounts_cc.json @@ -0,0 +1,32 @@ +{ + "actions": [], + "allow_rename": 1, + "creation": "2024-12-11 12:10:04.654593", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "cc" + ], + "fields": [ + { + "fieldname": "cc", + "fieldtype": "Link", + "in_list_view": 1, + "label": "CC", + "options": "User" + } + ], + "index_web_pages_for_search": 1, + "istable": 1, + "links": [], + "modified": "2024-12-11 12:10:39.772598", + "modified_by": "Administrator", + "module": "Accounts", + "name": "Process Statement Of Accounts CC", + "owner": "Administrator", + "permissions": [], + "sort_field": "creation", + "sort_order": "DESC", + "states": [] +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/process_statement_of_accounts_cc/process_statement_of_accounts_cc.py b/erpnext/accounts/doctype/process_statement_of_accounts_cc/process_statement_of_accounts_cc.py new file mode 100644 index 00000000000..a500b6c89a7 --- /dev/null +++ b/erpnext/accounts/doctype/process_statement_of_accounts_cc/process_statement_of_accounts_cc.py @@ -0,0 +1,23 @@ +# Copyright (c) 2024, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +# import frappe +from frappe.model.document import Document + + +class ProcessStatementOfAccountsCC(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 + + cc: DF.Link | None + parent: DF.Data + parentfield: DF.Data + parenttype: DF.Data + # end: auto-generated types + + pass diff --git a/erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py b/erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py index 86bd2135515..4cc87394b4f 100644 --- a/erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py +++ b/erpnext/accounts/doctype/promotional_scheme/promotional_scheme.py @@ -5,6 +5,8 @@ import frappe from frappe import _ from frappe.model.document import Document +from frappe.query_builder import Criterion +from frappe.query_builder.functions import IfNull pricing_rule_fields = [ "apply_on", @@ -162,22 +164,50 @@ class PromotionalScheme(Document): if self.is_new(): return - transaction_exists = False - docnames = [] + invalid_pricing_rule = self.get_invalid_pricing_rules() - # If user has changed applicable for - if self.get_doc_before_save() and self.get_doc_before_save().applicable_for == self.applicable_for: + if not invalid_pricing_rule: return - docnames = frappe.get_all("Pricing Rule", filters={"promotional_scheme": self.name}) + if frappe.db.exists( + "Pricing Rule Detail", + { + "pricing_rule": ["in", invalid_pricing_rule], + "docstatus": ["<", 2], + }, + ): + raise_for_transaction_exists(self.name) - for docname in docnames: - if frappe.db.exists("Pricing Rule Detail", {"pricing_rule": docname.name, "docstatus": ("<", 2)}): - raise_for_transaction_exists(self.name) + for doc in invalid_pricing_rule: + frappe.delete_doc("Pricing Rule", doc) - if docnames and not transaction_exists: - for docname in docnames: - frappe.delete_doc("Pricing Rule", docname.name) + frappe.msgprint( + _("The following invalid Pricing Rules are deleted:") + + "

" + ) + + def get_invalid_pricing_rules(self): + pr = frappe.qb.DocType("Pricing Rule") + conditions = [] + conditions.append(pr.promotional_scheme == self.name) + + if self.applicable_for: + applicable_for = frappe.scrub(self.applicable_for) + applicable_for_list = [d.get(applicable_for) for d in self.get(applicable_for)] + + conditions.append( + (IfNull(pr.applicable_for, "") != self.applicable_for) + | ( + (IfNull(pr.applicable_for, "") == self.applicable_for) + & IfNull(pr[applicable_for], "").notin(applicable_for_list) + ) + ) + else: + conditions.append(IfNull(pr.applicable_for, "") != "") + + return frappe.qb.from_(pr).select(pr.name).where(Criterion.all(conditions)).run(pluck=True) def on_update(self): self.validate() diff --git a/erpnext/accounts/doctype/promotional_scheme/test_promotional_scheme.py b/erpnext/accounts/doctype/promotional_scheme/test_promotional_scheme.py index 74ba6cf923c..a4ea81f0d9f 100644 --- a/erpnext/accounts/doctype/promotional_scheme/test_promotional_scheme.py +++ b/erpnext/accounts/doctype/promotional_scheme/test_promotional_scheme.py @@ -90,6 +90,31 @@ class TestPromotionalScheme(unittest.TestCase): price_rules = frappe.get_all("Pricing Rule", filters={"promotional_scheme": ps.name}) self.assertEqual(price_rules, []) + def test_change_applicable_for_values_in_promotional_scheme(self): + ps = make_promotional_scheme(applicable_for="Customer", customer="_Test Customer") + ps.append("customer", {"customer": "_Test Customer 2"}) + ps.save() + + price_rules = frappe.get_all( + "Pricing Rule", filters={"promotional_scheme": ps.name, "applicable_for": "Customer"} + ) + self.assertTrue(len(price_rules), 2) + + ps.set("customer", []) + ps.append("customer", {"customer": "_Test Customer 2"}) + ps.save() + + price_rules = frappe.get_all( + "Pricing Rule", + filters={ + "promotional_scheme": ps.name, + "applicable_for": "Customer", + "customer": "_Test Customer", + }, + ) + self.assertEqual(price_rules, []) + frappe.delete_doc("Promotional Scheme", ps.name) + def test_min_max_amount_configuration(self): ps = make_promotional_scheme() ps.price_discount_slabs[0].min_amount = 10 diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js index 9c8c8cdfb03..13430b46449 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js @@ -31,6 +31,13 @@ erpnext.accounts.PurchaseInvoice = class PurchaseInvoice extends erpnext.buying. }, }; }); + + this.frm.set_query("expense_account", "items", function () { + return { + query: "erpnext.controllers.queries.get_expense_account", + filters: { company: doc.company }, + }; + }); } onload() { @@ -325,6 +332,8 @@ erpnext.accounts.PurchaseInvoice = class PurchaseInvoice extends erpnext.buying. if (this.frm.doc.__onload && this.frm.doc.__onload.load_after_mapping) return; + let payment_terms_template = this.frm.doc.payment_terms_template; + erpnext.utils.get_party_details( this.frm, "erpnext.accounts.party.get_party_details", @@ -335,7 +344,9 @@ erpnext.accounts.PurchaseInvoice = class PurchaseInvoice extends erpnext.buying. party_type: "Supplier", account: this.frm.doc.credit_to, price_list: this.frm.doc.buying_price_list, - fetch_payment_terms_template: cint(!this.frm.doc.ignore_default_payment_terms_template), + fetch_payment_terms_template: cint( + (this.frm.doc.is_return == 0) & !this.frm.doc.ignore_default_payment_terms_template + ), }, function () { me.apply_pricing_rule(); @@ -343,6 +354,12 @@ erpnext.accounts.PurchaseInvoice = class PurchaseInvoice extends erpnext.buying. me.frm.doc.tax_withholding_category = me.frm.supplier_tds; me.frm.set_df_property("apply_tds", "read_only", me.frm.supplier_tds ? 0 : 1); me.frm.set_df_property("tax_withholding_category", "hidden", me.frm.supplier_tds ? 0 : 1); + + // while duplicating, don't change payment terms + if (me.frm.doc.__run_link_triggers === false) { + me.frm.set_value("payment_terms_template", payment_terms_template); + me.frm.refresh_field("payment_terms_template"); + } } ); } @@ -359,6 +376,18 @@ erpnext.accounts.PurchaseInvoice = class PurchaseInvoice extends erpnext.buying. } } + tax_withholding_category(frm) { + var me = this; + let filtered_taxes = (me.frm.doc.taxes || []).filter((row) => !row.is_tax_withholding_account); + me.frm.clear_table("taxes"); + + filtered_taxes.forEach((row) => { + me.frm.add_child("taxes", row); + }); + + me.frm.refresh_field("taxes"); + } + credit_to() { var me = this; if (this.frm.doc.credit_to) { @@ -390,6 +419,8 @@ erpnext.accounts.PurchaseInvoice = class PurchaseInvoice extends erpnext.buying. hide_fields(this.frm.doc); if (cint(this.frm.doc.is_paid)) { this.frm.set_value("allocate_advances_automatically", 0); + this.frm.set_value("payment_terms_template", ""); + this.frm.set_value("payment_schedule", []); if (!this.frm.doc.company) { this.frm.set_value("is_paid", 0); frappe.msgprint(__("Please specify Company to proceed")); @@ -506,13 +537,6 @@ cur_frm.fields_dict["select_print_heading"].get_query = function (doc, cdt, cdn) }; }; -cur_frm.set_query("expense_account", "items", function (doc) { - return { - query: "erpnext.controllers.queries.get_expense_account", - filters: { company: doc.company }, - }; -}); - cur_frm.set_query("wip_composite_asset", "items", function () { return { filters: { is_composite_asset: 1, docstatus: 0 }, @@ -561,11 +585,12 @@ frappe.ui.form.on("Purchase Invoice", { frm.custom_make_buttons = { "Purchase Invoice": "Return / Debit Note", "Payment Entry": "Payment", - "Landed Cost Voucher": function () { - frm.trigger("create_landed_cost_voucher"); - }, }; + if (frm.doc.update_stock) { + frm.custom_make_buttons["Landed Cost Voucher"] = "Landed Cost Voucher"; + } + frm.set_query("additional_discount_account", function () { return { filters: { @@ -607,20 +632,6 @@ frappe.ui.form.on("Purchase Invoice", { }); }, - create_landed_cost_voucher: function (frm) { - let lcv = frappe.model.get_new_doc("Landed Cost Voucher"); - lcv.company = frm.doc.company; - - let lcv_receipt = frappe.model.get_new_doc("Landed Cost Purchase Invoice"); - lcv_receipt.receipt_document_type = "Purchase Invoice"; - lcv_receipt.receipt_document = frm.doc.name; - lcv_receipt.supplier = frm.doc.supplier; - lcv_receipt.grand_total = frm.doc.grand_total; - lcv.purchase_receipts = [lcv_receipt]; - - frappe.set_route("Form", lcv.doctype, lcv.name); - }, - add_custom_buttons: function (frm) { if (frm.doc.docstatus == 1 && frm.doc.per_received < 100) { frm.add_custom_button( @@ -645,14 +656,40 @@ frappe.ui.form.on("Purchase Invoice", { __("View") ); } + + if (frm.doc.docstatus === 1 && frm.doc.update_stock) { + frm.add_custom_button( + __("Landed Cost Voucher"), + () => { + frm.events.make_lcv(frm); + }, + __("Create") + ); + } + }, + + make_lcv(frm) { + frappe.call({ + method: "erpnext.stock.doctype.purchase_receipt.purchase_receipt.make_lcv", + args: { + doctype: frm.doc.doctype, + docname: frm.doc.name, + }, + callback: (r) => { + if (r.message) { + var doc = frappe.model.sync(r.message); + frappe.set_route("Form", doc[0].doctype, doc[0].name); + } + }, + }); }, onload: function (frm) { - if (frm.doc.__onload && frm.is_new()) { - if (frm.doc.supplier) { + if (frm.doc.__onload && frm.doc.supplier) { + if (frm.is_new()) { frm.doc.apply_tds = frm.doc.__onload.supplier_tds ? 1 : 0; } - if (!frm.doc.__onload.enable_apply_tds) { + if (!frm.doc.__onload.supplier_tds) { frm.set_df_property("apply_tds", "read_only", 1); } } diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json index 3751c027c97..0584b6026a7 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json @@ -1134,12 +1134,14 @@ "label": "Payment Terms" }, { + "depends_on": "eval:(!doc.is_paid && !doc.is_return)", "fieldname": "payment_terms_template", "fieldtype": "Link", "label": "Payment Terms Template", "options": "Payment Terms Template" }, { + "depends_on": "eval:(!doc.is_paid && !doc.is_return)", "fieldname": "payment_schedule", "fieldtype": "Table", "label": "Payment Schedule", @@ -1271,6 +1273,7 @@ "fieldtype": "Select", "in_standard_filter": 1, "label": "Status", + "no_copy": 1, "options": "\nDraft\nReturn\nDebit Note Issued\nSubmitted\nPaid\nPartly Paid\nUnpaid\nOverdue\nCancelled\nInternal Transfer", "print_hide": 1 }, @@ -1620,7 +1623,7 @@ { "default": "1", "depends_on": "eval: doc.is_return && doc.return_against", - "description": "Debit Note will update it's own outstanding amount, even if \"Return Against\" is specified.", + "description": "Debit Note will update it's own outstanding amount, even if 'Return Against' is specified.", "fieldname": "update_outstanding_for_self", "fieldtype": "Check", "label": "Update Outstanding for Self" @@ -1630,7 +1633,7 @@ "idx": 204, "is_submittable": 1, "links": [], - "modified": "2024-07-25 19:42:36.931278", + "modified": "2025-01-14 11:39:04.564610", "modified_by": "Administrator", "module": "Accounts", "name": "Purchase Invoice", diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py index de99c35e27e..98d1850bd8f 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py @@ -10,7 +10,6 @@ from frappe.utils import cint, cstr, flt, formatdate, get_link_to_form, getdate, import erpnext from erpnext.accounts.deferred_revenue import validate_service_stop_date -from erpnext.accounts.doctype.gl_entry.gl_entry import update_outstanding_amt from erpnext.accounts.doctype.repost_accounting_ledger.repost_accounting_ledger import ( validate_docs_for_deferred_accounting, validate_docs_for_voucher_types, @@ -33,7 +32,7 @@ from erpnext.accounts.general_ledger import ( merge_similar_entries, ) from erpnext.accounts.party import get_due_date, get_party_account -from erpnext.accounts.utils import get_account_currency, get_fiscal_year +from erpnext.accounts.utils import get_account_currency, get_fiscal_year, update_voucher_outstanding from erpnext.assets.doctype.asset.asset import is_cwip_accounting_enabled from erpnext.assets.doctype.asset_category.asset_category import get_asset_category_account from erpnext.buying.utils import check_on_hold_or_closed_status @@ -285,7 +284,6 @@ class PurchaseInvoice(BuyingController): self.set_against_expense_account() self.validate_write_off_account() self.validate_multiple_billing("Purchase Receipt", "pr_detail", "amount") - self.create_remarks() self.set_status() self.validate_purchase_receipt_if_update_stock() validate_inter_company_party( @@ -322,10 +320,11 @@ class PurchaseInvoice(BuyingController): def create_remarks(self): if not self.remarks: - if self.bill_no and self.bill_date: - self.remarks = _("Against Supplier Invoice {0} dated {1}").format( - self.bill_no, formatdate(self.bill_date) - ) + if self.bill_no: + self.remarks = _("Against Supplier Invoice {0}").format(self.bill_no) + if self.bill_date: + self.remarks += " " + _("dated {0}").format(formatdate(self.bill_date)) + else: self.remarks = _("No Remarks") @@ -346,22 +345,6 @@ class PurchaseInvoice(BuyingController): self.tax_withholding_category = tds_category self.set_onload("supplier_tds", tds_category) - # If Linked Purchase Order has TDS applied, enable 'apply_tds' checkbox - if purchase_orders := [x.purchase_order for x in self.items if x.purchase_order]: - po = qb.DocType("Purchase Order") - po_with_tds = ( - qb.from_(po) - .select(po.name) - .where( - po.docstatus.eq(1) - & (po.name.isin(purchase_orders)) - & (po.apply_tds.eq(1)) - & (po.tax_withholding_category.notnull()) - ) - .run() - ) - self.set_onload("enable_apply_tds", True if po_with_tds else False) - super().set_missing_values(for_validate) def validate_credit_to_acc(self): @@ -747,6 +730,9 @@ class PurchaseInvoice(BuyingController): validate_docs_for_voucher_types(["Purchase Invoice"]) validate_docs_for_deferred_accounting([], [self.name]) + def before_submit(self): + self.create_remarks() + def on_submit(self): super().on_submit() @@ -851,12 +837,12 @@ class PurchaseInvoice(BuyingController): def update_supplier_outstanding(self, update_outstanding): if update_outstanding == "No": - update_outstanding_amt( - self.credit_to, - "Supplier", - self.supplier, - self.doctype, - self.return_against if cint(self.is_return) and self.return_against else self.name, + update_voucher_outstanding( + voucher_type=self.doctype, + voucher_no=self.return_against if cint(self.is_return) and self.return_against else self.name, + account=self.credit_to, + party_type="Supplier", + party=self.supplier, ) def get_gl_entries(self, warehouse_account=None): @@ -876,6 +862,7 @@ class PurchaseInvoice(BuyingController): self.make_tax_gl_entries(gl_entries) self.make_internal_transfer_gl_entries(gl_entries) + self.make_gl_entries_for_tax_withholding(gl_entries) gl_entries = make_regional_gl_entries(gl_entries, self) @@ -884,6 +871,7 @@ class PurchaseInvoice(BuyingController): self.make_payment_gl_entries(gl_entries) self.make_write_off_gl_entry(gl_entries) self.make_gle_for_rounding_adjustment(gl_entries) + self.set_transaction_currency_and_rate_in_gl_map(gl_entries) return gl_entries def check_asset_cwip_enabled(self): @@ -909,32 +897,38 @@ class PurchaseInvoice(BuyingController): ) if grand_total and not self.is_internal_transfer(): - against_voucher = self.name - if self.is_return and self.return_against and not self.update_outstanding_for_self: - against_voucher = self.return_against + self.add_supplier_gl_entry(gl_entries, base_grand_total, grand_total) - # Did not use base_grand_total to book rounding loss gle - gl_entries.append( - self.get_gl_dict( - { - "account": self.credit_to, - "party_type": "Supplier", - "party": self.supplier, - "due_date": self.due_date, - "against": self.against_expense_account, - "credit": base_grand_total, - "credit_in_account_currency": base_grand_total - if self.party_account_currency == self.company_currency - else grand_total, - "against_voucher": against_voucher, - "against_voucher_type": self.doctype, - "project": self.project, - "cost_center": self.cost_center, - }, - self.party_account_currency, - item=self, - ) - ) + def add_supplier_gl_entry( + self, gl_entries, base_grand_total, grand_total, against_account=None, remarks=None, skip_merge=False + ): + against_voucher = self.name + if self.is_return and self.return_against and not self.update_outstanding_for_self: + against_voucher = self.return_against + + # Did not use base_grand_total to book rounding loss gle + gl = { + "account": self.credit_to, + "party_type": "Supplier", + "party": self.supplier, + "due_date": self.due_date, + "against": against_account or self.against_expense_account, + "credit": base_grand_total, + "credit_in_account_currency": base_grand_total + if self.party_account_currency == self.company_currency + else grand_total, + "credit_in_transaction_currency": grand_total, + "against_voucher": against_voucher, + "against_voucher_type": self.doctype, + "project": self.project, + "cost_center": self.cost_center, + "_skip_merge": skip_merge, + } + + if remarks: + gl["remarks"] = remarks + + gl_entries.append(self.get_gl_dict(gl, self.party_account_currency, item=self)) def make_item_gl_entries(self, gl_entries): # item gl entries @@ -959,7 +953,7 @@ class PurchaseInvoice(BuyingController): valuation_tax_accounts = [ d.account_head for d in self.get("taxes") - if d.category in ("Valuation", "Total and Valuation") + if d.category in ("Valuation", "Valuation and Total") and flt(d.base_tax_amount_after_discount_amount) ] @@ -975,7 +969,6 @@ class PurchaseInvoice(BuyingController): for item in self.get("items"): if flt(item.base_net_amount): - account_currency = get_account_currency(item.expense_account) if item.item_code: frappe.get_cached_value("Item", item.item_code, "asset_category") @@ -984,6 +977,7 @@ class PurchaseInvoice(BuyingController): and self.auto_accounting_for_stock and (item.item_code in stock_items or item.is_fixed_asset) ): + account_currency = get_account_currency(item.expense_account) # warehouse account warehouse_debit_amount = self.make_stock_adjustment_entry( gl_entries, item, voucher_wise_stock_value, account_currency @@ -999,6 +993,7 @@ class PurchaseInvoice(BuyingController): "project": item.project or self.project, "remarks": self.get("remarks") or _("Accounting Entry for Stock"), "debit": warehouse_debit_amount, + "debit_in_transaction_currency": item.net_amount, }, warehouse_account[item.warehouse]["account_currency"], item=item, @@ -1019,6 +1014,7 @@ class PurchaseInvoice(BuyingController): "project": item.project or self.project, "remarks": self.get("remarks") or _("Accounting Entry for Stock"), "debit": -1 * flt(credit_amount, item.precision("base_net_amount")), + "debit_in_transaction_currency": item.net_amount, }, warehouse_account[item.from_warehouse]["account_currency"], item=item, @@ -1033,6 +1029,7 @@ class PurchaseInvoice(BuyingController): "account": item.expense_account, "against": self.supplier, "debit": flt(item.base_net_amount, item.precision("base_net_amount")), + "debit_in_transaction_currency": item.net_amount, "remarks": self.get("remarks") or _("Accounting Entry for Stock"), "cost_center": item.cost_center, "project": item.project, @@ -1050,6 +1047,10 @@ class PurchaseInvoice(BuyingController): "account": item.expense_account, "against": self.supplier, "debit": warehouse_debit_amount, + "debit_in_transaction_currency": flt( + warehouse_debit_amount / self.conversion_rate, + item.precision("net_amount"), + ), "remarks": self.get("remarks") or _("Accounting Entry for Stock"), "cost_center": item.cost_center, "project": item.project or self.project, @@ -1062,7 +1063,9 @@ class PurchaseInvoice(BuyingController): # Amount added through landed-cost-voucher if landed_cost_entries: if (item.item_code, item.name) in landed_cost_entries: - for account, amount in landed_cost_entries[(item.item_code, item.name)].items(): + for account, base_amount in landed_cost_entries[ + (item.item_code, item.name) + ].items(): gl_entries.append( self.get_gl_dict( { @@ -1070,8 +1073,9 @@ class PurchaseInvoice(BuyingController): "against": item.expense_account, "cost_center": item.cost_center, "remarks": self.get("remarks") or _("Accounting Entry for Stock"), - "credit": flt(amount["base_amount"]), - "credit_in_account_currency": flt(amount["amount"]), + "credit": flt(base_amount["base_amount"]), + "credit_in_account_currency": flt(base_amount["amount"]), + "credit_in_transaction_currency": item.net_amount, "project": item.project or self.project, }, item=item, @@ -1094,6 +1098,7 @@ class PurchaseInvoice(BuyingController): "project": item.project or self.project, "remarks": self.get("remarks") or _("Accounting Entry for Stock"), "credit": flt(item.rm_supp_cost), + "credit_in_transaction_currency": item.net_amount, }, warehouse_account[self.supplier_warehouse]["account_currency"], item=item, @@ -1107,7 +1112,8 @@ class PurchaseInvoice(BuyingController): else item.deferred_expense_account ) - dummy, amount = self.get_amount_and_base_amount(item, None) + account_currency = get_account_currency(expense_account) + amount, base_amount = self.get_amount_and_base_amount(item, None) if provisional_accounting_for_non_stock_items: self.make_provisional_gl_entry(gl_entries, item) @@ -1118,7 +1124,8 @@ class PurchaseInvoice(BuyingController): { "account": expense_account, "against": self.supplier, - "debit": amount, + "debit": base_amount, + "debit_in_transaction_currency": amount, "cost_center": item.cost_center, "project": item.project or self.project, }, @@ -1133,6 +1140,7 @@ class PurchaseInvoice(BuyingController): exchange_rate_map[item.purchase_receipt] and self.conversion_rate != exchange_rate_map[item.purchase_receipt] and item.net_rate == net_rate_map[item.pr_detail] + and item.item_code in stock_items ): discrepancy_caused_by_exchange_rate_difference = ( item.qty * item.net_rate @@ -1191,6 +1199,10 @@ class PurchaseInvoice(BuyingController): "account": stock_rbnb, "against": self.supplier, "debit": flt(item.item_tax_amount, item.precision("item_tax_amount")), + "debit_in_transaction_currency": flt( + item.item_tax_amount / self.conversion_rate, + item.precision("item_tax_amount"), + ), "remarks": self.remarks or _("Accounting Entry for Stock"), "cost_center": self.cost_center, "project": item.project or self.project, @@ -1306,6 +1318,7 @@ class PurchaseInvoice(BuyingController): "account": cost_of_goods_sold_account, "against": item.expense_account, "debit": stock_adjustment_amt, + "debit_in_transaction_currency": stock_adjustment_amt / self.conversion_rate, "remarks": self.get("remarks") or _("Stock Adjustment"), "cost_center": item.cost_center, "project": item.project or self.project, @@ -1317,6 +1330,38 @@ class PurchaseInvoice(BuyingController): warehouse_debit_amount = stock_amount + elif self.is_return and self.update_stock and self.is_internal_supplier and warehouse_debit_amount: + net_rate = item.base_net_amount + if item.sales_incoming_rate: # for internal transfer + net_rate = item.qty * item.sales_incoming_rate + + stock_amount = ( + net_rate + + item.item_tax_amount + + flt(item.landed_cost_voucher_amount) + + flt(item.get("amount_difference_with_purchase_invoice")) + ) + + if flt(stock_amount, net_amt_precision) != flt(warehouse_debit_amount, net_amt_precision): + cost_of_goods_sold_account = self.get_company_default("default_expense_account") + stock_adjustment_amt = stock_amount - warehouse_debit_amount + + gl_entries.append( + self.get_gl_dict( + { + "account": cost_of_goods_sold_account, + "against": item.expense_account, + "debit": stock_adjustment_amt, + "debit_in_transaction_currency": stock_adjustment_amt / self.conversion_rate, + "remarks": self.get("remarks") or _("Stock Adjustment"), + "cost_center": item.cost_center, + "project": item.project or self.project, + }, + account_currency, + item=item, + ) + ) + return warehouse_debit_amount def make_tax_gl_entries(self, gl_entries): @@ -1339,6 +1384,7 @@ class PurchaseInvoice(BuyingController): dr_or_cr + "_in_account_currency": base_amount if account_currency == self.company_currency else amount, + dr_or_cr + "_in_transaction_currency": amount, "cost_center": tax.cost_center, }, account_currency, @@ -1385,6 +1431,10 @@ class PurchaseInvoice(BuyingController): "cost_center": tax.cost_center, "against": self.supplier, "credit": applicable_amount, + "credit_in_transaction_currency": flt( + applicable_amount / self.conversion_rate, + frappe.get_precision("Purchase Invoice Item", "item_tax_amount"), + ), "remarks": self.remarks or _("Accounting Entry for Stock"), }, item=tax, @@ -1403,6 +1453,10 @@ class PurchaseInvoice(BuyingController): "cost_center": tax.cost_center, "against": self.supplier, "credit": valuation_tax[tax.name], + "credit_in_transaction_currency": flt( + valuation_tax[tax.name] / self.conversion_rate, + frappe.get_precision("Purchase Invoice Item", "item_tax_amount"), + ), "remarks": self.remarks or _("Accounting Entry for Stock"), }, item=tax, @@ -1418,6 +1472,7 @@ class PurchaseInvoice(BuyingController): "account": self.unrealized_profit_loss_account, "against": self.supplier, "credit": flt(self.total_taxes_and_charges), + "credit_in_transaction_currency": flt(self.total_taxes_and_charges), "credit_in_account_currency": flt(self.base_total_taxes_and_charges), "cost_center": self.cost_center, }, @@ -1426,6 +1481,31 @@ class PurchaseInvoice(BuyingController): ) ) + def make_gl_entries_for_tax_withholding(self, gl_entries): + """ + Tax withholding amount is not part of supplier invoice. + Separate supplier GL Entry for correct reporting. + """ + if not self.apply_tds: + return + + for row in self.get("taxes"): + if not row.is_tax_withholding_account or not row.tax_amount: + continue + + base_tds_amount = row.base_tax_amount_after_discount_amount + tds_amount = row.tax_amount_after_discount_amount + + self.add_supplier_gl_entry(gl_entries, base_tds_amount, tds_amount) + self.add_supplier_gl_entry( + gl_entries, + -base_tds_amount, + -tds_amount, + against_account=row.account_head, + remarks=_("TDS Deducted"), + skip_merge=True, + ) + def make_payment_gl_entries(self, gl_entries): # Make Cash GL Entries if cint(self.is_paid) and self.cash_bank_account and self.paid_amount: @@ -1442,6 +1522,7 @@ class PurchaseInvoice(BuyingController): "debit_in_account_currency": self.base_paid_amount if self.party_account_currency == self.company_currency else self.paid_amount, + "debit_in_transaction_currency": self.paid_amount, "against_voucher": self.return_against if cint(self.is_return) and self.return_against else self.name, @@ -1463,6 +1544,7 @@ class PurchaseInvoice(BuyingController): "credit_in_account_currency": self.base_paid_amount if bank_account_currency == self.company_currency else self.paid_amount, + "credit_in_transaction_currency": self.paid_amount, "cost_center": self.cost_center, }, bank_account_currency, @@ -1487,6 +1569,7 @@ class PurchaseInvoice(BuyingController): "debit_in_account_currency": self.base_write_off_amount if self.party_account_currency == self.company_currency else self.write_off_amount, + "debit_in_transaction_currency": self.write_off_amount, "against_voucher": self.return_against if cint(self.is_return) and self.return_against else self.name, @@ -1507,6 +1590,7 @@ class PurchaseInvoice(BuyingController): "credit_in_account_currency": self.base_write_off_amount if write_off_account_currency == self.company_currency else self.write_off_amount, + "credit_in_transaction_currency": self.write_off_amount, "cost_center": self.cost_center or self.write_off_cost_center, }, item=self, @@ -1519,10 +1603,29 @@ class PurchaseInvoice(BuyingController): # eg: rounding_adjustment = 0.01 and exchange rate = 0.05 and precision of base_rounding_adjustment is 2 # then base_rounding_adjustment becomes zero and error is thrown in GL Entry if not self.is_internal_transfer() and self.rounding_adjustment and self.base_rounding_adjustment: - round_off_account, round_off_cost_center = get_round_off_account_and_cost_center( + ( + round_off_account, + round_off_cost_center, + round_off_for_opening, + ) = get_round_off_account_and_cost_center( self.company, "Purchase Invoice", self.name, self.use_company_roundoff_cost_center ) + if self.is_opening == "Yes" and self.rounding_adjustment: + if not round_off_for_opening: + frappe.throw( + _( + "Opening Invoice has rounding adjustment of {0}.

'{1}' account is required to post these values. Please set it in Company: {2}.

Or, '{3}' can be enabled to not post any rounding adjustment." + ).format( + frappe.bold(self.rounding_adjustment), + frappe.bold("Round Off for Opening"), + get_link_to_form("Company", self.company), + frappe.bold("Disable Rounded Total"), + ) + ) + else: + round_off_account = round_off_for_opening + gl_entries.append( self.get_gl_dict( { @@ -1606,7 +1709,11 @@ class PurchaseInvoice(BuyingController): for proj, value in projects.items(): res = frappe.qb.from_(pj).select(pj.total_purchase_cost).where(pj.name == proj).for_update().run() current_purchase_cost = res and res[0][0] or 0 - frappe.db.set_value("Project", proj, "total_purchase_cost", current_purchase_cost + value) + # frappe.db.set_value("Project", proj, "total_purchase_cost", current_purchase_cost + value) + project_doc = frappe.get_doc("Project", proj) + project_doc.total_purchase_cost = current_purchase_cost + value + project_doc.calculate_gross_margin() + project_doc.db_update() def validate_supplier_invoice(self): if self.bill_date: @@ -1636,7 +1743,12 @@ class PurchaseInvoice(BuyingController): if pi: pi = pi[0][0] - frappe.throw(_("Supplier Invoice No exists in Purchase Invoice {0}").format(pi)) + + frappe.throw( + _("Supplier Invoice No exists in Purchase Invoice {0}").format( + get_link_to_form("Purchase Invoice", pi) + ) + ) def update_billing_status_in_pr(self, update_modified=True): if self.is_return and not self.update_billed_amount_in_purchase_receipt: @@ -1750,13 +1862,13 @@ class PurchaseInvoice(BuyingController): self.remove(d) ## Add pending vouchers on which tax was withheld - for voucher_no, voucher_details in voucher_wise_amount.items(): + for row in voucher_wise_amount: self.append( "tax_withheld_vouchers", { - "voucher_name": voucher_no, - "voucher_type": voucher_details.get("voucher_type"), - "taxable_amount": voucher_details.get("amount"), + "voucher_name": row.voucher_name, + "voucher_type": row.voucher_type, + "taxable_amount": row.taxable_amount, }, ) diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.js index 031b2341bb6..6bfb48c13d2 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.js +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.js @@ -45,12 +45,16 @@ frappe.listview_settings["Purchase Invoice"] = { }, onload: function (listview) { - listview.page.add_action_item(__("Purchase Receipt"), () => { - erpnext.bulk_transaction_processing.create(listview, "Purchase Invoice", "Purchase Receipt"); - }); + if (frappe.model.can_create("Purchase Receipt")) { + listview.page.add_action_item(__("Purchase Receipt"), () => { + erpnext.bulk_transaction_processing.create(listview, "Purchase Invoice", "Purchase Receipt"); + }); + } - listview.page.add_action_item(__("Payment"), () => { - erpnext.bulk_transaction_processing.create(listview, "Purchase Invoice", "Payment Entry"); - }); + if (frappe.model.can_create("Payment Entry")) { + listview.page.add_action_item(__("Payment"), () => { + erpnext.bulk_transaction_processing.create(listview, "Purchase Invoice", "Payment Entry"); + }); + } }, }; diff --git a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py index 31143fb72b8..084a262a890 100644 --- a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py +++ b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py @@ -372,6 +372,53 @@ class TestPurchaseInvoice(FrappeTestCase, StockTestMixin): self.assertEqual(discrepancy_caused_by_exchange_rate_diff, amount) + def test_purchase_invoice_with_exchange_rate_difference_for_non_stock_item(self): + from erpnext.stock.doctype.purchase_receipt.purchase_receipt import ( + make_purchase_invoice as create_purchase_invoice, + ) + + # Creating Purchase Invoice with USD currency + pr = frappe.new_doc("Purchase Receipt") + pr.currency = "USD" + pr.company = "_Test Company with perpetual inventory" + pr.conversion_rate = (70,) + pr.supplier = "_Test Supplier USD" + pr.append( + "items", + { + "item_code": "_Test Non Stock Item", + "qty": 1, + "rate": 100, + }, + ) + pr.append( + "items", + {"item_code": "_Test Item", "qty": 1, "rate": 5, "warehouse": "Stores - TCP1"}, + ) + pr.insert() + pr.submit() + + # Createing purchase invoice against Purchase Receipt + pi = create_purchase_invoice(pr.name) + pi.conversion_rate = 80 + pi.credit_to = "_Test Payable USD - TCP1" + pi.insert() + pi.submit() + + # Get exchnage gain and loss account + exchange_gain_loss_account = frappe.db.get_value("Company", pi.company, "exchange_gain_loss_account") + + # fetching the latest GL Entry with exchange gain and loss account account + amount = frappe.db.get_value( + "GL Entry", {"account": exchange_gain_loss_account, "voucher_no": pi.name}, "debit" + ) + + discrepancy_caused_by_exchange_rate_diff = abs( + pi.items[1].base_net_amount - pr.items[1].base_net_amount + ) + + self.assertEqual(discrepancy_caused_by_exchange_rate_diff, amount) + def test_purchase_invoice_change_naming_series(self): pi = frappe.copy_doc(test_records[1]) pi.insert() @@ -1544,6 +1591,61 @@ class TestPurchaseInvoice(FrappeTestCase, StockTestMixin): payment_entry.load_from_db() self.assertEqual(payment_entry.taxes[0].allocated_amount, 0) + def test_purchase_gl_with_tax_withholding_tax(self): + company = "_Test Company" + + tds_account_args = { + "doctype": "Account", + "account_name": "TDS Payable", + "account_type": "Tax", + "parent_account": frappe.db.get_value( + "Account", {"account_name": "Duties and Taxes", "company": company} + ), + "company": company, + } + + tds_account = create_account(**tds_account_args) + tax_withholding_category = "Test TDS - 194 - Dividends - Individual" + + # Update tax withholding category with current fiscal year and rate details + create_tax_witholding_category(tax_withholding_category, company, tds_account) + + # create a new supplier to test + supplier = create_supplier( + supplier_name="_Test TDS Advance Supplier", + tax_withholding_category=tax_withholding_category, + ) + + pi = make_purchase_invoice( + supplier=supplier.name, + rate=3000, + qty=1, + item="_Test Non Stock Item", + do_not_submit=1, + ) + pi.apply_tds = 1 + pi.tax_withholding_category = tax_withholding_category + pi.save() + pi.submit() + + self.assertEqual(pi.taxes[0].tax_amount, 300) + self.assertEqual(pi.taxes[0].account_head, tds_account) + + gl_entries = frappe.get_all( + "GL Entry", + filters={"voucher_no": pi.name, "voucher_type": "Purchase Invoice", "account": "Creditors - _TC"}, + fields=["account", "against", "debit", "credit"], + ) + + for gle in gl_entries: + if gle.debit: + # GL Entry with TDS Amount + self.assertEqual(gle.against, tds_account) + self.assertEqual(gle.debit, 300) + else: + # GL Entry with Purchase Invoice Amount + self.assertEqual(gle.credit, 3000) + def test_provisional_accounting_entry(self): setup_provisional_accounting() @@ -1680,6 +1782,30 @@ class TestPurchaseInvoice(FrappeTestCase, StockTestMixin): frappe.db.set_single_value("Buying Settings", "set_landed_cost_based_on_purchase_invoice_rate", 1) + # Cost of Item is zero in Purchase Receipt + pr = make_purchase_receipt(qty=1, rate=0) + + stock_value_difference = frappe.db.get_value( + "Stock Ledger Entry", + {"voucher_type": "Purchase Receipt", "voucher_no": pr.name}, + "stock_value_difference", + ) + self.assertEqual(stock_value_difference, 0) + + pi = create_purchase_invoice_from_receipt(pr.name) + for row in pi.items: + row.rate = 150 + + pi.save() + pi.submit() + + stock_value_difference = frappe.db.get_value( + "Stock Ledger Entry", + {"voucher_type": "Purchase Receipt", "voucher_no": pr.name}, + "stock_value_difference", + ) + self.assertEqual(stock_value_difference, 150) + # Increase the cost of the item pr = make_purchase_receipt(qty=1, rate=100) @@ -1759,6 +1885,52 @@ class TestPurchaseInvoice(FrappeTestCase, StockTestMixin): frappe.db.set_single_value("Buying Settings", "maintain_same_rate", 1) + def test_adjust_incoming_rate_for_rejected_item(self): + frappe.db.set_single_value("Buying Settings", "maintain_same_rate", 0) + + frappe.db.set_single_value("Buying Settings", "set_landed_cost_based_on_purchase_invoice_rate", 1) + + # Cost of Item is zero in Purchase Receipt + pr = make_purchase_receipt(qty=1, rejected_qty=1, rate=0) + + stock_value_difference = frappe.db.get_value( + "Stock Ledger Entry", + {"voucher_type": "Purchase Receipt", "voucher_no": pr.name}, + "stock_value_difference", + ) + self.assertEqual(stock_value_difference, 0) + + pi = create_purchase_invoice_from_receipt(pr.name) + for row in pi.items: + row.qty = 1 + row.rate = 150 + + pi.save() + pi.submit() + + stock_value_difference = frappe.db.get_value( + "Stock Ledger Entry", + {"voucher_type": "Purchase Receipt", "voucher_no": pr.name, "warehouse": pi.items[0].warehouse}, + "stock_value_difference", + ) + self.assertEqual(stock_value_difference, 150) + + stock_value_difference = frappe.db.get_value( + "Stock Ledger Entry", + { + "voucher_type": "Purchase Receipt", + "voucher_no": pr.name, + "warehouse": pi.items[0].rejected_warehouse, + }, + "stock_value_difference", + ) + + self.assertFalse(stock_value_difference) + + frappe.db.set_single_value("Buying Settings", "set_landed_cost_based_on_purchase_invoice_rate", 0) + + frappe.db.set_single_value("Buying Settings", "maintain_same_rate", 1) + def test_item_less_defaults(self): pi = frappe.new_doc("Purchase Invoice") pi.supplier = "_Test Supplier" @@ -1922,7 +2094,7 @@ class TestPurchaseInvoice(FrappeTestCase, StockTestMixin): 1, ) pi = make_pi_from_pr(pr.name) - self.assertEqual(pi.payment_schedule[0].payment_amount, 2500) + self.assertEqual(pi.payment_schedule[0].payment_amount, 1000) automatically_fetch_payment_terms(enable=0) frappe.db.set_value( @@ -2292,6 +2464,297 @@ class TestPurchaseInvoice(FrappeTestCase, StockTestMixin): frappe.db.set_single_value("Buying Settings", "maintain_same_rate", 1) + def test_last_purchase_rate(self): + item = create_item("_Test Item For Last Purchase Rate from PI", is_stock_item=1) + pi1 = make_purchase_invoice(item_code=item.item_code, qty=10, rate=100) + item.reload() + self.assertEqual(item.last_purchase_rate, 100) + + pi2 = make_purchase_invoice(item_code=item.item_code, qty=10, rate=200) + item.reload() + self.assertEqual(item.last_purchase_rate, 200) + + pi2.cancel() + item.reload() + self.assertEqual(item.last_purchase_rate, 100) + + pi1.cancel() + item.reload() + self.assertEqual(item.last_purchase_rate, 0) + + def test_adjust_incoming_rate_from_pi_with_multi_currency_and_partial_billing(self): + frappe.db.set_single_value("Buying Settings", "maintain_same_rate", 0) + + frappe.db.set_single_value("Buying Settings", "set_landed_cost_based_on_purchase_invoice_rate", 1) + + pr = make_purchase_receipt( + qty=10, rate=10, currency="USD", do_not_save=1, supplier="_Test Supplier USD" + ) + pr.conversion_rate = 5300 + pr.save() + pr.submit() + + incoming_rate = frappe.db.get_value( + "Stock Ledger Entry", + {"voucher_type": "Purchase Receipt", "voucher_no": pr.name}, + "incoming_rate", + ) + self.assertEqual(incoming_rate, 53000) # Asserting to confirm if the default calculation is correct + + pi = create_purchase_invoice_from_receipt(pr.name) + for row in pi.items: + row.qty = 1 + + pi.save() + pi.submit() + + incoming_rate = frappe.db.get_value( + "Stock Ledger Entry", + {"voucher_type": "Purchase Receipt", "voucher_no": pr.name}, + "incoming_rate", + ) + # Test 1 : Incoming rate should not change as only the qty has changed and not the rate (this was not the case before) + self.assertEqual(incoming_rate, 53000) + + pi = create_purchase_invoice_from_receipt(pr.name) + for row in pi.items: + row.qty = 1 + row.rate = 9 + + pi.save() + pi.submit() + + incoming_rate = frappe.db.get_value( + "Stock Ledger Entry", + {"voucher_type": "Purchase Receipt", "voucher_no": pr.name}, + "incoming_rate", + ) + # Test 2 : Rate in new PI is lower than PR, so incoming rate should also be lower + self.assertEqual(incoming_rate, 50350) + + pi = create_purchase_invoice_from_receipt(pr.name) + for row in pi.items: + row.qty = 1 + row.rate = 12 + + pi.save() + pi.submit() + + incoming_rate = frappe.db.get_value( + "Stock Ledger Entry", + {"voucher_type": "Purchase Receipt", "voucher_no": pr.name}, + "incoming_rate", + ) + # Test 3 : Rate in new PI is higher than PR, so incoming rate should also be higher + self.assertEqual(incoming_rate, 54766.667) + + frappe.db.set_single_value("Buying Settings", "set_landed_cost_based_on_purchase_invoice_rate", 0) + + frappe.db.set_single_value("Buying Settings", "maintain_same_rate", 1) + + def test_opening_invoice_rounding_adjustment_validation(self): + pi = make_purchase_invoice(do_not_save=1) + pi.items[0].rate = 99.98 + pi.items[0].qty = 1 + pi.items[0].expense_account = "Temporary Opening - _TC" + pi.is_opening = "Yes" + pi.save() + self.assertRaises(frappe.ValidationError, pi.submit) + + def _create_opening_roundoff_account(self, company_name): + liability_root = frappe.db.get_all( + "Account", + filters={"company": company_name, "root_type": "Liability", "disabled": 0}, + order_by="lft", + limit=1, + )[0] + + # setup round off account + if acc := frappe.db.exists( + "Account", + { + "account_name": "Round Off for Opening", + "account_type": "Round Off for Opening", + "company": company_name, + }, + ): + frappe.db.set_value("Company", company_name, "round_off_for_opening", acc) + else: + acc = frappe.new_doc("Account") + acc.company = company_name + acc.parent_account = liability_root.name + acc.account_name = "Round Off for Opening" + acc.account_type = "Round Off for Opening" + acc.save() + frappe.db.set_value("Company", company_name, "round_off_for_opening", acc.name) + + def test_ledger_entries_of_opening_invoice_with_rounding_adjustment(self): + pi = make_purchase_invoice(do_not_save=1) + pi.items[0].rate = 99.98 + pi.items[0].qty = 1 + pi.items[0].expense_account = "Temporary Opening - _TC" + pi.is_opening = "Yes" + pi.save() + self._create_opening_roundoff_account(pi.company) + pi.submit() + actual = frappe.db.get_all( + "GL Entry", + filters={"voucher_no": pi.name, "is_opening": "Yes", "is_cancelled": False}, + fields=["account", "debit", "credit", "is_opening"], + order_by="account,debit", + ) + expected = [ + {"account": "Creditors - _TC", "debit": 0.0, "credit": 100.0, "is_opening": "Yes"}, + {"account": "Round Off for Opening - _TC", "debit": 0.02, "credit": 0.0, "is_opening": "Yes"}, + {"account": "Temporary Opening - _TC", "debit": 99.98, "credit": 0.0, "is_opening": "Yes"}, + ] + self.assertEqual(len(actual), 3) + self.assertEqual(expected, actual) + + def test_invoice_against_returned_pr(self): + from erpnext.stock.doctype.item.test_item import make_item + from erpnext.stock.doctype.purchase_receipt.purchase_receipt import ( + make_purchase_invoice as make_purchase_invoice_from_pr, + ) + from erpnext.stock.doctype.purchase_receipt.purchase_receipt import ( + make_purchase_return_against_rejected_warehouse, + ) + + item = make_item("_Test Item For Invoice Against Returned PR", properties={"is_stock_item": 1}).name + + original_value = frappe.db.get_single_value( + "Buying Settings", "bill_for_rejected_quantity_in_purchase_invoice" + ) + frappe.db.set_single_value("Buying Settings", "bill_for_rejected_quantity_in_purchase_invoice", 0) + + pr = make_purchase_receipt(item_code=item, qty=5, rejected_qty=5, rate=100) + pr_return = make_purchase_return_against_rejected_warehouse(pr.name) + pr_return.submit() + + pi = make_purchase_invoice_from_pr(pr.name) + pi.save() + self.assertEqual(pi.items[0].qty, 5.0) + + frappe.db.set_single_value( + "Buying Settings", "bill_for_rejected_quantity_in_purchase_invoice", original_value + ) + + def test_trx_currency_debit_credit_for_high_precision(self): + exc_rate = 0.737517516 + pi = make_purchase_invoice( + currency="USD", conversion_rate=exc_rate, qty=1, rate=2000, do_not_save=True + ) + pi.supplier = "_Test Supplier USD" + pi.save().submit() + + expected = ( + ("_Test Account Cost for Goods Sold - _TC", 1475.04, 0.0, 2000.0, 0.0, "USD", exc_rate), + ("_Test Payable USD - _TC", 0.0, 1475.04, 0.0, 2000.0, "USD", exc_rate), + ) + + actual = frappe.db.get_all( + "GL Entry", + filters={"voucher_no": pi.name}, + fields=[ + "account", + "debit", + "credit", + "debit_in_transaction_currency", + "credit_in_transaction_currency", + "transaction_currency", + "transaction_exchange_rate", + ], + order_by="account", + as_list=1, + ) + self.assertEqual(actual, expected) + + def test_prevents_fully_returned_invoice_with_zero_quantity(self): + from erpnext.controllers.sales_and_purchase_return import StockOverReturnError, make_return_doc + + invoice = make_purchase_invoice(qty=10) + + return_doc = make_return_doc(invoice.doctype, invoice.name) + return_doc.items[0].qty = -10 + return_doc.save().submit() + + return_doc = make_return_doc(invoice.doctype, invoice.name) + return_doc.items[0].qty = 0 + + self.assertRaises(StockOverReturnError, return_doc.save) + + def test_apply_discount_on_grand_total(self): + """ + To test if after applying discount on grand total, + the grand total is calculated correctly without any rounding errors + """ + invoice = make_purchase_invoice(qty=2, rate=100, do_not_save=True, do_not_submit=True) + invoice.append( + "items", + { + "item_code": "_Test Item", + "qty": 1, + "rate": 21.39, + }, + ) + invoice.append( + "taxes", + { + "charge_type": "On Net Total", + "account_head": "_Test Account VAT - _TC", + "description": "VAT", + "rate": 15.5, + }, + ) + + # the grand total here will be 255.71 + invoice.disable_rounded_total = 1 + # apply discount on grand total to adjust the grand total to 255 + invoice.discount_amount = 0.71 + invoice.save() + + # check if grand total is 496 and not something like 254.99 due to rounding errors + self.assertEqual(invoice.grand_total, 255) + + def test_apply_discount_on_grand_total_with_previous_row_total_tax(self): + """ + To test if after applying discount on grand total, + where the tax is calculated on previous row total, the grand total is calculated correctly + """ + + invoice = make_purchase_invoice(qty=2, rate=100, do_not_save=True, do_not_submit=True) + invoice.extend( + "taxes", + [ + { + "charge_type": "Actual", + "account_head": "_Test Account VAT - _TC", + "description": "VAT", + "tax_amount": 100, + }, + { + "charge_type": "On Previous Row Amount", + "account_head": "_Test Account VAT - _TC", + "description": "VAT", + "row_id": 1, + "rate": 10, + }, + { + "charge_type": "On Previous Row Total", + "account_head": "_Test Account VAT - _TC", + "description": "VAT", + "row_id": 1, + "rate": 10, + }, + ], + ) + + # the total here will be 340, so applying 40 discount + invoice.discount_amount = 40 + invoice.save() + + self.assertEqual(invoice.grand_total, 300) + def set_advance_flag(company, flag, default_account): frappe.db.set_value( diff --git a/erpnext/accounts/doctype/purchase_invoice_advance/purchase_invoice_advance.json b/erpnext/accounts/doctype/purchase_invoice_advance/purchase_invoice_advance.json index 4db531eac90..4d0579ebc7e 100644 --- a/erpnext/accounts/doctype/purchase_invoice_advance/purchase_invoice_advance.json +++ b/erpnext/accounts/doctype/purchase_invoice_advance/purchase_invoice_advance.json @@ -14,7 +14,8 @@ "advance_amount", "allocated_amount", "exchange_gain_loss", - "ref_exchange_rate" + "ref_exchange_rate", + "difference_posting_date" ], "fields": [ { @@ -30,7 +31,7 @@ "width": "180px" }, { - "columns": 3, + "columns": 2, "fieldname": "reference_name", "fieldtype": "Dynamic Link", "in_list_view": 1, @@ -40,7 +41,7 @@ "read_only": 1 }, { - "columns": 3, + "columns": 2, "fieldname": "remarks", "fieldtype": "Text", "in_list_view": 1, @@ -111,13 +112,20 @@ "label": "Reference Exchange Rate", "non_negative": 1, "read_only": 1 + }, + { + "columns": 2, + "fieldname": "difference_posting_date", + "fieldtype": "Date", + "in_list_view": 1, + "label": "Difference Posting Date" } ], "idx": 1, "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2023-06-23 21:13:18.013816", + "modified": "2024-12-20 12:04:46.729972", "modified_by": "Administrator", "module": "Accounts", "name": "Purchase Invoice Advance", diff --git a/erpnext/accounts/doctype/purchase_invoice_advance/purchase_invoice_advance.py b/erpnext/accounts/doctype/purchase_invoice_advance/purchase_invoice_advance.py index bbd3009224a..a3fabbdc322 100644 --- a/erpnext/accounts/doctype/purchase_invoice_advance/purchase_invoice_advance.py +++ b/erpnext/accounts/doctype/purchase_invoice_advance/purchase_invoice_advance.py @@ -16,6 +16,7 @@ class PurchaseInvoiceAdvance(Document): advance_amount: DF.Currency allocated_amount: DF.Currency + difference_posting_date: DF.Date | None exchange_gain_loss: DF.Currency parent: DF.Data parentfield: DF.Data 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 12ed168875b..69d5da7b9a3 100644 --- a/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json +++ b/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json @@ -462,7 +462,8 @@ "depends_on": "eval:!doc.is_fixed_asset && doc.use_serial_batch_fields === 1 && parent.update_stock === 1", "fieldname": "serial_no", "fieldtype": "Text", - "label": "Serial No" + "label": "Serial No", + "no_copy": 1 }, { "depends_on": "eval:!doc.is_fixed_asset && doc.use_serial_batch_fields === 1 && parent.update_stock === 1", @@ -506,7 +507,8 @@ "fieldtype": "Link", "label": "Project", "options": "Project", - "print_hide": 1 + "print_hide": 1, + "search_index": 1 }, { "allow_on_submit": 1, @@ -981,7 +983,7 @@ "idx": 1, "istable": 1, "links": [], - "modified": "2024-07-19 12:12:42.449298", + "modified": "2025-03-12 16:33:13.453290", "modified_by": "Administrator", "module": "Accounts", "name": "Purchase Invoice Item", @@ -991,4 +993,4 @@ "sort_field": "modified", "sort_order": "DESC", "states": [] -} +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/repost_accounting_ledger/repost_accounting_ledger.py b/erpnext/accounts/doctype/repost_accounting_ledger/repost_accounting_ledger.py index 8c8ba633df0..800f1647471 100644 --- a/erpnext/accounts/doctype/repost_accounting_ledger/repost_accounting_ledger.py +++ b/erpnext/accounts/doctype/repost_accounting_ledger/repost_accounting_ledger.py @@ -1,11 +1,15 @@ # Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors # For license information, please see license.txt +import inspect + import frappe from frappe import _, qb from frappe.model.document import Document from frappe.utils.data import comma_and +from erpnext.stock import get_warehouse_account_map + class RepostAccountingLedger(Document): # begin: auto-generated types @@ -45,9 +49,9 @@ class RepostAccountingLedger(Document): latest_pcv = ( frappe.db.get_all( "Period Closing Voucher", - filters={"company": self.company}, - order_by="posting_date desc", - pluck="posting_date", + filters={"company": self.company, "docstatus": 1}, + order_by="period_end_date desc", + pluck="period_end_date", limit=1, ) or None @@ -95,6 +99,9 @@ class RepostAccountingLedger(Document): doc = frappe.get_doc(x.voucher_type, x.voucher_no) if doc.doctype in ["Payment Entry", "Journal Entry"]: gle_map = doc.build_gl_map() + elif doc.doctype == "Purchase Receipt": + warehouse_account_map = get_warehouse_account_map(doc.company) + gle_map = doc.get_gl_entries(warehouse_account_map) else: gle_map = doc.get_gl_entries() @@ -142,6 +149,8 @@ class RepostAccountingLedger(Document): @frappe.whitelist() def start_repost(account_repost_doc=str) -> None: + from erpnext.accounts.general_ledger import make_reverse_gl_entries + frappe.flags.through_repost_accounting_ledger = True if account_repost_doc: repost_doc = frappe.get_doc("Repost Accounting Ledger", account_repost_doc) @@ -173,10 +182,26 @@ def start_repost(account_repost_doc=str) -> None: doc.force_set_against_expense_account() doc.make_gl_entries() + elif doc.doctype == "Purchase Receipt": + if not repost_doc.delete_cancelled_entries: + doc.docstatus = 2 + doc.make_gl_entries_on_cancel() + + doc.docstatus = 1 + doc.make_gl_entries(from_repost=True) + elif doc.doctype in ["Payment Entry", "Journal Entry", "Expense Claim"]: if not repost_doc.delete_cancelled_entries: doc.make_gl_entries(1) doc.make_gl_entries() + elif doc.doctype in frappe.get_hooks("repost_allowed_doctypes"): + if hasattr(doc, "make_gl_entries") and callable(doc.make_gl_entries): + if not repost_doc.delete_cancelled_entries: + if "cancel" in inspect.getfullargspec(doc.make_gl_entries): + doc.make_gl_entries(cancel=1) + else: + make_reverse_gl_entries(voucher_type=doc.doctype, voucher_no=doc.name) + doc.make_gl_entries() def get_allowed_types_from_settings(): diff --git a/erpnext/accounts/doctype/repost_accounting_ledger/test_repost_accounting_ledger.py b/erpnext/accounts/doctype/repost_accounting_ledger/test_repost_accounting_ledger.py index f631ef437d6..7ed999831cd 100644 --- a/erpnext/accounts/doctype/repost_accounting_ledger/test_repost_accounting_ledger.py +++ b/erpnext/accounts/doctype/repost_accounting_ledger/test_repost_accounting_ledger.py @@ -12,6 +12,8 @@ from erpnext.accounts.doctype.payment_request.payment_request import make_paymen from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice from erpnext.accounts.test.accounts_mixin import AccountsTestMixin from erpnext.accounts.utils import get_fiscal_year +from erpnext.stock.doctype.item.test_item import make_item +from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import get_gl_entries, make_purchase_receipt class TestRepostAccountingLedger(AccountsTestMixin, FrappeTestCase): @@ -129,13 +131,15 @@ class TestRepostAccountingLedger(AccountsTestMixin, FrappeTestCase): cost_center=self.cost_center, rate=100, ) + fy = get_fiscal_year(today(), company=self.company) pcv = frappe.get_doc( { "doctype": "Period Closing Voucher", "transaction_date": today(), - "posting_date": today(), + "period_start_date": fy[1], + "period_end_date": today(), "company": self.company, - "fiscal_year": get_fiscal_year(today(), company=self.company)[0], + "fiscal_year": fy[0], "cost_center": self.cost_center, "closing_account_head": self.retained_earnings, "remarks": "test", @@ -202,9 +206,81 @@ class TestRepostAccountingLedger(AccountsTestMixin, FrappeTestCase): self.assertIsNotNone(frappe.db.exists("GL Entry", {"voucher_no": si.name, "is_cancelled": 1})) self.assertIsNotNone(frappe.db.exists("GL Entry", {"voucher_no": pe.name, "is_cancelled": 1})) + def test_06_repost_purchase_receipt(self): + from erpnext.accounts.doctype.account.test_account import create_account + + provisional_account = create_account( + account_name="Provision Account", + parent_account="Current Liabilities - _TC", + company=self.company, + ) + + another_provisional_account = create_account( + account_name="Another Provision Account", + parent_account="Current Liabilities - _TC", + company=self.company, + ) + + company = frappe.get_doc("Company", self.company) + company.enable_provisional_accounting_for_non_stock_items = 1 + company.default_provisional_account = provisional_account + company.save() + + test_cc = company.cost_center + default_expense_account = company.default_expense_account + + item = make_item(properties={"is_stock_item": 0}) + + pr = make_purchase_receipt(company=self.company, item_code=item.name, rate=1000.0, qty=1.0) + pr_gl_entries = get_gl_entries(pr.doctype, pr.name, skip_cancelled=True) + expected_pr_gles = [ + {"account": provisional_account, "debit": 0.0, "credit": 1000.0, "cost_center": test_cc}, + {"account": default_expense_account, "debit": 1000.0, "credit": 0.0, "cost_center": test_cc}, + ] + self.assertEqual(expected_pr_gles, pr_gl_entries) + + # change the provisional account + frappe.db.set_value( + "Purchase Receipt Item", + pr.items[0].name, + "provisional_expense_account", + another_provisional_account, + ) + + repost_doc = frappe.new_doc("Repost Accounting Ledger") + repost_doc.company = self.company + repost_doc.delete_cancelled_entries = True + repost_doc.append("vouchers", {"voucher_type": pr.doctype, "voucher_no": pr.name}) + repost_doc.save().submit() + + pr_gles_after_repost = get_gl_entries(pr.doctype, pr.name, skip_cancelled=True) + expected_pr_gles_after_repost = [ + {"account": default_expense_account, "debit": 1000.0, "credit": 0.0, "cost_center": test_cc}, + {"account": another_provisional_account, "debit": 0.0, "credit": 1000.0, "cost_center": test_cc}, + ] + self.assertEqual(len(pr_gles_after_repost), len(expected_pr_gles_after_repost)) + self.assertEqual(expected_pr_gles_after_repost, pr_gles_after_repost) + + # teardown + repost_doc.cancel() + repost_doc.delete() + + pr.reload() + pr.cancel() + + company.enable_provisional_accounting_for_non_stock_items = 0 + company.default_provisional_account = None + company.save() + def update_repost_settings(): - allowed_types = ["Sales Invoice", "Purchase Invoice", "Payment Entry", "Journal Entry"] + allowed_types = [ + "Sales Invoice", + "Purchase Invoice", + "Payment Entry", + "Journal Entry", + "Purchase Receipt", + ] repost_settings = frappe.get_doc("Repost Accounting Ledger Settings") for x in allowed_types: repost_settings.append("allowed_types", {"document_type": x, "allowed": True}) diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js index 87b71cd793f..792e1ddbdad 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js @@ -16,6 +16,10 @@ erpnext.accounts.SalesInvoiceController = class SalesInvoiceController extends ( setup(doc) { this.setup_posting_date_time_check(); super.setup(doc); + this.frm.make_methods = { + Dunning: this.make_dunning.bind(this), + "Invoice Discounting": this.make_invoice_discounting.bind(this), + }; } company() { super.company(); @@ -61,9 +65,10 @@ erpnext.accounts.SalesInvoiceController = class SalesInvoiceController extends ( refresh(doc, dt, dn) { const me = this; super.refresh(); - if (cur_frm.msgbox && cur_frm.msgbox.$wrapper.is(":visible")) { + + if (this.frm?.msgbox && this.frm.msgbox.$wrapper.is(":visible")) { // hide new msgbox - cur_frm.msgbox.hide(); + this.frm.msgbox.hide(); } this.frm.toggle_reqd("due_date", !this.frm.doc.is_return); @@ -121,12 +126,9 @@ erpnext.accounts.SalesInvoiceController = class SalesInvoiceController extends ( }, __("Create") ); - - cur_frm.add_custom_button( + this.frm.add_custom_button( __("Invoice Discounting"), - function () { - cur_frm.events.create_invoice_discounting(cur_frm); - }, + this.make_invoice_discounting.bind(this), __("Create") ); @@ -135,22 +137,14 @@ erpnext.accounts.SalesInvoiceController = class SalesInvoiceController extends ( .reduce((prev, current) => prev || current, false); if (payment_is_overdue) { - this.frm.add_custom_button( - __("Dunning"), - () => { - this.frm.events.create_dunning(this.frm); - }, - __("Create") - ); + this.frm.add_custom_button(__("Dunning"), this.make_dunning.bind(this), __("Create")); } } if (doc.docstatus === 1) { cur_frm.add_custom_button( __("Maintenance Schedule"), - function () { - cur_frm.cscript.make_maintenance_schedule(); - }, + this.make_maintenance_schedule.bind(this), __("Create") ); } @@ -185,6 +179,20 @@ erpnext.accounts.SalesInvoiceController = class SalesInvoiceController extends ( erpnext.accounts.unreconcile_payment.add_unreconcile_btn(me.frm); } + make_invoice_discounting() { + frappe.model.open_mapped_doc({ + method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.create_invoice_discounting", + frm: this.frm, + }); + } + + make_dunning() { + frappe.model.open_mapped_doc({ + method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.create_dunning", + frm: this.frm, + }); + } + make_maintenance_schedule() { frappe.model.open_mapped_doc({ method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.make_maintenance_schedule", @@ -339,6 +347,9 @@ erpnext.accounts.SalesInvoiceController = class SalesInvoiceController extends ( account: this.frm.doc.debit_to, price_list: this.frm.doc.selling_price_list, pos_profile: pos_profile, + fetch_payment_terms_template: cint( + (this.frm.doc.is_return == 0) & !this.frm.doc.ignore_default_payment_terms_template + ), }, function () { me.apply_pricing_rule(); @@ -738,20 +749,6 @@ frappe.ui.form.on("Sales Invoice", { }; }; - frm.set_query("company_address", function (doc) { - if (!doc.company) { - frappe.throw(__("Please set Company")); - } - - return { - query: "frappe.contacts.doctype.address.address.address_query", - filters: { - link_doctype: "Company", - link_name: doc.company, - }, - }; - }); - frm.set_query("pos_profile", function (doc) { if (!doc.company) { frappe.throw(__("Please set Company")); @@ -900,8 +897,16 @@ frappe.ui.form.on("Sales Invoice", { project: function (frm) { if (frm.doc.project) { - frm.events.add_timesheet_data(frm, { - project: frm.doc.project, + frappe.call({ + method: "is_auto_fetch_timesheet_enabled", + doc: frm.doc, + callback: function (r) { + if (cint(r.message)) { + frm.events.add_timesheet_data(frm, { + project: frm.doc.project, + }); + } + }, }); } }, @@ -917,9 +922,25 @@ frappe.ui.form.on("Sales Invoice", { } const timesheets = await frm.events.get_timesheet_data(frm, kwargs); + + if (kwargs.item_code) { + frm.events.add_timesheet_item(frm, kwargs.item_code, timesheets); + } + return frm.events.set_timesheet_data(frm, timesheets); }, + add_timesheet_item: function (frm, item_code, timesheets) { + const row = frm.add_child("items"); + frappe.model.set_value(row.doctype, row.name, "item_code", item_code); + frappe.model.set_value( + row.doctype, + row.name, + "qty", + timesheets.reduce((a, b) => a + (b["billing_hours"] || 0.0), 0.0) + ); + }, + async get_timesheet_data(frm, kwargs) { return frappe .call({ @@ -1005,67 +1026,74 @@ frappe.ui.form.on("Sales Invoice", { refresh: function (frm) { if (frm.doc.docstatus === 0 && !frm.doc.is_return) { - frm.add_custom_button(__("Fetch Timesheet"), function () { - let d = new frappe.ui.Dialog({ - title: __("Fetch Timesheet"), - fields: [ - { - label: __("From"), - fieldname: "from_time", - fieldtype: "Date", - reqd: 1, + frm.add_custom_button( + __("Timesheet"), + function () { + let d = new frappe.ui.Dialog({ + title: __("Fetch Timesheet"), + fields: [ + { + label: __("From"), + fieldname: "from_time", + fieldtype: "Date", + reqd: 1, + }, + { + label: __("Item Code"), + fieldname: "item_code", + fieldtype: "Link", + options: "Item", + get_query: () => { + return { + query: "erpnext.controllers.queries.item_query", + filters: { + is_sales_item: 1, + customer: frm.doc.customer, + has_variants: 0, + }, + }; + }, + }, + { + fieldtype: "Column Break", + fieldname: "col_break_1", + }, + { + label: __("To"), + fieldname: "to_time", + fieldtype: "Date", + reqd: 1, + }, + { + label: __("Project"), + fieldname: "project", + fieldtype: "Link", + options: "Project", + default: frm.doc.project, + }, + ], + primary_action: function () { + const data = d.get_values(); + frm.events.add_timesheet_data(frm, { + from_time: data.from_time, + to_time: data.to_time, + project: data.project, + item_code: data.item_code, + }); + d.hide(); }, - { - fieldtype: "Column Break", - fieldname: "col_break_1", - }, - { - label: __("To"), - fieldname: "to_time", - fieldtype: "Date", - reqd: 1, - }, - { - label: __("Project"), - fieldname: "project", - fieldtype: "Link", - options: "Project", - default: frm.doc.project, - }, - ], - primary_action: function () { - const data = d.get_values(); - frm.events.add_timesheet_data(frm, { - from_time: data.from_time, - to_time: data.to_time, - project: data.project, - }); - d.hide(); - }, - primary_action_label: __("Get Timesheets"), - }); - d.show(); - }); + primary_action_label: __("Get Timesheets"), + }); + d.show(); + }, + __("Get Items From") + ); } if (frm.doc.is_debit_note) { frm.set_df_property("return_against", "label", __("Adjustment Against")); } }, - - create_invoice_discounting: function (frm) { - frappe.model.open_mapped_doc({ - method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.create_invoice_discounting", - frm: frm, - }); - }, - - create_dunning: function (frm) { - frappe.model.open_mapped_doc({ - method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.create_dunning", - frm: frm, - }); - }, }); frappe.ui.form.on("Sales Invoice Timesheet", { diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json index c44afd555e0..0c19e79ccd4 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json @@ -159,8 +159,9 @@ "dispatch_address", "company_address_section", "company_address", - "company_addr_col_break", "company_address_display", + "company_addr_col_break", + "company_contact_person", "terms_tab", "payment_schedule_section", "ignore_default_payment_terms_template", @@ -298,7 +299,8 @@ "oldfieldname": "project_name", "oldfieldtype": "Link", "options": "Project", - "print_hide": 1 + "print_hide": 1, + "search_index": 1 }, { "default": "0", @@ -2160,14 +2162,22 @@ { "default": "1", "depends_on": "eval: doc.is_return && doc.return_against", - "description": "Credit Note will update it's own outstanding amount, even if \"Return Against\" is specified.", + "description": "Credit Note will update it's own outstanding amount, even if 'Return Against' is specified.", "fieldname": "update_outstanding_for_self", "fieldtype": "Check", "label": "Update Outstanding for Self", "no_copy": 1, "print_hide": 1 + }, + { + "fieldname": "company_contact_person", + "fieldtype": "Link", + "label": "Company Contact Person", + "options": "Contact", + "print_hide": 1 } ], + "grid_page_length": 50, "icon": "fa fa-file-text", "idx": 181, "is_submittable": 1, @@ -2178,7 +2188,7 @@ "link_fieldname": "consolidated_invoice" } ], - "modified": "2024-07-18 15:30:39.428519", + "modified": "2025-03-17 19:32:31.809658", "modified_by": "Administrator", "module": "Accounts", "name": "Sales Invoice", @@ -2224,6 +2234,7 @@ } ], "quick_entry": 1, + "row_format": "Dynamic", "search_fields": "posting_date, due_date, customer, base_grand_total, outstanding_amount", "show_name_in_global_search": 1, "sort_field": "modified", diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index 1966a78ef49..7761dc832de 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -24,7 +24,11 @@ from erpnext.accounts.doctype.tax_withholding_category.tax_withholding_category ) from erpnext.accounts.general_ledger import get_round_off_account_and_cost_center from erpnext.accounts.party import get_due_date, get_party_account, get_party_details -from erpnext.accounts.utils import cancel_exchange_gain_loss_journal, get_account_currency +from erpnext.accounts.utils import ( + cancel_exchange_gain_loss_journal, + get_account_currency, + update_voucher_outstanding, +) from erpnext.assets.doctype.asset.depreciation import ( depreciate_asset, get_disposal_account_and_cost_center, @@ -39,7 +43,7 @@ from erpnext.controllers.selling_controller import SellingController from erpnext.projects.doctype.timesheet.timesheet import get_projectwise_timesheet_data from erpnext.setup.doctype.company.company import update_company_current_month_sales from erpnext.stock.doctype.delivery_note.delivery_note import update_billed_amount_based_on_so -from erpnext.stock.doctype.serial_no.serial_no import get_delivery_note_serial_no, get_serial_nos +from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos form_grid_templates = {"items": "templates/form_grid/item_grid.html"} @@ -96,6 +100,7 @@ class SalesInvoice(SellingController): company: DF.Link company_address: DF.Link | None company_address_display: DF.SmallText | None + company_contact_person: DF.Link | None company_tax_id: DF.Data | None contact_display: DF.SmallText | None contact_email: DF.Data | None @@ -262,8 +267,8 @@ class SalesInvoice(SellingController): self.indicator_title = _("Paid") def validate(self): - super().validate() self.validate_auto_set_posting_time() + super().validate() if not (self.is_pos or self.is_debit_note): self.so_dn_required() @@ -278,7 +283,6 @@ class SalesInvoice(SellingController): self.check_sales_order_on_hold_or_close("sales_order") self.validate_debit_to_acc() self.clear_unallocated_advances("Sales Invoice Advance", "advances") - self.add_remarks() self.validate_fixed_asset() self.set_income_account_for_fixed_assets() self.validate_item_cost_centers() @@ -298,8 +302,11 @@ class SalesInvoice(SellingController): self.update_current_stock() self.validate_delivery_note() + is_deferred_invoice = any(d.get("enable_deferred_revenue") for d in self.get("items")) + # validate service stop date to lie in between start and end date - validate_service_stop_date(self) + if is_deferred_invoice: + validate_service_stop_date(self) if not self.is_opening: self.is_opening = "No" @@ -318,9 +325,7 @@ class SalesInvoice(SellingController): self.set_against_income_account() self.validate_time_sheets_are_submitted() self.validate_multiple_billing("Delivery Note", "dn_detail", "amount") - if not self.is_return: - self.validate_serial_numbers() - else: + if self.is_return: self.timesheets = [] self.update_packing_list() self.set_billing_hours_and_amount() @@ -341,6 +346,7 @@ class SalesInvoice(SellingController): ): validate_loyalty_points(self, self.loyalty_points) + self.allow_write_off_only_on_pos() self.reset_default_field_value("set_warehouse", "items", "warehouse") def validate_accounts(self): @@ -363,7 +369,7 @@ class SalesInvoice(SellingController): if self.update_stock: frappe.throw(_("'Update Stock' cannot be checked for fixed asset sale")) - elif asset.status in ("Scrapped", "Cancelled", "Capitalized", "Decapitalized") or ( + elif asset.status in ("Scrapped", "Cancelled", "Capitalized") or ( asset.status == "Sold" and not self.is_return ): frappe.throw( @@ -422,6 +428,9 @@ class SalesInvoice(SellingController): self.set_account_for_mode_of_payment() self.set_paid_amount() + def before_submit(self): + self.add_remarks() + def on_submit(self): self.validate_pos_paid_amount() @@ -451,6 +460,8 @@ class SalesInvoice(SellingController): self.make_bundle_for_sales_purchase_return(table_name) self.make_bundle_using_old_serial_batch_fields(table_name) + + self.update_stock_reservation_entries() self.update_stock_ledger() # this sequence because outstanding may get -ve @@ -500,7 +511,7 @@ class SalesInvoice(SellingController): frappe.throw(_("Total payments amount can't be greater than {}").format(-invoice_total)) def validate_pos_paid_amount(self): - if len(self.payments) == 0 and self.is_pos: + if len(self.payments) == 0 and self.is_pos and flt(self.grand_total) > 0: frappe.throw(_("At least one mode of payment is required for POS invoice.")) def check_if_consolidated_invoice(self): @@ -552,6 +563,7 @@ class SalesInvoice(SellingController): self.make_gl_entries_on_cancel() if self.update_stock == 1: + self.update_stock_reservation_entries() self.repost_future_sle_and_gle() self.db_set("status", "Cancelled") @@ -666,7 +678,13 @@ class SalesInvoice(SellingController): "Account", self.debit_to, "account_currency", cache=True ) if not self.due_date and self.customer: - self.due_date = get_due_date(self.posting_date, "Customer", self.customer, self.company) + self.due_date = get_due_date( + self.posting_date, + "Customer", + self.customer, + self.company, + template_name=self.payment_terms_template, + ) super().set_missing_values(for_validate) @@ -946,10 +964,11 @@ class SalesInvoice(SellingController): def add_remarks(self): if not self.remarks: - if self.po_no and self.po_date: - self.remarks = _("Against Customer Order {0} dated {1}").format( - self.po_no, formatdate(self.po_date) - ) + if self.po_no: + self.remarks = _("Against Customer Order {0}").format(self.po_no) + if self.po_date: + self.remarks += " " + _("dated {0}").format(formatdate(self.po_date)) + else: self.remarks = _("No Remarks") @@ -994,9 +1013,9 @@ class SalesInvoice(SellingController): def validate_pos(self): if self.is_return: invoice_total = self.rounded_total or self.grand_total - if flt(self.paid_amount) + flt(self.write_off_amount) - flt(invoice_total) > 1.0 / ( - 10.0 ** (self.precision("grand_total") + 1.0) - ): + if abs(flt(self.paid_amount)) + abs(flt(self.write_off_amount)) - abs( + flt(invoice_total) + ) > 1.0 / (10.0 ** (self.precision("grand_total") + 1.0)): frappe.throw(_("Paid amount + Write Off Amount can not be greater than Grand Total")) def validate_warehouse(self): @@ -1018,6 +1037,10 @@ class SalesInvoice(SellingController): raise_exception=1, ) + def allow_write_off_only_on_pos(self): + if not self.is_pos and self.write_off_account: + self.write_off_account = None + def validate_write_off_account(self): if flt(self.write_off_amount) and not self.write_off_account: self.write_off_account = frappe.get_cached_value("Company", self.company, "write_off_account") @@ -1073,11 +1096,15 @@ class SalesInvoice(SellingController): timesheet.billing_amount = ts_doc.total_billable_amount def update_timesheet_billing_for_project(self): - if not self.timesheets and self.project: + if not self.timesheets and self.project and self.is_auto_fetch_timesheet_enabled(): self.add_timesheet_data() else: self.calculate_billing_amount_for_timesheet() + @frappe.whitelist() + def is_auto_fetch_timesheet_enabled(self): + return frappe.db.get_single_value("Projects Settings", "fetch_timesheet_in_sales_invoice") + @frappe.whitelist() def add_timesheet_data(self): self.set("timesheets", []) @@ -1182,14 +1209,14 @@ class SalesInvoice(SellingController): make_reverse_gl_entries(voucher_type=self.doctype, voucher_no=self.name) if update_outstanding == "No": - from erpnext.accounts.doctype.gl_entry.gl_entry import update_outstanding_amt - - update_outstanding_amt( - self.debit_to, - "Customer", - self.customer, - self.doctype, - self.return_against if cint(self.is_return) and self.return_against else self.name, + update_voucher_outstanding( + voucher_type=self.doctype, + voucher_no=self.return_against + if cint(self.is_return) and self.return_against + else self.name, + account=self.debit_to, + party_type="Customer", + party=self.customer, ) elif self.docstatus == 2 and cint(self.update_stock) and cint(auto_accounting_for_stock): @@ -1220,6 +1247,7 @@ class SalesInvoice(SellingController): self.make_write_off_gl_entry(gl_entries) self.make_gle_for_rounding_adjustment(gl_entries) + self.set_transaction_currency_and_rate_in_gl_map(gl_entries) return gl_entries def make_customer_gl_entry(self, gl_entries): @@ -1253,6 +1281,7 @@ class SalesInvoice(SellingController): "debit_in_account_currency": base_grand_total if self.party_account_currency == self.company_currency else grand_total, + "debit_in_transaction_currency": grand_total, "against_voucher": against_voucher, "against_voucher_type": self.doctype, "cost_center": self.cost_center, @@ -1284,6 +1313,9 @@ class SalesInvoice(SellingController): if account_currency == self.company_currency else flt(amount, tax.precision("tax_amount_after_discount_amount")) ), + "credit_in_transaction_currency": flt( + amount, tax.precision("tax_amount_after_discount_amount") + ), "cost_center": tax.cost_center, }, account_currency, @@ -1301,6 +1333,7 @@ class SalesInvoice(SellingController): "against": self.customer, "debit": flt(self.total_taxes_and_charges), "debit_in_account_currency": flt(self.base_total_taxes_and_charges), + "debit_in_transaction_currency": flt(self.total_taxes_and_charges), "cost_center": self.cost_center, }, account_currency, @@ -1351,14 +1384,15 @@ class SalesInvoice(SellingController): else: if asset.calculate_depreciation: - notes = _( - "This schedule was created when Asset {0} was sold through Sales Invoice {1}." - ).format( - get_link_to_form(asset.doctype, asset.name), - get_link_to_form(self.doctype, self.get("name")), - ) - depreciate_asset(asset, self.posting_date, notes) - asset.reload() + if not asset.status == "Fully Depreciated": + notes = _( + "This schedule was created when Asset {0} was sold through Sales Invoice {1}." + ).format( + get_link_to_form(asset.doctype, asset.name), + get_link_to_form(self.doctype, self.get("name")), + ) + depreciate_asset(asset, self.posting_date, notes) + asset.reload() fixed_asset_gl_entries = get_gl_entries_on_asset_disposal( asset, @@ -1398,6 +1432,7 @@ class SalesInvoice(SellingController): if account_currency == self.company_currency else flt(amount, item.precision("net_amount")) ), + "credit_in_transaction_currency": flt(amount, item.precision("net_amount")), "cost_center": item.cost_center, "project": item.project or self.project, }, @@ -1449,6 +1484,7 @@ class SalesInvoice(SellingController): + cstr(self.loyalty_redemption_account) + " for the Loyalty Program", "credit": self.loyalty_amount, + "credit_in_transaction_currency": self.loyalty_amount, "against_voucher": self.return_against if cint(self.is_return) else self.name, "against_voucher_type": self.doctype, "cost_center": self.cost_center, @@ -1463,6 +1499,7 @@ class SalesInvoice(SellingController): "cost_center": self.cost_center or self.loyalty_redemption_cost_center, "against": self.customer, "debit": self.loyalty_amount, + "debit_in_transaction_currency": self.loyalty_amount, "remark": "Loyalty Points redeemed by the customer", }, item=self, @@ -1496,6 +1533,7 @@ class SalesInvoice(SellingController): "credit_in_account_currency": payment_mode.base_amount if self.party_account_currency == self.company_currency else payment_mode.amount, + "credit_in_transaction_currency": payment_mode.amount, "against_voucher": against_voucher, "against_voucher_type": self.doctype, "cost_center": self.cost_center, @@ -1515,6 +1553,7 @@ class SalesInvoice(SellingController): "debit_in_account_currency": payment_mode.base_amount if payment_mode_account_currency == self.company_currency else payment_mode.amount, + "debit_in_transaction_currency": payment_mode.amount, "cost_center": self.cost_center, }, payment_mode_account_currency, @@ -1539,6 +1578,7 @@ class SalesInvoice(SellingController): "debit_in_account_currency": flt(self.base_change_amount) if self.party_account_currency == self.company_currency else flt(self.change_amount), + "debit_in_transaction_currency": flt(self.change_amount), "against_voucher": self.return_against if cint(self.is_return) and self.return_against else self.name, @@ -1557,6 +1597,7 @@ class SalesInvoice(SellingController): "account": self.account_for_change_amount, "against": self.customer, "credit": self.base_change_amount, + "credit_in_transaction_currency": self.change_amount, "cost_center": self.cost_center, }, item=self, @@ -1588,6 +1629,9 @@ class SalesInvoice(SellingController): if self.party_account_currency == self.company_currency else flt(self.write_off_amount, self.precision("write_off_amount")) ), + "credit_in_transaction_currency": flt( + self.write_off_amount, self.precision("write_off_amount") + ), "against_voucher": self.return_against if cint(self.is_return) else self.name, "against_voucher_type": self.doctype, "cost_center": self.cost_center, @@ -1608,6 +1652,9 @@ class SalesInvoice(SellingController): if write_off_account_currency == self.company_currency else flt(self.write_off_amount, self.precision("write_off_amount")) ), + "debit_in_transaction_currency": flt( + self.write_off_amount, self.precision("write_off_amount") + ), "cost_center": self.cost_center or self.write_off_cost_center or default_cost_center, }, write_off_account_currency, @@ -1621,10 +1668,29 @@ class SalesInvoice(SellingController): and self.base_rounding_adjustment and not self.is_internal_transfer() ): - round_off_account, round_off_cost_center = get_round_off_account_and_cost_center( + ( + round_off_account, + round_off_cost_center, + round_off_for_opening, + ) = get_round_off_account_and_cost_center( self.company, "Sales Invoice", self.name, self.use_company_roundoff_cost_center ) + if self.is_opening == "Yes" and self.rounding_adjustment: + if not round_off_for_opening: + frappe.throw( + _( + "Opening Invoice has rounding adjustment of {0}.

'{1}' account is required to post these values. Please set it in Company: {2}.

Or, '{3}' can be enabled to not post any rounding adjustment." + ).format( + frappe.bold(self.rounding_adjustment), + frappe.bold("Round Off for Opening"), + get_link_to_form("Company", self.company), + frappe.bold("Disable Rounded Total"), + ) + ) + else: + round_off_account = round_off_for_opening + gl_entries.append( self.get_gl_dict( { @@ -1633,6 +1699,9 @@ class SalesInvoice(SellingController): "credit_in_account_currency": flt( self.rounding_adjustment, self.precision("rounding_adjustment") ), + "credit_in_transaction_currency": flt( + self.rounding_adjustment, self.precision("rounding_adjustment") + ), "credit": flt( self.base_rounding_adjustment, self.precision("base_rounding_adjustment") ), @@ -1674,57 +1743,15 @@ class SalesInvoice(SellingController): self.set("write_off_amount", reference_doc.get("write_off_amount")) self.due_date = None - def validate_serial_numbers(self): - """ - validate serial number agains Delivery Note and Sales Invoice - """ - self.set_serial_no_against_delivery_note() - self.validate_serial_against_delivery_note() - - def set_serial_no_against_delivery_note(self): - for item in self.items: - if item.serial_no and item.delivery_note and item.qty != len(get_serial_nos(item.serial_no)): - item.serial_no = get_delivery_note_serial_no(item.item_code, item.qty, item.delivery_note) - - def validate_serial_against_delivery_note(self): - """ - validate if the serial numbers in Sales Invoice Items are same as in - Delivery Note Item - """ - - for item in self.items: - if not item.delivery_note or not item.dn_detail: - continue - - serial_nos = frappe.db.get_value("Delivery Note Item", item.dn_detail, "serial_no") or "" - dn_serial_nos = set(get_serial_nos(serial_nos)) - - serial_nos = item.serial_no or "" - si_serial_nos = set(get_serial_nos(serial_nos)) - serial_no_diff = si_serial_nos - dn_serial_nos - - if serial_no_diff: - dn_link = frappe.utils.get_link_to_form("Delivery Note", item.delivery_note) - serial_no_msg = ", ".join(frappe.bold(d) for d in serial_no_diff) - - msg = _("Row #{0}: The following Serial Nos are not present in Delivery Note {1}:").format( - item.idx, dn_link - ) - msg += " " + serial_no_msg - - frappe.throw(msg=msg, title=_("Serial Nos Mismatch")) - - if item.serial_no and cint(item.qty) != len(si_serial_nos): - frappe.throw( - _("Row #{0}: {1} Serial numbers required for Item {2}. You have provided {3}.").format( - item.idx, item.qty, item.item_code, len(si_serial_nos) - ) - ) - def update_project(self): - if self.project: - project = frappe.get_doc("Project", self.project) + unique_projects = list(set([d.project for d in self.get("items") if d.project])) + if self.project and self.project not in unique_projects: + unique_projects.append(self.project) + + for p in unique_projects: + project = frappe.get_doc("Project", p) project.update_billed_amount() + project.calculate_gross_margin() project.db_update() def verify_payment_amount_is_positive(self): @@ -1938,13 +1965,16 @@ def is_overdue(doc, total): "base_payment_amount" if doc.party_account_currency != doc.currency else "payment_amount" ) - payable_amount = sum( - payment.get(payment_amount_field) - for payment in doc.payment_schedule - if getdate(payment.due_date) < today + payable_amount = flt( + sum( + payment.get(payment_amount_field) + for payment in doc.payment_schedule + if getdate(payment.due_date) < today + ), + doc.precision("outstanding_amount"), ) - return (total - outstanding_amount) < payable_amount + return flt(total - outstanding_amount, doc.precision("outstanding_amount")) < payable_amount def get_discounting_status(sales_invoice): @@ -2115,7 +2145,7 @@ def make_delivery_note(source_name, target_doc=None): "postprocess": update_item, "condition": lambda doc: doc.delivered_by_supplier != 1, }, - "Sales Taxes and Charges": {"doctype": "Sales Taxes and Charges", "add_if_empty": True}, + "Sales Taxes and Charges": {"doctype": "Sales Taxes and Charges", "reset_value": True}, "Sales Team": { "doctype": "Sales Team", "field_map": {"incentives": "incentives"}, @@ -2690,9 +2720,11 @@ def create_dunning(source_name, target_doc=None, ignore_permissions=False): target.closing_text = letter_text.get("closing_text") target.language = letter_text.get("language") - # update outstanding + # update outstanding from doc if source.payment_schedule and len(source.payment_schedule) == 1: - target.overdue_payments[0].outstanding = source.get("outstanding_amount") + for row in target.overdue_payments: + if row.payment_schedule == source.payment_schedule[0].name: + row.outstanding = source.get("outstanding_amount") target.validate() diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice_list.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice_list.js index f971f68a454..ea3ae2b6fab 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice_list.js +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice_list.js @@ -15,7 +15,7 @@ frappe.listview_settings["Sales Invoice"] = { ], get_indicator: function (doc) { const status_colors = { - Draft: "grey", + Draft: "red", Unpaid: "orange", Paid: "green", Return: "gray", @@ -32,12 +32,16 @@ frappe.listview_settings["Sales Invoice"] = { right_column: "grand_total", onload: function (listview) { - listview.page.add_action_item(__("Delivery Note"), () => { - erpnext.bulk_transaction_processing.create(listview, "Sales Invoice", "Delivery Note"); - }); + if (frappe.model.can_create("Delivery Note")) { + listview.page.add_action_item(__("Delivery Note"), () => { + erpnext.bulk_transaction_processing.create(listview, "Sales Invoice", "Delivery Note"); + }); + } - listview.page.add_action_item(__("Payment"), () => { - erpnext.bulk_transaction_processing.create(listview, "Sales Invoice", "Payment Entry"); - }); + if (frappe.model.can_create("Payment Entry")) { + listview.page.add_action_item(__("Payment"), () => { + erpnext.bulk_transaction_processing.create(listview, "Sales Invoice", "Payment Entry"); + }); + } }, }; diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py index fef30bdfecd..d2398d21f4e 100644 --- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py @@ -8,7 +8,7 @@ import frappe from frappe import qb from frappe.model.dynamic_links import get_dynamic_link_map from frappe.tests.utils import FrappeTestCase, change_settings -from frappe.utils import add_days, flt, getdate, nowdate, today +from frappe.utils import add_days, flt, format_date, getdate, nowdate, today import erpnext from erpnext.accounts.doctype.account.test_account import create_account, get_inventory_account @@ -43,6 +43,7 @@ from erpnext.stock.doctype.stock_entry.test_stock_entry import ( from erpnext.stock.doctype.stock_reconciliation.test_stock_reconciliation import ( create_stock_reconciliation, ) +from erpnext.stock.get_item_details import get_item_tax_map from erpnext.stock.utils import get_incoming_rate, get_stock_balance @@ -314,7 +315,8 @@ class TestSalesInvoice(FrappeTestCase): si.insert() # with inclusive tax - self.assertEqual(si.items[0].net_amount, 3947.368421052631) + self.assertEqual(si.items[0].net_amount, 3947.37) + self.assertEqual(si.net_total, si.base_net_total) self.assertEqual(si.net_total, 3947.37) self.assertEqual(si.grand_total, 5000) @@ -658,7 +660,7 @@ class TestSalesInvoice(FrappeTestCase): 62.5, 625.0, 50, - 499.97600115194473, + 499.98, ], "_Test Item Home Desktop 200": [ 190.66, @@ -669,7 +671,7 @@ class TestSalesInvoice(FrappeTestCase): 190.66, 953.3, 150, - 749.9968530500239, + 750, ], } @@ -682,20 +684,21 @@ class TestSalesInvoice(FrappeTestCase): self.assertEqual(d.get(k), expected_values[d.item_code][i]) # check net total - self.assertEqual(si.net_total, 1249.97) + self.assertEqual(si.base_net_total, si.net_total) + self.assertEqual(si.net_total, 1249.98) self.assertEqual(si.total, 1578.3) # check tax calculation expected_values = { "keys": ["tax_amount", "total"], - "_Test Account Excise Duty - _TC": [140, 1389.97], - "_Test Account Education Cess - _TC": [2.8, 1392.77], - "_Test Account S&H Education Cess - _TC": [1.4, 1394.17], - "_Test Account CST - _TC": [27.88, 1422.05], - "_Test Account VAT - _TC": [156.25, 1578.30], - "_Test Account Customs Duty - _TC": [125, 1703.30], - "_Test Account Shipping Charges - _TC": [100, 1803.30], - "_Test Account Discount - _TC": [-180.33, 1622.97], + "_Test Account Excise Duty - _TC": [140, 1389.98], + "_Test Account Education Cess - _TC": [2.8, 1392.78], + "_Test Account S&H Education Cess - _TC": [1.4, 1394.18], + "_Test Account CST - _TC": [27.88, 1422.06], + "_Test Account VAT - _TC": [156.25, 1578.31], + "_Test Account Customs Duty - _TC": [125, 1703.31], + "_Test Account Shipping Charges - _TC": [100, 1803.31], + "_Test Account Discount - _TC": [-180.33, 1622.98], } for d in si.get("taxes"): @@ -731,7 +734,7 @@ class TestSalesInvoice(FrappeTestCase): "base_rate": 2500, "base_amount": 25000, "net_rate": 40, - "net_amount": 399.9808009215558, + "net_amount": 399.98, "base_net_rate": 2000, "base_net_amount": 19999, }, @@ -745,7 +748,7 @@ class TestSalesInvoice(FrappeTestCase): "base_rate": 7500, "base_amount": 37500, "net_rate": 118.01, - "net_amount": 590.0531205155963, + "net_amount": 590.05, "base_net_rate": 5900.5, "base_net_amount": 29502.5, }, @@ -783,8 +786,13 @@ class TestSalesInvoice(FrappeTestCase): self.assertEqual(si.base_grand_total, 60795) self.assertEqual(si.grand_total, 1215.90) - self.assertEqual(si.rounding_adjustment, 0.01) - self.assertEqual(si.base_rounding_adjustment, 0.50) + # no rounding adjustment as the Smallest Currency Fraction Value of USD is 0.01 + if frappe.db.get_value("Currency", "USD", "smallest_currency_fraction_value") < 0.01: + self.assertEqual(si.rounding_adjustment, 0.10) + self.assertEqual(si.base_rounding_adjustment, 5.0) + else: + self.assertEqual(si.rounding_adjustment, 0.0) + self.assertEqual(si.base_rounding_adjustment, 0.0) def test_outstanding(self): w = self.make() @@ -1811,17 +1819,6 @@ class TestSalesInvoice(FrappeTestCase): for field in expected_gle: self.assertEqual(expected_gle[field], gle[field]) - def test_invoice_exchange_rate(self): - si = create_sales_invoice( - customer="_Test Customer USD", - debit_to="_Test Receivable USD - _TC", - currency="USD", - conversion_rate=1, - do_not_save=1, - ) - - self.assertRaises(frappe.ValidationError, si.save) - def test_invalid_currency(self): # Customer currency = USD @@ -1995,7 +1992,7 @@ class TestSalesInvoice(FrappeTestCase): # Check if SO is unlinked/replaced by SI in PE & if SO advance paid is 0 self.assertEqual(pe.references[0].reference_name, si.name) - self.assertEqual(sales_order.advance_paid, 0.0) + self.assertEqual(sales_order.advance_paid, 300.0) # check outstanding after advance allocation self.assertEqual( @@ -2172,7 +2169,7 @@ class TestSalesInvoice(FrappeTestCase): def test_rounding_adjustment_2(self): si = create_sales_invoice(rate=400, do_not_save=True) - for rate in [400, 600, 100]: + for rate in [400.25, 600.30, 100.65]: si.append( "items", { @@ -2198,18 +2195,19 @@ class TestSalesInvoice(FrappeTestCase): ) si.save() si.submit() - self.assertEqual(si.net_total, 1271.19) - self.assertEqual(si.grand_total, 1500) - self.assertEqual(si.total_taxes_and_charges, 228.82) - self.assertEqual(si.rounding_adjustment, -0.01) + self.assertEqual(si.net_total, si.base_net_total) + self.assertEqual(si.net_total, 1272.20) + self.assertEqual(si.grand_total, 1501.20) + self.assertEqual(si.total_taxes_and_charges, 229) + self.assertEqual(si.rounding_adjustment, -0.20) round_off_account = frappe.get_cached_value("Company", "_Test Company", "round_off_account") expected_values = { - "_Test Account Service Tax - _TC": [0.0, 114.41], - "_Test Account VAT - _TC": [0.0, 114.41], - si.debit_to: [1500, 0.0], - round_off_account: [0.01, 0.01], - "Sales - _TC": [0.0, 1271.18], + "_Test Account Service Tax - _TC": [0.0, 114.50], + "_Test Account VAT - _TC": [0.0, 114.50], + si.debit_to: [1501, 0.0], + round_off_account: [0.20, 0.0], + "Sales - _TC": [0.0, 1272.20], } gl_entries = frappe.db.sql( @@ -2267,7 +2265,8 @@ class TestSalesInvoice(FrappeTestCase): si.save() si.submit() - self.assertEqual(si.net_total, 4007.16) + self.assertEqual(si.net_total, si.base_net_total) + self.assertEqual(si.net_total, 4007.15) self.assertEqual(si.grand_total, 4488.02) self.assertEqual(si.total_taxes_and_charges, 480.86) self.assertEqual(si.rounding_adjustment, -0.02) @@ -2280,7 +2279,7 @@ class TestSalesInvoice(FrappeTestCase): ["_Test Account Service Tax - _TC", 0.0, 240.43], ["_Test Account VAT - _TC", 0.0, 240.43], ["Sales - _TC", 0.0, 4007.15], - [round_off_account, 0.02, 0.01], + [round_off_account, 0.01, 0.0], ] ) @@ -2864,13 +2863,26 @@ class TestSalesInvoice(FrappeTestCase): item.save() sales_invoice = create_sales_invoice(item="T Shirt", rate=700, do_not_submit=True) + item_tax_map = get_item_tax_map( + company=sales_invoice.company, + item_tax_template=sales_invoice.items[0].item_tax_template, + ) + self.assertEqual(sales_invoice.items[0].item_tax_template, "_Test Account Excise Duty @ 12 - _TC") + self.assertEqual(sales_invoice.items[0].item_tax_rate, item_tax_map) # Apply discount sales_invoice.apply_discount_on = "Net Total" sales_invoice.discount_amount = 300 sales_invoice.save() + + item_tax_map = get_item_tax_map( + company=sales_invoice.company, + item_tax_template=sales_invoice.items[0].item_tax_template, + ) + self.assertEqual(sales_invoice.items[0].item_tax_template, "_Test Account Excise Duty @ 10 - _TC") + self.assertEqual(sales_invoice.items[0].item_tax_rate, item_tax_map) @change_settings("Selling Settings", {"enable_discount_accounting": 1}) def test_sales_invoice_with_discount_accounting_enabled(self): @@ -3162,6 +3174,50 @@ class TestSalesInvoice(FrappeTestCase): party_link.delete() frappe.db.set_single_value("Accounts Settings", "enable_common_party_accounting", 0) + def test_sales_invoice_cancel_with_common_party_advance_jv(self): + from erpnext.accounts.doctype.opening_invoice_creation_tool.test_opening_invoice_creation_tool import ( + make_customer, + ) + from erpnext.accounts.doctype.party_link.party_link import create_party_link + from erpnext.buying.doctype.supplier.test_supplier import create_supplier + + # create a customer + customer = make_customer(customer="_Test Common Supplier") + # create a supplier + supplier = create_supplier(supplier_name="_Test Common Supplier").name + + # create a party link between customer & supplier + party_link = create_party_link("Supplier", supplier, customer) + + # enable common party accounting + frappe.db.set_single_value("Accounts Settings", "enable_common_party_accounting", 1) + + # create a sales invoice + si = create_sales_invoice(customer=customer) + + # check creation of journal entry + jv = frappe.db.get_value( + "Journal Entry Account", + filters={ + "reference_type": si.doctype, + "reference_name": si.name, + "docstatus": 1, + }, + fieldname="parent", + ) + + self.assertTrue(jv) + + # cancel sales invoice + si.cancel() + + # check cancellation of journal entry + jv_status = frappe.db.get_value("Journal Entry", jv, "docstatus") + self.assertEqual(jv_status, 2) + + party_link.delete() + frappe.db.set_single_value("Accounts Settings", "enable_common_party_accounting", 0) + def test_payment_statuses(self): from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry @@ -3871,6 +3927,406 @@ class TestSalesInvoice(FrappeTestCase): self.assertEqual(len(res), 1) self.assertEqual(res[0][0], pos_return.return_against) + @change_settings("Accounts Settings", {"enable_common_party_accounting": True}) + def test_common_party_with_foreign_currency_jv(self): + from erpnext.accounts.doctype.account.test_account import create_account + from erpnext.accounts.doctype.opening_invoice_creation_tool.test_opening_invoice_creation_tool import ( + make_customer, + ) + from erpnext.accounts.doctype.party_link.party_link import create_party_link + from erpnext.buying.doctype.supplier.test_supplier import create_supplier + from erpnext.setup.utils import get_exchange_rate + + creditors = create_account( + account_name="Creditors USD", + parent_account="Accounts Payable - _TC", + company="_Test Company", + account_currency="USD", + account_type="Payable", + ) + debtors = create_account( + account_name="Debtors USD", + parent_account="Accounts Receivable - _TC", + company="_Test Company", + account_currency="USD", + account_type="Receivable", + ) + + # create a customer + customer = make_customer(customer="_Test Common Party USD") + cust_doc = frappe.get_doc("Customer", customer) + cust_doc.default_currency = "USD" + test_account_details = { + "company": "_Test Company", + "account": debtors, + } + cust_doc.append("accounts", test_account_details) + cust_doc.save() + + # create a supplier + supplier = create_supplier(supplier_name="_Test Common Party USD").name + supp_doc = frappe.get_doc("Supplier", supplier) + supp_doc.default_currency = "USD" + test_account_details = { + "company": "_Test Company", + "account": creditors, + } + supp_doc.append("accounts", test_account_details) + supp_doc.save() + + # create a party link between customer & supplier + create_party_link("Supplier", supplier, customer) + + # create a sales invoice + si = create_sales_invoice( + customer=customer, + currency="USD", + conversion_rate=get_exchange_rate("USD", "INR"), + debit_to=debtors, + do_not_save=1, + ) + si.party_account_currency = "USD" + si.save() + si.submit() + + # check outstanding of sales invoice + si.reload() + self.assertEqual(si.status, "Paid") + self.assertEqual(flt(si.outstanding_amount), 0.0) + + # check creation of journal entry + jv = frappe.get_all( + "Journal Entry Account", + { + "account": si.debit_to, + "party_type": "Customer", + "party": si.customer, + "reference_type": si.doctype, + "reference_name": si.name, + }, + pluck="credit_in_account_currency", + ) + self.assertTrue(jv) + self.assertEqual(jv[0], si.grand_total) + + def test_invoice_remarks(self): + si = frappe.copy_doc(test_records[0]) + si.po_no = "Test PO" + si.po_date = nowdate() + si.save() + si.submit() + self.assertEqual(si.remarks, f"Against Customer Order Test PO dated {format_date(nowdate())}") + + def test_gl_voucher_subtype(self): + si = create_sales_invoice() + gl_entries = frappe.get_all( + "GL Entry", + filters={"voucher_type": "Sales Invoice", "voucher_no": si.name}, + pluck="voucher_subtype", + ) + + self.assertTrue(all([x == "Sales Invoice" for x in gl_entries])) + + si = create_sales_invoice(is_return=1, qty=-1) + gl_entries = frappe.get_all( + "GL Entry", + filters={"voucher_type": "Sales Invoice", "voucher_no": si.name}, + pluck="voucher_subtype", + ) + + self.assertTrue(all([x == "Credit Note" for x in gl_entries])) + + def test_validation_on_opening_invoice_with_rounding(self): + si = create_sales_invoice(qty=1, rate=99.98, do_not_submit=True) + si.is_opening = "Yes" + si.items[0].income_account = "Temporary Opening - _TC" + si.save() + self.assertRaises(frappe.ValidationError, si.submit) + + def _create_opening_roundoff_account(self, company_name): + liability_root = frappe.db.get_all( + "Account", + filters={"company": company_name, "root_type": "Liability", "disabled": 0}, + order_by="lft", + limit=1, + )[0] + + # setup round off account + if acc := frappe.db.exists( + "Account", + { + "account_name": "Round Off for Opening", + "account_type": "Round Off for Opening", + "company": company_name, + }, + ): + frappe.db.set_value("Company", company_name, "round_off_for_opening", acc) + else: + acc = frappe.new_doc("Account") + acc.company = company_name + acc.parent_account = liability_root.name + acc.account_name = "Round Off for Opening" + acc.account_type = "Round Off for Opening" + acc.save() + frappe.db.set_value("Company", company_name, "round_off_for_opening", acc.name) + + def test_opening_invoice_with_rounding_adjustment(self): + si = create_sales_invoice(qty=1, rate=99.98, do_not_submit=True) + si.is_opening = "Yes" + si.items[0].income_account = "Temporary Opening - _TC" + si.save() + + self._create_opening_roundoff_account(si.company) + + si.reload() + si.submit() + res = frappe.db.get_all( + "GL Entry", + filters={"voucher_no": si.name, "is_opening": "Yes"}, + fields=["account", "debit", "credit", "is_opening"], + ) + self.assertEqual(len(res), 3) + + def _create_opening_invoice_with_inclusive_tax(self): + si = create_sales_invoice(qty=1, rate=90, do_not_submit=True) + si.is_opening = "Yes" + si.items[0].income_account = "Temporary Opening - _TC" + item_template = si.items[0].as_dict() + item_template.name = None + item_template.rate = 55 + si.append("items", item_template) + si.append( + "taxes", + { + "charge_type": "On Net Total", + "account_head": "_Test Account Service Tax - _TC", + "cost_center": "_Test Cost Center - _TC", + "description": "Testing...", + "rate": 5, + "included_in_print_rate": True, + }, + ) + # there will be 0.01 precision loss between Dr and Cr + # caused by 'included_in_print_tax' option + si.save() + return si + + def test_rounding_validation_for_opening_with_inclusive_tax(self): + si = self._create_opening_invoice_with_inclusive_tax() + # 'Round Off for Opening' not set in Company master + # Ledger level validation must be thrown + self.assertRaises(frappe.ValidationError, si.submit) + + def test_ledger_entries_on_opening_invoice_with_rounding_loss_by_inclusive_tax(self): + si = self._create_opening_invoice_with_inclusive_tax() + # 'Round Off for Opening' is set in Company master + self._create_opening_roundoff_account(si.company) + + si.submit() + actual = frappe.db.get_all( + "GL Entry", + filters={"voucher_no": si.name, "is_opening": "Yes", "is_cancelled": False}, + fields=["account", "debit", "credit", "is_opening"], + order_by="account,debit", + ) + expected = [ + {"account": "_Test Account Service Tax - _TC", "debit": 0.0, "credit": 6.9, "is_opening": "Yes"}, + {"account": "Debtors - _TC", "debit": 145.0, "credit": 0.0, "is_opening": "Yes"}, + {"account": "Round Off for Opening - _TC", "debit": 0.0, "credit": 0.01, "is_opening": "Yes"}, + {"account": "Temporary Opening - _TC", "debit": 0.0, "credit": 138.09, "is_opening": "Yes"}, + ] + self.assertEqual(len(actual), 4) + self.assertEqual(expected, actual) + + @change_settings("Accounts Settings", {"enable_common_party_accounting": True}) + def test_common_party_with_different_currency_in_debtor_and_creditor(self): + from erpnext.accounts.doctype.account.test_account import create_account + from erpnext.accounts.doctype.opening_invoice_creation_tool.test_opening_invoice_creation_tool import ( + make_customer, + ) + from erpnext.accounts.doctype.party_link.party_link import create_party_link + from erpnext.buying.doctype.supplier.test_supplier import create_supplier + from erpnext.setup.utils import get_exchange_rate + + creditors = create_account( + account_name="Creditors INR", + parent_account="Accounts Payable - _TC", + company="_Test Company", + account_currency="INR", + account_type="Payable", + ) + debtors = create_account( + account_name="Debtors USD", + parent_account="Accounts Receivable - _TC", + company="_Test Company", + account_currency="USD", + account_type="Receivable", + ) + + # create a customer + customer = make_customer(customer="_Test Common Party USD") + cust_doc = frappe.get_doc("Customer", customer) + cust_doc.default_currency = "USD" + test_account_details = { + "company": "_Test Company", + "account": debtors, + } + cust_doc.append("accounts", test_account_details) + cust_doc.save() + + # create a supplier + supplier = create_supplier(supplier_name="_Test Common Party INR").name + supp_doc = frappe.get_doc("Supplier", supplier) + supp_doc.default_currency = "INR" + test_account_details = { + "company": "_Test Company", + "account": creditors, + } + supp_doc.append("accounts", test_account_details) + supp_doc.save() + + # create a party link between customer & supplier + create_party_link("Supplier", supplier, customer) + + # create a sales invoice + si = create_sales_invoice( + customer=customer, + currency="USD", + conversion_rate=get_exchange_rate("USD", "INR"), + debit_to=debtors, + do_not_save=1, + ) + si.party_account_currency = "USD" + si.save() + si.submit() + + # check outstanding of sales invoice + si.reload() + self.assertEqual(si.status, "Paid") + self.assertEqual(flt(si.outstanding_amount), 0.0) + + # check creation of journal entry + jv = frappe.get_all( + "Journal Entry Account", + { + "account": si.debit_to, + "party_type": "Customer", + "party": si.customer, + "reference_type": si.doctype, + "reference_name": si.name, + }, + pluck="credit_in_account_currency", + ) + self.assertTrue(jv) + self.assertEqual(jv[0], si.grand_total) + + def test_total_billed_amount(self): + si = create_sales_invoice(do_not_submit=True) + + project = frappe.new_doc("Project") + project.company = "_Test Company" + project.project_name = "Test Total Billed Amount" + project.save() + + si.project = project.name + si.save() + si.submit() + + doc = frappe.get_doc("Project", project.name) + self.assertEqual(doc.total_billed_amount, si.grand_total) + + def test_total_billed_amount_with_different_projects(self): + # This test case is for checking the scenario where project is set at document level and for **some** child items only, not all + from copy import copy + + si = create_sales_invoice(do_not_submit=True) + + project = frappe.new_doc("Project") + project.company = "_Test Company" + project.project_name = "Test Total Billed Amount" + project.save() + + si.project = project.name + si.items.append(copy(si.items[0])) + si.items.append(copy(si.items[0])) + si.items[0].project = project.name + si.items[1].project = project.name + # Not setting project on last item + si.items[1].insert() + si.items[2].insert() + si.submit() + + project.reload() + self.assertIsNone(si.items[2].project) + self.assertEqual(project.total_billed_amount, 300) + + def test_pos_returns_with_party_account_currency(self): + from erpnext.accounts.doctype.sales_invoice.sales_invoice import make_sales_return + + pos_profile = make_pos_profile() + pos_profile.payments = [] + pos_profile.append("payments", {"default": 1, "mode_of_payment": "Cash"}) + pos_profile.save() + + pos = create_sales_invoice( + customer="_Test Customer USD", + currency="USD", + conversion_rate=86.595000000, + qty=2, + do_not_save=True, + ) + pos.is_pos = 1 + pos.pos_profile = pos_profile.name + pos.debit_to = "_Test Receivable USD - _TC" + pos.append("payments", {"mode_of_payment": "Cash", "account": "_Test Bank - _TC", "amount": 20.35}) + pos.save().submit() + + pos_return = make_sales_return(pos.name) + self.assertEqual(abs(pos_return.payments[0].amount), pos.payments[0].amount) + + def test_create_return_invoice_for_self_update(self): + from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry + from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice + from erpnext.controllers.sales_and_purchase_return import make_return_doc + + invoice = create_sales_invoice() + + payment_entry = get_payment_entry(dt=invoice.doctype, dn=invoice.name) + payment_entry.reference_no = "test001" + payment_entry.reference_date = getdate() + + payment_entry.save() + payment_entry.submit() + + r_invoice = make_return_doc(invoice.doctype, invoice.name) + + r_invoice.update_outstanding_for_self = 0 + r_invoice.save() + + self.assertEqual(r_invoice.update_outstanding_for_self, 1) + + r_invoice.submit() + + self.assertNotEqual(r_invoice.outstanding_amount, 0) + + invoice.reload() + + self.assertEqual(invoice.outstanding_amount, 0) + + def test_prevents_fully_returned_invoice_with_zero_quantity(self): + from erpnext.controllers.sales_and_purchase_return import StockOverReturnError, make_return_doc + + invoice = create_sales_invoice(qty=10) + + return_doc = make_return_doc(invoice.doctype, invoice.name) + return_doc.items[0].qty = -10 + return_doc.save().submit() + + return_doc = make_return_doc(invoice.doctype, invoice.name) + return_doc.items[0].qty = 0 + + self.assertRaises(StockOverReturnError, return_doc.save) + def set_advance_flag(company, flag, default_account): frappe.db.set_value( diff --git a/erpnext/accounts/doctype/sales_invoice_advance/sales_invoice_advance.json b/erpnext/accounts/doctype/sales_invoice_advance/sales_invoice_advance.json index 0ae85d90004..1246d04d3d6 100644 --- a/erpnext/accounts/doctype/sales_invoice_advance/sales_invoice_advance.json +++ b/erpnext/accounts/doctype/sales_invoice_advance/sales_invoice_advance.json @@ -14,7 +14,8 @@ "advance_amount", "allocated_amount", "exchange_gain_loss", - "ref_exchange_rate" + "ref_exchange_rate", + "difference_posting_date" ], "fields": [ { @@ -30,7 +31,7 @@ "width": "250px" }, { - "columns": 3, + "columns": 2, "fieldname": "reference_name", "fieldtype": "Dynamic Link", "in_list_view": 1, @@ -41,7 +42,7 @@ "read_only": 1 }, { - "columns": 3, + "columns": 2, "fieldname": "remarks", "fieldtype": "Text", "in_list_view": 1, @@ -112,13 +113,20 @@ "label": "Reference Exchange Rate", "non_negative": 1, "read_only": 1 + }, + { + "columns": 2, + "fieldname": "difference_posting_date", + "fieldtype": "Date", + "in_list_view": 1, + "label": "Difference Posting Date" } ], "idx": 1, "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2023-06-23 21:12:57.557731", + "modified": "2024-12-20 11:58:28.962370", "modified_by": "Administrator", "module": "Accounts", "name": "Sales Invoice Advance", diff --git a/erpnext/accounts/doctype/sales_invoice_advance/sales_invoice_advance.py b/erpnext/accounts/doctype/sales_invoice_advance/sales_invoice_advance.py index 5eeedb25f29..1d115c5c507 100644 --- a/erpnext/accounts/doctype/sales_invoice_advance/sales_invoice_advance.py +++ b/erpnext/accounts/doctype/sales_invoice_advance/sales_invoice_advance.py @@ -16,6 +16,7 @@ class SalesInvoiceAdvance(Document): advance_amount: DF.Currency allocated_amount: DF.Currency + difference_posting_date: DF.Date | None exchange_gain_loss: DF.Currency parent: DF.Data parentfield: DF.Data 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 7d1e4abdbc5..a5b93eae931 100644 --- a/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json +++ b/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json @@ -90,11 +90,14 @@ "incoming_rate", "item_tax_rate", "actual_batch_qty", - "actual_qty", "section_break_eoec", "serial_no", "column_break_ytgd", "batch_no", + "available_quantity_section", + "actual_qty", + "column_break_ogff", + "company_total_stock", "edit_references", "sales_order", "so_detail", @@ -103,6 +106,9 @@ "delivery_note", "dn_detail", "delivered_qty", + "column_break_vwhb", + "pos_invoice", + "pos_invoice_item", "internal_transfer_section", "purchase_order", "column_break_92", @@ -628,6 +634,7 @@ "fieldname": "serial_no", "fieldtype": "Text", "label": "Serial No", + "no_copy": 1, "oldfieldname": "serial_no", "oldfieldtype": "Small Text" }, @@ -676,7 +683,8 @@ "allow_on_submit": 1, "fieldname": "actual_qty", "fieldtype": "Float", - "label": "Available Qty at Warehouse", + "label": "Qty (Warehouse)", + "no_copy": 1, "oldfieldname": "actual_qty", "oldfieldtype": "Currency", "print_hide": 1, @@ -813,7 +821,8 @@ "fieldname": "project", "fieldtype": "Link", "label": "Project", - "options": "Project" + "options": "Project", + "search_index": 1 }, { "depends_on": "eval:parent.update_stock == 1", @@ -929,19 +938,59 @@ "fieldtype": "Currency", "label": "Distributed Discount Amount", "options": "currency" + }, + { + "fieldname": "available_quantity_section", + "fieldtype": "Section Break", + "label": "Available Quantity" + }, + { + "fieldname": "column_break_ogff", + "fieldtype": "Column Break" + }, + { + "allow_on_submit": 1, + "fieldname": "company_total_stock", + "fieldtype": "Float", + "label": "Qty (Company)", + "no_copy": 1, + "print_hide": 1, + "read_only": 1 + }, + { + "fieldname": "pos_invoice_item", + "fieldtype": "Data", + "ignore_user_permissions": 1, + "label": "POS Invoice Item", + "no_copy": 1, + "print_hide": 1, + "read_only": 1 + }, + { + "fieldname": "column_break_vwhb", + "fieldtype": "Column Break" + }, + { + "fieldname": "pos_invoice", + "fieldtype": "Link", + "label": "POS Invoice", + "no_copy": 1, + "options": "POS Invoice", + "print_hide": 1, + "search_index": 1 } ], "idx": 1, "istable": 1, "links": [], - "modified": "2024-06-02 06:14:40.009020", + "modified": "2025-03-12 16:33:55.503777", "modified_by": "Administrator", "module": "Accounts", "name": "Sales Invoice Item", "naming_rule": "Random", "owner": "Administrator", "permissions": [], - "sort_field": "modified", + "sort_field": "creation", "sort_order": "DESC", "states": [] -} +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.py b/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.py index 28d468ac736..65d82a4deb3 100644 --- a/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.py +++ b/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.py @@ -28,6 +28,7 @@ class SalesInvoiceItem(Document): base_rate_with_margin: DF.Currency batch_no: DF.Link | None brand: DF.Data | None + company_total_stock: DF.Float conversion_factor: DF.Float cost_center: DF.Link customer_item_code: DF.Data | None @@ -64,6 +65,8 @@ class SalesInvoiceItem(Document): parent: DF.Data parentfield: DF.Data parenttype: DF.Data + pos_invoice: DF.Link | None + pos_invoice_item: DF.Data | None price_list_rate: DF.Currency pricing_rules: DF.SmallText | None project: DF.Link | None diff --git a/erpnext/accounts/doctype/subscription/subscription.py b/erpnext/accounts/doctype/subscription/subscription.py index d57f1de4379..7323c819d7e 100644 --- a/erpnext/accounts/doctype/subscription/subscription.py +++ b/erpnext/accounts/doctype/subscription/subscription.py @@ -114,10 +114,10 @@ class Subscription(Document): if self.trial_period_end and getdate(self.trial_period_end) > getdate(self.start_date): _current_invoice_start = add_days(self.trial_period_end, 1) - elif self.trial_period_start and self.is_trialling(): - _current_invoice_start = self.trial_period_start elif date: _current_invoice_start = date + elif self.trial_period_start and self.is_trialling(): + _current_invoice_start = self.trial_period_start else: _current_invoice_start = nowdate() @@ -414,8 +414,8 @@ class Subscription(Document): if frappe.db.get_value("Supplier", self.party, "tax_withholding_category"): invoice.apply_tds = 1 - # Add party currency to invoice - invoice.currency = get_party_account_currency(self.party_type, self.party, self.company) + # Add currency to invoice + invoice.currency = frappe.db.get_value("Subscription Plan", {"name": self.plans[0].plan}, "currency") # Add dimensions in invoice for subscription: accounting_dimensions = get_accounting_dimensions() @@ -634,9 +634,7 @@ class Subscription(Document): """ invoice = frappe.get_all( self.invoice_document_type, - { - "subscription": self.name, - }, + {"subscription": self.name, "docstatus": ("<", 2)}, limit=1, order_by="to_date desc", pluck="name", @@ -675,6 +673,7 @@ class Subscription(Document): self.invoice_document_type, { "subscription": self.name, + "docstatus": 1, "status": ["!=", "Paid"], }, ) @@ -697,7 +696,7 @@ class Subscription(Document): self.status = "Cancelled" self.cancelation_date = nowdate() - if to_generate_invoice: + if to_generate_invoice and self.cancelation_date >= self.current_invoice_start: self.generate_invoice(self.current_invoice_start, self.cancelation_date) self.save() diff --git a/erpnext/accounts/doctype/subscription/test_subscription.py b/erpnext/accounts/doctype/subscription/test_subscription.py index 8d4ec3dd084..b1e5653e8da 100644 --- a/erpnext/accounts/doctype/subscription/test_subscription.py +++ b/erpnext/accounts/doctype/subscription/test_subscription.py @@ -3,7 +3,7 @@ import frappe -from frappe.tests.utils import FrappeTestCase +from frappe.tests.utils import FrappeTestCase, change_settings from frappe.utils.data import ( add_days, add_months, @@ -470,6 +470,28 @@ class TestSubscription(FrappeTestCase): currency = frappe.db.get_value("Sales Invoice", subscription.invoices[0].name, "currency") self.assertEqual(currency, "USD") + @change_settings( + "Accounts Settings", + {"allow_multi_currency_invoices_against_single_party_account": 1}, + ) + def test_multi_currency_subscription_with_default_company_currency(self): + party = "Test Subscription Customer Multi Currency" + frappe.db.set_value("Customer", party, "default_currency", "USD") + subscription = create_subscription( + start_date="2018-01-01", + generate_invoice_at="Beginning of the current subscription period", + plans=[{"plan": "_Test Plan Multicurrency", "qty": 1, "currency": "USD"}], + party=party, + ) + + subscription.process(posting_date="2018-01-01") + self.assertEqual(len(subscription.invoices), 1) + self.assertEqual(subscription.status, "Unpaid") + + # Check the currency of the created invoice + currency = frappe.db.get_value("Sales Invoice", subscription.invoices[0].name, "currency") + self.assertEqual(currency, "USD") + def test_subscription_recovery(self): """Test if Subscription recovers when start/end date run out of sync with created invoices.""" subscription = create_subscription( @@ -581,6 +603,12 @@ def create_parties(): customer.append("accounts", {"company": "_Test Company", "account": "_Test Receivable USD - _TC"}) customer.insert() + if not frappe.db.exists("Customer", "_Test Subscription Customer Multi Currency"): + customer = frappe.new_doc("Customer") + customer.customer_name = "Test Subscription Customer Multi Currency" + customer.default_currency = "USD" + customer.insert() + if not frappe.db.exists("Customer", "_Test Subscription Customer John Doe"): customer = frappe.new_doc("Customer") customer.customer_name = "_Test Subscription Customer John Doe" diff --git a/erpnext/accounts/doctype/tax_rule/tax_rule.py b/erpnext/accounts/doctype/tax_rule/tax_rule.py index ed623c6635e..1c0c0a3c1d6 100644 --- a/erpnext/accounts/doctype/tax_rule/tax_rule.py +++ b/erpnext/accounts/doctype/tax_rule/tax_rule.py @@ -185,7 +185,7 @@ def get_tax_template(posting_date, args): conditions.append("(from_date is null) and (to_date is null)") conditions.append( - "ifnull(tax_category, '') = {}".format(frappe.db.escape(cstr(args.get("tax_category")))) + "ifnull(tax_category, '') = {}".format(frappe.db.escape(cstr(args.get("tax_category")), False)) ) if "tax_category" in args.keys(): del args["tax_category"] diff --git a/erpnext/accounts/doctype/tax_withheld_vouchers/tax_withheld_vouchers.json b/erpnext/accounts/doctype/tax_withheld_vouchers/tax_withheld_vouchers.json index 46b430c6594..51dc3674594 100644 --- a/erpnext/accounts/doctype/tax_withheld_vouchers/tax_withheld_vouchers.json +++ b/erpnext/accounts/doctype/tax_withheld_vouchers/tax_withheld_vouchers.json @@ -13,17 +13,15 @@ "fields": [ { "fieldname": "voucher_type", - "fieldtype": "Link", + "fieldtype": "Data", "in_list_view": 1, - "label": "Voucher Type", - "options": "DocType" + "label": "Voucher Type" }, { "fieldname": "voucher_name", - "fieldtype": "Dynamic Link", + "fieldtype": "Data", "in_list_view": 1, - "label": "Voucher Name", - "options": "voucher_type" + "label": "Voucher Name" }, { "fieldname": "taxable_amount", @@ -36,7 +34,7 @@ "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2023-01-13 13:40:41.479208", + "modified": "2025-02-05 16:39:14.863698", "modified_by": "Administrator", "module": "Accounts", "name": "Tax Withheld Vouchers", diff --git a/erpnext/accounts/doctype/tax_withheld_vouchers/tax_withheld_vouchers.py b/erpnext/accounts/doctype/tax_withheld_vouchers/tax_withheld_vouchers.py index bc2003e2bea..dbb69a2e769 100644 --- a/erpnext/accounts/doctype/tax_withheld_vouchers/tax_withheld_vouchers.py +++ b/erpnext/accounts/doctype/tax_withheld_vouchers/tax_withheld_vouchers.py @@ -18,8 +18,8 @@ class TaxWithheldVouchers(Document): parentfield: DF.Data parenttype: DF.Data taxable_amount: DF.Currency - voucher_name: DF.DynamicLink | None - voucher_type: DF.Link | None + voucher_name: DF.Data | None + voucher_type: DF.Data | None # end: auto-generated types pass diff --git a/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.js b/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.js index 4f4f32c4747..042831c8080 100644 --- a/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.js +++ b/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.js @@ -10,6 +10,7 @@ frappe.ui.form.on("Tax Withholding Category", { filters: { company: child.company, root_type: ["in", ["Asset", "Liability"]], + is_group: 0, }, }; } diff --git a/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py b/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py index 9fd78da2d07..e45802ca9f2 100644 --- a/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py +++ b/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py @@ -36,27 +36,38 @@ class TaxWithholdingCategory(Document): def validate(self): self.validate_dates() - self.validate_accounts() + self.validate_companies_and_accounts() self.validate_thresholds() def validate_dates(self): - last_date = None - for d in self.get("rates"): + last_to_date = None + rates = sorted(self.get("rates"), key=lambda d: getdate(d.from_date)) + + for d in rates: if getdate(d.from_date) >= getdate(d.to_date): frappe.throw(_("Row #{0}: From Date cannot be before To Date").format(d.idx)) # validate overlapping of dates - if last_date and getdate(d.to_date) < getdate(last_date): + if last_to_date and getdate(d.from_date) < getdate(last_to_date): frappe.throw(_("Row #{0}: Dates overlapping with other row").format(d.idx)) - def validate_accounts(self): - existing_accounts = [] + last_to_date = d.to_date + + def validate_companies_and_accounts(self): + existing_accounts = set() + companies = set() for d in self.get("accounts"): + # validate duplicate company + if d.get("company") in companies: + frappe.throw(_("Company {0} added multiple times").format(frappe.bold(d.get("company")))) + companies.add(d.get("company")) + + # validate duplicate account if d.get("account") in existing_accounts: frappe.throw(_("Account {0} added multiple times").format(frappe.bold(d.get("account")))) validate_account_head(d.idx, d.get("account"), d.get("company")) - existing_accounts.append(d.get("account")) + existing_accounts.add(d.get("account")) def validate_thresholds(self): for d in self.get("rates"): @@ -87,6 +98,7 @@ def get_party_details(inv): def get_party_tax_withholding_details(inv, tax_withholding_category=None): if inv.doctype == "Payment Entry": inv.tax_withholding_net_total = inv.net_total + inv.base_tax_withholding_net_total = inv.net_total pan_no = "" parties = [] @@ -156,6 +168,9 @@ def get_party_tax_withholding_details(inv, tax_withholding_category=None): } ) + if cint(tax_details.round_off_tax_amount): + inv.round_off_applicable_accounts_for_tax_withholding = tax_details.account_head + if inv.doctype == "Purchase Invoice": return tax_row, tax_deducted_on_advances, voucher_wise_amount else: @@ -247,14 +262,14 @@ def get_tax_row_for_tds(tax_details, tax_amount): } -def get_lower_deduction_certificate(company, tax_details, pan_no): +def get_lower_deduction_certificate(company, posting_date, tax_details, pan_no): ldc_name = frappe.db.get_value( "Lower Deduction Certificate", { "pan_no": pan_no, "tax_withholding_category": tax_details.tax_withholding_category, - "valid_from": (">=", tax_details.from_date), - "valid_upto": ("<=", tax_details.to_date), + "valid_from": ("<=", posting_date), + "valid_upto": (">=", posting_date), "company": company, }, "name", @@ -266,7 +281,10 @@ def get_lower_deduction_certificate(company, tax_details, pan_no): def get_tax_amount(party_type, parties, inv, tax_details, posting_date, pan_no=None): vouchers, voucher_wise_amount = get_invoice_vouchers( - parties, tax_details, inv.company, party_type=party_type + parties, + tax_details, + inv.company, + party_type=party_type, ) payment_entry_vouchers = get_payment_entry_vouchers( @@ -302,7 +320,11 @@ def get_tax_amount(party_type, parties, inv, tax_details, posting_date, pan_no=N tax_amount = 0 if party_type == "Supplier": - ldc = get_lower_deduction_certificate(inv.company, tax_details, pan_no) + # if tds account is changed. + if not tax_deducted: + tax_deducted = is_tax_deducted_on_the_basis_of_inv(vouchers) + + ldc = get_lower_deduction_certificate(inv.company, posting_date, tax_details, pan_no) if tax_deducted: net_total = inv.tax_withholding_net_total if ldc: @@ -319,7 +341,7 @@ def get_tax_amount(party_type, parties, inv, tax_details, posting_date, pan_no=N # once tds is deducted, not need to add vouchers in the invoice voucher_wise_amount = {} else: - tax_amount = get_tds_amount(ldc, parties, inv, tax_details, vouchers) + tax_amount = get_tds_amount(ldc, parties, inv, tax_details, voucher_wise_amount) elif party_type == "Customer": if tax_deducted: @@ -327,7 +349,7 @@ def get_tax_amount(party_type, parties, inv, tax_details, posting_date, pan_no=N tax_amount = 0 else: # if no TCS has been charged in FY, - # then chargeable value is "prev invoices + advances" value which cross the threshold + # then chargeable value is "prev invoices + advances - advance_adjusted" value which cross the threshold tax_amount = get_tcs_amount(parties, inv, tax_details, vouchers, advance_vouchers) if cint(tax_details.round_off_tax_amount): @@ -336,14 +358,41 @@ def get_tax_amount(party_type, parties, inv, tax_details, posting_date, pan_no=N return tax_amount, tax_deducted, tax_deducted_on_advances, voucher_wise_amount -def get_invoice_vouchers(parties, tax_details, company, party_type="Supplier"): - doctype = "Purchase Invoice" if party_type == "Supplier" else "Sales Invoice" - field = ( - "base_tax_withholding_net_total as base_net_total" if party_type == "Supplier" else "base_net_total" +def is_tax_deducted_on_the_basis_of_inv(vouchers): + return frappe.db.exists( + "Purchase Taxes and Charges", + { + "parent": ["in", vouchers], + "is_tax_withholding_account": 1, + "parenttype": "Purchase Invoice", + "base_tax_amount_after_discount_amount": [">", 0], + }, ) - voucher_wise_amount = {} + + +def get_invoice_vouchers(parties, tax_details, company, party_type="Supplier"): + voucher_wise_amount = [] vouchers = [] + ldcs = frappe.db.get_all( + "Lower Deduction Certificate", + filters={ + "valid_from": [">=", tax_details.from_date], + "valid_upto": ["<=", tax_details.to_date], + "company": company, + "supplier": ["in", parties], + }, + fields=["supplier", "valid_from", "valid_upto", "rate"], + ) + + doctype = "Purchase Invoice" if party_type == "Supplier" else "Sales Invoice" + field = [ + "base_tax_withholding_net_total as base_net_total" if party_type == "Supplier" else "base_net_total", + "name", + "grand_total", + "posting_date", + ] + filters = { "company": company, frappe.scrub(party_type): ["in", parties], @@ -357,15 +406,29 @@ def get_invoice_vouchers(parties, tax_details, company, party_type="Supplier"): {"apply_tds": 1, "tax_withholding_category": tax_details.get("tax_withholding_category")} ) - invoices_details = frappe.get_all(doctype, filters=filters, fields=["name", field]) + invoices_details = frappe.get_all(doctype, filters=filters, fields=field) for d in invoices_details: - vouchers.append(d.name) - voucher_wise_amount.update({d.name: {"amount": d.base_net_total, "voucher_type": doctype}}) + d = frappe._dict( + { + "voucher_name": d.name, + "voucher_type": doctype, + "taxable_amount": d.base_net_total, + "grand_total": d.grand_total, + "posting_date": d.posting_date, + } + ) + + if ldc := [x for x in ldcs if d.posting_date >= x.valid_from and d.posting_date <= x.valid_upto]: + if ldc[0].supplier in parties and ldc[0].rate == 0: + d.update({"taxable_amount": 0}) + + vouchers.append(d.voucher_name) + voucher_wise_amount.append(d) journal_entries_details = frappe.db.sql( """ - SELECT j.name, ja.credit - ja.debit AS amount + SELECT j.name, ja.credit - ja.debit AS amount, ja.reference_type FROM `tabJournal Entry` j, `tabJournal Entry Account` ja WHERE j.name = ja.parent @@ -387,10 +450,18 @@ def get_invoice_vouchers(parties, tax_details, company, party_type="Supplier"): as_dict=1, ) - if journal_entries_details: - for d in journal_entries_details: - vouchers.append(d.name) - voucher_wise_amount.update({d.name: {"amount": d.amount, "voucher_type": "Journal Entry"}}) + for d in journal_entries_details: + vouchers.append(d.name) + voucher_wise_amount.append( + frappe._dict( + { + "voucher_name": d.name, + "voucher_type": "Journal Entry", + "taxable_amount": d.amount, + "reference_type": d.reference_type, + } + ) + ) return vouchers, voucher_wise_amount @@ -414,6 +485,9 @@ def get_advance_vouchers(parties, company=None, from_date=None, to_date=None, pa Use Payment Ledger to fetch unallocated Advance Payments """ + if party_type == "Supplier": + return [] + ple = qb.DocType("Payment Ledger Entry") conditions = [] @@ -486,12 +560,24 @@ def get_advance_tax_across_fiscal_year(tax_deducted_on_advances, tax_details): return advance_tax_from_across_fiscal_year -def get_tds_amount(ldc, parties, inv, tax_details, vouchers): +def get_tds_amount(ldc, parties, inv, tax_details, voucher_wise_amount): tds_amount = 0 - invoice_filters = {"name": ("in", vouchers), "docstatus": 1, "apply_tds": 1} + + pi_grand_total = 0 + pi_base_net_total = 0 + jv_credit_amt = 0 + pe_credit_amt = 0 + + for row in voucher_wise_amount: + if row.voucher_type == "Purchase Invoice": + pi_grand_total += row.get("grand_total", 0) + pi_base_net_total += row.get("taxable_amount", 0) + + if row.voucher_type == "Journal Entry" and row.reference_type != "Purchase Invoice": + jv_credit_amt += row.get("taxable_amount", 0) ## for TDS to be deducted on advances - payment_entry_filters = { + pe_filters = { "party_type": "Supplier", "party": ("in", parties), "docstatus": 1, @@ -502,70 +588,49 @@ def get_tds_amount(ldc, parties, inv, tax_details, vouchers): "company": inv.company, } - field = "sum(tax_withholding_net_total)" + consider_party_ledger_amt = cint(tax_details.consider_party_ledger_amount) - if cint(tax_details.consider_party_ledger_amount): - invoice_filters.pop("apply_tds", None) - field = "sum(grand_total)" - - payment_entry_filters.pop("apply_tax_withholding_amount", None) - payment_entry_filters.pop("tax_withholding_category", None) - - supp_credit_amt = frappe.db.get_value("Purchase Invoice", invoice_filters, field) or 0.0 - - supp_jv_credit_amt = ( - frappe.db.get_value( - "Journal Entry Account", - { - "parent": ("in", vouchers), - "docstatus": 1, - "party": ("in", parties), - "reference_type": ("!=", "Purchase Invoice"), - }, - "sum(credit_in_account_currency - debit_in_account_currency)", - ) - or 0.0 - ) + if consider_party_ledger_amt: + pe_filters.pop("apply_tax_withholding_amount", None) + pe_filters.pop("tax_withholding_category", None) # Get Amount via payment entry - payment_entry_amounts = frappe.db.get_all( + payment_entries = frappe.db.get_all( "Payment Entry", - filters=payment_entry_filters, - fields=["sum(unallocated_amount) as amount", "payment_type"], - group_by="payment_type", + filters=pe_filters, + fields=["name", "unallocated_amount as taxable_amount", "payment_type"], ) - supp_credit_amt += supp_jv_credit_amt - supp_credit_amt += inv.tax_withholding_net_total - - for type in payment_entry_amounts: - if type.payment_type == "Pay": - supp_credit_amt += type.amount - else: - supp_credit_amt -= type.amount + for row in payment_entries: + value = row.taxable_amount if row.payment_type == "Pay" else -1 * row.taxable_amount + pe_credit_amt += value + voucher_wise_amount.append( + frappe._dict( + { + "voucher_name": row.name, + "voucher_type": "Payment Entry", + "taxable_amount": value, + } + ) + ) threshold = tax_details.get("threshold", 0) cumulative_threshold = tax_details.get("cumulative_threshold", 0) + supp_credit_amt = jv_credit_amt + pe_credit_amt + inv.get("tax_withholding_net_total", 0) + tax_withholding_net_total = inv.get("base_tax_withholding_net_total", 0) - if inv.doctype != "Payment Entry": - tax_withholding_net_total = inv.base_tax_withholding_net_total - else: - tax_withholding_net_total = inv.tax_withholding_net_total + # if consider_party_ledger_amount is checked, then threshold will be based on grand total + amt_for_threshold = pi_grand_total if consider_party_ledger_amt else pi_base_net_total - if (threshold and tax_withholding_net_total >= threshold) or ( - cumulative_threshold and supp_credit_amt >= cumulative_threshold - ): - if (cumulative_threshold and supp_credit_amt >= cumulative_threshold) and cint( - tax_details.tax_on_excess_amount - ): - # Get net total again as TDS is calculated on net total - # Grand is used to just check for threshold breach - net_total = ( - frappe.db.get_value("Purchase Invoice", invoice_filters, "sum(tax_withholding_net_total)") - or 0.0 - ) - net_total += inv.tax_withholding_net_total - supp_credit_amt = net_total - cumulative_threshold + cumulative_threshold_breached = ( + cumulative_threshold and (supp_credit_amt + amt_for_threshold) >= cumulative_threshold + ) + + if (threshold and tax_withholding_net_total >= threshold) or (cumulative_threshold_breached): + supp_credit_amt += pi_base_net_total + + if cumulative_threshold_breached and cint(tax_details.tax_on_excess_amount): + supp_credit_amt = pi_base_net_total + tax_withholding_net_total - cumulative_threshold if ldc and is_valid_certificate(ldc, inv.get("posting_date") or inv.get("transaction_date"), 0): tds_amount = get_lower_deduction_amount( @@ -607,8 +672,6 @@ def get_tcs_amount(parties, inv, tax_details, vouchers, adv_vouchers): conditions.append(ple.voucher_no == ple.against_voucher_no) conditions.append(ple.company == inv.company) - (qb.from_(ple).select(Abs(Sum(ple.amount))).where(Criterion.all(conditions)).run(as_list=1)) - advance_amt = ( qb.from_(ple).select(Abs(Sum(ple.amount))).where(Criterion.all(conditions)).run()[0][0] or 0.0 ) @@ -631,9 +694,12 @@ def get_tcs_amount(parties, inv, tax_details, vouchers, adv_vouchers): ) cumulative_threshold = tax_details.get("cumulative_threshold", 0) + advance_adjusted = get_advance_adjusted_in_invoice(inv) current_invoice_total = get_invoice_total_without_tcs(inv, tax_details) - total_invoiced_amt = current_invoice_total + invoiced_amt + advance_amt - credit_note_amt + total_invoiced_amt = ( + current_invoice_total + invoiced_amt + advance_amt - credit_note_amt - advance_adjusted + ) if cumulative_threshold and total_invoiced_amt >= cumulative_threshold: chargeable_amt = total_invoiced_amt - cumulative_threshold @@ -642,6 +708,14 @@ def get_tcs_amount(parties, inv, tax_details, vouchers, adv_vouchers): return tcs_amount +def get_advance_adjusted_in_invoice(inv): + advances_adjusted = 0 + for row in inv.get("advances", []): + advances_adjusted += row.allocated_amount + + return advances_adjusted + + def get_invoice_total_without_tcs(inv, tax_details): tcs_tax_row = [d for d in inv.taxes if d.account_head == tax_details.account_head] tcs_tax_row_amount = tcs_tax_row[0].base_tax_amount if tcs_tax_row else 0 diff --git a/erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py b/erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py index 1e3939d98a4..ae0a098137a 100644 --- a/erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py +++ b/erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py @@ -7,7 +7,7 @@ import unittest import frappe from frappe.custom.doctype.custom_field.custom_field import create_custom_fields from frappe.tests.utils import FrappeTestCase, change_settings -from frappe.utils import add_days, today +from frappe.utils import add_days, add_months, today from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry from erpnext.accounts.utils import get_fiscal_year @@ -61,6 +61,49 @@ class TestTaxWithholdingCategory(FrappeTestCase): for d in reversed(invoices): d.cancel() + def test_tds_with_account_changed(self): + frappe.db.set_value( + "Supplier", "Test TDS Supplier", "tax_withholding_category", "Multi Account TDS Category" + ) + invoices = [] + + # create invoices for lower than single threshold tax rate + for _ in range(2): + pi = create_purchase_invoice(supplier="Test TDS Supplier") + pi.submit() + invoices.append(pi) + + # create another invoice whose total when added to previously created invoice, + # surpasses cumulative threshhold + pi = create_purchase_invoice(supplier="Test TDS Supplier") + pi.submit() + + # assert equal tax deduction on total invoice amount until now + self.assertEqual(pi.taxes_and_charges_deducted, 3000) + self.assertEqual(pi.grand_total, 7000) + invoices.append(pi) + + # account changed + + frappe.db.set_value( + "Tax Withholding Account", + {"parent": "Multi Account TDS Category"}, + "account", + "_Test Account VAT - _TC", + ) + + # TDS should be on invoice only even though account is changed + pi = create_purchase_invoice(supplier="Test TDS Supplier", rate=5000) + pi.submit() + + # assert equal tax deduction on total invoice amount until now + self.assertEqual(pi.taxes_and_charges_deducted, 500) + invoices.append(pi) + + # delete invoices to avoid clashing + for d in reversed(invoices): + d.cancel() + def test_single_threshold_tds(self): invoices = [] frappe.db.set_value( @@ -74,11 +117,17 @@ class TestTaxWithholdingCategory(FrappeTestCase): self.assertEqual(pi.grand_total, 18000) # check gl entry for the purchase invoice - gl_entries = frappe.db.get_all("GL Entry", filters={"voucher_no": pi.name}, fields=["*"]) + gl_entries = frappe.db.get_all( + "GL Entry", + filters={"voucher_no": pi.name}, + fields=["account", "sum(debit) as debit", "sum(credit) as credit"], + group_by="account", + ) self.assertEqual(len(gl_entries), 3) for d in gl_entries: if d.account == pi.credit_to: - self.assertEqual(d.credit, 18000) + self.assertEqual(d.credit, 20000) + self.assertEqual(d.debit, 2000) elif d.account == pi.items[0].get("expense_account"): self.assertEqual(d.debit, 20000) elif d.account == pi.taxes[0].get("account_head"): @@ -121,6 +170,85 @@ class TestTaxWithholdingCategory(FrappeTestCase): for d in reversed(invoices): d.cancel() + def test_cumulative_threshold_with_party_ledger_amount_on_net_total(self): + invoices = [] + frappe.db.set_value( + "Supplier", "Test TDS Supplier3", "tax_withholding_category", "Advance TDS Category" + ) + + # Invoice with tax and without exceeding single and cumulative thresholds + for _ in range(2): + pi = create_purchase_invoice(supplier="Test TDS Supplier3", rate=1000, do_not_save=True) + pi.apply_tds = 1 + pi.append( + "taxes", + { + "category": "Total", + "charge_type": "Actual", + "account_head": "_Test Account VAT - _TC", + "cost_center": "Main - _TC", + "tax_amount": 500, + "description": "Test", + "add_deduct_tax": "Add", + }, + ) + pi.save() + pi.submit() + invoices.append(pi) + + # Third Invoice exceeds single threshold and not exceeding cumulative threshold + pi1 = create_purchase_invoice(supplier="Test TDS Supplier3", rate=6000) + pi1.apply_tds = 1 + pi1.save() + pi1.submit() + invoices.append(pi1) + + # Cumulative threshold is 10,000 + # Threshold calculation should be only on the third invoice + self.assertEqual(pi1.taxes[0].tax_amount, 800) + + for d in reversed(invoices): + d.cancel() + + def test_cumulative_threshold_with_tax_on_excess_amount(self): + invoices = [] + frappe.db.set_value("Supplier", "Test TDS Supplier3", "tax_withholding_category", "New TDS Category") + + # Invoice with tax and without exceeding single and cumulative thresholds + for _ in range(2): + pi = create_purchase_invoice(supplier="Test TDS Supplier3", rate=10000, do_not_save=True) + pi.apply_tds = 1 + pi.append( + "taxes", + { + "category": "Total", + "charge_type": "Actual", + "account_head": "_Test Account VAT - _TC", + "cost_center": "Main - _TC", + "tax_amount": 500, + "description": "Test", + "add_deduct_tax": "Add", + }, + ) + pi.save() + pi.submit() + invoices.append(pi) + + # Third Invoice exceeds single threshold and not exceeding cumulative threshold + pi1 = create_purchase_invoice(supplier="Test TDS Supplier3", rate=20000) + pi1.apply_tds = 1 + pi1.save() + pi1.submit() + invoices.append(pi1) + + # Cumulative threshold is 10,000 + # Threshold calculation should be only on the third invoice + self.assertTrue(len(pi1.taxes) > 0) + self.assertEqual(pi1.taxes[0].tax_amount, 1000) + + for d in reversed(invoices): + d.cancel() + def test_cumulative_threshold_tcs(self): frappe.db.set_value( "Customer", "Test TCS Customer", "tax_withholding_category", "Cumulative Threshold TCS" @@ -210,6 +338,46 @@ class TestTaxWithholdingCategory(FrappeTestCase): d.reload() d.cancel() + def test_tcs_on_allocated_advance_payments(self): + frappe.db.set_value( + "Customer", "Test TCS Customer", "tax_withholding_category", "Cumulative Threshold TCS" + ) + + vouchers = [] + + # create advance payment + pe = create_payment_entry( + payment_type="Receive", party_type="Customer", party="Test TCS Customer", paid_amount=30000 + ) + pe.paid_from = "Debtors - _TC" + pe.paid_to = "Cash - _TC" + pe.submit() + vouchers.append(pe) + + si = create_sales_invoice(customer="Test TCS Customer", rate=50000) + advances = si.get_advance_entries() + si.append( + "advances", + { + "reference_type": advances[0].reference_type, + "reference_name": advances[0].reference_name, + "advance_amount": advances[0].amount, + "allocated_amount": 30000, + }, + ) + si.submit() + vouchers.append(si) + + # assert tax collection on total invoice ,advance payment adjusted should be excluded. + tcs_charged = sum([d.base_tax_amount for d in si.taxes if d.account_head == "TCS - _TC"]) + # tcs = (inv amt)50000+(adv amt)30000-(adv adj) 30000 - threshold(30000) * rate 10% + self.assertEqual(tcs_charged, 2000) + + # cancel invoice and payments to avoid clashing + for d in reversed(vouchers): + d.reload() + d.cancel() + def test_tds_calculation_on_net_total(self): frappe.db.set_value( "Supplier", "Test TDS Supplier4", "tax_withholding_category", "Cumulative Threshold TDS" @@ -351,7 +519,7 @@ class TestTaxWithholdingCategory(FrappeTestCase): payment = get_payment_entry(order.doctype, order.name) payment.apply_tax_withholding_amount = 1 payment.tax_withholding_category = "Cumulative Threshold TDS" - payment.submit() + payment.save().submit() self.assertEqual(payment.taxes[0].tax_amount, 4000) def test_multi_category_single_supplier(self): @@ -401,6 +569,15 @@ class TestTaxWithholdingCategory(FrappeTestCase): pi1.submit() invoices.append(pi1) + pe = create_payment_entry( + payment_type="Pay", party_type="Supplier", party="Test TDS Supplier6", paid_amount=1000 + ) + pe.apply_tax_withholding_amount = 1 + pe.tax_withholding_category = "Test Multi Invoice Category" + pe.save() + pe.submit() + invoices.append(pe) + pi2 = create_purchase_invoice(supplier="Test TDS Supplier6", rate=9000, do_not_save=True) pi2.apply_tds = 1 pi2.tax_withholding_category = "Test Multi Invoice Category" @@ -416,6 +593,8 @@ class TestTaxWithholdingCategory(FrappeTestCase): self.assertTrue(pi2.tax_withheld_vouchers[0].taxable_amount == pi1.net_total) self.assertTrue(pi2.tax_withheld_vouchers[1].voucher_name == pi.name) self.assertTrue(pi2.tax_withheld_vouchers[1].taxable_amount == pi.net_total) + self.assertTrue(pi2.tax_withheld_vouchers[2].voucher_name == pe.name) + self.assertTrue(pi2.tax_withheld_vouchers[2].taxable_amount == pe.paid_amount) # cancel invoices to avoid clashing for d in reversed(invoices): @@ -487,6 +666,49 @@ class TestTaxWithholdingCategory(FrappeTestCase): pi2.cancel() pi3.cancel() + def test_ldc_at_0_rate(self): + frappe.db.set_value( + "Supplier", + "Test LDC Supplier", + { + "tax_withholding_category": "Test Service Category", + "pan": "ABCTY1234D", + }, + ) + + fiscal_year = get_fiscal_year(today(), company="_Test Company") + valid_from = fiscal_year[1] + valid_upto = add_months(valid_from, 1) + create_lower_deduction_certificate( + supplier="Test LDC Supplier", + certificate_no="1AE0423AAJ", + tax_withholding_category="Test Service Category", + tax_rate=0, + limit=50000, + valid_from=valid_from, + valid_upto=valid_upto, + ) + + pi1 = create_purchase_invoice( + supplier="Test LDC Supplier", rate=35000, posting_date=valid_from, set_posting_time=True + ) + pi1.submit() + self.assertEqual(pi1.taxes, []) + + pi2 = create_purchase_invoice( + supplier="Test LDC Supplier", + rate=35000, + posting_date=add_days(valid_upto, 1), + set_posting_time=True, + ) + pi2.submit() + self.assertEqual(len(pi2.taxes), 1) + # pi1 net total shouldn't be included as it lies within LDC at rate of '0' + self.assertEqual(pi2.taxes[0].tax_amount, 3500) + + pi1.cancel() + pi2.cancel() + def set_previous_fy_and_tax_category(self): test_company = "_Test Company" category = "Cumulative Threshold TDS" @@ -644,7 +866,8 @@ def create_purchase_invoice(**args): pi = frappe.get_doc( { "doctype": "Purchase Invoice", - "posting_date": today(), + "set_posting_time": args.set_posting_time or False, + "posting_date": args.posting_date or today(), "apply_tds": 0 if args.do_not_apply_tds else 1, "supplier": args.supplier, "company": "_Test Company", @@ -936,6 +1159,16 @@ def create_tax_withholding_category_records(): consider_party_ledger_amount=1, ) + create_tax_withholding_category( + category_name="Multi Account TDS Category", + rate=10, + from_date=from_date, + to_date=to_date, + account="TDS - _TC", + single_threshold=0, + cumulative_threshold=30000, + ) + def create_tax_withholding_category( category_name, @@ -972,7 +1205,9 @@ def create_tax_withholding_category( ).insert() -def create_lower_deduction_certificate(supplier, tax_withholding_category, tax_rate, certificate_no, limit): +def create_lower_deduction_certificate( + supplier, tax_withholding_category, tax_rate, certificate_no, limit, valid_from=None, valid_upto=None +): fiscal_year = get_fiscal_year(today(), company="_Test Company") if not frappe.db.exists("Lower Deduction Certificate", certificate_no): frappe.get_doc( @@ -983,8 +1218,8 @@ def create_lower_deduction_certificate(supplier, tax_withholding_category, tax_r "certificate_no": certificate_no, "tax_withholding_category": tax_withholding_category, "fiscal_year": fiscal_year[0], - "valid_from": fiscal_year[1], - "valid_upto": fiscal_year[2], + "valid_from": valid_from or fiscal_year[1], + "valid_upto": valid_upto or fiscal_year[2], "rate": tax_rate, "certificate_limit": limit, } diff --git a/erpnext/accounts/doctype/unreconcile_payment/test_unreconcile_payment.py b/erpnext/accounts/doctype/unreconcile_payment/test_unreconcile_payment.py index 43dfbfaef60..c058dbfa0b8 100644 --- a/erpnext/accounts/doctype/unreconcile_payment/test_unreconcile_payment.py +++ b/erpnext/accounts/doctype/unreconcile_payment/test_unreconcile_payment.py @@ -7,7 +7,9 @@ from frappe.utils import today from erpnext.accounts.doctype.payment_entry.test_payment_entry import create_payment_entry from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice +from erpnext.accounts.party import get_party_account from erpnext.accounts.test.accounts_mixin import AccountsTestMixin +from erpnext.selling.doctype.sales_order.sales_order import make_sales_invoice from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order @@ -260,6 +262,7 @@ class TestUnreconcilePayment(AccountsTestMixin, FrappeTestCase): pe1.paid_from = self.debtors_usd pe1.paid_from_account_currency = "USD" pe1.source_exchange_rate = 75 + pe1.paid_amount = 100 pe1.received_amount = 75 * 100 pe1.save() # Allocate payment against both invoices @@ -277,6 +280,7 @@ class TestUnreconcilePayment(AccountsTestMixin, FrappeTestCase): pe2.paid_from = self.debtors_usd pe2.paid_from_account_currency = "USD" pe2.source_exchange_rate = 75 + pe2.paid_amount = 100 pe2.received_amount = 75 * 100 pe2.save() # Allocate payment against both invoices @@ -360,6 +364,107 @@ class TestUnreconcilePayment(AccountsTestMixin, FrappeTestCase): # Assert 'Advance Paid' so.reload() pe.reload() - self.assertEqual(so.advance_paid, 0) + self.assertEqual(so.advance_paid, 100) self.assertEqual(len(pe.references), 0) self.assertEqual(pe.unallocated_amount, 100) + + pe.cancel() + so.reload() + self.assertEqual(so.advance_paid, 100) + + def test_06_unreconcile_advance_from_payment_entry(self): + self.enable_advance_as_liability() + so1 = self.create_sales_order() + so2 = self.create_sales_order() + + pe = self.create_payment_entry() + # Allocation payment against Sales Order + pe.paid_amount = 260 + pe.append( + "references", + {"reference_doctype": so1.doctype, "reference_name": so1.name, "allocated_amount": 150}, + ) + pe.append( + "references", + {"reference_doctype": so2.doctype, "reference_name": so2.name, "allocated_amount": 110}, + ) + pe.save().submit() + + # Assert 'Advance Paid' + so1.reload() + self.assertEqual(so1.advance_paid, 150) + so2.reload() + self.assertEqual(so2.advance_paid, 110) + + unreconcile = frappe.get_doc( + { + "doctype": "Unreconcile Payment", + "company": self.company, + "voucher_type": pe.doctype, + "voucher_no": pe.name, + } + ) + unreconcile.add_references() + self.assertEqual(len(unreconcile.allocations), 2) + allocations = [(x.reference_name, x.allocated_amount) for x in unreconcile.allocations] + self.assertListEqual(allocations, [(so1.name, 150), (so2.name, 110)]) + # unreconcile so2 + unreconcile.remove(unreconcile.allocations[0]) + unreconcile.save().submit() + + # Assert 'Advance Paid' + so1.reload() + so2.reload() + pe.reload() + self.assertEqual(so1.advance_paid, 150) + self.assertEqual(so2.advance_paid, 110) + self.assertEqual(len(pe.references), 1) + self.assertEqual(pe.unallocated_amount, 110) + + self.disable_advance_as_liability() + + def test_07_adv_from_so_to_invoice(self): + self.enable_advance_as_liability() + so = self.create_sales_order() + pe = self.create_payment_entry() + pe.paid_amount = 1000 + pe.append( + "references", + {"reference_doctype": so.doctype, "reference_name": so.name, "allocated_amount": 1000}, + ) + pe.save().submit() + + # Assert 'Advance Paid' + so.reload() + self.assertEqual(so.advance_paid, 1000) + + si = make_sales_invoice(so.name) + si.insert().submit() + + pr = frappe.get_doc( + { + "doctype": "Payment Reconciliation", + "company": self.company, + "party_type": "Customer", + "party": so.customer, + } + ) + accounts = get_party_account("Customer", so.customer, so.company, True) + pr.receivable_payable_account = accounts[0] + pr.default_advance_account = accounts[1] + pr.get_unreconciled_entries() + self.assertEqual(len(pr.get("invoices")), 1) + self.assertEqual(len(pr.get("payments")), 1) + invoices = [x.as_dict() for x in pr.get("invoices")] + payments = [x.as_dict() for x in pr.get("payments")] + pr.allocate_entries(frappe._dict({"invoices": invoices, "payments": payments})) + pr.reconcile() + + self.assertEqual(len(pr.get("invoices")), 0) + self.assertEqual(len(pr.get("payments")), 0) + + # Assert 'Advance Paid' + so.reload() + self.assertEqual(so.advance_paid, 1000) + + self.disable_advance_as_liability() diff --git a/erpnext/accounts/doctype/unreconcile_payment/unreconcile_payment.json b/erpnext/accounts/doctype/unreconcile_payment/unreconcile_payment.json index f906dc6cec6..f2c2f380fe9 100644 --- a/erpnext/accounts/doctype/unreconcile_payment/unreconcile_payment.json +++ b/erpnext/accounts/doctype/unreconcile_payment/unreconcile_payment.json @@ -1,7 +1,5 @@ { "actions": [], - "allow_rename": 1, - "autoname": "format:UNREC-{#####}", "creation": "2023-08-22 10:26:34.421423", "default_view": "List", "doctype": "DocType", @@ -58,11 +56,10 @@ "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2023-08-28 17:42:50.261377", + "modified": "2024-10-10 12:03:50.022444", "modified_by": "Administrator", "module": "Accounts", "name": "Unreconcile Payment", - "naming_rule": "Expression", "owner": "Administrator", "permissions": [ { diff --git a/erpnext/accounts/general_ledger.py b/erpnext/accounts/general_ledger.py index a4d128a5845..c5ee7400473 100644 --- a/erpnext/accounts/general_ledger.py +++ b/erpnext/accounts/general_ledger.py @@ -7,7 +7,7 @@ import copy import frappe from frappe import _ from frappe.model.meta import get_field_precision -from frappe.utils import cint, flt, formatdate, getdate, now +from frappe.utils import cint, flt, formatdate, get_link_to_form, getdate, now import erpnext from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import ( @@ -35,15 +35,16 @@ def make_gl_entries( make_acc_dimensions_offsetting_entry(gl_map) validate_accounting_period(gl_map) validate_disabled_accounts(gl_map) - gl_map = process_gl_map(gl_map, merge_entries) + gl_map = process_gl_map(gl_map, merge_entries, from_repost=from_repost) if gl_map and len(gl_map) > 1: - create_payment_ledger_entry( - gl_map, - cancel=0, - adv_adj=adv_adj, - update_outstanding=update_outstanding, - from_repost=from_repost, - ) + if gl_map[0].voucher_type != "Period Closing Voucher": + create_payment_ledger_entry( + gl_map, + cancel=0, + adv_adj=adv_adj, + update_outstanding=update_outstanding, + from_repost=from_repost, + ) save_entries(gl_map, adv_adj, update_outstanding, from_repost) # Post GL Map proccess there may no be any GL Entries elif gl_map: @@ -80,6 +81,10 @@ def make_acc_dimensions_offsetting_entry(gl_map): "credit_in_account_currency": credit, "remarks": _("Offsetting for Accounting Dimension") + f" - {dimension.name}", "against_voucher": None, + "account_currency": dimension.account_currency, + # Party Type and Party are restricted to Receivable and Payable accounts + "party_type": None, + "party": None, } ) offsetting_entry["against_voucher_type"] = None @@ -107,6 +112,9 @@ def get_accounting_dimensions_for_offsetting_entry(gl_map, company): accounting_dimensions_to_offset = [] for acc_dimension in acc_dimensions: values = set([entry.get(acc_dimension.fieldname) for entry in gl_map]) + acc_dimension.account_currency = frappe.get_cached_value( + "Account", acc_dimension.offsetting_account, "account_currency" + ) if len(values) > 1: accounting_dimensions_to_offset.append(acc_dimension) @@ -116,17 +124,16 @@ def get_accounting_dimensions_for_offsetting_entry(gl_map, company): def validate_disabled_accounts(gl_map): accounts = [d.account for d in gl_map if d.account] - Account = frappe.qb.DocType("Account") + disabled_accounts = frappe.get_all( + "Account", + filters={"disabled": 1, "is_group": 0, "company": gl_map[0].company}, + fields=["name"], + ) - disabled_accounts = ( - frappe.qb.from_(Account) - .where(Account.name.isin(accounts) & Account.disabled == 1) - .select(Account.name, Account.disabled) - ).run(as_dict=True) - - if disabled_accounts: + used_disabled_accounts = set(accounts).intersection(set([d.name for d in disabled_accounts])) + if used_disabled_accounts: account_list = "
" - account_list += ", ".join([frappe.bold(d.name) for d in disabled_accounts]) + account_list += ", ".join([frappe.bold(d) for d in used_disabled_accounts]) frappe.throw( _("Cannot create accounting entries against disabled accounts: {0}").format(account_list), title=_("Disabled Account Selected"), @@ -163,12 +170,12 @@ def validate_accounting_period(gl_map): ) -def process_gl_map(gl_map, merge_entries=True, precision=None): +def process_gl_map(gl_map, merge_entries=True, precision=None, from_repost=False): if not gl_map: return [] if gl_map[0].voucher_type != "Period Closing Voucher": - gl_map = distribute_gl_based_on_cost_center_allocation(gl_map, precision) + gl_map = distribute_gl_based_on_cost_center_allocation(gl_map, precision, from_repost) if merge_entries: gl_map = merge_similar_entries(gl_map, precision) @@ -178,51 +185,58 @@ def process_gl_map(gl_map, merge_entries=True, precision=None): return gl_map -def distribute_gl_based_on_cost_center_allocation(gl_map, precision=None): - cost_center_allocation = get_cost_center_allocation_data(gl_map[0]["company"], gl_map[0]["posting_date"]) - if not cost_center_allocation: - return gl_map - +def distribute_gl_based_on_cost_center_allocation(gl_map, precision=None, from_repost=False): new_gl_map = [] for d in gl_map: cost_center = d.get("cost_center") # Validate budget against main cost center - validate_expense_against_budget(d, expense_amount=flt(d.debit, precision) - flt(d.credit, precision)) + if not from_repost: + validate_expense_against_budget( + d, expense_amount=flt(d.debit, precision) - flt(d.credit, precision) + ) - if cost_center and cost_center_allocation.get(cost_center): - for sub_cost_center, percentage in cost_center_allocation.get(cost_center, {}).items(): - gle = copy.deepcopy(d) - gle.cost_center = sub_cost_center - for field in ("debit", "credit", "debit_in_account_currency", "credit_in_account_currency"): - gle[field] = flt(flt(d.get(field)) * percentage / 100, precision) - new_gl_map.append(gle) - else: + cost_center_allocation = get_cost_center_allocation_data( + gl_map[0]["company"], gl_map[0]["posting_date"], cost_center + ) + if not cost_center_allocation: new_gl_map.append(d) + continue + + for sub_cost_center, percentage in cost_center_allocation: + gle = copy.deepcopy(d) + gle.cost_center = sub_cost_center + for field in ("debit", "credit", "debit_in_account_currency", "credit_in_account_currency"): + gle[field] = flt(flt(d.get(field)) * percentage / 100, precision) + new_gl_map.append(gle) return new_gl_map -def get_cost_center_allocation_data(company, posting_date): - par = frappe.qb.DocType("Cost Center Allocation") - child = frappe.qb.DocType("Cost Center Allocation Percentage") +def get_cost_center_allocation_data(company, posting_date, cost_center): + cost_center_allocation = frappe.db.get_value( + "Cost Center Allocation", + { + "docstatus": 1, + "company": company, + "valid_from": ("<=", posting_date), + "main_cost_center": cost_center, + }, + pluck="name", + order_by="valid_from desc", + ) - records = ( - frappe.qb.from_(par) - .inner_join(child) - .on(par.name == child.parent) - .select(par.main_cost_center, child.cost_center, child.percentage) - .where(par.docstatus == 1) - .where(par.company == company) - .where(par.valid_from <= posting_date) - .orderby(par.valid_from, order=frappe.qb.desc) - ).run(as_dict=True) + if not cost_center_allocation: + return [] - cc_allocation = frappe._dict() - for d in records: - cc_allocation.setdefault(d.main_cost_center, frappe._dict()).setdefault(d.cost_center, d.percentage) + records = frappe.db.get_all( + "Cost Center Allocation Percentage", + {"parent": cost_center_allocation}, + ["cost_center", "percentage"], + as_list=True, + ) - return cc_allocation + return records def merge_similar_entries(gl_map, precision=None): @@ -231,6 +245,10 @@ def merge_similar_entries(gl_map, precision=None): merge_properties = get_merge_properties(accounting_dimensions) for entry in gl_map: + if entry._skip_merge: + merged_gl_map.append(entry) + continue + entry.merge_key = get_merge_key(entry, merge_properties) # if there is already an entry in this account then just add it # to that entry @@ -308,66 +326,48 @@ def check_if_in_list(gle, gl_map): def toggle_debit_credit_if_negative(gl_map): + debit_credit_field_map = { + "debit": "credit", + "debit_in_account_currency": "credit_in_account_currency", + "debit_in_transaction_currency": "credit_in_transaction_currency", + } + for entry in gl_map: # toggle debit, credit if negative entry - if flt(entry.debit) < 0 and flt(entry.credit) < 0 and flt(entry.debit) == flt(entry.credit): - entry.credit *= -1 - entry.debit *= -1 + for debit_field, credit_field in debit_credit_field_map.items(): + debit = flt(entry.get(debit_field)) + credit = flt(entry.get(credit_field)) - if ( - flt(entry.debit_in_account_currency) < 0 - and flt(entry.credit_in_account_currency) < 0 - and flt(entry.debit_in_account_currency) == flt(entry.credit_in_account_currency) - ): - entry.credit_in_account_currency *= -1 - entry.debit_in_account_currency *= -1 + if debit < 0 and credit < 0 and debit == credit: + debit *= -1 + credit *= -1 - if flt(entry.debit) < 0: - entry.credit = flt(entry.credit) - flt(entry.debit) - entry.debit = 0.0 + if debit < 0: + credit = credit - debit + debit = 0.0 - if flt(entry.debit_in_account_currency) < 0: - entry.credit_in_account_currency = flt(entry.credit_in_account_currency) - flt( - entry.debit_in_account_currency - ) - entry.debit_in_account_currency = 0.0 + if credit < 0: + debit = debit - credit + credit = 0.0 - if flt(entry.credit) < 0: - entry.debit = flt(entry.debit) - flt(entry.credit) - entry.credit = 0.0 + # update net values + # In some scenarios net value needs to be shown in the ledger + # This method updates net values as debit or credit + if entry.post_net_value and debit and credit: + if debit > credit: + debit = debit - credit + credit = 0.0 - if flt(entry.credit_in_account_currency) < 0: - entry.debit_in_account_currency = flt(entry.debit_in_account_currency) - flt( - entry.credit_in_account_currency - ) - entry.credit_in_account_currency = 0.0 + else: + credit = credit - debit + debit = 0.0 - update_net_values(entry) + entry[debit_field] = debit + entry[credit_field] = credit return gl_map -def update_net_values(entry): - # In some scenarios net value needs to be shown in the ledger - # This method updates net values as debit or credit - if entry.post_net_value and entry.debit and entry.credit: - if entry.debit > entry.credit: - entry.debit = entry.debit - entry.credit - entry.debit_in_account_currency = ( - entry.debit_in_account_currency - entry.credit_in_account_currency - ) - entry.credit = 0 - entry.credit_in_account_currency = 0 - else: - entry.credit = entry.credit - entry.debit - entry.credit_in_account_currency = ( - entry.credit_in_account_currency - entry.debit_in_account_currency - ) - - entry.debit = 0 - entry.debit_in_account_currency = 0 - - def save_entries(gl_map, adv_adj, update_outstanding, from_repost=False): if not from_repost: validate_cwip_accounts(gl_map) @@ -437,7 +437,7 @@ def process_debit_credit_difference(gl_map): voucher_no = gl_map[0].voucher_no allowance = get_debit_credit_allowance(voucher_type, precision) - debit_credit_diff = get_debit_credit_difference(gl_map, precision) + debit_credit_diff, trx_cur_debit_credit_diff = get_debit_credit_difference(gl_map, precision) if abs(debit_credit_diff) > allowance: if not ( @@ -448,9 +448,9 @@ def process_debit_credit_difference(gl_map): raise_debit_credit_not_equal_error(debit_credit_diff, voucher_type, voucher_no) elif abs(debit_credit_diff) >= (1.0 / (10**precision)): - make_round_off_gle(gl_map, debit_credit_diff, precision) + make_round_off_gle(gl_map, debit_credit_diff, trx_cur_debit_credit_diff, precision) - debit_credit_diff = get_debit_credit_difference(gl_map, precision) + debit_credit_diff, trx_cur_debit_credit_diff = get_debit_credit_difference(gl_map, precision) if abs(debit_credit_diff) > allowance: if not ( voucher_type == "Journal Entry" @@ -462,14 +462,23 @@ def process_debit_credit_difference(gl_map): def get_debit_credit_difference(gl_map, precision): debit_credit_diff = 0.0 + trx_cur_debit_credit_diff = 0 + for entry in gl_map: entry.debit = flt(entry.debit, precision) entry.credit = flt(entry.credit, precision) debit_credit_diff += entry.debit - entry.credit - debit_credit_diff = flt(debit_credit_diff, precision) + entry.debit_in_transaction_currency = flt(entry.debit_in_transaction_currency, precision) + entry.credit_in_transaction_currency = flt(entry.credit_in_transaction_currency, precision) + trx_cur_debit_credit_diff += ( + entry.debit_in_transaction_currency - entry.credit_in_transaction_currency + ) - return debit_credit_diff + debit_credit_diff = flt(debit_credit_diff, precision) + trx_cur_debit_credit_diff = flt(trx_cur_debit_credit_diff, precision) + + return debit_credit_diff, trx_cur_debit_credit_diff def get_debit_credit_allowance(voucher_type, precision): @@ -489,16 +498,36 @@ def raise_debit_credit_not_equal_error(debit_credit_diff, voucher_type, voucher_ ) -def make_round_off_gle(gl_map, debit_credit_diff, precision): - round_off_account, round_off_cost_center = get_round_off_account_and_cost_center( +def has_opening_entries(gl_map: list) -> bool: + for x in gl_map: + if x.is_opening == "Yes": + return True + return False + + +def make_round_off_gle(gl_map, debit_credit_diff, trx_cur_debit_credit_diff, precision): + round_off_account, round_off_cost_center, round_off_for_opening = get_round_off_account_and_cost_center( gl_map[0].company, gl_map[0].voucher_type, gl_map[0].voucher_no ) round_off_gle = frappe._dict() round_off_account_exists = False + has_opening_entry = has_opening_entries(gl_map) + + if has_opening_entry: + if not round_off_for_opening: + frappe.throw( + _("Please set '{0}' in Company: {1}").format( + frappe.bold("Round Off for Opening"), get_link_to_form("Company", gl_map[0].company) + ) + ) + + account = round_off_for_opening + else: + account = round_off_account if gl_map[0].voucher_type != "Period Closing Voucher": for d in gl_map: - if d.account == round_off_account: + if d.account == account: round_off_gle = d if d.debit: debit_credit_diff -= flt(d.debit) - flt(d.credit) @@ -516,11 +545,17 @@ def make_round_off_gle(gl_map, debit_credit_diff, precision): round_off_gle.update( { - "account": round_off_account, + "account": account, "debit_in_account_currency": abs(debit_credit_diff) if debit_credit_diff < 0 else 0, "credit_in_account_currency": debit_credit_diff if debit_credit_diff > 0 else 0, "debit": abs(debit_credit_diff) if debit_credit_diff < 0 else 0, "credit": debit_credit_diff if debit_credit_diff > 0 else 0, + "debit_in_transaction_currency": abs(trx_cur_debit_credit_diff) + if trx_cur_debit_credit_diff < 0 + else 0, + "credit_in_transaction_currency": trx_cur_debit_credit_diff + if trx_cur_debit_credit_diff > 0 + else 0, "cost_center": round_off_cost_center, "party_type": None, "party": None, @@ -530,6 +565,9 @@ def make_round_off_gle(gl_map, debit_credit_diff, precision): } ) + if has_opening_entry: + round_off_gle.update({"is_opening": "Yes"}) + update_accounting_dimensions(round_off_gle) if not round_off_account_exists: gl_map.append(round_off_gle) @@ -554,9 +592,9 @@ def update_accounting_dimensions(round_off_gle): def get_round_off_account_and_cost_center(company, voucher_type, voucher_no, use_company_default=False): - round_off_account, round_off_cost_center = frappe.get_cached_value( - "Company", company, ["round_off_account", "round_off_cost_center"] - ) or [None, None] + round_off_account, round_off_cost_center, round_off_for_opening = frappe.get_cached_value( + "Company", company, ["round_off_account", "round_off_cost_center", "round_off_for_opening"] + ) or [None, None, None] # Use expense account as fallback if not round_off_account: @@ -571,12 +609,20 @@ def get_round_off_account_and_cost_center(company, voucher_type, voucher_no, use round_off_cost_center = parent_cost_center if not round_off_account: - frappe.throw(_("Please mention Round Off Account in Company")) + frappe.throw( + _("Please mention '{0}' in Company: {1}").format( + frappe.bold("Round Off Account"), get_link_to_form("Company", company) + ) + ) if not round_off_cost_center: - frappe.throw(_("Please mention Round Off Cost Center in Company")) + frappe.throw( + _("Please mention '{0}' in Company: {1}").format( + frappe.bold("Round Off Cost Center"), get_link_to_form("Company", company) + ) + ) - return round_off_account, round_off_cost_center + return round_off_account, round_off_cost_center, round_off_for_opening def make_reverse_gl_entries( @@ -656,11 +702,15 @@ def make_reverse_gl_entries( debit_in_account_currency = new_gle.get("debit_in_account_currency", 0) credit_in_account_currency = new_gle.get("credit_in_account_currency", 0) + debit_in_transaction_currency = new_gle.get("debit_in_transaction_currency", 0) + credit_in_transaction_currency = new_gle.get("credit_in_transaction_currency", 0) new_gle["debit"] = credit new_gle["credit"] = debit new_gle["debit_in_account_currency"] = credit_in_account_currency new_gle["credit_in_account_currency"] = debit_in_account_currency + new_gle["debit_in_transaction_currency"] = credit_in_transaction_currency + new_gle["credit_in_transaction_currency"] = debit_in_transaction_currency new_gle["remarks"] = "On cancellation of " + new_gle["voucher_no"] new_gle["is_cancelled"] = 1 @@ -705,7 +755,7 @@ def validate_against_pcv(is_opening, posting_date, company): ) last_pcv_date = frappe.db.get_value( - "Period Closing Voucher", {"docstatus": 1, "company": company}, "max(posting_date)" + "Period Closing Voucher", {"docstatus": 1, "company": company}, "max(period_end_date)" ) if last_pcv_date and getdate(posting_date) <= getdate(last_pcv_date): diff --git a/erpnext/accounts/number_card/total_incoming_bills/total_incoming_bills.json b/erpnext/accounts/number_card/total_incoming_bills/total_incoming_bills.json index 283e187b542..88c7cae3f69 100644 --- a/erpnext/accounts/number_card/total_incoming_bills/total_incoming_bills.json +++ b/erpnext/accounts/number_card/total_incoming_bills/total_incoming_bills.json @@ -4,13 +4,14 @@ "docstatus": 0, "doctype": "Number Card", "document_type": "Purchase Invoice", + "dynamic_filters_json": "[[\"Purchase Invoice\",\"company\",\"=\",\" frappe.defaults.get_user_default(\\\"Company\\\")\"]]", "filters_json": "[[\"Purchase Invoice\",\"docstatus\",\"=\",\"1\",false],[\"Purchase Invoice\",\"posting_date\",\"Timespan\",\"this year\",false]]", "function": "Sum", "idx": 0, "is_public": 1, "is_standard": 1, "label": "Total Incoming Bills", - "modified": "2020-07-22 13:06:46.045344", + "modified": "2024-11-20 19:08:37.043777", "modified_by": "Administrator", "module": "Accounts", "name": "Total Incoming Bills", diff --git a/erpnext/accounts/number_card/total_incoming_payment/total_incoming_payment.json b/erpnext/accounts/number_card/total_incoming_payment/total_incoming_payment.json index bc23c15b6a9..a53b222ed7d 100644 --- a/erpnext/accounts/number_card/total_incoming_payment/total_incoming_payment.json +++ b/erpnext/accounts/number_card/total_incoming_payment/total_incoming_payment.json @@ -4,6 +4,7 @@ "docstatus": 0, "doctype": "Number Card", "document_type": "Payment Entry", + "dynamic_filters_json": "[[\"Payment Entry\",\"company\",\"=\",\"frappe.defaults.get_user_default(\\\"Company\\\")\"]]", "filters_json": "[[\"Payment Entry\",\"docstatus\",\"=\",\"1\",false],[\"Payment Entry\",\"posting_date\",\"Timespan\",\"this year\",false],[\"Payment Entry\",\"payment_type\",\"=\",\"Receive\",false]]", "function": "Sum", "idx": 0, diff --git a/erpnext/accounts/number_card/total_outgoing_bills/total_outgoing_bills.json b/erpnext/accounts/number_card/total_outgoing_bills/total_outgoing_bills.json index fe916182102..092defd94bd 100644 --- a/erpnext/accounts/number_card/total_outgoing_bills/total_outgoing_bills.json +++ b/erpnext/accounts/number_card/total_outgoing_bills/total_outgoing_bills.json @@ -4,6 +4,7 @@ "docstatus": 0, "doctype": "Number Card", "document_type": "Sales Invoice", + "dynamic_filters_json": "[[\"Sales Invoice\",\"company\",\"=\",\"frappe.defaults.get_user_default(\\\"Company\\\")\"]]", "filters_json": "[[\"Sales Invoice\",\"docstatus\",\"=\",\"1\",false],[\"Sales Invoice\",\"posting_date\",\"Timespan\",\"this year\",false]]", "function": "Sum", "idx": 0, diff --git a/erpnext/accounts/number_card/total_outgoing_payment/total_outgoing_payment.json b/erpnext/accounts/number_card/total_outgoing_payment/total_outgoing_payment.json index d27be883500..d60f30f7c9a 100644 --- a/erpnext/accounts/number_card/total_outgoing_payment/total_outgoing_payment.json +++ b/erpnext/accounts/number_card/total_outgoing_payment/total_outgoing_payment.json @@ -4,6 +4,7 @@ "docstatus": 0, "doctype": "Number Card", "document_type": "Payment Entry", + "dynamic_filters_json": "[[\"Payment Entry\",\"company\",\"=\",\"frappe.defaults.get_user_default(\\\"Company\\\")\"]]", "filters_json": "[[\"Payment Entry\",\"docstatus\",\"=\",\"1\",false],[\"Payment Entry\",\"posting_date\",\"Timespan\",\"this year\",false],[\"Payment Entry\",\"payment_type\",\"=\",\"Pay\",false]]", "function": "Sum", "idx": 0, diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py index e6015e081d6..5ca50b8d7c6 100644 --- a/erpnext/accounts/party.py +++ b/erpnext/accounts/party.py @@ -29,6 +29,12 @@ from erpnext.accounts.utils import get_fiscal_year from erpnext.exceptions import InvalidAccountCurrency, PartyDisabled, PartyFrozen from erpnext.utilities.regional import temporary_flag +try: + from frappe.contacts.doctype.address.address import render_address as _render_address +except ImportError: + # Older frappe versions where this function is not available + from frappe.contacts.doctype.address.address import get_address_display as _render_address + PURCHASE_TRANSACTION_TYPES = { "Supplier Quotation", "Purchase Order", @@ -68,7 +74,7 @@ def get_party_details( pos_profile=None, ): if not party: - return {} + return frappe._dict() if not frappe.db.exists(party_type, party): frappe.throw(_("{0}: {1} does not exists").format(party_type, party)) return _get_party_details( @@ -273,35 +279,56 @@ def get_regional_address_details(party_details, doctype, company): pass -def set_contact_details(party_details, party, party_type): - party_details.contact_person = get_default_contact(party_type, party.name) +def complete_contact_details(party_details): + contact_details = frappe._dict() - if not party_details.contact_person: - party_details.update( - { - "contact_person": None, - "contact_display": None, - "contact_email": None, - "contact_mobile": None, - "contact_phone": None, - "contact_designation": None, - "contact_department": None, - } + if party_details.party_type == "Employee": + contact_details = frappe.db.get_value( + "Employee", + party_details.party, + [ + "employee_name as contact_display", + "prefered_email as contact_email", + "cell_number as contact_mobile", + "designation as contact_designation", + "department as contact_department", + ], + as_dict=True, + ) + + contact_details.update({"contact_person": None, "contact_phone": None}) + elif party_details.contact_person: + contact_details = frappe.db.get_value( + "Contact", + party_details.contact_person, + [ + "name as contact_person", + "full_name as contact_display", + "email_id as contact_email", + "mobile_no as contact_mobile", + "phone as contact_phone", + "designation as contact_designation", + "department as contact_department", + ], + as_dict=True, ) else: - fields = [ - "name as contact_person", - "full_name as contact_display", - "email_id as contact_email", - "mobile_no as contact_mobile", - "phone as contact_phone", - "designation as contact_designation", - "department as contact_department", - ] + contact_details = { + "contact_person": None, + "contact_display": None, + "contact_email": None, + "contact_mobile": None, + "contact_phone": None, + "contact_designation": None, + "contact_department": None, + } - contact_details = frappe.db.get_value("Contact", party_details.contact_person, fields, as_dict=True) + party_details.update(contact_details) - party_details.update(contact_details) + +def set_contact_details(party_details, party, party_type): + party_details.contact_person = get_default_contact(party_type, party.name) + complete_contact_details(party_details) def set_other_values(party_details, party, party_type): @@ -566,12 +593,13 @@ def validate_party_accounts(doc): @frappe.whitelist() -def get_due_date(posting_date, party_type, party, company=None, bill_date=None): +def get_due_date(posting_date, party_type, party, company=None, bill_date=None, template_name=None): """Get due date from `Payment Terms Template`""" due_date = None if (bill_date or posting_date) and party: due_date = bill_date or posting_date - template_name = get_payment_terms_template(party, party_type, company) + if not template_name: + template_name = get_payment_terms_template(party, party_type, company) if template_name: due_date = get_due_date_from_template(template_name, posting_date, bill_date).strftime("%Y-%m-%d") @@ -670,7 +698,7 @@ def set_taxes( ): from erpnext.accounts.doctype.tax_rule.tax_rule import get_party_details, get_tax_template - args = {party_type.lower(): party, "company": company} + args = {frappe.scrub(party_type): party, "company": company} if tax_category: args["tax_category"] = tax_category @@ -690,10 +718,10 @@ def set_taxes( else: args.update(get_party_details(party, party_type)) - if party_type in ("Customer", "Lead", "Prospect"): + if party_type in ("Customer", "Lead", "Prospect", "CRM Deal"): args.update({"tax_type": "Sales"}) - if party_type in ["Lead", "Prospect"]: + if party_type in ["Lead", "Prospect", "CRM Deal"]: args["customer"] = None del args[frappe.scrub(party_type)] else: @@ -753,6 +781,20 @@ def validate_party_frozen_disabled(party_type, party_name): frappe.msgprint(_("{0} {1} is not active").format(party_type, party_name), alert=True) +def validate_account_party_type(self): + if self.is_cancelled: + return + + if self.party_type and self.party: + account_type = frappe.get_cached_value("Account", self.account, "account_type") + if account_type and (account_type not in ["Receivable", "Payable", "Equity"]): + frappe.throw( + _("Party Type and Party can only be set for Receivable / Payable account

{0}").format( + self.account + ) + ) + + def get_dashboard_info(party_type, party, loyalty_program=None): current_fiscal_year = get_fiscal_year(nowdate(), as_dict=True) @@ -881,16 +923,17 @@ def get_party_shipping_address(doctype: str, name: str) -> str | None: def get_partywise_advanced_payment_amount( party_type, posting_date=None, future_payment=0, company=None, party=None ): + account_type = frappe.get_cached_value("Party Type", party_type, "account_type") + ple = frappe.qb.DocType("Payment Ledger Entry") + acc = frappe.qb.DocType("Account") + query = ( frappe.qb.from_(ple) - .select(ple.party, Abs(Sum(ple.amount).as_("amount"))) - .where( - (ple.party_type.isin(party_type)) - & (ple.amount < 0) - & (ple.against_voucher_no == ple.voucher_no) - & (ple.delinked == 0) - ) + .inner_join(acc) + .on(ple.account == acc.name) + .select(ple.party) + .where((ple.party_type.isin(party_type)) & (acc.account_type == account_type) & (ple.delinked == 0)) .groupby(ple.party) ) @@ -909,9 +952,32 @@ def get_partywise_advanced_payment_amount( if invoice_doctypes := frappe.get_hooks("invoice_doctypes"): query = query.where(ple.voucher_type.notin(invoice_doctypes)) - data = query.run() - if data: - return frappe._dict(data) + # Get advance amount from Receivable / Payable Account + party_ledger = query.select(Abs(Sum(ple.amount).as_("amount"))) + party_ledger = party_ledger.where(ple.amount < 0) + party_ledger = party_ledger.where(ple.against_voucher_no == ple.voucher_no) + party_ledger = party_ledger.where( + acc.root_type == ("Liability" if account_type == "Payable" else "Asset") + ) + + data = party_ledger.run() + data = frappe._dict(data or {}) + + # Get advance amount from Advance Account + advance_ledger = query.select(Sum(ple.amount).as_("amount"), ple.account) + advance_ledger = advance_ledger.where( + acc.root_type == ("Asset" if account_type == "Payable" else "Liability") + ) + advance_ledger = advance_ledger.groupby(ple.account) + advance_ledger = advance_ledger.having(Sum(ple.amount) < 0) + + advance_data = advance_ledger.run() + + for row in advance_data: + data.setdefault(row[0], 0) + data[row[0]] += abs(row[1]) + + return data def get_default_contact(doctype: str, name: str) -> str | None: @@ -958,10 +1024,4 @@ def add_party_account(party_type, party, company, account): def render_address(address, check_permissions=True): - try: - from frappe.contacts.doctype.address.address import render_address as _render - except ImportError: - # Older frappe versions where this function is not available - from frappe.contacts.doctype.address.address import get_address_display as _render - - return frappe.call(_render, address, check_permissions=check_permissions) + return frappe.call(_render_address, address, check_permissions=check_permissions) diff --git a/erpnext/accounts/print_format/journal_auditing_voucher/journal_auditing_voucher.html b/erpnext/accounts/print_format/journal_auditing_voucher/journal_auditing_voucher.html index c1c611ee3a3..8a6968ee373 100644 --- a/erpnext/accounts/print_format/journal_auditing_voucher/journal_auditing_voucher.html +++ b/erpnext/accounts/print_format/journal_auditing_voucher/journal_auditing_voucher.html @@ -44,7 +44,7 @@ {% endfor %} Total (debit) - {{ gl | sum(attribute='debit') }} + {{ gl | sum(attribute='debit') | round(2) }} Credit @@ -61,7 +61,7 @@ {% endfor %} Total (credit) - {{ gl | sum(attribute='credit') }} + {{ gl | sum(attribute='credit') | round(2) }} Narration: {{ gl[0].remarks }} diff --git a/erpnext/accounts/print_format/sales_invoice_print/__init__.py b/erpnext/accounts/print_format/sales_invoice_print/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/erpnext/accounts/print_format/sales_invoice_print/sales_invoice_print.html b/erpnext/accounts/print_format/sales_invoice_print/sales_invoice_print.html new file mode 100644 index 00000000000..2204e3559b1 --- /dev/null +++ b/erpnext/accounts/print_format/sales_invoice_print/sales_invoice_print.html @@ -0,0 +1,161 @@ +{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%} + {% if letter_head and not no_letterhead %} +
{{ letter_head }}
+ {% endif %} + {% if print_heading_template %} + {{ frappe.render_template(print_heading_template, {"doc":doc}) }} + {% else %} + {% endif %} + {%- if doc.meta.is_submittable and doc.docstatus==2-%} +
+

{{ _("CANCELLED") }}

+
+ {%- endif -%} +{%- endmacro -%} +{% for page in layout %} +
+
+ {{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }} +
+ + + {% if print_settings.repeat_header_footer %} + + {% endif %} + +
+
+
{{ doc.customer }}
+
+ {{ doc.address_display }} +
+
+ {{ _("Contact: ")+doc.contact_display if doc.contact_display else '' }} +
+
+ {{ _("Mobile: ")+doc.contact_mobile if doc.contact_mobile else '' }} +
+
+
+
+
+
+
{{ doc.name }}
+
+
+
+
{{ frappe.utils.format_date(doc.posting_date) }}
+
+
+
+
{{ frappe.utils.format_date(doc.due_date) }}
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + {% for item in doc.items %} + + + + + + + + {% endfor %} +
{{ _("Sr") }}{{ _("Details") }}{{ _("Qty") }}{{ _("Rate") }}{{ _("Amount") }}
{{ loop.index }} + {{ item.item_code }}: {{ item.item_name }} + {% if (item.description != item.item_name) %} +
{{ item.description }} + {% endif %} +
+ {{ item.get_formatted("qty", 0) }} + {{ item.get_formatted("uom", 0) }} + {{ item.get_formatted("net_rate", doc) }}{{ item.get_formatted("net_amount", doc) }}
+ +
+ +
+
+ + {{ doc.in_words }} +
+
+ + {{ doc.status }} +
+
+
+
+
{{ _("Sub Total") }}
+
{{ doc.get_formatted("net_total", doc) }}
+
+
+ {% for d in doc.taxes %} + {% if d.tax_amount %} +
+
{{ _(d.description) }}
+
{{ d.get_formatted("tax_amount") }}
+
+ {% endif %} + {% endfor %} +
+
+
{{ _("Total") }}
+
{{ doc.get_formatted("grand_total", doc) }}
+
+
+ +
+
+ + +
+
+
+
+
{{ doc.terms if doc.terms else '' }}
+
+
+
+
+{% endfor %} diff --git a/erpnext/accounts/print_format/sales_invoice_print/sales_invoice_print.json b/erpnext/accounts/print_format/sales_invoice_print/sales_invoice_print.json new file mode 100644 index 00000000000..d4acf5fb36e --- /dev/null +++ b/erpnext/accounts/print_format/sales_invoice_print/sales_invoice_print.json @@ -0,0 +1,32 @@ +{ + "absolute_value": 0, + "align_labels_right": 0, + "creation": "2025-01-22 16:23:51.012200", + "css": "", + "custom_format": 0, + "default_print_language": "en", + "disabled": 0, + "doc_type": "Sales Invoice", + "docstatus": 0, + "doctype": "Print Format", + "font": "", + "font_size": 14, + "idx": 0, + "line_breaks": 0, + "margin_bottom": 0.0, + "margin_left": 0.0, + "margin_right": 0.0, + "margin_top": 0.0, + "modified": "2025-01-22 16:23:51.012200", + "modified_by": "Administrator", + "module": "Accounts", + "name": "Sales Invoice Print", + "owner": "Administrator", + "page_number": "Hide", + "print_format_builder": 0, + "print_format_builder_beta": 0, + "print_format_type": "Jinja", + "raw_printing": 0, + "show_section_headings": 0, + "standard": "Yes" +} \ No newline at end of file diff --git a/erpnext/accounts/report/accounts_payable/accounts_payable.js b/erpnext/accounts/report/accounts_payable/accounts_payable.js index 86463f1f1f2..56550ac1fd4 100644 --- a/erpnext/accounts/report/accounts_payable/accounts_payable.js +++ b/erpnext/accounts/report/accounts_payable/accounts_payable.js @@ -61,32 +61,10 @@ frappe.query_reports["Accounts Payable"] = { default: "Due Date", }, { - fieldname: "range1", - label: __("Ageing Range 1"), - fieldtype: "Int", - default: "30", - reqd: 1, - }, - { - fieldname: "range2", - label: __("Ageing Range 2"), - fieldtype: "Int", - default: "60", - reqd: 1, - }, - { - fieldname: "range3", - label: __("Ageing Range 3"), - fieldtype: "Int", - default: "90", - reqd: 1, - }, - { - fieldname: "range4", - label: __("Ageing Range 4"), - fieldtype: "Int", - default: "120", - reqd: 1, + fieldname: "range", + label: __("Ageing Range"), + fieldtype: "Data", + default: "30, 60, 90, 120", }, { fieldname: "payment_terms_template", @@ -111,6 +89,7 @@ frappe.query_reports["Accounts Payable"] = { fieldname: "party", label: __("Party"), fieldtype: "MultiSelectList", + options: "party_type", get_data: function (txt) { if (!frappe.query_report.filters) return; @@ -162,6 +141,11 @@ frappe.query_reports["Accounts Payable"] = { label: __("In Party Currency"), fieldtype: "Check", }, + { + fieldname: "handle_employee_advances", + label: __("Handle Employee Advances"), + fieldtype: "Check", + }, ], formatter: function (value, row, column, data, default_formatter) { @@ -180,7 +164,7 @@ frappe.query_reports["Accounts Payable"] = { }, }; -erpnext.utils.add_dimensions("Accounts Payable", 9); +erpnext.utils.add_dimensions("Accounts Payable", 10); function get_party_type_options() { let options = []; diff --git a/erpnext/accounts/report/accounts_payable/test_accounts_payable.py b/erpnext/accounts/report/accounts_payable/test_accounts_payable.py index 43856bf569f..8971dc3d37b 100644 --- a/erpnext/accounts/report/accounts_payable/test_accounts_payable.py +++ b/erpnext/accounts/report/accounts_payable/test_accounts_payable.py @@ -30,10 +30,7 @@ class TestAccountsPayable(AccountsTestMixin, FrappeTestCase): "party_type": "Supplier", "party": [self.supplier], "report_date": today(), - "range1": 30, - "range2": 60, - "range3": 90, - "range4": 120, + "range": "30, 60, 90, 120", "in_party_currency": 1, } diff --git a/erpnext/accounts/report/accounts_payable_summary/accounts_payable_summary.js b/erpnext/accounts/report/accounts_payable_summary/accounts_payable_summary.js index 92ea9e8f598..e46af2657b5 100644 --- a/erpnext/accounts/report/accounts_payable_summary/accounts_payable_summary.js +++ b/erpnext/accounts/report/accounts_payable_summary/accounts_payable_summary.js @@ -24,32 +24,10 @@ frappe.query_reports["Accounts Payable Summary"] = { default: "Due Date", }, { - fieldname: "range1", - label: __("Ageing Range 1"), - fieldtype: "Int", - default: "30", - reqd: 1, - }, - { - fieldname: "range2", - label: __("Ageing Range 2"), - fieldtype: "Int", - default: "60", - reqd: 1, - }, - { - fieldname: "range3", - label: __("Ageing Range 3"), - fieldtype: "Int", - default: "90", - reqd: 1, - }, - { - fieldname: "range4", - label: __("Ageing Range 4"), - fieldtype: "Int", - default: "120", - reqd: 1, + fieldname: "range", + label: __("Ageing Range"), + fieldtype: "Data", + default: "30, 60, 90, 120", }, { fieldname: "finance_book", @@ -88,6 +66,7 @@ frappe.query_reports["Accounts Payable Summary"] = { fieldname: "party", label: __("Party"), fieldtype: "MultiSelectList", + options: "party_type", get_data: function (txt) { if (!frappe.query_report.filters) return; diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.html b/erpnext/accounts/report/accounts_receivable/accounts_receivable.html index 7d8d33c46b4..9cae94ff8b4 100644 --- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.html @@ -282,4 +282,4 @@ {% } %} -

{{ __("Printed On ") }}{%= frappe.datetime.str_to_user(frappe.datetime.get_datetime_as_string()) %}

\ No newline at end of file +

{%= __("Printed on {0}", [frappe.datetime.str_to_user(frappe.datetime.get_datetime_as_string())]) %}

diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.js b/erpnext/accounts/report/accounts_receivable/accounts_receivable.js index 7e795fbe3c1..01f5a205cea 100644 --- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.js +++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.js @@ -56,6 +56,7 @@ frappe.query_reports["Accounts Receivable"] = { fieldname: "party", label: __("Party"), fieldtype: "MultiSelectList", + options: "party_type", get_data: function (txt) { if (!frappe.query_report.filters) return; @@ -89,32 +90,10 @@ frappe.query_reports["Accounts Receivable"] = { default: "Due Date", }, { - fieldname: "range1", - label: __("Ageing Range 1"), - fieldtype: "Int", - default: "30", - reqd: 1, - }, - { - fieldname: "range2", - label: __("Ageing Range 2"), - fieldtype: "Int", - default: "60", - reqd: 1, - }, - { - fieldname: "range3", - label: __("Ageing Range 3"), - fieldtype: "Int", - default: "90", - reqd: 1, - }, - { - fieldname: "range4", - label: __("Ageing Range 4"), - fieldtype: "Int", - default: "120", - reqd: 1, + fieldname: "range", + label: __("Ageing Range"), + fieldtype: "Data", + default: "30, 60, 90, 120", }, { fieldname: "customer_group", diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py index f8511d2f497..9625a86f05f 100644 --- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py +++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py @@ -50,6 +50,11 @@ class ReceivablePayableReport: getdate(nowdate()) if self.filters.report_date > getdate(nowdate()) else self.filters.report_date ) + if not self.filters.range: + self.filters.range = "30, 60, 90, 120" + self.ranges = [num.strip() for num in self.filters.range.split(",") if num.strip().isdigit()] + self.range_numbers = [num for num in range(1, len(self.ranges) + 2)] + def run(self, args): self.filters.update(args) self.set_defaults() @@ -112,6 +117,25 @@ class ReceivablePayableReport: self.build_data() + def build_voucher_dict(self, ple): + return frappe._dict( + voucher_type=ple.voucher_type, + voucher_no=ple.voucher_no, + party=ple.party, + party_account=ple.account, + posting_date=ple.posting_date, + account_currency=ple.account_currency, + remarks=ple.remarks, + invoiced=0.0, + paid=0.0, + credit_note=0.0, + outstanding=0.0, + invoiced_in_account_currency=0.0, + paid_in_account_currency=0.0, + credit_note_in_account_currency=0.0, + outstanding_in_account_currency=0.0, + ) + def init_voucher_balance(self): # build all keys, since we want to exclude vouchers beyond the report date for ple in self.ple_entries: @@ -123,24 +147,11 @@ class ReceivablePayableReport: key = (ple.account, ple.voucher_type, ple.voucher_no, ple.party) if key not in self.voucher_balance: - self.voucher_balance[key] = frappe._dict( - voucher_type=ple.voucher_type, - voucher_no=ple.voucher_no, - party=ple.party, - party_account=ple.account, - posting_date=ple.posting_date, - account_currency=ple.account_currency, - remarks=ple.remarks, - invoiced=0.0, - paid=0.0, - credit_note=0.0, - outstanding=0.0, - invoiced_in_account_currency=0.0, - paid_in_account_currency=0.0, - credit_note_in_account_currency=0.0, - outstanding_in_account_currency=0.0, - cost_center=ple.cost_center, - ) + self.voucher_balance[key] = self.build_voucher_dict(ple) + + if ple.voucher_type == ple.against_voucher_type and ple.voucher_no == ple.against_voucher_no: + self.voucher_balance[key].cost_center = ple.cost_center + self.get_invoices(ple) if self.filters.get("group_by_party"): @@ -208,6 +219,18 @@ class ReceivablePayableReport: row = self.voucher_balance.get(key) + # Build and use a separate row for Employee Advances. + # This allows Payments or Journals made against Emp Advance to be processed. + if ( + not row + and ple.against_voucher_type == "Employee Advance" + and self.filters.handle_employee_advances + ): + _d = self.build_voucher_dict(ple) + _d.voucher_type = ple.against_voucher_type + _d.voucher_no = ple.against_voucher_no + row = self.voucher_balance[key] = _d + if not row: # no invoice, this is an invoice / stand-alone payment / credit note if self.filters.get("ignore_accounts"): @@ -254,9 +277,6 @@ class ReceivablePayableReport: row.paid -= amount row.paid_in_account_currency -= amount_in_account_currency - if not row.cost_center and ple.cost_center: - row.cost_center = str(ple.cost_center) - def update_sub_total_row(self, row, party): total_row = self.total_row_map.get(party) @@ -289,8 +309,8 @@ class ReceivablePayableReport: must_consider = False if self.filters.get("for_revaluation_journals"): - if (abs(row.outstanding) >= 0.0 / 10**self.currency_precision) or ( - abs(row.outstanding_in_account_currency) >= 0.0 / 10**self.currency_precision + if (abs(row.outstanding) >= 1.0 / 10**self.currency_precision) or ( + abs(row.outstanding_in_account_currency) >= 1.0 / 10**self.currency_precision ): must_consider = True else: @@ -364,6 +384,7 @@ class ReceivablePayableReport: self.delivery_notes = frappe._dict() # delivery note link inside sales invoice + # nosemgrep si_against_dn = frappe.db.sql( """ select parent, delivery_note @@ -379,6 +400,7 @@ class ReceivablePayableReport: if d.delivery_note: self.delivery_notes.setdefault(d.parent, set()).add(d.delivery_note) + # nosemgrep dn_against_si = frappe.db.sql( """ select distinct parent, against_sales_invoice @@ -396,13 +418,16 @@ class ReceivablePayableReport: def get_invoice_details(self): self.invoice_details = frappe._dict() if self.account_type == "Receivable": + # nosemgrep si_list = frappe.db.sql( """ select name, due_date, po_no from `tabSales Invoice` where posting_date <= %s + and company = %s + and docstatus = 1 """, - self.filters.report_date, + (self.filters.report_date, self.filters.company), as_dict=1, ) for d in si_list: @@ -410,6 +435,7 @@ class ReceivablePayableReport: # Get Sales Team if self.filters.show_sales_person: + # nosemgrep sales_team = frappe.db.sql( """ select parent, sales_person @@ -424,25 +450,33 @@ class ReceivablePayableReport: ) if self.account_type == "Payable": + # nosemgrep for pi in frappe.db.sql( """ select name, due_date, bill_no, bill_date from `tabPurchase Invoice` - where posting_date <= %s + where + posting_date <= %s + and company = %s + and docstatus = 1 """, - self.filters.report_date, + (self.filters.report_date, self.filters.company), as_dict=1, ): self.invoice_details.setdefault(pi.name, pi) # Invoices booked via Journal Entries + # nosemgrep journal_entries = frappe.db.sql( """ select name, due_date, bill_no, bill_date from `tabJournal Entry` - where posting_date <= %s + where + posting_date <= %s + and company = %s + and docstatus = 1 """, - self.filters.report_date, + (self.filters.report_date, self.filters.company), as_dict=1, ) @@ -451,6 +485,8 @@ class ReceivablePayableReport: self.invoice_details.setdefault(je.name, je) def set_party_details(self, row): + if not row.party: + return # customer / supplier name party_details = self.get_party_details(row.party) or {} row.update(party_details) @@ -475,16 +511,18 @@ class ReceivablePayableReport: def get_payment_terms(self, row): # build payment_terms for row + # nosemgrep payment_terms_details = frappe.db.sql( f""" select si.name, si.party_account_currency, si.currency, si.conversion_rate, si.total_advance, ps.due_date, ps.payment_term, ps.payment_amount, ps.base_payment_amount, - ps.description, ps.paid_amount, ps.discounted_amount + ps.description, ps.paid_amount, ps.base_paid_amount, ps.discounted_amount from `tab{row.voucher_type}` si, `tabPayment Schedule` ps where - si.name = ps.parent and - si.name = %s + si.name = ps.parent and ps.parenttype = '{row.voucher_type}' and + si.name = %s and + si.is_return = 0 order by ps.paid_amount desc, due_date """, row.voucher_no, @@ -502,22 +540,24 @@ class ReceivablePayableReport: # Deduct that from paid amount pre allocation row.paid -= flt(payment_terms_details[0].total_advance) + company_currency = frappe.get_value("Company", self.filters.get("company"), "default_currency") + # If single payment terms, no need to split the row if len(payment_terms_details) == 1 and payment_terms_details[0].payment_term: - self.append_payment_term(row, payment_terms_details[0], original_row) + self.append_payment_term(row, payment_terms_details[0], original_row, company_currency) return for d in payment_terms_details: term = frappe._dict(original_row) - self.append_payment_term(row, d, term) + self.append_payment_term(row, d, term, company_currency) - def append_payment_term(self, row, d, term): - if ( - self.filters.get("customer") or self.filters.get("supplier") - ) and d.currency == d.party_account_currency: + def append_payment_term(self, row, d, term, company_currency): + invoiced = d.base_payment_amount + paid_amount = d.base_paid_amount + + if company_currency == d.party_account_currency or self.filters.get("in_party_currency"): invoiced = d.payment_amount - else: - invoiced = d.base_payment_amount + paid_amount = d.paid_amount row.payment_terms.append( term.update( @@ -526,15 +566,15 @@ class ReceivablePayableReport: "invoiced": invoiced, "invoice_grand_total": row.invoiced, "payment_term": d.description or d.payment_term, - "paid": d.paid_amount + d.discounted_amount, + "paid": paid_amount + d.discounted_amount, "credit_note": 0.0, - "outstanding": invoiced - d.paid_amount - d.discounted_amount, + "outstanding": invoiced - paid_amount - d.discounted_amount, } ) ) - if d.paid_amount: - row["paid"] -= d.paid_amount + d.discounted_amount + if paid_amount: + row["paid"] -= paid_amount + d.discounted_amount def allocate_closing_to_term(self, row, term, key): if row[key]: @@ -687,16 +727,19 @@ class ReceivablePayableReport: def get_return_entries(self): doctype = "Sales Invoice" if self.account_type == "Receivable" else "Purchase Invoice" filters = { + "posting_date": ("<=", self.filters.report_date), "is_return": 1, "docstatus": 1, "company": self.filters.company, "update_outstanding_for_self": 0, } + or_filters = {} - for party_type in self.party_type: + if party_type := self.filters.party_type: party_field = scrub(party_type) - if self.filters.get(party_field): - or_filters.update({party_field: self.filters.get(party_field)}) + if parties := self.filters.get("party"): + or_filters.update({party_field: ["in", parties]}) + self.return_entries = frappe._dict( frappe.get_all( doctype, filters=filters, or_filters=or_filters, fields=["name", "return_against"], as_list=1 @@ -717,37 +760,22 @@ class ReceivablePayableReport: # ageing buckets should not have amounts if due date is not reached if getdate(entry_date) > getdate(self.filters.report_date): - row.range1 = row.range2 = row.range3 = row.range4 = row.range5 = 0.0 + [setattr(row, f"range{i}", 0.0) for i in self.range_numbers] - row.total_due = row.range1 + row.range2 + row.range3 + row.range4 + row.range5 + row.total_due = sum(row[f"range{i}"] for i in self.range_numbers) def get_ageing_data(self, entry_date, row): # [0-30, 30-60, 60-90, 90-120, 120-above] - row.range1 = row.range2 = row.range3 = row.range4 = row.range5 = 0.0 + [setattr(row, f"range{i}", 0.0) for i in self.range_numbers] if not (self.age_as_on and entry_date): return row.age = (getdate(self.age_as_on) - getdate(entry_date)).days or 0 - index = None - if not (self.filters.range1 and self.filters.range2 and self.filters.range3 and self.filters.range4): - self.filters.range1, self.filters.range2, self.filters.range3, self.filters.range4 = ( - 30, - 60, - 90, - 120, - ) - - for i, days in enumerate( - [self.filters.range1, self.filters.range2, self.filters.range3, self.filters.range4] - ): - if cint(row.age) <= cint(days): - index = i - break - - if index is None: - index = 4 + index = next( + (i for i, days in enumerate(self.ranges) if cint(row.age) <= cint(days)), len(self.ranges) + ) row["range" + str(index + 1)] = row.outstanding def get_ple_entries(self): @@ -809,6 +837,7 @@ class ReceivablePayableReport: if self.filters.get("sales_person"): lft, rgt = frappe.db.get_value("Sales Person", self.filters.get("sales_person"), ["lft", "rgt"]) + # nosemgrep records = frappe.db.sql( """ select distinct parent, parenttype @@ -987,22 +1016,29 @@ class ReceivablePayableReport: def get_columns(self): self.columns = [] - self.add_column("Posting Date", fieldtype="Date") + self.add_column(_("Posting Date"), fieldname="posting_date", fieldtype="Date") self.add_column( - label="Party Type", + label=_("Party Type"), fieldname="party_type", fieldtype="Data", width=100, ) self.add_column( - label="Party", + label=_("Party"), fieldname="party", fieldtype="Dynamic Link", options="party_type", width=180, ) + if self.account_type == "Receivable": + label = _("Receivable Account") + elif self.account_type == "Payable": + label = _("Payable Account") + else: + label = _("Party Account") + self.add_column( - label=self.account_type + " Account", + label=label, fieldname="party_account", fieldtype="Link", options="Account", @@ -1011,10 +1047,10 @@ class ReceivablePayableReport: if self.party_naming_by == "Naming Series": if self.account_type == "Payable": - label = "Supplier Name" + label = _("Supplier Name") fieldname = "supplier_name" else: - label = "Customer Name" + label = _("Customer Name") fieldname = "customer_name" self.add_column( label=label, @@ -1040,7 +1076,7 @@ class ReceivablePayableReport: width=180, ) - self.add_column(label="Due Date", fieldtype="Date") + self.add_column(label=_("Due Date"), fieldname="due_date", fieldtype="Date") if self.account_type == "Payable": self.add_column(label=_("Bill No"), fieldname="bill_no", fieldtype="Data") @@ -1059,6 +1095,7 @@ class ReceivablePayableReport: self.add_column(_("Debit Note"), fieldname="credit_note") self.add_column(_("Outstanding Amount"), fieldname="outstanding") + self.add_column(label=_("Age (Days)"), fieldname="age", fieldtype="Int", width=80) self.setup_ageing_columns() self.add_column( @@ -1117,34 +1154,26 @@ class ReceivablePayableReport: def setup_ageing_columns(self): # for charts self.ageing_column_labels = [] - self.add_column(label=_("Age (Days)"), fieldname="age", fieldtype="Int", width=80) + ranges = [*self.ranges, "Above"] + + prev_range_value = 0 + for idx, curr_range_value in enumerate(ranges): + label = f"{prev_range_value}-{curr_range_value}" + self.add_column(label=label, fieldname="range" + str(idx + 1)) - for i, label in enumerate( - [ - "0-{range1}".format(range1=self.filters["range1"]), - "{range1}-{range2}".format( - range1=cint(self.filters["range1"]) + 1, range2=self.filters["range2"] - ), - "{range2}-{range3}".format( - range2=cint(self.filters["range2"]) + 1, range3=self.filters["range3"] - ), - "{range3}-{range4}".format( - range3=cint(self.filters["range3"]) + 1, range4=self.filters["range4"] - ), - _("{range4}-Above").format(range4=cint(self.filters["range4"]) + 1), - ] - ): - self.add_column(label=label, fieldname="range" + str(i + 1)) self.ageing_column_labels.append(label) + if curr_range_value.isdigit(): + prev_range_value = cint(curr_range_value) + 1 + def get_chart_data(self): + precision = cint(frappe.db.get_default("float_precision")) or 2 rows = [] for row in self.data: row = frappe._dict(row) if not cint(row.bold): - values = [row.range1, row.range2, row.range3, row.range4, row.range5] - precision = cint(frappe.db.get_default("float_precision")) or 2 - rows.append({"values": [flt(val, precision) for val in values]}) + values = [flt(row.get(f"range{i}", None), precision) for i in self.range_numbers] + rows.append({"values": values}) self.chart = { "data": {"labels": self.ageing_column_labels, "datasets": rows}, diff --git a/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py index c4baa4e4842..44fee120d8b 100644 --- a/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py +++ b/erpnext/accounts/report/accounts_receivable/test_accounts_receivable.py @@ -21,7 +21,7 @@ class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase): def tearDown(self): frappe.db.rollback() - def create_sales_invoice(self, no_payment_schedule=False, do_not_submit=False): + def create_sales_invoice(self, no_payment_schedule=False, do_not_submit=False, **args): frappe.set_user("Administrator") si = create_sales_invoice( item=self.item, @@ -34,6 +34,7 @@ class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase): rate=100, price_list_rate=100, do_not_save=1, + **args, ) if not no_payment_schedule: si.append( @@ -83,10 +84,7 @@ class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase): "party": [self.customer], "report_date": add_days(today(), 2), "based_on_payment_terms": 0, - "range1": 30, - "range2": 60, - "range3": 90, - "range4": 120, + "range": "30, 60, 90, 120", "show_remarks": False, } @@ -111,15 +109,12 @@ class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase): self.assertEqual(expected_data[0], [row.invoiced, row.paid, row.credit_note]) pos_inv.cancel() - def test_accounts_receivable(self): + def test_accounts_receivable_with_payment(self): filters = { "company": self.company, "based_on_payment_terms": 1, "report_date": today(), - "range1": 30, - "range2": 60, - "range3": 90, - "range4": 120, + "range": "30, 60, 90, 120", "show_remarks": True, } @@ -151,11 +146,15 @@ class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase): cr_note = self.create_credit_note(si.name, do_not_submit=True) cr_note.update_outstanding_for_self = False cr_note.save().submit() + + # as the invoice partially paid and returning the full amount so the outstanding amount should be True + self.assertEqual(cr_note.update_outstanding_for_self, True) + report = execute(filters) - expected_data_after_credit_note = [100, 0, 0, 40, -40, self.debit_to] + expected_data_after_credit_note = [0, 0, 100, 0, -100, self.debit_to] - row = report[1][0] + row = report[1][-1] self.assertEqual( expected_data_after_credit_note, [ @@ -168,14 +167,104 @@ class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase): ], ) + def test_accounts_receivable_without_payment(self): + filters = { + "company": self.company, + "based_on_payment_terms": 1, + "report_date": today(), + "range": "30, 60, 90, 120", + "show_remarks": True, + } + + # check invoice grand total and invoiced column's value for 3 payment terms + si = self.create_sales_invoice() + + report = execute(filters) + + expected_data = [[100, 30, "No Remarks"], [100, 50, "No Remarks"], [100, 20, "No Remarks"]] + + for i in range(3): + row = report[1][i - 1] + self.assertEqual(expected_data[i - 1], [row.invoice_grand_total, row.invoiced, row.remarks]) + + # check invoice grand total, invoiced, paid and outstanding column's value after credit note + cr_note = self.create_credit_note(si.name, do_not_submit=True) + cr_note.update_outstanding_for_self = False + cr_note.save().submit() + + self.assertEqual(cr_note.update_outstanding_for_self, False) + + report = execute(filters) + + row = report[1] + self.assertTrue(len(row) == 0) + + def test_accounts_receivable_with_partial_payment(self): + filters = { + "company": self.company, + "based_on_payment_terms": 1, + "report_date": today(), + "range": "30, 60, 90, 120", + "show_remarks": True, + } + + # check invoice grand total and invoiced column's value for 3 payment terms + si = self.create_sales_invoice(qty=2) + + report = execute(filters) + + expected_data = [[200, 60, "No Remarks"], [200, 100, "No Remarks"], [200, 40, "No Remarks"]] + + for i in range(3): + row = report[1][i - 1] + self.assertEqual(expected_data[i - 1], [row.invoice_grand_total, row.invoiced, row.remarks]) + + # check invoice grand total, invoiced, paid and outstanding column's value after payment + self.create_payment_entry(si.name) + report = execute(filters) + + expected_data_after_payment = [[200, 60, 40, 20], [200, 100, 0, 100], [200, 40, 0, 40]] + + for i in range(3): + row = report[1][i - 1] + self.assertEqual( + expected_data_after_payment[i - 1], + [row.invoice_grand_total, row.invoiced, row.paid, row.outstanding], + ) + + # check invoice grand total, invoiced, paid and outstanding column's value after credit note + cr_note = self.create_credit_note(si.name, do_not_submit=True) + cr_note.update_outstanding_for_self = False + cr_note.save().submit() + + self.assertFalse(cr_note.update_outstanding_for_self) + + report = execute(filters) + + expected_data_after_credit_note = [ + [200, 100, 0, 80, 20, self.debit_to], + [200, 40, 0, 0, 40, self.debit_to], + ] + + for i in range(2): + row = report[1][i - 1] + self.assertEqual( + expected_data_after_credit_note[i - 1], + [ + row.invoice_grand_total, + row.invoiced, + row.paid, + row.credit_note, + row.outstanding, + row.party_account, + ], + ) + def test_cr_note_flag_to_update_self(self): filters = { "company": self.company, "report_date": today(), - "range1": 30, - "range2": 60, - "range3": 90, - "range4": 120, + "range": "30, 60, 90, 120", "show_remarks": True, } @@ -266,10 +355,7 @@ class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase): "company": self.company, "based_on_payment_terms": 0, "report_date": today(), - "range1": 30, - "range2": 60, - "range3": 90, - "range4": 120, + "range": "30, 60, 90, 120", } report = execute(filters) @@ -328,10 +414,7 @@ class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase): filters = { "company": self.company, "report_date": today(), - "range1": 30, - "range2": 60, - "range3": 90, - "range4": 120, + "range": "30, 60, 90, 120", } report = execute(filters) @@ -397,10 +480,7 @@ class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase): filters = { "company": self.company, "report_date": today(), - "range1": 30, - "range2": 60, - "range3": 90, - "range4": 120, + "range": "30, 60, 90, 120", } report = execute(filters) self.assertEqual(report[1], []) @@ -416,10 +496,7 @@ class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase): filters = { "company": self.company, "report_date": today(), - "range1": 30, - "range2": 60, - "range3": 90, - "range4": 120, + "range": "30, 60, 90, 120", "group_by_party": True, } report = execute(filters)[1] @@ -493,10 +570,7 @@ class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase): filters = { "company": self.company, "report_date": today(), - "range1": 30, - "range2": 60, - "range3": 90, - "range4": 120, + "range": "30, 60, 90, 120", "show_future_payments": True, } report = execute(filters)[1] @@ -555,10 +629,7 @@ class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase): filters = { "company": self.company, "report_date": today(), - "range1": 30, - "range2": 60, - "range3": 90, - "range4": 120, + "range": "30, 60, 90, 120", "sales_person": sales_person.name, "show_sales_person": True, } @@ -575,10 +646,7 @@ class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase): filters = { "company": self.company, "report_date": today(), - "range1": 30, - "range2": 60, - "range3": 90, - "range4": 120, + "range": "30, 60, 90, 120", "cost_center": self.cost_center, } report = execute(filters)[1] @@ -593,10 +661,7 @@ class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase): filters = { "company": self.company, "report_date": today(), - "range1": 30, - "range2": 60, - "range3": 90, - "range4": 120, + "range": "30, 60, 90, 120", "customer_group": cus_group, } report = execute(filters)[1] @@ -618,10 +683,7 @@ class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase): filters = { "company": self.company, "report_date": today(), - "range1": 30, - "range2": 60, - "range3": 90, - "range4": 120, + "range": "30, 60, 90, 120", "customer_group": cus_groups_list, # Use the list of customer groups } report = execute(filters)[1] @@ -660,10 +722,7 @@ class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase): filters = { "company": self.company, "report_date": today(), - "range1": 30, - "range2": 60, - "range3": 90, - "range4": 120, + "range": "30, 60, 90, 120", "party_account": self.debit_to, } report = execute(filters)[1] @@ -711,10 +770,7 @@ class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase): "party_type": "Customer", "party": [self.customer], "report_date": today(), - "range1": 30, - "range2": 60, - "range3": 90, - "range4": 120, + "range": "30, 60, 90, 120", "in_party_currency": 1, } @@ -754,10 +810,7 @@ class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase): "party_type": "Customer", "party": [self.customer1, self.customer3], "report_date": today(), - "range1": 30, - "range2": 60, - "range3": 90, - "range4": 120, + "range": "30, 60, 90, 120", } si1 = self.create_sales_invoice(no_payment_schedule=True, do_not_submit=True) @@ -837,10 +890,7 @@ class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase): filters = { "company": self.company, "report_date": today(), - "range1": 30, - "range2": 60, - "range3": 90, - "range4": 120, + "range": "30, 60, 90, 120", } report_ouput = execute(filters)[1] @@ -903,10 +953,7 @@ class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase): { "company": self.company, "report_date": today(), - "range1": 30, - "range2": 60, - "range3": 90, - "range4": 120, + "range": "30, 60, 90, 120", "show_future_payments": True, "in_party_currency": False, } @@ -965,10 +1012,7 @@ class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase): filters = { "company": self.company, "report_date": today(), - "range1": 30, - "range2": 60, - "range3": 90, - "range4": 120, + "range": "30, 60, 90, 120", } # check invoice grand total and invoiced column's value for 3 payment terms @@ -991,10 +1035,7 @@ class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase): filters = { "company": self.company, "report_date": today(), - "range1": 30, - "range2": 60, - "range3": 90, - "range4": 120, + "range": "30, 60, 90, 120", } # check invoice grand total and invoiced column's value for 3 payment terms diff --git a/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.js b/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.js index 964abc23747..17ee5e0b323 100644 --- a/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.js +++ b/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.js @@ -24,32 +24,10 @@ frappe.query_reports["Accounts Receivable Summary"] = { default: "Due Date", }, { - fieldname: "range1", - label: __("Ageing Range 1"), - fieldtype: "Int", - default: "30", - reqd: 1, - }, - { - fieldname: "range2", - label: __("Ageing Range 2"), - fieldtype: "Int", - default: "60", - reqd: 1, - }, - { - fieldname: "range3", - label: __("Ageing Range 3"), - fieldtype: "Int", - default: "90", - reqd: 1, - }, - { - fieldname: "range4", - label: __("Ageing Range 4"), - fieldtype: "Int", - default: "120", - reqd: 1, + fieldname: "range", + label: __("Ageing Range"), + fieldtype: "Data", + default: "30, 60, 90, 120", }, { fieldname: "finance_book", @@ -88,6 +66,7 @@ frappe.query_reports["Accounts Receivable Summary"] = { fieldname: "party", label: __("Party"), fieldtype: "MultiSelectList", + options: "party_type", get_data: function (txt) { if (!frappe.query_report.filters) return; diff --git a/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py b/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py index 6a1b1057724..87fc7ea68be 100644 --- a/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py +++ b/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py @@ -104,25 +104,23 @@ class AccountsReceivableSummary(ReceivablePayableReport): self.set_party_details(d) def init_party_total(self, row): + default_dict = { + "invoiced": 0.0, + "paid": 0.0, + "credit_note": 0.0, + "outstanding": 0.0, + "total_due": 0.0, + "future_amount": 0.0, + "sales_person": [], + "party_type": row.party_type, + } + for i in self.range_numbers: + range_key = f"range{i}" + default_dict[range_key] = 0.0 + self.party_total.setdefault( row.party, - frappe._dict( - { - "invoiced": 0.0, - "paid": 0.0, - "credit_note": 0.0, - "outstanding": 0.0, - "range1": 0.0, - "range2": 0.0, - "range3": 0.0, - "range4": 0.0, - "range5": 0.0, - "total_due": 0.0, - "future_amount": 0.0, - "sales_person": [], - "party_type": row.party_type, - } - ), + frappe._dict(default_dict), ) def set_party_details(self, row): @@ -173,6 +171,7 @@ class AccountsReceivableSummary(ReceivablePayableReport): self.add_column(_("Difference"), fieldname="diff") self.setup_ageing_columns() + self.add_column(label="Total Amount Due", fieldname="total_due") if self.filters.show_future_payments: self.add_column(label=_("Future Payment Amount"), fieldname="future_amount") @@ -206,27 +205,6 @@ class AccountsReceivableSummary(ReceivablePayableReport): label=_("Currency"), fieldname="currency", fieldtype="Link", options="Currency", width=80 ) - def setup_ageing_columns(self): - for i, label in enumerate( - [ - "0-{range1}".format(range1=self.filters["range1"]), - "{range1}-{range2}".format( - range1=cint(self.filters["range1"]) + 1, range2=self.filters["range2"] - ), - "{range2}-{range3}".format( - range2=cint(self.filters["range2"]) + 1, range3=self.filters["range3"] - ), - "{range3}-{range4}".format( - range3=cint(self.filters["range3"]) + 1, range4=self.filters["range4"] - ), - "{range4}-{above}".format(range4=cint(self.filters["range4"]) + 1, above=_("Above")), - ] - ): - self.add_column(label=label, fieldname="range" + str(i + 1)) - - # Add column for total due amount - self.add_column(label="Total Amount Due", fieldname="total_due") - def get_gl_balance(report_date, company): return frappe._dict( diff --git a/erpnext/accounts/report/accounts_receivable_summary/test_accounts_receivable_summary.py b/erpnext/accounts/report/accounts_receivable_summary/test_accounts_receivable_summary.py index 4ef607bab28..a98cc6af7a3 100644 --- a/erpnext/accounts/report/accounts_receivable_summary/test_accounts_receivable_summary.py +++ b/erpnext/accounts/report/accounts_receivable_summary/test_accounts_receivable_summary.py @@ -27,10 +27,7 @@ class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase): "company": self.company, "customer": self.customer, "posting_date": today(), - "range1": 30, - "range2": 60, - "range3": 90, - "range4": 120, + "range": "30, 60, 90, 120", } si = create_sales_invoice( @@ -121,10 +118,7 @@ class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase): "company": self.company, "customer": self.customer, "posting_date": today(), - "range1": 30, - "range2": 60, - "range3": 90, - "range4": 120, + "range": "30, 60, 90, 120", } si = create_sales_invoice( diff --git a/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py b/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py index e1545bdcd87..a21103c719d 100644 --- a/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py +++ b/erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py @@ -89,7 +89,9 @@ def get_data(filters): & (DepreciationSchedule.schedule_date == d.posting_date) ) ).run(as_dict=True) - asset_data.accumulated_depreciation_amount = query[0]["accumulated_depreciation_amount"] + asset_data.accumulated_depreciation_amount = ( + query[0]["accumulated_depreciation_amount"] if query else 0 + ) else: asset_data.accumulated_depreciation_amount += d.debit 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 34cced2ca17..cdeddf3d38b 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 @@ -28,14 +28,14 @@ def get_group_by_asset_category_data(filters): for asset_category in asset_categories: row = frappe._dict() - # row.asset_category = asset_category row.update(asset_category) - 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.value_as_on_to_date = ( + flt(row.value_as_on_from_date) + + flt(row.value_of_new_purchase) + - flt(row.value_of_sold_asset) + - flt(row.value_of_scrapped_asset) + - flt(row.value_of_capitalized_asset) ) row.update( @@ -50,13 +50,14 @@ def get_group_by_asset_category_data(filters): flt(row.accumulated_depreciation_as_on_from_date) + flt(row.depreciation_amount_during_the_period) - flt(row.depreciation_eliminated_during_the_period) + - flt(row.depreciation_eliminated_via_reversal) ) - row.net_asset_value_as_on_from_date = flt(row.cost_as_on_from_date) - flt( + row.net_asset_value_as_on_from_date = flt(row.value_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.net_asset_value_as_on_to_date = flt(row.value_as_on_to_date) - flt( row.accumulated_depreciation_as_on_to_date ) @@ -68,7 +69,7 @@ def get_group_by_asset_category_data(filters): def get_asset_categories_for_grouped_by_category(filters): condition = "" if filters.get("asset_category"): - condition += " and asset_category = %(asset_category)s" + condition += " and a.asset_category = %(asset_category)s" if filters.get("finance_book"): condition += " and exists (select 1 from `tabAsset Depreciation Schedule` ads where ads.asset = a.name and ads.finance_book = %(finance_book)s)" @@ -84,12 +85,12 @@ def get_asset_categories_for_grouped_by_category(filters): end else 0 - end), 0) as cost_as_on_from_date, + end), 0) as value_as_on_from_date, ifnull(sum(case when a.purchase_date >= %(from_date)s then a.gross_purchase_amount else 0 - end), 0) as cost_of_new_purchase, + end), 0) as value_of_new_purchase, ifnull(sum(case when ifnull(a.disposal_date, 0) != 0 and a.disposal_date >= %(from_date)s and a.disposal_date <= %(to_date)s then @@ -100,7 +101,7 @@ def get_asset_categories_for_grouped_by_category(filters): end else 0 - end), 0) as cost_of_sold_asset, + end), 0) as value_of_sold_asset, ifnull(sum(case when ifnull(a.disposal_date, 0) != 0 and a.disposal_date >= %(from_date)s and a.disposal_date <= %(to_date)s then @@ -111,10 +112,26 @@ def get_asset_categories_for_grouped_by_category(filters): end else 0 - end), 0) as cost_of_scrapped_asset + end), 0) as value_of_scrapped_asset, + ifnull(sum(case when ifnull(a.disposal_date, 0) != 0 + and a.disposal_date >= %(from_date)s + and a.disposal_date <= %(to_date)s then + case when a.status = "Capitalized" then + a.gross_purchase_amount + else + 0 + end + else + 0 + end), 0) as value_of_capitalized_asset from `tabAsset` a - where docstatus=1 and company=%(company)s and purchase_date <= %(to_date)s {condition} - and not exists(select name from `tabAsset Capitalization Asset Item` where asset = a.name) + where a.docstatus=1 and a.company=%(company)s and a.purchase_date <= %(to_date)s {condition} + and not exists( + select 1 from `tabAsset Capitalization Asset Item` acai join `tabAsset Capitalization` ac on acai.parent=ac.name + where acai.asset = a.name + and ac.posting_date < %(from_date)s + and ac.docstatus=1 + ) group by a.asset_category """, { @@ -128,63 +145,85 @@ def get_asset_categories_for_grouped_by_category(filters): ) -def get_asset_details_for_grouped_by_category(filters): +def get_assets_for_grouped_by_category(filters): condition = "" - if filters.get("asset"): - condition += " and name = %(asset)s" + if filters.get("asset_category"): + condition = f" and a.asset_category = '{filters.get('asset_category')}'" + finance_book_filter = "" if filters.get("finance_book"): - condition += " and exists (select 1 from `tabAsset Depreciation Schedule` ads where ads.asset = `tabAsset`.name and ads.finance_book = %(finance_book)s)" + finance_book_filter += " and ifnull(gle.finance_book, '')=%(finance_book)s" + condition += " and exists (select 1 from `tabAsset Depreciation Schedule` ads where ads.asset = a.name and ads.finance_book = %(finance_book)s)" # nosemgrep return frappe.db.sql( f""" - 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 + SELECT results.asset_category, + sum(results.accumulated_depreciation_as_on_from_date) as accumulated_depreciation_as_on_from_date, + sum(results.depreciation_eliminated_via_reversal) as depreciation_eliminated_via_reversal, + 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.asset_category, + 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 gle.posting_date <= %(to_date)s and ifnull(a.disposal_date, 0) = 0 then + gle.credit + else + 0 + end), 0) as depreciation_eliminated_via_reversal, + 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.is_cancelled = 0 + and gle.account = ifnull(aca.depreciation_expense_account, company.depreciation_expense_account) + {condition} {finance_book_filter} + group by a.asset_category + union + SELECT a.asset_category, + ifnull(sum(case when ifnull(a.disposal_date, 0) != 0 and a.disposal_date < %(from_date)s then 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 {condition} - group by name - """, + a.opening_accumulated_depreciation + end), 0) as accumulated_depreciation_as_on_from_date, + 0 as depreciation_eliminated_via_reversal, + 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 {condition} + group by a.asset_category) as results + group by results.asset_category + """, { "to_date": filters.to_date, "from_date": filters.from_date, "company": filters.company, - "asset": filters.get("asset"), - "finance_book": filters.get("finance_book"), + "finance_book": filters.get("finance_book", ""), }, as_dict=1, ) @@ -198,14 +237,14 @@ def get_group_by_asset_data(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.value_as_on_to_date = ( + flt(row.value_as_on_from_date) + + flt(row.value_of_new_purchase) + - flt(row.value_of_sold_asset) + - flt(row.value_of_scrapped_asset) + - flt(row.value_of_capitalized_asset) ) row.update(next(asset for asset in assets if asset["asset"] == asset_detail.get("name", ""))) @@ -214,13 +253,14 @@ def get_group_by_asset_data(filters): flt(row.accumulated_depreciation_as_on_from_date) + flt(row.depreciation_amount_during_the_period) - flt(row.depreciation_eliminated_during_the_period) + - flt(row.depreciation_eliminated_via_reversal) ) - row.net_asset_value_as_on_from_date = flt(row.cost_as_on_from_date) - flt( + row.net_asset_value_as_on_from_date = flt(row.value_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.net_asset_value_as_on_to_date = flt(row.value_as_on_to_date) - flt( row.accumulated_depreciation_as_on_to_date ) @@ -229,62 +269,81 @@ def get_group_by_asset_data(filters): return data -def get_assets_for_grouped_by_category(filters): +def get_asset_details_for_grouped_by_category(filters): condition = "" - if filters.get("asset_category"): - condition = " and a.asset_category = '{}'".format(filters.get("asset_category")) + if filters.get("asset"): + condition += " and a.name = %(asset)s" + if filters.get("finance_book"): + condition += " and exists (select 1 from `tabAsset Depreciation Schedule` ads where ads.asset = a.name and ads.finance_book = %(finance_book)s)" + + # nosemgrep return frappe.db.sql( - """ - SELECT results.asset_category, - 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.asset_category, - 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.asset_category - union - SELECT a.asset_category, - 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 + f""" + SELECT a.name, + ifnull(sum(case when a.purchase_date < %(from_date)s then + case when ifnull(a.disposal_date, 0) = 0 or a.disposal_date >= %(from_date)s then + a.gross_purchase_amount 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.asset_category) as results - group by results.asset_category - """.format(condition), - {"to_date": filters.to_date, "from_date": filters.from_date, "company": filters.company}, + 0 + end + else + 0 + end), 0) as value_as_on_from_date, + ifnull(sum(case when a.purchase_date >= %(from_date)s then + a.gross_purchase_amount + else + 0 + end), 0) as value_of_new_purchase, + ifnull(sum(case when ifnull(a.disposal_date, 0) != 0 + and a.disposal_date >= %(from_date)s + and a.disposal_date <= %(to_date)s then + case when a.status = "Sold" then + a.gross_purchase_amount + else + 0 + end + else + 0 + end), 0) as value_of_sold_asset, + ifnull(sum(case when ifnull(a.disposal_date, 0) != 0 + and a.disposal_date >= %(from_date)s + and a.disposal_date <= %(to_date)s then + case when a.status = "Scrapped" then + a.gross_purchase_amount + else + 0 + end + else + 0 + end), 0) as value_of_scrapped_asset, + ifnull(sum(case when ifnull(a.disposal_date, 0) != 0 + and a.disposal_date >= %(from_date)s + and a.disposal_date <= %(to_date)s then + case when a.status = "Capitalized" then + a.gross_purchase_amount + else + 0 + end + else + 0 + end), 0) as value_of_capitalized_asset + from `tabAsset` a + where a.docstatus=1 and a.company=%(company)s and a.purchase_date <= %(to_date)s {condition} + and not exists( + select 1 from `tabAsset Capitalization Asset Item` acai join `tabAsset Capitalization` ac on acai.parent=ac.name + where acai.asset = a.name + and ac.posting_date < %(from_date)s + and ac.docstatus=1 + ) + group by a.name + """, + { + "to_date": filters.to_date, + "from_date": filters.from_date, + "company": filters.company, + "asset": filters.get("asset"), + "finance_book": filters.get("finance_book"), + }, as_dict=1, ) @@ -292,11 +351,18 @@ def get_assets_for_grouped_by_category(filters): def get_assets_for_grouped_by_asset(filters): condition = "" if filters.get("asset"): - condition = " and a.name = '{}'".format(filters.get("asset")) + condition = f" and a.name = '{filters.get('asset')}'" + finance_book_filter = "" + if filters.get("finance_book"): + finance_book_filter += " and ifnull(gle.finance_book, '')=%(finance_book)s" + condition += " and exists (select 1 from `tabAsset Depreciation Schedule` ads where ads.asset = a.name and ads.finance_book = %(finance_book)s)" + + # nosemgrep return frappe.db.sql( - """ + f""" SELECT results.name as asset, sum(results.accumulated_depreciation_as_on_from_date) as accumulated_depreciation_as_on_from_date, + sum(results.depreciation_eliminated_via_reversal) as depreciation_eliminated_via_reversal, 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, @@ -305,6 +371,11 @@ def get_assets_for_grouped_by_asset(filters): else 0 end), 0) as accumulated_depreciation_as_on_from_date, + ifnull(sum(case when gle.posting_date <= %(to_date)s and ifnull(a.disposal_date, 0) = 0 then + gle.credit + else + 0 + end), 0) as depreciation_eliminated_via_reversal, 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 @@ -324,15 +395,22 @@ def get_assets_for_grouped_by_asset(filters): 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} + where + a.docstatus=1 + and a.company=%(company)s + and a.purchase_date <= %(to_date)s + and gle.is_cancelled = 0 + and gle.account = ifnull(aca.depreciation_expense_account, company.depreciation_expense_account) + {finance_book_filter} {condition} 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 + ifnull(sum(case when ifnull(a.disposal_date, 0) != 0 and a.disposal_date < %(from_date)s then 0 else a.opening_accumulated_depreciation end), 0) as accumulated_depreciation_as_on_from_date, + 0 as depreciation_as_on_from_date_credit, ifnull(sum(case when a.disposal_date >= %(from_date)s and a.disposal_date <= %(to_date)s then a.opening_accumulated_depreciation else @@ -340,11 +418,16 @@ def get_assets_for_grouped_by_asset(filters): 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} + where a.docstatus=1 and a.company=%(company)s and a.purchase_date <= %(to_date)s {condition} 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}, + """, + { + "to_date": filters.to_date, + "from_date": filters.from_date, + "company": filters.company, + "finance_book": filters.get("finance_book", ""), + }, as_dict=1, ) @@ -375,32 +458,38 @@ def get_columns(filters): columns += [ { - "label": _("Cost as on") + " " + formatdate(filters.day_before_from_date), - "fieldname": "cost_as_on_from_date", + "label": _("Value as on") + " " + formatdate(filters.day_before_from_date), + "fieldname": "value_as_on_from_date", "fieldtype": "Currency", "width": 140, }, { - "label": _("Cost of New Purchase"), - "fieldname": "cost_of_new_purchase", + "label": _("Value of New Purchase"), + "fieldname": "value_of_new_purchase", "fieldtype": "Currency", "width": 140, }, { - "label": _("Cost of Sold Asset"), - "fieldname": "cost_of_sold_asset", + "label": _("Value of Sold Asset"), + "fieldname": "value_of_sold_asset", "fieldtype": "Currency", "width": 140, }, { - "label": _("Cost of Scrapped Asset"), - "fieldname": "cost_of_scrapped_asset", + "label": _("Value of Scrapped Asset"), + "fieldname": "value_of_scrapped_asset", "fieldtype": "Currency", "width": 140, }, { - "label": _("Cost as on") + " " + formatdate(filters.to_date), - "fieldname": "cost_as_on_to_date", + "label": _("Value of New Capitalized Asset"), + "fieldname": "value_of_capitalized_asset", + "fieldtype": "Currency", + "width": 140, + }, + { + "label": _("Value as on") + " " + formatdate(filters.to_date), + "fieldname": "value_as_on_to_date", "fieldtype": "Currency", "width": 140, }, @@ -428,6 +517,12 @@ def get_columns(filters): "fieldtype": "Currency", "width": 270, }, + { + "label": _("Depreciation eliminated via reversal"), + "fieldname": "depreciation_eliminated_via_reversal", + "fieldtype": "Currency", + "width": 270, + }, { "label": _("Net Asset value as on") + " " + formatdate(filters.day_before_from_date), "fieldname": "net_asset_value_as_on_from_date", diff --git a/erpnext/accounts/report/balance_sheet/balance_sheet.py b/erpnext/accounts/report/balance_sheet/balance_sheet.py index e89a177a867..fc19c40f8f9 100644 --- a/erpnext/accounts/report/balance_sheet/balance_sheet.py +++ b/erpnext/accounts/report/balance_sheet/balance_sheet.py @@ -7,6 +7,7 @@ from frappe import _ from frappe.utils import cint, flt from erpnext.accounts.report.financial_statements import ( + compute_growth_view_data, get_columns, get_data, get_filtered_list_for_consolidated_report, @@ -95,12 +96,15 @@ def execute(filters=None): filters.periodicity, period_list, filters.accumulated_values, company=filters.company ) - chart = get_chart_data(filters, columns, asset, liability, equity) + chart = get_chart_data(filters, columns, asset, liability, equity, currency) report_summary, primitive_summary = get_report_summary( period_list, asset, liability, equity, provisional_profit_loss, currency, filters ) + if filters.get("selected_view") == "Growth": + compute_growth_view_data(data, period_list) + return columns, data, message, chart, report_summary, primitive_summary @@ -122,13 +126,13 @@ def get_provisional_profit_loss( for period in period_list: key = period if consolidated else period.key - total_assets = flt(asset[0].get(key)) + total_assets = flt(asset[-2].get(key)) effective_liability = 0.00 - if liability: - effective_liability += flt(liability[0].get(key)) - if equity: - effective_liability += flt(equity[0].get(key)) + if liability and liability[-1] == {}: + effective_liability += flt(liability[-2].get(key)) + if equity and equity[-1] == {}: + effective_liability += flt(equity[-2].get(key)) provisional_profit_loss[key] = total_assets - effective_liability total_row[key] = provisional_profit_loss[key] + effective_liability @@ -195,9 +199,9 @@ def get_report_summary( key = period if consolidated else period.key if asset: net_asset += asset[-2].get(key) - if liability: + if liability and liability[-1] == {}: net_liability += liability[-2].get(key) - if equity: + if equity and equity[-1] == {}: net_equity += equity[-2].get(key) if provisional_profit_loss: net_provisional_profit_loss += provisional_profit_loss.get(key) @@ -221,7 +225,7 @@ def get_report_summary( ], (net_asset - net_liability + net_equity) -def get_chart_data(filters, columns, asset, liability, equity): +def get_chart_data(filters, columns, asset, liability, equity, currency): labels = [d.get("label") for d in columns[2:]] asset_data, liability_data, equity_data = [], [], [] @@ -249,4 +253,8 @@ def get_chart_data(filters, columns, asset, liability, equity): else: chart["type"] = "line" + chart["fieldtype"] = "Currency" + chart["options"] = "currency" + chart["currency"] = currency + return chart diff --git a/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.html b/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.html index eaabc90205f..6957ab41681 100644 --- a/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.html +++ b/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.html @@ -1,6 +1,3 @@ -
- {%= frappe.boot.letter_heads[frappe.defaults.get_default("letter_head")] %} -

{%= __("Bank Reconciliation Statement") %}

{%= filters.account && (filters.account + ", "+filters.report_date) || "" %} {%= filters.company %}


@@ -46,4 +43,4 @@ {% } %} -

Printed On {%= frappe.datetime.str_to_user(frappe.datetime.get_datetime_as_string()) %}

+

{%= __("Printed on {0}", [frappe.datetime.str_to_user(frappe.datetime.get_datetime_as_string())]) %}

diff --git a/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.js b/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.js index 9335a8cd65a..2684c87a22a 100644 --- a/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.js +++ b/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.js @@ -47,7 +47,7 @@ frappe.query_reports["Bank Reconciliation Statement"] = { }, ], formatter: function (value, row, column, data, default_formatter, filter) { - if (column.fieldname == "payment_entry" && value == "Cheques and Deposits incorrectly cleared") { + if (column.fieldname == "payment_entry" && value == __("Cheques and Deposits incorrectly cleared")) { column.link_onclick = "frappe.query_reports['Bank Reconciliation Statement'].open_utility_report()"; } diff --git a/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py b/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py index c7dba16492e..bfc2f2d56ff 100644 --- a/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py +++ b/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py @@ -142,7 +142,8 @@ def get_journal_entries(filters): where jvd.parent = jv.name and jv.docstatus=1 and jvd.account = %(account)s and jv.posting_date <= %(report_date)s and ifnull(jv.clearance_date, '4000-01-01') > %(report_date)s - and ifnull(jv.is_opening, 'No') = 'No'""", + and ifnull(jv.is_opening, 'No') = 'No' + and jv.company = %(company)s """, filters, as_dict=1, ) @@ -163,6 +164,7 @@ def get_payment_entries(filters): (paid_from=%(account)s or paid_to=%(account)s) and docstatus=1 and posting_date <= %(report_date)s and ifnull(clearance_date, '4000-01-01') > %(report_date)s + and company = %(company)s """, filters, as_dict=1, @@ -181,6 +183,7 @@ def get_pos_entries(filters): sip.account=%(account)s and si.docstatus=1 and sip.parent = si.name and account.name = sip.account and si.posting_date <= %(report_date)s and ifnull(sip.clearance_date, '4000-01-01') > %(report_date)s + and si.company = %(company)s order by si.posting_date ASC, si.name DESC """, diff --git a/erpnext/accounts/report/billed_items_to_be_received/billed_items_to_be_received.py b/erpnext/accounts/report/billed_items_to_be_received/billed_items_to_be_received.py index f6efc8a685c..dc6192e7544 100644 --- a/erpnext/accounts/report/billed_items_to_be_received/billed_items_to_be_received.py +++ b/erpnext/accounts/report/billed_items_to_be_received/billed_items_to_be_received.py @@ -27,6 +27,7 @@ def get_report_filters(report_filters): ["Purchase Invoice", "docstatus", "=", 1], ["Purchase Invoice", "per_received", "<", 100], ["Purchase Invoice", "update_stock", "=", 0], + ["Purchase Invoice", "is_opening", "!=", "Yes"], ] if report_filters.get("purchase_invoice"): 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 83bd48c71f3..c74450191aa 100644 --- a/erpnext/accounts/report/budget_variance_report/budget_variance_report.js +++ b/erpnext/accounts/report/budget_variance_report/budget_variance_report.js @@ -91,6 +91,7 @@ function get_filters() { fieldname: "budget_against_filter", label: __("Dimension Filter"), fieldtype: "MultiSelectList", + options: "budget_against", get_data: function (txt) { if (!frappe.query_report.filters) return; diff --git a/erpnext/accounts/report/budget_variance_report/budget_variance_report.py b/erpnext/accounts/report/budget_variance_report/budget_variance_report.py index e540aa9993c..db42d23a839 100644 --- a/erpnext/accounts/report/budget_variance_report/budget_variance_report.py +++ b/erpnext/accounts/report/budget_variance_report/budget_variance_report.py @@ -263,6 +263,7 @@ def get_actual_details(name, filters): and ba.account=gl.account and b.{budget_against} = gl.{budget_against} and gl.fiscal_year between %s and %s + and gl.is_cancelled = 0 and b.{budget_against} = %s and exists( select diff --git a/erpnext/accounts/report/cash_flow/cash_flow.js b/erpnext/accounts/report/cash_flow/cash_flow.js index c824f0d9f38..bc76ee0a114 100644 --- a/erpnext/accounts/report/cash_flow/cash_flow.js +++ b/erpnext/accounts/report/cash_flow/cash_flow.js @@ -1,7 +1,10 @@ // Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and contributors // For license information, please see license.txt -frappe.query_reports["Cash Flow"] = $.extend({}, erpnext.financial_statements); +frappe.query_reports["Cash Flow"] = $.extend(erpnext.financial_statements, { + name_field: "section", + parent_field: "parent_section", +}); erpnext.utils.add_dimensions("Cash Flow", 10); diff --git a/erpnext/accounts/report/cash_flow/cash_flow.py b/erpnext/accounts/report/cash_flow/cash_flow.py index c034f95ec00..562ac5efb81 100644 --- a/erpnext/accounts/report/cash_flow/cash_flow.py +++ b/erpnext/accounts/report/cash_flow/cash_flow.py @@ -30,7 +30,7 @@ def execute(filters=None): company=filters.company, ) - cash_flow_accounts = get_cash_flow_accounts() + cash_flow_sections = get_cash_flow_accounts() # compute net profit / loss income = get_data( @@ -60,14 +60,14 @@ def execute(filters=None): summary_data = {} company_currency = frappe.get_cached_value("Company", filters.company, "default_currency") - for cash_flow_account in cash_flow_accounts: + for cash_flow_section in cash_flow_sections: section_data = [] data.append( { - "account_name": cash_flow_account["section_header"], - "parent_account": None, + "section_name": "'" + cash_flow_section["section_header"] + "'", + "parent_section": None, "indent": 0.0, - "account": cash_flow_account["section_header"], + "section": cash_flow_section["section_header"], } ) @@ -75,31 +75,40 @@ def execute(filters=None): # add first net income in operations section if net_profit_loss: net_profit_loss.update( - {"indent": 1, "parent_account": cash_flow_accounts[0]["section_header"]} + {"indent": 1, "parent_section": cash_flow_sections[0]["section_header"]} ) data.append(net_profit_loss) section_data.append(net_profit_loss) - for account in cash_flow_account["account_types"]: - account_data = get_account_type_based_data( - filters.company, account["account_type"], period_list, filters.accumulated_values, filters + for row in cash_flow_section["account_types"]: + row_data = get_account_type_based_data( + filters.company, row["account_type"], period_list, filters.accumulated_values, filters ) - account_data.update( + accounts = frappe.get_all( + "Account", + filters={ + "account_type": row["account_type"], + "is_group": 0, + }, + pluck="name", + ) + row_data.update( { - "account_name": account["label"], - "account": account["label"], + "section_name": row["label"], + "section": row["label"], "indent": 1, - "parent_account": cash_flow_account["section_header"], + "accounts": accounts, + "parent_section": cash_flow_section["section_header"], "currency": company_currency, } ) - data.append(account_data) - section_data.append(account_data) + data.append(row_data) + section_data.append(row_data) add_total_row_account( data, section_data, - cash_flow_account["section_footer"], + cash_flow_section["section_footer"], period_list, company_currency, summary_data, @@ -109,9 +118,9 @@ def execute(filters=None): add_total_row_account( data, data, _("Net Change in Cash"), period_list, company_currency, summary_data, filters ) - columns = get_columns(filters.periodicity, period_list, filters.accumulated_values, filters.company) + columns = get_columns(filters.periodicity, period_list, filters.accumulated_values, filters.company, True) - chart = get_chart_data(columns, data) + chart = get_chart_data(columns, data, company_currency) report_summary = get_report_summary(summary_data, company_currency) @@ -217,8 +226,8 @@ def get_start_date(period, accumulated_values, company): def add_total_row_account(out, data, label, period_list, currency, summary_data, filters, consolidated=False): total_row = { - "account_name": "'" + _("{0}").format(label) + "'", - "account": "'" + _("{0}").format(label) + "'", + "section_name": "'" + _("{0}").format(label) + "'", + "section": "'" + _("{0}").format(label) + "'", "currency": currency, } @@ -229,7 +238,7 @@ def add_total_row_account(out, data, label, period_list, currency, summary_data, period_list = get_filtered_list_for_consolidated_report(filters, period_list) for row in data: - if row.get("parent_account"): + if row.get("parent_section"): for period in period_list: key = period if consolidated else period["key"] total_row.setdefault(key, 0.0) @@ -252,20 +261,23 @@ def get_report_summary(summary_data, currency): return report_summary -def get_chart_data(columns, data): +def get_chart_data(columns, data, currency): labels = [d.get("label") for d in columns[2:]] + print(data) datasets = [ { - "name": account.get("account").replace("'", ""), - "values": [account.get(d.get("fieldname")) for d in columns[2:]], + "name": section.get("section").replace("'", ""), + "values": [section.get(d.get("fieldname")) for d in columns[2:]], } - for account in data - if account.get("parent_account") is None and account.get("currency") + for section in data + if section.get("parent_section") is None and section.get("currency") ] datasets = datasets[:-1] chart = {"data": {"labels": labels, "datasets": datasets}, "type": "bar"} chart["fieldtype"] = "Currency" + chart["options"] = "currency" + chart["currency"] = currency return chart diff --git a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py index 2931b728a42..04625fc76fc 100644 --- a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py +++ b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py @@ -115,7 +115,7 @@ def get_balance_sheet_data(fiscal_year, companies, columns, filters): True, ) - chart = get_chart_data(filters, columns, asset, liability, equity) + chart = get_chart_data(filters, columns, asset, liability, equity, company_currency) return data, message, chart, report_summary @@ -173,7 +173,7 @@ def get_profit_loss_data(fiscal_year, companies, columns, filters): if net_profit_loss: data.append(net_profit_loss) - chart = get_pl_chart_data(filters, columns, income, expense, net_profit_loss) + chart = get_pl_chart_data(filters, columns, income, expense, net_profit_loss, company_currency) report_summary, primitive_summary = get_pl_summary( companies, "", income, expense, net_profit_loss, company_currency, filters, True @@ -350,7 +350,7 @@ def get_data(companies, root_type, balance_must_be, fiscal_year, filters=None, i gl_entries_by_account, accounts_by_name, accounts, - ignore_closing_entries=False, + ignore_closing_entries=ignore_closing_entries, root_type=root_type, ) @@ -469,10 +469,13 @@ def update_parent_account_names(accounts): for d in accounts: if d.account_number: - account_name = d.account_number + " - " + d.account_name + account_key = d.account_number + " - " + d.account_name else: - account_name = d.account_name - name_to_account_map[d.name] = account_name + account_key = d.account_name + + d.account_key = account_key + + name_to_account_map[d.name] = account_key for account in accounts: if account.parent_account: @@ -505,33 +508,26 @@ def get_subsidiary_companies(company): def get_accounts(root_type, companies): accounts = [] - added_accounts = [] for company in companies: - for account in frappe.get_all( - "Account", - fields=[ - "name", - "is_group", - "company", - "parent_account", - "lft", - "rgt", - "root_type", - "report_type", - "account_name", - "account_number", - ], - filters={"company": company, "root_type": root_type}, - ): - if account.account_number: - account_key = account.account_number + "-" + account.account_name - else: - account_key = account.account_name - - if account_key not in added_accounts: - accounts.append(account) - added_accounts.append(account_key) + accounts.extend( + frappe.get_all( + "Account", + fields=[ + "name", + "is_group", + "company", + "parent_account", + "lft", + "rgt", + "root_type", + "report_type", + "account_name", + "account_number", + ], + filters={"company": company, "root_type": root_type}, + ) + ) return accounts @@ -770,15 +766,17 @@ def add_total_row(out, root_type, balance_must_be, companies, company_currency): def filter_accounts(accounts, depth=10): parent_children_map = {} accounts_by_name = {} - for d in accounts: - if d.account_number: - account_name = d.account_number + " - " + d.account_name - else: - account_name = d.account_name - d["company_wise_opening_bal"] = defaultdict(float) - accounts_by_name[account_name] = d + added_accounts = [] - parent_children_map.setdefault(d.parent_account or None, []).append(d) + for d in accounts: + if d.account_key in added_accounts: + continue + + added_accounts.append(d.account_key) + d["company_wise_opening_bal"] = defaultdict(float) + accounts_by_name[d.account_key] = d + + parent_children_map.setdefault(d.parent_account_name or None, []).append(d) filtered_accounts = [] @@ -790,7 +788,7 @@ def filter_accounts(accounts, depth=10): for child in children: child.indent = level filtered_accounts.append(child) - add_to_list(child.name, level + 1) + add_to_list(child.account_key, level + 1) add_to_list(None, 0) diff --git a/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.js b/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.js index 3600db852f8..c28815df62e 100644 --- a/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.js +++ b/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.js @@ -9,6 +9,7 @@ frappe.query_reports["Customer Ledger Summary"] = { fieldtype: "Link", options: "Company", default: frappe.defaults.get_user_default("Company"), + reqd: 1, }, { fieldname: "from_date", 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 784575c080e..ad05d770314 100644 --- a/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py +++ b/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py @@ -4,7 +4,19 @@ import frappe from frappe import _, qb, scrub +from frappe.query_builder import Criterion, Tuple +from frappe.query_builder.functions import IfNull from frappe.utils import getdate, nowdate +from frappe.utils.nestedset import get_descendants_of + +from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import ( + get_accounting_dimensions, + get_dimension_with_children, +) + +TREE_DOCTYPES = frozenset( + ["Customer Group", "Terrirtory", "Supplier Group", "Sales Partner", "Sales Person", "Cost Center"] +) class PartyLedgerSummaryReport: @@ -13,59 +25,110 @@ class PartyLedgerSummaryReport: self.filters.from_date = getdate(self.filters.from_date or nowdate()) self.filters.to_date = getdate(self.filters.to_date or nowdate()) - if not self.filters.get("company"): - self.filters["company"] = frappe.db.get_single_value("Global Defaults", "default_company") - def run(self, args): - if self.filters.from_date > self.filters.to_date: - frappe.throw(_("From Date must be before To Date")) - self.filters.party_type = args.get("party_type") - self.party_naming_by = frappe.db.get_value(args.get("naming_by")[0], None, args.get("naming_by")[1]) + + self.validate_filters() + self.get_party_details() + + if not self.parties: + return [], [] self.get_gl_entries() - self.get_additional_columns() self.get_return_invoices() self.get_party_adjustment_amounts() + self.party_naming_by = frappe.db.get_single_value(args.get("naming_by")[0], args.get("naming_by")[1]) columns = self.get_columns() data = self.get_data() + return columns, data - def get_additional_columns(self): + def validate_filters(self): + if not self.filters.get("company"): + frappe.throw(_("{0} is mandatory").format(_("Company"))) + + if self.filters.from_date > self.filters.to_date: + frappe.throw(_("From Date must be before To Date")) + + self.update_hierarchical_filters() + + def update_hierarchical_filters(self): + for doctype in TREE_DOCTYPES: + key = scrub(doctype) + if self.filters.get(key): + self.filters[key] = get_children(doctype, self.filters[key]) + + def get_party_details(self): """ Additional Columns for 'User Permission' based access control """ + self.parties = [] + self.party_details = frappe._dict() + party_type = self.filters.party_type - if self.filters.party_type == "Customer": - self.territories = frappe._dict({}) - self.customer_group = frappe._dict({}) + doctype = qb.DocType(party_type) + conditions = self.get_party_conditions(doctype) + query = ( + qb.from_(doctype) + .select(doctype.name.as_("party"), f"{scrub(party_type)}_name") + .where(Criterion.all(conditions)) + ) - customer = qb.DocType("Customer") - result = ( - frappe.qb.from_(customer) - .select( - customer.name, customer.territory, customer.customer_group, customer.default_sales_partner - ) - .where(customer.disabled == 0) - .run(as_dict=True) + from frappe.desk.reportview import build_match_conditions + + query, params = query.walk() + match_conditions = build_match_conditions(party_type) + + if match_conditions: + query += "and" + match_conditions + + party_details = frappe.db.sql(query, params, as_dict=True) + + for row in party_details: + self.parties.append(row.party) + self.party_details[row.party] = row + + def get_party_conditions(self, doctype): + conditions = [] + group_field = "customer_group" if self.filters.party_type == "Customer" else "supplier_group" + + if self.filters.party: + conditions.append(doctype.name == self.filters.party) + + if self.filters.territory: + conditions.append(doctype.territory.isin(self.filters.territory)) + + if self.filters.get(group_field): + conditions.append(doctype.get(group_field).isin(self.filters.get(group_field))) + + if self.filters.payment_terms_template: + conditions.append(doctype.payment_terms == self.filters.payment_terms_template) + + if self.filters.sales_partner: + conditions.append(doctype.default_sales_partner.isin(self.filters.sales_partner)) + + if self.filters.sales_person: + sales_team = qb.DocType("Sales Team") + sales_invoice = qb.DocType("Sales Invoice") + + customers = ( + qb.from_(sales_team) + .select(sales_team.parent) + .where(sales_team.sales_person.isin(self.filters.sales_person)) + .where(sales_team.parenttype == "Customer") + ) + ( + qb.from_(sales_team) + .join(sales_invoice) + .on(sales_team.parent == sales_invoice.name) + .select(sales_invoice.customer) + .where(sales_team.sales_person.isin(self.filters.sales_person)) + .where(sales_team.parenttype == "Sales Invoice") ) - for x in result: - self.territories[x.name] = x.territory - self.customer_group[x.name] = x.customer_group - else: - self.supplier_group = frappe._dict({}) - supplier = qb.DocType("Supplier") - result = ( - frappe.qb.from_(supplier) - .select(supplier.name, supplier.supplier_group) - .where(supplier.disabled == 0) - .run(as_dict=True) - ) + conditions.append(doctype.name.isin(customers)) - for x in result: - self.supplier_group[x.name] = x.supplier_group + return conditions def get_columns(self): columns = [ @@ -188,12 +251,13 @@ class PartyLedgerSummaryReport: self.party_data = frappe._dict({}) for gle in self.gl_entries: + party_details = self.party_details.get(gle.party) self.party_data.setdefault( gle.party, frappe._dict( { - "party": gle.party, - "party_name": gle.party_name, + **party_details, + "party_name": gle.party, "opening_balance": 0, "invoiced_amount": 0, "paid_amount": 0, @@ -204,12 +268,6 @@ class PartyLedgerSummaryReport: ), ) - if self.filters.party_type == "Customer": - self.party_data[gle.party].update({"territory": self.territories.get(gle.party)}) - self.party_data[gle.party].update({"customer_group": self.customer_group.get(gle.party)}) - else: - self.party_data[gle.party].update({"supplier_group": self.supplier_group.get(gle.party)}) - amount = gle.get(invoice_dr_or_cr) - gle.get(reverse_dr_or_cr) self.party_data[gle.party].closing_balance += amount @@ -246,164 +304,120 @@ class PartyLedgerSummaryReport: return out def get_gl_entries(self): - conditions = self.prepare_conditions() - join = join_field = "" - if self.filters.party_type == "Customer": - join_field = ", p.customer_name as party_name" - join = "left join `tabCustomer` p on gle.party = p.name" - elif self.filters.party_type == "Supplier": - join_field = ", p.supplier_name as party_name" - join = "left join `tabSupplier` p on gle.party = p.name" - - self.gl_entries = frappe.db.sql( - f""" - select - gle.posting_date, gle.party, gle.voucher_type, gle.voucher_no, gle.against_voucher_type, - gle.against_voucher, gle.debit, gle.credit, gle.is_opening {join_field} - from `tabGL Entry` gle - {join} - where - gle.docstatus < 2 and gle.is_cancelled = 0 and gle.party_type=%(party_type)s and ifnull(gle.party, '') != '' - and gle.posting_date <= %(to_date)s {conditions} - order by gle.posting_date - """, - self.filters, - as_dict=True, + gle = qb.DocType("GL Entry") + query = ( + qb.from_(gle) + .select( + gle.posting_date, + gle.party, + gle.voucher_type, + gle.voucher_no, + gle.debit, + gle.credit, + gle.is_opening, + ) + .where( + (gle.docstatus < 2) + & (gle.is_cancelled == 0) + & (gle.party_type == self.filters.party_type) + & (IfNull(gle.party, "") != "") + & (gle.posting_date <= self.filters.to_date) + & (gle.party.isin(self.parties)) + ) ) - def prepare_conditions(self): - conditions = [""] + query = self.prepare_conditions(query) + self.gl_entries = query.run(as_dict=True) + + def prepare_conditions(self, query): + gle = qb.DocType("GL Entry") if self.filters.company: - conditions.append("gle.company=%(company)s") + query = query.where(gle.company == self.filters.company) if self.filters.finance_book: - conditions.append("ifnull(finance_book,'') in (%(finance_book)s, '')") + query = query.where(IfNull(gle.finance_book, "") == self.filters.finance_book) - if self.filters.get("party"): - conditions.append("party=%(party)s") + if self.filters.cost_center: + query = query.where((gle.cost_center).isin(self.filters.cost_center)) - if self.filters.party_type == "Customer": - if self.filters.get("customer_group"): - lft, rgt = frappe.get_cached_value( - "Customer Group", self.filters["customer_group"], ["lft", "rgt"] - ) + if self.filters.project: + query = query.where((gle.project).isin(self.filters.project)) - conditions.append( - f"""party in (select name from tabCustomer - where exists(select name from `tabCustomer Group` where lft >= {lft} and rgt <= {rgt} - and name=tabCustomer.customer_group))""" - ) + accounting_dimensions = get_accounting_dimensions(as_list=False) - if self.filters.get("territory"): - lft, rgt = frappe.db.get_value("Territory", self.filters.get("territory"), ["lft", "rgt"]) + if accounting_dimensions: + for dimension in accounting_dimensions: + if self.filters.get(dimension.fieldname): + if frappe.get_cached_value("DocType", dimension.document_type, "is_tree"): + self.filters[dimension.fieldname] = get_dimension_with_children( + dimension.document_type, self.filters.get(dimension.fieldname) + ) + query = query.where( + (gle[dimension.fieldname]).isin(self.filters.get(dimension.fieldname)) + ) + else: + query = query.where( + (gle[dimension.fieldname]).isin(self.filters.get(dimension.fieldname)) + ) - conditions.append( - f"""party in (select name from tabCustomer - where exists(select name from `tabTerritory` where lft >= {lft} and rgt <= {rgt} - and name=tabCustomer.territory))""" - ) - - if self.filters.get("payment_terms_template"): - conditions.append( - "party in (select name from tabCustomer where payment_terms=%(payment_terms_template)s)" - ) - - if self.filters.get("sales_partner"): - conditions.append( - "party in (select name from tabCustomer where default_sales_partner=%(sales_partner)s)" - ) - - if self.filters.get("sales_person"): - lft, rgt = frappe.db.get_value( - "Sales Person", self.filters.get("sales_person"), ["lft", "rgt"] - ) - - conditions.append( - """exists(select name from `tabSales Team` steam where - steam.sales_person in (select name from `tabSales Person` where lft >= {} and rgt <= {}) - and ((steam.parent = voucher_no and steam.parenttype = voucher_type) - or (steam.parent = against_voucher and steam.parenttype = against_voucher_type) - or (steam.parent = party and steam.parenttype = 'Customer')))""".format(lft, rgt) - ) - - if self.filters.party_type == "Supplier": - if self.filters.get("supplier_group"): - conditions.append( - """party in (select name from tabSupplier - where supplier_group=%(supplier_group)s)""" - ) - - return " and ".join(conditions) + return query def get_return_invoices(self): doctype = "Sales Invoice" if self.filters.party_type == "Customer" else "Purchase Invoice" - self.return_invoices = [ - d.name - for d in frappe.get_all( - doctype, - filters={ - "is_return": 1, - "docstatus": 1, - "posting_date": ["between", [self.filters.from_date, self.filters.to_date]], - }, - ) - ] + filters = ( + { + "is_return": 1, + "docstatus": 1, + "posting_date": ["between", [self.filters.from_date, self.filters.to_date]], + f"{scrub(self.filters.party_type)}": ["in", self.parties], + }, + ) + + self.return_invoices = frappe.get_all(doctype, filters=filters, pluck="name") def get_party_adjustment_amounts(self): - conditions = self.prepare_conditions() 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("") - else: - # escape '%' in account name - # ignoring frappe.db.escape as it replaces single quotes with double quotes - income_or_expense_accounts = [x.replace("%", "%%") for x in income_or_expense_accounts] - - 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( - f""" - select - posting_date, account, party, voucher_type, voucher_no, debit, credit - from - `tabGL Entry` - where - docstatus < 2 and is_cancelled = 0 - and (voucher_type, voucher_no) in ( - {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} - ) - """, - self.filters, - as_dict=True, - ) + current_period_vouchers = set() + adjustment_voucher_entries = {} self.party_adjustment_details = {} self.party_adjustment_accounts = set() - adjustment_voucher_entries = {} + + for gle in self.gl_entries: + if ( + gle.is_opening != "Yes" + and gle.posting_date >= self.filters.from_date + and gle.posting_date <= self.filters.to_date + ): + current_period_vouchers.add((gle.voucher_type, gle.voucher_no)) + adjustment_voucher_entries.setdefault((gle.voucher_type, gle.voucher_no), []).append(gle) + + if not current_period_vouchers: + return + + gl = qb.DocType("GL Entry") + query = ( + qb.from_(gl) + .select(gl.voucher_type, gl.voucher_no) + .where( + (gl.docstatus < 2) + & (gl.is_cancelled == 0) + & (gl.posting_date.gte(self.filters.from_date)) + & (gl.posting_date.lte(self.filters.to_date)) + & (Tuple((gl.voucher_type, gl.voucher_no)).isin(current_period_vouchers)) + & (IfNull(gl.party, "") == "") + ) + ) + query = self.prepare_conditions(query) + gl_entries = query.run(as_dict=True) + for gle in gl_entries: - adjustment_voucher_entries.setdefault((gle.voucher_type, gle.voucher_no), []) adjustment_voucher_entries[(gle.voucher_type, gle.voucher_no)].append(gle) for voucher_gl_entries in adjustment_voucher_entries.values(): @@ -440,9 +454,16 @@ class PartyLedgerSummaryReport: self.party_adjustment_details[party][account] += amount +def get_children(doctype, value): + children = get_descendants_of(doctype, value) + + return [value, *children] + + def execute(filters=None): args = { "party_type": "Customer", "naming_by": ["Selling Settings", "cust_master_name"], } + return PartyLedgerSummaryReport(filters).run(args) diff --git a/erpnext/accounts/report/customer_ledger_summary/test_customer_ledger_summary.py b/erpnext/accounts/report/customer_ledger_summary/test_customer_ledger_summary.py new file mode 100644 index 00000000000..ce47793bbd5 --- /dev/null +++ b/erpnext/accounts/report/customer_ledger_summary/test_customer_ledger_summary.py @@ -0,0 +1,152 @@ +import frappe +from frappe import qb +from frappe.tests.utils import FrappeTestCase +from frappe.utils import add_days, flt, getdate, today + +from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry +from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice +from erpnext.accounts.report.customer_ledger_summary.customer_ledger_summary import execute +from erpnext.accounts.test.accounts_mixin import AccountsTestMixin + + +class TestCustomerLedgerSummary(FrappeTestCase, AccountsTestMixin): + def setUp(self): + self.create_company() + self.create_customer() + self.create_item() + self.clear_old_entries() + + def tearDown(self): + frappe.db.rollback() + + def create_sales_invoice(self, do_not_submit=False, **args): + 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=100, + qty=10, + price_list_rate=100, + do_not_save=1, + **args, + ) + si = si.save() + if not do_not_submit: + si = si.submit() + return si + + def create_payment_entry(self, docname, do_not_submit=False): + pe = get_payment_entry("Sales Invoice", docname, bank_account=self.cash, party_amount=40) + pe.paid_from = self.debit_to + pe.insert() + if not do_not_submit: + pe.submit() + return pe + + def create_credit_note(self, docname, do_not_submit=False): + credit_note = create_sales_invoice( + company=self.company, + customer=self.customer, + item=self.item, + qty=-1, + debit_to=self.debit_to, + cost_center=self.cost_center, + is_return=1, + return_against=docname, + do_not_submit=do_not_submit, + ) + + return credit_note + + def test_ledger_summary_basic_output(self): + filters = {"company": self.company, "from_date": today(), "to_date": today()} + + si = self.create_sales_invoice(do_not_submit=True) + si.save().submit() + + expected = { + "party": "_Test Customer", + "party_name": "_Test Customer", + "opening_balance": 0, + "invoiced_amount": 1000.0, + "paid_amount": 0, + "return_amount": 0, + "closing_balance": 1000.0, + "currency": "INR", + "customer_name": "_Test Customer", + } + + report = execute(filters)[1] + self.assertEqual(len(report), 1) + for field in expected: + with self.subTest(field=field): + self.assertEqual(report[0].get(field), expected.get(field)) + + def test_summary_with_return_and_payment(self): + filters = {"company": self.company, "from_date": today(), "to_date": today()} + + si = self.create_sales_invoice(do_not_submit=True) + si.save().submit() + + expected = { + "party": "_Test Customer", + "party_name": "_Test Customer", + "opening_balance": 0, + "invoiced_amount": 1000.0, + "paid_amount": 0, + "return_amount": 0, + "closing_balance": 1000.0, + "currency": "INR", + "customer_name": "_Test Customer", + } + + report = execute(filters)[1] + self.assertEqual(len(report), 1) + for field in expected: + with self.subTest(field=field): + self.assertEqual(report[0].get(field), expected.get(field)) + + cr_note = self.create_credit_note(si.name, True) + cr_note.items[0].qty = -2 + cr_note.save().submit() + + expected_after_cr_note = { + "party": "_Test Customer", + "party_name": "_Test Customer", + "opening_balance": 0, + "invoiced_amount": 1000.0, + "paid_amount": 0, + "return_amount": 200.0, + "closing_balance": 800.0, + "currency": "INR", + } + report = execute(filters)[1] + self.assertEqual(len(report), 1) + for field in expected_after_cr_note: + with self.subTest(field=field): + self.assertEqual(report[0].get(field), expected_after_cr_note.get(field)) + + pe = self.create_payment_entry(si.name, True) + pe.paid_amount = 500 + pe.save().submit() + + expected_after_cr_and_payment = { + "party": "_Test Customer", + "party_name": "_Test Customer", + "opening_balance": 0, + "invoiced_amount": 1000.0, + "paid_amount": 500.0, + "return_amount": 200.0, + "closing_balance": 300.0, + "currency": "INR", + } + + report = execute(filters)[1] + self.assertEqual(len(report), 1) + for field in expected_after_cr_and_payment: + with self.subTest(field=field): + self.assertEqual(report[0].get(field), expected_after_cr_and_payment.get(field)) diff --git a/erpnext/accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.py b/erpnext/accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.py index c6d9eac5966..1c85061a551 100644 --- a/erpnext/accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.py +++ b/erpnext/accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.py @@ -122,21 +122,24 @@ class Deferred_Item: """ simulate future posting by creating dummy gl entries. starts from the last posting date. """ - if self.service_start_date != self.service_end_date: - if add_days(self.last_entry_date, 1) < self.period_list[-1].to_date: - self.estimate_for_period_list = get_period_list( - self.filters.from_fiscal_year, - self.filters.to_fiscal_year, - add_days(self.last_entry_date, 1), - self.period_list[-1].to_date, - "Date Range", - "Monthly", - company=self.filters.company, - ) - for period in self.estimate_for_period_list: - amount = self.calculate_amount(period.from_date, period.to_date) - gle = self.make_dummy_gle(period.key, period.to_date, amount) - self.gle_entries.append(gle) + if ( + self.service_start_date != self.service_end_date + and add_days(self.last_entry_date, 1) < self.service_end_date + ): + self.estimate_for_period_list = get_period_list( + self.filters.from_fiscal_year, + self.filters.to_fiscal_year, + add_days(self.last_entry_date, 1), + self.service_end_date, + "Date Range", + "Monthly", + company=self.filters.company, + ) + + for period in self.estimate_for_period_list: + amount = self.calculate_amount(period.from_date, period.to_date) + gle = self.make_dummy_gle(period.key, period.to_date, amount) + self.gle_entries.append(gle) def calculate_item_revenue_expense_for_period(self): """ @@ -304,6 +307,7 @@ class Deferred_Revenue_and_Expense_Report: .where( (inv.docstatus == 1) & (deferred_flag_field == 1) + & (inv.company == self.filters.company) & ( ( (self.period_list[0].from_date >= inv_item.service_start_date) diff --git a/erpnext/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.js b/erpnext/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.js index f6051d7e04f..1be58ad9d55 100644 --- a/erpnext/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.js +++ b/erpnext/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.js @@ -2,5 +2,27 @@ // For license information, please see license.txt frappe.query_reports["Delivered Items To Be Billed"] = { - filters: [], + filters: [ + { + label: __("Company"), + fieldname: "company", + fieldtype: "Link", + options: "Company", + reqd: 1, + default: frappe.defaults.get_default("Company"), + }, + { + label: __("As on Date"), + fieldname: "posting_date", + fieldtype: "Date", + reqd: 1, + default: frappe.datetime.get_today(), + }, + { + label: __("Delivery Note"), + fieldname: "delivery_note", + fieldtype: "Link", + options: "Delivery Note", + }, + ], }; diff --git a/erpnext/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py b/erpnext/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py index 59914dc29ac..d2e5ff28247 100644 --- a/erpnext/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py +++ b/erpnext/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py @@ -3,6 +3,7 @@ from frappe import _ +from pypika import Order from erpnext.accounts.report.non_billed_report import get_ordered_to_be_billed_data @@ -10,7 +11,7 @@ from erpnext.accounts.report.non_billed_report import get_ordered_to_be_billed_d def execute(filters=None): columns = get_column() args = get_args() - data = get_ordered_to_be_billed_data(args) + data = get_ordered_to_be_billed_data(args, filters) return columns, data @@ -76,13 +77,6 @@ def get_column(): "options": "Project", "width": 120, }, - { - "label": _("Company"), - "fieldname": "company", - "fieldtype": "Link", - "options": "Company", - "width": 120, - }, ] @@ -92,5 +86,6 @@ def get_args(): "party": "customer", "date": "posting_date", "order": "name", - "order_by": "desc", + "order_by": Order.desc, + "reference_field": "delivery_note", } diff --git a/erpnext/accounts/report/financial_statements.html b/erpnext/accounts/report/financial_statements.html index 2bb09cf0dc5..dc1d0093bce 100644 --- a/erpnext/accounts/report/financial_statements.html +++ b/erpnext/accounts/report/financial_statements.html @@ -67,5 +67,5 @@

- Printed On {%= frappe.datetime.str_to_user(frappe.datetime.get_datetime_as_string()) %} + {%= __("Printed on {0}", [frappe.datetime.str_to_user(frappe.datetime.get_datetime_as_string())]) %}

diff --git a/erpnext/accounts/report/financial_statements.py b/erpnext/accounts/report/financial_statements.py index 6d7635979bb..0d1e185382d 100644 --- a/erpnext/accounts/report/financial_statements.py +++ b/erpnext/accounts/report/financial_statements.py @@ -2,13 +2,16 @@ # License: GNU General Public License v3. See license.txt +import copy import functools import math import re import frappe from frappe import _ +from frappe.query_builder.functions import Sum from frappe.utils import add_days, add_months, cint, cstr, flt, formatdate, get_first_day, getdate +from pypika.terms import ExistsCriterion from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import ( get_accounting_dimensions, @@ -181,12 +184,12 @@ def get_data( company, period_list[0]["year_start_date"] if only_current_fiscal_year else None, period_list[-1]["to_date"], - root.lft, - root.rgt, filters, gl_entries_by_account, - ignore_closing_entries=ignore_closing_entries, + root.lft, + root.rgt, root_type=root_type, + ignore_closing_entries=ignore_closing_entries, ) calculate_values( @@ -333,8 +336,8 @@ def filter_out_zero_value_rows(data, parent_children_map, show_zero_values=False def add_total_row(out, root_type, balance_must_be, period_list, company_currency): total_row = { - "account_name": _("Total {0} ({1})").format(_(root_type), _(balance_must_be)), - "account": _("Total {0} ({1})").format(_(root_type), _(balance_must_be)), + "account_name": "'" + _("Total {0} ({1})").format(_(root_type), _(balance_must_be)) + "'", + "account": "'" + _("Total {0} ({1})").format(_(root_type), _(balance_must_be)) + "'", "currency": company_currency, "opening_balance": 0.0, } @@ -419,127 +422,150 @@ def set_gl_entries_by_account( company, from_date, to_date, - root_lft, - root_rgt, filters, gl_entries_by_account, + root_lft=None, + root_rgt=None, + root_type=None, ignore_closing_entries=False, ignore_opening_entries=False, - root_type=None, + group_by_account=False, ): """Returns a dict like { "account": [gl entries], ... }""" gl_entries = [] - account_filters = { - "company": company, - "is_group": 0, - "lft": (">=", root_lft), - "rgt": ("<=", root_rgt), - } - - if root_type: - account_filters.update( - { - "root_type": root_type, - } + # For balance sheet + ignore_closing_balances = frappe.db.get_single_value( + "Accounts Settings", "ignore_account_closing_balance" + ) + if not from_date and not ignore_closing_balances: + last_period_closing_voucher = frappe.db.get_all( + "Period Closing Voucher", + filters={ + "docstatus": 1, + "company": filters.company, + "period_end_date": ("<", filters["period_start_date"]), + }, + fields=["period_end_date", "name"], + order_by="period_end_date desc", + limit=1, ) + if last_period_closing_voucher: + gl_entries += get_accounting_entries( + "Account Closing Balance", + from_date, + to_date, + filters, + root_lft, + root_rgt, + root_type, + ignore_closing_entries, + last_period_closing_voucher[0].name, + group_by_account=group_by_account, + ) + from_date = add_days(last_period_closing_voucher[0].period_end_date, 1) + ignore_opening_entries = True - accounts_list = frappe.db.get_all( - "Account", - filters=account_filters, - pluck="name", + gl_entries += get_accounting_entries( + "GL Entry", + from_date, + to_date, + filters, + root_lft, + root_rgt, + root_type, + ignore_closing_entries, + ignore_opening_entries=ignore_opening_entries, + group_by_account=group_by_account, ) - if accounts_list: - # For balance sheet - ignore_closing_balances = frappe.db.get_single_value( - "Accounts Settings", "ignore_account_closing_balance" - ) - if not from_date and not ignore_closing_balances: - last_period_closing_voucher = frappe.db.get_all( - "Period Closing Voucher", - filters={ - "docstatus": 1, - "company": filters.company, - "posting_date": ("<", filters["period_start_date"]), - }, - fields=["posting_date", "name"], - order_by="posting_date desc", - limit=1, - ) - if last_period_closing_voucher: - gl_entries += get_accounting_entries( - "Account Closing Balance", - from_date, - to_date, - accounts_list, - filters, - ignore_closing_entries, - last_period_closing_voucher[0].name, - ) - from_date = add_days(last_period_closing_voucher[0].posting_date, 1) - ignore_opening_entries = True + if filters and filters.get("presentation_currency"): + convert_to_presentation_currency(gl_entries, get_currency(filters)) - gl_entries += get_accounting_entries( - "GL Entry", - from_date, - to_date, - accounts_list, - filters, - ignore_closing_entries, - ignore_opening_entries=ignore_opening_entries, - ) + for entry in gl_entries: + gl_entries_by_account.setdefault(entry.account, []).append(entry) - if filters and filters.get("presentation_currency"): - convert_to_presentation_currency(gl_entries, get_currency(filters)) - - for entry in gl_entries: - gl_entries_by_account.setdefault(entry.account, []).append(entry) - - return gl_entries_by_account + return gl_entries_by_account def get_accounting_entries( doctype, from_date, to_date, - accounts, filters, - ignore_closing_entries, + root_lft=None, + root_rgt=None, + root_type=None, + ignore_closing_entries=None, period_closing_voucher=None, ignore_opening_entries=False, + group_by_account=False, ): gl_entry = frappe.qb.DocType(doctype) query = ( frappe.qb.from_(gl_entry) .select( gl_entry.account, - gl_entry.debit, - gl_entry.credit, - gl_entry.debit_in_account_currency, - gl_entry.credit_in_account_currency, + gl_entry.debit if not group_by_account else Sum(gl_entry.debit).as_("debit"), + gl_entry.credit if not group_by_account else Sum(gl_entry.credit).as_("credit"), + gl_entry.debit_in_account_currency + if not group_by_account + else Sum(gl_entry.debit_in_account_currency).as_("debit_in_account_currency"), + gl_entry.credit_in_account_currency + if not group_by_account + else Sum(gl_entry.credit_in_account_currency).as_("credit_in_account_currency"), gl_entry.account_currency, ) .where(gl_entry.company == filters.company) ) + ignore_is_opening = frappe.db.get_single_value( + "Accounts Settings", "ignore_is_opening_check_for_reporting" + ) + if doctype == "GL Entry": query = query.select(gl_entry.posting_date, gl_entry.is_opening, gl_entry.fiscal_year) query = query.where(gl_entry.is_cancelled == 0) query = query.where(gl_entry.posting_date <= to_date) - if ignore_opening_entries: + if ignore_opening_entries and not ignore_is_opening: query = query.where(gl_entry.is_opening == "No") else: query = query.select(gl_entry.closing_date.as_("posting_date")) query = query.where(gl_entry.period_closing_voucher == period_closing_voucher) query = apply_additional_conditions(doctype, query, from_date, ignore_closing_entries, filters) - query = query.where(gl_entry.account.isin(accounts)) - entries = query.run(as_dict=True) + if (root_lft and root_rgt) or root_type: + account_filter_query = get_account_filter_query(root_lft, root_rgt, root_type, gl_entry) + query = query.where(ExistsCriterion(account_filter_query)) - return entries + from frappe.desk.reportview import build_match_conditions + + query, params = query.walk() + match_conditions = build_match_conditions(doctype) + + if match_conditions: + query += "and" + match_conditions + + if group_by_account: + query += " GROUP BY `account`" + + return frappe.db.sql(query, params, as_dict=True) + + +def get_account_filter_query(root_lft, root_rgt, root_type, gl_entry): + acc = frappe.qb.DocType("Account") + exists_query = ( + frappe.qb.from_(acc).select(acc.name).where(acc.name == gl_entry.account).where(acc.is_group == 0) + ) + if root_lft and root_rgt: + exists_query = exists_query.where(acc.lft >= root_lft).where(acc.rgt <= root_rgt) + + if root_type: + exists_query = exists_query.where(acc.root_type == root_type) + + return exists_query def apply_additional_conditions(doctype, query, from_date, ignore_closing_entries, filters): @@ -613,11 +639,11 @@ def get_cost_centers_with_children(cost_centers): return list(set(all_cost_centers)) -def get_columns(periodicity, period_list, accumulated_values=1, company=None): +def get_columns(periodicity, period_list, accumulated_values=1, company=None, cash_flow=False): columns = [ { - "fieldname": "account", - "label": _("Account"), + "fieldname": "account" if not cash_flow else "section", + "label": _("Account") if not cash_flow else _("Section"), "fieldtype": "Link", "options": "Account", "width": 300, @@ -665,3 +691,67 @@ def get_filtered_list_for_consolidated_report(filters, period_list): filtered_summary_list.append(period) return filtered_summary_list + + +def compute_growth_view_data(data, columns): + data_copy = copy.deepcopy(data) + + for row_idx in range(len(data_copy)): + for column_idx in range(1, len(columns)): + previous_period_key = columns[column_idx - 1].get("key") + current_period_key = columns[column_idx].get("key") + current_period_value = data_copy[row_idx].get(current_period_key) + previous_period_value = data_copy[row_idx].get(previous_period_key) + annual_growth = 0 + + if current_period_value is None: + data[row_idx][current_period_key] = None + continue + + if previous_period_value == 0 and current_period_value > 0: + annual_growth = 1 + + elif previous_period_value > 0: + annual_growth = (current_period_value - previous_period_value) / previous_period_value + + growth_percent = round(annual_growth * 100, 2) + + data[row_idx][current_period_key] = growth_percent + + +def compute_margin_view_data(data, columns, accumulated_values): + if not columns: + return + + if not accumulated_values: + columns.append({"key": "total"}) + + data_copy = copy.deepcopy(data) + + base_row = None + for row in data_copy: + if row.get("account_name") == _("Income"): + base_row = row + break + + if not base_row: + return + + for row_idx in range(len(data_copy)): + # Taking the total income from each column (for all the financial years) as the base (100%) + row = data_copy[row_idx] + if not row: + continue + + for column in columns: + curr_period = column.get("key") + base_value = base_row[curr_period] + curr_value = row[curr_period] + + if curr_value is None or base_value <= 0: + data[row_idx][curr_period] = None + continue + + margin_percent = round((curr_value / base_value) * 100, 2) + + data[row_idx][curr_period] = margin_percent diff --git a/erpnext/accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.py b/erpnext/accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.py index 89cf7e504f0..9d079eb9ebd 100644 --- a/erpnext/accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.py +++ b/erpnext/accounts/report/general_and_payment_ledger_comparison/general_and_payment_ledger_comparison.py @@ -199,8 +199,7 @@ class General_Payment_Ledger_Comparison: dict( label=_("Voucher Type"), fieldname="voucher_type", - fieldtype="Link", - options="DocType", + fieldtype="Data", width="100", ) ) @@ -219,8 +218,7 @@ class General_Payment_Ledger_Comparison: dict( label=_("Party Type"), fieldname="party_type", - fieldtype="Link", - options="DocType", + fieldtype="Data", width="100", ) ) diff --git a/erpnext/accounts/report/general_ledger/general_ledger.html b/erpnext/accounts/report/general_ledger/general_ledger.html index 3c4e1a05c97..c40c607fbed 100644 --- a/erpnext/accounts/report/general_ledger/general_ledger.html +++ b/erpnext/accounts/report/general_ledger/general_ledger.html @@ -48,8 +48,9 @@
{% } %} -
{%= __("Remarks") %}: {%= data[i].remarks %} - {% if(data[i].bill_no) { %} + {% if(data[i].remarks) { %} +
{%= __("Remarks") %}: {%= data[i].remarks %} + {% } else if(data[i].bill_no) { %}
{%= __("Supplier Invoice No") %}: {%= data[i].bill_no %} {% } %} @@ -78,4 +79,4 @@ {% } %} -

Printed On {%= frappe.datetime.str_to_user(frappe.datetime.get_datetime_as_string()) %}

+

{%= __("Printed on {0}", [frappe.datetime.str_to_user(frappe.datetime.get_datetime_as_string())]) %}

diff --git a/erpnext/accounts/report/general_ledger/general_ledger.js b/erpnext/accounts/report/general_ledger/general_ledger.js index e202d5dfffd..6fa846910a6 100644 --- a/erpnext/accounts/report/general_ledger/general_ledger.js +++ b/erpnext/accounts/report/general_ledger/general_ledger.js @@ -66,13 +66,14 @@ frappe.query_reports["General Ledger"] = { fieldtype: "Autocomplete", options: Object.keys(frappe.boot.party_account_types), on_change: function () { - frappe.query_report.set_filter_value("party", ""); + frappe.query_report.set_filter_value("party", []); }, }, { fieldname: "party", label: __("Party"), fieldtype: "MultiSelectList", + options: "party_type", get_data: function (txt) { if (!frappe.query_report.filters) return; @@ -151,6 +152,7 @@ frappe.query_reports["General Ledger"] = { fieldname: "cost_center", label: __("Cost Center"), fieldtype: "MultiSelectList", + options: "Cost Center", get_data: function (txt) { return frappe.db.get_link_options("Cost Center", txt, { company: frappe.query_report.get_filter_value("company"), @@ -161,6 +163,7 @@ frappe.query_reports["General Ledger"] = { fieldname: "project", label: __("Project"), fieldtype: "MultiSelectList", + options: "Project", get_data: function (txt) { return frappe.db.get_link_options("Project", txt, { company: frappe.query_report.get_filter_value("company"), diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py index 2564eb0800f..a62ba2e3732 100644 --- a/erpnext/accounts/report/general_ledger/general_ledger.py +++ b/erpnext/accounts/report/general_ledger/general_ledger.py @@ -208,6 +208,10 @@ def get_gl_entries(filters, accounting_dimensions): def get_conditions(filters): conditions = [] + ignore_is_opening = frappe.db.get_single_value( + "Accounts Settings", "ignore_is_opening_check_for_reporting" + ) + if filters.get("account"): filters.account = get_accounts_with_children(filters.account) if filters.account: @@ -270,9 +274,15 @@ def get_conditions(filters): or filters.get("party") or filters.get("group_by") in ["Group by Account", "Group by Party"] ): - conditions.append("(posting_date >=%(from_date)s or is_opening = 'Yes')") + if not ignore_is_opening: + conditions.append("(posting_date >=%(from_date)s or is_opening = 'Yes')") + else: + conditions.append("posting_date >=%(from_date)s") - conditions.append("(posting_date <=%(to_date)s or is_opening = 'Yes')") + if not ignore_is_opening: + conditions.append("(posting_date <=%(to_date)s or is_opening = 'Yes')") + else: + conditions.append("posting_date <=%(to_date)s") if filters.get("project"): conditions.append("project in %(project)s") @@ -345,10 +355,18 @@ def get_accounts_with_children(accounts): return frappe.qb.from_(doctype).select(doctype.name).where(Criterion.any(conditions)).run(pluck=True) +def set_bill_no(gl_entries): + inv_details = get_supplier_invoice_details() + for gl in gl_entries: + gl["bill_no"] = inv_details.get(gl.get("against_voucher"), "") + + def get_data_with_opening_closing(filters, account_details, accounting_dimensions, gl_entries): data = [] totals_dict = get_totals_dict() + set_bill_no(gl_entries) + gle_map = initialize_gle_map(gl_entries, filters, totals_dict) totals, entries = get_accountwise_gle(filters, accounting_dimensions, gl_entries, gle_map, totals_dict) @@ -362,16 +380,21 @@ def get_data_with_opening_closing(filters, account_details, accounting_dimension if acc_dict.entries: # opening data.append({"debit_in_transaction_currency": None, "credit_in_transaction_currency": None}) - if filters.get("group_by") != "Group by Voucher": + if (not filters.get("group_by") and not filters.get("voucher_no")) or ( + filters.get("group_by") and filters.get("group_by") != "Group by Voucher" + ): data.append(acc_dict.totals.opening) data += acc_dict.entries # totals - data.append(acc_dict.totals.total) + if filters.get("group_by") or not filters.voucher_no: + data.append(acc_dict.totals.total) # closing - if filters.get("group_by") != "Group by Voucher": + if (not filters.get("group_by") and not filters.get("voucher_no")) or ( + filters.get("group_by") and filters.get("group_by") != "Group by Voucher" + ): data.append(acc_dict.totals.closing) data.append({"debit_in_transaction_currency": None, "credit_in_transaction_currency": None}) @@ -511,6 +534,7 @@ def get_accountwise_gle(filters, accounting_dimensions, gl_entries, gle_map, tot for dim in accounting_dimensions: keylist.append(gle.get(dim)) keylist.append(gle.get("cost_center")) + keylist.append(gle.get("project")) key = tuple(keylist) if key not in consolidated_gle: @@ -536,7 +560,6 @@ def get_account_type_map(company): def get_result_as_list(data, filters): balance, _balance_in_account_currency = 0, 0 - inv_details = get_supplier_invoice_details() for d in data: if not d.get("posting_date"): @@ -546,7 +569,6 @@ def get_result_as_list(data, filters): d["balance"] = balance d["account_currency"] = filters.account_currency - d["bill_no"] = inv_details.get(d.get("against_voucher"), "") return data @@ -658,10 +680,11 @@ def get_columns(filters): {"label": _("Against Account"), "fieldname": "against", "width": 120}, {"label": _("Party Type"), "fieldname": "party_type", "width": 100}, {"label": _("Party"), "fieldname": "party", "width": 100}, - {"label": _("Project"), "options": "Project", "fieldname": "project", "width": 100}, ] if filters.get("include_dimensions"): + columns.append({"label": _("Project"), "options": "Project", "fieldname": "project", "width": 100}) + for dim in get_accounting_dimensions(as_list=False): columns.append( {"label": _(dim.label), "options": dim.label, "fieldname": dim.fieldname, "width": 100} diff --git a/erpnext/accounts/report/gross_profit/gross_profit.js b/erpnext/accounts/report/gross_profit/gross_profit.js index ad194ee90a2..0ddb95fff2f 100644 --- a/erpnext/accounts/report/gross_profit/gross_profit.js +++ b/erpnext/accounts/report/gross_profit/gross_profit.js @@ -67,6 +67,7 @@ frappe.query_reports["Gross Profit"] = { fieldname: "cost_center", label: __("Cost Center"), fieldtype: "MultiSelectList", + options: "Cost Center", get_data: function (txt) { return frappe.db.get_link_options("Cost Center", txt, { company: frappe.query_report.get_filter_value("company"), @@ -77,6 +78,7 @@ frappe.query_reports["Gross Profit"] = { fieldname: "project", label: __("Project"), fieldtype: "MultiSelectList", + options: "Project", get_data: function (txt) { return frappe.db.get_link_options("Project", txt, { company: frappe.query_report.get_filter_value("company"), diff --git a/erpnext/accounts/report/gross_profit/gross_profit.json b/erpnext/accounts/report/gross_profit/gross_profit.json index 0730ffd77e5..dfb7a991e3e 100644 --- a/erpnext/accounts/report/gross_profit/gross_profit.json +++ b/erpnext/accounts/report/gross_profit/gross_profit.json @@ -1,5 +1,5 @@ { - "add_total_row": 1, + "add_total_row": 0, "columns": [], "creation": "2013-02-25 17:03:34", "disable_prepared_report": 0, @@ -9,7 +9,7 @@ "filters": [], "idx": 3, "is_standard": "Yes", - "modified": "2022-02-11 10:18:36.956558", + "modified": "2025-01-27 18:40:24.493829", "modified_by": "Administrator", "module": "Accounts", "name": "Gross Profit", diff --git a/erpnext/accounts/report/gross_profit/gross_profit.py b/erpnext/accounts/report/gross_profit/gross_profit.py index a9039a9cada..fe17924d527 100644 --- a/erpnext/accounts/report/gross_profit/gross_profit.py +++ b/erpnext/accounts/report/gross_profit/gross_profit.py @@ -178,7 +178,14 @@ def get_data_when_grouped_by_invoice(columns, gross_profit_data, filters, group_ # removing Item Code and Item Name columns del columns[4:6] + total_base_amount = 0 + total_buying_amount = 0 + for src in gross_profit_data.si_list: + if src.indent == 1: + total_base_amount += src.base_amount or 0.0 + total_buying_amount += src.buying_amount or 0.0 + row = frappe._dict() row.indent = src.indent row.parent_invoice = src.parent_invoice @@ -189,17 +196,57 @@ def get_data_when_grouped_by_invoice(columns, gross_profit_data, filters, group_ data.append(row) + total_gross_profit = total_base_amount - total_buying_amount + data.append( + frappe._dict( + { + "sales_invoice": "Total", + "qty": None, + "avg._selling_rate": None, + "valuation_rate": None, + "selling_amount": total_base_amount, + "buying_amount": total_buying_amount, + "gross_profit": total_gross_profit, + "gross_profit_%": flt( + (total_gross_profit / total_base_amount) * 100.0, + cint(frappe.db.get_default("currency_precision")) or 3, + ) + if total_base_amount + else 0, + } + ) + ) + def get_data_when_not_grouped_by_invoice(gross_profit_data, filters, group_wise_columns, data): - for src in gross_profit_data.grouped_data: - row = [] - for col in group_wise_columns.get(scrub(filters.group_by)): - row.append(src.get(col)) + total_base_amount = 0 + total_buying_amount = 0 - row.append(filters.currency) + group_columns = group_wise_columns.get(scrub(filters.group_by)) + + for src in gross_profit_data.grouped_data: + total_base_amount += src.base_amount or 0.00 + total_buying_amount += src.buying_amount or 0.00 + + row = [src.get(col) for col in group_columns] + [filters.currency] data.append(row) + total_gross_profit = total_base_amount - total_buying_amount + currency_precision = cint(frappe.db.get_default("currency_precision")) or 3 + gross_profit_percent = (total_gross_profit / total_base_amount * 100.0) if total_base_amount else 0 + + total_row = { + group_columns[0]: "Total", + "base_amount": total_base_amount, + "buying_amount": total_buying_amount, + "gross_profit": total_gross_profit, + "gross_profit_percent": flt(gross_profit_percent, currency_precision), + } + + total_row = [total_row.get(col, None) for col in [*group_columns, "currency"]] + data.append(total_row) + def get_columns(group_wise_columns, filters): columns = [] @@ -421,10 +468,10 @@ class GrossProfitGenerator: self.load_invoice_items() self.get_delivery_notes() + self.load_product_bundle() if filters.group_by == "Invoice": self.group_items_by_invoice() - self.load_product_bundle() self.load_non_stock_items() self.get_returned_invoice_items() self.process() @@ -440,6 +487,7 @@ class GrossProfitGenerator: if grouped_by_invoice: buying_amount = 0 + base_amount = 0 for row in reversed(self.si_list): if self.filters.get("group_by") == "Monthly": @@ -480,12 +528,11 @@ class GrossProfitGenerator: else: row.buying_amount = flt(self.get_buying_amount(row, row.item_code), self.currency_precision) - if grouped_by_invoice: - if row.indent == 1.0: - buying_amount += row.buying_amount - elif row.indent == 0.0: - row.buying_amount = buying_amount - buying_amount = 0 + if grouped_by_invoice and row.indent == 0.0: + row.buying_amount = buying_amount + row.base_amount = base_amount + buying_amount = 0 + base_amount = 0 # get buying rate if flt(row.qty): @@ -495,11 +542,19 @@ class GrossProfitGenerator: if self.is_not_invoice_row(row): row.buying_rate, row.base_rate = 0.0, 0.0 + if self.is_not_invoice_row(row): + self.update_return_invoices(row) + + if grouped_by_invoice and row.indent == 1.0: + buying_amount += row.buying_amount + base_amount += row.base_amount + # calculate gross profit row.gross_profit = flt(row.base_amount - row.buying_amount, self.currency_precision) if row.base_amount: row.gross_profit_percent = flt( - (row.gross_profit / row.base_amount) * 100.0, self.currency_precision + (row.gross_profit / row.base_amount) * 100.0, + self.currency_precision, ) else: row.gross_profit_percent = 0.0 @@ -510,33 +565,29 @@ class GrossProfitGenerator: if self.grouped: self.get_average_rate_based_on_group_by() + def update_return_invoices(self, row): + if row.parent in self.returned_invoices and row.item_code in self.returned_invoices[row.parent]: + returned_item_rows = self.returned_invoices[row.parent][row.item_code] + for returned_item_row in returned_item_rows: + # returned_items 'qty' should be stateful + if returned_item_row.qty != 0: + if row.qty >= abs(returned_item_row.qty): + row.qty += returned_item_row.qty + row.base_amount += flt(returned_item_row.base_amount, self.currency_precision) + returned_item_row.qty = 0 + returned_item_row.base_amount = 0 + + else: + row.qty = 0 + row.base_amount = 0 + returned_item_row.qty += row.qty + returned_item_row.base_amount += row.base_amount + + row.buying_amount = flt(flt(row.qty) * flt(row.buying_rate), self.currency_precision) + def get_average_rate_based_on_group_by(self): for key in list(self.grouped): - if self.filters.get("group_by") == "Invoice": - for row in self.grouped[key]: - if row.indent == 1.0: - if ( - row.parent in self.returned_invoices - and row.item_code in self.returned_invoices[row.parent] - ): - returned_item_rows = self.returned_invoices[row.parent][row.item_code] - for returned_item_row in returned_item_rows: - # returned_items 'qty' should be stateful - if returned_item_row.qty != 0: - if row.qty >= abs(returned_item_row.qty): - row.qty += returned_item_row.qty - returned_item_row.qty = 0 - else: - row.qty = 0 - returned_item_row.qty += row.qty - row.base_amount += flt(returned_item_row.base_amount, self.currency_precision) - row.buying_amount = flt( - flt(row.qty) * flt(row.buying_rate), self.currency_precision - ) - if flt(row.qty) or row.base_amount: - row = self.set_average_rate(row) - self.grouped_data.append(row) - elif self.filters.get("group_by") == "Payment Term": + if self.filters.get("group_by") == "Payment Term": for i, row in enumerate(self.grouped[key]): invoice_portion = 0 @@ -556,7 +607,7 @@ class GrossProfitGenerator: new_row = self.set_average_rate(new_row) self.grouped_data.append(new_row) - else: + elif self.filters.get("group_by") != "Invoice": for i, row in enumerate(self.grouped[key]): if i == 0: new_row = row @@ -632,6 +683,8 @@ class GrossProfitGenerator: if packed_item.get("parent_detail_docname") == row.item_row: packed_item_row = row.copy() packed_item_row.warehouse = packed_item.warehouse + packed_item_row.qty = packed_item.total_qty * -1 + packed_item_row.serial_and_batch_bundle = packed_item.serial_and_batch_bundle buying_amount += self.get_buying_amount(packed_item_row, packed_item.item_code) return flt(buying_amount, self.currency_precision) @@ -664,7 +717,9 @@ class GrossProfitGenerator: else: my_sle = self.get_stock_ledger_entries(item_code, row.warehouse) if (row.update_stock or row.dn_detail) and my_sle: - parenttype, parent = row.parenttype, row.parent + parenttype = row.parenttype + parent = row.invoice or row.parent + if row.dn_detail: parenttype, parent = "Delivery Note", row.delivery_note @@ -721,6 +776,7 @@ class GrossProfitGenerator: "voucher_no": row.parent, "allow_zero_valuation": True, "company": self.filters.company, + "item_code": item_code, } ) @@ -741,12 +797,13 @@ class GrossProfitGenerator: .inner_join(purchase_invoice) .on(purchase_invoice.name == purchase_invoice_item.parent) .select( - purchase_invoice.name, purchase_invoice_item.base_rate / purchase_invoice_item.conversion_factor, ) .where(purchase_invoice.docstatus == 1) .where(purchase_invoice.posting_date <= self.filters.to_date) .where(purchase_invoice_item.item_code == item_code) + .where(purchase_invoice.is_return == 0) + .where(purchase_invoice_item.parenttype == "Purchase Invoice") ) if row.project: @@ -783,7 +840,10 @@ class GrossProfitGenerator: """ if self.filters.group_by == "Sales Person": - sales_person_cols = ", sales.sales_person, sales.allocated_amount, sales.incentives" + sales_person_cols = """, sales.sales_person, + sales.allocated_percentage * `tabSales Invoice Item`.base_net_amount / 100 as allocated_amount, + sales.incentives + """ sales_team_table = "left join `tabSales Team` sales on sales.parent = `tabSales Invoice`.name" else: sales_person_cols = "" @@ -847,6 +907,7 @@ class GrossProfitGenerator: `tabSales Invoice`.project, `tabSales Invoice`.update_stock, `tabSales Invoice`.customer, `tabSales Invoice`.customer_group, `tabSales Invoice`.territory, `tabSales Invoice Item`.item_code, + `tabSales Invoice`.base_net_total as "invoice_base_net_total", `tabSales Invoice Item`.item_name, `tabSales Invoice Item`.description, `tabSales Invoice Item`.warehouse, `tabSales Invoice Item`.item_group, `tabSales Invoice Item`.brand, `tabSales Invoice Item`.so_detail, @@ -907,6 +968,7 @@ class GrossProfitGenerator: """ grouped = OrderedDict() + product_bundles = self.product_bundles.get("Sales Invoice", {}) for row in self.si_list: # initialize list with a header row for each new parent @@ -917,8 +979,7 @@ class GrossProfitGenerator: ) # if item is a bundle, add it's components as seperate rows - if frappe.db.exists("Product Bundle", row.item_code): - bundled_items = self.get_bundle_items(row) + if bundled_items := product_bundles.get(row.parent, {}).get(row.item_code): for x in bundled_items: bundle_item = self.get_bundle_item_row(row, x) grouped.get(row.parent).append(bundle_item) @@ -954,47 +1015,41 @@ class GrossProfitGenerator: "item_row": None, "is_return": row.is_return, "cost_center": row.cost_center, - "base_net_amount": frappe.db.get_value("Sales Invoice", row.parent, "base_net_total"), + "base_net_amount": row.invoice_base_net_total, } ) - def get_bundle_items(self, product_bundle): - return frappe.get_all( - "Product Bundle Item", filters={"parent": product_bundle.item_code}, fields=["item_code", "qty"] - ) - - def get_bundle_item_row(self, product_bundle, item): - item_name, description, item_group, brand = self.get_bundle_item_details(item.item_code) - + def get_bundle_item_row(self, row, item): return frappe._dict( { - "parent_invoice": product_bundle.item_code, - "indent": product_bundle.indent + 1, + "parent_invoice": row.item_code, + "parenttype": row.parenttype, + "indent": row.indent + 1, "parent": None, "invoice_or_item": item.item_code, - "posting_date": product_bundle.posting_date, - "posting_time": product_bundle.posting_time, - "project": product_bundle.project, - "customer": product_bundle.customer, - "customer_group": product_bundle.customer_group, + "posting_date": row.posting_date, + "posting_time": row.posting_time, + "project": row.project, + "customer": row.customer, + "customer_group": row.customer_group, "item_code": item.item_code, - "item_name": item_name, - "description": description, - "warehouse": product_bundle.warehouse, - "item_group": item_group, - "brand": brand, - "dn_detail": product_bundle.dn_detail, - "delivery_note": product_bundle.delivery_note, - "qty": (flt(product_bundle.qty) * flt(item.qty)), - "item_row": None, - "is_return": product_bundle.is_return, - "cost_center": product_bundle.cost_center, + "item_name": item.item_name, + "description": item.description, + "warehouse": item.warehouse or row.warehouse, + "update_stock": row.update_stock, + "item_group": "", + "brand": "", + "dn_detail": row.dn_detail, + "delivery_note": row.delivery_note, + "qty": item.total_qty * -1, + "item_row": row.item_row, + "is_return": row.is_return, + "cost_center": row.cost_center, + "invoice": row.parent, + "serial_and_batch_bundle": row.serial_and_batch_bundle, } ) - def get_bundle_item_details(self, item_code): - return frappe.db.get_value("Item", item_code, ["item_name", "description", "item_group", "brand"]) - def get_stock_ledger_entries(self, item_code, warehouse): if item_code and warehouse: if (item_code, warehouse) not in self.sle: @@ -1043,6 +1098,7 @@ class GrossProfitGenerator: pki.rate, (pki.rate * pki.qty).as_("base_amount"), pki.parent_detail_docname, + pki.serial_and_batch_bundle, ) .where(pki.docstatus == 1) ) diff --git a/erpnext/accounts/report/gross_profit/test_gross_profit.py b/erpnext/accounts/report/gross_profit/test_gross_profit.py index 83de93891fe..c6c8a0266ef 100644 --- a/erpnext/accounts/report/gross_profit/test_gross_profit.py +++ b/erpnext/accounts/report/gross_profit/test_gross_profit.py @@ -418,12 +418,12 @@ class TestGrossProfit(FrappeTestCase): "item_name": self.item, "warehouse": "Stores - _GP", "qty": 0.0, - "avg._selling_rate": 0.0, + "avg._selling_rate": 100, "valuation_rate": 0.0, - "selling_amount": -100.0, + "selling_amount": 0.0, "buying_amount": 0.0, - "gross_profit": -100.0, - "gross_profit_%": 100.0, + "gross_profit": 0.0, + "gross_profit_%": 0.0, } gp_entry = [x for x in data if x.parent_invoice == sinv.name] # Both items of Invoice should have '0' qty @@ -605,3 +605,33 @@ class TestGrossProfit(FrappeTestCase): item_from_sinv2 = [x for x in data if x.parent_invoice == sinv2.name] self.assertEqual(len(item_from_sinv2), 1) self.assertEqual(1800, item_from_sinv2[0].valuation_rate) + + def test_gross_profit_groupby_invoices(self): + create_sales_invoice( + qty=1, + rate=100, + company=self.company, + customer=self.customer, + item_code=self.item, + item_name=self.item, + cost_center=self.cost_center, + warehouse=self.warehouse, + debit_to=self.debit_to, + parent_cost_center=self.cost_center, + update_stock=0, + currency="INR", + income_account=self.income_account, + expense_account=self.expense_account, + ) + + filters = frappe._dict( + company=self.company, from_date=nowdate(), to_date=nowdate(), group_by="Invoice" + ) + + _, data = execute(filters=filters) + total = data[-1] + + self.assertEqual(total.selling_amount, 100.0) + self.assertEqual(total.buying_amount, 0.0) + self.assertEqual(total.gross_profit, 100.0) + self.assertEqual(total.get("gross_profit_%"), 100.0) diff --git a/erpnext/accounts/report/invalid_ledger_entries/__init__.py b/erpnext/accounts/report/invalid_ledger_entries/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/erpnext/accounts/report/invalid_ledger_entries/invalid_ledger_entries.js b/erpnext/accounts/report/invalid_ledger_entries/invalid_ledger_entries.js new file mode 100644 index 00000000000..47d478f2865 --- /dev/null +++ b/erpnext/accounts/report/invalid_ledger_entries/invalid_ledger_entries.js @@ -0,0 +1,51 @@ +// Copyright (c) 2024, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt + +function get_filters() { + let filters = [ + { + fieldname: "company", + label: __("Company"), + fieldtype: "Link", + options: "Company", + default: frappe.defaults.get_user_default("Company"), + reqd: 1, + }, + { + fieldname: "from_date", + label: __("Start Date"), + fieldtype: "Date", + reqd: 1, + default: frappe.datetime.add_months(frappe.datetime.get_today(), -1), + }, + { + fieldname: "to_date", + label: __("End Date"), + fieldtype: "Date", + reqd: 1, + default: frappe.datetime.get_today(), + }, + { + fieldname: "account", + label: __("Account"), + fieldtype: "MultiSelectList", + options: "Account", + get_data: function (txt) { + return frappe.db.get_link_options("Account", txt, { + company: frappe.query_report.get_filter_value("company"), + }); + }, + }, + { + fieldname: "voucher_no", + label: __("Voucher No"), + fieldtype: "Data", + width: 100, + }, + ]; + return filters; +} + +frappe.query_reports["Invalid Ledger Entries"] = { + filters: get_filters(), +}; diff --git a/erpnext/accounts/report/invalid_ledger_entries/invalid_ledger_entries.json b/erpnext/accounts/report/invalid_ledger_entries/invalid_ledger_entries.json new file mode 100644 index 00000000000..00dbbfc5056 --- /dev/null +++ b/erpnext/accounts/report/invalid_ledger_entries/invalid_ledger_entries.json @@ -0,0 +1,23 @@ +{ + "add_total_row": 0, + "columns": [], + "creation": "2024-09-09 12:31:25.295976", + "disabled": 0, + "docstatus": 0, + "doctype": "Report", + "filters": [], + "idx": 0, + "is_standard": "Yes", + "letterhead": null, + "modified": "2024-09-09 12:31:25.295976", + "modified_by": "Administrator", + "module": "Accounts", + "name": "Invalid Ledger Entries", + "owner": "Administrator", + "prepared_report": 0, + "ref_doctype": "GL Entry", + "report_name": "Invalid Ledger Entries", + "report_type": "Script Report", + "roles": [], + "timeout": 0 +} \ No newline at end of file diff --git a/erpnext/accounts/report/invalid_ledger_entries/invalid_ledger_entries.py b/erpnext/accounts/report/invalid_ledger_entries/invalid_ledger_entries.py new file mode 100644 index 00000000000..33fda705cf2 --- /dev/null +++ b/erpnext/accounts/report/invalid_ledger_entries/invalid_ledger_entries.py @@ -0,0 +1,137 @@ +# Copyright (c) 2024, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +import frappe +from frappe import _, qb +from frappe.query_builder import Criterion +from frappe.query_builder.custom import ConstantColumn + + +def execute(filters: dict | None = None): + """Return columns and data for the report. + + This is the main entry point for the report. It accepts the filters as a + dictionary and should return columns and data. It is called by the framework + every time the report is refreshed or a filter is updated. + """ + validate_filters(filters) + + columns = get_columns() + data = get_data(filters) + + return columns, data + + +def get_columns() -> list[dict]: + """Return columns for the report. + + One field definition per column, just like a DocType field definition. + """ + return [ + {"label": _("Voucher Type"), "fieldname": "voucher_type", "fieldtype": "Link", "options": "DocType"}, + { + "label": _("Voucher No"), + "fieldname": "voucher_no", + "fieldtype": "Dynamic Link", + "options": "voucher_type", + }, + ] + + +def get_data(filters) -> list[list]: + """Return data for the report. + + The report data is a list of rows, with each row being a list of cell values. + """ + active_vouchers = get_active_vouchers_for_period(filters) + invalid_vouchers = identify_cancelled_vouchers(active_vouchers) + + return invalid_vouchers + + +def identify_cancelled_vouchers(active_vouchers: list[dict] | list | None = None) -> list[dict]: + cancelled_vouchers = [] + if active_vouchers: + # Group by voucher types and use single query to identify cancelled vouchers + vtypes = set([x.voucher_type for x in active_vouchers]) + + for _t in vtypes: + _names = [x.voucher_no for x in active_vouchers if x.voucher_type == _t] + dt = qb.DocType(_t) + non_active_vouchers = ( + qb.from_(dt) + .select(ConstantColumn(_t).as_("voucher_type"), dt.name.as_("voucher_no")) + .where(dt.docstatus.ne(1) & dt.name.isin(_names)) + .run(as_dict=True) + ) + if non_active_vouchers: + cancelled_vouchers.extend(non_active_vouchers) + return cancelled_vouchers + + +def validate_filters(filters: dict | None = None): + if not filters: + frappe.throw(_("Filters missing")) + + if not filters.company: + frappe.throw(_("Company is mandatory")) + + if filters.from_date > filters.to_date: + frappe.throw(_("Start Date should be lower than End Date")) + + +def build_query_filters(filters: dict | None = None) -> list: + qb_filters = [] + if filters: + if filters.account: + qb_filters.append(qb.Field("account").isin(filters.account)) + + if filters.voucher_no: + qb_filters.append(qb.Field("voucher_no").eq(filters.voucher_no)) + + return qb_filters + + +def get_active_vouchers_for_period(filters: dict | None = None) -> list[dict]: + uniq_vouchers = [] + + if filters: + gle = qb.DocType("GL Entry") + ple = qb.DocType("Payment Ledger Entry") + + qb_filters = build_query_filters(filters) + + gl_vouchers = ( + qb.from_(gle) + .select(gle.voucher_type) + .distinct() + .select(gle.voucher_no) + .distinct() + .where( + gle.is_cancelled.eq(0) + & gle.company.eq(filters.company) + & gle.posting_date[filters.from_date : filters.to_date] + ) + .where(Criterion.all(qb_filters)) + .run(as_dict=True) + ) + + pl_vouchers = ( + qb.from_(ple) + .select(ple.voucher_type) + .distinct() + .select(ple.voucher_no) + .distinct() + .where( + ple.delinked.eq(0) + & ple.company.eq(filters.company) + & ple.posting_date[filters.from_date : filters.to_date] + ) + .where(Criterion.all(qb_filters)) + .run(as_dict=True) + ) + + uniq_vouchers.extend(gl_vouchers) + uniq_vouchers.extend(pl_vouchers) + + return uniq_vouchers diff --git a/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py b/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py index 83f664c984a..ae822c5b413 100644 --- a/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py +++ b/erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py @@ -11,7 +11,7 @@ import erpnext from erpnext.accounts.report.item_wise_sales_register.item_wise_sales_register import ( add_sub_total_row, add_total_row, - apply_group_by_conditions, + apply_order_by_conditions, get_grand_total, get_group_by_and_display_fields, get_tax_accounts, @@ -305,12 +305,6 @@ def apply_conditions(query, pi, pii, filters): if filters.get("item_group"): query = query.where(pii.item_group == filters.get("item_group")) - if not filters.get("group_by"): - query = query.orderby(pi.posting_date, order=Order.desc) - query = query.orderby(pii.item_group, order=Order.desc) - else: - query = apply_group_by_conditions(query, pi, pii, filters) - return query @@ -372,7 +366,17 @@ def get_items(filters, additional_table_columns): query = apply_conditions(query, pi, pii, filters) - return query.run(as_dict=True) + from frappe.desk.reportview import build_match_conditions + + query, params = query.walk() + match_conditions = build_match_conditions(doctype) + + if match_conditions: + query += " and " + match_conditions + + query = apply_order_by_conditions(query, pi, pii, filters) + + return frappe.db.sql(query, params, as_dict=True) def get_aii_accounts(): diff --git a/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py b/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py index 604c0a6569d..af2c4e7e38b 100644 --- a/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py +++ b/erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py @@ -384,27 +384,24 @@ def apply_conditions(query, si, sii, filters, additional_conditions=None): | (si.unrealized_profit_loss_account == filters.get("income_account")) ) - if not filters.get("group_by"): - query = query.orderby(si.posting_date, order=Order.desc) - query = query.orderby(sii.item_group, order=Order.desc) - else: - query = apply_group_by_conditions(query, si, sii, filters) - for key, value in (additional_conditions or {}).items(): query = query.where(si[key] == value) return query -def apply_group_by_conditions(query, si, ii, filters): - if filters.get("group_by") == "Invoice": - query = query.orderby(ii.parent, order=Order.desc) +def apply_order_by_conditions(query, si, ii, filters): + if not filters.get("group_by"): + query += f" order by {si.posting_date} desc, {ii.item_group} desc" + elif filters.get("group_by") == "Invoice": + query += f" order by {ii.parent} desc" elif filters.get("group_by") == "Item": - query = query.orderby(ii.item_code) + query += f" order by {ii.item_code}" elif filters.get("group_by") == "Item Group": - query = query.orderby(ii.item_group) + query += f" order by {ii.item_group}" elif filters.get("group_by") in ("Customer", "Customer Group", "Territory", "Supplier"): - query = query.orderby(si[frappe.scrub(filters.get("group_by"))]) + filter_field = frappe.scrub(filters.get("group_by")) + query += f" order by {filter_field} desc" return query @@ -479,7 +476,17 @@ def get_items(filters, additional_query_columns, additional_conditions=None): query = apply_conditions(query, si, sii, filters, additional_conditions) - return query.run(as_dict=True) + from frappe.desk.reportview import build_match_conditions + + query, params = query.walk() + match_conditions = build_match_conditions("Sales Invoice") + + if match_conditions: + query += " and " + match_conditions + + query = apply_order_by_conditions(query, si, sii, filters) + + return frappe.db.sql(query, params, as_dict=True) def get_delivery_notes_against_sales_order(item_list): diff --git a/erpnext/accounts/report/non_billed_report.py b/erpnext/accounts/report/non_billed_report.py index 39c5311cd99..c0ca604cc6d 100644 --- a/erpnext/accounts/report/non_billed_report.py +++ b/erpnext/accounts/report/non_billed_report.py @@ -4,11 +4,12 @@ import frappe from frappe.model.meta import get_field_precision +from frappe.query_builder.functions import IfNull, Round from erpnext import get_default_currency -def get_ordered_to_be_billed_data(args): +def get_ordered_to_be_billed_data(args, filters=None): doctype, party = args.get("doctype"), args.get("party") child_tab = doctype + " Item" precision = ( @@ -18,47 +19,57 @@ def get_ordered_to_be_billed_data(args): or 2 ) - project_field = get_project_field(doctype, party) + doctype = frappe.qb.DocType(doctype) + child_doctype = frappe.qb.DocType(child_tab) - return frappe.db.sql( - """ - Select - `{parent_tab}`.name, `{parent_tab}`.{date_field}, - `{parent_tab}`.{party}, `{parent_tab}`.{party}_name, - `{child_tab}`.item_code, - `{child_tab}`.base_amount, - (`{child_tab}`.billed_amt * ifnull(`{parent_tab}`.conversion_rate, 1)), - (`{child_tab}`.base_rate * ifnull(`{child_tab}`.returned_qty, 0)), - (`{child_tab}`.base_amount - - (`{child_tab}`.billed_amt * ifnull(`{parent_tab}`.conversion_rate, 1)) - - (`{child_tab}`.base_rate * ifnull(`{child_tab}`.returned_qty, 0))), - `{child_tab}`.item_name, `{child_tab}`.description, - {project_field}, `{parent_tab}`.company - from - `{parent_tab}`, `{child_tab}` - where - `{parent_tab}`.name = `{child_tab}`.parent and `{parent_tab}`.docstatus = 1 - and `{parent_tab}`.status not in ('Closed', 'Completed') - and `{child_tab}`.amount > 0 - and (`{child_tab}`.base_amount - - round(`{child_tab}`.billed_amt * ifnull(`{parent_tab}`.conversion_rate, 1), {precision}) - - (`{child_tab}`.base_rate * ifnull(`{child_tab}`.returned_qty, 0))) > 0 - order by - `{parent_tab}`.{order} {order_by} - """.format( - parent_tab="tab" + doctype, - child_tab="tab" + child_tab, - precision=precision, - party=party, - date_field=args.get("date"), - project_field=project_field, - order=args.get("order"), - order_by=args.get("order_by"), + docname = filters.get(args.get("reference_field"), None) + project_field = get_project_field(doctype, child_doctype, party) + + query = ( + frappe.qb.from_(doctype) + .inner_join(child_doctype) + .on(doctype.name == child_doctype.parent) + .select( + doctype.name, + doctype[args.get("date")].as_("date"), + doctype[party], + doctype[party + "_name"], + child_doctype.item_code, + child_doctype.base_amount.as_("amount"), + (child_doctype.billed_amt * IfNull(doctype.conversion_rate, 1)).as_("billed_amount"), + (child_doctype.base_rate * IfNull(child_doctype.returned_qty, 0)).as_("returned_amount"), + ( + child_doctype.base_amount + - (child_doctype.billed_amt * IfNull(doctype.conversion_rate, 1)) + - (child_doctype.base_rate * IfNull(child_doctype.returned_qty, 0)) + ).as_("pending_amount"), + child_doctype.item_name, + child_doctype.description, + project_field, ) + .where( + (doctype.docstatus == 1) + & (doctype.status.notin(["Closed", "Completed"])) + & (doctype.company == filters.get("company")) + & (doctype.posting_date <= filters.get("posting_date")) + & (child_doctype.amount > 0) + & ( + child_doctype.base_amount + - Round(child_doctype.billed_amt * IfNull(doctype.conversion_rate, 1), precision) + - (child_doctype.base_rate * IfNull(child_doctype.returned_qty, 0)) + ) + > 0 + ) + .orderby(doctype[args.get("order")], order=args.get("order_by")) ) + if docname: + query = query.where(doctype.name == docname) -def get_project_field(doctype, party): + return query.run(as_dict=True) + + +def get_project_field(doctype, child_doctype, party): if party == "supplier": - doctype = doctype + " Item" - return "`tab%s`.project" % (doctype) + return child_doctype.project + return doctype.project diff --git a/erpnext/accounts/report/payment_ledger/payment_ledger.js b/erpnext/accounts/report/payment_ledger/payment_ledger.js index 8d1f227fe6d..7ffd26c9700 100644 --- a/erpnext/accounts/report/payment_ledger/payment_ledger.js +++ b/erpnext/accounts/report/payment_ledger/payment_ledger.js @@ -50,6 +50,7 @@ function get_filters() { fieldname: "party", label: __("Party"), fieldtype: "MultiSelectList", + options: "party_type", get_data: function (txt) { if (!frappe.query_report.filters) return; diff --git a/erpnext/accounts/report/payment_ledger/payment_ledger.py b/erpnext/accounts/report/payment_ledger/payment_ledger.py index 9852c6e7ab9..9dd5ae5c400 100644 --- a/erpnext/accounts/report/payment_ledger/payment_ledger.py +++ b/erpnext/accounts/report/payment_ledger/payment_ledger.py @@ -130,6 +130,7 @@ class PaymentLedger: ) def get_columns(self): + company_currency = frappe.get_cached_value("Company", self.filters.get("company"), "default_currency") options = None self.columns.append( dict( @@ -194,7 +195,7 @@ class PaymentLedger: label=_("Amount"), fieldname="amount", fieldtype="Currency", - options="Company:company:default_currency", + options=company_currency, width="100", ) ) @@ -210,7 +211,7 @@ class PaymentLedger: ) ) self.columns.append( - dict(label=_("Currency"), fieldname="currency", fieldtype="Currency", hidden=True) + dict(label=_("Currency"), fieldname="currency", fieldtype="Link", options="Currency", hidden=True) ) def run(self): 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 58610b22a93..2b6280c74b5 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 @@ -7,6 +7,8 @@ from frappe import _ from frappe.utils import flt from erpnext.accounts.report.financial_statements import ( + compute_growth_view_data, + compute_margin_view_data, get_columns, get_data, get_filtered_list_for_consolidated_report, @@ -59,15 +61,21 @@ def execute(filters=None): columns = get_columns(filters.periodicity, period_list, filters.accumulated_values, filters.company) - chart = get_chart_data(filters, columns, income, expense, net_profit_loss) - currency = filters.presentation_currency or frappe.get_cached_value( "Company", filters.company, "default_currency" ) + chart = get_chart_data(filters, columns, income, expense, net_profit_loss, currency) + report_summary, primitive_summary = get_report_summary( period_list, filters.periodicity, income, expense, net_profit_loss, currency, filters ) + if filters.get("selected_view") == "Growth": + compute_growth_view_data(data, period_list) + + if filters.get("selected_view") == "Margin": + compute_margin_view_data(data, period_list, filters.accumulated_values) + return columns, data, None, chart, report_summary, primitive_summary @@ -152,7 +160,7 @@ def get_net_profit_loss(income, expense, period_list, company, currency=None, co return net_profit_loss -def get_chart_data(filters, columns, income, expense, net_profit_loss): +def get_chart_data(filters, columns, income, expense, net_profit_loss, currency): labels = [d.get("label") for d in columns[2:]] income_data, expense_data, net_profit = [], [], [] @@ -181,5 +189,7 @@ def get_chart_data(filters, columns, income, expense, net_profit_loss): chart["type"] = "line" chart["fieldtype"] = "Currency" + chart["options"] = "currency" + chart["currency"] = currency return chart diff --git a/erpnext/accounts/report/purchase_register/purchase_register.py b/erpnext/accounts/report/purchase_register/purchase_register.py index 504c74babcb..026aecce036 100644 --- a/erpnext/accounts/report/purchase_register/purchase_register.py +++ b/erpnext/accounts/report/purchase_register/purchase_register.py @@ -311,6 +311,7 @@ def get_account_columns(invoice_list, include_payments): """select distinct expense_account from `tabPurchase Invoice Item` where docstatus = 1 and (expense_account is not null and expense_account != '') + and parenttype='Purchase Invoice' and parent in (%s) order by expense_account""" % ", ".join(["%s"] * len(invoice_list)), tuple([inv.name for inv in invoice_list]), @@ -396,7 +397,6 @@ def get_invoices(filters, additional_query_columns): pi.mode_of_payment, ) .where(pi.docstatus == 1) - .orderby(pi.posting_date, pi.name, order=Order.desc) ) if additional_query_columns: @@ -420,8 +420,17 @@ def get_invoices(filters, additional_query_columns): ) query = query.where(pi.credit_to.isin(party_account)) - invoices = query.run(as_dict=True) - return invoices + from frappe.desk.reportview import build_match_conditions + + query, params = query.walk() + match_conditions = build_match_conditions("Purchase Invoice") + + if match_conditions: + query += " and " + match_conditions + + query += " order by posting_date desc, name desc" + + return frappe.db.sql(query, params, as_dict=True) def get_conditions(filters, query, doctype): @@ -451,7 +460,7 @@ def get_invoice_expense_map(invoice_list): """ select parent, expense_account, sum(base_net_amount) as amount from `tabPurchase Invoice Item` - where parent in (%s) + where parent in (%s) and parenttype='Purchase Invoice' group by parent, expense_account """ % ", ".join(["%s"] * len(invoice_list)), @@ -522,7 +531,7 @@ def get_invoice_po_pr_map(invoice_list): """ select parent, purchase_order, purchase_receipt, po_detail, project from `tabPurchase Invoice Item` - where parent in (%s) + where parent in (%s) and parenttype='Purchase Invoice' """ % ", ".join(["%s"] * len(invoice_list)), tuple(inv.name for inv in invoice_list), diff --git a/erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.js b/erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.js index ad97f270dd3..2577a82ef65 100644 --- a/erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.js +++ b/erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.js @@ -2,5 +2,27 @@ // For license information, please see license.txt frappe.query_reports["Received Items To Be Billed"] = { - filters: [], + filters: [ + { + label: __("Company"), + fieldname: "company", + fieldtype: "Link", + options: "Company", + reqd: 1, + default: frappe.defaults.get_default("Company"), + }, + { + label: __("As on Date"), + fieldname: "posting_date", + fieldtype: "Date", + reqd: 1, + default: frappe.datetime.get_today(), + }, + { + label: __("Purchase Receipt"), + fieldname: "purchase_receipt", + fieldtype: "Link", + options: "Purchase Receipt", + }, + ], }; diff --git a/erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.py b/erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.py index 1dcacb97420..87b7b109b99 100644 --- a/erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.py +++ b/erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.py @@ -3,6 +3,7 @@ from frappe import _ +from pypika import Order from erpnext.accounts.report.non_billed_report import get_ordered_to_be_billed_data @@ -10,7 +11,7 @@ from erpnext.accounts.report.non_billed_report import get_ordered_to_be_billed_d def execute(filters=None): columns = get_column() args = get_args() - data = get_ordered_to_be_billed_data(args) + data = get_ordered_to_be_billed_data(args, filters) return columns, data @@ -76,13 +77,6 @@ def get_column(): "options": "Project", "width": 120, }, - { - "label": _("Company"), - "fieldname": "company", - "fieldtype": "Link", - "options": "Company", - "width": 120, - }, ] @@ -92,5 +86,6 @@ def get_args(): "party": "supplier", "date": "posting_date", "order": "name", - "order_by": "desc", + "order_by": Order.desc, + "reference_field": "purchase_receipt", } diff --git a/erpnext/accounts/report/sales_register/sales_register.py b/erpnext/accounts/report/sales_register/sales_register.py index 6c0bf91e3f8..e55f217682d 100644 --- a/erpnext/accounts/report/sales_register/sales_register.py +++ b/erpnext/accounts/report/sales_register/sales_register.py @@ -439,7 +439,6 @@ def get_invoices(filters, additional_query_columns): si.company, ) .where(si.docstatus == 1) - .orderby(si.posting_date, si.name, order=Order.desc) ) if additional_query_columns: @@ -457,8 +456,17 @@ def get_invoices(filters, additional_query_columns): filters, query, doctype="Sales Invoice", child_doctype="Sales Invoice Item" ) - invoices = query.run(as_dict=True) - return invoices + from frappe.desk.reportview import build_match_conditions + + query, params = query.walk() + match_conditions = build_match_conditions("Sales Invoice") + + if match_conditions: + query += " and " + match_conditions + + query += " order by posting_date desc, name desc" + + return frappe.db.sql(query, params, as_dict=True) def get_conditions(filters, query, doctype): @@ -526,7 +534,8 @@ def get_invoice_tax_map(invoice_list, invoice_income_map, income_accounts, inclu tax_details = frappe.db.sql( """select parent, account_head, sum(base_tax_amount_after_discount_amount) as tax_amount - from `tabSales Taxes and Charges` where parent in (%s) group by parent, account_head""" + from `tabSales Taxes and Charges` where parent in (%s) and parenttype = 'Sales Invoice' + group by parent, account_head""" % ", ".join(["%s"] * len(invoice_list)), tuple(inv.name for inv in invoice_list), as_dict=1, diff --git a/erpnext/accounts/report/sales_register/test_sales_register.py b/erpnext/accounts/report/sales_register/test_sales_register.py new file mode 100644 index 00000000000..95aa5add24c --- /dev/null +++ b/erpnext/accounts/report/sales_register/test_sales_register.py @@ -0,0 +1,179 @@ +import frappe +from frappe.tests.utils import FrappeTestCase +from frappe.utils import getdate, today + +from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice +from erpnext.accounts.report.sales_register.sales_register import execute +from erpnext.accounts.test.accounts_mixin import AccountsTestMixin + + +class TestItemWiseSalesRegister(AccountsTestMixin, FrappeTestCase): + def setUp(self): + self.create_company() + self.create_customer() + self.create_item() + self.create_child_cost_center() + + def tearDown(self): + frappe.db.rollback() + + def create_child_cost_center(self): + cc_name = "South Wing" + if frappe.db.exists("Cost Center", cc_name): + cc = frappe.get_doc("Cost Center", cc_name) + else: + parent = frappe.db.get_value("Cost Center", self.cost_center, "parent_cost_center") + cc = frappe.get_doc( + { + "doctype": "Cost Center", + "company": self.company, + "is_group": False, + "parent_cost_center": parent, + "cost_center_name": cc_name, + } + ) + cc = cc.save() + self.south_cc = cc.name + + def create_sales_invoice(self, rate=100, do_not_submit=False): + 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, + do_not_save=1, + ) + si = si.save() + if not do_not_submit: + si = si.submit() + return si + + def test_basic_report_output(self): + si = self.create_sales_invoice(rate=98) + + filters = frappe._dict({"from_date": today(), "to_date": today(), "company": self.company}) + report = execute(filters) + + res = [x for x in report[1] if x.get("voucher_no") == si.name] + + expected_result = { + "voucher_type": si.doctype, + "voucher_no": si.name, + "posting_date": getdate(), + "customer": self.customer, + "receivable_account": self.debit_to, + "net_total": 98.0, + "grand_total": 98.0, + "debit": 98.0, + } + + report_output = {k: v for k, v in res[0].items() if k in expected_result} + self.assertDictEqual(report_output, expected_result) + + def test_journal_with_cost_center_filter(self): + je1 = frappe.get_doc( + { + "doctype": "Journal Entry", + "voucher_type": "Journal Entry", + "company": self.company, + "posting_date": getdate(), + "accounts": [ + { + "account": self.debit_to, + "party_type": "Customer", + "party": self.customer, + "credit_in_account_currency": 77, + "credit": 77, + "is_advance": "Yes", + "cost_center": self.cost_center, + }, + { + "account": self.cash, + "debit_in_account_currency": 77, + "debit": 77, + }, + ], + } + ) + je1.submit() + + je2 = frappe.get_doc( + { + "doctype": "Journal Entry", + "voucher_type": "Journal Entry", + "company": self.company, + "posting_date": getdate(), + "accounts": [ + { + "account": self.debit_to, + "party_type": "Customer", + "party": self.customer, + "credit_in_account_currency": 98, + "credit": 98, + "is_advance": "Yes", + "cost_center": self.south_cc, + }, + { + "account": self.cash, + "debit_in_account_currency": 98, + "debit": 98, + }, + ], + } + ) + je2.submit() + + filters = frappe._dict( + { + "from_date": today(), + "to_date": today(), + "company": self.company, + "include_payments": True, + "customer": self.customer, + "cost_center": self.cost_center, + } + ) + report_output = execute(filters)[1] + filtered_output = [x for x in report_output if x.get("voucher_no") == je1.name] + self.assertEqual(len(filtered_output), 1) + expected_result = { + "voucher_type": je1.doctype, + "voucher_no": je1.name, + "posting_date": je1.posting_date, + "customer": self.customer, + "receivable_account": self.debit_to, + "net_total": 77.0, + "credit": 77.0, + } + result_fields = {k: v for k, v in filtered_output[0].items() if k in expected_result} + self.assertDictEqual(result_fields, expected_result) + + filters = frappe._dict( + { + "from_date": today(), + "to_date": today(), + "company": self.company, + "include_payments": True, + "customer": self.customer, + "cost_center": self.south_cc, + } + ) + report_output = execute(filters)[1] + filtered_output = [x for x in report_output if x.get("voucher_no") == je2.name] + self.assertEqual(len(filtered_output), 1) + expected_result = { + "voucher_type": je2.doctype, + "voucher_no": je2.name, + "posting_date": je2.posting_date, + "customer": self.customer, + "receivable_account": self.debit_to, + "net_total": 98.0, + "credit": 98.0, + } + result_output = {k: v for k, v in filtered_output[0].items() if k in expected_result} + self.assertDictEqual(result_output, expected_result) diff --git a/erpnext/accounts/report/supplier_ledger_summary/test_supplier_ledger_summary.py b/erpnext/accounts/report/supplier_ledger_summary/test_supplier_ledger_summary.py new file mode 100644 index 00000000000..ea95772af4d --- /dev/null +++ b/erpnext/accounts/report/supplier_ledger_summary/test_supplier_ledger_summary.py @@ -0,0 +1,61 @@ +import frappe +from frappe.tests.utils import FrappeTestCase +from frappe.utils import today + +from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice +from erpnext.accounts.report.supplier_ledger_summary.supplier_ledger_summary import execute +from erpnext.accounts.test.accounts_mixin import AccountsTestMixin + + +class TestSupplierLedgerSummary(FrappeTestCase, AccountsTestMixin): + def setUp(self): + self.create_company() + self.create_supplier() + self.create_item() + self.clear_old_entries() + + def tearDown(self): + frappe.db.rollback() + + def create_purchase_invoice(self, do_not_submit=False): + frappe.set_user("Administrator") + pi = make_purchase_invoice( + item=self.item, + company=self.company, + supplier=self.supplier, + is_return=False, + update_stock=False, + posting_date=frappe.utils.datetime.date(2021, 5, 1), + do_not_save=1, + rate=300, + price_list_rate=300, + qty=1, + ) + + pi = pi.save() + if not do_not_submit: + pi = pi.submit() + return pi + + def test_basic_supplier_ledger_summary(self): + self.create_purchase_invoice() + + filters = {"company": self.company, "from_date": today(), "to_date": today()} + + expected = { + "party": "_Test Supplier", + "party_name": "_Test Supplier", + "opening_balance": 0, + "invoiced_amount": 300.0, + "paid_amount": 0, + "return_amount": 0, + "closing_balance": 300.0, + "currency": "INR", + "supplier_name": "_Test Supplier", + } + + report_output = execute(filters)[1] + self.assertEqual(len(report_output), 1) + for field in expected: + with self.subTest(field=field): + self.assertEqual(report_output[0].get(field), expected.get(field)) diff --git a/erpnext/accounts/report/tax_withholding_details/tax_withholding_details.py b/erpnext/accounts/report/tax_withholding_details/tax_withholding_details.py index 0c18dac7768..42c6c82b19f 100644 --- a/erpnext/accounts/report/tax_withholding_details/tax_withholding_details.py +++ b/erpnext/accounts/report/tax_withholding_details/tax_withholding_details.py @@ -70,10 +70,10 @@ def get_result(filters, tds_docs, tds_accounts, tax_category_map, journal_entry_ rate = tax_rate_map.get(tax_withholding_category) if net_total_map.get((voucher_type, name)): - if voucher_type == "Journal Entry": + if voucher_type == "Journal Entry" and tax_amount and rate: # back calcalute total amount from rate and tax_amount - if rate: - total_amount = grand_total = base_total = tax_amount / (rate / 100) + base_total = min(tax_amount / (rate / 100), net_total_map.get((voucher_type, name))[0]) + total_amount = grand_total = base_total elif voucher_type == "Purchase Invoice": total_amount, grand_total, base_total, bill_no, bill_date = net_total_map.get( (voucher_type, name) @@ -405,7 +405,7 @@ def get_doc_info(vouchers, doctype, tax_category_map, net_total_map=None): "paid_amount_after_tax", "base_paid_amount", ], - "Journal Entry": ["total_amount"], + "Journal Entry": ["tax_withholding_category", "total_debit"], } entries = frappe.get_all( @@ -427,7 +427,7 @@ def get_doc_info(vouchers, doctype, tax_category_map, net_total_map=None): elif doctype == "Payment Entry": value = [entry.paid_amount, entry.paid_amount_after_tax, entry.base_paid_amount] else: - value = [entry.total_amount] * 3 + value = [entry.total_debit] * 3 net_total_map[(doctype, entry.name)] = value diff --git a/erpnext/accounts/report/trial_balance/trial_balance.json b/erpnext/accounts/report/trial_balance/trial_balance.json index 8ed96a7161a..af586f7f17d 100644 --- a/erpnext/accounts/report/trial_balance/trial_balance.json +++ b/erpnext/accounts/report/trial_balance/trial_balance.json @@ -14,14 +14,14 @@ "owner": "Administrator", "ref_doctype": "GL Entry", "report_name": "Trial Balance", - "report_type": "Script Report", + "report_type": "Script Report", "roles": [ { "role": "Accounts User" - }, + }, { "role": "Accounts Manager" - }, + }, { "role": "Auditor" } diff --git a/erpnext/accounts/report/trial_balance/trial_balance.py b/erpnext/accounts/report/trial_balance/trial_balance.py index f216ecea15a..5575426dfff 100644 --- a/erpnext/accounts/report/trial_balance/trial_balance.py +++ b/erpnext/accounts/report/trial_balance/trial_balance.py @@ -89,20 +89,18 @@ def get_data(filters): ) company_currency = filters.presentation_currency or erpnext.get_company_currency(filters.company) + ignore_is_opening = frappe.db.get_single_value( + "Accounts Settings", "ignore_is_opening_check_for_reporting" + ) + if not accounts: return None accounts, accounts_by_name, parent_children_map = filter_accounts(accounts) - min_lft, max_rgt = frappe.db.sql( - """select min(lft), max(rgt) from `tabAccount` - where company=%s""", - (filters.company,), - )[0] - gl_entries_by_account = {} - opening_balances = get_opening_balances(filters) + opening_balances = get_opening_balances(filters, ignore_is_opening) # add filter inside list so that the query in financial_statements.py doesn't break if filters.project: @@ -112,15 +110,22 @@ def get_data(filters): filters.company, filters.from_date, filters.to_date, - min_lft, - max_rgt, filters, gl_entries_by_account, + root_lft=None, + root_rgt=None, ignore_closing_entries=not flt(filters.with_period_closing_entry_for_current_period), ignore_opening_entries=True, + group_by_account=True, ) - calculate_values(accounts, gl_entries_by_account, opening_balances, filters.get("show_net_values")) + calculate_values( + accounts, + gl_entries_by_account, + opening_balances, + filters.get("show_net_values"), + ignore_is_opening=ignore_is_opening, + ) accumulate_values_into_parents(accounts, accounts_by_name) data = prepare_data(accounts, filters, parent_children_map, company_currency) @@ -131,15 +136,15 @@ def get_data(filters): return data -def get_opening_balances(filters): - balance_sheet_opening = get_rootwise_opening_balances(filters, "Balance Sheet") - pl_opening = get_rootwise_opening_balances(filters, "Profit and Loss") +def get_opening_balances(filters, ignore_is_opening): + balance_sheet_opening = get_rootwise_opening_balances(filters, "Balance Sheet", ignore_is_opening) + pl_opening = get_rootwise_opening_balances(filters, "Profit and Loss", ignore_is_opening) balance_sheet_opening.update(pl_opening) return balance_sheet_opening -def get_rootwise_opening_balances(filters, report_type): +def get_rootwise_opening_balances(filters, report_type, ignore_is_opening): gle = [] last_period_closing_voucher = "" @@ -150,9 +155,9 @@ def get_rootwise_opening_balances(filters, report_type): if not ignore_closing_balances: last_period_closing_voucher = frappe.db.get_all( "Period Closing Voucher", - filters={"docstatus": 1, "company": filters.company, "posting_date": ("<", filters.from_date)}, - fields=["posting_date", "name"], - order_by="posting_date desc", + filters={"docstatus": 1, "company": filters.company, "period_end_date": ("<", filters.from_date)}, + fields=["period_end_date", "name"], + order_by="period_end_date desc", limit=1, ) @@ -165,16 +170,24 @@ def get_rootwise_opening_balances(filters, report_type): report_type, accounting_dimensions, period_closing_voucher=last_period_closing_voucher[0].name, + ignore_is_opening=ignore_is_opening, ) # Report getting generate from the mid of a fiscal year - if getdate(last_period_closing_voucher[0].posting_date) < getdate(add_days(filters.from_date, -1)): - start_date = add_days(last_period_closing_voucher[0].posting_date, 1) + if getdate(last_period_closing_voucher[0].period_end_date) < getdate(add_days(filters.from_date, -1)): + start_date = add_days(last_period_closing_voucher[0].period_end_date, 1) gle += get_opening_balance( - "GL Entry", filters, report_type, accounting_dimensions, start_date=start_date + "GL Entry", + filters, + report_type, + accounting_dimensions, + start_date=start_date, + ignore_is_opening=ignore_is_opening, ) else: - gle = get_opening_balance("GL Entry", filters, report_type, accounting_dimensions) + gle = get_opening_balance( + "GL Entry", filters, report_type, accounting_dimensions, ignore_is_opening=ignore_is_opening + ) opening = frappe._dict() for d in gle: @@ -193,7 +206,13 @@ def get_rootwise_opening_balances(filters, report_type): def get_opening_balance( - doctype, filters, report_type, accounting_dimensions, period_closing_voucher=None, start_date=None + doctype, + filters, + report_type, + accounting_dimensions, + period_closing_voucher=None, + start_date=None, + ignore_is_opening=0, ): closing_balance = frappe.qb.DocType(doctype) account = frappe.qb.DocType("Account") @@ -229,11 +248,16 @@ def get_opening_balance( (closing_balance.posting_date >= start_date) & (closing_balance.posting_date < filters.from_date) ) - opening_balance = opening_balance.where(closing_balance.is_opening == "No") + + if not ignore_is_opening: + opening_balance = opening_balance.where(closing_balance.is_opening == "No") else: - opening_balance = opening_balance.where( - (closing_balance.posting_date < filters.from_date) | (closing_balance.is_opening == "Yes") - ) + if not ignore_is_opening: + opening_balance = opening_balance.where( + (closing_balance.posting_date < filters.from_date) | (closing_balance.is_opening == "Yes") + ) + else: + opening_balance = opening_balance.where(closing_balance.posting_date < filters.from_date) if doctype == "GL Entry": opening_balance = opening_balance.where(closing_balance.is_cancelled == 0) @@ -304,7 +328,7 @@ def get_opening_balance( return gle -def calculate_values(accounts, gl_entries_by_account, opening_balances, show_net_values): +def calculate_values(accounts, gl_entries_by_account, opening_balances, show_net_values, ignore_is_opening=0): init = { "opening_debit": 0.0, "opening_credit": 0.0, @@ -322,7 +346,7 @@ def calculate_values(accounts, gl_entries_by_account, opening_balances, show_net d["opening_credit"] = opening_balances.get(d.name, {}).get("opening_credit", 0) for entry in gl_entries_by_account.get(d.name, []): - if cstr(entry.is_opening) != "Yes": + if cstr(entry.is_opening) != "Yes" or ignore_is_opening: d["debit"] += flt(entry.debit) d["credit"] += flt(entry.credit) diff --git a/erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.js b/erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.js index 50578d314e3..62482ac162c 100644 --- a/erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.js +++ b/erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.js @@ -68,16 +68,12 @@ frappe.query_reports["Trial Balance for Party"] = { { fieldname: "account", label: __("Account"), - fieldtype: "Link", + fieldtype: "MultiSelectList", options: "Account", - get_query: function () { - var company = frappe.query_report.get_filter_value("company"); - return { - doctype: "Account", - filters: { - company: company, - }, - }; + get_data: function (txt) { + return frappe.db.get_link_options("Account", txt, { + company: frappe.query_report.get_filter_value("company"), + }); }, }, { diff --git a/erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.py b/erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.py index dd1a12514e2..f6c79eb6c45 100644 --- a/erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.py +++ b/erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.py @@ -4,8 +4,10 @@ import frappe from frappe import _ +from frappe.query_builder.functions import Sum from frappe.utils import cint, flt +from erpnext.accounts.report.general_ledger.general_ledger import get_accounts_with_children from erpnext.accounts.report.trial_balance.trial_balance import validate_filters @@ -35,9 +37,14 @@ def get_data(filters, show_party_name): filters=party_filters, order_by="name", ) + + account_filter = [] + if filters.get("account"): + account_filter = get_accounts_with_children(filters.get("account")) + company_currency = frappe.get_cached_value("Company", filters.company, "default_currency") - opening_balances = get_opening_balances(filters) - balances_within_period = get_balances_within_period(filters) + opening_balances = get_opening_balances(filters, account_filter) + balances_within_period = get_balances_within_period(filters, account_filter) data = [] # total_debit, total_credit = 0, 0 @@ -89,30 +96,34 @@ def get_data(filters, show_party_name): return data -def get_opening_balances(filters): - account_filter = "" - if filters.get("account"): - account_filter = "and account = %s" % (frappe.db.escape(filters.get("account"))) +def get_opening_balances(filters, account_filter=None): + GL_Entry = frappe.qb.DocType("GL Entry") - gle = frappe.db.sql( - f""" - select party, sum(debit) as opening_debit, sum(credit) as opening_credit - from `tabGL Entry` - where company=%(company)s - and is_cancelled=0 - and ifnull(party_type, '') = %(party_type)s and ifnull(party, '') != '' - and (posting_date < %(from_date)s or (ifnull(is_opening, 'No') = 'Yes' and posting_date <= %(to_date)s)) - {account_filter} - group by party""", - { - "company": filters.company, - "from_date": filters.from_date, - "to_date": filters.to_date, - "party_type": filters.party_type, - }, - as_dict=True, + query = ( + frappe.qb.from_(GL_Entry) + .select( + GL_Entry.party, + Sum(GL_Entry.debit).as_("opening_debit"), + Sum(GL_Entry.credit).as_("opening_credit"), + ) + .where( + (GL_Entry.company == filters.company) + & (GL_Entry.is_cancelled == 0) + & (GL_Entry.party_type == filters.party_type) + & (GL_Entry.party != "") + & ( + (GL_Entry.posting_date < filters.from_date) + | ((GL_Entry.is_opening == "Yes") & (GL_Entry.posting_date <= filters.to_date)) + ) + ) + .groupby(GL_Entry.party) ) + if account_filter: + query = query.where(GL_Entry.account.isin(account_filter)) + + gle = query.run(as_dict=True) + opening = frappe._dict() for d in gle: opening_debit, opening_credit = toggle_debit_credit(d.opening_debit, d.opening_credit) @@ -121,31 +132,33 @@ def get_opening_balances(filters): return opening -def get_balances_within_period(filters): - account_filter = "" - if filters.get("account"): - account_filter = "and account = %s" % (frappe.db.escape(filters.get("account"))) +def get_balances_within_period(filters, account_filter=None): + GL_Entry = frappe.qb.DocType("GL Entry") - gle = frappe.db.sql( - f""" - select party, sum(debit) as debit, sum(credit) as credit - from `tabGL Entry` - where company=%(company)s - and is_cancelled = 0 - and ifnull(party_type, '') = %(party_type)s and ifnull(party, '') != '' - and posting_date >= %(from_date)s and posting_date <= %(to_date)s - and ifnull(is_opening, 'No') = 'No' - {account_filter} - group by party""", - { - "company": filters.company, - "from_date": filters.from_date, - "to_date": filters.to_date, - "party_type": filters.party_type, - }, - as_dict=True, + query = ( + frappe.qb.from_(GL_Entry) + .select( + GL_Entry.party, + Sum(GL_Entry.debit).as_("debit"), + Sum(GL_Entry.credit).as_("credit"), + ) + .where( + (GL_Entry.company == filters.company) + & (GL_Entry.is_cancelled == 0) + & (GL_Entry.party_type == filters.party_type) + & (GL_Entry.party != "") + & (GL_Entry.posting_date >= filters.from_date) + & (GL_Entry.posting_date <= filters.to_date) + & (GL_Entry.is_opening == "No") + ) + .groupby(GL_Entry.party) ) + if account_filter: + query = query.where(GL_Entry.account.isin(account_filter)) + + gle = query.run(as_dict=True) + balances_within_period = frappe._dict() for d in gle: balances_within_period.setdefault(d.party, [d.debit, d.credit]) diff --git a/erpnext/accounts/report/utils.py b/erpnext/accounts/report/utils.py index bd1b35559ea..2a72b10e4eb 100644 --- a/erpnext/accounts/report/utils.py +++ b/erpnext/accounts/report/utils.py @@ -255,7 +255,9 @@ def get_journal_entries(filters, args): ) .orderby(je.posting_date, je.name, order=Order.desc) ) - query = apply_common_conditions(filters, query, doctype="Journal Entry", payments=True) + query = apply_common_conditions( + filters, query, doctype="Journal Entry", child_doctype="Journal Entry Account", payments=True + ) journal_entries = query.run(as_dict=True) return journal_entries @@ -306,7 +308,9 @@ def apply_common_conditions(filters, query, doctype, child_doctype=None, payment query = query.where(parent_doc.posting_date <= filters.to_date) if payments: - if filters.get("cost_center"): + if doctype == "Journal Entry" and filters.get("cost_center"): + query = query.where(child_doc.cost_center == filters.cost_center) + elif filters.get("cost_center"): query = query.where(parent_doc.cost_center == filters.cost_center) else: if filters.get("cost_center"): @@ -326,6 +330,7 @@ def apply_common_conditions(filters, query, doctype, child_doctype=None, payment if join_required: query = query.inner_join(child_doc).on(parent_doc.name == child_doc.parent) + query = query.where(child_doc.parenttype == doctype) query = query.distinct() if parent_doc.get_table_name() != "tabJournal Entry": diff --git a/erpnext/accounts/test/accounts_mixin.py b/erpnext/accounts/test/accounts_mixin.py index d503f7bc4af..fbd0c76a229 100644 --- a/erpnext/accounts/test/accounts_mixin.py +++ b/erpnext/accounts/test/accounts_mixin.py @@ -85,6 +85,23 @@ class AccountsTestMixin: "attribute_name": "bank", "account_name": "HDFC", "parent_account": "Bank Accounts - " + abbr, + "account_type": "Bank", + } + ), + frappe._dict( + { + "attribute_name": "advance_received", + "account_name": "Advance Received", + "parent_account": "Current Liabilities - " + abbr, + "account_type": "Receivable", + } + ), + frappe._dict( + { + "attribute_name": "advance_paid", + "account_name": "Advance Paid", + "parent_account": "Current Assets - " + abbr, + "account_type": "Payable", } ), ] @@ -101,9 +118,31 @@ class AccountsTestMixin: "company": self.company, } ) + new_acc.account_type = acc.get("account_type", None) new_acc.save() setattr(self, acc.attribute_name, new_acc.name) + self.identify_default_warehouses() + + def enable_advance_as_liability(self): + company = frappe.get_doc("Company", self.company) + company.book_advance_payments_in_separate_party_account = True + company.default_advance_received_account = self.advance_received + company.default_advance_paid_account = self.advance_paid + company.save() + + def disable_advance_as_liability(self): + company = frappe.get_doc("Company", self.company) + company.book_advance_payments_in_separate_party_account = False + company.default_advance_paid_account = company.default_advance_received_account = None + company.save() + + def identify_default_warehouses(self): + for w in frappe.db.get_all( + "Warehouse", filters={"company": self.company}, fields=["name", "warehouse_name"] + ): + setattr(self, "warehouse_" + w.warehouse_name.lower().strip().replace(" ", "_"), w.name) + def create_usd_receivable_account(self): account_name = "Debtors USD" if not frappe.db.get_value( diff --git a/erpnext/accounts/test/test_reports.py b/erpnext/accounts/test/test_reports.py index c2e10f8fd47..56b7832a32e 100644 --- a/erpnext/accounts/test/test_reports.py +++ b/erpnext/accounts/test/test_reports.py @@ -14,8 +14,8 @@ DEFAULT_FILTERS = { REPORT_FILTER_TEST_CASES: list[tuple[ReportName, ReportFilters]] = [ ("General Ledger", {"group_by": "Group by Voucher (Consolidated)"}), ("General Ledger", {"group_by": "Group by Voucher (Consolidated)", "include_dimensions": 1}), - ("Accounts Payable", {"range1": 30, "range2": 60, "range3": 90, "range4": 120}), - ("Accounts Receivable", {"range1": 30, "range2": 60, "range3": 90, "range4": 120}), + ("Accounts Payable", {"range": "30, 60, 90, 120"}), + ("Accounts Receivable", {"range": "30, 60, 90, 120"}), ("Consolidated Financial Statement", {"report": "Balance Sheet"}), ("Consolidated Financial Statement", {"report": "Profit and Loss Statement"}), ("Consolidated Financial Statement", {"report": "Cash Flow"}), diff --git a/erpnext/accounts/test/test_utils.py b/erpnext/accounts/test/test_utils.py index 59cbc11794f..5e108dee9b5 100644 --- a/erpnext/accounts/test/test_utils.py +++ b/erpnext/accounts/test/test_utils.py @@ -92,14 +92,14 @@ class TestUtils(unittest.TestCase): payment_entry.deductions = [] payment_entry.save() - # below is the difference between base_received_amount and base_paid_amount - self.assertEqual(payment_entry.difference_amount, -4855.0) + # below is the difference between base_paid_amount and base_received_amount (exchange gain) + self.assertEqual(payment_entry.deductions[0].amount, -4855.0) payment_entry.target_exchange_rate = 62.9 payment_entry.save() - # below is due to change in exchange rate - self.assertEqual(payment_entry.references[0].exchange_gain_loss, -4855.0) + # after changing the exchange rate, there is no exchange gain / loss + self.assertEqual(payment_entry.deductions, []) payment_entry.references = [] self.assertEqual(payment_entry.difference_amount, 0.0) diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py index 0450221222d..b46e427382f 100644 --- a/erpnext/accounts/utils.py +++ b/erpnext/accounts/utils.py @@ -9,8 +9,8 @@ import frappe import frappe.defaults from frappe import _, qb, throw from frappe.model.meta import get_field_precision -from frappe.query_builder import AliasedQuery, Criterion, Table -from frappe.query_builder.functions import Count, Sum +from frappe.query_builder import AliasedQuery, Case, Criterion, Table +from frappe.query_builder.functions import Count, Max, Sum from frappe.query_builder.utils import DocType from frappe.utils import ( add_days, @@ -130,7 +130,9 @@ def get_fiscal_years( else: return ((fy.name, fy.year_start_date, fy.year_end_date),) - error_msg = _("""{0} {1} is not in any active Fiscal Year""").format(label, formatdate(transaction_date)) + error_msg = _("""{0} {1} is not in any active Fiscal Year""").format( + _(label), formatdate(transaction_date) + ) if company: error_msg = _("""{0} for {1}""").format(error_msg, frappe.bold(company)) @@ -474,10 +476,14 @@ def reconcile_against_document( doc = frappe.get_doc(voucher_type, voucher_no) frappe.flags.ignore_party_validation = True - # For payments with `Advance` in separate account feature enabled, only new ledger entries are posted for each reference. - # No need to cancel/delete payment ledger entries + # When Advance is allocated from an Order to an Invoice + # whole ledger must be reposted + repost_whole_ledger = any([x.voucher_detail_no for x in entries]) if voucher_type == "Payment Entry" and doc.book_advance_payments_in_separate_party_account: - doc.make_advance_gl_entries(cancel=1) + if repost_whole_ledger: + doc.make_gl_entries(cancel=1) + else: + doc.make_advance_gl_entries(cancel=1) else: _delete_pl_entries(voucher_type, voucher_no) @@ -511,9 +517,14 @@ def reconcile_against_document( doc = frappe.get_doc(entry.voucher_type, entry.voucher_no) if voucher_type == "Payment Entry" and doc.book_advance_payments_in_separate_party_account: - # both ledgers must be posted to for `Advance` in separate account feature - # TODO: find a more efficient way post only for the new linked vouchers - doc.make_advance_gl_entries() + # When Advance is allocated from an Order to an Invoice + # whole ledger must be reposted + if repost_whole_ledger: + doc.make_gl_entries() + else: + # both ledgers must be posted to for `Advance` in separate account feature + # TODO: find a more efficient way post only for the new linked vouchers + doc.make_advance_gl_entries() else: gl_map = doc.build_gl_map() # Make sure there is no overallocation @@ -621,6 +632,16 @@ def update_reference_in_journal_entry(d, journal_entry, do_not_save=False): if jv_detail.get("reference_type") in ["Sales Order", "Purchase Order"]: update_advance_paid.append((jv_detail.reference_type, jv_detail.reference_name)) + rev_dr_or_cr = ( + "debit_in_account_currency" + if d["dr_or_cr"] == "credit_in_account_currency" + else "credit_in_account_currency" + ) + if jv_detail.get(rev_dr_or_cr): + d["dr_or_cr"] = rev_dr_or_cr + d["allocated_amount"] = d["allocated_amount"] * -1 + d["unadjusted_amount"] = d["unadjusted_amount"] * -1 + if flt(d["unadjusted_amount"]) - flt(d["allocated_amount"]) != 0: # adjust the unreconciled balance amount_in_account_currency = flt(d["unadjusted_amount"]) - flt(d["allocated_amount"]) @@ -665,6 +686,8 @@ def update_reference_in_journal_entry(d, journal_entry, do_not_save=False): # will work as update after submit journal_entry.flags.ignore_validate_update_after_submit = True + # Ledgers will be reposted by Reconciliation tool + journal_entry.flags.ignore_reposting_on_reconciliation = True if not do_not_save: journal_entry.save(ignore_permissions=True) @@ -689,6 +712,23 @@ def update_reference_in_payment_entry( } update_advance_paid = [] + # Update Reconciliation effect date in reference + if payment_entry.book_advance_payments_in_separate_party_account: + if payment_entry.advance_reconciliation_takes_effect_on == "Advance Payment Date": + reconcile_on = payment_entry.posting_date + elif payment_entry.advance_reconciliation_takes_effect_on == "Oldest Of Invoice Or Advance": + date_field = "posting_date" + if d.against_voucher_type in ["Sales Order", "Purchase Order"]: + date_field = "transaction_date" + reconcile_on = frappe.db.get_value(d.against_voucher_type, d.against_voucher, date_field) + + if getdate(reconcile_on) < getdate(payment_entry.posting_date): + reconcile_on = payment_entry.posting_date + elif payment_entry.advance_reconciliation_takes_effect_on == "Reconciliation Date": + reconcile_on = nowdate() + + reference_details.update({"reconcile_effect_on": reconcile_on}) + if d.voucher_detail_no: existing_row = payment_entry.get("references", {"name": d["voucher_detail_no"]})[0] @@ -733,6 +773,8 @@ def update_reference_in_payment_entry( frappe._dict({"difference_posting_date": d.difference_posting_date}), dimensions_dict ) + # Ledgers will be reposted by Reconciliation tool + payment_entry.flags.ignore_reposting_on_reconciliation = True if not do_not_save: payment_entry.save(ignore_permissions=True) return row, update_advance_paid @@ -745,40 +787,114 @@ def cancel_exchange_gain_loss_journal( Cancel Exchange Gain/Loss for Sales/Purchase Invoice, if they have any. """ if parent_doc.doctype in ["Sales Invoice", "Purchase Invoice", "Payment Entry", "Journal Entry"]: - journals = frappe.db.get_all( - "Journal Entry Account", - filters={ - "reference_type": parent_doc.doctype, - "reference_name": parent_doc.name, - "docstatus": 1, - }, - fields=["parent"], - as_list=1, + gain_loss_journals = get_linked_exchange_gain_loss_journal( + referenced_dt=parent_doc.doctype, referenced_dn=parent_doc.name, je_docstatus=1 ) - - if journals: - gain_loss_journals = frappe.db.get_all( - "Journal Entry", - filters={ - "name": ["in", [x[0] for x in journals]], - "voucher_type": "Exchange Gain Or Loss", - "docstatus": 1, - }, - as_list=1, - ) - for doc in gain_loss_journals: - gain_loss_je = frappe.get_doc("Journal Entry", doc[0]) - if referenced_dt and referenced_dn: - references = [(x.reference_type, x.reference_name) for x in gain_loss_je.accounts] - if ( - len(references) == 2 - and (referenced_dt, referenced_dn) in references - and (parent_doc.doctype, parent_doc.name) in references - ): - # only cancel JE generated against parent_doc and referenced_dn - gain_loss_je.cancel() - else: + for doc in gain_loss_journals: + gain_loss_je = frappe.get_doc("Journal Entry", doc) + if referenced_dt and referenced_dn: + references = [(x.reference_type, x.reference_name) for x in gain_loss_je.accounts] + if ( + len(references) == 2 + and (referenced_dt, referenced_dn) in references + and (parent_doc.doctype, parent_doc.name) in references + ): + # only cancel JE generated against parent_doc and referenced_dn gain_loss_je.cancel() + else: + gain_loss_je.cancel() + + +def delete_exchange_gain_loss_journal( + parent_doc: dict | object, referenced_dt: str | None = None, referenced_dn: str | None = None +) -> None: + """ + Delete Exchange Gain/Loss for Sales/Purchase Invoice, if they have any. + """ + if parent_doc.doctype in ["Sales Invoice", "Purchase Invoice", "Payment Entry", "Journal Entry"]: + gain_loss_journals = get_linked_exchange_gain_loss_journal( + referenced_dt=parent_doc.doctype, referenced_dn=parent_doc.name, je_docstatus=2 + ) + for doc in gain_loss_journals: + gain_loss_je = frappe.get_doc("Journal Entry", doc) + if referenced_dt and referenced_dn: + references = [(x.reference_type, x.reference_name) for x in gain_loss_je.accounts] + if ( + len(references) == 2 + and (referenced_dt, referenced_dn) in references + and (parent_doc.doctype, parent_doc.name) in references + ): + # only delete JE generated against parent_doc and referenced_dn + gain_loss_je.delete() + else: + gain_loss_je.delete() + + +def get_linked_exchange_gain_loss_journal(referenced_dt: str, referenced_dn: str, je_docstatus: int) -> list: + """ + Get all the linked exchange gain/loss journal entries for a given document. + """ + gain_loss_journals = [] + if journals := frappe.db.get_all( + "Journal Entry Account", + { + "reference_type": referenced_dt, + "reference_name": referenced_dn, + "docstatus": je_docstatus, + }, + pluck="parent", + ): + gain_loss_journals = frappe.db.get_all( + "Journal Entry", + { + "name": ["in", journals], + "voucher_type": "Exchange Gain Or Loss", + "is_system_generated": 1, + "docstatus": je_docstatus, + }, + pluck="name", + ) + return gain_loss_journals + + +def cancel_common_party_journal(self): + if self.doctype not in ["Sales Invoice", "Purchase Invoice"]: + return + + if not frappe.db.get_single_value("Accounts Settings", "enable_common_party_accounting"): + return + + party_link = self.get_common_party_link() + if not party_link: + return + + journal_entry = frappe.db.get_value( + "Journal Entry Account", + filters={ + "reference_type": self.doctype, + "reference_name": self.name, + "docstatus": 1, + }, + fieldname="parent", + ) + + if not journal_entry: + return + + common_party_journal = frappe.db.get_value( + "Journal Entry", + filters={ + "name": journal_entry, + "is_system_generated": True, + "docstatus": 1, + }, + ) + + if not common_party_journal: + return + + common_party_je = frappe.get_doc("Journal Entry", common_party_journal) + common_party_je.cancel() def update_accounting_ledgers_after_reference_removal( @@ -1301,7 +1417,7 @@ def repost_gle_for_stock_vouchers( if not warehouse_account: warehouse_account = get_warehouse_account_map(company) - stock_vouchers = sort_stock_vouchers_by_posting_date(stock_vouchers) + stock_vouchers = sort_stock_vouchers_by_posting_date(stock_vouchers, company=company) if repost_doc and repost_doc.gl_reposting_index: # Restore progress stock_vouchers = stock_vouchers[cint(repost_doc.gl_reposting_index) :] @@ -1354,7 +1470,9 @@ def _delete_accounting_ledger_entries(voucher_type, voucher_no): _delete_pl_entries(voucher_type, voucher_no) -def sort_stock_vouchers_by_posting_date(stock_vouchers: list[tuple[str, str]]) -> list[tuple[str, str]]: +def sort_stock_vouchers_by_posting_date( + stock_vouchers: list[tuple[str, str]], company=None +) -> list[tuple[str, str]]: sle = frappe.qb.DocType("Stock Ledger Entry") voucher_nos = [v[1] for v in stock_vouchers] @@ -1365,7 +1483,12 @@ def sort_stock_vouchers_by_posting_date(stock_vouchers: list[tuple[str, str]]) - .groupby(sle.voucher_type, sle.voucher_no) .orderby(sle.posting_datetime) .orderby(sle.creation) - ).run(as_dict=True) + ) + + if company: + sles = sles.where(sle.company == company) + + sles = sles.run(as_dict=True) sorted_vouchers = [(sle.voucher_type, sle.voucher_no) for sle in sles] unknown_vouchers = set(stock_vouchers) - set(sorted_vouchers) @@ -1462,12 +1585,16 @@ def compare_existing_and_expected_gle(existing_gle, expected_gle, precision): return matched -def get_stock_accounts(company, voucher_type=None, voucher_no=None): +def get_stock_accounts(company, voucher_type=None, voucher_no=None, accounts=None): stock_accounts = [ d.name for d in frappe.db.get_all("Account", {"account_type": "Stock", "company": company, "is_group": 0}) ] - if voucher_type and voucher_no: + + if accounts: + stock_accounts = [row.account for row in accounts if row.account in stock_accounts] + + elif voucher_type and voucher_no: if voucher_type == "Journal Entry": stock_accounts = [ d.account @@ -1526,7 +1653,7 @@ def get_stock_and_account_balance(account=None, posting_date=None, company=None) if wh_details.account == account and not wh_details.is_group ] - total_stock_value = get_stock_value_on(related_warehouses, posting_date) + total_stock_value = get_stock_value_on(related_warehouses, posting_date, company=company) precision = frappe.get_precision("Journal Entry Account", "debit_in_account_currency") return flt(account_balance, precision), flt(total_stock_value, precision), related_warehouses @@ -1727,14 +1854,17 @@ def update_voucher_outstanding(voucher_type, voucher_no, account, party_type, pa ): outstanding = voucher_outstanding[0] ref_doc = frappe.get_doc(voucher_type, voucher_no) + outstanding_amount = flt( + outstanding["outstanding_in_account_currency"], ref_doc.precision("outstanding_amount") + ) # Didn't use db_set for optimisation purpose - ref_doc.outstanding_amount = outstanding["outstanding_in_account_currency"] or 0.0 + ref_doc.outstanding_amount = outstanding_amount frappe.db.set_value( voucher_type, voucher_no, "outstanding_amount", - outstanding["outstanding_in_account_currency"] or 0.0, + outstanding_amount, ) ref_doc.set_status(update=True) @@ -1847,6 +1977,15 @@ class QueryPaymentLedger: .select( ple.against_voucher_no.as_("voucher_no"), Sum(ple.amount_in_account_currency).as_("amount_in_account_currency"), + Max( + Case().when( + ( + (ple.voucher_no == ple.against_voucher_no) + & (ple.voucher_type == ple.against_voucher_type) + ), + (ple.posting_date), + ) + ).as_("invoice_date"), ) .where(ple.delinked == 0) .where(Criterion.all(filter_on_against_voucher_no)) @@ -1854,7 +1993,7 @@ class QueryPaymentLedger: .where(Criterion.all(self.dimensions_filter)) .where(Criterion.all(self.voucher_posting_date)) .groupby(ple.against_voucher_type, ple.against_voucher_no, ple.party_type, ple.party) - .orderby(ple.posting_date, ple.voucher_no) + .orderby(ple.invoice_date, ple.voucher_no) .having(qb.Field("amount_in_account_currency") > 0) .limit(self.limit) .run() @@ -1880,6 +2019,7 @@ class QueryPaymentLedger: ple.cost_center.as_("cost_center"), Sum(ple.amount).as_("amount"), Sum(ple.amount_in_account_currency).as_("amount_in_account_currency"), + ple.remarks, ) .where(ple.delinked == 0) .where(Criterion.all(filter_on_voucher_no)) @@ -1942,6 +2082,7 @@ class QueryPaymentLedger: Table("vouchers").due_date, Table("vouchers").currency, Table("vouchers").cost_center.as_("cost_center"), + Table("vouchers").remarks, ) .where(Criterion.all(filter_on_outstanding_amount)) ) @@ -2130,3 +2271,38 @@ def run_ledger_health_checks(): doc.general_and_payment_ledger_mismatch = True doc.checked_on = run_date doc.save() + + +def sync_auto_reconcile_config(auto_reconciliation_job_trigger: int = 15): + auto_reconciliation_job_trigger = auto_reconciliation_job_trigger or frappe.db.get_single_value( + "Accounts Settings", "auto_reconciliation_job_trigger" + ) + method = "erpnext.accounts.doctype.process_payment_reconciliation.process_payment_reconciliation.trigger_reconciliation_for_queued_docs" + + sch_event = frappe.get_doc( + "Scheduler Event", {"scheduled_against": "Process Payment Reconciliation", "method": method} + ) + if frappe.db.get_value("Scheduled Job Type", {"method": method}): + frappe.get_doc( + "Scheduled Job Type", + { + "method": method, + }, + ).update( + { + "cron_format": f"0/{auto_reconciliation_job_trigger} * * * *", + "scheduler_event": sch_event.name, + } + ).save() + else: + frappe.get_doc( + { + "doctype": "Scheduled Job Type", + "method": method, + "scheduler_event": sch_event.name, + "cron_format": f"0/{auto_reconciliation_job_trigger} * * * *", + "create_log": True, + "stopped": False, + "frequency": "Cron", + } + ).save() diff --git a/erpnext/accounts/workspace/accounting/accounting.json b/erpnext/accounts/workspace/accounting/accounting.json index 45ab92e2c56..c6a7fc6d84c 100644 --- a/erpnext/accounts/workspace/accounting/accounting.json +++ b/erpnext/accounts/workspace/accounting/accounting.json @@ -621,7 +621,7 @@ "doc_view": "List", "label": "Learn Accounting", "type": "URL", - "url": "https://frappe.school/courses/erpnext-accounting?utm_source=in_app" + "url": "https://school.frappe.io/lms/courses/erpnext-accounting?utm_source=in_app" }, { "label": "Chart of Accounts", @@ -670,4 +670,4 @@ } ], "title": "Accounting" -} \ No newline at end of file +} diff --git a/erpnext/accounts/workspace/payables/payables.json b/erpnext/accounts/workspace/payables/payables.json index f8c85648756..96c626c7291 100644 --- a/erpnext/accounts/workspace/payables/payables.json +++ b/erpnext/accounts/workspace/payables/payables.json @@ -93,7 +93,7 @@ }, { "hidden": 0, - "is_query_report": 0, + "is_query_report": 1, "label": "Accounts Payable", "link_count": 0, "link_to": "Accounts Payable", @@ -103,7 +103,7 @@ }, { "hidden": 0, - "is_query_report": 0, + "is_query_report": 1, "label": "Accounts Payable Summary", "link_count": 0, "link_to": "Accounts Payable Summary", @@ -113,7 +113,7 @@ }, { "hidden": 0, - "is_query_report": 0, + "is_query_report": 1, "label": "Purchase Register", "link_count": 0, "link_to": "Purchase Register", @@ -123,7 +123,7 @@ }, { "hidden": 0, - "is_query_report": 0, + "is_query_report": 1, "label": "Item-wise Purchase Register", "link_count": 0, "link_to": "Item-wise Purchase Register", @@ -133,7 +133,7 @@ }, { "hidden": 0, - "is_query_report": 0, + "is_query_report": 1, "label": "Purchase Order Analysis", "link_count": 0, "link_to": "Purchase Order Analysis", @@ -143,7 +143,7 @@ }, { "hidden": 0, - "is_query_report": 0, + "is_query_report": 1, "label": "Received Items To Be Billed", "link_count": 0, "link_to": "Received Items To Be Billed", @@ -153,7 +153,7 @@ }, { "hidden": 0, - "is_query_report": 0, + "is_query_report": 1, "label": "Supplier Ledger Summary", "link_count": 0, "link_to": "Supplier Ledger Summary", diff --git a/erpnext/assets/doctype/asset/asset.js b/erpnext/assets/doctype/asset/asset.js index 2477e443c4a..b9ea888faf7 100644 --- a/erpnext/assets/doctype/asset/asset.js +++ b/erpnext/assets/doctype/asset/asset.js @@ -213,7 +213,7 @@ frappe.ui.form.on("Asset", {
- Failed to post depreciation entries + ${__("Failed to post depreciation entries")}
`; @@ -416,7 +416,7 @@ frappe.ui.form.on("Asset", { } frm.dashboard.render_graph({ - title: "Asset Value", + title: __("Asset Value"), data: { labels: x_intervals, datasets: [ @@ -506,6 +506,7 @@ frappe.ui.form.on("Asset", { create_asset_repair: function (frm) { frappe.call({ args: { + company: frm.doc.company, asset: frm.doc.name, asset_name: frm.doc.asset_name, }, @@ -520,6 +521,7 @@ frappe.ui.form.on("Asset", { create_asset_capitalization: function (frm) { frappe.call({ args: { + company: frm.doc.company, asset: frm.doc.name, asset_name: frm.doc.asset_name, item_code: frm.doc.item_code, @@ -528,6 +530,7 @@ frappe.ui.form.on("Asset", { callback: function (r) { var doclist = frappe.model.sync(r.message); frappe.set_route("Form", doclist[0].doctype, doclist[0].name); + $(".primary-action").prop("hidden", false); }, }); }, @@ -606,9 +609,7 @@ frappe.ui.form.on("Asset", { frm.trigger("toggle_reference_doc"); if (frm.doc.purchase_receipt) { if (frm.doc.item_code) { - frappe.db.get_doc("Purchase Receipt", frm.doc.purchase_receipt).then((pr_doc) => { - frm.events.set_values_from_purchase_doc(frm, "Purchase Receipt", pr_doc); - }); + frm.events.set_values_from_purchase_doc(frm, "Purchase Receipt"); } else { frm.set_value("purchase_receipt", ""); frappe.msgprint({ @@ -623,9 +624,7 @@ frappe.ui.form.on("Asset", { frm.trigger("toggle_reference_doc"); if (frm.doc.purchase_invoice) { if (frm.doc.item_code) { - frappe.db.get_doc("Purchase Invoice", frm.doc.purchase_invoice).then((pi_doc) => { - frm.events.set_values_from_purchase_doc(frm, "Purchase Invoice", pi_doc); - }); + frm.events.set_values_from_purchase_doc(frm, "Purchase Invoice"); } else { frm.set_value("purchase_invoice", ""); frappe.msgprint({ @@ -636,45 +635,35 @@ frappe.ui.form.on("Asset", { } }, - set_values_from_purchase_doc: function (frm, doctype, purchase_doc) { - frm.set_value("company", purchase_doc.company); - if (purchase_doc.bill_date) { - frm.set_value("purchase_date", purchase_doc.bill_date); - } else { - frm.set_value("purchase_date", purchase_doc.posting_date); - } - if (!frm.doc.is_existing_asset && !frm.doc.available_for_use_date) { - frm.set_value("available_for_use_date", frm.doc.purchase_date); - } - const item = purchase_doc.items.find((item) => item.item_code === frm.doc.item_code); - if (!item) { - let doctype_field = frappe.scrub(doctype); - frm.set_value(doctype_field, ""); - frappe.msgprint({ - title: __("Invalid {0}", [__(doctype)]), - message: __("The selected {0} does not contain the selected Asset Item.", [__(doctype)]), - indicator: "red", - }); - } - frappe.db.get_value("Item", item.item_code, "is_grouped_asset", (r) => { - var asset_quantity = r.is_grouped_asset ? item.qty : 1; - var purchase_amount = flt( - item.valuation_rate * asset_quantity, - precision("gross_purchase_amount") - ); + set_values_from_purchase_doc: (frm, doctype) => { + frappe.call({ + method: "erpnext.assets.doctype.asset.asset.get_values_from_purchase_doc", + args: { + purchase_doc_name: frm.doc.purchase_receipt || frm.doc.purchase_invoice, + item_code: frm.doc.item_code, + doctype: doctype, + }, + callback: (r) => { + if (r.message) { + let data = r.message; + frm.set_value("company", data.company); + frm.set_value("purchase_date", data.purchase_date); + frm.set_value("gross_purchase_amount", data.gross_purchase_amount); + frm.set_value("purchase_amount", data.gross_purchase_amount); + frm.set_value("asset_quantity", data.asset_quantity); + frm.set_value("cost_center", data.cost_center); - frm.set_value("gross_purchase_amount", purchase_amount); - frm.set_value("purchase_amount", purchase_amount); - frm.set_value("asset_quantity", asset_quantity); - frm.set_value("cost_center", item.cost_center || purchase_doc.cost_center); - if (item.asset_location) { - frm.set_value("location", item.asset_location); - } - if (doctype === "Purchase Receipt") { - frm.set_value("purchase_receipt_item", item.name); - } else if (doctype === "Purchase Invoice") { - frm.set_value("purchase_invoice_item", item.name); - } + if (doctype === "Purchase Receipt") { + frm.set_value("purchase_receipt_item", data.purchase_receipt_item); + } else { + frm.set_value("purchase_invoice_item", data.purchase_invoice_item); + } + + let is_editable = !data.is_multiple_items; // if multiple items, then fields should be read-only + frm.set_df_property("gross_purchase_amount", "read_only", is_editable); + frm.set_df_property("asset_quantity", "read_only", is_editable); + } + }, }); }, diff --git a/erpnext/assets/doctype/asset/asset.json b/erpnext/assets/doctype/asset/asset.json index 55932e9b787..cf3602ef966 100644 --- a/erpnext/assets/doctype/asset/asset.json +++ b/erpnext/assets/doctype/asset/asset.json @@ -87,6 +87,7 @@ "options": "ACC-ASS-.YYYY.-" }, { + "allow_on_submit": 1, "depends_on": "item_code", "fetch_from": "item_code.item_name", "fetch_if_empty": 1, @@ -225,10 +226,9 @@ { "fieldname": "gross_purchase_amount", "fieldtype": "Currency", - "label": "Gross Purchase Amount", + "label": "Net Purchase Amount", "mandatory_depends_on": "eval:(!doc.is_composite_asset || doc.docstatus==1)", - "options": "Company:company:default_currency", - "read_only_depends_on": "eval:!doc.is_existing_asset" + "options": "Company:company:default_currency" }, { "fieldname": "available_for_use_date", @@ -378,7 +378,7 @@ "in_standard_filter": 1, "label": "Status", "no_copy": 1, - "options": "Draft\nSubmitted\nPartially Depreciated\nFully Depreciated\nSold\nScrapped\nIn Maintenance\nOut of Order\nIssue\nReceipt\nCapitalized\nDecapitalized", + "options": "Draft\nSubmitted\nPartially Depreciated\nFully Depreciated\nSold\nScrapped\nIn Maintenance\nOut of Order\nIssue\nReceipt\nCapitalized\nWork In Progress", "read_only": 1 }, { @@ -470,8 +470,7 @@ "default": "1", "fieldname": "asset_quantity", "fieldtype": "Int", - "label": "Asset Quantity", - "read_only_depends_on": "eval:!doc.is_existing_asset && !doc.is_composite_asset" + "label": "Asset Quantity" }, { "fieldname": "depr_entry_posting_status", @@ -541,14 +540,13 @@ }, { "fieldname": "purchase_receipt_item", - "fieldtype": "Link", + "fieldtype": "Data", "hidden": 1, - "label": "Purchase Receipt Item", - "options": "Purchase Receipt Item" + "label": "Purchase Receipt Item" }, { "fieldname": "purchase_invoice_item", - "fieldtype": "Link", + "fieldtype": "Data", "hidden": 1, "label": "Purchase Invoice Item", "options": "Purchase Invoice Item" @@ -595,7 +593,7 @@ "link_fieldname": "target_asset" } ], - "modified": "2024-08-26 23:28:29.095139", + "modified": "2025-04-15 16:33:17.189524", "modified_by": "Administrator", "module": "Assets", "name": "Asset", @@ -633,6 +631,7 @@ "write": 1 } ], + "row_format": "Dynamic", "show_name_in_global_search": 1, "sort_field": "modified", "sort_order": "DESC", diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py index f6846ea3cee..6886a79bb0a 100644 --- a/erpnext/assets/doctype/asset/asset.py +++ b/erpnext/assets/doctype/asset/asset.py @@ -19,6 +19,7 @@ from frappe.utils import ( ) import erpnext +from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_dimensions from erpnext.accounts.general_ledger import make_reverse_gl_entries from erpnext.assets.doctype.asset.depreciation import ( get_comma_separated_links, @@ -41,14 +42,15 @@ from erpnext.controllers.accounts_controller import AccountsController class Asset(AccountsController): # begin: auto-generated types + # ruff: noqa + # 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 - from erpnext.assets.doctype.asset_finance_book.asset_finance_book import AssetFinanceBook + from frappe.types import DF additional_asset_cost: DF.Currency amended_from: DF.Link | None @@ -94,9 +96,9 @@ class Asset(AccountsController): purchase_amount: DF.Currency purchase_date: DF.Date | None purchase_invoice: DF.Link | None - purchase_invoice_item: DF.Link | None + purchase_invoice_item: DF.Data | None purchase_receipt: DF.Link | None - purchase_receipt_item: DF.Link | None + purchase_receipt_item: DF.Data | None split_from: DF.Link | None status: DF.Literal[ "Draft", @@ -110,22 +112,24 @@ class Asset(AccountsController): "Issue", "Receipt", "Capitalized", - "Decapitalized", + "Work In Progress", ] supplier: DF.Link | None total_asset_cost: DF.Currency total_number_of_depreciations: DF.Int value_after_depreciation: DF.Currency + # ruff: noqa # end: auto-generated types def validate(self): + self.validate_precision() + self.set_purchase_doc_row_item() self.validate_asset_values() self.validate_asset_and_reference() self.validate_item() self.validate_cost_center() self.set_missing_values() self.validate_gross_and_purchase_amount() - self.validate_expected_value_after_useful_life() self.validate_finance_books() if not self.split_from: @@ -146,6 +150,7 @@ class Asset(AccountsController): "Asset Depreciation Schedules created:
{0}

Please check, edit if needed, and submit the Asset." ).format(asset_depr_schedules_links) ) + self.validate_expected_value_after_useful_life() self.set_total_booked_depreciations() self.total_asset_cost = self.gross_purchase_amount self.status = self.get_status() @@ -197,6 +202,38 @@ class Asset(AccountsController): def after_delete(self): add_asset_activity(self.name, _("Asset deleted")) + def set_purchase_doc_row_item(self): + if self.is_existing_asset or self.is_composite_asset: + return + + self.purchase_amount = self.gross_purchase_amount + purchase_doc_type = "Purchase Receipt" if self.purchase_receipt else "Purchase Invoice" + purchase_doc = self.purchase_receipt or self.purchase_invoice + + if not purchase_doc: + return + + linked_item = self.get_linked_item(purchase_doc_type, purchase_doc) + + if linked_item: + if purchase_doc_type == "Purchase Receipt": + self.purchase_receipt_item = linked_item + else: + self.purchase_invoice_item = linked_item + + def get_linked_item(self, purchase_doc_type, purchase_doc): + purchase_doc = frappe.get_doc(purchase_doc_type, purchase_doc) + + for item in purchase_doc.items: + if self.asset_quantity > 1: + if item.base_net_amount == self.gross_purchase_amount and item.qty == self.asset_quantity: + return item.name + elif item.qty == self.asset_quantity: + return item.name + else: + if item.base_net_rate == self.gross_purchase_amount and item.qty == self.asset_quantity: + return item.name + def validate_asset_and_reference(self): if self.purchase_invoice or self.purchase_receipt: reference_doc = "Purchase Invoice" if self.purchase_invoice else "Purchase Receipt" @@ -306,6 +343,17 @@ class Asset(AccountsController): title=_("Missing Finance Book"), ) + def validate_precision(self): + if self.gross_purchase_amount: + self.gross_purchase_amount = flt( + self.gross_purchase_amount, self.precision("gross_purchase_amount") + ) + + if self.opening_accumulated_depreciation: + self.opening_accumulated_depreciation = flt( + self.opening_accumulated_depreciation, self.precision("opening_accumulated_depreciation") + ) + def validate_asset_values(self): if not self.asset_category: self.asset_category = frappe.get_cached_value("Item", self.item_code, "asset_category") @@ -400,6 +448,9 @@ class Asset(AccountsController): ) def validate_asset_finance_books(self, row): + row.expected_value_after_useful_life = flt( + row.expected_value_after_useful_life, self.precision("gross_purchase_amount") + ) if flt(row.expected_value_after_useful_life) >= flt(self.gross_purchase_amount): frappe.throw( _("Row {0}: Expected Value After Useful Life must be less than Gross Purchase Amount").format( @@ -420,7 +471,10 @@ class Asset(AccountsController): self.opening_accumulated_depreciation = 0 self.opening_number_of_booked_depreciations = 0 else: - depreciable_amount = flt(self.gross_purchase_amount) - flt(row.expected_value_after_useful_life) + depreciable_amount = flt( + flt(self.gross_purchase_amount) - flt(row.expected_value_after_useful_life), + self.precision("gross_purchase_amount"), + ) if flt(self.opening_accumulated_depreciation) > depreciable_amount: frappe.throw( _("Opening Accumulated Depreciation must be less than or equal to {0}").format( @@ -472,7 +526,6 @@ class Asset(AccountsController): def validate_expected_value_after_useful_life(self): for row in self.get("finance_books"): depr_schedule = get_depr_schedule(self.name, "Draft", row.finance_book) - if not depr_schedule: continue @@ -623,6 +676,9 @@ class Asset(AccountsController): return records def validate_make_gl_entry(self): + if self.is_composite_asset: + return True + purchase_document = self.get_purchase_document() if not purchase_document: return False @@ -782,19 +838,27 @@ class Asset(AccountsController): ): return args.get("rate_of_depreciation") + if args.get("rate_of_depreciation") and not flt(args.get("expected_value_after_useful_life")): + return args.get("rate_of_depreciation") + if self.flags.increase_in_asset_value_due_to_repair: value = flt(args.get("expected_value_after_useful_life")) / flt( args.get("value_after_depreciation") ) else: - value = flt(args.get("expected_value_after_useful_life")) / flt(self.gross_purchase_amount) + value = flt(args.get("expected_value_after_useful_life")) / ( + flt(self.gross_purchase_amount) - flt(self.opening_accumulated_depreciation) + ) depreciation_rate = math.pow( value, 1.0 / ( ( - flt(args.get("total_number_of_depreciations"), 2) + ( + flt(args.get("total_number_of_depreciations"), 2) + - flt(self.opening_number_of_booked_depreciations) + ) * flt(args.get("frequency_of_depreciation")) ) / 12 @@ -859,6 +923,7 @@ def get_asset_naming_series(): @frappe.whitelist() def make_sales_invoice(asset, item_code, company, serial_no=None): + asset_doc = frappe.get_doc("Asset", asset) si = frappe.new_doc("Sales Invoice") si.company = company si.currency = frappe.get_cached_value("Company", company, "default_currency") @@ -875,6 +940,16 @@ def make_sales_invoice(asset, item_code, company, serial_no=None): "qty": 1, }, ) + + accounting_dimensions = get_dimensions(with_cost_center_and_project=True) + for dimension in accounting_dimensions[0]: + si.update( + { + dimension["fieldname"]: asset_doc.get(dimension["fieldname"]) + or dimension.get("default_dimension") + } + ) + si.set_missing_values() return si @@ -895,18 +970,19 @@ def create_asset_maintenance(asset, item_code, item_name, asset_category, compan @frappe.whitelist() -def create_asset_repair(asset, asset_name): +def create_asset_repair(company, asset, asset_name): asset_repair = frappe.new_doc("Asset Repair") - asset_repair.update({"asset": asset, "asset_name": asset_name}) + asset_repair.update({"company": company, "asset": asset, "asset_name": asset_name}) return asset_repair @frappe.whitelist() -def create_asset_capitalization(asset, asset_name, item_code): +def create_asset_capitalization(company, asset, asset_name, item_code): asset_capitalization = frappe.new_doc("Asset Capitalization") asset_capitalization.update( { "target_asset": asset, + "company": company, "capitalization_method": "Choose a WIP composite asset", "target_asset_name": asset_name, "target_item_code": item_code, @@ -1084,6 +1160,30 @@ def has_active_capitalization(asset): return active_capitalizations > 0 +@frappe.whitelist() +def get_values_from_purchase_doc(purchase_doc_name, item_code, doctype): + purchase_doc = frappe.get_doc(doctype, purchase_doc_name) + matching_items = [item for item in purchase_doc.items if item.item_code == item_code] + + if not matching_items: + frappe.throw(_(f"Selected {doctype} does not contain the Item Code {item_code}")) + + first_item = matching_items[0] + is_multiple_items = len(matching_items) > 1 + + return { + "company": purchase_doc.company, + "purchase_date": purchase_doc.get("bill_date") or purchase_doc.get("posting_date"), + "gross_purchase_amount": flt(first_item.base_net_amount), + "asset_quantity": first_item.qty, + "cost_center": first_item.cost_center or purchase_doc.get("cost_center"), + "asset_location": first_item.get("asset_location"), + "is_multiple_items": is_multiple_items, + "purchase_receipt_item": first_item.name if doctype == "Purchase Receipt" else None, + "purchase_invoice_item": first_item.name if doctype == "Purchase Invoice" else None, + } + + @frappe.whitelist() def split_asset(asset_name, split_qty): asset = frappe.get_doc("Asset", asset_name) diff --git a/erpnext/assets/doctype/asset/asset_list.js b/erpnext/assets/doctype/asset/asset_list.js index 712958adcfc..8b0d289dab0 100644 --- a/erpnext/assets/doctype/asset/asset_list.js +++ b/erpnext/assets/doctype/asset/asset_list.js @@ -1,5 +1,6 @@ frappe.listview_settings["Asset"] = { - add_fields: ["status"], + add_fields: ["status", "docstatus"], + has_indicator_for_draft: 1, get_indicator: function (doc) { if (doc.status === "Fully Depreciated") { return [__("Fully Depreciated"), "green", "status,=,Fully Depreciated"]; @@ -7,8 +8,10 @@ frappe.listview_settings["Asset"] = { return [__("Partially Depreciated"), "grey", "status,=,Partially Depreciated"]; } else if (doc.status === "Sold") { return [__("Sold"), "green", "status,=,Sold"]; - } else if (["Capitalized", "Decapitalized"].includes(doc.status)) { - return [__(doc.status), "grey", "status,=," + doc.status]; + } else if (doc.status === "Work In Progress") { + return [__("Work In Progress"), "orange", "status,=,Work In Progress"]; + } else if (doc.status === "Capitalized") { + return [__("Capitalized"), "grey", "status,=,Capitalized"]; } else if (doc.status === "Scrapped") { return [__("Scrapped"), "grey", "status,=,Scrapped"]; } else if (doc.status === "In Maintenance") { @@ -21,7 +24,7 @@ frappe.listview_settings["Asset"] = { return [__("Receipt"), "green", "status,=,Receipt"]; } else if (doc.status === "Submitted") { return [__("Submitted"), "blue", "status,=,Submitted"]; - } else if (doc.status === "Draft") { + } else if (doc.status === "Draft" || doc.docstatus === 0) { return [__("Draft"), "red", "status,=,Draft"]; } }, diff --git a/erpnext/assets/doctype/asset/depreciation.py b/erpnext/assets/doctype/asset/depreciation.py index cc8defc5fe6..6a1410ac0f9 100644 --- a/erpnext/assets/doctype/asset/depreciation.py +++ b/erpnext/assets/doctype/asset/depreciation.py @@ -436,7 +436,7 @@ def scrap_asset(asset_name): if asset.docstatus != 1: frappe.throw(_("Asset {0} must be submitted").format(asset.name)) - elif asset.status in ("Cancelled", "Sold", "Scrapped", "Capitalized", "Decapitalized"): + elif asset.status in ("Cancelled", "Sold", "Scrapped", "Capitalized"): frappe.throw(_("Asset {0} cannot be scrapped, as it is already {1}").format(asset.name, asset.status)) date = today() @@ -444,9 +444,9 @@ def scrap_asset(asset_name): notes = _("This schedule was created when Asset {0} was scrapped.").format( get_link_to_form(asset.doctype, asset.name) ) - - depreciate_asset(asset, date, notes) - asset.reload() + if asset.status != "Fully Depreciated": + depreciate_asset(asset, date, notes) + asset.reload() depreciation_series = frappe.get_cached_value("Company", asset.company, "series_for_depreciation_entry") diff --git a/erpnext/assets/doctype/asset/test_asset.py b/erpnext/assets/doctype/asset/test_asset.py index 06f170200a8..9c8db82f41b 100644 --- a/erpnext/assets/doctype/asset/test_asset.py +++ b/erpnext/assets/doctype/asset/test_asset.py @@ -889,7 +889,7 @@ class TestDepreciationMethods(AssetSetup): ["2030-12-31", 28630.14, 28630.14], ["2031-12-31", 35684.93, 64315.07], ["2032-12-31", 17842.46, 82157.53], - ["2033-06-06", 5342.46, 87499.99], + ["2033-06-06", 5342.47, 87500.00], ] schedules = [ @@ -1725,6 +1725,10 @@ def create_asset(**args): }, ) + if asset.is_composite_asset: + asset.gross_purchase_amount = 0 + asset.purchase_amount = 0 + if not args.do_not_save: try: asset.insert(ignore_if_duplicate=True) diff --git a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.js b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.js index d9f2231b313..848a31c4dfa 100644 --- a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.js +++ b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.js @@ -36,11 +36,7 @@ erpnext.assets.AssetCapitalization = class AssetCapitalization extends erpnext.s me.setup_warehouse_query(); me.frm.set_query("target_item_code", function () { - if (me.frm.doc.entry_type == "Capitalization") { - return erpnext.queries.item({ is_stock_item: 0, is_fixed_asset: 1 }); - } else { - return erpnext.queries.item({ is_stock_item: 1, is_fixed_asset: 0 }); - } + return erpnext.queries.item({ is_stock_item: 0, is_fixed_asset: 1 }); }); me.frm.set_query("target_asset", function () { @@ -51,7 +47,7 @@ erpnext.assets.AssetCapitalization = class AssetCapitalization extends erpnext.s me.frm.set_query("asset", "asset_items", function () { var filters = { - status: ["not in", ["Draft", "Scrapped", "Sold", "Capitalized", "Decapitalized"]], + status: ["not in", ["Draft", "Scrapped", "Sold", "Capitalized"]], docstatus: 1, }; @@ -147,14 +143,19 @@ erpnext.assets.AssetCapitalization = class AssetCapitalization extends erpnext.s } } - set_consumed_stock_items_tagged_to_wip_composite_asset(asset) { + set_consumed_stock_items_tagged_to_wip_composite_asset(target_asset) { var me = this; - if (asset) { + if (target_asset) { return me.frm.call({ method: "erpnext.assets.doctype.asset_capitalization.asset_capitalization.get_items_tagged_to_wip_composite_asset", args: { - asset: asset, + params: { + target_asset: target_asset, + finance_book: me.frm.doc.finance_book, + posting_date: me.frm.doc.posting_date, + posting_time: me.frm.doc.posting_time, + }, }, callback: function (r) { if (!r.exc && r.message) { diff --git a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.json b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.json index 9ddc44212f6..a6796e55f82 100644 --- a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.json +++ b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.json @@ -8,30 +8,26 @@ "engine": "InnoDB", "field_order": [ "title", - "company", "naming_series", - "entry_type", - "target_item_name", - "target_is_fixed_asset", - "target_has_batch_no", - "target_has_serial_no", - "column_break_9", "capitalization_method", "target_item_code", - "target_asset_location", + "target_item_name", "target_asset", "target_asset_name", - "target_warehouse", "target_qty", - "target_stock_uom", - "target_batch_no", - "target_serial_no", - "column_break_5", - "finance_book", + "target_asset_location", + "column_break_9", + "company", "posting_date", "posting_time", "set_posting_time", + "finance_book", + "target_batch_no", + "target_serial_no", "amended_from", + "target_is_fixed_asset", + "target_has_batch_no", + "target_has_serial_no", "section_break_16", "stock_items", "stock_items_total", @@ -58,12 +54,12 @@ "label": "Title" }, { - "depends_on": "eval:(doc.target_item_code && !doc.__islocal && doc.capitalization_method !== 'Choose a WIP composite asset') || ((doc.entry_type=='Capitalization' && doc.capitalization_method=='Create a new composite asset') || doc.entry_type=='Decapitalization')", + "depends_on": "eval:(doc.target_item_code && !doc.__islocal && doc.capitalization_method !== 'Choose a WIP composite asset') || doc.capitalization_method=='Create a new composite asset'", "fieldname": "target_item_code", "fieldtype": "Link", "in_standard_filter": 1, "label": "Target Item Code", - "mandatory_depends_on": "eval:(doc.entry_type=='Capitalization' && doc.capitalization_method=='Create a new composite asset') || doc.entry_type=='Decapitalization'", + "mandatory_depends_on": "eval:doc.capitalization_method=='Create a new composite asset'", "options": "Item" }, { @@ -84,22 +80,18 @@ "read_only": 1 }, { - "fieldname": "column_break_5", - "fieldtype": "Column Break" - }, - { - "depends_on": "eval:(doc.target_asset && !doc.__islocal) || (doc.entry_type=='Capitalization' && doc.capitalization_method=='Choose a WIP composite asset')", + "depends_on": "eval:(doc.target_asset && !doc.__islocal) || doc.capitalization_method=='Choose a WIP composite asset'", "fieldname": "target_asset", "fieldtype": "Link", "in_standard_filter": 1, "label": "Target Asset", - "mandatory_depends_on": "eval:doc.entry_type=='Capitalization' && doc.capitalization_method=='Choose a WIP composite asset'", + "mandatory_depends_on": "eval:doc.capitalization_method=='Choose a WIP composite asset'", "no_copy": 1, "options": "Asset", - "read_only_depends_on": "eval:(doc.entry_type=='Decapitalization') || (doc.entry_type=='Capitalization' && doc.capitalization_method=='Create a new composite asset')" + "read_only_depends_on": "eval:doc.capitalization_method=='Create a new composite asset'" }, { - "depends_on": "eval:(doc.target_asset_name && !doc.__islocal) || (doc.target_asset && doc.entry_type=='Capitalization' && doc.capitalization_method=='Choose a WIP composite asset')", + "depends_on": "eval:(doc.target_asset_name && !doc.__islocal) || (doc.target_asset && doc.capitalization_method=='Choose a WIP composite asset')", "fetch_from": "target_asset.asset_name", "fieldname": "target_asset_name", "fieldtype": "Data", @@ -162,7 +154,7 @@ "read_only": 1 }, { - "depends_on": "eval:doc.entry_type=='Capitalization' && (doc.docstatus == 0 || (doc.stock_items && doc.stock_items.length))", + "depends_on": "eval:doc.docstatus == 0 || (doc.stock_items && doc.stock_items.length)", "fieldname": "section_break_16", "fieldtype": "Section Break", "label": "Consumed Stock Items" @@ -173,14 +165,6 @@ "label": "Stock Items", "options": "Asset Capitalization Stock Item" }, - { - "depends_on": "eval:doc.entry_type=='Decapitalization'", - "fieldname": "target_warehouse", - "fieldtype": "Link", - "label": "Target Warehouse", - "mandatory_depends_on": "eval:doc.entry_type=='Decapitalization'", - "options": "Warehouse" - }, { "depends_on": "target_has_batch_no", "fieldname": "target_batch_no", @@ -190,20 +174,9 @@ }, { "default": "1", - "depends_on": "eval:doc.entry_type=='Decapitalization'", "fieldname": "target_qty", "fieldtype": "Float", - "label": "Target Qty", - "read_only_depends_on": "eval:doc.entry_type=='Capitalization'" - }, - { - "depends_on": "eval:doc.entry_type=='Decapitalization'", - "fetch_from": "target_item_code.stock_uom", - "fieldname": "target_stock_uom", - "fieldtype": "Link", - "label": "Stock UOM", - "options": "UOM", - "read_only": 1 + "label": "Target Qty" }, { "default": "0", @@ -241,16 +214,6 @@ "label": "Assets", "options": "Asset Capitalization Asset Item" }, - { - "default": "Capitalization", - "fieldname": "entry_type", - "fieldtype": "Select", - "in_list_view": 1, - "in_standard_filter": 1, - "label": "Entry Type", - "options": "Capitalization\nDecapitalization", - "reqd": 1 - }, { "fieldname": "stock_items_total", "fieldtype": "Currency", @@ -272,7 +235,7 @@ "options": "Finance Book" }, { - "depends_on": "eval:doc.entry_type=='Capitalization' && (doc.docstatus == 0 || (doc.service_items && doc.service_items.length))", + "depends_on": "eval:doc.docstatus == 0 || (doc.service_items && doc.service_items.length)", "fieldname": "service_expenses_section", "fieldtype": "Section Break", "label": "Service Expenses" @@ -337,26 +300,24 @@ "read_only": 1 }, { - "depends_on": "eval:doc.entry_type=='Capitalization' && doc.capitalization_method=='Create a new composite asset'", + "depends_on": "eval:doc.capitalization_method=='Create a new composite asset'", "fieldname": "target_asset_location", "fieldtype": "Link", "label": "Target Asset Location", - "mandatory_depends_on": "eval:doc.entry_type=='Capitalization' && doc.capitalization_method=='Create a new composite asset'", + "mandatory_depends_on": "eval:doc.capitalization_method=='Create a new composite asset'", "options": "Location" }, { - "depends_on": "eval:doc.entry_type=='Capitalization'", "fieldname": "capitalization_method", "fieldtype": "Select", "label": "Capitalization Method", - "mandatory_depends_on": "eval:doc.entry_type=='Capitalization'", "options": "\nCreate a new composite asset\nChoose a WIP composite asset" } ], "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2023-10-03 22:55:59.461456", + "modified": "2025-01-08 13:14:33.008458", "modified_by": "Administrator", "module": "Assets", "name": "Asset Capitalization", @@ -400,4 +361,4 @@ "title_field": "title", "track_changes": 1, "track_seen": 1 -} \ No newline at end of file +} diff --git a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py index b38bd952bca..1d36eae1d61 100644 --- a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py +++ b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py @@ -41,7 +41,6 @@ force_fields = [ "target_is_fixed_asset", "target_has_serial_no", "target_has_batch_no", - "target_stock_uom", "stock_uom", "fixed_asset_account", "valuation_rate", @@ -73,7 +72,6 @@ class AssetCapitalization(StockController): capitalization_method: DF.Literal["", "Create a new composite asset", "Choose a WIP composite asset"] company: DF.Link cost_center: DF.Link | None - entry_type: DF.Literal["Capitalization", "Decapitalization"] finance_book: DF.Link | None naming_series: DF.Literal["ACC-ASC-.YYYY.-"] posting_date: DF.Date @@ -96,8 +94,6 @@ class AssetCapitalization(StockController): target_item_name: DF.Data | None target_qty: DF.Float target_serial_no: DF.SmallText | None - target_stock_uom: DF.Link | None - target_warehouse: DF.Link | None title: DF.Data | None total_value: DF.Currency # end: auto-generated types @@ -127,6 +123,7 @@ class AssetCapitalization(StockController): self.make_bundle_using_old_serial_batch_fields() self.update_stock_ledger() self.make_gl_entries() + self.repost_future_sle_and_gle() self.update_target_asset() def on_cancel(self): @@ -140,6 +137,7 @@ class AssetCapitalization(StockController): ) self.update_stock_ledger() self.make_gl_entries() + self.repost_future_sle_and_gle() self.restore_consumed_asset_items() def set_title(self): @@ -190,31 +188,18 @@ class AssetCapitalization(StockController): def validate_target_item(self): target_item = frappe.get_cached_doc("Item", self.target_item_code) - if not target_item.is_fixed_asset and not target_item.is_stock_item: - frappe.throw( - _("Target Item {0} is neither a Fixed Asset nor a Stock Item").format(target_item.name) - ) - - if self.entry_type == "Capitalization" and not target_item.is_fixed_asset: + if not target_item.is_fixed_asset: frappe.throw(_("Target Item {0} must be a Fixed Asset item").format(target_item.name)) - elif self.entry_type == "Decapitalization" and not target_item.is_stock_item: - frappe.throw(_("Target Item {0} must be a Stock Item").format(target_item.name)) if target_item.is_fixed_asset: self.target_qty = 1 if flt(self.target_qty) <= 0: frappe.throw(_("Target Qty must be a positive number")) - - if not target_item.is_stock_item: - self.target_warehouse = None if not target_item.has_batch_no: self.target_batch_no = None if not target_item.has_serial_no: self.target_serial_no = "" - if target_item.is_stock_item and not self.target_warehouse: - frappe.throw(_("Target Warehouse is mandatory for Decapitalization")) - self.validate_item(target_item) def validate_target_asset(self): @@ -231,7 +216,7 @@ class AssetCapitalization(StockController): ) ) - if target_asset.status in ("Scrapped", "Sold", "Capitalized", "Decapitalized"): + if target_asset.status in ("Scrapped", "Sold", "Capitalized"): frappe.throw( _("Target Asset {0} cannot be {1}").format(target_asset.name, target_asset.status) ) @@ -273,7 +258,7 @@ class AssetCapitalization(StockController): asset = self.get_asset_for_validation(d.asset) - if asset.status in ("Draft", "Scrapped", "Sold", "Capitalized", "Decapitalized"): + if asset.status in ("Draft", "Scrapped", "Sold", "Capitalized"): frappe.throw( _("Row #{0}: Consumed Asset {1} cannot be {2}").format( d.idx, asset.name, asset.status @@ -314,9 +299,6 @@ class AssetCapitalization(StockController): d.cost_center = frappe.get_cached_value("Company", self.company, "cost_center") def validate_source_mandatory(self): - if not self.target_is_fixed_asset and not self.get("asset_items"): - frappe.throw(_("Consumed Asset Items is mandatory for Decapitalization")) - if self.capitalization_method == "Create a new composite asset" and not ( self.get("stock_items") or self.get("asset_items") ): @@ -420,18 +402,6 @@ class AssetCapitalization(StockController): ) sl_entries.append(sle) - if self.entry_type == "Decapitalization" and not self.target_is_fixed_asset: - sle = self.get_sl_entries( - self, - { - "item_code": self.target_item_code, - "warehouse": self.target_warehouse, - "actual_qty": flt(self.target_qty), - "incoming_rate": flt(self.target_incoming_rate), - }, - ) - sl_entries.append(sle) - # reverse sl entries if cancel if self.docstatus == 2: sl_entries.reverse() @@ -474,21 +444,18 @@ class AssetCapitalization(StockController): return gl_entries def get_target_account(self): - if self.target_is_fixed_asset: - from erpnext.assets.doctype.asset.asset import is_cwip_accounting_enabled + from erpnext.assets.doctype.asset.asset import is_cwip_accounting_enabled - asset_category = frappe.get_cached_value("Asset", self.target_asset, "asset_category") - if is_cwip_accounting_enabled(asset_category): - target_account = get_asset_category_account( - "capital_work_in_progress_account", - asset_category=asset_category, - company=self.company, - ) - return target_account if target_account else self.target_fixed_asset_account - else: - return self.target_fixed_asset_account + asset_category = frappe.get_cached_value("Asset", self.target_asset, "asset_category") + if is_cwip_accounting_enabled(asset_category): + target_account = get_asset_category_account( + "capital_work_in_progress_account", + asset_category=asset_category, + company=self.company, + ) + return target_account if target_account else self.target_fixed_asset_account else: - return self.warehouse_account[self.target_warehouse]["account"] + return self.target_fixed_asset_account def get_gl_entries_for_consumed_stock_items(self, gl_entries, target_account, target_against, precision): # Consumed Stock Items @@ -589,33 +556,9 @@ class AssetCapitalization(StockController): item=self, ) ) - else: - # Target Stock Item - sle_list = self.sle_map.get(self.name) - for sle in sle_list: - stock_value_difference = flt(sle.stock_value_difference, precision) - account = self.warehouse_account[sle.warehouse]["account"] - - gl_entries.append( - self.get_gl_dict( - { - "account": account, - "against": ", ".join(target_against), - "cost_center": self.cost_center, - "project": self.get("project"), - "remarks": self.get("remarks") or "Accounting Entry for Stock", - "debit": stock_value_difference, - }, - self.warehouse_account[sle.warehouse]["account_currency"], - item=self, - ) - ) def create_target_asset(self): - if ( - self.entry_type != "Capitalization" - or self.capitalization_method != "Create a new composite asset" - ): + if self.capitalization_method != "Create a new composite asset": return total_target_asset_value = flt(self.total_value, self.precision("total_value")) @@ -638,6 +581,7 @@ class AssetCapitalization(StockController): self.target_fixed_asset_account = get_asset_category_account( "fixed_asset_account", item=self.target_item_code, company=asset_doc.company ) + asset_doc.set_status("Work In Progress") add_asset_activity( asset_doc.name, @@ -653,17 +597,15 @@ class AssetCapitalization(StockController): ) def update_target_asset(self): - if ( - self.entry_type != "Capitalization" - or self.capitalization_method != "Choose a WIP composite asset" - ): + if self.capitalization_method != "Choose a WIP composite asset": return total_target_asset_value = flt(self.total_value, self.precision("total_value")) asset_doc = frappe.get_doc("Asset", self.target_asset) - asset_doc.gross_purchase_amount = total_target_asset_value - asset_doc.purchase_amount = total_target_asset_value + asset_doc.gross_purchase_amount += total_target_asset_value + asset_doc.purchase_amount += total_target_asset_value + asset_doc.set_status("Work In Progress") asset_doc.flags.ignore_validate = True asset_doc.save() @@ -698,14 +640,6 @@ class AssetCapitalization(StockController): get_link_to_form("Asset Capitalization", self.name) ), ) - else: - asset.set_status("Decapitalized") - add_asset_activity( - asset.name, - _("Asset decapitalized after Asset Capitalization {0} was submitted").format( - get_link_to_form("Asset Capitalization", self.name) - ), - ) else: asset.set_status() add_asset_activity( @@ -727,16 +661,12 @@ def get_target_item_details(item_code=None, company=None): # Set Item Details out.target_item_name = item.item_name - out.target_stock_uom = item.stock_uom out.target_is_fixed_asset = cint(item.is_fixed_asset) out.target_has_batch_no = cint(item.has_batch_no) out.target_has_serial_no = cint(item.has_serial_no) if out.target_is_fixed_asset: out.target_qty = 1 - out.target_warehouse = None - else: - out.target_asset = None if not out.target_has_batch_no: out.target_batch_no = None @@ -928,7 +858,10 @@ def get_service_item_details(args): @frappe.whitelist() -def get_items_tagged_to_wip_composite_asset(asset): +def get_items_tagged_to_wip_composite_asset(params): + if isinstance(params, str): + params = json.loads(params) + fields = [ "item_code", "item_name", @@ -943,25 +876,66 @@ def get_items_tagged_to_wip_composite_asset(asset): "amount", "is_fixed_asset", "parent", + "name", ] pr_items = frappe.get_all( - "Purchase Receipt Item", filters={"wip_composite_asset": asset, "docstatus": 1}, fields=fields + "Purchase Receipt Item", + filters={"wip_composite_asset": params.get("target_asset"), "docstatus": 1}, + fields=fields, ) stock_items = [] asset_items = [] + for d in pr_items: if not d.is_fixed_asset: - stock_items.append(frappe._dict(d)) + stock_item = process_stock_item(d) + if stock_item: + stock_items.append(stock_item) else: - asset_details = frappe.db.get_value( - "Asset", - {"item_code": d.item_code, "purchase_receipt": d.parent}, - ["name as asset", "asset_name"], - as_dict=1, - ) - d.update(asset_details) - asset_items.append(frappe._dict(d)) + asset_item = process_fixed_asset(d) + if asset_item: + asset_items.append(asset_item) return stock_items, asset_items + + +def process_stock_item(d): + stock_capitalized = frappe.db.exists( + "Asset Capitalization Stock Item", + { + "purchase_receipt_item": d.name, + "parentfield": "stock_items", + "parenttype": "Asset Capitalization", + "docstatus": 1, + }, + ) + + if stock_capitalized: + return None + + stock_item_data = frappe._dict(d) + stock_item_data.purchase_receipt_item = d.name + return stock_item_data + + +def process_fixed_asset(d): + asset_details = frappe.db.get_value( + "Asset", + { + "item_code": d.item_code, + "purchase_receipt": d.parent, + "status": ("not in", ["Draft", "Scrapped", "Sold", "Capitalized"]), + }, + ["name as asset", "asset_name", "company"], + as_dict=1, + ) + + if asset_details: + asset_details.update(d) + asset_details.update(get_consumed_asset_details(asset_details)) + d.update(asset_details) + + return frappe._dict(d) + return None diff --git a/erpnext/assets/doctype/asset_capitalization/test_asset_capitalization.py b/erpnext/assets/doctype/asset_capitalization/test_asset_capitalization.py index 86293fac765..e0ff6102046 100644 --- a/erpnext/assets/doctype/asset_capitalization/test_asset_capitalization.py +++ b/erpnext/assets/doctype/asset_capitalization/test_asset_capitalization.py @@ -61,7 +61,6 @@ class TestAssetCapitalization(unittest.TestCase): # Create and submit Asset Captitalization asset_capitalization = create_asset_capitalization( - entry_type="Capitalization", capitalization_method="Create a new composite asset", target_item_code="Macbook Pro", target_asset_location="Test Location", @@ -76,7 +75,6 @@ class TestAssetCapitalization(unittest.TestCase): ) # Test Asset Capitalization values - self.assertEqual(asset_capitalization.entry_type, "Capitalization") self.assertEqual(asset_capitalization.target_qty, 1) self.assertEqual(asset_capitalization.stock_items[0].valuation_rate, stock_rate) @@ -96,6 +94,7 @@ class TestAssetCapitalization(unittest.TestCase): target_asset = frappe.get_doc("Asset", asset_capitalization.target_asset) self.assertEqual(target_asset.gross_purchase_amount, total_amount) self.assertEqual(target_asset.purchase_amount, total_amount) + self.assertEqual(target_asset.status, "Work In Progress") # Test Consumed Asset values self.assertEqual(consumed_asset.db_get("status"), "Capitalized") @@ -151,7 +150,6 @@ class TestAssetCapitalization(unittest.TestCase): # Create and submit Asset Captitalization asset_capitalization = create_asset_capitalization( - entry_type="Capitalization", capitalization_method="Create a new composite asset", target_item_code="Macbook Pro", target_asset_location="Test Location", @@ -166,7 +164,6 @@ class TestAssetCapitalization(unittest.TestCase): ) # Test Asset Capitalization values - self.assertEqual(asset_capitalization.entry_type, "Capitalization") self.assertEqual(asset_capitalization.target_qty, 1) self.assertEqual(asset_capitalization.stock_items[0].valuation_rate, stock_rate) @@ -243,7 +240,6 @@ class TestAssetCapitalization(unittest.TestCase): # Create and submit Asset Captitalization asset_capitalization = create_asset_capitalization( - entry_type="Capitalization", capitalization_method="Choose a WIP composite asset", target_asset=wip_composite_asset.name, target_asset_location="Test Location", @@ -255,7 +251,6 @@ class TestAssetCapitalization(unittest.TestCase): ) # Test Asset Capitalization values - self.assertEqual(asset_capitalization.entry_type, "Capitalization") self.assertEqual(asset_capitalization.capitalization_method, "Choose a WIP composite asset") self.assertEqual(asset_capitalization.target_qty, 1) @@ -270,6 +265,7 @@ class TestAssetCapitalization(unittest.TestCase): target_asset = frappe.get_doc("Asset", asset_capitalization.target_asset) self.assertEqual(target_asset.gross_purchase_amount, total_amount) self.assertEqual(target_asset.purchase_amount, total_amount) + self.assertEqual(target_asset.status, "Work In Progress") # Test General Ledger Entries expected_gle = { @@ -295,110 +291,6 @@ class TestAssetCapitalization(unittest.TestCase): self.assertFalse(get_actual_gle_dict(asset_capitalization.name)) self.assertFalse(get_actual_sle_dict(asset_capitalization.name)) - def test_decapitalization_with_depreciation(self): - # Variables - purchase_date = "2020-01-01" - depreciation_start_date = "2020-12-31" - capitalization_date = "2021-06-30" - - total_number_of_depreciations = 3 - expected_value_after_useful_life = 10_000 - consumed_asset_purchase_value = 100_000 - consumed_asset_current_value = 70_000 - consumed_asset_value_before_disposal = 55_000 - - target_qty = 10 - target_incoming_rate = 5500 - - depreciation_before_disposal_amount = 15_000 - accumulated_depreciation = 45_000 - - # to accomodate for depreciation on disposal calculation minor difference - consumed_asset_value_before_disposal = 55_123.29 - target_incoming_rate = 5512.329 - depreciation_before_disposal_amount = 14_876.71 - accumulated_depreciation = 44_876.71 - - # Create assets - consumed_asset = create_depreciation_asset( - asset_name="Asset Capitalization Consumable Asset", - asset_value=consumed_asset_purchase_value, - purchase_date=purchase_date, - depreciation_start_date=depreciation_start_date, - depreciation_method="Straight Line", - total_number_of_depreciations=total_number_of_depreciations, - frequency_of_depreciation=12, - expected_value_after_useful_life=expected_value_after_useful_life, - company="_Test Company with perpetual inventory", - submit=1, - ) - - first_asset_depr_schedule = get_asset_depr_schedule_doc(consumed_asset.name, "Active") - self.assertEqual(first_asset_depr_schedule.status, "Active") - - # Create and submit Asset Captitalization - asset_capitalization = create_asset_capitalization( - entry_type="Decapitalization", - posting_date=capitalization_date, # half a year - target_item_code="Capitalization Target Stock Item", - target_qty=target_qty, - consumed_asset=consumed_asset.name, - company="_Test Company with perpetual inventory", - submit=1, - ) - - # Test Asset Capitalization values - self.assertEqual(asset_capitalization.entry_type, "Decapitalization") - - self.assertEqual( - asset_capitalization.asset_items[0].current_asset_value, consumed_asset_current_value - ) - self.assertEqual( - asset_capitalization.asset_items[0].asset_value, consumed_asset_value_before_disposal - ) - self.assertEqual(asset_capitalization.asset_items_total, consumed_asset_value_before_disposal) - - self.assertEqual(asset_capitalization.total_value, consumed_asset_value_before_disposal) - self.assertEqual(asset_capitalization.target_incoming_rate, target_incoming_rate) - - # Test Consumed Asset values - consumed_asset.reload() - self.assertEqual(consumed_asset.status, "Decapitalized") - - first_asset_depr_schedule.load_from_db() - - second_asset_depr_schedule = get_asset_depr_schedule_doc(consumed_asset.name, "Active") - self.assertEqual(second_asset_depr_schedule.status, "Active") - self.assertEqual(first_asset_depr_schedule.status, "Cancelled") - - depr_schedule_of_consumed_asset = second_asset_depr_schedule.get("depreciation_schedule") - - consumed_depreciation_schedule = [ - d - for d in depr_schedule_of_consumed_asset - if getdate(d.schedule_date) == getdate(capitalization_date) - ] - self.assertTrue(consumed_depreciation_schedule and consumed_depreciation_schedule[0].journal_entry) - self.assertEqual( - consumed_depreciation_schedule[0].depreciation_amount, depreciation_before_disposal_amount - ) - - # Test General Ledger Entries - expected_gle = { - "_Test Warehouse - TCP1": consumed_asset_value_before_disposal, - "_Test Accumulated Depreciations - TCP1": accumulated_depreciation, - "_Test Fixed Asset - TCP1": -consumed_asset_purchase_value, - } - actual_gle = get_actual_gle_dict(asset_capitalization.name) - self.assertEqual(actual_gle, expected_gle) - - # Cancel Asset Capitalization and make test entries and status are reversed - asset_capitalization.reload() - asset_capitalization.cancel() - self.assertEqual(consumed_asset.db_get("status"), "Partially Depreciated") - self.assertFalse(get_actual_gle_dict(asset_capitalization.name)) - self.assertFalse(get_actual_sle_dict(asset_capitalization.name)) - def test_capitalize_only_service_item(self): company = "_Test Company" # Variables @@ -418,7 +310,6 @@ class TestAssetCapitalization(unittest.TestCase): # Create and submit Asset Captitalization asset_capitalization = create_asset_capitalization( - entry_type="Capitalization", capitalization_method="Choose a WIP composite asset", target_asset=wip_composite_asset.name, target_asset_location="Test Location", @@ -466,13 +357,11 @@ def create_asset_capitalization(**args): target_item_code = target_asset.item_code or args.target_item_code company = target_asset.company or args.company or "_Test Company" warehouse = args.warehouse or create_warehouse("_Test Warehouse", company=company) - target_warehouse = args.target_warehouse or warehouse source_warehouse = args.source_warehouse or warehouse asset_capitalization = frappe.new_doc("Asset Capitalization") asset_capitalization.update( { - "entry_type": args.entry_type or "Capitalization", "capitalization_method": args.capitalization_method or None, "company": company, "posting_date": args.posting_date or now.strftime("%Y-%m-%d"), @@ -480,7 +369,6 @@ def create_asset_capitalization(**args): "target_item_code": target_item_code, "target_asset": target_asset.name, "target_asset_location": "Test Location", - "target_warehouse": target_warehouse, "target_qty": flt(args.target_qty) or 1, "target_batch_no": args.target_batch_no, "target_serial_no": args.target_serial_no, diff --git a/erpnext/assets/doctype/asset_capitalization_stock_item/asset_capitalization_stock_item.json b/erpnext/assets/doctype/asset_capitalization_stock_item/asset_capitalization_stock_item.json index da05e930eab..c96681411f7 100644 --- a/erpnext/assets/doctype/asset_capitalization_stock_item/asset_capitalization_stock_item.json +++ b/erpnext/assets/doctype/asset_capitalization_stock_item/asset_capitalization_stock_item.json @@ -10,12 +10,13 @@ "column_break_3", "warehouse", "section_break_6", + "purchase_receipt_item", "stock_qty", - "stock_uom", "actual_qty", "column_break_9", "valuation_rate", "amount", + "stock_uom", "batch_and_serial_no_section", "serial_and_batch_bundle", "use_serial_batch_fields", @@ -53,14 +54,14 @@ { "fieldname": "section_break_6", "fieldtype": "Section Break", - "label": "Qty and Rate" + "label": "Purchase Details" }, { "columns": 1, "fieldname": "stock_qty", "fieldtype": "Float", "in_list_view": 1, - "label": "Qty", + "label": "Quantity", "non_negative": 1 }, { @@ -172,18 +173,26 @@ { "fieldname": "column_break_mbuv", "fieldtype": "Column Break" + }, + { + "fieldname": "purchase_receipt_item", + "fieldtype": "Data", + "hidden": 1, + "label": "Purchase Receipt Item" } ], + "grid_page_length": 50, "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2024-06-26 17:06:22.564438", + "modified": "2025-03-05 12:46:01.074742", "modified_by": "Administrator", "module": "Assets", "name": "Asset Capitalization Stock Item", "owner": "Administrator", "permissions": [], - "sort_field": "modified", + "row_format": "Dynamic", + "sort_field": "creation", "sort_order": "DESC", "states": [], "track_changes": 1 diff --git a/erpnext/assets/doctype/asset_capitalization_stock_item/asset_capitalization_stock_item.py b/erpnext/assets/doctype/asset_capitalization_stock_item/asset_capitalization_stock_item.py index 0f06cc7442e..c56f87b67fa 100644 --- a/erpnext/assets/doctype/asset_capitalization_stock_item/asset_capitalization_stock_item.py +++ b/erpnext/assets/doctype/asset_capitalization_stock_item/asset_capitalization_stock_item.py @@ -23,6 +23,7 @@ class AssetCapitalizationStockItem(Document): parent: DF.Data parentfield: DF.Data parenttype: DF.Data + purchase_receipt_item: DF.Data | None serial_and_batch_bundle: DF.Link | None serial_no: DF.Text | None stock_qty: DF.Float diff --git a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.js b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.js index 83b5c376ac7..3f7a2e7c7d8 100644 --- a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.js +++ b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.js @@ -34,6 +34,7 @@ frappe.ui.form.on("Depreciation Schedule", { asset_depr_schedule_name: frm.doc.name, date: row.schedule_date, }, + debounce: 1000, callback: function (r) { frappe.model.sync(r.message); frm.refresh(); diff --git a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py index 679fbfe2e58..5bddea56183 100644 --- a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py +++ b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py @@ -13,6 +13,7 @@ from frappe.utils import ( flt, get_first_day, get_last_day, + get_link_to_form, getdate, is_last_day_of_the_month, month_diff, @@ -344,7 +345,7 @@ class AssetDepreciationSchedule(Document): date_of_disposal, original_schedule_date=schedule_date, ) - + depreciation_amount = flt(depreciation_amount, asset_doc.precision("gross_purchase_amount")) if depreciation_amount > 0: self.add_depr_schedule_row(date_of_disposal, depreciation_amount, n) @@ -430,6 +431,7 @@ class AssetDepreciationSchedule(Document): if not depreciation_amount: continue + depreciation_amount = flt(depreciation_amount, asset_doc.precision("gross_purchase_amount")) value_after_depreciation = flt( value_after_depreciation - flt(depreciation_amount), asset_doc.precision("gross_purchase_amount"), @@ -443,6 +445,7 @@ class AssetDepreciationSchedule(Document): depreciation_amount += flt(value_after_depreciation) - flt( row.expected_value_after_useful_life ) + depreciation_amount = flt(depreciation_amount, asset_doc.precision("gross_purchase_amount")) skip_row = True if flt(depreciation_amount, asset_doc.precision("gross_purchase_amount")) > 0: @@ -517,10 +520,13 @@ class AssetDepreciationSchedule(Document): i - 1 ].accumulated_depreciation_amount else: - accumulated_depreciation = flt(self.opening_accumulated_depreciation) + accumulated_depreciation = flt( + self.opening_accumulated_depreciation, + asset_doc.precision("opening_accumulated_depreciation"), + ) - depreciation_amount = flt(d.depreciation_amount, d.precision("depreciation_amount")) - value_after_depreciation -= flt(depreciation_amount) + value_after_depreciation -= flt(d.depreciation_amount) + value_after_depreciation = flt(value_after_depreciation, d.precision("depreciation_amount")) # for the last row, if depreciation method = Straight Line if ( @@ -530,12 +536,11 @@ class AssetDepreciationSchedule(Document): and not date_of_return and not row.shift_based ): - depreciation_amount += flt( + d.depreciation_amount += flt( value_after_depreciation - flt(row.expected_value_after_useful_life), d.precision("depreciation_amount"), ) - d.depreciation_amount = depreciation_amount accumulated_depreciation += d.depreciation_amount d.accumulated_depreciation_amount = flt( accumulated_depreciation, d.precision("accumulated_depreciation_amount") @@ -1058,13 +1063,13 @@ def make_new_active_asset_depr_schedules_and_cancel_current_ones( if not current_asset_depr_schedule_doc: frappe.throw( _("Asset Depreciation Schedule not found for Asset {0} and Finance Book {1}").format( - asset_doc.name, row.finance_book + get_link_to_form("Asset", asset_doc.name), row.finance_book ) ) new_asset_depr_schedule_doc = frappe.copy_doc(current_asset_depr_schedule_doc) if asset_doc.flags.decrease_in_asset_value_due_to_value_adjustment and not value_after_depreciation: - value_after_depreciation = row.value_after_depreciation + difference_amount + value_after_depreciation = row.value_after_depreciation - difference_amount if asset_doc.flags.increase_in_asset_value_due_to_repair and row.depreciation_method in ( "Written Down Value", @@ -1104,7 +1109,7 @@ def get_temp_asset_depr_schedule_doc( if not current_asset_depr_schedule_doc: frappe.throw( _("Asset Depreciation Schedule not found for Asset {0} and Finance Book {1}").format( - asset_doc.name, row.finance_book + get_link_to_form("Asset", asset_doc.name), row.finance_book ) ) diff --git a/erpnext/assets/doctype/asset_finance_book/asset_finance_book.json b/erpnext/assets/doctype/asset_finance_book/asset_finance_book.json index c269948b742..b86028a7621 100644 --- a/erpnext/assets/doctype/asset_finance_book/asset_finance_book.json +++ b/erpnext/assets/doctype/asset_finance_book/asset_finance_book.json @@ -86,7 +86,8 @@ "description": "In Percentage", "fieldname": "rate_of_depreciation", "fieldtype": "Percent", - "label": "Rate of Depreciation" + "label": "Rate of Depreciation (%)", + "mandatory_depends_on": "eval:doc.depreciation_method == 'Written Down Value'" }, { "fieldname": "salvage_value_percentage", @@ -117,7 +118,7 @@ "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2024-05-21 15:48:20.907250", + "modified": "2024-12-13 12:11:03.743209", "modified_by": "Administrator", "module": "Assets", "name": "Asset Finance Book", diff --git a/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py b/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py index b44164f2dae..70ab7fdc8e8 100644 --- a/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py +++ b/erpnext/assets/doctype/asset_maintenance/asset_maintenance.py @@ -144,6 +144,7 @@ def update_maintenance_log(asset_maintenance, item_code, item_name, task): "has_certificate": task.certificate_required, "description": task.description, "assign_to_name": task.assign_to_name, + "task_assignee_email": task.assign_to, "periodicity": str(task.periodicity), "maintenance_type": task.maintenance_type, "due_date": task.next_due_date, diff --git a/erpnext/assets/doctype/asset_maintenance_log/asset_maintenance_log.json b/erpnext/assets/doctype/asset_maintenance_log/asset_maintenance_log.json index 7d33176e2f3..c948630869b 100644 --- a/erpnext/assets/doctype/asset_maintenance_log/asset_maintenance_log.json +++ b/erpnext/assets/doctype/asset_maintenance_log/asset_maintenance_log.json @@ -23,6 +23,7 @@ "column_break_6", "maintenance_status", "assign_to_name", + "task_assignee_email", "due_date", "completion_date", "description", @@ -168,15 +169,22 @@ "in_preview": 1, "label": "Task Name", "read_only": 1 + }, + { + "fieldname": "task_assignee_email", + "fieldtype": "Data", + "label": "Task Assignee Email", + "read_only": 1 } ], "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2021-01-22 12:33:45.888124", + "modified": "2024-09-24 15:12:37.497853", "modified_by": "Administrator", "module": "Assets", "name": "Asset Maintenance Log", + "naming_rule": "By \"Naming Series\" field", "owner": "Administrator", "permissions": [ { @@ -199,4 +207,4 @@ "sort_order": "DESC", "track_changes": 1, "track_seen": 1 -} \ No newline at end of file +} diff --git a/erpnext/assets/doctype/asset_maintenance_log/asset_maintenance_log.py b/erpnext/assets/doctype/asset_maintenance_log/asset_maintenance_log.py index 95d02714c5b..140eb1af27e 100644 --- a/erpnext/assets/doctype/asset_maintenance_log/asset_maintenance_log.py +++ b/erpnext/assets/doctype/asset_maintenance_log/asset_maintenance_log.py @@ -37,6 +37,7 @@ class AssetMaintenanceLog(Document): naming_series: DF.Literal["ACC-AML-.YYYY.-"] periodicity: DF.Data | None task: DF.Link | None + task_assignee_email: DF.Data | None task_name: DF.Data | None # end: auto-generated types diff --git a/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.js b/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.js index 7fbe6d0bd12..4435b2b1845 100644 --- a/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.js +++ b/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.js @@ -5,7 +5,6 @@ frappe.provide("erpnext.accounts.dimensions"); frappe.ui.form.on("Asset Value Adjustment", { setup: function (frm) { - frm.add_fetch("company", "cost_center", "cost_center"); frm.set_query("cost_center", function () { return { filters: { @@ -22,6 +21,14 @@ frappe.ui.form.on("Asset Value Adjustment", { }, }; }); + frm.set_query("difference_account", function () { + return { + filters: { + company: frm.doc.company, + is_group: 0, + }, + }; + }); }, onload: function (frm) { @@ -37,7 +44,7 @@ frappe.ui.form.on("Asset Value Adjustment", { }, asset: function (frm) { - frm.trigger("set_current_asset_value"); + frm.trigger("set_acc_dimension"); }, finance_book: function (frm) { @@ -60,4 +67,15 @@ frappe.ui.form.on("Asset Value Adjustment", { }); } }, + + set_acc_dimension: function (frm) { + if (frm.doc.asset) { + frm.call({ + method: "erpnext.assets.doctype.asset_value_adjustment.asset_value_adjustment.get_value_of_accounting_dimensions", + args: { + asset_name: frm.doc.asset, + }, + }); + } + }, }); diff --git a/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.json b/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.json index 57e04e2567f..6b5b53d9847 100644 --- a/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.json +++ b/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.json @@ -17,6 +17,7 @@ "new_asset_value", "column_break_11", "difference_amount", + "difference_account", "journal_entry", "accounting_dimensions_section", "cost_center", @@ -54,6 +55,7 @@ "fieldtype": "Link", "label": "Journal Entry", "options": "Journal Entry", + "no_copy": 1, "read_only": 1 }, { @@ -79,6 +81,7 @@ "fieldtype": "Currency", "in_list_view": 1, "label": "New Asset Value", + "no_copy": 1, "reqd": 1 }, { @@ -120,12 +123,20 @@ { "fieldname": "column_break_11", "fieldtype": "Column Break" + }, + { + "fieldname": "difference_account", + "fieldtype": "Link", + "label": "Difference Account", + "no_copy": 1, + "options": "Account", + "reqd": 1 } ], "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2021-01-22 14:10:23.085181", + "modified": "2024-08-13 16:21:18.639208", "modified_by": "Administrator", "module": "Assets", "name": "Asset Value Adjustment", @@ -182,4 +193,4 @@ "sort_order": "DESC", "title_field": "asset", "track_changes": 1 -} \ No newline at end of file +} diff --git a/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.py b/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.py index 9b0212b037f..6766b827f7f 100644 --- a/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.py +++ b/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.py @@ -34,6 +34,7 @@ class AssetValueAdjustment(Document): cost_center: DF.Link | None current_asset_value: DF.Currency date: DF.Date + difference_account: DF.Link difference_amount: DF.Currency finance_book: DF.Link | None journal_entry: DF.Link | None @@ -47,6 +48,7 @@ class AssetValueAdjustment(Document): def on_submit(self): self.make_depreciation_entry() + self.set_value_after_depreciation() self.update_asset(self.new_asset_value) add_asset_activity( self.asset, @@ -76,7 +78,10 @@ class AssetValueAdjustment(Document): ) def set_difference_amount(self): - self.difference_amount = flt(self.current_asset_value - self.new_asset_value) + self.difference_amount = flt(self.new_asset_value - self.current_asset_value) + + def set_value_after_depreciation(self): + frappe.db.set_value("Asset", self.asset, "value_after_depreciation", self.new_asset_value) def set_current_asset_value(self): if not self.current_asset_value and self.asset: @@ -85,7 +90,7 @@ class AssetValueAdjustment(Document): def make_depreciation_entry(self): asset = frappe.get_doc("Asset", self.asset) ( - _, + fixed_asset_account, accumulated_depreciation_account, depreciation_expense_account, ) = get_depreciation_accounts(asset.asset_category, asset.company) @@ -95,28 +100,41 @@ class AssetValueAdjustment(Document): ) je = frappe.new_doc("Journal Entry") - je.voucher_type = "Depreciation Entry" + je.voucher_type = "Journal Entry" je.naming_series = depreciation_series je.posting_date = self.date je.company = self.company - je.remark = f"Depreciation Entry against {self.asset} worth {self.difference_amount}" + je.remark = f"Revaluation Entry against {self.asset} worth {self.difference_amount}" je.finance_book = self.finance_book - credit_entry = { - "account": accumulated_depreciation_account, - "credit_in_account_currency": self.difference_amount, - "cost_center": depreciation_cost_center or self.cost_center, + entry_template = { + "cost_center": self.cost_center or depreciation_cost_center, "reference_type": "Asset", - "reference_name": self.asset, + "reference_name": asset.name, } - debit_entry = { - "account": depreciation_expense_account, - "debit_in_account_currency": self.difference_amount, - "cost_center": depreciation_cost_center or self.cost_center, - "reference_type": "Asset", - "reference_name": self.asset, - } + if self.difference_amount < 0: + credit_entry = { + "account": fixed_asset_account, + "credit_in_account_currency": -self.difference_amount, + **entry_template, + } + debit_entry = { + "account": self.difference_account, + "debit_in_account_currency": -self.difference_amount, + **entry_template, + } + elif self.difference_amount > 0: + credit_entry = { + "account": self.difference_account, + "credit_in_account_currency": self.difference_amount, + **entry_template, + } + debit_entry = { + "account": fixed_asset_account, + "debit_in_account_currency": self.difference_amount, + **entry_template, + } accounting_dimensions = get_checks_for_pl_and_bs_accounts() @@ -179,3 +197,9 @@ class AssetValueAdjustment(Document): ) asset.flags.ignore_validate_update_after_submit = True asset.save() + + +@frappe.whitelist() +def get_value_of_accounting_dimensions(asset_name): + dimension_fields = [*frappe.get_list("Accounting Dimension", pluck="fieldname"), "cost_center"] + return frappe.db.get_value("Asset", asset_name, fieldname=dimension_fields, as_dict=True) diff --git a/erpnext/assets/doctype/asset_value_adjustment/test_asset_value_adjustment.py b/erpnext/assets/doctype/asset_value_adjustment/test_asset_value_adjustment.py index 963be704524..82fa3ba17e9 100644 --- a/erpnext/assets/doctype/asset_value_adjustment/test_asset_value_adjustment.py +++ b/erpnext/assets/doctype/asset_value_adjustment/test_asset_value_adjustment.py @@ -93,8 +93,8 @@ class TestAssetValueAdjustment(unittest.TestCase): self.assertEqual(first_asset_depr_schedule.status, "Cancelled") expected_gle = ( - ("_Test Accumulated Depreciations - _TC", 0.0, 4625.29), - ("_Test Depreciations - _TC", 4625.29, 0.0), + ("_Test Difference Account - _TC", 4625.29, 0.0), + ("_Test Fixed Asset - _TC", 0.0, 4625.29), ) gle = frappe.db.sql( @@ -177,8 +177,8 @@ class TestAssetValueAdjustment(unittest.TestCase): # Test gl entry creted from asset value adjustemnet expected_gle = ( - ("_Test Accumulated Depreciations - _TC", 0.0, 5625.29), - ("_Test Depreciations - _TC", 5625.29, 0.0), + ("_Test Difference Account - _TC", 5625.29, 0.0), + ("_Test Fixed Asset - _TC", 0.0, 5625.29), ) gle = frappe.db.sql( @@ -259,6 +259,39 @@ class TestAssetValueAdjustment(unittest.TestCase): self.assertEqual(schedules, expected_schedules) + def test_difference_amount(self): + pr = make_purchase_receipt(item_code="Macbook Pro", qty=1, rate=120000.0, location="Test Location") + + asset_name = frappe.db.get_value("Asset", {"purchase_receipt": pr.name}, "name") + asset_doc = frappe.get_doc("Asset", asset_name) + asset_doc.calculate_depreciation = 1 + asset_doc.available_for_use_date = "2023-01-15" + asset_doc.purchase_date = "2023-01-15" + + asset_doc.append( + "finance_books", + { + "expected_value_after_useful_life": 200, + "depreciation_method": "Straight Line", + "total_number_of_depreciations": 12, + "frequency_of_depreciation": 1, + "depreciation_start_date": "2023-01-31", + }, + ) + asset_doc.submit() + + adj_doc = make_asset_value_adjustment( + asset=asset_doc.name, + current_asset_value=54000, + new_asset_value=50000.0, + date="2023-08-21", + ) + adj_doc.submit() + difference_amount = adj_doc.new_asset_value - adj_doc.current_asset_value + self.assertEqual(difference_amount, -4000) + asset_doc.load_from_db() + self.assertEqual(asset_doc.value_after_depreciation, 50000.0) + def make_asset_value_adjustment(**args): args = frappe._dict(args) @@ -272,7 +305,22 @@ def make_asset_value_adjustment(**args): "new_asset_value": args.new_asset_value, "current_asset_value": args.current_asset_value, "cost_center": args.cost_center or "Main - _TC", + "difference_account": make_difference_account(), } ).insert() return doc + + +def make_difference_account(**args): + account = "_Test Difference Account - _TC" + if not frappe.db.exists("Account", account): + acc = frappe.new_doc("Account") + acc.account_name = "_Test Difference Account" + acc.parent_account = "Direct Income - _TC" + acc.company = "_Test Company" + acc.is_group = 0 + acc.insert() + return acc.name + else: + return account diff --git a/erpnext/assets/number_card/asset_value/asset_value.json b/erpnext/assets/number_card/asset_value/asset_value.json index 68e5f54c789..c437f4800f3 100644 --- a/erpnext/assets/number_card/asset_value/asset_value.json +++ b/erpnext/assets/number_card/asset_value/asset_value.json @@ -4,6 +4,7 @@ "docstatus": 0, "doctype": "Number Card", "document_type": "Asset", + "dynamic_filters_json": "[[\"Asset\",\"company\",\"=\",\"frappe.defaults.get_user_default(\\\"Company\\\")\"]]", "filters_json": "[]", "function": "Sum", "idx": 0, diff --git a/erpnext/assets/number_card/new_assets_(this_year)/new_assets_(this_year).json b/erpnext/assets/number_card/new_assets_(this_year)/new_assets_(this_year).json index 6c8fb356575..cdf52d011d4 100644 --- a/erpnext/assets/number_card/new_assets_(this_year)/new_assets_(this_year).json +++ b/erpnext/assets/number_card/new_assets_(this_year)/new_assets_(this_year).json @@ -3,6 +3,7 @@ "docstatus": 0, "doctype": "Number Card", "document_type": "Asset", + "dynamic_filters_json": "[[\"Asset\",\"company\",\"=\",\"frappe.defaults.get_user_default(\\\"Company\\\")\"]]", "filters_json": "[[\"Asset\",\"creation\",\"Timespan\",\"this year\",false]]", "function": "Count", "idx": 0, diff --git a/erpnext/assets/number_card/total_assets/total_assets.json b/erpnext/assets/number_card/total_assets/total_assets.json index d127de8f2c6..d8626da608c 100644 --- a/erpnext/assets/number_card/total_assets/total_assets.json +++ b/erpnext/assets/number_card/total_assets/total_assets.json @@ -3,6 +3,7 @@ "docstatus": 0, "doctype": "Number Card", "document_type": "Asset", + "dynamic_filters_json": "[[\"Asset\",\"company\",\"=\",\"frappe.defaults.get_user_default(\\\"Company\\\")\"]]", "filters_json": "[]", "function": "Count", "idx": 0, diff --git a/erpnext/assets/report/fixed_asset_register/fixed_asset_register.py b/erpnext/assets/report/fixed_asset_register/fixed_asset_register.py index 8ebf9d6d389..2b4c55d6ec8 100644 --- a/erpnext/assets/report/fixed_asset_register/fixed_asset_register.py +++ b/erpnext/assets/report/fixed_asset_register/fixed_asset_register.py @@ -66,12 +66,12 @@ def get_conditions(filters): conditions["cost_center"] = filters.get("cost_center") if status: - # In Store assets are those that are not sold or scrapped or capitalized or decapitalized + # In Store assets are those that are not sold or scrapped or capitalized operand = "not in" if status not in "In Location": operand = "in" - conditions["status"] = (operand, ["Sold", "Scrapped", "Capitalized", "Decapitalized"]) + conditions["status"] = (operand, ["Sold", "Scrapped", "Capitalized"]) return conditions @@ -272,9 +272,9 @@ def get_asset_depreciation_amount_map(filters, finance_book): query = query.where(asset.cost_center == filters.cost_center) if filters.status: if filters.status == "In Location": - query = query.where(asset.status.notin(["Sold", "Scrapped", "Capitalized", "Decapitalized"])) + query = query.where(asset.status.notin(["Sold", "Scrapped", "Capitalized"])) else: - query = query.where(asset.status.isin(["Sold", "Scrapped", "Capitalized", "Decapitalized"])) + query = query.where(asset.status.isin(["Sold", "Scrapped", "Capitalized"])) if finance_book: query = query.where((gle.finance_book.isin([cstr(finance_book), ""])) | (gle.finance_book.isnull())) else: diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.js b/erpnext/buying/doctype/purchase_order/purchase_order.js index bd92ebef3d7..0b7c9de467a 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.js +++ b/erpnext/buying/doctype/purchase_order/purchase_order.js @@ -65,10 +65,35 @@ frappe.ui.form.on("Purchase Order", { } }, + supplier: function (frm) { + // Do not update if inter company reference is there as the details will already be updated + if (frm.updating_party_details || frm.doc.inter_company_invoice_reference) return; + + if (frm.doc.__onload && frm.doc.__onload.load_after_mapping) return; + + erpnext.utils.get_party_details( + frm, + "erpnext.accounts.party.get_party_details", + { + posting_date: frm.doc.transaction_date, + bill_date: frm.doc.bill_date, + party: frm.doc.supplier, + party_type: "Supplier", + account: frm.doc.credit_to, + price_list: frm.doc.buying_price_list, + fetch_payment_terms_template: cint(!frm.doc.ignore_default_payment_terms_template), + }, + function () { + frm.set_df_property("apply_tds", "read_only", frm.supplier_tds ? 0 : 1); + frm.set_df_property("tax_withholding_category", "hidden", frm.supplier_tds ? 0 : 1); + } + ); + }, + get_materials_from_supplier: function (frm) { let po_details = []; - if (frm.doc.supplied_items && (flt(frm.doc.per_received, 2) == 100 || frm.doc.status === "Closed")) { + if (frm.doc.supplied_items && (flt(frm.doc.per_received) == 100 || frm.doc.status === "Closed")) { frm.doc.supplied_items.forEach((d) => { if (d.total_supplied_qty && d.total_supplied_qty != d.consumed_qty) { po_details.push(d.name); @@ -108,6 +133,15 @@ frappe.ui.form.on("Purchase Order", { frm.set_value("transaction_date", frappe.datetime.get_today()); } + if (frm.doc.__onload && frm.doc.supplier) { + if (frm.is_new()) { + frm.doc.apply_tds = frm.doc.__onload.supplier_tds ? 1 : 0; + } + if (!frm.doc.__onload.supplier_tds) { + frm.set_df_property("apply_tds", "read_only", 1); + } + } + erpnext.queries.setup_queries(frm, "Warehouse", function () { return erpnext.queries.warehouse(frm.doc); }); @@ -295,8 +329,8 @@ erpnext.buying.PurchaseOrderController = class PurchaseOrderController extends ( if (!["Closed", "Delivered"].includes(doc.status)) { if ( this.frm.doc.status !== "Closed" && - flt(this.frm.doc.per_received, 2) < 100 && - flt(this.frm.doc.per_billed, 2) < 100 + flt(this.frm.doc.per_received) < 100 && + flt(this.frm.doc.per_billed) < 100 ) { if (!this.frm.doc.__onload || this.frm.doc.__onload.can_update_items) { this.frm.add_custom_button(__("Update Items"), () => { @@ -310,7 +344,7 @@ erpnext.buying.PurchaseOrderController = class PurchaseOrderController extends ( } } if (this.frm.has_perm("submit")) { - if (flt(doc.per_billed, 2) < 100 || flt(doc.per_received, 2) < 100) { + if (flt(doc.per_billed) < 100 || flt(doc.per_received) < 100) { if (doc.status != "On Hold") { this.frm.add_custom_button( __("Hold"), @@ -333,7 +367,11 @@ erpnext.buying.PurchaseOrderController = class PurchaseOrderController extends ( } if (is_drop_ship && doc.status != "Delivered") { - this.frm.add_custom_button(__("Delivered"), this.delivered_by_supplier, __("Status")); + this.frm.add_custom_button( + __("Delivered"), + this.delivered_by_supplier.bind(this), + __("Status") + ); this.frm.page.set_inner_btn_group_as_primary(__("Status")); } @@ -348,8 +386,8 @@ erpnext.buying.PurchaseOrderController = class PurchaseOrderController extends ( } if (doc.status != "Closed") { if (doc.status != "On Hold") { - if (flt(doc.per_received, 2) < 100 && allow_receipt) { - cur_frm.add_custom_button( + if (flt(doc.per_received) < 100 && allow_receipt) { + this.frm.add_custom_button( __("Purchase Receipt"), this.make_purchase_receipt, __("Create") @@ -366,22 +404,27 @@ erpnext.buying.PurchaseOrderController = class PurchaseOrderController extends ( ); } } else { - cur_frm.add_custom_button( - __("Subcontracting Order"), - this.make_subcontracting_order, - __("Create") - ); + if (!doc.items.every((item) => item.qty == item.subcontracted_quantity)) { + this.frm.add_custom_button( + __("Subcontracting Order"), + () => { + me.make_subcontracting_order(); + }, + __("Create") + ); + } } } } - if (flt(doc.per_billed, 2) < 100) - cur_frm.add_custom_button( + // Please do not add precision in the below flt function + if (flt(doc.per_billed) < 100) + this.frm.add_custom_button( __("Purchase Invoice"), this.make_purchase_invoice, __("Create") ); - if (flt(doc.per_billed, 2) < 100 && doc.status != "Delivered") { + if (flt(doc.per_billed) < 100 && doc.status != "Delivered") { this.frm.add_custom_button( __("Payment"), () => this.make_payment_entry(), @@ -389,7 +432,7 @@ erpnext.buying.PurchaseOrderController = class PurchaseOrderController extends ( ); } - if (flt(doc.per_billed, 2) < 100) { + if (flt(doc.per_billed) < 100) { this.frm.add_custom_button( __("Payment Request"), function () { diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py index 0508483a0fc..ee8ba35222f 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.py +++ b/erpnext/buying/doctype/purchase_order/purchase_order.py @@ -581,7 +581,7 @@ class PurchaseOrder(BuyingController): def update_receiving_percentage(self): total_qty, received_qty = 0.0, 0.0 for item in self.items: - received_qty += item.received_qty + received_qty += min(item.received_qty, item.qty) total_qty += item.qty if total_qty: self.db_set("per_received", flt(received_qty / total_qty) * 100, update_modified=False) @@ -625,9 +625,11 @@ class PurchaseOrder(BuyingController): if not self.is_against_so(): return for item in removed_items: - prev_ordered_qty = frappe.get_cached_value( - "Sales Order Item", item.get("sales_order_item"), "ordered_qty" + prev_ordered_qty = ( + frappe.get_cached_value("Sales Order Item", item.get("sales_order_item"), "ordered_qty") + or 0.0 ) + frappe.db.set_value( "Sales Order Item", item.get("sales_order_item"), "ordered_qty", prev_ordered_qty - item.qty ) @@ -648,6 +650,13 @@ class PurchaseOrder(BuyingController): if sco: update_sco_status(sco, "Closed" if self.status == "Closed" else None) + def set_missing_values(self, for_validate=False): + tds_category = frappe.db.get_value("Supplier", self.supplier, "tax_withholding_category") + if tds_category and not for_validate: + self.set_onload("supplier_tds", tds_category) + + super().set_missing_values(for_validate) + @frappe.request_cache def item_last_purchase_rate(name, conversion_rate, item_code, conversion_factor=1.0): @@ -731,7 +740,7 @@ def make_purchase_receipt(source_name, target_doc=None): "condition": lambda doc: abs(doc.received_qty) < abs(doc.qty) and doc.delivered_by_supplier != 1, }, - "Purchase Taxes and Charges": {"doctype": "Purchase Taxes and Charges", "add_if_empty": True}, + "Purchase Taxes and Charges": {"doctype": "Purchase Taxes and Charges", "reset_value": True}, }, target_doc, set_missing_values, @@ -760,6 +769,11 @@ def get_mapped_purchase_invoice(source_name, target_doc=None, ignore_permissions def postprocess(source, target): target.flags.ignore_permissions = ignore_permissions set_missing_values(source, target) + + # set tax_withholding_category from Purchase Order + if source.apply_tds and source.tax_withholding_category and target.apply_tds: + target.tax_withholding_category = source.tax_withholding_category + # Get the advance paid Journal Entries in Purchase Invoice Advance if target.get("allocate_advances_automatically"): target.set_advances() @@ -807,7 +821,7 @@ def get_mapped_purchase_invoice(source_name, target_doc=None, ignore_permissions "postprocess": update_item, "condition": lambda doc: (doc.base_amount == 0 or abs(doc.billed_amt) < abs(doc.amount)), }, - "Purchase Taxes and Charges": {"doctype": "Purchase Taxes and Charges", "add_if_empty": True}, + "Purchase Taxes and Charges": {"doctype": "Purchase Taxes and Charges", "reset_value": True}, } doc = get_mapped_doc( @@ -853,30 +867,57 @@ def make_inter_company_sales_order(source_name, target_doc=None): @frappe.whitelist() def make_subcontracting_order(source_name, target_doc=None, save=False, submit=False, notify=False): - target_doc = get_mapped_subcontracting_order(source_name, target_doc) + if not is_po_fully_subcontracted(source_name): + target_doc = get_mapped_subcontracting_order(source_name, target_doc) - if (save or submit) and frappe.has_permission(target_doc.doctype, "create"): - target_doc.save() + if (save or submit) and frappe.has_permission(target_doc.doctype, "create"): + target_doc.save() - if submit and frappe.has_permission(target_doc.doctype, "submit", target_doc): - try: - target_doc.submit() - except Exception as e: - target_doc.add_comment("Comment", _("Submit Action Failed") + "

" + str(e)) + if submit and frappe.has_permission(target_doc.doctype, "submit", target_doc): + try: + target_doc.submit() + except Exception as e: + target_doc.add_comment("Comment", _("Submit Action Failed") + "

" + str(e)) - if notify: - frappe.msgprint( - _("Subcontracting Order {0} created.").format( - get_link_to_form(target_doc.doctype, target_doc.name) - ), - indicator="green", - alert=True, - ) + if notify: + frappe.msgprint( + _("Subcontracting Order {0} created.").format( + get_link_to_form(target_doc.doctype, target_doc.name) + ), + indicator="green", + alert=True, + ) - return target_doc + return target_doc + else: + frappe.throw(_("This PO has been fully subcontracted.")) + + +def is_po_fully_subcontracted(po_name): + table = frappe.qb.DocType("Purchase Order Item") + query = ( + frappe.qb.from_(table) + .select(table.name) + .where((table.parent == po_name) & (table.qty != table.subcontracted_quantity)) + ) + return not query.run(as_dict=True) def get_mapped_subcontracting_order(source_name, target_doc=None): + def post_process(source_doc, target_doc): + target_doc.populate_items_table() + + if target_doc.set_warehouse: + for item in target_doc.items: + item.warehouse = target_doc.set_warehouse + else: + if source_doc.set_warehouse: + for item in target_doc.items: + item.warehouse = source_doc.set_warehouse + else: + for idx, item in enumerate(target_doc.items): + item.warehouse = source_doc.items[idx].warehouse + if target_doc and isinstance(target_doc, str): target_doc = json.loads(target_doc) for key in ["service_items", "items", "supplied_items"]: @@ -903,33 +944,12 @@ def get_mapped_subcontracting_order(source_name, target_doc=None): "material_request": "material_request", "material_request_item": "material_request_item", }, - "field_no_map": [], + "field_no_map": ["qty", "fg_item_qty", "amount"], + "condition": lambda item: item.qty != item.subcontracted_quantity, }, }, target_doc, + post_process, ) - target_doc.populate_items_table() - source_doc = frappe.get_doc("Purchase Order", source_name) - - if target_doc.set_warehouse: - for item in target_doc.items: - item.warehouse = target_doc.set_warehouse - else: - if source_doc.set_warehouse: - for item in target_doc.items: - item.warehouse = source_doc.set_warehouse - else: - for idx, item in enumerate(target_doc.items): - item.warehouse = source_doc.items[idx].warehouse - return target_doc - - -@frappe.whitelist() -def is_subcontracting_order_created(po_name) -> bool: - return ( - True - if frappe.db.exists("Subcontracting Order", {"purchase_order": po_name, "docstatus": ["=", 1]}) - else False - ) diff --git a/erpnext/buying/doctype/purchase_order/purchase_order_dashboard.py b/erpnext/buying/doctype/purchase_order/purchase_order_dashboard.py index 36fe079fc98..3fb8b30f139 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order_dashboard.py +++ b/erpnext/buying/doctype/purchase_order/purchase_order_dashboard.py @@ -14,18 +14,25 @@ def get_data(): "Material Request": ["items", "material_request"], "Supplier Quotation": ["items", "supplier_quotation"], "Project": ["items", "project"], + "Sales Order": ["items", "sales_order"], + "BOM": ["items", "bom"], + "Production Plan": ["items", "production_plan"], + "Blanket Order": ["items", "blanket_order"], }, "transactions": [ - {"label": _("Related"), "items": ["Purchase Receipt", "Purchase Invoice"]}, + {"label": _("Related"), "items": ["Purchase Receipt", "Purchase Invoice", "Sales Order"]}, {"label": _("Payment"), "items": ["Payment Entry", "Journal Entry", "Payment Request"]}, { "label": _("Reference"), - "items": ["Material Request", "Supplier Quotation", "Project", "Auto Repeat"], + "items": ["Supplier Quotation", "Project", "Auto Repeat"], + }, + { + "label": _("Manufacturing"), + "items": ["Material Request", "BOM", "Production Plan", "Blanket Order"], }, { "label": _("Sub-contracting"), "items": ["Subcontracting Order", "Subcontracting Receipt", "Stock Entry"], }, - {"label": _("Internal"), "items": ["Sales Order"]}, ], } diff --git a/erpnext/buying/doctype/purchase_order/purchase_order_list.js b/erpnext/buying/doctype/purchase_order/purchase_order_list.js index c1bf1f3b8d9..8dc84e23816 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order_list.js +++ b/erpnext/buying/doctype/purchase_order/purchase_order_list.js @@ -10,34 +10,39 @@ frappe.listview_settings["Purchase Order"] = { "status", ], get_indicator: function (doc) { + // Please do not add precision in the flt function if (doc.status === "Closed") { return [__("Closed"), "green", "status,=,Closed"]; } else if (doc.status === "On Hold") { return [__("On Hold"), "orange", "status,=,On Hold"]; } else if (doc.status === "Delivered") { return [__("Delivered"), "green", "status,=,Closed"]; - } else if (flt(doc.per_received, 2) < 100 && doc.status !== "Closed") { - if (flt(doc.per_billed, 2) < 100) { + } else if (flt(doc.per_received) < 100 && doc.status !== "Closed") { + if (flt(doc.per_billed) < 100) { return [ __("To Receive and Bill"), "orange", - "per_received,<,100|per_billed,<,100|status,!=,Closed", + "per_received,<,100|per_billed,<,100|status,!=,Closed|docstatus,=,1", ]; } else { - return [__("To Receive"), "orange", "per_received,<,100|per_billed,=,100|status,!=,Closed"]; + return [ + __("To Receive"), + "orange", + "per_received,<,100|per_billed,=,100|status,!=,Closed|docstatus,=,1", + ]; } - } else if ( - flt(doc.per_received, 2) >= 100 && - flt(doc.per_billed, 2) < 100 && - doc.status !== "Closed" - ) { - return [__("To Bill"), "orange", "per_received,=,100|per_billed,<,100|status,!=,Closed"]; - } else if ( - flt(doc.per_received, 2) >= 100 && - flt(doc.per_billed, 2) == 100 && - doc.status !== "Closed" - ) { - return [__("Completed"), "green", "per_received,=,100|per_billed,=,100|status,!=,Closed"]; + } else if (flt(doc.per_received) >= 100 && flt(doc.per_billed) < 100 && doc.status !== "Closed") { + return [ + __("To Bill"), + "orange", + "per_received,=,100|per_billed,<,100|status,!=,Closed|docstatus,=,1", + ]; + } else if (flt(doc.per_received) >= 100 && flt(doc.per_billed) == 100 && doc.status !== "Closed") { + return [ + __("Completed"), + "green", + "per_received,=,100|per_billed,=,100|status,!=,Closed|docstatus,=,1", + ]; } }, onload: function (listview) { @@ -51,16 +56,22 @@ frappe.listview_settings["Purchase Order"] = { listview.call_for_selected_items(method, { status: "Submitted" }); }); - listview.page.add_action_item(__("Purchase Invoice"), () => { - erpnext.bulk_transaction_processing.create(listview, "Purchase Order", "Purchase Invoice"); - }); + if (frappe.model.can_create("Purchase Invoice")) { + listview.page.add_action_item(__("Purchase Invoice"), () => { + erpnext.bulk_transaction_processing.create(listview, "Purchase Order", "Purchase Invoice"); + }); + } - listview.page.add_action_item(__("Purchase Receipt"), () => { - erpnext.bulk_transaction_processing.create(listview, "Purchase Order", "Purchase Receipt"); - }); + if (frappe.model.can_create("Purchase Receipt")) { + listview.page.add_action_item(__("Purchase Receipt"), () => { + erpnext.bulk_transaction_processing.create(listview, "Purchase Order", "Purchase Receipt"); + }); + } - listview.page.add_action_item(__("Advance Payment"), () => { - erpnext.bulk_transaction_processing.create(listview, "Purchase Order", "Payment Entry"); - }); + if (frappe.model.can_create("Payment Entry")) { + listview.page.add_action_item(__("Advance Payment"), () => { + erpnext.bulk_transaction_processing.create(listview, "Purchase Order", "Payment Entry"); + }); + } }, }; diff --git a/erpnext/buying/doctype/purchase_order/test_purchase_order.py b/erpnext/buying/doctype/purchase_order/test_purchase_order.py index dbfcbf60b26..404c83cdb50 100644 --- a/erpnext/buying/doctype/purchase_order/test_purchase_order.py +++ b/erpnext/buying/doctype/purchase_order/test_purchase_order.py @@ -920,6 +920,7 @@ class TestPurchaseOrder(FrappeTestCase): automatically_fetch_payment_terms(enable=0) def test_internal_transfer_flow(self): + from erpnext.accounts.doctype.cost_center.test_cost_center import create_cost_center from erpnext.accounts.doctype.sales_invoice.sales_invoice import ( make_inter_company_purchase_invoice, ) @@ -935,8 +936,16 @@ class TestPurchaseOrder(FrappeTestCase): prepare_data_for_internal_transfer() supplier = "_Test Internal Supplier 2" + create_cost_center( + cost_center_name="_Test Cost Center for perpetual inventory Account", + company="_Test Company with perpetual inventory", + ) + mr = make_material_request( - qty=2, company="_Test Company with perpetual inventory", warehouse="Stores - TCP1" + qty=2, + company="_Test Company with perpetual inventory", + warehouse="Stores - TCP1", + cost_center="_Test Cost Center for perpetual inventory Account - TCP1", ) po = create_purchase_order( @@ -1004,7 +1013,7 @@ class TestPurchaseOrder(FrappeTestCase): ) def update_items(po, qty): - trans_items = [po.items[0].as_dict()] + trans_items = [po.items[0].as_dict().update({"docname": po.items[0].name})] trans_items[0]["qty"] = qty trans_items[0]["fg_item_qty"] = qty trans_items = json.dumps(trans_items, default=str) @@ -1059,6 +1068,73 @@ class TestPurchaseOrder(FrappeTestCase): self.assertEqual(po.items[0].qty, 30) self.assertEqual(po.items[0].fg_item_qty, 30) + def test_new_sc_flow(self): + from erpnext.buying.doctype.purchase_order.purchase_order import make_subcontracting_order + + po = create_po_for_sc_testing() + sco = make_subcontracting_order(po.name) + + sco.items[0].qty = 5 + sco.items.pop(1) + sco.items[1].qty = 25 + sco.save() + sco.submit() + + # Test - 1: Quantity of Service Items should change based on change in Quantity of its corresponding Finished Goods Item + self.assertEqual(sco.service_items[0].qty, 5) + + # Test - 2: Subcontracted Quantity for the PO Items of each line item should be updated accordingly + po.reload() + self.assertEqual(po.items[0].subcontracted_quantity, 5) + self.assertEqual(po.items[1].subcontracted_quantity, 0) + self.assertEqual(po.items[2].subcontracted_quantity, 12.5) + + # Test - 3: Amount for both FG Item and its Service Item should be updated correctly based on change in Quantity + self.assertEqual(sco.items[0].amount, 2000) + self.assertEqual(sco.service_items[0].amount, 500) + + # Test - 4: Service Items should be removed if its corresponding Finished Good line item is deleted + self.assertEqual(len(sco.service_items), 2) + + # Test - 5: Service Item quantity calculation should be based upon conversion factor calculated from its corresponding PO Item + self.assertEqual(sco.service_items[1].qty, 12.5) + + sco = make_subcontracting_order(po.name) + + sco.items[0].qty = 6 + + # Test - 6: Saving document should not be allowed if Quantity exceeds available Subcontracting Quantity of any Purchase Order Item + self.assertRaises(frappe.ValidationError, sco.save) + + sco.items[0].qty = 5 + sco.items.pop() + sco.items.pop() + sco.save() + sco.submit() + + sco = make_subcontracting_order(po.name) + + # Test - 7: Since line item 1 is now fully subcontracted, new SCO should by default only have the remaining 2 line items + self.assertEqual(len(sco.items), 2) + + sco.items.pop(0) + sco.save() + sco.submit() + + # Test - 8: Subcontracted Quantity for each PO Item should be subtracted if SCO gets cancelled + po.reload() + self.assertEqual(po.items[2].subcontracted_quantity, 25) + sco.cancel() + po.reload() + self.assertEqual(po.items[2].subcontracted_quantity, 12.5) + + sco = make_subcontracting_order(po.name) + sco.save() + sco.submit() + + # Test - 8: Since this PO is now fully subcontracted, creating a new SCO from it should throw error + self.assertRaises(frappe.ValidationError, make_subcontracting_order, po.name) + @change_settings("Buying Settings", {"auto_create_subcontracting_order": 1}) def test_auto_create_subcontracting_order(self): from erpnext.controllers.tests.test_subcontracting_controller import ( @@ -1124,6 +1200,53 @@ class TestPurchaseOrder(FrappeTestCase): self.assertEqual(po.per_billed, 100) +def create_po_for_sc_testing(): + from erpnext.controllers.tests.test_subcontracting_controller import ( + make_bom_for_subcontracted_items, + make_raw_materials, + make_service_items, + make_subcontracted_items, + ) + + make_subcontracted_items() + make_raw_materials() + make_service_items() + make_bom_for_subcontracted_items() + + service_items = [ + { + "warehouse": "_Test Warehouse - _TC", + "item_code": "Subcontracted Service Item 1", + "qty": 10, + "rate": 100, + "fg_item": "Subcontracted Item SA1", + "fg_item_qty": 10, + }, + { + "warehouse": "_Test Warehouse - _TC", + "item_code": "Subcontracted Service Item 2", + "qty": 20, + "rate": 25, + "fg_item": "Subcontracted Item SA2", + "fg_item_qty": 15, + }, + { + "warehouse": "_Test Warehouse - _TC", + "item_code": "Subcontracted Service Item 3", + "qty": 25, + "rate": 10, + "fg_item": "Subcontracted Item SA3", + "fg_item_qty": 50, + }, + ] + + return create_purchase_order( + rm_items=service_items, + is_subcontracted=1, + supplier_warehouse="_Test Warehouse 1 - _TC", + ) + + def prepare_data_for_internal_transfer(): from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_internal_supplier from erpnext.selling.doctype.customer.test_customer import create_internal_customer 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 cb649563fbe..e0e0990c103 100644 --- a/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json +++ b/erpnext/buying/doctype/purchase_order_item/purchase_order_item.json @@ -1,7 +1,7 @@ { "actions": [], "autoname": "hash", - "creation": "2013-05-24 19:29:06", + "creation": "2024-12-09 12:54:24.652161", "doctype": "DocType", "document_type": "Document", "editable_grid": 1, @@ -26,6 +26,7 @@ "quantity_and_rate", "qty", "stock_uom", + "subcontracted_quantity", "col_break2", "uom", "conversion_factor", @@ -910,37 +911,30 @@ { "fieldname": "column_break_fyqr", "fieldtype": "Column Break" -<<<<<<< HEAD -======= - }, - { - "fieldname": "column_break_pjyo", - "fieldtype": "Column Break" - }, - { - "fieldname": "job_card", - "fieldtype": "Link", - "label": "Job Card", - "options": "Job Card", - "search_index": 1 }, { "fieldname": "distributed_discount_amount", "fieldtype": "Currency", "label": "Distributed Discount Amount", "options": "currency" ->>>>>>> 0bab6f34c1 (fix: distributed discounts on si) + }, + { + "allow_on_submit": 1, + "depends_on": "eval:parent.is_subcontracted && !parent.is_old_subcontracting_flow", + "fieldname": "subcontracted_quantity", + "fieldtype": "Float", + "label": "Subcontracted Quantity", + "no_copy": 1, + "non_negative": 1, + "read_only": 1 } ], + "grid_page_length": 50, "idx": 1, "index_web_pages_for_search": 1, "istable": 1, "links": [], -<<<<<<< HEAD - "modified": "2024-02-05 11:23:24.859435", -======= - "modified": "2024-06-02 06:20:10.508290", ->>>>>>> 0bab6f34c1 (fix: distributed discounts on si) + "modified": "2025-03-13 17:27:44.468602", "modified_by": "Administrator", "module": "Buying", "name": "Purchase Order Item", @@ -948,9 +942,10 @@ "owner": "Administrator", "permissions": [], "quick_entry": 1, + "row_format": "Dynamic", "search_fields": "item_name", "sort_field": "modified", "sort_order": "DESC", "states": [], "track_changes": 1 -} \ No newline at end of file +} diff --git a/erpnext/buying/doctype/purchase_order_item/purchase_order_item.py b/erpnext/buying/doctype/purchase_order_item/purchase_order_item.py index 79c66c3a30e..451ea97d11f 100644 --- a/erpnext/buying/doctype/purchase_order_item/purchase_order_item.py +++ b/erpnext/buying/doctype/purchase_order_item/purchase_order_item.py @@ -84,6 +84,7 @@ class PurchaseOrderItem(Document): stock_qty: DF.Float stock_uom: DF.Link stock_uom_rate: DF.Currency + subcontracted_quantity: DF.Float supplier_part_no: DF.Data | None supplier_quotation: DF.Link | None supplier_quotation_item: DF.Link | None diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js index b8689d29a56..d7c2c3f24b1 100644 --- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js +++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js @@ -146,8 +146,8 @@ frappe.ui.form.on("Request for Quotation", { return; } }, - "Download PDF for Supplier", - "Download" + __("Download PDF for Supplier"), + __("Download") ); }, __("Tools") @@ -272,9 +272,10 @@ frappe.ui.form.on("Request for Quotation", { }); }; - dialog.fields_dict.note.$wrapper - .append(`

This is a preview of the email to be sent. A PDF of the document will - automatically be attached with the email.

`); + const msg = __( + "This is a preview of the email to be sent. A PDF of the document will automatically be attached with the email." + ); + dialog.fields_dict.note.$wrapper.append(`

${msg}

`); dialog.show(); }, diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py index c8ef833e0e9..bef41394742 100644 --- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py @@ -390,10 +390,15 @@ def make_supplier_quotation_from_rfq(source_name, target_doc=None, for_supplier= "Request for Quotation": { "doctype": "Supplier Quotation", "validation": {"docstatus": ["=", 1]}, + "field_map": {"opportunity": "opportunity"}, }, "Request for Quotation Item": { "doctype": "Supplier Quotation Item", - "field_map": {"name": "request_for_quotation_item", "parent": "request_for_quotation"}, + "field_map": { + "name": "request_for_quotation_item", + "parent": "request_for_quotation", + "project_name": "project", + }, }, }, target_doc, @@ -455,6 +460,7 @@ def create_rfq_items(sq_doc, supplier, data): "material_request", "material_request_item", "stock_qty", + "uom", ]: args[field] = data.get(field) diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation_list.js b/erpnext/buying/doctype/supplier_quotation/supplier_quotation_list.js index 99fe24d8770..1a2a514a680 100644 --- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation_list.js +++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation_list.js @@ -11,12 +11,20 @@ frappe.listview_settings["Supplier Quotation"] = { }, onload: function (listview) { - listview.page.add_action_item(__("Purchase Order"), () => { - erpnext.bulk_transaction_processing.create(listview, "Supplier Quotation", "Purchase Order"); - }); + if (frappe.model.can_create("Purchase Order")) { + listview.page.add_action_item(__("Purchase Order"), () => { + erpnext.bulk_transaction_processing.create(listview, "Supplier Quotation", "Purchase Order"); + }); + } - listview.page.add_action_item(__("Purchase Invoice"), () => { - erpnext.bulk_transaction_processing.create(listview, "Supplier Quotation", "Purchase Invoice"); - }); + if (frappe.model.can_create("Purchase Invoice")) { + listview.page.add_action_item(__("Purchase Invoice"), () => { + erpnext.bulk_transaction_processing.create( + listview, + "Supplier Quotation", + "Purchase Invoice" + ); + }); + } }, }; diff --git a/erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.json b/erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.json index 71e8da47340..91019104949 100644 --- a/erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.json +++ b/erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.json @@ -578,11 +578,7 @@ "index_web_pages_for_search": 1, "istable": 1, "links": [], -<<<<<<< HEAD - "modified": "2023-11-17 12:25:26.235367", -======= - "modified": "2024-06-02 06:22:17.864822", ->>>>>>> 0bab6f34c1 (fix: distributed discounts on si) + "modified": "2024-06-02 06:22:18.864822", "modified_by": "Administrator", "module": "Buying", "name": "Supplier Quotation Item", diff --git a/erpnext/buying/report/procurement_tracker/procurement_tracker.py b/erpnext/buying/report/procurement_tracker/procurement_tracker.py index a7e03c08fac..bd0798236b3 100644 --- a/erpnext/buying/report/procurement_tracker/procurement_tracker.py +++ b/erpnext/buying/report/procurement_tracker/procurement_tracker.py @@ -175,7 +175,7 @@ def get_data(filters): "purchase_order": po.parent, "supplier": po.supplier, "estimated_cost": flt(mr_record.get("amount")), - "actual_cost": flt(pi_records.get(po.name)), + "actual_cost": flt(pi_records.get(po.name)) or flt(po.amount), "purchase_order_amt": flt(po.amount), "purchase_order_amt_in_company_currency": flt(po.base_amount), "expected_delivery_date": po.schedule_date, diff --git a/erpnext/buying/report/purchase_order_analysis/purchase_order_analysis.js b/erpnext/buying/report/purchase_order_analysis/purchase_order_analysis.js index d8c91babdfd..99b4c26ac8e 100644 --- a/erpnext/buying/report/purchase_order_analysis/purchase_order_analysis.js +++ b/erpnext/buying/report/purchase_order_analysis/purchase_order_analysis.js @@ -19,6 +19,10 @@ frappe.query_reports["Purchase Order Analysis"] = { width: "80", reqd: 1, default: frappe.datetime.add_months(frappe.datetime.get_today(), -1), + on_change: (report) => { + report.set_filter_value("name", []); + report.refresh(); + }, }, { fieldname: "to_date", @@ -27,6 +31,10 @@ frappe.query_reports["Purchase Order Analysis"] = { width: "80", reqd: 1, default: frappe.datetime.get_today(), + on_change: (report) => { + report.set_filter_value("name", []); + report.refresh(); + }, }, { fieldname: "project", @@ -38,13 +46,17 @@ frappe.query_reports["Purchase Order Analysis"] = { { fieldname: "name", label: __("Purchase Order"), - fieldtype: "Link", + fieldtype: "MultiSelectList", width: "80", options: "Purchase Order", - get_query: () => { - return { - filters: { docstatus: 1 }, - }; + get_data: function (txt) { + let filters = { docstatus: 1 }; + + const from_date = frappe.query_report.get_filter_value("from_date"); + const to_date = frappe.query_report.get_filter_value("to_date"); + if (from_date && to_date) filters["transaction_date"] = ["between", [from_date, to_date]]; + + return frappe.db.get_link_options("Purchase Order", txt, filters); }, }, { @@ -52,8 +64,16 @@ frappe.query_reports["Purchase Order Analysis"] = { label: __("Status"), fieldtype: "MultiSelectList", width: "80", + options: ["To Pay", "To Bill", "To Receive", "To Receive and Bill", "Completed", "Closed"], get_data: function (txt) { - let status = ["To Bill", "To Receive", "To Receive and Bill", "Completed"]; + let status = [ + "To Pay", + "To Bill", + "To Receive", + "To Receive and Bill", + "Completed", + "Closed", + ]; let options = []; for (let option of status) { options.push({ diff --git a/erpnext/buying/report/purchase_order_analysis/purchase_order_analysis.py b/erpnext/buying/report/purchase_order_analysis/purchase_order_analysis.py index 084c3b5fc2b..b6bf1d9f8da 100644 --- a/erpnext/buying/report/purchase_order_analysis/purchase_order_analysis.py +++ b/erpnext/buying/report/purchase_order_analysis/purchase_order_analysis.py @@ -22,6 +22,8 @@ def execute(filters=None): if not data: return [], [], None, [] + update_received_amount(data) + data, chart_data = prepare_data(data, filters) return columns, data, None, chart_data @@ -40,7 +42,6 @@ def get_data(filters): po = frappe.qb.DocType("Purchase Order") po_item = frappe.qb.DocType("Purchase Order Item") pi_item = frappe.qb.DocType("Purchase Invoice Item") - pr_item = frappe.qb.DocType("Purchase Receipt Item") query = ( frappe.qb.from_(po) @@ -48,8 +49,6 @@ def get_data(filters): .on(po_item.parent == po.name) .left_join(pi_item) .on((pi_item.po_detail == po_item.name) & (pi_item.docstatus == 1)) - .left_join(pr_item) - .on((pr_item.purchase_order_item == po_item.name) & (pr_item.docstatus == 1)) .select( po.transaction_date.as_("date"), po_item.schedule_date.as_("required_date"), @@ -63,7 +62,6 @@ def get_data(filters): (po_item.qty - po_item.received_qty).as_("pending_qty"), Sum(IfNull(pi_item.qty, 0)).as_("billed_qty"), po_item.base_amount.as_("amount"), - (pr_item.base_amount).as_("received_qty_amount"), (po_item.billed_amt * IfNull(po.conversion_rate, 1)).as_("billed_amount"), (po_item.base_amount - (po_item.billed_amt * IfNull(po.conversion_rate, 1))).as_( "pending_amount" @@ -72,14 +70,16 @@ def get_data(filters): po.company, po_item.name, ) - .where((po_item.parent == po.name) & (po.status.notin(("Stopped", "Closed"))) & (po.docstatus == 1)) + .where((po_item.parent == po.name) & (po.status.notin(("Stopped", "On Hold"))) & (po.docstatus == 1)) .groupby(po_item.name) .orderby(po.transaction_date) ) - for field in ("company", "name"): - if filters.get(field): - query = query.where(po[field] == filters.get(field)) + if filters.get("company"): + query = query.where(po.company == filters.get("company")) + + if filters.get("name"): + query = query.where(po.name.isin(filters.get("name"))) if filters.get("from_date") and filters.get("to_date"): query = query.where(po.transaction_date.between(filters.get("from_date"), filters.get("to_date"))) @@ -95,6 +95,42 @@ def get_data(filters): return data +def update_received_amount(data): + pr_data = get_received_amount_data(data) + + for row in data: + row.received_qty_amount = flt(pr_data.get(row.name)) + + +def get_received_amount_data(data): + pr = frappe.qb.DocType("Purchase Receipt") + pr_item = frappe.qb.DocType("Purchase Receipt Item") + + po_items = [row.name for row in data] + + if not po_items: + return frappe._dict() + + query = ( + frappe.qb.from_(pr) + .inner_join(pr_item) + .on(pr_item.parent == pr.name) + .select( + pr_item.purchase_order_item, + Sum(pr_item.base_amount).as_("received_qty_amount"), + ) + .where((pr.docstatus == 1) & (pr_item.purchase_order_item.isin(po_items))) + .groupby(pr_item.purchase_order_item) + ) + + data = query.run() + + if not data: + return frappe._dict() + + return frappe._dict(data) + + def prepare_data(data, filters): completed, pending = 0, 0 pending_field = "pending_amount" @@ -150,7 +186,7 @@ def prepare_data(data, filters): def prepare_chart_data(pending, completed): - labels = ["Amount to Bill", "Billed Amount"] + labels = [_("Amount to Bill"), _("Billed Amount")] return { "data": {"labels": labels, "datasets": [{"values": [pending, completed]}]}, diff --git a/erpnext/buying/report/purchase_order_trends/purchase_order_trends.js b/erpnext/buying/report/purchase_order_trends/purchase_order_trends.js index 56684a8659b..9b193a34d83 100644 --- a/erpnext/buying/report/purchase_order_trends/purchase_order_trends.js +++ b/erpnext/buying/report/purchase_order_trends/purchase_order_trends.js @@ -2,3 +2,10 @@ // License: GNU General Public License v3. See license.txt frappe.query_reports["Purchase Order Trends"] = $.extend({}, erpnext.purchase_trends_filters); + +frappe.query_reports["Purchase Order Trends"]["filters"].push({ + fieldname: "include_closed_orders", + label: __("Include Closed Orders"), + fieldtype: "Check", + default: 0, +}); diff --git a/erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.html b/erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.html index 015b31c2064..2fb0986c7bb 100644 --- a/erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.html +++ b/erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.html @@ -94,9 +94,6 @@ -
- {%= frappe.boot.letter_heads[frappe.defaults.get_default("letter_head")] %} -

{%= __(report.report_name) %}

{%= filters.item %}

@@ -124,9 +121,7 @@ -

Analysis Chart

+

{%= __("Analysis Chart") %}

- - -

Printed On {%= frappe.datetime.str_to_user(frappe.datetime.get_datetime_as_string()) %}

+

{%= __("Printed on {0}", [frappe.datetime.str_to_user(frappe.datetime.get_datetime_as_string())]) %}

diff --git a/erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js b/erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js index 9701e147f05..2c0be8f70d7 100644 --- a/erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js +++ b/erpnext/buying/report/supplier_quotation_comparison/supplier_quotation_comparison.js @@ -50,6 +50,7 @@ frappe.query_reports["Supplier Quotation Comparison"] = { fieldname: "supplier", label: __("Supplier"), fieldtype: "MultiSelectList", + options: "Supplier", get_data: function (txt) { return frappe.db.get_link_options("Supplier", txt); }, @@ -58,6 +59,7 @@ frappe.query_reports["Supplier Quotation Comparison"] = { fieldtype: "MultiSelectList", label: __("Supplier Quotation"), fieldname: "supplier_quotation", + options: "Supplier Quotation", default: "", get_data: function (txt) { return frappe.db.get_link_options("Supplier Quotation", txt, { docstatus: ["<", 2] }); diff --git a/erpnext/buying/workspace/buying/buying.json b/erpnext/buying/workspace/buying/buying.json index 1394fc48d5b..db5c7d046db 100644 --- a/erpnext/buying/workspace/buying/buying.json +++ b/erpnext/buying/workspace/buying/buying.json @@ -537,7 +537,7 @@ "doc_view": "List", "label": "Learn Procurement", "type": "URL", - "url": "https://frappe.school/courses/procurement?utm_source=in_app" + "url": "https://school.frappe.io/lms/courses/procurement?utm_source=in_app" }, { "color": "Yellow", @@ -572,4 +572,4 @@ } ], "title": "Buying" -} \ No newline at end of file +} diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py index 32f11804206..eab0064a85e 100644 --- a/erpnext/controllers/accounts_controller.py +++ b/erpnext/controllers/accounts_controller.py @@ -8,7 +8,7 @@ from collections import defaultdict import frappe from frappe import _, bold, qb, throw from frappe.model.workflow import get_workflow_name, is_transition_condition_satisfied -from frappe.query_builder import Criterion +from frappe.query_builder import Criterion, DocType from frappe.query_builder.custom import ConstantColumn from frappe.query_builder.functions import Abs, Sum from frappe.utils import ( @@ -165,12 +165,54 @@ class AccountsController(TransactionBase): raise_exception=1, ) + def validate_against_voucher_outstanding(self): + from frappe.model.meta import get_meta + + if not get_meta(self.doctype).has_field("outstanding_amount"): + return + + if self.get("is_return") and self.return_against and not self.get("is_pos"): + against_voucher_outstanding = frappe.get_value( + self.doctype, self.return_against, "outstanding_amount" + ) + document_type = "Credit Note" if self.doctype == "Sales Invoice" else "Debit Note" + + msg = "" + if self.get("update_outstanding_for_self"): + msg = ( + "We can see {0} is made against {1}. If you want {1}'s outstanding to be updated, " + "uncheck '{2}' checkbox.

Or" + ).format( + frappe.bold(document_type), + get_link_to_form(self.doctype, self.get("return_against")), + frappe.bold(_("Update Outstanding for Self")), + ) + + elif not self.update_outstanding_for_self and ( + abs(flt(self.rounded_total) or flt(self.grand_total)) > flt(against_voucher_outstanding) + ): + self.update_outstanding_for_self = 1 + msg = ( + "The outstanding amount {} in {} is lesser than {}. Updating the outstanding to this invoice.

And" + ).format( + against_voucher_outstanding, + get_link_to_form(self.doctype, self.get("return_against")), + flt(abs(self.outstanding_amount)), + ) + + if msg: + msg += " you can use {} tool to reconcile against {} later.".format( + get_link_to_form("Payment Reconciliation", "Payment Reconciliation"), + get_link_to_form(self.doctype, self.get("return_against")), + ) + frappe.msgprint(_(msg)) + def validate(self): if not self.get("is_return") and not self.get("is_debit_note"): self.validate_qty_is_not_zero() if ( - self.doctype in ["Sales Invoice", "Purchase Invoice"] + self.doctype in ["Sales Invoice", "Purchase Invoice", "POS Invoice"] and self.get("is_return") and self.get("update_stock") ): @@ -193,6 +235,15 @@ class AccountsController(TransactionBase): self.disable_tax_included_prices_for_internal_transfer() self.set_incoming_rate() self.init_internal_values() + self.validate_against_voucher_outstanding() + + # Need to set taxes based on taxes_and_charges template + # before calculating taxes and totals + if self.meta.get_field("taxes_and_charges"): + self.validate_enabled_taxes_and_charges() + self.validate_tax_account_company() + + self.set_taxes_and_charges() if self.meta.get_field("currency"): self.calculate_taxes_and_totals() @@ -204,10 +255,6 @@ class AccountsController(TransactionBase): self.validate_all_documents_schedule() - if self.meta.get_field("taxes_and_charges"): - self.validate_enabled_taxes_and_charges() - self.validate_tax_account_company() - self.validate_party() self.validate_currency() self.validate_party_account_currency() @@ -224,20 +271,6 @@ class AccountsController(TransactionBase): ) ) - if self.get("is_return") and self.get("return_against") and not self.get("is_pos"): - if self.get("update_outstanding_for_self"): - document_type = "Credit Note" if self.doctype == "Sales Invoice" else "Debit Note" - frappe.msgprint( - _( - "We can see {0} is made against {1}. If you want {1}'s outstanding to be updated, uncheck '{2}' checkbox.

Or you can use {3} tool to reconcile against {1} later." - ).format( - frappe.bold(document_type), - get_link_to_form(self.doctype, self.get("return_against")), - frappe.bold(_("Update Outstanding for Self")), - get_link_to_form("Payment Reconciliation", "Payment Reconciliation"), - ) - ) - pos_check_field = "is_pos" if self.doctype == "Sales Invoice" else "is_paid" if cint(self.allocate_advances_automatically) and not cint(self.get(pos_check_field)): self.set_advances() @@ -266,6 +299,8 @@ class AccountsController(TransactionBase): self.set_total_in_words() self.set_default_letter_head() + self.validate_company_in_accounting_dimension() + self.validate_party_address_and_contact() def set_default_letter_head(self): if hasattr(self, "letter_head") and not self.letter_head: @@ -345,13 +380,30 @@ class AccountsController(TransactionBase): repost_doc.flags.ignore_links = True repost_doc.save(ignore_permissions=True) + def _remove_advance_payment_ledger_entries(self): + adv = qb.DocType("Advance Payment Ledger Entry") + qb.from_(adv).delete().where(adv.voucher_type.eq(self.doctype) & adv.voucher_no.eq(self.name)).run() + + advance_payment_doctypes = frappe.get_hooks("advance_payment_doctypes") + + if self.doctype in advance_payment_doctypes: + qb.from_(adv).delete().where( + adv.against_voucher_type.eq(self.doctype) & adv.against_voucher_no.eq(self.name) + ).run() + def on_trash(self): + from erpnext.accounts.utils import delete_exchange_gain_loss_journal + + self._remove_advance_payment_ledger_entries() self._remove_references_in_repost_doctypes() self._remove_references_in_unreconcile() self.remove_serial_and_batch_bundle() # delete sl and gl entries on deletion of transaction if frappe.db.get_single_value("Accounts Settings", "delete_linked_ledger_entries"): + # delete linked exchange gain/loss journal + delete_exchange_gain_loss_journal(self) + ple = frappe.qb.DocType("Payment Ledger Entry") frappe.qb.from_(ple).delete().where( (ple.voucher_type == self.doctype) & (ple.voucher_no == self.name) @@ -362,13 +414,14 @@ class AccountsController(TransactionBase): == 1 ) ).run() - frappe.db.sql( - "delete from `tabGL Entry` where voucher_type=%s and voucher_no=%s", (self.doctype, self.name) - ) - frappe.db.sql( - "delete from `tabStock Ledger Entry` where voucher_type=%s and voucher_no=%s", - (self.doctype, self.name), - ) + gle = frappe.qb.DocType("GL Entry") + frappe.qb.from_(gle).delete().where( + (gle.voucher_type == self.doctype) & (gle.voucher_no == self.name) + ).run() + sle = frappe.qb.DocType("Stock Ledger Entry") + frappe.qb.from_(sle).delete().where( + (sle.voucher_type == self.doctype) & (sle.voucher_no == self.name) + ).run() def remove_serial_and_batch_bundle(self): bundles = frappe.get_all( @@ -385,15 +438,91 @@ class AccountsController(TransactionBase): for row in batches: frappe.delete_doc("Batch", row.name) + def validate_company_in_accounting_dimension(self): + doc_field = DocType("DocField") + accounting_dimension = DocType("Accounting Dimension") + dimension_list = ( + frappe.qb.from_(accounting_dimension) + .select(accounting_dimension.document_type) + .join(doc_field) + .on(doc_field.parent == accounting_dimension.document_type) + .where(doc_field.fieldname == "company") + ).run(as_list=True) + + dimension_list = sum(dimension_list, ["Project", "Cost Center"]) + self.validate_company(dimension_list) + + for child in self.get_all_children() or []: + self.validate_company(dimension_list, child) + + def validate_company(self, dimension_list, child=None): + for dimension in dimension_list: + if not child: + dimension_value = self.get(frappe.scrub(dimension)) + else: + dimension_value = child.get(frappe.scrub(dimension)) + + if dimension_value: + company = frappe.get_cached_value(dimension, dimension_value, "company") + if company and company != self.company: + frappe.throw( + _("{0}: {1} does not belong to the Company: {2}").format( + dimension, frappe.bold(dimension_value), self.company + ) + ) + + def validate_party_address_and_contact(self): + party_type, party = self.get_party() + + if not (party_type and party): + return + + if party_type == "Customer": + billing_address, shipping_address = ( + self.get("customer_address"), + self.get("shipping_address_name"), + ) + self.validate_party_address(party, party_type, billing_address, shipping_address) + elif party_type == "Supplier": + billing_address = self.get("supplier_address") + self.validate_party_address(party, party_type, billing_address) + + self.validate_party_contact(party, party_type) + + def validate_party_address(self, party, party_type, billing_address, shipping_address=None): + if billing_address or shipping_address: + party_address = frappe.get_all( + "Dynamic Link", + {"link_doctype": party_type, "link_name": party, "parenttype": "Address"}, + pluck="parent", + ) + if billing_address and billing_address not in party_address: + frappe.throw(_("Billing Address does not belong to the {0}").format(party)) + elif shipping_address and shipping_address not in party_address: + frappe.throw(_("Shipping Address does not belong to the {0}").format(party)) + + def validate_party_contact(self, party, party_type): + if self.get("contact_person"): + contact = frappe.get_all( + "Dynamic Link", + {"link_doctype": party_type, "link_name": party, "parenttype": "Contact"}, + pluck="parent", + ) + if self.contact_person and self.contact_person not in contact: + frappe.throw(_("Contact Person does not belong to the {0}").format(party)) + def validate_return_against_account(self): if self.doctype in ["Sales Invoice", "Purchase Invoice"] and self.is_return and self.return_against: cr_dr_account_field = "debit_to" if self.doctype == "Sales Invoice" else "credit_to" - cr_dr_account_label = "Debit To" if self.doctype == "Sales Invoice" else "Credit To" - cr_dr_account = self.get(cr_dr_account_field) - if frappe.get_value(self.doctype, self.return_against, cr_dr_account_field) != cr_dr_account: + original_account = frappe.get_value(self.doctype, self.return_against, cr_dr_account_field) + if original_account != self.get(cr_dr_account_field): frappe.throw( - _("'{0}' account: '{1}' should match the Return Against Invoice").format( - frappe.bold(cr_dr_account_label), frappe.bold(cr_dr_account) + _( + "Please set {0} to {1}, the same account that was used in the original invoice {2}." + ).format( + frappe.bold(_(self.meta.get_label(cr_dr_account_field), context=self.doctype)), + frappe.bold(original_account), + frappe.bold(self.return_against), ) ) @@ -443,6 +572,18 @@ class AccountsController(TransactionBase): ) def validate_invoice_documents_schedule(self): + if ( + self.is_return + or (self.doctype == "Purchase Invoice" and self.is_paid) + or (self.doctype == "Sales Invoice" and self.is_pos) + or self.get("is_opening") == "Yes" + ): + self.payment_terms_template = "" + self.payment_schedule = [] + + if self.is_return: + return + self.validate_payment_schedule_dates() self.set_due_date() self.set_payment_schedule() @@ -457,7 +598,7 @@ class AccountsController(TransactionBase): self.validate_payment_schedule_amount() def validate_all_documents_schedule(self): - if self.doctype in ("Sales Invoice", "Purchase Invoice") and not self.is_return: + if self.doctype in ("Sales Invoice", "Purchase Invoice"): self.validate_invoice_documents_schedule() elif self.doctype in ("Quotation", "Purchase Order", "Sales Order"): self.validate_non_invoice_documents_schedule() @@ -744,9 +885,23 @@ class AccountsController(TransactionBase): ret = get_item_details(args, self, for_validate=for_validate, overwrite_warehouse=False) for fieldname, value in ret.items(): if item.meta.get_field(fieldname) and value is not None: - if item.get(fieldname) is None or fieldname in force_item_fields: + if ( + item.get(fieldname) is None + or fieldname in force_item_fields + or ( + fieldname in ["serial_no", "batch_no"] + and item.get("use_serial_batch_fields") + ) + ): item.set(fieldname, value) + if fieldname == "batch_no" and item.batch_no and not item.is_free_item: + if ret.get("rate"): + item.set("rate", ret.get("rate")) + + if not item.get("price_list_rate") and ret.get("price_list_rate"): + item.set("price_list_rate", ret.get("price_list_rate")) + elif fieldname in ["cost_center", "conversion_factor"] and not item.get( fieldname ): @@ -895,6 +1050,12 @@ class AccountsController(TransactionBase): ): return True + def set_taxes_and_charges(self): + if frappe.db.get_single_value("Accounts Settings", "add_taxes_from_item_tax_template"): + if hasattr(self, "taxes_and_charges") and not self.get("taxes") and not self.get("is_pos"): + if tax_master_doctype := self.meta.get_field("taxes_and_charges").options: + self.append_taxes_from_master(tax_master_doctype) + def append_taxes_from_master(self, tax_master_doctype=None): if self.get("taxes_and_charges"): if not tax_master_doctype: @@ -1028,18 +1189,19 @@ class AccountsController(TransactionBase): ) # Update details in transaction currency - gl_dict.update( - { - "transaction_currency": 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, gl_dict, "debit" - ), - "credit_in_transaction_currency": self.get_value_in_transaction_currency( - account_currency, gl_dict, "credit" - ), - } - ) + if self.doctype not in ["Purchase Invoice", "Sales Invoice", "Journal Entry", "Payment Entry"]: + gl_dict.update( + { + "transaction_currency": 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, gl_dict, "debit" + ), + "credit_in_transaction_currency": self.get_value_in_transaction_currency( + account_currency, gl_dict, "credit" + ), + } + ) if not args.get("against_voucher_type") and self.get("against_voucher_type"): gl_dict.update({"against_voucher_type": self.get("against_voucher_type")}) @@ -1056,16 +1218,26 @@ class AccountsController(TransactionBase): "Stock Entry": "stock_entry_type", "Asset Capitalization": "entry_type", } + + for method_name in frappe.get_hooks("voucher_subtypes"): + voucher_subtype = frappe.get_attr(method_name)(self) + + if voucher_subtype: + return voucher_subtype + 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": + elif self.doctype == "Sales Invoice" and self.is_return: return "Credit Note" - elif (self.doctype == "Purchase Invoice" and self.is_return) or self.doctype == "Sales Invoice": + elif self.doctype == "Sales Invoice" and self.is_debit_note: return "Debit Note" + elif self.doctype == "Purchase Invoice" and self.is_return: + return "Debit Note" + return self.doctype def get_value_in_transaction_currency(self, account_currency, gl_dict, field): @@ -1113,11 +1285,12 @@ class AccountsController(TransactionBase): def clear_unallocated_advances(self, childtype, parentfield): self.set(parentfield, self.get(parentfield, {"allocated_amount": ["not in", [0, None, ""]]})) - frappe.db.sql( - """delete from `tab{}` where parentfield={} and parent = {} - and allocated_amount = 0""".format(childtype, "%s", "%s"), - (parentfield, self.name), - ) + doctype = frappe.qb.DocType(childtype) + frappe.qb.from_(doctype).delete().where( + (doctype.parentfield == parentfield) + & (doctype.parent == self.name) + & (doctype.allocated_amount == 0) + ).run() @frappe.whitelist() def apply_shipping_rule(self): @@ -1167,6 +1340,7 @@ class AccountsController(TransactionBase): "advance_amount": flt(d.amount), "allocated_amount": allocated_amount, "ref_exchange_rate": flt(d.exchange_rate), # exchange_rate of advance entry + "difference_posting_date": self.posting_date, } if d.get("paid_from"): advance_row["account"] = d.paid_from @@ -1177,7 +1351,9 @@ class AccountsController(TransactionBase): def get_advance_entries(self, include_unallocated=True): party_account = [] - if self.doctype == "Sales Invoice": + default_advance_account = None + + if self.doctype in ["Sales Invoice", "POS Invoice"]: party_type = "Customer" party = self.customer amount_field = "credit_in_account_currency" @@ -1192,10 +1368,14 @@ class AccountsController(TransactionBase): order_doctype = "Purchase Order" party_account.append(self.credit_to) - party_account.extend( - get_party_account(party_type, party=party, company=self.company, include_advance=True) + party_accounts = get_party_account( + party_type, party=party, company=self.company, include_advance=True ) + if party_accounts: + party_account.append(party_accounts[0]) + default_advance_account = party_accounts[1] if len(party_accounts) == 2 else None + order_list = list(set(d.get(order_field) for d in self.get("items") if d.get(order_field))) journal_entries = get_advance_journal_entries( @@ -1203,7 +1383,13 @@ class AccountsController(TransactionBase): ) payment_entries = get_advance_payment_entries_for_regional( - party_type, party, party_account, order_doctype, order_list, include_unallocated + party_type, + party, + party_account, + order_doctype, + order_list, + default_advance_account, + include_unallocated, ) res = journal_entries + payment_entries @@ -1261,7 +1447,11 @@ class AccountsController(TransactionBase): d.exchange_gain_loss = difference def make_precision_loss_gl_entry(self, gl_entries): - round_off_account, round_off_cost_center = get_round_off_account_and_cost_center( + ( + round_off_account, + round_off_cost_center, + round_off_for_opening, + ) = get_round_off_account_and_cost_center( self.company, "Purchase Invoice", self.name, self.use_company_roundoff_cost_center ) @@ -1456,7 +1646,6 @@ class AccountsController(TransactionBase): gain_loss_account = frappe.get_cached_value( "Company", self.company, "exchange_gain_loss_account" ) - je = create_gain_loss_journal( self.company, args.get("difference_posting_date") if args else self.posting_date, @@ -1542,6 +1731,7 @@ class AccountsController(TransactionBase): "Company", self.company, "exchange_gain_loss_account" ), "exchange_gain_loss": flt(d.get("exchange_gain_loss")), + "difference_posting_date": d.get("difference_posting_date"), } ) lst.append(args) @@ -1580,6 +1770,7 @@ class AccountsController(TransactionBase): remove_from_bank_transaction, ) from erpnext.accounts.utils import ( + cancel_common_party_journal, cancel_exchange_gain_loss_journal, unlink_ref_doc_from_payment_entries, ) @@ -1591,6 +1782,7 @@ class AccountsController(TransactionBase): # Cancel Exchange Gain/Loss Journal before unlinking cancel_exchange_gain_loss_journal(self) + cancel_common_party_journal(self) if frappe.db.get_single_value("Accounts Settings", "unlink_payment_on_cancellation_of_invoice"): unlink_ref_doc_from_payment_entries(self) @@ -1789,22 +1981,22 @@ class AccountsController(TransactionBase): continue ref_amt = flt(reference_details.get(item.get(item_ref_dn)), self.precision(based_on, item)) + based_on_amt = flt(item.get(based_on)) if not ref_amt: - frappe.msgprint( - _("System will not check over billing since amount for Item {0} in {1} is zero").format( - item.item_code, ref_dt - ), - title=_("Warning"), - indicator="orange", - ) + if based_on_amt: # Skip warning for free items + frappe.msgprint( + _( + "System will not check over billing since amount for Item {0} in {1} is zero" + ).format(item.item_code, ref_dt), + title=_("Warning"), + indicator="orange", + ) continue already_billed = self.get_billed_amount_for_item(item, item_ref_dn, based_on) - total_billed_amt = flt( - flt(already_billed) + flt(item.get(based_on)), self.precision(based_on, item) - ) + total_billed_amt = flt(flt(already_billed) + based_on_amt, self.precision(based_on, item)) allowance, item_allowance, global_qty_allowance, global_amount_allowance = get_allowance_for( item.item_code, item_allowance, global_qty_allowance, global_amount_allowance, "amount" @@ -1913,21 +2105,23 @@ class AccountsController(TransactionBase): return stock_items - def set_total_advance_paid(self): - ple = frappe.qb.DocType("Payment Ledger Entry") - party = self.customer if self.doctype == "Sales Order" else self.supplier + def calculate_total_advance_from_ledger(self): + adv = frappe.qb.DocType("Advance Payment Ledger Entry") advance = ( - frappe.qb.from_(ple) - .select(ple.account_currency, Abs(Sum(ple.amount_in_account_currency)).as_("amount")) + frappe.qb.from_(adv) + .select(adv.currency.as_("account_currency"), Abs(Sum(adv.amount)).as_("amount")) .where( - (ple.against_voucher_type == self.doctype) - & (ple.against_voucher_no == self.name) - & (ple.party == party) - & (ple.delinked == 0) - & (ple.company == self.company) + (adv.against_voucher_type == self.doctype) + & (adv.against_voucher_no == self.name) + & (adv.company == self.company) ) .run(as_dict=True) ) + return advance + + def set_total_advance_paid(self): + advance = self.calculate_total_advance_from_ledger() + advance_paid, order_total = None, None if advance: advance = advance[0] @@ -1960,7 +2154,7 @@ class AccountsController(TransactionBase): ).format(formatted_advance_paid, self.name, formatted_order_total) ) - frappe.db.set_value(self.doctype, self.name, "advance_paid", advance_paid) + self.db_set("advance_paid", advance_paid) @property def company_abbr(self): @@ -2074,11 +2268,9 @@ class AccountsController(TransactionBase): for adv in self.advances: consider_for_total_advance = True if adv.reference_name == linked_doc_name: - frappe.db.sql( - f"""delete from `tab{self.doctype} Advance` - where name = %s""", - adv.name, - ) + doctype = frappe.qb.DocType(self.doctype + " Advance") + frappe.qb.from_(doctype).delete().where(doctype.name == adv.name).run() + consider_for_total_advance = False if consider_for_total_advance: @@ -2168,7 +2360,9 @@ class AccountsController(TransactionBase): and automatically_fetch_payment_terms and self.linked_order_has_payment_terms(po_or_so, fieldname, doctype) ): - self.fetch_payment_terms_from_order(po_or_so, doctype) + self.fetch_payment_terms_from_order( + po_or_so, doctype, grand_total, base_grand_total, automatically_fetch_payment_terms + ) if self.get("payment_terms_template"): self.ignore_default_payment_terms_template = 1 elif self.get("payment_terms_template"): @@ -2204,12 +2398,17 @@ class AccountsController(TransactionBase): base_grand_total * flt(d.invoice_portion) / 100, d.precision("base_payment_amount") ) d.outstanding = d.payment_amount + d.base_outstanding = flt( + d.payment_amount * self.get("conversion_rate"), d.precision("base_outstanding") + ) elif not d.invoice_portion: d.base_payment_amount = flt( d.payment_amount * self.get("conversion_rate"), d.precision("base_payment_amount") ) else: - self.fetch_payment_terms_from_order(po_or_so, doctype) + self.fetch_payment_terms_from_order( + po_or_so, doctype, grand_total, base_grand_total, automatically_fetch_payment_terms + ) self.ignore_default_payment_terms_template = 1 def get_order_details(self): @@ -2247,7 +2446,9 @@ class AccountsController(TransactionBase): def linked_order_has_payment_schedule(self, po_or_so): return frappe.get_all("Payment Schedule", filters={"parent": po_or_so}) - def fetch_payment_terms_from_order(self, po_or_so, po_or_so_doctype): + def fetch_payment_terms_from_order( + self, po_or_so, po_or_so_doctype, grand_total, base_grand_total, automatically_fetch_payment_terms + ): """ Fetch Payment Terms from Purchase/Sales Order on creating a new Purchase/Sales Invoice. """ @@ -2263,12 +2464,25 @@ class AccountsController(TransactionBase): "invoice_portion": schedule.invoice_portion, "mode_of_payment": schedule.mode_of_payment, "description": schedule.description, - "payment_amount": schedule.payment_amount, - "base_payment_amount": schedule.base_payment_amount, - "outstanding": schedule.outstanding, "paid_amount": schedule.paid_amount, } + if automatically_fetch_payment_terms: + payment_schedule["payment_amount"] = flt( + grand_total * flt(payment_schedule["invoice_portion"]) / 100, + schedule.precision("payment_amount"), + ) + payment_schedule["base_payment_amount"] = flt( + base_grand_total * flt(payment_schedule["invoice_portion"]) / 100, + schedule.precision("base_payment_amount"), + ) + payment_schedule["outstanding"] = payment_schedule["payment_amount"] + else: + payment_schedule["base_payment_amount"] = flt( + schedule.base_payment_amount * self.get("conversion_rate"), + schedule.precision("base_payment_amount"), + ) + if schedule.discount_type == "Percentage": payment_schedule["discount_type"] = schedule.discount_type payment_schedule["discount"] = schedule.discount @@ -2291,6 +2505,7 @@ class AccountsController(TransactionBase): return for d in self.get("payment_schedule"): + d.validate_from_to_dates("discount_date", "due_date") if self.doctype == "Sales Order" and getdate(d.due_date) < getdate(self.transaction_date): frappe.throw( _("Row {0}: Due Date in the Payment Terms table cannot be before Posting Date").format( @@ -2343,10 +2558,15 @@ class AccountsController(TransactionBase): ) if ( - flt(total, self.precision("grand_total")) - flt(grand_total, self.precision("grand_total")) + abs( + flt(total, self.precision("grand_total")) + - flt(grand_total, self.precision("grand_total")) + ) > 0.1 - or flt(base_total, self.precision("base_grand_total")) - - flt(base_grand_total, self.precision("base_grand_total")) + or abs( + flt(base_total, self.precision("base_grand_total")) + - flt(base_grand_total, self.precision("base_grand_total")) + ) > 0.1 ): frappe.throw( @@ -2421,12 +2641,21 @@ class AccountsController(TransactionBase): primary_account = get_party_account(primary_party_type, primary_party, self.company) secondary_account = get_party_account(secondary_party_type, secondary_party, self.company) + primary_account_currency = get_account_currency(primary_account) + secondary_account_currency = get_account_currency(secondary_account) + default_currency = erpnext.get_company_currency(self.company) + + # Determine if multi-currency journal entry is needed + multi_currency = ( + primary_account_currency != default_currency or secondary_account_currency != default_currency + ) jv = frappe.new_doc("Journal Entry") jv.voucher_type = "Journal Entry" jv.posting_date = self.posting_date jv.company = self.company jv.remark = f"Adjustment for {self.doctype} {self.name}" + jv.is_system_generated = True reconcilation_entry = frappe._dict() advance_entry = frappe._dict() @@ -2444,7 +2673,7 @@ class AccountsController(TransactionBase): advance_entry.cost_center = self.cost_center or erpnext.get_default_cost_center(self.company) advance_entry.is_advance = "Yes" - # update dimesions + # Update dimensions dimensions_dict = frappe._dict() active_dimensions = get_dimensions()[0] for dim in active_dimensions: @@ -2453,13 +2682,58 @@ class AccountsController(TransactionBase): reconcilation_entry.update(dimensions_dict) advance_entry.update(dimensions_dict) - if self.doctype == "Sales Invoice": - reconcilation_entry.credit_in_account_currency = self.outstanding_amount - advance_entry.debit_in_account_currency = self.outstanding_amount - else: - advance_entry.credit_in_account_currency = self.outstanding_amount - reconcilation_entry.debit_in_account_currency = self.outstanding_amount + # Calculate exchange rates if necessary + if multi_currency: + # Exchange rates for primary and secondary accounts + exc_rate_primary_to_default = ( + 1 + if primary_account_currency == default_currency + else get_exchange_rate(primary_account_currency, default_currency, self.posting_date) + ) + exc_rate_secondary_to_default = ( + 1 + if secondary_account_currency == default_currency + else get_exchange_rate(secondary_account_currency, default_currency, self.posting_date) + ) + exc_rate_secondary_to_primary = ( + 1 + if secondary_account_currency == primary_account_currency + else get_exchange_rate( + secondary_account_currency, primary_account_currency, self.posting_date + ) + ) + # Convert outstanding amount from secondary to primary account currency, if needed + + os_in_default_currency = self.outstanding_amount * exc_rate_secondary_to_default + os_in_primary_currency = self.outstanding_amount * exc_rate_secondary_to_primary + + if self.doctype == "Sales Invoice": + # Calculate credit and debit values for reconciliation and advance entries + reconcilation_entry.credit_in_account_currency = self.outstanding_amount + reconcilation_entry.credit = os_in_default_currency + + advance_entry.debit_in_account_currency = os_in_primary_currency + advance_entry.debit = os_in_default_currency + else: + advance_entry.credit_in_account_currency = os_in_primary_currency + advance_entry.credit = os_in_default_currency + + reconcilation_entry.debit_in_account_currency = self.outstanding_amount + reconcilation_entry.debit = os_in_default_currency + + # Set exchange rates for entries + reconcilation_entry.exchange_rate = exc_rate_secondary_to_default + advance_entry.exchange_rate = exc_rate_primary_to_default + else: + if self.doctype == "Sales Invoice": + reconcilation_entry.credit_in_account_currency = self.outstanding_amount + advance_entry.debit_in_account_currency = self.outstanding_amount + else: + advance_entry.credit_in_account_currency = self.outstanding_amount + reconcilation_entry.debit_in_account_currency = self.outstanding_amount + + jv.multi_currency = multi_currency jv.append("accounts", reconcilation_entry) jv.append("accounts", advance_entry) @@ -2470,12 +2744,17 @@ class AccountsController(TransactionBase): default_currency = erpnext.get_company_currency(self.company) if not default_currency: throw(_("Please enter default currency in Company Master")) - if ( - (self.currency == default_currency and flt(self.conversion_rate) != 1.00) - or not self.conversion_rate - or (self.currency != default_currency and flt(self.conversion_rate) == 1.00) - ): - throw(_("Conversion rate cannot be 0 or 1")) + + if not self.conversion_rate: + throw(_("Conversion rate cannot be 0")) + + if self.currency == default_currency and flt(self.conversion_rate) != 1.00: + throw(_("Conversion rate must be 1.00 if document currency is same as company currency")) + + if self.currency != default_currency and flt(self.conversion_rate) == 1.00: + frappe.msgprint( + _("Conversion rate is 1.00, but document currency is different from company currency") + ) def check_finance_books(self, item, asset): if ( @@ -2517,6 +2796,72 @@ class AccountsController(TransactionBase): repost_ledger.insert() repost_ledger.submit() + def get_advance_payment_doctypes(self) -> list: + return frappe.get_hooks("advance_payment_doctypes") + + def make_advance_payment_ledger_for_journal(self): + advance_payment_doctypes = self.get_advance_payment_doctypes() + advance_doctype_references = [ + x for x in self.accounts if x.reference_type in advance_payment_doctypes + ] + + for x in advance_doctype_references: + # Looking for payments + dr_or_cr = ( + "credit_in_account_currency" + if x.account_type == "Receivable" + else "debit_in_account_currency" + ) + + amount = x.get(dr_or_cr) + if amount > 0: + doc = frappe.new_doc("Advance Payment Ledger Entry") + doc.company = self.company + doc.voucher_type = self.doctype + doc.voucher_no = self.name + doc.against_voucher_type = x.reference_type + doc.against_voucher_no = x.reference_name + doc.amount = amount if self.docstatus == 1 else -1 * amount + doc.event = "Submit" if self.docstatus == 1 else "Cancel" + doc.currency = x.account_currency + doc.flags.ignore_permissions = 1 + doc.save() + + def make_advance_payment_ledger_for_payment(self): + advance_payment_doctypes = self.get_advance_payment_doctypes() + advance_doctype_references = [ + x for x in self.references if x.reference_doctype in advance_payment_doctypes + ] + currency = ( + self.paid_from_account_currency + if self.payment_type == "Receive" + else self.paid_to_account_currency + ) + for x in advance_doctype_references: + doc = frappe.new_doc("Advance Payment Ledger Entry") + doc.company = self.company + doc.voucher_type = self.doctype + doc.voucher_no = self.name + doc.against_voucher_type = x.reference_doctype + doc.against_voucher_no = x.reference_name + doc.amount = x.allocated_amount if self.docstatus == 1 else -1 * x.allocated_amount + doc.currency = currency + doc.event = "Submit" if self.docstatus == 1 else "Cancel" + doc.flags.ignore_permissions = 1 + doc.save() + + def make_advance_payment_ledger_entries(self): + if self.docstatus != 0: + if self.doctype == "Journal Entry": + self.make_advance_payment_ledger_for_journal() + elif self.doctype == "Payment Entry": + self.make_advance_payment_ledger_for_payment() + + def set_transaction_currency_and_rate_in_gl_map(self, gl_entries): + for x in gl_entries: + x["transaction_currency"] = self.currency + x["transaction_exchange_rate"] = self.get("conversion_rate") or 1 + @frappe.whitelist() def get_tax_rate(account_head): @@ -2759,6 +3104,7 @@ def get_advance_payment_entries( party_account, order_doctype, order_list=None, + default_advance_account=None, include_unallocated=True, against_all_orders=False, limit=None, @@ -2772,6 +3118,7 @@ def get_advance_payment_entries( party_type, party, party_account, + default_advance_account, limit, condition, ) @@ -2782,6 +3129,7 @@ def get_advance_payment_entries( (payment_ref.allocated_amount).as_("amount"), (payment_ref.name).as_("reference_row"), (payment_ref.reference_name).as_("against_order"), + (payment_entry.book_advance_payments_in_separate_party_account), ) q = q.where(payment_ref.reference_doctype == order_doctype) @@ -2795,6 +3143,7 @@ def get_advance_payment_entries( party_type, party, party_account, + default_advance_account, limit, condition, ) @@ -2810,6 +3159,7 @@ def get_common_query( party_type, party, party_account, + default_advance_account, limit, condition, ): @@ -2824,6 +3174,7 @@ def get_common_query( (payment_entry.name).as_("reference_name"), payment_entry.posting_date, (payment_entry.remarks).as_("remarks"), + (payment_entry.book_advance_payments_in_separate_party_account), ) .where(payment_entry.payment_type == payment_type) .where(payment_entry.party_type == party_type) @@ -2831,14 +3182,22 @@ def get_common_query( .where(payment_entry.docstatus == 1) ) - if payment_type == "Receive": - q = q.select((payment_entry.paid_from_account_currency).as_("currency")) - q = q.select(payment_entry.paid_from) - q = q.where(payment_entry.paid_from.isin(party_account)) + field = "paid_from" if payment_type == "Receive" else "paid_to" + + q = q.select((payment_entry[f"{field}_account_currency"]).as_("currency")) + q = q.select(payment_entry[field]) + account_condition = payment_entry[field].isin(party_account) + if default_advance_account: + q = q.where( + account_condition + | ( + (payment_entry[field] == default_advance_account) + & (payment_entry.book_advance_payments_in_separate_party_account == 1) + ) + ) + else: - q = q.select((payment_entry.paid_to_account_currency).as_("currency")) - q = q.select(payment_entry.paid_to) - q = q.where(payment_entry.paid_to.isin(party_account)) + q = q.where(account_condition) if payment_type == "Receive": q = q.select((payment_entry.source_exchange_rate).as_("exchange_rate")) @@ -3032,6 +3391,7 @@ def set_child_tax_template_and_map(item, child_item, parent_doc): "posting_date": parent_doc.transaction_date, "tax_category": parent_doc.get("tax_category"), "company": parent_doc.get("company"), + "base_net_rate": item.get("base_net_rate"), } child_item.item_tax_template = _get_item_tax_template(args, item.taxes) @@ -3296,7 +3656,6 @@ def update_child_qty_rate(parent_doctype, trans_items, parent_doctype_name, chil items_added_or_removed = False # updated to true if any new item is added or removed any_conversion_factor_changed = False - sales_doctypes = ["Sales Order", "Sales Invoice", "Delivery Note", "Quotation"] parent = frappe.get_doc(parent_doctype, parent_doctype_name) check_doc_permissions(parent, "write") @@ -3407,30 +3766,29 @@ def update_child_qty_rate(parent_doctype, trans_items, parent_doctype_name, chil if d.get("schedule_date") and parent_doctype == "Purchase Order": child_item.schedule_date = d.get("schedule_date") + if d.get("bom_no") and parent_doctype == "Sales Order": + child_item.bom_no = d.get("bom_no") + if flt(child_item.price_list_rate): if flt(child_item.rate) > flt(child_item.price_list_rate): # if rate is greater than price_list_rate, set margin # or set discount child_item.discount_percentage = 0 - - if parent_doctype in sales_doctypes: - child_item.margin_type = "Amount" - child_item.margin_rate_or_amount = flt( - child_item.rate - child_item.price_list_rate, - child_item.precision("margin_rate_or_amount"), - ) - child_item.rate_with_margin = child_item.rate + child_item.margin_type = "Amount" + child_item.margin_rate_or_amount = flt( + child_item.rate - child_item.price_list_rate, + child_item.precision("margin_rate_or_amount"), + ) + child_item.rate_with_margin = child_item.rate else: child_item.discount_percentage = flt( (1 - flt(child_item.rate) / flt(child_item.price_list_rate)) * 100.0, child_item.precision("discount_percentage"), ) child_item.discount_amount = flt(child_item.price_list_rate) - flt(child_item.rate) - - if parent_doctype in sales_doctypes: - child_item.margin_type = "" - child_item.margin_rate_or_amount = 0 - child_item.rate_with_margin = 0 + child_item.margin_type = "" + child_item.margin_rate_or_amount = 0 + child_item.rate_with_margin = 0 child_item.flags.ignore_validate_update_after_submit = True if new_child_flag: @@ -3492,6 +3850,7 @@ def update_child_qty_rate(parent_doctype, trans_items, parent_doctype_name, chil ).format(frappe.bold(parent.name)) ) else: # Sales Order + parent.validate_for_duplicate_items() parent.validate_warehouse() parent.update_reserved_qty() parent.update_project() @@ -3505,6 +3864,9 @@ def update_child_qty_rate(parent_doctype, trans_items, parent_doctype_name, chil parent.update_billing_percentage() parent.set_status() + parent.validate_uom_is_integer("uom", "qty") + parent.validate_uom_is_integer("stock_uom", "stock_qty") + # Cancel and Recreate Stock Reservation Entries. if parent_doctype == "Sales Order": from erpnext.stock.doctype.stock_reservation_entry.stock_reservation_entry import ( diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py index 31b6f391ba4..c2a36ac36d0 100644 --- a/erpnext/controllers/buying_controller.py +++ b/erpnext/controllers/buying_controller.py @@ -9,6 +9,7 @@ from frappe.utils import cint, flt, getdate from frappe.utils.data import nowtime import erpnext +from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_dimensions from erpnext.accounts.doctype.budget.budget import validate_expense_against_budget from erpnext.accounts.party import get_party_details from erpnext.buying.utils import update_last_purchase_rate, validate_for_items @@ -332,7 +333,7 @@ class BuyingController(SubcontractingController): net_rate + item.item_tax_amount + flt(item.landed_cost_voucher_amount) - + flt(item.get("rate_difference_with_purchase_invoice")) + + flt(item.get("amount_difference_with_purchase_invoice")) ) / qty_in_stock_uom else: item.valuation_rate = 0.0 @@ -356,14 +357,14 @@ class BuyingController(SubcontractingController): if not self.is_internal_transfer(): return + self.set_sales_incoming_rate_for_internal_transfer() + allow_at_arms_length_price = frappe.get_cached_value( "Stock Settings", None, "allow_internal_transfer_at_arms_length_price" ) if allow_at_arms_length_price: return - self.set_sales_incoming_rate_for_internal_transfer() - for d in self.get("items"): d.discount_percentage = 0.0 d.discount_amount = 0.0 @@ -702,9 +703,11 @@ class BuyingController(SubcontractingController): if self.get("is_return"): return - if self.doctype in ["Purchase Order", "Purchase Receipt"] and not frappe.db.get_single_value( - "Buying Settings", "disable_last_purchase_rate" - ): + if self.doctype in [ + "Purchase Order", + "Purchase Receipt", + "Purchase Invoice", + ] and not frappe.db.get_single_value("Buying Settings", "disable_last_purchase_rate"): update_last_purchase_rate(self, is_submit=0) if self.doctype in ["Purchase Receipt", "Purchase Invoice"]: @@ -742,6 +745,7 @@ class BuyingController(SubcontractingController): def auto_make_assets(self, asset_items): items_data = get_asset_item_details(asset_items) messages = [] + accounting_dimensions = get_dimensions(with_cost_center_and_project=True) for d in self.items: if d.is_fixed_asset: @@ -753,11 +757,11 @@ class BuyingController(SubcontractingController): if item_data.get("asset_naming_series"): created_assets = [] if item_data.get("is_grouped_asset"): - asset = self.make_asset(d, is_grouped_asset=True) + asset = self.make_asset(d, accounting_dimensions, is_grouped_asset=True) created_assets.append(asset) else: for _qty in range(cint(d.qty)): - asset = self.make_asset(d) + asset = self.make_asset(d, accounting_dimensions) created_assets.append(asset) if len(created_assets) > 5: @@ -775,8 +779,10 @@ class BuyingController(SubcontractingController): is_plural = "s" if len(created_assets) != 1 else "" messages.append( - _("Asset{} {assets_link} created for {}").format( - is_plural, frappe.bold(d.item_code), assets_link=assets_link + _("Asset{is_plural} {assets_link} created for {item_code}").format( + is_plural=is_plural, + assets_link=assets_link, + item_code=frappe.bold(d.item_code), ) ) else: @@ -795,7 +801,7 @@ class BuyingController(SubcontractingController): for message in messages: frappe.msgprint(message, title="Success", indicator="green") - def make_asset(self, row, is_grouped_asset=False): + def make_asset(self, row, accounting_dimensions, is_grouped_asset=False): if not row.asset_location: frappe.throw(_("Row {0}: Enter location for the asset item {1}").format(row.idx, row.item_code)) @@ -826,6 +832,13 @@ class BuyingController(SubcontractingController): "purchase_invoice_item": row.name if self.doctype == "Purchase Invoice" else None, } ) + for dimension in accounting_dimensions[0]: + asset.update( + { + dimension["fieldname"]: self.get(dimension["fieldname"]) + or dimension.get("default_dimension") + } + ) asset.flags.ignore_validate = True asset.flags.ignore_mandatory = True diff --git a/erpnext/controllers/print_settings.py b/erpnext/controllers/print_settings.py index f99711631ff..f05ef67c308 100644 --- a/erpnext/controllers/print_settings.py +++ b/erpnext/controllers/print_settings.py @@ -11,7 +11,13 @@ def set_print_templates_for_item_table(doc, settings): "items": { "qty": "templates/print_formats/includes/item_table_qty.html", "serial_and_batch_bundle": "templates/print_formats/includes/serial_and_batch_bundle.html", - } + }, + "packed_items": { + "serial_and_batch_bundle": "templates/print_formats/includes/serial_and_batch_bundle.html", + }, + "supplied_items": { + "serial_and_batch_bundle": "templates/print_formats/includes/serial_and_batch_bundle.html", + }, } doc.flags.compact_item_fields = ["description", "qty", "rate", "amount"] diff --git a/erpnext/controllers/queries.py b/erpnext/controllers/queries.py index a07a00dd03e..670d46453f9 100644 --- a/erpnext/controllers/queries.py +++ b/erpnext/controllers/queries.py @@ -271,10 +271,14 @@ def get_project_name(doctype, txt, searchfield, start, page_len, filters): qb_filter_or_conditions = [] ifelse = CustomFunction("IF", ["condition", "then", "else"]) - if filters and filters.get("customer"): - qb_filter_and_conditions.append( - (proj.customer == filters.get("customer")) | proj.customer.isnull() | proj.customer == "" - ) + if filters: + if filters.get("customer"): + qb_filter_and_conditions.append( + (proj.customer == filters.get("customer")) | proj.customer.isnull() | proj.customer == "" + ) + + if filters.get("company"): + qb_filter_and_conditions.append(proj.company == filters.get("company")) qb_filter_and_conditions.append(proj.status.notin(["Completed", "Cancelled"])) @@ -366,7 +370,7 @@ def get_batch_no(doctype, txt, searchfield, start, page_len, filters): def get_empty_batches(filters, start, page_len, filtered_batches=None, txt=None): - query_filter = {"item": filters.get("item_code")} + query_filter = {"item": filters.get("item_code"), "disabled": 0} if txt: query_filter["name"] = ("like", f"%{txt}%") @@ -415,7 +419,6 @@ def get_batches_from_stock_ledger_entries(searchfields, txt, filters, start=0, p stock_ledger_entry.batch_no, Sum(stock_ledger_entry.actual_qty).as_("qty"), ) - .where((batch_table.expiry_date >= expiry_date) | (batch_table.expiry_date.isnull())) .where(stock_ledger_entry.is_cancelled == 0) .where( (stock_ledger_entry.item_code == filters.get("item_code")) @@ -428,6 +431,9 @@ def get_batches_from_stock_ledger_entries(searchfields, txt, filters, start=0, p .limit(page_len) ) + if not filters.get("include_expired_batches"): + query = query.where((batch_table.expiry_date >= expiry_date) | (batch_table.expiry_date.isnull())) + query = query.select( Concat("MFG-", batch_table.manufacturing_date).as_("manufacturing_date"), Concat("EXP-", batch_table.expiry_date).as_("expiry_date"), @@ -466,7 +472,6 @@ def get_batches_from_serial_and_batch_bundle(searchfields, txt, filters, start=0 bundle.batch_no, Sum(bundle.qty).as_("qty"), ) - .where((batch_table.expiry_date >= expiry_date) | (batch_table.expiry_date.isnull())) .where(stock_ledger_entry.is_cancelled == 0) .where( (stock_ledger_entry.item_code == filters.get("item_code")) @@ -479,6 +484,11 @@ def get_batches_from_serial_and_batch_bundle(searchfields, txt, filters, start=0 .limit(page_len) ) + if not filters.get("include_expired_batches"): + bundle_query = bundle_query.where( + (batch_table.expiry_date >= expiry_date) | (batch_table.expiry_date.isnull()) + ) + bundle_query = bundle_query.select( Concat("MFG-", batch_table.manufacturing_date), Concat("EXP-", batch_table.expiry_date), @@ -797,7 +807,27 @@ def get_tax_template(doctype, txt, searchfield, start, page_len, filters): item_group = item_group_doc.parent_item_group if not taxes: - return frappe.get_all("Item Tax Template", filters={"disabled": 0, "company": company}, as_list=True) + or_filters = [] + if txt: + search_fields = ["name"] + + tax_template_doc = frappe.get_meta("Item Tax Template") + + if title_field := tax_template_doc.title_field: + search_fields.append(title_field) + if tax_template_doc.search_fields: + search_fields.extend(tax_template_doc.get_search_fields()) + + for f in search_fields: + or_filters.append([doctype, f.strip(), "like", f"%{txt}%"]) + + return frappe.get_list( + "Item Tax Template", + filters={"disabled": 0, "company": company}, + or_filters=or_filters, + as_list=True, + ) + else: valid_from = filters.get("valid_from") valid_from = valid_from[1] if isinstance(valid_from, list) else valid_from @@ -807,10 +837,12 @@ def get_tax_template(doctype, txt, searchfield, start, page_len, filters): "posting_date": valid_from, "tax_category": filters.get("tax_category"), "company": company, + "base_net_rate": filters.get("base_net_rate"), } taxes = _get_item_tax_template(args, taxes, for_validate=True) - return [(d,) for d in set(taxes)] + txt = txt.lower() + return [(d,) for d in set(taxes) if not txt or txt in d.lower()] def get_fields(doctype, fields=None): @@ -866,3 +898,32 @@ def get_filtered_child_rows(doctype, txt, searchfield, start, page_len, filters) ) return query.run(as_dict=False) + + +@frappe.whitelist() +@frappe.validate_and_sanitize_search_inputs +def get_item_uom_query(doctype, txt, searchfield, start, page_len, filters): + if frappe.db.get_single_value("Stock Settings", "allow_uom_with_conversion_rate_defined_in_item"): + query_filters = {"parent": filters.get("item_code")} + + if txt: + query_filters["uom"] = ["like", f"%{txt}%"] + + return frappe.get_all( + "UOM Conversion Detail", + filters=query_filters, + fields=["uom", "conversion_factor"], + limit_start=start, + limit_page_length=page_len, + order_by="idx", + as_list=1, + ) + + return frappe.get_all( + "UOM", + filters={"name": ["like", f"%{txt}%"]}, + fields=["name"], + limit_start=start, + limit_page_length=page_len, + as_list=1, + ) diff --git a/erpnext/controllers/sales_and_purchase_return.py b/erpnext/controllers/sales_and_purchase_return.py index 3755506b6f5..74c5e34ecfa 100644 --- a/erpnext/controllers/sales_and_purchase_return.py +++ b/erpnext/controllers/sales_and_purchase_return.py @@ -24,6 +24,7 @@ def validate_return(doc): if doc.return_against: validate_return_against(doc) + validate_returned_items(doc) @@ -72,7 +73,7 @@ def validate_return_against(doc): def validate_returned_items(doc): valid_items = frappe._dict() - select_fields = "item_code, qty, stock_qty, rate, parenttype, conversion_factor" + select_fields = "item_code, qty, stock_qty, rate, parenttype, conversion_factor, name" if doc.doctype != "Purchase Invoice": select_fields += ",serial_no, batch_no" @@ -104,16 +105,27 @@ def validate_returned_items(doc): items_returned = False for d in doc.get("items"): - if d.item_code and (flt(d.qty) < 0 or flt(d.get("received_qty")) < 0): - if d.item_code not in valid_items: - frappe.throw( + key = d.item_code + raise_exception = False + if doc.doctype in ["Purchase Receipt", "Purchase Invoice", "Sales Invoice", "POS Invoice"]: + field = frappe.scrub(doc.doctype) + "_item" + if d.get(field): + key = (d.item_code, d.get(field)) + raise_exception = True + elif doc.doctype == "Delivery Note": + key = (d.item_code, d.get("dn_detail")) + + if d.item_code and (flt(d.qty) <= 0 or flt(d.get("received_qty")) <= 0): + if key not in valid_items: + frappe.msgprint( _("Row # {0}: Returned Item {1} does not exist in {2} {3}").format( d.idx, d.item_code, doc.doctype, doc.return_against - ) + ), + raise_exception=raise_exception, ) else: - ref = valid_items.get(d.item_code, frappe._dict()) - validate_quantity(doc, d, ref, valid_items, already_returned_items) + ref = valid_items.get(key, frappe._dict()) + validate_quantity(doc, key, d, ref, valid_items, already_returned_items) if ( ref.rate @@ -143,23 +155,33 @@ def validate_returned_items(doc): frappe.throw(_("Atleast one item should be entered with negative quantity in return document")) -def validate_quantity(doc, args, ref, valid_items, already_returned_items): +def validate_quantity(doc, key, args, ref, valid_items, already_returned_items): fields = ["stock_qty"] + if (doc.doctype == "Purchase Invoice" or doc.doctype == "Sales Invoice") and not doc.update_stock: + fields = ["qty"] + if doc.doctype in ["Purchase Receipt", "Purchase Invoice", "Subcontracting Receipt"]: if not args.get("return_qty_from_rejected_warehouse"): fields.extend(["received_qty", "rejected_qty"]) else: fields.extend(["received_qty"]) - already_returned_data = already_returned_items.get(args.item_code) or {} + already_returned_data = already_returned_items.get(key) or {} company_currency = erpnext.get_company_currency(doc.company) - stock_qty_precision = get_field_precision( - frappe.get_meta(doc.doctype + " Item").get_field("stock_qty"), company_currency + field_precision = get_field_precision( + frappe.get_meta(doc.doctype + " Item").get_field( + "stock_qty" if doc.get("update_stock", "") else "qty" + ), + company_currency, ) for column in fields: - returned_qty = flt(already_returned_data.get(column, 0)) if len(already_returned_data) > 0 else 0 + returned_qty = ( + flt(already_returned_data.get(column, 0), field_precision) + if len(already_returned_data) > 0 + else 0 + ) if column == "stock_qty" and not args.get("return_qty_from_rejected_warehouse"): reference_qty = ref.get(column) @@ -171,17 +193,17 @@ def validate_quantity(doc, args, ref, valid_items, already_returned_items): reference_qty = ref.get(column) * ref.get("conversion_factor", 1.0) current_stock_qty = args.get(column) * args.get("conversion_factor", 1.0) - max_returnable_qty = flt(reference_qty, stock_qty_precision) - returned_qty + max_returnable_qty = flt(flt(reference_qty, field_precision) - returned_qty, field_precision) label = column.replace("_", " ").title() if reference_qty: if flt(args.get(column)) > 0: frappe.throw(_("{0} must be negative in return document").format(label)) - elif returned_qty >= reference_qty and args.get(column): + elif returned_qty >= reference_qty and args.get(column) >= 0: frappe.throw( _("Item {0} has already been returned").format(args.item_code), StockOverReturnError ) - elif abs(flt(current_stock_qty, stock_qty_precision)) > max_returnable_qty: + elif abs(flt(current_stock_qty, field_precision)) > max_returnable_qty: frappe.throw( _("Row # {0}: Cannot return more than {1} for Item {2}").format( args.idx, max_returnable_qty, args.item_code @@ -193,8 +215,12 @@ def validate_quantity(doc, args, ref, valid_items, already_returned_items): def get_ref_item_dict(valid_items, ref_item_row): from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos + key = ref_item_row.item_code + if ref_item_row.get("name"): + key = (ref_item_row.item_code, ref_item_row.name) + valid_items.setdefault( - ref_item_row.item_code, + key, frappe._dict( { "qty": 0, @@ -208,7 +234,7 @@ def get_ref_item_dict(valid_items, ref_item_row): } ), ) - item_dict = valid_items[ref_item_row.item_code] + item_dict = valid_items[key] item_dict["qty"] += ref_item_row.qty item_dict["stock_qty"] += ref_item_row.get("stock_qty", 0) if ref_item_row.get("rate", 0) > item_dict["rate"]: @@ -233,15 +259,20 @@ def get_already_returned_items(doc): column += """, sum(abs(child.rejected_qty) * child.conversion_factor) as rejected_qty, sum(abs(child.received_qty) * child.conversion_factor) as received_qty""" + field = ( + frappe.scrub(doc.doctype) + "_item" + if doc.doctype in ["Purchase Invoice", "Purchase Receipt", "Sales Invoice", "POS Invoice"] + else "dn_detail" + ) data = frappe.db.sql( f""" - select {column} + select {column}, child.{field} from `tab{doc.doctype} Item` child, `tab{doc.doctype}` par where child.parent = par.name and par.docstatus = 1 and par.is_return = 1 and par.return_against = %s - group by item_code + group by item_code, {field} """, doc.return_against, as_dict=1, @@ -251,7 +282,7 @@ def get_already_returned_items(doc): for d in data: items.setdefault( - d.item_code, + (d.item_code, d.get(field)), frappe._dict( { "qty": d.get("qty"), @@ -335,6 +366,9 @@ def make_return_doc(doctype: str, source_name: str, target_doc=None, return_agai doc.select_print_heading = frappe.get_cached_value("Print Heading", _("Debit Note")) if source.tax_withholding_category: doc.set_onload("supplier_tds", source.tax_withholding_category) + elif doctype == "Delivery Note": + # manual additions to the return should hit the return warehous, too + doc.set_warehouse = default_warehouse_for_sales_return for tax in doc.get("taxes") or []: if tax.charge_type == "Actual": @@ -343,6 +377,8 @@ def make_return_doc(doctype: str, source_name: str, target_doc=None, return_agai if doc.get("is_return"): if doc.doctype == "Sales Invoice" or doc.doctype == "POS Invoice": doc.consolidated_invoice = "" + # no copy enabled for party_account_currency + doc.party_account_currency = source.party_account_currency doc.set("payments", []) doc.update_billed_amount_in_delivery_note = True for data in source.payments: @@ -581,6 +617,10 @@ def make_return_doc(doctype: str, source_name: str, target_doc=None, return_agai if default_warehouse_for_sales_return: target_doc.warehouse = default_warehouse_for_sales_return + if not source_doc.use_serial_batch_fields and source_doc.serial_and_batch_bundle: + target_doc.serial_no = None + target_doc.batch_no = None + if ( (source_doc.serial_no or source_doc.batch_no) and not source_doc.serial_and_batch_bundle @@ -733,6 +773,7 @@ def get_return_against_item_fields(voucher_type): "Delivery Note": "dn_detail", "Sales Invoice": "sales_invoice_item", "Subcontracting Receipt": "subcontracting_receipt_item", + "POS Invoice": "sales_invoice_item", } return return_against_item_fields[voucher_type] @@ -883,6 +924,7 @@ def get_serial_batches_based_on_bundle(field, _bundle_ids): "`tabSerial and Batch Entry`.`serial_no`", "`tabSerial and Batch Entry`.`batch_no`", "`tabSerial and Batch Entry`.`qty`", + "`tabSerial and Batch Entry`.`incoming_rate`", "`tabSerial and Batch Bundle`.`voucher_detail_no`", "`tabSerial and Batch Bundle`.`voucher_type`", "`tabSerial and Batch Bundle`.`voucher_no`", @@ -904,15 +946,23 @@ def get_serial_batches_based_on_bundle(field, _bundle_ids): if key not in available_dict: available_dict[key] = frappe._dict( - {"qty": 0.0, "serial_nos": defaultdict(float), "batches": defaultdict(float)} + { + "qty": 0.0, + "serial_nos": defaultdict(float), + "batches": defaultdict(float), + "serial_nos_valuation": defaultdict(float), + "batches_valuation": defaultdict(float), + } ) available_dict[key]["qty"] += row.qty if row.serial_no: available_dict[key]["serial_nos"][row.serial_no] += row.qty + available_dict[key]["serial_nos_valuation"][row.serial_no] = row.incoming_rate elif row.batch_no: available_dict[key]["batches"][row.batch_no] += row.qty + available_dict[key]["batches_valuation"][row.batch_no] = row.incoming_rate return available_dict @@ -948,12 +998,13 @@ def get_serial_and_batch_bundle(field, doctype, reference_ids, is_rejected=False ) ) else: - fields = [ - "serial_and_batch_bundle", - ] + fields = ["serial_and_batch_bundle"] if is_rejected: - fields.extend(["rejected_serial_and_batch_bundle", "return_qty_from_rejected_warehouse"]) + fields.append("rejected_serial_and_batch_bundle") + + if doctype == "Purchase Receipt Item": + fields.append("return_qty_from_rejected_warehouse") del filters["rejected_serial_and_batch_bundle"] data = frappe.get_all( @@ -979,7 +1030,7 @@ def get_serial_and_batch_bundle(field, doctype, reference_ids, is_rejected=False def filter_serial_batches(parent_doc, data, row, warehouse_field=None, qty_field=None): if not qty_field: - qty_field = "qty" + qty_field = "stock_qty" if not warehouse_field: warehouse_field = "warehouse" @@ -987,7 +1038,14 @@ def filter_serial_batches(parent_doc, data, row, warehouse_field=None, qty_field warehouse = row.get(warehouse_field) qty = abs(row.get(qty_field)) - filterd_serial_batch = frappe._dict({"serial_nos": [], "batches": defaultdict(float)}) + filterd_serial_batch = frappe._dict( + { + "serial_nos": [], + "batches": defaultdict(float), + "serial_nos_valuation": data.get("serial_nos_valuation"), + "batches_valuation": data.get("batches_valuation"), + } + ) if data.serial_nos: available_serial_nos = [] @@ -996,8 +1054,8 @@ def filter_serial_batches(parent_doc, data, row, warehouse_field=None, qty_field available_serial_nos.append(serial_no) if available_serial_nos: - if parent_doc.doctype in ["Purchase Invoice", "Purchase Reecipt"]: - available_serial_nos = get_available_serial_nos(available_serial_nos) + if parent_doc.doctype in ["Purchase Invoice", "Purchase Receipt"]: + available_serial_nos = get_available_serial_nos(available_serial_nos, warehouse) if len(available_serial_nos) > qty: filterd_serial_batch["serial_nos"] = sorted(available_serial_nos[0 : cint(qty)]) @@ -1012,7 +1070,7 @@ def filter_serial_batches(parent_doc, data, row, warehouse_field=None, qty_field if batch_qty <= 0: continue - if parent_doc.doctype in ["Purchase Invoice", "Purchase Reecipt"]: + if parent_doc.doctype in ["Purchase Invoice", "Purchase Receipt"]: batch_qty = get_available_batch_qty( parent_doc, batch_no, @@ -1061,7 +1119,7 @@ def make_serial_batch_bundle_for_return(data, child_doc, parent_doc, warehouse_f warehouse_field = "warehouse" if not qty_field: - qty_field = "qty" + qty_field = "stock_qty" warehouse = child_doc.get(warehouse_field) if parent_doc.get("is_internal_customer"): @@ -1082,6 +1140,8 @@ def make_serial_batch_bundle_for_return(data, child_doc, parent_doc, warehouse_f "warehouse": warehouse, "serial_nos": data.get("serial_nos"), "batches": data.get("batches"), + "serial_nos_valuation": data.get("serial_nos_valuation"), + "batches_valuation": data.get("batches_valuation"), "posting_date": parent_doc.posting_date, "posting_time": parent_doc.posting_time, "voucher_type": parent_doc.doctype, @@ -1100,3 +1160,9 @@ def get_available_serial_nos(serial_nos, warehouse): return frappe.get_all( "Serial No", filters={"warehouse": warehouse, "name": ("in", serial_nos)}, pluck="name" ) + + +@frappe.whitelist() +def get_payment_data(invoice): + payment = frappe.db.get_all("Sales Invoice Payment", {"parent": invoice}, ["mode_of_payment", "amount"]) + return payment diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py index 766e67be0f6..15526f85e34 100644 --- a/erpnext/controllers/selling_controller.py +++ b/erpnext/controllers/selling_controller.py @@ -21,9 +21,15 @@ class SellingController(StockController): def onload(self): super().onload() - if self.doctype in ("Sales Order", "Delivery Note", "Sales Invoice"): + if self.doctype in ("Sales Order", "Delivery Note", "Sales Invoice", "Quotation"): for item in self.get("items") + (self.get("packed_items") or []): - item.update(get_bin_details(item.item_code, item.warehouse, include_child_warehouses=True)) + company = self.company + + item.update( + get_bin_details( + item.item_code, item.warehouse, company=company, include_child_warehouses=True + ) + ) def validate(self): super().validate() @@ -68,19 +74,13 @@ class SellingController(StockController): if customer: from erpnext.accounts.party import _get_party_details - fetch_payment_terms_template = False - if self.get("__islocal") or self.company != frappe.db.get_value( - self.doctype, self.name, "company" - ): - fetch_payment_terms_template = True - party_details = _get_party_details( customer, ignore_permissions=self.flags.ignore_permissions, doctype=self.doctype, company=self.company, posting_date=self.get("posting_date"), - fetch_payment_terms_template=fetch_payment_terms_template, + fetch_payment_terms_template=self.has_value_changed("company"), party_address=self.customer_address, shipping_address=self.shipping_address_name, company_address=self.get("company_address"), @@ -167,6 +167,9 @@ class SellingController(StockController): total = 0.0 sales_team = self.get("sales_team") + + self.validate_sales_team(sales_team) + for sales_person in sales_team: self.round_floats_in(sales_person) @@ -186,6 +189,20 @@ class SellingController(StockController): if sales_team and total != 100.0: throw(_("Total allocated percentage for sales team should be 100")) + def validate_sales_team(self, sales_team): + sales_persons = [d.sales_person for d in sales_team] + + if not sales_persons: + return + + sales_person_status = frappe.db.get_all( + "Sales Person", filters={"name": ["in", sales_persons]}, fields=["name", "enabled"] + ) + + for row in sales_person_status: + if not row.enabled: + frappe.throw(_("Sales Person {0} is disabled.").format(row.name)) + def validate_max_discount(self): for d in self.get("items"): if d.item_code: @@ -316,7 +333,7 @@ class SellingController(StockController): "batch_no": p.batch_no if self.docstatus == 2 else None, "uom": p.uom, "serial_and_batch_bundle": p.serial_and_batch_bundle - or get_serial_and_batch_bundle(p, self), + or get_serial_and_batch_bundle(p, self, d), "name": d.name, "target_warehouse": p.target_warehouse, "company": self.company, @@ -358,12 +375,32 @@ class SellingController(StockController): return il def has_product_bundle(self, item_code): - product_bundle = frappe.qb.DocType("Product Bundle") - return ( - frappe.qb.from_(product_bundle) - .select(product_bundle.name) - .where((product_bundle.new_item_code == item_code) & (product_bundle.disabled == 0)) - ).run() + product_bundle_items = getattr(self, "_product_bundle_items", None) + if product_bundle_items is None: + self._product_bundle_items = product_bundle_items = {} + + if item_code not in product_bundle_items: + self._fetch_product_bundle_items(item_code) + + return product_bundle_items[item_code] + + def _fetch_product_bundle_items(self, item_code): + product_bundle_items = self._product_bundle_items + items_to_fetch = {row.item_code for row in self.items if row.item_code not in product_bundle_items} + # fetch for requisite item_code even if it is not in items + items_to_fetch.add(item_code) + + items_with_product_bundle = { + row.new_item_code + for row in frappe.get_all( + "Product Bundle", + filters={"new_item_code": ("in", items_to_fetch), "disabled": 0}, + fields="new_item_code", + ) + } + + for item_code in items_to_fetch: + product_bundle_items[item_code] = item_code in items_with_product_bundle def get_already_delivered_qty(self, current_docname, so, so_detail): delivered_via_dn = frappe.db.sql( @@ -473,6 +510,16 @@ class SellingController(StockController): raise_error_if_no_rate=False, ) + if ( + not d.incoming_rate + and self.get("return_against") + and self.get("is_return") + and get_valuation_method(d.item_code) == "Moving Average" + ): + d.incoming_rate = get_rate_for_return( + self.doctype, self.name, d.item_code, self.return_against, item_row=d + ) + # For internal transfers use incoming rate as the valuation rate if self.is_internal_transfer(): if self.doctype == "Delivery Note" or self.get("update_stock"): @@ -511,7 +558,7 @@ class SellingController(StockController): self.doctype, self.name, d.item_code, self.return_against, item_row=d ) - def update_stock_ledger(self): + def update_stock_ledger(self, allow_negative_stock=False): self.update_reserved_qty() sl_entries = [] @@ -541,7 +588,7 @@ class SellingController(StockController): ): sl_entries.append(self.get_sle_for_source_warehouse(d)) - self.make_sl_entries(sl_entries) + self.make_sl_entries(sl_entries, allow_negative_stock=allow_negative_stock) def get_sle_for_source_warehouse(self, item_row): serial_and_batch_bundle = ( @@ -549,12 +596,13 @@ class SellingController(StockController): if not self.is_internal_transfer() or self.docstatus == 1 else None ) - if serial_and_batch_bundle and self.is_internal_transfer() and self.is_return: - if self.docstatus == 1: + + if self.is_internal_transfer(): + if serial_and_batch_bundle and self.docstatus == 1 and self.is_return: serial_and_batch_bundle = self.make_package_for_transfer( serial_and_batch_bundle, item_row.warehouse, type_of_transaction="Inward" ) - else: + elif not serial_and_batch_bundle: serial_and_batch_bundle = frappe.db.get_value( "Stock Ledger Entry", {"voucher_detail_no": item_row.name, "warehouse": item_row.warehouse}, @@ -640,7 +688,7 @@ class SellingController(StockController): if self.doctype in ["Sales Order", "Quotation"]: for item in self.items: item.gross_profit = flt( - ((item.base_rate - flt(item.valuation_rate)) * item.stock_qty), + ((flt(item.stock_uom_rate) - flt(item.valuation_rate)) * item.stock_qty), self.precision("amount", item), ) @@ -667,6 +715,16 @@ class SellingController(StockController): if self.doctype == "POS Invoice": return + items = [item.item_code for item in self.get("items")] + item_stock_map = frappe._dict( + frappe.get_all( + "Item", + filters={"item_code": ["in", items]}, + fields=["item_code", "is_stock_item"], + as_list=True, + ) + ) + for d in self.get("items"): if self.doctype == "Sales Invoice": stock_items = [ @@ -700,7 +758,7 @@ class SellingController(StockController): frappe.bold(_("Allow Item to Be Added Multiple Times in a Transaction")), get_link_to_form("Selling Settings", "Selling Settings"), ) - if frappe.db.get_value("Item", d.item_code, "is_stock_item") == 1: + if item_stock_map.get(d.item_code): if stock_items in check_list: frappe.throw(duplicate_items_msg) else: @@ -734,6 +792,154 @@ class SellingController(StockController): validate_item_type(self, "is_sales_item", "sales") + def update_stock_reservation_entries(self) -> None: + """Updates Delivered Qty in Stock Reservation Entries.""" + + if not frappe.db.get_single_value("Stock Settings", "enable_stock_reservation"): + return + + # Don't update Delivered Qty on Return. + if self.is_return: + return + + so_field = "sales_order" if self.doctype == "Sales Invoice" else "against_sales_order" + + if self._action == "submit": + for item in self.get("items"): + # Skip if `Sales Order` or `Sales Order Item` reference is not set. + if not item.get(so_field) or not item.so_detail: + continue + + sre_list = frappe.db.get_all( + "Stock Reservation Entry", + { + "docstatus": 1, + "voucher_type": "Sales Order", + "voucher_no": item.get(so_field), + "voucher_detail_no": item.so_detail, + "warehouse": item.warehouse, + "status": ["not in", ["Delivered", "Cancelled"]], + }, + order_by="creation", + ) + + # Skip if no Stock Reservation Entries. + if not sre_list: + continue + + qty_to_deliver = item.stock_qty + for sre in sre_list: + if qty_to_deliver <= 0: + break + + sre_doc = frappe.get_doc("Stock Reservation Entry", sre) + + qty_can_be_deliver = 0 + if sre_doc.reservation_based_on == "Serial and Batch" and item.serial_and_batch_bundle: + sbb = frappe.get_doc("Serial and Batch Bundle", item.serial_and_batch_bundle) + if sre_doc.has_serial_no: + delivered_serial_nos = [d.serial_no for d in sbb.entries] + for entry in sre_doc.sb_entries: + if entry.serial_no in delivered_serial_nos: + entry.delivered_qty = 1 # Qty will always be 0 or 1 for Serial No. + entry.db_update() + qty_can_be_deliver += 1 + delivered_serial_nos.remove(entry.serial_no) + else: + delivered_batch_qty = {d.batch_no: -1 * d.qty for d in sbb.entries} + for entry in sre_doc.sb_entries: + if entry.batch_no in delivered_batch_qty: + delivered_qty = min( + (entry.qty - entry.delivered_qty), delivered_batch_qty[entry.batch_no] + ) + entry.delivered_qty += delivered_qty + entry.db_update() + qty_can_be_deliver += delivered_qty + delivered_batch_qty[entry.batch_no] -= delivered_qty + else: + # `Delivered Qty` should be less than or equal to `Reserved Qty`. + qty_can_be_deliver = min( + (sre_doc.reserved_qty - sre_doc.delivered_qty), qty_to_deliver + ) + + sre_doc.delivered_qty += qty_can_be_deliver + sre_doc.db_update() + + # Update Stock Reservation Entry `Status` based on `Delivered Qty`. + sre_doc.update_status() + + # Update Reserved Stock in Bin. + sre_doc.update_reserved_stock_in_bin() + + qty_to_deliver -= qty_can_be_deliver + + if self._action == "cancel": + for item in self.get("items"): + # Skip if `Sales Order` or `Sales Order Item` reference is not set. + if not item.get(so_field) or not item.so_detail: + continue + + sre_list = frappe.db.get_all( + "Stock Reservation Entry", + { + "docstatus": 1, + "voucher_type": "Sales Order", + "voucher_no": item.get(so_field), + "voucher_detail_no": item.so_detail, + "warehouse": item.warehouse, + "status": ["in", ["Partially Delivered", "Delivered"]], + }, + order_by="creation", + ) + + # Skip if no Stock Reservation Entries. + if not sre_list: + continue + + qty_to_undelivered = item.stock_qty + for sre in sre_list: + if qty_to_undelivered <= 0: + break + + sre_doc = frappe.get_doc("Stock Reservation Entry", sre) + + qty_can_be_undelivered = 0 + if sre_doc.reservation_based_on == "Serial and Batch" and item.serial_and_batch_bundle: + sbb = frappe.get_doc("Serial and Batch Bundle", item.serial_and_batch_bundle) + if sre_doc.has_serial_no: + serial_nos_to_undelivered = [d.serial_no for d in sbb.entries] + for entry in sre_doc.sb_entries: + if entry.serial_no in serial_nos_to_undelivered: + entry.delivered_qty = 0 # Qty will always be 0 or 1 for Serial No. + entry.db_update() + qty_can_be_undelivered += 1 + serial_nos_to_undelivered.remove(entry.serial_no) + else: + batch_qty_to_undelivered = {d.batch_no: -1 * d.qty for d in sbb.entries} + for entry in sre_doc.sb_entries: + if entry.batch_no in batch_qty_to_undelivered: + undelivered_qty = min( + entry.delivered_qty, batch_qty_to_undelivered[entry.batch_no] + ) + entry.delivered_qty -= undelivered_qty + entry.db_update() + qty_can_be_undelivered += undelivered_qty + batch_qty_to_undelivered[entry.batch_no] -= undelivered_qty + else: + # `Qty to Undelivered` should be less than or equal to `Delivered Qty`. + qty_can_be_undelivered = min(sre_doc.delivered_qty, qty_to_undelivered) + + sre_doc.delivered_qty -= qty_can_be_undelivered + sre_doc.db_update() + + # Update Stock Reservation Entry `Status` based on `Delivered Qty`. + sre_doc.update_status() + + # Update Reserved Stock in Bin. + sre_doc.update_reserved_stock_in_bin() + + qty_to_undelivered -= qty_can_be_undelivered + def set_default_income_account_for_item(obj): for d in obj.get("items"): @@ -742,7 +948,7 @@ def set_default_income_account_for_item(obj): set_item_default(d.item_code, obj.company, "income_account", d.income_account) -def get_serial_and_batch_bundle(child, parent): +def get_serial_and_batch_bundle(child, parent, delivery_note_child=None): from erpnext.stock.serial_batch_bundle import SerialBatchCreation if child.get("use_serial_batch_fields"): @@ -762,7 +968,7 @@ def get_serial_and_batch_bundle(child, parent): "warehouse": child.warehouse, "voucher_type": parent.doctype, "voucher_no": parent.name if parent.docstatus < 2 else None, - "voucher_detail_no": child.name, + "voucher_detail_no": delivery_note_child.name if delivery_note_child else child.name, "posting_date": parent.posting_date, "posting_time": parent.posting_time, "qty": child.qty, diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py index e8aa6254d34..e1e4c4ce8f2 100644 --- a/erpnext/controllers/status_updater.py +++ b/erpnext/controllers/status_updater.py @@ -5,7 +5,7 @@ import frappe from frappe import _ from frappe.model.document import Document -from frappe.utils import comma_or, flt, get_link_to_form, getdate, now, nowdate +from frappe.utils import comma_or, flt, get_link_to_form, getdate, now, nowdate, safe_div class OverAllowanceError(frappe.ValidationError): @@ -126,9 +126,13 @@ status_map = { "Partially Received", "eval:self.status != 'Stopped' and self.per_received > 0 and self.per_received < 100 and self.docstatus == 1 and self.material_request_type == 'Purchase'", ], + [ + "Partially Received", + "eval:self.status != 'Stopped' and self.per_ordered < 100 and self.per_ordered > 0 and self.docstatus == 1 and self.material_request_type == 'Material Transfer'", + ], [ "Partially Ordered", - "eval:self.status != 'Stopped' and self.per_ordered < 100 and self.per_ordered > 0 and self.docstatus == 1", + "eval:self.status != 'Stopped' and self.per_ordered < 100 and self.per_ordered > 0 and self.docstatus == 1 and self.material_request_type != 'Material Transfer'", ], [ "Manufactured", @@ -539,7 +543,7 @@ class StatusUpdater(Document): )[0][0] ) - per_billed = (min(ref_doc_qty, billed_qty) / ref_doc_qty) * 100 + per_billed = safe_div(min(ref_doc_qty, billed_qty), ref_doc_qty) * 100 ref_doc = frappe.get_doc(ref_dt, ref_dn) diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py index 1620fa3bfff..10799744d41 100644 --- a/erpnext/controllers/stock_controller.py +++ b/erpnext/controllers/stock_controller.py @@ -63,6 +63,33 @@ class StockController(AccountsController): self.set_rate_of_stock_uom() self.validate_internal_transfer() self.validate_putaway_capacity() + self.reset_conversion_factor() + + def reset_conversion_factor(self): + for row in self.get("items"): + if row.uom != row.stock_uom: + continue + + if row.conversion_factor != 1.0: + row.conversion_factor = 1.0 + frappe.msgprint( + _( + "Conversion factor for item {0} has been reset to 1.0 as the uom {1} is same as stock uom {2}." + ).format(bold(row.item_code), bold(row.uom), bold(row.stock_uom)), + alert=True, + ) + + def validate_items_exist(self): + if not self.get("items"): + return + + items = [d.item_code for d in self.get("items")] + + exists_items = frappe.get_all("Item", filters={"name": ("in", items)}, pluck="name") + non_exists_items = set(items) - set(exists_items) + + if non_exists_items: + frappe.throw(_("Items {0} do not exist in the Item master.").format(", ".join(non_exists_items))) def validate_duplicate_serial_and_batch_bundle(self, table_name): if not self.get(table_name): @@ -129,7 +156,7 @@ class StockController(AccountsController): from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos is_material_issue = False - if self.doctype == "Stock Entry" and self.purpose == "Material Issue": + if self.doctype == "Stock Entry" and self.purpose in ["Material Issue", "Material Transfer"]: is_material_issue = True for d in self.get("items"): @@ -189,6 +216,10 @@ class StockController(AccountsController): if self.doctype == "Asset Capitalization": table_name = "stock_items" + parent_details = frappe._dict() + if table_name == "packed_items": + parent_details = self.get_parent_details_for_packed_items() + for row in self.get(table_name): if row.serial_and_batch_bundle and (row.serial_no or row.batch_no): self.validate_serial_nos_and_batches_with_bundle(row) @@ -219,13 +250,20 @@ class StockController(AccountsController): } if row.get("qty") or row.get("consumed_qty") or row.get("stock_qty"): - self.update_bundle_details(bundle_details, table_name, row) + self.update_bundle_details(bundle_details, table_name, row, parent_details=parent_details) self.create_serial_batch_bundle(bundle_details, row) if row.get("rejected_qty"): self.update_bundle_details(bundle_details, table_name, row, is_rejected=True) self.create_serial_batch_bundle(bundle_details, row) + def get_parent_details_for_packed_items(self): + parent_details = frappe._dict() + for row in self.get("items"): + parent_details[row.name] = row + + return parent_details + def make_bundle_for_sales_purchase_return(self, table_name=None): if not self.get("is_return"): return @@ -307,6 +345,11 @@ class StockController(AccountsController): } ) + if self.doctype in ["Sales Invoice", "Delivery Note"]: + row.db_set( + "incoming_rate", frappe.db.get_value("Serial and Batch Bundle", bundle, "avg_rate") + ) + def get_reference_ids(self, table_name, qty_field=None, bundle_field=None) -> tuple[str, list[str]]: field = { "Sales Invoice": "sales_invoice_item", @@ -345,6 +388,9 @@ class StockController(AccountsController): @frappe.request_cache def is_serial_batch_item(self, item_code) -> bool: + if not frappe.db.exists("Item", item_code): + frappe.throw(_("Item {0} does not exist.").format(bold(item_code))) + item_details = frappe.db.get_value("Item", item_code, ["has_serial_no", "has_batch_no"], as_dict=1) if item_details.has_serial_no or item_details.has_batch_no: @@ -352,7 +398,7 @@ class StockController(AccountsController): return False - def update_bundle_details(self, bundle_details, table_name, row, is_rejected=False): + def update_bundle_details(self, bundle_details, table_name, row, is_rejected=False, parent_details=None): from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos # Since qty field is different for different doctypes @@ -394,6 +440,11 @@ class StockController(AccountsController): warehouse = row.get("target_warehouse") or row.get("warehouse") type_of_transaction = "Outward" + if table_name == "packed_items": + if not warehouse: + warehouse = parent_details[row.parent_detail_docname].warehouse + bundle_details["voucher_detail_no"] = parent_details[row.parent_detail_docname].name + bundle_details.update( { "qty": qty, @@ -495,7 +546,7 @@ class StockController(AccountsController): "account": warehouse_account[sle.warehouse]["account"], "against": expense_account, "cost_center": item_row.cost_center, - "project": item_row.project or self.get("project"), + "project": sle.get("project") or item_row.project or self.get("project"), "remarks": self.get("remarks") or _("Accounting Entry for Stock"), "debit": flt(sle.stock_value_difference, precision), "is_opening": item_row.get("is_opening") @@ -515,7 +566,9 @@ class StockController(AccountsController): "cost_center": item_row.cost_center, "remarks": self.get("remarks") or _("Accounting Entry for Stock"), "debit": -1 * flt(sle.stock_value_difference, precision), - "project": item_row.get("project") or self.get("project"), + "project": sle.get("project") + or item_row.get("project") + or self.get("project"), "is_opening": item_row.get("is_opening") or self.get("is_opening") or "No", @@ -643,23 +696,34 @@ class StockController(AccountsController): def get_stock_ledger_details(self): stock_ledger = {} - stock_ledger_entries = frappe.db.sql( - """ - select - name, warehouse, stock_value_difference, valuation_rate, - voucher_detail_no, item_code, posting_date, posting_time, - actual_qty, qty_after_transaction - from - `tabStock Ledger Entry` - where - voucher_type=%s and voucher_no=%s and is_cancelled = 0 - """, - (self.doctype, self.name), - as_dict=True, - ) + + table = frappe.qb.DocType("Stock Ledger Entry") + + stock_ledger_entries = ( + frappe.qb.from_(table) + .select( + table.name, + table.warehouse, + table.stock_value_difference, + table.valuation_rate, + table.voucher_detail_no, + table.item_code, + table.posting_date, + table.posting_time, + table.actual_qty, + table.qty_after_transaction, + table.project, + ) + .where( + (table.voucher_type == self.doctype) + & (table.voucher_no == self.name) + & (table.is_cancelled == 0) + ) + ).run(as_dict=True) for sle in stock_ledger_entries: stock_ledger.setdefault(sle.voucher_detail_no, []).append(sle) + return stock_ledger def check_expense_account(self, item): @@ -710,7 +774,7 @@ class StockController(AccountsController): if row.get("batch_no"): update_values["batch_no"] = None - if row.serial_and_batch_bundle: + if row.get("serial_and_batch_bundle"): update_values["serial_and_batch_bundle"] = None frappe.db.set_value( "Serial and Batch Bundle", row.serial_and_batch_bundle, {"is_cancelled": 1} @@ -804,6 +868,15 @@ class StockController(AccountsController): if not dimension: continue + if ( + self.doctype in ["Purchase Invoice", "Purchase Receipt"] + and row.get("rejected_warehouse") + and sl_dict.get("warehouse") == row.get("rejected_warehouse") + ): + fieldname = f"rejected_{dimension.source_fieldname}" + sl_dict[dimension.target_fieldname] = row.get(fieldname) + continue + if self.doctype in [ "Purchase Invoice", "Purchase Receipt", @@ -864,9 +937,11 @@ class StockController(AccountsController): row.db_set(dimension.source_fieldname, sl_dict[dimension.target_fieldname]) def make_sl_entries(self, sl_entries, allow_negative_stock=False, via_landed_cost_voucher=False): + from erpnext.stock.serial_batch_bundle import update_batch_qty from erpnext.stock.stock_ledger import make_sl_entries make_sl_entries(sl_entries, allow_negative_stock, via_landed_cost_voucher) + update_batch_qty(self.doctype, self.name, via_landed_cost_voucher=via_landed_cost_voucher) def make_gl_entries_on_cancel(self): cancel_exchange_gain_loss_journal(frappe._dict(doctype=self.doctype, name=self.name)) @@ -955,6 +1030,9 @@ class StockController(AccountsController): elif self.doctype == "Stock Entry" and row.t_warehouse: qi_required = True # inward stock needs inspection + if row.get("is_scrap_item"): + continue + if qi_required: # validate row only if inspection is required on item level self.validate_qi_presence(row) if self.docstatus == 1: @@ -964,11 +1042,13 @@ class StockController(AccountsController): def validate_qi_presence(self, row): """Check if QI is present on row level. Warn on save and stop on submit if missing.""" if not row.quality_inspection: - msg = f"Row #{row.idx}: Quality Inspection is required for Item {frappe.bold(row.item_code)}" + msg = _("Row #{0}: Quality Inspection is required for Item {1}").format( + row.idx, frappe.bold(row.item_code) + ) if self.docstatus == 1: - frappe.throw(_(msg), title=_("Inspection Required"), exc=QualityInspectionRequiredError) + frappe.throw(msg, title=_("Inspection Required"), exc=QualityInspectionRequiredError) else: - frappe.msgprint(_(msg), title=_("Inspection Required"), indicator="blue") + frappe.msgprint(msg, title=_("Inspection Required"), indicator="blue") def validate_qi_submission(self, row): """Check if QI is submitted on row level, during submission""" @@ -977,11 +1057,13 @@ class StockController(AccountsController): if not qa_docstatus == 1: link = frappe.utils.get_link_to_form("Quality Inspection", row.quality_inspection) - msg = f"Row #{row.idx}: Quality Inspection {link} is not submitted for the item: {row.item_code}" + msg = _("Row #{0}: Quality Inspection {1} is not submitted for the item: {2}").format( + row.idx, link, row.item_code + ) if action == "Stop": - frappe.throw(_(msg), title=_("Inspection Submission"), exc=QualityInspectionNotSubmittedError) + frappe.throw(msg, title=_("Inspection Submission"), exc=QualityInspectionNotSubmittedError) else: - frappe.msgprint(_(msg), alert=True, indicator="orange") + frappe.msgprint(msg, alert=True, indicator="orange") def validate_qi_rejection(self, row): """Check if QI is rejected on row level, during submission""" @@ -990,11 +1072,13 @@ class StockController(AccountsController): if qa_status == "Rejected": link = frappe.utils.get_link_to_form("Quality Inspection", row.quality_inspection) - msg = f"Row #{row.idx}: Quality Inspection {link} was rejected for item {row.item_code}" + msg = _("Row #{0}: Quality Inspection {1} was rejected for item {2}").format( + row.idx, link, row.item_code + ) if action == "Stop": - frappe.throw(_(msg), title=_("Inspection Rejected"), exc=QualityInspectionRejectedError) + frappe.throw(msg, title=_("Inspection Rejected"), exc=QualityInspectionRejectedError) else: - frappe.msgprint(_(msg), alert=True, indicator="orange") + frappe.msgprint(msg, alert=True, indicator="orange") def update_blanket_order(self): blanket_orders = list(set([d.blanket_order for d in self.items if d.blanket_order])) @@ -1150,7 +1234,7 @@ class StockController(AccountsController): child_tab.item_code, child_tab.qty, ) - .where(parent_tab.docstatus < 2) + .where(parent_tab.docstatus == 1) ) if self.doctype == "Purchase Invoice": @@ -1480,6 +1564,28 @@ def repost_required_for_queue(doc: StockController) -> bool: return False +@frappe.whitelist() +def check_item_quality_inspection(doctype, items): + if isinstance(items, str): + items = json.loads(items) + + inspection_fieldname_map = { + "Purchase Receipt": "inspection_required_before_purchase", + "Purchase Invoice": "inspection_required_before_purchase", + "Subcontracting Receipt": "inspection_required_before_purchase", + "Sales Invoice": "inspection_required_before_delivery", + "Delivery Note": "inspection_required_before_delivery", + } + + items_to_remove = [] + for item in items: + if not frappe.db.get_value("Item", item.get("item_code"), inspection_fieldname_map.get(doctype)): + items_to_remove.append(item) + items = [item for item in items if item not in items_to_remove] + + return items + + @frappe.whitelist() def make_quality_inspections(doctype, docname, items): if isinstance(items, str): @@ -1525,6 +1631,8 @@ def is_reposting_pending(): def future_sle_exists(args, sl_entries=None, allow_force_reposting=True): + from erpnext.stock.utils import get_combine_datetime + if allow_force_reposting and frappe.db.get_single_value( "Stock Reposting Settings", "do_reposting_for_each_stock_transaction" ): @@ -1546,14 +1654,15 @@ def future_sle_exists(args, sl_entries=None, allow_force_reposting=True): or_conditions = get_conditions_to_validate_future_sle(sl_entries) + args["posting_datetime"] = get_combine_datetime(args["posting_date"], args["posting_time"]) + data = frappe.db.sql( """ select item_code, warehouse, count(name) as total_row - from `tabStock Ledger Entry` force index (item_warehouse) + from `tabStock Ledger Entry` where ({}) - and timestamp(posting_date, posting_time) - >= timestamp(%(posting_date)s, %(posting_time)s) + and posting_datetime >= %(posting_datetime)s and voucher_no != %(voucher_no)s and is_cancelled = 0 GROUP BY @@ -1708,6 +1817,9 @@ def make_bundle_for_material_transfer(**kwargs): bundle_doc.calculate_qty_and_amount() bundle_doc.flags.ignore_permissions = True bundle_doc.flags.ignore_validate = True - bundle_doc.save(ignore_permissions=True) + if kwargs.do_not_submit: + bundle_doc.save(ignore_permissions=True) + else: + bundle_doc.submit() return bundle_doc.name diff --git a/erpnext/controllers/subcontracting_controller.py b/erpnext/controllers/subcontracting_controller.py index a6727ef8826..ba6f604960c 100644 --- a/erpnext/controllers/subcontracting_controller.py +++ b/erpnext/controllers/subcontracting_controller.py @@ -103,6 +103,28 @@ class SubcontractingController(StockController): _("Row {0}: Item {1} must be a subcontracted item.").format(item.idx, item.item_name) ) + if ( + self.doctype == "Subcontracting Order" and not item.subcontracting_conversion_factor + ): # this condition will only be true if user has recently updated from develop branch + service_item_qty = frappe.get_value( + "Subcontracting Order Service Item", + filters={"purchase_order_item": item.purchase_order_item, "parent": self.name}, + fieldname=["qty"], + ) + item.subcontracting_conversion_factor = service_item_qty / item.qty + + if self.doctype not in "Subcontracting Receipt" and item.qty > flt( + get_pending_subcontracted_quantity(self.purchase_order).get(item.purchase_order_item) + / item.subcontracting_conversion_factor, + frappe.get_precision("Purchase Order Item", "qty"), + ): + frappe.throw( + _( + "Row {0}: Item {1}'s quantity cannot be higher than the available quantity." + ).format(item.idx, item.item_name) + ) + item.amount = item.qty * item.rate + if item.bom: is_active, bom_item = frappe.get_value("BOM", item.bom, ["is_active", "item"]) @@ -523,7 +545,11 @@ class SubcontractingController(StockController): def __get_batch_nos_for_bundle(self, qty, key): available_batches = defaultdict(float) + precision = frappe.get_precision("Subcontracting Receipt Supplied Item", "consumed_qty") for batch_no, batch_qty in self.available_materials[key]["batch_no"].items(): + if flt(batch_qty, precision) <= 0: + continue + qty_to_consumed = 0 if qty > 0: if batch_qty >= qty: @@ -561,11 +587,11 @@ class SubcontractingController(StockController): use_serial_batch_fields = frappe.db.get_single_value("Stock Settings", "use_serial_batch_fields") if self.doctype == self.subcontract_data.order_doctype: - rm_obj.required_qty = qty - rm_obj.amount = rm_obj.required_qty * rm_obj.rate + rm_obj.required_qty = flt(qty, rm_obj.precision("required_qty")) + rm_obj.amount = flt(rm_obj.required_qty * rm_obj.rate, rm_obj.precision("amount")) else: - rm_obj.consumed_qty = qty - rm_obj.required_qty = bom_item.required_qty or qty + rm_obj.consumed_qty = flt(qty, rm_obj.precision("consumed_qty")) + rm_obj.required_qty = flt(bom_item.required_qty or qty, rm_obj.precision("required_qty")) rm_obj.serial_and_batch_bundle = None setattr( rm_obj, self.subcontract_data.order_field, item_row.get(self.subcontract_data.order_field) @@ -576,30 +602,56 @@ class SubcontractingController(StockController): self.__set_batch_nos(bom_item, item_row, rm_obj, qty) if self.doctype == "Subcontracting Receipt" and not use_serial_batch_fields: - args = frappe._dict( - { - "item_code": rm_obj.rm_item_code, - "warehouse": self.supplier_warehouse, - "posting_date": self.posting_date, - "posting_time": self.posting_time, - "qty": -1 * flt(rm_obj.consumed_qty), - "actual_qty": -1 * flt(rm_obj.consumed_qty), - "voucher_type": self.doctype, - "voucher_no": self.name, - "voucher_detail_no": item_row.name, - "company": self.company, - "allow_zero_valuation": 1, - } - ) - rm_obj.serial_and_batch_bundle = self.__set_serial_and_batch_bundle( item_row, rm_obj, rm_obj.consumed_qty ) - if rm_obj.serial_and_batch_bundle: - args["serial_and_batch_bundle"] = rm_obj.serial_and_batch_bundle + self.set_rate_for_supplied_items(rm_obj, item_row) - rm_obj.rate = get_incoming_rate(args) + def update_rate_for_supplied_items(self): + if self.doctype != "Subcontracting Receipt": + return + + for row in self.supplied_items: + item_row = None + if row.reference_name: + item_row = self.get_item_row(row.reference_name) + + if not item_row: + continue + + self.set_rate_for_supplied_items(row, item_row) + + def get_item_row(self, reference_name): + for item in self.items: + if item.name == reference_name: + return item + + def set_rate_for_supplied_items(self, rm_obj, item_row): + args = frappe._dict( + { + "item_code": rm_obj.rm_item_code, + "warehouse": self.supplier_warehouse, + "posting_date": self.posting_date, + "posting_time": self.posting_time, + "qty": -1 * flt(rm_obj.consumed_qty), + "actual_qty": -1 * flt(rm_obj.consumed_qty), + "voucher_type": self.doctype, + "voucher_no": self.name, + "voucher_detail_no": item_row.name, + "company": self.company, + "allow_zero_valuation": 1, + } + ) + + if rm_obj.serial_and_batch_bundle: + args["serial_and_batch_bundle"] = rm_obj.serial_and_batch_bundle + + if rm_obj.use_serial_batch_fields: + args["batch_no"] = rm_obj.batch_no + args["serial_no"] = rm_obj.serial_no + + rm_obj.rate = get_incoming_rate(args) def __set_batch_nos(self, bom_item, item_row, rm_obj, qty): key = (rm_obj.rm_item_code, item_row.item_code, item_row.get(self.subcontract_data.order_field)) @@ -638,8 +690,8 @@ class SubcontractingController(StockController): self.__set_serial_nos(item_row, rm_obj) def __set_consumed_qty(self, rm_obj, consumed_qty, required_qty=0): - rm_obj.required_qty = required_qty - rm_obj.consumed_qty = consumed_qty + rm_obj.required_qty = flt(required_qty, rm_obj.precision("required_qty")) + rm_obj.consumed_qty = flt(consumed_qty, rm_obj.precision("consumed_qty")) def __set_serial_nos(self, item_row, rm_obj): key = (rm_obj.rm_item_code, item_row.item_code, item_row.get(self.subcontract_data.order_field)) @@ -691,7 +743,9 @@ class SubcontractingController(StockController): ): continue - if self.doctype == self.subcontract_data.order_doctype or self.backflush_based_on == "BOM": + if self.doctype == self.subcontract_data.order_doctype or ( + self.backflush_based_on == "BOM" or self.is_return + ): for bom_item in self.__get_materials_from_bom( row.item_code, row.bom, row.get("include_exploded_items") ): @@ -1084,6 +1138,16 @@ def get_item_details(items): return item_details +def get_pending_subcontracted_quantity(po_name): + table = frappe.qb.DocType("Purchase Order Item") + query = ( + frappe.qb.from_(table) + .select(table.name, table.qty, table.subcontracted_quantity) + .where(table.parent == po_name) + ) + return {item.name: item.qty - item.subcontracted_quantity for item in query.run(as_dict=True)} + + @frappe.whitelist() def make_rm_stock_entry( subcontract_order, rm_items=None, order_doctype="Subcontracting Order", target_doc=None @@ -1202,6 +1266,7 @@ def add_items_in_ste(ste_doc, row, qty, rm_details, rm_detail_field="sco_rm_deta "item_code": row.item_details["rm_item_code"], "subcontracted_item": row.item_details["main_item_code"], "serial_no": "\n".join(row.serial_no) if row.serial_no else "", + "use_serial_batch_fields": 1, } ) @@ -1209,6 +1274,17 @@ def add_items_in_ste(ste_doc, row, qty, rm_details, rm_detail_field="sco_rm_deta def make_return_stock_entry_for_subcontract( available_materials, order_doc, rm_details, order_doctype="Subcontracting Order" ): + def post_process(source_doc, target_doc): + target_doc.purpose = "Material Transfer" + + if source_doc.doctype == "Purchase Order": + target_doc.purchase_order = source_doc.name + else: + target_doc.subcontracting_order = source_doc.name + + target_doc.company = source_doc.company + target_doc.is_return = 1 + ste_doc = get_mapped_doc( order_doctype, order_doc.name, @@ -1219,27 +1295,25 @@ def make_return_stock_entry_for_subcontract( }, }, ignore_child_tables=True, + postprocess=post_process, ) - ste_doc.purpose = "Material Transfer" - if order_doctype == "Purchase Order": - ste_doc.purchase_order = order_doc.name rm_detail_field = "po_detail" else: - ste_doc.subcontracting_order = order_doc.name rm_detail_field = "sco_rm_detail" - ste_doc.company = order_doc.company - ste_doc.is_return = 1 for _key, value in available_materials.items(): if not value.qty: continue + if item_details := value.get("item_details"): + item_details["serial_and_batch_bundle"] = None + if value.batch_no: for batch_no, qty in value.batch_no.items(): if qty > 0: - add_items_in_ste(ste_doc, value, value.qty, rm_details, rm_detail_field, batch_no) + add_items_in_ste(ste_doc, value, qty, rm_details, rm_detail_field, batch_no) else: add_items_in_ste(ste_doc, value, value.qty, rm_details, rm_detail_field) diff --git a/erpnext/controllers/taxes_and_totals.py b/erpnext/controllers/taxes_and_totals.py index ebf10977b52..5e35dd5028e 100644 --- a/erpnext/controllers/taxes_and_totals.py +++ b/erpnext/controllers/taxes_and_totals.py @@ -8,6 +8,7 @@ import frappe from frappe import _, scrub from frappe.model.document import Document from frappe.utils import cint, flt, round_based_on_smallest_currency_fraction +from frappe.utils.deprecations import deprecated import erpnext from erpnext.accounts.doctype.journal_entry.journal_entry import get_exchange_rate @@ -17,7 +18,7 @@ from erpnext.controllers.accounts_controller import ( validate_inclusive_tax, validate_taxes_and_charges, ) -from erpnext.stock.get_item_details import _get_item_tax_template +from erpnext.stock.get_item_details import _get_item_tax_template, get_item_tax_map from erpnext.utilities.regional import temporary_flag @@ -29,6 +30,11 @@ class calculate_taxes_and_totals: "Accounts Settings", "round_row_wise_tax" ) + if doc.get("round_off_applicable_accounts_for_tax_withholding"): + frappe.flags.round_off_applicable_accounts.append( + doc.round_off_applicable_accounts_for_tax_withholding + ) + self._items = self.filter_rows() if self.doc.doctype == "Quotation" else self.doc.get("items") get_round_off_applicable_accounts(self.doc.company, frappe.flags.round_off_applicable_accounts) @@ -40,7 +46,7 @@ class calculate_taxes_and_totals: return items def calculate(self): - if not len(self._items): + if not len(self.doc.items): return self.discount_amount_applied = False @@ -69,12 +75,13 @@ class calculate_taxes_and_totals: self.validate_conversion_rate() self.calculate_item_values() self.validate_item_tax_template() + self.update_item_tax_map() self.initialize_taxes() self.determine_exclusive_rate() self.calculate_net_total() self.calculate_tax_withholding_net_total() self.calculate_taxes() - self.manipulate_grand_total_for_inclusive_tax() + self.adjust_grand_total_for_inclusive_tax() self.calculate_totals() self._cleanup() self.calculate_total_net_weight() @@ -95,7 +102,7 @@ class calculate_taxes_and_totals: if self.doc.get("is_return") and self.doc.get("return_against"): return - for item in self._items: + for item in self.doc.items: if item.item_code and item.get("item_tax_template"): item_doc = frappe.get_cached_doc("Item", item.item_code) args = { @@ -133,6 +140,14 @@ class calculate_taxes_and_totals: ) ) + def update_item_tax_map(self): + for item in self.doc.items: + item.item_tax_rate = get_item_tax_map( + company=self.doc.get("company"), + item_tax_template=item.item_tax_template, + as_json=True, + ) + def validate_conversion_rate(self): # validate conversion rate company_currency = erpnext.get_company_currency(self.doc.company) @@ -154,7 +169,7 @@ class calculate_taxes_and_totals: return if not self.discount_amount_applied: - for item in self._items: + for item in self.doc.items: self.doc.round_floats_in(item) if item.discount_percentage == 100: @@ -258,7 +273,7 @@ class calculate_taxes_and_totals: if not any(cint(tax.included_in_print_rate) for tax in self.doc.get("taxes")): return - for item in self._items: + for item in self.doc.items: item_tax_map = self._load_item_tax_rate(item.item_tax_rate) cumulated_tax_fraction = 0 total_inclusive_tax_amount_per_qty = 0 @@ -286,7 +301,7 @@ class calculate_taxes_and_totals: ): amount = flt(item.amount) - total_inclusive_tax_amount_per_qty - item.net_amount = flt(amount / (1 + cumulated_tax_fraction)) + item.net_amount = flt(amount / (1 + cumulated_tax_fraction), item.precision("net_amount")) item.net_rate = flt(item.net_amount / item.qty, item.precision("net_rate")) item.discount_percentage = flt( item.discount_percentage, item.precision("discount_percentage") @@ -362,9 +377,7 @@ class calculate_taxes_and_totals: self._calculate() def calculate_taxes(self): - rounding_adjustment_computed = self.doc.get("is_consolidated") and self.doc.get("rounding_adjustment") - if not rounding_adjustment_computed: - self.doc.rounding_adjustment = 0 + self.grand_total_diff = 0 # maintain actual tax rate based on idx actual_tax_dict = dict( @@ -431,9 +444,8 @@ class calculate_taxes_and_totals: and self.discount_amount_applied and self.doc.discount_amount and self.doc.apply_discount_on == "Grand Total" - and not rounding_adjustment_computed ): - self.doc.rounding_adjustment = flt( + self.grand_total_diff = flt( self.doc.grand_total - flt(self.doc.discount_amount) - tax.total, self.doc.precision("rounding_adjustment"), ) @@ -531,12 +543,17 @@ class calculate_taxes_and_totals: tax.base_tax_amount = round(tax.base_tax_amount, 0) tax.base_tax_amount_after_discount_amount = round(tax.base_tax_amount_after_discount_amount, 0) + @deprecated def manipulate_grand_total_for_inclusive_tax(self): - # if fully inclusive taxes and diff + # for backward compatablility - if in case used by an external application + return self.adjust_grand_total_for_inclusive_tax() + + def adjust_grand_total_for_inclusive_tax(self): + # if any inclusive taxes and diff if self.doc.get("taxes") and any(cint(t.included_in_print_rate) for t in self.doc.get("taxes")): last_tax = self.doc.get("taxes")[-1] non_inclusive_tax_amount = sum( - flt(d.tax_amount_after_discount_amount) + self.get_tax_amount_if_for_valuation_or_deduction(d.tax_amount_after_discount_amount, d) for d in self.doc.get("taxes") if not d.included_in_print_rate ) @@ -553,23 +570,23 @@ class calculate_taxes_and_totals: diff = flt(diff, self.doc.precision("rounding_adjustment")) if diff and abs(diff) <= (5.0 / 10 ** last_tax.precision("tax_amount")): - self.doc.rounding_adjustment = diff + self.grand_total_diff = diff def calculate_totals(self): if self.doc.get("taxes"): - self.doc.grand_total = flt(self.doc.get("taxes")[-1].total) + flt(self.doc.rounding_adjustment) + self.doc.grand_total = flt(self.doc.get("taxes")[-1].total) + self.grand_total_diff else: self.doc.grand_total = flt(self.doc.net_total) if self.doc.get("taxes"): self.doc.total_taxes_and_charges = flt( - self.doc.grand_total - self.doc.net_total - flt(self.doc.rounding_adjustment), + self.doc.grand_total - self.doc.net_total - self.grand_total_diff, self.doc.precision("total_taxes_and_charges"), ) else: self.doc.total_taxes_and_charges = 0.0 - self._set_in_company_currency(self.doc, ["total_taxes_and_charges", "rounding_adjustment"]) + self._set_in_company_currency(self.doc, ["total_taxes_and_charges"]) if self.doc.doctype in [ "Quotation", @@ -619,15 +636,17 @@ class calculate_taxes_and_totals: if self.doc.meta.get_field("rounded_total"): if self.doc.is_rounded_total_disabled(): - self.doc.rounded_total = self.doc.base_rounded_total = 0 + self.doc.rounded_total = 0 + self.doc.base_rounded_total = 0 + self.doc.rounding_adjustment = 0 return self.doc.rounded_total = round_based_on_smallest_currency_fraction( self.doc.grand_total, self.doc.currency, self.doc.precision("rounded_total") ) - # if print_in_rate is set, we would have already calculated rounding adjustment - self.doc.rounding_adjustment += flt( + # rounding adjustment should always be the difference vetween grand and rounded total + self.doc.rounding_adjustment = flt( self.doc.rounded_total - self.doc.grand_total, self.doc.precision("rounding_adjustment") ) @@ -663,40 +682,36 @@ class calculate_taxes_and_totals: return total_for_discount_amount = self.get_total_for_discount_amount() - taxes = self.doc.get("taxes") net_total = 0 + expected_net_total = 0 if total_for_discount_amount: # calculate item amount after Discount Amount - for i, item in enumerate(self._items): + for item in self._items: distributed_amount = ( flt(self.doc.discount_amount) * item.net_amount / total_for_discount_amount ) - item.net_amount = flt(item.net_amount - distributed_amount, item.precision("net_amount")) + adjusted_net_amount = item.net_amount - distributed_amount + expected_net_total += adjusted_net_amount + item.net_amount = flt(adjusted_net_amount, item.precision("net_amount")) item.distributed_discount_amount = flt( distributed_amount, item.precision("distributed_discount_amount") ) net_total += item.net_amount - # discount amount rounding loss adjustment if no taxes - if ( - self.doc.apply_discount_on == "Net Total" - or not taxes - or total_for_discount_amount == self.doc.net_total - ) and i == len(self._items) - 1: - discount_amount_loss = flt( - self.doc.net_total - net_total - self.doc.discount_amount, - self.doc.precision("net_total"), - ) - + # discount amount rounding adjustment + if rounding_difference := flt( + expected_net_total - net_total, self.doc.precision("net_total") + ): item.net_amount = flt( - item.net_amount + discount_amount_loss, item.precision("net_amount") + item.net_amount + rounding_difference, item.precision("net_amount") ) item.distributed_discount_amount = flt( - distributed_amount + discount_amount_loss, + distributed_amount + rounding_difference, item.precision("distributed_discount_amount"), ) + net_total += rounding_difference item.net_rate = ( flt(item.net_amount / item.qty, item.precision("net_rate")) if item.qty else 0 @@ -712,20 +727,44 @@ class calculate_taxes_and_totals: def get_total_for_discount_amount(self): if self.doc.apply_discount_on == "Net Total": return self.doc.net_total - else: - actual_taxes_dict = {} - for tax in self.doc.get("taxes"): - if tax.charge_type in ["Actual", "On Item Quantity"]: - tax_amount = self.get_tax_amount_if_for_valuation_or_deduction(tax.tax_amount, tax) - actual_taxes_dict.setdefault(tax.idx, tax_amount) - elif tax.row_id in actual_taxes_dict: - actual_tax_amount = flt(actual_taxes_dict.get(tax.row_id, 0)) * flt(tax.rate) / 100 - actual_taxes_dict.setdefault(tax.idx, actual_tax_amount) + total_actual_tax = 0 + actual_taxes_dict = {} - return flt( - self.doc.grand_total - sum(actual_taxes_dict.values()), self.doc.precision("grand_total") + def update_actual_tax_dict(tax, tax_amount): + nonlocal total_actual_tax + + if tax.get("add_deduct_tax") == "Deduct": + tax_amount *= -1 + + if tax.get("category") != "Valuation": + total_actual_tax += tax_amount + + actual_taxes_dict[int(tax.idx)] = { + "tax_amount": tax_amount, + "cumulative_tax_amount": total_actual_tax, + } + + for tax in self.doc.get("taxes"): + if tax.charge_type in ["Actual", "On Item Quantity"]: + update_actual_tax_dict(tax, tax.tax_amount) + continue + + if not tax.row_id: + continue + + base_row = actual_taxes_dict.get(int(tax.row_id)) + if not base_row: + continue + + base_tax_amount = ( + base_row["tax_amount"] + if tax.charge_type == "On Previous Row Amount" + else base_row["cumulative_tax_amount"] ) + update_actual_tax_dict(tax, base_tax_amount * tax.rate / 100) + + return self.doc.grand_total - total_actual_tax def calculate_total_advance(self): if not self.doc.docstatus.is_cancelled(): @@ -787,9 +826,12 @@ class calculate_taxes_and_totals: if ( self.doc.is_return and self.doc.return_against + and not self.doc.update_outstanding_for_self and not self.doc.get("is_pos") or self.is_internal_invoice() ): + # Do not calculate the outstanding amount for a return invoice if 'update_outstanding_for_self' is not enabled. + self.doc.outstanding_amount = 0 return self.doc.round_floats_in(self.doc, ["grand_total", "total_advance", "write_off_amount"]) diff --git a/erpnext/controllers/tests/test_accounts_controller.py b/erpnext/controllers/tests/test_accounts_controller.py index b2f8fce3d31..28536893ab5 100644 --- a/erpnext/controllers/tests/test_accounts_controller.py +++ b/erpnext/controllers/tests/test_accounts_controller.py @@ -2,11 +2,14 @@ # For license information, please see license.txt +from datetime import datetime + import frappe from frappe import qb from frappe.query_builder.functions import Sum from frappe.tests.utils import FrappeTestCase, change_settings from frappe.utils import add_days, getdate, nowdate +from frappe.utils.data import getdate as convert_to_date from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry from erpnext.accounts.doctype.payment_entry.test_payment_entry import create_payment_entry @@ -14,6 +17,7 @@ from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice from erpnext.accounts.party import get_party_account from erpnext.buying.doctype.purchase_order.test_purchase_order import prepare_data_for_internal_transfer +from erpnext.projects.doctype.project.test_project import make_project from erpnext.stock.doctype.item.test_item import create_item @@ -807,6 +811,7 @@ class TestAccountsController(FrappeTestCase): @change_settings("Stock Settings", {"allow_internal_transfer_at_arms_length_price": 1}) def test_16_internal_transfer_at_arms_length_price(self): + from erpnext.accounts.doctype.sales_invoice.sales_invoice import make_inter_company_purchase_invoice from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse prepare_data_for_internal_transfer() @@ -840,6 +845,121 @@ class TestAccountsController(FrappeTestCase): # rate should reset to incoming rate self.assertEqual(si.items[0].rate, 100) + si.update_stock = 0 + si.save() + si.submit() + + pi = make_inter_company_purchase_invoice(si.name) + pi.update_stock = 1 + pi.items[0].rate = arms_length_price + pi.items[0].warehouse = target_warehouse + pi.items[0].from_warehouse = warehouse + pi.save() + + self.assertEqual(pi.items[0].rate, 100) + self.assertEqual(pi.items[0].valuation_rate, 100) + + frappe.db.set_single_value("Stock Settings", "allow_internal_transfer_at_arms_length_price", 1) + pi = make_inter_company_purchase_invoice(si.name) + pi.update_stock = 1 + pi.items[0].rate = arms_length_price + pi.items[0].warehouse = target_warehouse + pi.items[0].from_warehouse = warehouse + pi.save() + + self.assertEqual(pi.items[0].rate, arms_length_price) + self.assertEqual(pi.items[0].valuation_rate, 100) + + @change_settings("Accounts Settings", {"exchange_gain_loss_posting_date": "Reconciliation Date"}) + def test_17_gain_loss_posting_date_for_normal_payment(self): + # Sales Invoice in Foreign Currency + rate = 80 + rate_in_account_currency = 1 + + adv_date = convert_to_date(add_days(nowdate(), -2)) + inv_date = convert_to_date(add_days(nowdate(), -1)) + + si = self.create_sales_invoice(posting_date=inv_date, qty=1, rate=rate_in_account_currency) + + # Test payments with different exchange rates + pe = self.create_payment_entry(posting_date=adv_date, amount=1, source_exc_rate=75.1).save().submit() + + pr = self.create_payment_reconciliation() + pr.from_invoice_date = add_days(nowdate(), -1) + pr.to_invoice_date = nowdate() + pr.from_payment_date = add_days(nowdate(), -2) + pr.to_payment_date = nowdate() + + pr.get_unreconciled_entries() + self.assertEqual(len(pr.invoices), 1) + self.assertEqual(len(pr.payments), 1) + invoices = [x.as_dict() for x in pr.invoices] + payments = [x.as_dict() for x in pr.payments] + pr.allocate_entries(frappe._dict({"invoices": invoices, "payments": payments})) + pr.reconcile() + self.assertEqual(len(pr.invoices), 0) + self.assertEqual(len(pr.payments), 0) + + # Outstanding in both currencies should be '0' + si.reload() + self.assertEqual(si.outstanding_amount, 0) + self.assert_ledger_outstanding(si.doctype, si.name, 0.0, 0.0) + + # Exchange Gain/Loss Journal should've been created. + exc_je_for_si = self.get_journals_for(si.doctype, si.name) + exc_je_for_pe = self.get_journals_for(pe.doctype, pe.name) + self.assertNotEqual(exc_je_for_si, []) + self.assertEqual(len(exc_je_for_si), 1) + self.assertEqual(len(exc_je_for_pe), 1) + self.assertEqual(exc_je_for_si[0], exc_je_for_pe[0]) + + self.assertEqual( + getdate(nowdate()), frappe.db.get_value("Journal Entry", exc_je_for_pe[0].parent, "posting_date") + ) + # Cancel Payment + pe.reload() + pe.cancel() + + # outstanding should be same as grand total + si.reload() + self.assertEqual(si.outstanding_amount, rate_in_account_currency) + self.assert_ledger_outstanding(si.doctype, si.name, rate, rate_in_account_currency) + + # Exchange Gain/Loss Journal should've been cancelled + exc_je_for_si = self.get_journals_for(si.doctype, si.name) + exc_je_for_pe = self.get_journals_for(pe.doctype, pe.name) + self.assertEqual(exc_je_for_si, []) + self.assertEqual(exc_je_for_pe, []) + + @change_settings("Accounts Settings", {"add_taxes_from_item_tax_template": 1}) + def test_18_fetch_taxes_based_on_taxes_and_charges_template(self): + # Create a Sales Taxes and Charges Template + if not frappe.db.exists("Sales Taxes and Charges Template", "_Test Tax - _TC"): + doc = frappe.new_doc("Sales Taxes and Charges Template") + doc.company = self.company + doc.title = "_Test Tax" + doc.append( + "taxes", + { + "charge_type": "On Net Total", + "account_head": "Sales Expenses - _TC", + "description": "Test taxes", + "rate": 9, + }, + ) + doc.insert() + + # Create a Sales Invoice + sinv = frappe.new_doc("Sales Invoice") + sinv.customer = self.customer + sinv.company = self.company + sinv.currency = "INR" + sinv.taxes_and_charges = "_Test Tax - _TC" + sinv.append("items", {"item_code": "_Test Item", "qty": 1, "rate": 50}) + sinv.insert() + + self.assertEqual(sinv.total_taxes_and_charges, 4.5) + def test_20_journal_against_sales_invoice(self): # Invoice in Foreign Currency si = self.create_sales_invoice(qty=1, conversion_rate=80, rate=1) @@ -1442,32 +1562,32 @@ class TestAccountsController(FrappeTestCase): # Invoices si1 = self.create_sales_invoice(qty=1, rate=rate_in_account_currency, do_not_submit=True) - si1.department = "Management" + si1.department = "Management - _TC" si1.save().submit() si2 = self.create_sales_invoice(qty=1, rate=rate_in_account_currency, do_not_submit=True) - si2.department = "Operations" + si2.department = "Operations - _TC" si2.save().submit() # Payments cr_note1 = self.create_sales_invoice(qty=-1, conversion_rate=75, rate=1, do_not_save=True) - cr_note1.department = "Management" + cr_note1.department = "Management - _TC" cr_note1.is_return = 1 cr_note1.save().submit() cr_note2 = self.create_sales_invoice(qty=-1, conversion_rate=75, rate=1, do_not_save=True) - cr_note2.department = "Legal" + cr_note2.department = "Legal - _TC" cr_note2.is_return = 1 cr_note2.save().submit() pe1 = get_payment_entry(si1.doctype, si1.name) pe1.references = [] - pe1.department = "Research & Development" + pe1.department = "Research & Development - _TC" pe1.save().submit() pe2 = get_payment_entry(si1.doctype, si1.name) pe2.references = [] - pe2.department = "Management" + pe2.department = "Management - _TC" pe2.save().submit() je1 = self.create_journal_entry( @@ -1480,7 +1600,7 @@ class TestAccountsController(FrappeTestCase): ) je1.accounts[0].party_type = "Customer" je1.accounts[0].party = self.customer - je1.accounts[0].department = "Management" + je1.accounts[0].department = "Management - _TC" je1.save().submit() # assert dimension filter's result @@ -1489,17 +1609,17 @@ class TestAccountsController(FrappeTestCase): self.assertEqual(len(pr.invoices), 2) self.assertEqual(len(pr.payments), 5) - pr.department = "Legal" + pr.department = "Legal - _TC" pr.get_unreconciled_entries() self.assertEqual(len(pr.invoices), 0) self.assertEqual(len(pr.payments), 1) - pr.department = "Management" + pr.department = "Management - _TC" pr.get_unreconciled_entries() self.assertEqual(len(pr.invoices), 1) self.assertEqual(len(pr.payments), 3) - pr.department = "Research & Development" + pr.department = "Research & Development - _TC" pr.get_unreconciled_entries() self.assertEqual(len(pr.invoices), 0) self.assertEqual(len(pr.payments), 1) @@ -1510,17 +1630,17 @@ class TestAccountsController(FrappeTestCase): # Invoice si = self.create_sales_invoice(qty=1, rate=rate_in_account_currency, do_not_submit=True) - si.department = "Management" + si.department = "Management - _TC" si.save().submit() # Payment cr_note = self.create_sales_invoice(qty=-1, conversion_rate=75, rate=1, do_not_save=True) - cr_note.department = "Management" + cr_note.department = "Management - _TC" cr_note.is_return = 1 cr_note.save().submit() pr = self.create_payment_reconciliation() - pr.department = "Management" + pr.department = "Management - _TC" pr.get_unreconciled_entries() self.assertEqual(len(pr.invoices), 1) self.assertEqual(len(pr.payments), 1) @@ -1552,7 +1672,7 @@ class TestAccountsController(FrappeTestCase): # Sales Invoice in Foreign Currency self.setup_dimensions() rate_in_account_currency = 1 - dpt = "Research & Development" + dpt = "Research & Development - _TC" si = self.create_sales_invoice(qty=1, rate=rate_in_account_currency, do_not_save=True) si.department = dpt @@ -1587,7 +1707,7 @@ class TestAccountsController(FrappeTestCase): def test_93_dimension_inheritance_on_advance(self): self.setup_dimensions() - dpt = "Research & Development" + dpt = "Research & Development - _TC" adv = self.create_payment_entry(amount=1, source_exc_rate=85) adv.department = dpt @@ -1953,3 +2073,161 @@ class TestAccountsController(FrappeTestCase): self.assertEqual(len(exc_je_for_adv), 0) self.remove_advance_accounts_from_party_master() + + def test_difference_posting_date_in_pi_and_si(self): + self.setup_advance_accounts_in_party_master() + + # create payment entry for customer + adv = self.create_payment_entry(amount=1, source_exc_rate=83) + adv.save() + self.assertEqual(adv.paid_from, self.advance_received_usd) + adv.submit() + adv.reload() + + # create sales invoice with advance received + si = self.create_sales_invoice(qty=1, conversion_rate=80, rate=1, do_not_submit=True) + si.debit_to = self.debtors_usd + si.append( + "advances", + { + "reference_type": adv.doctype, + "reference_name": adv.name, + "remarks": "Amount INR 1 received from _Test MC Customer USD\nTransaction reference no Test001 dated 2024-12-19", + "advance_amount": 1.0, + "allocated_amount": 1.0, + "exchange_gain_loss": 3.0, + "ref_exchange_rate": 83.0, + "difference_posting_date": add_days(nowdate(), -2), + }, + ) + si.save().submit() + + # exc Gain/Loss journal should've been creatad + exc_je_for_si = self.get_journals_for(si.doctype, si.name) + exc_je_for_adv = self.get_journals_for(adv.doctype, adv.name) + self.assertEqual(len(exc_je_for_si), 1) + self.assertEqual(len(exc_je_for_adv), 1) + self.assertEqual(exc_je_for_si, exc_je_for_adv) + + # check jv created with difference_posting_date in sales invoice + jv = frappe.get_doc("Journal Entry", exc_je_for_si[0].parent) + sales_invoice = frappe.get_doc("Sales Invoice", si.name) + self.assertEqual(sales_invoice.advances[0].difference_posting_date, jv.posting_date) + + # create payment entry for supplier + usd_amount = 1 + inr_amount = 85 + exc_rate = 85 + adv = create_payment_entry( + company=self.company, + payment_type="Pay", + party_type="Supplier", + party=self.supplier, + paid_from=self.cash, + paid_to=self.advance_paid_usd, + paid_amount=inr_amount, + ) + adv.source_exchange_rate = 1 + adv.target_exchange_rate = exc_rate + adv.received_amount = usd_amount + adv.paid_amount = exc_rate * usd_amount + adv.posting_date = nowdate() + adv.save() + self.assertEqual(adv.paid_to, self.advance_paid_usd) + adv.submit() + + # create purchase invoice with advance paid + pi = self.create_purchase_invoice(qty=1, conversion_rate=80, rate=1, do_not_submit=True) + pi.append( + "advances", + { + "reference_type": adv.doctype, + "reference_name": adv.name, + "remarks": "Amount INR 1 paid to _Test MC Supplier USD\nTransaction reference no Test001 dated 2024-12-20", + "advance_amount": 1.0, + "allocated_amount": 1.0, + "exchange_gain_loss": 5.0, + "ref_exchange_rate": 85.0, + "difference_posting_date": add_days(nowdate(), -2), + }, + ) + pi.save().submit() + self.assertEqual(pi.credit_to, self.creditors_usd) + + # exc Gain/Loss journal should've been creatad + exc_je_for_pi = self.get_journals_for(pi.doctype, pi.name) + exc_je_for_adv = self.get_journals_for(adv.doctype, adv.name) + self.assertEqual(len(exc_je_for_pi), 1) + self.assertEqual(len(exc_je_for_adv), 1) + self.assertEqual(exc_je_for_pi, exc_je_for_adv) + + # check jv created with difference_posting_date in purchase invoice + journal_voucher = frappe.get_doc("Journal Entry", exc_je_for_pi[0].parent) + purchase_invoice = frappe.get_doc("Purchase Invoice", pi.name) + self.assertEqual(purchase_invoice.advances[0].difference_posting_date, journal_voucher.posting_date) + + def test_company_validation_in_dimension(self): + si = create_sales_invoice(do_not_submit=True) + project = make_project({"project_name": "_Test Demo Project1", "company": "_Test Company 1"}) + si.project = project.name + self.assertRaises(frappe.ValidationError, si.save) + + si_1 = create_sales_invoice(do_not_submit=True) + si_1.items[0].project = project.name + self.assertRaises(frappe.ValidationError, si_1.save) + + def test_party_billing_and_shipping_address(self): + from erpnext.crm.doctype.prospect.test_prospect import make_address + + customer_billing = make_address(address_title="Customer") + customer_billing.append("links", {"link_doctype": "Customer", "link_name": "_Test Customer"}) + customer_billing.save() + supplier_billing = make_address(address_title="Supplier", address_line1="2", city="Ahmedabad") + supplier_billing.append("links", {"link_doctype": "Supplier", "link_name": "_Test Supplier"}) + supplier_billing.save() + + customer_shipping = make_address( + address_title="Customer", address_type="Shipping", address_line1="10" + ) + customer_shipping.append("links", {"link_doctype": "Customer", "link_name": "_Test Customer"}) + customer_shipping.save() + supplier_shipping = make_address( + address_title="Supplier", address_type="Shipping", address_line1="20", city="Ahmedabad" + ) + supplier_shipping.append("links", {"link_doctype": "Supplier", "link_name": "_Test Supplier"}) + supplier_shipping.save() + + si = create_sales_invoice(do_not_save=True) + si.customer_address = supplier_billing.name + self.assertRaises(frappe.ValidationError, si.save) + si.customer_address = customer_billing.name + si.save() + + si.shipping_address_name = supplier_shipping.name + self.assertRaises(frappe.ValidationError, si.save) + si.shipping_address_name = customer_shipping.name + si.reload() + si.save() + + pi = make_purchase_invoice(do_not_save=True) + pi.supplier_address = customer_shipping.name + self.assertRaises(frappe.ValidationError, pi.save) + pi.supplier_address = supplier_shipping.name + pi.save() + + def test_party_contact(self): + from frappe.contacts.doctype.contact.test_contact import create_contact + + customer_contact = create_contact(name="Customer", salutation="Mr", save=False) + customer_contact.append("links", {"link_doctype": "Customer", "link_name": "_Test Customer"}) + customer_contact.save() + + supplier_contact = create_contact(name="Supplier", salutation="Mr", save=False) + supplier_contact.append("links", {"link_doctype": "Supplier", "link_name": "_Test Supplier"}) + supplier_contact.save() + + si = create_sales_invoice(do_not_save=True) + si.contact_person = supplier_contact.name + self.assertRaises(frappe.ValidationError, si.save) + si.contact_person = customer_contact.name + si.save() diff --git a/erpnext/controllers/tests/test_subcontracting_controller.py b/erpnext/controllers/tests/test_subcontracting_controller.py index dfd4351dcad..3b11a0f8029 100644 --- a/erpnext/controllers/tests/test_subcontracting_controller.py +++ b/erpnext/controllers/tests/test_subcontracting_controller.py @@ -282,6 +282,79 @@ class TestSubcontractingController(FrappeTestCase): frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 1) + def test_return_non_consumed_batch_materials(self): + """ + - Set backflush based on Material Transfer. + - Create SCO for item Subcontracted Item SA2. + - Transfer the batched components from Stores to Supplier warehouse with serial nos. + - Transfer extra qty of component for the subcontracted item Subcontracted Item SA2. + - Create SCR for full qty against the SCO and change the qty of raw material. + - After that return the non consumed material back to the store from supplier's warehouse. + """ + + frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 0) + set_backflush_based_on("Material Transferred for Subcontract") + service_item = make_item("Subcontracted Service FG Item A", properties={"is_stock_item": 0}).name + fg_item = make_item( + "Subcontracted FG Item SA2", properties={"is_stock_item": 1, "is_sub_contracted_item": 1} + ).name + rm_item = make_item( + "Subcontracted Batch RM Item SA2", + properties={ + "is_stock_item": 1, + "create_new_batch": 1, + "has_batch_no": 1, + "batch_number_series": "BATCH-RM-IRM-.####", + }, + ).name + + make_bom(item=fg_item, raw_materials=[rm_item], rate=100, currency="INR") + + service_items = [ + { + "warehouse": "_Test Warehouse - _TC", + "item_code": service_item, + "qty": 5, + "rate": 100, + "fg_item": fg_item, + "fg_item_qty": 5, + }, + ] + sco = get_subcontracting_order(service_items=service_items) + rm_items = get_rm_items(sco.supplied_items) + rm_items[0]["qty"] += 1 + itemwise_details = make_stock_in_entry(rm_items=rm_items) + + for item in rm_items: + item["sco_rm_detail"] = sco.items[0].name + + make_stock_transfer_entry( + sco_no=sco.name, + rm_items=rm_items, + itemwise_details=copy.deepcopy(itemwise_details), + ) + + scr1 = make_subcontracting_receipt(sco.name) + scr1.save() + scr1.supplied_items[0].consumed_qty = 5 + scr1.submit() + + for key, value in get_supplied_items(scr1).items(): + transferred_detais = itemwise_details.get(key) + self.assertEqual(value.qty, 5) + self.assertEqual(sorted(value.serial_no), sorted(transferred_detais.get("serial_no")[0:5])) + + sco.load_from_db() + self.assertEqual(sco.supplied_items[0].consumed_qty, 5) + doc = get_materials_from_supplier(sco.name, [d.name for d in sco.supplied_items]) + doc.save() + self.assertEqual(doc.items[0].qty, 1) + self.assertEqual(doc.items[0].s_warehouse, "_Test Warehouse 1 - _TC") + self.assertEqual(doc.items[0].t_warehouse, "_Test Warehouse - _TC") + self.assertTrue(doc.items[0].batch_no) + self.assertTrue(doc.items[0].use_serial_batch_fields) + frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 1) + def test_return_non_consumed_materials(self): """ - Set backflush based on Material Transfer. @@ -1234,6 +1307,7 @@ def make_subcontracted_items(): "Subcontracted Item SA6": {}, "Subcontracted Item SA7": {}, "Subcontracted Item SA8": {}, + "Subcontracted Item SA9": {"stock_uom": "Litre"}, } for item, properties in sub_contracted_items.items(): @@ -1254,11 +1328,13 @@ def make_raw_materials(): "Subcontracted SRM Item 4": {"has_serial_no": 1, "serial_no_series": "SRII.####"}, "Subcontracted SRM Item 5": {"has_serial_no": 1, "serial_no_series": "SRIID.####"}, "Subcontracted SRM Item 8": {}, + "Subcontracted SRM Item 9": {"stock_uom": "Litre"}, } for item, properties in raw_materials.items(): if not frappe.db.exists("Item", item): properties.update({"is_stock_item": 1}) + properties.update({"valuation_rate": 100}) make_item(item, properties) @@ -1280,6 +1356,7 @@ def make_service_items(): "Subcontracted Service Item 6": {}, "Subcontracted Service Item 7": {}, "Subcontracted Service Item 8": {}, + "Subcontracted Service Item 9": {}, } for item, properties in service_items.items(): @@ -1308,7 +1385,7 @@ def make_bom_for_subcontracted_items(): for item_code, raw_materials in boms.items(): if not frappe.db.exists("BOM", {"item": item_code}): - make_bom(item=item_code, raw_materials=raw_materials, rate=100) + make_bom(item=item_code, raw_materials=raw_materials, rate=100, currency="INR") def set_backflush_based_on(based_on): diff --git a/erpnext/controllers/trends.py b/erpnext/controllers/trends.py index 18fe7767c5d..24d11e6050a 100644 --- a/erpnext/controllers/trends.py +++ b/erpnext/controllers/trends.py @@ -69,13 +69,15 @@ def get_data(filters, conditions): "Delivery Note", ]: posting_date = "t1.posting_date" - if filters.period_based_on: + if filters.period_based_on and conditions.get("trans") in ["Sales Invoice", "Purchase Invoice"]: posting_date = "t1." + filters.period_based_on if conditions["based_on_select"] in ["t1.project,", "t2.project,"]: cond = " and " + conditions["based_on_select"][:-1] + " IS Not NULL" - if conditions.get("trans") in ["Sales Order", "Purchase Order"]: - cond += " and t1.status != 'Closed'" + + if not filters.get("include_closed_orders"): + if conditions.get("trans") in ["Sales Order", "Purchase Order"]: + cond += " and t1.status != 'Closed'" if conditions.get("trans") == "Quotation" and filters.get("group_by") == "Customer": cond += " and t1.quotation_to = 'Customer'" @@ -222,7 +224,7 @@ def period_wise_columns_query(filters, trans): if trans in ["Purchase Receipt", "Delivery Note", "Purchase Invoice", "Sales Invoice"]: trans_date = "posting_date" - if filters.period_based_on: + if filters.period_based_on and trans in ["Purchase Invoice", "Sales Invoice"]: trans_date = filters.period_based_on else: trans_date = "transaction_date" diff --git a/erpnext/controllers/website_list_for_contact.py b/erpnext/controllers/website_list_for_contact.py index c5708d0e4b4..4d141d346eb 100644 --- a/erpnext/controllers/website_list_for_contact.py +++ b/erpnext/controllers/website_list_for_contact.py @@ -69,7 +69,7 @@ def get_transaction_list( filters=None, limit_start=0, limit_page_length=20, - order_by="modified", + order_by="creation desc", custom=False, ): user = frappe.session.user @@ -115,7 +115,7 @@ def get_transaction_list( limit_page_length, fields="name", ignore_permissions=ignore_permissions, - order_by="modified desc", + order_by=order_by, ) if custom: diff --git a/erpnext/crm/doctype/competitor/competitor.json b/erpnext/crm/doctype/competitor/competitor.json index fd6da239212..021488ab99b 100644 --- a/erpnext/crm/doctype/competitor/competitor.json +++ b/erpnext/crm/doctype/competitor/competitor.json @@ -38,7 +38,7 @@ "table_fieldname": "competitors" } ], - "modified": "2023-11-23 19:33:54.284279", + "modified": "2024-12-10 08:26:38.496003", "modified_by": "Administrator", "module": "CRM", "name": "Competitor", @@ -53,20 +53,25 @@ "print": 1, "read": 1, "report": 1, - "role": "System Manager", + "role": "Sales Master Manager", "share": 1, "write": 1 }, { - "create": 1, - "email": 1, - "export": 1, - "print": 1, "read": 1, - "report": 1, - "role": "Sales User", - "share": 1, - "write": 1 + "role": "Sales User" + }, + { + "read": 1, + "role": "Sales Manager" + }, + { + "read": 1, + "role": "Maintenance Manager" + }, + { + "read": 1, + "role": "Maintenance User" } ], "quick_entry": 1, diff --git a/erpnext/crm/doctype/crm_settings/crm_settings.json b/erpnext/crm/doctype/crm_settings/crm_settings.json index 26a07d2e859..f9dc3902c8f 100644 --- a/erpnext/crm/doctype/crm_settings/crm_settings.json +++ b/erpnext/crm/doctype/crm_settings/crm_settings.json @@ -17,7 +17,9 @@ "quotation_section", "default_valid_till", "section_break_13", - "carry_forward_communication_and_comments" + "carry_forward_communication_and_comments", + "column_break_junk", + "update_timestamp_on_new_communication" ], "fields": [ { @@ -77,7 +79,7 @@ { "fieldname": "section_break_13", "fieldtype": "Section Break", - "label": "Other Settings" + "label": "Activity" }, { "default": "0", @@ -85,13 +87,24 @@ "fieldname": "carry_forward_communication_and_comments", "fieldtype": "Check", "label": "Carry Forward Communication and Comments" + }, + { + "fieldname": "column_break_junk", + "fieldtype": "Column Break" + }, + { + "default": "0", + "description": "Update the modified timestamp on new communications received in Lead & Opportunity.", + "fieldname": "update_timestamp_on_new_communication", + "fieldtype": "Check", + "label": "Update timestamp on new communication" } ], "icon": "fa fa-cog", "index_web_pages_for_search": 1, "issingle": 1, "links": [], - "modified": "2022-06-06 11:22:08.464253", + "modified": "2025-01-16 16:12:14.889455", "modified_by": "Administrator", "module": "CRM", "name": "CRM Settings", diff --git a/erpnext/crm/doctype/crm_settings/crm_settings.py b/erpnext/crm/doctype/crm_settings/crm_settings.py index 499a6d723d3..23992043145 100644 --- a/erpnext/crm/doctype/crm_settings/crm_settings.py +++ b/erpnext/crm/doctype/crm_settings/crm_settings.py @@ -20,6 +20,7 @@ class CRMSettings(Document): carry_forward_communication_and_comments: DF.Check close_opportunity_after_days: DF.Int default_valid_till: DF.Data | None + update_timestamp_on_new_communication: DF.Check # end: auto-generated types def validate(self): diff --git a/erpnext/crm/doctype/lead/lead.js b/erpnext/crm/doctype/lead/lead.js index 609eab7f9a2..325ee3d8d6e 100644 --- a/erpnext/crm/doctype/lead/lead.js +++ b/erpnext/crm/doctype/lead/lead.js @@ -7,9 +7,9 @@ cur_frm.email_field = "email_id"; erpnext.LeadController = class LeadController extends frappe.ui.form.Controller { setup() { this.frm.make_methods = { - Customer: this.make_customer, - Quotation: this.make_quotation, - Opportunity: this.make_opportunity, + Customer: this.make_customer.bind(this), + Quotation: this.make_quotation.bind(this), + Opportunity: this.make_opportunity.bind(this), }; // For avoiding integration issues. @@ -28,18 +28,18 @@ erpnext.LeadController = class LeadController extends frappe.ui.form.Controller erpnext.toggle_naming_series(); if (!this.frm.is_new() && doc.__onload && !doc.__onload.is_customer) { - this.frm.add_custom_button(__("Customer"), this.make_customer, __("Create")); - this.frm.add_custom_button( - __("Opportunity"), - function () { - me.frm.trigger("make_opportunity"); - }, - __("Create") - ); - this.frm.add_custom_button(__("Quotation"), this.make_quotation, __("Create")); + this.frm.add_custom_button(__("Customer"), this.make_customer.bind(this), __("Create")); + this.frm.add_custom_button(__("Opportunity"), this.make_opportunity.bind(this), __("Create")); + this.frm.add_custom_button(__("Quotation"), this.make_quotation.bind(this), __("Create")); if (!doc.__onload.linked_prospects.length) { - this.frm.add_custom_button(__("Prospect"), this.make_prospect, __("Create")); - this.frm.add_custom_button(__("Add to Prospect"), this.add_lead_to_prospect, __("Action")); + this.frm.add_custom_button(__("Prospect"), this.make_prospect.bind(this), __("Create")); + this.frm.add_custom_button( + __("Add to Prospect"), + () => { + this.add_lead_to_prospect(this.frm); + }, + __("Action") + ); } } @@ -53,8 +53,7 @@ erpnext.LeadController = class LeadController extends frappe.ui.form.Controller this.show_activities(); } - add_lead_to_prospect() { - let me = this; + add_lead_to_prospect(frm) { frappe.prompt( [ { @@ -69,12 +68,12 @@ erpnext.LeadController = class LeadController extends frappe.ui.form.Controller frappe.call({ method: "erpnext.crm.doctype.lead.lead.add_lead_to_prospect", args: { - lead: me.frm.doc.name, + lead: frm.doc.name, prospect: data.prospect, }, callback: function (r) { if (!r.exc) { - me.frm.reload_doc(); + frm.reload_doc(); } }, freeze: true, @@ -89,32 +88,123 @@ erpnext.LeadController = class LeadController extends frappe.ui.form.Controller make_customer() { frappe.model.open_mapped_doc({ method: "erpnext.crm.doctype.lead.lead.make_customer", - frm: cur_frm, + frm: this.frm, }); } make_quotation() { frappe.model.open_mapped_doc({ method: "erpnext.crm.doctype.lead.lead.make_quotation", - frm: cur_frm, + frm: this.frm, }); } + async make_opportunity() { + const frm = this.frm; + let existing_prospect = ( + await frappe.db.get_value( + "Prospect Lead", + { + lead: frm.doc.name, + }, + "name", + null, + "Prospect" + ) + ).message?.name; + + let fields = []; + if (!existing_prospect) { + fields.push( + { + label: "Create Prospect", + fieldname: "create_prospect", + fieldtype: "Check", + default: 1, + }, + { + label: "Prospect Name", + fieldname: "prospect_name", + fieldtype: "Data", + default: frm.doc.company_name, + depends_on: "create_prospect", + mandatory_depends_on: "create_prospect", + } + ); + } + + await frm.reload_doc(); + + let existing_contact = ( + await frappe.db.get_value( + "Contact", + { + first_name: frm.doc.first_name || frm.doc.lead_name, + last_name: frm.doc.last_name, + }, + "name" + ) + ).message?.name; + + if (!existing_contact) { + fields.push({ + label: "Create Contact", + fieldname: "create_contact", + fieldtype: "Check", + default: "1", + }); + } + + if (fields.length) { + const d = new frappe.ui.Dialog({ + title: __("Create Opportunity"), + fields: fields, + primary_action: function (data) { + frappe.call({ + method: "create_prospect_and_contact", + doc: frm.doc, + args: { + data: data, + }, + freeze: true, + callback: function (r) { + if (!r.exc) { + frappe.model.open_mapped_doc({ + method: "erpnext.crm.doctype.lead.lead.make_opportunity", + frm: frm, + }); + } + d.hide(); + }, + }); + }, + primary_action_label: __("Create"), + }); + d.show(); + } else { + frappe.model.open_mapped_doc({ + method: "erpnext.crm.doctype.lead.lead.make_opportunity", + frm: frm, + }); + } + } + make_prospect() { + const me = this; frappe.model.with_doctype("Prospect", function () { let prospect = frappe.model.get_new_doc("Prospect"); - prospect.company_name = cur_frm.doc.company_name; - prospect.no_of_employees = cur_frm.doc.no_of_employees; - prospect.industry = cur_frm.doc.industry; - prospect.market_segment = cur_frm.doc.market_segment; - prospect.territory = cur_frm.doc.territory; - prospect.fax = cur_frm.doc.fax; - prospect.website = cur_frm.doc.website; - prospect.prospect_owner = cur_frm.doc.lead_owner; - prospect.notes = cur_frm.doc.notes; + prospect.company_name = me.frm.doc.company_name; + prospect.no_of_employees = me.frm.doc.no_of_employees; + prospect.industry = me.frm.doc.industry; + prospect.market_segment = me.frm.doc.market_segment; + prospect.territory = me.frm.doc.territory; + prospect.fax = me.frm.doc.fax; + prospect.website = me.frm.doc.website; + prospect.prospect_owner = me.frm.doc.lead_owner; + prospect.notes = me.frm.doc.notes; let leads_row = frappe.model.add_child(prospect, "leads"); - leads_row.lead = cur_frm.doc.name; + leads_row.lead = me.frm.doc.name; frappe.set_route("Form", "Prospect", prospect.name); }); @@ -150,90 +240,3 @@ erpnext.LeadController = class LeadController extends frappe.ui.form.Controller }; extend_cscript(cur_frm.cscript, new erpnext.LeadController({ frm: cur_frm })); - -frappe.ui.form.on("Lead", { - make_opportunity: async function (frm) { - let existing_prospect = ( - await frappe.db.get_value( - "Prospect Lead", - { - lead: frm.doc.name, - }, - "name", - null, - "Prospect" - ) - ).message.name; - - if (!existing_prospect) { - var fields = [ - { - label: "Create Prospect", - fieldname: "create_prospect", - fieldtype: "Check", - default: 1, - }, - { - label: "Prospect Name", - fieldname: "prospect_name", - fieldtype: "Data", - default: frm.doc.company_name, - depends_on: "create_prospect", - }, - ]; - } - let existing_contact = ( - await frappe.db.get_value( - "Contact", - { - first_name: frm.doc.first_name || frm.doc.lead_name, - last_name: frm.doc.last_name, - }, - "name" - ) - ).message.name; - - if (!existing_contact) { - fields.push({ - label: "Create Contact", - fieldname: "create_contact", - fieldtype: "Check", - default: "1", - }); - } - - if (fields) { - var d = new frappe.ui.Dialog({ - title: __("Create Opportunity"), - fields: fields, - primary_action: function () { - var data = d.get_values(); - frappe.call({ - method: "create_prospect_and_contact", - doc: frm.doc, - args: { - data: data, - }, - freeze: true, - callback: function (r) { - if (!r.exc) { - frappe.model.open_mapped_doc({ - method: "erpnext.crm.doctype.lead.lead.make_opportunity", - frm: frm, - }); - } - d.hide(); - }, - }); - }, - primary_action_label: __("Create"), - }); - d.show(); - } else { - frappe.model.open_mapped_doc({ - method: "erpnext.crm.doctype.lead.lead.make_opportunity", - frm: frm, - }); - } - }, -}); diff --git a/erpnext/crm/doctype/lead/lead.json b/erpnext/crm/doctype/lead/lead.json index 92f446d57d3..038f6bff2eb 100644 --- a/erpnext/crm/doctype/lead/lead.json +++ b/erpnext/crm/doctype/lead/lead.json @@ -377,7 +377,7 @@ "depends_on": "eval:!doc.__islocal", "fieldname": "notes_tab", "fieldtype": "Tab Break", - "label": "Comments" + "label": "Notes" }, { "collapsible": 1, @@ -516,7 +516,7 @@ "idx": 5, "image_field": "image", "links": [], - "modified": "2023-12-01 18:46:49.468526", + "modified": "2025-01-31 13:40:08.094759", "modified_by": "Administrator", "module": "CRM", "name": "Lead", @@ -584,4 +584,4 @@ "states": [], "subject_field": "title", "title_field": "title" -} \ No newline at end of file +} diff --git a/erpnext/crm/doctype/prospect/prospect.json b/erpnext/crm/doctype/prospect/prospect.json index d32311bc4e1..af54ca3a185 100644 --- a/erpnext/crm/doctype/prospect/prospect.json +++ b/erpnext/crm/doctype/prospect/prospect.json @@ -1,6 +1,7 @@ { "actions": [], "allow_events_in_timeline": 1, + "allow_rename": 1, "autoname": "field:company_name", "creation": "2021-08-19 00:21:06.995448", "doctype": "DocType", @@ -216,9 +217,10 @@ "options": "CRM Note" } ], + "grid_page_length": 50, "index_web_pages_for_search": 1, "links": [], - "modified": "2022-10-13 12:29:33.674561", + "modified": "2025-03-06 11:31:49.083983", "modified_by": "Administrator", "module": "CRM", "name": "Prospect", @@ -258,9 +260,9 @@ "share": 1 } ], - "sort_field": "modified", + "sort_field": "creation", "sort_order": "DESC", "states": [], "title_field": "company_name", "track_changes": 1 -} \ No newline at end of file +} diff --git a/erpnext/crm/frappe_crm_api.py b/erpnext/crm/frappe_crm_api.py new file mode 100644 index 00000000000..0bf78429b36 --- /dev/null +++ b/erpnext/crm/frappe_crm_api.py @@ -0,0 +1,171 @@ +import json + +import frappe +from frappe import _ +from frappe.custom.doctype.custom_field.custom_field import create_custom_fields + + +@frappe.whitelist() +def create_custom_fields_for_frappe_crm(): + frappe.only_for("System Manager") + custom_fields = { + "Quotation": [ + { + "fieldname": "crm_deal", + "fieldtype": "Data", + "label": "Frappe CRM Deal", + "insert_after": "party_name", + } + ], + "Customer": [ + { + "fieldname": "crm_deal", + "fieldtype": "Data", + "label": "Frappe CRM Deal", + "insert_after": "prospect_name", + } + ], + } + create_custom_fields(custom_fields, ignore_validate=True) + + +@frappe.whitelist() +def create_prospect_against_crm_deal(): + doc = frappe.form_dict + prospect = frappe.get_doc( + { + "doctype": "Prospect", + "company_name": doc.organization or doc.lead_name, + "no_of_employees": doc.no_of_employees, + "prospect_owner": doc.deal_owner, + "company": doc.erpnext_company, + "crm_deal": doc.crm_deal, + "territory": doc.territory, + "industry": doc.industry, + "website": doc.website, + "annual_revenue": doc.annual_revenue, + } + ) + + try: + prospect_name = frappe.db.get_value("Prospect", {"company_name": prospect.company_name}) + if not prospect_name: + prospect.insert() + prospect_name = prospect.name + except Exception: + frappe.log_error( + frappe.get_traceback(), + f"Error while creating prospect against CRM Deal: {frappe.form_dict.get('crm_deal_id')}", + ) + pass + + create_contacts(json.loads(doc.contacts), prospect.company_name, "Prospect", prospect_name) + create_address("Prospect", prospect_name, doc.address) + frappe.response["message"] = prospect_name + + +def create_contacts(contacts, organization=None, link_doctype=None, link_docname=None): + for c in contacts: + c = frappe._dict(c) + existing_contact = contact_exists(c.email, c.mobile_no) + if existing_contact: + contact = frappe.get_doc("Contact", existing_contact) + else: + contact = frappe.get_doc( + { + "doctype": "Contact", + "first_name": c.get("full_name"), + "gender": c.get("gender"), + "company_name": organization, + } + ) + + if c.get("email"): + contact.append("email_ids", {"email_id": c.get("email"), "is_primary": 1}) + + if c.get("mobile_no"): + contact.append("phone_nos", {"phone": c.get("mobile_no"), "is_primary_mobile_no": 1}) + + link_doc(contact, link_doctype, link_docname) + + contact.save(ignore_permissions=True) + + +def create_address(doctype, docname, address): + if not address: + return + if isinstance(address, str): + address = json.loads(address) + try: + _address = frappe.db.exists("Address", address.get("name")) + if not _address: + new_address_doc = frappe.new_doc("Address") + for field in [ + "address_title", + "address_type", + "address_line1", + "address_line2", + "city", + "county", + "state", + "pincode", + "country", + ]: + if address.get(field): + new_address_doc.set(field, address.get(field)) + + new_address_doc.append("links", {"link_doctype": doctype, "link_name": docname}) + new_address_doc.insert(ignore_mandatory=True) + return new_address_doc.name + else: + address = frappe.get_doc("Address", _address) + link_doc(address, doctype, docname) + address.save(ignore_permissions=True) + return address.name + except Exception: + frappe.log_error(frappe.get_traceback(), f"Error while creating address for {docname}") + + +def link_doc(doc, link_doctype, link_docname): + already_linked = any( + [(link.link_doctype == link_doctype and link.link_name == link_docname) for link in doc.links] + ) + if not already_linked: + doc.append( + "links", {"link_doctype": link_doctype, "link_name": link_docname, "link_title": link_docname} + ) + + +def contact_exists(email, mobile_no): + email_exist = frappe.db.exists("Contact Email", {"email_id": email}) + mobile_exist = frappe.db.exists("Contact Phone", {"phone": mobile_no}) + + doctype = "Contact Email" if email_exist else "Contact Phone" + name = email_exist or mobile_exist + + if name: + return frappe.db.get_value(doctype, name, "parent") + + return False + + +@frappe.whitelist() +def create_customer(customer_data=None): + if not customer_data: + customer_data = frappe.form_dict + + try: + customer_name = frappe.db.exists("Customer", {"customer_name": customer_data.get("customer_name")}) + if not customer_name: + customer = frappe.get_doc({"doctype": "Customer", **customer_data}).insert( + ignore_permissions=True + ) + customer_name = customer.name + + contacts = json.loads(customer_data.get("contacts")) + create_contacts(contacts, customer_name, "Customer", customer_name) + create_address("Customer", customer_name, customer_data.get("address")) + return customer_name + except Exception: + frappe.log_error(frappe.get_traceback(), "Error while creating customer against Frappe CRM Deal") + pass diff --git a/erpnext/crm/number_card/open_opportunity/open_opportunity.json b/erpnext/crm/number_card/open_opportunity/open_opportunity.json index 6e06ed64da3..33a757feb14 100644 --- a/erpnext/crm/number_card/open_opportunity/open_opportunity.json +++ b/erpnext/crm/number_card/open_opportunity/open_opportunity.json @@ -3,7 +3,7 @@ "docstatus": 0, "doctype": "Number Card", "document_type": "Opportunity", - "dynamic_filters_json": "[[\"Opportunity\",\"status\",\"=\",\"frappe.defaults.get_user_default(\\\"Company\\\")\"]]", + "dynamic_filters_json": "[[\"Opportunity\",\"company\",\"=\",\"frappe.defaults.get_user_default(\\\"Company\\\")\"]]", "filters_json": "[[\"Opportunity\",\"company\",\"=\",null,false]]", "function": "Count", "idx": 0, diff --git a/erpnext/crm/report/lead_details/lead_details.py b/erpnext/crm/report/lead_details/lead_details.py index 98dfbec18be..608be6ec912 100644 --- a/erpnext/crm/report/lead_details/lead_details.py +++ b/erpnext/crm/report/lead_details/lead_details.py @@ -55,12 +55,13 @@ def get_columns(): "options": "Company", "width": 120, }, - {"fieldname": "address", "label": _("Address"), "fieldtype": "Data", "width": 130}, - {"fieldname": "state", "label": _("State"), "fieldtype": "Data", "width": 100}, - {"fieldname": "pincode", "label": _("Postal Code"), "fieldtype": "Data", "width": 90}, + {"label": _("Address"), "fieldname": "address", "fieldtype": "Data", "width": 130}, + {"label": _("Postal Code"), "fieldname": "pincode", "fieldtype": "Data", "width": 90}, + {"label": _("City"), "fieldname": "city", "fieldtype": "Data", "width": 100}, + {"label": _("State"), "fieldname": "state", "fieldtype": "Data", "width": 100}, { - "fieldname": "country", "label": _("Country"), + "fieldname": "country", "fieldtype": "Link", "options": "Country", "width": 100, @@ -93,8 +94,9 @@ def get_data(filters): lead.owner, lead.company, (Concat_ws(", ", address.address_line1, address.address_line2)).as_("address"), - address.state, address.pincode, + address.city, + address.state, address.country, ) .where(lead.company == filters.company) diff --git a/erpnext/crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.js b/erpnext/crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.js index 36361e531df..f7c605fdd2e 100644 --- a/erpnext/crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.js +++ b/erpnext/crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.js @@ -31,6 +31,7 @@ frappe.query_reports["Opportunity Summary by Sales Stage"] = { fieldname: "status", label: __("Status"), fieldtype: "MultiSelectList", + options: ["Open", "Converted", "Quotation", "Replied"], get_data: function () { return [ { value: "Open", description: "Status" }, diff --git a/erpnext/crm/utils.py b/erpnext/crm/utils.py index c543c387c03..eb784c28ca7 100644 --- a/erpnext/crm/utils.py +++ b/erpnext/crm/utils.py @@ -84,6 +84,20 @@ def link_communications_with_prospect(communication, method): row.db_update() +def update_modified_timestamp(communication, method): + if communication.reference_doctype and communication.reference_name: + if communication.sent_or_received == "Received" and frappe.db.get_single_value( + "CRM Settings", "update_timestamp_on_new_communication" + ): + frappe.db.set_value( + dt=communication.reference_doctype, + dn=communication.reference_name, + field="modified", + val=now(), + update_modified=False, + ) + + def get_linked_prospect(reference_doctype, reference_name): prospect = None if reference_doctype == "Lead": diff --git a/erpnext/edi/__init__.py b/erpnext/edi/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/erpnext/edi/doctype/__init__.py b/erpnext/edi/doctype/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/erpnext/edi/doctype/code_list/__init__.py b/erpnext/edi/doctype/code_list/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/erpnext/edi/doctype/code_list/code_list.js b/erpnext/edi/doctype/code_list/code_list.js new file mode 100644 index 00000000000..f8b9a2003fd --- /dev/null +++ b/erpnext/edi/doctype/code_list/code_list.js @@ -0,0 +1,51 @@ +// Copyright (c) 2024, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt + +frappe.ui.form.on("Code List", { + refresh: (frm) => { + if (!frm.doc.__islocal) { + frm.add_custom_button(__("Import Genericode File"), function () { + erpnext.edi.import_genericode(frm); + }); + } + }, + setup: (frm) => { + frm.savetrash = () => { + frm.validate_form_action("Delete"); + frappe.confirm( + __( + "Are you sure you want to delete {0}?

This action will also delete all associated Common Code documents.

", + [frm.docname.bold()] + ), + function () { + return frappe.call({ + method: "frappe.client.delete", + args: { + doctype: frm.doctype, + name: frm.docname, + }, + freeze: true, + freeze_message: __("Deleting {0} and all associated Common Code documents...", [ + frm.docname, + ]), + callback: function (r) { + if (!r.exc) { + frappe.utils.play_sound("delete"); + frappe.model.clear_doc(frm.doctype, frm.docname); + window.history.back(); + } + }, + }); + } + ); + }; + + frm.set_query("default_common_code", function (doc) { + return { + filters: { + code_list: doc.name, + }, + }; + }); + }, +}); diff --git a/erpnext/edi/doctype/code_list/code_list.json b/erpnext/edi/doctype/code_list/code_list.json new file mode 100644 index 00000000000..ffcc2f2b605 --- /dev/null +++ b/erpnext/edi/doctype/code_list/code_list.json @@ -0,0 +1,112 @@ +{ + "actions": [], + "allow_copy": 1, + "allow_rename": 1, + "autoname": "prompt", + "creation": "2024-09-29 06:55:03.920375", + "doctype": "DocType", + "engine": "InnoDB", + "field_order": [ + "title", + "canonical_uri", + "url", + "default_common_code", + "column_break_nkls", + "version", + "publisher", + "publisher_id", + "section_break_npxp", + "description" + ], + "fields": [ + { + "fieldname": "title", + "fieldtype": "Data", + "label": "Title" + }, + { + "fieldname": "publisher", + "fieldtype": "Data", + "in_standard_filter": 1, + "label": "Publisher" + }, + { + "columns": 1, + "fieldname": "version", + "fieldtype": "Data", + "in_list_view": 1, + "label": "Version" + }, + { + "fieldname": "description", + "fieldtype": "Small Text", + "label": "Description" + }, + { + "fieldname": "canonical_uri", + "fieldtype": "Data", + "in_list_view": 1, + "label": "Canonical URI" + }, + { + "fieldname": "column_break_nkls", + "fieldtype": "Column Break" + }, + { + "fieldname": "section_break_npxp", + "fieldtype": "Section Break" + }, + { + "fieldname": "publisher_id", + "fieldtype": "Data", + "in_standard_filter": 1, + "label": "Publisher ID" + }, + { + "fieldname": "url", + "fieldtype": "Data", + "label": "URL", + "options": "URL" + }, + { + "description": "This value shall be used when no matching Common Code for a record is found.", + "fieldname": "default_common_code", + "fieldtype": "Link", + "label": "Default Common Code", + "options": "Common Code" + } + ], + "index_web_pages_for_search": 1, + "links": [ + { + "link_doctype": "Common Code", + "link_fieldname": "code_list" + } + ], + "modified": "2024-11-16 17:01:40.260293", + "modified_by": "Administrator", + "module": "EDI", + "name": "Code List", + "naming_rule": "Set by user", + "owner": "Administrator", + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "share": 1, + "write": 1 + } + ], + "search_fields": "description", + "show_title_field_in_link": 1, + "sort_field": "creation", + "sort_order": "DESC", + "states": [], + "title_field": "title" +} \ No newline at end of file diff --git a/erpnext/edi/doctype/code_list/code_list.py b/erpnext/edi/doctype/code_list/code_list.py new file mode 100644 index 00000000000..8957c6565b9 --- /dev/null +++ b/erpnext/edi/doctype/code_list/code_list.py @@ -0,0 +1,125 @@ +# Copyright (c) 2024, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +from typing import TYPE_CHECKING + +import frappe +from frappe.model.document import Document + +if TYPE_CHECKING: + from lxml.etree import Element + + +class CodeList(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 + + canonical_uri: DF.Data | None + default_common_code: DF.Link | None + description: DF.SmallText | None + publisher: DF.Data | None + publisher_id: DF.Data | None + title: DF.Data | None + url: DF.Data | None + version: DF.Data | None + # end: auto-generated types + + def on_trash(self): + if not frappe.flags.in_bulk_delete: + self.__delete_linked_docs() + + def __delete_linked_docs(self): + self.db_set("default_common_code", None) + + linked_docs = frappe.get_all( + "Common Code", + filters={"code_list": self.name}, + fields=["name"], + ) + + for doc in linked_docs: + frappe.delete_doc("Common Code", doc.name) + + def get_codes_for(self, doctype: str, name: str) -> tuple[str]: + """Get the applicable codes for a doctype and name""" + return get_codes_for(self.name, doctype, name) + + def get_docnames_for(self, doctype: str, code: str) -> tuple[str]: + """Get the mapped docnames for a doctype and code""" + return get_docnames_for(self.name, doctype, code) + + def get_default_code(self) -> str | None: + """Get the default common code for this code list""" + return ( + frappe.db.get_value("Common Code", self.default_common_code, "common_code") + if self.default_common_code + else None + ) + + def from_genericode(self, root: "Element"): + """Extract Code List details from genericode XML""" + self.title = root.find(".//Identification/ShortName").text + self.version = root.find(".//Identification/Version").text + self.canonical_uri = root.find(".//CanonicalUri").text + # optionals + self.description = getattr(root.find(".//Identification/LongName"), "text", None) + self.publisher = getattr(root.find(".//Identification/Agency/ShortName"), "text", None) + if not self.publisher: + self.publisher = getattr(root.find(".//Identification/Agency/LongName"), "text", None) + self.publisher_id = getattr(root.find(".//Identification/Agency/Identifier"), "text", None) + self.url = getattr(root.find(".//Identification/LocationUri"), "text", None) + + +def get_codes_for(code_list: str, doctype: str, name: str) -> tuple[str]: + """Return the common code for a given record""" + CommonCode = frappe.qb.DocType("Common Code") + DynamicLink = frappe.qb.DocType("Dynamic Link") + + codes = ( + frappe.qb.from_(CommonCode) + .join(DynamicLink) + .on((CommonCode.name == DynamicLink.parent) & (DynamicLink.parenttype == "Common Code")) + .select(CommonCode.common_code) + .where( + (DynamicLink.link_doctype == doctype) + & (DynamicLink.link_name == name) + & (CommonCode.code_list == code_list) + ) + .distinct() + .orderby(CommonCode.common_code) + ).run() + + return tuple(c[0] for c in codes) if codes else () + + +def get_docnames_for(code_list: str, doctype: str, code: str) -> tuple[str]: + """Return the record name for a given common code""" + CommonCode = frappe.qb.DocType("Common Code") + DynamicLink = frappe.qb.DocType("Dynamic Link") + + docnames = ( + frappe.qb.from_(CommonCode) + .join(DynamicLink) + .on((CommonCode.name == DynamicLink.parent) & (DynamicLink.parenttype == "Common Code")) + .select(DynamicLink.link_name) + .where( + (DynamicLink.link_doctype == doctype) + & (CommonCode.common_code == code) + & (CommonCode.code_list == code_list) + ) + .distinct() + .orderby(DynamicLink.idx) + ).run() + + return tuple(d[0] for d in docnames) if docnames else () + + +def get_default_code(code_list: str) -> str | None: + """Return the default common code for a given code list""" + code_id = frappe.db.get_value("Code List", code_list, "default_common_code") + return frappe.db.get_value("Common Code", code_id, "common_code") if code_id else None diff --git a/erpnext/edi/doctype/code_list/code_list_import.js b/erpnext/edi/doctype/code_list/code_list_import.js new file mode 100644 index 00000000000..4a33f3e2fe6 --- /dev/null +++ b/erpnext/edi/doctype/code_list/code_list_import.js @@ -0,0 +1,218 @@ +frappe.provide("erpnext.edi"); + +erpnext.edi.import_genericode = function (listview_or_form) { + let doctype = "Code List"; + let docname = undefined; + if (listview_or_form.doc !== undefined) { + docname = listview_or_form.doc.name; + } + new frappe.ui.FileUploader({ + method: "erpnext.edi.doctype.code_list.code_list_import.import_genericode", + doctype: doctype, + docname: docname, + allow_toggle_private: false, + allow_take_photo: false, + on_success: function (_file_doc, r) { + listview_or_form.refresh(); + show_column_selection_dialog(r.message); + }, + }); +}; + +function show_column_selection_dialog(context) { + let title_description = __("If there is no title column, use the code column for the title."); + let default_title = get_default(context.columns, ["name", "Name", "code-name", "scheme-name"]); + let fields = [ + { + fieldtype: "HTML", + fieldname: "code_list_info", + options: `
${__( + "You are importing data for the code list:" + )} ${frappe.utils.get_form_link( + "Code List", + context.code_list, + true, + context.code_list_title + )}
`, + }, + { + fieldtype: "Section Break", + }, + { + fieldname: "import_column", + label: __("Import"), + fieldtype: "Column Break", + }, + { + fieldname: "title_column", + label: __("as Title"), + fieldtype: "Select", + reqd: 1, + options: context.columns, + default: default_title, + description: default_title ? null : title_description, + }, + { + fieldname: "code_column", + label: __("as Code"), + fieldtype: "Select", + options: context.columns, + reqd: 1, + default: get_default(context.columns, ["code", "Code", "value"]), + }, + { + fieldname: "filters_column", + label: __("Filter"), + fieldtype: "Column Break", + }, + ]; + + if (context.columns.length > 2) { + fields.splice(5, 0, { + fieldname: "description_column", + label: __("as Description"), + fieldtype: "Select", + options: [null].concat(context.columns), + default: get_default(context.columns, [ + "description", + "Description", + "remark", + __("description"), + __("Description"), + ]), + }); + } + + // Add filterable columns + for (let column in context.filterable_columns) { + fields.push({ + fieldname: `filter_${column}`, + label: __("by {}", [column]), + fieldtype: "Select", + options: [null].concat(context.filterable_columns[column]), + }); + } + + fields.push( + { + fieldname: "preview_section", + label: __("Preview"), + fieldtype: "Section Break", + }, + { + fieldname: "preview_html", + fieldtype: "HTML", + } + ); + + let d = new frappe.ui.Dialog({ + title: __("Select Columns and Filters"), + fields: fields, + primary_action_label: __("Import"), + size: "large", // This will make the modal wider + primary_action(values) { + let filters = {}; + for (let field in values) { + if (field.startsWith("filter_") && values[field]) { + filters[field.replace("filter_", "")] = values[field]; + } + } + frappe + .xcall("erpnext.edi.doctype.code_list.code_list_import.process_genericode_import", { + code_list_name: context.code_list, + file_name: context.file, + code_column: values.code_column, + title_column: values.title_column, + description_column: values.description_column, + filters: filters, + }) + .then((count) => { + frappe.msgprint(__("Import completed. {0} common codes created.", [count])); + }); + d.hide(); + }, + }); + + d.fields_dict.code_column.df.onchange = () => update_preview(d, context); + d.fields_dict.title_column.df.onchange = (e) => { + let field = d.fields_dict.title_column; + if (!e.target.value) { + field.df.description = title_description; + field.refresh(); + } else { + field.df.description = null; + field.refresh(); + } + update_preview(d, context); + }; + + // Add onchange events for filterable columns + for (let column in context.filterable_columns) { + d.fields_dict[`filter_${column}`].df.onchange = () => update_preview(d, context); + } + + d.show(); + update_preview(d, context); +} + +/** + * Return the first key from the keys array that is found in the columns array. + */ +function get_default(columns, keys) { + return keys.find((key) => columns.includes(key)); +} + +function update_preview(dialog, context) { + let code_column = dialog.get_value("code_column"); + let title_column = dialog.get_value("title_column"); + let description_column = dialog.get_value("description_column"); + + let html = ''; + if (title_column) html += ``; + if (code_column) html += ``; + if (description_column) html += ``; + + // Add headers for filterable columns + for (let column in context.filterable_columns) { + if (dialog.get_value(`filter_${column}`)) { + html += ``; + } + } + + html += ""; + + for (let i = 0; i < 3; i++) { + html += ""; + if (title_column) { + let title = context.example_values[title_column][i] || ""; + html += ``; + } + if (code_column) { + let code = context.example_values[code_column][i] || ""; + html += ``; + } + if (description_column) { + let description = context.example_values[description_column][i] || ""; + html += ``; + } + + // Add values for filterable columns + for (let column in context.filterable_columns) { + if (dialog.get_value(`filter_${column}`)) { + let value = context.example_values[column][i] || ""; + html += ``; + } + } + + html += ""; + } + + html += "
${__("Title")}${__("Code")}${__("Description")}${__(column)}
${truncate(title)}${truncate(code)}${truncate(description)}${truncate(value)}
"; + + dialog.fields_dict.preview_html.$wrapper.html(html); +} + +function truncate(value, maxLength = 40) { + if (typeof value !== "string") return ""; + return value.length > maxLength ? value.substring(0, maxLength - 3) + "..." : value; +} diff --git a/erpnext/edi/doctype/code_list/code_list_import.py b/erpnext/edi/doctype/code_list/code_list_import.py new file mode 100644 index 00000000000..50df3be471e --- /dev/null +++ b/erpnext/edi/doctype/code_list/code_list_import.py @@ -0,0 +1,140 @@ +import json + +import frappe +import requests +from frappe import _ +from lxml import etree + +URL_PREFIXES = ("http://", "https://") + + +@frappe.whitelist() +def import_genericode(): + doctype = "Code List" + docname = frappe.form_dict.docname + content = frappe.local.uploaded_file + + # recover the content, if it's a link + if (file_url := frappe.local.uploaded_file_url) and file_url.startswith(URL_PREFIXES): + try: + # If it's a URL, fetch the content and make it a local file (for durable audit) + response = requests.get(frappe.local.uploaded_file_url) + response.raise_for_status() + frappe.local.uploaded_file = content = response.content + frappe.local.uploaded_filename = frappe.local.uploaded_file_url.split("/")[-1] + frappe.local.uploaded_file_url = None + except Exception as e: + frappe.throw(f"
{e!s}
", title=_("Fetching Error")) + + if file_url := frappe.local.uploaded_file_url: + file_path = frappe.utils.file_manager.get_file_path(file_url) + with open(file_path.encode(), mode="rb") as f: + content = f.read() + + # Parse the xml content + parser = etree.XMLParser(remove_blank_text=True) + try: + root = etree.fromstring(content, parser=parser) + except Exception as e: + frappe.throw(f"
{e!s}
", title=_("Parsing Error")) + + # Extract the name (CanonicalVersionUri) from the parsed XML + name = root.find(".//CanonicalVersionUri").text + docname = docname or name + + if frappe.db.exists(doctype, docname): + code_list = frappe.get_doc(doctype, docname) + if code_list.name != name: + frappe.throw(_("The uploaded file does not match the selected Code List.")) + else: + # Create a new Code List document with the extracted name + code_list = frappe.new_doc(doctype) + code_list.name = name + + code_list.from_genericode(root) + code_list.save() + + # Attach the file and provide a recoverable identifier + file_doc = frappe.get_doc( + { + "doctype": "File", + "attached_to_doctype": "Code List", + "attached_to_name": code_list.name, + "folder": "Home/Attachments", + "file_name": frappe.local.uploaded_filename, + "file_url": frappe.local.uploaded_file_url, + "is_private": 1, + "content": content, + } + ).save() + + # Get available columns and example values + columns, example_values, filterable_columns = get_genericode_columns_and_examples(root) + + return { + "code_list": code_list.name, + "code_list_title": code_list.title, + "file": file_doc.name, + "columns": columns, + "example_values": example_values, + "filterable_columns": filterable_columns, + } + + +@frappe.whitelist() +def process_genericode_import( + code_list_name: str, + file_name: str, + code_column: str, + title_column: str | None = None, + description_column: str | None = None, + filters: str | None = None, +): + from erpnext.edi.doctype.common_code.common_code import import_genericode + + column_map = {"code": code_column, "title": title_column, "description": description_column} + + return import_genericode(code_list_name, file_name, column_map, json.loads(filters) if filters else None) + + +def get_genericode_columns_and_examples(root): + columns = [] + example_values = {} + filterable_columns = {} + + # Get column names + for column in root.findall(".//Column"): + column_id = column.get("Id") + columns.append(column_id) + example_values[column_id] = [] + filterable_columns[column_id] = set() + + # Get all values and count unique occurrences + for row in root.findall(".//SimpleCodeList/Row"): + for value in row.findall("Value"): + column_id = value.get("ColumnRef") + if column_id not in columns: + # Handle undeclared column + columns.append(column_id) + example_values[column_id] = [] + filterable_columns[column_id] = set() + + simple_value = value.find("./SimpleValue") + if simple_value is None: + continue + + filterable_columns[column_id].add(simple_value.text) + + # Get example values (up to 3) and filter columns with cardinality <= 5 + for row in root.findall(".//SimpleCodeList/Row")[:3]: + for value in row.findall("Value"): + column_id = value.get("ColumnRef") + simple_value = value.find("./SimpleValue") + if simple_value is None: + continue + + example_values[column_id].append(simple_value.text) + + filterable_columns = {k: list(v) for k, v in filterable_columns.items() if len(v) <= 5} + + return columns, example_values, filterable_columns diff --git a/erpnext/edi/doctype/code_list/code_list_list.js b/erpnext/edi/doctype/code_list/code_list_list.js new file mode 100644 index 00000000000..08125de2903 --- /dev/null +++ b/erpnext/edi/doctype/code_list/code_list_list.js @@ -0,0 +1,8 @@ +frappe.listview_settings["Code List"] = { + onload: function (listview) { + listview.page.add_inner_button(__("Import Genericode File"), function () { + erpnext.edi.import_genericode(listview); + }); + }, + hide_name_column: true, +}; diff --git a/erpnext/edi/doctype/code_list/test_code_list.py b/erpnext/edi/doctype/code_list/test_code_list.py new file mode 100644 index 00000000000..d37b1ee8f5a --- /dev/null +++ b/erpnext/edi/doctype/code_list/test_code_list.py @@ -0,0 +1,9 @@ +# Copyright (c) 2024, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt + +# import frappe +from frappe.tests.utils import FrappeTestCase + + +class TestCodeList(FrappeTestCase): + pass diff --git a/erpnext/edi/doctype/common_code/__init__.py b/erpnext/edi/doctype/common_code/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/erpnext/edi/doctype/common_code/common_code.js b/erpnext/edi/doctype/common_code/common_code.js new file mode 100644 index 00000000000..646d5c85b74 --- /dev/null +++ b/erpnext/edi/doctype/common_code/common_code.js @@ -0,0 +1,8 @@ +// Copyright (c) 2024, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt + +// frappe.ui.form.on("Common Code", { +// refresh(frm) { + +// }, +// }); diff --git a/erpnext/edi/doctype/common_code/common_code.json b/erpnext/edi/doctype/common_code/common_code.json new file mode 100644 index 00000000000..b2cb43fa575 --- /dev/null +++ b/erpnext/edi/doctype/common_code/common_code.json @@ -0,0 +1,103 @@ +{ + "actions": [], + "autoname": "hash", + "creation": "2024-09-29 07:01:18.133067", + "doctype": "DocType", + "engine": "InnoDB", + "field_order": [ + "code_list", + "title", + "common_code", + "description", + "column_break_wxsw", + "additional_data", + "section_break_rhgh", + "applies_to" + ], + "fields": [ + { + "fieldname": "code_list", + "fieldtype": "Link", + "in_list_view": 1, + "in_standard_filter": 1, + "label": "Code List", + "options": "Code List", + "reqd": 1, + "search_index": 1 + }, + { + "fieldname": "title", + "fieldtype": "Data", + "in_list_view": 1, + "in_standard_filter": 1, + "label": "Title", + "length": 300, + "reqd": 1 + }, + { + "fieldname": "column_break_wxsw", + "fieldtype": "Column Break" + }, + { + "fieldname": "section_break_rhgh", + "fieldtype": "Section Break" + }, + { + "fieldname": "applies_to", + "fieldtype": "Table", + "label": "Applies To", + "options": "Dynamic Link" + }, + { + "fieldname": "common_code", + "fieldtype": "Data", + "in_list_view": 1, + "in_standard_filter": 1, + "label": "Common Code", + "length": 300, + "reqd": 1, + "search_index": 1 + }, + { + "fieldname": "additional_data", + "fieldtype": "Code", + "label": "Additional Data", + "max_height": "190px", + "read_only": 1 + }, + { + "fieldname": "description", + "fieldtype": "Small Text", + "in_list_view": 1, + "label": "Description", + "max_height": "60px" + } + ], + "links": [], + "modified": "2024-11-06 07:46:17.175687", + "modified_by": "Administrator", + "module": "EDI", + "name": "Common Code", + "naming_rule": "Random", + "owner": "Administrator", + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "share": 1, + "write": 1 + } + ], + "search_fields": "common_code,description", + "show_title_field_in_link": 1, + "sort_field": "creation", + "sort_order": "DESC", + "states": [], + "title_field": "title" +} \ No newline at end of file diff --git a/erpnext/edi/doctype/common_code/common_code.py b/erpnext/edi/doctype/common_code/common_code.py new file mode 100644 index 00000000000..d558b2d282f --- /dev/null +++ b/erpnext/edi/doctype/common_code/common_code.py @@ -0,0 +1,114 @@ +# Copyright (c) 2024, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +import hashlib + +import frappe +from frappe import _ +from frappe.model.document import Document +from frappe.utils.data import get_link_to_form +from lxml import etree + + +class CommonCode(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.core.doctype.dynamic_link.dynamic_link import DynamicLink + from frappe.types import DF + + additional_data: DF.Code | None + applies_to: DF.Table[DynamicLink] + code_list: DF.Link + common_code: DF.Data + description: DF.SmallText | None + title: DF.Data + # end: auto-generated types + + def validate(self): + self.validate_distinct_references() + + def validate_distinct_references(self): + """Ensure no two Common Codes of the same Code List are linked to the same document.""" + for link in self.applies_to: + existing_links = frappe.get_all( + "Common Code", + filters=[ + ["name", "!=", self.name], + ["code_list", "=", self.code_list], + ["Dynamic Link", "link_doctype", "=", link.link_doctype], + ["Dynamic Link", "link_name", "=", link.link_name], + ], + fields=["name", "common_code"], + ) + + if existing_links: + existing_link = existing_links[0] + frappe.throw( + _("{0} {1} is already linked to Common Code {2}.").format( + link.link_doctype, + link.link_name, + get_link_to_form("Common Code", existing_link["name"], existing_link["common_code"]), + ) + ) + + def from_genericode(self, column_map: dict, xml_element: "etree.Element"): + """Populate the Common Code document from a genericode XML element + + Args: + column_map (dict): A mapping of column names to XML column references. Keys: code, title, description + code (etree.Element): The XML element representing a code in the genericode file + """ + title_column = column_map.get("title") + code_column = column_map["code"] + description_column = column_map.get("description") + + self.common_code = xml_element.find(f"./Value[@ColumnRef='{code_column}']/SimpleValue").text + + if title_column: + simple_value_title = xml_element.find(f"./Value[@ColumnRef='{title_column}']/SimpleValue") + self.title = simple_value_title.text if simple_value_title is not None else self.common_code + + if description_column: + simple_value_descr = xml_element.find(f"./Value[@ColumnRef='{description_column}']/SimpleValue") + self.description = simple_value_descr.text if simple_value_descr is not None else None + + self.additional_data = etree.tostring(xml_element, encoding="unicode", pretty_print=True) + + +def simple_hash(input_string, length=6): + return hashlib.blake2b(input_string.encode(), digest_size=length // 2).hexdigest() + + +def import_genericode(code_list: str, file_name: str, column_map: dict, filters: dict | None = None): + """Import genericode file and create Common Code entries""" + file_path = frappe.utils.file_manager.get_file_path(file_name) + parser = etree.XMLParser(remove_blank_text=True) + tree = etree.parse(file_path, parser=parser) + root = tree.getroot() + + # Construct the XPath expression + xpath_expr = ".//SimpleCodeList/Row" + filter_conditions = [ + f"Value[@ColumnRef='{column_ref}']/SimpleValue='{value}'" for column_ref, value in filters.items() + ] + if filter_conditions: + xpath_expr += "[" + " and ".join(filter_conditions) + "]" + + elements = root.xpath(xpath_expr) + total_elements = len(elements) + for i, xml_element in enumerate(elements, start=1): + common_code: "CommonCode" = frappe.new_doc("Common Code") + common_code.code_list = code_list + common_code.from_genericode(column_map, xml_element) + common_code.save() + frappe.publish_progress(i / total_elements * 100, title=_("Importing Common Codes")) + + return total_elements + + +def on_doctype_update(): + frappe.db.add_index("Common Code", ["code_list", "common_code"]) diff --git a/erpnext/edi/doctype/common_code/common_code_list.js b/erpnext/edi/doctype/common_code/common_code_list.js new file mode 100644 index 00000000000..de1b665b161 --- /dev/null +++ b/erpnext/edi/doctype/common_code/common_code_list.js @@ -0,0 +1,8 @@ +frappe.listview_settings["Common Code"] = { + onload: function (listview) { + listview.page.add_inner_button(__("Import Genericode File"), function () { + erpnext.edi.import_genericode(listview); + }); + }, + hide_name_column: true, +}; diff --git a/erpnext/edi/doctype/common_code/test_common_code.py b/erpnext/edi/doctype/common_code/test_common_code.py new file mode 100644 index 00000000000..e9c67b2cc82 --- /dev/null +++ b/erpnext/edi/doctype/common_code/test_common_code.py @@ -0,0 +1,9 @@ +# Copyright (c) 2024, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt + +# import frappe +from frappe.tests.utils import FrappeTestCase + + +class TestCommonCode(FrappeTestCase): + pass diff --git a/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_connector.py b/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_connector.py index f44fad333cf..cb9f49e8c28 100644 --- a/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_connector.py +++ b/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_connector.py @@ -69,23 +69,7 @@ class PlaidConnector: else: return response["link_token"] - def auth(self): - try: - self.client.Auth.get(self.access_token) - except ItemError as e: - if e.code == "ITEM_LOGIN_REQUIRED": - pass - except APIError as e: - if e.code == "PLANNED_MAINTENANCE": - pass - except requests.Timeout: - pass - except Exception as e: - frappe.log_error("Plaid: Authentication error") - frappe.throw(_(str(e)), title=_("Authentication Failed")) - def get_transactions(self, start_date, end_date, account_id=None): - self.auth() kwargs = dict(access_token=self.access_token, start_date=start_date, end_date=end_date) if account_id: kwargs.update(dict(account_ids=[account_id])) diff --git a/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.js b/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.js index fc3bf804245..04215e92234 100644 --- a/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.js +++ b/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.js @@ -25,7 +25,12 @@ frappe.ui.form.on("Plaid Settings", { method: "erpnext.erpnext_integrations.doctype.plaid_settings.plaid_settings.enqueue_synchronization", freeze: true, callback: () => { - let bank_transaction_link = 'Bank Transaction'; + let bank_transaction_link = frappe.utils.get_form_link( + "Bank Transaction", + "", + true, + __("Bank Transaction") + ); frappe.msgprint({ title: __("Sync Started"), diff --git a/erpnext/erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.js b/erpnext/erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.js deleted file mode 100644 index f9364edf5aa..00000000000 --- a/erpnext/erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors -// For license information, please see license.txt - -frappe.ui.form.on("QuickBooks Migrator", { - connect: function (frm) { - // OAuth requires user intervention to provide application access permissionsto requested scope - // Here we open a new window and redirect user to the authorization url. - // After user grants us permission to access. We will set authorization details on this doc which will force refresh. - window.open(frm.doc.authorization_url); - }, - fetch_data: function (frm) { - frm.call("migrate"); - }, - onload: function (frm) { - frm.trigger("set_indicator"); - var domain = frappe.urllib.get_base_url(); - var redirect_url = `${domain}/api/method/erpnext.erpnext_integrations.doctype.quickbooks_migrator.quickbooks_migrator.callback`; - if (frm.doc.redirect_url != redirect_url) { - frm.set_value("redirect_url", redirect_url); - } - // Instead of changing percentage width and message of single progress bar - // Show a different porgress bar for every action after some time remove the finished progress bar - // Former approach causes the progress bar to dance back and forth. - frm.trigger("set_indicator"); - frappe.realtime.on("quickbooks_progress_update", function (data) { - frm.dashboard.show_progress(data.message, (data.count / data.total) * 100, data.message); - if (data.count == data.total) { - window.setTimeout( - function (message) { - frm.dashboard.hide_progress(message); - }, - 1500, - data.messsage - ); - } - }); - }, - refresh: function (frm) { - frm.trigger("set_indicator"); - if (!frm.doc.access_token) { - // Unset access_token signifies that we don't have enough information to connect to quickbooks api and fetch data - if (frm.doc.authorization_url) { - frm.add_custom_button(__("Connect to Quickbooks"), function () { - frm.trigger("connect"); - }); - } - } - if (frm.doc.access_token) { - // If we have access_token that means we also have refresh_token we don't need user intervention anymore - // All we need now is a Company from erpnext - frm.remove_custom_button(__("Connect to Quickbooks")); - - frm.toggle_display("company_settings", 1); - frm.set_df_property("company", "reqd", 1); - if (frm.doc.company) { - frm.add_custom_button(__("Fetch Data"), function () { - frm.trigger("fetch_data"); - }); - } - } - }, - set_indicator: function (frm) { - var indicator_map = { - "Connecting to QuickBooks": [__("Connecting to QuickBooks"), "orange"], - "Connected to QuickBooks": [__("Connected to QuickBooks"), "green"], - "In Progress": [__("In Progress"), "orange"], - Complete: [__("Complete"), "green"], - Failed: [__("Failed"), "red"], - }; - if (frm.doc.status) { - var indicator = indicator_map[frm.doc.status]; - var label = indicator[0]; - var color = indicator[1]; - frm.page.set_indicator(label, color); - } - }, -}); diff --git a/erpnext/erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.json b/erpnext/erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.json deleted file mode 100644 index 5428177914b..00000000000 --- a/erpnext/erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.json +++ /dev/null @@ -1,213 +0,0 @@ -{ - "beta": 1, - "creation": "2018-07-10 14:48:16.757030", - "doctype": "DocType", - "editable_grid": 1, - "engine": "InnoDB", - "field_order": [ - "status", - "application_settings", - "client_id", - "redirect_url", - "token_endpoint", - "application_column_break", - "client_secret", - "scope", - "api_endpoint", - "authorization_settings", - "authorization_endpoint", - "refresh_token", - "code", - "authorization_column_break", - "authorization_url", - "access_token", - "quickbooks_company_id", - "company_settings", - "company", - "default_shipping_account", - "default_warehouse", - "company_column_break", - "default_cost_center", - "undeposited_funds_account" - ], - "fields": [ - { - "fieldname": "status", - "fieldtype": "Select", - "hidden": 1, - "label": "Status", - "options": "Connecting to QuickBooks\nConnected to QuickBooks\nIn Progress\nComplete\nFailed" - }, - { - "collapsible": 1, - "collapsible_depends_on": "eval:doc.client_id && doc.client_secret && doc.redirect_url", - "fieldname": "application_settings", - "fieldtype": "Section Break", - "label": "Application Settings" - }, - { - "fieldname": "client_id", - "fieldtype": "Data", - "in_list_view": 1, - "label": "Client ID", - "reqd": 1 - }, - { - "fieldname": "redirect_url", - "fieldtype": "Data", - "in_list_view": 1, - "label": "Redirect URL", - "reqd": 1 - }, - { - "default": "https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer", - "fieldname": "token_endpoint", - "fieldtype": "Data", - "label": "Token Endpoint", - "read_only": 1, - "reqd": 1 - }, - { - "fieldname": "application_column_break", - "fieldtype": "Column Break" - }, - { - "fieldname": "client_secret", - "fieldtype": "Data", - "in_list_view": 1, - "label": "Client Secret", - "reqd": 1 - }, - { - "default": "com.intuit.quickbooks.accounting", - "fieldname": "scope", - "fieldtype": "Data", - "in_list_view": 1, - "label": "Scope", - "read_only": 1, - "reqd": 1 - }, - { - "default": "https://quickbooks.api.intuit.com/v3", - "fieldname": "api_endpoint", - "fieldtype": "Data", - "label": "API Endpoint", - "read_only": 1, - "reqd": 1 - }, - { - "collapsible": 1, - "fieldname": "authorization_settings", - "fieldtype": "Section Break", - "label": "Authorization Settings" - }, - { - "default": "https://appcenter.intuit.com/connect/oauth2", - "fieldname": "authorization_endpoint", - "fieldtype": "Data", - "label": "Authorization Endpoint", - "read_only": 1, - "reqd": 1 - }, - { - "fieldname": "refresh_token", - "fieldtype": "Small Text", - "hidden": 1, - "label": "Refresh Token" - }, - { - "fieldname": "code", - "fieldtype": "Data", - "hidden": 1, - "label": "Code" - }, - { - "fieldname": "authorization_column_break", - "fieldtype": "Column Break" - }, - { - "fieldname": "authorization_url", - "fieldtype": "Data", - "label": "Authorization URL", - "read_only": 1, - "reqd": 1 - }, - { - "fieldname": "access_token", - "fieldtype": "Small Text", - "hidden": 1, - "label": "Access Token" - }, - { - "fieldname": "quickbooks_company_id", - "fieldtype": "Data", - "hidden": 1, - "label": "Quickbooks Company ID" - }, - { - "fieldname": "company_settings", - "fieldtype": "Section Break", - "hidden": 1, - "label": "Company Settings" - }, - { - "fieldname": "company", - "fieldtype": "Link", - "label": "Company", - "options": "Company" - }, - { - "fieldname": "default_shipping_account", - "fieldtype": "Link", - "hidden": 1, - "label": "Default Shipping Account", - "options": "Account" - }, - { - "fieldname": "default_warehouse", - "fieldtype": "Link", - "hidden": 1, - "label": "Default Warehouse", - "options": "Warehouse" - }, - { - "fieldname": "company_column_break", - "fieldtype": "Column Break" - }, - { - "fieldname": "default_cost_center", - "fieldtype": "Link", - "hidden": 1, - "label": "Default Cost Center", - "options": "Cost Center" - }, - { - "fieldname": "undeposited_funds_account", - "fieldtype": "Link", - "hidden": 1, - "label": "Undeposited Funds Account", - "options": "Account" - } - ], - "issingle": 1, - "modified": "2019-08-07 15:26:00.653433", - "modified_by": "Administrator", - "module": "ERPNext Integrations", - "name": "QuickBooks Migrator", - "owner": "Administrator", - "permissions": [ - { - "create": 1, - "delete": 1, - "email": 1, - "print": 1, - "read": 1, - "role": "System Manager", - "share": 1, - "write": 1 - } - ], - "quick_entry": 1, - "sort_field": "modified", - "sort_order": "DESC" -} \ No newline at end of file diff --git a/erpnext/erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.py b/erpnext/erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.py deleted file mode 100644 index 5175cbdf6a9..00000000000 --- a/erpnext/erpnext_integrations/doctype/quickbooks_migrator/quickbooks_migrator.py +++ /dev/null @@ -1,1421 +0,0 @@ -# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors -# For license information, please see license.txt - - -import json -import traceback - -import frappe -import requests -from frappe import _ -from frappe.model.document import Document -from requests_oauthlib import OAuth2Session - -from erpnext import encode_company_abbr - - -# QuickBooks requires a redirect URL, User will be redirect to this URL -# This will be a GET request -# Request parameters will have two parameters `code` and `realmId` -# `code` is required to acquire refresh_token and access_token -# `realmId` is the QuickBooks Company ID. It is Needed to actually fetch data. -@frappe.whitelist() -def callback(*args, **kwargs): - migrator = frappe.get_doc("QuickBooks Migrator") - migrator.set_indicator("Connecting to QuickBooks") - migrator.code = kwargs.get("code") - migrator.quickbooks_company_id = kwargs.get("realmId") - migrator.save() - migrator.get_tokens() - frappe.db.commit() - migrator.set_indicator("Connected to QuickBooks") - # We need this page to automatically close afterwards - frappe.respond_as_web_page("Quickbooks Authentication", html="") - - -class QuickBooksMigrator(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 - - access_token: DF.SmallText | None - api_endpoint: DF.Data - authorization_endpoint: DF.Data - authorization_url: DF.Data - client_id: DF.Data - client_secret: DF.Data - code: DF.Data | None - company: DF.Link | None - default_cost_center: DF.Link | None - default_shipping_account: DF.Link | None - default_warehouse: DF.Link | None - quickbooks_company_id: DF.Data | None - redirect_url: DF.Data - refresh_token: DF.SmallText | None - scope: DF.Data - status: DF.Literal[ - "Connecting to QuickBooks", "Connected to QuickBooks", "In Progress", "Complete", "Failed" - ] - token_endpoint: DF.Data - undeposited_funds_account: DF.Link | None - # end: auto-generated types - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.oauth = OAuth2Session(client_id=self.client_id, redirect_uri=self.redirect_url, scope=self.scope) - if not self.authorization_url and self.authorization_endpoint: - self.authorization_url = self.oauth.authorization_url(self.authorization_endpoint)[0] - - def on_update(self): - if self.company: - # We need a Cost Center corresponding to the selected erpnext Company - self.default_cost_center = frappe.db.get_value("Company", self.company, "cost_center") - company_warehouses = frappe.get_all("Warehouse", filters={"company": self.company, "is_group": 0}) - if company_warehouses: - self.default_warehouse = company_warehouses[0].name - if self.authorization_endpoint: - self.authorization_url = self.oauth.authorization_url(self.authorization_endpoint)[0] - - @frappe.whitelist() - def migrate(self): - frappe.enqueue_doc("QuickBooks Migrator", "QuickBooks Migrator", "_migrate", queue="long") - - def _migrate(self): - try: - self.set_indicator("In Progress") - # Add quickbooks_id field to every document so that we can lookup by Id reference - # provided by documents in API responses. - # Also add a company field to Customer Supplier and Item - self._make_custom_fields() - - self._migrate_accounts() - - # Some Quickbooks Entities like Advance Payment, Payment aren't available firectly from API - # Sales Invoice also sometimes needs to be saved as a Journal Entry - # (When Item table is not present, This appens when Invoice is attached with a "StatementCharge" "ReimburseCharge - # Details of both of these cannot be fetched from API) - # Their GL entries need to be generated from GeneralLedger Report. - self._fetch_general_ledger() - - # QuickBooks data can have transactions that do not fall in existing fiscal years in ERPNext - self._create_fiscal_years() - - self._allow_fraction_in_unit() - - # Following entities are directly available from API - # Invoice can be an exception sometimes though (as explained above). - entities_for_normal_transform = [ - "Customer", - "Item", - "Vendor", - "Preferences", - "JournalEntry", - "Purchase", - "Deposit", - "Invoice", - "CreditMemo", - "SalesReceipt", - "RefundReceipt", - "Bill", - "VendorCredit", - "Payment", - "BillPayment", - ] - for entity in entities_for_normal_transform: - self._migrate_entries(entity) - - # Following entries are not available directly from API, Need to be regenrated from GeneralLedger Report - entities_for_gl_transform = [ - "Advance Payment", - "Tax Payment", - "Sales Tax Payment", - "Purchase Tax Payment", - "Inventory Qty Adjust", - ] - for entity in entities_for_gl_transform: - self._migrate_entries_from_gl(entity) - self.set_indicator("Complete") - except Exception as e: - self.set_indicator("Failed") - self._log_error(e) - - frappe.db.commit() - - def get_tokens(self): - token = self.oauth.fetch_token( - token_url=self.token_endpoint, client_secret=self.client_secret, code=self.code - ) - self.access_token = token["access_token"] - self.refresh_token = token["refresh_token"] - self.save() - - def _refresh_tokens(self): - token = self.oauth.refresh_token( - token_url=self.token_endpoint, - client_id=self.client_id, - refresh_token=self.refresh_token, - client_secret=self.client_secret, - code=self.code, - ) - self.access_token = token["access_token"] - self.refresh_token = token["refresh_token"] - self.save() - - def _make_custom_fields(self): - doctypes_for_quickbooks_id_field = [ - "Account", - "Customer", - "Address", - "Item", - "Supplier", - "Sales Invoice", - "Journal Entry", - "Purchase Invoice", - ] - for doctype in doctypes_for_quickbooks_id_field: - self._make_custom_quickbooks_id_field(doctype) - - doctypes_for_company_field = ["Customer", "Item", "Supplier"] - for doctype in doctypes_for_company_field: - self._make_custom_company_field(doctype) - - frappe.db.commit() - - def _make_custom_quickbooks_id_field(self, doctype): - if not frappe.get_meta(doctype).has_field("quickbooks_id"): - frappe.get_doc( - { - "doctype": "Custom Field", - "label": "QuickBooks ID", - "dt": doctype, - "fieldname": "quickbooks_id", - "fieldtype": "Data", - } - ).insert() - - def _make_custom_company_field(self, doctype): - if not frappe.get_meta(doctype).has_field("company"): - frappe.get_doc( - { - "doctype": "Custom Field", - "label": "Company", - "dt": doctype, - "fieldname": "company", - "fieldtype": "Link", - "options": "Company", - } - ).insert() - - def _migrate_accounts(self): - self._make_root_accounts() - for entity in ["Account", "TaxRate", "TaxCode"]: - self._migrate_entries(entity) - - def _make_root_accounts(self): - roots = ["Asset", "Equity", "Expense", "Liability", "Income"] - for root in roots: - try: - if not frappe.db.exists( - { - "doctype": "Account", - "name": encode_company_abbr(f"{root} - QB", self.company), - "company": self.company, - } - ): - frappe.get_doc( - { - "doctype": "Account", - "account_name": f"{root} - QB", - "root_type": root, - "is_group": "1", - "company": self.company, - } - ).insert(ignore_mandatory=True) - except Exception as e: - self._log_error(e, root) - frappe.db.commit() - - def _migrate_entries(self, entity): - try: - query_uri = f"{self.api_endpoint}/company/{self.quickbooks_company_id}/query" - max_result_count = 1000 - # Count number of entries - response = self._get(query_uri, params={"query": f"""SELECT COUNT(*) FROM {entity}"""}) - entry_count = response.json()["QueryResponse"]["totalCount"] - - # fetch pages and accumulate - entries = [] - for start_position in range(1, entry_count + 1, max_result_count): - response = self._get( - query_uri, - params={ - "query": """SELECT * FROM {} STARTPOSITION {} MAXRESULTS {}""".format( - entity, start_position, max_result_count - ) - }, - ) - entries.extend(response.json()["QueryResponse"][entity]) - entries = self._preprocess_entries(entity, entries) - self._save_entries(entity, entries) - except Exception as e: - self._log_error(e, response.text) - - def _fetch_general_ledger(self): - try: - query_uri = f"{self.api_endpoint}/company/{self.quickbooks_company_id}/reports/GeneralLedger" - response = self._get( - query_uri, - params={ - "columns": ",".join(["tx_date", "txn_type", "credit_amt", "debt_amt"]), - "date_macro": "All", - "minorversion": 3, - }, - ) - self.gl_entries = {} - for section in response.json()["Rows"]["Row"]: - if section["type"] == "Section": - self._get_gl_entries_from_section(section) - self.general_ledger = {} - for account in self.gl_entries.values(): - for line in account: - type_dict = self.general_ledger.setdefault(line["type"], {}) - if line["id"] not in type_dict: - type_dict[line["id"]] = { - "id": line["id"], - "date": line["date"], - "lines": [], - } - type_dict[line["id"]]["lines"].append(line) - except Exception as e: - self._log_error(e, response.text) - - def _create_fiscal_years(self): - try: - # Assumes that exactly one fiscal year has been created so far - # Creates fiscal years till oldest ledger entry date is covered - from itertools import chain - - from frappe.utils.data import add_years, getdate - - smallest_ledger_entry_date = getdate( - min(entry["date"] for entry in chain(*self.gl_entries.values()) if entry["date"]) - ) - oldest_fiscal_year = frappe.get_all( - "Fiscal Year", fields=["year_start_date", "year_end_date"], order_by="year_start_date" - )[0] - # Keep on creating fiscal years - # until smallest_ledger_entry_date is no longer smaller than the oldest fiscal year's start date - while smallest_ledger_entry_date < oldest_fiscal_year.year_start_date: - new_fiscal_year = frappe.get_doc({"doctype": "Fiscal Year"}) - new_fiscal_year.year_start_date = add_years(oldest_fiscal_year.year_start_date, -1) - new_fiscal_year.year_end_date = add_years(oldest_fiscal_year.year_end_date, -1) - if new_fiscal_year.year_start_date.year == new_fiscal_year.year_end_date.year: - new_fiscal_year.year = new_fiscal_year.year_start_date.year - else: - new_fiscal_year.year = "{}-{}".format( - new_fiscal_year.year_start_date.year, new_fiscal_year.year_end_date.year - ) - new_fiscal_year.save() - oldest_fiscal_year = new_fiscal_year - - frappe.db.commit() - except Exception as e: - self._log_error(e) - - def _migrate_entries_from_gl(self, entity): - if entity in self.general_ledger: - self._save_entries(entity, self.general_ledger[entity].values()) - - def _save_entries(self, entity, entries): - entity_method_map = { - "Account": self._save_account, - "TaxRate": self._save_tax_rate, - "TaxCode": self._save_tax_code, - "Preferences": self._save_preference, - "Customer": self._save_customer, - "Item": self._save_item, - "Vendor": self._save_vendor, - "Invoice": self._save_invoice, - "CreditMemo": self._save_credit_memo, - "SalesReceipt": self._save_sales_receipt, - "RefundReceipt": self._save_refund_receipt, - "JournalEntry": self._save_journal_entry, - "Bill": self._save_bill, - "VendorCredit": self._save_vendor_credit, - "Payment": self._save_payment, - "BillPayment": self._save_bill_payment, - "Purchase": self._save_purchase, - "Deposit": self._save_deposit, - "Advance Payment": self._save_advance_payment, - "Tax Payment": self._save_tax_payment, - "Sales Tax Payment": self._save_tax_payment, - "Purchase Tax Payment": self._save_tax_payment, - "Inventory Qty Adjust": self._save_inventory_qty_adjust, - } - total = len(entries) - for index, entry in enumerate(entries, start=1): - self._publish( - { - "event": "progress", - "message": _("Saving {0}").format(entity), - "count": index, - "total": total, - } - ) - entity_method_map[entity](entry) - frappe.db.commit() - - def _preprocess_entries(self, entity, entries): - entity_method_map = { - "Account": self._preprocess_accounts, - "TaxRate": self._preprocess_tax_rates, - "TaxCode": self._preprocess_tax_codes, - } - preprocessor = entity_method_map.get(entity) - if preprocessor: - entries = preprocessor(entries) - return entries - - def _get_gl_entries_from_section(self, section, account=None): - if "Header" in section: - if "id" in section["Header"]["ColData"][0]: - account = self._get_account_name_by_id(section["Header"]["ColData"][0]["id"]) - elif "value" in section["Header"]["ColData"][0] and section["Header"]["ColData"][0]["value"]: - # For some reason during migrating UK company, account id is not available. - # preprocess_accounts retains name:account mapping in self.accounts - # This mapping can then be used to obtain quickbooks_id for correspondong account - # Rest is trivial - - # Some Lines in General Leder Report are shown under Not Specified - # These should be skipped - if section["Header"]["ColData"][0]["value"] == "Not Specified": - return - account_id = self.accounts[section["Header"]["ColData"][0]["value"]]["Id"] - account = self._get_account_name_by_id(account_id) - entries = [] - for row in section["Rows"]["Row"]: - if row["type"] == "Data": - data = row["ColData"] - entries.append( - { - "account": account, - "date": data[0]["value"], - "type": data[1]["value"], - "id": data[1].get("id"), - "credit": frappe.utils.flt(data[2]["value"]), - "debit": frappe.utils.flt(data[3]["value"]), - } - ) - if row["type"] == "Section": - self._get_gl_entries_from_section(row, account) - self.gl_entries.setdefault(account, []).extend(entries) - - def _preprocess_accounts(self, accounts): - self.accounts = {account["Name"]: account for account in accounts} - for account in accounts: - if any(acc["SubAccount"] and acc["ParentRef"]["value"] == account["Id"] for acc in accounts): - account["is_group"] = 1 - else: - account["is_group"] = 0 - return sorted(accounts, key=lambda account: int(account["Id"])) - - def _save_account(self, account): - mapping = { - "Bank": "Asset", - "Other Current Asset": "Asset", - "Fixed Asset": "Asset", - "Other Asset": "Asset", - "Accounts Receivable": "Asset", - "Equity": "Equity", - "Expense": "Expense", - "Other Expense": "Expense", - "Cost of Goods Sold": "Expense", - "Accounts Payable": "Liability", - "Credit Card": "Liability", - "Long Term Liability": "Liability", - "Other Current Liability": "Liability", - "Income": "Income", - "Other Income": "Income", - } - # Map Quickbooks Account Types to ERPNext root_accunts and and root_type - try: - if not frappe.db.exists( - {"doctype": "Account", "quickbooks_id": account["Id"], "company": self.company} - ): - is_child = account["SubAccount"] - is_group = account["is_group"] - # Create Two Accounts for every Group Account - if is_group: - account_id = "Group - {}".format(account["Id"]) - else: - account_id = account["Id"] - - if is_child: - parent_account = self._get_account_name_by_id( - "Group - {}".format(account["ParentRef"]["value"]) - ) - else: - parent_account = encode_company_abbr( - "{} - QB".format(mapping[account["AccountType"]]), self.company - ) - - frappe.get_doc( - { - "doctype": "Account", - "quickbooks_id": account_id, - "account_name": self._get_unique_account_name(account["Name"]), - "root_type": mapping[account["AccountType"]], - "account_type": self._get_account_type(account), - "account_currency": account["CurrencyRef"]["value"], - "parent_account": parent_account, - "is_group": is_group, - "company": self.company, - } - ).insert() - - if is_group: - # Create a Leaf account corresponding to the group account - frappe.get_doc( - { - "doctype": "Account", - "quickbooks_id": account["Id"], - "account_name": self._get_unique_account_name(account["Name"]), - "root_type": mapping[account["AccountType"]], - "account_type": self._get_account_type(account), - "account_currency": account["CurrencyRef"]["value"], - "parent_account": self._get_account_name_by_id(account_id), - "is_group": 0, - "company": self.company, - } - ).insert() - if account.get("AccountSubType") == "UndepositedFunds": - self.undeposited_funds_account = self._get_account_name_by_id(account["Id"]) - self.save() - except Exception as e: - self._log_error(e, account) - - def _get_account_type(self, account): - account_subtype_mapping = {"UndepositedFunds": "Cash"} - account_type = account_subtype_mapping.get(account.get("AccountSubType")) - if account_type is None: - account_type_mapping = { - "Accounts Payable": "Payable", - "Accounts Receivable": "Receivable", - "Bank": "Bank", - "Credit Card": "Bank", - } - account_type = account_type_mapping.get(account["AccountType"]) - return account_type - - def _preprocess_tax_rates(self, tax_rates): - self.tax_rates = {tax_rate["Id"]: tax_rate for tax_rate in tax_rates} - return tax_rates - - def _save_tax_rate(self, tax_rate): - try: - if not frappe.db.exists( - { - "doctype": "Account", - "quickbooks_id": "TaxRate - {}".format(tax_rate["Id"]), - "company": self.company, - } - ): - frappe.get_doc( - { - "doctype": "Account", - "quickbooks_id": "TaxRate - {}".format(tax_rate["Id"]), - "account_name": "{} - QB".format(tax_rate["Name"]), - "root_type": "Liability", - "parent_account": encode_company_abbr("{} - QB".format("Liability"), self.company), - "is_group": "0", - "company": self.company, - } - ).insert() - except Exception as e: - self._log_error(e, tax_rate) - - def _preprocess_tax_codes(self, tax_codes): - self.tax_codes = {tax_code["Id"]: tax_code for tax_code in tax_codes} - return tax_codes - - def _save_tax_code(self, tax_code): - pass - - def _save_customer(self, customer): - try: - if not frappe.db.exists( - {"doctype": "Customer", "quickbooks_id": customer["Id"], "company": self.company} - ): - try: - receivable_account = frappe.get_all( - "Account", - filters={ - "account_type": "Receivable", - "account_currency": customer["CurrencyRef"]["value"], - "company": self.company, - }, - )[0]["name"] - except Exception: - receivable_account = None - erpcustomer = frappe.get_doc( - { - "doctype": "Customer", - "quickbooks_id": customer["Id"], - "customer_name": encode_company_abbr(customer["DisplayName"], self.company), - "customer_type": "Individual", - "customer_group": "Commercial", - "default_currency": customer["CurrencyRef"]["value"], - "accounts": [{"company": self.company, "account": receivable_account}], - "territory": "All Territories", - "company": self.company, - } - ).insert() - if "BillAddr" in customer: - self._create_address(erpcustomer, "Customer", customer["BillAddr"], "Billing") - if "ShipAddr" in customer: - self._create_address(erpcustomer, "Customer", customer["ShipAddr"], "Shipping") - except Exception as e: - self._log_error(e, customer) - - def _save_item(self, item): - try: - if not frappe.db.exists( - {"doctype": "Item", "quickbooks_id": item["Id"], "company": self.company} - ): - if item["Type"] in ("Service", "Inventory"): - item_dict = { - "doctype": "Item", - "quickbooks_id": item["Id"], - "item_code": encode_company_abbr(item["Name"], self.company), - "stock_uom": "Unit", - "is_stock_item": 0, - "item_group": "All Item Groups", - "company": self.company, - "item_defaults": [ - {"company": self.company, "default_warehouse": self.default_warehouse} - ], - } - if "ExpenseAccountRef" in item: - expense_account = self._get_account_name_by_id(item["ExpenseAccountRef"]["value"]) - item_dict["item_defaults"][0]["expense_account"] = expense_account - if "IncomeAccountRef" in item: - income_account = self._get_account_name_by_id(item["IncomeAccountRef"]["value"]) - item_dict["item_defaults"][0]["income_account"] = income_account - frappe.get_doc(item_dict).insert() - except Exception as e: - self._log_error(e, item) - - def _allow_fraction_in_unit(self): - frappe.db.set_value("UOM", "Unit", "must_be_whole_number", 0) - - def _save_vendor(self, vendor): - try: - if not frappe.db.exists( - {"doctype": "Supplier", "quickbooks_id": vendor["Id"], "company": self.company} - ): - erpsupplier = frappe.get_doc( - { - "doctype": "Supplier", - "quickbooks_id": vendor["Id"], - "supplier_name": encode_company_abbr(vendor["DisplayName"], self.company), - "supplier_group": "All Supplier Groups", - "company": self.company, - } - ).insert() - if "BillAddr" in vendor: - self._create_address(erpsupplier, "Supplier", vendor["BillAddr"], "Billing") - if "ShipAddr" in vendor: - self._create_address(erpsupplier, "Supplier", vendor["ShipAddr"], "Shipping") - except Exception as e: - self._log_error(e) - - def _save_preference(self, preference): - try: - if preference["SalesFormsPrefs"]["AllowShipping"]: - default_shipping_account_id = preference["SalesFormsPrefs"]["DefaultShippingAccount"] - self.default_shipping_account = self._get_account_name_by_id( - self, default_shipping_account_id - ) - self.save() - except Exception as e: - self._log_error(e, preference) - - def _save_invoice(self, invoice): - # Invoice can be Linked with Another Transactions - # If any of these transactions is a "StatementCharge" or "ReimburseCharge" then in the UI - # item list is populated from the corresponding transaction, these items are not shown in api response - # Also as of now there is no way of fetching the corresponding transaction from api - # We in order to correctly reflect account balance make an equivalent Journal Entry - quickbooks_id = "Invoice - {}".format(invoice["Id"]) - if any( - linked["TxnType"] in ("StatementCharge", "ReimburseCharge") for linked in invoice["LinkedTxn"] - ): - self._save_invoice_as_journal_entry(invoice, quickbooks_id) - else: - self._save_sales_invoice(invoice, quickbooks_id) - - def _save_credit_memo(self, credit_memo): - # Credit Memo is equivalent to a return Sales Invoice - quickbooks_id = "Credit Memo - {}".format(credit_memo["Id"]) - self._save_sales_invoice(credit_memo, quickbooks_id, is_return=True) - - def _save_sales_receipt(self, sales_receipt): - # Sales Receipt is equivalent to a POS Sales Invoice - quickbooks_id = "Sales Receipt - {}".format(sales_receipt["Id"]) - self._save_sales_invoice(sales_receipt, quickbooks_id, is_pos=True) - - def _save_refund_receipt(self, refund_receipt): - # Refund Receipt is equivalent to a return POS Sales Invoice - quickbooks_id = "Refund Receipt - {}".format(refund_receipt["Id"]) - self._save_sales_invoice(refund_receipt, quickbooks_id, is_return=True, is_pos=True) - - def _save_sales_invoice(self, invoice, quickbooks_id, is_return=False, is_pos=False): - try: - if not frappe.db.exists( - {"doctype": "Sales Invoice", "quickbooks_id": quickbooks_id, "company": self.company} - ): - invoice_dict = { - "doctype": "Sales Invoice", - "quickbooks_id": quickbooks_id, - # Quickbooks uses ISO 4217 Code - # of course this gonna come back to bite me - "currency": invoice["CurrencyRef"]["value"], - # Exchange Rate is provided if multicurrency is enabled - # It is not provided if multicurrency is not enabled - "conversion_rate": invoice.get("ExchangeRate", 1), - "posting_date": invoice["TxnDate"], - # QuickBooks doesn't make Due Date a mandatory field this is a hack - "due_date": invoice.get("DueDate", invoice["TxnDate"]), - "customer": frappe.get_all( - "Customer", - filters={ - "quickbooks_id": invoice["CustomerRef"]["value"], - "company": self.company, - }, - )[0]["name"], - "items": self._get_si_items(invoice, is_return=is_return), - "taxes": self._get_taxes(invoice), - # Do not change posting_date upon submission - "set_posting_time": 1, - # QuickBooks doesn't round total - "disable_rounded_total": 1, - "is_return": is_return, - "is_pos": is_pos, - "payments": self._get_invoice_payments(invoice, is_return=is_return, is_pos=is_pos), - "company": self.company, - } - discount = self._get_discount(invoice["Line"]) - if discount: - if invoice["ApplyTaxAfterDiscount"]: - invoice_dict["apply_discount_on"] = "Net Total" - else: - invoice_dict["apply_discount_on"] = "Grand Total" - invoice_dict["discount_amount"] = discount["Amount"] - - invoice_doc = frappe.get_doc(invoice_dict) - invoice_doc.insert() - invoice_doc.submit() - except Exception as e: - self._log_error(e, [invoice, invoice_dict, json.loads(invoice_doc.as_json())]) - - def _get_si_items(self, invoice, is_return=False): - items = [] - for line in invoice["Line"]: - if line["DetailType"] == "SalesItemLineDetail": - if line["SalesItemLineDetail"]["TaxCodeRef"]["value"] != "TAX": - tax_code = line["SalesItemLineDetail"]["TaxCodeRef"]["value"] - else: - if "TxnTaxCodeRef" in invoice["TxnTaxDetail"]: - tax_code = invoice["TxnTaxDetail"]["TxnTaxCodeRef"]["value"] - else: - tax_code = "NON" - if line["SalesItemLineDetail"]["ItemRef"]["value"] != "SHIPPING_ITEM_ID": - item = frappe.db.get_all( - "Item", - filters={ - "quickbooks_id": line["SalesItemLineDetail"]["ItemRef"]["value"], - "company": self.company, - }, - fields=["name", "stock_uom"], - )[0] - items.append( - { - "item_code": item["name"], - "conversion_factor": 1, - "uom": item["stock_uom"], - "description": line.get( - "Description", line["SalesItemLineDetail"]["ItemRef"]["name"] - ), - "qty": line["SalesItemLineDetail"]["Qty"], - "price_list_rate": line["SalesItemLineDetail"]["UnitPrice"], - "cost_center": self.default_cost_center, - "warehouse": self.default_warehouse, - "item_tax_rate": json.dumps(self._get_item_taxes(tax_code)), - } - ) - else: - items.append( - { - "item_name": "Shipping", - "conversion_factor": 1, - "expense_account": self._get_account_name_by_id( - "TaxRate - {}".format(line["SalesItemLineDetail"]["TaxCodeRef"]["value"]) - ), - "uom": "Unit", - "description": "Shipping", - "income_account": self.default_shipping_account, - "qty": 1, - "price_list_rate": line["Amount"], - "cost_center": self.default_cost_center, - "warehouse": self.default_warehouse, - "item_tax_rate": json.dumps(self._get_item_taxes(tax_code)), - } - ) - if is_return: - items[-1]["qty"] *= -1 - elif line["DetailType"] == "DescriptionOnly": - items[-1].update( - { - "margin_type": "Percentage", - "margin_rate_or_amount": int(line["Description"].split("%")[0]), - } - ) - return items - - def _get_item_taxes(self, tax_code): - tax_rates = self.tax_rates - item_taxes = {} - if tax_code != "NON": - tax_code = self.tax_codes[tax_code] - for rate_list_type in ("SalesTaxRateList", "PurchaseTaxRateList"): - if rate_list_type in tax_code: - for tax_rate_detail in tax_code[rate_list_type]["TaxRateDetail"]: - if tax_rate_detail["TaxTypeApplicable"] == "TaxOnAmount": - tax_head = self._get_account_name_by_id( - "TaxRate - {}".format(tax_rate_detail["TaxRateRef"]["value"]) - ) - tax_rate = tax_rates[tax_rate_detail["TaxRateRef"]["value"]] - item_taxes[tax_head] = tax_rate["RateValue"] - return item_taxes - - def _get_invoice_payments(self, invoice, is_return=False, is_pos=False): - if is_pos: - amount = invoice["TotalAmt"] - if is_return: - amount = -amount - return [ - { - "mode_of_payment": "Cash", - "account": self._get_account_name_by_id(invoice["DepositToAccountRef"]["value"]), - "amount": amount, - } - ] - - def _get_discount(self, lines): - for line in lines: - if line["DetailType"] == "DiscountLineDetail" and "Amount" in line["DiscountLineDetail"]: - return line - - def _save_invoice_as_journal_entry(self, invoice, quickbooks_id): - try: - accounts = [] - for line in self.general_ledger["Invoice"][invoice["Id"]]["lines"]: - account_line = {"account": line["account"], "cost_center": self.default_cost_center} - if line["debit"]: - account_line["debit_in_account_currency"] = line["debit"] - elif line["credit"]: - account_line["credit_in_account_currency"] = line["credit"] - if frappe.db.get_value("Account", line["account"], "account_type") == "Receivable": - account_line["party_type"] = "Customer" - account_line["party"] = frappe.get_all( - "Customer", - filters={"quickbooks_id": invoice["CustomerRef"]["value"], "company": self.company}, - )[0]["name"] - - accounts.append(account_line) - - posting_date = invoice["TxnDate"] - self.__save_journal_entry(quickbooks_id, accounts, posting_date) - except Exception as e: - self._log_error(e, [invoice, accounts]) - - def _save_journal_entry(self, journal_entry): - # JournalEntry is equivalent to a Journal Entry - - def _get_je_accounts(lines): - # Converts JounalEntry lines to accounts list - posting_type_field_mapping = { - "Credit": "credit_in_account_currency", - "Debit": "debit_in_account_currency", - } - accounts = [] - for line in lines: - if line["DetailType"] == "JournalEntryLineDetail": - account_name = self._get_account_name_by_id( - line["JournalEntryLineDetail"]["AccountRef"]["value"] - ) - posting_type = line["JournalEntryLineDetail"]["PostingType"] - accounts.append( - { - "account": account_name, - posting_type_field_mapping[posting_type]: line["Amount"], - "cost_center": self.default_cost_center, - } - ) - return accounts - - quickbooks_id = "Journal Entry - {}".format(journal_entry["Id"]) - accounts = _get_je_accounts(journal_entry["Line"]) - posting_date = journal_entry["TxnDate"] - self.__save_journal_entry(quickbooks_id, accounts, posting_date) - - def __save_journal_entry(self, quickbooks_id, accounts, posting_date): - try: - if not frappe.db.exists( - {"doctype": "Journal Entry", "quickbooks_id": quickbooks_id, "company": self.company} - ): - je = frappe.get_doc( - { - "doctype": "Journal Entry", - "quickbooks_id": quickbooks_id, - "company": self.company, - "posting_date": posting_date, - "accounts": accounts, - "multi_currency": 1, - } - ) - je.insert() - je.submit() - except Exception as e: - self._log_error(e, [accounts, json.loads(je.as_json())]) - - def _save_bill(self, bill): - # Bill is equivalent to a Purchase Invoice - quickbooks_id = "Bill - {}".format(bill["Id"]) - self.__save_purchase_invoice(bill, quickbooks_id) - - def _save_vendor_credit(self, vendor_credit): - # Vendor Credit is equivalent to a return Purchase Invoice - quickbooks_id = "Vendor Credit - {}".format(vendor_credit["Id"]) - self.__save_purchase_invoice(vendor_credit, quickbooks_id, is_return=True) - - def __save_purchase_invoice(self, invoice, quickbooks_id, is_return=False): - try: - if not frappe.db.exists( - {"doctype": "Purchase Invoice", "quickbooks_id": quickbooks_id, "company": self.company} - ): - credit_to_account = self._get_account_name_by_id(invoice["APAccountRef"]["value"]) - invoice_dict = { - "doctype": "Purchase Invoice", - "quickbooks_id": quickbooks_id, - "currency": invoice["CurrencyRef"]["value"], - "conversion_rate": invoice.get("ExchangeRate", 1), - "posting_date": invoice["TxnDate"], - "due_date": invoice.get("DueDate", invoice["TxnDate"]), - "credit_to": credit_to_account, - "supplier": frappe.get_all( - "Supplier", - filters={ - "quickbooks_id": invoice["VendorRef"]["value"], - "company": self.company, - }, - )[0]["name"], - "items": self._get_pi_items(invoice, is_return=is_return), - "taxes": self._get_taxes(invoice), - "set_posting_time": 1, - "disable_rounded_total": 1, - "is_return": is_return, - "udpate_stock": 0, - "company": self.company, - } - invoice_doc = frappe.get_doc(invoice_dict) - invoice_doc.insert() - invoice_doc.submit() - except Exception as e: - self._log_error(e, [invoice, invoice_dict, json.loads(invoice_doc.as_json())]) - - def _get_pi_items(self, purchase_invoice, is_return=False): - items = [] - for line in purchase_invoice["Line"]: - if line["DetailType"] == "ItemBasedExpenseLineDetail": - if line["ItemBasedExpenseLineDetail"]["TaxCodeRef"]["value"] != "TAX": - tax_code = line["ItemBasedExpenseLineDetail"]["TaxCodeRef"]["value"] - else: - if "TxnTaxCodeRef" in purchase_invoice["TxnTaxDetail"]: - tax_code = purchase_invoice["TxnTaxDetail"]["TxnTaxCodeRef"]["value"] - else: - tax_code = "NON" - item = frappe.db.get_all( - "Item", - filters={ - "quickbooks_id": line["ItemBasedExpenseLineDetail"]["ItemRef"]["value"], - "company": self.company, - }, - fields=["name", "stock_uom"], - )[0] - items.append( - { - "item_code": item["name"], - "conversion_factor": 1, - "uom": item["stock_uom"], - "description": line.get( - "Description", line["ItemBasedExpenseLineDetail"]["ItemRef"]["name"] - ), - "qty": line["ItemBasedExpenseLineDetail"]["Qty"], - "price_list_rate": line["ItemBasedExpenseLineDetail"]["UnitPrice"], - "warehouse": self.default_warehouse, - "cost_center": self.default_cost_center, - "item_tax_rate": json.dumps(self._get_item_taxes(tax_code)), - } - ) - elif line["DetailType"] == "AccountBasedExpenseLineDetail": - if line["AccountBasedExpenseLineDetail"]["TaxCodeRef"]["value"] != "TAX": - tax_code = line["AccountBasedExpenseLineDetail"]["TaxCodeRef"]["value"] - else: - if "TxnTaxCodeRef" in purchase_invoice["TxnTaxDetail"]: - tax_code = purchase_invoice["TxnTaxDetail"]["TxnTaxCodeRef"]["value"] - else: - tax_code = "NON" - items.append( - { - "item_name": line.get( - "Description", line["AccountBasedExpenseLineDetail"]["AccountRef"]["name"] - ), - "conversion_factor": 1, - "expense_account": self._get_account_name_by_id( - line["AccountBasedExpenseLineDetail"]["AccountRef"]["value"] - ), - "uom": "Unit", - "description": line.get( - "Description", line["AccountBasedExpenseLineDetail"]["AccountRef"]["name"] - ), - "qty": 1, - "price_list_rate": line["Amount"], - "warehouse": self.default_warehouse, - "cost_center": self.default_cost_center, - "item_tax_rate": json.dumps(self._get_item_taxes(tax_code)), - } - ) - if is_return: - items[-1]["qty"] *= -1 - return items - - def _save_payment(self, payment): - try: - quickbooks_id = "Payment - {}".format(payment["Id"]) - # If DepositToAccountRef is not set on payment that means it actually doesn't affect any accounts - # No need to record such payment - # Such payment record is created QuickBooks Payments API - if "DepositToAccountRef" not in payment: - return - - # A Payment can be linked to multiple transactions - accounts = [] - for line in payment["Line"]: - linked_transaction = line["LinkedTxn"][0] - if linked_transaction["TxnType"] == "Invoice": - si_quickbooks_id = "Invoice - {}".format(linked_transaction["TxnId"]) - # Invoice could have been saved as a Sales Invoice or a Journal Entry - if frappe.db.exists( - { - "doctype": "Sales Invoice", - "quickbooks_id": si_quickbooks_id, - "company": self.company, - } - ): - sales_invoice = frappe.get_all( - "Sales Invoice", - filters={ - "quickbooks_id": si_quickbooks_id, - "company": self.company, - }, - fields=["name", "customer", "debit_to"], - )[0] - reference_type = "Sales Invoice" - reference_name = sales_invoice["name"] - party = sales_invoice["customer"] - party_account = sales_invoice["debit_to"] - - if frappe.db.exists( - { - "doctype": "Journal Entry", - "quickbooks_id": si_quickbooks_id, - "company": self.company, - } - ): - journal_entry = frappe.get_doc( - "Journal Entry", - { - "quickbooks_id": si_quickbooks_id, - "company": self.company, - }, - ) - # Invoice saved as a Journal Entry must have party and party_type set on line containing Receivable Account - customer_account_line = next( - filter(lambda acc: acc.party_type == "Customer", journal_entry.accounts) - ) - - reference_type = "Journal Entry" - reference_name = journal_entry.name - party = customer_account_line.party - party_account = customer_account_line.account - - accounts.append( - { - "party_type": "Customer", - "party": party, - "reference_type": reference_type, - "reference_name": reference_name, - "account": party_account, - "credit_in_account_currency": line["Amount"], - "cost_center": self.default_cost_center, - } - ) - - deposit_account = self._get_account_name_by_id(payment["DepositToAccountRef"]["value"]) - accounts.append( - { - "account": deposit_account, - "debit_in_account_currency": payment["TotalAmt"], - "cost_center": self.default_cost_center, - } - ) - posting_date = payment["TxnDate"] - self.__save_journal_entry(quickbooks_id, accounts, posting_date) - except Exception as e: - self._log_error(e, [payment, accounts]) - - def _save_bill_payment(self, bill_payment): - try: - quickbooks_id = "BillPayment - {}".format(bill_payment["Id"]) - # A BillPayment can be linked to multiple transactions - accounts = [] - for line in bill_payment["Line"]: - linked_transaction = line["LinkedTxn"][0] - if linked_transaction["TxnType"] == "Bill": - pi_quickbooks_id = "Bill - {}".format(linked_transaction["TxnId"]) - if frappe.db.exists( - { - "doctype": "Purchase Invoice", - "quickbooks_id": pi_quickbooks_id, - "company": self.company, - } - ): - purchase_invoice = frappe.get_all( - "Purchase Invoice", - filters={ - "quickbooks_id": pi_quickbooks_id, - "company": self.company, - }, - fields=["name", "supplier", "credit_to"], - )[0] - reference_type = "Purchase Invoice" - reference_name = purchase_invoice["name"] - party = purchase_invoice["supplier"] - party_account = purchase_invoice["credit_to"] - accounts.append( - { - "party_type": "Supplier", - "party": party, - "reference_type": reference_type, - "reference_name": reference_name, - "account": party_account, - "debit_in_account_currency": line["Amount"], - "cost_center": self.default_cost_center, - } - ) - - if bill_payment["PayType"] == "Check": - bank_account_id = bill_payment["CheckPayment"]["BankAccountRef"]["value"] - elif bill_payment["PayType"] == "CreditCard": - bank_account_id = bill_payment["CreditCardPayment"]["CCAccountRef"]["value"] - - bank_account = self._get_account_name_by_id(bank_account_id) - accounts.append( - { - "account": bank_account, - "credit_in_account_currency": bill_payment["TotalAmt"], - "cost_center": self.default_cost_center, - } - ) - posting_date = bill_payment["TxnDate"] - self.__save_journal_entry(quickbooks_id, accounts, posting_date) - except Exception as e: - self._log_error(e, [bill_payment, accounts]) - - def _save_purchase(self, purchase): - try: - quickbooks_id = "Purchase - {}".format(purchase["Id"]) - # Credit Bank Account - accounts = [ - { - "account": self._get_account_name_by_id(purchase["AccountRef"]["value"]), - "credit_in_account_currency": purchase["TotalAmt"], - "cost_center": self.default_cost_center, - } - ] - - # Debit Mentioned Accounts - for line in purchase["Line"]: - if line["DetailType"] == "AccountBasedExpenseLineDetail": - account = self._get_account_name_by_id( - line["AccountBasedExpenseLineDetail"]["AccountRef"]["value"] - ) - elif line["DetailType"] == "ItemBasedExpenseLineDetail": - account = ( - frappe.get_doc( - "Item", - { - "quickbooks_id": line["ItemBasedExpenseLineDetail"]["ItemRef"]["value"], - "company": self.company, - }, - ) - .item_defaults[0] - .expense_account - ) - accounts.append( - { - "account": account, - "debit_in_account_currency": line["Amount"], - "cost_center": self.default_cost_center, - } - ) - - # Debit Tax Accounts - if "TxnTaxDetail" in purchase: - for line in purchase["TxnTaxDetail"]["TaxLine"]: - accounts.append( - { - "account": self._get_account_name_by_id( - "TaxRate - {}".format(line["TaxLineDetail"]["TaxRateRef"]["value"]) - ), - "debit_in_account_currency": line["Amount"], - "cost_center": self.default_cost_center, - } - ) - - # If purchase["Credit"] is set to be True then it represents a refund - if purchase.get("Credit"): - for account in accounts: - if "debit_in_account_currency" in account: - account["credit_in_account_currency"] = account["debit_in_account_currency"] - del account["debit_in_account_currency"] - else: - account["debit_in_account_currency"] = account["credit_in_account_currency"] - del account["credit_in_account_currency"] - - posting_date = purchase["TxnDate"] - self.__save_journal_entry(quickbooks_id, accounts, posting_date) - except Exception as e: - self._log_error(e, [purchase, accounts]) - - def _save_deposit(self, deposit): - try: - quickbooks_id = "Deposit - {}".format(deposit["Id"]) - # Debit Bank Account - accounts = [ - { - "account": self._get_account_name_by_id(deposit["DepositToAccountRef"]["value"]), - "debit_in_account_currency": deposit["TotalAmt"], - "cost_center": self.default_cost_center, - } - ] - - # Credit Mentioned Accounts - for line in deposit["Line"]: - if "LinkedTxn" in line: - accounts.append( - { - "account": self.undeposited_funds_account, - "credit_in_account_currency": line["Amount"], - "cost_center": self.default_cost_center, - } - ) - else: - accounts.append( - { - "account": self._get_account_name_by_id( - line["DepositLineDetail"]["AccountRef"]["value"] - ), - "credit_in_account_currency": line["Amount"], - "cost_center": self.default_cost_center, - } - ) - - # Debit Cashback if mentioned - if "CashBack" in deposit: - accounts.append( - { - "account": self._get_account_name_by_id(deposit["CashBack"]["AccountRef"]["value"]), - "debit_in_account_currency": deposit["CashBack"]["Amount"], - "cost_center": self.default_cost_center, - } - ) - - posting_date = deposit["TxnDate"] - self.__save_journal_entry(quickbooks_id, accounts, posting_date) - except Exception as e: - self._log_error(e, [deposit, accounts]) - - def _save_advance_payment(self, advance_payment): - quickbooks_id = "Advance Payment - {}".format(advance_payment["id"]) - self.__save_ledger_entry_as_je(advance_payment, quickbooks_id) - - def _save_tax_payment(self, tax_payment): - quickbooks_id = "Tax Payment - {}".format(tax_payment["id"]) - self.__save_ledger_entry_as_je(tax_payment, quickbooks_id) - - def _save_inventory_qty_adjust(self, inventory_qty_adjust): - quickbooks_id = "Inventory Qty Adjust - {}".format(inventory_qty_adjust["id"]) - self.__save_ledger_entry_as_je(inventory_qty_adjust, quickbooks_id) - - def __save_ledger_entry_as_je(self, ledger_entry, quickbooks_id): - try: - accounts = [] - for line in ledger_entry["lines"]: - account_line = {"account": line["account"], "cost_center": self.default_cost_center} - if line["credit"]: - account_line["credit_in_account_currency"] = line["credit"] - else: - account_line["debit_in_account_currency"] = line["debit"] - accounts.append(account_line) - - posting_date = ledger_entry["date"] - self.__save_journal_entry(quickbooks_id, accounts, posting_date) - except Exception as e: - self._log_error(e, ledger_entry) - - def _get_taxes(self, entry): - taxes = [] - if "TxnTaxDetail" not in entry or "TaxLine" not in entry["TxnTaxDetail"]: - return taxes - for line in entry["TxnTaxDetail"]["TaxLine"]: - tax_rate = line["TaxLineDetail"]["TaxRateRef"]["value"] - account_head = self._get_account_name_by_id(f"TaxRate - {tax_rate}") - tax_type_applicable = self._get_tax_type(tax_rate) - if tax_type_applicable == "TaxOnAmount": - taxes.append( - { - "charge_type": "On Net Total", - "account_head": account_head, - "description": account_head, - "cost_center": self.default_cost_center, - "rate": 0, - } - ) - else: - parent_tax_rate = self._get_parent_tax_rate(tax_rate) - parent_row_id = self._get_parent_row_id(parent_tax_rate, taxes) - taxes.append( - { - "charge_type": "On Previous Row Amount", - "row_id": parent_row_id, - "account_head": account_head, - "description": account_head, - "cost_center": self.default_cost_center, - "rate": line["TaxLineDetail"]["TaxPercent"], - } - ) - return taxes - - def _get_tax_type(self, tax_rate): - for tax_code in self.tax_codes.values(): - for rate_list_type in ("SalesTaxRateList", "PurchaseTaxRateList"): - if rate_list_type in tax_code: - for tax_rate_detail in tax_code[rate_list_type]["TaxRateDetail"]: - if tax_rate_detail["TaxRateRef"]["value"] == tax_rate: - return tax_rate_detail["TaxTypeApplicable"] - - def _get_parent_tax_rate(self, tax_rate): - parent = None - for tax_code in self.tax_codes.values(): - for rate_list_type in ("SalesTaxRateList", "PurchaseTaxRateList"): - if rate_list_type in tax_code: - for tax_rate_detail in tax_code[rate_list_type]["TaxRateDetail"]: - if tax_rate_detail["TaxRateRef"]["value"] == tax_rate: - parent = tax_rate_detail["TaxOnTaxOrder"] - if parent: - for tax_rate_detail in tax_code[rate_list_type]["TaxRateDetail"]: - if tax_rate_detail["TaxOrder"] == parent: - return tax_rate_detail["TaxRateRef"]["value"] - - def _get_parent_row_id(self, tax_rate, taxes): - tax_account = self._get_account_name_by_id(f"TaxRate - {tax_rate}") - for index, tax in enumerate(taxes): - if tax["account_head"] == tax_account: - return index + 1 - - def _create_address(self, entity, doctype, address, address_type): - try: - if not frappe.db.exists({"doctype": "Address", "quickbooks_id": address["Id"]}): - frappe.get_doc( - { - "doctype": "Address", - "quickbooks_address_id": address["Id"], - "address_title": entity.name, - "address_type": address_type, - "address_line1": address["Line1"], - "city": address["City"], - "links": [{"link_doctype": doctype, "link_name": entity.name}], - } - ).insert() - except Exception as e: - self._log_error(e, address) - - def _get(self, *args, **kwargs): - kwargs["headers"] = { - "Accept": "application/json", - "Authorization": f"Bearer {self.access_token}", - } - response = requests.get(*args, **kwargs) - # HTTP Status code 401 here means that the access_token is expired - # We can refresh tokens and retry - # However limitless recursion does look dangerous - if response.status_code == 401: - self._refresh_tokens() - response = self._get(*args, **kwargs) - return response - - def _get_account_name_by_id(self, quickbooks_id): - return frappe.get_all("Account", filters={"quickbooks_id": quickbooks_id, "company": self.company})[ - 0 - ]["name"] - - def _publish(self, *args, **kwargs): - frappe.publish_realtime("quickbooks_progress_update", *args, **kwargs, user=self.modified_by) - - def _get_unique_account_name(self, quickbooks_name, number=0): - if number: - quickbooks_account_name = f"{quickbooks_name} - {number} - QB" - else: - quickbooks_account_name = f"{quickbooks_name} - QB" - company_encoded_account_name = encode_company_abbr(quickbooks_account_name, self.company) - if frappe.db.exists( - {"doctype": "Account", "name": company_encoded_account_name, "company": self.company} - ): - unique_account_name = self._get_unique_account_name(quickbooks_name, number + 1) - else: - unique_account_name = quickbooks_account_name - return unique_account_name - - def _log_error(self, execption, data=""): - frappe.log_error( - title="QuickBooks Migration Error", - message="\n".join( - [ - "Data", - json.dumps(data, sort_keys=True, indent=4, separators=(",", ": ")), - "Exception", - traceback.format_exc(), - ] - ), - ) - - def set_indicator(self, status): - self.status = status - self.save() - frappe.db.commit() diff --git a/erpnext/erpnext_integrations/doctype/quickbooks_migrator/test_quickbooks_migrator.py b/erpnext/erpnext_integrations/doctype/quickbooks_migrator/test_quickbooks_migrator.py deleted file mode 100644 index 92e79ec8a4a..00000000000 --- a/erpnext/erpnext_integrations/doctype/quickbooks_migrator/test_quickbooks_migrator.py +++ /dev/null @@ -1,8 +0,0 @@ -# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors -# See license.txt - -import unittest - - -class TestQuickBooksMigrator(unittest.TestCase): - pass diff --git a/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.js b/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.js deleted file mode 100644 index 556c332634d..00000000000 --- a/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.js +++ /dev/null @@ -1,364 +0,0 @@ -// Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and contributors -// For license information, please see license.txt - -frappe.provide("erpnext.tally_migration"); - -frappe.ui.form.on("Tally Migration", { - onload: function (frm) { - let reload_status = true; - frappe.realtime.on("tally_migration_progress_update", function (data) { - if (reload_status) { - frappe.model.with_doc(frm.doc.doctype, frm.doc.name, () => { - frm.refresh_header(); - }); - reload_status = false; - } - frm.dashboard.show_progress(data.title, (data.count / data.total) * 100, data.message); - let error_occurred = data.count === -1; - if (data.count == data.total || error_occurred) { - window.setTimeout( - (title) => { - frm.dashboard.hide_progress(title); - frm.reload_doc(); - if (error_occurred) { - frappe.msgprint({ - message: __("An error has occurred during {0}. Check {1} for more details", [ - repl( - "%(tally_document)s", - { - tally_document: frm.docname, - } - ), - "Error Log", - ]), - title: __("Tally Migration Error"), - indicator: "red", - }); - } - }, - 2000, - data.title - ); - } - }); - }, - - refresh: function (frm) { - frm.trigger("show_logs_preview"); - erpnext.tally_migration.failed_import_log = JSON.parse(frm.doc.failed_import_log); - erpnext.tally_migration.fixed_errors_log = JSON.parse(frm.doc.fixed_errors_log); - - ["default_round_off_account", "default_warehouse", "default_cost_center"].forEach((account) => { - frm.toggle_reqd(account, frm.doc.is_master_data_imported === 1); - frm.toggle_enable(account, frm.doc.is_day_book_data_processed != 1); - }); - - if (frm.doc.master_data && !frm.doc.is_master_data_imported) { - if (frm.doc.is_master_data_processed) { - if (frm.doc.status != "Importing Master Data") { - frm.events.add_button(frm, __("Import Master Data"), "import_master_data"); - } - } else { - if (frm.doc.status != "Processing Master Data") { - frm.events.add_button(frm, __("Process Master Data"), "process_master_data"); - } - } - } - - if (frm.doc.day_book_data && !frm.doc.is_day_book_data_imported) { - if (frm.doc.is_day_book_data_processed) { - if (frm.doc.status != "Importing Day Book Data") { - frm.events.add_button(frm, __("Import Day Book Data"), "import_day_book_data"); - } - } else { - if (frm.doc.status != "Processing Day Book Data") { - frm.events.add_button(frm, __("Process Day Book Data"), "process_day_book_data"); - } - } - } - }, - - erpnext_company: function (frm) { - frappe.db.exists("Company", frm.doc.erpnext_company).then((exists) => { - if (exists) { - frappe.msgprint( - __( - "Company {0} already exists. Continuing will overwrite the Company and Chart of Accounts", - [frm.doc.erpnext_company] - ) - ); - } - }); - }, - - add_button: function (frm, label, method) { - frm.add_custom_button(label, () => { - frm.call({ - doc: frm.doc, - method: method, - freeze: true, - }); - frm.reload_doc(); - }); - }, - - render_html_table(frm, shown_logs, hidden_logs, field) { - if (shown_logs && shown_logs.length > 0) { - frm.toggle_display(field, true); - } else { - frm.toggle_display(field, false); - return; - } - let rows = erpnext.tally_migration.get_html_rows(shown_logs, field); - let rows_head, table_caption; - - let table_footer = - hidden_logs && hidden_logs.length > 0 - ? ` - And ${hidden_logs.length} more others - ` - : ""; - - if (field === "fixed_error_log_preview") { - rows_head = `${__("Meta Data")} - ${__("Unresolve")}`; - table_caption = "Resolved Issues"; - } else { - rows_head = `${__("Error Message")} - ${__("Create")}`; - table_caption = "Error Log"; - } - - frm.get_field(field).$wrapper.html(` - - - - - - ${rows_head} - - ${rows} - ${table_footer} -
${table_caption}
${__("#")}${__("DocType")}
- `); - }, - - show_error_summary(frm) { - let summary = erpnext.tally_migration.failed_import_log.reduce((summary, row) => { - if (row.doc) { - if (summary[row.doc.doctype]) { - summary[row.doc.doctype] += 1; - } else { - summary[row.doc.doctype] = 1; - } - } - return summary; - }, {}); - console.table(summary); - }, - - show_logs_preview(frm) { - let empty = "[]"; - let import_log = frm.doc.failed_import_log || empty; - let completed_log = frm.doc.fixed_errors_log || empty; - let render_section = !(import_log === completed_log && import_log === empty); - - frm.toggle_display("import_log_section", render_section); - if (render_section) { - frm.trigger("show_error_summary"); - frm.trigger("show_errored_import_log"); - frm.trigger("show_fixed_errors_log"); - } - }, - - show_errored_import_log(frm) { - let import_log = erpnext.tally_migration.failed_import_log; - let logs = import_log.slice(0, 20); - let hidden_logs = import_log.slice(20); - - frm.events.render_html_table(frm, logs, hidden_logs, "failed_import_preview"); - }, - - show_fixed_errors_log(frm) { - let completed_log = erpnext.tally_migration.fixed_errors_log; - let logs = completed_log.slice(0, 20); - let hidden_logs = completed_log.slice(20); - - frm.events.render_html_table(frm, logs, hidden_logs, "fixed_error_log_preview"); - }, -}); - -erpnext.tally_migration.getError = (traceback) => { - /* Extracts the Error Message from the Python Traceback or Solved error */ - let is_multiline = traceback.trim().indexOf("\n") != -1; - let message; - - if (is_multiline) { - let exc_error_idx = traceback.trim().lastIndexOf("\n") + 1; - let error_line = traceback.substr(exc_error_idx); - let split_str_idx = error_line.indexOf(":") > 0 ? error_line.indexOf(":") + 1 : 0; - message = error_line.slice(split_str_idx).trim(); - } else { - message = traceback; - } - - return message; -}; - -erpnext.tally_migration.cleanDoc = (obj) => { - /* Strips all null and empty values of your JSON object */ - let temp = obj; - $.each(temp, function (key, value) { - if (value === "" || value === null) { - delete obj[key]; - } else if (Object.prototype.toString.call(value) === "[object Object]") { - erpnext.tally_migration.cleanDoc(value); - } else if ($.isArray(value)) { - $.each(value, function (k, v) { - erpnext.tally_migration.cleanDoc(v); - }); - } - }); - return temp; -}; - -erpnext.tally_migration.unresolve = (document) => { - /* Mark document migration as unresolved ie. move to failed error log */ - let frm = cur_frm; - let failed_log = erpnext.tally_migration.failed_import_log; - let fixed_log = erpnext.tally_migration.fixed_errors_log; - - let modified_fixed_log = fixed_log.filter((row) => { - if (!frappe.utils.deep_equal(erpnext.tally_migration.cleanDoc(row.doc), document)) { - return row; - } - }); - - failed_log.push({ doc: document, exc: `Marked unresolved on ${Date()}` }); - - frm.doc.failed_import_log = JSON.stringify(failed_log); - frm.doc.fixed_errors_log = JSON.stringify(modified_fixed_log); - - frm.dirty(); - frm.save(); -}; - -erpnext.tally_migration.resolve = (document) => { - /* Mark document migration as resolved ie. move to fixed error log */ - let frm = cur_frm; - let failed_log = erpnext.tally_migration.failed_import_log; - let fixed_log = erpnext.tally_migration.fixed_errors_log; - - let modified_failed_log = failed_log.filter((row) => { - if (!frappe.utils.deep_equal(erpnext.tally_migration.cleanDoc(row.doc), document)) { - return row; - } - }); - fixed_log.push({ doc: document, exc: `Solved on ${Date()}` }); - - frm.doc.failed_import_log = JSON.stringify(modified_failed_log); - frm.doc.fixed_errors_log = JSON.stringify(fixed_log); - - frm.dirty(); - frm.save(); -}; - -erpnext.tally_migration.create_new_doc = (document) => { - /* Mark as resolved and create new document */ - erpnext.tally_migration.resolve(document); - return frappe.call({ - type: "POST", - method: "erpnext.erpnext_integrations.doctype.tally_migration.tally_migration.new_doc", - args: { - document, - }, - freeze: true, - callback: function (r) { - if (!r.exc) { - frappe.model.sync(r.message); - frappe.get_doc(r.message.doctype, r.message.name).__run_link_triggers = true; - frappe.set_route("Form", r.message.doctype, r.message.name); - } - }, - }); -}; - -erpnext.tally_migration.get_html_rows = (logs, field) => { - let index = 0; - let rows = logs - .map(({ doc, exc }) => { - let id = frappe.dom.get_unique_id(); - let traceback = exc; - - let error_message = erpnext.tally_migration.getError(traceback); - index++; - - let show_traceback = ` - -
-
-
${traceback}
-
-
`; - - let show_doc = ` - -
-
-
${JSON.stringify(erpnext.tally_migration.cleanDoc(doc), null, 1)}
-
-
`; - - let create_button = ` - `; - - let mark_as_unresolved = ` - `; - - if (field === "fixed_error_log_preview") { - return ` - ${index} - -
${doc.doctype}
- - -
${error_message}
-
${show_doc}
- - -
${mark_as_unresolved}
- - `; - } else { - return ` - ${index} - -
${doc.doctype}
- - -
${error_message}
-
${show_traceback}
-
${show_doc}
- - -
${create_button}
- - `; - } - }) - .join(""); - - return rows; -}; diff --git a/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.json b/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.json deleted file mode 100644 index 417d9437926..00000000000 --- a/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.json +++ /dev/null @@ -1,279 +0,0 @@ -{ - "actions": [], - "beta": 1, - "creation": "2019-02-01 14:27:09.485238", - "doctype": "DocType", - "editable_grid": 1, - "engine": "InnoDB", - "field_order": [ - "status", - "master_data", - "is_master_data_processed", - "is_master_data_imported", - "column_break_2", - "tally_creditors_account", - "tally_debtors_account", - "company_section", - "tally_company", - "default_uom", - "column_break_8", - "erpnext_company", - "processed_files_section", - "chart_of_accounts", - "parties", - "addresses", - "column_break_17", - "uoms", - "items", - "vouchers", - "accounts_section", - "default_warehouse", - "default_round_off_account", - "column_break_21", - "default_cost_center", - "day_book_section", - "day_book_data", - "column_break_27", - "is_day_book_data_processed", - "is_day_book_data_imported", - "import_log_section", - "failed_import_log", - "fixed_errors_log", - "failed_import_preview", - "fixed_error_log_preview" - ], - "fields": [ - { - "fieldname": "status", - "fieldtype": "Data", - "hidden": 1, - "label": "Status" - }, - { - "description": "Data exported from Tally that consists of the Chart of Accounts, Customers, Suppliers, Addresses, Items and UOMs", - "fieldname": "master_data", - "fieldtype": "Attach", - "in_list_view": 1, - "label": "Master Data" - }, - { - "default": "Sundry Creditors", - "description": "Creditors Account set in Tally", - "fieldname": "tally_creditors_account", - "fieldtype": "Data", - "label": "Tally Creditors Account", - "read_only_depends_on": "eval:doc.is_master_data_processed==1", - "reqd": 1 - }, - { - "fieldname": "column_break_2", - "fieldtype": "Column Break" - }, - { - "default": "Sundry Debtors", - "description": "Debtors Account set in Tally", - "fieldname": "tally_debtors_account", - "fieldtype": "Data", - "label": "Tally Debtors Account", - "read_only_depends_on": "eval:doc.is_master_data_processed==1", - "reqd": 1 - }, - { - "depends_on": "is_master_data_processed", - "fieldname": "company_section", - "fieldtype": "Section Break" - }, - { - "description": "Company Name as per Imported Tally Data", - "fieldname": "tally_company", - "fieldtype": "Data", - "label": "Tally Company", - "read_only": 1 - }, - { - "fieldname": "column_break_8", - "fieldtype": "Column Break" - }, - { - "description": "Your Company set in ERPNext", - "fieldname": "erpnext_company", - "fieldtype": "Data", - "label": "ERPNext Company", - "read_only_depends_on": "eval:doc.is_master_data_processed==1" - }, - { - "fieldname": "processed_files_section", - "fieldtype": "Section Break", - "hidden": 1, - "label": "Processed Files" - }, - { - "fieldname": "chart_of_accounts", - "fieldtype": "Attach", - "label": "Chart of Accounts" - }, - { - "fieldname": "parties", - "fieldtype": "Attach", - "label": "Parties" - }, - { - "fieldname": "addresses", - "fieldtype": "Attach", - "label": "Addresses" - }, - { - "fieldname": "column_break_17", - "fieldtype": "Column Break" - }, - { - "fieldname": "uoms", - "fieldtype": "Attach", - "label": "UOMs" - }, - { - "fieldname": "items", - "fieldtype": "Attach", - "label": "Items" - }, - { - "fieldname": "vouchers", - "fieldtype": "Attach", - "label": "Vouchers" - }, - { - "depends_on": "is_master_data_imported", - "description": "The accounts are set by the system automatically but do confirm these defaults", - "fieldname": "accounts_section", - "fieldtype": "Section Break", - "label": "Accounts" - }, - { - "fieldname": "default_warehouse", - "fieldtype": "Link", - "label": "Default Warehouse", - "options": "Warehouse" - }, - { - "fieldname": "column_break_21", - "fieldtype": "Column Break" - }, - { - "fieldname": "default_cost_center", - "fieldtype": "Link", - "label": "Default Cost Center", - "options": "Cost Center" - }, - { - "default": "0", - "fieldname": "is_master_data_processed", - "fieldtype": "Check", - "label": "Is Master Data Processed", - "read_only": 1 - }, - { - "default": "0", - "fieldname": "is_day_book_data_processed", - "fieldtype": "Check", - "label": "Is Day Book Data Processed", - "read_only": 1 - }, - { - "default": "0", - "fieldname": "is_day_book_data_imported", - "fieldtype": "Check", - "label": "Is Day Book Data Imported", - "read_only": 1 - }, - { - "default": "0", - "fieldname": "is_master_data_imported", - "fieldtype": "Check", - "label": "Is Master Data Imported", - "read_only": 1 - }, - { - "depends_on": "is_master_data_imported", - "fieldname": "day_book_section", - "fieldtype": "Section Break" - }, - { - "fieldname": "column_break_27", - "fieldtype": "Column Break" - }, - { - "description": "Day Book Data exported from Tally that consists of all historic transactions", - "fieldname": "day_book_data", - "fieldtype": "Attach", - "in_list_view": 1, - "label": "Day Book Data" - }, - { - "default": "Unit", - "description": "UOM in case unspecified in imported data", - "fieldname": "default_uom", - "fieldtype": "Link", - "label": "Default UOM", - "options": "UOM", - "read_only_depends_on": "eval:doc.is_master_data_imported==1" - }, - { - "default": "[]", - "fieldname": "failed_import_log", - "fieldtype": "Code", - "hidden": 1, - "options": "JSON" - }, - { - "fieldname": "failed_import_preview", - "fieldtype": "HTML", - "label": "Failed Import Log" - }, - { - "fieldname": "import_log_section", - "fieldtype": "Section Break", - "label": "Import Log" - }, - { - "fieldname": "default_round_off_account", - "fieldtype": "Link", - "label": "Default Round Off Account", - "options": "Account" - }, - { - "default": "[]", - "fieldname": "fixed_errors_log", - "fieldtype": "Code", - "hidden": 1, - "options": "JSON" - }, - { - "fieldname": "fixed_error_log_preview", - "fieldtype": "HTML", - "label": "Fixed Error Log" - } - ], - "links": [], - "modified": "2020-04-28 00:29:18.039826", - "modified_by": "Administrator", - "module": "ERPNext Integrations", - "name": "Tally Migration", - "owner": "Administrator", - "permissions": [ - { - "create": 1, - "delete": 1, - "email": 1, - "export": 1, - "print": 1, - "read": 1, - "report": 1, - "role": "System Manager", - "share": 1, - "write": 1 - } - ], - "sort_field": "modified", - "sort_order": "DESC", - "track_changes": 1 -} \ No newline at end of file diff --git a/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.py b/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.py deleted file mode 100644 index d41818a4454..00000000000 --- a/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.py +++ /dev/null @@ -1,768 +0,0 @@ -# Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and contributors -# For license information, please see license.txt - - -import json -import re -import sys -import traceback -import zipfile -from decimal import Decimal - -import frappe -from bs4 import BeautifulSoup as bs -from frappe import _ -from frappe.custom.doctype.custom_field.custom_field import ( - create_custom_fields as _create_custom_fields, -) -from frappe.model.document import Document -from frappe.utils.data import format_datetime - -from erpnext import encode_company_abbr -from erpnext.accounts.doctype.account.chart_of_accounts.chart_of_accounts import create_charts -from erpnext.accounts.doctype.chart_of_accounts_importer.chart_of_accounts_importer import ( - unset_existing_data, -) - -PRIMARY_ACCOUNT = "Primary" -VOUCHER_CHUNK_SIZE = 500 - - -@frappe.whitelist() -def new_doc(document): - document = json.loads(document) - doctype = document.pop("doctype") - document.pop("name", None) - doc = frappe.new_doc(doctype) - doc.update(document) - - return doc - - -class TallyMigration(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 - - addresses: DF.Attach | None - chart_of_accounts: DF.Attach | None - day_book_data: DF.Attach | None - default_cost_center: DF.Link | None - default_round_off_account: DF.Link | None - default_uom: DF.Link | None - default_warehouse: DF.Link | None - erpnext_company: DF.Data | None - failed_import_log: DF.Code | None - fixed_errors_log: DF.Code | None - is_day_book_data_imported: DF.Check - is_day_book_data_processed: DF.Check - is_master_data_imported: DF.Check - is_master_data_processed: DF.Check - items: DF.Attach | None - master_data: DF.Attach | None - parties: DF.Attach | None - status: DF.Data | None - tally_company: DF.Data | None - tally_creditors_account: DF.Data - tally_debtors_account: DF.Data - uoms: DF.Attach | None - vouchers: DF.Attach | None - # end: auto-generated types - - def validate(self): - failed_import_log = json.loads(self.failed_import_log) - sorted_failed_import_log = sorted(failed_import_log, key=lambda row: row["doc"]["creation"]) - self.failed_import_log = json.dumps(sorted_failed_import_log) - - def autoname(self): - if not self.name: - self.name = "Tally Migration on " + format_datetime(self.creation) - - def get_collection(self, data_file): - def sanitize(string): - return re.sub("", "", string) - - def emptify(string): - string = re.sub(r"<\w+/>", "", string) - string = re.sub(r"<([\w.]+)>\s*<\/\1>", "", string) - string = re.sub(r"\r\n", "", string) - return string - - master_file = frappe.get_doc("File", {"file_url": data_file}) - master_file_path = master_file.get_full_path() - - if zipfile.is_zipfile(master_file_path): - with zipfile.ZipFile(master_file_path) as zf: - encoded_content = zf.read(zf.namelist()[0]) - try: - content = encoded_content.decode("utf-8-sig") - except UnicodeDecodeError: - content = encoded_content.decode("utf-16") - - master = bs(sanitize(emptify(content)), "xml") - collection = master.BODY.IMPORTDATA.REQUESTDATA - return collection - - def dump_processed_data(self, data): - for key, value in data.items(): - f = frappe.get_doc( - { - "doctype": "File", - "file_name": key + ".json", - "attached_to_doctype": self.doctype, - "attached_to_name": self.name, - "content": json.dumps(value), - "is_private": True, - } - ) - try: - f.insert(ignore_if_duplicate=True) - except frappe.DuplicateEntryError: - pass - setattr(self, key, f.file_url) - - def set_account_defaults(self): - self.default_cost_center, self.default_round_off_account = frappe.db.get_value( - "Company", self.erpnext_company, ["cost_center", "round_off_account"] - ) - self.default_warehouse = frappe.db.get_value("Stock Settings", "Stock Settings", "default_warehouse") - - def _process_master_data(self): - def get_company_name(collection): - return collection.find_all("REMOTECMPINFO.LIST")[0].REMOTECMPNAME.string.strip() - - def get_coa_customers_suppliers(collection): - root_type_map = { - "Application of Funds (Assets)": "Asset", - "Expenses": "Expense", - "Income": "Income", - "Source of Funds (Liabilities)": "Liability", - } - roots = set(root_type_map.keys()) - accounts = list(get_groups(collection.find_all("GROUP"))) + list( - get_ledgers(collection.find_all("LEDGER")) - ) - children, parents = get_children_and_parent_dict(accounts) - group_set = [acc[1] for acc in accounts if acc[2]] - children, customers, suppliers = remove_parties(parents, children, group_set) - - try: - coa = traverse({}, children, roots, roots, group_set) - except RecursionError: - self.log( - _( - "Error occured while parsing Chart of Accounts: Please make sure that no two accounts have the same name" - ) - ) - - for account in coa: - coa[account]["root_type"] = root_type_map[account] - - return coa, customers, suppliers - - def get_groups(accounts): - for account in accounts: - if account["NAME"] in (self.tally_creditors_account, self.tally_debtors_account): - yield get_parent(account), account["NAME"], 0 - else: - yield get_parent(account), account["NAME"], 1 - - def get_ledgers(accounts): - for account in accounts: - # If Ledger doesn't have PARENT field then don't create Account - # For example "Profit & Loss A/c" - if account.PARENT: - yield account.PARENT.string.strip(), account["NAME"], 0 - - def get_parent(account): - if account.PARENT: - return account.PARENT.string.strip() - return { - ("Yes", "No"): "Application of Funds (Assets)", - ("Yes", "Yes"): "Expenses", - ("No", "Yes"): "Income", - ("No", "No"): "Source of Funds (Liabilities)", - }[(account.ISDEEMEDPOSITIVE.string.strip(), account.ISREVENUE.string.strip())] - - def get_children_and_parent_dict(accounts): - children, parents = {}, {} - for parent, account, _is_group in accounts: - children.setdefault(parent, set()).add(account) - parents.setdefault(account, set()).add(parent) - parents[account].update(parents.get(parent, [])) - return children, parents - - def remove_parties(parents, children, group_set): - customers, suppliers = set(), set() - for account in parents: - found = False - if self.tally_creditors_account in parents[account]: - found = True - if account not in group_set: - suppliers.add(account) - if self.tally_debtors_account in parents[account]: - found = True - if account not in group_set: - customers.add(account) - if found: - children.pop(account, None) - - return children, customers, suppliers - - def traverse(tree, children, accounts, roots, group_set): - for account in accounts: - if account in group_set or account in roots: - if account in children: - tree[account] = traverse({}, children, children[account], roots, group_set) - else: - tree[account] = {"is_group": 1} - else: - tree[account] = {} - return tree - - def get_parties_addresses(collection, customers, suppliers): - parties, addresses = [], [] - for account in collection.find_all("LEDGER"): - party_type = None - links = [] - if account.NAME.string.strip() in customers: - party_type = "Customer" - parties.append( - { - "doctype": party_type, - "customer_name": account.NAME.string.strip(), - "tax_id": account.INCOMETAXNUMBER.string.strip() - if account.INCOMETAXNUMBER - else None, - "customer_group": "All Customer Groups", - "territory": "All Territories", - "customer_type": "Individual", - } - ) - links.append({"link_doctype": party_type, "link_name": account["NAME"]}) - - if account.NAME.string.strip() in suppliers: - party_type = "Supplier" - parties.append( - { - "doctype": party_type, - "supplier_name": account.NAME.string.strip(), - "pan": account.INCOMETAXNUMBER.string.strip() - if account.INCOMETAXNUMBER - else None, - "supplier_group": "All Supplier Groups", - "supplier_type": "Individual", - } - ) - links.append({"link_doctype": party_type, "link_name": account["NAME"]}) - - if party_type: - address = "\n".join([a.string.strip() for a in account.find_all("ADDRESS")]) - addresses.append( - { - "doctype": "Address", - "address_line1": address[:140].strip(), - "address_line2": address[140:].strip(), - "country": account.COUNTRYNAME.string.strip() if account.COUNTRYNAME else None, - "state": account.LEDSTATENAME.string.strip() if account.LEDSTATENAME else None, - "gst_state": account.LEDSTATENAME.string.strip() - if account.LEDSTATENAME - else None, - "pin_code": account.PINCODE.string.strip() if account.PINCODE else None, - "mobile": account.LEDGERPHONE.string.strip() if account.LEDGERPHONE else None, - "phone": account.LEDGERPHONE.string.strip() if account.LEDGERPHONE else None, - "gstin": account.PARTYGSTIN.string.strip() if account.PARTYGSTIN else None, - "links": links, - } - ) - return parties, addresses - - def get_stock_items_uoms(collection): - uoms = [] - for uom in collection.find_all("UNIT"): - uoms.append({"doctype": "UOM", "uom_name": uom.NAME.string.strip()}) - - items = [] - for item in collection.find_all("STOCKITEM"): - stock_uom = item.BASEUNITS.string.strip() if item.BASEUNITS else self.default_uom - items.append( - { - "doctype": "Item", - "item_code": item.NAME.string.strip(), - "stock_uom": stock_uom.strip(), - "is_stock_item": 0, - "item_group": "All Item Groups", - "item_defaults": [{"company": self.erpnext_company}], - } - ) - - return items, uoms - - try: - self.publish("Process Master Data", _("Reading Uploaded File"), 1, 5) - collection = self.get_collection(self.master_data) - company = get_company_name(collection) - self.tally_company = company - self.erpnext_company = company - - self.publish("Process Master Data", _("Processing Chart of Accounts and Parties"), 2, 5) - chart_of_accounts, customers, suppliers = get_coa_customers_suppliers(collection) - - self.publish("Process Master Data", _("Processing Party Addresses"), 3, 5) - parties, addresses = get_parties_addresses(collection, customers, suppliers) - - self.publish("Process Master Data", _("Processing Items and UOMs"), 4, 5) - items, uoms = get_stock_items_uoms(collection) - data = { - "chart_of_accounts": chart_of_accounts, - "parties": parties, - "addresses": addresses, - "items": items, - "uoms": uoms, - } - - self.publish("Process Master Data", _("Done"), 5, 5) - self.dump_processed_data(data) - - self.is_master_data_processed = 1 - - except Exception: - self.publish("Process Master Data", _("Process Failed"), -1, 5) - self.log() - - finally: - self.set_status() - - def publish(self, title, message, count, total): - frappe.publish_realtime( - "tally_migration_progress_update", - {"title": title, "message": message, "count": count, "total": total}, - user=self.modified_by, - ) - - def _import_master_data(self): - def create_company_and_coa(coa_file_url): - coa_file = frappe.get_doc("File", {"file_url": coa_file_url}) - frappe.local.flags.ignore_chart_of_accounts = True - - try: - company = frappe.get_doc( - { - "doctype": "Company", - "company_name": self.erpnext_company, - "default_currency": "INR", - "enable_perpetual_inventory": 0, - } - ).insert() - except frappe.DuplicateEntryError: - company = frappe.get_doc("Company", self.erpnext_company) - unset_existing_data(self.erpnext_company) - - frappe.local.flags.ignore_chart_of_accounts = False - create_charts(company.name, custom_chart=json.loads(coa_file.get_content())) - company.create_default_warehouses() - - def create_parties_and_addresses(parties_file_url, addresses_file_url): - parties_file = frappe.get_doc("File", {"file_url": parties_file_url}) - for party in json.loads(parties_file.get_content()): - try: - party_doc = frappe.get_doc(party) - party_doc.insert() - except Exception: - self.log(party_doc) - addresses_file = frappe.get_doc("File", {"file_url": addresses_file_url}) - for address in json.loads(addresses_file.get_content()): - try: - address_doc = frappe.get_doc(address) - address_doc.insert(ignore_mandatory=True) - except Exception: - self.log(address_doc) - - def create_items_uoms(items_file_url, uoms_file_url): - uoms_file = frappe.get_doc("File", {"file_url": uoms_file_url}) - for uom in json.loads(uoms_file.get_content()): - if not frappe.db.exists(uom): - try: - uom_doc = frappe.get_doc(uom) - uom_doc.insert() - except Exception: - self.log(uom_doc) - - items_file = frappe.get_doc("File", {"file_url": items_file_url}) - for item in json.loads(items_file.get_content()): - try: - item_doc = frappe.get_doc(item) - item_doc.insert() - except Exception: - self.log(item_doc) - - try: - self.publish("Import Master Data", _("Creating Company and Importing Chart of Accounts"), 1, 4) - create_company_and_coa(self.chart_of_accounts) - - self.publish("Import Master Data", _("Importing Parties and Addresses"), 2, 4) - create_parties_and_addresses(self.parties, self.addresses) - - self.publish("Import Master Data", _("Importing Items and UOMs"), 3, 4) - create_items_uoms(self.items, self.uoms) - - self.publish("Import Master Data", _("Done"), 4, 4) - - self.set_account_defaults() - self.is_master_data_imported = 1 - frappe.db.commit() - - except Exception: - self.publish("Import Master Data", _("Process Failed"), -1, 5) - frappe.db.rollback() - self.log() - - finally: - self.set_status() - - def _process_day_book_data(self): - def get_vouchers(collection): - vouchers = [] - for voucher in collection.find_all("VOUCHER"): - if voucher.ISCANCELLED.string.strip() == "Yes": - continue - inventory_entries = ( - voucher.find_all("INVENTORYENTRIES.LIST") - + voucher.find_all("ALLINVENTORYENTRIES.LIST") - + voucher.find_all("INVENTORYENTRIESIN.LIST") - + voucher.find_all("INVENTORYENTRIESOUT.LIST") - ) - if ( - voucher.VOUCHERTYPENAME.string.strip() not in ["Journal", "Receipt", "Payment", "Contra"] - and inventory_entries - ): - function = voucher_to_invoice - else: - function = voucher_to_journal_entry - try: - processed_voucher = function(voucher) - if processed_voucher: - vouchers.append(processed_voucher) - frappe.db.commit() - except Exception: - frappe.db.rollback() - self.log(voucher) - return vouchers - - def voucher_to_journal_entry(voucher): - accounts = [] - ledger_entries = voucher.find_all("ALLLEDGERENTRIES.LIST") + voucher.find_all( - "LEDGERENTRIES.LIST" - ) - for entry in ledger_entries: - account = { - "account": encode_company_abbr(entry.LEDGERNAME.string.strip(), self.erpnext_company), - "cost_center": self.default_cost_center, - } - if entry.ISPARTYLEDGER.string.strip() == "Yes": - party_details = get_party(entry.LEDGERNAME.string.strip()) - if party_details: - party_type, party_account = party_details - account["party_type"] = party_type - account["account"] = party_account - account["party"] = entry.LEDGERNAME.string.strip() - amount = Decimal(entry.AMOUNT.string.strip()) - if amount > 0: - account["credit_in_account_currency"] = str(abs(amount)) - else: - account["debit_in_account_currency"] = str(abs(amount)) - accounts.append(account) - - journal_entry = { - "doctype": "Journal Entry", - "tally_guid": voucher.GUID.string.strip(), - "tally_voucher_no": voucher.VOUCHERNUMBER.string.strip() if voucher.VOUCHERNUMBER else "", - "posting_date": voucher.DATE.string.strip(), - "company": self.erpnext_company, - "accounts": accounts, - } - return journal_entry - - def voucher_to_invoice(voucher): - if voucher.VOUCHERTYPENAME.string.strip() in ["Sales", "Credit Note"]: - doctype = "Sales Invoice" - party_field = "customer" - account_field = "debit_to" - account_name = encode_company_abbr(self.tally_debtors_account, self.erpnext_company) - price_list_field = "selling_price_list" - elif voucher.VOUCHERTYPENAME.string.strip() in ["Purchase", "Debit Note"]: - doctype = "Purchase Invoice" - party_field = "supplier" - account_field = "credit_to" - account_name = encode_company_abbr(self.tally_creditors_account, self.erpnext_company) - price_list_field = "buying_price_list" - else: - # Do not handle vouchers other than "Purchase", "Debit Note", "Sales" and "Credit Note" - # Do not handle Custom Vouchers either - return - - invoice = { - "doctype": doctype, - party_field: voucher.PARTYNAME.string.strip(), - "tally_guid": voucher.GUID.string.strip(), - "tally_voucher_no": voucher.VOUCHERNUMBER.string.strip() if voucher.VOUCHERNUMBER else "", - "posting_date": voucher.DATE.string.strip(), - "due_date": voucher.DATE.string.strip(), - "items": get_voucher_items(voucher, doctype), - "taxes": get_voucher_taxes(voucher), - account_field: account_name, - price_list_field: "Tally Price List", - "set_posting_time": 1, - "disable_rounded_total": 1, - "company": self.erpnext_company, - } - return invoice - - def get_voucher_items(voucher, doctype): - inventory_entries = ( - voucher.find_all("INVENTORYENTRIES.LIST") - + voucher.find_all("ALLINVENTORYENTRIES.LIST") - + voucher.find_all("INVENTORYENTRIESIN.LIST") - + voucher.find_all("INVENTORYENTRIESOUT.LIST") - ) - if doctype == "Sales Invoice": - account_field = "income_account" - elif doctype == "Purchase Invoice": - account_field = "expense_account" - items = [] - for entry in inventory_entries: - qty, uom = entry.ACTUALQTY.string.strip().split() - items.append( - { - "item_code": entry.STOCKITEMNAME.string.strip(), - "description": entry.STOCKITEMNAME.string.strip(), - "qty": qty.strip(), - "uom": uom.strip(), - "conversion_factor": 1, - "price_list_rate": entry.RATE.string.strip().split("/")[0], - "cost_center": self.default_cost_center, - "warehouse": self.default_warehouse, - account_field: encode_company_abbr( - entry.find_all("ACCOUNTINGALLOCATIONS.LIST")[0].LEDGERNAME.string.strip(), - self.erpnext_company, - ), - } - ) - return items - - def get_voucher_taxes(voucher): - ledger_entries = voucher.find_all("ALLLEDGERENTRIES.LIST") + voucher.find_all( - "LEDGERENTRIES.LIST" - ) - taxes = [] - for entry in ledger_entries: - if entry.ISPARTYLEDGER.string.strip() == "No": - tax_account = encode_company_abbr(entry.LEDGERNAME.string.strip(), self.erpnext_company) - taxes.append( - { - "charge_type": "Actual", - "account_head": tax_account, - "description": tax_account, - "tax_amount": entry.AMOUNT.string.strip(), - "cost_center": self.default_cost_center, - } - ) - return taxes - - def get_party(party): - if frappe.db.exists({"doctype": "Supplier", "supplier_name": party}): - return "Supplier", encode_company_abbr(self.tally_creditors_account, self.erpnext_company) - elif frappe.db.exists({"doctype": "Customer", "customer_name": party}): - return "Customer", encode_company_abbr(self.tally_debtors_account, self.erpnext_company) - - try: - self.publish("Process Day Book Data", _("Reading Uploaded File"), 1, 3) - collection = self.get_collection(self.day_book_data) - - self.publish("Process Day Book Data", _("Processing Vouchers"), 2, 3) - vouchers = get_vouchers(collection) - - self.publish("Process Day Book Data", _("Done"), 3, 3) - self.dump_processed_data({"vouchers": vouchers}) - - self.is_day_book_data_processed = 1 - - except Exception: - self.publish("Process Day Book Data", _("Process Failed"), -1, 5) - self.log() - - finally: - self.set_status() - - def _import_day_book_data(self): - def create_fiscal_years(vouchers): - from frappe.utils.data import add_years, getdate - - earliest_date = getdate(min(voucher["posting_date"] for voucher in vouchers)) - oldest_year = frappe.get_all( - "Fiscal Year", fields=["year_start_date", "year_end_date"], order_by="year_start_date" - )[0] - while earliest_date < oldest_year.year_start_date: - new_year = frappe.get_doc({"doctype": "Fiscal Year"}) - new_year.year_start_date = add_years(oldest_year.year_start_date, -1) - new_year.year_end_date = add_years(oldest_year.year_end_date, -1) - if new_year.year_start_date.year == new_year.year_end_date.year: - new_year.year = new_year.year_start_date.year - else: - new_year.year = f"{new_year.year_start_date.year}-{new_year.year_end_date.year}" - new_year.save() - oldest_year = new_year - - def create_custom_fields(): - _create_custom_fields( - { - ("Journal Entry", "Purchase Invoice", "Sales Invoice"): [ - { - "fieldtype": "Data", - "fieldname": "tally_guid", - "read_only": 1, - "label": "Tally GUID", - }, - { - "fieldtype": "Data", - "fieldname": "tally_voucher_no", - "read_only": 1, - "label": "Tally Voucher Number", - }, - ] - } - ) - - def create_price_list(): - frappe.get_doc( - { - "doctype": "Price List", - "price_list_name": "Tally Price List", - "selling": 1, - "buying": 1, - "enabled": 1, - "currency": "INR", - } - ).insert() - - try: - frappe.db.set_value( - "Account", - encode_company_abbr(self.tally_creditors_account, self.erpnext_company), - "account_type", - "Payable", - ) - frappe.db.set_value( - "Account", - encode_company_abbr(self.tally_debtors_account, self.erpnext_company), - "account_type", - "Receivable", - ) - frappe.db.set_value( - "Company", self.erpnext_company, "round_off_account", self.default_round_off_account - ) - - vouchers_file = frappe.get_doc("File", {"file_url": self.vouchers}) - vouchers = json.loads(vouchers_file.get_content()) - - create_fiscal_years(vouchers) - create_price_list() - create_custom_fields() - - total = len(vouchers) - is_last = False - - for index in range(0, total, VOUCHER_CHUNK_SIZE): - if index + VOUCHER_CHUNK_SIZE >= total: - is_last = True - frappe.enqueue_doc( - self.doctype, - self.name, - "_import_vouchers", - queue="long", - timeout=3600, - start=index + 1, - total=total, - is_last=is_last, - ) - - except Exception: - self.log() - - finally: - self.set_status() - - def _import_vouchers(self, start, total, is_last=False): - frappe.flags.in_migrate = True - vouchers_file = frappe.get_doc("File", {"file_url": self.vouchers}) - vouchers = json.loads(vouchers_file.get_content()) - chunk = vouchers[start : start + VOUCHER_CHUNK_SIZE] - - for index, voucher in enumerate(chunk, start=start): - try: - voucher_doc = frappe.get_doc(voucher) - voucher_doc.insert() - voucher_doc.submit() - self.publish("Importing Vouchers", _("{} of {}").format(index, total), index, total) - frappe.db.commit() - except Exception: - frappe.db.rollback() - self.log(voucher_doc) - - if is_last: - self.status = "" - self.is_day_book_data_imported = 1 - self.save() - frappe.db.set_value("Price List", "Tally Price List", "enabled", 0) - frappe.flags.in_migrate = False - - @frappe.whitelist() - def process_master_data(self): - self.set_status("Processing Master Data") - frappe.enqueue_doc(self.doctype, self.name, "_process_master_data", queue="long", timeout=3600) - - @frappe.whitelist() - def import_master_data(self): - self.set_status("Importing Master Data") - frappe.enqueue_doc(self.doctype, self.name, "_import_master_data", queue="long", timeout=3600) - - @frappe.whitelist() - def process_day_book_data(self): - self.set_status("Processing Day Book Data") - frappe.enqueue_doc(self.doctype, self.name, "_process_day_book_data", queue="long", timeout=3600) - - @frappe.whitelist() - def import_day_book_data(self): - self.set_status("Importing Day Book Data") - frappe.enqueue_doc(self.doctype, self.name, "_import_day_book_data", queue="long", timeout=3600) - - def log(self, data=None): - if isinstance(data, frappe.model.document.Document): - if sys.exc_info()[1].__class__ != frappe.DuplicateEntryError: - failed_import_log = json.loads(self.failed_import_log) - doc = data.as_dict() - failed_import_log.append({"doc": doc, "exc": traceback.format_exc()}) - self.failed_import_log = json.dumps(failed_import_log, separators=(",", ":")) - self.save() - frappe.db.commit() - - else: - data = data or self.status - message = "\n".join( - [ - "Data:", - json.dumps(data, default=str, indent=4), - "--" * 50, - "\nException:", - traceback.format_exc(), - ] - ) - return frappe.log_error(title="Tally Migration Error", message=message) - - def set_status(self, status=""): - self.status = status - self.save() diff --git a/erpnext/erpnext_integrations/doctype/tally_migration/test_tally_migration.py b/erpnext/erpnext_integrations/doctype/tally_migration/test_tally_migration.py deleted file mode 100644 index 7a61abaee63..00000000000 --- a/erpnext/erpnext_integrations/doctype/tally_migration/test_tally_migration.py +++ /dev/null @@ -1,8 +0,0 @@ -# Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and Contributors -# See license.txt - -import unittest - - -class TestTallyMigration(unittest.TestCase): - pass diff --git a/erpnext/hooks.py b/erpnext/hooks.py index bd367d6d95e..21f301f2450 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -4,7 +4,7 @@ app_publisher = "Frappe Technologies Pvt. Ltd." app_description = """ERP made simple""" app_icon = "fa fa-th" app_color = "#e74c3c" -app_email = "info@erpnext.com" +app_email = "hello@frappe.io" app_license = "GNU General Public License (v3)" source_link = "https://github.com/frappe/erpnext" app_logo_url = "/assets/erpnext/images/erpnext-logo.svg" @@ -35,6 +35,14 @@ doctype_js = { "Newsletter": "public/js/newsletter.js", "Contact": "public/js/contact.js", } +doctype_list_js = { + "Code List": [ + "edi/doctype/code_list/code_list_import.js", + ], + "Common Code": [ + "edi/doctype/code_list/code_list_import.js", + ], +} override_doctype_class = {"Address": "erpnext.accounts.custom.address.ERPNextAddress"} @@ -343,7 +351,10 @@ doc_events = { "erpnext.support.doctype.service_level_agreement.service_level_agreement.on_communication_update", "erpnext.support.doctype.issue.issue.set_first_response_time", ], - "after_insert": "erpnext.crm.utils.link_communications_with_prospect", + "after_insert": [ + "erpnext.crm.utils.link_communications_with_prospect", + "erpnext.crm.utils.update_modified_timestamp", + ], }, "Event": { "after_insert": "erpnext.crm.utils.link_events_with_prospect", @@ -365,7 +376,6 @@ doc_events = { "Payment Entry": { "on_submit": [ "erpnext.regional.create_transaction_log", - "erpnext.accounts.doctype.payment_request.payment_request.update_payment_req_status", "erpnext.accounts.doctype.dunning.dunning.resolve_dunning", ], "on_cancel": ["erpnext.accounts.doctype.dunning.dunning.resolve_dunning"], @@ -405,7 +415,6 @@ scheduler_events = { "cron": { "0/15 * * * *": [ "erpnext.manufacturing.doctype.bom_update_log.bom_update_log.resume_bom_cost_update_jobs", - "erpnext.accounts.doctype.process_payment_reconciliation.process_payment_reconciliation.trigger_reconciliation_for_queued_docs", ], "0/30 * * * *": [ "erpnext.utilities.doctype.video.video.update_youtube_data", @@ -475,7 +484,7 @@ email_brand_image = "assets/erpnext/images/erpnext-logo.jpg" default_mail_footer = """ Sent via - + ERPNext @@ -553,6 +562,8 @@ accounting_dimension_doctypes = [ "Payment Reconciliation", "Payment Reconciliation Allocation", "Payment Request", + "Asset Movement Item", + "Asset Depreciation Schedule", ] get_matching_queries = ( diff --git a/erpnext/manufacturing/doctype/blanket_order/blanket_order.json b/erpnext/manufacturing/doctype/blanket_order/blanket_order.json index a63fc4da69a..0e2e7273f10 100644 --- a/erpnext/manufacturing/doctype/blanket_order/blanket_order.json +++ b/erpnext/manufacturing/doctype/blanket_order/blanket_order.json @@ -13,6 +13,8 @@ "supplier", "supplier_name", "column_break_8", + "order_no", + "order_date", "from_date", "to_date", "company", @@ -129,15 +131,27 @@ "fieldname": "terms", "fieldtype": "Text Editor", "label": "Terms and Conditions Details" + }, + { + "fieldname": "order_no", + "fieldtype": "Data", + "label": "Order No" + }, + { + "depends_on": "eval:doc.order_no", + "fieldname": "order_date", + "fieldtype": "Date", + "label": "Order Date" } ], "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2021-06-29 00:30:30.621636", + "modified": "2024-12-05 15:44:21.520093", "modified_by": "Administrator", "module": "Manufacturing", "name": "Blanket Order", + "naming_rule": "By \"Naming Series\" field", "owner": "Administrator", "permissions": [ { diff --git a/erpnext/manufacturing/doctype/blanket_order/blanket_order.py b/erpnext/manufacturing/doctype/blanket_order/blanket_order.py index 5ecf9d3a9d6..988dce7122a 100644 --- a/erpnext/manufacturing/doctype/blanket_order/blanket_order.py +++ b/erpnext/manufacturing/doctype/blanket_order/blanket_order.py @@ -31,6 +31,8 @@ class BlanketOrder(Document): from_date: DF.Date items: DF.Table[BlanketOrderItem] naming_series: DF.Literal["MFG-BLR-.YYYY.-"] + order_date: DF.Date | None + order_no: DF.Data | None supplier: DF.Link | None supplier_name: DF.Data | None tc_name: DF.Link | None @@ -41,6 +43,7 @@ class BlanketOrder(Document): def validate(self): self.validate_dates() self.validate_duplicate_items() + self.validate_item_qty() self.set_party_item_code() def validate_dates(self): @@ -115,6 +118,11 @@ class BlanketOrder(Document): for d in self.items: d.db_set("ordered_qty", item_ordered_qty.get(d.item_code, 0)) + def validate_item_qty(self): + for d in self.items: + if d.qty < 0: + frappe.throw(_("Row {0}: Quantity cannot be negative.").format(d.idx)) + @frappe.whitelist() def make_order(source_name): @@ -146,7 +154,7 @@ def make_order(source_name): "doctype": doctype + " Item", "field_map": {"rate": "blanket_order_rate", "parent": "blanket_order"}, "postprocess": update_item, - "condition": lambda item: (flt(item.qty) - flt(item.ordered_qty)) > 0, + "condition": lambda item: not (flt(item.qty)) or (flt(item.qty) - flt(item.ordered_qty)) > 0, }, }, ) @@ -184,7 +192,7 @@ def validate_against_blanket_order(order_doc): if item.item_code in item_data: remaining_qty = item.qty - item.ordered_qty allowed_qty = remaining_qty + (remaining_qty * (allowance / 100)) - if allowed_qty < item_data[item.item_code]: + if item.qty and allowed_qty < item_data[item.item_code]: frappe.throw( _( "Item {0} cannot be ordered more than {1} against Blanket Order {2}." diff --git a/erpnext/manufacturing/doctype/bom/bom.js b/erpnext/manufacturing/doctype/bom/bom.js index 6267ee4d029..4b52859cabd 100644 --- a/erpnext/manufacturing/doctype/bom/bom.js +++ b/erpnext/manufacturing/doctype/bom/bom.js @@ -182,25 +182,30 @@ frappe.ui.form.on("BOM", { }, make_work_order(frm) { - frm.events.setup_variant_prompt(frm, "Work Order", (frm, item, data, variant_items) => { - frappe.call({ - method: "erpnext.manufacturing.doctype.work_order.work_order.make_work_order", - args: { - bom_no: frm.doc.name, - item: item, - qty: data.qty || 0.0, - project: frm.doc.project, - variant_items: variant_items, - }, - freeze: true, - callback(r) { - if (r.message) { - let doc = frappe.model.sync(r.message)[0]; - frappe.set_route("Form", doc.doctype, doc.name); - } - }, - }); - }); + frm.events.setup_variant_prompt( + frm, + "Work Order", + (frm, item, data, variant_items, use_multi_level_bom) => { + frappe.call({ + method: "erpnext.manufacturing.doctype.work_order.work_order.make_work_order", + args: { + bom_no: frm.doc.name, + item: item, + qty: data.qty || 0.0, + project: frm.doc.project, + variant_items: variant_items, + use_multi_level_bom: use_multi_level_bom, + }, + freeze: true, + callback(r) { + if (r.message) { + let doc = frappe.model.sync(r.message)[0]; + frappe.set_route("Form", doc.doctype, doc.name); + } + }, + }); + } + ); }, make_variant_bom(frm) { @@ -277,6 +282,13 @@ frappe.ui.form.on("BOM", { cur_dialog.refresh(); }, }); + + fields.push({ + fieldtype: "Check", + label: __("Use Multi-Level BOM"), + fieldname: "use_multi_level_bom", + default: frm.doc?.__onload.use_multi_level_bom, + }); } var has_template_rm = frm.doc.items.filter((d) => d.has_variants === 1) || []; @@ -285,6 +297,7 @@ frappe.ui.form.on("BOM", { fieldname: "items", fieldtype: "Table", label: __("Raw Materials"), + depends_on: "eval:!doc.use_multi_level_bom", fields: [ { fieldname: "item_code", @@ -293,6 +306,13 @@ frappe.ui.form.on("BOM", { fieldtype: "Link", in_list_view: 1, reqd: 1, + get_query() { + return { + filters: { + has_variants: 1, + }, + }; + }, }, { fieldname: "variant_item_code", @@ -313,6 +333,13 @@ frappe.ui.form.on("BOM", { }, }; }, + change() { + let doc = this.doc; + if (!doc.qty) { + doc.qty = 1.0; + this.grid.set_value("qty", 1.0, doc); + } + }, }, { fieldname: "qty", @@ -347,14 +374,15 @@ frappe.ui.form.on("BOM", { (data) => { let item = data.item || frm.doc.item; let variant_items = data.items || []; + let use_multi_level_bom = data.use_multi_level_bom || 0; variant_items.forEach((d) => { - if (!d.variant_item_code) { + if (!d.variant_item_code && !use_multi_level_bom) { frappe.throw(__("Select variant item code for the template item {0}", [d.item_code])); } }); - callback(frm, item, data, variant_items); + callback(frm, item, data, variant_items, use_multi_level_bom); }, __(title), __("Create") @@ -364,7 +392,7 @@ frappe.ui.form.on("BOM", { dialog.fields_dict.items.df.data.push({ item_code: d.item_code, variant_item_code: "", - qty: d.qty, + qty: (d.qty / frm.doc.quantity) * (dialog.fields_dict.qty.value || 1), source_warehouse: d.source_warehouse, operation: d.operation, }); diff --git a/erpnext/manufacturing/doctype/bom/bom.py b/erpnext/manufacturing/doctype/bom/bom.py index 009320c7a18..46bf75780d4 100644 --- a/erpnext/manufacturing/doctype/bom/bom.py +++ b/erpnext/manufacturing/doctype/bom/bom.py @@ -176,13 +176,10 @@ class BOM(WebsiteGenerator): search_key = f"{self.doctype}-{self.item}%" existing_boms = frappe.get_all( - "BOM", filters={"name": ("like", search_key), "amended_from": ["is", "not set"]}, pluck="name" + "BOM", filters={"name": search_key, "amended_from": ["is", "not set"]}, pluck="name" ) - if existing_boms: - index = self.get_next_version_index(existing_boms) - else: - index = 1 + index = self.get_index_for_bom(existing_boms) prefix = self.doctype suffix = "%.3i" % index # convert index to string (1 -> "001") @@ -200,21 +197,40 @@ class BOM(WebsiteGenerator): name = f"{prefix}-{truncated_item_name}-{suffix}" if frappe.db.exists("BOM", name): - conflicting_bom = frappe.get_doc("BOM", name) + existing_boms = frappe.get_all( + "BOM", filters={"name": ("like", search_key), "amended_from": ["is", "not set"]}, pluck="name" + ) - if conflicting_bom.item != self.item: - msg = _("A BOM with name {0} already exists for item {1}.").format( - frappe.bold(name), frappe.bold(conflicting_bom.item) - ) - - frappe.throw( - _("{0}{1} Did you rename the item? Please contact Administrator / Tech support").format( - msg, "
" - ) - ) + index = self.get_index_for_bom(existing_boms) + suffix = "%.3i" % index + name = f"{prefix}-{self.item}-{suffix}" self.name = name + def get_index_for_bom(self, existing_boms): + index = 1 + if existing_boms: + index = self.get_next_version_index(existing_boms) + + return index + + def onload(self): + super().onload() + + self.set_onload_for_muulti_level_bom() + + def set_onload_for_muulti_level_bom(self): + use_multi_level_bom = frappe.db.get_value( + "Property Setter", + {"field_name": "use_multi_level_bom", "doc_type": "Work Order", "property": "default"}, + "value", + ) + + if use_multi_level_bom is None: + use_multi_level_bom = 1 + + self.set_onload("use_multi_level_bom", cint(use_multi_level_bom)) + @staticmethod def get_next_version_index(existing_boms: list[str]) -> int: # split by "/" and "-" @@ -260,6 +276,24 @@ class BOM(WebsiteGenerator): self.update_cost(update_parent=False, from_child_bom=True, update_hour_rate=False, save=False) self.set_process_loss_qty() self.validate_scrap_items() + self.set_default_uom() + + def set_default_uom(self): + if not self.get("items"): + return + + item_wise_uom = frappe._dict( + frappe.get_all( + "Item", + filters={"name": ("in", [item.item_code for item in self.items])}, + fields=["name", "stock_uom"], + as_list=1, + ) + ) + + for row in self.get("items"): + if row.stock_uom != item_wise_uom.get(row.item_code): + row.stock_uom = item_wise_uom.get(row.item_code) def get_context(self, context): context.parents = [{"name": "boms", "title": _("All BOMs")}] @@ -406,12 +440,12 @@ class BOM(WebsiteGenerator): "description": item and args["description"] or "", "image": item and args["image"] or "", "stock_uom": item and args["stock_uom"] or "", - "uom": item and args["stock_uom"] or "", - "conversion_factor": 1, + "uom": args["uom"] if args.get("uom") else item and args["stock_uom"] or "", + "conversion_factor": args["conversion_factor"] if args.get("conversion_factor") else 1, "bom_no": args["bom_no"], "rate": rate, "qty": args.get("qty") or args.get("stock_qty") or 1, - "stock_qty": args.get("qty") or args.get("stock_qty") or 1, + "stock_qty": args.get("stock_qty") or args.get("qty") or 1, "base_rate": flt(rate) * (flt(self.conversion_rate) or 1), "include_item_in_manufacturing": cint(args.get("transfer_for_manufacture")), "sourced_by_supplier": args.get("sourced_by_supplier", 0), @@ -742,11 +776,8 @@ 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 not self.bom_creator: + if not self.bom_creator and d.is_stock_item: d.rate = self.get_rm_rate( { "company": self.company, @@ -968,6 +999,13 @@ class BOM(WebsiteGenerator): if not d.batch_size or d.batch_size <= 0: d.batch_size = 1 + if not d.workstation and not d.workstation_type: + frappe.throw( + _( + "Row {0}: Workstation or Workstation Type is mandatory for an operation {1}" + ).format(d.idx, d.operation) + ) + def get_tree_representation(self) -> BOMTree: """Get a complete tree representation preserving order of child items.""" return BOMTree(self.name) @@ -1333,6 +1371,64 @@ def add_operations_cost(stock_entry, work_order=None, expense_account=None): }, ) + def get_max_operation_quantity(): + from frappe.query_builder.functions import Sum + + table = frappe.qb.DocType("Job Card") + query = ( + frappe.qb.from_(table) + .select(Sum(table.total_completed_qty).as_("qty")) + .where( + (table.docstatus == 1) + & (table.work_order == work_order.name) + & (table.is_corrective_job_card == 0) + ) + .groupby(table.operation) + ) + return min([d.qty for d in query.run(as_dict=True)], default=0) + + def get_utilised_corrective_cost(): + from frappe.query_builder.functions import Sum + + table = frappe.qb.DocType("Stock Entry") + subquery = ( + frappe.qb.from_(table) + .select(table.name) + .where( + (table.docstatus == 1) + & (table.work_order == work_order.name) + & (table.purpose == "Manufacture") + ) + ) + table = frappe.qb.DocType("Landed Cost Taxes and Charges") + query = ( + frappe.qb.from_(table) + .select(Sum(table.amount).as_("amount")) + .where(table.parent.isin(subquery) & (table.has_corrective_cost == 1)) + ) + return query.run(as_dict=True)[0].amount or 0 + + if ( + work_order + and work_order.corrective_operation_cost + and cint( + frappe.db.get_single_value( + "Manufacturing Settings", "add_corrective_operation_cost_in_finished_good_valuation" + ) + ) + ): + max_qty = get_max_operation_quantity() - work_order.produced_qty + remaining_corrective_cost = work_order.corrective_operation_cost - get_utilised_corrective_cost() + stock_entry.append( + "additional_costs", + { + "expense_account": expense_account, + "description": "Corrective Operation Cost", + "has_corrective_cost": 1, + "amount": remaining_corrective_cost / max_qty * flt(stock_entry.fg_completed_qty), + }, + ) + @frappe.whitelist() def get_bom_diff(bom1, bom2): @@ -1400,11 +1496,8 @@ def item_query(doctype, txt, searchfield, start, page_len, filters): fields = ["name", "item_name", "item_group", "description"] fields.extend([field for field in searchfields if field not in ["name", "item_group", "description"]]) - searchfields = searchfields + [ - field - for field in [searchfield or "name", "item_code", "item_group", "item_name"] - if field not in searchfields - ] + if not searchfields: + searchfields = ["name"] query_filters = {"disabled": 0, "ifnull(end_of_life, '3099-12-31')": (">", today())} @@ -1511,6 +1604,9 @@ def get_scrap_items_from_sub_assemblies(bom_no, company, qty, scrap_items=None): fields=["bom_no", "qty"], order_by="idx asc", ) + # fetch Scrap Items for Parent Bom + items = get_bom_items_as_dict(bom_no, company, qty=qty, fetch_exploded=0, fetch_scrap_items=1) + scrap_items.update(items) for row in bom_items: if not row.bom_no: diff --git a/erpnext/manufacturing/doctype/bom/bom_item_preview.html b/erpnext/manufacturing/doctype/bom/bom_item_preview.html index eb4135e03ac..2c0f091da58 100644 --- a/erpnext/manufacturing/doctype/bom/bom_item_preview.html +++ b/erpnext/manufacturing/doctype/bom/bom_item_preview.html @@ -3,7 +3,7 @@
{% if data.image %}
- +
{% endif %}
diff --git a/erpnext/manufacturing/doctype/bom/bom_list.js b/erpnext/manufacturing/doctype/bom/bom_list.js index a26df545f85..1b6cba90dbc 100644 --- a/erpnext/manufacturing/doctype/bom/bom_list.js +++ b/erpnext/manufacturing/doctype/bom/bom_list.js @@ -2,13 +2,13 @@ frappe.listview_settings["BOM"] = { add_fields: ["is_active", "is_default", "total_cost", "has_variants"], get_indicator: function (doc) { if (doc.is_active && doc.has_variants) { - return [__("Template"), "orange", "has_variants,=,Yes"]; + return [__("Template"), "orange", "has_variants,=,1"]; } else if (doc.is_default) { - return [__("Default"), "green", "is_default,=,Yes"]; + return [__("Default"), "green", "is_default,=,1"]; } else if (doc.is_active) { - return [__("Active"), "blue", "is_active,=,Yes"]; + return [__("Active"), "blue", "is_active,=,1"]; } else if (!doc.is_active) { - return [__("Not active"), "gray", "is_active,=,No"]; + return [__("Not active"), "gray", "is_active,=,0"]; } }, }; diff --git a/erpnext/manufacturing/doctype/bom/test_bom.py b/erpnext/manufacturing/doctype/bom/test_bom.py index d02b51ca6e7..83e722cce50 100644 --- a/erpnext/manufacturing/doctype/bom/test_bom.py +++ b/erpnext/manufacturing/doctype/bom/test_bom.py @@ -755,6 +755,39 @@ class TestBOM(FrappeTestCase): self.assertTrue("_Test RM Item 2 Fixed Asset Item" not in items) self.assertTrue("_Test RM Item 3 Manufacture Item" in items) + def test_get_scrap_items_from_sub_assemblies(self): + from erpnext.manufacturing.doctype.bom.bom import get_scrap_items_from_sub_assemblies + + bom = frappe.copy_doc(test_records[1]) + bom.insert(ignore_mandatory=True) + + bom_scraped_items = [i.get("item_code") for i in bom.get("scrap_items", [])] + + # get scrapted items for parent bom + scraped_items = get_scrap_items_from_sub_assemblies(bom.name, bom.company, 2, None) + for item_code in scraped_items.keys(): + self.assertIn(item_code, bom_scraped_items, f"Item {item_code} not found in BOM scrap items") + + def test_bom_raw_materials_stock_uom(self): + rm_item = make_item( + properties={"is_stock_item": 1, "valuation_rate": 1000.0, "stock_uom": "Nos"} + ).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], do_not_submit=True) + for row in bom.items: + self.assertEqual(row.stock_uom, "Nos") + + frappe.db.set_value("Item", rm_item, "stock_uom", "Kg") + + bom.items[0].qty = 2 + bom.save() + + for row in bom.items: + self.assertEqual(row.stock_uom, "Kg") + def get_default_bom(item_code="_Test FG Item 2"): return frappe.db.get_value("BOM", {"item": item_code, "is_active": 1, "is_default": 1}) diff --git a/erpnext/manufacturing/doctype/bom_creator/bom_creator.json b/erpnext/manufacturing/doctype/bom_creator/bom_creator.json index 9d2384e31a0..65664be2bea 100644 --- a/erpnext/manufacturing/doctype/bom_creator/bom_creator.json +++ b/erpnext/manufacturing/doctype/bom_creator/bom_creator.json @@ -280,6 +280,7 @@ "read_only": 1 } ], + "hide_toolbar": 1, "icon": "fa fa-sitemap", "is_submittable": 1, "links": [ @@ -288,7 +289,7 @@ "link_fieldname": "bom_creator" } ], - "modified": "2024-04-02 16:30:59.779190", + "modified": "2024-09-21 09:05:52.945112", "modified_by": "Administrator", "module": "Manufacturing", "name": "BOM Creator", diff --git a/erpnext/manufacturing/doctype/bom_creator/bom_creator.py b/erpnext/manufacturing/doctype/bom_creator/bom_creator.py index 4062235a32e..c4fb6345c93 100644 --- a/erpnext/manufacturing/doctype/bom_creator/bom_creator.py +++ b/erpnext/manufacturing/doctype/bom_creator/bom_creator.py @@ -28,6 +28,8 @@ BOM_ITEM_FIELDS = [ "stock_uom", "conversion_factor", "do_not_explode", + "source_warehouse", + "allow_alternative_item", ] @@ -204,7 +206,7 @@ class BOMCreator(Document): for field, label in fields.items(): if not self.get(field): - frappe.throw(_("Please set {0} in BOM Creator {1}").format(label, self.name)) + frappe.throw(_("Please set {0} in BOM Creator {1}").format(_(label), self.name)) def on_submit(self): self.enqueue_create_boms() @@ -291,7 +293,6 @@ class BOMCreator(Document): "item": row.item_code, "bom_type": "Production", "quantity": row.qty, - "allow_alternative_item": 1, "bom_creator": self.name, "bom_creator_item": bom_creator_item, } @@ -315,7 +316,6 @@ class BOMCreator(Document): item_args.update( { "bom_no": bom_no, - "allow_alternative_item": 1, "allow_scrap_items": 1, "include_item_in_manufacturing": 1, } @@ -365,12 +365,6 @@ def get_children(doctype=None, parent=None, **kwargs): return frappe.get_all("BOM Creator Item", fields=fields, filters=query_filters, order_by="idx") -def get_parent_row_no(doc, name): - for row in doc.items: - if row.name == name: - return row.idx - - @frappe.whitelist() def add_item(**kwargs): if isinstance(kwargs, str): @@ -418,6 +412,8 @@ def add_sub_assembly(**kwargs): parent_row_no = "" if not kwargs.convert_to_sub_assembly: item_info = get_item_details(bom_item.item_code) + parent_row_no = get_parent_row_no(doc, kwargs.fg_reference_id) + item_row = doc.append( "items", { @@ -426,20 +422,20 @@ def add_sub_assembly(**kwargs): "uom": item_info.stock_uom, "fg_item": kwargs.fg_item, "conversion_factor": 1, + "parent_row_no": parent_row_no, "fg_reference_id": name, "stock_qty": bom_item.qty, "do_not_explode": 1, "is_expandable": 1, "stock_uom": item_info.stock_uom, + "allow_alternative_item": kwargs.allow_alternative_item, }, ) parent_row_no = item_row.idx name = "" else: - parent_row_no = [row.idx for row in doc.items if row.name == kwargs.fg_reference_id] - if parent_row_no: - parent_row_no = parent_row_no[0] + parent_row_no = get_parent_row_no(doc, kwargs.fg_reference_id) for row in bom_item.get("items"): row = frappe._dict(row) @@ -471,6 +467,14 @@ def get_item_details(item_code): ) +def get_parent_row_no(doc, name): + for row in doc.items: + if row.name == name: + return row.idx + + frappe.msgprint(_("Parent Row No not found for {0}").format(name)) + + @frappe.whitelist() def delete_node(**kwargs): if isinstance(kwargs, str): diff --git a/erpnext/manufacturing/doctype/bom_creator_item/bom_creator_item.json b/erpnext/manufacturing/doctype/bom_creator_item/bom_creator_item.json index 1726f898751..a6e67b956cf 100644 --- a/erpnext/manufacturing/doctype/bom_creator_item/bom_creator_item.json +++ b/erpnext/manufacturing/doctype/bom_creator_item/bom_creator_item.json @@ -15,6 +15,7 @@ "is_expandable", "sourced_by_supplier", "bom_created", + "allow_alternative_item", "description_section", "description", "quantity_and_rate_section", @@ -225,12 +226,18 @@ "label": "BOM Created", "no_copy": 1, "print_hide": 1 + }, + { + "default": "1", + "fieldname": "allow_alternative_item", + "fieldtype": "Check", + "label": "Allow Alternative Item" } ], "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2024-06-03 18:45:24.339532", + "modified": "2025-02-19 13:25:15.732496", "modified_by": "Administrator", "module": "Manufacturing", "name": "BOM Creator Item", diff --git a/erpnext/manufacturing/doctype/bom_creator_item/bom_creator_item.py b/erpnext/manufacturing/doctype/bom_creator_item/bom_creator_item.py index e172f36224d..fdd3f77ae26 100644 --- a/erpnext/manufacturing/doctype/bom_creator_item/bom_creator_item.py +++ b/erpnext/manufacturing/doctype/bom_creator_item/bom_creator_item.py @@ -14,6 +14,7 @@ class BOMCreatorItem(Document): if TYPE_CHECKING: from frappe.types import DF + allow_alternative_item: DF.Check amount: DF.Currency base_amount: DF.Currency base_rate: DF.Currency diff --git a/erpnext/manufacturing/doctype/bom_update_log/bom_update_log.py b/erpnext/manufacturing/doctype/bom_update_log/bom_update_log.py index 12d52ea51fd..34a3900015d 100644 --- a/erpnext/manufacturing/doctype/bom_update_log/bom_update_log.py +++ b/erpnext/manufacturing/doctype/bom_update_log/bom_update_log.py @@ -8,7 +8,7 @@ from frappe import _ from frappe.model.document import Document from frappe.query_builder import DocType, Interval from frappe.query_builder.functions import Now -from frappe.utils import cint, cstr +from frappe.utils import cint, cstr, date_diff, today from erpnext.manufacturing.doctype.bom_update_log.bom_updation_utils import ( get_leaf_boms, @@ -88,10 +88,12 @@ class BOMUpdateLog(Document): wip_log = frappe.get_all( "BOM Update Log", - {"update_type": "Update Cost", "status": ["in", ["Queued", "In Progress"]]}, + fields=["name", "modified"], + filters={"update_type": "Update Cost", "status": ["in", ["Queued", "In Progress"]]}, limit_page_length=1, ) - if wip_log: + + if wip_log and date_diff(today(), wip_log[0].modified) < 1: log_link = frappe.utils.get_link_to_form("BOM Update Log", wip_log[0].name) frappe.throw( _("BOM Updation already in progress. Please wait until {0} is complete.").format(log_link), diff --git a/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py b/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py index 2e8dba1ccfe..983dd2d4cd8 100644 --- a/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py +++ b/erpnext/manufacturing/doctype/bom_update_tool/bom_update_tool.py @@ -9,6 +9,7 @@ if TYPE_CHECKING: import frappe from frappe.model.document import Document +from frappe.utils import date_diff, get_datetime, now class BOMUpdateTool(Document): @@ -50,13 +51,21 @@ def auto_update_latest_price_in_all_boms() -> None: if frappe.db.get_single_value("Manufacturing Settings", "update_bom_costs_automatically"): wip_log = frappe.get_all( "BOM Update Log", - {"update_type": "Update Cost", "status": ["in", ["Queued", "In Progress"]]}, + fields=["creation", "status"], + filters={"update_type": "Update Cost", "status": ["in", ["Queued", "In Progress"]]}, limit_page_length=1, + order_by="creation desc", ) - if not wip_log: + + if not wip_log or is_older_log(wip_log[0]): create_bom_update_log(update_type="Update Cost") +def is_older_log(log: dict) -> bool: + no_of_days = date_diff(get_datetime(now()), get_datetime(log.creation)) + return no_of_days > 10 + + def create_bom_update_log( boms: dict[str, str] | None = None, update_type: Literal["Replace BOM", "Update Cost"] = "Replace BOM", diff --git a/erpnext/manufacturing/doctype/job_card/job_card.js b/erpnext/manufacturing/doctype/job_card/job_card.js index 4cc60a3b4a6..690d7945beb 100644 --- a/erpnext/manufacturing/doctype/job_card/job_card.js +++ b/erpnext/manufacturing/doctype/job_card/job_card.js @@ -37,7 +37,7 @@ frappe.ui.form.on("Job Card", { frappe.flags.resume_job = 0; let has_items = frm.doc.items && frm.doc.items.length; - if (!frm.is_new() && frm.doc.__onload.work_order_closed) { + if (!frm.is_new() && frm.doc.__onload?.work_order_closed) { frm.disable_save(); return; } @@ -312,7 +312,7 @@ frappe.ui.form.on("Job Card", { fieldtype: "Float", label: __("Completed Quantity"), fieldname: "qty", - default: frm.doc.for_quantity, + default: frm.doc.for_quantity - frm.doc.total_completed_qty, }, (data) => { frm.events.complete_job(frm, "Complete", data.qty); diff --git a/erpnext/manufacturing/doctype/job_card/job_card.json b/erpnext/manufacturing/doctype/job_card/job_card.json index 0f01704eb0f..39e7aac38ae 100644 --- a/erpnext/manufacturing/doctype/job_card/job_card.json +++ b/erpnext/manufacturing/doctype/job_card/job_card.json @@ -86,7 +86,6 @@ "search_index": 1 }, { - "fetch_from": "work_order.bom_no", "fieldname": "bom_no", "fieldtype": "Link", "label": "BOM No", @@ -281,7 +280,7 @@ "fieldtype": "Column Break" }, { - "fetch_from": "work_order.production_item", + "fetch_from": "bom_no.item", "fieldname": "production_item", "fieldtype": "Link", "label": "Production Item", @@ -511,7 +510,7 @@ ], "is_submittable": 1, "links": [], - "modified": "2023-06-28 19:23:14.345214", + "modified": "2025-03-17 15:55:11.143456", "modified_by": "Administrator", "module": "Manufacturing", "name": "Job Card", diff --git a/erpnext/manufacturing/doctype/job_card/job_card.py b/erpnext/manufacturing/doctype/job_card/job_card.py index abea4c86279..659bb01b4d4 100644 --- a/erpnext/manufacturing/doctype/job_card/job_card.py +++ b/erpnext/manufacturing/doctype/job_card/job_card.py @@ -64,9 +64,7 @@ class JobCard(Document): from erpnext.manufacturing.doctype.job_card_scheduled_time.job_card_scheduled_time import ( JobCardScheduledTime, ) - from erpnext.manufacturing.doctype.job_card_scrap_item.job_card_scrap_item import ( - JobCardScrapItem, - ) + from erpnext.manufacturing.doctype.job_card_scrap_item.job_card_scrap_item import JobCardScrapItem from erpnext.manufacturing.doctype.job_card_time_log.job_card_time_log import JobCardTimeLog actual_end_date: DF.Datetime | None @@ -91,7 +89,7 @@ class JobCard(Document): naming_series: DF.Literal["PO-JOB.#####"] operation: DF.Link operation_id: DF.Data | None - operation_row_number: DF.Literal + operation_row_number: DF.Literal[None] posting_date: DF.Date | None process_loss_qty: DF.Float production_item: DF.Link | None @@ -216,7 +214,7 @@ class JobCard(Document): open_job_cards = [] if d.get("employee"): - open_job_cards = self.get_open_job_cards(d.get("employee")) + open_job_cards = self.get_open_job_cards(d.get("employee"), workstation=self.workstation) data = self.get_overlap_for(d, open_job_cards=open_job_cards) if data: @@ -257,9 +255,13 @@ class JobCard(Document): frappe.get_cached_value("Workstation", self.workstation, "production_capacity") or 1 ) - if args.get("employee"): - # override capacity for employee - production_capacity = 1 + if self.get_open_job_cards(args.get("employee")): + frappe.throw( + _( + "Employee {0} is currently working on another workstation. Please assign another employee." + ).format(args.get("employee")), + OverlapError, + ) if not self.has_overlap(production_capacity, time_logs): return {} @@ -309,6 +311,9 @@ class JobCard(Document): return overlap def get_time_logs(self, args, doctype, open_job_cards=None): + if args.get("remaining_time_in_mins") and get_datetime(args.from_time) >= get_datetime(args.to_time): + args.to_time = add_to_date(args.from_time, minutes=args.get("remaining_time_in_mins")) + jc = frappe.qb.DocType("Job Card") jctl = frappe.qb.DocType(doctype) @@ -354,14 +359,16 @@ class JobCard(Document): else: query = query.where(jc.name.isin(open_job_cards)) - if doctype != "Job Card Time Log": - query = query.where(jc.total_time_in_mins == 0) + if doctype == "Job Card Time Log": + query = query.where(jc.docstatus < 2) + else: + query = query.where((jc.docstatus == 0) & (jc.total_time_in_mins == 0)) time_logs = query.run(as_dict=True) return time_logs - def get_open_job_cards(self, employee): + def get_open_job_cards(self, employee, workstation=None): jc = frappe.qb.DocType("Job Card") jctl = frappe.qb.DocType("Job Card Time Log") @@ -372,13 +379,15 @@ class JobCard(Document): .select(jc.name) .where( (jctl.parent == jc.name) - & (jc.workstation == self.workstation) & (jctl.employee == employee) & (jc.docstatus < 1) & (jc.name != self.name) ) ) + if workstation: + query = query.where(jc.workstation == workstation) + jobs = query.run(as_dict=True) return [job.get("name") for job in jobs] if jobs else [] @@ -412,7 +421,13 @@ class JobCard(Document): def schedule_time_logs(self, row): row.remaining_time_in_mins = row.time_in_mins while row.remaining_time_in_mins > 0: - args = frappe._dict({"from_time": row.planned_start_time, "to_time": row.planned_end_time}) + args = frappe._dict( + { + "from_time": row.planned_start_time, + "to_time": row.planned_end_time, + "remaining_time_in_mins": row.remaining_time_in_mins, + } + ) self.validate_overlap_for_workstation(args, row) self.check_workstation_time(row) @@ -639,7 +654,7 @@ class JobCard(Document): ) ) - if self.get("operation") == d.operation: + if self.get("operation") == d.operation or self.is_corrective_job_card: self.append( "items", { @@ -669,7 +684,7 @@ class JobCard(Document): self.set_transferred_qty() def validate_transfer_qty(self): - if self.items and self.transferred_qty < self.for_quantity: + if not self.is_corrective_job_card and self.items and self.transferred_qty < self.for_quantity: frappe.throw( _( "Materials needs to be transferred to the work in progress warehouse for the job card {0}" @@ -780,7 +795,7 @@ class JobCard(Document): fields=["total_time_in_mins", "hour_rate"], filters={"is_corrective_job_card": 1, "docstatus": 1, "work_order": self.work_order}, ): - wo.corrective_operation_cost += flt(row.total_time_in_mins) * flt(row.hour_rate) + wo.corrective_operation_cost += (flt(row.total_time_in_mins) / 60) * flt(row.hour_rate) wo.calculate_operating_cost() wo.flags.ignore_validate_update_after_submit = True @@ -941,26 +956,20 @@ class JobCard(Document): qty = 0 if self.work_order: - doc = frappe.get_doc("Work Order", self.work_order) if doc.transfer_material_against == "Job Card" and not doc.skip_transfer: - completed = True + min_qty = [] for d in doc.operations: - if d.status != "Completed": - completed = False + completed_qty = flt(d.completed_qty) + flt(d.process_loss_qty) + if completed_qty: + min_qty.append(completed_qty) + else: + min_qty = [] break - if completed: - job_cards = frappe.get_all( - "Job Card", - filters={"work_order": self.work_order, "docstatus": ("!=", 2)}, - fields="sum(transferred_qty) as qty", - group_by="operation_id", - ) + if min_qty: + qty = min(min_qty) - if job_cards: - qty = min(d.qty for d in job_cards) - - doc.db_set("material_transferred_for_manufacturing", qty) + doc.db_set("material_transferred_for_manufacturing", qty) self.set_status(update_status) @@ -977,7 +986,9 @@ class JobCard(Document): if self.time_logs: self.status = "Work In Progress" - if self.docstatus == 1 and (self.for_quantity <= self.total_completed_qty or not self.items): + if self.docstatus == 1 and ( + self.for_quantity <= (self.total_completed_qty + self.process_loss_qty) or not self.items + ): self.status = "Completed" if update_status: diff --git a/erpnext/manufacturing/doctype/job_card/test_job_card.py b/erpnext/manufacturing/doctype/job_card/test_job_card.py index b0644b4e8d2..12205a80a2b 100644 --- a/erpnext/manufacturing/doctype/job_card/test_job_card.py +++ b/erpnext/manufacturing/doctype/job_card/test_job_card.py @@ -424,12 +424,99 @@ class TestJobCard(FrappeTestCase): cost_after_cancel = self.work_order.total_operating_cost self.assertEqual(cost_after_cancel, original_cost) + @change_settings( + "Manufacturing Settings", {"add_corrective_operation_cost_in_finished_good_valuation": 1} + ) + def test_if_corrective_jc_ops_cost_is_added_to_manufacture_stock_entry(self): + wo = make_wo_order_test_record( + item="_Test FG Item 2", + qty=10, + transfer_material_against=self.transfer_material_against, + source_warehouse=self.source_warehouse, + ) + self.generate_required_stock(wo) + job_card = frappe.get_last_doc("Job Card", {"work_order": wo.name}) + job_card.update({"for_quantity": 4}) + job_card.append( + "time_logs", + {"from_time": now(), "to_time": add_to_date(now(), hours=1), "completed_qty": 4}, + ) + job_card.submit() + + corrective_action = frappe.get_doc( + doctype="Operation", is_corrective_operation=1, name=frappe.generate_hash() + ).insert() + + corrective_job_card = make_corrective_job_card( + job_card.name, operation=corrective_action.name, for_operation=job_card.operation + ) + corrective_job_card.hour_rate = 100 + corrective_job_card.insert() + corrective_job_card.append( + "time_logs", + { + "from_time": add_to_date(now(), hours=2), + "to_time": add_to_date(now(), hours=2, minutes=30), + "completed_qty": 4, + }, + ) + corrective_job_card.submit() + wo.reload() + + from erpnext.manufacturing.doctype.work_order.work_order import ( + make_stock_entry as make_stock_entry_for_wo, + ) + + stock_entry = make_stock_entry_for_wo(wo.name, "Manufacture", qty=3) + self.assertEqual(stock_entry.additional_costs[1].amount, 37.5) + frappe.get_doc(stock_entry).submit() + + from erpnext.manufacturing.doctype.work_order.work_order import make_job_card + + make_job_card( + wo.name, + [{"name": wo.operations[0].name, "operation": "_Test Operation 1", "qty": 3, "pending_qty": 3}], + ) + workstation = job_card.workstation + job_card = frappe.get_last_doc("Job Card", {"work_order": wo.name}) + job_card.update({"for_quantity": 3}) + job_card.workstation = workstation + job_card.append( + "time_logs", + { + "from_time": add_to_date(now(), hours=3), + "to_time": add_to_date(now(), hours=4), + "completed_qty": 3, + }, + ) + job_card.submit() + + corrective_job_card = make_corrective_job_card( + job_card.name, operation=corrective_action.name, for_operation=job_card.operation + ) + corrective_job_card.hour_rate = 80 + corrective_job_card.insert() + corrective_job_card.append( + "time_logs", + { + "from_time": add_to_date(now(), hours=4), + "to_time": add_to_date(now(), hours=4, minutes=30), + "completed_qty": 3, + }, + ) + corrective_job_card.submit() + wo.reload() + + stock_entry = make_stock_entry_for_wo(wo.name, "Manufacture", qty=4) + self.assertEqual(stock_entry.additional_costs[1].amount, 52.5) + def test_job_card_statuses(self): def assertStatus(status): jc.set_status() self.assertEqual(jc.status, status) jc = frappe.new_doc("Job Card") + jc.process_loss_qty = 0 jc.for_quantity = 2 jc.transferred_qty = 1 jc.total_completed_qty = 0 @@ -522,6 +609,7 @@ class TestJobCard(FrappeTestCase): production_item=item_code, bom_no=bom_doc.name, skip_transfer=1, + from_wip_warehouse=1, wip_warehouse=warehouse, source_warehouse=warehouse, ) diff --git a/erpnext/manufacturing/doctype/manufacturing_settings/manufacturing_settings.json b/erpnext/manufacturing/doctype/manufacturing_settings/manufacturing_settings.json index 26cbc03eeb2..efa561274f4 100644 --- a/erpnext/manufacturing/doctype/manufacturing_settings/manufacturing_settings.json +++ b/erpnext/manufacturing/doctype/manufacturing_settings/manufacturing_settings.json @@ -15,7 +15,6 @@ "bom_section", "update_bom_costs_automatically", "column_break_lhyt", - "manufacture_sub_assembly_in_operation", "section_break_6", "default_wip_warehouse", "default_fg_warehouse", @@ -37,7 +36,7 @@ "capacity_planning_for_days", "mins_between_operations", "other_settings_section", - "set_op_cost_and_scrape_from_sub_assemblies", + "set_op_cost_and_scrap_from_sub_assemblies", "column_break_23", "make_serial_no_batch_from_work_order" ], @@ -202,13 +201,6 @@ "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" - }, { "default": "0", "depends_on": "eval: doc.material_consumption", @@ -230,26 +222,26 @@ "fieldname": "column_break_lhyt", "fieldtype": "Column Break" }, - { - "default": "0", - "description": "If enabled then system will manufacture Sub-assembly against the Job Card (operation).", - "fieldname": "manufacture_sub_assembly_in_operation", - "fieldtype": "Check", - "label": "Manufacture Sub-assembly in Operation" - }, { "default": "0", "depends_on": "eval:doc.backflush_raw_materials_based_on == \"BOM\"", "fieldname": "validate_components_quantities_per_bom", "fieldtype": "Check", - "label": "Validate Components Quantities Per BOM" + "label": "Validate Components and Quantities Per BOM" + }, + { + "default": "0", + "description": "To include sub-assembly costs and scrap items in Finished Goods on a work order without using a job card, when the 'Use Multi-Level BOM' option is enabled.", + "fieldname": "set_op_cost_and_scrap_from_sub_assemblies", + "fieldtype": "Check", + "label": "Set Operating Cost / Scrap Items From Sub-assemblies" } ], "icon": "icon-wrench", "index_web_pages_for_search": 1, "issingle": 1, "links": [], - "modified": "2024-09-02 12:12:03.132567", + "modified": "2025-02-05 16:11:11.639916", "modified_by": "Administrator", "module": "Manufacturing", "name": "Manufacturing Settings", @@ -267,4 +259,4 @@ "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 cb2916c8ac5..86b84b23339 100644 --- a/erpnext/manufacturing/doctype/manufacturing_settings/manufacturing_settings.py +++ b/erpnext/manufacturing/doctype/manufacturing_settings/manufacturing_settings.py @@ -29,12 +29,11 @@ class ManufacturingSettings(Document): get_rm_cost_from_consumption_entry: DF.Check job_card_excess_transfer: DF.Check make_serial_no_batch_from_work_order: DF.Check - manufacture_sub_assembly_in_operation: DF.Check material_consumption: DF.Check 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 + set_op_cost_and_scrap_from_sub_assemblies: DF.Check update_bom_costs_automatically: DF.Check validate_components_quantities_per_bom: DF.Check # end: auto-generated types diff --git a/erpnext/manufacturing/doctype/plant_floor/plant_floor.js b/erpnext/manufacturing/doctype/plant_floor/plant_floor.js index becdbdb9c95..3d18900b70c 100644 --- a/erpnext/manufacturing/doctype/plant_floor/plant_floor.js +++ b/erpnext/manufacturing/doctype/plant_floor/plant_floor.js @@ -6,6 +6,22 @@ frappe.ui.form.on("Plant Floor", { frm.trigger("setup_queries"); }, + add_workstation(frm) { + frm.add_custom_button(__("Create Workstation"), () => { + var doc = frappe.model.get_new_doc("Workstation"); + doc.plant_floor = frm.doc.name; + doc.status = "Off"; + frappe.ui.form.make_quick_entry( + "Workstation", + () => { + frm.trigger("prepare_workstation_dashboard"); + }, + null, + doc + ); + }).addClass("btn-primary"); + }, + setup_queries(frm) { frm.set_query("warehouse", (doc) => { if (!doc.company) { @@ -24,6 +40,11 @@ frappe.ui.form.on("Plant Floor", { refresh(frm) { frm.trigger("prepare_stock_dashboard"); frm.trigger("prepare_workstation_dashboard"); + + if (!frm.is_new()) { + frm.trigger("add_workstation"); + frm.disable_save(); + } }, prepare_workstation_dashboard(frm) { diff --git a/erpnext/manufacturing/doctype/plant_floor/plant_floor.json b/erpnext/manufacturing/doctype/plant_floor/plant_floor.json index be0052c47bf..c1c167c395b 100644 --- a/erpnext/manufacturing/doctype/plant_floor/plant_floor.json +++ b/erpnext/manufacturing/doctype/plant_floor/plant_floor.json @@ -69,9 +69,10 @@ "options": "Company" } ], + "hide_toolbar": 1, "index_web_pages_for_search": 1, "links": [], - "modified": "2024-01-30 11:59:07.508535", + "modified": "2024-09-19 19:06:36.481625", "modified_by": "Administrator", "module": "Manufacturing", "name": "Plant Floor", @@ -94,4 +95,4 @@ "sort_field": "modified", "sort_order": "DESC", "states": [] -} \ No newline at end of file +} diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.js b/erpnext/manufacturing/doctype/production_plan/production_plan.js index 5b4ef233926..f381c9d39e2 100644 --- a/erpnext/manufacturing/doctype/production_plan/production_plan.js +++ b/erpnext/manufacturing/doctype/production_plan/production_plan.js @@ -87,17 +87,17 @@ frappe.ui.form.on("Production Plan", { if (frm.doc.docstatus === 1) { frm.trigger("show_progress"); - if (frm.doc.status !== "Completed") { - frm.add_custom_button( - __("Production Plan Summary"), - () => { - frappe.set_route("query-report", "Production Plan Summary", { - production_plan: frm.doc.name, - }); - }, - __("View") - ); + frm.add_custom_button( + __("Production Plan Summary"), + () => { + frappe.set_route("query-report", "Production Plan Summary", { + production_plan: frm.doc.name, + }); + }, + __("View") + ); + if (frm.doc.status !== "Completed") { if (frm.doc.status === "Closed") { frm.add_custom_button( __("Re-open"), @@ -277,7 +277,7 @@ frappe.ui.form.on("Production Plan", { frm.clear_table("prod_plan_references"); frappe.call({ - method: "get_items", + method: "combine_so_items", freeze: true, doc: frm.doc, callback: function () { @@ -562,6 +562,28 @@ frappe.ui.form.on("Production Plan Sales Order", { frappe.ui.form.on("Production Plan Sub Assembly Item", { fg_warehouse(frm, cdt, cdn) { erpnext.utils.copy_value_in_all_rows(frm.doc, cdt, cdn, "sub_assembly_items", "fg_warehouse"); + + let row = locals[cdt][cdn]; + if (row.fg_warehouse && row.production_item) { + let child_row = { + item_code: row.production_item, + warehouse: row.fg_warehouse, + }; + + frappe.call({ + method: "erpnext.manufacturing.doctype.production_plan.production_plan.get_bin_details", + args: { + row: child_row, + company: frm.doc.company, + for_warehouse: row.fg_warehouse, + }, + callback: function (r) { + if (r.message && r.message.length) { + frappe.model.set_value(cdt, cdn, "actual_qty", r.message[0].actual_qty); + } + }, + }); + } }, }); diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.json b/erpnext/manufacturing/doctype/production_plan/production_plan.json index 84bbad58c38..22971d4debd 100644 --- a/erpnext/manufacturing/doctype/production_plan/production_plan.json +++ b/erpnext/manufacturing/doctype/production_plan/production_plan.json @@ -243,7 +243,7 @@ "depends_on": "eval:!doc.__islocal", "fieldname": "download_materials_required", "fieldtype": "Button", - "label": "Download Materials Request Plan" + "label": "Download Required Materials" }, { "fieldname": "get_items_for_mr", @@ -398,7 +398,7 @@ "collapsible": 1, "fieldname": "download_materials_request_plan_section_section", "fieldtype": "Section Break", - "label": "Download Materials Request Plan Section" + "label": "Preview Required Materials" }, { "default": "0", @@ -439,7 +439,7 @@ "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2024-02-27 13:34:20.692211", + "modified": "2024-12-04 11:55:03.108971", "modified_by": "Administrator", "module": "Manufacturing", "name": "Production Plan", @@ -463,4 +463,4 @@ "sort_field": "modified", "sort_order": "ASC", "states": [] -} \ No newline at end of file +} diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.py b/erpnext/manufacturing/doctype/production_plan/production_plan.py index 7d3aa000c87..2e89a191f66 100644 --- a/erpnext/manufacturing/doctype/production_plan/production_plan.py +++ b/erpnext/manufacturing/doctype/production_plan/production_plan.py @@ -4,6 +4,7 @@ import copy import json +from collections import defaultdict import frappe from frappe import _, msgprint @@ -44,9 +45,7 @@ class ProductionPlan(Document): from erpnext.manufacturing.doctype.material_request_plan_item.material_request_plan_item import ( MaterialRequestPlanItem, ) - from erpnext.manufacturing.doctype.production_plan_item.production_plan_item import ( - ProductionPlanItem, - ) + from erpnext.manufacturing.doctype.production_plan_item.production_plan_item import ProductionPlanItem from erpnext.manufacturing.doctype.production_plan_item_reference.production_plan_item_reference import ( ProductionPlanItemReference, ) @@ -269,6 +268,31 @@ class ProductionPlan(Document): {"material_request": data.name, "material_request_date": data.transaction_date}, ) + @frappe.whitelist() + def combine_so_items(self): + if self.combine_items and self.po_items and len(self.po_items) > 0: + items = [] + for row in self.po_items: + items.append( + frappe._dict( + { + "parent": row.sales_order, + "item_code": row.item_code, + "warehouse": row.warehouse, + "qty": row.pending_qty, + "pending_qty": row.pending_qty, + "conversion_factor": 1.0, + "description": row.description, + "bom_no": row.bom_no, + } + ) + ) + + self.set("po_items", []) + self.add_items(items) + else: + self.get_items() + @frappe.whitelist() def get_items(self): self.set("po_items", []) @@ -340,8 +364,8 @@ class ProductionPlan(Document): for item in items: item.pending_qty = ( - flt(item.qty) - max(item.work_order_qty, item.delivered_qty, 0) * item.conversion_factor - ) + flt(item.qty) - max(item.work_order_qty, item.delivered_qty, 0) + ) * item.conversion_factor pi = frappe.qb.DocType("Packed Item") @@ -402,6 +426,7 @@ class ProductionPlan(Document): mr_item.item_code, mr_item.warehouse, mr_item.description, + mr_item.bom_no, ((mr_item.qty - mr_item.ordered_qty) * mr_item.conversion_factor).as_("pending_qty"), ) .distinct() @@ -435,24 +460,28 @@ class ProductionPlan(Document): item_details = get_item_details(data.item_code, throw=False) if self.combine_items: - if item_details.bom_no in refs: - refs[item_details.bom_no]["so_details"].append( + bom_no = item_details.bom_no + if data.get("bom_no"): + bom_no = data.get("bom_no") + + if bom_no in refs: + refs[bom_no]["so_details"].append( {"sales_order": data.parent, "sales_order_item": data.name, "qty": data.pending_qty} ) - refs[item_details.bom_no]["qty"] += data.pending_qty + refs[bom_no]["qty"] += data.pending_qty continue else: - refs[item_details.bom_no] = { + refs[bom_no] = { "qty": data.pending_qty, "po_item_ref": data.name, "so_details": [], } - refs[item_details.bom_no]["so_details"].append( + refs[bom_no]["so_details"].append( {"sales_order": data.parent, "sales_order_item": data.name, "qty": data.pending_qty} ) - bom_no = data.bom_no or item_details and item_details.bom_no or "" + bom_no = data.bom_no or item_details and item_details.get("bom_no") or "" if not bom_no: continue @@ -897,6 +926,7 @@ class ProductionPlan(Document): "Fetch sub assembly items and optionally combine them." self.sub_assembly_items = [] sub_assembly_items_store = [] # temporary store to process all subassembly items + bin_details = frappe._dict() for row in self.po_items: if self.skip_available_sub_assembly_item and not self.sub_assembly_warehouse: @@ -910,8 +940,16 @@ class ProductionPlan(Document): bom_data = [] - warehouse = (self.sub_assembly_warehouse) if self.skip_available_sub_assembly_item else None - get_sub_assembly_items(row.bom_no, bom_data, row.planned_qty, self.company, warehouse=warehouse) + get_sub_assembly_items( + [item.production_item for item in sub_assembly_items_store], + bin_details, + row.bom_no, + bom_data, + row.planned_qty, + self.company, + warehouse=self.sub_assembly_warehouse, + skip_available_sub_assembly_item=self.skip_available_sub_assembly_item, + ) self.set_sub_assembly_items_based_on_level(row, bom_data, manufacturing_type) sub_assembly_items_store.extend(bom_data) @@ -1056,24 +1094,33 @@ def download_raw_materials(doc, warehouses=None): frappe.flags.show_qty_in_stock_uom = 1 items = get_items_for_material_requests(doc, warehouses=warehouses, get_parent_warehouse_data=True) + duplicate_item_wh_list = frappe._dict() + for d in items: - item_list.append( - [ - d.get("item_code"), - d.get("item_name"), - d.get("description"), - d.get("stock_uom"), - d.get("warehouse"), - d.get("required_bom_qty"), - d.get("projected_qty"), - d.get("actual_qty"), - d.get("ordered_qty"), - d.get("planned_qty"), - d.get("reserved_qty_for_production"), - d.get("safety_stock"), - d.get("quantity"), - ] - ) + key = (d.get("item_code"), d.get("warehouse")) + if key in duplicate_item_wh_list: + rm_data = duplicate_item_wh_list[key] + rm_data[12] += d.get("quantity") + continue + + rm_data = [ + d.get("item_code"), + d.get("item_name"), + d.get("description"), + d.get("stock_uom"), + d.get("warehouse"), + d.get("required_bom_qty"), + d.get("projected_qty"), + d.get("actual_qty"), + d.get("ordered_qty"), + d.get("planned_qty"), + d.get("reserved_qty_for_production"), + d.get("safety_stock"), + d.get("quantity"), + ] + + duplicate_item_wh_list[key] = rm_data + item_list.append(rm_data) if not doc.get("for_warehouse"): row = {"item_code": d.get("item_code")} @@ -1485,10 +1532,10 @@ def get_items_for_material_requests(doc, warehouses=None, get_parent_warehouse_d so_item_details = frappe._dict() - sub_assembly_items = {} + sub_assembly_items = defaultdict(int) if doc.get("skip_available_sub_assembly_item") and doc.get("sub_assembly_items"): for d in doc.get("sub_assembly_items"): - sub_assembly_items.setdefault((d.get("production_item"), d.get("bom_no")), d.get("qty")) + sub_assembly_items[(d.get("production_item"), d.get("bom_no"))] += d.get("qty") for data in po_items: if not data.get("include_exploded_items") and doc.get("sub_assembly_items"): @@ -1517,6 +1564,7 @@ def get_items_for_material_requests(doc, warehouses=None, get_parent_warehouse_d item_details = {} if doc.get("sub_assembly_items"): item_details = get_raw_materials_of_sub_assembly_items( + so_item_details[doc.get("sales_order")].keys() if so_item_details else [], item_details, company, bom_no, @@ -1693,28 +1741,44 @@ def get_item_data(item_code): } -def get_sub_assembly_items(bom_no, bom_data, to_produce_qty, company, warehouse=None, indent=0): +def get_sub_assembly_items( + sub_assembly_items, + bin_details, + bom_no, + bom_data, + to_produce_qty, + company, + warehouse=None, + indent=0, + skip_available_sub_assembly_item=False, +): data = get_bom_children(parent=bom_no) for d in data: if d.expandable: parent_item_code = frappe.get_cached_value("BOM", bom_no, "item") stock_qty = (d.stock_qty / d.parent_bom_qty) * flt(to_produce_qty) - if warehouse: - bin_details = get_bin_details(d, company, for_warehouse=warehouse) + if skip_available_sub_assembly_item and d.item_code not in sub_assembly_items: + bin_details.setdefault(d.item_code, get_bin_details(d, company, for_warehouse=warehouse)) - for _bin_dict in bin_details: + for _bin_dict in bin_details[d.item_code]: if _bin_dict.projected_qty > 0: - if _bin_dict.projected_qty > stock_qty: + if _bin_dict.projected_qty >= stock_qty: + _bin_dict.projected_qty -= stock_qty stock_qty = 0 continue else: stock_qty = stock_qty - _bin_dict.projected_qty + elif warehouse: + bin_details.setdefault(d.item_code, get_bin_details(d, company, for_warehouse=warehouse)) if stock_qty > 0: bom_data.append( frappe._dict( { + "actual_qty": bin_details[d.item_code][0].get("actual_qty", 0) + if bin_details.get(d.item_code) + else 0, "parent_item_code": parent_item_code, "description": d.description, "production_item": d.item_code, @@ -1732,7 +1796,15 @@ def get_sub_assembly_items(bom_no, bom_data, to_produce_qty, company, warehouse= if d.value: get_sub_assembly_items( - d.value, bom_data, stock_qty, company, warehouse, indent=indent + 1 + sub_assembly_items, + bin_details, + d.value, + bom_data, + stock_qty, + company, + warehouse, + indent=indent + 1, + skip_available_sub_assembly_item=skip_available_sub_assembly_item, ) @@ -1805,7 +1877,13 @@ def get_non_completed_production_plans(): def get_raw_materials_of_sub_assembly_items( - item_details, company, bom_no, include_non_stock_items, sub_assembly_items, planned_qty=1 + existing_sub_assembly_items, + item_details, + company, + bom_no, + include_non_stock_items, + sub_assembly_items, + planned_qty=1, ): bei = frappe.qb.DocType("BOM Item") bom = frappe.qb.DocType("BOM") @@ -1849,12 +1927,13 @@ def get_raw_materials_of_sub_assembly_items( for item in items: key = (item.item_code, item.bom_no) - if item.bom_no and key not in sub_assembly_items: + if (item.bom_no and key not in sub_assembly_items) or (item.item_code in existing_sub_assembly_items): continue if item.bom_no: planned_qty = flt(sub_assembly_items[key]) get_raw_materials_of_sub_assembly_items( + existing_sub_assembly_items, item_details, company, item.bom_no, diff --git a/erpnext/manufacturing/doctype/production_plan/test_production_plan.py b/erpnext/manufacturing/doctype/production_plan/test_production_plan.py index 71d9b59c677..e5b60c7a4e6 100644 --- a/erpnext/manufacturing/doctype/production_plan/test_production_plan.py +++ b/erpnext/manufacturing/doctype/production_plan/test_production_plan.py @@ -744,9 +744,9 @@ class TestProductionPlan(FrappeTestCase): """ from erpnext.manufacturing.doctype.work_order.test_work_order import make_wo_order_test_record - make_stock_entry(item_code="_Test Item", target="Work In Progress - _TC", qty=2, basic_rate=100) + make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC", qty=2, basic_rate=100) make_stock_entry( - item_code="_Test Item Home Desktop 100", target="Work In Progress - _TC", qty=4, basic_rate=100 + item_code="_Test Item Home Desktop 100", target="_Test Warehouse - _TC", qty=4, basic_rate=100 ) item = "_Test FG Item" @@ -794,10 +794,10 @@ class TestProductionPlan(FrappeTestCase): from erpnext.manufacturing.doctype.work_order.test_work_order import make_wo_order_test_record make_stock_entry( - item_code="Raw Material Item 1", target="Work In Progress - _TC", qty=2, basic_rate=100 + item_code="Raw Material Item 1", target="_Test Warehouse - _TC", qty=2, basic_rate=100 ) make_stock_entry( - item_code="Raw Material Item 2", target="Work In Progress - _TC", qty=2, basic_rate=100 + item_code="Raw Material Item 2", target="_Test Warehouse - _TC", qty=2, basic_rate=100 ) pln = create_production_plan(item_code="Test Production Item 1", skip_getting_mr_items=True) @@ -1635,6 +1635,64 @@ class TestProductionPlan(FrappeTestCase): self.assertEqual(row.production_item, sf_item) self.assertEqual(row.qty, 5.0) + def test_calculation_of_sub_assembly_items(self): + make_item("Sub Assembly Item ", properties={"is_stock_item": 1}) + make_item("RM Item 1", properties={"is_stock_item": 1}) + make_item("RM Item 2", properties={"is_stock_item": 1}) + make_bom(item="Sub Assembly Item", raw_materials=["RM Item 1", "RM Item 2"]) + make_bom(item="_Test FG Item", raw_materials=["Sub Assembly Item", "RM Item 1"]) + make_bom(item="_Test FG Item 2", raw_materials=["Sub Assembly Item"]) + + from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry + + make_stock_entry( + item_code="Sub Assembly Item", + qty=80, + purpose="Material Receipt", + to_warehouse="_Test Warehouse - _TC", + ) + make_stock_entry( + item_code="RM Item 1", qty=90, purpose="Material Receipt", to_warehouse="_Test Warehouse - _TC" + ) + + plan = create_production_plan( + skip_available_sub_assembly_item=1, + sub_assembly_warehouse="_Test Warehouse - _TC", + warehouse="_Test Warehouse - _TC", + item_code="_Test FG Item", + skip_getting_mr_items=1, + planned_qty=100, + do_not_save=1, + ) + plan.get_items_from = "" + plan.append( + "po_items", + { + "use_multi_level_bom": 1, + "item_code": "_Test FG Item 2", + "bom_no": frappe.db.get_value("Item", "_Test FG Item 2", "default_bom"), + "planned_qty": 50, + "planned_start_date": now_datetime(), + "stock_uom": "Nos", + "warehouse": "_Test Warehouse - _TC", + }, + ) + plan.save() + + plan.get_sub_assembly_items() + + self.assertEqual(plan.sub_assembly_items[0].qty, 20) + self.assertEqual(plan.sub_assembly_items[1].qty, 50) + + from erpnext.manufacturing.doctype.production_plan.production_plan import ( + get_items_for_material_requests, + ) + + mr_items = get_items_for_material_requests(plan.as_dict()) + + self.assertEqual(mr_items[0].get("quantity"), 80) + self.assertEqual(mr_items[1].get("quantity"), 70) + def create_production_plan(**args): """ diff --git a/erpnext/manufacturing/doctype/work_order/test_work_order.py b/erpnext/manufacturing/doctype/work_order/test_work_order.py index ebc400979b6..dfa02c03772 100644 --- a/erpnext/manufacturing/doctype/work_order/test_work_order.py +++ b/erpnext/manufacturing/doctype/work_order/test_work_order.py @@ -7,6 +7,7 @@ from frappe.tests.utils import FrappeTestCase, change_settings, timeout from frappe.utils import add_days, add_months, add_to_date, cint, flt, now, today from erpnext.manufacturing.doctype.job_card.job_card import JobCardCancelError +from erpnext.manufacturing.doctype.job_card.job_card import make_stock_entry as make_stock_entry_from_jc from erpnext.manufacturing.doctype.production_plan.test_production_plan import make_bom from erpnext.manufacturing.doctype.work_order.work_order import ( CapacityError, @@ -41,6 +42,7 @@ class TestWorkOrder(FrappeTestCase): prepare_data_for_backflush_based_on_materials_transferred() def tearDown(self): + frappe.local.future_sle = {} frappe.db.rollback() def check_planned_qty(self): @@ -505,6 +507,60 @@ class TestWorkOrder(FrappeTestCase): for stock_entry in stock_entries: stock_entry.cancel() + def test_work_order_material_transferred_qty_with_process_loss(self): + stock_entries = [] + bom = frappe.get_doc("BOM", {"docstatus": 1, "with_operations": 1, "company": "_Test Company"}) + + work_order = make_wo_order_test_record( + item=bom.item, + qty=2, + bom_no=bom.name, + source_warehouse="_Test Warehouse - _TC", + transfer_material_against="Job Card", + ) + + self.assertEqual(work_order.qty, 2) + + for row in work_order.required_items: + stock_entry_doc = test_stock_entry.make_stock_entry( + item_code=row.item_code, target="_Test Warehouse - _TC", qty=row.required_qty, basic_rate=100 + ) + stock_entries.append(stock_entry_doc) + + job_cards = frappe.get_all( + "Job Card", filters={"work_order": work_order.name}, order_by="creation asc" + ) + + for row in job_cards: + transfer_entry_1 = make_stock_entry_from_jc(row.name) + transfer_entry_1.submit() + + doc = frappe.get_doc("Job Card", row.name) + for row in doc.scheduled_time_logs: + doc.append( + "time_logs", + { + "from_time": row.from_time, + "to_time": row.to_time, + "time_in_mins": row.time_in_mins, + "completed_qty": 1, + }, + ) + + doc.save() + doc.submit() + + self.assertEqual(doc.total_completed_qty, 1) + self.assertEqual(doc.process_loss_qty, 1) + + work_order.reload() + + self.assertEqual(work_order.material_transferred_for_manufacturing, 2) + + for row in work_order.operations: + self.assertEqual(row.completed_qty, 1) + self.assertEqual(row.process_loss_qty, 1) + def test_capcity_planning(self): frappe.db.set_single_value( "Manufacturing Settings", {"disable_capacity_planning": 0, "capacity_planning_for_days": 1} @@ -659,7 +715,12 @@ class TestWorkOrder(FrappeTestCase): self.assertEqual(row.item_code, fg_item) work_order = make_wo_order_test_record( - item=fg_item, skip_transfer=True, planned_start_date=now(), qty=30, do_not_save=True + item=fg_item, + skip_transfer=True, + planned_start_date=now(), + qty=30, + do_not_save=True, + source_warehouse="_Test Warehouse - _TC", ) work_order.batch_size = 10 work_order.insert() @@ -876,11 +937,13 @@ class TestWorkOrder(FrappeTestCase): wip_warehouse=wip_warehouse, qty=qty, skip_transfer=1, + source_warehouse=wip_warehouse, stock_uom=fg_item_non_whole.stock_uom, ) se = frappe.get_doc(make_stock_entry(wo.name, "Material Transfer for Manufacture", qty)) se.get("items")[0].s_warehouse = "Stores - _TC" + se.get("items")[0].t_warehouse = wip_warehouse se.insert() se.submit() @@ -952,7 +1015,12 @@ class TestWorkOrder(FrappeTestCase): bom.submit() wo_order = make_wo_order_test_record( - item=item, company=company, planned_start_date=now(), qty=20, skip_transfer=1 + item=item, + company=company, + planned_start_date=now(), + qty=20, + skip_transfer=1, + from_wip_warehouse=1, ) job_card = frappe.db.get_value("Job Card", {"work_order": wo_order.name}, "name") update_job_card(job_card) @@ -964,7 +1032,12 @@ class TestWorkOrder(FrappeTestCase): # Partial Job Card 1 with qty 10 wo_order = make_wo_order_test_record( - item=item, company=company, planned_start_date=add_days(now(), 60), qty=20, skip_transfer=1 + item=item, + company=company, + planned_start_date=add_days(now(), 60), + qty=20, + skip_transfer=1, + from_wip_warehouse=1, ) job_card = frappe.db.get_value("Job Card", {"work_order": wo_order.name}, "name") update_job_card(job_card, 10, 1) @@ -1531,6 +1604,197 @@ class TestWorkOrder(FrappeTestCase): self.assertFalse(serial_nos) + def test_backflushed_batch_raw_materials_based_on_transferred_autosabb(self): + frappe.db.set_single_value( + "Manufacturing Settings", + "backflush_raw_materials_based_on", + "Material Transferred for Manufacture", + ) + + batch_item = "Test Batch MCC Keyboard" + fg_item = "Test FG Item with Batch Raw Materials" + + ste_doc = test_stock_entry.make_stock_entry( + item_code=batch_item, target="Stores - _TC", qty=8, basic_rate=100, do_not_save=True + ) + + # Inward raw materials in Stores warehouse + ste_doc.submit() + ste_doc.reload() + + batch_no = get_batch_from_bundle(ste_doc.items[0].serial_and_batch_bundle) + + wo_doc = make_wo_order_test_record(production_item=fg_item, qty=4) + # action taken upon Start button: + transferred_ste_doc = frappe.get_doc( + make_stock_entry(wo_doc.name, "Material Transfer for Manufacture", 4) + ) + + transferred_ste_doc.submit() + transferred_ste_doc.reload() + + self.assertTrue(transferred_ste_doc.items[0].serial_and_batch_bundle) + self.assertEqual( + get_batch_from_bundle(transferred_ste_doc.items[0].serial_and_batch_bundle), batch_no + ) + self.assertEqual(transferred_ste_doc.items[0].qty, 4.0) + + # Make additional consumption and link to WO + test_stock_entry.make_stock_entry( + item_code="Test Batch Battery Consumable", + target="Stores - _TC", + qty=8, + basic_rate=2.33, + ) + consume_use_doc = test_stock_entry.make_stock_entry( + item_code="Test Batch Battery Consumable", # consumable not linked to BOM + source="Stores - _TC", + qty=4, + purpose="Material Consumption for Manufacture", + do_not_save=True, + ) + consume_use_doc.work_order = wo_doc.name + consume_use_doc.fg_completed_qty = 4 + consume_use_doc.submit() + consume_use_doc.reload() + + manufacture_ste_doc = frappe.get_doc(make_stock_entry(wo_doc.name, "Manufacture", 4)) + mfr_items = [i.as_dict() for i in manufacture_ste_doc.items] + manufacture_ste_doc.submit() + manufacture_ste_doc.reload() + + self.assertTrue(len(mfr_items), 2) + self.assertTrue(manufacture_ste_doc.items[0].serial_and_batch_bundle) + self.assertEqual( + get_batch_from_bundle(manufacture_ste_doc.items[0].serial_and_batch_bundle), batch_no + ) + self.assertEqual(manufacture_ste_doc.items[0].qty, 4.0) + + def test_backflushed_serial_no_raw_materials_based_on_transferred_autosabb(self): + frappe.db.set_single_value( + "Manufacturing Settings", + "backflush_raw_materials_based_on", + "Material Transferred for Manufacture", + ) + + sn_item = "Test Serial No BTT Headphone" + fg_item = "Test FG Item with Serial No Raw Materials" + + ste_doc = test_stock_entry.make_stock_entry( + item_code=sn_item, target="Stores - _TC", qty=4, basic_rate=100, do_not_save=True + ) + + # Inward raw materials in Stores warehouse + ste_doc.submit() + ste_doc.reload() + + serial_nos_list = sorted(get_serial_nos_from_bundle(ste_doc.items[0].serial_and_batch_bundle)) + + wo_doc = make_wo_order_test_record(production_item=fg_item, qty=4) + transferred_ste_doc = frappe.get_doc( + make_stock_entry(wo_doc.name, "Material Transfer for Manufacture", 4) + ) + + transferred_ste_doc.submit() + transferred_ste_doc.reload() + + self.assertTrue(transferred_ste_doc.items[0].serial_and_batch_bundle) + self.assertEqual( + sorted(get_serial_nos_from_bundle(transferred_ste_doc.items[0].serial_and_batch_bundle)), + serial_nos_list, + ) + self.assertEqual(transferred_ste_doc.items[0].qty, 4.0) + + # Make additional consumption and link to WO + test_stock_entry.make_stock_entry( + item_code="Test Serial Battery Consumable", + target="Stores - _TC", + qty=8, + basic_rate=3.33, + ) + consume_use_doc = test_stock_entry.make_stock_entry( + item_code="Test Serial Battery Consumable", # consumable not linked to BOM + source="Stores - _TC", + qty=4, + purpose="Material Consumption for Manufacture", + do_not_save=True, + ) + consume_use_doc.work_order = wo_doc.name + consume_use_doc.fg_completed_qty = 4 + consume_use_doc.submit() + consume_use_doc.reload() + + manufacture_ste_doc = frappe.get_doc(make_stock_entry(wo_doc.name, "Manufacture", 4)) + mfr_items = [i.as_dict() for i in manufacture_ste_doc.items] + manufacture_ste_doc.submit() + manufacture_ste_doc.reload() + + self.assertTrue(len(mfr_items), 2) + self.assertTrue(manufacture_ste_doc.items[0].serial_and_batch_bundle) + self.assertEqual( + sorted(get_serial_nos_from_bundle(manufacture_ste_doc.items[0].serial_and_batch_bundle)), + serial_nos_list, + ) + self.assertEqual(manufacture_ste_doc.items[0].qty, 4.0) + + def test_backflushed_serial_no_batch_raw_materials_based_on_transferred_autosabb(self): + frappe.db.set_single_value( + "Manufacturing Settings", + "backflush_raw_materials_based_on", + "Material Transferred for Manufacture", + ) + + sn_batch_item = "Test Batch Serial No WebCam" + fg_item = "Test FG Item with Serial & Batch No Raw Materials" + + ste_doc = test_stock_entry.make_stock_entry( + item_code=sn_batch_item, target="Stores - _TC", qty=4, basic_rate=100, do_not_save=True + ) + + ste_doc.submit() + ste_doc.reload() + + serial_nos_list = sorted(get_serial_nos_from_bundle(ste_doc.items[0].serial_and_batch_bundle)) + batch_no = get_batch_from_bundle(ste_doc.items[0].serial_and_batch_bundle) + + wo_doc = make_wo_order_test_record(production_item=fg_item, qty=4) + transferred_ste_doc = frappe.get_doc( + make_stock_entry(wo_doc.name, "Material Transfer for Manufacture", 4) + ) + + transferred_ste_doc.submit() + transferred_ste_doc.reload() + + self.assertTrue(transferred_ste_doc.items[0].serial_and_batch_bundle) + self.assertEqual( + sorted(get_serial_nos_from_bundle(transferred_ste_doc.items[0].serial_and_batch_bundle)), + serial_nos_list, + ) + self.assertEqual( + get_batch_from_bundle(transferred_ste_doc.items[0].serial_and_batch_bundle), batch_no + ) + self.assertEqual(transferred_ste_doc.items[0].qty, 4.0) + + manufacture_ste_doc = frappe.get_doc(make_stock_entry(wo_doc.name, "Manufacture", 4)) + manufacture_ste_doc.submit() + manufacture_ste_doc.reload() + + self.assertTrue(manufacture_ste_doc.items[0].serial_and_batch_bundle) + self.assertEqual( + sorted(get_serial_nos_from_bundle(manufacture_ste_doc.items[0].serial_and_batch_bundle)), + serial_nos_list, + ) + self.assertEqual( + get_batch_from_bundle(manufacture_ste_doc.items[0].serial_and_batch_bundle), batch_no + ) + self.assertEqual(manufacture_ste_doc.items[0].qty, 4.0) + + bundle = manufacture_ste_doc.items[0].serial_and_batch_bundle + bundle_doc = frappe.get_doc("Serial and Batch Bundle", bundle) + qty = sum(e.qty for e in bundle_doc.entries) + self.assertEqual(qty, -4.0) + + ### def test_non_consumed_material_return_against_work_order(self): frappe.db.set_single_value( "Manufacturing Settings", @@ -1799,6 +2063,8 @@ class TestWorkOrder(FrappeTestCase): bom_no=bom_doc.name, qty=1, skip_transfer=1, + from_wip_warehouse=1, + source_warehouse="_Test Warehouse - _TC", ) job_cards = frappe.get_all("Job Card", filters={"work_order": wo.name}) @@ -1826,7 +2092,7 @@ class TestWorkOrder(FrappeTestCase): 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) + frappe.db.set_single_value("Manufacturing Settings", "set_op_cost_and_scrap_from_sub_assemblies", 1) items = { "Test Final FG Item": 0, @@ -1867,7 +2133,7 @@ class TestWorkOrder(FrappeTestCase): 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) + frappe.db.set_single_value("Manufacturing Settings", "set_op_cost_and_scrap_from_sub_assemblies", 0) @change_settings( "Manufacturing Settings", {"material_consumption": 1, "get_rm_cost_from_consumption_entry": 1} @@ -2102,6 +2368,59 @@ class TestWorkOrder(FrappeTestCase): stock_entry.submit() + def test_components_alternate_item_for_bom_based_manufacture_entry(self): + frappe.db.set_single_value("Manufacturing Settings", "backflush_raw_materials_based_on", "BOM") + frappe.db.set_single_value("Manufacturing Settings", "validate_components_quantities_per_bom", 1) + + fg_item = "Test FG Item For Component Validation for alternate item" + source_warehouse = "Stores - _TC" + raw_materials = ["Test Component Validation RM Item 112", "Test Component Validation RM Item 22"] + alternate_item = ["Alternate Test Component Validation RM Item 1"] + + make_item(fg_item, {"is_stock_item": 1}) + for item in raw_materials + alternate_item: + make_item(item, {"is_stock_item": 1, "allow_alternative_item": 1}) + test_stock_entry.make_stock_entry( + item_code=item, + target=source_warehouse, + qty=10, + basic_rate=100, + ) + + frappe.get_doc( + { + "doctype": "Item Alternative", + "item_code": raw_materials[0], + "alternative_item_code": alternate_item[0], + "two_way": 1, + } + ).insert() + + make_bom(item=fg_item, source_warehouse=source_warehouse, raw_materials=raw_materials) + + wo = make_wo_order_test_record( + item=fg_item, + qty=10, + source_warehouse=source_warehouse, + ) + + transfer_entry = frappe.get_doc(make_stock_entry(wo.name, "Material Transfer for Manufacture", 10)) + transfer_entry.save() + transfer_entry.items[0].item_code = alternate_item[0] + transfer_entry.items[0].original_item = raw_materials[0] + transfer_entry.submit() + + self.assertTrue(transfer_entry.docstatus == 1) + + manufacture_entry = frappe.get_doc(make_stock_entry(wo.name, "Manufacture", 10)) + manufacture_entry.save() + self.assertTrue(manufacture_entry.items[0].item_code == alternate_item[0]) + self.assertTrue(manufacture_entry.items[0].original_item == raw_materials[0]) + + manufacture_entry.submit() + + frappe.db.set_single_value("Manufacturing Settings", "validate_components_quantities_per_bom", 0) + def test_components_qty_for_bom_based_manufacture_entry(self): frappe.db.set_single_value("Manufacturing Settings", "backflush_raw_materials_based_on", "BOM") frappe.db.set_single_value("Manufacturing Settings", "validate_components_quantities_per_bom", 1) @@ -2155,6 +2474,237 @@ class TestWorkOrder(FrappeTestCase): frappe.db.set_single_value("Manufacturing Settings", "validate_components_quantities_per_bom", 0) + def test_components_as_per_bom_for_manufacture_entry(self): + frappe.db.set_single_value("Manufacturing Settings", "backflush_raw_materials_based_on", "BOM") + frappe.db.set_single_value("Manufacturing Settings", "validate_components_quantities_per_bom", 1) + + fg_item = "Test FG Item For Component Validation 1" + source_warehouse = "Stores - _TC" + raw_materials = ["Test Component Validation RM Item 11", "Test Component Validation RM Item 12"] + + make_item(fg_item, {"is_stock_item": 1}) + for item in raw_materials: + make_item(item, {"is_stock_item": 1}) + test_stock_entry.make_stock_entry( + item_code=item, + target=source_warehouse, + qty=10, + basic_rate=100, + ) + + make_bom(item=fg_item, source_warehouse=source_warehouse, raw_materials=raw_materials) + + wo = make_wo_order_test_record( + item=fg_item, + qty=10, + source_warehouse=source_warehouse, + ) + + transfer_entry = frappe.get_doc(make_stock_entry(wo.name, "Material Transfer for Manufacture", 10)) + transfer_entry.save() + transfer_entry.remove(transfer_entry.items[0]) + + self.assertRaises(frappe.ValidationError, transfer_entry.save) + + transfer_entry = frappe.get_doc(make_stock_entry(wo.name, "Material Transfer for Manufacture", 10)) + transfer_entry.save() + transfer_entry.submit() + + manufacture_entry = frappe.get_doc(make_stock_entry(wo.name, "Manufacture", 10)) + manufacture_entry.save() + + manufacture_entry.remove(manufacture_entry.items[0]) + + self.assertRaises(frappe.ValidationError, manufacture_entry.save) + manufacture_entry.delete() + + manufacture_entry = frappe.get_doc(make_stock_entry(wo.name, "Manufacture", 10)) + manufacture_entry.save() + manufacture_entry.submit() + + frappe.db.set_single_value("Manufacturing Settings", "validate_components_quantities_per_bom", 0) + + def test_wip_skip(self): + wo = make_wo_order_test_record( + item="_Test FG Item", + qty=10, + source_warehouse="_Test Warehouse - _TC", + wip_warehouse="Stores - _TC", + ) + manufacture_entry = frappe.get_doc(make_stock_entry(wo.name, "Manufacture", 10)) + self.assertEqual(manufacture_entry.items[0].s_warehouse, "Stores - _TC") + + wo = make_wo_order_test_record( + item="_Test FG Item", + qty=10, + source_warehouse="_Test Warehouse - _TC", + wip_warehouse="Stores - _TC", + skip_transfer=1, + ) + manufacture_entry = frappe.get_doc(make_stock_entry(wo.name, "Manufacture", 10)) + self.assertEqual(manufacture_entry.items[0].s_warehouse, "_Test Warehouse - _TC") + + wo = make_wo_order_test_record( + item="_Test FG Item", + qty=10, + source_warehouse="_Test Warehouse - _TC", + wip_warehouse="Stores - _TC", + skip_transfer=1, + from_wip_warehouse=1, + ) + manufacture_entry = frappe.get_doc(make_stock_entry(wo.name, "Manufacture", 10)) + self.assertEqual(manufacture_entry.items[0].s_warehouse, "Stores - _TC") + + def test_serial_no_status_for_stock_entry(self): + items = { + "Finished Good Test Item 1": {"is_stock_item": 1}, + "_Test RM Item with Serial No": { + "is_stock_item": 1, + "has_serial_no": 1, + "serial_no_series": "SN-FCG-NO-.####", + }, + } + for item, properties in items.items(): + make_item(item, properties) + + fg_item = "Finished Good Test Item 1" + rec_se = test_stock_entry.make_stock_entry( + item_code="_Test RM Item with Serial No", target="_Test Warehouse - _TC", qty=4, basic_rate=100 + ) + + if not frappe.db.get_value("BOM", {"item": fg_item, "docstatus": 1}): + bom = make_bom( + item=fg_item, + rate=1000, + raw_materials=["_Test RM Item with Serial No"], + do_not_save=True, + ) + bom.rm_cost_as_per = "Price List" # non stock item won't have valuation rate + bom.buying_price_list = "_Test Price List India" + bom.currency = "INR" + bom.save() + + wo = make_wo_order_test_record( + production_item=fg_item, skip_transfer=1, source_warehouse="_Test Warehouse - _TC" + ) + + ste = frappe.get_doc(make_stock_entry(wo.name, "Manufacture", 4)) + ste.items[0].use_serial_batch_fields = 1 + ste.items[0].serial_no = "\n".join( + get_serial_nos_from_bundle(rec_se.items[0].serial_and_batch_bundle) + ) + ste.insert() + ste.submit() + + ste.reload() + serial_nos = get_serial_nos_from_bundle(ste.items[0].serial_and_batch_bundle) + for row in serial_nos: + status = frappe.db.get_value("Serial No", row, "status") + self.assertEqual(status, "Consumed") + + def test_work_order_valuation_auto_pick(self): + fg_item = "Test FG Item For Non Transfer Item Batch" + rm_item = "Test RM Item For Non Transfer Item Batch" + + make_item(fg_item, {"is_stock_item": 1}) + make_item( + rm_item, + { + "is_stock_item": 1, + "has_batch_no": 1, + "create_new_batch": 1, + "batch_number_series": "TST-BATCH-NTI-.###", + }, + ) + + source_warehouse = "_Test Warehouse - _TC" + wip_warehouse = "Stores - _TC" + finished_goods_warehouse = create_warehouse("_Test Finished Goods Warehouse", company="_Test Company") + + batches = make_stock_in_entries_and_get_batches(rm_item, source_warehouse, wip_warehouse) + + if not frappe.db.get_value("BOM", {"item": fg_item}): + make_bom(item=fg_item, raw_materials=[rm_item]) + + wo = make_wo_order_test_record( + item=fg_item, + qty=5, + source_warehouse=source_warehouse, + wip_warehouse=wip_warehouse, + fg_warehouse=finished_goods_warehouse, + ) + + stock_entry = frappe.get_doc(make_stock_entry(wo.name, "Material Transfer for Manufacture", 5)) + stock_entry.items[0].batch_no = batches[1] + stock_entry.items[0].use_serial_batch_fields = 1 + stock_entry.submit() + stock_entry.reload() + + self.assertEqual(stock_entry.items[0].valuation_rate, 200) + + original_value = frappe.db.get_single_value( + "Stock Settings", "auto_create_serial_and_batch_bundle_for_outward" + ) + original_based_on = frappe.db.get_single_value("Stock Settings", "pick_serial_and_batch_based_on") + + frappe.db.set_single_value("Stock Settings", "auto_create_serial_and_batch_bundle_for_outward", 1) + frappe.db.set_single_value("Stock Settings", "pick_serial_and_batch_based_on", "Expiry") + + stock_entry = frappe.get_doc(make_stock_entry(wo.name, "Manufacture", 5)) + stock_entry.items[0].use_serial_batch_fields = 1 + stock_entry.submit() + stock_entry.reload() + + batch_no = get_batch_from_bundle(stock_entry.items[0].serial_and_batch_bundle) + self.assertEqual(batch_no, batches[1]) + self.assertEqual(stock_entry.items[0].valuation_rate, 200) + self.assertEqual(stock_entry.items[1].valuation_rate, 200) + + frappe.db.set_single_value( + "Stock Settings", "auto_create_serial_and_batch_bundle_for_outward", original_value + ) + frappe.db.set_single_value("Stock Settings", "pick_serial_and_batch_based_on", original_based_on) + + +def make_stock_in_entries_and_get_batches(rm_item, source_warehouse, wip_warehouse): + from erpnext.stock.doctype.stock_entry.test_stock_entry import ( + make_stock_entry as make_stock_entry_test_record, + ) + + batches = [] + for qty, rate in ((5, 100), (5, 200)): + stock_entry = make_stock_entry_test_record( + item_code=rm_item, + target=source_warehouse, + qty=qty, + basic_rate=rate, + ) + stock_entry.submit() + stock_entry.reload() + + batch_no = get_batch_from_bundle(stock_entry.items[0].serial_and_batch_bundle) + batch_doc = frappe.get_doc("Batch", batch_no) + + # keep early expiry date for the batch having rate 200 + days = 10 if rate == 100 else 1 + batch_doc.db_set("expiry_date", add_to_date(now(), days=days)) + + batches.append(batch_no) + + stock_entry = make_stock_entry_test_record( + item_code=rm_item, + target=wip_warehouse, + qty=qty, + basic_rate=rate, + ) + stock_entry.submit() + stock_entry.reload() + batch_no = get_batch_from_bundle(stock_entry.items[0].serial_and_batch_bundle) + batch_doc = frappe.get_doc("Batch", batch_no) + batch_doc.db_set("expiry_date", add_to_date(now(), days=10)) + + return batches + def make_operation(**kwargs): kwargs = frappe._dict(kwargs) @@ -2335,6 +2885,29 @@ def prepare_data_for_backflush_based_on_materials_transferred(): make_bom(item=item.name, source_warehouse="Stores - _TC", raw_materials=[batch_item_doc.name]) + # Make additional items not attached to a BOM + make_item( + "Test Batch Battery Consumable", + { + "is_stock_item": 1, + "has_batch_no": 1, + "create_new_batch": 1, + "batch_number_series": "TBMK.#####", + "valuation_rate": 2.33, + "stock_uom": "Nos", + }, + ) + make_item( + "Test Serial Battery Consumable", + { + "is_stock_item": 1, + "has_serial_no": 1, + "serial_no_series": "TSBH.#####", + "valuation_rate": 3.33, + "stock_uom": "Nos", + }, + ) + sn_item_doc = make_item( "Test Serial No BTT Headphone", { diff --git a/erpnext/manufacturing/doctype/work_order/work_order.js b/erpnext/manufacturing/doctype/work_order/work_order.js index ae888c79714..67233dc206c 100644 --- a/erpnext/manufacturing/doctype/work_order/work_order.js +++ b/erpnext/manufacturing/doctype/work_order/work_order.js @@ -130,6 +130,32 @@ frappe.ui.form.on("Work Order", { ); }, + allow_alternative_item: function (frm) { + let has_alternative = false; + if (frm.doc.required_items) { + has_alternative = frm.doc.required_items.find((i) => i.allow_alternative_item === 1); + } + + if (frm.doc.allow_alternative_item && frm.doc.docstatus === 0 && has_alternative) { + frm.add_custom_button(__("Alternate Item"), () => { + erpnext.utils.select_alternate_items({ + frm: frm, + child_docname: "required_items", + warehouse_field: "source_warehouse", + child_doctype: "Work Order Item", + original_item_field: "original_item", + condition: (d) => { + if (d.allow_alternative_item) { + return true; + } + }, + }); + }); + } else { + frm.remove_custom_button(__("Alternate Item")); + } + }, + refresh: function (frm) { erpnext.toggle_naming_series(); erpnext.work_order.set_custom_buttons(frm); @@ -163,26 +189,6 @@ frappe.ui.form.on("Work Order", { } } - if (frm.doc.required_items && frm.doc.allow_alternative_item) { - const has_alternative = frm.doc.required_items.find((i) => i.allow_alternative_item === 1); - if (frm.doc.docstatus == 0 && has_alternative) { - frm.add_custom_button(__("Alternate Item"), () => { - erpnext.utils.select_alternate_items({ - frm: frm, - child_docname: "required_items", - warehouse_field: "source_warehouse", - child_doctype: "Work Order Item", - original_item_field: "original_item", - condition: (d) => { - if (d.allow_alternative_item) { - return true; - } - }, - }); - }); - } - } - if (frm.doc.status == "Completed") { if (frm.doc.__onload.backflush_raw_materials_based_on == "Material Transferred for Manufacture") { frm.add_custom_button( @@ -201,7 +207,7 @@ frappe.ui.form.on("Work Order", { frm.doc.produced_qty > 0 ) { frm.add_custom_button( - __("Disassembly Order"), + __("Disassemble Order"), () => { frm.trigger("make_disassembly_order"); }, @@ -210,6 +216,7 @@ frappe.ui.form.on("Work Order", { } frm.trigger("add_custom_button_to_return_components"); + frm.trigger("allow_alternative_item"); }, add_custom_button_to_return_components: function (frm) { @@ -294,6 +301,12 @@ frappe.ui.form.on("Work Order", { label: __("Sequence Id"), read_only: 1, }, + { + fieldtype: "Link", + fieldname: "bom", + label: __("BOM"), + read_only: 1, + }, ], data: operations_data, in_place_edit: true, @@ -334,6 +347,7 @@ frappe.ui.form.on("Work Order", { qty: pending_qty, pending_qty: pending_qty, sequence_id: data.sequence_id, + bom: data.bom, }); } } @@ -390,7 +404,10 @@ frappe.ui.form.on("Work Order", { message = title; // pending qty if (!frm.doc.skip_transfer) { - var pending_complete = frm.doc.material_transferred_for_manufacturing - frm.doc.produced_qty; + var pending_complete = + frm.doc.material_transferred_for_manufacturing - + frm.doc.produced_qty - + frm.doc.process_loss_qty; if (pending_complete) { var width = (pending_complete / frm.doc.qty) * 100 - added_min; title = __("{0} items in progress", [pending_complete]); @@ -402,6 +419,16 @@ frappe.ui.form.on("Work Order", { message = message + ". " + title; } } + if (frm.doc.process_loss_qty) { + var process_loss_width = (frm.doc.process_loss_qty / frm.doc.qty) * 100; + title = __("{0} items lost during process.", [frm.doc.process_loss_qty]); + bars.push({ + title: title, + width: process_loss_width + "%", + progress_class: "progress-bar-danger", + }); + message = message + ". " + title; + } frm.dashboard.add_progress(__("Status"), bars, message); }, @@ -540,6 +567,9 @@ frappe.ui.form.on("Work Order", { }); frappe.ui.form.on("Work Order Item", { + allow_alternative_item(frm) { + frm.trigger("allow_alternative_item"); + }, source_warehouse: function (frm, cdt, cdn) { var row = locals[cdt][cdn]; if (!row.item_code) { @@ -618,7 +648,7 @@ erpnext.work_order = { set_custom_buttons: function (frm) { var doc = frm.doc; - if (doc.status !== "Closed") { + if (doc.docstatus === 1 && doc.status !== "Closed") { frm.add_custom_button( __("Close"), function () { diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py index 057c49949ec..0bf383de285 100644 --- a/erpnext/manufacturing/doctype/work_order/work_order.py +++ b/erpnext/manufacturing/doctype/work_order/work_order.py @@ -152,22 +152,46 @@ class WorkOrder(Document): self.validate_sales_order() self.set_default_warehouse() self.validate_warehouse_belongs_to_company() + self.check_wip_warehouse_skip() self.calculate_operating_cost() self.validate_qty() self.validate_transfer_against() self.validate_operation_time() self.status = self.get_status() self.validate_workstation_type() + self.reset_use_multi_level_bom() - validate_uom_is_integer(self, "stock_uom", ["qty", "produced_qty"]) + if self.source_warehouse: + self.set_warehouses() + + validate_uom_is_integer(self, "stock_uom", ["required_qty"]) self.set_required_items(reset_only_qty=len(self.get("required_items"))) + def set_warehouses(self): + for row in self.required_items: + if not row.source_warehouse: + row.source_warehouse = self.source_warehouse + + def reset_use_multi_level_bom(self): + if self.is_new(): + return + + before_save_obj = self.get_doc_before_save() + if before_save_obj.use_multi_level_bom != self.use_multi_level_bom: + self.get_items_and_operations_from_bom() + def validate_workstation_type(self): + if not self.docstatus.is_submitted(): + return + for row in self.operations: if not row.workstation and not row.workstation_type: - msg = f"Row {row.idx}: Workstation or Workstation Type is mandatory for an operation {row.operation}" - frappe.throw(_(msg)) + frappe.throw( + _("Row {0}: Workstation or Workstation Type is mandatory for an operation {1}").format( + row.idx, row.operation + ) + ) def validate_sales_order(self): if self.sales_order: @@ -228,6 +252,10 @@ class WorkOrder(Document): if not self.fg_warehouse: self.fg_warehouse = frappe.db.get_single_value("Manufacturing Settings", "default_fg_warehouse") + def check_wip_warehouse_skip(self): + if self.skip_transfer and not self.from_wip_warehouse: + self.wip_warehouse = None + def validate_warehouse_belongs_to_company(self): warehouses = [self.fg_warehouse, self.wip_warehouse] for d in self.get("required_items"): @@ -320,8 +348,9 @@ class WorkOrder(Document): if flt(self.material_transferred_for_manufacturing) > 0: status = "In Process" - total_qty = flt(self.produced_qty) + flt(self.process_loss_qty) - if flt(total_qty) >= flt(self.qty): + precision = frappe.get_precision("Work Order", "produced_qty") + total_qty = flt(self.produced_qty, precision) + flt(self.process_loss_qty, precision) + if flt(total_qty, precision) >= flt(self.qty, precision): status = "Completed" else: status = "Cancelled" @@ -520,7 +549,6 @@ class WorkOrder(Document): def delete_auto_created_batch_and_serial_no(self): for row in frappe.get_all("Serial No", filters={"work_order": self.name}): frappe.delete_doc("Serial No", row.name) - self.db_set("serial_no", "") for row in frappe.get_all("Batch", filters={"reference_name": self.name}): frappe.delete_doc("Batch", row.name) @@ -1277,7 +1305,7 @@ def get_item_details(item, project=None, skip_bom_info=False, throw=True): @frappe.whitelist() -def make_work_order(bom_no, item, qty=0, project=None, variant_items=None): +def make_work_order(bom_no, item, qty=0, project=None, variant_items=None, use_multi_level_bom=None): if not frappe.has_permission("Work Order", "write"): frappe.throw(_("Not permitted"), frappe.PermissionError) @@ -1287,12 +1315,13 @@ def make_work_order(bom_no, item, qty=0, project=None, variant_items=None): wo_doc.production_item = item wo_doc.update(item_details) wo_doc.bom_no = bom_no + wo_doc.use_multi_level_bom = cint(use_multi_level_bom) if flt(qty) > 0: wo_doc.qty = flt(qty) wo_doc.get_items_and_operations_from_bom() - if variant_items: + if variant_items and not wo_doc.use_multi_level_bom: add_variant_item(variant_items, wo_doc, bom_no, "required_items") return wo_doc @@ -1336,7 +1365,20 @@ def add_variant_item(variant_items, wo_doc, bom_no, table_name="items"): args["amount"] = flt(args.get("required_qty")) * flt(args.get("rate")) args["uom"] = item_data.stock_uom - wo_doc.append(table_name, args) + + existing_row = ( + get_template_rm_item(wo_doc, item.get("item_code")) if table_name == "required_items" else None + ) + if existing_row: + existing_row.update(args) + else: + wo_doc.append(table_name, args) + + +def get_template_rm_item(wo_doc, item_code): + for row in wo_doc.required_items: + if row.item_code == item_code: + return row @frappe.whitelist() @@ -1385,7 +1427,11 @@ def make_stock_entry(work_order_id, purpose, qty=None, target_warehouse=None): stock_entry.to_warehouse = wip_warehouse stock_entry.project = work_order.project else: - stock_entry.from_warehouse = wip_warehouse + stock_entry.from_warehouse = ( + work_order.source_warehouse + if work_order.skip_transfer and not work_order.from_wip_warehouse + else wip_warehouse + ) stock_entry.to_warehouse = work_order.fg_warehouse stock_entry.project = work_order.project @@ -1473,7 +1519,9 @@ def close_work_order(work_order, status): work_order = frappe.get_doc("Work Order", work_order) if work_order.get("operations"): job_cards = frappe.get_list( - "Job Card", filters={"work_order": work_order.name, "status": "Work In Progress"}, pluck="name" + "Job Card", + filters={"work_order": work_order.name, "status": "Work In Progress", "docstatus": 1}, + pluck="name", ) if job_cards: @@ -1568,11 +1616,13 @@ def create_job_card(work_order, row, enable_capacity_planning=False, auto_create "posting_date": nowdate(), "for_quantity": row.job_card_qty or work_order.get("qty", 0), "operation_id": row.get("name"), - "bom_no": work_order.bom_no, + "bom_no": row.get("bom") or work_order.bom_no, "project": work_order.project, "company": work_order.company, "sequence_id": row.get("sequence_id"), - "wip_warehouse": work_order.wip_warehouse, + "wip_warehouse": work_order.wip_warehouse or row.get("wip_warehouse") + if not work_order.skip_transfer or work_order.from_wip_warehouse + else work_order.source_warehouse or row.get("source_warehouse"), "hour_rate": row.get("hour_rate"), "serial_no": row.get("serial_no"), } diff --git a/erpnext/manufacturing/doctype/work_order_item/work_order_item.json b/erpnext/manufacturing/doctype/work_order_item/work_order_item.json index 0f4d693544e..580168180a7 100644 --- a/erpnext/manufacturing/doctype/work_order_item/work_order_item.json +++ b/erpnext/manufacturing/doctype/work_order_item/work_order_item.json @@ -15,6 +15,7 @@ "include_item_in_manufacturing", "qty_section", "required_qty", + "stock_uom", "rate", "amount", "column_break_11", @@ -138,11 +139,19 @@ "in_list_view": 1, "label": "Returned Qty ", "read_only": 1 + }, + { + "fetch_from": "item_code.stock_uom", + "fieldname": "stock_uom", + "fieldtype": "Link", + "label": "Stock UOM", + "options": "UOM", + "read_only": 1 } ], "istable": 1, "links": [], - "modified": "2024-02-11 15:45:32.318374", + "modified": "2024-11-19 15:48:16.823384", "modified_by": "Administrator", "module": "Manufacturing", "name": "Work Order Item", @@ -153,4 +162,4 @@ "sort_order": "DESC", "states": [], "track_changes": 1 -} \ No newline at end of file +} diff --git a/erpnext/manufacturing/doctype/work_order_item/work_order_item.py b/erpnext/manufacturing/doctype/work_order_item/work_order_item.py index 267ca5d21de..04f78eb1c3b 100644 --- a/erpnext/manufacturing/doctype/work_order_item/work_order_item.py +++ b/erpnext/manufacturing/doctype/work_order_item/work_order_item.py @@ -25,6 +25,7 @@ class WorkOrderItem(Document): item_code: DF.Link | None item_name: DF.Data | None operation: DF.Link | None + operation_row_id: DF.Int parent: DF.Data parentfield: DF.Data parenttype: DF.Data @@ -32,6 +33,7 @@ class WorkOrderItem(Document): required_qty: DF.Float returned_qty: DF.Float source_warehouse: DF.Link | None + stock_uom: DF.Link | None transferred_qty: DF.Float # end: auto-generated types diff --git a/erpnext/manufacturing/number_card/monthly_completed_work_order/monthly_completed_work_order.json b/erpnext/manufacturing/number_card/monthly_completed_work_order/monthly_completed_work_order.json index 36c0b9ae75b..7381de707d7 100644 --- a/erpnext/manufacturing/number_card/monthly_completed_work_order/monthly_completed_work_order.json +++ b/erpnext/manufacturing/number_card/monthly_completed_work_order/monthly_completed_work_order.json @@ -3,6 +3,7 @@ "docstatus": 0, "doctype": "Number Card", "document_type": "Work Order", + "dynamic_filters_json": "[[\"Work Order\",\"company\",\"=\",\"frappe.defaults.get_user_default(\\\"Company\\\")\"]]", "filters_json": "[[\"Work Order\",\"status\",\"=\",\"Completed\"],[\"Work Order\",\"docstatus\",\"=\",1],[\"Work Order\",\"creation\",\"between\",[\"2020-06-08\",\"2020-07-08\"]]]", "function": "Count", "idx": 0, diff --git a/erpnext/manufacturing/number_card/monthly_total_work_order/monthly_total_work_order.json b/erpnext/manufacturing/number_card/monthly_total_work_order/monthly_total_work_order.json index 80d3b1520ae..e4b8c940454 100644 --- a/erpnext/manufacturing/number_card/monthly_total_work_order/monthly_total_work_order.json +++ b/erpnext/manufacturing/number_card/monthly_total_work_order/monthly_total_work_order.json @@ -3,6 +3,7 @@ "docstatus": 0, "doctype": "Number Card", "document_type": "Work Order", + "dynamic_filters_json": "[[\"Work Order\",\"company\",\"=\",\"frappe.defaults.get_user_default(\\\"Company\\\")\"]]", "filters_json": "[[\"Work Order\",\"docstatus\",\"=\",1],[\"Work Order\",\"creation\",\"between\",[\"2020-06-08\",\"2020-07-08\"]]]", "function": "Count", "idx": 0, diff --git a/erpnext/manufacturing/number_card/ongoing_job_card/ongoing_job_card.json b/erpnext/manufacturing/number_card/ongoing_job_card/ongoing_job_card.json index ba23ff34531..0138af827a6 100644 --- a/erpnext/manufacturing/number_card/ongoing_job_card/ongoing_job_card.json +++ b/erpnext/manufacturing/number_card/ongoing_job_card/ongoing_job_card.json @@ -3,6 +3,7 @@ "docstatus": 0, "doctype": "Number Card", "document_type": "Job Card", + "dynamic_filters_json": "[[\"Job Card\",\"company\",\"=\",\"frappe.defaults.get_user_default(\\\"Company\\\")\"]]", "filters_json": "[[\"Job Card\",\"status\",\"!=\",\"Completed\"],[\"Job Card\",\"docstatus\",\"=\",1]]", "function": "Count", "idx": 0, diff --git a/erpnext/manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.py b/erpnext/manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.py index 0f5fa959dc5..6e66c9e539d 100644 --- a/erpnext/manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.py +++ b/erpnext/manufacturing/report/exponential_smoothing_forecasting/exponential_smoothing_forecasting.py @@ -230,8 +230,8 @@ class ForecastingReport(ExponentialSmoothingForecast): "data": { "labels": labels, "datasets": [ - {"name": "Demand", "values": self.total_demand}, - {"name": "Forecast", "values": self.total_forecast}, + {"name": _("Demand"), "values": self.total_demand}, + {"name": _("Forecast"), "values": self.total_forecast}, ], }, "type": "line", diff --git a/erpnext/manufacturing/report/job_card_summary/job_card_summary.js b/erpnext/manufacturing/report/job_card_summary/job_card_summary.js index 2196500cfb0..b4b5955891e 100644 --- a/erpnext/manufacturing/report/job_card_summary/job_card_summary.js +++ b/erpnext/manufacturing/report/job_card_summary/job_card_summary.js @@ -56,6 +56,7 @@ frappe.query_reports["Job Card Summary"] = { label: __("Work Orders"), fieldname: "work_order", fieldtype: "MultiSelectList", + options: "Work Order", get_data: function (txt) { return frappe.db.get_link_options("Work Order", txt); }, @@ -64,6 +65,7 @@ frappe.query_reports["Job Card Summary"] = { label: __("Production Item"), fieldname: "production_item", fieldtype: "MultiSelectList", + options: "Item", get_data: function (txt) { return frappe.db.get_link_options("Item", txt); }, diff --git a/erpnext/manufacturing/report/production_analytics/production_analytics.py b/erpnext/manufacturing/report/production_analytics/production_analytics.py index c02c1e6fcd3..5c84a2dc8d1 100644 --- a/erpnext/manufacturing/report/production_analytics/production_analytics.py +++ b/erpnext/manufacturing/report/production_analytics/production_analytics.py @@ -4,7 +4,7 @@ import frappe from frappe import _, scrub -from frappe.utils import getdate +from frappe.utils import getdate, today from erpnext.stock.report.stock_analytics.stock_analytics import get_period, get_period_date_ranges @@ -30,11 +30,12 @@ def get_columns(filters): def get_periodic_data(filters, entry): periodic_data = { - "All Work Orders": {}, "Not Started": {}, "Overdue": {}, "Pending": {}, "Completed": {}, + "Closed": {}, + "Stopped": {}, } ranges = get_period_date_ranges(filters) @@ -42,33 +43,24 @@ def get_periodic_data(filters, entry): for from_date, end_date in ranges: period = get_period(end_date, filters) for d in entry: - if getdate(d.creation) <= getdate(from_date) or getdate(d.creation) <= getdate(end_date): - periodic_data = update_periodic_data(periodic_data, "All Work Orders", period) - if d.status == "Completed": - if getdate(d.actual_end_date) < getdate(from_date) or getdate(d.modified) < getdate( - from_date - ): - periodic_data = update_periodic_data(periodic_data, "Completed", period) - elif getdate(d.actual_start_date) < getdate(from_date): - periodic_data = update_periodic_data(periodic_data, "Pending", period) - elif getdate(d.planned_start_date) < getdate(from_date): - periodic_data = update_periodic_data(periodic_data, "Overdue", period) - else: - periodic_data = update_periodic_data(periodic_data, "Not Started", period) + if getdate(from_date) <= getdate(d.creation) <= getdate(end_date) and d.status not in [ + "Draft", + "Submitted", + "Completed", + "Cancelled", + ]: + if d.status in ["Not Started", "Closed", "Stopped"]: + periodic_data = update_periodic_data(periodic_data, d.status, period) + elif getdate(today()) > getdate(d.planned_end_date): + periodic_data = update_periodic_data(periodic_data, "Overdue", period) + elif getdate(today()) < getdate(d.planned_end_date): + periodic_data = update_periodic_data(periodic_data, "Pending", period) - elif d.status == "In Process": - if getdate(d.actual_start_date) < getdate(from_date): - periodic_data = update_periodic_data(periodic_data, "Pending", period) - elif getdate(d.planned_start_date) < getdate(from_date): - periodic_data = update_periodic_data(periodic_data, "Overdue", period) - else: - periodic_data = update_periodic_data(periodic_data, "Not Started", period) - - elif d.status == "Not Started": - if getdate(d.planned_start_date) < getdate(from_date): - periodic_data = update_periodic_data(periodic_data, "Overdue", period) - else: - periodic_data = update_periodic_data(periodic_data, "Not Started", period) + if ( + getdate(from_date) <= getdate(d.actual_end_date) <= getdate(end_date) + and d.status == "Completed" + ): + periodic_data = update_periodic_data(periodic_data, "Completed", period) return periodic_data @@ -88,10 +80,7 @@ def get_data(filters, columns): "Work Order", fields=[ "creation", - "modified", - "actual_start_date", "actual_end_date", - "planned_start_date", "planned_end_date", "status", ], @@ -100,13 +89,13 @@ def get_data(filters, columns): periodic_data = get_periodic_data(filters, entry) - labels = ["All Work Orders", "Not Started", "Overdue", "Pending", "Completed"] + labels = ["Not Started", "Overdue", "Pending", "Completed", "Closed", "Stopped"] chart_data = get_chart_data(periodic_data, columns) ranges = get_period_date_ranges(filters) for label in labels: work = {} - work["Status"] = label + work["Status"] = _(label) for _dummy, end_date in ranges: period = get_period(end_date, filters) if periodic_data.get(label).get(period): @@ -121,21 +110,23 @@ def get_data(filters, columns): def get_chart_data(periodic_data, columns): labels = [d.get("label") for d in columns[1:]] - all_data, not_start, overdue, pending, completed = [], [], [], [], [] + not_start, overdue, pending, completed, closed, stopped = [], [], [], [], [], [] datasets = [] for d in labels: - all_data.append(periodic_data.get("All Work Orders").get(d)) not_start.append(periodic_data.get("Not Started").get(d)) overdue.append(periodic_data.get("Overdue").get(d)) pending.append(periodic_data.get("Pending").get(d)) completed.append(periodic_data.get("Completed").get(d)) + closed.append(periodic_data.get("Closed").get(d)) + stopped.append(periodic_data.get("Stopped").get(d)) - datasets.append({"name": "All Work Orders", "values": all_data}) - datasets.append({"name": "Not Started", "values": not_start}) - datasets.append({"name": "Overdue", "values": overdue}) - datasets.append({"name": "Pending", "values": pending}) - datasets.append({"name": "Completed", "values": completed}) + datasets.append({"name": _("Not Started"), "values": not_start}) + datasets.append({"name": _("Overdue"), "values": overdue}) + datasets.append({"name": _("Pending"), "values": pending}) + datasets.append({"name": _("Completed"), "values": completed}) + datasets.append({"name": _("Closed"), "values": closed}) + datasets.append({"name": _("Stopped"), "values": stopped}) chart = {"data": {"labels": labels, "datasets": datasets}} chart["type"] = "line" diff --git a/erpnext/manufacturing/report/production_plan_summary/production_plan_summary.py b/erpnext/manufacturing/report/production_plan_summary/production_plan_summary.py index 5bc9236c1d5..c62cab77d61 100644 --- a/erpnext/manufacturing/report/production_plan_summary/production_plan_summary.py +++ b/erpnext/manufacturing/report/production_plan_summary/production_plan_summary.py @@ -27,32 +27,51 @@ def get_data(filters): def get_production_plan_item_details(filters, data, order_details): - itemwise_indent = {} - production_plan_doc = frappe.get_cached_doc("Production Plan", filters.get("production_plan")) for row in production_plan_doc.po_items: - work_order = frappe.get_value( + work_orders = frappe.get_all( "Work Order", - {"production_plan_item": row.name, "bom_no": row.bom_no, "production_item": row.item_code}, - "name", + filters={ + "production_plan_item": row.name, + "bom_no": row.bom_no, + "production_item": row.item_code, + }, + pluck="name", ) - if row.item_code not in itemwise_indent: - itemwise_indent.setdefault(row.item_code, {}) + order_qty = row.planned_qty + total_produced_qty = 0.0 + pending_qty = 0.0 + for work_order in work_orders: + produced_qty = flt(order_details.get((work_order, row.item_code), {}).get("produced_qty", 0)) + pending_qty = flt(order_qty) - produced_qty + + total_produced_qty += produced_qty + + data.append( + { + "indent": 0, + "item_code": row.item_code, + "sales_order": row.get("sales_order"), + "item_name": frappe.get_cached_value("Item", row.item_code, "item_name"), + "qty": order_qty, + "document_type": "Work Order", + "document_name": work_order or "", + "bom_level": 0, + "produced_qty": produced_qty, + "pending_qty": pending_qty, + } + ) + + order_qty = pending_qty data.append( { - "indent": 0, "item_code": row.item_code, - "sales_order": row.get("sales_order"), - "item_name": frappe.get_cached_value("Item", row.item_code, "item_name"), + "indent": 0, "qty": row.planned_qty, - "document_type": "Work Order", - "document_name": work_order or "", - "bom_level": 0, - "produced_qty": order_details.get((work_order, row.item_code), {}).get("produced_qty", 0), - "pending_qty": flt(row.planned_qty) - - flt(order_details.get((work_order, row.item_code), {}).get("produced_qty", 0)), + "produced_qty": total_produced_qty, + "pending_qty": pending_qty, } ) diff --git a/erpnext/manufacturing/report/production_planning_report/production_planning_report.js b/erpnext/manufacturing/report/production_planning_report/production_planning_report.js index d6ca248abb5..40d87b8b0a2 100644 --- a/erpnext/manufacturing/report/production_planning_report/production_planning_report.js +++ b/erpnext/manufacturing/report/production_planning_report/production_planning_report.js @@ -41,7 +41,7 @@ frappe.query_reports["Production Planning Report"] = { fieldname: "docnames", label: __("Document Name"), fieldtype: "MultiSelectList", - options: "Sales Order", + options: "based_on", get_data: function (txt) { if (!frappe.query_report.filters) return; diff --git a/erpnext/manufacturing/report/quality_inspection_summary/quality_inspection_summary.py b/erpnext/manufacturing/report/quality_inspection_summary/quality_inspection_summary.py index 38e05852ee8..7e0fcf14cc6 100644 --- a/erpnext/manufacturing/report/quality_inspection_summary/quality_inspection_summary.py +++ b/erpnext/manufacturing/report/quality_inspection_summary/quality_inspection_summary.py @@ -42,7 +42,7 @@ def get_data(filters): def get_chart_data(periodic_data, columns): - labels = ["Rejected", "Accepted"] + labels = [_("Rejected"), _("Accepted")] status_wise_data = {"Accepted": 0, "Rejected": 0} @@ -53,7 +53,7 @@ def get_chart_data(periodic_data, columns): datasets.append( { - "name": "Qty Wise Chart", + "name": _("Qty Wise Chart"), "values": [status_wise_data.get("Rejected"), status_wise_data.get("Accepted")], } ) diff --git a/erpnext/manufacturing/report/test_reports.py b/erpnext/manufacturing/report/test_reports.py index 3e20f310ff9..f9c3154a63b 100644 --- a/erpnext/manufacturing/report/test_reports.py +++ b/erpnext/manufacturing/report/test_reports.py @@ -4,61 +4,67 @@ import frappe from erpnext.tests.utils import ReportFilters, ReportName, execute_script_report -DEFAULT_FILTERS = { - "company": "_Test Company", - "from_date": "2010-01-01", - "to_date": "2030-01-01", - "warehouse": "_Test Warehouse - _TC", -} - - -REPORT_FILTER_TEST_CASES: list[tuple[ReportName, ReportFilters]] = [ - ("BOM Explorer", {"bom": frappe.get_last_doc("BOM").name}), - ("BOM Operations Time", {}), - ("BOM Stock Calculated", {"bom": frappe.get_last_doc("BOM").name, "qty_to_make": 2}), - ("BOM Stock Report", {"bom": frappe.get_last_doc("BOM").name, "qty_to_produce": 2}), - ("Cost of Poor Quality Report", {"item": "_Test Item", "serial_no": "00"}), - ("Downtime Analysis", {}), - ( - "Exponential Smoothing Forecasting", - { - "based_on_document": "Sales Order", - "based_on_field": "Qty", - "no_of_years": 3, - "periodicity": "Yearly", - "smoothing_constant": 0.3, - }, - ), - ("Job Card Summary", {"fiscal_year": "2021-2022"}), - ("Production Analytics", {"range": "Monthly"}), - ("Quality Inspection Summary", {}), - ("Process Loss Report", {}), - ("Work Order Stock Report", {}), - ("Work Order Summary", {"fiscal_year": "2021-2022", "age": 0}), -] - - -if frappe.db.a_row_exists("Production Plan"): - REPORT_FILTER_TEST_CASES.append( - ("Production Plan Summary", {"production_plan": frappe.get_last_doc("Production Plan").name}) - ) - -OPTIONAL_FILTERS = { - "warehouse": "_Test Warehouse - _TC", - "item": "_Test Item", - "item_group": "_Test Item Group", -} - class TestManufacturingReports(unittest.TestCase): + def setUp(self): + self.setup_default_filters() + + def tearDown(self): + frappe.db.rollback() + + def setup_default_filters(self): + self.last_bom = frappe.get_last_doc("BOM").name + self.DEFAULT_FILTERS = { + "company": "_Test Company", + "from_date": "2010-01-01", + "to_date": "2030-01-01", + "warehouse": "_Test Warehouse - _TC", + } + + self.REPORT_FILTER_TEST_CASES: list[tuple[ReportName, ReportFilters]] = [ + ("BOM Explorer", {"bom": self.last_bom}), + ("BOM Operations Time", {}), + ("BOM Stock Calculated", {"bom": self.last_bom, "qty_to_make": 2}), + ("BOM Stock Report", {"bom": self.last_bom, "qty_to_produce": 2}), + ("Cost of Poor Quality Report", {"item": "_Test Item", "serial_no": "00"}), + ("Downtime Analysis", {}), + ( + "Exponential Smoothing Forecasting", + { + "based_on_document": "Sales Order", + "based_on_field": "Qty", + "no_of_years": 3, + "periodicity": "Yearly", + "smoothing_constant": 0.3, + }, + ), + ("Job Card Summary", {"fiscal_year": "2021-2022"}), + ("Production Analytics", {"range": "Monthly"}), + ("Quality Inspection Summary", {}), + ("Process Loss Report", {}), + ("Work Order Stock Report", {}), + ("Work Order Summary", {"fiscal_year": "2021-2022", "age": 0}), + ] + + if frappe.db.a_row_exists("Production Plan"): + self.REPORT_FILTER_TEST_CASES.append( + ("Production Plan Summary", {"production_plan": frappe.get_last_doc("Production Plan").name}) + ) + + self.OPTIONAL_FILTERS = { + "warehouse": "_Test Warehouse - _TC", + "item": "_Test Item", + "item_group": "_Test Item Group", + } + def test_execute_all_manufacturing_reports(self): """Test that all script report in manufacturing modules are executable with supported filters""" - for report, filter in REPORT_FILTER_TEST_CASES: + for report, filter in self.REPORT_FILTER_TEST_CASES: with self.subTest(report=report): execute_script_report( report_name=report, module="Manufacturing", filters=filter, - default_filters=DEFAULT_FILTERS, - optional_filters=OPTIONAL_FILTERS if filter.get("_optional") else None, + default_filters=self.DEFAULT_FILTERS, + optional_filters=self.OPTIONAL_FILTERS if filter.get("_optional") else None, ) diff --git a/erpnext/manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.py b/erpnext/manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.py index 64363e20e39..a5690c477e4 100644 --- a/erpnext/manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.py +++ b/erpnext/manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.py @@ -50,7 +50,11 @@ def get_returned_materials(work_orders): raw_materials = frappe.get_all( "Stock Entry", - fields=["`tabStock Entry Detail`.`item_code`", "`tabStock Entry Detail`.`qty`"], + fields=[ + "`tabStock Entry`.`work_order`", + "`tabStock Entry Detail`.`item_code`", + "`tabStock Entry Detail`.`qty`", + ], filters=[ ["Stock Entry", "is_return", "=", 1], ["Stock Entry Detail", "docstatus", "=", 1], @@ -59,12 +63,14 @@ def get_returned_materials(work_orders): ) for d in raw_materials: - raw_materials_qty[d.item_code] += d.qty + key = (d.work_order, d.item_code) + raw_materials_qty[key] += d.qty for row in work_orders: row.returned_qty = 0.0 - if raw_materials_qty.get(row.raw_material_item_code): - row.returned_qty = raw_materials_qty.get(row.raw_material_item_code) + key = (row.parent, row.raw_material_item_code) + if raw_materials_qty.get(key): + row.returned_qty = raw_materials_qty.get(key) def get_fields(): diff --git a/erpnext/manufacturing/report/work_order_summary/work_order_summary.js b/erpnext/manufacturing/report/work_order_summary/work_order_summary.js index f48f8b7ea18..74fbf47bb23 100644 --- a/erpnext/manufacturing/report/work_order_summary/work_order_summary.js +++ b/erpnext/manufacturing/report/work_order_summary/work_order_summary.js @@ -42,6 +42,7 @@ frappe.query_reports["Work Order Summary"] = { label: __("Sales Orders"), fieldname: "sales_order", fieldtype: "MultiSelectList", + options: "Sales Order", get_data: function (txt) { return frappe.db.get_link_options("Sales Order", txt); }, @@ -50,6 +51,7 @@ frappe.query_reports["Work Order Summary"] = { label: __("Production Item"), fieldname: "production_item", fieldtype: "MultiSelectList", + options: "Item", get_data: function (txt) { return frappe.db.get_link_options("Item", txt); }, diff --git a/erpnext/manufacturing/workspace/manufacturing/manufacturing.json b/erpnext/manufacturing/workspace/manufacturing/manufacturing.json index d2520d6b7eb..320db68e037 100644 --- a/erpnext/manufacturing/workspace/manufacturing/manufacturing.json +++ b/erpnext/manufacturing/workspace/manufacturing/manufacturing.json @@ -1,4 +1,5 @@ { + "app": "erpnext", "charts": [], "content": "[{\"id\":\"csBCiDglCE\",\"type\":\"header\",\"data\":{\"text\":\"Your Shortcuts\",\"col\":12}},{\"id\":\"YHCQG3wAGv\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"BOM Creator\",\"col\":3}},{\"id\":\"xit0dg7KvY\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"BOM\",\"col\":3}},{\"id\":\"LRhGV9GAov\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Production Plan\",\"col\":3}},{\"id\":\"69KKosI6Hg\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Work Order\",\"col\":3}},{\"id\":\"PwndxuIpB3\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Job Card\",\"col\":3}},{\"id\":\"Ubj6zXcmIQ\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Plant Floor\",\"col\":3}},{\"id\":\"OtMcArFRa5\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"BOM Stock Report\",\"col\":3}},{\"id\":\"76yYsI5imF\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Production Planning Report\",\"col\":3}},{\"id\":\"PIQJYZOMnD\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Learn Manufacturing\",\"col\":3}},{\"id\":\"OaiDqTT03Y\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Forecasting\",\"col\":3}},{\"id\":\"bN_6tHS-Ct\",\"type\":\"spacer\",\"data\":{\"col\":12}},{\"id\":\"yVEFZMqVwd\",\"type\":\"header\",\"data\":{\"text\":\"Reports & Masters\",\"col\":12}},{\"id\":\"rwrmsTI58-\",\"type\":\"card\",\"data\":{\"card_name\":\"Production\",\"col\":4}},{\"id\":\"6dnsyX-siZ\",\"type\":\"card\",\"data\":{\"card_name\":\"Bill of Materials\",\"col\":4}},{\"id\":\"CIq-v5f5KC\",\"type\":\"card\",\"data\":{\"card_name\":\"Reports\",\"col\":4}},{\"id\":\"8RRiQeYr0G\",\"type\":\"card\",\"data\":{\"card_name\":\"Tools\",\"col\":4}},{\"id\":\"Pu8z7-82rT\",\"type\":\"card\",\"data\":{\"card_name\":\"Settings\",\"col\":4}}]", "creation": "2020-03-02 17:11:37.032604", @@ -124,11 +125,86 @@ "onboard": 0, "type": "Link" }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Bill of Materials", + "link_count": 6, + "onboard": 0, + "type": "Card Break" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Item", + "link_count": 0, + "link_to": "Item", + "link_type": "DocType", + "onboard": 1, + "type": "Link" + }, + { + "dependencies": "Item", + "hidden": 0, + "is_query_report": 0, + "label": "Bill of Materials", + "link_count": 0, + "link_to": "BOM", + "link_type": "DocType", + "onboard": 1, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Workstation Type", + "link_count": 0, + "link_to": "Workstation Type", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Workstation", + "link_count": 0, + "link_to": "Workstation", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "", + "hidden": 0, + "is_query_report": 0, + "label": "Operation", + "link_count": 0, + "link_to": "Operation", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "Work Order", + "hidden": 0, + "is_query_report": 1, + "label": "Routing", + "link_count": 0, + "link_to": "Routing", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, { "hidden": 0, "is_query_report": 0, "label": "Reports", "link_count": 10, + "link_type": "DocType", "onboard": 0, "type": "Card Break" }, @@ -233,90 +309,16 @@ }, { "hidden": 0, - "is_query_report": 0, + "is_query_report": 1, "label": "Work Order Consumed Materials", "link_count": 0, "link_to": "Work Order Consumed Materials", "link_type": "Report", "onboard": 0, "type": "Link" - }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Bill of Materials", - "link_count": 6, - "onboard": 0, - "type": "Card Break" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Item", - "link_count": 0, - "link_to": "Item", - "link_type": "DocType", - "onboard": 1, - "type": "Link" - }, - { - "dependencies": "Item", - "hidden": 0, - "is_query_report": 0, - "label": "Bill of Materials", - "link_count": 0, - "link_to": "BOM", - "link_type": "DocType", - "onboard": 1, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Workstation Type", - "link_count": 0, - "link_to": "Workstation Type", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Workstation", - "link_count": 0, - "link_to": "Workstation", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "dependencies": "", - "hidden": 0, - "is_query_report": 0, - "label": "Operation", - "link_count": 0, - "link_to": "Operation", - "link_type": "DocType", - "onboard": 0, - "type": "Link" - }, - { - "dependencies": "Work Order", - "hidden": 0, - "is_query_report": 1, - "label": "Routing", - "link_count": 0, - "link_to": "Routing", - "link_type": "DocType", - "onboard": 0, - "type": "Link" } ], - "modified": "2024-01-30 21:49:58.577218", + "modified": "2024-10-21 14:13:38.777556", "modified_by": "Administrator", "module": "Manufacturing", "name": "Manufacturing", @@ -334,7 +336,7 @@ "doc_view": "List", "label": "Learn Manufacturing", "type": "URL", - "url": "https://frappe.school/courses/manufacturing?utm_source=in_app" + "url": "https://school.frappe.io/lms/courses/manufacturing?utm_source=in_app" }, { "color": "Grey", @@ -398,5 +400,6 @@ "type": "Report" } ], - "title": "Manufacturing" -} \ No newline at end of file + "title": "Manufacturing", + "type": "Workspace" +} diff --git a/erpnext/modules.txt b/erpnext/modules.txt index c53cdf467d2..b8b12e90fb0 100644 --- a/erpnext/modules.txt +++ b/erpnext/modules.txt @@ -18,3 +18,4 @@ Communication Telephony Bulk Transaction Subcontracting +EDI \ No newline at end of file diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 2a97061a6a2..300ae9b8fec 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -261,6 +261,7 @@ erpnext.patches.v14_0.show_loan_management_deprecation_warning erpnext.patches.v14_0.clear_reconciliation_values_from_singles execute:frappe.rename_doc("Report", "TDS Payable Monthly", "Tax Withholding Details", force=True) erpnext.patches.v14_0.update_proprietorship_to_individual +erpnext.patches.v15_0.rename_subcontracting_fields [post_model_sync] erpnext.patches.v15_0.create_asset_depreciation_schedules_from_assets @@ -314,7 +315,8 @@ erpnext.patches.v13_0.update_docs_link erpnext.patches.v15_0.update_asset_value_for_manual_depr_entries erpnext.patches.v15_0.update_gpa_and_ndb_for_assdeprsch erpnext.patches.v14_0.create_accounting_dimensions_for_closing_balance -erpnext.patches.v14_0.update_closing_balances #14-07-2023 +erpnext.patches.v14_0.set_period_start_end_date_in_pcv +erpnext.patches.v14_0.update_closing_balances #20-12-2024 execute:frappe.db.set_single_value("Accounts Settings", "merge_similar_account_heads", 0) erpnext.patches.v14_0.update_reference_type_in_journal_entry_accounts erpnext.patches.v14_0.update_subscription_details @@ -358,6 +360,7 @@ erpnext.patches.v15_0.allow_on_submit_dimensions_for_repostable_doctypes erpnext.patches.v14_0.update_flag_for_return_invoices #2024-03-22 erpnext.patches.v15_0.create_accounting_dimensions_in_payment_request erpnext.patches.v14_0.update_pos_return_ledger_entries #2024-08-16 +erpnext.patches.v15_0.create_advance_payment_ledger_records # 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 # 2023-12-20 @@ -371,7 +374,31 @@ erpnext.patches.v15_0.update_warehouse_field_in_asset_repair_consumed_item_docty erpnext.patches.v15_0.update_asset_repair_field_in_stock_entry erpnext.patches.v15_0.update_total_number_of_booked_depreciations erpnext.patches.v15_0.do_not_use_batchwise_valuation +erpnext.patches.v15_0.update_invoice_remarks +erpnext.patches.v14_0.update_reports_with_range erpnext.patches.v15_0.drop_index_posting_datetime_from_sle erpnext.patches.v15_0.add_disassembly_order_stock_entry_type #1 erpnext.patches.v15_0.set_standard_stock_entry_type erpnext.patches.v15_0.link_purchase_item_to_asset_doc +erpnext.patches.v14_0.update_currency_exchange_settings_for_frankfurter +erpnext.patches.v15_0.update_task_assignee_email_field_in_asset_maintenance_log +erpnext.patches.v15_0.update_sub_voucher_type_in_gl_entries +erpnext.patches.v14_0.update_stock_uom_in_work_order_item +erpnext.patches.v15_0.set_is_exchange_gain_loss_in_payment_entry_deductions +erpnext.patches.v15_0.enable_allow_existing_serial_no +erpnext.patches.v15_0.update_cc_in_process_statement_of_accounts +erpnext.patches.v15_0.update_asset_status_to_work_in_progress +erpnext.patches.v15_0.rename_manufacturing_settings_field +erpnext.patches.v15_0.migrate_checkbox_to_select_for_reconciliation_effect +erpnext.patches.v15_0.sync_auto_reconcile_config +execute:frappe.db.set_single_value("Accounts Settings", "exchange_gain_loss_posting_date", "Payment") +erpnext.patches.v14_0.disable_add_row_in_gross_profit +erpnext.patches.v15_0.set_difference_amount_in_asset_value_adjustment +erpnext.patches.v14_0.update_posting_datetime +erpnext.stock.doctype.stock_ledger_entry.patches.ensure_sle_indexes +erpnext.patches.v15_0.update_query_report +erpnext.patches.v15_0.rename_field_from_rate_difference_to_amount_difference +erpnext.patches.v15_0.recalculate_amount_difference_field #2025-03-18 +erpnext.patches.v15_0.rename_sla_fields #2025-03-12 +erpnext.patches.v15_0.set_purchase_receipt_row_item_to_capitalization_stock_item +erpnext.patches.v15_0.update_payment_schedule_fields_in_invoices diff --git a/erpnext/patches/v13_0/fix_additional_cost_in_mfg_stock_entry.py b/erpnext/patches/v13_0/fix_additional_cost_in_mfg_stock_entry.py index e305b375c7f..5609b6bb895 100644 --- a/erpnext/patches/v13_0/fix_additional_cost_in_mfg_stock_entry.py +++ b/erpnext/patches/v13_0/fix_additional_cost_in_mfg_stock_entry.py @@ -15,7 +15,7 @@ def execute(): def find_broken_stock_entries() -> list[StockEntryCode]: period_closing_date = frappe.db.get_value( - "Period Closing Voucher", {"docstatus": 1}, "posting_date", order_by="posting_date desc" + "Period Closing Voucher", {"docstatus": 1}, "period_end_date", order_by="period_end_date desc" ) stock_entries_to_patch = frappe.db.sql( diff --git a/erpnext/patches/v13_0/item_reposting_for_incorrect_sl_and_gl.py b/erpnext/patches/v13_0/item_reposting_for_incorrect_sl_and_gl.py index c0d715063a8..2441075de30 100644 --- a/erpnext/patches/v13_0/item_reposting_for_incorrect_sl_and_gl.py +++ b/erpnext/patches/v13_0/item_reposting_for_incorrect_sl_and_gl.py @@ -38,7 +38,7 @@ def execute(): data = frappe.db.sql( """ SELECT - name, item_code, warehouse, voucher_type, voucher_no, posting_date, posting_time, company + name, item_code, warehouse, voucher_type, voucher_no, posting_date, posting_time, company, creation FROM `tabStock Ledger Entry` WHERE @@ -67,6 +67,7 @@ def execute(): "voucher_type": d.voucher_type, "voucher_no": d.voucher_no, "sle_id": d.name, + "creation": d.creation, }, allow_negative_stock=True, ) diff --git a/erpnext/patches/v14_0/disable_add_row_in_gross_profit.py b/erpnext/patches/v14_0/disable_add_row_in_gross_profit.py new file mode 100644 index 00000000000..d95503bef0a --- /dev/null +++ b/erpnext/patches/v14_0/disable_add_row_in_gross_profit.py @@ -0,0 +1,5 @@ +import frappe + + +def execute(): + frappe.db.set_value("Report", "Gross Profit", "add_total_row", 0) diff --git a/erpnext/patches/v14_0/set_period_start_end_date_in_pcv.py b/erpnext/patches/v14_0/set_period_start_end_date_in_pcv.py new file mode 100644 index 00000000000..8020a286f69 --- /dev/null +++ b/erpnext/patches/v14_0/set_period_start_end_date_in_pcv.py @@ -0,0 +1,17 @@ +# Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and Contributors +# License: MIT. See LICENSE + + +import frappe + + +def execute(): + # nosemgrep + frappe.db.sql( + """ + UPDATE `tabPeriod Closing Voucher` + SET + period_start_date = (select year_start_date from `tabFiscal Year` where name = fiscal_year), + period_end_date = posting_date + """ + ) diff --git a/erpnext/patches/v14_0/single_to_multi_dunning.py b/erpnext/patches/v14_0/single_to_multi_dunning.py index 3b01871d437..98be0204518 100644 --- a/erpnext/patches/v14_0/single_to_multi_dunning.py +++ b/erpnext/patches/v14_0/single_to_multi_dunning.py @@ -66,7 +66,7 @@ def get_accounts_closing_date(): ) # always returns datetime.date period_closing_date = frappe.db.get_value( - "Period Closing Voucher", {"docstatus": 1}, "posting_date", order_by="posting_date desc" + "Period Closing Voucher", {"docstatus": 1}, "period_end_date", order_by="period_end_date desc" ) # Set most recent frozen/closing date as filter diff --git a/erpnext/patches/v14_0/update_closing_balances.py b/erpnext/patches/v14_0/update_closing_balances.py index cfc29c87fa1..2a081329ce3 100644 --- a/erpnext/patches/v14_0/update_closing_balances.py +++ b/erpnext/patches/v14_0/update_closing_balances.py @@ -1,73 +1,117 @@ # Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and Contributors # License: MIT. See LICENSE +import itertools import frappe from erpnext.accounts.doctype.account_closing_balance.account_closing_balance import ( make_closing_entries, ) -from erpnext.accounts.utils import get_fiscal_year +from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import ( + get_accounting_dimensions, +) def execute(): + # clear balances, they will be recalculated frappe.db.truncate("Account Closing Balance") - for company in frappe.get_all("Company", pluck="name"): - i = 0 - company_wise_order = {} - for pcv in frappe.db.get_all( + pcv_list = get_period_closing_vouchers() + + if pcv_list: + gl_entries = get_gl_entries(pcv_list) + + for _, pcvs in itertools.groupby(pcv_list, key=lambda pcv: (pcv.company, pcv.period_start_date)): + process_grouped_pcvs(list(pcvs), gl_entries) + + +def process_grouped_pcvs(pcvs, gl_entries): + pl_account_entries = [] + closing_account_entries = [] + first_pcv = pcvs[0] + + for pcv in pcvs: + pcv_entries = gl_entries.get(pcv.name) or [] + for entry in pcv_entries: + entry["closing_date"] = first_pcv.period_end_date + entry["period_closing_voucher"] = first_pcv.name + entry["voucher_no"] = first_pcv.name + + list_to_update = ( + pl_account_entries if entry.account != pcv.closing_account_head else closing_account_entries + ) + list_to_update.append(entry) + + # hacky!! + if to_cancel := pcvs[1:]: + to_cancel = [pcv.name for pcv in to_cancel] + + # update voucher number + gle_to_update = [entry.name for entry in closing_account_entries + pl_account_entries] + frappe.db.set_value( + "GL Entry", + { + "name": ("in", gle_to_update), + "voucher_no": ("in", to_cancel), + }, + "voucher_no", + first_pcv.name, + update_modified=False, + ) + + # mark as cancelled + frappe.db.set_value( "Period Closing Voucher", - fields=["company", "posting_date", "name"], - filters={"docstatus": 1, "company": company}, - order_by="posting_date", - ): - company_wise_order.setdefault(pcv.company, []) - if pcv.posting_date not in company_wise_order[pcv.company]: - pcv_doc = frappe.get_doc("Period Closing Voucher", pcv.name) - pcv_doc.year_start_date = get_fiscal_year( - pcv.posting_date, pcv.fiscal_year, company=pcv.company - )[1] + {"name": ("in", to_cancel)}, + "docstatus", + 2, + update_modified=False, + ) - # get gl entries against pcv - gl_entries = frappe.db.get_all( - "GL Entry", filters={"voucher_no": pcv.name, "is_cancelled": 0}, fields=["*"] - ) - for entry in gl_entries: - entry["is_period_closing_voucher_entry"] = 1 - entry["closing_date"] = pcv_doc.posting_date - entry["period_closing_voucher"] = pcv_doc.name + pcv_doc = frappe.get_doc("Period Closing Voucher", first_pcv.name) + pcv_doc.pl_accounts_reverse_gle = pl_account_entries + pcv_doc.closing_account_gle = closing_account_entries + closing_entries = pcv_doc.get_account_closing_balances() + make_closing_entries(closing_entries, pcv_doc.name, pcv_doc.company, pcv_doc.period_end_date) - closing_entries = [] - if pcv.posting_date not in company_wise_order[pcv.company]: - # get all gl entries for the year - closing_entries = frappe.db.get_all( - "GL Entry", - filters={ - "is_cancelled": 0, - "voucher_no": ["!=", pcv.name], - "posting_date": ["between", [pcv_doc.year_start_date, pcv.posting_date]], - "is_opening": "No", - "company": company, - }, - fields=["*"], - ) +def get_period_closing_vouchers(): + return frappe.db.get_all( + "Period Closing Voucher", + fields=["name", "closing_account_head", "period_start_date", "period_end_date", "company"], + filters={"docstatus": 1}, + order_by="period_start_date asc, period_end_date desc", + ) - if i == 0: - # add opening entries only for the first pcv - closing_entries += frappe.db.get_all( - "GL Entry", - filters={"is_cancelled": 0, "is_opening": "Yes", "company": company}, - fields=["*"], - ) - for entry in closing_entries: - entry["closing_date"] = pcv_doc.posting_date - entry["period_closing_voucher"] = pcv_doc.name +def get_gl_entries(pcv_list): + gl_entries = frappe.get_all( + "GL Entry", + filters={"voucher_no": ("in", [pcv.name for pcv in pcv_list]), "is_cancelled": 0}, + fields=get_gle_fields(), + update={"is_period_closing_voucher_entry": 1}, + ) - entries = gl_entries + closing_entries + return {k: list(v) for k, v in itertools.groupby(gl_entries, key=lambda gle: gle.voucher_no)} - make_closing_entries(entries, pcv.name, pcv.company, pcv.posting_date) - company_wise_order[pcv.company].append(pcv.posting_date) - i += 1 + +def get_gle_fields(): + return [ + "name", + "company", + "posting_date", + "account", + "account_currency", + "debit", + "credit", + "debit_in_account_currency", + "credit_in_account_currency", + "voucher_no", + # default dimension fields + "cost_center", + "finance_book", + "project", + # accounting dimensions + *get_accounting_dimensions(), + ] diff --git a/erpnext/patches/v14_0/update_currency_exchange_settings_for_frankfurter.py b/erpnext/patches/v14_0/update_currency_exchange_settings_for_frankfurter.py new file mode 100644 index 00000000000..a67c5a26237 --- /dev/null +++ b/erpnext/patches/v14_0/update_currency_exchange_settings_for_frankfurter.py @@ -0,0 +1,11 @@ +import frappe + + +def execute(): + settings = frappe.get_doc("Currency Exchange Settings") + if settings.service_provider != "frankfurter.app": + return + + settings.set_parameters_and_result() + settings.flags.ignore_validate = True + settings.save() diff --git a/erpnext/patches/v14_0/update_posting_datetime.py b/erpnext/patches/v14_0/update_posting_datetime.py new file mode 100644 index 00000000000..cb28193b74b --- /dev/null +++ b/erpnext/patches/v14_0/update_posting_datetime.py @@ -0,0 +1,10 @@ +import frappe + + +def execute(): + frappe.db.sql( + """ + UPDATE `tabStock Ledger Entry` + SET posting_datetime = timestamp(posting_date, posting_time) + """ + ) diff --git a/erpnext/patches/v14_0/update_reports_with_range.py b/erpnext/patches/v14_0/update_reports_with_range.py new file mode 100644 index 00000000000..ccfa4936cfd --- /dev/null +++ b/erpnext/patches/v14_0/update_reports_with_range.py @@ -0,0 +1,39 @@ +import json + +import frappe + +REFERENCE_REPORTS = [ + "Accounts Receivable", + "Accounts Receivable Summary", + "Accounts Payable", + "Accounts Payable Summary", + "Stock Ageing", +] + + +def execute(): + for report in REFERENCE_REPORTS: + update_reference_reports(report) + + +def update_reference_reports(reference_report): + reports = frappe.get_all( + "Report", filters={"reference_report": reference_report}, fields={"json", "name"} + ) + + for report in reports: + update_report_json(report) + update_reference_reports(report.name) + + +def update_report_json(report): + report_json = json.loads(report.json) if report.get("json") else {} + report_filter = report_json.get("filters") + + if not report_filter: + return + + keys_to_pop = [key for key in report_filter if key.startswith("range")] + report_filter["range"] = ", ".join(str(report_filter.pop(key)) for key in keys_to_pop) + + frappe.db.set_value("Report", report.name, "json", json.dumps(report_json)) diff --git a/erpnext/patches/v14_0/update_stock_uom_in_work_order_item.py b/erpnext/patches/v14_0/update_stock_uom_in_work_order_item.py new file mode 100644 index 00000000000..d611065d8f1 --- /dev/null +++ b/erpnext/patches/v14_0/update_stock_uom_in_work_order_item.py @@ -0,0 +1,15 @@ +import frappe + + +def execute(): + frappe.db.sql( + """ + UPDATE + `tabWork Order Item`, `tabItem` + SET + `tabWork Order Item`.stock_uom = `tabItem`.stock_uom + WHERE + `tabWork Order Item`.item_code = `tabItem`.name + AND `tabWork Order Item`.docstatus = 1 + """ + ) diff --git a/erpnext/patches/v15_0/create_advance_payment_ledger_records.py b/erpnext/patches/v15_0/create_advance_payment_ledger_records.py new file mode 100644 index 00000000000..8d247885cab --- /dev/null +++ b/erpnext/patches/v15_0/create_advance_payment_ledger_records.py @@ -0,0 +1,73 @@ +import frappe +from frappe import qb +from frappe.query_builder.custom import ConstantColumn + + +def get_advance_doctypes() -> list: + return frappe.get_hooks("advance_payment_doctypes") + + +def get_payments_with_so_po_reference() -> list: + advance_payment_entries = [] + advance_doctypes = get_advance_doctypes() + per = qb.DocType("Payment Entry Reference") + payments_with_reference = ( + qb.from_(per) + .select(per.parent) + .distinct() + .where(per.reference_doctype.isin(advance_doctypes) & per.docstatus.eq(1)) + .run() + ) + if payments_with_reference: + pe = qb.DocType("Payment Entry") + advance_payment_entries = ( + qb.from_(pe) + .select(ConstantColumn("Payment Entry").as_("doctype")) + .select(pe.name) + .where(pe.name.isin(payments_with_reference) & pe.docstatus.eq(1)) + .run(as_dict=True) + ) + + return advance_payment_entries + + +def get_journals_with_so_po_reference() -> list: + advance_journal_entries = [] + advance_doctypes = get_advance_doctypes() + jea = qb.DocType("Journal Entry Account") + journals_with_reference = ( + qb.from_(jea) + .select(jea.parent) + .distinct() + .where(jea.reference_type.isin(advance_doctypes) & jea.docstatus.eq(1)) + .run() + ) + if journals_with_reference: + je = qb.DocType("Journal Entry") + advance_journal_entries = ( + qb.from_(je) + .select(ConstantColumn("Journal Entry").as_("doctype")) + .select(je.name) + .where(je.name.isin(journals_with_reference) & je.docstatus.eq(1)) + .run(as_dict=True) + ) + + return advance_journal_entries + + +def make_advance_ledger_entries(vouchers: list): + for x in vouchers: + frappe.get_doc(x.doctype, x.name).make_advance_payment_ledger_entries() + + +def execute(): + """ + Description: + Create Advance Payment Ledger Entry for all Payments made against Sales / Purchase Orders + """ + frappe.db.truncate("Advance Payment Ledger Entry") + payment_entries = get_payments_with_so_po_reference() + make_advance_ledger_entries(payment_entries) + + journals = get_journals_with_so_po_reference() + make_advance_ledger_entries(journals) diff --git a/erpnext/patches/v15_0/create_asset_depreciation_schedules_from_assets.py b/erpnext/patches/v15_0/create_asset_depreciation_schedules_from_assets.py index 523b559d734..d4350d8f9a1 100644 --- a/erpnext/patches/v15_0/create_asset_depreciation_schedules_from_assets.py +++ b/erpnext/patches/v15_0/create_asset_depreciation_schedules_from_assets.py @@ -1,74 +1,29 @@ import frappe +from frappe.utils import cstr def execute(): - frappe.reload_doc("assets", "doctype", "Asset Depreciation Schedule") - frappe.reload_doc("assets", "doctype", "Asset Finance Book") - frappe.reload_doc("assets", "doctype", "Asset") - - assets = get_details_of_draft_or_submitted_depreciable_assets() - asset_finance_books_map = get_asset_finance_books_map() - asset_depreciation_schedules_map = get_asset_depreciation_schedules_map() - for asset in assets: - if not asset_depreciation_schedules_map.get(asset.name): + for key, fb_row in asset_finance_books_map.items(): + depreciation_schedules = asset_depreciation_schedules_map.get(key) + if not depreciation_schedules: continue - depreciation_schedules = asset_depreciation_schedules_map[asset.name] + asset_depr_schedule_doc = frappe.new_doc("Asset Depreciation Schedule") + asset_depr_schedule_doc.set_draft_asset_depr_schedule_details(fb_row, fb_row) + asset_depr_schedule_doc.flags.ignore_validate = True + asset_depr_schedule_doc.insert() - for fb_row in asset_finance_books_map[asset.name]: - asset_depr_schedule_doc = frappe.new_doc("Asset Depreciation Schedule") + if fb_row.docstatus == 1: + frappe.db.set_value( + "Asset Depreciation Schedule", + asset_depr_schedule_doc.name, + {"docstatus": 1, "status": "Active"}, + ) - asset_depr_schedule_doc.set_draft_asset_depr_schedule_details(asset, fb_row) - - asset_depr_schedule_doc.insert() - - if asset.docstatus == 1: - asset_depr_schedule_doc.submit() - - depreciation_schedules_of_fb_row = [ - ds for ds in depreciation_schedules if ds["finance_book_id"] == str(fb_row.idx) - ] - - update_depreciation_schedules(depreciation_schedules_of_fb_row, asset_depr_schedule_doc.name) - - -def get_details_of_draft_or_submitted_depreciable_assets(): - asset = frappe.qb.DocType("Asset") - - records = ( - frappe.qb.from_(asset) - .select( - asset.name, - asset.opening_accumulated_depreciation, - asset.gross_purchase_amount, - asset.opening_number_of_booked_depreciations, - asset.docstatus, - ) - .where(asset.calculate_depreciation == 1) - .where(asset.docstatus < 2) - ).run(as_dict=True) - - return records - - -def group_records_by_asset_name(records): - grouped_dict = {} - - for item in records: - key = next(iter(item.keys())) - value = item[key] - - if value not in grouped_dict: - grouped_dict[value] = [] - - del item["asset_name"] - - grouped_dict[value].append(item) - - return grouped_dict + update_depreciation_schedules(depreciation_schedules, asset_depr_schedule_doc.name) def get_asset_finance_books_map(): @@ -90,12 +45,20 @@ def get_asset_finance_books_map(): afb.expected_value_after_useful_life, afb.daily_prorata_based, afb.shift_based, + asset.docstatus, + asset.name, + asset.opening_accumulated_depreciation, + asset.gross_purchase_amount, + asset.opening_number_of_booked_depreciations, ) .where(asset.docstatus < 2) + .where(asset.calculate_depreciation == 1) .orderby(afb.idx) ).run(as_dict=True) - asset_finance_books_map = group_records_by_asset_name(records) + asset_finance_books_map = frappe._dict() + for d in records: + asset_finance_books_map.setdefault((d.asset_name, cstr(d.finance_book)), d) return asset_finance_books_map @@ -111,13 +74,20 @@ def get_asset_depreciation_schedules_map(): .select( asset.name.as_("asset_name"), ds.name, + ds.finance_book, ds.finance_book_id, ) .where(asset.docstatus < 2) + .where(asset.calculate_depreciation == 1) .orderby(ds.idx) ).run(as_dict=True) - asset_depreciation_schedules_map = group_records_by_asset_name(records) + if len(records) > 20000: + frappe.db.auto_commit_on_many_writes = True + + asset_depreciation_schedules_map = frappe._dict() + for d in records: + asset_depreciation_schedules_map.setdefault((d.asset_name, cstr(d.finance_book)), []).append(d) return asset_depreciation_schedules_map diff --git a/erpnext/patches/v15_0/enable_allow_existing_serial_no.py b/erpnext/patches/v15_0/enable_allow_existing_serial_no.py new file mode 100644 index 00000000000..e13adc2b187 --- /dev/null +++ b/erpnext/patches/v15_0/enable_allow_existing_serial_no.py @@ -0,0 +1,6 @@ +import frappe + + +def execute(): + if frappe.get_all("Company", filters={"country": "India"}, limit=1): + frappe.db.set_single_value("Stock Settings", "allow_existing_serial_no", 1) diff --git a/erpnext/patches/v15_0/migrate_checkbox_to_select_for_reconciliation_effect.py b/erpnext/patches/v15_0/migrate_checkbox_to_select_for_reconciliation_effect.py new file mode 100644 index 00000000000..883921cfdf8 --- /dev/null +++ b/erpnext/patches/v15_0/migrate_checkbox_to_select_for_reconciliation_effect.py @@ -0,0 +1,18 @@ +import frappe + + +def execute(): + """ + A New select field 'reconciliation_takes_effect_on' has been added to control Advance Payment Reconciliation dates. + Migrate old checkbox configuration to new select field on 'Company' and 'Payment Entry' + """ + companies = frappe.db.get_all("Company", fields=["name", "reconciliation_takes_effect_on"]) + for x in companies: + new_value = ( + "Advance Payment Date" if x.reconcile_on_advance_payment_date else "Oldest Of Invoice Or Advance" + ) + frappe.db.set_value("Company", x.name, "reconciliation_takes_effect_on", new_value) + + frappe.db.sql( + """update `tabPayment Entry` set advance_reconciliation_takes_effect_on = if(reconcile_on_advance_payment_date = 0, 'Oldest Of Invoice Or Advance', 'Advance Payment Date')""" + ) diff --git a/erpnext/patches/v15_0/recalculate_amount_difference_field.py b/erpnext/patches/v15_0/recalculate_amount_difference_field.py new file mode 100644 index 00000000000..0b7ab2ec4fe --- /dev/null +++ b/erpnext/patches/v15_0/recalculate_amount_difference_field.py @@ -0,0 +1,126 @@ +import frappe +from frappe.query_builder.functions import Sum +from frappe.utils import flt, getdate + +from erpnext.accounts.utils import get_fiscal_year +from erpnext.stock.doctype.purchase_receipt.purchase_receipt import adjust_incoming_rate_for_pr + + +def execute(): + if not frappe.db.get_single_value("Buying Settings", "set_landed_cost_based_on_purchase_invoice_rate"): + return + + for company in frappe.get_all("Company", pluck="name"): + table = frappe.qb.DocType("Purchase Receipt Item") + parent = frappe.qb.DocType("Purchase Receipt") + query = ( + frappe.qb.from_(table) + .join(parent) + .on(table.parent == parent.name) + .select( + table.parent, + table.name, + table.amount, + table.billed_amt, + table.amount_difference_with_purchase_invoice, + table.rate, + table.qty, + parent.conversion_rate, + ) + .where((table.docstatus == 1) & (parent.company == company)) + ) + + posting_date = "2024-04-01" + + # Get the last accounting period end date + accounting_period = frappe.get_all( + "Accounting Period", {"company": company}, ["end_date"], order_by="end_date desc", limit=1 + ) + if ( + accounting_period + and accounting_period[0].end_date + and getdate(accounting_period[0].end_date) > getdate(posting_date) + ): + posting_date = accounting_period[0].end_date + + # Get the last period closing voucher end date + period_closing_voucher = frappe.get_all( + "Period Closing Voucher", + {"company": company, "docstatus": 1}, + ["period_end_date"], + order_by="period_end_date desc", + limit=1, + ) + if ( + period_closing_voucher + and period_closing_voucher[0].period_end_date + and getdate(period_closing_voucher[0].period_end_date) > getdate(posting_date) + ): + posting_date = period_closing_voucher[0].period_end_date + + acc_frozen_upto = frappe.db.get_single_value("Accounts Settings", "acc_frozen_upto") + if acc_frozen_upto and getdate(acc_frozen_upto) > getdate(posting_date): + posting_date = acc_frozen_upto + + stock_frozen_upto = frappe.db.get_single_value("Stock Settings", "stock_frozen_upto") + if stock_frozen_upto and getdate(stock_frozen_upto) > getdate(posting_date): + posting_date = stock_frozen_upto + + try: + fiscal_year = get_fiscal_year(frappe.utils.datetime.date.today()) + except Exception: + return + else: + if fiscal_year and getdate(fiscal_year[1]) > getdate(posting_date): + posting_date = fiscal_year[1] + + query = query.where(parent.posting_date > posting_date) + + if result := query.run(as_dict=True): + item_wise_billed_qty = get_billed_qty_against_purchase_receipt([item.name for item in result]) + + purchase_receipts = set() + precision = frappe.get_precision("Purchase Receipt Item", "amount") + for item in result: + adjusted_amt = 0.0 + + if ( + item.billed_amt is not None + and item.amount is not None + and item_wise_billed_qty.get(item.name) + ): + adjusted_amt = ( + flt(item.billed_amt / item_wise_billed_qty.get(item.name)) - flt(item.rate) + ) * item.qty + adjusted_amt = flt( + adjusted_amt * flt(item.conversion_rate), + precision, + ) + + if adjusted_amt != item.amount_difference_with_purchase_invoice: + frappe.db.set_value( + "Purchase Receipt Item", + item.name, + "amount_difference_with_purchase_invoice", + adjusted_amt, + update_modified=False, + ) + purchase_receipts.add(item.parent) + + for pr in purchase_receipts: + adjust_incoming_rate_for_pr(frappe.get_doc("Purchase Receipt", pr)) + + +def get_billed_qty_against_purchase_receipt(pr_names): + table = frappe.qb.DocType("Purchase Invoice Item") + query = ( + frappe.qb.from_(table) + .select(table.pr_detail, Sum(table.qty).as_("qty")) + .where((table.pr_detail.isin(pr_names)) & (table.docstatus == 1)) + .groupby(table.pr_detail) + ) + invoice_data = query.run(as_list=1) + + if not invoice_data: + return frappe._dict() + return frappe._dict(invoice_data) diff --git a/erpnext/patches/v15_0/rename_field_from_rate_difference_to_amount_difference.py b/erpnext/patches/v15_0/rename_field_from_rate_difference_to_amount_difference.py new file mode 100644 index 00000000000..44c8c49cba8 --- /dev/null +++ b/erpnext/patches/v15_0/rename_field_from_rate_difference_to_amount_difference.py @@ -0,0 +1,17 @@ +import frappe +from frappe.model.utils.rename_field import rename_field + + +def execute(): + frappe.db.set_value( + "DocField", + {"parent": "Purchase Receipt Item", "fieldname": "rate_difference_with_purchase_invoice"}, + "label", + "Amount Difference with Purchase Invoice", + ) + rename_field( + "Purchase Receipt Item", + "rate_difference_with_purchase_invoice", + "amount_difference_with_purchase_invoice", + ) + frappe.clear_cache(doctype="Purchase Receipt Item") diff --git a/erpnext/patches/v15_0/rename_manufacturing_settings_field.py b/erpnext/patches/v15_0/rename_manufacturing_settings_field.py new file mode 100644 index 00000000000..af178753a73 --- /dev/null +++ b/erpnext/patches/v15_0/rename_manufacturing_settings_field.py @@ -0,0 +1,9 @@ +from frappe.model.utils.rename_field import rename_field + + +def execute(): + rename_field( + "Manufacturing Settings", + "set_op_cost_and_scrape_from_sub_assemblies", + "set_op_cost_and_scrap_from_sub_assemblies", + ) diff --git a/erpnext/patches/v15_0/rename_sla_fields.py b/erpnext/patches/v15_0/rename_sla_fields.py new file mode 100644 index 00000000000..1f4fc1be311 --- /dev/null +++ b/erpnext/patches/v15_0/rename_sla_fields.py @@ -0,0 +1,23 @@ +import frappe +from frappe.custom.doctype.custom_field.custom_field import rename_fieldname +from frappe.model.utils.rename_field import rename_field + + +def execute(): + doctypes = frappe.get_all("Service Level Agreement", pluck="document_type", distinct=True) + for doctype in doctypes: + if doctype == "Issue": + continue + + if frappe.db.exists( + "Custom Field", {"name": doctype + "-resolution_by", "fieldname": "resolution_by"} + ): + rename_fieldname(doctype + "-resolution_by", "sla_resolution_by") + + if frappe.db.exists( + "Custom Field", {"name": doctype + "-resolution_date", "fieldname": "resolution_date"} + ): + rename_fieldname(doctype + "-resolution_date", "sla_resolution_date") + + rename_field("Issue", "resolution_by", "sla_resolution_by") + rename_field("Issue", "resolution_date", "sla_resolution_date") diff --git a/erpnext/patches/v15_0/rename_subcontracting_fields.py b/erpnext/patches/v15_0/rename_subcontracting_fields.py new file mode 100644 index 00000000000..a32b4fcb660 --- /dev/null +++ b/erpnext/patches/v15_0/rename_subcontracting_fields.py @@ -0,0 +1,14 @@ +import frappe +from frappe.model.utils.rename_field import rename_field + + +def execute(): + if frappe.db.table_exists("Purchase Order Item") and frappe.db.has_column( + "Purchase Order Item", "sco_qty" + ): + rename_field("Purchase Order Item", "sco_qty", "subcontracted_quantity") + + if frappe.db.table_exists("Subcontracting Order Item") and frappe.db.has_column( + "Subcontracting Order Item", "sc_conversion_factor" + ): + rename_field("Subcontracting Order Item", "sc_conversion_factor", "subcontracting_conversion_factor") diff --git a/erpnext/patches/v15_0/set_difference_amount_in_asset_value_adjustment.py b/erpnext/patches/v15_0/set_difference_amount_in_asset_value_adjustment.py new file mode 100644 index 00000000000..bec344e5c86 --- /dev/null +++ b/erpnext/patches/v15_0/set_difference_amount_in_asset_value_adjustment.py @@ -0,0 +1,10 @@ +import frappe + + +def execute(): + AssetValueAdjustment = frappe.qb.DocType("Asset Value Adjustment") + + frappe.qb.update(AssetValueAdjustment).set( + AssetValueAdjustment.difference_amount, + AssetValueAdjustment.new_asset_value - AssetValueAdjustment.current_asset_value, + ).where(AssetValueAdjustment.docstatus != 2).run() diff --git a/erpnext/patches/v15_0/set_is_exchange_gain_loss_in_payment_entry_deductions.py b/erpnext/patches/v15_0/set_is_exchange_gain_loss_in_payment_entry_deductions.py new file mode 100644 index 00000000000..9ffe272fd5e --- /dev/null +++ b/erpnext/patches/v15_0/set_is_exchange_gain_loss_in_payment_entry_deductions.py @@ -0,0 +1,22 @@ +import frappe + + +def execute(): + default_exchange_gain_loss_accounts = frappe.get_all( + "Company", + filters={"exchange_gain_loss_account": ["!=", ""]}, + pluck="exchange_gain_loss_account", + ) + + if not default_exchange_gain_loss_accounts: + return + + payment_entry = frappe.qb.DocType("Payment Entry") + payment_entry_deduction = frappe.qb.DocType("Payment Entry Deduction") + + frappe.qb.update(payment_entry_deduction).set(payment_entry_deduction.is_exchange_gain_loss, 1).join( + payment_entry, + ).on(payment_entry.name == payment_entry_deduction.parent).where( + (payment_entry.paid_to_account_currency != payment_entry.paid_from_account_currency) + & (payment_entry_deduction.account.isin(default_exchange_gain_loss_accounts)) + ).run() diff --git a/erpnext/patches/v15_0/set_purchase_receipt_row_item_to_capitalization_stock_item.py b/erpnext/patches/v15_0/set_purchase_receipt_row_item_to_capitalization_stock_item.py new file mode 100644 index 00000000000..f1d17d1da4d --- /dev/null +++ b/erpnext/patches/v15_0/set_purchase_receipt_row_item_to_capitalization_stock_item.py @@ -0,0 +1,21 @@ +import frappe + + +def execute(): + # nosemgrep + frappe.db.sql( + """ + UPDATE `tabAsset Capitalization Stock Item` ACSI + JOIN `tabAsset Capitalization` AC + ON ACSI.parent = AC.name + JOIN `tabPurchase Receipt Item` PRI + ON + PRI.item_code = ACSI.item_code + AND PRI.wip_composite_asset = AC.target_asset + SET + ACSI.purchase_receipt_item = PRI.name + WHERE + ACSI.purchase_receipt_item IS NULL + AND AC.docstatus = 1 + """ + ) diff --git a/erpnext/patches/v15_0/sync_auto_reconcile_config.py b/erpnext/patches/v15_0/sync_auto_reconcile_config.py new file mode 100644 index 00000000000..be92ad99536 --- /dev/null +++ b/erpnext/patches/v15_0/sync_auto_reconcile_config.py @@ -0,0 +1,27 @@ +import frappe + +from erpnext.accounts.utils import sync_auto_reconcile_config + + +def execute(): + """ + Set default Cron Interval and Queue size + """ + frappe.db.set_single_value("Accounts Settings", "auto_reconciliation_job_trigger", 15) + frappe.db.set_single_value("Accounts Settings", "reconciliation_queue_size", 5) + + # Create Scheduler Event record if it doesn't exist + if frappe.reload_doc("core", "doctype", "scheduler_event"): + method = "erpnext.accounts.doctype.process_payment_reconciliation.process_payment_reconciliation.trigger_reconciliation_for_queued_docs" + if not frappe.db.get_all( + "Scheduler Event", {"scheduled_against": "Process Payment Reconciliation", "method": method} + ): + frappe.get_doc( + { + "doctype": "Scheduler Event", + "scheduled_against": "Process Payment Reconciliation", + "method": method, + } + ).save() + + sync_auto_reconcile_config(15) diff --git a/erpnext/patches/v15_0/update_asset_status_to_work_in_progress.py b/erpnext/patches/v15_0/update_asset_status_to_work_in_progress.py new file mode 100644 index 00000000000..3ac7f25da15 --- /dev/null +++ b/erpnext/patches/v15_0/update_asset_status_to_work_in_progress.py @@ -0,0 +1,11 @@ +import frappe + + +def execute(): + Asset = frappe.qb.DocType("Asset") + query = ( + frappe.qb.update(Asset) + .set(Asset.status, "Work In Progress") + .where((Asset.docstatus == 0) & (Asset.is_composite_asset == 1)) + ) + query.run() diff --git a/erpnext/patches/v15_0/update_cc_in_process_statement_of_accounts.py b/erpnext/patches/v15_0/update_cc_in_process_statement_of_accounts.py new file mode 100644 index 00000000000..75aa8b9faf1 --- /dev/null +++ b/erpnext/patches/v15_0/update_cc_in_process_statement_of_accounts.py @@ -0,0 +1,16 @@ +import frappe + + +def execute(): + process_statement_of_accounts = frappe.qb.DocType("Process Statement Of Accounts") + + data = ( + frappe.qb.from_(process_statement_of_accounts) + .select(process_statement_of_accounts.name, process_statement_of_accounts.cc_to) + .where(process_statement_of_accounts.cc_to.isnotnull()) + ).run(as_dict=True) + + for d in data: + doc = frappe.get_doc("Process Statement Of Accounts", d.name) + doc.append("cc_to", {"cc": d.cc_to}) + doc.save() diff --git a/erpnext/patches/v15_0/update_invoice_remarks.py b/erpnext/patches/v15_0/update_invoice_remarks.py new file mode 100644 index 00000000000..9146713815f --- /dev/null +++ b/erpnext/patches/v15_0/update_invoice_remarks.py @@ -0,0 +1,149 @@ +import frappe +from frappe import _ + + +def execute(): + update_sales_invoice_remarks() + update_purchase_invoice_remarks() + + +def update_sales_invoice_remarks(): + """ + Update remarks in Sales Invoice. + Some sites may have very large volume of sales invoices. + In such cases, updating documents one by one won't be successful, especially during site migration step. + Refer to the bug report: https://github.com/frappe/erpnext/issues/43634 + In this case, a bulk update must be done. + + Step 1: Update remarks in GL Entries + Step 2: Update remarks in Payment Ledger Entries + Step 3: Update remarks in Sales Invoice - Should be last step + """ + + ### Step 1: Update remarks in GL Entries + update_sales_invoice_gle_remarks() + + ### Step 2: Update remarks in Payment Ledger Entries + update_sales_invoice_ple_remarks() + + ### Step 3: Update remarks in Sales Invoice + update_query = """ + UPDATE `tabSales Invoice` + SET remarks = concat('Against Customer Order ', po_no) + WHERE po_no <> '' AND docstatus = %(docstatus)s and remarks = %(remarks)s + """ + + # Data for update query + values = {"remarks": "No Remarks", "docstatus": 1} + + # Execute query + frappe.db.sql(update_query, values=values, as_dict=0) + + +def update_purchase_invoice_remarks(): + """ + Update remarks in Purchase Invoice. + Some sites may have very large volume of purchase invoices. + In such cases, updating documents one by one wont be successful, especially during site migration step. + Refer to the bug report: https://github.com/frappe/erpnext/issues/43634 + In this case, a bulk update must be done. + + Step 1: Update remarks in GL Entries + Step 2: Update remarks in Payment Ledger Entries + Step 3: Update remarks in Purchase Invoice - Should be last step + """ + + ### Step 1: Update remarks in GL Entries + update_purchase_invoice_gle_remarks() + + ### Step 2: Update remarks in Payment Ledger Entries + update_purchase_invoice_ple_remarks() + + ### Step 3: Update remarks in Purchase Invoice + update_query = """ + UPDATE `tabPurchase Invoice` + SET remarks = concat('Against Supplier Invoice ', bill_no) + WHERE bill_no <> '' AND docstatus = %(docstatus)s and remarks = %(remarks)s + """ + + # Data for update query + values = {"remarks": "No Remarks", "docstatus": 1} + + # Execute query + frappe.db.sql(update_query, values=values, as_dict=0) + + +def update_sales_invoice_gle_remarks(): + ## Update query to update GL Entry - Updates all entries which are for Sales Invoice with No Remarks + update_query = """ + UPDATE + `tabGL Entry` as gle + INNER JOIN `tabSales Invoice` as si + ON gle.voucher_type = 'Sales Invoice' AND gle.voucher_no = si.name AND gle.remarks = %(remarks)s + SET + gle.remarks = concat('Against Customer Order ', si.po_no) + WHERE si.po_no <> '' AND si.docstatus = %(docstatus)s and si.remarks = %(remarks)s + """ + + # Data for update query + values = {"remarks": "No Remarks", "docstatus": 1} + + # Execute query + frappe.db.sql(update_query, values=values, as_dict=0) + + +def update_sales_invoice_ple_remarks(): + ## Update query to update Payment Ledger Entry - Updates all entries which are for Sales Invoice with No Remarks + update_query = """ + UPDATE + `tabPayment Ledger Entry` as ple + INNER JOIN `tabSales Invoice` as si + ON ple.voucher_type = 'Sales Invoice' AND ple.voucher_no = si.name AND ple.remarks = %(remarks)s + SET + ple.remarks = concat('Against Customer Order ', si.po_no) + WHERE si.po_no <> '' AND si.docstatus = %(docstatus)s and si.remarks = %(remarks)s + """ + + ### Data for update query + values = {"remarks": "No Remarks", "docstatus": 1} + + ### Execute query + frappe.db.sql(update_query, values=values, as_dict=0) + + +def update_purchase_invoice_gle_remarks(): + ### Query to update GL Entry - Updates all entries which are for Purchase Invoice with No Remarks + update_query = """ + UPDATE + `tabGL Entry` as gle + INNER JOIN `tabPurchase Invoice` as pi + ON gle.voucher_type = 'Purchase Invoice' AND gle.voucher_no = pi.name AND gle.remarks = %(remarks)s + SET + gle.remarks = concat('Against Supplier Invoice ', pi.bill_no) + WHERE pi.bill_no <> '' AND pi.docstatus = %(docstatus)s and pi.remarks = %(remarks)s + """ + + ### Data for update query + values = {"remarks": "No Remarks", "docstatus": 1} + + ### Execute query + frappe.db.sql(update_query, values=values, as_dict=0) + + +def update_purchase_invoice_ple_remarks(): + ### Query to update Payment Ledger Entry - Updates all entries which are for Purchase Invoice with No Remarks + update_query = """ + UPDATE + `tabPayment Ledger Entry` as ple + INNER JOIN `tabPurchase Invoice` as pi + ON ple.voucher_type = 'Purchase Invoice' AND ple.voucher_no = pi.name AND ple.remarks = %(remarks)s + SET + ple.remarks = concat('Against Supplier Invoice ', pi.bill_no) + WHERE pi.bill_no <> '' AND pi.docstatus = %(docstatus)s and pi.remarks = %(remarks)s + """ + + ### Data for update query + values = {"remarks": "No Remarks", "docstatus": 1} + + ### Execute query + frappe.db.sql(update_query, values=values, as_dict=0) diff --git a/erpnext/patches/v15_0/update_payment_schedule_fields_in_invoices.py b/erpnext/patches/v15_0/update_payment_schedule_fields_in_invoices.py new file mode 100644 index 00000000000..74d8ac38f72 --- /dev/null +++ b/erpnext/patches/v15_0/update_payment_schedule_fields_in_invoices.py @@ -0,0 +1,18 @@ +import frappe +from frappe.query_builder import DocType + + +def execute(): + invoice_types = ["Sales Invoice", "Purchase Invoice"] + for invoice_type in invoice_types: + invoice = DocType(invoice_type) + invoice_details = frappe.qb.from_(invoice).select(invoice.conversion_rate, invoice.name) + update_payment_schedule(invoice_details) + + +def update_payment_schedule(invoice_details): + ps = DocType("Payment Schedule") + + frappe.qb.update(ps).join(invoice_details).on(ps.parent == invoice_details.name).set( + ps.base_paid_amount, ps.paid_amount * invoice_details.conversion_rate + ).set(ps.base_outstanding, ps.outstanding * invoice_details.conversion_rate).run() diff --git a/erpnext/patches/v15_0/update_query_report.py b/erpnext/patches/v15_0/update_query_report.py new file mode 100644 index 00000000000..0efdf8af2c3 --- /dev/null +++ b/erpnext/patches/v15_0/update_query_report.py @@ -0,0 +1,25 @@ +import frappe + + +def execute(): + reports = [ + "Accounts Payable", + "Accounts Payable Summary", + "Purchase Register", + "Item-wise Purchase Register", + "Purchase Order Analysis", + "Received Items To Be Billed", + "Supplier Ledger Summary", + ] + frappe.db.set_value( + "Workspace Link", + { + "parent": "Payables", + "link_type": "Report", + "type": "Link", + "link_to": ["in", reports], + "is_query_report": 0, + }, + "is_query_report", + 1, + ) diff --git a/erpnext/patches/v15_0/update_sub_voucher_type_in_gl_entries.py b/erpnext/patches/v15_0/update_sub_voucher_type_in_gl_entries.py new file mode 100644 index 00000000000..7160a6ba87d --- /dev/null +++ b/erpnext/patches/v15_0/update_sub_voucher_type_in_gl_entries.py @@ -0,0 +1,57 @@ +import frappe + + +def execute(): + update_purchase_invoices() + update_sales_invoices() + update_sales_debit_notes() + + +def update_purchase_invoices(): + invoices = frappe.get_all( + "Purchase Invoice", + filters={"docstatus": 1, "is_return": 0}, + pluck="name", + ) + + if not invoices: + return + + update_gl_entry(doctype="Purchase Invoice", invoices=invoices, value="Purchase Invoice") + + +def update_sales_invoices(): + invoices = frappe.get_all( + "Sales Invoice", + filters={"docstatus": 1, "is_return": 0, "is_debit_note": 0}, + pluck="name", + ) + if not invoices: + return + + update_gl_entry(doctype="Sales Invoice", invoices=invoices, value="Sales Invoice") + + +def update_sales_debit_notes(): + invoices = frappe.get_all( + "Sales Invoice", + filters={"docstatus": 1, "is_debit_note": 1}, + pluck="name", + ) + + if not invoices: + return + + update_gl_entry(doctype="Sales Invoice", invoices=invoices, value="Debit Note") + + +def update_gl_entry(doctype, invoices, value): + gl_entry = frappe.qb.DocType("GL Entry") + ( + frappe.qb.update(gl_entry) + .set("voucher_subtype", value) + .where(gl_entry.voucher_subtype.isnotnull()) + .where(gl_entry.voucher_no.isin(invoices)) + .where(gl_entry.voucher_type == doctype) + .run() + ) diff --git a/erpnext/patches/v15_0/update_task_assignee_email_field_in_asset_maintenance_log.py b/erpnext/patches/v15_0/update_task_assignee_email_field_in_asset_maintenance_log.py new file mode 100644 index 00000000000..a6eda9c2e17 --- /dev/null +++ b/erpnext/patches/v15_0/update_task_assignee_email_field_in_asset_maintenance_log.py @@ -0,0 +1,18 @@ +import frappe +from frappe.query_builder import DocType + + +def execute(): + if frappe.db.has_column("Asset Maintenance Log", "task_assignee_email"): + asset_maintenance_log = DocType("Asset Maintenance Log") + asset_maintenance_task = DocType("Asset Maintenance Task") + try: + ( + frappe.qb.update(asset_maintenance_log) + .set(asset_maintenance_log.task_assignee_email, asset_maintenance_task.assign_to) + .join(asset_maintenance_task) + .on(asset_maintenance_log.task == asset_maintenance_task.name) + .run() + ) + except Exception: + frappe.log_error("Failed to update Task Assignee Email Field.") diff --git a/erpnext/projects/doctype/project/project.js b/erpnext/projects/doctype/project/project.js index d03ab786cc1..45baff562ce 100644 --- a/erpnext/projects/doctype/project/project.js +++ b/erpnext/projects/doctype/project/project.js @@ -45,6 +45,7 @@ frappe.ui.form.on("Project", { frm.set_query("sales_order", function () { var filters = { project: ["in", frm.doc.__islocal ? [""] : [frm.doc.name, ""]], + company: frm.doc.company, }; if (frm.doc.customer) { @@ -146,29 +147,32 @@ frappe.ui.form.on("Project", { set_project_status_button: function (frm) { frm.add_custom_button( __("Set Project Status"), - () => { - let d = new frappe.ui.Dialog({ - title: __("Set Project Status"), - fields: [ - { - fieldname: "status", - fieldtype: "Select", - label: "Status", - reqd: 1, - options: "Completed\nCancelled", - }, - ], - primary_action: function () { - frm.events.set_status(frm, d.get_values().status); - d.hide(); - }, - primary_action_label: __("Set Project Status"), - }).show(); - }, + () => frm.events.get_project_status_dialog(frm).show(), __("Actions") ); }, + get_project_status_dialog: function (frm) { + const dialog = new frappe.ui.Dialog({ + title: __("Set Project Status"), + fields: [ + { + fieldname: "status", + fieldtype: "Select", + label: "Status", + reqd: 1, + options: "Completed\nCancelled", + }, + ], + primary_action: function () { + frm.events.set_status(frm, dialog.get_values().status); + dialog.hide(); + }, + primary_action_label: __("Set Project Status"), + }); + return dialog; + }, + create_duplicate: function (frm) { return new Promise((resolve) => { frappe.prompt("Project Name", (data) => { @@ -187,7 +191,7 @@ frappe.ui.form.on("Project", { }, set_status: function (frm, status) { - frappe.confirm(__("Set Project and all Tasks to status {0}?", [status.bold()]), () => { + frappe.confirm(__("Set Project and all Tasks to status {0}?", [__(status).bold()]), () => { frappe .xcall("erpnext.projects.doctype.project.project.set_project_status", { project: frm.doc.name, diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py index b09735e5644..f7653d92d63 100644 --- a/erpnext/projects/doctype/project/project.py +++ b/erpnext/projects/doctype/project/project.py @@ -9,7 +9,7 @@ from frappe.desk.reportview import get_match_cond from frappe.model.document import Document from frappe.query_builder import Interval from frappe.query_builder.functions import Count, CurDate, Date, Sum, UnixTimestamp -from frappe.utils import add_days, flt, get_datetime, get_time, get_url, nowtime, today +from frappe.utils import add_days, flt, get_datetime, get_link_to_form, get_time, get_url, nowtime, today from frappe.utils.user import is_website_user from erpnext import get_default_company @@ -86,21 +86,19 @@ class Project(Document): ), ) - self.update_costing() - def before_print(self, settings=None): self.onload() def validate(self): if not self.is_new(): - self.copy_from_template() + self.copy_from_template() # nosemgrep self.send_welcome_email() self.update_costing() self.update_percent_complete() self.validate_from_to_dates("expected_start_date", "expected_end_date") self.validate_from_to_dates("actual_start_date", "actual_end_date") - def copy_from_template(self): + def copy_from_template(self): # nosemgrep """ Copy tasks from template """ @@ -205,7 +203,7 @@ class Project(Document): self.db_update() def after_insert(self): - self.copy_from_template() + self.copy_from_template() # nosemgrep if self.sales_order: frappe.db.set_value("Sales Order", self.sales_order, "project", self.name) @@ -213,6 +211,13 @@ class Project(Document): frappe.db.set_value("Sales Order", {"project": self.name}, "project", "") def update_percent_complete(self): + if self.status == "Completed": + if ( + len(frappe.get_all("Task", dict(project=self.name))) == 0 + ): # A project without tasks should be able to complete + self.percent_complete_method = "Manual" + self.percent_complete = 100 + if self.percent_complete_method == "Manual": if self.status == "Completed": self.percent_complete = 100 @@ -317,37 +322,50 @@ class Project(Document): self.total_sales_amount = total_sales_amount and total_sales_amount[0][0] or 0 def update_billed_amount(self): + self.total_billed_amount = self.get_billed_amount_from_parent() + self.get_billed_amount_from_child() + + def get_billed_amount_from_parent(self): total_billed_amount = frappe.db.sql( - """select sum(base_net_total) - from `tabSales Invoice` where project = %s and docstatus=1""", + """select sum(base_net_amount) + from `tabSales Invoice` si join `tabSales Invoice Item` si_item on si_item.parent = si.name + where si_item.project is null + and si.project is not null + and si.project = %s + and si.docstatus = 1""", self.name, ) - self.total_billed_amount = total_billed_amount and total_billed_amount[0][0] or 0 + return total_billed_amount and total_billed_amount[0][0] or 0 + + def get_billed_amount_from_child(self): + total_billed_amount = frappe.db.sql( + """select sum(base_net_amount) + from `tabSales Invoice Item` + where project = %s + and docstatus = 1""", + self.name, + ) + + return total_billed_amount and total_billed_amount[0][0] or 0 def after_rename(self, old_name, new_name, merge=False): if old_name == self.copied_from: frappe.db.set_value("Project", new_name, "copied_from", new_name) def send_welcome_email(self): - url = get_url(f"/project/?name={self.name}") - messages = ( - _("You have been invited to collaborate on the project: {0}").format(self.name), - url, - _("Join"), - ) + label = f"{self.project_name} ({self.name})" + url = get_link_to_form(self.doctype, self.name, label) - content = """ -

{0}.

-

{2}

- """ + content = "

{}

".format( + _("You have been invited to collaborate on the project: {0}").format(url) + ) for user in self.users: if user.welcome_email_sent == 0: frappe.sendmail( user.user, subject=_("Project Collaboration Invitation"), - content=content.format(*messages), + content=content, ) user.welcome_email_sent = 1 @@ -669,31 +687,8 @@ def update_project_sales_billing(): return # Else simply fallback to Daily - exists_query = "(SELECT 1 from `tab{doctype}` where docstatus = 1 and project = `tabProject`.name)" - project_map = {} - for project_details in frappe.db.sql( - """ - SELECT name, 1 as order_exists, null as invoice_exists from `tabProject` where - exists {order_exists} - union - SELECT name, null as order_exists, 1 as invoice_exists from `tabProject` where - exists {invoice_exists} - """.format( - order_exists=exists_query.format(doctype="Sales Order"), - invoice_exists=exists_query.format(doctype="Sales Invoice"), - ), - as_dict=True, - ): - project = project_map.setdefault( - project_details.name, frappe.get_doc("Project", project_details.name) - ) - if project_details.order_exists: - project.update_sales_amount() - if project_details.invoice_exists: - project.update_billed_amount() - - for project in project_map.values(): - project.save() + for project in frappe.get_all("Project", filters={"status": ["!=", "Cancelled"]}): + frappe.get_doc("Project", project.name).save() @frappe.whitelist() @@ -744,7 +739,6 @@ def get_users_email(doc): def calculate_total_purchase_cost(project: str | None = None): if project: pitem = qb.DocType("Purchase Invoice Item") - frappe.qb.DocType("Purchase Invoice Item") total_purchase_cost = ( qb.from_(pitem) .select(Sum(pitem.base_net_amount)) diff --git a/erpnext/projects/doctype/project/test_project.py b/erpnext/projects/doctype/project/test_project.py index 1b7460f7a2a..e5996c2da9d 100644 --- a/erpnext/projects/doctype/project/test_project.py +++ b/erpnext/projects/doctype/project/test_project.py @@ -199,6 +199,34 @@ class TestProject(FrappeTestCase): if not pt.is_group: self.assertIsNotNone(pt.parent_task) + def test_project_having_no_tasks_complete(self): + project_name = "Test Project - No Tasks Completion" + frappe.db.sql(""" delete from tabTask where project = %s """, project_name) + frappe.delete_doc("Project", project_name) + + project = frappe.get_doc( + { + "doctype": "Project", + "project_name": project_name, + "status": "Open", + "expected_start_date": nowdate(), + "company": "_Test Company", + } + ).insert() + + tasks = frappe.get_all( + "Task", + ["subject", "exp_end_date", "depends_on_tasks", "name", "parent_task"], + dict(project=project.name), + order_by="creation asc", + ) + + self.assertEqual(project.status, "Open") + self.assertEqual(len(tasks), 0) + project.status = "Completed" + project.save() + self.assertEqual(project.status, "Completed") + def get_project(name, template): project = frappe.get_doc( diff --git a/erpnext/projects/doctype/project/test_records.json b/erpnext/projects/doctype/project/test_records.json index 567f359b50d..1482336631b 100644 --- a/erpnext/projects/doctype/project/test_records.json +++ b/erpnext/projects/doctype/project/test_records.json @@ -1,6 +1,7 @@ [ { "project_name": "_Test Project", - "status": "Open" + "status": "Open", + "company": "_Test Company" } ] \ No newline at end of file diff --git a/erpnext/projects/doctype/project_user/project_user.json b/erpnext/projects/doctype/project_user/project_user.json index 2f452cc2d75..e82bbfab7bf 100644 --- a/erpnext/projects/doctype/project_user/project_user.json +++ b/erpnext/projects/doctype/project_user/project_user.json @@ -12,6 +12,7 @@ "full_name", "welcome_email_sent", "view_attachments", + "hide_timesheets", "section_break_5", "project_status" ], @@ -64,6 +65,13 @@ "in_list_view": 1, "label": "View attachments" }, + { + "columns": 2, + "default": "0", + "fieldname": "hide_timesheets", + "fieldtype": "Check", + "label": "Hide timesheets" + }, { "fieldname": "section_break_5", "fieldtype": "Section Break" diff --git a/erpnext/projects/doctype/projects_settings/projects_settings.json b/erpnext/projects/doctype/projects_settings/projects_settings.json index 7fa1558a76f..2a840b4275c 100644 --- a/erpnext/projects/doctype/projects_settings/projects_settings.json +++ b/erpnext/projects/doctype/projects_settings/projects_settings.json @@ -1,189 +1,69 @@ { - "allow_copy": 0, - "allow_guest_to_view": 0, - "allow_import": 0, - "allow_rename": 0, - "beta": 0, - "creation": "2018-02-21 16:42:13.882879", - "custom": 0, - "docstatus": 0, - "doctype": "DocType", - "document_type": "", - "editable_grid": 1, - "engine": "InnoDB", + "actions": [], + "creation": "2018-02-21 16:42:13.882879", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "timesheet_sb", + "ignore_workstation_time_overlap", + "ignore_user_time_overlap", + "ignore_employee_time_overlap", + "fetch_timesheet_in_sales_invoice" + ], "fields": [ { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "timesheet_sb", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Timesheets", - "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 - }, + "fieldname": "timesheet_sb", + "fieldtype": "Section Break", + "label": "Timesheets" + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "default": "0", - "fieldname": "ignore_workstation_time_overlap", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Ignore Workstation Time Overlap", - "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 - }, + "default": "0", + "fieldname": "ignore_workstation_time_overlap", + "fieldtype": "Check", + "label": "Ignore Workstation Time Overlap" + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "default": "0", - "fieldname": "ignore_user_time_overlap", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Ignore User Time Overlap", - "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 - }, + "default": "0", + "fieldname": "ignore_user_time_overlap", + "fieldtype": "Check", + "label": "Ignore User Time Overlap" + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "default": "0", - "fieldname": "ignore_employee_time_overlap", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Ignore Employee Time Overlap", - "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 + "default": "0", + "fieldname": "ignore_employee_time_overlap", + "fieldtype": "Check", + "label": "Ignore Employee Time Overlap" + }, + { + "default": "0", + "fieldname": "fetch_timesheet_in_sales_invoice", + "fieldtype": "Check", + "label": "Fetch Timesheet in Sales Invoice" } - ], - "has_web_view": 0, - "hide_heading": 0, - "hide_toolbar": 0, - "idx": 0, - "image_view": 0, - "in_create": 0, - "is_submittable": 0, - "issingle": 1, - "istable": 0, - "max_attachments": 0, - "modified": "2018-02-21 16:42:42.357209", - "modified_by": "Administrator", - "module": "Projects", - "name": "Projects Settings", - "name_case": "", - "owner": "Administrator", + ], + "issingle": 1, + "links": [], + "modified": "2025-02-25 22:48:03.164862", + "modified_by": "Administrator", + "module": "Projects", + "name": "Projects Settings", + "owner": "Administrator", "permissions": [ { - "amend": 0, - "apply_user_permissions": 0, - "cancel": 0, - "create": 1, - "delete": 1, - "email": 1, - "export": 0, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 0, - "role": "System Manager", - "set_user_permissions": 0, - "share": 1, - "submit": 0, + "create": 1, + "delete": 1, + "email": 1, + "print": 1, + "read": 1, + "role": "System Manager", + "share": 1, "write": 1 } - ], - "quick_entry": 1, - "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 + ], + "quick_entry": 1, + "sort_field": "modified", + "sort_order": "DESC", + "states": [], + "track_changes": 1 } \ No newline at end of file diff --git a/erpnext/projects/doctype/projects_settings/projects_settings.py b/erpnext/projects/doctype/projects_settings/projects_settings.py index 9d940184d98..4b1530fee8e 100644 --- a/erpnext/projects/doctype/projects_settings/projects_settings.py +++ b/erpnext/projects/doctype/projects_settings/projects_settings.py @@ -14,6 +14,7 @@ class ProjectsSettings(Document): if TYPE_CHECKING: from frappe.types import DF + fetch_timesheet_in_sales_invoice: DF.Check ignore_employee_time_overlap: DF.Check ignore_user_time_overlap: DF.Check ignore_workstation_time_overlap: DF.Check diff --git a/erpnext/projects/doctype/task/task.py b/erpnext/projects/doctype/task/task.py index c03c99b25d5..5eae55d71c5 100755 --- a/erpnext/projects/doctype/task/task.py +++ b/erpnext/projects/doctype/task/task.py @@ -153,14 +153,14 @@ class Task(NestedSet): def validate_parent_template_task(self): if self.parent_task: if not frappe.db.get_value("Task", self.parent_task, "is_template"): - parent_task_format = f"""{self.parent_task}""" + parent_task_format = f"""{self.parent_task}""" frappe.throw(_("Parent Task {0} is not a Template Task").format(parent_task_format)) def validate_depends_on_tasks(self): if self.depends_on: for task in self.depends_on: if not frappe.db.get_value("Task", task.task, "is_template"): - dependent_task_format = f"""{task.task}""" + dependent_task_format = f"""{task.task}""" frappe.throw(_("Dependent Task {0} is not a Template Task").format(dependent_task_format)) def validate_completed_on(self): diff --git a/erpnext/projects/doctype/timesheet/test_timesheet.py b/erpnext/projects/doctype/timesheet/test_timesheet.py index da042f36aef..1e2688daf4d 100644 --- a/erpnext/projects/doctype/timesheet/test_timesheet.py +++ b/erpnext/projects/doctype/timesheet/test_timesheet.py @@ -5,6 +5,7 @@ import datetime import unittest import frappe +from frappe.tests.utils import change_settings from frappe.utils import add_to_date, now_datetime, nowdate from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice @@ -53,6 +54,7 @@ class TestTimesheet(unittest.TestCase): self.assertEqual(item.qty, 2.00) self.assertEqual(item.rate, 50.00) + @change_settings("Projects Settings", {"fetch_timesheet_in_sales_invoice": 1}) def test_timesheet_billing_based_on_project(self): emp = make_employee("test_employee_6@salary.com") project = frappe.get_value("Project", {"project_name": "_Test Project"}) @@ -62,6 +64,7 @@ class TestTimesheet(unittest.TestCase): ) sales_invoice = create_sales_invoice(do_not_save=True) sales_invoice.project = project + sales_invoice.add_timesheet_data() sales_invoice.submit() ts = frappe.get_doc("Timesheet", timesheet.name) diff --git a/erpnext/projects/doctype/timesheet/timesheet.js b/erpnext/projects/doctype/timesheet/timesheet.js index 9aba75b3ce9..168b891e98c 100644 --- a/erpnext/projects/doctype/timesheet/timesheet.js +++ b/erpnext/projects/doctype/timesheet/timesheet.js @@ -58,10 +58,10 @@ frappe.ui.form.on("Timesheet", { } if (frm.doc.docstatus < 1) { - let button = "Start Timer"; + let button = __("Start Timer"); $.each(frm.doc.time_logs || [], function (i, row) { if (row.from_time <= frappe.datetime.now_datetime() && !row.completed) { - button = "Resume Timer"; + button = __("Resume Timer"); } }); diff --git a/erpnext/projects/doctype/timesheet/timesheet.py b/erpnext/projects/doctype/timesheet/timesheet.py index fb15b507efb..09fdfad66ba 100644 --- a/erpnext/projects/doctype/timesheet/timesheet.py +++ b/erpnext/projects/doctype/timesheet/timesheet.py @@ -22,6 +22,46 @@ class OverWorkLoggedError(frappe.ValidationError): class Timesheet(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 + + from erpnext.projects.doctype.timesheet_detail.timesheet_detail import TimesheetDetail + + amended_from: DF.Link | None + base_total_billable_amount: DF.Currency + base_total_billed_amount: DF.Currency + base_total_costing_amount: DF.Currency + company: DF.Link | None + currency: DF.Link | None + customer: DF.Link | None + department: DF.Link | None + employee: DF.Link | None + employee_name: DF.Data | None + end_date: DF.Date | None + exchange_rate: DF.Float + naming_series: DF.Literal["TS-.YYYY.-"] + note: DF.TextEditor | None + parent_project: DF.Link | None + per_billed: DF.Percent + sales_invoice: DF.Link | None + start_date: DF.Date | None + status: DF.Literal["Draft", "Submitted", "Billed", "Payslip", "Completed", "Cancelled"] + time_logs: DF.Table[TimesheetDetail] + title: DF.Data | None + total_billable_amount: DF.Currency + total_billable_hours: DF.Float + total_billed_amount: DF.Currency + total_billed_hours: DF.Float + total_costing_amount: DF.Currency + total_hours: DF.Float + user: DF.Link | None + # end: auto-generated types + def validate(self): self.set_status() self.validate_dates() @@ -126,13 +166,17 @@ class Timesheet(Document): if data.task and data.task not in tasks: task = frappe.get_doc("Task", data.task) task.update_time_and_costing() - task.save() + task.save(ignore_permissions=True) tasks.append(data.task) - elif data.project and data.project not in projects: - frappe.get_doc("Project", data.project).update_project() + if data.project and data.project not in projects: projects.append(data.project) + for project in projects: + project_doc = frappe.get_doc("Project", project) + project_doc.update_project() + project_doc.save(ignore_permissions=True) + def validate_dates(self): for data in self.time_logs: if data.from_time and data.to_time and time_diff_in_hours(data.to_time, data.from_time) < 0: diff --git a/erpnext/projects/report/delayed_tasks_summary/delayed_tasks_summary.py b/erpnext/projects/report/delayed_tasks_summary/delayed_tasks_summary.py index 766e40e319c..dc3da259662 100644 --- a/erpnext/projects/report/delayed_tasks_summary/delayed_tasks_summary.py +++ b/erpnext/projects/report/delayed_tasks_summary/delayed_tasks_summary.py @@ -77,7 +77,7 @@ def get_chart_data(data): charts = { "data": { "labels": [_("On Track"), _("Delayed")], - "datasets": [{"name": "Delayed", "values": [on_track, delay]}], + "datasets": [{"name": _("Delayed"), "values": [on_track, delay]}], }, "type": "percentage", "colors": ["#84D5BA", "#CB4B5F"], diff --git a/erpnext/projects/report/project_summary/project_summary.py b/erpnext/projects/report/project_summary/project_summary.py index 7a35fd236a0..261517f02c6 100644 --- a/erpnext/projects/report/project_summary/project_summary.py +++ b/erpnext/projects/report/project_summary/project_summary.py @@ -15,6 +15,7 @@ def execute(filters=None): filters=filters, fields=[ "name", + "project_name", "status", "percent_complete", "expected_start_date", @@ -48,6 +49,11 @@ def get_columns(): "options": "Project", "width": 200, }, + { + "fieldname": "project_name", + "label": _("Project Name"), + "width": 200, + }, { "fieldname": "project_type", "label": _("Type"), @@ -82,7 +88,7 @@ def get_chart_data(data): overdue = [] for project in data: - labels.append(project.name) + labels.append(project.project_name) total.append(project.total_tasks) completed.append(project.completed_tasks) overdue.append(project.overdue_tasks) diff --git a/erpnext/projects/workspace/projects/projects.json b/erpnext/projects/workspace/projects/projects.json index 94ae9c04a40..19c94bc8f90 100644 --- a/erpnext/projects/workspace/projects/projects.json +++ b/erpnext/projects/workspace/projects/projects.json @@ -210,7 +210,7 @@ "doc_view": "List", "label": "Learn Project Management", "type": "URL", - "url": "https://frappe.school/courses/project-management?utm_source=in_app" + "url": "https://school.frappe.io/lms/courses/project-management?utm_source=in_app" }, { "color": "Blue", @@ -245,4 +245,4 @@ } ], "title": "Projects" -} \ No newline at end of file +} diff --git a/erpnext/public/js/bank_reconciliation_tool/data_table_manager.js b/erpnext/public/js/bank_reconciliation_tool/data_table_manager.js index 4aa087e99cf..ad5fd528cda 100644 --- a/erpnext/public/js/bank_reconciliation_tool/data_table_manager.js +++ b/erpnext/public/js/bank_reconciliation_tool/data_table_manager.js @@ -16,7 +16,7 @@ erpnext.accounts.bank_reconciliation.DataTableManager = class DataTableManager { } make_dt() { - var me = this; + const me = this; frappe.call({ method: "erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool.get_bank_transactions", args: { @@ -193,6 +193,7 @@ erpnext.accounts.bank_reconciliation.DataTableManager = class DataTableManager { args: { bank_account: this.bank_account, till_date: this.bank_statement_to_date, + company: this.company, }, callback: (response) => (this.cleared_balance = response.message), }); diff --git a/erpnext/public/js/bom_configurator/bom_configurator.bundle.js b/erpnext/public/js/bom_configurator/bom_configurator.bundle.js index 5061be9d20a..6d24751792c 100644 --- a/erpnext/public/js/bom_configurator/bom_configurator.bundle.js +++ b/erpnext/public/js/bom_configurator/bom_configurator.bundle.js @@ -25,6 +25,9 @@ class BOMConfigurator { }; frappe.views.trees["BOM Configurator"] = new frappe.views.TreeView(options); + let node = frappe.views.trees["BOM Configurator"].tree.root_node; + frappe.views.trees["BOM Configurator"].tree.show_toolbar(node); + frappe.views.trees["BOM Configurator"].tree.load_children(node, true); this.tree_view = frappe.views.trees["BOM Configurator"]; } @@ -137,17 +140,17 @@ class BOMConfigurator { btnClass: "hidden-xs", }, { - label: __("Expand All"), + label: __("Collapse All"), click: function (node) { let view = frappe.views.trees["BOM Configurator"]; if (!node.expanded) { view.tree.load_children(node, true); $(node.parent[0]).find(".tree-children").show(); - node.$toolbar.find(".expand-all-btn").html("Collapse All"); + node.$toolbar.find(".expand-all-btn").html(__("Collapse All")); } else { node.$tree_link.trigger("click"); - node.$toolbar.find(".expand-all-btn").html("Expand All"); + node.$toolbar.find(".expand-all-btn").html(__("Expand All")); } }, condition: function (node) { @@ -187,10 +190,10 @@ class BOMConfigurator { if (!node.expanded) { view.tree.load_children(node, true); $(node.parent[0]).find(".tree-children").show(); - node.$toolbar.find(".expand-all-btn").html("Collapse All"); + node.$toolbar.find(".expand-all-btn").html(__("Collapse All")); } else { node.$tree_link.trigger("click"); - node.$toolbar.find(".expand-all-btn").html("Expand All"); + node.$toolbar.find(".expand-all-btn").html(__("Expand All")); } }, condition: function (node) { @@ -207,6 +210,13 @@ class BOMConfigurator { [ { label: __("Item"), fieldname: "item_code", fieldtype: "Link", options: "Item", reqd: 1 }, { label: __("Qty"), fieldname: "qty", default: 1.0, fieldtype: "Float", reqd: 1 }, + { + label: __("Allow Alternative Item"), + fieldname: "allow_alternative_item", + default: 1.0, + fieldtype: "Check", + reqd: 1, + }, ], (data) => { if (!node.data.parent_id) { @@ -221,6 +231,7 @@ class BOMConfigurator { item_code: data.item_code, fg_reference_id: node.data.name || this.frm.doc.name, qty: data.qty, + allow_alternative_item: data.allow_alternative_item, }, callback: (r) => { view.events.load_tree(r, node); @@ -255,6 +266,7 @@ class BOMConfigurator { fg_item: node.data.value, fg_reference_id: node.data.name || this.frm.doc.name, bom_item: bom_item, + allow_alternative_item: bom_item.allow_alternative_item, }, callback: (r) => { view.events.load_tree(r, node); @@ -275,6 +287,14 @@ class BOMConfigurator { reqd: 1, read_only: read_only, }, + { + label: __("Allow Alternative Item"), + fieldname: "allow_alternative_item", + default: 1.0, + fieldtype: "Check", + reqd: 1, + read_only: read_only, + }, { fieldtype: "Column Break" }, { label: __("Qty"), @@ -283,6 +303,13 @@ class BOMConfigurator { fieldtype: "Float", reqd: 1, read_only: read_only, + change() { + this.layout.fields_dict.items.grid.data.forEach((row) => { + row.qty = flt(this.value); + }); + + this.layout.fields_dict.items.grid.refresh(); + }, }, { fieldtype: "Section Break" }, { diff --git a/erpnext/public/js/controllers/accounts.js b/erpnext/public/js/controllers/accounts.js index c39fb524264..c7b08f1dc15 100644 --- a/erpnext/public/js/controllers/accounts.js +++ b/erpnext/public/js/controllers/accounts.js @@ -160,7 +160,7 @@ erpnext.accounts.taxes = { let tax = frappe.get_doc(cdt, cdn); try { me.validate_taxes_and_charges(cdt, cdn); - me.validate_inclusive_tax(tax); + me.validate_inclusive_tax(tax, frm); } catch(e) { tax.included_in_print_rate = 0; refresh_field("included_in_print_rate", tax.name, tax.parentfield); @@ -170,7 +170,8 @@ erpnext.accounts.taxes = { }); }, - validate_inclusive_tax: function(tax) { + validate_inclusive_tax: function(tax, frm) { + this.frm = this.frm || frm; let actual_type_error = function() { var msg = __("Actual type tax cannot be included in Item rate in row {0}", [tax.idx]) frappe.throw(msg); @@ -186,12 +187,12 @@ erpnext.accounts.taxes = { if(tax.charge_type == "Actual") { // inclusive tax cannot be of type Actual actual_type_error(); - } else if(tax.charge_type == "On Previous Row Amount" && + } else if(tax.charge_type == "On Previous Row Amount" && this.frm && !cint(this.frm.doc["taxes"][tax.row_id - 1].included_in_print_rate) ) { // referred row should also be an inclusive tax on_previous_row_error(tax.row_id); - } else if(tax.charge_type == "On Previous Row Total") { + } else if(tax.charge_type == "On Previous Row Total" && this.frm) { var taxes_not_included = $.map(this.frm.doc["taxes"].slice(0, tax.row_id), function(t) { return cint(t.included_in_print_rate) ? null : t; }); if(taxes_not_included.length > 0) { diff --git a/erpnext/public/js/controllers/buying.js b/erpnext/public/js/controllers/buying.js index b5a8b757706..cbc59867e46 100644 --- a/erpnext/public/js/controllers/buying.js +++ b/erpnext/public/js/controllers/buying.js @@ -25,6 +25,14 @@ erpnext.buying = { }; }); + this.frm.set_query("project", function (doc) { + return { + filters: { + company: doc.company, + }, + }; + }); + if (this.frm.doc.__islocal && frappe.meta.has_field(this.frm.doc.doctype, "disable_rounded_total")) { @@ -145,6 +153,25 @@ erpnext.buying = { }); } + company(){ + if(!frappe.meta.has_field(this.frm.doc.doctype, "billing_address")) return; + + frappe.call({ + method: "erpnext.setup.doctype.company.company.get_billing_shipping_address", + args: { + name: this.frm.doc.company, + billing_address:this.frm.doc.billing_address, + shipping_address: this.frm.doc.shipping_address + }, + callback: (r) => { + this.frm.set_value("billing_address", r.message.primary_address || ""); + + if(!frappe.meta.has_field(this.frm.doc.doctype, "shipping_address")) return; + this.frm.set_value("shipping_address", r.message.shipping_address || ""); + }, + }); + } + supplier_address() { erpnext.utils.get_address_display(this.frm); erpnext.utils.set_taxes_from_address(this.frm, "supplier_address", "supplier_address", "supplier_address"); @@ -167,7 +194,7 @@ erpnext.buying = { } qty(doc, cdt, cdn) { - if ((doc.doctype == "Purchase Receipt") || (doc.doctype == "Purchase Invoice" && (doc.update_stock || doc.is_return))) { + if ((doc.doctype == "Purchase Receipt") || (doc.doctype == "Purchase Invoice" && doc.update_stock)) { this.calculate_received_qty(doc, cdt, cdn) } super.qty(doc, cdt, cdn); @@ -342,12 +369,15 @@ erpnext.buying = { add_serial_batch_bundle(doc, cdt, cdn) { let item = locals[cdt][cdn]; let me = this; + let fields = ["has_batch_no", "has_serial_no"]; - frappe.db.get_value("Item", item.item_code, ["has_batch_no", "has_serial_no"]) + frappe.db.get_value("Item", item.item_code, fields) .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; + fields.forEach((field) => { + item[field] = r.message[field]; + }); + item.type_of_transaction = item.qty > 0 ? "Inward" : "Outward"; item.is_rejected = false; @@ -380,13 +410,16 @@ erpnext.buying = { add_serial_batch_for_rejected_qty(doc, cdt, cdn) { let item = locals[cdt][cdn]; let me = this; + let fields = ["has_batch_no", "has_serial_no"]; - frappe.db.get_value("Item", item.item_code, ["has_batch_no", "has_serial_no"]) + frappe.db.get_value("Item", item.item_code, fields) .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.rejected_qty > 0 ? "Inward" : "Outward"; + fields.forEach((field) => { + item[field] = r.message[field]; + }); + + item.type_of_transaction = !doc.is_return > 0 ? "Inward" : "Outward"; item.is_rejected = true; new erpnext.SerialBatchPackageSelector( @@ -398,7 +431,7 @@ erpnext.buying = { } let update_values = { - "serial_and_batch_bundle": r.name, + "rejected_serial_and_batch_bundle": r.name, "use_serial_batch_fields": 0, "rejected_qty": qty / flt(item.conversion_factor || 1, precision("conversion_factor", item)) } diff --git a/erpnext/public/js/controllers/taxes_and_totals.js b/erpnext/public/js/controllers/taxes_and_totals.js index adf05ffb154..4bc787f85ff 100644 --- a/erpnext/public/js/controllers/taxes_and_totals.js +++ b/erpnext/public/js/controllers/taxes_and_totals.js @@ -103,7 +103,7 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments { this.determine_exclusive_rate(); this.calculate_net_total(); this.calculate_taxes(); - this.manipulate_grand_total_for_inclusive_tax(); + this.adjust_grand_total_for_inclusive_tax(); this.calculate_totals(); this._cleanup(); } @@ -128,7 +128,7 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments { calculate_item_values() { var me = this; if (!this.discount_amount_applied) { - for (const item of this.frm._items || []) { + for (const item of this.frm.doc.items || []) { frappe.model.round_floats_in(item); item.net_rate = item.rate; item.qty = item.qty === undefined ? (me.frm.doc.is_return ? -1 : 1) : item.qty; @@ -185,7 +185,7 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments { if (!this.discount_amount_applied) { erpnext.accounts.taxes.validate_taxes_and_charges(tax.doctype, tax.name); - erpnext.accounts.taxes.validate_inclusive_tax(tax); + erpnext.accounts.taxes.validate_inclusive_tax(tax, this.frm); } frappe.model.round_floats_in(tax); }); @@ -227,7 +227,7 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments { }); if(has_inclusive_tax==false) return; - $.each(me.frm._items || [], function(n, item) { + $.each(this.frm.doc.items || [], function(n, item) { var item_tax_map = me._load_item_tax_rate(item.item_tax_rate); var cumulated_tax_fraction = 0.0; var total_inclusive_tax_amount_per_qty = 0; @@ -250,7 +250,7 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments { if(!me.discount_amount_applied && item.qty && (total_inclusive_tax_amount_per_qty || cumulated_tax_fraction)) { var amount = flt(item.amount) - total_inclusive_tax_amount_per_qty; - item.net_amount = flt(amount / (1 + cumulated_tax_fraction)); + item.net_amount = flt(amount / (1 + cumulated_tax_fraction), precision("net_amount", item)); item.net_rate = item.qty ? flt(item.net_amount / item.qty, precision("net_rate", item)) : 0; me.set_in_company_currency(item, ["net_rate", "net_amount"]); @@ -305,6 +305,8 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments { me.frm.doc.net_total += item.net_amount; me.frm.doc.base_net_total += item.base_net_amount; }); + + frappe.model.round_floats_in(this.frm.doc, ["total", "base_total", "net_total", "base_net_total"]); } calculate_shipping_charges() { @@ -341,7 +343,7 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments { calculate_taxes() { var me = this; - this.frm.doc.rounding_adjustment = 0; + this.grand_total_diff = 0; var actual_tax_dict = {}; // maintain actual tax rate based on idx @@ -415,7 +417,7 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments { // adjust Discount Amount loss in last tax iteration if ((i == me.frm.doc["taxes"].length - 1) && me.discount_amount_applied && me.frm.doc.apply_discount_on == "Grand Total" && me.frm.doc.discount_amount) { - me.frm.doc.rounding_adjustment = flt(me.frm.doc.grand_total - + me.grand_total_diff = flt(me.frm.doc.grand_total - flt(me.frm.doc.discount_amount) - tax.total, precision("rounding_adjustment")); } } @@ -523,9 +525,18 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments { } } + /** + * @deprecated Use adjust_grand_total_for_inclusive_tax instead. + */ manipulate_grand_total_for_inclusive_tax() { + // for backward compatablility - if in case used by an external application + this.adjust_grand_total_for_inclusive_tax() + } + + adjust_grand_total_for_inclusive_tax() { var me = this; - // if fully inclusive taxes and diff + + // if any inclusive taxes and diff if (this.frm.doc["taxes"] && this.frm.doc["taxes"].length) { var any_inclusive_tax = false; $.each(this.frm.doc.taxes || [], function(i, d) { @@ -536,7 +547,9 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments { var non_inclusive_tax_amount = frappe.utils.sum($.map(this.frm.doc.taxes || [], function(d) { if(!d.included_in_print_rate) { - return flt(d.tax_amount_after_discount_amount); + let tax_amount = d.category === "Valuation" ? 0 : d.tax_amount_after_discount_amount; + if (d.add_deduct_tax === "Deduct") tax_amount *= -1; + return tax_amount; } } )); @@ -550,7 +563,7 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments { diff = flt(diff, precision("rounding_adjustment")); if ( diff && Math.abs(diff) <= (5.0 / Math.pow(10, precision("tax_amount", last_tax))) ) { - me.frm.doc.rounding_adjustment = diff; + me.grand_total_diff = diff; } } } @@ -561,7 +574,7 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments { var me = this; var tax_count = this.frm.doc["taxes"] ? this.frm.doc["taxes"].length : 0; this.frm.doc.grand_total = flt(tax_count - ? this.frm.doc["taxes"][tax_count - 1].total + flt(this.frm.doc.rounding_adjustment) + ? this.frm.doc["taxes"][tax_count - 1].total + this.grand_total_diff : this.frm.doc.net_total); if(["Quotation", "Sales Order", "Delivery Note", "Sales Invoice", "POS Invoice"].includes(this.frm.doc.doctype)) { @@ -593,9 +606,9 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments { } this.frm.doc.total_taxes_and_charges = flt(this.frm.doc.grand_total - this.frm.doc.net_total - - flt(this.frm.doc.rounding_adjustment), precision("total_taxes_and_charges")); + - this.grand_total_diff, precision("total_taxes_and_charges")); - this.set_in_company_currency(this.frm.doc, ["total_taxes_and_charges", "rounding_adjustment"]); + this.set_in_company_currency(this.frm.doc, ["total_taxes_and_charges"]); // Round grand total as per precision frappe.model.round_floats_in(this.frm.doc, ["grand_total", "base_grand_total"]); @@ -615,13 +628,14 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments { if (cint(disable_rounded_total)) { this.frm.doc.rounded_total = 0; this.frm.doc.base_rounded_total = 0; + this.frm.doc.rounding_adjustment = 0; return; } if(frappe.meta.get_docfield(this.frm.doc.doctype, "rounded_total", this.frm.doc.name)) { this.frm.doc.rounded_total = round_based_on_smallest_currency_fraction(this.frm.doc.grand_total, this.frm.doc.currency, precision("rounded_total")); - this.frm.doc.rounding_adjustment += flt(this.frm.doc.rounded_total - this.frm.doc.grand_total, + this.frm.doc.rounding_adjustment = flt(this.frm.doc.rounded_total - this.frm.doc.grand_total, precision("rounding_adjustment")); this.set_in_company_currency(this.frm.doc, ["rounding_adjustment", "rounded_total"]); @@ -630,7 +644,7 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments { _cleanup() { this.frm.doc.base_in_words = this.frm.doc.in_words = ""; - let items = this.frm._items; + let items = this.frm.doc.items; if(items && items.length) { if(!frappe.meta.get_docfield(items[0].doctype, "item_tax_amount", this.frm.doctype)) { @@ -683,23 +697,26 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments { return; } - var total_for_discount_amount = this.get_total_for_discount_amount(); - var net_total = 0; + const total_for_discount_amount = this.get_total_for_discount_amount(); + let net_total = 0; + let expected_net_total = 0; + // calculate item amount after Discount Amount if (total_for_discount_amount) { $.each(this.frm._items || [], function(i, item) { distributed_amount = flt(me.frm.doc.discount_amount) * item.net_amount / total_for_discount_amount; - item.net_amount = flt(item.net_amount - distributed_amount, - precision("base_amount", item)); + + const adjusted_net_amount = item.net_amount - distributed_amount; + expected_net_total += adjusted_net_amount + item.net_amount = flt(adjusted_net_amount, precision("net_amount", item)); net_total += item.net_amount; - // discount amount rounding loss adjustment if no taxes - if ((!(me.frm.doc.taxes || []).length || total_for_discount_amount==me.frm.doc.net_total || (me.frm.doc.apply_discount_on == "Net Total")) - && i == (me.frm._items || []).length - 1) { - var discount_amount_loss = flt(me.frm.doc.net_total - net_total - - me.frm.doc.discount_amount, precision("net_total")); - item.net_amount = flt(item.net_amount + discount_amount_loss, - precision("net_amount", item)); + // discount amount rounding adjustment + // assignment to rounding_difference is intentional + const rounding_difference = flt(expected_net_total - net_total, precision("net_total")); + if (rounding_difference) { + item.net_amount = flt(item.net_amount + rounding_difference, precision("net_amount", item)); + net_total += rounding_difference; } item.net_rate = item.qty ? flt(item.net_amount / item.qty, precision("net_rate", item)) : 0; me.set_in_company_currency(item, ["net_rate", "net_amount"]); @@ -712,29 +729,38 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments { } get_total_for_discount_amount() { - if(this.frm.doc.apply_discount_on == "Net Total") { + if(this.frm.doc.apply_discount_on == "Net Total") return this.frm.doc.net_total; - } else { - var total_actual_tax = 0.0; - var actual_taxes_dict = {}; - $.each(this.frm.doc["taxes"] || [], function(i, tax) { - if (["Actual", "On Item Quantity"].includes(tax.charge_type)) { - var tax_amount = (tax.category == "Valuation") ? 0.0 : tax.tax_amount; - tax_amount *= (tax.add_deduct_tax == "Deduct") ? -1.0 : 1.0; - actual_taxes_dict[tax.idx] = tax_amount; - } else if (actual_taxes_dict[tax.row_id] !== null) { - var actual_tax_amount = flt(actual_taxes_dict[tax.row_id]) * flt(tax.rate) / 100; - actual_taxes_dict[tax.idx] = actual_tax_amount; - } - }); + let total_actual_tax = 0.0; + let actual_taxes_dict = {}; - $.each(actual_taxes_dict, function(key, value) { - if (value) total_actual_tax += value; - }); + function update_actual_taxes_dict(tax, tax_amount) { + if (tax.add_deduct_tax == "Deduct") tax_amount *= -1; + if (tax.category != "Valuation") total_actual_tax += tax_amount; - return flt(this.frm.doc.grand_total - total_actual_tax, precision("grand_total")); + actual_taxes_dict[tax.idx] = { + tax_amount: tax_amount, + cumulative_total: total_actual_tax + }; } + + $.each(this.frm.doc["taxes"] || [], function(i, tax) { + if (["Actual", "On Item Quantity"].includes(tax.charge_type)) { + update_actual_taxes_dict(tax, tax.tax_amount); + return; + } + + const base_row = actual_taxes_dict[tax.row_id]; + if (!base_row) return; + + // if charge type is 'On Previous Row Amount', calculate tax on previous row amount + // else (On Previous Row Total) calculate tax on cumulative total + const base_tax_amount = tax.charge_type == "On Previous Row Amount" ? base_row["tax_amount"]: base_row["cumulative_total"]; + update_actual_taxes_dict(tax, base_tax_amount * tax.rate / 100); + }); + + return this.frm.doc.grand_total - total_actual_tax; } calculate_total_advance(update_paid_amount) { @@ -811,7 +837,7 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments { } } - set_total_amount_to_default_mop() { + async set_total_amount_to_default_mop() { let grand_total = this.frm.doc.rounded_total || this.frm.doc.grand_total; let base_grand_total = this.frm.doc.base_rounded_total || this.frm.doc.base_grand_total; @@ -833,21 +859,66 @@ erpnext.taxes_and_totals = class TaxesAndTotals extends erpnext.payments { ); } - if(!this.frm.doc.is_return){ - this.frm.doc.payments.find(payment => { - if (payment.default) { + /* + During returns, if an user select mode of payment other than + default mode of payment, it should retain the user selection + instead resetting it to default mode of payment. + */ + + let payment_amount = 0; + this.frm.doc.payments.forEach(payment => { + payment_amount += payment.amount + }); + + if (payment_amount == total_amount_to_pay) { + return; + } + + /* + For partial return, if the payment was made using single mode of payment + it should set the return to that mode of payment only. + */ + + let return_against_mop = await frappe.call({ + method: 'erpnext.controllers.sales_and_purchase_return.get_payment_data', + args: { + invoice: this.frm.doc.return_against + } + }); + + if (return_against_mop.message.length === 1) { + this.frm.doc.payments.forEach(payment => { + if (payment.mode_of_payment == return_against_mop.message[0].mode_of_payment) { payment.amount = total_amount_to_pay; + } else { + payment.amount = 0; } }); + this.frm.refresh_fields(); + return; } + this.frm.doc.payments.find(payment => { + if (payment.default) { + payment.amount = total_amount_to_pay; + } else { + payment.amount = 0 + } + }); + this.frm.refresh_fields(); } - set_default_payment(total_amount_to_pay, update_paid_amount) { + async set_default_payment(total_amount_to_pay, update_paid_amount) { var me = this; var payment_status = true; if(this.frm.doc.is_pos && (update_paid_amount===undefined || update_paid_amount)) { + let r = await frappe.db.get_value("POS Profile", this.frm.doc.pos_profile, "disable_grand_total_to_default_mop"); + + if (r.message.disable_grand_total_to_default_mop) { + return; + } + $.each(this.frm.doc['payments'] || [], function(index, data) { if(data.default && payment_status && total_amount_to_pay > 0) { let base_amount, amount; diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js index d8bf4a5cf17..59dd337d3af 100644 --- a/erpnext/public/js/controllers/transaction.js +++ b/erpnext/public/js/controllers/transaction.js @@ -150,6 +150,19 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe }); } + if (this.frm.fields_dict["items"].grid.get_field("uom")) { + this.frm.set_query("uom", "items", function(doc, cdt, cdn) { + let row = locals[cdt][cdn]; + + return { + query: "erpnext.controllers.queries.get_item_uom_query", + filters: { + "item_code": row.item_code + } + }; + }); + } + if( this.frm.docstatus < 2 && this.frm.fields_dict["payment_terms_template"] @@ -238,6 +251,15 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe } } + use_serial_batch_fields(frm, cdt, cdn) { + const item = locals[cdt][cdn]; + if (!item.use_serial_batch_fields) { + frappe.model.set_value(cdt, cdn, "serial_no", ""); + frappe.model.set_value(cdt, cdn, "batch_no", ""); + frappe.model.set_value(cdt, cdn, "rejected_serial_no", ""); + } + } + set_fields_onload_for_line_item() { if (this.frm.is_new() && this.frm.doc?.items) { this.frm.doc.items.forEach(item => { @@ -289,28 +311,6 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe } ]); } - - if(this.frm.fields_dict['items'].grid.get_field('serial_and_batch_bundle')) { - let sbb_field = this.frm.get_docfield('items', 'serial_and_batch_bundle'); - if (sbb_field) { - sbb_field.get_route_options_for_new_doc = (row) => { - return { - 'item_code': row.doc.item_code, - } - }; - } - } - - if(this.frm.fields_dict['items'].grid.get_field('batch_no')) { - let batch_no_field = this.frm.get_docfield('items', 'batch_no'); - if (batch_no_field) { - batch_no_field.get_route_options_for_new_doc = function(row) { - return { - 'item': row.doc.item_code - } - }; - } - } } is_return() { @@ -324,12 +324,16 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe return; } + let show_qc_button = true; + if (["Sales Invoice", "Purchase Invoice"].includes(this.frm.doc.doctype)) { + show_qc_button = this.frm.doc.update_stock; + } + const me = this; - if (!this.frm.is_new() && this.frm.doc.docstatus === 0 && frappe.model.can_create("Quality Inspection")) { + if (!this.frm.is_new() && this.frm.doc.docstatus === 0 && frappe.model.can_create("Quality Inspection") && show_qc_button) { this.frm.add_custom_button(__("Quality Inspection(s)"), () => { me.make_quality_inspection(); }, __("Create")); - this.frm.page.set_inner_btn_group_as_primary(__('Create')); } const inspection_type = ["Purchase Receipt", "Purchase Invoice", "Subcontracting Receipt"].includes(this.frm.doc.doctype) @@ -353,7 +357,7 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe let d = locals[cdt][cdn]; return { filters: { - docstatus: 1, + docstatus: ["<", 2], inspection_type: inspection_type, reference_name: doc.name, item_code: d.item_code @@ -375,7 +379,8 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe recipient_id: me.frm.doc.contact_email, payment_request_type: payment_request_type, party_type: payment_request_type == 'Outward' ? "Supplier" : "Customer", - party: payment_request_type == 'Outward' ? me.frm.doc.supplier : me.frm.doc.customer + party: payment_request_type == 'Outward' ? me.frm.doc.supplier : me.frm.doc.customer, + party_name:payment_request_type == 'Outward' ? me.frm.doc.supplier_name : me.frm.doc.customer_name }, callback: function(r) { if(!r.exc){ @@ -408,6 +413,35 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe this.setup_quality_inspection(); this.validate_has_items(); erpnext.utils.view_serial_batch_nos(this.frm); + this.set_route_options_for_new_doc(); + } + + set_route_options_for_new_doc() { + // While creating the batch from the link field, copy item from line item to batch form + + if(this.frm.fields_dict['items'].grid.get_field('batch_no')) { + let batch_no_field = this.frm.get_docfield('items', 'batch_no'); + if (batch_no_field) { + batch_no_field.get_route_options_for_new_doc = function(row) { + return { + 'item': row.doc.item_code + } + }; + } + } + + // While creating the SABB from the link field, copy item, doctype from line item to SABB form + if(this.frm.fields_dict['items'].grid.get_field('serial_and_batch_bundle')) { + let sbb_field = this.frm.get_docfield('items', 'serial_and_batch_bundle'); + if (sbb_field) { + sbb_field.get_route_options_for_new_doc = (row) => { + return { + "item_code": row.doc.item_code, + "voucher_type": this.frm.doc.doctype, + } + }; + } + } } scan_barcode() { @@ -478,7 +512,7 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe setup_sms() { var me = this; let blacklist = ['Purchase Invoice', 'BOM']; - if(this.frm.doc.docstatus===1 && !["Lost", "Stopped", "Closed"].includes(this.frm.doc.status) + if(frappe.boot.sms_gateway_enabled && this.frm.doc.docstatus===1 && !["Lost", "Stopped", "Closed"].includes(this.frm.doc.status) && !blacklist.includes(this.frm.doctype)) { this.frm.page.add_menu_item(__('Send SMS'), function() { me.send_sms(); }); } @@ -567,12 +601,23 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe child_doctype: item.doctype, child_docname: item.name, is_old_subcontracting_flow: me.frm.doc.is_old_subcontracting_flow, + use_serial_batch_fields: item.use_serial_batch_fields, + serial_and_batch_bundle: item.serial_and_batch_bundle, } }, callback: function(r) { if(!r.exc) { frappe.run_serially([ + () => { + if (item.docstatus === 0 + && frappe.meta.has_field(item.doctype, "use_serial_batch_fields") + && !item.use_serial_batch_fields + && cint(frappe.user_defaults?.use_serial_batch_fields) === 1 + ) { + item["use_serial_batch_fields"] = 1; + } + }, () => { var d = locals[cdt][cdn]; me.add_taxes_from_item_tax_template(d.item_tax_rate); @@ -939,9 +984,13 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe if (frappe.meta.get_docfield(this.frm.doctype, "shipping_address") && ['Purchase Order', 'Purchase Receipt', 'Purchase Invoice'].includes(this.frm.doctype)) { - erpnext.utils.get_shipping_address(this.frm, function() { - set_party_account(set_pricing); - }); + let is_drop_ship = me.frm.doc.items.some(item => item.delivered_by_supplier); + + if (!is_drop_ship) { + erpnext.utils.get_shipping_address(this.frm, function() { + set_party_account(set_pricing); + }); + } } else { set_party_account(set_pricing); @@ -990,28 +1039,55 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe } } - due_date() { + due_date(doc, cdt) { // due_date is to be changed, payment terms template and/or payment schedule must // be removed as due_date is automatically changed based on payment terms - if (this.frm.doc.due_date && !this.frm.updating_party_details && !this.frm.doc.is_pos) { - if (this.frm.doc.payment_terms_template || - (this.frm.doc.payment_schedule && this.frm.doc.payment_schedule.length)) { - var message1 = ""; - var message2 = ""; - var final_message = __("Please clear the") + " "; + if (doc.doctype !== cdt) { + // triggered by change to the due_date field in payment schedule child table + // do nothing to avoid infinite clearing loop + return; + } - if (this.frm.doc.payment_terms_template) { - message1 = __("selected Payment Terms Template"); - final_message = final_message + message1; - } + // if there is only one row in payment schedule child table, set its due date as the due date + if (doc.payment_schedule.length == 1){ + doc.payment_schedule[0].due_date = doc.due_date; + this.frm.refresh_field("payment_schedule"); + return + } - if ((this.frm.doc.payment_schedule || []).length) { - message2 = __("Payment Schedule Table"); - if (message1.length !== 0) message2 = " and " + message2; - final_message = final_message + message2; - } - frappe.msgprint(final_message); + if ( + doc.due_date && + !this.frm.updating_party_details && + !doc.is_pos && + ( + doc.payment_terms_template || + doc.payment_schedule?.length + ) + ) { + const to_clear = []; + if (doc.payment_terms_template) { + to_clear.push(__(frappe.meta.get_label(cdt, "payment_terms_template"))); } + + if (doc.payment_schedule?.length) { + to_clear.push(__(frappe.meta.get_label(cdt, "payment_schedule"))); + } + + frappe.confirm( + __( + "For the new {0} to take effect, would you like to clear the current {1}?", + [ + __(frappe.meta.get_label(cdt, "due_date")), + frappe.utils.comma_and(to_clear) + ], + "Clear payment terms template and/or payment schedule when due date is changed" + ), + () => { + this.frm.set_value("payment_terms_template", ""); + this.frm.clear_table("payment_schedule"); + this.frm.refresh_field("payment_schedule"); + } + ); } } @@ -1051,13 +1127,14 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe currency() { // The transaction date be either transaction_date (from orders) or posting_date (from invoices) let transaction_date = this.frm.doc.transaction_date || this.frm.doc.posting_date; + let inter_company_reference = this.frm.doc.inter_company_order_reference || this.frm.doc.inter_company_invoice_reference; let me = this; this.set_dynamic_labels(); let company_currency = this.get_company_currency(); // Added `load_after_mapping` to determine if document is loading after mapping from another doc if(this.frm.doc.currency && this.frm.doc.currency !== company_currency - && !this.frm.doc.__onload?.load_after_mapping) { + && (!this.frm.doc.__onload?.load_after_mapping || inter_company_reference)) { this.get_exchange_rate(transaction_date, this.frm.doc.currency, company_currency, function(exchange_rate) { @@ -1102,7 +1179,7 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe apply_discount_on_item(doc, cdt, cdn, field) { var item = frappe.get_doc(cdt, cdn); - if(!item.price_list_rate) { + if(item && !item.price_list_rate) { item[field] = 0.0; } else { this.price_list_rate(doc, cdt, cdn); @@ -1215,8 +1292,8 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe }, callback: function(r) { if(!r.exc) { - me.apply_price_list(item, true) frappe.model.set_value(cdt, cdn, 'conversion_factor', r.message.conversion_factor); + me.apply_price_list(item, true); } } }); @@ -1258,6 +1335,7 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe "Purchase Receipt": ["purchase_order_item", "purchase_invoice_item", "purchase_receipt_item"], "Purchase Invoice": ["purchase_order_item", "pr_detail", "po_detail"], "Sales Order": ["prevdoc_docname", "quotation_item"], + "Purchase Order": ["supplier_quotation_item"], }; const mappped_fields = mapped_item_field_map[this.frm.doc.doctype] || []; @@ -1267,6 +1345,10 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe .filter(Boolean).length > 0; } else if (this.frm.doc?.items) { let first_row = this.frm.doc.items[0]; + if (!first_row) { + return false + }; + let mapped_rows = mappped_fields.filter(d => first_row[d]) return mapped_rows?.length > 0; @@ -1299,6 +1381,8 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe () => this.calculate_stock_uom_rate(doc, cdt, cdn), () => this.apply_pricing_rule(item, true) ]); + } else { + this.conversion_factor(doc, cdt, cdn, true) } } @@ -1501,6 +1585,31 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe } } + batch_no(frm, cdt, cdn) { + let row = locals[cdt][cdn]; + if (row.use_serial_batch_fields && row.batch_no) { + var params = this._get_args(row); + params.batch_no = row.batch_no; + params.uom = row.uom; + + frappe.call({ + method: "erpnext.stock.get_item_details.get_batch_based_item_price", + args: { + params: params, + item_code: row.item_code, + }, + callback: function(r) { + if (!r.exc && r.message) { + row.price_list_rate = r.message; + row.rate = r.message; + refresh_field("rate", row.name, row.parentfield); + refresh_field("price_list_rate", row.name, row.parentfield); + } + } + }) + } + } + toggle_item_grid_columns(company_currency) { const me = this; // toggle columns @@ -1510,8 +1619,8 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe item_grid.set_column_disp(fname, me.frm.doc.currency != company_currency); }); - var show = (cint(cur_frm.doc.discount_amount)) || - ((cur_frm.doc.taxes || []).filter(function(d) {return d.included_in_print_rate===1}).length); + var show = (cint(this.frm.doc.discount_amount)) || + ((this.frm.doc.taxes || []).filter(function(d) {return d.included_in_print_rate===1}).length); $.each(["net_rate", "net_amount"], function(i, fname) { if(frappe.meta.get_docfield(item_grid.doctype, fname)) @@ -1601,7 +1710,7 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe }, callback: function(r) { if (!r.exc && r.message) { - me.remove_pricing_rule(r.message, removed_pricing_rule); + me.remove_pricing_rule(r.message, removed_pricing_rule, item.name); me.calculate_taxes_and_totals(); if(me.frm.doc.apply_discount_on) me.frm.trigger("apply_discount_on"); } @@ -1694,7 +1803,9 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe "serial_no": d.serial_no, "batch_no": d.batch_no, "price_list_rate": d.price_list_rate, - "conversion_factor": d.conversion_factor || 1.0 + "conversion_factor": d.conversion_factor || 1.0, + "discount_percentage" : d.discount_percentage, + "discount_amount" : d.discount_amount, }); // if doctype is Quotation Item / Sales Order Iten then add Margin Type and rate in item_list @@ -1770,18 +1881,16 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe apply_rule_on_other_items(args) { const me = this; - const fields = ["discount_percentage", "pricing_rules", "discount_amount", "rate"]; + const fields = ["pricing_rules"]; for(var k in args) { let data = args[k]; if (data && data.apply_rule_on_other_items && JSON.parse(data.apply_rule_on_other_items)) { + fields.push(frappe.scrub(data.pricing_rule_for)) me.frm.doc.items.forEach(d => { - if (in_list(JSON.parse(data.apply_rule_on_other_items), d[data.apply_rule_on])) { + if (JSON.parse(data.apply_rule_on_other_items).includes(d[data.apply_rule_on])) { for(var k in data) { - if (data.pricing_rule_for == "Discount Percentage" && data.apply_rule_on_other_items && k == "discount_amount") { - continue; - } if (in_list(fields, k) && data[k] && (data.price_or_product_discount === 'Price' || k === 'pricing_rules')) { frappe.model.set_value(d.doctype, d.name, k, data[k]); @@ -1798,7 +1907,7 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe const exist_items = items.map(row => { return {item_code: row.item_code, pricing_rules: row.pricing_rules};}); - args.free_item_data.forEach(pr_row => { + args.free_item_data.forEach(async pr_row => { let row_to_modify = {}; // If there are no free items, or if the current free item doesn't exist in the table, add it @@ -1816,6 +1925,14 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe for (let key in pr_row) { row_to_modify[key] = pr_row[key]; } + + if (this.frm.doc.hasOwnProperty("is_pos") && this.frm.doc.is_pos) { + let r = await frappe.db.get_value("POS Profile", this.frm.doc.pos_profile, "cost_center"); + if (r.message.cost_center) { + row_to_modify["cost_center"] = r.message.cost_center; + } + } + this.frm.script_manager.copy_from_first_row("items", row_to_modify, ["expense_account", "income_account"]); }); @@ -1852,8 +1969,14 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe callback: function(r) { if (!r.exc) { frappe.run_serially([ - () => me.frm.set_value("price_list_currency", r.message.parent.price_list_currency), - () => me.frm.set_value("plc_conversion_rate", r.message.parent.plc_conversion_rate), + () => { + if (r.message.parent.price_list_currency) + me.frm.set_value("price_list_currency", r.message.parent.price_list_currency); + }, + () => { + if (r.message.parent.plc_conversion_rate) + me.frm.set_value("plc_conversion_rate", r.message.parent.plc_conversion_rate); + }, () => { if(args.items.length) { me._set_values_for_item_list(r.message.children); @@ -1874,11 +1997,15 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe }); } - remove_pricing_rule(item, removed_pricing_rule) { + remove_pricing_rule(item, removed_pricing_rule, row_name) { let me = this; const fields = ["discount_percentage", "discount_amount", "margin_rate_or_amount", "rate_with_margin"]; + if (!item) { + return; + } + if(item.remove_free_item) { let items = []; @@ -1909,6 +2036,13 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe me.trigger_price_list_rate(); } + else if(!item.is_free_item && row_name){ + me.frm.doc.items.forEach(d => { + if (d.name != row_name) return; + + Object.assign(d, item); + }); + } } trigger_price_list_rate() { @@ -2248,6 +2382,12 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe fieldname: "batch_no", label: __("Batch No"), hidden: true + }, + { + fieldtype: "Data", + fieldname: "child_row_reference", + label: __("Child Row Reference"), + hidden: true } ] } @@ -2287,29 +2427,39 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe primary_action_label: __("Create") }); - this.frm.doc.items.forEach(item => { - if (this.has_inspection_required(item)) { - let dialog_items = dialog.fields_dict.items; - dialog_items.df.data.push({ - "docname": item.name, - "item_code": item.item_code, - "item_name": item.item_name, - "qty": item.qty, - "description": item.description, - "serial_no": item.serial_no, - "batch_no": item.batch_no, - "sample_size": item.sample_quantity + frappe.call({ + method: "erpnext.controllers.stock_controller.check_item_quality_inspection", + args: { + doctype: this.frm.doc.doctype, + items: this.frm.doc.items + }, + freeze: true, + callback: function (r) { + r.message.forEach(item => { + if (me.has_inspection_required(item)) { + let dialog_items = dialog.fields_dict.items; + dialog_items.df.data.push({ + "item_code": item.item_code, + "item_name": item.item_name, + "qty": item.qty, + "description": item.description, + "serial_no": item.serial_no, + "batch_no": item.batch_no, + "sample_size": item.sample_quantity, + "child_row_reference": item.name, + }); + dialog_items.grid.refresh(); + } }); - dialog_items.grid.refresh(); + + data = dialog.fields_dict.items.df.data; + if (!data.length) { + frappe.msgprint(__("All items in this document already have a linked Quality Inspection.")); + } else { + dialog.show(); + } } }); - - data = dialog.fields_dict.items.df.data; - if (!data.length) { - frappe.msgprint(__("All items in this document already have a linked Quality Inspection.")); - } else { - dialog.show(); - } } has_inspection_required(item) { @@ -2379,6 +2529,7 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe 'item_code': item.item_code, 'valid_from': ["<=", doc.transaction_date || doc.bill_date || doc.posting_date], 'item_group': item.item_group, + "base_net_rate": item.base_net_rate, } if (doc.tax_category) @@ -2395,7 +2546,7 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe payment_terms_template() { var me = this; const doc = this.frm.doc; - if(doc.payment_terms_template && doc.doctype !== 'Delivery Note') { + if(doc.payment_terms_template && doc.doctype !== 'Delivery Note' && !doc.is_return) { var posting_date = doc.posting_date || doc.transaction_date; frappe.call({ method: "erpnext.controllers.accounts_controller.get_payment_terms", diff --git a/erpnext/public/js/financial_statements.js b/erpnext/public/js/financial_statements.js index bd80c254889..78796c4feb8 100644 --- a/erpnext/public/js/financial_statements.js +++ b/erpnext/public/js/financial_statements.js @@ -9,25 +9,20 @@ erpnext.financial_statements = { data && column.colIndex >= 3 ) { - //Assuming that the first three columns are s.no, account name and the very first year of the accounting values, to calculate the relative percentage values of the successive columns. - const lastAnnualValue = row[column.colIndex - 1].content; - const currentAnnualvalue = data[column.fieldname]; - if (currentAnnualvalue == undefined) return "NA"; //making this not applicable for undefined/null values - let annualGrowth = 0; - if (lastAnnualValue == 0 && currentAnnualvalue > 0) { - //If the previous year value is 0 and the current value is greater than 0 - annualGrowth = 1; - } else if (lastAnnualValue > 0) { - annualGrowth = (currentAnnualvalue - lastAnnualValue) / lastAnnualValue; - } + const growthPercent = data[column.fieldname]; - const growthPercent = Math.round(annualGrowth * 10000) / 100; //calculating the rounded off percentage + if (growthPercent == undefined) return "NA"; //making this not applicable for undefined/null values - value = $(`${(growthPercent >= 0 ? "+" : "") + growthPercent + "%"}`); - if (growthPercent < 0) { - value = $(value).addClass("text-danger"); + if (column.fieldname === "total") { + value = $(`${growthPercent}`); } else { - value = $(value).addClass("text-success"); + value = $(`${(growthPercent >= 0 ? "+" : "") + growthPercent + "%"}`); + + if (growthPercent < 0) { + value = $(value).addClass("text-danger"); + } else { + value = $(value).addClass("text-success"); + } } value = $(value).wrap("

").parent().html(); @@ -38,11 +33,9 @@ erpnext.financial_statements = { this.baseData = row; } if (column.colIndex >= 2) { - //Assuming that the first two columns are s.no and account name, to calculate the relative percentage values of the successive columns. - const currentAnnualvalue = data[column.fieldname]; - const baseValue = this.baseData[column.colIndex].content; - if (currentAnnualvalue == undefined || baseValue <= 0) return "NA"; - const marginPercent = Math.round((currentAnnualvalue / baseValue) * 10000) / 100; + const marginPercent = data[column.fieldname]; + + if (marginPercent == undefined) return "NA"; //making this not applicable for undefined/null values value = $(`${marginPercent + "%"}`); if (marginPercent < 0) value = $(value).addClass("text-danger"); @@ -53,7 +46,8 @@ erpnext.financial_statements = { } if (data && column.fieldname == "account") { - value = data.account_name || value; + // first column + value = data.section_name || data.account_name || value; if (filter && filter?.text && filter?.type == "contains") { if (!value.toLowerCase().includes(filter.text)) { @@ -61,7 +55,7 @@ erpnext.financial_statements = { } } - if (data.account) { + if (data.account || data.accounts) { column.link_onclick = "erpnext.financial_statements.open_general_ledger(" + JSON.stringify(data) + ")"; } @@ -70,7 +64,7 @@ erpnext.financial_statements = { value = default_formatter(value, row, column, data); - if (data && !data.parent_account) { + if (data && !data.parent_account && !data.parent_section) { value = $(`${value}`); var $value = $(value).css("font-weight", "bold"); @@ -84,13 +78,13 @@ erpnext.financial_statements = { return value; }, open_general_ledger: function (data) { - if (!data.account) return; + if (!data.account && !data.accounts) return; let project = $.grep(frappe.query_report.filters, function (e) { return e.df.fieldname == "project"; }); frappe.route_options = { - account: data.account, + account: data.account || data.accounts, company: frappe.query_report.get_filter_value("company"), from_date: data.from_date || data.year_start_date, to_date: data.to_date || data.year_end_date, @@ -195,15 +189,15 @@ function get_filters() { fieldname: "period_start_date", label: __("Start Date"), fieldtype: "Date", - reqd: 1, depends_on: "eval:doc.filter_based_on == 'Date Range'", + mandatory_depends_on: "eval:doc.filter_based_on == 'Date Range'", }, { fieldname: "period_end_date", label: __("End Date"), fieldtype: "Date", - reqd: 1, depends_on: "eval:doc.filter_based_on == 'Date Range'", + mandatory_depends_on: "eval:doc.filter_based_on == 'Date Range'", }, { fieldname: "from_fiscal_year", @@ -253,6 +247,7 @@ function get_filters() { company: frappe.query_report.get_filter_value("company"), }); }, + options: "Cost Center", }, { fieldname: "project", @@ -263,6 +258,7 @@ function get_filters() { company: frappe.query_report.get_filter_value("company"), }); }, + options: "Project", }, ]; diff --git a/erpnext/public/js/queries.js b/erpnext/public/js/queries.js index d7edac3cb9f..63651ec8759 100644 --- a/erpnext/public/js/queries.js +++ b/erpnext/public/js/queries.js @@ -28,9 +28,13 @@ $.extend(erpnext.queries, { customer_filter: function (doc) { if (!doc.customer) { - frappe.throw( - __("Please set {0}", [__(frappe.meta.get_label(doc.doctype, "customer", doc.name))]) - ); + cur_frm.scroll_to_field("customer"); + frappe.show_alert({ + message: __("Please set {0} first.", [ + __(frappe.meta.get_label(doc.doctype, "customer", doc.name)), + ]), + indicator: "orange", + }); } return { filters: { customer: doc.customer } }; @@ -39,11 +43,13 @@ $.extend(erpnext.queries, { contact_query: function (doc) { if (frappe.dynamic_link) { if (!doc[frappe.dynamic_link.fieldname]) { - frappe.throw( - __("Please set {0}", [ + cur_frm.scroll_to_field(frappe.dynamic_link.fieldname); + frappe.show_alert({ + message: __("Please set {0} first.", [ __(frappe.meta.get_label(doc.doctype, frappe.dynamic_link.fieldname, doc.name)), - ]) - ); + ]), + indicator: "orange", + }); } return { @@ -56,14 +62,27 @@ $.extend(erpnext.queries, { } }, + company_contact_query: function (doc) { + if (!doc.company) { + frappe.throw(__("Please set {0}", [__(frappe.meta.get_label(doc.doctype, "company", doc.name))])); + } + + return { + query: "frappe.contacts.doctype.contact.contact.contact_query", + filters: { link_doctype: "Company", link_name: doc.company }, + }; + }, + address_query: function (doc) { if (frappe.dynamic_link) { if (!doc[frappe.dynamic_link.fieldname]) { - frappe.throw( - __("Please set {0}", [ + cur_frm.scroll_to_field(frappe.dynamic_link.fieldname); + frappe.show_alert({ + message: __("Please set {0} first.", [ __(frappe.meta.get_label(doc.doctype, frappe.dynamic_link.fieldname, doc.name)), - ]) - ); + ]), + indicator: "orange", + }); } return { @@ -77,24 +96,41 @@ $.extend(erpnext.queries, { }, company_address_query: function (doc) { + if (!doc.company) { + cur_frm.scroll_to_field("company"); + frappe.show_alert({ + message: __("Please set {0} first.", [ + __(frappe.meta.get_label(doc.doctype, "company", doc.name)), + ]), + indicator: "orange", + }); + } + return { query: "frappe.contacts.doctype.address.address.address_query", - filters: { is_your_company_address: 1, link_doctype: "Company", link_name: doc.company || "" }, + filters: { link_doctype: "Company", link_name: doc.company }, }; }, dispatch_address_query: function (doc) { + var filters = { link_doctype: "Company", link_name: doc.company || "" }; + var is_drop_ship = doc.items.some((item) => item.delivered_by_supplier); + if (is_drop_ship) filters = {}; return { query: "frappe.contacts.doctype.address.address.address_query", - filters: { link_doctype: "Company", link_name: doc.company || "" }, + filters: filters, }; }, supplier_filter: function (doc) { if (!doc.supplier) { - frappe.throw( - __("Please set {0}", [__(frappe.meta.get_label(doc.doctype, "supplier", doc.name))]) - ); + cur_frm.scroll_to_field("supplier"); + frappe.show_alert({ + message: __("Please set {0} first.", [ + __(frappe.meta.get_label(doc.doctype, "supplier", doc.name)), + ]), + indicator: "orange", + }); } return { filters: { supplier: doc.supplier } }; @@ -102,9 +138,13 @@ $.extend(erpnext.queries, { lead_filter: function (doc) { if (!doc.lead) { - frappe.throw( - __("Please specify a {0}", [__(frappe.meta.get_label(doc.doctype, "lead", doc.name))]) - ); + cur_frm.scroll_to_field("lead"); + frappe.show_alert({ + message: __("Please specify a {0} first.", [ + __(frappe.meta.get_label(doc.doctype, "lead", doc.name)), + ]), + indicator: "orange", + }); } return { filters: { lead: doc.lead } }; diff --git a/erpnext/public/js/templates/visual_plant_floor_template.html b/erpnext/public/js/templates/visual_plant_floor_template.html index 2e67085c022..a1639f07370 100644 --- a/erpnext/public/js/templates/visual_plant_floor_template.html +++ b/erpnext/public/js/templates/visual_plant_floor_template.html @@ -1,5 +1,16 @@ {% $.each(workstations, (idx, row) => { %}
+
+ {% if(row.status == "Production") { %} +
+
+
+
+ {% } %} + + {{row.status}} + +
-
-

{{row.status}}

-
{{row.workstation_name}}
+
+ + {{row.workstation_name}} +
-{% }); %} \ No newline at end of file +{% }); %} diff --git a/erpnext/public/js/utils.js b/erpnext/public/js/utils.js index a7d88edcafa..39a341814db 100755 --- a/erpnext/public/js/utils.js +++ b/erpnext/public/js/utils.js @@ -263,6 +263,10 @@ $.extend(erpnext.utils, { fieldname: dimension["fieldname"], label: __(dimension["doctype"]), fieldtype: "MultiSelectList", + depends_on: + report_name === "Stock Balance" + ? "eval:doc.show_dimension_wise_stock === 1" + : "", get_data: function (txt) { return frappe.db.get_link_options(dimension["doctype"], txt); }, @@ -654,6 +658,63 @@ erpnext.utils.update_child_items = function (opts) { filters: filters, }; }, + onchange: function () { + const me = this; + + frm.call({ + method: "erpnext.stock.get_item_details.get_item_details", + args: { + doc: frm.doc, + args: { + item_code: this.value, + set_warehouse: frm.doc.set_warehouse, + customer: frm.doc.customer || frm.doc.party_name, + quotation_to: frm.doc.quotation_to, + supplier: frm.doc.supplier, + currency: frm.doc.currency, + is_internal_supplier: frm.doc.is_internal_supplier, + is_internal_customer: frm.doc.is_internal_customer, + conversion_rate: frm.doc.conversion_rate, + price_list: frm.doc.selling_price_list || frm.doc.buying_price_list, + price_list_currency: frm.doc.price_list_currency, + plc_conversion_rate: frm.doc.plc_conversion_rate, + company: frm.doc.company, + order_type: frm.doc.order_type, + is_pos: cint(frm.doc.is_pos), + is_return: cint(frm.doc.is_return), + is_subcontracted: frm.doc.is_subcontracted, + ignore_pricing_rule: frm.doc.ignore_pricing_rule, + doctype: frm.doc.doctype, + name: frm.doc.name, + qty: me.doc.qty || 1, + uom: me.doc.uom, + pos_profile: cint(frm.doc.is_pos) ? frm.doc.pos_profile : "", + tax_category: frm.doc.tax_category, + child_doctype: frm.doc.doctype + " Item", + is_old_subcontracting_flow: frm.doc.is_old_subcontracting_flow, + }, + }, + callback: function (r) { + if (r.message) { + const { qty, price_list_rate: rate, uom, conversion_factor, bom_no } = r.message; + + const row = dialog.fields_dict.trans_items.df.data.find( + (doc) => doc.idx == me.doc.idx + ); + if (row) { + Object.assign(row, { + conversion_factor: me.doc.conversion_factor || conversion_factor, + uom: me.doc.uom || uom, + qty: me.doc.qty || qty, + rate: me.doc.rate || rate, + bom_no: bom_no, + }); + dialog.fields_dict.trans_items.grid.refresh(); + } + } + }, + }); + }, }, { fieldtype: "Link", @@ -920,6 +981,7 @@ erpnext.utils.map_current_doc = function (opts) { target: opts.target, date_field: opts.date_field || undefined, setters: opts.setters, + read_only_setters: opts.read_only_setters, data_fields: data_fields, get_query: opts.get_query, add_filters_group: 1, diff --git a/erpnext/public/js/utils/dimension_tree_filter.js b/erpnext/public/js/utils/dimension_tree_filter.js index 36c0f1b51ae..68bf11de5d8 100644 --- a/erpnext/public/js/utils/dimension_tree_filter.js +++ b/erpnext/public/js/utils/dimension_tree_filter.js @@ -77,35 +77,34 @@ erpnext.accounts.dimensions = { }, update_dimension(frm, doctype) { - if (this.accounting_dimensions) { - this.accounting_dimensions.forEach((dimension) => { - if (frm.is_new()) { - if ( - frm.doc.company && - Object.keys(this.default_dimensions || {}).length > 0 && - this.default_dimensions[frm.doc.company] - ) { - let default_dimension = - this.default_dimensions[frm.doc.company][dimension["fieldname"]]; + if ( + !this.accounting_dimensions || + !frm.is_new() || + !frm.doc.company || + !this.default_dimensions?.[frm.doc.company] + ) + return; - if (default_dimension) { - if (frappe.meta.has_field(doctype, dimension["fieldname"])) { - frm.set_value(dimension["fieldname"], default_dimension); - } - - $.each(frm.doc.items || frm.doc.accounts || [], function (i, row) { - frappe.model.set_value( - row.doctype, - row.name, - dimension["fieldname"], - default_dimension - ); - }); - } - } - } - }); + // don't set default dimensions if any of the dimension is already set due to mapping + if (frm.doc.__onload?.load_after_mapping) { + for (const dimension of this.accounting_dimensions) { + if (frm.doc[dimension["fieldname"]]) return; + } } + + this.accounting_dimensions.forEach((dimension) => { + const default_dimension = this.default_dimensions[frm.doc.company][dimension["fieldname"]]; + + if (!default_dimension) return; + + if (frappe.meta.has_field(doctype, dimension["fieldname"])) { + frm.set_value(dimension["fieldname"], default_dimension); + } + + (frm.doc.items || frm.doc.accounts || []).forEach((row) => { + frappe.model.set_value(row.doctype, row.name, dimension["fieldname"], default_dimension); + }); + }); }, copy_dimension_from_first_row(frm, cdt, cdn, fieldname) { diff --git a/erpnext/public/js/utils/landed_taxes_and_charges_common.js b/erpnext/public/js/utils/landed_taxes_and_charges_common.js index 2cb30160453..7d801ca91e6 100644 --- a/erpnext/public/js/utils/landed_taxes_and_charges_common.js +++ b/erpnext/public/js/utils/landed_taxes_and_charges_common.js @@ -14,6 +14,10 @@ erpnext.landed_cost_taxes_and_charges = { "Income Account", "Expenses Included In Valuation", "Expenses Included In Asset Valuation", + "Expense Account", + "Direct Expense", + "Indirect Expense", + "Stock Received But Not Billed", ], ], company: frm.doc.company, diff --git a/erpnext/public/js/utils/party.js b/erpnext/public/js/utils/party.js index 623941755d1..a85423b8340 100644 --- a/erpnext/public/js/utils/party.js +++ b/erpnext/public/js/utils/party.js @@ -17,7 +17,7 @@ erpnext.utils.get_party_details = function (frm, method, args, callback) { (frm.doc.party_name && ["Quotation", "Opportunity"].includes(frm.doc.doctype)) ) { let party_type = "Customer"; - if (frm.doc.quotation_to && ["Lead", "Prospect"].includes(frm.doc.quotation_to)) { + if (frm.doc.quotation_to && ["Lead", "Prospect", "CRM Deal"].includes(frm.doc.quotation_to)) { party_type = frm.doc.quotation_to; } diff --git a/erpnext/public/js/utils/sales_common.js b/erpnext/public/js/utils/sales_common.js index 91a85aa02a5..bbb2a88e629 100644 --- a/erpnext/public/js/utils/sales_common.js +++ b/erpnext/public/js/utils/sales_common.js @@ -15,10 +15,11 @@ erpnext.sales_common = { onload() { super.onload(); this.setup_queries(); - this.frm.set_query("shipping_rule", function () { + this.frm.set_query("shipping_rule", function (doc) { return { filters: { shipping_rule_type: "Selling", + company: doc.company, }, }; }); @@ -28,6 +29,7 @@ erpnext.sales_common = { query: "erpnext.controllers.queries.get_project_name", filters: { customer: doc.customer, + company: doc.company, }, }; }); @@ -47,9 +49,11 @@ erpnext.sales_common = { ); me.frm.set_query("contact_person", erpnext.queries.contact_query); + me.frm.set_query("company_contact_person", erpnext.queries.company_contact_query); me.frm.set_query("customer_address", erpnext.queries.address_query); me.frm.set_query("shipping_address_name", erpnext.queries.address_query); me.frm.set_query("dispatch_address_name", erpnext.queries.dispatch_address_query); + me.frm.set_query("company_address", erpnext.queries.company_address_query); erpnext.accounts.dimensions.setup_dimension_filters(me.frm, me.frm.doctype); @@ -443,22 +447,21 @@ erpnext.sales_common = { args: { project: this.frm.doc.project }, callback: function (r, rt) { if (!r.exc) { - $.each(me.frm.doc["items"] || [], function (i, row) { - if (r.message) { + if (r.message) { + $.each(me.frm.doc["items"] || [], function (i, row) { frappe.model.set_value( row.doctype, row.name, "cost_center", r.message ); - frappe.msgprint( - __( - "Cost Center For Item with Item Code {0} has been Changed to {1}", - [row.item_name, r.message] - ) - ); - } - }); + }); + frappe.msgprint( + __("Cost Center for Item rows has been updated to {0}", [ + r.message, + ]) + ); + } } }, }); diff --git a/erpnext/public/js/utils/serial_no_batch_selector.js b/erpnext/public/js/utils/serial_no_batch_selector.js index 2ddfc24adb1..e02d7a3d785 100644 --- a/erpnext/public/js/utils/serial_no_batch_selector.js +++ b/erpnext/public/js/utils/serial_no_batch_selector.js @@ -16,7 +16,7 @@ erpnext.SerialBatchPackageSelector = class SerialNoBatchBundleUpdate { let label = this.item?.has_serial_no ? __("Serial Nos") : __("Batch Nos"); let primary_label = this.bundle ? __("Update") : __("Add"); - if (this.item?.has_serial_no && this.item?.batch_no) { + if (this.item?.has_serial_no && this.item?.has_batch_no) { label = __("Serial Nos / Batch Nos"); } @@ -24,6 +24,7 @@ erpnext.SerialBatchPackageSelector = class SerialNoBatchBundleUpdate { this.dialog = new frappe.ui.Dialog({ title: this.item?.title || primary_label, + size: "large", fields: this.get_dialog_fields(), primary_action_label: primary_label, primary_action: () => this.update_bundle_entries(), @@ -95,7 +96,12 @@ erpnext.SerialBatchPackageSelector = class SerialNoBatchBundleUpdate { options: "Warehouse", default: this.get_warehouse(), onchange: () => { - this.item.warehouse = this.dialog.get_value("warehouse"); + if (this.item?.is_rejected) { + this.item.rejected_warehouse = this.dialog.get_value("warehouse"); + } else { + this.item.warehouse = this.dialog.get_value("warehouse"); + } + this.get_auto_data(); }, get_query: () => { @@ -164,12 +170,14 @@ erpnext.SerialBatchPackageSelector = class SerialNoBatchBundleUpdate { fields.push({ fieldtype: "Section Break", + depends_on: "eval:doc.enter_manually !== 1 || doc.entries?.length > 0", }); fields.push({ fieldname: "entries", fieldtype: "Table", allow_bulk_edit: true, + depends_on: "eval:doc.enter_manually !== 1 || doc.entries?.length > 0", data: [], fields: this.get_dialog_table_fields(), }); @@ -178,6 +186,7 @@ erpnext.SerialBatchPackageSelector = class SerialNoBatchBundleUpdate { } get_attach_field() { + let me = this; let label = this.item?.has_serial_no ? __("Serial Nos") : __("Batch Nos"); let primary_label = this.bundle ? __("Update") : __("Add"); @@ -185,66 +194,41 @@ erpnext.SerialBatchPackageSelector = class SerialNoBatchBundleUpdate { label = __("Serial Nos / Batch Nos"); } - let fields = [ - { - fieldtype: "Section Break", - label: __("{0} {1} via CSV File", [primary_label, label]), - }, - ]; - - if (this.item?.has_serial_no) { - fields = [ - ...fields, - { - fieldtype: "Check", - label: __("Import Using CSV file"), - fieldname: "import_using_csv_file", - default: 0, + let fields = []; + if (this.item.has_serial_no) { + fields.push({ + fieldtype: "Check", + label: __("Enter Manually"), + fieldname: "enter_manually", + default: 1, + depends_on: "eval:doc.import_using_csv_file !== 1", + change() { + if (me.dialog.get_value("enter_manually")) { + me.dialog.set_value("import_using_csv_file", 0); + } }, - { - fieldtype: "Section Break", - label: __("{0} {1} Manually", [primary_label, label]), - depends_on: "eval:doc.import_using_csv_file === 0", - }, - { - fieldtype: "Data", - label: __("Enter Serial No Range"), - fieldname: "serial_no_range", - depends_on: "eval:doc.import_using_csv_file === 0", - description: __('Enter "ABC-001::100" for serial nos "ABC-001" to "ABC-100".'), - onchange: () => { - this.set_serial_nos_from_range(); - }, - }, - { - fieldtype: "Small Text", - label: __("Enter Serial Nos"), - fieldname: "upload_serial_nos", - depends_on: "eval:doc.import_using_csv_file === 0", - description: __("Enter each serial no in a new line"), - }, - { - fieldtype: "Column Break", - depends_on: "eval:doc.import_using_csv_file === 0", - }, - { - fieldtype: "Button", - fieldname: "make_serial_nos", - label: __("Create Serial Nos"), - depends_on: "eval:doc.import_using_csv_file === 0", - click: () => { - this.create_serial_nos(); - }, - }, - { - fieldtype: "Section Break", - depends_on: "eval:doc.import_using_csv_file === 1", - }, - ]; + }); } fields = [ ...fields, + { + fieldtype: "Check", + label: __("Import Using CSV file"), + fieldname: "import_using_csv_file", + depends_on: "eval:doc.enter_manually !== 1", + default: !this.item.has_serial_no ? 1 : 0, + change() { + if (me.dialog.get_value("import_using_csv_file")) { + me.dialog.set_value("enter_manually", 0); + } + }, + }, + { + fieldtype: "Section Break", + depends_on: "eval:doc.import_using_csv_file === 1", + label: __("{0} {1} via CSV File", [primary_label, label]), + }, { fieldtype: "Button", fieldname: "download_csv", @@ -262,6 +246,44 @@ erpnext.SerialBatchPackageSelector = class SerialNoBatchBundleUpdate { }, ]; + if (this.item?.has_serial_no) { + fields = [ + ...fields, + { + fieldtype: "Section Break", + label: __("{0} {1} Manually", [primary_label, label]), + depends_on: "eval:doc.enter_manually === 1", + }, + { + fieldtype: "Data", + label: __("Serial No Range"), + fieldname: "serial_no_range", + depends_on: "eval:doc.enter_manually === 1 && !doc.serial_no_series", + description: __('"SN-01::10" for "SN-01" to "SN-10"'), + onchange: () => { + this.set_serial_nos_from_range(); + }, + }, + ]; + } + + if (this.item?.has_serial_no) { + fields = [ + ...fields, + { + fieldtype: "Column Break", + depends_on: "eval:doc.enter_manually === 1", + }, + { + fieldtype: "Small Text", + label: __("Enter Serial Nos"), + fieldname: "upload_serial_nos", + depends_on: "eval:doc.enter_manually === 1", + description: __("Enter each serial no in a new line"), + }, + ]; + } + return fields; } @@ -415,6 +437,11 @@ erpnext.SerialBatchPackageSelector = class SerialNoBatchBundleUpdate { fieldname: "batch_no", label: __("Batch No"), in_list_view: 1, + get_route_options_for_new_doc: () => { + return { + item: this.item.item_code, + }; + }, change() { let doc = this.doc; if (!doc.qty && me.item.type_of_transaction === "Outward") { @@ -435,6 +462,8 @@ erpnext.SerialBatchPackageSelector = class SerialNoBatchBundleUpdate { is_inward = true; } + let include_expired_batches = me.include_expired_batches(); + return { query: "erpnext.controllers.queries.get_batch_no", filters: { @@ -442,6 +471,7 @@ erpnext.SerialBatchPackageSelector = class SerialNoBatchBundleUpdate { warehouse: this.item.s_warehouse || this.item.t_warehouse || this.item.warehouse, is_inward: is_inward, + include_expired_batches: include_expired_batches, }, }; }, @@ -470,6 +500,14 @@ erpnext.SerialBatchPackageSelector = class SerialNoBatchBundleUpdate { return fields; } + include_expired_batches() { + return ( + this.frm.doc.doctype === "Stock Reconciliation" || + (this.frm.doc.doctype === "Stock Entry" && + ["Material Receipt", "Material Transfer", "Material Issue"].includes(this.frm.doc.purpose)) + ); + } + get_auto_data() { let { qty, based_on } = this.dialog.get_values(); @@ -487,16 +525,23 @@ erpnext.SerialBatchPackageSelector = class SerialNoBatchBundleUpdate { based_on = "FIFO"; } + let warehouse = this.item.warehouse || this.item.s_warehouse; + if (this.item?.is_rejected) { + warehouse = this.item.rejected_warehouse; + } + if (qty) { frappe.call({ method: "erpnext.stock.doctype.serial_and_batch_bundle.serial_and_batch_bundle.get_auto_data", args: { item_code: this.item.item_code, - warehouse: this.item.warehouse || this.item.s_warehouse, + warehouse: warehouse, has_serial_no: this.item.has_serial_no, has_batch_no: this.item.has_batch_no, qty: qty, based_on: based_on, + posting_date: this.frm.doc.posting_date, + posting_time: this.frm.doc.posting_time, }, callback: (r) => { if (r.message) { @@ -511,6 +556,8 @@ erpnext.SerialBatchPackageSelector = class SerialNoBatchBundleUpdate { scan_barcode_data() { const { scan_serial_no, scan_batch_no } = this.dialog.get_values(); + this.dialog.set_value("enter_manually", 0); + if (scan_serial_no || scan_batch_no) { frappe.call({ method: "erpnext.stock.doctype.serial_and_batch_bundle.serial_and_batch_bundle.is_serial_batch_no_exists", @@ -554,14 +601,13 @@ erpnext.SerialBatchPackageSelector = class SerialNoBatchBundleUpdate { serial_no: scan_serial_no, }, callback: (r) => { - if (r.message) { - this.dialog.fields_dict.entries.df.data.push({ - serial_no: scan_serial_no, - batch_no: r.message, - }); + this.dialog.fields_dict.entries.df.data.push({ + serial_no: scan_serial_no, + batch_no: r.message, + }); - this.dialog.fields_dict.scan_serial_no.set_value(""); - } + this.dialog.fields_dict.scan_serial_no.set_value(""); + this.dialog.fields_dict.entries.grid.refresh(); }, }); } @@ -590,6 +636,12 @@ erpnext.SerialBatchPackageSelector = class SerialNoBatchBundleUpdate { update_bundle_entries() { let entries = this.dialog.get_values().entries; let warehouse = this.dialog.get_value("warehouse"); + let upload_serial_nos = this.dialog.get_value("upload_serial_nos"); + + if (!entries?.length && upload_serial_nos) { + this.create_serial_nos(); + return; + } if ((entries && !entries.length) || !entries) { frappe.throw(__("Please add atleast one Serial No / Batch No")); @@ -599,6 +651,10 @@ erpnext.SerialBatchPackageSelector = class SerialNoBatchBundleUpdate { frappe.throw(__("Please select a Warehouse")); } + if (this.item?.is_rejected && this.item.rejected_warehouse === this.item.warehouse) { + frappe.throw(__("Rejected Warehouse and Accepted Warehouse cannot be same.")); + } + frappe .call({ method: "erpnext.stock.doctype.serial_and_batch_bundle.serial_and_batch_bundle.add_serial_batch_ledgers", @@ -610,9 +666,13 @@ erpnext.SerialBatchPackageSelector = class SerialNoBatchBundleUpdate { }, }) .then((r) => { - this.callback && this.callback(r.message); - this.frm.save(); - this.dialog.hide(); + frappe.run_serially([ + () => { + this.callback && this.callback(r.message); + }, + () => this.frm.save(), + () => this.dialog.hide(), + ]); }); } @@ -636,6 +696,10 @@ erpnext.SerialBatchPackageSelector = class SerialNoBatchBundleUpdate { } get_warehouse() { + if (this.item?.is_rejected) { + return this.item.rejected_warehouse; + } + return this.item?.type_of_transaction === "Outward" ? this.item.warehouse || this.item.s_warehouse : this.item.warehouse || this.item.t_warehouse; @@ -669,5 +733,8 @@ erpnext.SerialBatchPackageSelector = class SerialNoBatchBundleUpdate { }); this.dialog.fields_dict.entries.grid.refresh(); + if (this.dialog.fields_dict.entries.df.data?.length) { + this.dialog.set_value("enter_manually", 0); + } } }; diff --git a/erpnext/public/js/utils/unreconcile.js b/erpnext/public/js/utils/unreconcile.js index 6864e2865d3..072b541753d 100644 --- a/erpnext/public/js/utils/unreconcile.js +++ b/erpnext/public/js/utils/unreconcile.js @@ -4,7 +4,8 @@ erpnext.accounts.unreconcile_payment = { add_unreconcile_btn(frm) { if (frm.doc.docstatus == 1) { if ( - (frm.doc.doctype == "Journal Entry" && frm.doc.voucher_type != "Journal Entry") || + (frm.doc.doctype == "Journal Entry" && + !["Journal Entry", "Bank Entry", "Cash Entry"].includes(frm.doc.voucher_type)) || !["Purchase Invoice", "Sales Invoice", "Journal Entry", "Payment Entry"].includes( frm.doc.doctype ) @@ -69,7 +70,7 @@ erpnext.accounts.unreconcile_payment = { { label: __("Voucher Type"), fieldname: "voucher_type", - fieldtype: "Dynamic Link", + fieldtype: "Link", options: "DocType", in_list_view: 1, read_only: 1, @@ -77,7 +78,7 @@ erpnext.accounts.unreconcile_payment = { { label: __("Voucher No"), fieldname: "voucher_no", - fieldtype: "Link", + fieldtype: "Dynamic Link", options: "voucher_type", in_list_view: 1, read_only: 1, @@ -90,7 +91,13 @@ erpnext.accounts.unreconcile_payment = { read_only: 1, options: "account_currency", }, - { label: __("Currency"), fieldname: "account_currency", fieldtype: "Currency", read_only: 1 }, + { + label: __("Currency"), + fieldname: "account_currency", + fieldtype: "Link", + options: "Currency", + read_only: 1, + }, ]; let unreconcile_dialog_fields = [ { @@ -99,6 +106,7 @@ erpnext.accounts.unreconcile_payment = { fieldtype: "Table", read_only: 1, fields: child_table_fields, + cannot_add_rows: true, }, ]; @@ -119,11 +127,10 @@ erpnext.accounts.unreconcile_payment = { }; let d = new frappe.ui.Dialog({ - title: "UnReconcile Allocations", + title: __("UnReconcile Allocations"), fields: unreconcile_dialog_fields, size: "large", - cannot_add_rows: true, - primary_action_label: "UnReconcile", + primary_action_label: __("UnReconcile"), primary_action(values) { let selected_allocations = values.allocations.filter((x) => x.__checked); if (selected_allocations.length > 0) { @@ -137,7 +144,7 @@ erpnext.accounts.unreconcile_payment = { ); d.hide(); } else { - frappe.msgprint("No Selection"); + frappe.msgprint(__("No Selection")); } }, }); diff --git a/erpnext/public/scss/erpnext.scss b/erpnext/public/scss/erpnext.scss index 03dd31104e1..29a2696470f 100644 --- a/erpnext/public/scss/erpnext.scss +++ b/erpnext/public/scss/erpnext.scss @@ -507,6 +507,47 @@ body[data-route="pos"] { position: relative; } +.ring-container { + position: relative; +} + +.circle { + width: 9px; + height: 9px; + background-color: #278f5e; + border-radius: 50%; + position: absolute; + left: 9px; + top: 8px; +} + +@keyframes pulsate { + 0% { + -webkit-transform: scale(0.1, 0.1); + opacity: 0; + } + 50% { + opacity: 1; + } + 100% { + -webkit-transform: scale(1.2, 1.2); + opacity: 0; + } +} + +.ringring { + border: 2px solid #62bd19; + -webkit-border-radius: 40px; + height: 15px; + width: 15px; + position: absolute; + left: 6px; + top: 5px; + -webkit-animation: pulsate 3s ease-out; + -webkit-animation-iteration-count: infinite; + opacity: 0; +} + .plant-floor { padding-bottom: 25px; } diff --git a/erpnext/public/scss/point-of-sale.scss b/erpnext/public/scss/point-of-sale.scss index 75bbabd98e2..d5215549756 100644 --- a/erpnext/public/scss/point-of-sale.scss +++ b/erpnext/public/scss/point-of-sale.scss @@ -2,6 +2,7 @@ display: grid; grid-template-columns: repeat(10, minmax(0, 1fr)); gap: var(--margin-md); + padding: 1%; section { min-height: 45rem; diff --git a/erpnext/regional/address_template/templates/germany.html b/erpnext/regional/address_template/templates/germany.html index 25c9c9d32e6..3886bfadc0b 100644 --- a/erpnext/regional/address_template/templates/germany.html +++ b/erpnext/regional/address_template/templates/germany.html @@ -1,8 +1,4 @@ {{ address_line1 }}
{% if address_line2 %}{{ address_line2 }}
{% endif -%} -{% if country in ["Germany", "Deutschland"] %} - {{ pincode }} {{ city }} -{% else %} - {{ pincode }} {{ city | upper }}
- {{ country | upper }} -{% endif %} +{{ pincode }} {{ city | upper }}
+{{ country | upper }} diff --git a/erpnext/regional/address_template/templates/switzerland.html b/erpnext/regional/address_template/templates/switzerland.html new file mode 100644 index 00000000000..3886bfadc0b --- /dev/null +++ b/erpnext/regional/address_template/templates/switzerland.html @@ -0,0 +1,4 @@ +{{ address_line1 }}
+{% if address_line2 %}{{ address_line2 }}
{% endif -%} +{{ pincode }} {{ city | upper }}
+{{ country | upper }} diff --git a/erpnext/regional/address_template/templates/united_states.html b/erpnext/regional/address_template/templates/united_states.html index 77fce46b9d7..f00f99c1299 100644 --- a/erpnext/regional/address_template/templates/united_states.html +++ b/erpnext/regional/address_template/templates/united_states.html @@ -1,4 +1,4 @@ {{ address_line1 }}
{% if address_line2 %}{{ address_line2 }}
{% endif -%} -{{ city }}, {% if state %}{{ state }}{% endif -%}{% if pincode %} {{ pincode }}
{% endif -%} +{{ city }}, {% if state %}{{ state }}{% endif -%}{% if pincode %} {{ pincode }}{% endif -%}
{% if country != "United States" %}{{ country }}{% endif -%} diff --git a/erpnext/regional/italy/e-invoice.xml b/erpnext/regional/italy/e-invoice.xml index 69b8e3e488d..7c436a2b449 100644 --- a/erpnext/regional/italy/e-invoice.xml +++ b/erpnext/regional/italy/e-invoice.xml @@ -188,9 +188,9 @@ {{ html2text(item.description or '') or item.item_name }} {{ format_float(item.qty) }} {{ item.stock_uom }} - {{ format_float(item.price_list_rate or item.rate, item_meta.get_field("rate").precision) }} + {{ format_float(item.net_rate or item.price_list_rate or item.rate, item_meta.get_field("rate").precision) }} {{ render_discount_or_margin(item) }} - {{ format_float(item.amount, item_meta.get_field("amount").precision) }} + {{ format_float(item.net_amount, item_meta.get_field("amount").precision) }} {{ format_float(item.tax_rate, item_meta.get_field("tax_rate").precision) }} {%- if item.tax_exemption_reason %} {{ item.tax_exemption_reason.split("-")[0] }} diff --git a/erpnext/regional/italy/utils.py b/erpnext/regional/italy/utils.py index 1e0a8805075..d996ff9b2ac 100644 --- a/erpnext/regional/italy/utils.py +++ b/erpnext/regional/italy/utils.py @@ -261,12 +261,11 @@ def sales_invoice_validate(doc): doc.company_tax_id = frappe.get_cached_value("Company", doc.company, "tax_id") doc.company_fiscal_code = frappe.get_cached_value("Company", doc.company, "fiscal_code") - if not doc.company_tax_id and not doc.company_fiscal_code: + if not doc.company_tax_id or not doc.company_fiscal_code: frappe.throw( - _("Please set either the Tax ID or Fiscal Code on Company '%s'" % doc.company), + _("Please set both the Tax ID and Fiscal Code on Company {0}").format(doc.company), title=_("E-Invoicing Information Missing"), ) - # Validate customer details customer = frappe.get_doc("Customer", doc.customer) @@ -331,22 +330,19 @@ def sales_invoice_on_submit(doc, method): ]: return - if not len(doc.payment_schedule): - frappe.throw(_("Please set the Payment Schedule"), title=_("E-Invoicing Information Missing")) - else: - for schedule in doc.payment_schedule: - if not schedule.mode_of_payment: - frappe.throw( - _("Row {0}: Please set the Mode of Payment in Payment Schedule").format(schedule.idx), - title=_("E-Invoicing Information Missing"), - ) - elif not frappe.db.get_value("Mode of Payment", schedule.mode_of_payment, "mode_of_payment_code"): - frappe.throw( - _("Row {0}: Please set the correct code on Mode of Payment {1}").format( - schedule.idx, schedule.mode_of_payment - ), - title=_("E-Invoicing Information Missing"), - ) + for schedule in doc.payment_schedule: + if not schedule.mode_of_payment: + frappe.throw( + _("Row {0}: Please set the Mode of Payment in Payment Schedule").format(schedule.idx), + title=_("E-Invoicing Information Missing"), + ) + elif not frappe.db.get_value("Mode of Payment", schedule.mode_of_payment, "mode_of_payment_code"): + frappe.throw( + _("Row {0}: Please set the correct code on Mode of Payment {1}").format( + schedule.idx, schedule.mode_of_payment + ), + title=_("E-Invoicing Information Missing"), + ) prepare_and_attach_invoice(doc) diff --git a/erpnext/regional/report/uae_vat_201/test_uae_vat_201.py b/erpnext/regional/report/uae_vat_201/test_uae_vat_201.py index 2966b0657a4..cab84024417 100644 --- a/erpnext/regional/report/uae_vat_201/test_uae_vat_201.py +++ b/erpnext/regional/report/uae_vat_201/test_uae_vat_201.py @@ -39,11 +39,10 @@ class TestUaeVat201(TestCase): make_item("_Test UAE VAT Zero Rated Item", properties={"is_zero_rated": 1, "is_exempt": 0}) make_item("_Test UAE VAT Exempt Item", properties={"is_zero_rated": 0, "is_exempt": 1}) + def test_uae_vat_201_report(self): make_sales_invoices() - create_purchase_invoices() - def test_uae_vat_201_report(self): filters = {"company": "_Test Company UAE VAT"} total_emiratewise = get_total_emiratewise(filters) amounts_by_emirate = {} @@ -64,6 +63,37 @@ class TestUaeVat201(TestCase): self.assertEqual(get_standard_rated_expenses_total(filters), 250) self.assertEqual(get_standard_rated_expenses_tax(filters), 1) + def test_uae_vat_201_report_with_foreign_transaction(self): + pi = make_purchase_invoice( + company="_Test Company UAE VAT", + supplier="_Test UAE Supplier", + supplier_warehouse="_Test UAE VAT Supplier Warehouse - _TCUV", + warehouse="_Test UAE VAT Supplier Warehouse - _TCUV", + currency="USD", + conversion_rate=3.67, + cost_center="Main - _TCUV", + expense_account="Cost of Goods Sold - _TCUV", + item="_Test UAE VAT Item", + do_not_save=1, + uom="Nos", + ) + pi.append( + "taxes", + { + "charge_type": "On Net Total", + "account_head": "VAT 5% - _TCUV", + "cost_center": "Main - _TCUV", + "description": "VAT 5% @ 5.0", + "rate": 5.0, + }, + ) + pi.recoverable_standard_rated_expenses = 50 + pi.save().submit() + + filters = {"company": "_Test Company UAE VAT"} + self.assertEqual(get_standard_rated_expenses_total(filters), 917.5) + self.assertEqual(get_standard_rated_expenses_tax(filters), 50) + def make_company(company_name, abbr): if not frappe.db.exists("Company", company_name): diff --git a/erpnext/regional/report/uae_vat_201/uae_vat_201.py b/erpnext/regional/report/uae_vat_201/uae_vat_201.py index 1b77b3c0dd1..1a68d7dec6a 100644 --- a/erpnext/regional/report/uae_vat_201/uae_vat_201.py +++ b/erpnext/regional/report/uae_vat_201/uae_vat_201.py @@ -179,7 +179,7 @@ def get_reverse_charge_total(filters): try: return ( frappe.db.get_all( - "Purchase Invoice", filters=query_filters, fields=["sum(total)"], as_list=True, limit=1 + "Purchase Invoice", filters=query_filters, fields=["sum(base_total)"], as_list=True, limit=1 )[0][0] or 0 ) @@ -219,7 +219,7 @@ def get_reverse_charge_recoverable_total(filters): try: return ( frappe.db.get_all( - "Purchase Invoice", filters=query_filters, fields=["sum(total)"], as_list=True, limit=1 + "Purchase Invoice", filters=query_filters, fields=["sum(base_total)"], as_list=True, limit=1 )[0][0] or 0 ) @@ -274,7 +274,7 @@ def get_standard_rated_expenses_total(filters): try: return ( frappe.db.get_all( - "Purchase Invoice", filters=query_filters, fields=["sum(total)"], as_list=True, limit=1 + "Purchase Invoice", filters=query_filters, fields=["sum(base_total)"], as_list=True, limit=1 )[0][0] or 0 ) @@ -310,7 +310,7 @@ def get_tourist_tax_return_total(filters): try: return ( frappe.db.get_all( - "Sales Invoice", filters=query_filters, fields=["sum(total)"], as_list=True, limit=1 + "Sales Invoice", filters=query_filters, fields=["sum(base_total)"], as_list=True, limit=1 )[0][0] or 0 ) diff --git a/erpnext/selling/doctype/customer/customer.js b/erpnext/selling/doctype/customer/customer.js index 98301fb3ddd..11a3eecb967 100644 --- a/erpnext/selling/doctype/customer/customer.js +++ b/erpnext/selling/doctype/customer/customer.js @@ -18,7 +18,6 @@ frappe.ui.form.on("Customer", { frm.add_fetch("lead_name", "company_name", "customer_name"); frm.add_fetch("default_sales_partner", "commission_rate", "default_commission_rate"); - frm.set_query("customer_group", { is_group: 0 }); frm.set_query("default_price_list", { selling: 1 }); frm.set_query("account", "accounts", function (doc, cdt, cdn) { let d = locals[cdt][cdn]; diff --git a/erpnext/selling/doctype/customer/customer_dashboard.py b/erpnext/selling/doctype/customer/customer_dashboard.py index 161a3ba0c50..fc3c5cf1ab2 100644 --- a/erpnext/selling/doctype/customer/customer_dashboard.py +++ b/erpnext/selling/doctype/customer/customer_dashboard.py @@ -15,7 +15,7 @@ def get_data(): "transactions": [ {"label": _("Pre Sales"), "items": ["Opportunity", "Quotation"]}, {"label": _("Orders"), "items": ["Sales Order", "Delivery Note", "Sales Invoice"]}, - {"label": _("Payments"), "items": ["Payment Entry", "Bank Account"]}, + {"label": _("Payments"), "items": ["Payment Entry", "Bank Account", "Dunning"]}, { "label": _("Support"), "items": ["Issue", "Maintenance Visit", "Installation Note", "Warranty Claim"], diff --git a/erpnext/selling/doctype/product_bundle/product_bundle.py b/erpnext/selling/doctype/product_bundle/product_bundle.py index 464cff01d7e..609f45a608f 100644 --- a/erpnext/selling/doctype/product_bundle/product_bundle.py +++ b/erpnext/selling/doctype/product_bundle/product_bundle.py @@ -5,6 +5,7 @@ import frappe from frappe import _ from frappe.model.document import Document +from frappe.query_builder import Criterion from frappe.utils import get_link_to_form @@ -93,15 +94,24 @@ class ProductBundle(Document): def get_new_item_code(doctype, txt, searchfield, start, page_len, filters): product_bundles = frappe.db.get_list("Product Bundle", {"disabled": 0}, pluck="name") + if not searchfield or searchfield == "name": + searchfield = frappe.get_meta("Item").get("search_fields") + + searchfield = searchfield.split(",") + searchfield.append("name") + item = frappe.qb.DocType("Item") query = ( frappe.qb.from_(item) - .select(item.item_code, item.item_name) - .where((item.is_stock_item == 0) & (item.is_fixed_asset == 0) & (item[searchfield].like(f"%{txt}%"))) + .select(item.name, item.item_name) + .where((item.is_stock_item == 0) & (item.is_fixed_asset == 0)) .limit(page_len) .offset(start) ) + if searchfield: + query = query.where(Criterion.any([item[fieldname].like(f"%{txt}%") for fieldname in searchfield])) + if product_bundles: query = query.where(item.name.notin(product_bundles)) diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js index 3044d865c0c..2e88ba9e482 100644 --- a/erpnext/selling/doctype/quotation/quotation.js +++ b/erpnext/selling/doctype/quotation/quotation.js @@ -24,20 +24,6 @@ frappe.ui.form.on("Quotation", { frm.set_df_property("packed_items", "cannot_add_rows", true); frm.set_df_property("packed_items", "cannot_delete_rows", true); - frm.set_query("company_address", function (doc) { - if (!doc.company) { - frappe.throw(__("Please set Company")); - } - - return { - query: "frappe.contacts.doctype.address.address.address_query", - filters: { - link_doctype: "Company", - link_name: doc.company, - }, - }; - }); - frm.set_query("serial_and_batch_bundle", "packed_items", (doc, cdt, cdn) => { let row = locals[cdt][cdn]; return { @@ -71,7 +57,7 @@ frappe.ui.form.on("Quotation", { frm.trigger("set_label"); frm.trigger("toggle_reqd_lead_customer"); frm.trigger("set_dynamic_field_label"); - frm.set_value("party_name", ""); + // frm.set_value("party_name", ""); // removed to set party_name from url for crm integration frm.set_value("customer_name", ""); }, @@ -83,6 +69,9 @@ frappe.ui.form.on("Quotation", { erpnext.selling.QuotationController = class QuotationController extends erpnext.selling.SellingController { onload(doc, dt, dn) { super.onload(doc, dt, dn); + + // TODO: think of better way to do this + // this.frm.trigger("disable_customer_if_creating_from_opportunity"); } party_name() { var me = this; @@ -367,6 +356,32 @@ erpnext.selling.QuotationController = class QuotationController extends erpnext. ); dialog.show(); } + + currency() { + super.currency(); + let me = this; + const company_currency = this.get_company_currency(); + if (this.frm.doc.currency && this.frm.doc.currency !== company_currency) { + this.get_exchange_rate( + this.frm.doc.transaction_date, + this.frm.doc.currency, + company_currency, + function (exchange_rate) { + if (exchange_rate != me.frm.doc.conversion_rate) { + me.set_margin_amount_based_on_currency(exchange_rate); + me.set_actual_charges_based_on_currency(exchange_rate); + me.frm.set_value("conversion_rate", exchange_rate); + } + } + ); + } + } + + disable_customer_if_creating_from_opportunity(doc) { + if (doc.opportunity) { + this.frm.set_df_property("party_name", "read_only", 1); + } + } }; cur_frm.script_manager.make(erpnext.selling.QuotationController); diff --git a/erpnext/selling/doctype/quotation/quotation.json b/erpnext/selling/doctype/quotation/quotation.json index 982e7326775..4d257ff69e7 100644 --- a/erpnext/selling/doctype/quotation/quotation.json +++ b/erpnext/selling/doctype/quotation/quotation.json @@ -65,6 +65,7 @@ "grand_total", "rounding_adjustment", "rounded_total", + "disable_rounded_total", "in_words", "section_break_44", "apply_discount_on", @@ -95,8 +96,9 @@ "shipping_address", "company_address_section", "company_address", - "column_break_87", "company_address_display", + "column_break_87", + "company_contact_person", "terms_tab", "payment_schedule_section", "payment_terms_template", @@ -661,6 +663,7 @@ "width": "200px" }, { + "depends_on": "eval:!doc.disable_rounded_total", "fieldname": "base_rounding_adjustment", "fieldtype": "Currency", "label": "Rounding Adjustment (Company Currency)", @@ -709,6 +712,7 @@ "width": "200px" }, { + "depends_on": "eval:!doc.disable_rounded_total", "fieldname": "rounding_adjustment", "fieldtype": "Currency", "label": "Rounding Adjustment", @@ -1067,13 +1071,26 @@ "fieldname": "named_place", "fieldtype": "Data", "label": "Named Place" + }, + { + "default": "0", + "fieldname": "disable_rounded_total", + "fieldtype": "Check", + "label": "Disable Rounded Total" + }, + { + "fieldname": "company_contact_person", + "fieldtype": "Link", + "label": "Company Contact Person", + "options": "Contact", + "print_hide": 1 } ], "icon": "fa fa-shopping-cart", "idx": 82, "is_submittable": 1, "links": [], - "modified": "2024-03-20 16:04:21.567847", + "modified": "2024-11-26 12:43:29.293637", "modified_by": "Administrator", "module": "Selling", "name": "Quotation", diff --git a/erpnext/selling/doctype/quotation/quotation.py b/erpnext/selling/doctype/quotation/quotation.py index 2a4b04b9db5..48614671da2 100644 --- a/erpnext/selling/doctype/quotation/quotation.py +++ b/erpnext/selling/doctype/quotation/quotation.py @@ -50,6 +50,7 @@ class Quotation(SellingController): company: DF.Link company_address: DF.Link | None company_address_display: DF.SmallText | None + company_contact_person: DF.Link | None competitors: DF.TableMultiSelect[CompetitorDetail] contact_display: DF.SmallText | None contact_email: DF.Data | None @@ -61,6 +62,7 @@ class Quotation(SellingController): customer_address: DF.Link | None customer_group: DF.Link | None customer_name: DF.Data | None + disable_rounded_total: DF.Check discount_amount: DF.Currency enq_det: DF.Text | None grand_total: DF.Currency @@ -220,6 +222,10 @@ class Quotation(SellingController): "Lead", self.party_name, ["lead_name", "company_name"] ) self.customer_name = company_name or lead_name + elif self.party_name and self.quotation_to == "Prospect": + self.customer_name = self.party_name + elif self.party_name and self.quotation_to == "CRM Deal": + self.customer_name = frappe.db.get_value("CRM Deal", self.party_name, "organization") def update_opportunity(self, status): for opportunity in set(d.prevdoc_docname for d in self.get("items")): @@ -365,24 +371,25 @@ def _make_sales_order(source_name, target_doc=None, ignore_permissions=False): if customer: target.customer = customer.name target.customer_name = customer.customer_name + + # sales team + if not target.get("sales_team"): + for d in customer.get("sales_team") or []: + target.append( + "sales_team", + { + "sales_person": d.sales_person, + "allocated_percentage": d.allocated_percentage or None, + "commission_rate": d.commission_rate, + }, + ) + if source.referral_sales_partner: target.sales_partner = source.referral_sales_partner target.commission_rate = frappe.get_value( "Sales Partner", source.referral_sales_partner, "commission_rate" ) - # sales team - if not target.get("sales_team"): - for d in customer.get("sales_team") or []: - target.append( - "sales_team", - { - "sales_person": d.sales_person, - "allocated_percentage": d.allocated_percentage or None, - "commission_rate": d.commission_rate, - }, - ) - target.flags.ignore_permissions = ignore_permissions target.run_method("set_missing_values") target.run_method("calculate_taxes_and_totals") @@ -404,7 +411,11 @@ def _make_sales_order(source_name, target_doc=None, ignore_permissions=False): 2. If selections: Is Alternative Item/Has Alternative Item: Map if selected and adequate qty 3. If selections: Simple row: Map if adequate qty """ - has_qty = item.qty > 0 + balance_qty = item.qty - ordered_items.get(item.item_code, 0.0) + if balance_qty <= 0: + return False + + has_qty = balance_qty if not selected_rows: return not item.is_alternative @@ -426,7 +437,7 @@ def _make_sales_order(source_name, target_doc=None, ignore_permissions=False): "postprocess": update_item, "condition": can_map_row, }, - "Sales Taxes and Charges": {"doctype": "Sales Taxes and Charges", "add_if_empty": True}, + "Sales Taxes and Charges": {"doctype": "Sales Taxes and Charges", "reset_value": True}, "Sales Team": {"doctype": "Sales Team", "add_if_empty": True}, "Payment Schedule": {"doctype": "Payment Schedule", "add_if_empty": True}, }, @@ -491,7 +502,7 @@ def _make_sales_invoice(source_name, target_doc=None, ignore_permissions=False): "postprocess": update_item, "condition": lambda row: not row.is_alternative, }, - "Sales Taxes and Charges": {"doctype": "Sales Taxes and Charges", "add_if_empty": True}, + "Sales Taxes and Charges": {"doctype": "Sales Taxes and Charges", "reset_value": True}, "Sales Team": {"doctype": "Sales Team", "add_if_empty": True}, }, target_doc, @@ -562,7 +573,7 @@ def handle_mandatory_error(e, customer, lead_name): from frappe.utils import get_link_to_form mandatory_fields = e.args[0].split(":")[1].split(",") - mandatory_fields = [customer.meta.get_label(field.strip()) for field in mandatory_fields] + mandatory_fields = [_(customer.meta.get_label(field.strip())) for field in mandatory_fields] frappe.local.message_log = [] message = _("Could not auto create Customer due to the following missing mandatory field(s):") + "
" diff --git a/erpnext/selling/doctype/quotation/quotation_list.js b/erpnext/selling/doctype/quotation/quotation_list.js index ae744b9cba3..b795c3fe0bc 100644 --- a/erpnext/selling/doctype/quotation/quotation_list.js +++ b/erpnext/selling/doctype/quotation/quotation_list.js @@ -12,13 +12,17 @@ frappe.listview_settings["Quotation"] = { }; } - listview.page.add_action_item(__("Sales Order"), () => { - erpnext.bulk_transaction_processing.create(listview, "Quotation", "Sales Order"); - }); + if (frappe.model.can_create("Sales Order")) { + listview.page.add_action_item(__("Sales Order"), () => { + erpnext.bulk_transaction_processing.create(listview, "Quotation", "Sales Order"); + }); + } - listview.page.add_action_item(__("Sales Invoice"), () => { - erpnext.bulk_transaction_processing.create(listview, "Quotation", "Sales Invoice"); - }); + if (frappe.model.can_create("Sales Invoice")) { + listview.page.add_action_item(__("Sales Invoice"), () => { + erpnext.bulk_transaction_processing.create(listview, "Quotation", "Sales Invoice"); + }); + } }, get_indicator: function (doc) { diff --git a/erpnext/selling/doctype/quotation/test_quotation.py b/erpnext/selling/doctype/quotation/test_quotation.py index 7b66b7a251a..b41637143e5 100644 --- a/erpnext/selling/doctype/quotation/test_quotation.py +++ b/erpnext/selling/doctype/quotation/test_quotation.py @@ -30,6 +30,38 @@ class TestQuotation(FrappeTestCase): self.assertTrue(sales_order.get("payment_schedule")) + def test_do_not_add_ordered_items_in_new_sales_order(self): + from erpnext.selling.doctype.quotation.quotation import make_sales_order + from erpnext.stock.doctype.item.test_item import make_item + + item = make_item("_Test Item for Quotation for SO", {"is_stock_item": 1}) + + quotation = make_quotation(qty=5, do_not_submit=True) + quotation.append( + "items", + { + "item_code": item.name, + "qty": 5, + "rate": 100, + "conversion_factor": 1, + "uom": item.stock_uom, + "warehouse": "_Test Warehouse - _TC", + "stock_uom": item.stock_uom, + }, + ) + quotation.submit() + + sales_order = make_sales_order(quotation.name) + sales_order.delivery_date = nowdate() + self.assertEqual(len(sales_order.items), 2) + sales_order.remove(sales_order.items[1]) + sales_order.submit() + + sales_order = make_sales_order(quotation.name) + self.assertEqual(len(sales_order.items), 1) + self.assertEqual(sales_order.items[0].item_code, item.name) + self.assertEqual(sales_order.items[0].qty, 5.0) + def test_gross_profit(self): from erpnext.stock.doctype.item.test_item import make_item from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry @@ -561,12 +593,50 @@ class TestQuotation(FrappeTestCase): "description": "VAT", "doctype": "Sales Taxes and Charges", "rate": 10, + "included_in_print_rate": 1, }, ) quotation.submit() - self.assertEqual(quotation.net_total, 290) - self.assertEqual(quotation.grand_total, 319) + self.assertEqual(round(quotation.items[1].net_rate, 2), 136.36) + self.assertEqual(round(quotation.items[1].amount, 2), 150) + + self.assertEqual(round(quotation.items[2].net_rate, 2), 163.64) + self.assertEqual(round(quotation.items[2].amount, 2), 180) + + self.assertEqual(round(quotation.net_total, 2), 263.64) + self.assertEqual(round(quotation.total_taxes_and_charges, 2), 26.36) + self.assertEqual(quotation.grand_total, 290) + + def test_amount_calculation_for_alternative_items(self): + """Make sure that the amount is calculated correctly for alternative items when the qty is changed.""" + from erpnext.stock.doctype.item.test_item import make_item + + item_list = [] + stock_items = { + "_Test Simple Item 1": 100, + "_Test Alt 1": 120, + } + + for item, rate in stock_items.items(): + make_item(item, {"is_stock_item": 0}) + item_list.append( + { + "item_code": item, + "qty": 1, + "rate": rate, + "is_alternative": "Alt" in item, + } + ) + + quotation = make_quotation(item_list=item_list, do_not_submit=1) + + self.assertEqual(quotation.items[1].amount, 120) + + quotation.items[1].qty = 2 + quotation.save() + + self.assertEqual(quotation.items[1].amount, 240) def test_alternative_items_sales_order_mapping_with_stock_items(self): from erpnext.selling.doctype.quotation.quotation import make_sales_order @@ -677,6 +747,20 @@ class TestQuotation(FrappeTestCase): item_doc.taxes = [] item_doc.save() + def test_grand_total_and_rounded_total_values(self): + quotation = make_quotation(qty=6, rate=12.3, do_not_submit=1) + + self.assertEqual(quotation.grand_total, 73.8) + self.assertEqual(quotation.rounding_adjustment, 0.2) + self.assertEqual(quotation.rounded_total, 74) + + quotation.disable_rounded_total = 1 + quotation.save() + + self.assertEqual(quotation.grand_total, 73.8) + self.assertEqual(quotation.rounding_adjustment, 0) + self.assertEqual(quotation.rounded_total, 0) + test_records = frappe.get_test_records("Quotation") diff --git a/erpnext/selling/doctype/quotation_item/quotation_item.json b/erpnext/selling/doctype/quotation_item/quotation_item.json index 13eda8b4c88..2818b49913d 100644 --- a/erpnext/selling/doctype/quotation_item/quotation_item.json +++ b/erpnext/selling/doctype/quotation_item/quotation_item.json @@ -24,6 +24,10 @@ "uom", "conversion_factor", "stock_qty", + "available_quantity_section", + "actual_qty", + "column_break_ylrv", + "company_total_stock", "section_break_16", "price_list_rate", "base_price_list_rate", @@ -71,7 +75,6 @@ "prevdoc_docname", "item_balance", "projected_qty", - "actual_qty", "col_break4", "stock_balance", "item_tax_rate", @@ -453,6 +456,7 @@ "fieldtype": "Column Break" }, { + "allow_on_submit": 1, "fieldname": "projected_qty", "fieldtype": "Float", "label": "Projected Qty", @@ -461,9 +465,10 @@ "report_hide": 1 }, { + "allow_on_submit": 1, "fieldname": "actual_qty", "fieldtype": "Float", - "label": "Actual Qty", + "label": "Qty (Warehouse)", "no_copy": 1, "print_hide": 1, "read_only": 1, @@ -669,16 +674,31 @@ "fieldtype": "Currency", "label": "Distributed Discount Amount", "options": "currency" + }, + { + "fieldname": "available_quantity_section", + "fieldtype": "Section Break", + "label": "Available Quantity" + }, + { + "fieldname": "column_break_ylrv", + "fieldtype": "Column Break" + }, + { + "allow_on_submit": 1, + "fieldname": "company_total_stock", + "fieldtype": "Float", + "label": "Qty (Company)", + "no_copy": 1, + "print_hide": 1, + "read_only": 1, + "report_hide": 1 } ], "idx": 1, "istable": 1, "links": [], -<<<<<<< HEAD - "modified": "2023-11-14 18:24:24.619832", -======= - "modified": "2024-06-02 06:21:09.508680", ->>>>>>> 0bab6f34c1 (fix: distributed discounts on si) + "modified": "2024-12-12 13:49:18.765883", "modified_by": "Administrator", "module": "Selling", "name": "Quotation Item", @@ -688,4 +708,4 @@ "sort_order": "DESC", "states": [], "track_changes": 1 -} \ No newline at end of file +} diff --git a/erpnext/selling/doctype/quotation_item/quotation_item.py b/erpnext/selling/doctype/quotation_item/quotation_item.py index 4aeb1ba0ec8..bbdd8643593 100644 --- a/erpnext/selling/doctype/quotation_item/quotation_item.py +++ b/erpnext/selling/doctype/quotation_item/quotation_item.py @@ -27,6 +27,7 @@ class QuotationItem(Document): blanket_order: DF.Link | None blanket_order_rate: DF.Currency brand: DF.Link | None + company_total_stock: DF.Float conversion_factor: DF.Float customer_item_code: DF.Data | None description: DF.TextEditor | None diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js index cdcd1047bd8..de4053458e4 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.js +++ b/erpnext/selling/doctype/sales_order/sales_order.js @@ -26,20 +26,6 @@ frappe.ui.form.on("Sales Order", { return doc.stock_qty <= doc.delivered_qty ? "green" : "orange"; }); - frm.set_query("company_address", function (doc) { - if (!doc.company) { - frappe.throw(__("Please set Company")); - } - - return { - query: "frappe.contacts.doctype.address.address.address_query", - filters: { - link_doctype: "Company", - link_name: doc.company, - }, - }; - }); - frm.set_query("bom_no", "items", function (doc, cdt, cdn) { var row = locals[cdt][cdn]; return { @@ -57,8 +43,8 @@ frappe.ui.form.on("Sales Order", { if (frm.doc.docstatus === 1) { if ( frm.doc.status !== "Closed" && - flt(frm.doc.per_delivered, 2) < 100 && - flt(frm.doc.per_billed, 2) < 100 && + flt(frm.doc.per_delivered) < 100 && + flt(frm.doc.per_billed) < 100 && frm.has_perm("write") ) { frm.add_custom_button(__("Update Items"), () => { @@ -160,7 +146,7 @@ frappe.ui.form.on("Sales Order", { target: frm, setters: [ { - label: "Supplier", + label: __("Supplier"), fieldname: "supplier", fieldtype: "Link", options: "Supplier", @@ -604,7 +590,7 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex __("Status") ); - if (flt(doc.per_delivered, 2) < 100 || flt(doc.per_billed, 2) < 100) { + if (flt(doc.per_delivered) < 100 || flt(doc.per_billed) < 100) { // close this.frm.add_custom_button(__("Close"), () => this.close_sales_order(), __("Status")); } @@ -627,7 +613,7 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex ) && !this.frm.doc.skip_delivery_note; if (this.frm.has_perm("submit")) { - if (flt(doc.per_delivered, 2) < 100 || flt(doc.per_billed, 2) < 100) { + if (flt(doc.per_delivered) < 100 || flt(doc.per_billed) < 100) { // hold this.frm.add_custom_button( __("Hold"), @@ -645,8 +631,8 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex if ( (!doc.__onload || !doc.__onload.has_reserved_stock) && - flt(doc.per_picked, 2) < 100 && - flt(doc.per_delivered, 2) < 100 && + flt(doc.per_picked) < 100 && + flt(doc.per_delivered) < 100 && frappe.model.can_create("Pick List") ) { this.frm.add_custom_button( @@ -664,7 +650,7 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex // delivery note if ( - flt(doc.per_delivered, 2) < 100 && + flt(doc.per_delivered) < 100 && (order_is_a_sale || order_is_a_custom_sale) && allow_delivery ) { @@ -686,7 +672,7 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex } // sales invoice - if (flt(doc.per_billed, 2) < 100 && frappe.model.can_create("Sales Invoice")) { + if (flt(doc.per_billed) < 100 && frappe.model.can_create("Sales Invoice")) { this.frm.add_custom_button( __("Sales Invoice"), () => me.make_sales_invoice(), @@ -697,8 +683,7 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex // material request if ( (!doc.order_type || - ((order_is_a_sale || order_is_a_custom_sale) && - flt(doc.per_delivered, 2) < 100)) && + ((order_is_a_sale || order_is_a_custom_sale) && flt(doc.per_delivered) < 100)) && frappe.model.can_create("Material Request") ) { this.frm.add_custom_button( @@ -723,7 +708,7 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex } // maintenance - if (flt(doc.per_delivered, 2) < 100 && (order_is_maintenance || order_is_a_custom_sale)) { + if (flt(doc.per_delivered) < 100 && (order_is_maintenance || order_is_a_custom_sale)) { if (frappe.model.can_create("Maintenance Visit")) { this.frm.add_custom_button( __("Maintenance Visit"), @@ -741,7 +726,7 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex } // project - if (flt(doc.per_delivered, 2) < 100 && frappe.model.can_create("Project")) { + if (flt(doc.per_delivered) < 100 && frappe.model.can_create("Project")) { this.frm.add_custom_button(__("Project"), () => this.make_project(), __("Create")); } @@ -769,10 +754,7 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex } } // payment request - if ( - flt(doc.per_billed, precision("per_billed", doc)) < - 100 + frappe.boot.sysdefaults.over_billing_allowance - ) { + if (flt(doc.per_billed) < 100 + frappe.boot.sysdefaults.over_billing_allowance) { this.frm.add_custom_button( __("Payment Request"), () => this.make_payment_request(), @@ -801,7 +783,7 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex target: me.frm, setters: [ { - label: "Customer", + label: __("Customer"), fieldname: "party_name", fieldtype: "Link", options: "Customer", @@ -856,7 +838,7 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex } else { const fields = [ { - label: "Items", + label: __("Items"), fieldtype: "Table", fieldname: "items", description: __("Select BOM and Qty for Production"), @@ -1211,7 +1193,7 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex { fieldname: "items_for_po", fieldtype: "Table", - label: "Select Items", + label: __("Select Items"), fields: [ { fieldtype: "Data", @@ -1251,7 +1233,7 @@ erpnext.selling.SalesOrderController = class SalesOrderController extends erpnex ], }, ], - primary_action_label: "Create Purchase Order", + primary_action_label: __("Create Purchase Order"), primary_action(args) { if (!args) return; diff --git a/erpnext/selling/doctype/sales_order/sales_order.json b/erpnext/selling/doctype/sales_order/sales_order.json index 0695c3fd9c4..4db7bf6f003 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.json +++ b/erpnext/selling/doctype/sales_order/sales_order.json @@ -113,8 +113,9 @@ "dispatch_address", "col_break46", "company_address", - "column_break_92", "company_address_display", + "column_break_92", + "company_contact_person", "payment_schedule_section", "payment_terms_section", "payment_terms_template", @@ -1150,7 +1151,8 @@ "label": "Project", "oldfieldname": "project", "oldfieldtype": "Link", - "options": "Project" + "options": "Project", + "search_index": 1 }, { "fieldname": "party_account_currency", @@ -1640,13 +1642,20 @@ "no_copy": 1, "print_hide": 1, "report_hide": 1 + }, + { + "fieldname": "company_contact_person", + "fieldtype": "Link", + "label": "Company Contact Person", + "options": "Contact", + "print_hide": 1 } ], "icon": "fa fa-file-text", "idx": 105, "is_submittable": 1, "links": [], - "modified": "2024-05-23 16:35:54.905804", + "modified": "2025-02-06 16:02:20.320877", "modified_by": "Administrator", "module": "Selling", "name": "Sales Order", @@ -1724,4 +1733,4 @@ "title_field": "customer_name", "track_changes": 1, "track_seen": 1 -} \ No newline at end of file +} diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index 570677aad78..f7bf732e8e8 100755 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -35,7 +35,7 @@ from erpnext.stock.doctype.stock_reservation_entry.stock_reservation_entry impor get_sre_reserved_qty_details_for_voucher, has_reserved_stock, ) -from erpnext.stock.get_item_details import get_default_bom, get_price_list_rate +from erpnext.stock.get_item_details import get_bin_details, get_default_bom, get_price_list_rate from erpnext.stock.stock_balance import get_reserved_qty, update_bin_qty form_grid_templates = {"items": "templates/form_grid/item_grid.html"} @@ -85,6 +85,7 @@ class SalesOrder(SellingController): company: DF.Link company_address: DF.Link | None company_address_display: DF.SmallText | None + company_contact_person: DF.Link | None contact_display: DF.SmallText | None contact_email: DF.Data | None contact_mobile: DF.SmallText | None @@ -185,6 +186,8 @@ class SalesOrder(SellingController): super().__init__(*args, **kwargs) def onload(self) -> None: + super().onload() + if frappe.db.get_single_value("Stock Settings", "enable_stock_reservation"): if self.has_unreserved_stock(): self.set_onload("has_unreserved_stock", True) @@ -582,7 +585,7 @@ class SalesOrder(SellingController): item_delivered_qty = item_delivered_qty[0][0] if item_delivered_qty else 0 item.db_set("delivered_qty", flt(item_delivered_qty), update_modified=False) - delivered_qty += item.delivered_qty + delivered_qty += min(item.delivered_qty, item.qty) tot_qty += item.qty if tot_qty != 0: @@ -836,6 +839,9 @@ def make_material_request(source_name, target_doc=None): target.project = source_parent.project target.qty = get_remaining_qty(source) target.stock_qty = flt(target.qty) * flt(target.conversion_factor) + target.actual_qty = get_bin_details( + target.item_code, target.warehouse, source_parent.company, True + ).get("actual_qty", 0) args = target.as_dict().copy() args.update( @@ -866,7 +872,12 @@ def make_material_request(source_name, target_doc=None): }, "Sales Order Item": { "doctype": "Material Request Item", - "field_map": {"name": "sales_order_item", "parent": "sales_order"}, + "field_map": { + "name": "sales_order_item", + "parent": "sales_order", + "delivery_date": "schedule_date", + "bom_no": "bom_no", + }, "condition": lambda item: not frappe.db.exists( "Product Bundle", {"name": item.item_code, "disabled": 0} ) @@ -931,7 +942,7 @@ def make_delivery_note(source_name, target_doc=None, kwargs=None): mapper = { "Sales Order": {"doctype": "Delivery Note", "validation": {"docstatus": ["=", 1]}}, - "Sales Taxes and Charges": {"doctype": "Sales Taxes and Charges", "add_if_empty": True}, + "Sales Taxes and Charges": {"doctype": "Sales Taxes and Charges", "reset_value": True}, "Sales Team": {"doctype": "Sales Team", "add_if_empty": True}, } @@ -1034,7 +1045,7 @@ def make_delivery_note(source_name, target_doc=None, kwargs=None): ignore_permissions=True, ) - dn_item.qty = flt(sre.reserved_qty) * flt(dn_item.get("conversion_factor", 1)) + dn_item.qty = flt(sre.reserved_qty) / flt(dn_item.get("conversion_factor", 1)) if sre.reservation_based_on == "Serial and Batch" and (sre.has_serial_no or sre.has_batch_no): dn_item.serial_and_batch_bundle = get_ssb_bundle_for_voucher(sre) @@ -1123,7 +1134,10 @@ def make_sales_invoice(source_name, target_doc=None, ignore_permissions=False): "condition": lambda doc: doc.qty and (doc.base_amount == 0 or abs(doc.billed_amt) < abs(doc.amount)), }, - "Sales Taxes and Charges": {"doctype": "Sales Taxes and Charges", "add_if_empty": True}, + "Sales Taxes and Charges": { + "doctype": "Sales Taxes and Charges", + "reset_value": True, + }, "Sales Team": {"doctype": "Sales Team", "add_if_empty": True}, }, target_doc, @@ -1222,7 +1236,10 @@ def get_events(start, end, filters=None): """, {"start": start, "end": end}, as_dict=True, - update={"allDay": 0}, + update={ + "allDay": 0, + "convertToUserTz": 0, + }, ) return data @@ -1339,11 +1356,14 @@ def make_purchase_order_for_default_supplier(source_name, selected_items=None, t "discount_percentage", "discount_amount", "pricing_rules", + "margin_type", + "margin_rate_or_amount", ], "postprocess": update_item, "condition": lambda doc: doc.ordered_qty < doc.stock_qty and doc.supplier == supplier - and doc.item_code in items_to_map, + and doc.item_code in items_to_map + and doc.delivered_by_supplier == 1, }, }, target_doc, @@ -1392,13 +1412,23 @@ def make_purchase_order(source_name, selected_items=None, target_doc=None): target.payment_schedule = [] if is_drop_ship_order(target): - target.customer = source.customer - target.customer_name = source.customer_name - target.shipping_address = source.shipping_address_name + if source.shipping_address_name: + target.shipping_address = source.shipping_address_name + target.shipping_address_display = source.shipping_address + else: + target.shipping_address = source.customer_address + target.shipping_address_display = source.address_display + + target.customer_contact_person = source.contact_person + target.customer_contact_display = source.contact_display + target.customer_contact_mobile = source.contact_mobile + target.customer_contact_email = source.contact_email else: target.customer = target.customer_name = target.shipping_address = None target.run_method("set_missing_values") + if not target.taxes: + target.append_taxes_from_item_tax_template() target.run_method("calculate_taxes_and_totals") def update_item(source, target, source_parent): @@ -1479,6 +1509,7 @@ def make_purchase_order(source_name, selected_items=None, target_doc=None): ) set_delivery_date(doc.items, source_name) + doc.set_onload("load_after_mapping", False) return doc diff --git a/erpnext/selling/doctype/sales_order/sales_order_calendar.js b/erpnext/selling/doctype/sales_order/sales_order_calendar.js index f4c0e2ba72a..59a32bde7a3 100644 --- a/erpnext/selling/doctype/sales_order/sales_order_calendar.js +++ b/erpnext/selling/doctype/sales_order/sales_order_calendar.js @@ -8,6 +8,7 @@ frappe.views.calendar["Sales Order"] = { id: "name", title: "customer_name", allDay: "allDay", + convertToUserTz: "convertToUserTz", }, gantt: true, filters: [ diff --git a/erpnext/selling/doctype/sales_order/sales_order_dashboard.py b/erpnext/selling/doctype/sales_order/sales_order_dashboard.py index c84009725b8..7c1c0deb33f 100644 --- a/erpnext/selling/doctype/sales_order/sales_order_dashboard.py +++ b/erpnext/selling/doctype/sales_order/sales_order_dashboard.py @@ -15,6 +15,8 @@ def get_data(): }, "internal_links": { "Quotation": ["items", "prevdoc_docname"], + "BOM": ["items", "bom_no"], + "Blanket Order": ["items", "blanket_order"], }, "transactions": [ { @@ -23,7 +25,7 @@ def get_data(): }, {"label": _("Purchasing"), "items": ["Material Request", "Purchase Order"]}, {"label": _("Projects"), "items": ["Project"]}, - {"label": _("Manufacturing"), "items": ["Work Order"]}, + {"label": _("Manufacturing"), "items": ["Work Order", "BOM", "Blanket Order"]}, {"label": _("Reference"), "items": ["Quotation", "Auto Repeat", "Stock Reservation Entry"]}, {"label": _("Payment"), "items": ["Payment Entry", "Payment Request", "Journal Entry"]}, ], diff --git a/erpnext/selling/doctype/sales_order/sales_order_list.js b/erpnext/selling/doctype/sales_order/sales_order_list.js index 5ccd5d551cb..6bad47c2693 100644 --- a/erpnext/selling/doctype/sales_order/sales_order_list.js +++ b/erpnext/selling/doctype/sales_order/sales_order_list.js @@ -20,14 +20,22 @@ frappe.listview_settings["Sales Order"] = { return [__("On Hold"), "orange", "status,=,On Hold"]; } else if (doc.status === "Completed") { return [__("Completed"), "green", "status,=,Completed"]; - } else if (!doc.skip_delivery_note && flt(doc.per_delivered, 2) < 100) { + } else if (!doc.skip_delivery_note && flt(doc.per_delivered) < 100) { if (frappe.datetime.get_diff(doc.delivery_date) < 0) { // not delivered & overdue - return [__("Overdue"), "red", "per_delivered,<,100|delivery_date,<,Today|status,!=,Closed"]; + return [ + __("Overdue"), + "red", + "per_delivered,<,100|delivery_date,<,Today|status,!=,Closed|docstatus,=,1", + ]; } else if (flt(doc.grand_total) === 0) { // not delivered (zeroount order) - return [__("To Deliver"), "orange", "per_delivered,<,100|grand_total,=,0|status,!=,Closed"]; - } else if (flt(doc.per_billed, 2) < 100) { + return [ + __("To Deliver"), + "orange", + "per_delivered,<,100|grand_total,=,0|status,!=,Closed|docstatus,=,1", + ]; + } else if (flt(doc.per_billed) < 100) { // not delivered & not billed return [ __("To Deliver and Bill"), @@ -39,13 +47,13 @@ frappe.listview_settings["Sales Order"] = { return [__("To Deliver"), "orange", "per_delivered,<,100|per_billed,=,100|status,!=,Closed"]; } } else if ( - flt(doc.per_delivered, 2) === 100 && + flt(doc.per_delivered) === 100 && flt(doc.grand_total) !== 0 && - flt(doc.per_billed, 2) < 100 + flt(doc.per_billed) < 100 ) { // to bill return [__("To Bill"), "orange", "per_delivered,=,100|per_billed,<,100|status,!=,Closed"]; - } else if (doc.skip_delivery_note && flt(doc.per_billed, 2) < 100) { + } else if (doc.skip_delivery_note && flt(doc.per_billed) < 100) { return [__("To Bill"), "orange", "per_billed,<,100|status,!=,Closed"]; } }, @@ -60,16 +68,22 @@ frappe.listview_settings["Sales Order"] = { listview.call_for_selected_items(method, { status: "Submitted" }); }); - listview.page.add_action_item(__("Sales Invoice"), () => { - erpnext.bulk_transaction_processing.create(listview, "Sales Order", "Sales Invoice"); - }); + if (frappe.model.can_create("Sales Invoice")) { + listview.page.add_action_item(__("Sales Invoice"), () => { + erpnext.bulk_transaction_processing.create(listview, "Sales Order", "Sales Invoice"); + }); + } - listview.page.add_action_item(__("Delivery Note"), () => { - erpnext.bulk_transaction_processing.create(listview, "Sales Order", "Delivery Note"); - }); + if (frappe.model.can_create("Delivery Note")) { + listview.page.add_action_item(__("Delivery Note"), () => { + erpnext.bulk_transaction_processing.create(listview, "Sales Order", "Delivery Note"); + }); + } - listview.page.add_action_item(__("Advance Payment"), () => { - erpnext.bulk_transaction_processing.create(listview, "Sales Order", "Payment Entry"); - }); + if (frappe.model.can_create("Payment Entry")) { + listview.page.add_action_item(__("Advance Payment"), () => { + erpnext.bulk_transaction_processing.create(listview, "Sales Order", "Payment Entry"); + }); + } }, }; diff --git a/erpnext/selling/doctype/sales_order/test_sales_order.py b/erpnext/selling/doctype/sales_order/test_sales_order.py index 53c629a90b4..82a8535a66d 100644 --- a/erpnext/selling/doctype/sales_order/test_sales_order.py +++ b/erpnext/selling/doctype/sales_order/test_sales_order.py @@ -30,6 +30,7 @@ from erpnext.selling.doctype.sales_order.sales_order import ( ) from erpnext.stock.doctype.item.test_item import make_item from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry +from erpnext.stock.get_item_details import get_bin_details class TestSalesOrder(AccountsTestMixin, FrappeTestCase): @@ -96,6 +97,12 @@ class TestSalesOrder(AccountsTestMixin, FrappeTestCase): self.assertEqual(mr.material_request_type, "Purchase") self.assertEqual(len(mr.get("items")), len(so.get("items"))) + for item in mr.get("items"): + actual_qty = get_bin_details(item.item_code, item.warehouse, mr.company, True).get( + "actual_qty", 0 + ) + self.assertEqual(flt(item.actual_qty), actual_qty) + def test_make_delivery_note(self): so = make_sales_order(do_not_submit=True) @@ -1680,13 +1687,13 @@ class TestSalesOrder(AccountsTestMixin, FrappeTestCase): wo.submit() make_stock_entry( item_code="_Test Item", - target="Work In Progress - _TC", + target="_Test Warehouse - _TC", qty=4, basic_rate=100, # Stock RM ) make_stock_entry( item_code="_Test Item Home Desktop 100", # Stock RM - target="Work In Progress - _TC", + target="_Test Warehouse - _TC", qty=4, basic_rate=100, ) @@ -2090,7 +2097,46 @@ class TestSalesOrder(AccountsTestMixin, FrappeTestCase): frappe.db.set_single_value("Stock Settings", "update_existing_price_list_rate", 0) frappe.db.set_single_value("Stock Settings", "auto_insert_price_list_rate_if_missing", 0) - def test_credit_limit_on_so_reopning(self): + def test_delivery_note_rate_on_change_of_warehouse(self): + from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse + + item = make_item( + "_Test Batch Item for Delivery Note Rate", + { + "has_batch_no": 1, + "create_new_batch": 1, + "batch_number_series": "BH-SDDTBIFRM-.#####", + }, + ) + + frappe.db.set_single_value("Stock Settings", "auto_insert_price_list_rate_if_missing", 1) + so = make_sales_order( + item_code=item.name, rate=27648.00, price_list_rate=27648.00, qty=1, do_not_submit=True + ) + + so.items[0].rate = 90 + so.save() + self.assertTrue(so.items[0].discount_amount == 27558.0) + so.submit() + + warehouse = create_warehouse("NW Warehouse FOR Rate", company=so.company) + + make_stock_entry( + item_code=item.name, + qty=2, + target=warehouse, + basic_rate=100, + company=so.company, + use_serial_batch_fields=1, + ) + + dn = make_delivery_note(so.name) + dn.items[0].warehouse = warehouse + dn.save() + + self.assertEqual(dn.items[0].rate, 90) + + def test_credit_limit_on_so_reopening(self): # set credit limit company = "_Test Company" customer = frappe.get_doc("Customer", self.customer) @@ -2102,16 +2148,50 @@ class TestSalesOrder(AccountsTestMixin, FrappeTestCase): so1 = make_sales_order(qty=9, rate=100, do_not_submit=True) so1.customer = self.customer + so1.customer_address = so1.shipping_address_name = None so1.save().submit() so1.update_status("Closed") so2 = make_sales_order(qty=9, rate=100, do_not_submit=True) so2.customer = self.customer + so2.customer_address = so2.shipping_address_name = None so2.save().submit() self.assertRaises(frappe.ValidationError, so1.update_status, "Draft") + def test_item_tax_transfer_from_sales_to_purchase(self): + from erpnext.selling.doctype.sales_order.sales_order import make_purchase_order + + item_tax = frappe.new_doc("Item Tax Template") + item_tax.title = "Test Item Tax Template" + item_tax.company = "_Test Company" + item_tax.append("taxes", {"tax_type": "_Test Account Service Tax - _TC", "tax_rate": 2}) + item_tax.save() + + item_group = frappe.get_doc("Item Group", "_Test Item Group") + item_group.append("taxes", {"item_tax_template": "Test Item Tax Template - _TC"}) + item_group.save() + + so = make_sales_order(item_code="_Test Item", qty=1, do_not_submit=1) + so.append( + "taxes", + { + "account_head": "_Test Account Service Tax - _TC", + "charge_type": "On Net Total", + "description": "TDS", + "doctype": "Sales Taxes and Charges", + "rate": 2, + }, + ) + so.submit() + + po = make_purchase_order(so.name, selected_items=so.items) + po.supplier = "_Test Supplier" + po.items[0].rate = 100 + po.submit() + self.assertEqual(po.taxes[0].tax_amount, 2) + def automatically_fetch_payment_terms(enable=1): accounts_settings = frappe.get_doc("Accounts Settings") diff --git a/erpnext/selling/doctype/sales_order_item/sales_order_item.json b/erpnext/selling/doctype/sales_order_item/sales_order_item.json index ba183586bcd..21054a9d81b 100644 --- a/erpnext/selling/doctype/sales_order_item/sales_order_item.json +++ b/erpnext/selling/doctype/sales_order_item/sales_order_item.json @@ -79,11 +79,14 @@ "against_blanket_order", "blanket_order", "blanket_order_rate", + "available_quantity_section", + "actual_qty", + "column_break_jpky", + "company_total_stock", "manufacturing_section_section", "bom_no", "planning_section", "projected_qty", - "actual_qty", "ordered_qty", "planned_qty", "production_plan_qty", @@ -104,7 +107,11 @@ "purchase_order", "column_break_89", "material_request_item", - "purchase_order_item" + "purchase_order_item", + "accounting_dimensions_section", + "cost_center", + "column_break_ihdh", + "project" ], "fields": [ { @@ -637,7 +644,7 @@ "allow_on_submit": 1, "fieldname": "actual_qty", "fieldtype": "Float", - "label": "Actual Qty", + "label": "Qty (Warehouse)", "no_copy": 1, "print_hide": 1, "print_width": "70px", @@ -912,16 +919,59 @@ "fieldtype": "Currency", "label": "Distributed Discount Amount", "options": "currency" + }, + { + "allow_on_submit": 1, + "fieldname": "company_total_stock", + "fieldtype": "Float", + "label": "Qty (Company)", + "no_copy": 1, + "print_hide": 1, + "read_only": 1 + }, + { + "fieldname": "column_break_jpky", + "fieldtype": "Column Break" + }, + { + "fieldname": "available_quantity_section", + "fieldtype": "Section Break", + "label": "Available Quantity" + }, + { + "collapsible": 1, + "fieldname": "accounting_dimensions_section", + "fieldtype": "Section Break", + "label": "Accounting Dimensions" + }, + { + "allow_on_submit": 1, + "default": ":Company", + "fieldname": "cost_center", + "fieldtype": "Link", + "label": "Cost Center", + "options": "Cost Center", + "print_hide": 1, + "print_width": "120px", + "width": "120px" + }, + { + "fieldname": "column_break_ihdh", + "fieldtype": "Column Break" + }, + { + "allow_on_submit": 1, + "fieldname": "project", + "fieldtype": "Link", + "label": "Project", + "options": "Project", + "search_index": 1 } ], "idx": 1, "istable": 1, "links": [], -<<<<<<< HEAD - "modified": "2024-03-21 18:15:56.625005", -======= - "modified": "2024-06-02 06:13:40.597947", ->>>>>>> 0bab6f34c1 (fix: distributed discounts on si) + "modified": "2025-02-28 09:45:44.934947", "modified_by": "Administrator", "module": "Selling", "name": "Sales Order Item", @@ -932,4 +982,4 @@ "sort_order": "DESC", "states": [], "track_changes": 1 -} \ No newline at end of file +} diff --git a/erpnext/selling/doctype/sales_order_item/sales_order_item.py b/erpnext/selling/doctype/sales_order_item/sales_order_item.py index 58be64bce21..731cff665da 100644 --- a/erpnext/selling/doctype/sales_order_item/sales_order_item.py +++ b/erpnext/selling/doctype/sales_order_item/sales_order_item.py @@ -30,7 +30,9 @@ class SalesOrderItem(Document): blanket_order_rate: DF.Currency bom_no: DF.Link | None brand: DF.Link | None + company_total_stock: DF.Float conversion_factor: DF.Float + cost_center: DF.Link | None customer_item_code: DF.Data | None delivered_by_supplier: DF.Check delivered_qty: DF.Float @@ -68,6 +70,7 @@ class SalesOrderItem(Document): pricing_rules: DF.SmallText | None produced_qty: DF.Float production_plan_qty: DF.Float + project: DF.Link | None projected_qty: DF.Float purchase_order: DF.Link | None purchase_order_item: DF.Data | None diff --git a/erpnext/selling/number_card/active_customers/active_customers.json b/erpnext/selling/number_card/active_customers/active_customers.json index 33776348477..7a31a21f6fd 100644 --- a/erpnext/selling/number_card/active_customers/active_customers.json +++ b/erpnext/selling/number_card/active_customers/active_customers.json @@ -3,7 +3,6 @@ "docstatus": 0, "doctype": "Number Card", "document_type": "Customer", - "dynamic_filters_json": "", "filters_json": "[[\"Customer\",\"disabled\",\"=\",\"0\"]]", "function": "Count", "idx": 0, diff --git a/erpnext/selling/page/point_of_sale/point_of_sale.py b/erpnext/selling/page/point_of_sale/point_of_sale.py index 2bb61a6439c..9be5a656a8e 100644 --- a/erpnext/selling/page/point_of_sale/point_of_sale.py +++ b/erpnext/selling/page/point_of_sale/point_of_sale.py @@ -35,6 +35,7 @@ def search_by_term(search_term, warehouse, price_list): "description": item_doc.description, "is_stock_item": item_doc.is_stock_item, "item_code": item_doc.name, + "item_group": item_doc.item_group, "item_image": item_doc.image, "item_name": item_doc.item_name, "serial_no": serial_no, @@ -57,27 +58,41 @@ def search_by_term(search_term, warehouse, price_list): item_stock_qty = item_stock_qty // item.get("conversion_factor", 1) item.update({"actual_qty": item_stock_qty}) + price_filters = { + "price_list": price_list, + "item_code": item_code, + } + + if batch_no: + price_filters["batch_no"] = ["in", [batch_no, ""]] + price = frappe.get_list( doctype="Item Price", - filters={ - "price_list": price_list, - "item_code": item_code, - "batch_no": batch_no, - }, + filters=price_filters, fields=["uom", "currency", "price_list_rate", "batch_no"], ) def __sort(p): p_uom = p.get("uom") + p_batch = p.get("batch_no") + batch_no = item.get("batch_no") + + if batch_no and p_batch and p_batch == batch_no: + if p_uom == item.get("uom"): + return 0 + elif p_uom == item.get("stock_uom"): + return 1 + else: + return 2 if p_uom == item.get("uom"): - return 0 + return 3 elif p_uom == item.get("stock_uom"): - return 1 + return 4 else: - return 2 + return 5 - # sort by fallback preference. always pick exact uom match if available + # sort by fallback preference. always pick exact uom and batch number match if available price = sorted(price, key=__sort) if len(price) > 0: @@ -92,6 +107,22 @@ def search_by_term(search_term, warehouse, price_list): return {"items": [item]} +def filter_result_items(result, pos_profile): + if result and result.get("items"): + pos_item_groups = frappe.db.get_all("POS Item Group", {"parent": pos_profile}, pluck="item_group") + if not pos_item_groups: + return + result["items"] = [item for item in result.get("items") if item.get("item_group") in pos_item_groups] + + +@frappe.whitelist() +def get_parent_item_group(): + # Using get_all to ignore user permission + item_group = frappe.get_all("Item Group", {"lft": 1, "is_group": 1}, pluck="name") + if item_group: + return item_group[0] + + @frappe.whitelist() def get_items(start, page_length, price_list, item_group, pos_profile, search_term=""): warehouse, hide_unavailable_items = frappe.db.get_value( @@ -102,6 +133,7 @@ def get_items(start, page_length, price_list, item_group, pos_profile, search_te if search_term: result = search_by_term(search_term, warehouse, price_list) or [] + filter_result_items(result, pos_profile) if result: return result @@ -159,6 +191,8 @@ def get_items(start, page_length, price_list, item_group, pos_profile, search_te if not items_data: return result + current_date = frappe.utils.today() + for item in items_data: uoms = frappe.get_doc("Item", item.item_code).get("uoms", []) @@ -167,12 +201,16 @@ def get_items(start, page_length, price_list, item_group, pos_profile, search_te item_price = frappe.get_all( "Item Price", - fields=["price_list_rate", "currency", "uom", "batch_no"], + fields=["price_list_rate", "currency", "uom", "batch_no", "valid_from", "valid_upto"], filters={ "price_list": price_list, "item_code": item.item_code, "selling": True, + "valid_from": ["<=", current_date], + "valid_upto": ["in", [None, "", current_date]], }, + order_by="valid_from desc", + limit=1, ) if not item_price: @@ -290,13 +328,13 @@ def get_past_order_list(search_term, status, limit=20): invoice_list = [] if search_term and status: - invoices_by_customer = frappe.db.get_all( + invoices_by_customer = frappe.db.get_list( "POS Invoice", filters={"customer": ["like", f"%{search_term}%"], "status": status}, fields=fields, page_length=limit, ) - invoices_by_name = frappe.db.get_all( + invoices_by_name = frappe.db.get_list( "POS Invoice", filters={"name": ["like", f"%{search_term}%"], "status": status}, fields=fields, @@ -305,7 +343,7 @@ def get_past_order_list(search_term, status, limit=20): invoice_list = invoices_by_customer + invoices_by_name elif status: - invoice_list = frappe.db.get_all( + invoice_list = frappe.db.get_list( "POS Invoice", filters={"status": status}, fields=fields, page_length=limit ) diff --git a/erpnext/selling/page/point_of_sale/pos_controller.js b/erpnext/selling/page/point_of_sale/pos_controller.js index 000a79b70a0..d86bf92177f 100644 --- a/erpnext/selling/page/point_of_sale/pos_controller.js +++ b/erpnext/selling/page/point_of_sale/pos_controller.js @@ -30,7 +30,7 @@ erpnext.PointOfSale.Controller = class { fieldname: "mode_of_payment", fieldtype: "Link", in_list_view: 1, - label: "Mode of Payment", + label: __("Mode of Payment"), options: "Mode of Payment", reqd: 1, }, @@ -38,9 +38,9 @@ erpnext.PointOfSale.Controller = class { fieldname: "opening_amount", fieldtype: "Currency", in_list_view: 1, - label: "Opening Amount", + label: __("Opening Amount"), options: "company:company_currency", - change: function () { + onchange: function () { dialog.fields_dict.balance_details.df.data.some((d) => { if (d.idx == this.doc.idx) { d.opening_amount = this.value; @@ -87,7 +87,7 @@ erpnext.PointOfSale.Controller = class { { fieldname: "balance_details", fieldtype: "Table", - label: "Opening Balance Details", + label: __("Opening Balance Details"), cannot_add_rows: false, in_place_edit: true, reqd: 1, @@ -149,13 +149,33 @@ erpnext.PointOfSale.Controller = class { this.make_app(); }, }); + + frappe.realtime.on(`poe_${this.pos_opening}_closed`, (data) => { + const route = frappe.get_route_str(); + if (data && route == "point-of-sale") { + frappe.dom.freeze(); + frappe.msgprint({ + title: __("POS Closed"), + indicator: "orange", + message: __("POS has been closed at {0}. Please refresh the page.", [ + frappe.datetime.str_to_user(data.creation).bold(), + ]), + primary_action_label: __("Refresh"), + primary_action: { + action() { + window.location.reload(); + }, + }, + }); + } + }); } set_opening_entry_status() { this.page.set_title_sub( ` - Opened at ${moment(this.pos_opening_time).format("Do MMMM, h:mma")} + Opened at ${frappe.datetime.str_to_user(this.pos_opening_time)} ` ); @@ -165,6 +185,7 @@ erpnext.PointOfSale.Controller = class { this.prepare_dom(); this.prepare_components(); this.prepare_menu(); + this.prepare_fullscreen_btn(); this.make_new_invoice(); } @@ -200,6 +221,39 @@ erpnext.PointOfSale.Controller = class { this.page.add_menu_item(__("Close the POS"), this.close_pos.bind(this), false, "Shift+Ctrl+C"); } + prepare_fullscreen_btn() { + this.page.page_actions.find(".custom-actions").empty(); + + this.page.add_button(__("Full Screen"), null, { btn_class: "btn-default fullscreen-btn" }); + + this.bind_fullscreen_events(); + } + + bind_fullscreen_events() { + this.$fullscreen_btn = this.page.page_actions.find(".fullscreen-btn"); + + this.$fullscreen_btn.on("click", function () { + if (!document.fullscreenElement) { + document.documentElement.requestFullscreen(); + } else if (document.exitFullscreen) { + document.exitFullscreen(); + } + }); + + $(document).on("fullscreenchange", this.handle_fullscreen_change_event.bind(this)); + } + + handle_fullscreen_change_event() { + let enable_fullscreen_label = __("Full Screen"); + let exit_fullscreen_label = __("Exit Full Screen"); + + if (document.fullscreenElement) { + this.$fullscreen_btn[0].innerText = exit_fullscreen_label; + } else { + this.$fullscreen_btn[0].innerText = enable_fullscreen_label; + } + } + open_form_view() { frappe.model.sync(this.frm.doc); frappe.set_route("Form", this.frm.doc.doctype, this.frm.doc.name); @@ -285,6 +339,7 @@ erpnext.PointOfSale.Controller = class { edit_cart: () => this.payment.edit_cart(), customer_details_updated: (details) => { + this.item_selector.load_items_data(); this.customer_details = details; // will add/remove LP payment method this.payment.render_loyalty_points_payment_mode(); @@ -414,6 +469,7 @@ erpnext.PointOfSale.Controller = class { init_order_summary() { this.order_summary = new erpnext.PointOfSale.PastOrderSummary({ wrapper: this.$components_wrapper, + settings: this.settings, events: { get_frm: () => this.frm, @@ -547,6 +603,8 @@ erpnext.PointOfSale.Controller = class { async on_cart_update(args) { frappe.dom.freeze(); + if (this.frm.doc.set_warehouse != this.settings.warehouse) + this.frm.doc.set_warehouse = this.settings.warehouse; let item_row = undefined; try { let { field, value, item } = args; @@ -554,7 +612,7 @@ erpnext.PointOfSale.Controller = class { const item_row_exists = !$.isEmptyObject(item_row); const from_selector = field === "qty" && value === "+1"; - if (from_selector) value = flt(item_row.stock_qty) + flt(value); + if (from_selector) value = flt(item_row.qty) + flt(value); if (item_row_exists) { if (field === "qty") value = flt(value); @@ -567,16 +625,32 @@ erpnext.PointOfSale.Controller = class { if (this.is_current_item_being_edited(item_row) || from_selector) { await frappe.model.set_value(item_row.doctype, item_row.name, field, value); + if (item.serial_no && from_selector) { + await frappe.model.set_value( + item_row.doctype, + item_row.name, + "serial_no", + item_row.serial_no + `\n${item.serial_no}` + ); + } this.update_cart_html(item_row); } } else { if (!this.frm.doc.customer) return this.raise_customer_selection_alert(); - const { item_code, batch_no, serial_no, rate, uom } = item; + const { item_code, batch_no, serial_no, rate, uom, stock_uom } = item; if (!item_code) return; - const new_item = { item_code, batch_no, rate, uom, [field]: value }; + if (rate == undefined || rate == 0) { + frappe.show_alert({ + message: __("Price is not set for the item."), + indicator: "orange", + }); + frappe.utils.play_sound("error"); + return; + } + const new_item = { item_code, batch_no, rate, uom, [field]: value, stock_uom }; if (serial_no) { await this.check_serial_no_availablilty(item_code, this.frm.doc.set_warehouse, serial_no); @@ -636,7 +710,7 @@ erpnext.PointOfSale.Controller = class { i.item_code === item_code && (!has_batch_no || (has_batch_no && i.batch_no === batch_no)) && i.uom === uom && - i.rate === flt(rate) + i.price_list_rate === flt(rate) ); } @@ -685,7 +759,7 @@ erpnext.PointOfSale.Controller = class { const is_stock_item = resp[1]; frappe.dom.unfreeze(); - const bold_uom = item_row.uom.bold(); + const bold_uom = item_row.stock_uom.bold(); const bold_item_code = item_row.item_code.bold(); const bold_warehouse = warehouse.bold(); const bold_available_qty = available_qty.toString().bold(); 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 694f70d4db5..dee052912ff 100644 --- a/erpnext/selling/page/point_of_sale/pos_item_cart.js +++ b/erpnext/selling/page/point_of_sale/pos_item_cart.js @@ -389,28 +389,22 @@ erpnext.PointOfSale.ItemCart = class { placeholder: discount ? discount + "%" : __("Enter discount percentage."), input_class: "input-xs", onchange: function () { - if (flt(this.value) != 0) { - frappe.model.set_value( - frm.doc.doctype, - frm.doc.name, - "additional_discount_percentage", - flt(this.value) - ); - me.hide_discount_control(this.value); - } else { - frappe.model.set_value( - frm.doc.doctype, - frm.doc.name, - "additional_discount_percentage", - 0 - ); - me.$add_discount_elem.css({ - border: "1px dashed var(--gray-500)", - padding: "var(--padding-sm) var(--padding-md)", + this.value = flt(this.value); + if (this.value > 100) { + frappe.msgprint({ + title: __("Invalid Discount"), + indicator: "red", + message: __("Discount cannot be greater than 100%."), }); - me.$add_discount_elem.html(`${me.get_discount_icon()} ${__("Add Discount")}`); - me.discount_field = undefined; + this.value = 0; } + frappe.model.set_value( + frm.doc.doctype, + frm.doc.name, + "additional_discount_percentage", + flt(this.value) + ); + me.hide_discount_control(this.value); }, }, parent: this.$add_discount_elem.find(".add-discount-field"), @@ -421,9 +415,13 @@ erpnext.PointOfSale.ItemCart = class { } hide_discount_control(discount) { - if (!discount) { - this.$add_discount_elem.css({ padding: "0px", border: "none" }); - this.$add_discount_elem.html(`
`); + if (!flt(discount)) { + this.$add_discount_elem.css({ + border: "1px dashed var(--gray-500)", + padding: "var(--padding-sm) var(--padding-md)", + }); + this.$add_discount_elem.html(`${this.get_discount_icon()} ${__("Add Discount")}`); + this.discount_field = undefined; } else { this.$add_discount_elem.css({ border: "1px dashed var(--dark-green-500)", @@ -750,6 +748,7 @@ erpnext.PointOfSale.ItemCart = class { frappe.utils.play_sound("error"); return; } + this.highlight_numpad_btn($btn, current_action); if (first_click_event || field_to_edit_changed) { this.prev_action = current_action; @@ -795,7 +794,6 @@ erpnext.PointOfSale.ItemCart = class { this.numpad_value = current_action; } - this.highlight_numpad_btn($btn, current_action); this.events.numpad_event(this.numpad_value, this.prev_action); } @@ -930,10 +928,13 @@ erpnext.PointOfSale.ItemCart = class { const me = this; dfs.forEach((df) => { this[`customer_${df.fieldname}_field`] = frappe.ui.form.make_control({ - df: { ...df, onchange: handle_customer_field_change }, + df: df, parent: $customer_form.find(`.${df.fieldname}-field`), render_input: true, }); + this[`customer_${df.fieldname}_field`].$input?.on("blur", () => { + handle_customer_field_change.apply(this[`customer_${df.fieldname}_field`]); + }); this[`customer_${df.fieldname}_field`].set_value(this.customer_info[df.fieldname]); }); @@ -976,17 +977,19 @@ erpnext.PointOfSale.ItemCart = class { if (!res.length) { transaction_container.html( - `
No recent transactions found
` + `
${__("No recent transactions found")}
` ); return; } const elapsed_time = moment(res[0].posting_date + " " + res[0].posting_time).fromNow(); - this.$customer_section.find(".customer-desc").html(`Last transacted ${elapsed_time}`); + this.$customer_section + .find(".customer-desc") + .html(`${__("Last transacted")} ${__(elapsed_time)}`); res.forEach((invoice) => { - const posting_datetime = moment(invoice.posting_date + " " + invoice.posting_time).format( - "Do MMMM, h:mma" + const posting_datetime = frappe.datetime.str_to_user( + invoice.posting_date + " " + invoice.posting_time ); let indicator_color = { Paid: "green", @@ -1007,7 +1010,7 @@ erpnext.PointOfSale.ItemCart = class {
- ${invoice.status} + ${__(invoice.status)}
@@ -1051,6 +1054,7 @@ erpnext.PointOfSale.ItemCart = class { this.highlight_checkout_btn(false); } + this.hide_discount_control(frm.doc.additional_discount_percentage); this.update_totals_section(frm); if (frm.doc.docstatus === 1) { diff --git a/erpnext/selling/page/point_of_sale/pos_item_details.js b/erpnext/selling/page/point_of_sale/pos_item_details.js index 4673eaa9858..a0476ee6bda 100644 --- a/erpnext/selling/page/point_of_sale/pos_item_details.js +++ b/erpnext/selling/page/point_of_sale/pos_item_details.js @@ -187,6 +187,7 @@ erpnext.PointOfSale.ItemDetails = class { this[`${fieldname}_control`].set_value(item[fieldname]); }); + this.resize_serial_control(item); this.make_auto_serial_selection_btn(item); this.bind_custom_control_change_event(); @@ -203,14 +204,24 @@ erpnext.PointOfSale.ItemDetails = class { "actual_qty", "price_list_rate", ]; - if (item.has_serial_no) fields.push("serial_no"); - if (item.has_batch_no) fields.push("batch_no"); + if (item.has_serial_no || item.serial_no) fields.push("serial_no"); + if (item.has_batch_no || item.batch_no) fields.push("batch_no"); return fields; } + resize_serial_control(item) { + if (item.has_serial_no || item.serial_no) { + this.$form_container.find(".serial_no-control").find("textarea").css("height", "6rem"); + } + } + make_auto_serial_selection_btn(item) { - if (item.has_serial_no || item.has_batch_no) { - const label = item.has_serial_no ? __("Select Serial No") : __("Select Batch No"); + const doc = this.events.get_frm().doc; + if (!doc.is_return && (item.has_serial_no || item.serial_no)) { + if (!item.has_batch_no) { + this.$form_container.append(`
`); + } + const label = __("Auto Fetch Serial Numbers"); this.$form_container.append( `
${label}
` ); @@ -272,7 +283,7 @@ erpnext.PointOfSale.ItemDetails = class { }; this.warehouse_control.df.get_query = () => { return { - filters: { company: this.events.get_frm().doc.company }, + filters: { company: this.events.get_frm().doc.company, is_group: 0 }, }; }; this.warehouse_control.refresh(); @@ -315,8 +326,12 @@ erpnext.PointOfSale.ItemDetails = class { frappe.model.on("POS Invoice Item", "*", (fieldname, value, item_row) => { const field_control = this[`${fieldname}_control`]; const item_row_is_being_edited = this.compare_with_current_item(item_row); - - if (item_row_is_being_edited && field_control && field_control.get_value() !== value) { + if ( + item_row_is_being_edited && + field_control && + field_control.get_value() !== value && + value == item_row[fieldname] + ) { field_control.set_value(value); cur_pos.update_cart_html(item_row); } @@ -395,18 +410,41 @@ erpnext.PointOfSale.ItemDetails = class { bind_auto_serial_fetch_event() { this.$form_container.on("click", ".auto-fetch-btn", () => { - let frm = this.events.get_frm(); - let item_row = this.item_row; - item_row.type_of_transaction = "Outward"; + this.batch_no_control && this.batch_no_control.set_value(""); + let qty = this.qty_control.get_value(); + let conversion_factor = this.conversion_factor_control.get_value(); + let expiry_date = this.item_row.has_batch_no ? this.events.get_frm().doc.posting_date : ""; - new erpnext.SerialBatchPackageSelector(frm, item_row, (r) => { - if (r) { - frappe.model.set_value(item_row.doctype, item_row.name, { - serial_and_batch_bundle: r.name, - qty: Math.abs(r.total_qty), - use_serial_batch_fields: 0, - }); + let numbers = frappe.call({ + method: "erpnext.stock.doctype.serial_no.serial_no.auto_fetch_serial_number", + args: { + qty: qty * conversion_factor, + item_code: this.current_item.item_code, + warehouse: this.warehouse_control.get_value() || "", + batch_nos: this.current_item.batch_no || "", + posting_date: expiry_date, + for_doctype: "POS Invoice", + }, + }); + + numbers.then((data) => { + let auto_fetched_serial_numbers = data.message; + let records_length = auto_fetched_serial_numbers.length; + if (!records_length) { + const warehouse = this.warehouse_control.get_value().bold(); + const item_code = this.current_item.item_code.bold(); + frappe.msgprint( + __( + "Serial numbers unavailable for Item {0} under warehouse {1}. Please try changing warehouse.", + [item_code, warehouse] + ) + ); + } else if (records_length < qty) { + frappe.msgprint(__("Fetched only {0} available serial numbers.", [records_length])); + this.qty_control.set_value(records_length); } + numbers = auto_fetched_serial_numbers.join(`\n`); + this.serial_no_control.set_value(numbers); }); }); } diff --git a/erpnext/selling/page/point_of_sale/pos_item_selector.js b/erpnext/selling/page/point_of_sale/pos_item_selector.js index b5fa8849d60..6ae0d675140 100644 --- a/erpnext/selling/page/point_of_sale/pos_item_selector.js +++ b/erpnext/selling/page/point_of_sale/pos_item_selector.js @@ -38,8 +38,13 @@ erpnext.PointOfSale.ItemSelector = class { async load_items_data() { if (!this.item_group) { - const res = await frappe.db.get_value("Item Group", { lft: 1, is_group: 1 }, "name"); - this.parent_item_group = res.message.name; + frappe.call({ + method: "erpnext.selling.page.point_of_sale.point_of_sale.get_parent_item_group", + async: false, + callback: (r) => { + if (r.message) this.parent_item_group = r.message; + }, + }); } if (!this.price_list) { const res = await frappe.db.get_value("POS Profile", this.pos_profile, "selling_price_list"); @@ -99,7 +104,7 @@ erpnext.PointOfSale.ItemSelector = class { return `
${qty_to_display}
-
+
${get_item_image_html()} @@ -138,7 +144,6 @@ erpnext.PointOfSale.ItemSelector = class { make_search_bar() { const me = this; - const doc = me.events.get_frm().doc; this.$component.find(".search-field").html(""); this.$component.find(".item-group-field").html(""); @@ -163,6 +168,7 @@ erpnext.PointOfSale.ItemSelector = class { me.filter_items(); }, get_query: function () { + const doc = me.events.get_frm().doc; return { query: "erpnext.selling.page.point_of_sale.point_of_sale.item_group_query", filters: { @@ -251,17 +257,19 @@ erpnext.PointOfSale.ItemSelector = class { let serial_no = unescape($item.attr("data-serial-no")); let uom = unescape($item.attr("data-uom")); let rate = unescape($item.attr("data-rate")); + let stock_uom = unescape($item.attr("data-stock-uom")); // escape(undefined) returns "undefined" then unescape returns "undefined" batch_no = batch_no === "undefined" ? undefined : batch_no; serial_no = serial_no === "undefined" ? undefined : serial_no; uom = uom === "undefined" ? undefined : uom; rate = rate === "undefined" ? undefined : rate; + stock_uom = stock_uom === "undefined" ? undefined : stock_uom; me.events.item_selected({ field: "qty", value: "+1", - item: { item_code, batch_no, serial_no, uom, rate }, + item: { item_code, batch_no, serial_no, uom, rate, stock_uom }, }); me.search_field.set_focus(); }); @@ -325,13 +333,16 @@ erpnext.PointOfSale.ItemSelector = class { } filter_items({ search_term = "" } = {}) { + const selling_price_list = this.events.get_frm().doc.selling_price_list; + if (search_term) { search_term = search_term.toLowerCase(); // memoize this.search_index = this.search_index || {}; - if (this.search_index[search_term]) { - const items = this.search_index[search_term]; + this.search_index[selling_price_list] = this.search_index[selling_price_list] || {}; + if (this.search_index[selling_price_list][search_term]) { + const items = this.search_index[selling_price_list][search_term]; this.items = items; this.render_item_list(items); this.auto_add_item && this.items.length == 1 && this.add_filtered_item_to_cart(); @@ -343,7 +354,7 @@ erpnext.PointOfSale.ItemSelector = class { // eslint-disable-next-line no-unused-vars const { items, serial_no, batch_no, barcode } = message; if (search_term && !barcode) { - this.search_index[search_term] = items; + this.search_index[selling_price_list][search_term] = items; } this.items = items; this.render_item_list(items); diff --git a/erpnext/selling/page/point_of_sale/pos_past_order_list.js b/erpnext/selling/page/point_of_sale/pos_past_order_list.js index c450d8a109a..dda44f25299 100644 --- a/erpnext/selling/page/point_of_sale/pos_past_order_list.js +++ b/erpnext/selling/page/point_of_sale/pos_past_order_list.js @@ -96,8 +96,8 @@ erpnext.PointOfSale.PastOrderList = class { } get_invoice_html(invoice) { - const posting_datetime = moment(invoice.posting_date + " " + invoice.posting_time).format( - "Do MMMM, h:mma" + const posting_datetime = frappe.datetime.str_to_user( + invoice.posting_date + " " + invoice.posting_time ); return `
@@ -110,7 +110,7 @@ erpnext.PointOfSale.PastOrderList = class {
-
${format_currency(invoice.grand_total, invoice.currency, 0) || 0}
+
${format_currency(invoice.grand_total, invoice.currency) || 0}
${posting_datetime}
diff --git a/erpnext/selling/page/point_of_sale/pos_past_order_summary.js b/erpnext/selling/page/point_of_sale/pos_past_order_summary.js index c399005643c..cf775176c07 100644 --- a/erpnext/selling/page/point_of_sale/pos_past_order_summary.js +++ b/erpnext/selling/page/point_of_sale/pos_past_order_summary.js @@ -1,7 +1,8 @@ erpnext.PointOfSale.PastOrderSummary = class { - constructor({ wrapper, events }) { + constructor({ wrapper, settings, events }) { this.wrapper = wrapper; this.events = events; + this.print_receipt_on_order_complete = settings.print_receipt_on_order_complete; this.init_component(); } @@ -46,7 +47,7 @@ erpnext.PointOfSale.PastOrderSummary = class { init_email_print_dialog() { const email_dialog = new frappe.ui.Dialog({ - title: "Email Receipt", + title: __("Email Receipt"), fields: [ { fieldname: "email_id", fieldtype: "Data", options: "Email", label: "Email ID", reqd: 1 }, { fieldname: "content", fieldtype: "Small Text", label: "Message (if any)" }, @@ -59,7 +60,7 @@ erpnext.PointOfSale.PastOrderSummary = class { this.email_dialog = email_dialog; const print_dialog = new frappe.ui.Dialog({ - title: "Print Receipt", + title: __("Print Receipt"), fields: [{ fieldname: "print", fieldtype: "Data", label: "Print Preview" }], primary_action: () => { this.print_receipt(); @@ -85,7 +86,7 @@ erpnext.PointOfSale.PastOrderSummary = class {
${doc.name}
- ${doc.status} + ${__(doc.status)}
`; } @@ -112,7 +113,7 @@ erpnext.PointOfSale.PastOrderSummary = class { get_discount_html(doc) { if (doc.discount_amount) { return `
-
Discount (${doc.additional_discount_percentage} %)
+
${__("Discount")} (${doc.additional_discount_percentage} %)
${format_currency(doc.discount_amount, doc.currency)}
`; } else { @@ -355,6 +356,10 @@ erpnext.PointOfSale.PastOrderSummary = class { const condition_btns_map = this.get_condition_btn_map(after_submission); this.add_summary_btns(condition_btns_map); + + if (after_submission && this.print_receipt_on_order_complete) { + this.print_receipt(); + } } attach_document_info(doc) { diff --git a/erpnext/selling/page/point_of_sale/pos_payment.js b/erpnext/selling/page/point_of_sale/pos_payment.js index 232b6a02123..b47c25e20bb 100644 --- a/erpnext/selling/page/point_of_sale/pos_payment.js +++ b/erpnext/selling/page/point_of_sale/pos_payment.js @@ -41,6 +41,7 @@ erpnext.PointOfSale.Payment = class { } make_invoice_fields_control() { + this.reqd_invoice_fields = []; frappe.db.get_doc("POS Settings", undefined).then((doc) => { const fields = doc.invoice_fields; if (!fields.length) return; @@ -67,6 +68,9 @@ erpnext.PointOfSale.Payment = class { }, }; } + if (df.reqd && (df.fieldtype !== "Button" || !df.read_only)) { + this.reqd_invoice_fields.push({ fieldname: df.fieldname, label: df.label }); + } this[`${df.fieldname}_field`] = frappe.ui.form.make_control({ df: { @@ -204,7 +208,11 @@ erpnext.PointOfSale.Payment = class { const paid_amount = doc.paid_amount; const items = doc.items; - if (paid_amount == 0 || !items.length) { + if (!this.validate_reqd_invoice_fields()) { + return; + } + + if (!items.length || (paid_amount == 0 && doc.additional_discount_percentage != 100)) { const message = items.length ? __("You cannot submit the order without payment.") : __("You cannot submit empty order."); @@ -235,7 +243,7 @@ erpnext.PointOfSale.Payment = class { frappe.ui.form.on("Sales Invoice Payment", "amount", (frm, cdt, cdn) => { // for setting correct amount after loyalty points are redeemed const default_mop = locals[cdt][cdn]; - const mode = default_mop.mode_of_payment.replace(/ +/g, "_").toLowerCase(); + const mode = this.sanitize_mode_of_payment(default_mop.mode_of_payment); if (this[`${mode}_control`] && this[`${mode}_control`].get_value() != default_mop.amount) { this[`${mode}_control`].set_value(default_mop.amount); } @@ -336,7 +344,7 @@ erpnext.PointOfSale.Payment = class { this.render_payment_mode_dom(); this.make_invoice_fields_control(); this.update_totals_section(); - this.focus_on_default_mop(); + this.unset_grand_total_to_default_mop(); } after_render() { @@ -350,6 +358,11 @@ erpnext.PointOfSale.Payment = class { } checkout() { + const frm = this.events.get_frm(); + frm.cscript.calculate_outstanding_amount(); + frm.refresh_field("outstanding_amount"); + frm.refresh_field("paid_amount"); + frm.refresh_field("base_paid_amount"); this.events.toggle_other_sections(true); this.toggle_component(true); @@ -383,7 +396,7 @@ erpnext.PointOfSale.Payment = class { this.$payment_modes.html( `${payments .map((p, i) => { - const mode = p.mode_of_payment.replace(/ +/g, "_").toLowerCase(); + const mode = this.sanitize_mode_of_payment(p.mode_of_payment); const payment_type = p.type; const margin = i % 2 === 0 ? "pr-2" : "pl-2"; const amount = p.amount > 0 ? format_currency(p.amount, currency) : ""; @@ -402,7 +415,7 @@ erpnext.PointOfSale.Payment = class { ); payments.forEach((p) => { - const mode = p.mode_of_payment.replace(/ +/g, "_").toLowerCase(); + const mode = this.sanitize_mode_of_payment(p.mode_of_payment); const me = this; this[`${mode}_control`] = frappe.ui.form.make_control({ df: { @@ -437,7 +450,7 @@ erpnext.PointOfSale.Payment = class { const doc = this.events.get_frm().doc; const payments = doc.payments; payments.forEach((p) => { - const mode = p.mode_of_payment.replace(/ +/g, "_").toLowerCase(); + const mode = this.sanitize_mode_of_payment(p.mode_of_payment); if (p.default) { setTimeout(() => { this.$payment_modes.find(`.${mode}.mode-of-payment-control`).parent().click(); @@ -457,7 +470,7 @@ erpnext.PointOfSale.Payment = class { this.$payment_modes.find(".cash-shortcuts").remove(); let shortcuts_html = shortcuts .map((s) => { - return `
${format_currency(s, currency, 0)}
`; + return `
${format_currency(s, currency)}
`; }) .join(""); @@ -584,7 +597,7 @@ erpnext.PointOfSale.Payment = class { const remaining = grand_total - doc.paid_amount; const change = doc.change_amount || remaining <= 0 ? -1 * remaining : undefined; const currency = doc.currency; - const label = change ? __("Change") : __("To Be Paid"); + const label = __("Change Amount"); this.$totals.html( `
@@ -607,4 +620,41 @@ erpnext.PointOfSale.Payment = class { toggle_component(show) { show ? this.$component.css("display", "flex") : this.$component.css("display", "none"); } + + sanitize_mode_of_payment(mode_of_payment) { + return mode_of_payment + .replace(/ +/g, "_") + .replace(/[^\p{L}\p{N}_-]/gu, "") + .replace(/^[^_a-zA-Z\p{L}]+/u, "") + .toLowerCase(); + } + + async unset_grand_total_to_default_mop() { + const doc = this.events.get_frm().doc; + let r = await frappe.db.get_value( + "POS Profile", + doc.pos_profile, + "disable_grand_total_to_default_mop" + ); + + if (!r.message.disable_grand_total_to_default_mop) { + this.focus_on_default_mop(); + } + } + + validate_reqd_invoice_fields() { + const doc = this.events.get_frm().doc; + let validation_flag = true; + for (let field of this.reqd_invoice_fields) { + if (!doc[field.fieldname]) { + validation_flag = false; + frappe.show_alert({ + message: __("{0} is a mandatory field.", [field.label]), + indicator: "orange", + }); + frappe.utils.play_sound("error"); + } + } + return validation_flag; + } }; diff --git a/erpnext/selling/report/address_and_contacts/address_and_contacts.py b/erpnext/selling/report/address_and_contacts/address_and_contacts.py index b8ab89a4fed..5d0e706930f 100644 --- a/erpnext/selling/report/address_and_contacts/address_and_contacts.py +++ b/erpnext/selling/report/address_and_contacts/address_and_contacts.py @@ -31,9 +31,9 @@ def get_columns(filters): f"{frappe.unscrub(str(party_type_value))}::150", "Address Line 1", "Address Line 2", + "Postal Code", "City", "State", - "Postal Code", "Country", "Is Primary Address:Check", "First Name", diff --git a/erpnext/selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js b/erpnext/selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js index 99ef5e40f3b..e4e9ec07b3f 100644 --- a/erpnext/selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js +++ b/erpnext/selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.js @@ -87,6 +87,7 @@ function get_filters() { fieldname: "status", label: __("Status"), fieldtype: "MultiSelectList", + options: ["Overdue", "Unpaid", "Completed", "Partly Paid"], width: 100, get_data: function (txt) { let status = ["Overdue", "Unpaid", "Completed", "Partly Paid"]; diff --git a/erpnext/selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py b/erpnext/selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py index cf61a0e35f3..1b57a6d7390 100644 --- a/erpnext/selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py +++ b/erpnext/selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py @@ -270,11 +270,11 @@ def prepare_chart(s_orders): "labels": [term.payment_term for term in s_orders], "datasets": [ { - "name": "Payment Amount", + "name": _("Payment Amount"), "values": [x.base_payment_amount for x in s_orders], }, { - "name": "Paid Amount", + "name": _("Paid Amount"), "values": [x.paid_amount for x in s_orders], }, ], diff --git a/erpnext/selling/report/sales_analytics/sales_analytics.js b/erpnext/selling/report/sales_analytics/sales_analytics.js index a01103afb96..7c5d5436877 100644 --- a/erpnext/selling/report/sales_analytics/sales_analytics.js +++ b/erpnext/selling/report/sales_analytics/sales_analytics.js @@ -73,6 +73,11 @@ frappe.query_reports["Sales Analytics"] = { default: "Monthly", reqd: 1, }, + { + fieldname: "show_aggregate_value_from_subsidiary_companies", + label: __("Show Aggregate Value from Subsidiary Companies"), + fieldtype: "Check", + }, ], get_datatable_options(options) { return Object.assign(options, { diff --git a/erpnext/selling/report/sales_analytics/sales_analytics.py b/erpnext/selling/report/sales_analytics/sales_analytics.py index 27d2e6e555e..262687ef19d 100644 --- a/erpnext/selling/report/sales_analytics/sales_analytics.py +++ b/erpnext/selling/report/sales_analytics/sales_analytics.py @@ -4,6 +4,8 @@ import frappe from frappe import _, scrub +from frappe.query_builder import DocType +from frappe.query_builder.functions import IfNull from frappe.utils import add_days, add_to_date, flt, getdate from erpnext.accounts.utils import get_fiscal_year @@ -37,7 +39,26 @@ class Analytics: ] self.get_period_date_ranges() + def update_company_list_for_parent_company(self): + company_list = [self.filters.get("company")] + + selected_company = self.filters.get("company") + if ( + selected_company + and self.filters.get("show_aggregate_value_from_subsidiary_companies") + and frappe.db.get_value("Company", selected_company, "is_group") + ): + lft, rgt = frappe.db.get_value("Company", selected_company, ["lft", "rgt"]) + child_companies = frappe.db.get_list( + "Company", filters={"lft": [">", lft], "rgt": ["<", rgt]}, pluck="name" + ) + + company_list.extend(child_companies) + + self.filters["company"] = company_list + def run(self): + self.update_company_list_for_parent_company() self.get_columns() self.get_data() self.get_chart_data() @@ -123,14 +144,23 @@ class Analytics: else: value_field = "total_qty" - self.entries = frappe.db.sql( - """ select s.order_type as entity, s.{value_field} as value_field, s.{date_field} - from `tab{doctype}` s where s.docstatus = 1 and s.company = %s and s.{date_field} between %s and %s - and ifnull(s.order_type, '') != '' order by s.order_type - """.format(date_field=self.date_field, value_field=value_field, doctype=self.filters.doc_type), - (self.filters.company, self.filters.from_date, self.filters.to_date), - as_dict=1, - ) + doctype = DocType(self.filters.doc_type) + + self.entries = ( + frappe.qb.from_(doctype) + .select( + doctype.order_type.as_("entity"), + doctype[self.date_field], + doctype[value_field].as_("value_field"), + ) + .where( + (doctype.docstatus == 1) + & (doctype.company.isin(self.filters.company)) + & (doctype[self.date_field].between(self.filters.from_date, self.filters.to_date)) + & (IfNull(doctype.order_type, "") != "") + ) + .orderby(doctype.order_type) + ).run(as_dict=True) self.get_teams() @@ -152,7 +182,7 @@ class Analytics: fields=[entity, entity_name, value_field, self.date_field], filters={ "docstatus": 1, - "company": self.filters.company, + "company": ["in", self.filters.company], self.date_field: ("between", [self.filters.from_date, self.filters.to_date]), }, ) @@ -167,16 +197,26 @@ class Analytics: else: value_field = "stock_qty" - self.entries = frappe.db.sql( - """ - select i.item_code as entity, i.item_name as entity_name, i.stock_uom, i.{value_field} as value_field, s.{date_field} - from `tab{doctype} Item` i , `tab{doctype}` s - where s.name = i.parent and i.docstatus = 1 and s.company = %s - and s.{date_field} between %s and %s - """.format(date_field=self.date_field, value_field=value_field, doctype=self.filters.doc_type), - (self.filters.company, self.filters.from_date, self.filters.to_date), - as_dict=1, - ) + doctype = DocType(self.filters.doc_type) + doctype_item = DocType(f"{self.filters.doc_type} Item") + + self.entries = ( + frappe.qb.from_(doctype_item) + .join(doctype) + .on(doctype.name == doctype_item.parent) + .select( + doctype_item.item_code.as_("entity"), + doctype_item.item_name.as_("entity_name"), + doctype_item.stock_uom, + doctype_item[value_field].as_("value_field"), + doctype[self.date_field], + ) + .where( + (doctype_item.docstatus == 1) + & (doctype.company.isin(self.filters.company)) + & (doctype[self.date_field].between(self.filters.from_date, self.filters.to_date)) + ) + ).run(as_dict=True) self.entity_names = {} for d in self.entries: @@ -201,7 +241,7 @@ class Analytics: fields=[entity_field, value_field, self.date_field], filters={ "docstatus": 1, - "company": self.filters.company, + "company": ["in", self.filters.company], self.date_field: ("between", [self.filters.from_date, self.filters.to_date]), }, ) @@ -213,16 +253,24 @@ class Analytics: else: value_field = "qty" - self.entries = frappe.db.sql( - f""" - select i.item_group as entity, i.{value_field} as value_field, s.{self.date_field} - from `tab{self.filters.doc_type} Item` i , `tab{self.filters.doc_type}` s - where s.name = i.parent and i.docstatus = 1 and s.company = %s - and s.{self.date_field} between %s and %s - """, - (self.filters.company, self.filters.from_date, self.filters.to_date), - as_dict=1, - ) + doctype = DocType(self.filters.doc_type) + doctype_item = DocType(f"{self.filters.doc_type} Item") + + self.entries = ( + frappe.qb.from_(doctype_item) + .join(doctype) + .on(doctype.name == doctype_item.parent) + .select( + doctype_item.item_group.as_("entity"), + doctype_item[value_field].as_("value_field"), + doctype[self.date_field], + ) + .where( + (doctype_item.docstatus == 1) + & (doctype.company.isin(self.filters.company)) + & (doctype[self.date_field].between(self.filters.from_date, self.filters.to_date)) + ) + ).run(as_dict=True) self.get_groups() @@ -239,7 +287,7 @@ class Analytics: fields=[entity, value_field, self.date_field], filters={ "docstatus": 1, - "company": self.filters.company, + "company": ["in", self.filters.company], "project": ["!=", ""], self.date_field: ("between", [self.filters.from_date, self.filters.to_date]), }, @@ -312,7 +360,7 @@ class Analytics: str(((posting_date.month - 1) // 3) + 1), str(posting_date.year) ) else: - year = get_fiscal_year(posting_date, company=self.filters.company) + year = get_fiscal_year(posting_date, company=self.filters.company[0]) period = str(year[0]) return period diff --git a/erpnext/selling/report/sales_order_analysis/sales_order_analysis.js b/erpnext/selling/report/sales_order_analysis/sales_order_analysis.js index e47e5f8ae4d..b7f7a34c1b8 100644 --- a/erpnext/selling/report/sales_order_analysis/sales_order_analysis.js +++ b/erpnext/selling/report/sales_order_analysis/sales_order_analysis.js @@ -19,6 +19,10 @@ frappe.query_reports["Sales Order Analysis"] = { width: "80", reqd: 1, default: frappe.datetime.add_months(frappe.datetime.get_today(), -1), + on_change: (report) => { + report.set_filter_value("sales_order", []); + report.refresh(); + }, }, { fieldname: "to_date", @@ -27,6 +31,10 @@ frappe.query_reports["Sales Order Analysis"] = { width: "80", reqd: 1, default: frappe.datetime.get_today(), + on_change: (report) => { + report.set_filter_value("sales_order", []); + report.refresh(); + }, }, { fieldname: "sales_order", @@ -35,12 +43,13 @@ frappe.query_reports["Sales Order Analysis"] = { width: "80", options: "Sales Order", get_data: function (txt) { - return frappe.db.get_link_options("Sales Order", txt); - }, - get_query: () => { - return { - filters: { docstatus: 1 }, - }; + let filters = { docstatus: 1 }; + + const from_date = frappe.query_report.get_filter_value("from_date"); + const to_date = frappe.query_report.get_filter_value("to_date"); + if (from_date && to_date) filters["transaction_date"] = ["between", [from_date, to_date]]; + + return frappe.db.get_link_options("Sales Order", txt, filters); }, }, { @@ -53,9 +62,17 @@ frappe.query_reports["Sales Order Analysis"] = { fieldname: "status", label: __("Status"), fieldtype: "MultiSelectList", + options: ["To Pay", "To Bill", "To Deliver", "To Deliver and Bill", "Completed", "Closed"], width: "80", get_data: function (txt) { - let status = ["To Bill", "To Deliver", "To Deliver and Bill", "Completed"]; + let status = [ + "To Pay", + "To Bill", + "To Deliver", + "To Deliver and Bill", + "Completed", + "Closed", + ]; let options = []; for (let option of status) { options.push({ diff --git a/erpnext/selling/report/sales_order_analysis/sales_order_analysis.py b/erpnext/selling/report/sales_order_analysis/sales_order_analysis.py index 70b021a9cab..90c33c323ce 100644 --- a/erpnext/selling/report/sales_order_analysis/sales_order_analysis.py +++ b/erpnext/selling/report/sales_order_analysis/sales_order_analysis.py @@ -86,7 +86,7 @@ def get_data(conditions, filters): ON sii.so_detail = soi.name and sii.docstatus = 1 WHERE soi.parent = so.name - and so.status not in ('Stopped', 'Closed', 'On Hold') + and so.status not in ('Stopped', 'On Hold') and so.docstatus = 1 {conditions} GROUP BY soi.name @@ -206,7 +206,7 @@ def prepare_data(data, so_elapsed_time, filters): def prepare_chart_data(pending, completed): - labels = ["Amount to Bill", "Billed Amount"] + labels = [_("Amount to Bill"), _("Billed Amount")] return { "data": {"labels": labels, "datasets": [{"values": [pending, completed]}]}, diff --git a/erpnext/selling/report/sales_order_trends/sales_order_trends.js b/erpnext/selling/report/sales_order_trends/sales_order_trends.js index 28bd5504930..a44353cf54b 100644 --- a/erpnext/selling/report/sales_order_trends/sales_order_trends.js +++ b/erpnext/selling/report/sales_order_trends/sales_order_trends.js @@ -2,3 +2,10 @@ // License: GNU General Public License v3. See license.txt frappe.query_reports["Sales Order Trends"] = $.extend({}, erpnext.sales_trends_filters); + +frappe.query_reports["Sales Order Trends"]["filters"].push({ + fieldname: "include_closed_orders", + label: __("Include Closed Orders"), + fieldtype: "Check", + default: 0, +}); diff --git a/erpnext/selling/workspace/selling/selling.json b/erpnext/selling/workspace/selling/selling.json index e13bdec11fb..d17b8438eae 100644 --- a/erpnext/selling/workspace/selling/selling.json +++ b/erpnext/selling/workspace/selling/selling.json @@ -639,7 +639,7 @@ "doc_view": "List", "label": "Learn Sales Management", "type": "URL", - "url": "https://frappe.school/courses/sales-management-course?utm_source=in_app" + "url": "https://school.frappe.io/lms/courses/sales-management-course?utm_source=in_app" }, { "label": "Point of Sale", @@ -676,5 +676,6 @@ "type": "Dashboard" } ], - "title": "Selling" -} \ No newline at end of file + "title": "Selling", + "type": "Workspace" +} diff --git a/erpnext/setup/default_success_action.py b/erpnext/setup/default_success_action.py index 2b9e75c3265..dba20548184 100644 --- a/erpnext/setup/default_success_action.py +++ b/erpnext/setup/default_success_action.py @@ -11,14 +11,17 @@ doctype_list = [ def get_message(doctype): - return _("{0} has been submitted successfully").format(_(doctype)) + # Properly format the string with translated doctype + return _("{0} has been submitted successfully").format(doctype) def get_first_success_message(doctype): + # Reuse the get_message function for consistency return get_message(doctype) def get_default_success_action(): + # Loop through each doctype in the list and return formatted actions return [ { "doctype": "Success Action", diff --git a/erpnext/setup/doctype/company/company.js b/erpnext/setup/doctype/company/company.js index f14057a272e..72d28a705ad 100644 --- a/erpnext/setup/doctype/company/company.js +++ b/erpnext/setup/doctype/company/company.js @@ -252,6 +252,7 @@ erpnext.company.setup_queries = function (frm) { ["default_expense_account", { root_type: "Expense" }], ["default_income_account", { root_type: "Income" }], ["round_off_account", { root_type: "Expense" }], + ["round_off_for_opening", { root_type: "Liability", account_type: "Round Off for Opening" }], ["write_off_account", { root_type: "Expense" }], ["default_deferred_expense_account", {}], ["default_deferred_revenue_account", {}], diff --git a/erpnext/setup/doctype/company/company.json b/erpnext/setup/doctype/company/company.json index 284bd2b7f22..ae473e15917 100644 --- a/erpnext/setup/doctype/company/company.json +++ b/erpnext/setup/doctype/company/company.json @@ -48,26 +48,34 @@ "default_bank_account", "default_cash_account", "default_receivable_account", - "round_off_account", - "round_off_cost_center", + "default_payable_account", "write_off_account", - "exchange_gain_loss_account", - "unrealized_exchange_gain_loss_account", "unrealized_profit_loss_account", "column_break0", "allow_account_creation_against_child_company", - "default_payable_account", "default_expense_account", "default_income_account", - "default_deferred_revenue_account", - "default_deferred_expense_account", "default_discount_account", "payment_terms", "cost_center", "default_finance_book", + "exchange_gain__loss_section", + "exchange_gain_loss_account", + "column_break_sttp", + "unrealized_exchange_gain_loss_account", + "round_off_section", + "round_off_account", + "round_off_cost_center", + "column_break_jqfo", + "round_off_for_opening", + "deferred_accounting_section", + "default_deferred_revenue_account", + "column_break_dcdl", + "default_deferred_expense_account", "advance_payments_section", "book_advance_payments_in_separate_party_account", "reconcile_on_advance_payment_date", + "reconciliation_takes_effect_on", "column_break_fwcf", "default_advance_received_account", "default_advance_paid_account", @@ -286,7 +294,7 @@ { "fieldname": "default_settings", "fieldtype": "Section Break", - "label": "Accounts Settings", + "label": "Default Accounts", "oldfieldtype": "Section Break" }, { @@ -789,6 +797,7 @@ "description": "If Enabled - Reconciliation happens on the Advance Payment posting date
\nIf Disabled - Reconciliation happens on oldest of 2 Dates: Invoice Date or the Advance Payment posting date
\n", "fieldname": "reconcile_on_advance_payment_date", "fieldtype": "Check", + "hidden": 1, "label": "Reconcile on Advance Payment Date" }, { @@ -801,6 +810,46 @@ "fieldtype": "Link", "label": "Default Operating Cost Account", "options": "Account" + }, + { + "fieldname": "round_off_for_opening", + "fieldtype": "Link", + "label": "Round Off for Opening", + "options": "Account" + }, + { + "fieldname": "exchange_gain__loss_section", + "fieldtype": "Section Break", + "label": "Exchange Gain / Loss" + }, + { + "fieldname": "round_off_section", + "fieldtype": "Section Break", + "label": "Round Off" + }, + { + "fieldname": "deferred_accounting_section", + "fieldtype": "Section Break", + "label": "Deferred Accounting" + }, + { + "fieldname": "column_break_sttp", + "fieldtype": "Column Break" + }, + { + "fieldname": "column_break_jqfo", + "fieldtype": "Column Break" + }, + { + "fieldname": "column_break_dcdl", + "fieldtype": "Column Break" + }, + { + "default": "Oldest Of Invoice Or Advance", + "fieldname": "reconciliation_takes_effect_on", + "fieldtype": "Select", + "label": "Reconciliation Takes Effect On", + "options": "Advance Payment Date\nOldest Of Invoice Or Advance\nReconciliation Date" } ], "icon": "fa fa-building", @@ -808,7 +857,7 @@ "image_field": "company_logo", "is_tree": 1, "links": [], - "modified": "2024-07-24 18:17:56.413971", + "modified": "2025-01-09 20:12:25.471544", "modified_by": "Administrator", "module": "Setup", "name": "Company", diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py index 8028b8e6af4..e5f26073a33 100644 --- a/erpnext/setup/doctype/company/company.py +++ b/erpnext/setup/doctype/company/company.py @@ -87,10 +87,14 @@ class Company(NestedSet): payment_terms: DF.Link | None phone_no: DF.Data | None reconcile_on_advance_payment_date: DF.Check + reconciliation_takes_effect_on: DF.Literal[ + "Advance Payment Date", "Oldest Of Invoice Or Advance", "Reconciliation Date" + ] registration_details: DF.Code | None rgt: DF.Int round_off_account: DF.Link | None round_off_cost_center: DF.Link | None + round_off_for_opening: DF.Link | None sales_monthly_history: DF.SmallText | None series_for_depreciation_entry: DF.Data | None stock_adjustment_account: DF.Link | None @@ -278,6 +282,7 @@ class Company(NestedSet): frappe.clear_cache() def create_default_warehouses(self): + parent_warehouse = None for wh_detail in [ {"warehouse_name": _("All Warehouses"), "is_group": 1}, {"warehouse_name": _("Stores"), "is_group": 0}, @@ -285,24 +290,31 @@ class Company(NestedSet): {"warehouse_name": _("Finished Goods"), "is_group": 0}, {"warehouse_name": _("Goods In Transit"), "is_group": 0, "warehouse_type": "Transit"}, ]: - if not frappe.db.exists("Warehouse", "{} - {}".format(wh_detail["warehouse_name"], self.abbr)): - warehouse = frappe.get_doc( - { - "doctype": "Warehouse", - "warehouse_name": wh_detail["warehouse_name"], - "is_group": wh_detail["is_group"], - "company": self.name, - "parent_warehouse": "{} - {}".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.flags.ignore_permissions = True - warehouse.flags.ignore_mandatory = True - warehouse.insert() + if frappe.db.exists( + "Warehouse", + { + "warehouse_name": wh_detail["warehouse_name"], + "company": self.name, + }, + ): + continue + + warehouse = frappe.get_doc( + { + "doctype": "Warehouse", + "warehouse_name": wh_detail["warehouse_name"], + "is_group": wh_detail["is_group"], + "company": self.name, + "parent_warehouse": parent_warehouse, + "warehouse_type": wh_detail.get("warehouse_type"), + } + ) + warehouse.flags.ignore_permissions = True + warehouse.flags.ignore_mandatory = True + warehouse.insert() + + if wh_detail["is_group"]: + parent_warehouse = warehouse.name def create_default_accounts(self): from erpnext.accounts.doctype.account.chart_of_accounts.chart_of_accounts import create_charts @@ -913,6 +925,14 @@ def get_default_company_address(name, sort_key="is_primary_address", existing_ad return None +@frappe.whitelist() +def get_billing_shipping_address(name, billing_address=None, shipping_address=None): + primary_address = get_default_company_address(name, "is_primary_address", billing_address) + shipping_address = get_default_company_address(name, "is_shipping_address", shipping_address) + + return {"primary_address": primary_address, "shipping_address": shipping_address} + + @frappe.whitelist() def create_transaction_deletion_request(company): from erpnext.setup.doctype.transaction_deletion_record.transaction_deletion_record import ( diff --git a/erpnext/setup/doctype/currency_exchange/currency_exchange.js b/erpnext/setup/doctype/currency_exchange/currency_exchange.js index 82f0e22ee61..d4501e5d0da 100644 --- a/erpnext/setup/doctype/currency_exchange/currency_exchange.js +++ b/erpnext/setup/doctype/currency_exchange/currency_exchange.js @@ -1,30 +1,32 @@ // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors // License: GNU General Public License v3. See license.txt -extend_cscript(cur_frm.cscript, { - onload: function () { - if (cur_frm.doc.__islocal) { - cur_frm.set_value("to_currency", frappe.defaults.get_global_default("currency")); +frappe.ui.form.on("Currency Exchange", { + onload: function (frm) { + if (frm.doc.__islocal) { + frm.set_value("to_currency", frappe.defaults.get_global_default("currency")); } }, - refresh: function () { - cur_frm.cscript.set_exchange_rate_label(); + refresh: function (frm) { + // Don't trigger on Quick Entry form + if (typeof frm.is_dialog === "undefined") { + frm.trigger("set_exchange_rate_label"); + } }, - from_currency: function () { - cur_frm.cscript.set_exchange_rate_label(); + from_currency: function (frm) { + frm.trigger("set_exchange_rate_label"); }, - to_currency: function () { - cur_frm.cscript.set_exchange_rate_label(); + to_currency: function (frm) { + frm.trigger("set_exchange_rate_label"); }, - - set_exchange_rate_label: function () { - if (cur_frm.doc.from_currency && cur_frm.doc.to_currency) { - var default_label = __(frappe.meta.docfield_map[cur_frm.doctype]["exchange_rate"].label); - cur_frm.fields_dict.exchange_rate.set_label( - default_label + repl(" (1 %(from_currency)s = [?] %(to_currency)s)", cur_frm.doc) + set_exchange_rate_label: function (frm) { + if (frm.doc.from_currency && frm.doc.to_currency) { + var default_label = __(frappe.meta.docfield_map[frm.doctype]["exchange_rate"].label); + frm.fields_dict.exchange_rate.set_label( + default_label + repl(" (1 %(from_currency)s = [?] %(to_currency)s)", frm.doc) ); } }, diff --git a/erpnext/setup/doctype/currency_exchange/test_currency_exchange.py b/erpnext/setup/doctype/currency_exchange/test_currency_exchange.py index 3249c93ef87..d28b1e65b7b 100644 --- a/erpnext/setup/doctype/currency_exchange/test_currency_exchange.py +++ b/erpnext/setup/doctype/currency_exchange/test_currency_exchange.py @@ -68,9 +68,9 @@ def patched_requests_get(*args, **kwargs): if kwargs["params"].get("date") and kwargs["params"].get("from") and kwargs["params"].get("to"): if test_exchange_values.get(kwargs["params"]["date"]): return PatchResponse({"result": test_exchange_values[kwargs["params"]["date"]]}, 200) - elif args[0].startswith("https://frankfurter.app") and kwargs.get("params"): + elif args[0].startswith("https://api.frankfurter.app") and kwargs.get("params"): if kwargs["params"].get("base") and kwargs["params"].get("symbols"): - date = args[0].replace("https://frankfurter.app/", "") + date = args[0].replace("https://api.frankfurter.app/", "") if test_exchange_values.get(date): return PatchResponse( {"rates": {kwargs["params"].get("symbols"): test_exchange_values.get(date)}}, 200 diff --git a/erpnext/setup/doctype/customer_group/customer_group.py b/erpnext/setup/doctype/customer_group/customer_group.py index 06f2f43374e..5dd0fd02011 100644 --- a/erpnext/setup/doctype/customer_group/customer_group.py +++ b/erpnext/setup/doctype/customer_group/customer_group.py @@ -71,14 +71,9 @@ class CustomerGroup(NestedSet): ) def on_update(self): - self.validate_name_with_customer() super().on_update() self.validate_one_root() - def validate_name_with_customer(self): - if frappe.db.exists("Customer", self.name): - frappe.msgprint(_("A customer with the same name already exists"), raise_exception=1) - def get_parent_customer_groups(customer_group): lft, rgt = frappe.db.get_value("Customer Group", customer_group, ["lft", "rgt"]) diff --git a/erpnext/setup/doctype/employee/employee.json b/erpnext/setup/doctype/employee/employee.json index daf2df5a590..22c1ce7927a 100644 --- a/erpnext/setup/doctype/employee/employee.json +++ b/erpnext/setup/doctype/employee/employee.json @@ -182,8 +182,6 @@ "read_only": 1 }, { - "fetch_from": "user_id.user_image", - "fetch_if_empty": 1, "fieldname": "image", "fieldtype": "Attach Image", "hidden": 1, @@ -824,7 +822,7 @@ "image_field": "image", "is_tree": 1, "links": [], - "modified": "2024-01-03 17:36:20.984421", + "modified": "2025-02-07 13:54:40.122345", "modified_by": "Administrator", "module": "Setup", "name": "Employee", @@ -871,5 +869,6 @@ "sort_field": "modified", "sort_order": "DESC", "states": [], - "title_field": "employee_name" + "title_field": "employee_name", + "track_changes": 1 } \ No newline at end of file diff --git a/erpnext/setup/doctype/employee/employee.py b/erpnext/setup/doctype/employee/employee.py index 2fa5531d602..93af08d365f 100755 --- a/erpnext/setup/doctype/employee/employee.py +++ b/erpnext/setup/doctype/employee/employee.py @@ -41,6 +41,7 @@ class Employee(NestedSet): self.validate_email() self.validate_status() self.validate_reports_to() + self.set_preferred_email() self.validate_preferred_email() if self.user_id: @@ -63,14 +64,12 @@ class Employee(NestedSet): def validate_user_details(self): if self.user_id: - data = frappe.db.get_value("User", self.user_id, ["enabled", "user_image"], as_dict=1) + data = frappe.db.get_value("User", self.user_id, ["enabled"], as_dict=1) if not data: self.user_id = None return - if data.get("user_image") and self.image == "": - self.image = data.get("user_image") self.validate_for_enabled_user_id(data.get("enabled", 0)) self.validate_duplicate_user_id() @@ -79,6 +78,7 @@ class Employee(NestedSet): def on_update(self): self.update_nsm_model() + frappe.clear_cache() if self.user_id: self.update_user() self.update_user_permissions() @@ -160,9 +160,7 @@ class Employee(NestedSet): def set_preferred_email(self): preferred_email_field = frappe.scrub(self.prefered_contact_email) - if preferred_email_field: - preferred_email = self.get(preferred_email_field) - self.prefered_email = preferred_email + self.prefered_email = self.get(preferred_email_field) if preferred_email_field else None def validate_status(self): if self.status == "Left": diff --git a/erpnext/setup/doctype/holiday_list/holiday_list.py b/erpnext/setup/doctype/holiday_list/holiday_list.py index 0216f75a628..b7920236ce1 100644 --- a/erpnext/setup/doctype/holiday_list/holiday_list.py +++ b/erpnext/setup/doctype/holiday_list/holiday_list.py @@ -149,7 +149,11 @@ class HolidayList(Document): unique_dates = [] for row in self.holidays: if row.holiday_date in unique_dates: - frappe.throw(_("Holiday Date {0} added multiple times").format(frappe.bold(row.holiday_date))) + frappe.throw( + _("Holiday Date {0} added multiple times").format( + frappe.bold(formatdate(row.holiday_date)) + ) + ) unique_dates.append(row.holiday_date) diff --git a/erpnext/setup/doctype/quotation_lost_reason/quotation_lost_reason.json b/erpnext/setup/doctype/quotation_lost_reason/quotation_lost_reason.json index 0eae08e8707..a0e0f176ddf 100644 --- a/erpnext/setup/doctype/quotation_lost_reason/quotation_lost_reason.json +++ b/erpnext/setup/doctype/quotation_lost_reason/quotation_lost_reason.json @@ -32,7 +32,7 @@ "table_fieldname": "lost_reasons" } ], - "modified": "2023-11-23 19:31:02.743353", + "modified": "2024-12-10 08:21:38.280627", "modified_by": "Administrator", "module": "Setup", "name": "Quotation Lost Reason", @@ -49,6 +49,22 @@ "role": "Sales Master Manager", "share": 1, "write": 1 + }, + { + "read": 1, + "role": "Sales User" + }, + { + "read": 1, + "role": "Sales Manager" + }, + { + "read": 1, + "role": "Maintenance User" + }, + { + "read": 1, + "role": "Maintenance Manager" } ], "quick_entry": 1, diff --git a/erpnext/setup/doctype/sales_person/sales_person.py b/erpnext/setup/doctype/sales_person/sales_person.py index b0e42de36d5..43c5afa313e 100644 --- a/erpnext/setup/doctype/sales_person/sales_person.py +++ b/erpnext/setup/doctype/sales_person/sales_person.py @@ -10,6 +10,7 @@ from frappe import _ from frappe.query_builder import Interval from frappe.query_builder.functions import Count, CurDate, UnixTimestamp from frappe.utils import flt +from frappe.utils.data import get_url_to_list from frappe.utils.nestedset import NestedSet, get_root_of from erpnext import get_default_currency @@ -42,6 +43,9 @@ class SalesPerson(NestedSet): nsm_parent_field = "parent_sales_person" def validate(self): + if not self.enabled: + self.validate_sales_person() + if not self.parent_sales_person: self.parent_sales_person = get_root_of("Sales Person") @@ -83,6 +87,25 @@ class SalesPerson(NestedSet): super().on_update() self.validate_one_root() + def validate_sales_person(self): + sales_team = frappe.qb.DocType("Sales Team") + + query = ( + frappe.qb.from_(sales_team) + .select(sales_team.sales_person) + .where((sales_team.sales_person == self.name) & (sales_team.parenttype == "Customer")) + .groupby(sales_team.sales_person) + ).run(as_dict=True) + + if query: + frappe.throw( + _("The Sales Person is linked with {0}").format( + frappe.bold( + f"""{"Customers"}""" + ) + ) + ) + def get_email_id(self): if self.employee: user = frappe.db.get_value("Employee", self.employee, "user_id") diff --git a/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py b/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py index c9c3c837ceb..227df38e116 100644 --- a/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py +++ b/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py @@ -10,6 +10,14 @@ from frappe.model.document import Document from frappe.utils import cint, comma_and, create_batch, get_link_to_form from frappe.utils.background_jobs import get_job, is_job_enqueued +LEDGER_ENTRY_DOCTYPES = frozenset( + ( + "GL Entry", + "Payment Ledger Entry", + "Stock Ledger Entry", + ) +) + class TransactionDeletionRecord(Document): # begin: auto-generated types @@ -220,35 +228,42 @@ class TransactionDeletionRecord(Document): """Delete addresses to which leads are linked""" self.validate_doc_status() if not self.delete_leads_and_addresses: - leads = frappe.get_all("Lead", filters={"company": self.company}) - leads = ["'%s'" % row.get("name") for row in leads] + leads = frappe.db.get_all("Lead", filters={"company": self.company}, pluck="name") addresses = [] if leads: - addresses = frappe.db.sql_list( - """select parent from `tabDynamic Link` where link_name - in ({leads})""".format(leads=",".join(leads)) + addresses = frappe.db.get_all( + "Dynamic Link", filters={"link_name": ("in", leads)}, pluck="parent" ) - if addresses: addresses = ["%s" % frappe.db.escape(addr) for addr in addresses] - frappe.db.sql( - """delete from `tabAddress` where name in ({addresses}) and - name not in (select distinct dl1.parent from `tabDynamic Link` dl1 - inner join `tabDynamic Link` dl2 on dl1.parent=dl2.parent - and dl1.link_doctype<>dl2.link_doctype)""".format(addresses=",".join(addresses)) - ) + address = qb.DocType("Address") + dl1 = qb.DocType("Dynamic Link") + dl2 = qb.DocType("Dynamic Link") - frappe.db.sql( - """delete from `tabDynamic Link` where link_doctype='Lead' - and parenttype='Address' and link_name in ({leads})""".format(leads=",".join(leads)) - ) + qb.from_(address).delete().where( + (address.name.isin(addresses)) + & ( + address.name.notin( + qb.from_(dl1) + .join(dl2) + .on((dl1.parent == dl2.parent) & (dl1.link_doctype != dl2.link_doctype)) + .select(dl1.parent) + .distinct() + ) + ) + ).run() + + dynamic_link = qb.DocType("Dynamic Link") + qb.from_(dynamic_link).delete().where( + (dynamic_link.link_doctype == "Lead") + & (dynamic_link.parenttype == "Address") + & (dynamic_link.link_name.isin(leads)) + ).run() + + customer = qb.DocType("Customer") + qb.update(customer).set(customer.lead_name, None).where(customer.lead_name.isin(leads)).run() - frappe.db.sql( - """update `tabCustomer` set lead_name=NULL where lead_name in ({leads})""".format( - leads=",".join(leads) - ) - ) self.db_set("delete_leads_and_addresses", 1) self.enqueue_task(task="Reset Company Values") @@ -468,25 +483,31 @@ def get_doctypes_to_be_ignored(): @frappe.whitelist() def is_deletion_doc_running(company: str | None = None, err_msg: str | None = None): - if company: - if running_deletion_jobs := frappe.db.get_all( - "Transaction Deletion Record", - filters={"docstatus": 1, "company": company, "status": "Running"}, - ): - if not err_msg: - err_msg = "" - frappe.throw( - title=_("Deletion in Progress!"), - msg=_("Transaction Deletion Document: {0} is running for this Company. {1}").format( - get_link_to_form("Transaction Deletion Record", running_deletion_jobs[0].name), err_msg - ), - ) + if not company: + return + + running_deletion_job = frappe.db.get_value( + "Transaction Deletion Record", + {"docstatus": 1, "company": company, "status": "Running"}, + "name", + ) + + if not running_deletion_job: + return + + frappe.throw( + title=_("Deletion in Progress!"), + msg=_("Transaction Deletion Document: {0} is running for this Company. {1}").format( + get_link_to_form("Transaction Deletion Record", running_deletion_job), err_msg or "" + ), + ) def check_for_running_deletion_job(doc, method=None): # Check if DocType has 'company' field - df = qb.DocType("DocField") - if qb.from_(df).select(df.parent).where((df.fieldname == "company") & (df.parent == doc.doctype)).run(): - is_deletion_doc_running( - doc.company, _("Cannot make any transactions until the deletion job is completed") - ) + if doc.doctype in LEDGER_ENTRY_DOCTYPES or not doc.meta.has_field("company"): + return + + is_deletion_doc_running( + doc.company, _("Cannot make any transactions until the deletion job is completed") + ) diff --git a/erpnext/setup/install.py b/erpnext/setup/install.py index bba9e79a348..81e1ac6a458 100644 --- a/erpnext/setup/install.py +++ b/erpnext/setup/install.py @@ -16,7 +16,7 @@ from erpnext.setup.doctype.incoterm.incoterm import create_incoterms from .default_success_action import get_default_success_action default_mail_footer = """
Sent via - ERPNext
""" + ERPNext
""" def after_install(): @@ -98,7 +98,7 @@ def setup_currency_exchange(): ces.set("result_key", []) ces.set("req_params", []) - ces.api_endpoint = "https://frankfurter.app/{transaction_date}" + ces.api_endpoint = "https://api.frankfurter.app/{transaction_date}" ces.append("result_key", {"key": "rates"}) ces.append("result_key", {"key": "{to_currency}"}) ces.append("req_params", {"key": "base", "value": "{from_currency}"}) @@ -182,7 +182,7 @@ def add_standard_navbar_items(): { "item_label": "Frappe School", "item_type": "Route", - "route": "https://frappe.school?utm_source=in_app", + "route": "https://frappe.io/school?utm_source=in_app", "is_standard": 1, }, { diff --git a/erpnext/setup/setup_wizard/data/country_wise_tax.json b/erpnext/setup/setup_wizard/data/country_wise_tax.json index a746ebee7ed..9f10785dac1 100644 --- a/erpnext/setup/setup_wizard/data/country_wise_tax.json +++ b/erpnext/setup/setup_wizard/data/country_wise_tax.json @@ -449,18 +449,355 @@ }, "France": { - "France VAT 20%": { - "account_name": "VAT 20%", - "tax_rate": 20, - "default": 1 - }, - "France VAT 10%": { - "account_name": "VAT 10%", - "tax_rate": 10 - }, - "France VAT 5.5%": { - "account_name": "VAT 5.5%", - "tax_rate": 5.5 + "chart_of_accounts": { + "France - Plan Comptable General avec code": { + "sales_tax_templates": [ + { + "title": "TVA 20% Collectée", + "tax_category": "Vente Domestique", + "taxes": [ + { + "account_head": { + "account_name": "TVA 20% Collectée", + "account_number": "445720", + "root_type": "Liability", + "tax_rate": 20.0 + }, + "description": "TVA 20%", + "rate": 20 + } + ] + }, + { + "title": "TVA 10% Collectée", + "tax_category": "Vente Domestique", + "taxes": [ + { + "account_head": { + "account_name": "TVA 10% Collectée", + "account_number": "445710", + "root_type": "Liability", + "tax_rate": 10.0 + }, + "description": "TVA 10%", + "rate": 10 + } + ] + }, + { + "title": "TVA 5.5% Collectée", + "tax_category": "Vente Domestique", + "taxes": [ + { + "account_head": { + "account_name": "TVA 5.5% Collectée", + "account_number": "445755", + "root_type": "Liability", + "tax_rate": 5.5 + }, + "description": "TVA 5.5%", + "rate": 5.5 + } + ] + }, + { + "title": "TVA 2.1% Collectée", + "tax_category": "Vente Domestique", + "taxes": [ + { + "account_head": { + "account_name": "TVA 2.1% Collectée", + "account_number": "445721", + "root_type": "Liability", + "tax_rate": 2.10 + }, + "description": "TVA 2.1%", + "rate": 2.1 + } + ] + } + ], + "purchase_tax_templates": [ + { + "title": "TVA 20% Déductible", + "tax_category": "Achat Domestique", + "taxes": [ + { + "account_head": { + "account_name": "TVA 20% Déductible", + "account_number": "445620", + "root_type": "Asset", + "tax_rate": 20.0 + }, + "description": "TVA 20%", + "rate": 20 + } + ] + }, + { + "title": "TVA 10% Déductible", + "tax_category": "Achat Domestique", + "taxes": [ + { + "account_head": { + "account_name": "TVA 10% Déductible", + "account_number": "445610", + "root_type": "Asset", + "tax_rate": 10.0 + }, + "description": "TVA 10%", + "rate": 10 + } + ] + }, + { + "title": "TVA 5.5% Déductible", + "tax_category": "Achat Domestique", + "taxes": [ + { + "account_head": { + "account_name": "TVA 5.5% Déductible", + "account_number": "445655", + "root_type": "Asset", + "tax_rate": 5.5 + }, + "description": "TVA 5.5%", + "rate": 5.5 + } + ] + }, + { + "title": "TVA 2.1% Déductible", + "tax_category": "Achat Domestique", + "taxes": [ + { + "account_head": { + "account_name": "TVA 2.1% Déductible", + "account_number": "445621", + "root_type": "Asset", + "tax_rate": 2.1 + }, + "description": "TVA 2.1%", + "rate": 2.1 + } + ] + }, + { + "title": "TVA 20% Déductible - Incluse dans le prix", + "taxes": [ + { + "account_head": { + "account_name": "TVA 20% Déductible", + "account_number": "445620", + "root_type": "Asset", + "tax_rate": 20.0 + }, + "included_in_print_rate": 1, + "description": "TVA 20%", + "rate": 20 + } + ] + }, + { + "title": "TVA 10% Déductible - Incluse dans le prix", + "taxes": [ + { + "account_head": { + "account_name": "TVA 10% Déductible", + "account_number": "445610", + "root_type": "Asset", + "tax_rate": 10.0 + }, + "included_in_print_rate": 1, + "description": "TVA 10%", + "rate": 10 + } + ] + }, + { + "title": "TVA 5.5% Déductible - Incluse dans le prix", + "taxes": [ + { + "account_head": { + "account_name": "TVA 5.5% Déductible", + "account_number": "445655", + "root_type": "Asset", + "tax_rate": 5.5 + }, + "included_in_print_rate": 1, + "description": "TVA 5.5%", + "rate": 5.5 + } + ] + }, + { + "title": "TVA 2.1% Déductible - Incluse dans le prix", + "taxes": [ + { + "account_head": { + "account_name": "TVA 2.1% Déductible", + "account_number": "445621", + "root_type": "Asset", + "tax_rate": 2.1 + }, + "included_in_print_rate": 1, + "description": "TVA 2.1%", + "rate": 2.1 + } + ] + }, + { + "title": "TVA Intracommunautaire", + "tax_category": "Achat - EU", + "taxes": [ + { + "account_head": { + "account_name": "TVA déductible sur acquisition intracommunautaires", + "account_number": "445662", + "root_type": "Asset", + "tax_rate": 20.0, + "add_deduct_tax": "Add" + }, + "description": "TVA déductible sur acquisition intracommunautaires", + "rate": 20 + }, + { + "account_head": { + "account_name": "TVA due intracommunautaire", + "account_number": "445200", + "root_type": "Asset", + "tax_rate": 20.0, + "add_deduct_tax": "Deduct" + }, + "description": "TVA due intracommunautaire", + "rate": 20 + } + ] + } + ], + "item_tax_templates": [ + { + "title": "TVA 20% Déductible - Achat", + "taxes": [ + { + "tax_type": { + "account_name": "TVA 20% Déductible", + "account_number": "445620", + "root_type": "Asset", + "tax_rate": 20.0 + }, + "description": "TVA 20%", + "tax_rate": 20 + } + ] + }, + { + "title": "TVA 10% Déductible - Achat", + "taxes": [ + { + "tax_type": { + "account_name": "TVA 10% Déductible", + "account_number": "445610", + "root_type": "Asset", + "tax_rate": 10.0 + }, + "description": "TVA 10%", + "tax_rate": 10 + } + ] + }, + { + "title": "TVA 5.5% Déductible - Achat", + "taxes": [ + { + "tax_type": { + "account_name": "TVA 5.5% Déductible", + "account_number": "445655", + "root_type": "Asset", + "tax_rate": 5.5 + }, + "description": "TVA 5.5%", + "tax_rate": 5.5 + } + ] + }, + { + "title": "TVA 2.1% Déductible - Achat", + "taxes": [ + { + "tax_type": { + "account_name": "TVA 2.1% Déductible", + "account_number": "445621", + "root_type": "Asset", + "tax_rate": 2.1 + }, + "description": "TVA 2.1%", + "tax_rate": 2.1 + } + ] + }, + { + "title": "TVA 20% Collecté - Vente", + "taxes": [ + { + "tax_type": { + "account_name": "TVA 20% Collecté", + "account_number": "445720", + "root_type": "Liability", + "tax_rate": 20.0 + }, + "description": "TVA 20%", + "tax_rate": 20 + } + ] + }, + { + "title": "TVA 10% Collecté - Vente", + "taxes": [ + { + "tax_type": { + "account_name": "TVA 10% Collecté", + "account_number": "445710", + "root_type": "Liability", + "tax_rate": 10.0 + }, + "description": "TVA 10%", + "tax_rate": 10 + } + ] + }, + { + "title": "TVA 5.5% Collecté - Vente", + "taxes": [ + { + "tax_type": { + "account_name": "TVA 5.5% Collecté", + "account_number": "445755", + "root_type": "Liability", + "tax_rate": 5.5 + }, + "description": "TVA 5.5%", + "tax_rate": 5.5 + } + ] + }, + { + "title": "TVA 2.1% Collecté - Vente", + "taxes": [ + { + "tax_type": { + "account_name": "TVA 2.1% Collecté", + "account_number": "445721", + "root_type": "Liability", + "tax_rate": 2.1 + }, + "description": "TVA 2.1%", + "tax_rate": 2.1 + } + ] + } + ] + } } }, @@ -4163,9 +4500,200 @@ }, "Sweden": { - "Sweden Tax": { - "account_name": "VAT", - "tax_rate": 25.00 + "tax_categories": [], + "chart_of_accounts": { + "*": { + "sales_tax_templates": [ + { + "title": "Försäljning Moms 25%", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Utgående moms, 25 %", + "account_number": "2610", + "tax_rate": 25.00 + }, + "description": "Moms 25%", + "rate": 25.00 + } + ] + }, + { + "title": "Försäljning Moms 12%", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Utgående moms, 12 %", + "account_number": "2620", + "tax_rate": 12.00 + }, + "description": "Moms 12%", + "rate": 12.00 + } + ] + }, + { + "title": "Försäljning Moms 6%", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Utgående moms, 6 %", + "account_number": "2630", + "tax_rate": 6.00 + }, + "description": "Moms 6%", + "rate": 6.00 + } + ] + }, + { + "title": "Försäljning Moms 0%", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Utgående moms, 6 %", + "account_number": "2630", + "tax_rate": 0.00 + }, + "description": "Moms 0%", + "rate": 0.00 + } + ] + } + ], + "purchase_tax_templates": [ + { + "title": "Inköp Moms 25%", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Ingående moms", + "account_number": "2640", + "root_type": "Liability", + "tax_rate": 25.00 + }, + "description": "Moms 25%", + "rate": 25.00 + } + ] + }, + { + "title": "Inköp Moms 12%", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Ingående moms", + "account_number": "2640", + "root_type": "Liability", + "tax_rate": 12.00 + }, + "description": "Moms 12%", + "rate": 12.00 + } + ] + }, + { + "title": "Inköp Moms 6%", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Ingående moms", + "account_number": "2640", + "root_type": "Liability", + "tax_rate": 6.00 + }, + "description": "Moms 6%", + "rate": 6.00 + } + ] + }, + { + "title": "Inköp Moms 0%", + "is_default": 0, + "taxes": [ + { + "account_head": { + "account_name": "Ingående moms", + "account_number": "2640", + "root_type": "Liability", + "tax_rate": 0.00 + }, + "description": "Moms 0%", + "rate": 0.00 + } + ] + } + ], + "item_tax_templates": [ + { + "title": "Artikel Moms 25%", + "taxes": [ + { + "tax_type": { + "account_name": "Utgående moms, 25 %", + "account_number": "2610", + "root_type": "Liability", + "tax_rate": 25.00 + }, + "description": "Moms 25%", + "tax_rate": 25.00 + } + ] + }, + { + "title": "Artikel Moms 12%", + "taxes": [ + { + "tax_type": { + "account_name": "Utgående moms, 12 %", + "account_number": "2620", + "root_type": "Liability", + "tax_rate": 12.00 + }, + "description": "Moms 12%", + "tax_rate": 12.00 + } + ] + }, + { + "title": "Artikel Moms 6%", + "taxes": [ + { + "tax_type": { + "account_name": "Utgående moms, 6 %", + "account_number": "2630", + "root_type": "Liability", + "tax_rate": 6.00 + }, + "description": "Moms 6%", + "tax_rate": 6.00 + } + ] + }, + { + "title": "Artikel Moms 0%", + "taxes": [ + { + "tax_type": { + "account_name": "Utgående moms, 0 %", + "account_number": "2611", + "root_type": "Liability", + "tax_rate": 0.00 + }, + "description": "Moms 0%", + "tax_rate": 0.00 + } + ] + } + ] + } } }, diff --git a/erpnext/setup/setup_wizard/operations/taxes_setup.py b/erpnext/setup/setup_wizard/operations/taxes_setup.py index 384673448b0..f8cd61d50ea 100644 --- a/erpnext/setup/setup_wizard/operations/taxes_setup.py +++ b/erpnext/setup/setup_wizard/operations/taxes_setup.py @@ -86,7 +86,13 @@ def simple_to_detailed(templates): def from_detailed_data(company_name, data): """Create Taxes and Charges Templates from detailed data.""" - coa_name = frappe.db.get_value("Company", company_name, "chart_of_accounts") + charts_company_name = company_name + if ( + frappe.db.get_value("Company", company_name, "create_chart_of_accounts_based_on") + == "Existing Company" + ): + charts_company_name = frappe.db.get_value("Company", company_name, "existing_company") + coa_name = frappe.db.get_value("Company", charts_company_name, "chart_of_accounts") coa_data = data.get("chart_of_accounts", {}) tax_templates = coa_data.get(coa_name) or coa_data.get("*", {}) tax_categories = data.get("tax_categories") @@ -286,7 +292,7 @@ def get_or_create_tax_group(company_name, root_type): tax_group_account.flags.ignore_links = True tax_group_account.flags.ignore_validate = True - tax_group_account.insert(ignore_permissions=True) + tax_group_account.insert(ignore_permissions=True, ignore_if_duplicate=True) tax_group_name = tax_group_account.name diff --git a/erpnext/setup/utils.py b/erpnext/setup/utils.py index 705fb1f2fcf..e41f27b4d8c 100644 --- a/erpnext/setup/utils.py +++ b/erpnext/setup/utils.py @@ -4,11 +4,15 @@ import frappe from frappe import _ from frappe.utils import add_days, flt, get_datetime_str, nowdate -from frappe.utils.data import now_datetime +from frappe.utils.data import getdate, now_datetime from frappe.utils.nestedset import get_root_of from erpnext import get_default_company +PEGGED_CURRENCIES = { + "USD": {"AED": 3.6725}, # AED is pegged to USD at a rate of 3.6725 since 1997 +} + def before_tests(): frappe.clear_cache() @@ -45,6 +49,14 @@ def before_tests(): frappe.db.commit() +def get_pegged_rate(from_currency: str, to_currency: str, transaction_date) -> float | None: + if rate := PEGGED_CURRENCIES.get(from_currency, {}).get(to_currency): + return rate + elif rate := PEGGED_CURRENCIES.get(to_currency, {}).get(from_currency): + return 1 / rate + return None + + @frappe.whitelist() def get_exchange_rate(from_currency, to_currency, transaction_date=None, args=None): if not (from_currency and to_currency): @@ -55,6 +67,7 @@ def get_exchange_rate(from_currency, to_currency, transaction_date=None, args=No if not transaction_date: transaction_date = nowdate() + currency_settings = frappe.get_doc("Accounts Settings").as_dict() allow_stale_rates = currency_settings.get("allow_stale") @@ -84,6 +97,9 @@ def get_exchange_rate(from_currency, to_currency, transaction_date=None, args=No if frappe.get_cached_value("Currency Exchange Settings", "Currency Exchange Settings", "disabled"): return 0.00 + if rate := get_pegged_rate(from_currency, to_currency, transaction_date): + return rate + try: cache = frappe.cache() key = f"currency_exchange_rate_{transaction_date}:{from_currency}:{to_currency}" @@ -95,8 +111,8 @@ def get_exchange_rate(from_currency, to_currency, transaction_date=None, args=No settings = frappe.get_cached_doc("Currency Exchange Settings") req_params = { "transaction_date": transaction_date, - "from_currency": from_currency, - "to_currency": to_currency, + "from_currency": from_currency if from_currency != "AED" else "USD", + "to_currency": to_currency if to_currency != "AED" else "USD", } params = {} for row in settings.req_params: @@ -108,6 +124,14 @@ def get_exchange_rate(from_currency, to_currency, transaction_date=None, args=No for res_key in settings.result_key: value = value[format_ces_api(str(res_key.key), req_params)] cache.setex(name=key, time=21600, value=flt(value)) + + # Support AED conversion through pegged USD + value = flt(value) + if to_currency == "AED": + value *= 3.6725 + if from_currency == "AED": + value /= 3.6725 + return flt(value) except Exception: frappe.log_error("Unable to fetch exchange rate") diff --git a/erpnext/stock/dashboard/item_dashboard.js b/erpnext/stock/dashboard/item_dashboard.js index 36a51056bb4..6fc9e6666a2 100644 --- a/erpnext/stock/dashboard/item_dashboard.js +++ b/erpnext/stock/dashboard/item_dashboard.js @@ -48,17 +48,18 @@ erpnext.stock.ItemDashboard = class ItemDashboard { let actual_qty = unescape(element.attr("data-actual_qty")); let disable_quick_entry = Number(unescape(element.attr("data-disable_quick_entry"))); let entry_type = action === "Move" ? "Material Transfer" : "Material Receipt"; + let stock_uom = unescape(element.attr("data-stock-uom")); if (disable_quick_entry) { open_stock_entry(item, warehouse, entry_type); } else { if (action === "Add") { let rate = unescape($(this).attr("data-rate")); - erpnext.stock.move_item(item, null, warehouse, actual_qty, rate, function () { + erpnext.stock.move_item(item, null, warehouse, actual_qty, rate, stock_uom, function () { me.refresh(); }); } else { - erpnext.stock.move_item(item, warehouse, null, actual_qty, null, function () { + erpnext.stock.move_item(item, warehouse, null, actual_qty, null, stock_uom, function () { me.refresh(); }); } @@ -207,7 +208,7 @@ erpnext.stock.ItemDashboard = class ItemDashboard { } }; -erpnext.stock.move_item = function (item, source, target, actual_qty, rate, callback) { +erpnext.stock.move_item = function (item, source, target, actual_qty, rate, stock_uom, callback) { var dialog = new frappe.ui.Dialog({ title: target ? __("Add Item") : __("Move Item"), fields: [ @@ -295,6 +296,8 @@ erpnext.stock.move_item = function (item, source, target, actual_qty, rate, call let row = frappe.model.add_child(doc, "items"); row.item_code = dialog.get_value("item_code"); row.s_warehouse = dialog.get_value("source"); + row.stock_uom = stock_uom; + row.uom = stock_uom; row.t_warehouse = dialog.get_value("target"); row.qty = dialog.get_value("qty"); row.conversion_factor = 1; diff --git a/erpnext/stock/dashboard/item_dashboard.py b/erpnext/stock/dashboard/item_dashboard.py index e6382688669..3d7c21639e0 100644 --- a/erpnext/stock/dashboard/item_dashboard.py +++ b/erpnext/stock/dashboard/item_dashboard.py @@ -71,6 +71,7 @@ def get_data( item.update( { "item_name": frappe.get_cached_value("Item", item.item_code, "item_name"), + "stock_uom": frappe.get_cached_value("Item", item.item_code, "stock_uom"), "disable_quick_entry": frappe.get_cached_value("Item", item.item_code, "has_batch_no") or frappe.get_cached_value("Item", item.item_code, "has_serial_no"), "projected_qty": flt(item.projected_qty, precision), diff --git a/erpnext/stock/dashboard/item_dashboard_list.html b/erpnext/stock/dashboard/item_dashboard_list.html index 3b2619133bf..ae90ff80686 100644 --- a/erpnext/stock/dashboard/item_dashboard_list.html +++ b/erpnext/stock/dashboard/item_dashboard_list.html @@ -49,12 +49,14 @@ data-disable_quick_entry="{{ d.disable_quick_entry }}" data-warehouse="{{ d.warehouse }}" data-actual_qty="{{ d.actual_qty }}" + data-stock-uom="{{ d.stock_uom }}" data-item="{{ escape(d.item_code) }}">{{ __("Move") }} {% endif %}
diff --git a/erpnext/stock/dashboard_chart/oldest_items/oldest_items.json b/erpnext/stock/dashboard_chart/oldest_items/oldest_items.json index 9c10a5346be..a55fe7a6a6c 100644 --- a/erpnext/stock/dashboard_chart/oldest_items/oldest_items.json +++ b/erpnext/stock/dashboard_chart/oldest_items/oldest_items.json @@ -1,22 +1,23 @@ { "chart_name": "Oldest Items", "chart_type": "Report", - "creation": "2020-07-20 21:01:04.336845", + "creation": "2022-03-30 00:58:02.041721", "custom_options": "{\"colors\": [\"#5e64ff\"]}", "docstatus": 0, "doctype": "Dashboard Chart", - "dynamic_filters_json": "{\"company\":\"frappe.defaults.get_user_default(\\\"Company\\\")\",\"to_date\":\"frappe.datetime.nowdate()\"}", - "filters_json": "{\"range1\":30,\"range2\":60,\"range3\":90,\"show_warehouse_wise_stock\":0}", + "dynamic_filters_json": "{\"company\":\"frappe.defaults.get_user_default(\\\"Company\\\")\",\"to_date\":\"frappe.datetime.nowdate()\",\"range1\":\"30\",\"range2\":\"60\",\"range3\":\"90\"}", + "filters_json": "{\"range\":\"30, 60, 90\",\"show_warehouse_wise_stock\":0}", "idx": 0, "is_public": 1, "is_standard": 1, - "modified": "2020-07-29 14:50:26.846482", + "modified": "2024-09-23 22:37:51.392999", "modified_by": "Administrator", "module": "Stock", "name": "Oldest Items", "number_of_groups": 0, "owner": "Administrator", "report_name": "Stock Ageing", + "roles": [], "timeseries": 0, "type": "Bar", "use_report_chart": 1, diff --git a/erpnext/stock/dashboard_chart/warehouse_wise_stock_value/warehouse_wise_stock_value.json b/erpnext/stock/dashboard_chart/warehouse_wise_stock_value/warehouse_wise_stock_value.json index a07b55382ca..400ec5e0e64 100644 --- a/erpnext/stock/dashboard_chart/warehouse_wise_stock_value/warehouse_wise_stock_value.json +++ b/erpnext/stock/dashboard_chart/warehouse_wise_stock_value/warehouse_wise_stock_value.json @@ -1,19 +1,37 @@ { "chart_name": "Warehouse wise Stock Value", "chart_type": "Custom", - "creation": "2020-07-20 21:01:04.296157", + "creation": "2022-03-30 00:58:02.018824", "docstatus": 0, "doctype": "Dashboard Chart", "filters_json": "{}", "idx": 0, "is_public": 1, "is_standard": 1, - "modified": "2020-07-22 13:01:01.815123", + "last_synced_on": "2024-12-23 18:44:46.822164", + "modified": "2024-12-23 19:31:17.003946", "modified_by": "Administrator", "module": "Stock", "name": "Warehouse wise Stock Value", "number_of_groups": 0, "owner": "Administrator", + "roles": [ + { + "role": "Sales Manager" + }, + { + "role": "Accounts Manager" + }, + { + "role": "Stock Manager" + }, + { + "role": "Stock User" + }, + { + "role": "Accounts User" + } + ], "source": "Warehouse wise Stock Value", "timeseries": 0, "type": "Bar", diff --git a/erpnext/stock/deprecated_serial_batch.py b/erpnext/stock/deprecated_serial_batch.py index d10833b6d46..a8e17993c30 100644 --- a/erpnext/stock/deprecated_serial_batch.py +++ b/erpnext/stock/deprecated_serial_batch.py @@ -3,7 +3,7 @@ from collections import defaultdict import frappe from frappe.query_builder.functions import CombineDatetime, Sum -from frappe.utils import flt +from frappe.utils import flt, nowtime from frappe.utils.deprecations import deprecated from pypika import Order @@ -112,7 +112,10 @@ class DeprecatedBatchNoValuation: sle = frappe.qb.DocType("Stock Ledger Entry") timestamp_condition = None - if self.sle.posting_date and self.sle.posting_time: + if self.sle.posting_date: + if self.sle.posting_time is None: + self.sle.posting_time = nowtime() + posting_datetime = get_combine_datetime(self.sle.posting_date, self.sle.posting_time) if not self.sle.creation: posting_datetime = posting_datetime + datetime.timedelta(milliseconds=1) @@ -166,7 +169,7 @@ class DeprecatedBatchNoValuation: if not self.non_batchwise_balance_qty: continue - if self.non_batchwise_balance_qty.get(batch_no) == 0: + if not self.non_batchwise_balance_qty.get(batch_no): self.batch_avg_rate[batch_no] = 0.0 self.stock_value_differece[batch_no] = 0.0 else: @@ -178,6 +181,9 @@ class DeprecatedBatchNoValuation: stock_value_change = self.batch_avg_rate[batch_no] * ledger.qty self.stock_value_change += stock_value_change + self.non_batchwise_balance_value[batch_no] -= stock_value_change + self.non_batchwise_balance_qty[batch_no] -= ledger.qty + frappe.db.set_value( "Serial and Batch Entry", ledger.name, @@ -189,6 +195,7 @@ class DeprecatedBatchNoValuation: @deprecated def set_balance_value_for_non_batchwise_valuation_batches(self): + self.last_sle = self.get_last_sle_for_non_batch() self.set_balance_value_from_sl_entries() self.set_balance_value_from_bundle() @@ -217,13 +224,11 @@ class DeprecatedBatchNoValuation: .select( sle.batch_no, Sum(sle.actual_qty).as_("batch_qty"), - Sum(sle.stock_value_difference).as_("batch_value"), ) .where( (sle.item_code == self.sle.item_code) & (sle.warehouse == self.sle.warehouse) & (sle.batch_no.isnotnull()) - & (batch.use_batchwise_valuation == 0) & (sle.is_cancelled == 0) & (sle.batch_no.isin(self.non_batchwise_valuation_batches)) ) @@ -234,11 +239,55 @@ class DeprecatedBatchNoValuation: if self.sle.name: query = query.where(sle.name != self.sle.name) - for d in query.run(as_dict=True): - self.non_batchwise_balance_value[d.batch_no] += flt(d.batch_value) - self.non_batchwise_balance_qty[d.batch_no] += flt(d.batch_qty) + batch_data = query.run(as_dict=True) + for d in batch_data: self.available_qty[d.batch_no] += flt(d.batch_qty) + for d in batch_data: + if self.available_qty.get(d.batch_no): + self.non_batchwise_balance_value[d.batch_no] += flt(self.last_sle.stock_value) + self.non_batchwise_balance_qty[d.batch_no] += flt(self.last_sle.qty_after_transaction) + + def get_last_sle_for_non_batch(self): + from erpnext.stock.utils import get_combine_datetime + + sle = frappe.qb.DocType("Stock Ledger Entry") + + posting_datetime = get_combine_datetime(self.sle.posting_date, self.sle.posting_time) + if not self.sle.creation: + posting_datetime = posting_datetime + datetime.timedelta(milliseconds=1) + + timestamp_condition = sle.posting_datetime < posting_datetime + + if self.sle.creation: + timestamp_condition |= (sle.posting_datetime == posting_datetime) & ( + sle.creation < self.sle.creation + ) + + query = ( + frappe.qb.from_(sle) + .select( + sle.stock_value, + sle.qty_after_transaction, + ) + .where( + (sle.item_code == self.sle.item_code) + & (sle.warehouse == self.sle.warehouse) + & (sle.is_cancelled == 0) + ) + .where(timestamp_condition) + .orderby(sle.posting_datetime, order=Order.desc) + .orderby(sle.creation, order=Order.desc) + .limit(1) + ) + + if self.sle.name: + query = query.where(sle.name != self.sle.name) + + data = query.run(as_dict=True) + + return data[0] if data else frappe._dict() + @deprecated def set_balance_value_from_bundle(self) -> None: bundle = frappe.qb.DocType("Serial and Batch Bundle") @@ -270,7 +319,6 @@ class DeprecatedBatchNoValuation: (bundle.item_code == self.sle.item_code) & (bundle.warehouse == self.sle.warehouse) & (bundle_child.batch_no.isnotnull()) - & (batch.use_batchwise_valuation == 0) & (bundle.is_cancelled == 0) & (bundle.docstatus == 1) & (bundle.type_of_transaction.isin(["Inward", "Outward"])) @@ -285,7 +333,13 @@ class DeprecatedBatchNoValuation: query = query.where(bundle.voucher_type != "Pick List") - for d in query.run(as_dict=True): - self.non_batchwise_balance_value[d.batch_no] += flt(d.batch_value) - self.non_batchwise_balance_qty[d.batch_no] += flt(d.batch_qty) + batch_data = query.run(as_dict=True) + for d in batch_data: self.available_qty[d.batch_no] += flt(d.batch_qty) + + if not self.last_sle: + return + + for batch_no in self.available_qty: + self.non_batchwise_balance_value[batch_no] = flt(self.last_sle.stock_value) + self.non_batchwise_balance_qty[batch_no] = flt(self.last_sle.qty_after_transaction) diff --git a/erpnext/stock/doctype/batch/batch.js b/erpnext/stock/doctype/batch/batch.js index 77e4e560acf..a485f849639 100644 --- a/erpnext/stock/doctype/batch/batch.js +++ b/erpnext/stock/doctype/batch/batch.js @@ -54,7 +54,12 @@ frappe.ui.form.on("Batch", { frappe.call({ method: "erpnext.stock.doctype.batch.batch.get_batch_qty", - args: { batch_no: frm.doc.name, item_code: frm.doc.item, for_stock_levels: for_stock_levels }, + args: { + batch_no: frm.doc.name, + item_code: frm.doc.item, + for_stock_levels: for_stock_levels, + consider_negative_batches: 1, + }, callback: (r) => { if (!r.message) { return; @@ -71,7 +76,7 @@ frappe.ui.form.on("Batch", { // show (r.message || []).forEach(function (d) { - if (d.qty > 0) { + if (d.qty != 0) { $(`
${d.warehouse}
${d.qty}
diff --git a/erpnext/stock/doctype/batch/batch.py b/erpnext/stock/doctype/batch/batch.py index 5d71ca06cb4..800d4f70c40 100644 --- a/erpnext/stock/doctype/batch/batch.py +++ b/erpnext/stock/doctype/batch/batch.py @@ -2,7 +2,7 @@ # License: GNU General Public License v3. See license.txt -from collections import defaultdict +from collections import OrderedDict, defaultdict import frappe from frappe import _ @@ -157,8 +157,12 @@ class Batch(Document): frappe.throw(_("The selected item cannot have Batch")) def set_batchwise_valuation(self): + from erpnext.stock.utils import get_valuation_method + if self.is_new(): - if frappe.db.get_single_value("Stock Settings", "do_not_use_batchwise_valuation"): + if get_valuation_method(self.item) == "Moving Average" and frappe.db.get_single_value( + "Stock Settings", "do_not_use_batchwise_valuation" + ): self.use_batchwise_valuation = 0 return @@ -218,6 +222,7 @@ def get_batch_qty( posting_time=None, ignore_voucher_nos=None, for_stock_levels=False, + consider_negative_batches=False, ): """Returns batch actual qty if warehouse is passed, or returns dict of qty by warehouse if warehouse is None @@ -243,6 +248,7 @@ def get_batch_qty( "batch_no": batch_no, "ignore_voucher_nos": ignore_voucher_nos, "for_stock_levels": for_stock_levels, + "consider_negative_batches": consider_negative_batches, } ) @@ -449,11 +455,18 @@ def get_available_batches(kwargs): get_auto_batch_nos, ) - batchwise_qty = defaultdict(float) + batchwise_qty = OrderedDict() batches = get_auto_batch_nos(kwargs) for batch in batches: - batchwise_qty[batch.get("batch_no")] += batch.get("qty") + key = batch.get("batch_no") + if kwargs.get("based_on_warehouse"): + key = (batch.get("batch_no"), batch.get("warehouse")) + + if key not in batchwise_qty: + batchwise_qty[key] = batch.get("qty") + else: + batchwise_qty[key] += batch.get("qty") return batchwise_qty diff --git a/erpnext/stock/doctype/bin/bin.py b/erpnext/stock/doctype/bin/bin.py index db5d1e58a84..d3de1897633 100644 --- a/erpnext/stock/doctype/bin/bin.py +++ b/erpnext/stock/doctype/bin/bin.py @@ -247,7 +247,7 @@ def update_qty(bin_name, args): & (sle.warehouse == args.get("warehouse")) & (sle.is_cancelled == 0) ) - .orderby(CombineDatetime(sle.posting_date, sle.posting_time), order=Order.desc) + .orderby(sle.posting_datetime, order=Order.desc) .orderby(sle.creation, order=Order.desc) .limit(1) .run() diff --git a/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.json b/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.json index acb96e7a2f5..c1e5878a439 100644 --- a/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.json +++ b/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.json @@ -113,7 +113,7 @@ "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2023-05-18 11:46:04.448220", + "modified": "2024-12-19 13:48:46.618066", "modified_by": "Administrator", "module": "Stock", "name": "Closing Stock Balance", @@ -121,6 +121,7 @@ "owner": "Administrator", "permissions": [ { + "cancel": 1, "create": 1, "delete": 1, "email": 1, @@ -130,10 +131,39 @@ "report": 1, "role": "System Manager", "share": 1, + "submit": 1, + "write": 1 + }, + { + "cancel": 1, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Stock Manager", + "share": 1, + "submit": 1, + "write": 1 + }, + { + "cancel": 1, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "Stock User", + "share": 1, + "submit": 1, "write": 1 } ], "sort_field": "modified", "sort_order": "DESC", "states": [] -} \ No newline at end of file +} 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 8aa49f7cfd8..4c0f7f3d969 100644 --- a/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.py +++ b/erpnext/stock/doctype/closing_stock_balance/closing_stock_balance.py @@ -65,7 +65,7 @@ class ClosingStockBalance(Document): & ( (table.from_date.between(self.from_date, self.to_date)) | (table.to_date.between(self.from_date, self.to_date)) - | ((table.from_date >= self.from_date) & (table.to_date >= self.to_date)) + | ((self.from_date >= table.from_date) & (table.from_date >= self.to_date)) ) ) ) @@ -116,7 +116,6 @@ class ClosingStockBalance(Document): "item_group": self.item_group, "warehouse_type": self.warehouse_type, "include_uom": self.include_uom, - "ignore_closing_balance": 1, "show_variant_attributes": 1, "show_stock_ageing_data": 1, } diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.json b/erpnext/stock/doctype/delivery_note/delivery_note.json index 87c333370b2..4a0580f0e94 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note.json +++ b/erpnext/stock/doctype/delivery_note/delivery_note.json @@ -108,8 +108,9 @@ "dispatch_address", "company_address_section", "company_address", - "column_break_101", "company_address_display", + "column_break_101", + "company_contact_person", "terms_tab", "tc_name", "terms", @@ -1391,13 +1392,20 @@ "fieldname": "named_place", "fieldtype": "Data", "label": "Named Place" + }, + { + "fieldname": "company_contact_person", + "fieldtype": "Link", + "label": "Company Contact Person", + "options": "Contact", + "print_hide": 1 } ], "icon": "fa fa-truck", "idx": 146, "is_submittable": 1, "links": [], - "modified": "2024-03-20 16:05:02.854990", + "modified": "2024-11-26 12:44:28.258215", "modified_by": "Administrator", "module": "Stock", "name": "Delivery Note", diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py index 8a096aca80c..ba04abce8f3 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note.py +++ b/erpnext/stock/doctype/delivery_note/delivery_note.py @@ -12,7 +12,6 @@ from frappe.utils import cint, flt from erpnext.controllers.accounts_controller import get_taxes_and_charges, merge_taxes from erpnext.controllers.selling_controller import SellingController -from erpnext.stock.doctype.serial_no.serial_no import get_delivery_note_serial_no form_grid_templates = {"items": "templates/form_grid/item_grid.html"} @@ -53,6 +52,7 @@ class DeliveryNote(SellingController): company: DF.Link company_address: DF.Link | None company_address_display: DF.SmallText | None + company_contact_person: DF.Link | None contact_display: DF.SmallText | None contact_email: DF.Data | None contact_mobile: DF.SmallText | None @@ -208,6 +208,8 @@ class DeliveryNote(SellingController): ) def onload(self): + super().onload() + if self.docstatus == 0: self.set_onload("has_unpacked_items", self.has_unpacked_items()) @@ -360,52 +362,33 @@ class DeliveryNote(SellingController): self.validate_sales_invoice_references() def validate_sales_order_references(self): - err_msg = "" - for item in self.items: - if (item.against_sales_order and not item.so_detail) or ( - not item.against_sales_order and item.so_detail - ): - if not item.against_sales_order: - err_msg += ( - _("'Sales Order' reference ({1}) is missing in row {0}").format( - frappe.bold(item.idx), frappe.bold("against_sales_order") - ) - + "
" - ) - else: - err_msg += ( - _("'Sales Order Item' reference ({1}) is missing in row {0}").format( - frappe.bold(item.idx), frappe.bold("so_detail") - ) - + "
" - ) - - if err_msg: - frappe.throw(err_msg, title=_("References to Sales Orders are Incomplete")) + self._validate_dependent_item_fields( + "against_sales_order", "so_detail", _("References to Sales Orders are Incomplete") + ) def validate_sales_invoice_references(self): - err_msg = "" - for item in self.items: - if (item.against_sales_invoice and not item.si_detail) or ( - not item.against_sales_invoice and item.si_detail - ): - if not item.against_sales_invoice: - err_msg += ( - _("'Sales Invoice' reference ({1}) is missing in row {0}").format( - frappe.bold(item.idx), frappe.bold("against_sales_invoice") - ) - + "
" - ) - else: - err_msg += ( - _("'Sales Invoice Item' reference ({1}) is missing in row {0}").format( - frappe.bold(item.idx), frappe.bold("si_detail") - ) - + "
" - ) + self._validate_dependent_item_fields( + "against_sales_invoice", "si_detail", _("References to Sales Invoices are Incomplete") + ) - if err_msg: - frappe.throw(err_msg, title=_("References to Sales Invoices are Incomplete")) + def _validate_dependent_item_fields(self, field_a: str, field_b: str, error_title: str): + errors = [] + for item in self.items: + missing_label = None + if item.get(field_a) and not item.get(field_b): + missing_label = item.meta.get_label(field_b) + elif item.get(field_b) and not item.get(field_a): + missing_label = item.meta.get_label(field_a) + + if missing_label and missing_label != "No Label": + errors.append( + _("The field {0} in row {1} is not set").format( + frappe.bold(_(missing_label)), frappe.bold(item.idx) + ) + ) + + if errors: + frappe.throw("
".join(errors), title=error_title) def validate_proj_cust(self): """check for does customer belong to same project as entered..""" @@ -508,149 +491,6 @@ class DeliveryNote(SellingController): self.delete_auto_created_batches() - def update_stock_reservation_entries(self) -> None: - """Updates Delivered Qty in Stock Reservation Entries.""" - - # Don't update Delivered Qty on Return. - if self.is_return: - return - - if self._action == "submit": - for item in self.get("items"): - # Skip if `Sales Order` or `Sales Order Item` reference is not set. - if not item.against_sales_order or not item.so_detail: - continue - - sre_list = frappe.db.get_all( - "Stock Reservation Entry", - { - "docstatus": 1, - "voucher_type": "Sales Order", - "voucher_no": item.against_sales_order, - "voucher_detail_no": item.so_detail, - "warehouse": item.warehouse, - "status": ["not in", ["Delivered", "Cancelled"]], - }, - order_by="creation", - ) - - # Skip if no Stock Reservation Entries. - if not sre_list: - continue - - qty_to_deliver = item.stock_qty - for sre in sre_list: - if qty_to_deliver <= 0: - break - - sre_doc = frappe.get_doc("Stock Reservation Entry", sre) - - qty_can_be_deliver = 0 - if sre_doc.reservation_based_on == "Serial and Batch": - sbb = frappe.get_doc("Serial and Batch Bundle", item.serial_and_batch_bundle) - if sre_doc.has_serial_no: - delivered_serial_nos = [d.serial_no for d in sbb.entries] - for entry in sre_doc.sb_entries: - if entry.serial_no in delivered_serial_nos: - entry.delivered_qty = 1 # Qty will always be 0 or 1 for Serial No. - entry.db_update() - qty_can_be_deliver += 1 - delivered_serial_nos.remove(entry.serial_no) - else: - delivered_batch_qty = {d.batch_no: -1 * d.qty for d in sbb.entries} - for entry in sre_doc.sb_entries: - if entry.batch_no in delivered_batch_qty: - delivered_qty = min( - (entry.qty - entry.delivered_qty), delivered_batch_qty[entry.batch_no] - ) - entry.delivered_qty += delivered_qty - entry.db_update() - qty_can_be_deliver += delivered_qty - delivered_batch_qty[entry.batch_no] -= delivered_qty - else: - # `Delivered Qty` should be less than or equal to `Reserved Qty`. - qty_can_be_deliver = min( - (sre_doc.reserved_qty - sre_doc.delivered_qty), qty_to_deliver - ) - - sre_doc.delivered_qty += qty_can_be_deliver - sre_doc.db_update() - - # Update Stock Reservation Entry `Status` based on `Delivered Qty`. - sre_doc.update_status() - - # Update Reserved Stock in Bin. - sre_doc.update_reserved_stock_in_bin() - - qty_to_deliver -= qty_can_be_deliver - - if self._action == "cancel": - for item in self.get("items"): - # Skip if `Sales Order` or `Sales Order Item` reference is not set. - if not item.against_sales_order or not item.so_detail: - continue - - sre_list = frappe.db.get_all( - "Stock Reservation Entry", - { - "docstatus": 1, - "voucher_type": "Sales Order", - "voucher_no": item.against_sales_order, - "voucher_detail_no": item.so_detail, - "warehouse": item.warehouse, - "status": ["in", ["Partially Delivered", "Delivered"]], - }, - order_by="creation", - ) - - # Skip if no Stock Reservation Entries. - if not sre_list: - continue - - qty_to_undelivered = item.stock_qty - for sre in sre_list: - if qty_to_undelivered <= 0: - break - - sre_doc = frappe.get_doc("Stock Reservation Entry", sre) - - qty_can_be_undelivered = 0 - if sre_doc.reservation_based_on == "Serial and Batch": - sbb = frappe.get_doc("Serial and Batch Bundle", item.serial_and_batch_bundle) - if sre_doc.has_serial_no: - serial_nos_to_undelivered = [d.serial_no for d in sbb.entries] - for entry in sre_doc.sb_entries: - if entry.serial_no in serial_nos_to_undelivered: - entry.delivered_qty = 0 # Qty will always be 0 or 1 for Serial No. - entry.db_update() - qty_can_be_undelivered += 1 - serial_nos_to_undelivered.remove(entry.serial_no) - else: - batch_qty_to_undelivered = {d.batch_no: -1 * d.qty for d in sbb.entries} - for entry in sre_doc.sb_entries: - if entry.batch_no in batch_qty_to_undelivered: - undelivered_qty = min( - entry.delivered_qty, batch_qty_to_undelivered[entry.batch_no] - ) - entry.delivered_qty -= undelivered_qty - entry.db_update() - qty_can_be_undelivered += undelivered_qty - batch_qty_to_undelivered[entry.batch_no] -= undelivered_qty - else: - # `Qty to Undelivered` should be less than or equal to `Delivered Qty`. - qty_can_be_undelivered = min(sre_doc.delivered_qty, qty_to_undelivered) - - sre_doc.delivered_qty -= qty_can_be_undelivered - sre_doc.db_update() - - # Update Stock Reservation Entry `Status` based on `Delivered Qty`. - sre_doc.update_status() - - # Update Reserved Stock in Bin. - sre_doc.update_reserved_stock_in_bin() - - qty_to_undelivered -= qty_can_be_undelivered - def validate_against_stock_reservation_entries(self): """Validates if Stock Reservation Entries are available for the Sales Order Item reference.""" @@ -996,11 +836,6 @@ def make_sales_invoice(source_name, target_doc=None, args=None): def update_item(source_doc, target_doc, source_parent): target_doc.qty = to_make_invoice_qty_map[source_doc.name] - if source_doc.serial_no and source_parent.per_billed > 0 and not source_parent.is_return: - target_doc.serial_no = get_delivery_note_serial_no( - source_doc.item_code, target_doc.qty, source_parent.name - ) - def get_pending_qty(item_row): pending_qty = item_row.qty - invoiced_qty_map.get(item_row.name, 0) @@ -1037,7 +872,6 @@ def make_sales_invoice(source_name, target_doc=None, args=None): "parent": "delivery_note", "so_detail": "so_detail", "against_sales_order": "sales_order", - "serial_no": "serial_no", "cost_center": "cost_center", }, "postprocess": update_item, @@ -1047,7 +881,7 @@ def make_sales_invoice(source_name, target_doc=None, args=None): }, "Sales Taxes and Charges": { "doctype": "Sales Taxes and Charges", - "add_if_empty": True, + "reset_value": not (args and args.get("merge_taxes")), "ignore": args.get("merge_taxes") if args else 0, }, "Sales Team": { @@ -1063,7 +897,7 @@ def make_sales_invoice(source_name, target_doc=None, args=None): automatically_fetch_payment_terms = cint( frappe.db.get_single_value("Accounts Settings", "automatically_fetch_payment_terms") ) - if automatically_fetch_payment_terms: + if automatically_fetch_payment_terms and not doc.is_return: doc.set_payment_schedule() return doc @@ -1155,7 +989,7 @@ def make_packing_slip(source_name, target_doc=None): "batch_no": "batch_no", "description": "description", "qty": "qty", - "stock_uom": "stock_uom", + "uom": "stock_uom", "name": "dn_detail", }, "postprocess": update_item, @@ -1205,18 +1039,19 @@ def make_shipment(source_name, target_doc=None): # As we are using session user details in the pickup_contact then pickup_contact_person will be session user target.pickup_contact_person = frappe.session.user - contact = frappe.db.get_value( - "Contact", source.contact_person, ["email_id", "phone", "mobile_no"], as_dict=1 - ) - delivery_contact_display = f"{source.contact_display}" - if contact: - if contact.email_id: - delivery_contact_display += "
" + contact.email_id - if contact.phone: - delivery_contact_display += "
" + contact.phone - if contact.mobile_no and not contact.phone: - delivery_contact_display += "
" + contact.mobile_no - target.delivery_contact = delivery_contact_display + if source.contact_person: + contact = frappe.db.get_value( + "Contact", source.contact_person, ["email_id", "phone", "mobile_no"], as_dict=1 + ) + delivery_contact_display = f"{source.contact_display}" + if contact: + if contact.email_id: + delivery_contact_display += "
" + contact.email_id + if contact.phone: + delivery_contact_display += "
" + contact.phone + if contact.mobile_no and not contact.phone: + delivery_contact_display += "
" + contact.mobile_no + target.delivery_contact = delivery_contact_display if source.shipping_address_name: target.delivery_address_name = source.shipping_address_name diff --git a/erpnext/stock/doctype/delivery_note/delivery_note_list.js b/erpnext/stock/doctype/delivery_note/delivery_note_list.js index c6b98c4134c..af40fd6a8a2 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note_list.js +++ b/erpnext/stock/doctype/delivery_note/delivery_note_list.js @@ -19,9 +19,9 @@ frappe.listview_settings["Delivery Note"] = { } else if (doc.status === "Return Issued") { return [__("Return Issued"), "grey", "status,=,Return Issued"]; } else if (flt(doc.per_billed, 2) < 100) { - return [__("To Bill"), "orange", "per_billed,<,100"]; + return [__("To Bill"), "orange", "per_billed,<,100|docstatus,=,1"]; } else if (flt(doc.per_billed, 2) === 100) { - return [__("Completed"), "green", "per_billed,=,100"]; + return [__("Completed"), "green", "per_billed,=,100|docstatus,=,1"]; } }, onload: function (doclist) { @@ -63,16 +63,20 @@ frappe.listview_settings["Delivery Note"] = { } }; - // doclist.page.add_actions_menu_item(__('Create Delivery Trip'), action, false); + if (frappe.model.can_create("Delivery Trip")) { + doclist.page.add_action_item(__("Create Delivery Trip"), action); + } - doclist.page.add_action_item(__("Create Delivery Trip"), action); + if (frappe.model.can_create("Sales Invoice")) { + doclist.page.add_action_item(__("Sales Invoice"), () => { + erpnext.bulk_transaction_processing.create(doclist, "Delivery Note", "Sales Invoice"); + }); + } - doclist.page.add_action_item(__("Sales Invoice"), () => { - erpnext.bulk_transaction_processing.create(doclist, "Delivery Note", "Sales Invoice"); - }); - - doclist.page.add_action_item(__("Packaging Slip From Delivery Note"), () => { - erpnext.bulk_transaction_processing.create(doclist, "Delivery Note", "Packing Slip"); - }); + if (frappe.model.can_create("Packing Slip")) { + doclist.page.add_action_item(__("Packaging Slip From Delivery Note"), () => { + erpnext.bulk_transaction_processing.create(doclist, "Delivery Note", "Packing Slip"); + }); + } }, }; diff --git a/erpnext/stock/doctype/delivery_note/test_delivery_note.py b/erpnext/stock/doctype/delivery_note/test_delivery_note.py index cfe550f2f27..3394e0ce83a 100644 --- a/erpnext/stock/doctype/delivery_note/test_delivery_note.py +++ b/erpnext/stock/doctype/delivery_note/test_delivery_note.py @@ -3,12 +3,14 @@ import json +from collections import defaultdict import frappe from frappe.tests.utils import FrappeTestCase from frappe.utils import add_days, cstr, flt, getdate, nowdate, nowtime, today from erpnext.accounts.doctype.account.test_account import get_inventory_account +from erpnext.accounts.doctype.cost_center.test_cost_center import create_cost_center from erpnext.accounts.utils import get_balance_on from erpnext.selling.doctype.product_bundle.test_product_bundle import make_product_bundle from erpnext.selling.doctype.sales_order.test_sales_order import ( @@ -768,6 +770,48 @@ class TestDeliveryNote(FrappeTestCase): {"warehouse": "_Test Warehouse - _TC"}, ) + def test_delivery_note_internal_transfer_serial_no_status(self): + from erpnext.selling.doctype.customer.test_customer import create_internal_customer + + item = make_item( + "_Test Item for Internal Transfer With Serial No Status", + properties={"has_serial_no": 1, "is_stock_item": 1, "serial_no_series": "INT-SN-.####"}, + ).name + + warehouse = "_Test Warehouse - _TC" + target = "Stores - _TC" + company = "_Test Company" + customer = create_internal_customer(represents_company=company) + rate = 42 + + se = make_stock_entry(target=warehouse, qty=5, basic_rate=rate, item_code=item) + serial_nos = get_serial_nos_from_bundle(se.get("items")[0].serial_and_batch_bundle) + + dn = create_delivery_note( + item_code=item, + company=company, + customer=customer, + qty=5, + rate=500, + warehouse=warehouse, + target_warehouse=target, + ignore_pricing_rule=0, + use_serial_batch_fields=1, + serial_no="\n".join(serial_nos), + ) + + for serial_no in serial_nos: + sn = frappe.db.get_value("Serial No", serial_no, ["status", "warehouse"], as_dict=1) + self.assertEqual(sn.status, "Active") + self.assertEqual(sn.warehouse, target) + + dn.cancel() + + for serial_no in serial_nos: + sn = frappe.db.get_value("Serial No", serial_no, ["status", "warehouse"], as_dict=1) + self.assertEqual(sn.status, "Active") + self.assertEqual(sn.warehouse, warehouse) + def test_delivery_of_bundled_items_to_target_warehouse(self): from erpnext.selling.doctype.customer.test_customer import create_internal_customer @@ -1357,6 +1401,7 @@ class TestDeliveryNote(FrappeTestCase): warehouse = "Stores - TCP1" target = "Finished Goods - TCP1" customer = create_internal_customer(represents_company=company) + create_cost_center(cost_center_name="_Test Cost Center", company=company) # average rate = 128.015 rates = [101.45, 150.46, 138.25, 121.9] @@ -1371,6 +1416,7 @@ class TestDeliveryNote(FrappeTestCase): qty=4, warehouse=warehouse, target_warehouse=target, + cost_center="_Test Cost Center - TCP1", ) self.assertFalse(frappe.db.exists("GL Entry", {"voucher_no": dn.name, "voucher_type": dn.doctype})) @@ -2039,6 +2085,442 @@ class TestDeliveryNote(FrappeTestCase): self.assertEqual(sn.status, "Delivered") self.assertEqual(sn.warranty_period, 100) + def test_batch_return_dn(self): + from erpnext.stock.doctype.delivery_note.delivery_note import make_sales_return + + item_code = make_item( + "Test Batch Return DN Item 1", + properties={ + "has_batch_no": 1, + "valuation_method": "Moving Average", + "create_new_batch": 1, + "batch_number_series": "TBRDN1-.#####", + "is_stock_item": 1, + }, + ).name + + se = make_stock_entry(item_code=item_code, target="_Test Warehouse - _TC", qty=5, basic_rate=100) + + batch_no = get_batch_from_bundle(se.items[0].serial_and_batch_bundle) + dn = create_delivery_note( + item_code=item_code, + qty=5, + rate=500, + use_serial_batch_fields=1, + batch_no=batch_no, + ) + + dn_return = make_sales_return(dn.name) + dn_return.save().submit() + + self.assertEqual(dn_return.items[0].qty, 5 * -1) + + returned_batch_no = get_batch_from_bundle(dn_return.items[0].serial_and_batch_bundle) + self.assertEqual(batch_no, returned_batch_no) + + stock_value_difference = frappe.db.get_value( + "Stock Ledger Entry", + {"voucher_no": dn_return.name, "voucher_type": "Delivery Note"}, + "stock_value_difference", + ) + + self.assertEqual(stock_value_difference, 100.0 * 5) + + def test_delivery_note_return_valuation_without_use_serial_batch_field(self): + from erpnext.stock.doctype.delivery_note.delivery_note import make_sales_return + + batch_item = make_item( + "_Test Delivery Note Return Valuation Batch Item", + properties={ + "has_batch_no": 1, + "create_new_batch": 1, + "is_stock_item": 1, + "batch_number_series": "BRTN-DNN-BI-.#####", + }, + ).name + + serial_item = make_item( + "_Test Delivery Note Return Valuation Serial Item", + properties={"has_serial_no": 1, "is_stock_item": 1, "serial_no_series": "SRTN-DNN-TP-.#####"}, + ).name + + batches = {} + serial_nos = [] + for qty, rate in {3: 300, 2: 100}.items(): + se = make_stock_entry( + item_code=batch_item, target="_Test Warehouse - _TC", qty=qty, basic_rate=rate + ) + batches[get_batch_from_bundle(se.items[0].serial_and_batch_bundle)] = qty + + for qty, rate in {2: 100, 1: 50}.items(): + make_stock_entry(item_code=serial_item, target="_Test Warehouse - _TC", qty=qty, basic_rate=rate) + serial_nos.extend(get_serial_nos_from_bundle(se.items[0].serial_and_batch_bundle)) + + dn = create_delivery_note( + item_code=batch_item, + qty=5, + rate=1000, + use_serial_batch_fields=0, + batches=batches, + do_not_submit=True, + ) + + bundle_id = make_serial_batch_bundle( + frappe._dict( + { + "item_code": serial_item, + "warehouse": dn.items[0].warehouse, + "qty": 3, + "voucher_type": "Delivery Note", + "serial_nos": serial_nos, + "posting_date": dn.posting_date, + "posting_time": dn.posting_time, + "type_of_transaction": "Outward", + "do_not_submit": True, + } + ) + ).name + + dn.append( + "items", + { + "item_code": serial_item, + "qty": 3, + "rate": 700, + "base_rate": 700, + "item_name": serial_item, + "uom": "Nos", + "stock_uom": "Nos", + "conversion_factor": 1, + "warehouse": dn.items[0].warehouse, + "use_serial_batch_fields": 0, + "serial_and_batch_bundle": bundle_id, + }, + ) + + dn.save() + dn.submit() + dn.reload() + + batch_no_valuation = defaultdict(float) + serial_no_valuation = defaultdict(float) + + for row in dn.items: + if row.serial_and_batch_bundle: + bundle_data = frappe.get_all( + "Serial and Batch Entry", + filters={"parent": row.serial_and_batch_bundle}, + fields=["incoming_rate", "serial_no", "batch_no"], + ) + + for d in bundle_data: + if d.batch_no: + batch_no_valuation[d.batch_no] = d.incoming_rate + elif d.serial_no: + serial_no_valuation[d.serial_no] = d.incoming_rate + + return_entry = make_sales_return(dn.name) + + return_entry.save() + return_entry.submit() + return_entry.reload() + + for row in return_entry.items: + if row.item_code == batch_item: + bundle_data = frappe.get_all( + "Serial and Batch Entry", + filters={"parent": row.serial_and_batch_bundle}, + fields=["incoming_rate", "batch_no"], + ) + + for d in bundle_data: + self.assertEqual(d.incoming_rate, batch_no_valuation[d.batch_no]) + else: + bundle_data = frappe.get_all( + "Serial and Batch Entry", + filters={"parent": row.serial_and_batch_bundle}, + fields=["incoming_rate", "serial_no"], + ) + + for d in bundle_data: + self.assertEqual(d.incoming_rate, serial_no_valuation[d.serial_no]) + + def test_delivery_note_return_valuation_with_use_serial_batch_field(self): + from erpnext.stock.doctype.delivery_note.delivery_note import make_sales_return + + batch_item = make_item( + "_Test Delivery Note Return Valuation WITH Batch Item", + properties={ + "has_batch_no": 1, + "create_new_batch": 1, + "is_stock_item": 1, + "batch_number_series": "BRTN-DNN-BIW-.#####", + }, + ).name + + serial_item = make_item( + "_Test Delivery Note Return Valuation WITH Serial Item", + properties={"has_serial_no": 1, "is_stock_item": 1, "serial_no_series": "SRTN-DNN-TPW-.#####"}, + ).name + + batches = [] + serial_nos = [] + for qty, rate in {3: 300, 2: 100}.items(): + se = make_stock_entry( + item_code=batch_item, target="_Test Warehouse - _TC", qty=qty, basic_rate=rate + ) + batches.append(get_batch_from_bundle(se.items[0].serial_and_batch_bundle)) + + for qty, rate in {2: 100, 1: 50}.items(): + se = make_stock_entry( + item_code=serial_item, target="_Test Warehouse - _TC", qty=qty, basic_rate=rate + ) + serial_nos.extend(get_serial_nos_from_bundle(se.items[0].serial_and_batch_bundle)) + + dn = create_delivery_note( + item_code=batch_item, + qty=3, + rate=1000, + use_serial_batch_fields=1, + batch_no=batches[0], + do_not_submit=True, + ) + + dn.append( + "items", + { + "item_code": batch_item, + "qty": 2, + "rate": 1000, + "base_rate": 1000, + "item_name": batch_item, + "uom": dn.items[0].uom, + "stock_uom": dn.items[0].uom, + "conversion_factor": 1, + "warehouse": dn.items[0].warehouse, + "use_serial_batch_fields": 1, + "batch_no": batches[1], + }, + ) + + dn.append( + "items", + { + "item_code": serial_item, + "qty": 2, + "rate": 700, + "base_rate": 700, + "item_name": serial_item, + "uom": "Nos", + "stock_uom": "Nos", + "conversion_factor": 1, + "warehouse": dn.items[0].warehouse, + "use_serial_batch_fields": 1, + "serial_no": "\n".join(serial_nos[0:2]), + }, + ) + + dn.append( + "items", + { + "item_code": serial_item, + "qty": 1, + "rate": 700, + "base_rate": 700, + "item_name": serial_item, + "uom": "Nos", + "stock_uom": "Nos", + "conversion_factor": 1, + "warehouse": dn.items[0].warehouse, + "use_serial_batch_fields": 1, + "serial_no": serial_nos[-1], + }, + ) + + dn.save() + dn.submit() + dn.reload() + + batch_no_valuation = defaultdict(float) + serial_no_valuation = defaultdict(float) + + for row in dn.items: + if row.serial_and_batch_bundle: + bundle_data = frappe.get_all( + "Serial and Batch Entry", + filters={"parent": row.serial_and_batch_bundle}, + fields=["incoming_rate", "serial_no", "batch_no"], + ) + + for d in bundle_data: + if d.batch_no: + batch_no_valuation[d.batch_no] = d.incoming_rate + elif d.serial_no: + serial_no_valuation[d.serial_no] = d.incoming_rate + + return_entry = make_sales_return(dn.name) + + return_entry.save() + return_entry.submit() + return_entry.reload() + + for row in return_entry.items: + if row.item_code == batch_item: + bundle_data = frappe.get_all( + "Serial and Batch Entry", + filters={"parent": row.serial_and_batch_bundle}, + fields=["incoming_rate", "batch_no"], + ) + + for d in bundle_data: + self.assertEqual(d.incoming_rate, batch_no_valuation[d.batch_no]) + else: + bundle_data = frappe.get_all( + "Serial and Batch Entry", + filters={"parent": row.serial_and_batch_bundle}, + fields=["incoming_rate", "serial_no"], + ) + + for d in bundle_data: + self.assertEqual(d.incoming_rate, serial_no_valuation[d.serial_no]) + + def test_auto_set_serial_batch_for_draft_dn(self): + frappe.db.set_single_value("Stock Settings", "auto_create_serial_and_batch_bundle_for_outward", 1) + frappe.db.set_single_value("Stock Settings", "pick_serial_and_batch_based_on", "FIFO") + + batch_item = make_item( + "_Test Auto Set Serial Batch Draft DN", + properties={ + "has_batch_no": 1, + "create_new_batch": 1, + "is_stock_item": 1, + "batch_number_series": "TAS-BASD-.#####", + }, + ) + + serial_item = make_item( + "_Test Auto Set Serial Batch Draft DN Serial Item", + properties={"has_serial_no": 1, "is_stock_item": 1, "serial_no_series": "TAS-SASD-.#####"}, + ) + + batch_serial_item = make_item( + "_Test Auto Set Serial Batch Draft DN Batch Serial Item", + properties={ + "has_batch_no": 1, + "has_serial_no": 1, + "is_stock_item": 1, + "create_new_batch": 1, + "batch_number_series": "TAS-BSD-.#####", + "serial_no_series": "TAS-SSD-.#####", + }, + ) + + for item in [batch_item, serial_item, batch_serial_item]: + make_stock_entry(item_code=item.name, target="_Test Warehouse - _TC", qty=5, basic_rate=100) + + dn = create_delivery_note( + item_code=batch_item, + qty=5, + rate=500, + use_serial_batch_fields=1, + do_not_submit=True, + ) + + for item in [serial_item, batch_serial_item]: + dn.append( + "items", + { + "item_code": item.name, + "qty": 5, + "rate": 500, + "base_rate": 500, + "item_name": item.name, + "uom": "Nos", + "stock_uom": "Nos", + "conversion_factor": 1, + "warehouse": dn.items[0].warehouse, + "use_serial_batch_fields": 1, + }, + ) + + dn.save() + for row in dn.items: + if row.item_code == batch_item.name: + self.assertTrue(row.batch_no) + + if row.item_code == serial_item.name: + self.assertTrue(row.serial_no) + + def test_delivery_note_return_for_batch_item_with_different_warehouse(self): + from erpnext.stock.doctype.delivery_note.delivery_note import make_sales_return + from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse + + batch_item = make_item( + "_Test Delivery Note Return Valuation WITH Batch Item", + properties={ + "has_batch_no": 1, + "create_new_batch": 1, + "is_stock_item": 1, + "batch_number_series": "BRTN-DNN-BIW-.#####", + }, + ).name + + batches = [] + for qty, rate in {5: 300}.items(): + se = make_stock_entry( + item_code=batch_item, target="_Test Warehouse - _TC", qty=qty, basic_rate=rate + ) + batches.append(get_batch_from_bundle(se.items[0].serial_and_batch_bundle)) + + warehouse = create_warehouse("Sales Return Test Warehouse 1", company="_Test Company") + + dn = create_delivery_note( + item_code=batch_item, + qty=5, + rate=1000, + use_serial_batch_fields=1, + batch_no=batches[0], + do_not_submit=True, + ) + + self.assertEqual(dn.items[0].warehouse, "_Test Warehouse - _TC") + + dn.save() + dn.submit() + dn.reload() + + batch_no_valuation = defaultdict(float) + + for row in dn.items: + if row.serial_and_batch_bundle: + bundle_data = frappe.get_all( + "Serial and Batch Entry", + filters={"parent": row.serial_and_batch_bundle}, + fields=["incoming_rate", "serial_no", "batch_no"], + ) + + for d in bundle_data: + if d.batch_no: + batch_no_valuation[d.batch_no] = d.incoming_rate + + return_entry = make_sales_return(dn.name) + return_entry.items[0].warehouse = warehouse + + return_entry.save() + return_entry.submit() + return_entry.reload() + + for row in return_entry.items: + self.assertEqual(row.warehouse, warehouse) + bundle_data = frappe.get_all( + "Serial and Batch Entry", + filters={"parent": row.serial_and_batch_bundle}, + fields=["incoming_rate", "batch_no"], + ) + + for d in bundle_data: + self.assertEqual(d.incoming_rate, batch_no_valuation[d.batch_no]) + def create_delivery_note(**args): dn = frappe.new_doc("Delivery Note") @@ -2066,6 +2548,9 @@ def create_delivery_note(**args): if args.get("batch_no"): batches = frappe._dict({args.batch_no: qty}) + if args.get("batches"): + batches = frappe._dict(args.batches) + bundle_id = make_serial_batch_bundle( frappe._dict( { diff --git a/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json b/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json index 136dd2a7572..e951aaf1e18 100644 --- a/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json +++ b/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json @@ -88,16 +88,19 @@ "column_break_rxvc", "batch_no", "available_qty_section", - "actual_batch_qty", "actual_qty", - "installed_qty", - "item_tax_rate", + "actual_batch_qty", "column_break_atna", + "company_total_stock", + "section_break_kejd", + "installed_qty", "packed_qty", + "column_break_fguf", "received_qty", "accounting_details_section", "expense_account", "column_break_71", + "item_tax_rate", "internal_transfer_section", "material_request", "purchase_order", @@ -520,7 +523,7 @@ "allow_on_submit": 1, "fieldname": "actual_qty", "fieldtype": "Float", - "label": "Available Qty at From Warehouse", + "label": "Qty (Warehouse)", "no_copy": 1, "oldfieldname": "actual_qty", "oldfieldtype": "Currency", @@ -754,6 +757,7 @@ "fieldtype": "Currency", "label": "Incoming Rate", "no_copy": 1, + "options": "Company:company:default_currency", "precision": "6", "print_hide": 1, "read_only": 1 @@ -914,17 +918,30 @@ "fieldtype": "Currency", "label": "Distributed Discount Amount", "options": "currency" + }, + { + "allow_on_submit": 1, + "fieldname": "company_total_stock", + "fieldtype": "Float", + "label": "Qty (Company)", + "no_copy": 1, + "print_hide": 1, + "read_only": 1 + }, + { + "fieldname": "section_break_kejd", + "fieldtype": "Section Break" + }, + { + "fieldname": "column_break_fguf", + "fieldtype": "Column Break" } ], "idx": 1, "index_web_pages_for_search": 1, "istable": 1, "links": [], -<<<<<<< HEAD - "modified": "2024-03-21 18:15:07.603672", -======= - "modified": "2024-06-02 06:18:38.491763", ->>>>>>> 0bab6f34c1 (fix: distributed discounts on si) + "modified": "2025-02-05 14:28:33.322181", "modified_by": "Administrator", "module": "Stock", "name": "Delivery Note Item", @@ -934,4 +951,4 @@ "sort_field": "modified", "sort_order": "DESC", "states": [] -} \ No newline at end of file +} diff --git a/erpnext/stock/doctype/delivery_note_item/delivery_note_item.py b/erpnext/stock/doctype/delivery_note_item/delivery_note_item.py index f9597f8b19e..7fb0e24be0b 100644 --- a/erpnext/stock/doctype/delivery_note_item/delivery_note_item.py +++ b/erpnext/stock/doctype/delivery_note_item/delivery_note_item.py @@ -30,6 +30,7 @@ class DeliveryNoteItem(Document): batch_no: DF.Link | None billed_amt: DF.Currency brand: DF.Link | None + company_total_stock: DF.Float conversion_factor: DF.Float cost_center: DF.Link | None customer_item_code: DF.Data | None diff --git a/erpnext/stock/doctype/inventory_dimension/inventory_dimension.py b/erpnext/stock/doctype/inventory_dimension/inventory_dimension.py index 3bafa12983f..b08a602fdf2 100644 --- a/erpnext/stock/doctype/inventory_dimension/inventory_dimension.py +++ b/erpnext/stock/doctype/inventory_dimension/inventory_dimension.py @@ -107,6 +107,7 @@ class InventoryDimension(Document): self.source_fieldname, f"to_{self.source_fieldname}", f"from_{self.source_fieldname}", + f"rejected_{self.source_fieldname}", ], ) } @@ -171,12 +172,12 @@ class InventoryDimension(Document): if label_start_with: label = f"{label_start_with} {self.dimension_name}" - return [ + dimension_fields = [ dict( fieldname="inventory_dimension", fieldtype="Section Break", insert_after=self.get_insert_after_fieldname(doctype), - label="Inventory Dimension", + label=_("Inventory Dimension"), collapsible=1, ), dict( @@ -184,26 +185,39 @@ class InventoryDimension(Document): fieldtype="Link", insert_after="inventory_dimension", options=self.reference_document, - label=label, + label=_(label), search_index=1, reqd=self.reqd, mandatory_depends_on=self.mandatory_depends_on, ), ] + if doctype in ["Purchase Invoice Item", "Purchase Receipt Item"]: + dimension_fields.append( + dict( + fieldname="rejected_" + self.source_fieldname, + fieldtype="Link", + insert_after=self.source_fieldname, + options=self.reference_document, + label=_("Rejected " + self.dimension_name), + search_index=1, + reqd=self.reqd, + mandatory_depends_on=self.mandatory_depends_on, + ) + ) + + return dimension_fields + def add_custom_fields(self): custom_fields = {} dimension_fields = [] if self.apply_to_all_doctypes: for doctype in get_inventory_documents(): - if field_exists(doctype[0], self.source_fieldname): - continue - dimension_fields = self.get_dimension_fields(doctype[0]) self.add_transfer_field(doctype[0], dimension_fields) custom_fields.setdefault(doctype[0], dimension_fields) - elif not field_exists(self.document_type, self.source_fieldname): + else: dimension_fields = self.get_dimension_fields() self.add_transfer_field(self.document_type, dimension_fields) @@ -222,8 +236,27 @@ class InventoryDimension(Document): dimension_field["fieldname"] = self.target_fieldname custom_fields["Stock Ledger Entry"] = dimension_field + filter_custom_fields = {} + ignore_doctypes = [ + "Serial and Batch Bundle", + "Serial and Batch Entry", + "Pick List Item", + "Maintenance Visit Purpose", + ] + if custom_fields: - create_custom_fields(custom_fields) + for doctype, fields in custom_fields.items(): + if doctype in ignore_doctypes: + continue + + if isinstance(fields, dict): + fields = [fields] + + for field in fields: + if not field_exists(doctype, field["fieldname"]): + filter_custom_fields.setdefault(doctype, []).append(field) + + create_custom_fields(filter_custom_fields) def add_transfer_field(self, doctype, dimension_fields): if doctype not in [ @@ -365,6 +398,7 @@ def get_inventory_dimensions(): "Inventory Dimension", fields=[ "distinct target_fieldname as fieldname", + "source_fieldname", "reference_document as doctype", "validate_negative_stock", ], diff --git a/erpnext/stock/doctype/inventory_dimension/test_inventory_dimension.py b/erpnext/stock/doctype/inventory_dimension/test_inventory_dimension.py index 8ce954d55e6..f8128ce0033 100644 --- a/erpnext/stock/doctype/inventory_dimension/test_inventory_dimension.py +++ b/erpnext/stock/doctype/inventory_dimension/test_inventory_dimension.py @@ -16,6 +16,7 @@ from erpnext.stock.doctype.inventory_dimension.inventory_dimension import ( from erpnext.stock.doctype.item.test_item import create_item from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import make_purchase_receipt from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry +from erpnext.stock.doctype.stock_ledger_entry.stock_ledger_entry import InventoryDimensionNegativeStockError from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse @@ -268,21 +269,47 @@ class TestInventoryDimension(FrappeTestCase): item_code = "Test Inventory Dimension Item" create_item(item_code) warehouse = create_warehouse("Store Warehouse") + rj_warehouse = create_warehouse("RJ Warehouse") + + if not frappe.db.exists("Store", "Rejected Store"): + frappe.get_doc({"doctype": "Store", "store_name": "Rejected Store"}).insert( + ignore_permissions=True + ) # Purchase Receipt -> Inward in Store 1 pr_doc = make_purchase_receipt( - item_code=item_code, warehouse=warehouse, qty=10, rate=100, do_not_submit=True + item_code=item_code, + warehouse=warehouse, + qty=10, + rejected_qty=5, + rate=100, + rejected_warehouse=rj_warehouse, + do_not_submit=True, ) pr_doc.items[0].store = "Store 1" + pr_doc.items[0].rejected_store = "Rejected Store" pr_doc.save() pr_doc.submit() - entries = get_voucher_sl_entries(pr_doc.name, ["warehouse", "store", "incoming_rate"]) + entries = frappe.get_all( + "Stock Ledger Entry", + filters={"voucher_no": pr_doc.name, "warehouse": warehouse}, + fields=["store"], + order_by="creation", + ) - self.assertEqual(entries[0].warehouse, warehouse) self.assertEqual(entries[0].store, "Store 1") + entries = frappe.get_all( + "Stock Ledger Entry", + filters={"voucher_no": pr_doc.name, "warehouse": rj_warehouse}, + fields=["store"], + order_by="creation", + ) + + self.assertEqual(entries[0].store, "Rejected Store") + # Stock Entry -> Transfer from Store 1 to Store 2 se_doc = make_stock_entry( item_code=item_code, qty=10, from_warehouse=warehouse, to_warehouse=warehouse, do_not_save=True @@ -426,39 +453,49 @@ class TestInventoryDimension(FrappeTestCase): warehouse = create_warehouse("Negative Stock Warehouse") + # Try issuing 10 qty, more than available stock against inventory dimension 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) + self.assertRaises(InventoryDimensionNegativeStockError, doc.submit) + + # cancel the stock entry doc.reload() if doc.docstatus == 1: doc.cancel() + # Receive 10 qty against inventory dimension doc = make_stock_entry(item_code=item_code, target=warehouse, qty=10, do_not_submit=True) - doc.items[0].to_inv_site = "Site 1" doc.submit() + # check inventory dimension value in stock ledger entry site_name = frappe.get_all( "Stock Ledger Entry", filters={"voucher_no": doc.name, "is_cancelled": 0}, fields=["inv_site"] )[0].inv_site self.assertEqual(site_name, "Site 1") + # Receive another 100 qty without inventory dimension + doc = make_stock_entry(item_code=item_code, target=warehouse, qty=100) + + # Try issuing 100 qty, more than available stock against inventory dimension + # Note: total available qty for the item is 110, but against inventory dimension, only 10 qty is available doc = make_stock_entry(item_code=item_code, source=warehouse, qty=100, do_not_submit=True) - doc.items[0].inv_site = "Site 1" - self.assertRaises(frappe.ValidationError, doc.submit) + self.assertRaises(InventoryDimensionNegativeStockError, doc.submit) + # disable validate_negative_stock for inventory dimension inv_dimension.reload() inv_dimension.db_set("validate_negative_stock", 0) frappe.local.inventory_dimensions = {} + # Try issuing 100 qty, more than available stock against inventory dimension doc = make_stock_entry(item_code=item_code, source=warehouse, qty=100, do_not_submit=True) - doc.items[0].inv_site = "Site 1" doc.submit() self.assertEqual(doc.docstatus, 1) + # check inventory dimension value in stock ledger entry site_name = frappe.get_all( "Stock Ledger Entry", filters={"voucher_no": doc.name, "is_cancelled": 0}, fields=["inv_site"] )[0].inv_site diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js index 81eeb914af0..4195506ad3b 100644 --- a/erpnext/stock/doctype/item/item.js +++ b/erpnext/stock/doctype/item/item.js @@ -663,39 +663,41 @@ $.extend(erpnext.item, { } frm.doc.attributes.forEach(function (d) { - let p = new Promise((resolve) => { - if (!d.numeric_values) { - frappe - .call({ - method: "frappe.client.get_list", - args: { - doctype: "Item Attribute Value", - filters: [["parent", "=", d.attribute]], - fields: ["attribute_value"], - limit_page_length: 0, - parent: "Item Attribute", - order_by: "idx", - }, - }) - .then((r) => { - if (r.message) { - attr_val_fields[d.attribute] = r.message.map(function (d) { - return d.attribute_value; - }); - resolve(); - } - }); - } else { - let values = []; - for (var i = d.from_range; i <= d.to_range; i = flt(i + d.increment, 6)) { - values.push(i); + if (!d.disabled) { + let p = new Promise((resolve) => { + if (!d.numeric_values) { + frappe + .call({ + method: "frappe.client.get_list", + args: { + doctype: "Item Attribute Value", + filters: [["parent", "=", d.attribute]], + fields: ["attribute_value"], + limit_page_length: 0, + parent: "Item Attribute", + order_by: "idx", + }, + }) + .then((r) => { + if (r.message) { + attr_val_fields[d.attribute] = r.message.map(function (d) { + return d.attribute_value; + }); + resolve(); + } + }); + } else { + let values = []; + for (var i = d.from_range; i <= d.to_range; i = flt(i + d.increment, 6)) { + values.push(i); + } + attr_val_fields[d.attribute] = values; + resolve(); } - attr_val_fields[d.attribute] = values; - resolve(); - } - }); + }); - promises.push(p); + promises.push(p); + } }, this); Promise.all(promises).then(() => { @@ -710,26 +712,29 @@ $.extend(erpnext.item, { for (var i = 0; i < frm.doc.attributes.length; i++) { var fieldtype, desc; var row = frm.doc.attributes[i]; - if (row.numeric_values) { - fieldtype = "Float"; - desc = - "Min Value: " + - row.from_range + - " , Max Value: " + - row.to_range + - ", in Increments of: " + - row.increment; - } else { - fieldtype = "Data"; - desc = ""; + + if (!row.disabled) { + if (row.numeric_values) { + fieldtype = "Float"; + desc = + "Min Value: " + + row.from_range + + " , Max Value: " + + row.to_range + + ", in Increments of: " + + row.increment; + } else { + fieldtype = "Data"; + desc = ""; + } + fields = fields.concat({ + label: row.attribute, + fieldname: row.attribute, + fieldtype: fieldtype, + reqd: 0, + description: desc, + }); } - fields = fields.concat({ - label: row.attribute, - fieldname: row.attribute, - fieldtype: fieldtype, - reqd: 0, - description: desc, - }); } if (frm.doc.image) { diff --git a/erpnext/stock/doctype/item/item.json b/erpnext/stock/doctype/item/item.json index 2c56b6a80bc..16ac4fd1017 100644 --- a/erpnext/stock/doctype/item/item.json +++ b/erpnext/stock/doctype/item/item.json @@ -1,6 +1,5 @@ { "actions": [], - "allow_guest_to_view": 1, "allow_import": 1, "allow_rename": 1, "autoname": "field:item_code", @@ -888,10 +887,9 @@ "icon": "fa fa-tag", "idx": 2, "image_field": "image", - "index_web_pages_for_search": 1, "links": [], "make_attachments_public": 1, - "modified": "2024-04-30 13:46:39.098753", + "modified": "2025-02-03 23:43:57.253667", "modified_by": "Administrator", "module": "Stock", "name": "Item", diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py index 1ceb949d691..003e0d4d3a0 100644 --- a/erpnext/stock/doctype/item/item.py +++ b/erpnext/stock/doctype/item/item.py @@ -22,6 +22,7 @@ from frappe.utils import ( strip_html, ) from frappe.utils.html_utils import clean_html +from pypika import Order import erpnext from erpnext.controllers.item_variant import ( @@ -345,7 +346,13 @@ class Item(Document): def validate_item_tax_net_rate_range(self): for tax in self.get("taxes"): if flt(tax.maximum_net_rate) < flt(tax.minimum_net_rate): - frappe.throw(_("Row #{0}: Maximum Net Rate cannot be greater than Minimum Net Rate")) + frappe.throw( + _("Taxes row #{0}: {1} cannot be smaller than {2}").format( + tax.idx, + bold(_(tax.meta.get_label("maximum_net_rate"))), + bold(_(tax.meta.get_label("minimum_net_rate"))), + ) + ) def update_template_tables(self): template = frappe.get_cached_doc("Item", self.variant_of) @@ -1133,34 +1140,10 @@ def get_last_purchase_details(item_code, doc_name=None, conversion_rate=1.0): """returns last purchase details in stock uom""" # get last purchase order item details - last_purchase_order = frappe.db.sql( - """\ - select po.name, po.transaction_date, po.conversion_rate, - po_item.conversion_factor, po_item.base_price_list_rate, - po_item.discount_percentage, po_item.base_rate, po_item.base_net_rate - from `tabPurchase Order` po, `tabPurchase Order Item` po_item - where po.docstatus = 1 and po_item.item_code = %s and po.name != %s and - po.name = po_item.parent - order by po.transaction_date desc, po.name desc - limit 1""", - (item_code, cstr(doc_name)), - as_dict=1, - ) + last_purchase_order = get_purchase_voucher_details("Purchase Order", item_code, doc_name) # get last purchase receipt item details - last_purchase_receipt = frappe.db.sql( - """\ - select pr.name, pr.posting_date, pr.posting_time, pr.conversion_rate, - pr_item.conversion_factor, pr_item.base_price_list_rate, pr_item.discount_percentage, - pr_item.base_rate, pr_item.base_net_rate - from `tabPurchase Receipt` pr, `tabPurchase Receipt Item` pr_item - where pr.docstatus = 1 and pr_item.item_code = %s and pr.name != %s and - pr.name = pr_item.parent - order by pr.posting_date desc, pr.posting_time desc, pr.name desc - limit 1""", - (item_code, cstr(doc_name)), - as_dict=1, - ) + last_purchase_receipt = get_purchase_voucher_details("Purchase Receipt", item_code, doc_name) purchase_order_date = getdate( last_purchase_order and last_purchase_order[0].transaction_date or "1900-01-01" @@ -1181,7 +1164,13 @@ def get_last_purchase_details(item_code, doc_name=None, conversion_rate=1.0): purchase_date = purchase_receipt_date else: - return frappe._dict() + last_purchase_invoice = get_purchase_voucher_details("Purchase Invoice", item_code, doc_name) + + if last_purchase_invoice: + last_purchase = last_purchase_invoice[0] + purchase_date = getdate(last_purchase.posting_date) + else: + return frappe._dict() conversion_factor = flt(last_purchase.conversion_factor) out = frappe._dict( @@ -1207,6 +1196,42 @@ def get_last_purchase_details(item_code, doc_name=None, conversion_rate=1.0): return out +def get_purchase_voucher_details(doctype, item_code, document_name=None): + parent_doc = frappe.qb.DocType(doctype) + child_doc = frappe.qb.DocType(doctype + " Item") + + query = ( + frappe.qb.from_(parent_doc) + .inner_join(child_doc) + .on(parent_doc.name == child_doc.parent) + .select( + parent_doc.name, + parent_doc.conversion_rate, + child_doc.conversion_factor, + child_doc.base_price_list_rate, + child_doc.discount_percentage, + child_doc.base_rate, + child_doc.base_net_rate, + ) + .where(parent_doc.docstatus == 1) + .where(child_doc.item_code == item_code) + ) + + if document_name: + query = query.where(parent_doc.name != document_name) + + if doctype in ("Purchase Receipt", "Purchase Invoice"): + query = query.select(parent_doc.posting_date, parent_doc.posting_time) + query = query.orderby( + parent_doc.posting_date, parent_doc.posting_time, parent_doc.name, order=Order.desc + ) + else: + query = query.select(parent_doc.transaction_date) + query = query.orderby(parent_doc.transaction_date, parent_doc.name, order=Order.desc) + + return query.run(as_dict=1) + + def check_stock_uom_with_bin(item, stock_uom): if stock_uom == frappe.db.get_value("Item", item, "stock_uom"): return diff --git a/erpnext/stock/doctype/item/templates/item_row.html b/erpnext/stock/doctype/item/templates/item_row.html index f81fc1d8743..809ac838ccb 100644 --- a/erpnext/stock/doctype/item/templates/item_row.html +++ b/erpnext/stock/doctype/item/templates/item_row.html @@ -1,4 +1,4 @@
- {{ title }} + {{ title or name }}
diff --git a/erpnext/stock/doctype/item_attribute/item_attribute.json b/erpnext/stock/doctype/item_attribute/item_attribute.json index 5c4678916f3..d9b0898ca7f 100644 --- a/erpnext/stock/doctype/item_attribute/item_attribute.json +++ b/erpnext/stock/doctype/item_attribute/item_attribute.json @@ -10,6 +10,8 @@ "field_order": [ "attribute_name", "numeric_values", + "column_break_vbik", + "disabled", "section_break_4", "from_range", "increment", @@ -70,15 +72,26 @@ "fieldtype": "Table", "label": "Item Attribute Values", "options": "Item Attribute Value" + }, + { + "fieldname": "column_break_vbik", + "fieldtype": "Column Break" + }, + { + "default": "0", + "fieldname": "disabled", + "fieldtype": "Check", + "label": "Disabled" } ], "icon": "fa fa-edit", "index_web_pages_for_search": 1, "links": [], - "modified": "2020-10-02 12:03:02.359202", + "modified": "2024-11-26 20:05:29.421714", "modified_by": "Administrator", "module": "Stock", "name": "Item Attribute", + "naming_rule": "By fieldname", "owner": "Administrator", "permissions": [ { @@ -94,4 +107,4 @@ "sort_field": "modified", "sort_order": "DESC", "track_changes": 1 -} \ No newline at end of file +} diff --git a/erpnext/stock/doctype/item_attribute/item_attribute.py b/erpnext/stock/doctype/item_attribute/item_attribute.py index 04421d6292e..3b9bcf93288 100644 --- a/erpnext/stock/doctype/item_attribute/item_attribute.py +++ b/erpnext/stock/doctype/item_attribute/item_attribute.py @@ -30,6 +30,7 @@ class ItemAttribute(Document): from erpnext.stock.doctype.item_attribute_value.item_attribute_value import ItemAttributeValue attribute_name: DF.Data + disabled: DF.Check from_range: DF.Float increment: DF.Float item_attribute_values: DF.Table[ItemAttributeValue] @@ -47,6 +48,19 @@ class ItemAttribute(Document): def on_update(self): self.validate_exising_items() + self.set_enabled_disabled_in_items() + + def set_enabled_disabled_in_items(self): + db_value = self.get_doc_before_save() + if not db_value or db_value.disabled != self.disabled: + item_variant_table = frappe.qb.DocType("Item Variant Attribute") + query = ( + frappe.qb.update(item_variant_table) + .set(item_variant_table.disabled, self.disabled) + .where(item_variant_table.attribute == self.name) + ) + + query.run() def validate_exising_items(self): """Validate that if there are existing items with attributes, they are valid""" diff --git a/erpnext/stock/doctype/item_default/item_default.json b/erpnext/stock/doctype/item_default/item_default.json index 28956612762..04212b31795 100644 --- a/erpnext/stock/doctype/item_default/item_default.json +++ b/erpnext/stock/doctype/item_default/item_default.json @@ -40,7 +40,8 @@ "fieldtype": "Link", "in_list_view": 1, "label": "Default Warehouse", - "options": "Warehouse" + "options": "Warehouse", + "search_index": 1 }, { "fieldname": "column_break_3", @@ -139,7 +140,7 @@ ], "istable": 1, "links": [], - "modified": "2023-09-04 12:33:14.607267", + "modified": "2025-03-17 13:46:09.719105", "modified_by": "Administrator", "module": "Stock", "name": "Item Default", @@ -150,4 +151,4 @@ "sort_order": "DESC", "states": [], "track_changes": 1 -} \ No newline at end of file +} diff --git a/erpnext/stock/doctype/item_variant_attribute/item_variant_attribute.json b/erpnext/stock/doctype/item_variant_attribute/item_variant_attribute.json index 9699ecbb3db..cfc752c1f61 100644 --- a/erpnext/stock/doctype/item_variant_attribute/item_variant_attribute.json +++ b/erpnext/stock/doctype/item_variant_attribute/item_variant_attribute.json @@ -11,6 +11,7 @@ "column_break_2", "attribute_value", "numeric_values", + "disabled", "section_break_4", "from_range", "increment", @@ -74,11 +75,18 @@ "fieldname": "to_range", "fieldtype": "Float", "label": "To Range" + }, + { + "default": "0", + "fetch_from": "attribute.disabled", + "fieldname": "disabled", + "fieldtype": "Check", + "label": "Disabled" } ], "istable": 1, "links": [], - "modified": "2023-07-14 17:15:19.112119", + "modified": "2024-11-26 20:10:49.873339", "modified_by": "Administrator", "module": "Stock", "name": "Item Variant Attribute", @@ -87,4 +95,4 @@ "sort_field": "modified", "sort_order": "DESC", "states": [] -} \ No newline at end of file +} diff --git a/erpnext/stock/doctype/item_variant_attribute/item_variant_attribute.py b/erpnext/stock/doctype/item_variant_attribute/item_variant_attribute.py index 756b7421761..ea239d2ccc9 100644 --- a/erpnext/stock/doctype/item_variant_attribute/item_variant_attribute.py +++ b/erpnext/stock/doctype/item_variant_attribute/item_variant_attribute.py @@ -16,6 +16,7 @@ class ItemVariantAttribute(Document): attribute: DF.Link attribute_value: DF.Data | None + disabled: DF.Check from_range: DF.Float increment: DF.Float numeric_values: DF.Check diff --git a/erpnext/stock/doctype/landed_cost_taxes_and_charges/landed_cost_taxes_and_charges.json b/erpnext/stock/doctype/landed_cost_taxes_and_charges/landed_cost_taxes_and_charges.json index 9c59c13ac07..898848ebf42 100644 --- a/erpnext/stock/doctype/landed_cost_taxes_and_charges/landed_cost_taxes_and_charges.json +++ b/erpnext/stock/doctype/landed_cost_taxes_and_charges/landed_cost_taxes_and_charges.json @@ -11,7 +11,8 @@ "description", "col_break3", "amount", - "base_amount" + "base_amount", + "has_corrective_cost" ], "fields": [ { @@ -62,12 +63,19 @@ "label": "Amount (Company Currency)", "options": "Company:company:default_currency", "read_only": 1 + }, + { + "default": "0", + "fieldname": "has_corrective_cost", + "fieldtype": "Check", + "label": "Has Corrective Cost", + "read_only": 1 } ], "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2021-05-17 13:57:10.807980", + "modified": "2025-01-20 12:22:03.455762", "modified_by": "Administrator", "module": "Stock", "name": "Landed Cost Taxes and Charges", diff --git a/erpnext/stock/doctype/landed_cost_taxes_and_charges/landed_cost_taxes_and_charges.py b/erpnext/stock/doctype/landed_cost_taxes_and_charges/landed_cost_taxes_and_charges.py index 8509cb71d85..a3f7f037d60 100644 --- a/erpnext/stock/doctype/landed_cost_taxes_and_charges/landed_cost_taxes_and_charges.py +++ b/erpnext/stock/doctype/landed_cost_taxes_and_charges/landed_cost_taxes_and_charges.py @@ -20,6 +20,7 @@ class LandedCostTaxesandCharges(Document): description: DF.SmallText exchange_rate: DF.Float expense_account: DF.Link | None + has_corrective_cost: DF.Check parent: DF.Data parentfield: DF.Data parenttype: DF.Data diff --git a/erpnext/stock/doctype/material_request/material_request.js b/erpnext/stock/doctype/material_request/material_request.js index f04acc85ed5..5f46ef968b0 100644 --- a/erpnext/stock/doctype/material_request/material_request.js +++ b/erpnext/stock/doctype/material_request/material_request.js @@ -155,17 +155,13 @@ frappe.ui.form.on("Material Request", { () => frm.events.make_purchase_order(frm), __("Create") ); - } - if (frm.doc.material_request_type === "Purchase") { frm.add_custom_button( __("Request for Quotation"), () => frm.events.make_request_for_quotation(frm), __("Create") ); - } - if (frm.doc.material_request_type === "Purchase") { frm.add_custom_button( __("Supplier Quotation"), () => frm.events.make_supplier_quotation(frm), @@ -181,6 +177,14 @@ frappe.ui.form.on("Material Request", { ); } + if (frm.doc.material_request_type === "Subcontracting") { + frm.add_custom_button( + __("Subcontracted Purchase Order"), + () => frm.events.make_purchase_order(frm), + __("Create") + ); + } + frm.page.set_inner_btn_group_as_primary(__("Create")); } } @@ -259,18 +263,21 @@ frappe.ui.form.on("Material Request", { }, callback: function (r) { const d = item; - const allow_to_change_fields = [ + let allow_to_change_fields = [ "actual_qty", "projected_qty", "min_order_qty", "item_name", - "description", "stock_uom", "uom", "conversion_factor", "stock_qty", ]; + if (overwrite_warehouse) { + allow_to_change_fields.push("description"); + } + if (!r.exc) { $.each(r.message, function (key, value) { if (!d[key] || allow_to_change_fields.includes(key)) { @@ -319,7 +326,7 @@ frappe.ui.form.on("Material Request", { default: 1, }, ], - primary_action_label: "Get Items", + primary_action_label: __("Get Items"), primary_action(values) { if (!values) return; values["company"] = frm.doc.company; diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py index 7bf3ca4d728..a5f1467cced 100644 --- a/erpnext/stock/doctype/material_request/material_request.py +++ b/erpnext/stock/doctype/material_request/material_request.py @@ -378,7 +378,9 @@ def set_missing_values(source, target_doc): def update_item(obj, target, source_parent): target.conversion_factor = obj.conversion_factor - target.qty = flt(flt(obj.stock_qty) - flt(obj.ordered_qty)) / target.conversion_factor + + qty = obj.ordered_qty or obj.received_qty + target.qty = flt(flt(obj.stock_qty) - flt(qty)) / target.conversion_factor target.stock_qty = target.qty * target.conversion_factor if getdate(target.schedule_date) < getdate(nowdate()): target.schedule_date = None @@ -430,7 +432,9 @@ def make_purchase_order(source_name, target_doc=None, args=None): filtered_items = args.get("filtered_children", []) child_filter = d.name in filtered_items if filtered_items else True - return d.ordered_qty < d.stock_qty and child_filter + qty = d.ordered_qty or d.received_qty + + return qty < d.stock_qty and child_filter doclist = get_mapped_doc( "Material Request", @@ -478,7 +482,7 @@ def make_request_for_quotation(source_name, target_doc=None): "field_map": [ ["name", "material_request_item"], ["parent", "material_request"], - ["uom", "uom"], + ["project", "project_name"], ], }, }, @@ -762,6 +766,7 @@ def raise_work_orders(material_request): ) wo_order.set_work_order_operations() + wo_order.flags.ignore_validate = True wo_order.flags.ignore_mandatory = True wo_order.save() @@ -808,7 +813,7 @@ def create_pick_list(source_name, target_doc=None): }, "Material Request Item": { "doctype": "Pick List Item", - "field_map": {"name": "material_request_item", "qty": "stock_qty"}, + "field_map": {"name": "material_request_item", "stock_qty": "stock_qty"}, }, }, target_doc, diff --git a/erpnext/stock/doctype/material_request/material_request_list.js b/erpnext/stock/doctype/material_request/material_request_list.js index ee5c9e7b86c..b20ac15f136 100644 --- a/erpnext/stock/doctype/material_request/material_request_list.js +++ b/erpnext/stock/doctype/material_request/material_request_list.js @@ -13,7 +13,13 @@ frappe.listview_settings["Material Request"] = { return [__("Completed"), "green"]; } } else if (doc.docstatus == 1 && flt(doc.per_ordered, precision) == 0) { - return [__("Pending"), "orange", "per_ordered,=,0"]; + return [__("Pending"), "orange", "per_ordered,=,0|docstatus,=,1"]; + } else if ( + doc.docstatus == 1 && + flt(doc.per_ordered, precision) < 100 && + doc.material_request_type == "Material Transfer" + ) { + return [__("Partially Received"), "yellow", "per_ordered,<,100"]; } else if (doc.docstatus == 1 && flt(doc.per_ordered, precision) < 100) { return [__("Partially ordered"), "yellow", "per_ordered,<,100"]; } else if (doc.docstatus == 1 && flt(doc.per_ordered, precision) == 100) { diff --git a/erpnext/stock/doctype/material_request/test_material_request.py b/erpnext/stock/doctype/material_request/test_material_request.py index 4d48d50c9f0..b0ea7964117 100644 --- a/erpnext/stock/doctype/material_request/test_material_request.py +++ b/erpnext/stock/doctype/material_request/test_material_request.py @@ -17,6 +17,7 @@ from erpnext.stock.doctype.material_request.material_request import ( make_supplier_quotation, raise_work_orders, ) +from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse class TestMaterialRequest(FrappeTestCase): @@ -59,6 +60,43 @@ class TestMaterialRequest(FrappeTestCase): self.assertEqual(se.doctype, "Stock Entry") self.assertEqual(len(se.get("items")), len(mr.get("items"))) + def test_partial_make_stock_entry(self): + from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry as _make_stock_entry + + mr = frappe.copy_doc(test_records[0]).insert() + + source_wh = create_warehouse( + warehouse_name="_Test Source Warehouse", + properties={"parent_warehouse": "All Warehouses - _TC"}, + company="_Test Company", + ) + + mr = frappe.get_doc("Material Request", mr.name) + mr.material_request_type = "Material Transfer" + + for row in mr.items: + _make_stock_entry( + item_code=row.item_code, + qty=10, + to_warehouse=source_wh, + company="_Test Company", + rate=100, + ) + + row.from_warehouse = source_wh + row.qty = 10 + + mr.save() + mr.submit() + + se = make_stock_entry(mr.name) + se.get("items")[0].qty = 5 + se.insert() + se.submit() + + mr.reload() + self.assertEqual(mr.status, "Partially Received") + def test_in_transit_make_stock_entry(self): mr = frappe.copy_doc(test_records[0]).insert() diff --git a/erpnext/stock/doctype/packed_item/packed_item.json b/erpnext/stock/doctype/packed_item/packed_item.json index 1daf6791d40..cb415e3813a 100644 --- a/erpnext/stock/doctype/packed_item/packed_item.json +++ b/erpnext/stock/doctype/packed_item/packed_item.json @@ -202,7 +202,8 @@ "oldfieldname": "parent_detail_docname", "oldfieldtype": "Data", "print_hide": 1, - "read_only": 1 + "read_only": 1, + "search_index": 1 }, { "depends_on": "batch_no", @@ -295,7 +296,7 @@ "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2024-02-04 16:30:44.263964", + "modified": "2025-02-18 13:07:02.789654", "modified_by": "Administrator", "module": "Stock", "name": "Packed Item", @@ -305,4 +306,4 @@ "sort_order": "DESC", "states": [], "track_changes": 1 -} \ No newline at end of file +} diff --git a/erpnext/stock/doctype/packing_slip/packing_slip.py b/erpnext/stock/doctype/packing_slip/packing_slip.py index 8f8e8dcc1d8..fe28b3c5397 100644 --- a/erpnext/stock/doctype/packing_slip/packing_slip.py +++ b/erpnext/stock/doctype/packing_slip/packing_slip.py @@ -159,11 +159,10 @@ class PackingSlip(StatusUpdater): self.from_case_no = self.get_recommended_case_no() for item in self.items: - stock_uom, weight_per_unit, weight_uom = frappe.db.get_value( - "Item", item.item_code, ["stock_uom", "weight_per_unit", "weight_uom"] + weight_per_unit, weight_uom = frappe.db.get_value( + "Item", item.item_code, ["weight_per_unit", "weight_uom"] ) - item.stock_uom = stock_uom if weight_per_unit and not item.net_weight: item.net_weight = weight_per_unit if weight_uom and not item.weight_uom: diff --git a/erpnext/stock/doctype/pick_list/pick_list.js b/erpnext/stock/doctype/pick_list/pick_list.js index 518782d759b..6a6bb226a9e 100644 --- a/erpnext/stock/doctype/pick_list/pick_list.js +++ b/erpnext/stock/doctype/pick_list/pick_list.js @@ -2,6 +2,13 @@ // For license information, please see license.txt frappe.ui.form.on("Pick List", { + after_save(frm) { + setTimeout(() => { + // Added to fix the issue of locations table not getting updated after save + frm.reload_doc(); + }, 500); + }, + setup: (frm) => { frm.ignore_doctypes_on_cancel_all = ["Serial and Batch Bundle"]; diff --git a/erpnext/stock/doctype/pick_list/pick_list.py b/erpnext/stock/doctype/pick_list/pick_list.py index 0c93fd6c402..31bff657fd1 100644 --- a/erpnext/stock/doctype/pick_list/pick_list.py +++ b/erpnext/stock/doctype/pick_list/pick_list.py @@ -73,10 +73,10 @@ class PickList(Document): self.set_onload("has_reserved_stock", True) def validate(self): + self.validate_expired_batches() self.validate_for_qty() - if self.pick_manually and self.get("locations"): - self.validate_stock_qty() - self.check_serial_no_status() + self.validate_stock_qty() + self.check_serial_no_status() def before_save(self): self.update_status() @@ -90,14 +90,24 @@ class PickList(Document): from erpnext.stock.doctype.batch.batch import get_batch_qty for row in self.get("locations"): - if row.batch_no and not row.qty: + if not row.picked_qty: + continue + + if row.batch_no and row.picked_qty: batch_qty = get_batch_qty(row.batch_no, row.warehouse, row.item_code) - if row.qty > batch_qty: + if row.picked_qty > batch_qty: frappe.throw( _( - "At Row #{0}: The picked quantity {1} for the item {2} is greater than available stock {3} for the batch {4} in the warehouse {5}." - ).format(row.idx, row.item_code, batch_qty, row.batch_no, bold(row.warehouse)), + "At Row #{0}: The picked quantity {1} for the item {2} is greater than available stock {3} for the batch {4} in the warehouse {5}. Please restock the item." + ).format( + row.idx, + row.picked_qty, + row.item_code, + batch_qty, + row.batch_no, + bold(row.warehouse), + ), title=_("Insufficient Stock"), ) @@ -109,11 +119,11 @@ class PickList(Document): "actual_qty", ) - if row.qty > bin_qty: + if row.picked_qty > flt(bin_qty): frappe.throw( _( "At Row #{0}: The picked quantity {1} for the item {2} is greater than available stock {3} in the warehouse {4}." - ).format(row.idx, row.qty, bold(row.item_code), bin_qty, bold(row.warehouse)), + ).format(row.idx, row.picked_qty, bold(row.item_code), bin_qty, bold(row.warehouse)), title=_("Insufficient Stock"), ) @@ -196,6 +206,33 @@ class PickList(Document): self.update_reference_qty() self.update_sales_order_picking_status() + def validate_expired_batches(self): + batches = [] + for row in self.get("locations"): + if row.get("batch_no") and row.get("picked_qty"): + batches.append(row.batch_no) + + if batches: + batch = frappe.qb.DocType("Batch") + query = ( + frappe.qb.from_(batch) + .select(batch.name) + .where( + (batch.name.isin(batches)) + & (batch.expiry_date <= frappe.utils.nowdate()) + & (batch.expiry_date.isnotnull()) + ) + ) + + expired_batches = query.run(as_dict=True) + if expired_batches: + msg = "" + + frappe.throw( + _("The following batches are expired, please restock them:
{0}").format(msg), + title=_("Expired Batches"), + ) + def make_bundle_using_old_serial_batch_fields(self): from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos @@ -429,8 +466,16 @@ class PickList(Document): locations_replica = self.get("locations") # reset - self.delete_key("locations") + reset_rows = [] + for row in self.get("locations"): + if not row.picked_qty: + reset_rows.append(row) + + for row in reset_rows: + self.remove(row) + updated_locations = frappe._dict() + len_idx = len(self.get("locations")) or 0 for item_doc in items: item_code = item_doc.item_code @@ -473,6 +518,8 @@ class PickList(Document): if location.picked_qty > location.stock_qty: location.picked_qty = location.stock_qty + len_idx += 1 + location.idx = len_idx self.append("locations", location) # If table is empty on update after submit, set stock_qty, picked_qty to 0 so that indicator is red @@ -481,7 +528,11 @@ class PickList(Document): for location in locations_replica: location.stock_qty = 0 location.picked_qty = 0 + + len_idx += 1 + location.idx = len_idx self.append("locations", location) + frappe.msgprint( _( "Please Restock Items and Update the Pick List to continue. To discontinue, cancel the Pick List." @@ -499,6 +550,9 @@ class PickList(Document): # aggregate qty for same item item_map = OrderedDict() for item in locations: + if item.picked_qty: + continue + if not item.item_code: frappe.throw(f"Row #{item.idx}: Item Code is Mandatory") if not cint( @@ -619,8 +673,31 @@ class PickList(Document): if serial_no: picked_items[item_data.item_code][key]["serial_no"].extend(serial_no) + self.update_picked_item_from_current_pick_list(picked_items) return picked_items + def update_picked_item_from_current_pick_list(self, picked_items): + for row in self.locations: + if flt(row.picked_qty) > 0: + key = (row.warehouse, row.batch_no) if row.batch_no else row.warehouse + serial_no = [x for x in row.serial_no.split("\n") if x] if row.serial_no else None + if row.item_code not in picked_items: + picked_items[row.item_code] = {} + + if key not in picked_items[row.item_code]: + picked_items[row.item_code][key] = frappe._dict( + { + "picked_qty": 0, + "serial_no": [], + "batch_no": row.batch_no or "", + "warehouse": row.warehouse, + } + ) + + picked_items[row.item_code][key]["picked_qty"] += flt(row.stock_qty) or flt(row.picked_qty) + if serial_no: + picked_items[row.item_code][key]["serial_no"].extend(serial_no) + def _get_pick_list_items(self, items): pi = frappe.qb.DocType("Pick List") pi_item = frappe.qb.DocType("Pick List Item") @@ -634,9 +711,11 @@ class PickList(Document): pi_item.batch_no, pi_item.serial_and_batch_bundle, pi_item.serial_no, - (Case().when(pi_item.picked_qty > 0, pi_item.picked_qty).else_(pi_item.stock_qty)).as_( - "picked_qty" - ), + ( + Case() + .when((pi_item.picked_qty > 0) & (pi_item.docstatus == 1), pi_item.picked_qty) + .else_(pi_item.stock_qty) + ).as_("picked_qty"), ) .where( (pi_item.item_code.isin([x.item_code for x in items])) @@ -650,6 +729,8 @@ class PickList(Document): if self.name: query = query.where(pi_item.parent != self.name) + query = query.for_update() + return query.run(as_dict=True) def _get_product_bundles(self) -> dict[str, str]: @@ -1114,6 +1195,7 @@ def create_delivery_note(source_name, target_doc=None): def create_dn_wo_so(pick_list): delivery_note = frappe.new_doc("Delivery Note") + delivery_note.company = pick_list.company item_table_mapper_without_so = { "doctype": "Delivery Note Item", @@ -1245,6 +1327,7 @@ def create_stock_entry(pick_list): stock_entry = frappe.new_doc("Stock Entry") stock_entry.pick_list = pick_list.get("name") stock_entry.purpose = pick_list.get("purpose") + stock_entry.company = pick_list.get("company") stock_entry.set_stock_entry_type() if pick_list.get("work_order"): diff --git a/erpnext/stock/doctype/pick_list/pick_list_list.js b/erpnext/stock/doctype/pick_list/pick_list_list.js index 9cdbfe18720..eca6eece785 100644 --- a/erpnext/stock/doctype/pick_list/pick_list_list.js +++ b/erpnext/stock/doctype/pick_list/pick_list_list.js @@ -4,7 +4,7 @@ frappe.listview_settings["Pick List"] = { get_indicator: function (doc) { const status_colors = { - Draft: "grey", + Draft: "red", Open: "orange", Completed: "green", Cancelled: "red", diff --git a/erpnext/stock/doctype/pick_list/test_pick_list.py b/erpnext/stock/doctype/pick_list/test_pick_list.py index ef74ec9d627..c3043bbf1b5 100644 --- a/erpnext/stock/doctype/pick_list/test_pick_list.py +++ b/erpnext/stock/doctype/pick_list/test_pick_list.py @@ -870,7 +870,7 @@ class TestPickList(FrappeTestCase): so = make_sales_order(item_code=item, qty=4, rate=100) pl = create_pick_list(so.name) - self.assertFalse(hasattr(pl, "locations")) + self.assertFalse(pl.locations) def test_pick_list_validation_for_serial_no(self): warehouse = "_Test Warehouse - _TC" @@ -901,7 +901,7 @@ class TestPickList(FrappeTestCase): so = make_sales_order(item_code=item, qty=4, rate=100) pl = create_pick_list(so.name) - self.assertFalse(hasattr(pl, "locations")) + self.assertFalse(pl.locations) def test_pick_list_validation_for_batch_no(self): warehouse = "_Test Warehouse - _TC" @@ -937,7 +937,7 @@ class TestPickList(FrappeTestCase): so = make_sales_order(item_code=item, qty=4, rate=100) pl = create_pick_list(so.name) - self.assertFalse(hasattr(pl, "locations")) + self.assertFalse(pl.locations) def test_pick_list_validation_for_batch_no_and_serial_item(self): warehouse = "_Test Warehouse - _TC" @@ -977,7 +977,7 @@ class TestPickList(FrappeTestCase): so = make_sales_order(item_code=item, qty=4, rate=100) pl = create_pick_list(so.name) - self.assertFalse(hasattr(pl, "locations")) + self.assertFalse(pl.locations) def test_pick_list_validation_for_multiple_batches_and_sales_order(self): warehouse = "_Test Warehouse - _TC" @@ -1172,6 +1172,7 @@ class TestPickList(FrappeTestCase): for row in pl.locations: row.qty = row.qty + 10 + row.picked_qty = row.qty self.assertRaises(frappe.ValidationError, pl.save) @@ -1241,6 +1242,7 @@ class TestPickList(FrappeTestCase): "is_recursive": 1, "recurse_for": 2, "free_qty": 1, + "dont_enforce_free_item_qty": 0, "company": "_Test Company", "customer": "_Test Customer", } @@ -1266,3 +1268,42 @@ class TestPickList(FrappeTestCase): delivery_note = create_delivery_note(pl.name) self.assertEqual(len(delivery_note.items), 1) + + def test_pick_list_not_reset_batch(self): + warehouse = "_Test Warehouse - _TC" + item = make_item( + "Test Do Not Reset Picked Item", + properties={ + "is_stock_item": 1, + "has_batch_no": 1, + "create_new_batch": 1, + "batch_number_series": "BTH-PICKLT-.######", + }, + ).name + + se = make_stock_entry(item=item, to_warehouse=warehouse, qty=10) + batch1 = get_batch_from_bundle(se.items[0].serial_and_batch_bundle) + se = make_stock_entry(item=item, to_warehouse=warehouse, qty=10) + batch2 = get_batch_from_bundle(se.items[0].serial_and_batch_bundle) + + so = make_sales_order(item_code=item, qty=10, rate=100) + + pl = create_pick_list(so.name) + pl.save() + + for loc in pl.locations: + self.assertEqual(loc.batch_no, batch1) + loc.batch_no = batch2 + loc.picked_qty = 0.0 + + pl.save() + + for loc in pl.locations: + self.assertEqual(loc.batch_no, batch1) + loc.batch_no = batch2 + loc.picked_qty = 10.0 + + pl.save() + + for loc in pl.locations: + self.assertEqual(loc.batch_no, batch2) diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js index bfac4381a06..bcecf8be14d 100644 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js @@ -11,25 +11,10 @@ erpnext.buying.setup_buying_controller(); frappe.ui.form.on("Purchase Receipt", { setup: (frm) => { - frm.make_methods = { - "Landed Cost Voucher": () => { - let lcv = frappe.model.get_new_doc("Landed Cost Voucher"); - lcv.company = frm.doc.company; - - let lcv_receipt = frappe.model.get_new_doc("Landed Cost Purchase Receipt"); - lcv_receipt.receipt_document_type = "Purchase Receipt"; - lcv_receipt.receipt_document = frm.doc.name; - lcv_receipt.supplier = frm.doc.supplier; - lcv_receipt.grand_total = frm.doc.grand_total; - lcv.purchase_receipts = [lcv_receipt]; - - frappe.set_route("Form", lcv.doctype, lcv.name); - }, - }; - frm.custom_make_buttons = { "Stock Entry": "Return", "Purchase Invoice": "Purchase Invoice", + "Landed Cost Voucher": "Landed Cost Voucher", }; frm.set_query("expense_account", "items", function () { @@ -114,9 +99,35 @@ frappe.ui.form.on("Purchase Receipt", { } } + if (frm.doc.docstatus === 1) { + frm.add_custom_button( + __("Landed Cost Voucher"), + () => { + frm.events.make_lcv(frm); + }, + __("Create") + ); + } + frm.events.add_custom_buttons(frm); }, + make_lcv(frm) { + frappe.call({ + method: "erpnext.stock.doctype.purchase_receipt.purchase_receipt.make_lcv", + args: { + doctype: frm.doc.doctype, + docname: frm.doc.name, + }, + callback: (r) => { + if (r.message) { + var doc = frappe.model.sync(r.message); + frappe.set_route("Form", doc[0].doctype, doc[0].name); + } + }, + }); + }, + add_custom_buttons: function (frm) { if (frm.doc.docstatus == 0) { frm.add_custom_button( diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json index 61a180caba4..643f9e7a82f 100755 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json @@ -889,7 +889,7 @@ "no_copy": 1, "oldfieldname": "status", "oldfieldtype": "Select", - "options": "\nDraft\nTo Bill\nCompleted\nReturn Issued\nCancelled\nClosed", + "options": "\nDraft\nPartly Billed\nTo Bill\nCompleted\nReturn Issued\nCancelled\nClosed", "print_hide": 1, "print_width": "150px", "read_only": 1, @@ -1273,7 +1273,7 @@ "idx": 261, "is_submittable": 1, "links": [], - "modified": "2024-07-04 14:50:10.538472", + "modified": "2024-11-13 16:55:14.129055", "modified_by": "Administrator", "module": "Stock", "name": "Purchase Receipt", diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py index 42b70a08222..48e161980db 100644 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py @@ -112,7 +112,9 @@ class PurchaseReceipt(BuyingController): shipping_address: DF.Link | None shipping_address_display: DF.SmallText | None shipping_rule: DF.Link | None - status: DF.Literal["", "Draft", "To Bill", "Completed", "Return Issued", "Cancelled", "Closed"] + status: DF.Literal[ + "", "Draft", "Partly Billed", "To Bill", "Completed", "Return Issued", "Cancelled", "Closed" + ] subcontracting_receipt: DF.Link | None supplied_items: DF.Table[PurchaseReceiptItemSupplied] supplier: DF.Link @@ -422,6 +424,14 @@ class PurchaseReceipt(BuyingController): self.delete_auto_created_batches() self.set_consumed_qty_in_subcontract_order() + def before_cancel(self): + super().before_cancel() + self.remove_amount_difference_with_purchase_invoice() + + def remove_amount_difference_with_purchase_invoice(self): + for item in self.items: + item.amount_difference_with_purchase_invoice = 0 + def get_gl_entries(self, warehouse_account=None, via_landed_cost_voucher=False): from erpnext.accounts.general_ledger import process_gl_map @@ -569,15 +579,15 @@ class PurchaseReceipt(BuyingController): item=item, ) - def make_rate_difference_entry(item): - if item.rate_difference_with_purchase_invoice and stock_asset_rbnb: + def make_amount_difference_entry(item): + if item.amount_difference_with_purchase_invoice and stock_asset_rbnb: account_currency = get_account_currency(stock_asset_rbnb) self.add_gl_entry( gl_entries=gl_entries, account=stock_asset_rbnb, cost_center=item.cost_center, debit=0.0, - credit=flt(item.rate_difference_with_purchase_invoice), + credit=flt(item.amount_difference_with_purchase_invoice), remarks=_("Adjustment based on Purchase Invoice rate"), against_account=stock_asset_account_name, account_currency=account_currency, @@ -610,7 +620,7 @@ class PurchaseReceipt(BuyingController): + flt(item.landed_cost_voucher_amount) + flt(item.rm_supp_cost) + flt(item.item_tax_amount) - + flt(item.rate_difference_with_purchase_invoice) + + flt(item.amount_difference_with_purchase_invoice) ) divisional_loss = flt( @@ -710,7 +720,7 @@ class PurchaseReceipt(BuyingController): make_item_asset_inward_gl_entry(d, stock_value_diff, stock_asset_account_name) outgoing_amount = make_stock_received_but_not_billed_entry(d) make_landed_cost_gl_entries(d) - make_rate_difference_entry(d) + make_amount_difference_entry(d) make_sub_contracting_gl_entries(d) make_divisional_loss_gl_entry(d, outgoing_amount) elif (d.warehouse and d.warehouse not in warehouse_with_no_account) or ( @@ -918,12 +928,17 @@ class PurchaseReceipt(BuyingController): ) def enable_recalculate_rate_in_sles(self): + rejected_warehouses = frappe.get_all( + "Purchase Receipt Item", filters={"parent": self.name}, pluck="rejected_warehouse" + ) + sle_table = frappe.qb.DocType("Stock Ledger Entry") ( frappe.qb.update(sle_table) .set(sle_table.recalculate_rate, 1) .where(sle_table.voucher_no == self.name) .where(sle_table.voucher_type == "Purchase Receipt") + .where(sle_table.warehouse.notin(rejected_warehouses)) ).run() @@ -1041,15 +1056,19 @@ def get_billed_amount_against_po(po_items): if not po_items: return {} + purchase_invoice = frappe.qb.DocType("Purchase Invoice") purchase_invoice_item = frappe.qb.DocType("Purchase Invoice Item") query = ( frappe.qb.from_(purchase_invoice_item) + .inner_join(purchase_invoice) + .on(purchase_invoice_item.parent == purchase_invoice.name) .select(fn.Sum(purchase_invoice_item.amount).as_("billed_amt"), purchase_invoice_item.po_detail) .where( (purchase_invoice_item.po_detail.isin(po_items)) - & (purchase_invoice_item.docstatus == 1) + & (purchase_invoice.docstatus == 1) & (purchase_invoice_item.pr_detail.isnull()) + & (purchase_invoice.update_stock == 0) ) .groupby(purchase_invoice_item.po_detail) ).run(as_dict=1) @@ -1059,28 +1078,45 @@ def get_billed_amount_against_po(po_items): def update_billing_percentage(pr_doc, update_modified=True, adjust_incoming_rate=False): # Update Billing % based on pending accepted qty + buying_settings = frappe.get_single("Buying Settings") + total_amount, total_billed_amount = 0, 0 item_wise_returned_qty = get_item_wise_returned_qty(pr_doc) + if adjust_incoming_rate: + item_wise_billed_qty = get_billed_qty_against_purchase_receipt(pr_doc) + for item in pr_doc.items: returned_qty = flt(item_wise_returned_qty.get(item.name)) returned_amount = flt(returned_qty) * flt(item.rate) pending_amount = flt(item.amount) - returned_amount - total_billable_amount = pending_amount if item.billed_amt <= pending_amount else item.billed_amt + if buying_settings.bill_for_rejected_quantity_in_purchase_invoice: + pending_amount = flt(item.amount) + + total_billable_amount = abs(flt(item.amount)) + if pending_amount > 0: + total_billable_amount = pending_amount if item.billed_amt <= pending_amount else item.billed_amt total_amount += total_billable_amount - total_billed_amount += flt(item.billed_amt) + total_billed_amount += abs(flt(item.billed_amt)) if pr_doc.get("is_return") and not total_amount and total_billed_amount: total_amount = total_billed_amount if adjust_incoming_rate: adjusted_amt = 0.0 - if item.billed_amt and item.amount: - adjusted_amt = flt(item.billed_amt) - flt(item.amount) - adjusted_amt = adjusted_amt * flt(pr_doc.conversion_rate) - item.db_set("rate_difference_with_purchase_invoice", adjusted_amt, update_modified=False) + if ( + item.billed_amt is not None + and item.amount is not None + and item_wise_billed_qty.get(item.name) + ): + adjusted_amt = ( + flt(item.billed_amt / item_wise_billed_qty.get(item.name)) - flt(item.rate) + ) * item.qty + + adjusted_amt = flt(adjusted_amt * flt(pr_doc.conversion_rate), item.precision("amount")) + item.db_set("amount_difference_with_purchase_invoice", adjusted_amt, update_modified=False) percent_billed = round(100 * (total_billed_amount / (total_amount or 1)), 6) pr_doc.db_set("per_billed", percent_billed) @@ -1093,6 +1129,22 @@ def update_billing_percentage(pr_doc, update_modified=True, adjust_incoming_rate adjust_incoming_rate_for_pr(pr_doc) +def get_billed_qty_against_purchase_receipt(pr_doc): + pr_names = [d.name for d in pr_doc.items] + table = frappe.qb.DocType("Purchase Invoice Item") + query = ( + frappe.qb.from_(table) + .select(table.pr_detail, fn.Sum(table.qty).as_("qty")) + .where((table.pr_detail.isin(pr_names)) & (table.docstatus == 1)) + .groupby(table.pr_detail) + ) + invoice_data = query.run(as_list=1) + + if not invoice_data: + return frappe._dict() + return frappe._dict(invoice_data) + + def adjust_incoming_rate_for_pr(doc): doc.update_valuation_rate(reset_outgoing_rate=False) @@ -1169,6 +1221,9 @@ def make_purchase_invoice(source_name, target_doc=None, args=None): return pending_qty, 0 returned_qty = flt(returned_qty_map.get(item_row.name, 0)) + if item_row.rejected_qty and returned_qty: + returned_qty -= item_row.rejected_qty + if returned_qty: if returned_qty >= pending_qty: pending_qty = 0 @@ -1214,7 +1269,7 @@ def make_purchase_invoice(source_name, target_doc=None, args=None): }, "Purchase Taxes and Charges": { "doctype": "Purchase Taxes and Charges", - "add_if_empty": True, + "reset_value": not (args and args.get("merge_taxes")), "ignore": args.get("merge_taxes") if args else 0, }, }, @@ -1343,26 +1398,25 @@ def get_item_account_wise_additional_cost(purchase_document): for item in landed_cost_voucher_doc.items: if item.receipt_document == purchase_document: for account in landed_cost_voucher_doc.taxes: + exchange_rate = account.exchange_rate or 1 item_account_wise_cost.setdefault((item.item_code, item.purchase_receipt_item), {}) item_account_wise_cost[(item.item_code, item.purchase_receipt_item)].setdefault( account.expense_account, {"amount": 0.0, "base_amount": 0.0} ) - if total_item_cost > 0: - item_account_wise_cost[(item.item_code, item.purchase_receipt_item)][ - account.expense_account - ]["amount"] += account.amount * item.get(based_on_field) / total_item_cost + item_row = item_account_wise_cost[(item.item_code, item.purchase_receipt_item)][ + account.expense_account + ] - item_account_wise_cost[(item.item_code, item.purchase_receipt_item)][ - account.expense_account - ]["base_amount"] += account.base_amount * item.get(based_on_field) / total_item_cost + if total_item_cost > 0: + item_row["amount"] += account.amount * item.get(based_on_field) / total_item_cost + + item_row["base_amount"] += ( + account.base_amount * item.get(based_on_field) / total_item_cost + ) else: - item_account_wise_cost[(item.item_code, item.purchase_receipt_item)][ - account.expense_account - ]["amount"] += item.applicable_charges - item_account_wise_cost[(item.item_code, item.purchase_receipt_item)][ - account.expense_account - ]["base_amount"] += item.applicable_charges + item_row["amount"] += item.applicable_charges / exchange_rate + item_row["base_amount"] += item.applicable_charges return item_account_wise_cost @@ -1370,3 +1424,26 @@ def get_item_account_wise_additional_cost(purchase_document): @erpnext.allow_regional def update_regional_gl_entries(gl_list, doc): return + + +@frappe.whitelist() +def make_lcv(doctype, docname): + landed_cost_voucher = frappe.new_doc("Landed Cost Voucher") + + details = frappe.db.get_value(doctype, docname, ["supplier", "company", "base_grand_total"], as_dict=1) + + landed_cost_voucher.company = details.company + + landed_cost_voucher.append( + "purchase_receipts", + { + "receipt_document_type": doctype, + "receipt_document": docname, + "grand_total": details.base_grand_total, + "supplier": details.supplier, + }, + ) + + landed_cost_voucher.get_items_from_purchase_receipts() + + return landed_cost_voucher.as_dict() diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt_dashboard.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt_dashboard.py index 71489fbb494..b1b0a962246 100644 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt_dashboard.py +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt_dashboard.py @@ -11,12 +11,12 @@ def get_data(): "Auto Repeat": "reference_document", "Purchase Receipt": "return_against", "Stock Reservation Entry": "from_voucher_no", + "Quality Inspection": "reference_name", }, "internal_links": { "Material Request": ["items", "material_request"], "Purchase Order": ["items", "purchase_order"], "Project": ["items", "project"], - "Quality Inspection": ["items", "quality_inspection"], }, "transactions": [ { diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js b/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js index fc4aabdaa18..e295127e6fc 100644 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js @@ -16,13 +16,13 @@ frappe.listview_settings["Purchase Receipt"] = { } else if (doc.status === "Closed") { return [__("Closed"), "green", "status,=,Closed"]; } else if (flt(doc.per_returned, 2) === 100) { - return [__("Return Issued"), "grey", "per_returned,=,100"]; + return [__("Return Issued"), "grey", "per_returned,=,100|docstatus,=,1"]; } else if (flt(doc.grand_total) !== 0 && flt(doc.per_billed, 2) == 0) { - return [__("To Bill"), "orange", "per_billed,<,100"]; + return [__("To Bill"), "orange", "per_billed,<,100|docstatus,=,1"]; } else if (flt(doc.per_billed, 2) > 0 && flt(doc.per_billed, 2) < 100) { - return [__("Partly Billed"), "yellow", "per_billed,<,100"]; + return [__("Partly Billed"), "yellow", "per_billed,<,100|docstatus,=,1"]; } else if (flt(doc.grand_total) === 0 || flt(doc.per_billed, 2) === 100) { - return [__("Completed"), "green", "per_billed,=,100"]; + return [__("Completed"), "green", "per_billed,=,100|docstatus,=,1"]; } }, diff --git a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py index 4cb53e753e7..8e8532a904b 100644 --- a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py @@ -3327,7 +3327,7 @@ class TestPurchaseReceipt(FrappeTestCase): bundle = dn.items[0].serial_and_batch_bundle valuation_rate = frappe.db.get_value("Serial and Batch Bundle", bundle, "avg_rate") - self.assertEqual(valuation_rate, 100) + self.assertEqual(valuation_rate, 100.0) doc = frappe.get_doc("Stock Settings") doc.do_not_use_batchwise_valuation = 1 @@ -3657,6 +3657,478 @@ class TestPurchaseReceipt(FrappeTestCase): self.assertEqual(data[0].get("bal_qty"), 50.0) + def test_same_stock_and_transaction_uom_conversion_factor(self): + item_code = "Test Item for Same Stock and Transaction UOM Conversion Factor" + create_item(item_code) + + pr = make_purchase_receipt( + item_code=item_code, + qty=10, + rate=100, + stock_uom="Nos", + transaction_uom="Nos", + conversion_factor=10, + ) + + self.assertEqual(pr.items[0].conversion_factor, 1.0) + + def test_purchase_receipt_return_valuation_without_use_serial_batch_field(self): + from erpnext.stock.doctype.purchase_receipt.purchase_receipt import make_purchase_return + + batch_item = make_item( + "_Test Purchase Receipt Return Valuation Batch Item", + properties={ + "has_batch_no": 1, + "create_new_batch": 1, + "is_stock_item": 1, + "batch_number_series": "BRTN-TPRBI-.#####", + }, + ).name + + serial_item = make_item( + "_Test Purchase Receipt Return Valuation Serial Item", + properties={"has_serial_no": 1, "is_stock_item": 1, "serial_no_series": "SRTN-TPRSI-.#####"}, + ).name + + rej_warehouse = create_warehouse("_Test Purchase Warehouse For Rejected Qty") + + pr = make_purchase_receipt( + item_code=batch_item, + received_qty=10, + qty=8, + rejected_qty=2, + rejected_warehouse=rej_warehouse, + rate=300, + do_not_submit=1, + use_serial_batch_fields=0, + ) + + pr.append( + "items", + { + "item_code": serial_item, + "qty": 2, + "rate": 100, + "base_rate": 100, + "item_name": serial_item, + "uom": "Nos", + "stock_uom": "Nos", + "conversion_factor": 1, + "rejected_qty": 1, + "warehouse": pr.items[0].warehouse, + "use_serial_batch_fields": 0, + "rejected_warehouse": rej_warehouse, + }, + ) + + pr.save() + pr.submit() + pr.reload() + + batch_no = get_batch_from_bundle(pr.items[0].serial_and_batch_bundle) + rejected_batch_no = get_batch_from_bundle(pr.items[0].rejected_serial_and_batch_bundle) + + self.assertEqual(batch_no, rejected_batch_no) + + return_entry = make_purchase_return(pr.name) + + return_entry.save() + return_entry.submit() + return_entry.reload() + + for row in return_entry.items: + if row.item_code == batch_item: + bundle_data = frappe.get_all( + "Serial and Batch Entry", + filters={"parent": row.serial_and_batch_bundle}, + pluck="incoming_rate", + ) + + for incoming_rate in bundle_data: + self.assertEqual(incoming_rate, 300.00) + else: + bundle_data = frappe.get_all( + "Serial and Batch Entry", + filters={"parent": row.serial_and_batch_bundle}, + pluck="incoming_rate", + ) + + for incoming_rate in bundle_data: + self.assertEqual(incoming_rate, 100.00) + + for row in return_entry.items: + if row.item_code == batch_item: + bundle_data = frappe.get_all( + "Serial and Batch Entry", + filters={"parent": row.rejected_serial_and_batch_bundle}, + pluck="incoming_rate", + ) + + for incoming_rate in bundle_data: + self.assertEqual(incoming_rate, 0) + else: + bundle_data = frappe.get_all( + "Serial and Batch Entry", + filters={"parent": row.rejected_serial_and_batch_bundle}, + pluck="incoming_rate", + ) + + for incoming_rate in bundle_data: + self.assertEqual(incoming_rate, 0) + + def test_purchase_receipt_return_valuation_with_use_serial_batch_field(self): + from erpnext.stock.doctype.purchase_receipt.purchase_receipt import make_purchase_return + + batch_item = make_item( + "_Test Purchase Receipt Return Valuation With Batch Item", + properties={"has_batch_no": 1, "create_new_batch": 1, "is_stock_item": 1}, + ).name + + serial_item = make_item( + "_Test Purchase Receipt Return Valuation With Serial Item", + properties={"has_serial_no": 1, "is_stock_item": 1}, + ).name + + rej_warehouse = create_warehouse("_Test Purchase Warehouse For Rejected Qty") + + batch_no = "BATCH-RTN-BNU-TPRBI-0001" + serial_nos = ["SNU-RTN-TPRSI-0001", "SNU-RTN-TPRSI-0002", "SNU-RTN-TPRSI-0003"] + + if not frappe.db.exists("Batch", batch_no): + frappe.get_doc( + { + "doctype": "Batch", + "batch_id": batch_no, + "item": batch_item, + } + ).insert() + + for serial_no in serial_nos: + if not frappe.db.exists("Serial No", serial_no): + frappe.get_doc( + { + "doctype": "Serial No", + "item_code": serial_item, + "serial_no": serial_no, + } + ).insert() + + pr = make_purchase_receipt( + item_code=batch_item, + received_qty=10, + qty=8, + rejected_qty=2, + rejected_warehouse=rej_warehouse, + batch_no=batch_no, + use_serial_batch_fields=1, + rate=300, + do_not_submit=1, + ) + + pr.append( + "items", + { + "item_code": serial_item, + "qty": 2, + "rate": 100, + "base_rate": 100, + "item_name": serial_item, + "uom": "Nos", + "stock_uom": "Nos", + "conversion_factor": 1, + "rejected_qty": 1, + "warehouse": pr.items[0].warehouse, + "use_serial_batch_fields": 1, + "rejected_warehouse": rej_warehouse, + "serial_no": "\n".join(serial_nos[:2]), + "rejected_serial_no": serial_nos[2], + }, + ) + + pr.save() + pr.submit() + pr.reload() + + batch_no = get_batch_from_bundle(pr.items[0].serial_and_batch_bundle) + rejected_batch_no = get_batch_from_bundle(pr.items[0].rejected_serial_and_batch_bundle) + + self.assertEqual(batch_no, rejected_batch_no) + + return_entry = make_purchase_return(pr.name) + + return_entry.save() + return_entry.submit() + return_entry.reload() + + for row in return_entry.items: + if row.item_code == batch_item: + bundle_data = frappe.get_all( + "Serial and Batch Entry", + filters={"parent": row.serial_and_batch_bundle}, + pluck="incoming_rate", + ) + + for incoming_rate in bundle_data: + self.assertEqual(incoming_rate, 300.00) + else: + bundle_data = frappe.get_all( + "Serial and Batch Entry", + filters={"parent": row.serial_and_batch_bundle}, + pluck="incoming_rate", + ) + + for incoming_rate in bundle_data: + self.assertEqual(incoming_rate, 100.00) + + for row in return_entry.items: + if row.item_code == batch_item: + bundle_data = frappe.get_all( + "Serial and Batch Entry", + filters={"parent": row.rejected_serial_and_batch_bundle}, + pluck="incoming_rate", + ) + + for incoming_rate in bundle_data: + self.assertEqual(incoming_rate, 0) + else: + bundle_data = frappe.get_all( + "Serial and Batch Entry", + filters={"parent": row.rejected_serial_and_batch_bundle}, + pluck="incoming_rate", + ) + + for incoming_rate in bundle_data: + self.assertEqual(incoming_rate, 0) + + def test_purchase_return_partial_debit_note(self): + pr = make_purchase_receipt( + company="_Test Company with perpetual inventory", + warehouse="Stores - TCP1", + supplier_warehouse="Work In Progress - TCP1", + ) + + return_pr = make_purchase_receipt( + company="_Test Company with perpetual inventory", + warehouse="Stores - TCP1", + supplier_warehouse="Work In Progress - TCP1", + is_return=1, + return_against=pr.name, + qty=-2, + do_not_submit=1, + ) + return_pr.items[0].purchase_receipt_item = pr.items[0].name + return_pr.submit() + + # because new_doc isn't considering is_return portion of status_updater + returned = frappe.get_doc("Purchase Receipt", return_pr.name) + returned.update_prevdoc_status() + pr.load_from_db() + + # Check if Original PR updated + self.assertEqual(pr.items[0].returned_qty, 2) + self.assertEqual(pr.per_returned, 40) + + # Create first partial debit_note + pi_1 = make_purchase_invoice(return_pr.name) + pi_1.items[0].qty = -1 + pi_1.submit() + + # Check if the first partial debit billing percentage got updated + return_pr.reload() + self.assertEqual(return_pr.per_billed, 50) + self.assertEqual(return_pr.status, "Partly Billed") + + # Create second partial debit_note to complete the debit note + pi_2 = make_purchase_invoice(return_pr.name) + pi_2.items[0].qty = -1 + pi_2.submit() + + # Check if the second partial debit note billing percentage got updated + return_pr.reload() + self.assertEqual(return_pr.per_billed, 100) + self.assertEqual(return_pr.status, "Completed") + + def test_do_not_allow_to_inward_same_serial_no_multiple_times(self): + from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry + + frappe.db.set_single_value("Stock Settings", "allow_existing_serial_no", 0) + + item_code = make_item( + "Test Do Not Allow INWD Item 123", {"has_serial_no": 1, "serial_no_series": "SN-TDAISN-.#####"} + ).name + + pr = make_purchase_receipt(item_code=item_code, qty=1, rate=100, use_serial_batch_fields=1) + serial_no = get_serial_nos_from_bundle(pr.items[0].serial_and_batch_bundle)[0] + + status = frappe.db.get_value("Serial No", serial_no, "status") + self.assertTrue(status == "Active") + + make_stock_entry( + item_code=item_code, + source=pr.items[0].warehouse, + qty=1, + serial_no=serial_no, + use_serial_batch_fields=1, + ) + + status = frappe.db.get_value("Serial No", serial_no, "status") + self.assertFalse(status == "Active") + + pr = make_purchase_receipt( + item_code=item_code, qty=1, rate=100, use_serial_batch_fields=1, do_not_submit=1 + ) + pr.items[0].serial_no = serial_no + pr.save() + + self.assertRaises(frappe.exceptions.ValidationError, pr.submit) + + frappe.db.set_single_value("Stock Settings", "allow_existing_serial_no", 1) + + def test_seral_no_return_validation(self): + from erpnext.stock.doctype.purchase_receipt.purchase_receipt import ( + make_purchase_return, + ) + + frappe.flags.through_repost_item_valuation = False + + sn_item_code = make_item( + "Test Serial No for Validation", {"has_serial_no": 1, "serial_no_series": "SN-TSNFVAL-.#####"} + ).name + + pr1 = make_purchase_receipt(item_code=sn_item_code, qty=5, rate=100, use_serial_batch_fields=1) + pr1_serial_nos = get_serial_nos_from_bundle(pr1.items[0].serial_and_batch_bundle) + + serial_no_pr = make_purchase_receipt( + item_code=sn_item_code, qty=5, rate=100, use_serial_batch_fields=1 + ) + serial_no_pr_serial_nos = get_serial_nos_from_bundle(serial_no_pr.items[0].serial_and_batch_bundle) + + sn_return = make_purchase_return(serial_no_pr.name) + sn_return.items[0].qty = -1 + sn_return.items[0].received_qty = -1 + sn_return.items[0].serial_no = pr1_serial_nos[0] + sn_return.save() + self.assertRaises(frappe.ValidationError, sn_return.submit) + + sn_return = make_purchase_return(serial_no_pr.name) + sn_return.items[0].qty = -1 + sn_return.items[0].received_qty = -1 + sn_return.items[0].serial_no = serial_no_pr_serial_nos[0] + sn_return.save() + sn_return.submit() + + def test_batch_no_return_validation(self): + from erpnext.stock.doctype.purchase_receipt.purchase_receipt import ( + make_purchase_return, + ) + + frappe.flags.through_repost_item_valuation = False + + batch_item_code = make_item( + "Test Batch No for Validation", + {"has_batch_no": 1, "batch_number_series": "BT-TSNFVAL-.#####", "create_new_batch": 1}, + ).name + + pr1 = make_purchase_receipt(item_code=batch_item_code, qty=5, rate=100, use_serial_batch_fields=1) + batch_no = get_batch_from_bundle(pr1.items[0].serial_and_batch_bundle) + + batch_no_pr = make_purchase_receipt( + item_code=batch_item_code, qty=5, rate=100, use_serial_batch_fields=1 + ) + original_batch_no = get_batch_from_bundle(batch_no_pr.items[0].serial_and_batch_bundle) + + batch_return = make_purchase_return(batch_no_pr.name) + batch_return.items[0].qty = -1 + batch_return.items[0].received_qty = -1 + batch_return.items[0].batch_no = batch_no + batch_return.save() + self.assertRaises(frappe.ValidationError, batch_return.submit) + + batch_return = make_purchase_return(batch_no_pr.name) + batch_return.items[0].qty = -1 + batch_return.items[0].received_qty = -1 + batch_return.items[0].batch_no = original_batch_no + batch_return.save() + batch_return.submit() + + def test_pr_status_based_on_invoices_with_update_stock(self): + from erpnext.buying.doctype.purchase_order.purchase_order import ( + make_purchase_invoice as _make_purchase_invoice, + ) + from erpnext.buying.doctype.purchase_order.purchase_order import ( + make_purchase_receipt as _make_purchase_receipt, + ) + from erpnext.buying.doctype.purchase_order.test_purchase_order import ( + create_pr_against_po, + create_purchase_order, + ) + + item_code = "Test Item for PR Status Based on Invoices" + create_item(item_code) + + po = create_purchase_order(item_code=item_code, qty=10) + pi = _make_purchase_invoice(po.name) + pi.update_stock = 1 + pi.items[0].qty = 5 + pi.submit() + + po.reload() + self.assertEqual(po.per_billed, 50) + + pr = _make_purchase_receipt(po.name) + self.assertEqual(pr.items[0].qty, 5) + pr.submit() + pr.reload() + self.assertEqual(pr.status, "To Bill") + + def test_recreate_stock_ledgers(self): + item_code = "Test Item for Recreate Stock Ledgers" + create_item(item_code) + + pr = make_purchase_receipt(item_code=item_code, qty=10, rate=100) + pr.submit() + + sles = frappe.get_all( + "Stock Ledger Entry", + filters={"voucher_type": pr.doctype, "voucher_no": pr.name}, + pluck="name", + ) + + self.assertTrue(sles) + + for row in sles: + doc = frappe.get_doc("Stock Ledger Entry", row) + doc.delete() + + sles = frappe.get_all( + "Stock Ledger Entry", + filters={"voucher_type": pr.doctype, "voucher_no": pr.name}, + pluck="name", + ) + + self.assertFalse(sles) + + frappe.get_doc( + { + "doctype": "Repost Item Valuation", + "based_on": "Transaction", + "voucher_type": pr.doctype, + "voucher_no": pr.name, + "posting_date": pr.posting_date, + "posting_time": pr.posting_time, + "company": pr.company, + "recreate_stock_ledgers": 1, + } + ).submit() + + sles = frappe.get_all( + "Stock Ledger Entry", + filters={"voucher_type": pr.doctype, "voucher_no": pr.name}, + pluck="name", + ) + + self.assertTrue(sles) + def prepare_data_for_internal_transfer(): from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_internal_supplier 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 f3e3adee260..5f8a9b58e91 100644 --- a/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json +++ b/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json @@ -72,7 +72,7 @@ "item_tax_amount", "rm_supp_cost", "landed_cost_voucher_amount", - "rate_difference_with_purchase_invoice", + "amount_difference_with_purchase_invoice", "billed_amt", "warehouse_and_reference", "warehouse", @@ -999,14 +999,6 @@ "label": "Has Item Scanned", "read_only": 1 }, - { - "fieldname": "rate_difference_with_purchase_invoice", - "fieldtype": "Currency", - "label": "Rate Difference with Purchase Invoice", - "no_copy": 1, - "print_hide": 1, - "read_only": 1 - }, { "depends_on": "eval:doc.use_serial_batch_fields === 0 || doc.docstatus === 1", "fieldname": "serial_and_batch_bundle", @@ -1142,12 +1134,20 @@ "fieldtype": "Currency", "label": "Distributed Discount Amount", "options": "currency" + }, + { + "fieldname": "amount_difference_with_purchase_invoice", + "fieldtype": "Currency", + "label": "Amount Difference with Purchase Invoice", + "no_copy": 1, + "print_hide": 1, + "read_only": 1 } ], "idx": 1, "istable": 1, "links": [], - "modified": "2024-07-19 12:14:21.521466", + "modified": "2025-03-12 17:10:43.780622", "modified_by": "Administrator", "module": "Stock", "name": "Purchase Receipt Item", @@ -1158,4 +1158,4 @@ "sort_field": "modified", "sort_order": "DESC", "states": [] -} +} \ No newline at end of file diff --git a/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.py b/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.py index 6581fc00d37..9f65ae56a83 100644 --- a/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.py +++ b/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.py @@ -16,6 +16,7 @@ class PurchaseReceiptItem(Document): allow_zero_valuation_rate: DF.Check amount: DF.Currency + amount_difference_with_purchase_invoice: DF.Currency apply_tds: DF.Check asset_category: DF.Link | None asset_location: DF.Link | None @@ -77,7 +78,6 @@ class PurchaseReceiptItem(Document): qty: DF.Float quality_inspection: DF.Link | None rate: DF.Currency - rate_difference_with_purchase_invoice: DF.Currency rate_with_margin: DF.Currency received_qty: DF.Float received_stock_qty: DF.Float diff --git a/erpnext/stock/doctype/quality_inspection/quality_inspection.js b/erpnext/stock/doctype/quality_inspection/quality_inspection.js index fc487514a2c..d9216fbb9a1 100644 --- a/erpnext/stock/doctype/quality_inspection/quality_inspection.js +++ b/erpnext/stock/doctype/quality_inspection/quality_inspection.js @@ -4,12 +4,26 @@ cur_frm.cscript.refresh = cur_frm.cscript.inspection_type; frappe.ui.form.on("Quality Inspection", { + onload(frm) { + frm.trigger("set_default_company"); + }, + + set_default_company(frm) { + if (!frm.doc.company) { + frm.set_value("company", frappe.defaults.get_default("company")); + } + }, + setup: function (frm) { - frm.set_query("reference_name", function () { + frm.set_query("reference_name", function (doc) { + let filters = { docstatus: ["!=", 2] }; + + if (doc.company) { + filters["company"] = doc.company; + } + return { - filters: { - docstatus: ["!=", 2], - }, + filters: filters, }; }); @@ -60,7 +74,7 @@ frappe.ui.form.on("Quality Inspection", { refresh: function (frm) { // Ignore cancellation of reference doctype on cancel all. - frm.ignore_doctypes_on_cancel_all = [frm.doc.reference_type]; + frm.ignore_doctypes_on_cancel_all = [frm.doc.reference_type, "Serial and Batch Bundle"]; }, item_code: function (frm) { diff --git a/erpnext/stock/doctype/quality_inspection/quality_inspection.json b/erpnext/stock/doctype/quality_inspection/quality_inspection.json index 914a9f3c21f..9b440eabcfc 100644 --- a/erpnext/stock/doctype/quality_inspection/quality_inspection.json +++ b/erpnext/stock/doctype/quality_inspection/quality_inspection.json @@ -8,9 +8,10 @@ "engine": "InnoDB", "field_order": [ "naming_series", + "company", "report_date", "status", - "manual_inspection", + "child_row_reference", "column_break_4", "inspection_type", "reference_type", @@ -26,13 +27,16 @@ "bom_no", "specification_details", "quality_inspection_template", + "manual_inspection", "readings", "section_break_14", "inspected_by", "verified_by", "column_break_17", "remarks", - "amended_from" + "amended_from", + "print_settings_section", + "letter_head" ], "fields": [ { @@ -238,6 +242,35 @@ "fieldname": "manual_inspection", "fieldtype": "Check", "label": "Manual Inspection" + }, + { + "fieldname": "child_row_reference", + "fieldtype": "Data", + "hidden": 1, + "label": "Child Row Reference", + "no_copy": 1, + "print_hide": 1, + "read_only": 1 + }, + { + "fieldname": "company", + "fieldtype": "Link", + "label": "Company", + "options": "Company" + }, + { + "fieldname": "print_settings_section", + "fieldtype": "Section Break", + "label": "Print Settings" + }, + { + "allow_on_submit": 1, + "fetch_from": "company.default_letter_head", + "fetch_if_empty": 1, + "fieldname": "letter_head", + "fieldtype": "Link", + "label": "Letter Head", + "options": "Letter Head" } ], "icon": "fa fa-search", @@ -245,7 +278,7 @@ "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2023-08-23 11:56:50.282878", + "modified": "2025-02-17 13:20:17.583094", "modified_by": "Administrator", "module": "Stock", "name": "Quality Inspection", @@ -272,4 +305,4 @@ "sort_field": "modified", "sort_order": "ASC", "states": [] -} \ No newline at end of file +} diff --git a/erpnext/stock/doctype/quality_inspection/quality_inspection.py b/erpnext/stock/doctype/quality_inspection/quality_inspection.py index 60f048673fb..8aed2277de3 100644 --- a/erpnext/stock/doctype/quality_inspection/quality_inspection.py +++ b/erpnext/stock/doctype/quality_inspection/quality_inspection.py @@ -6,7 +6,7 @@ import frappe from frappe import _ from frappe.model.document import Document from frappe.model.mapper import get_mapped_doc -from frappe.utils import cint, cstr, flt, get_number_format_info +from frappe.utils import cint, cstr, flt, get_link_to_form, get_number_format_info from erpnext.stock.doctype.quality_inspection_template.quality_inspection_template import ( get_template_details, @@ -29,12 +29,15 @@ class QualityInspection(Document): amended_from: DF.Link | None batch_no: DF.Link | None bom_no: DF.Link | None + child_row_reference: DF.Data | None + company: DF.Link | None description: DF.SmallText | None inspected_by: DF.Link inspection_type: DF.Literal["", "Incoming", "Outgoing", "In Process"] item_code: DF.Link item_name: DF.Data | None item_serial_no: DF.Link | None + letter_head: DF.Link | None manual_inspection: DF.Check naming_series: DF.Literal["MAT-QA-.YYYY.-"] quality_inspection_template: DF.Link | None @@ -73,6 +76,97 @@ class QualityInspection(Document): if self.readings: self.inspect_and_set_status() + self.validate_inspection_required() + self.set_child_row_reference() + self.set_company() + + def set_company(self): + if self.reference_type and self.reference_name: + company = frappe.get_cached_value(self.reference_type, self.reference_name, "company") + if company != self.company: + self.company = company + + def set_child_row_reference(self): + if self.child_row_reference: + return + + if not (self.reference_type and self.reference_name): + return + + doctype = self.reference_type + " Item" + if self.reference_type == "Stock Entry": + doctype = "Stock Entry Detail" + + child_row_references = frappe.get_all( + doctype, + filters={"parent": self.reference_name, "item_code": self.item_code}, + pluck="name", + ) + + if not child_row_references: + return + + if len(child_row_references) == 1: + self.child_row_reference = child_row_references[0] + else: + self.distribute_child_row_reference(child_row_references) + + def distribute_child_row_reference(self, child_row_references): + quality_inspections = frappe.get_all( + "Quality Inspection", + filters={ + "reference_name": self.reference_name, + "item_code": self.item_code, + "docstatus": ("<", 2), + }, + fields=["name", "child_row_reference", "docstatus"], + order_by="child_row_reference desc", + ) + + for row in quality_inspections: + if not child_row_references: + break + + if row.child_row_reference and row.child_row_reference in child_row_references: + child_row_references.remove(row.child_row_reference) + continue + + if row.docstatus == 1: + continue + + if row.name == self.name: + self.child_row_reference = child_row_references[0] + else: + frappe.db.set_value( + "Quality Inspection", row.name, "child_row_reference", child_row_references[0] + ) + + child_row_references.remove(child_row_references[0]) + + def validate_inspection_required(self): + if frappe.db.get_single_value( + "Stock Settings", "allow_to_make_quality_inspection_after_purchase_or_delivery" + ): + return + + if self.reference_type in ["Purchase Receipt", "Purchase Invoice"] and not frappe.get_cached_value( + "Item", self.item_code, "inspection_required_before_purchase" + ): + frappe.throw( + _( + "'Inspection Required before Purchase' has disabled for the item {0}, no need to create the QI" + ).format(get_link_to_form("Item", self.item_code)) + ) + + if self.reference_type in ["Delivery Note", "Sales Invoice"] and not frappe.get_cached_value( + "Item", self.item_code, "inspection_required_before_delivery" + ): + frappe.throw( + _( + "'Inspection Required before Delivery' has disabled for the item {0}, no need to create the QI" + ).format(get_link_to_form("Item", self.item_code)) + ) + def before_submit(self): self.validate_readings_status_mandatory() @@ -92,6 +186,9 @@ class QualityInspection(Document): child = self.append("readings", {}) child.update(d) child.status = "Accepted" + child.parameter_group = frappe.get_value( + "Quality Inspection Parameter", d.specification, "parameter_group" + ) @frappe.whitelist() def get_quality_inspection_template(self): @@ -105,22 +202,35 @@ class QualityInspection(Document): self.quality_inspection_template = template self.get_item_specification_details() + def on_update(self): + if ( + frappe.db.get_single_value("Stock Settings", "action_if_quality_inspection_is_not_submitted") + == "Warn" + ): + self.update_qc_reference() + def on_submit(self): - self.update_qc_reference() + if ( + frappe.db.get_single_value("Stock Settings", "action_if_quality_inspection_is_not_submitted") + == "Stop" + ): + self.update_qc_reference() def on_cancel(self): + self.ignore_linked_doctypes = "Serial and Batch Bundle" + self.update_qc_reference() def on_trash(self): - self.update_qc_reference() + self.update_qc_reference(remove_reference=True) def validate_readings_status_mandatory(self): for reading in self.readings: if not reading.status: frappe.throw(_("Row #{0}: Status is mandatory").format(reading.idx)) - def update_qc_reference(self): - quality_inspection = self.name if self.docstatus == 1 else "" + def update_qc_reference(self, remove_reference=False): + quality_inspection = self.name if self.docstatus < 2 and not remove_reference else "" if self.reference_type == "Job Card": if self.reference_name: @@ -134,35 +244,38 @@ class QualityInspection(Document): ) else: - args = [quality_inspection, self.modified, self.reference_name, self.item_code] doctype = self.reference_type + " Item" if self.reference_type == "Stock Entry": doctype = "Stock Entry Detail" - if self.reference_type and self.reference_name: - conditions = "" - if self.batch_no and self.docstatus == 1: - conditions += " and t1.batch_no = %s" - args.append(self.batch_no) + if doctype and self.reference_name: + child_doc = frappe.qb.DocType(doctype) + + query = ( + frappe.qb.update(child_doc) + .set(child_doc.quality_inspection, quality_inspection) + .where( + (child_doc.parent == self.reference_name) & (child_doc.item_code == self.item_code) + ) + ) + + if self.batch_no and self.docstatus < 2: + query = query.where(child_doc.batch_no == self.batch_no) if self.docstatus == 2: # if cancel, then remove qi link wherever same name - conditions += " and t1.quality_inspection = %s" - args.append(self.name) + query = query.where(child_doc.quality_inspection == self.name) - frappe.db.sql( - f""" - UPDATE - `tab{doctype}` t1, `tab{self.reference_type}` t2 - SET - t1.quality_inspection = %s, t2.modified = %s - WHERE - t1.parent = %s - and t1.item_code = %s - and t1.parent = t2.name - {conditions} - """, - args, + if self.child_row_reference: + query = query.where(child_doc.name == self.child_row_reference) + + query.run() + + frappe.db.set_value( + self.reference_type, + self.reference_name, + "modified", + self.modified, ) def inspect_and_set_status(self): @@ -243,6 +356,7 @@ class QualityInspection(Document): for i in range(1, 11): field = "reading_" + str(i) if reading.get(field) is None: + data[field] = 0.0 continue data[field] = parse_float(reading.get(field)) diff --git a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.json b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.json index 67e97964e18..bd70072e4bd 100644 --- a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.json +++ b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.json @@ -19,6 +19,7 @@ "allow_negative_stock", "via_landed_cost_voucher", "allow_zero_rate", + "recreate_stock_ledgers", "amended_from", "error_section", "error_log", @@ -220,12 +221,20 @@ "label": "Reposting Data File", "no_copy": 1, "read_only": 1 + }, + { + "default": "0", + "depends_on": "eval:doc.based_on == \"Transaction\"", + "fieldname": "recreate_stock_ledgers", + "fieldtype": "Check", + "label": "Recreate Stock Ledgers" } ], + "grid_page_length": 50, "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2024-06-27 16:55:23.150146", + "modified": "2025-03-31 12:38:20.566196", "modified_by": "Administrator", "module": "Stock", "name": "Repost Item Valuation", @@ -274,7 +283,7 @@ "write": 1 } ], - "sort_field": "modified", + "sort_field": "creation", "sort_order": "DESC", "states": [] } 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 c20eadeb78d..ecbb10b6cb5 100644 --- a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py +++ b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py @@ -47,6 +47,7 @@ class RepostItemValuation(Document): items_to_be_repost: DF.Code | None posting_date: DF.Date posting_time: DF.Time | None + recreate_stock_ledgers: DF.Check reposting_data_file: DF.Attach | None status: DF.Literal["Queued", "In Progress", "Completed", "Skipped", "Failed"] total_reposting_count: DF.Int @@ -74,6 +75,7 @@ class RepostItemValuation(Document): self.reset_field_values() self.set_company() self.validate_accounts_freeze() + self.reset_recreate_stock_ledgers() def validate_period_closing_voucher(self): # Period Closing Voucher @@ -105,6 +107,10 @@ class RepostItemValuation(Document): msg = f"Due to closing stock balance {name}, you cannot repost item valuation before {to_date}" frappe.throw(_(msg)) + def reset_recreate_stock_ledgers(self): + if self.recreate_stock_ledgers and self.based_on != "Transaction": + self.recreate_stock_ledgers = 0 + def get_closing_stock_balance(self): filters = { "company": self.company, @@ -125,7 +131,7 @@ class RepostItemValuation(Document): query = ( frappe.qb.from_(table) - .select(Max(table.posting_date)) + .select(Max(table.period_end_date)) .where((table.company == company) & (table.docstatus == 1)) ).run() @@ -250,6 +256,16 @@ class RepostItemValuation(Document): filters, ) + def recreate_stock_ledger_entries(self): + """Recreate Stock Ledger Entries for the transaction.""" + if self.based_on == "Transaction" and self.recreate_stock_ledgers: + doc = frappe.get_doc(self.voucher_type, self.voucher_no) + doc.db_set("docstatus", 2) + doc.update_stock_ledger(allow_negative_stock=True) + + doc.db_set("docstatus", 1) + doc.update_stock_ledger(allow_negative_stock=True) + def on_doctype_update(): frappe.db.add_index("Repost Item Valuation", ["warehouse", "item_code"], "item_warehouse") @@ -268,6 +284,9 @@ def repost(doc): if not frappe.flags.in_test: frappe.db.commit() + if doc.recreate_stock_ledgers: + doc.recreate_stock_ledger_entries() + repost_sl_entries(doc) repost_gl_entries(doc) @@ -291,7 +310,7 @@ def repost(doc): status = "Failed" # If failed because of timeout, set status to In Progress - if traceback and "timeout" in traceback.lower(): + if traceback and ("timeout" in traceback.lower() or "Deadlock found" in traceback): status = "In Progress" if traceback: @@ -306,13 +325,14 @@ def repost(doc): }, ) - outgoing_email_account = frappe.get_cached_value( - "Email Account", {"default_outgoing": 1, "enable_outgoing": 1}, "name" - ) + if status == "Failed": + outgoing_email_account = frappe.get_cached_value( + "Email Account", {"default_outgoing": 1, "enable_outgoing": 1}, "name" + ) - if outgoing_email_account and not isinstance(e, RecoverableErrors): - notify_error_to_stock_managers(doc, message) - doc.set_status("Failed") + if outgoing_email_account and not isinstance(e, RecoverableErrors): + notify_error_to_stock_managers(doc, message) + doc.set_status("Failed") finally: if not frappe.flags.in_test: frappe.db.commit() diff --git a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js index 21f0784df75..404abbd21bc 100644 --- a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js +++ b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.js @@ -6,6 +6,10 @@ frappe.ui.form.on("Serial and Batch Bundle", { frm.trigger("set_queries"); }, + before_submit(frm) { + frappe.throw(__("The user cannot submit the Serial and Batch Bundle manually")); + }, + refresh(frm) { frm.trigger("toggle_fields"); frm.trigger("prepare_serial_batch_prompt"); @@ -130,6 +134,13 @@ frappe.ui.form.on("Serial and Batch Bundle", { }, toggle_fields(frm) { + let show_naming_series_field = + frappe.user_defaults.set_serial_and_batch_bundle_naming_based_on_naming_series; + frm.toggle_display("naming_series", cint(show_naming_series_field)); + frm.toggle_reqd("naming_series", cint(show_naming_series_field)); + + frm.toggle_display("naming_series", frm.doc.__islocal ? true : false); + if (frm.doc.has_serial_no) { frm.doc.entries.forEach((row) => { if (Math.abs(row.qty) !== 1) { diff --git a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.json b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.json index 59ef43e31a8..02ecc11f44a 100644 --- a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.json +++ b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.json @@ -1,6 +1,6 @@ { "actions": [], - "autoname": "naming_series:", + "autoname": "hash", "creation": "2023-08-11 17:22:12.907518", "doctype": "DocType", "editable_grid": 1, @@ -152,6 +152,7 @@ "fieldtype": "Column Break" }, { + "allow_on_submit": 1, "fieldname": "avg_rate", "fieldtype": "Float", "label": "Avg Rate", @@ -159,6 +160,7 @@ "read_only": 1 }, { + "allow_on_submit": 1, "fieldname": "total_amount", "fieldtype": "Float", "label": "Total Amount", @@ -166,6 +168,7 @@ "read_only": 1 }, { + "allow_on_submit": 1, "fieldname": "total_qty", "fieldtype": "Float", "label": "Total Qty", @@ -195,12 +198,6 @@ "reqd": 1, "search_index": 1 }, - { - "fieldname": "naming_series", - "fieldtype": "Select", - "label": "Naming Series", - "options": "SABB-.########" - }, { "default": "0", "depends_on": "eval:doc.voucher_type == \"Purchase Receipt\"", @@ -246,16 +243,24 @@ "fieldtype": "Data", "label": "Returned Against", "read_only": 1 + }, + { + "default": "SABB-.########", + "fieldname": "naming_series", + "fieldtype": "Select", + "label": "Naming Series", + "options": "\nSABB-.########", + "set_only_once": 1 } ], "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2024-03-15 15:22:24.003486", + "modified": "2025-02-17 18:22:36.056205", "modified_by": "Administrator", "module": "Stock", "name": "Serial and Batch Bundle", - "naming_rule": "By \"Naming Series\" field", + "naming_rule": "Random", "owner": "Administrator", "permissions": [ { @@ -389,4 +394,4 @@ "sort_order": "DESC", "states": [], "title_field": "item_code" -} \ No newline at end of file +} 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 ef4d475dca4..392b02e6cdc 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 @@ -8,6 +8,7 @@ from collections import Counter, defaultdict import frappe from frappe import _, _dict, bold from frappe.model.document import Document +from frappe.model.naming import make_autoname from frappe.query_builder.functions import CombineDatetime, Sum from frappe.utils import ( add_days, @@ -55,9 +56,7 @@ class SerialandBatchBundle(Document): if TYPE_CHECKING: from frappe.types import DF - from erpnext.stock.doctype.serial_and_batch_entry.serial_and_batch_entry import ( - SerialandBatchEntry, - ) + from erpnext.stock.doctype.serial_and_batch_entry.serial_and_batch_entry import SerialandBatchEntry amended_from: DF.Link | None avg_rate: DF.Float @@ -70,7 +69,7 @@ class SerialandBatchBundle(Document): item_code: DF.Link item_group: DF.Link | None item_name: DF.Data | None - naming_series: DF.Literal["SABB-.########"] + naming_series: DF.Literal["", "SABB-.########"] posting_date: DF.Date | None posting_time: DF.Time | None returned_against: DF.Data | None @@ -83,15 +82,38 @@ class SerialandBatchBundle(Document): warehouse: DF.Link | None # end: auto-generated types + def autoname(self): + if frappe.db.get_single_value( + "Stock Settings", "set_serial_and_batch_bundle_naming_based_on_naming_series" + ): + if not self.naming_series: + frappe.throw(_("Naming Series is mandatory")) + + naming_series = self.naming_series + if "#" not in naming_series: + naming_series += ".#####" + + self.name = make_autoname(self.naming_series) + else: + try: + self.name = frappe.generate_hash(length=20) + except frappe.DuplicateEntryError: + self.autoname() + def validate(self): + if self.docstatus == 1 and self.voucher_detail_no: + self.validate_voucher_detail_no() + 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() + if self.type_of_transaction == "Maintenance": return + self.allow_existing_serial_nos() if not self.flags.ignore_validate_serial_batch or frappe.flags.in_test: self.validate_serial_nos_duplicate() self.check_future_entries_exists() @@ -99,9 +121,77 @@ class SerialandBatchBundle(Document): self.set_is_outward() self.calculate_total_qty() self.set_warehouse() - self.set_incoming_rate() + + if self.voucher_type != "Stock Entry" or not self.voucher_no or self.docstatus == 1: + self.set_incoming_rate() + self.calculate_qty_and_amount() + def validate_voucher_detail_no(self): + if self.type_of_transaction not in ["Inward", "Outward"] or self.voucher_type in [ + "Installation Note", + "Job Card", + "Maintenance Schedule", + "Pick List", + ]: + return + + if self.voucher_type == "POS Invoice": + if not frappe.db.exists("POS Invoice Item", self.voucher_detail_no): + frappe.throw( + _("The serial and batch bundle {0} not linked to {1} {2}").format( + bold(self.name), self.voucher_type, bold(self.voucher_no) + ) + ) + + elif not frappe.db.exists("Stock Ledger Entry", {"voucher_detail_no": self.voucher_detail_no}): + if self.voucher_type == "Delivery Note" and frappe.db.exists( + "Packed Item", self.voucher_detail_no + ): + return + + frappe.throw( + _("The serial and batch bundle {0} not linked to {1} {2}").format( + bold(self.name), self.voucher_type, bold(self.voucher_no) + ) + ) + + def allow_existing_serial_nos(self): + if self.type_of_transaction == "Outward" or not self.has_serial_no: + return + + if frappe.db.get_single_value("Stock Settings", "allow_existing_serial_no"): + return + + if self.voucher_type not in ["Purchase Receipt", "Purchase Invoice", "Stock Entry"]: + return + + if self.voucher_type == "Stock Entry" and frappe.get_cached_value( + "Stock Entry", self.voucher_no, "purpose" + ) in ["Material Transfer", "Send to Subcontractor", "Material Transfer for Manufacture"]: + return + + serial_nos = [d.serial_no for d in self.entries if d.serial_no] + + data = frappe.get_all( + "Serial and Batch Entry", + filters={"serial_no": ("in", serial_nos), "docstatus": 1, "qty": ("<", 0)}, + fields=["serial_no", "parent"], + ) + + note = "

Note:
" + for row in data: + frappe.throw( + _( + "You can't process the serial number {0} as it has already been used in the SABB {1}. {2} if you want to inward same serial number multiple times then enabled 'Allow existing Serial No to be Manufactured/Received again' in the {3}" + ).format( + row.serial_no, + get_link_to_form("Serial and Batch Bundle", row.parent), + note, + get_link_to_form("Stock Settings", "Stock Settings"), + ) + ) + def reset_serial_batch_bundle(self): if self.is_new() and self.amended_from: for field in ["is_cancelled", "is_rejected"]: @@ -136,7 +226,12 @@ class SerialandBatchBundle(Document): return serial_nos = [d.serial_no for d in self.entries if d.serial_no] - kwargs = {"item_code": self.item_code, "warehouse": self.warehouse} + kwargs = { + "item_code": self.item_code, + "warehouse": self.warehouse, + "check_serial_nos": True, + "serial_nos": serial_nos, + } if self.voucher_type == "POS Invoice": kwargs["ignore_voucher_nos"] = [self.voucher_no] @@ -177,6 +272,7 @@ class SerialandBatchBundle(Document): "posting_date": self.posting_date, "posting_time": self.posting_time, "serial_nos": serial_nos, + "check_serial_nos": True, } ) @@ -197,7 +293,7 @@ class SerialandBatchBundle(Document): def throw_error_message(self, message, exception=frappe.ValidationError): frappe.throw(_(message), exception, title=_("Error")) - def set_incoming_rate(self, row=None, save=False, allow_negative_stock=False): + def set_incoming_rate(self, parent=None, row=None, save=False, allow_negative_stock=False): if self.type_of_transaction not in ["Inward", "Outward"] or self.voucher_type in [ "Installation Note", "Job Card", @@ -206,13 +302,123 @@ class SerialandBatchBundle(Document): ]: return - if self.type_of_transaction == "Outward": + if return_against := self.get_return_against(parent=parent): + self.set_valuation_rate_for_return_entry(return_against, row, save) + elif self.type_of_transaction == "Outward": self.set_incoming_rate_for_outward_transaction( row, save, allow_negative_stock=allow_negative_stock ) else: self.set_incoming_rate_for_inward_transaction(row, save) + def set_valuation_rate_for_return_entry(self, return_against, row, save=False): + if valuation_details := self.get_valuation_rate_for_return_entry(return_against): + for row in self.entries: + if valuation_details: + self.validate_returned_serial_batch_no(return_against, row, valuation_details) + + if row.serial_no: + valuation_rate = valuation_details["serial_nos"].get(row.serial_no) + else: + valuation_rate = valuation_details["batches"].get(row.batch_no) + + if frappe.flags.through_repost_item_valuation and not valuation_rate: + # if different serial nos / batches are returned + if row.serial_no: + serial_nos = sorted(list(valuation_details["serial_nos"].keys())) + valuation_rate = valuation_details["serial_nos"].get(serial_nos[cint(row.idx) - 1]) + else: + batches = sorted(list(valuation_details["batches"].keys())) + valuation_rate = valuation_details["batches"].get(batches[cint(row.idx) - 1]) + + row.incoming_rate = flt(valuation_rate) + row.stock_value_difference = flt(row.qty) * flt(row.incoming_rate) + + if save: + row.db_set( + { + "incoming_rate": row.incoming_rate, + "stock_value_difference": row.stock_value_difference, + } + ) + + elif self.type_of_transaction == "Inward": + self.set_incoming_rate_for_inward_transaction(row, save) + + def validate_returned_serial_batch_no(self, return_against, row, original_inv_details): + if frappe.flags.through_repost_item_valuation: + return + + if row.serial_no and row.serial_no not in original_inv_details["serial_nos"]: + self.throw_error_message( + _( + "Serial No {0} is not present in the {1} {2}, hence you can't return it against the {1} {2}" + ).format(bold(row.serial_no), self.voucher_type, bold(return_against)) + ) + + if row.batch_no and row.batch_no not in original_inv_details["batches"]: + self.throw_error_message( + _( + "Batch No {0} is not present in the original {1} {2}, hence you can't return it against the {1} {2}" + ).format(bold(row.batch_no), self.voucher_type, bold(return_against)) + ) + + def get_valuation_rate_for_return_entry(self, return_against): + if not self.voucher_detail_no: + return {} + + valuation_details = frappe._dict( + { + "serial_nos": defaultdict(float), + "batches": defaultdict(float), + } + ) + + field = { + "Sales Invoice": "sales_invoice_item", + "Purchase Invoice": "purchase_invoice_item", + "Delivery Note": "dn_detail", + "Purchase Receipt": "purchase_receipt_item", + }.get(self.voucher_type) + + return_against_voucher_detail_no = frappe.db.get_value( + self.child_table, self.voucher_detail_no, field + ) + + filters = [ + ["Serial and Batch Bundle", "voucher_no", "=", return_against], + ["Serial and Batch Entry", "docstatus", "=", 1], + ["Serial and Batch Bundle", "is_cancelled", "=", 0], + ["Serial and Batch Bundle", "item_code", "=", self.item_code], + ["Serial and Batch Bundle", "voucher_detail_no", "=", return_against_voucher_detail_no], + ] + + if self.voucher_type in ["Purchase Receipt", "Purchase Invoice"]: + # Added to handle rejected warehouse case + filters.append(["Serial and Batch Entry", "warehouse", "=", self.warehouse]) + + bundle_data = frappe.get_all( + "Serial and Batch Bundle", + fields=[ + "`tabSerial and Batch Entry`.`serial_no`", + "`tabSerial and Batch Entry`.`batch_no`", + "`tabSerial and Batch Entry`.`incoming_rate`", + ], + filters=filters, + order_by="`tabSerial and Batch Bundle`.`creation`, `tabSerial and Batch Entry`.`idx`", + ) + + if not bundle_data: + return {} + + for row in bundle_data: + if row.serial_no: + valuation_details["serial_nos"][row.serial_no] = row.incoming_rate + if row.batch_no: + valuation_details["batches"][row.batch_no] = row.incoming_rate + + return valuation_details + def calculate_total_qty(self, save=True): self.total_qty = 0.0 for d in self.entries: @@ -280,7 +486,7 @@ class SerialandBatchBundle(Document): ) def validate_negative_batch(self, batch_no, available_qty): - if available_qty < 0: + if available_qty < 0 and not self.is_stock_reco_for_valuation_adjustment(available_qty): msg = f"""Batch No {bold(batch_no)} of an Item {bold(self.item_code)} has negative stock of quantity {bold(available_qty)} in the @@ -288,6 +494,18 @@ class SerialandBatchBundle(Document): frappe.throw(_(msg), BatchNegativeStockError) + def is_stock_reco_for_valuation_adjustment(self, available_qty): + if ( + self.voucher_type == "Stock Reconciliation" + and self.type_of_transaction == "Outward" + and self.voucher_detail_no + and abs(frappe.db.get_value("Stock Reconciliation Item", self.voucher_detail_no, "qty")) + == abs(available_qty) + ): + return True + + return False + def get_sle_for_outward_transaction(self): sle = frappe._dict( { @@ -315,6 +533,33 @@ class SerialandBatchBundle(Document): return sle + def get_return_against(self, parent=None): + return_against = None + + if parent and parent.get("is_return") and parent.get("return_against"): + return parent.get("return_against") + + if ( + self.voucher_type + in [ + "Delivery Note", + "Sales Invoice", + "Purchase Invoice", + "Purchase Receipt", + "POS Invoice", + "Subcontracting Receipt", + ] + and self.voucher_type + and self.voucher_no + ): + voucher_details = frappe.db.get_value( + self.voucher_type, self.voucher_no, ["is_return", "return_against"], as_dict=True + ) + if voucher_details and voucher_details.get("is_return") and voucher_details.get("return_against"): + return voucher_details.get("return_against") + + return return_against + def set_incoming_rate_for_inward_transaction(self, row=None, save=False): valuation_field = "valuation_rate" if self.voucher_type in ["Sales Invoice", "Delivery Note", "Quotation"]: @@ -336,18 +581,18 @@ class SerialandBatchBundle(Document): valuation_field = "rate" child_table = "Subcontracting Receipt Item" - precision = frappe.get_precision(child_table, valuation_field) or 2 - if not rate and self.voucher_detail_no and self.voucher_no: rate = frappe.db.get_value(child_table, self.voucher_detail_no, valuation_field) for d in self.entries: - if (d.incoming_rate == rate) and d.qty and d.stock_value_difference: + if self.is_rejected: + rate = 0.0 + elif (d.incoming_rate == rate) and d.qty and d.stock_value_difference: continue - d.incoming_rate = flt(rate, precision) + d.incoming_rate = flt(rate) if d.qty: - d.stock_value_difference = flt(d.qty) * flt(d.incoming_rate) + d.stock_value_difference = flt(d.qty) * d.incoming_rate if save: d.db_set( @@ -359,6 +604,8 @@ class SerialandBatchBundle(Document): if not self.voucher_no or self.voucher_no != row.parent: values_to_set["voucher_no"] = row.parent + self.db_set("is_cancelled", 0) + if self.voucher_type != parent.doctype: values_to_set["voucher_type"] = parent.doctype @@ -391,7 +638,7 @@ class SerialandBatchBundle(Document): # If user has changed the rate in the child table if self.docstatus == 0: - self.set_incoming_rate(save=True, row=row) + self.set_incoming_rate(parent=parent, row=row, save=True) if self.docstatus == 0 and parent.get("is_return") and parent.is_new(): self.reset_qty(row, qty_field=qty_field) @@ -511,8 +758,10 @@ class SerialandBatchBundle(Document): precision = row.precision if abs(abs(flt(self.total_qty, precision)) - abs(flt(qty, precision))) > 0.01: + total_qty = frappe.format_value(abs(flt(self.total_qty)), "Float", row) + set_qty = frappe.format_value(abs(flt(row.get(qty_field))), "Float", row) 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}" + f"Total quantity {total_qty} in the Serial and Batch Bundle {bold(self.name)} does not match with the quantity {set_qty} for the Item {bold(self.item_code)} in the {self.voucher_type} # {self.voucher_no}" ) def get_qty_field(self, row, qty_field=None) -> str: @@ -591,6 +840,9 @@ class SerialandBatchBundle(Document): serial_batches = {} for row in self.entries: if not row.qty and row.batch_no and not row.serial_no: + if self.voucher_type == "Stock Reconciliation" and self.type_of_transaction == "Inward": + continue + frappe.throw( _("At row {0}: Qty is mandatory for the batch {1}").format( bold(row.idx), bold(row.batch_no) @@ -642,16 +894,12 @@ class SerialandBatchBundle(Document): ) for serial_no, batch_no in serial_batches.items(): - if correct_batches.get(serial_no) != batch_no: + if correct_batches.get(serial_no) and correct_batches.get(serial_no) != batch_no: self.throw_error_message( f"Serial No {bold(serial_no)} does not belong to Batch No {bold(batch_no)}" ) def validate_incorrect_serial_nos(self, serial_nos): - if self.voucher_type == "Stock Entry" and self.voucher_no: - if frappe.get_cached_value("Stock Entry", self.voucher_no, "purpose") == "Repack": - return - incorrect_serial_nos = frappe.get_all( "Serial No", filters={"name": ("in", serial_nos), "item_code": ("!=", self.item_code)}, @@ -842,7 +1090,6 @@ class SerialandBatchBundle(Document): self.set_purchase_document_no() def on_submit(self): - self.validate_batch_inventory() self.validate_serial_nos_inventory() def set_purchase_document_no(self): @@ -869,22 +1116,9 @@ class SerialandBatchBundle(Document): self.validate_batch_inventory() def validate_batch_inventory(self): - if ( - self.voucher_type in ["Purchase Invoice", "Purchase Receipt"] - and frappe.db.get_value(self.voucher_type, self.voucher_no, "docstatus") == 1 - ): - return - if not self.has_batch_no: return - if ( - self.voucher_type == "Stock Reconciliation" - and self.type_of_transaction == "Outward" - and frappe.db.get_value("Stock Reconciliation Item", self.voucher_detail_no, "qty") > 0 - ): - return - batches = [d.batch_no for d in self.entries if d.batch_no] if not batches: return @@ -1022,19 +1256,19 @@ def parse_csv_file_to_get_serial_batch(reader): continue if has_serial_no or (has_serial_no and has_batch_no): - _dict = {"serial_no": row[0], "qty": 1} + _dict = {"serial_no": row[0].strip(), "qty": 1} if has_batch_no: _dict.update( { - "batch_no": row[1], + "batch_no": row[1].strip(), "qty": row[2], } ) batch_nos.append( { - "batch_no": row[1], + "batch_no": row[1].strip(), "qty": row[2], } ) @@ -1043,7 +1277,7 @@ def parse_csv_file_to_get_serial_batch(reader): elif has_batch_no: batch_nos.append( { - "batch_no": row[0], + "batch_no": row[0].strip(), "qty": row[1], } ) @@ -1087,7 +1321,7 @@ def make_serial_nos(item_code, serial_nos): "Item", item_code, ["description", "item_code", "item_name", "warranty_period"], as_dict=1 ) - serial_nos = [d.get("serial_no") for d in serial_nos if d.get("serial_no")] + serial_nos = [d.get("serial_no").strip() for d in serial_nos if d.get("serial_no")] existing_serial_nos = frappe.get_all("Serial No", filters={"name": ("in", serial_nos)}) existing_serial_nos = [d.get("name") for d in existing_serial_nos if d.get("name")] @@ -1296,8 +1530,12 @@ def add_serial_batch_ledgers(entries, child_row, doc, warehouse, do_not_save=Fal 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): - sb_doc = update_serial_batch_no_ledgers(entries, child_row, parent_doc, warehouse) + bundle = child_row.serial_and_batch_bundle + if child_row.get("is_rejected"): + bundle = child_row.rejected_serial_and_batch_bundle + + if frappe.db.exists("Serial and Batch Bundle", bundle): + sb_doc = update_serial_batch_no_ledgers(bundle, entries, child_row, parent_doc, warehouse) else: sb_doc = create_serial_batch_no_ledgers( entries, child_row, parent_doc, warehouse, do_not_save=do_not_save @@ -1329,6 +1567,15 @@ def create_serial_batch_no_ledgers( } ) + batch_no = None + + if ( + not entries[0].get("batch_no") + and entries[0].get("serial_no") + and frappe.get_cached_value("Item", child_row.item_code, "has_batch_no") + ): + batch_no = get_batch(child_row.item_code) + for row in entries: row = frappe._dict(row) doc.append( @@ -1336,7 +1583,7 @@ def create_serial_batch_no_ledgers( { "qty": (flt(row.qty) or 1.0) * (1 if type_of_transaction == "Inward" else -1), "warehouse": warehouse, - "batch_no": row.batch_no, + "batch_no": row.batch_no or batch_no, "serial_no": row.serial_no, }, ) @@ -1351,6 +1598,18 @@ def create_serial_batch_no_ledgers( return doc +def get_batch(item_code): + from erpnext.stock.doctype.batch.batch import make_batch + + return make_batch( + frappe._dict( + { + "item": item_code, + } + ) + ) + + def get_type_of_transaction(parent_doc, child_row): type_of_transaction = child_row.get("type_of_transaction") if parent_doc.get("doctype") == "Stock Entry": @@ -1368,7 +1627,7 @@ def get_type_of_transaction(parent_doc, child_row): elif parent_doc.get("doctype") == "Stock Reconciliation": type_of_transaction = "Inward" - if parent_doc.get("is_return"): + if parent_doc.get("is_return") and parent_doc.get("doctype") != "Stock Entry": type_of_transaction = "Inward" if ( parent_doc.get("doctype") in ["Purchase Receipt", "Purchase Invoice"] @@ -1379,8 +1638,8 @@ def get_type_of_transaction(parent_doc, child_row): 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) +def update_serial_batch_no_ledgers(bundle, entries, child_row, parent_doc, warehouse=None) -> object: + doc = frappe.get_doc("Serial and Batch Bundle", bundle) doc.voucher_detail_no = child_row.name doc.posting_date = parent_doc.posting_date doc.posting_time = parent_doc.posting_time @@ -1558,13 +1817,14 @@ def get_serial_nos_based_on_posting_date(kwargs, ignore_serial_nos): serial_nos = set() data = get_stock_ledgers_for_serial_nos(kwargs) + bundle_wise_serial_nos = get_bundle_wise_serial_nos(data, kwargs) for d in data: if d.serial_and_batch_bundle: - sns = get_serial_nos_from_bundle(d.serial_and_batch_bundle, kwargs.get("serial_nos", [])) - if d.actual_qty > 0: - serial_nos.update(sns) - else: - serial_nos.difference_update(sns) + if sns := bundle_wise_serial_nos.get(d.serial_and_batch_bundle): + if d.actual_qty > 0: + serial_nos.update(sns) + else: + serial_nos.difference_update(sns) elif d.serial_no: sns = get_serial_nos(d.serial_no) @@ -1581,6 +1841,30 @@ def get_serial_nos_based_on_posting_date(kwargs, ignore_serial_nos): return serial_nos +def get_bundle_wise_serial_nos(data, kwargs): + bundle_wise_serial_nos = defaultdict(list) + bundles = [d.serial_and_batch_bundle for d in data if d.serial_and_batch_bundle] + if not bundles: + return bundle_wise_serial_nos + + filters = {"parent": ("in", bundles), "docstatus": 1, "serial_no": ("is", "set")} + + if kwargs.get("check_serial_nos") and kwargs.get("serial_nos"): + filters["serial_no"] = ("in", kwargs.get("serial_nos")) + + bundle_data = frappe.get_all( + "Serial and Batch Entry", + fields=["serial_no", "parent"], + filters=filters, + ) + + for d in bundle_data: + if d.parent: + bundle_wise_serial_nos[d.parent].append(d.serial_no) + + return bundle_wise_serial_nos + + def get_reserved_serial_nos(kwargs) -> list: """Returns a list of `Serial No` reserved in POS Invoice and Stock Reservation Entry.""" @@ -1827,8 +2111,12 @@ def get_auto_batch_nos(kwargs): picked_batches, ) + if not kwargs.get("do_not_check_future_batches") and available_batches and kwargs.get("posting_date"): + filter_zero_near_batches(available_batches, kwargs) + if not kwargs.consider_negative_batches: - available_batches = list(filter(lambda x: x.qty > 0, available_batches)) + precision = frappe.get_precision("Stock Ledger Entry", "actual_qty") + available_batches = [d for d in available_batches if flt(d.qty, precision) > 0] if not qty: return available_batches @@ -1836,6 +2124,27 @@ def get_auto_batch_nos(kwargs): return get_qty_based_available_batches(available_batches, qty) +def filter_zero_near_batches(available_batches, kwargs): + kwargs.batch_no = [d.batch_no for d in available_batches] + + del kwargs["posting_date"] + del kwargs["posting_time"] + + kwargs.do_not_check_future_batches = 1 + available_batches_in_future = get_auto_batch_nos(kwargs) + for batch in available_batches: + if batch.qty <= 0: + continue + + for future_batch in available_batches_in_future: + if ( + batch.batch_no == future_batch.batch_no + and batch.warehouse == future_batch.warehouse + and future_batch.qty <= 0 + ): + batch.qty = 0 + + def get_qty_based_available_batches(available_batches, qty): batches = [] for batch in available_batches: @@ -1885,6 +2194,8 @@ def update_available_batches(available_batches, *reserved_batches) -> None: def get_available_batches(kwargs): + from erpnext.stock.utils import get_combine_datetime + stock_ledger_entry = frappe.qb.DocType("Stock Ledger Entry") batch_ledger = frappe.qb.DocType("Serial and Batch Entry") batch_table = frappe.qb.DocType("Batch") @@ -1912,9 +2223,9 @@ def get_available_batches(kwargs): if kwargs.get("posting_time") is None: kwargs.posting_time = nowtime() - timestamp_condition = CombineDatetime( - stock_ledger_entry.posting_date, stock_ledger_entry.posting_time - ) <= CombineDatetime(kwargs.posting_date, kwargs.posting_time) + timestamp_condition = stock_ledger_entry.posting_datetime <= get_combine_datetime( + kwargs.posting_date, kwargs.posting_time + ) query = query.where(timestamp_condition) @@ -2132,6 +2443,8 @@ def get_ledgers_from_serial_batch_bundle(**kwargs) -> list[frappe._dict]: def get_stock_ledgers_for_serial_nos(kwargs): + from erpnext.stock.utils import get_combine_datetime + stock_ledger_entry = frappe.qb.DocType("Stock Ledger Entry") query = ( @@ -2142,15 +2455,16 @@ def get_stock_ledgers_for_serial_nos(kwargs): stock_ledger_entry.serial_and_batch_bundle, ) .where(stock_ledger_entry.is_cancelled == 0) + .orderby(stock_ledger_entry.posting_datetime) ) if kwargs.get("posting_date"): if kwargs.get("posting_time") is None: kwargs.posting_time = nowtime() - timestamp_condition = CombineDatetime( - stock_ledger_entry.posting_date, stock_ledger_entry.posting_time - ) <= CombineDatetime(kwargs.posting_date, kwargs.posting_time) + timestamp_condition = stock_ledger_entry.posting_datetime <= get_combine_datetime( + kwargs.posting_date, kwargs.posting_time + ) query = query.where(timestamp_condition) @@ -2198,6 +2512,9 @@ def get_stock_ledgers_batches(kwargs): else: query = query.where(stock_ledger_entry[field] == kwargs.get(field)) + if not kwargs.get("for_stock_levels"): + query = query.where((batch_table.expiry_date >= today()) | (batch_table.expiry_date.isnull())) + if kwargs.get("posting_date"): if kwargs.get("posting_time") is None: kwargs.posting_time = nowtime() 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 5fe79384e6d..a3bd20b80ba 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 @@ -17,6 +17,67 @@ from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry class TestSerialandBatchBundle(FrappeTestCase): + def test_naming_for_sabb(self): + frappe.db.set_single_value( + "Stock Settings", "set_serial_and_batch_bundle_naming_based_on_naming_series", 1 + ) + + serial_item_code = "New Serial No Valuation 11" + make_item( + serial_item_code, + { + "has_serial_no": 1, + "serial_no_series": "TEST-A-SER-VAL-.#####", + "is_stock_item": 1, + }, + ) + + for sn in ["TEST-A-SER-VAL-00001", "TEST-A-SER-VAL-00002"]: + if not frappe.db.exists("Serial No", sn): + frappe.get_doc( + { + "doctype": "Serial No", + "serial_no": sn, + "item_code": serial_item_code, + } + ).insert(ignore_permissions=True) + + bundle_doc = make_serial_batch_bundle( + { + "item_code": serial_item_code, + "warehouse": "_Test Warehouse - _TC", + "voucher_type": "Stock Entry", + "posting_date": today(), + "posting_time": nowtime(), + "qty": 10, + "serial_nos": ["TEST-A-SER-VAL-00001", "TEST-A-SER-VAL-00002"], + "type_of_transaction": "Inward", + "do_not_submit": True, + } + ) + + self.assertTrue(bundle_doc.name.startswith("SABB-")) + + frappe.db.set_single_value( + "Stock Settings", "set_serial_and_batch_bundle_naming_based_on_naming_series", 0 + ) + + bundle_doc = make_serial_batch_bundle( + { + "item_code": serial_item_code, + "warehouse": "_Test Warehouse - _TC", + "voucher_type": "Stock Entry", + "posting_date": today(), + "posting_time": nowtime(), + "qty": 10, + "serial_nos": ["TEST-A-SER-VAL-00001", "TEST-A-SER-VAL-00002"], + "type_of_transaction": "Inward", + "do_not_submit": True, + } + ) + + self.assertFalse(bundle_doc.name.startswith("SABB-")) + def test_inward_outward_serial_valuation(self): from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import make_purchase_receipt @@ -166,7 +227,7 @@ class TestSerialandBatchBundle(FrappeTestCase): for qty, valuation in {10: 100, 20: 200}.items(): stock_queue.append([qty, valuation]) qty_after_transaction += qty - balance_value += qty_after_transaction * valuation + balance_value += qty * valuation doc = frappe.get_doc( { @@ -177,6 +238,7 @@ class TestSerialandBatchBundle(FrappeTestCase): "incoming_rate": valuation, "qty_after_transaction": qty_after_transaction, "stock_value_difference": valuation * qty, + "stock_value": balance_value, "balance_value": balance_value, "valuation_rate": balance_value / qty_after_transaction, "actual_qty": qty, @@ -186,6 +248,7 @@ class TestSerialandBatchBundle(FrappeTestCase): } ) + doc.set_posting_datetime() doc.flags.ignore_permissions = True doc.flags.ignore_mandatory = True doc.flags.ignore_links = True @@ -586,6 +649,7 @@ class TestSerialandBatchBundle(FrappeTestCase): "company": "_Test Company", } ) + doc.set_posting_datetime() doc.flags.ignore_permissions = True doc.flags.ignore_mandatory = True doc.flags.ignore_links = True @@ -752,6 +816,80 @@ class TestSerialandBatchBundle(FrappeTestCase): "Stock Settings", "auto_create_serial_and_batch_bundle_for_outward", original_value ) + def test_voucher_detail_no(self): + item_code = make_item( + "Test Voucher Detail No 1", + properties={ + "is_stock_item": 1, + "has_batch_no": 1, + "create_new_batch": 1, + "batch_number_series": "TST-VDN-.#####", + }, + ).name + + se = make_stock_entry( + item_code=item_code, + qty=10, + target="_Test Warehouse - _TC", + rate=500, + use_serial_batch_fields=True, + do_not_submit=True, + ) + + if not frappe.db.exists("Batch", "TST-ACSBBO-TACSB-00001"): + frappe.get_doc( + { + "doctype": "Batch", + "batch_id": "TST-ACSBBO-TACSB-00001", + "item": item_code, + "company": "_Test Company", + } + ).insert(ignore_permissions=True) + + bundle_doc = make_serial_batch_bundle( + { + "item_code": item_code, + "warehouse": "_Test Warehouse - _TC", + "voucher_type": "Stock Entry", + "posting_date": today(), + "posting_time": nowtime(), + "qty": 10, + "batches": frappe._dict({"TST-ACSBBO-TACSB-00001": 10}), + "type_of_transaction": "Inward", + "do_not_submit": True, + } + ) + + se.append( + "items", + { + "item_code": item_code, + "t_warehouse": "_Test Warehouse - _TC", + "stock_uom": "Nos", + "stock_qty": 10, + "conversion_factor": 1, + "uom": "Nos", + "basic_rate": 500, + "qty": 10, + "use_serial_batch_fields": 0, + "serial_and_batch_bundle": bundle_doc.name, + }, + ) + + se.save() + + bundle_doc = frappe.get_doc("Serial and Batch Bundle", bundle_doc.name) + self.assertEqual(bundle_doc.voucher_detail_no, se.items[1].name) + + se.remove(se.items[1]) + se.save() + self.assertTrue(len(se.items) == 1) + se.submit() + + bundle_doc.reload() + self.assertTrue(bundle_doc.docstatus == 0) + self.assertRaises(frappe.ValidationError, bundle_doc.submit) + def get_batch_from_bundle(bundle): from erpnext.stock.serial_batch_bundle import get_batch_nos diff --git a/erpnext/stock/doctype/serial_no/serial_no.json b/erpnext/stock/doctype/serial_no/serial_no.json index 2d7fcac89a0..89c77d46b1e 100644 --- a/erpnext/stock/doctype/serial_no/serial_no.json +++ b/erpnext/stock/doctype/serial_no/serial_no.json @@ -254,7 +254,7 @@ "in_list_view": 1, "in_standard_filter": 1, "label": "Status", - "options": "\nActive\nInactive\nDelivered\nExpired", + "options": "\nActive\nInactive\nConsumed\nDelivered\nExpired", "read_only": 1 }, { @@ -272,7 +272,7 @@ "icon": "fa fa-barcode", "idx": 1, "links": [], - "modified": "2023-12-17 10:52:55.767839", + "modified": "2025-01-15 16:22:49.873889", "modified_by": "Administrator", "module": "Stock", "name": "Serial No", @@ -316,4 +316,4 @@ "sort_order": "DESC", "states": [], "track_changes": 1 -} \ No newline at end of file +} diff --git a/erpnext/stock/doctype/serial_no/serial_no.py b/erpnext/stock/doctype/serial_no/serial_no.py index 4c693d8efec..928313576f1 100644 --- a/erpnext/stock/doctype/serial_no/serial_no.py +++ b/erpnext/stock/doctype/serial_no/serial_no.py @@ -50,7 +50,7 @@ class SerialNo(StockController): purchase_document_no: DF.Data | None purchase_rate: DF.Float serial_no: DF.Data - status: DF.Literal["", "Active", "Inactive", "Delivered", "Expired"] + status: DF.Literal["", "Active", "Inactive", "Consumed", "Delivered", "Expired"] warehouse: DF.Link | None warranty_expiry_date: DF.Date | None warranty_period: DF.Int @@ -149,6 +149,17 @@ def get_serial_nos(serial_no): return [s.strip() for s in cstr(serial_no).strip().replace(",", "\n").split("\n") if s.strip()] +def get_serial_nos_from_sle_list(bundles): + table = frappe.qb.DocType("Serial and Batch Entry") + query = frappe.qb.from_(table).select(table.parent, table.serial_no).where(table.parent.isin(bundles)) + data = query.run(as_dict=True) + + result = {} + for d in data: + result.setdefault(d.parent, []).append(d.serial_no) + return result + + def clean_serial_no_string(serial_no: str) -> str: if not serial_no: return "" @@ -169,21 +180,6 @@ def update_maintenance_status(): frappe.db.set_value("Serial No", doc.name, "maintenance_status", doc.maintenance_status) -def get_delivery_note_serial_no(item_code, qty, delivery_note): - serial_nos = "" - dn_serial_nos = frappe.db.sql_list( - f""" select name from `tabSerial No` - where item_code = %(item_code)s and delivery_document_no = %(delivery_note)s - and sales_invoice is null limit {cint(qty)}""", - {"item_code": item_code, "delivery_note": delivery_note}, - ) - - if dn_serial_nos and len(dn_serial_nos) > 0: - serial_nos = "\n".join(dn_serial_nos) - - return serial_nos - - @frappe.whitelist() def auto_fetch_serial_number( qty: int, @@ -245,15 +241,17 @@ def get_pos_reserved_serial_nos(filters): pos_transacted_sr_nos = query.run(as_dict=True) - reserved_sr_nos = set() - returned_sr_nos = set() + reserved_sr_nos = list() + returned_sr_nos = list() for d in pos_transacted_sr_nos: if d.is_return == 0: - [reserved_sr_nos.add(x) for x in get_serial_nos(d.serial_no)] + [reserved_sr_nos.append(x) for x in get_serial_nos(d.serial_no)] elif d.is_return == 1: - [returned_sr_nos.add(x) for x in get_serial_nos(d.serial_no)] + [returned_sr_nos.append(x) for x in get_serial_nos(d.serial_no)] - reserved_sr_nos = list(reserved_sr_nos - returned_sr_nos) + for x in returned_sr_nos: + if x in reserved_sr_nos: + reserved_sr_nos.remove(x) return reserved_sr_nos @@ -269,12 +267,7 @@ def fetch_serial_numbers(filters, qty, do_not_include=None): query = ( frappe.qb.from_(serial_no) .select(serial_no.name) - .where( - (serial_no.item_code == filters["item_code"]) - & (serial_no.warehouse == filters["warehouse"]) - & (Coalesce(serial_no.sales_invoice, "") == "") - & (Coalesce(serial_no.delivery_document_no, "") == "") - ) + .where((serial_no.item_code == filters["item_code"]) & (serial_no.warehouse == filters["warehouse"])) .orderby(serial_no.creation) .limit(qty or 1) ) diff --git a/erpnext/stock/doctype/serial_no/test_serial_no.py b/erpnext/stock/doctype/serial_no/test_serial_no.py index 79291af3a10..334333f366d 100644 --- a/erpnext/stock/doctype/serial_no/test_serial_no.py +++ b/erpnext/stock/doctype/serial_no/test_serial_no.py @@ -119,6 +119,7 @@ class TestSerialNo(FrappeTestCase): serial_no=[serial_nos[0]], company="_Test Company 1", warehouse=wh, + cost_center="_Test Company 1 - _TC1", ) sn_doc.reload() @@ -154,6 +155,7 @@ class TestSerialNo(FrappeTestCase): serial_no=[serial_nos[0]], company="_Test Company 1", warehouse=wh, + cost_center="_Test Company 1 - _TC1", ) # Delivery from second company @@ -163,6 +165,7 @@ class TestSerialNo(FrappeTestCase): serial_no=[serial_nos[0]], company="_Test Company 1", warehouse=wh, + cost_center="_Test Company 1 - _TC1", ) sn_doc.reload() diff --git a/erpnext/stock/doctype/shipment/shipment.json b/erpnext/stock/doctype/shipment/shipment.json index 53b549deec1..8b6e70ac65b 100644 --- a/erpnext/stock/doctype/shipment/shipment.json +++ b/erpnext/stock/doctype/shipment/shipment.json @@ -34,6 +34,7 @@ "shipment_parcel", "parcel_template", "add_template", + "total_weight", "column_break_28", "shipment_delivery_note", "shipment_details_section", @@ -429,11 +430,17 @@ "label": "Pickup Contact Person", "mandatory_depends_on": "eval:doc.pickup_from_type === 'Company'", "options": "User" + }, + { + "fieldname": "total_weight", + "fieldtype": "Float", + "label": "Total Weight (kg)", + "read_only": 1 } ], "is_submittable": 1, "links": [], - "modified": "2022-11-17 17:23:27.025802", + "modified": "2025-02-20 16:55:20.076418", "modified_by": "Administrator", "module": "Stock", "name": "Shipment", diff --git a/erpnext/stock/doctype/shipment/shipment.py b/erpnext/stock/doctype/shipment/shipment.py index 346e70e6060..cf9d165fdd3 100644 --- a/erpnext/stock/doctype/shipment/shipment.py +++ b/erpnext/stock/doctype/shipment/shipment.py @@ -65,6 +65,7 @@ class Shipment(Document): shipment_parcel: DF.Table[ShipmentParcel] shipment_type: DF.Literal["Goods", "Documents"] status: DF.Literal["Draft", "Submitted", "Booked", "Cancelled", "Completed"] + total_weight: DF.Float tracking_status: DF.Literal["", "In Progress", "Delivered", "Returned", "Lost"] tracking_status_info: DF.Data | None tracking_url: DF.SmallText | None @@ -75,6 +76,7 @@ class Shipment(Document): self.validate_weight() self.validate_pickup_time() self.set_value_of_goods() + self.set_total_weight() if self.docstatus == 0: self.status = "Draft" @@ -93,6 +95,12 @@ class Shipment(Document): if flt(parcel.weight) <= 0: frappe.throw(_("Parcel weight cannot be 0")) + def set_total_weight(self): + self.total_weight = self.get_total_weight() + + def get_total_weight(self): + return sum(flt(parcel.weight) * parcel.count for parcel in self.shipment_parcel if parcel.count > 0) + def validate_pickup_time(self): if self.pickup_from and self.pickup_to and get_time(self.pickup_to) < get_time(self.pickup_from): frappe.throw(_("Pickup To time should be greater than Pickup From time")) diff --git a/erpnext/stock/doctype/shipment/test_shipment.py b/erpnext/stock/doctype/shipment/test_shipment.py index 4d4eadc339b..1c91a054ebc 100644 --- a/erpnext/stock/doctype/shipment/test_shipment.py +++ b/erpnext/stock/doctype/shipment/test_shipment.py @@ -20,6 +20,17 @@ class TestShipment(FrappeTestCase): self.assertEqual(len(second_shipment.shipment_delivery_note), 1) self.assertEqual(second_shipment.shipment_delivery_note[0].delivery_note, delivery_note.name) + def test_get_total_weight(self): + shipment = frappe.new_doc("Shipment") + shipment.extend( + "shipment_parcel", + [ + {"length": 5, "width": 5, "height": 5, "weight": 5, "count": 5}, + {"length": 5, "width": 5, "height": 5, "weight": 10, "count": 1}, + ], + ) + self.assertEqual(shipment.get_total_weight(), 35) + def create_test_delivery_note(): company = get_shipment_company() diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js index c54876713c3..0c619b22a33 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.js +++ b/erpnext/stock/doctype/stock_entry/stock_entry.js @@ -117,6 +117,10 @@ frappe.ui.form.on("Stock Entry", { filters["is_inward"] = 1; } + if (["Material Receipt", "Material Transfer", "Material Issue"].includes(doc.purpose)) { + filters["include_expired_batches"] = 1; + } + return { query: "erpnext.controllers.queries.get_batch_no", filters: filters, @@ -367,6 +371,7 @@ frappe.ui.form.on("Stock Entry", { function () { frappe.call({ method: "erpnext.stock.doctype.stock_entry.stock_entry.get_expired_batch_items", + freeze: true, callback: function (r) { if (!r.exc && r.message) { frm.set_value("items", []); @@ -447,9 +452,11 @@ frappe.ui.form.on("Stock Entry", { source_doctype: "Stock Entry", target: frm, date_field: "posting_date", + read_only_setters: ["stock_entry_type", "purpose", "add_to_transit"], setters: { stock_entry_type: "Material Transfer", purpose: "Material Transfer", + add_to_transit: 1, }, get_query_filters: { docstatus: 1, @@ -500,18 +507,6 @@ frappe.ui.form.on("Stock Entry", { }); }, - company: function (frm) { - if (frm.doc.company) { - var company_doc = frappe.get_doc(":Company", frm.doc.company); - if (company_doc.default_letter_head) { - frm.set_value("letter_head", company_doc.default_letter_head); - } - frm.trigger("toggle_display_account_head"); - - erpnext.accounts.dimensions.update_dimension(frm, frm.doctype); - } - }, - make_retention_stock_entry: function (frm) { frappe.call({ method: "erpnext.stock.doctype.stock_entry.stock_entry.move_sample_to_retention_warehouse", @@ -828,6 +823,15 @@ frappe.ui.form.on("Stock Entry", { }); frappe.ui.form.on("Stock Entry Detail", { + set_basic_rate_manually(frm, cdt, cdn) { + let row = locals[cdt][cdn]; + frm.fields_dict.items.grid.update_docfield_property( + "basic_rate", + "read_only", + row?.set_basic_rate_manually ? 0 : 1 + ); + }, + qty(frm, cdt, cdn) { frm.events.set_basic_rate(frm, cdt, cdn); }, @@ -902,7 +906,12 @@ frappe.ui.form.on("Stock Entry Detail", { var d = locals[cdt][cdn]; $.each(r.message, function (k, v) { if (v) { - frappe.model.set_value(cdt, cdn, k, v); // qty and it's subsequent fields weren't triggered + // set_value trigger barcode function and barcode set qty to 1 in stock_controller.js, to avoid this set value manually instead of set value. + if (k != "barcode") { + frappe.model.set_value(cdt, cdn, k, v); // qty and it's subsequent fields weren't triggered + } else { + d.barcode = v; + } } }); refresh_field("items"); @@ -1017,10 +1026,6 @@ erpnext.stock.StockEntry = class StockEntry extends erpnext.stock.StockControlle }; }); - if (me.frm.doc.company && erpnext.is_perpetual_inventory_enabled(me.frm.doc.company)) { - this.frm.add_fetch("company", "stock_adjustment_account", "expense_account"); - } - this.frm.fields_dict.items.grid.get_field("expense_account").get_query = function () { if (erpnext.is_perpetual_inventory_enabled(me.frm.doc.company)) { return { @@ -1044,11 +1049,9 @@ erpnext.stock.StockEntry = class StockEntry extends erpnext.stock.StockControlle onload_post_render() { var me = this; - this.set_default_account(function () { - if (me.frm.doc.__islocal && me.frm.doc.company && !me.frm.doc.amended_from) { - me.frm.trigger("company"); - } - }); + if (me.frm.doc.__islocal && me.frm.doc.company && !me.frm.doc.amended_from) { + me.company(); + } this.frm.get_field("items").grid.set_multiple_add("item_code", "qty"); } @@ -1127,26 +1130,38 @@ erpnext.stock.StockEntry = class StockEntry extends erpnext.stock.StockControlle this.clean_up(); } - set_default_account(callback) { + company() { + if (this.frm.doc.company) { + var company_doc = frappe.get_doc(":Company", this.frm.doc.company); + if (company_doc.default_letter_head) { + this.frm.set_value("letter_head", company_doc.default_letter_head); + } + this.frm.trigger("toggle_display_account_head"); + + erpnext.accounts.dimensions.update_dimension(this.frm, this.frm.doctype); + this.set_default_account("cost_center", "cost_center"); + + this.frm.refresh_fields("items"); + } + } + + set_default_account(company_fieldname, fieldname) { var me = this; - if (this.frm.doc.company && erpnext.is_perpetual_inventory_enabled(this.frm.doc.company)) { - return this.frm.call({ - method: "erpnext.accounts.utils.get_company_default", - args: { - fieldname: "stock_adjustment_account", - company: this.frm.doc.company, - }, - callback: function (r) { - if (!r.exc) { - $.each(me.frm.doc.items || [], function (i, d) { - if (!d.expense_account) d.expense_account = r.message; - }); - if (callback) callback(); - } - }, - }); - } + return this.frm.call({ + method: "erpnext.accounts.utils.get_company_default", + args: { + fieldname: company_fieldname, + company: this.frm.doc.company, + }, + callback: function (r) { + if (!r.exc) { + $.each(me.frm.doc.items || [], function (i, d) { + d[fieldname] = r.message; + }); + } + }, + }); } clean_up() { @@ -1296,7 +1311,7 @@ erpnext.stock.StockEntry = class StockEntry extends erpnext.stock.StockControlle this.frm.cscript.toggle_enable_bom(); - if (doc.purpose == "Send to Subcontractor") { + if (erpnext.stock.is_subcontracting_or_return_transfer(doc)) { doc.customer = doc.customer_name = doc.customer_address = @@ -1362,6 +1377,10 @@ erpnext.stock.select_batch_and_serial_no = (frm, item) => { }); }; +erpnext.stock.is_subcontracting_or_return_transfer = (doc) => { + return doc.purpose == "Send to Subcontractor" || (doc.purpose == "Material Transfer" && doc.is_return); +}; + function attach_bom_items(bom_no) { if (!bom_no) { return; diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.json b/erpnext/stock/doctype/stock_entry/stock_entry.json index 5ba9f2973a1..f5fdfafe778 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.json +++ b/erpnext/stock/doctype/stock_entry/stock_entry.json @@ -154,14 +154,14 @@ "search_index": 1 }, { - "depends_on": "eval:doc.purpose==\"Send to Subcontractor\"", + "depends_on": "eval: erpnext.stock.is_subcontracting_or_return_transfer(doc)", "fieldname": "purchase_order", "fieldtype": "Link", "label": "Purchase Order", "options": "Purchase Order" }, { - "depends_on": "eval:doc.purpose==\"Send to Subcontractor\"", + "depends_on": "eval: erpnext.stock.is_subcontracting_or_return_transfer(doc)", "fieldname": "subcontracting_order", "fieldtype": "Link", "label": "Subcontracting Order", @@ -427,13 +427,13 @@ }, { "collapsible": 1, - "depends_on": "eval:doc.purpose === \"Send to Subcontractor\"", + "depends_on": "eval: erpnext.stock.is_subcontracting_or_return_transfer(doc)", "fieldname": "contact_section", "fieldtype": "Section Break", "label": "Supplier Details" }, { - "depends_on": "eval:doc.purpose === \"Send to Subcontractor\"", + "depends_on": "eval: erpnext.stock.is_subcontracting_or_return_transfer(doc)", "fieldname": "supplier", "fieldtype": "Link", "label": "Supplier", @@ -445,7 +445,7 @@ }, { "bold": 1, - "depends_on": "eval:doc.purpose === \"Send to Subcontractor\"", + "depends_on": "eval: erpnext.stock.is_subcontracting_or_return_transfer(doc)", "fieldname": "supplier_name", "fieldtype": "Data", "label": "Supplier Name", @@ -455,7 +455,7 @@ "read_only": 1 }, { - "depends_on": "eval:doc.purpose === \"Send to Subcontractor\"", + "depends_on": "eval: erpnext.stock.is_subcontracting_or_return_transfer(doc)", "fieldname": "supplier_address", "fieldtype": "Link", "label": "Supplier Address", diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index 4ee4c6b2930..efa263a7573 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -201,7 +201,6 @@ class StockEntry(StockController): self.validate_purpose() self.validate_item() self.validate_customer_provided_item() - self.validate_qty() self.set_transfer_qty() self.validate_uom_is_integer("uom", "qty") self.validate_uom_is_integer("stock_uom", "transfer_qty") @@ -210,6 +209,7 @@ class StockEntry(StockController): self.validate_bom() self.set_process_loss_qty() self.validate_purchase_order() + self.validate_company_in_accounting_dimension() if self.purpose in ("Manufacture", "Repack"): self.mark_finished_and_scrap_items() @@ -232,7 +232,7 @@ class StockEntry(StockController): self.validate_serialized_batch() self.calculate_rate_and_amount() self.validate_putaway_capacity() - self.validate_component_quantities() + self.validate_component_and_quantities() if not self.get("purpose") == "Manufacture": # ignore scrap item wh difference and empty source/target wh @@ -463,40 +463,6 @@ class StockEntry(StockController): flt(item.qty) * flt(item.conversion_factor), self.precision("transfer_qty", item) ) - def validate_qty(self): - manufacture_purpose = ["Manufacture", "Material Consumption for Manufacture"] - - if self.purpose in manufacture_purpose and self.work_order: - if not frappe.get_value("Work Order", self.work_order, "skip_transfer"): - item_code = [] - for item in self.items: - if cstr(item.t_warehouse) == "": - req_items = frappe.get_all( - "Work Order Item", - filters={"parent": self.work_order, "item_code": item.item_code}, - fields=["item_code"], - ) - - transferred_materials = frappe.db.sql( - """ - select - sum(sed.qty) as qty - from `tabStock Entry` se,`tabStock Entry Detail` sed - where - se.name = sed.parent and se.docstatus=1 and - (se.purpose='Material Transfer for Manufacture' or se.purpose='Manufacture') - and sed.item_code=%s and se.work_order= %s and ifnull(sed.t_warehouse, '') != '' - """, - (item.item_code, self.work_order), - as_dict=1, - ) - - stock_qty = flt(item.qty) - trans_qty = flt(transferred_materials[0].qty) - if req_items: - if stock_qty > trans_qty: - item_code.append(item.item_code) - def validate_fg_completed_qty(self): item_wise_qty = {} if self.purpose == "Manufacture" and self.work_order: @@ -518,7 +484,7 @@ class StockEntry(StockController): if self.process_loss_qty: total += flt(self.process_loss_qty, precision) - if self.fg_completed_qty != total: + if self.fg_completed_qty != flt(total, precision): frappe.throw( _( "The finished product {0} quantity {1} and For Quantity {2} cannot be different" @@ -645,7 +611,9 @@ class StockEntry(StockController): completed_qty = ( d.completed_qty + d.process_loss_qty + (allowance_percentage / 100 * d.completed_qty) ) - if total_completed_qty > flt(completed_qty): + if flt(total_completed_qty, self.precision("fg_completed_qty")) > flt( + completed_qty, self.precision("fg_completed_qty") + ): job_card = frappe.db.get_value("Job Card", {"operation_id": d.name}, "name") if not job_card: frappe.throw( @@ -748,7 +716,7 @@ class StockEntry(StockController): title=_("Insufficient Stock"), ) - def validate_component_quantities(self): + def validate_component_and_quantities(self): if self.purpose not in ["Manufacture", "Material Transfer for Manufacture"]: return @@ -761,20 +729,31 @@ class StockEntry(StockController): raw_materials = self.get_bom_raw_materials(self.fg_completed_qty) precision = frappe.get_precision("Stock Entry Detail", "qty") - for row in self.items: - if not row.s_warehouse: - continue - - if details := raw_materials.get(row.item_code): - if flt(details.get("qty"), precision) != flt(row.qty, precision): + for item_code, details in raw_materials.items(): + if matched_item := self.get_matched_items(item_code): + if flt(details.get("qty"), precision) != flt(matched_item.qty, precision): frappe.throw( _("For the item {0}, the quantity should be {1} according to the BOM {2}.").format( - frappe.bold(row.item_code), - flt(details.get("qty"), precision), + frappe.bold(item_code), + flt(details.get("qty")), get_link_to_form("BOM", self.bom_no), ), title=_("Incorrect Component Quantity"), ) + else: + frappe.throw( + _("According to the BOM {0}, the Item '{1}' is missing in the stock entry.").format( + get_link_to_form("BOM", self.bom_no), frappe.bold(item_code) + ), + title=_("Missing Item"), + ) + + def get_matched_items(self, item_code): + for row in self.items: + if row.item_code == item_code or row.original_item == item_code: + return row + + return {} @frappe.whitelist() def get_stock_and_rate(self): @@ -795,9 +774,6 @@ class StockEntry(StockController): self.set_total_incoming_outgoing_value() self.set_total_amount() - if not reset_outgoing_rate: - self.set_serial_and_batch_bundle() - def set_basic_rate(self, reset_outgoing_rate=True, raise_error_if_no_rate=True): """ Set rate for outgoing, scrapped and finished items @@ -937,7 +913,12 @@ class StockEntry(StockController): if frappe.db.exists( "Stock Entry", - {"docstatus": 1, "work_order": self.work_order, "purpose": "Manufacture"}, + { + "docstatus": 1, + "work_order": self.work_order, + "purpose": "Manufacture", + "name": ("!=", self.name), + }, ): frappe.throw( _("Only one {0} entry can be created against the Work Order {1}").format( @@ -1309,10 +1290,10 @@ class StockEntry(StockController): 3. Check FG Item and Qty against WO if present (mfg) """ production_item, wo_qty, finished_items = None, 0, [] - - wo_details = frappe.db.get_value("Work Order", self.work_order, ["production_item", "qty"]) - if wo_details: - production_item, wo_qty = wo_details + if self.work_order: + wo_details = frappe.db.get_value("Work Order", self.work_order, ["production_item", "qty"]) + if wo_details: + production_item, wo_qty = wo_details for d in self.get("items"): if d.is_finished_item: @@ -1366,7 +1347,7 @@ class StockEntry(StockController): ) ) - def update_stock_ledger(self): + def update_stock_ledger(self, allow_negative_stock=False): sl_entries = [] finished_item_row = self.get_finished_item_row() @@ -1380,7 +1361,7 @@ class StockEntry(StockController): if self.docstatus == 2: sl_entries.reverse() - self.make_sl_entries(sl_entries) + self.make_sl_entries(sl_entries, allow_negative_stock=allow_negative_stock) def get_finished_item_row(self): finished_item_row = None @@ -1594,10 +1575,6 @@ class StockEntry(StockController): if pro_doc.status == "Stopped": msg = f"Transaction not allowed against stopped Work Order {self.work_order}" - if self.is_return and pro_doc.status not in ["Completed", "Closed"]: - title = _("Stock Return") - msg = f"Work Order {self.work_order} must be completed or closed" - if msg: frappe.throw(_(msg), title=title) @@ -1621,17 +1598,38 @@ class StockEntry(StockController): @frappe.whitelist() def get_item_details(self, args=None, for_update=False): - item = frappe.db.sql( - """select i.name, i.stock_uom, i.description, i.image, i.item_name, i.item_group, - i.has_batch_no, i.sample_quantity, i.has_serial_no, i.allow_alternative_item, - id.expense_account, id.buying_cost_center - from `tabItem` i LEFT JOIN `tabItem Default` id ON i.name=id.parent and id.company=%s - where i.name=%s - and i.disabled=0 - and (i.end_of_life is null or i.end_of_life<'1900-01-01' or i.end_of_life > %s)""", - (self.company, args.get("item_code"), nowdate()), - as_dict=1, + item = frappe.qb.DocType("Item") + item_default = frappe.qb.DocType("Item Default") + + query = ( + frappe.qb.from_(item) + .left_join(item_default) + .on((item.name == item_default.parent) & (item_default.company == self.company)) + .select( + item.name, + item.stock_uom, + item.description, + item.image, + item.item_name, + item.item_group, + item.has_batch_no, + item.sample_quantity, + item.has_serial_no, + item.allow_alternative_item, + item_default.expense_account, + item_default.buying_cost_center, + ) + .where( + (item.name == args.get("item_code")) + & (item.disabled == 0) + & ( + (item.end_of_life.isnull()) + | (item.end_of_life < "1900-01-01") + | (item.end_of_life > nowdate()) + ) + ) ) + item = query.run(as_dict=True) if not item: frappe.throw( @@ -1674,6 +1672,11 @@ class StockEntry(StockController): if self.purpose == "Material Issue": ret["expense_account"] = item.get("expense_account") or item_group_defaults.get("expense_account") + if self.purpose == "Manufacture" or not ret.get("expense_account"): + ret["expense_account"] = frappe.get_cached_value( + "Company", self.company, "stock_adjustment_account" + ) + for company_field, field in { "stock_adjustment_account": "expense_account", "cost_center": "cost_center", @@ -1868,7 +1871,7 @@ class StockEntry(StockController): item_wh = frappe._dict(item_wh) - for item in item_dict.values(): + for original_item, item in item_dict.items(): if self.pro_doc and cint(self.pro_doc.from_wip_warehouse): item["from_warehouse"] = self.pro_doc.wip_warehouse # Get Reserve Warehouse from Subcontract Order @@ -1881,6 +1884,9 @@ class StockEntry(StockController): self.to_warehouse if self.purpose == "Send to Subcontractor" else "" ) + if original_item != item.get("item_code"): + item["original_item"] = original_item + self.add_to_stock_entry_detail(item_dict) # fetch the serial_no of the first stock entry for the second stock entry @@ -2069,7 +2075,7 @@ class StockEntry(StockController): from erpnext.manufacturing.doctype.bom.bom import get_bom_items_as_dict if ( - frappe.db.get_single_value("Manufacturing Settings", "set_op_cost_and_scrape_from_sub_assemblies") + frappe.db.get_single_value("Manufacturing Settings", "set_op_cost_and_scrap_from_sub_assemblies") and self.work_order and frappe.get_cached_value("Work Order", self.work_order, "use_multi_level_bom") ): @@ -2443,7 +2449,7 @@ class StockEntry(StockController): item_row = item_dict[d] child_qty = flt(item_row["qty"], precision) - if not self.is_return and child_qty <= 0: + if not self.is_return and child_qty <= 0 and not item_row.get("is_scrap_item"): continue se_child = self.append("items") @@ -2876,7 +2882,7 @@ def get_operating_cost_per_unit(work_order=None, bom_no=None): if ( bom_no and frappe.db.get_single_value( - "Manufacturing Settings", "set_op_cost_and_scrape_from_sub_assemblies" + "Manufacturing Settings", "set_op_cost_and_scrap_from_sub_assemblies" ) and frappe.get_cached_value("Work Order", work_order, "use_multi_level_bom") ): @@ -2897,17 +2903,6 @@ def get_operating_cost_per_unit(work_order=None, bom_no=None): if bom.quantity: operating_cost_per_unit = flt(bom.operating_cost) / flt(bom.quantity) - if ( - work_order - and work_order.produced_qty - and cint( - frappe.db.get_single_value( - "Manufacturing Settings", "add_corrective_operation_cost_in_finished_good_valuation" - ) - ) - ): - operating_cost_per_unit += flt(work_order.corrective_operation_cost) / flt(work_order.produced_qty) - return operating_cost_per_unit @@ -2982,17 +2977,45 @@ def get_uom_details(item_code, uom, qty): @frappe.whitelist() def get_expired_batch_items(): - return frappe.db.sql( - """select b.item, sum(sle.actual_qty) as qty, sle.batch_no, sle.warehouse, sle.stock_uom\ - from `tabBatch` b, `tabStock Ledger Entry` sle - where b.expiry_date <= %s - and b.expiry_date is not NULL - and b.batch_id = sle.batch_no and sle.is_cancelled = 0 - group by sle.warehouse, sle.item_code, sle.batch_no""", - (nowdate()), - as_dict=1, + from erpnext.stock.doctype.serial_and_batch_bundle.serial_and_batch_bundle import get_auto_batch_nos + + expired_batches = get_expired_batches() + if not expired_batches: + return [] + + expired_batches_stock = get_auto_batch_nos( + frappe._dict( + { + "batch_no": list(expired_batches.keys()), + "for_stock_levels": True, + } + ) ) + for row in expired_batches_stock: + row.update(expired_batches.get(row.batch_no)) + + return expired_batches_stock + + +def get_expired_batches(): + batch = frappe.qb.DocType("Batch") + + data = ( + frappe.qb.from_(batch) + .select(batch.item, batch.name.as_("batch_no"), batch.stock_uom) + .where((batch.expiry_date <= nowdate()) & (batch.expiry_date.isnotnull())) + ).run(as_dict=True) + + if not data: + return [] + + expired_batches = frappe._dict() + for row in data: + expired_batches[row.batch_no] = row + + return expired_batches + @frappe.whitelist() def get_warehouse_details(args): @@ -3148,11 +3171,13 @@ def get_available_materials(work_order) -> dict: if row.serial_no: for serial_no in get_serial_nos(row.serial_no): - item_data.serial_nos.remove(serial_no) + if serial_no in item_data.serial_nos: + item_data.serial_nos.remove(serial_no) elif row.serial_nos: for serial_no in get_serial_nos(row.serial_nos): - item_data.serial_nos.remove(serial_no) + if serial_no in item_data.serial_nos: + item_data.serial_nos.remove(serial_no) return available_materials @@ -3243,12 +3268,13 @@ def create_serial_and_batch_bundle(parent_doc, row, child, type_of_transaction=N } ) + precision = frappe.get_precision("Stock Entry Detail", "qty") if row.serial_nos and row.batches_to_be_consume: doc.has_serial_no = 1 doc.has_batch_no = 1 batchwise_serial_nos = get_batchwise_serial_nos(child.item_code, row) for batch_no, qty in row.batches_to_be_consume.items(): - while qty > 0: + while flt(qty, precision) > 0: qty -= 1 doc.append( "entries", @@ -3266,9 +3292,15 @@ def create_serial_and_batch_bundle(parent_doc, row, child, type_of_transaction=N doc.append("entries", {"serial_no": serial_no, "warehouse": row.warehouse, "qty": -1}) elif row.batches_to_be_consume: + precision = frappe.get_precision("Serial and Batch Entry", "qty") doc.has_batch_no = 1 for batch_no, qty in row.batches_to_be_consume.items(): - doc.append("entries", {"batch_no": batch_no, "warehouse": row.warehouse, "qty": qty * -1}) + if flt(qty, precision) > 0: + qty = flt(qty, precision) + doc.append("entries", {"batch_no": batch_no, "warehouse": row.warehouse, "qty": qty * -1}) + + if not doc.entries: + return None return doc.insert(ignore_permissions=True).name diff --git a/erpnext/stock/doctype/stock_entry/test_stock_entry.py b/erpnext/stock/doctype/stock_entry/test_stock_entry.py index a9529cc2ede..7fa31cae57b 100644 --- a/erpnext/stock/doctype/stock_entry/test_stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/test_stock_entry.py @@ -970,60 +970,79 @@ class TestStockEntry(FrappeTestCase): self.assertRaises(frappe.ValidationError, ste.submit) - def test_same_serial_nos_in_repack_or_manufacture_entries(self): - s1 = make_serialized_item(target_warehouse="_Test Warehouse - _TC") - serial_nos = get_serial_nos_from_bundle(s1.get("items")[0].serial_and_batch_bundle) - - s2 = make_stock_entry( - item_code="_Test Serialized Item With Series", - source="_Test Warehouse - _TC", - qty=2, - basic_rate=100, - purpose="Repack", - serial_no=serial_nos, - do_not_save=True, + def test_quality_check_for_scrap_item(self): + from erpnext.manufacturing.doctype.work_order.work_order import ( + make_stock_entry as _make_stock_entry, ) - frappe.flags.use_serial_and_batch_fields = True + scrap_item = "_Test Scrap Item 1" + make_item(scrap_item, {"is_stock_item": 1, "is_purchase_item": 0}) - cls_obj = SerialBatchCreation( + bom_name = frappe.db.get_value("BOM Scrap Item", {"docstatus": 1}, "parent") + production_item = frappe.db.get_value("BOM", bom_name, "item") + + work_order = frappe.new_doc("Work Order") + work_order.production_item = production_item + work_order.update( { - "type_of_transaction": "Inward", - "serial_and_batch_bundle": s2.items[0].serial_and_batch_bundle, - "item_code": "_Test Serialized Item", - "warehouse": "_Test Warehouse - _TC", + "company": "_Test Company", + "fg_warehouse": "_Test Warehouse 1 - _TC", + "production_item": production_item, + "bom_no": bom_name, + "qty": 1.0, + "stock_uom": frappe.db.get_value("Item", production_item, "stock_uom"), + "skip_transfer": 1, } ) - cls_obj.duplicate_package() - bundle_id = cls_obj.serial_and_batch_bundle - doc = frappe.get_doc("Serial and Batch Bundle", bundle_id) - doc.db_set( - { - "item_code": "_Test Serialized Item", - "warehouse": "_Test Warehouse - _TC", - } - ) + work_order.get_items_and_operations_from_bom() + work_order.submit() - doc.load_from_db() + stock_entry = frappe.get_doc(_make_stock_entry(work_order.name, "Manufacture", 1)) + for row in stock_entry.items: + if row.s_warehouse: + make_stock_entry( + item_code=row.item_code, + target=row.s_warehouse, + qty=row.qty, + basic_rate=row.basic_rate or 100, + ) - s2.append( - "items", - { - "item_code": "_Test Serialized Item", - "t_warehouse": "_Test Warehouse - _TC", - "qty": 2, - "basic_rate": 120, - "expense_account": "Stock Adjustment - _TC", - "conversion_factor": 1.0, - "cost_center": "_Test Cost Center - _TC", - "serial_and_batch_bundle": bundle_id, - }, - ) + if row.is_scrap_item: + row.item_code = scrap_item + row.uom = frappe.db.get_value("Item", scrap_item, "stock_uom") + row.stock_uom = frappe.db.get_value("Item", scrap_item, "stock_uom") - s2.submit() - s2.cancel() - frappe.flags.use_serial_and_batch_fields = False + stock_entry.inspection_required = 1 + stock_entry.save() + + self.assertTrue([row.item_code for row in stock_entry.items if row.is_scrap_item]) + + for row in stock_entry.items: + if not row.is_scrap_item: + qc = frappe.get_doc( + { + "doctype": "Quality Inspection", + "reference_name": stock_entry.name, + "inspected_by": "Administrator", + "reference_type": "Stock Entry", + "inspection_type": "In Process", + "status": "Accepted", + "sample_size": 1, + "item_code": row.item_code, + } + ) + + qc_name = qc.submit() + row.quality_inspection = qc_name + + stock_entry.reload() + stock_entry.submit() + for row in stock_entry.items: + if row.is_scrap_item: + self.assertFalse(row.quality_inspection) + else: + self.assertTrue(row.quality_inspection) def test_quality_check(self): item_code = "_Test Item For QC" @@ -1700,6 +1719,46 @@ class TestStockEntry(FrappeTestCase): mr.cancel() mr.delete() + def test_auto_reorder_level_with_lead_time_days(self): + from erpnext.stock.reorder_item import reorder_item + + item_doc = make_item( + "Test Auto Reorder Item - 002", + properties={"stock_uom": "Kg", "purchase_uom": "Nos", "is_stock_item": 1, "lead_time_days": 2}, + uoms=[{"uom": "Nos", "conversion_factor": 5}], + ) + + if not frappe.db.exists("Item Reorder", {"parent": item_doc.name}): + item_doc.append( + "reorder_levels", + { + "warehouse_reorder_level": 0, + "warehouse_reorder_qty": 10, + "warehouse": "_Test Warehouse - _TC", + "material_request_type": "Purchase", + }, + ) + + item_doc.save(ignore_permissions=True) + + frappe.db.set_single_value("Stock Settings", "auto_indent", 1) + + mr_list = reorder_item() + + frappe.db.set_single_value("Stock Settings", "auto_indent", 0) + mrs = frappe.get_all( + "Material Request Item", + fields=["schedule_date"], + filters={"item_code": item_doc.name, "uom": "Nos"}, + ) + + for mri in mrs: + self.assertEqual(getdate(mri.schedule_date), getdate(add_days(today(), 2))) + + for mr in mr_list: + mr.cancel() + mr.delete() + def test_use_serial_and_batch_fields(self): item = make_item( "Test Use Serial and Batch Item SN Item", @@ -1743,7 +1802,7 @@ class TestStockEntry(FrappeTestCase): for serial_no in serial_nos: self.assertTrue(frappe.db.exists("Serial No", serial_no)) - self.assertEqual(frappe.db.get_value("Serial No", serial_no, "status"), "Delivered") + self.assertEqual(frappe.db.get_value("Serial No", serial_no, "status"), "Consumed") def test_serial_batch_bundle_type_of_transaction(self): item = make_item( @@ -1848,6 +1907,106 @@ class TestStockEntry(FrappeTestCase): self.assertEqual(sle.stock_value_difference, 100) self.assertEqual(sle.stock_value, 100 * i) + def test_stock_entry_amount(self): + warehouse = "_Test Warehouse - _TC" + rm_item_code = "Test Stock Entry Amount 1" + make_item(rm_item_code, {"is_stock_item": 1}) + + fg_item_code = "Test Repack Stock Entry Amount 1" + make_item(fg_item_code, {"is_stock_item": 1}) + + make_stock_entry( + item_code=rm_item_code, + qty=1, + to_warehouse=warehouse, + basic_rate=200, + posting_date=nowdate(), + ) + + se = make_stock_entry( + item_code=rm_item_code, + qty=1, + purpose="Repack", + basic_rate=100, + do_not_save=True, + ) + + se.items[0].s_warehouse = warehouse + se.append( + "items", + { + "item_code": fg_item_code, + "qty": 1, + "t_warehouse": warehouse, + "uom": "Nos", + "conversion_factor": 1.0, + }, + ) + se.set_stock_entry_type() + se.submit() + + self.assertEqual(se.items[0].amount, 200) + self.assertEqual(se.items[0].basic_amount, 200) + + make_stock_entry( + item_code=rm_item_code, + qty=1, + to_warehouse=warehouse, + basic_rate=300, + posting_date=add_days(nowdate(), -1), + ) + + se.reload() + self.assertEqual(se.items[0].amount, 300) + self.assertEqual(se.items[0].basic_amount, 300) + + def test_use_batch_wise_valuation_for_moving_average_item(self): + item_code = "_Test Use Batch Wise MA Valuation Item" + + make_item( + item_code, + { + "is_stock_item": 1, + "valuation_method": "Moving Average", + "has_batch_no": 1, + "create_new_batch": 1, + "batch_naming_series": "Test-UBWVMAV-T-NNS.#####", + }, + ) + + frappe.db.set_single_value("Stock Settings", "do_not_use_batchwise_valuation", 0) + + batches = [] + se = make_stock_entry( + item_code=item_code, + qty=10, + to_warehouse="_Test Warehouse - _TC", + basic_rate=100, + posting_date=add_days(nowdate(), -2), + ) + + batches.append(get_batch_from_bundle(se.items[0].serial_and_batch_bundle)) + + se = make_stock_entry( + item_code=item_code, + qty=10, + to_warehouse="_Test Warehouse - _TC", + basic_rate=300, + posting_date=add_days(nowdate(), -1), + ) + + batches.append(get_batch_from_bundle(se.items[0].serial_and_batch_bundle)) + + se = make_stock_entry( + item_code=item_code, + qty=5, + from_warehouse="_Test Warehouse - _TC", + batch_no=batches[1], + posting_date=nowdate(), + ) + + self.assertEqual(se.items[0].basic_rate, 300) + def make_serialized_item(**args): args = frappe._dict(args) diff --git a/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json b/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json index 48fc31ab663..9824911404e 100644 --- a/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json +++ b/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json @@ -250,6 +250,7 @@ }, { "depends_on": "eval:doc.uom != doc.stock_uom", + "fetch_from": "item_code.stock_uom", "fieldname": "stock_uom", "fieldtype": "Link", "label": "Stock UOM", @@ -588,7 +589,8 @@ "label": "Serial and Batch Bundle", "no_copy": 1, "options": "Serial and Batch Bundle", - "print_hide": 1 + "print_hide": 1, + "search_index": 1 }, { "default": "0", @@ -606,11 +608,12 @@ "fieldtype": "Column Break" } ], + "grid_page_length": 50, "idx": 1, "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2024-02-25 15:58:40.982582", + "modified": "2025-03-26 21:01:58.544797", "modified_by": "Administrator", "module": "Stock", "name": "Stock Entry Detail", @@ -620,4 +623,4 @@ "sort_field": "modified", "sort_order": "ASC", "states": [] -} \ No newline at end of file +} diff --git a/erpnext/stock/doctype/stock_entry_type/stock_entry_type.json b/erpnext/stock/doctype/stock_entry_type/stock_entry_type.json index c522df59941..2cbb029488f 100644 --- a/erpnext/stock/doctype/stock_entry_type/stock_entry_type.json +++ b/erpnext/stock/doctype/stock_entry_type/stock_entry_type.json @@ -37,7 +37,7 @@ } ], "links": [], - "modified": "2024-08-24 16:00:22.696958", + "modified": "2025-01-15 16:00:22.696958", "modified_by": "Administrator", "module": "Stock", "name": "Stock Entry Type", diff --git a/erpnext/stock/doctype/stock_ledger_entry/patches/__init__.py b/erpnext/stock/doctype/stock_ledger_entry/patches/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/erpnext/stock/doctype/stock_ledger_entry/patches/ensure_sle_indexes.py b/erpnext/stock/doctype/stock_ledger_entry/patches/ensure_sle_indexes.py new file mode 100644 index 00000000000..7f29b27af3f --- /dev/null +++ b/erpnext/stock/doctype/stock_ledger_entry/patches/ensure_sle_indexes.py @@ -0,0 +1,9 @@ +from erpnext.stock.doctype.stock_ledger_entry.stock_ledger_entry import ( + on_doctype_update as create_sle_indexes, +) + + +def execute(): + """Ensure SLE Indexes""" + + create_sle_indexes() diff --git a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.json b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.json index d9af64c3983..66fa6064129 100644 --- a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.json +++ b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.json @@ -124,6 +124,7 @@ "options": "DocType", "print_width": "150px", "read_only": 1, + "search_index": 1, "width": "150px" }, { @@ -362,7 +363,7 @@ "in_create": 1, "index_web_pages_for_search": 1, "links": [], - "modified": "2024-08-27 09:28:03.961443", + "modified": "2024-12-23 18:03:05.171023", "modified_by": "Administrator", "module": "Stock", "name": "Stock Ledger Entry", 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 319303dbbb0..6f5acd64d44 100644 --- a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +++ b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py @@ -8,6 +8,7 @@ import frappe from frappe import _, bold from frappe.core.doctype.role.role import get_users from frappe.model.document import Document +from frappe.query_builder.functions import Sum from frappe.utils import add_days, cint, flt, formatdate, get_datetime, getdate from erpnext.accounts.utils import get_fiscal_year @@ -25,6 +26,10 @@ class BackDatedStockTransaction(frappe.ValidationError): pass +class InventoryDimensionNegativeStockError(frappe.ValidationError): + pass + + exclude_from_linked_with = True @@ -83,6 +88,7 @@ class StockLedgerEntry(Document): self.flags.ignore_submit_comment = True from erpnext.stock.utils import validate_disabled_warehouse, validate_warehouse_company + self.set_posting_datetime() self.validate_mandatory() self.validate_batch() validate_disabled_warehouse(self.warehouse) @@ -93,72 +99,62 @@ class StockLedgerEntry(Document): self.validate_with_last_transaction_posting_time() self.validate_inventory_dimension_negative_stock() - def set_posting_datetime(self, save=False): + def set_posting_datetime(self): from erpnext.stock.utils import get_combine_datetime - if save: - posting_datetime = get_combine_datetime(self.posting_date, self.posting_time) - if not self.posting_datetime or self.posting_datetime != posting_datetime: - self.db_set("posting_datetime", posting_datetime) - else: - self.posting_datetime = get_combine_datetime(self.posting_date, self.posting_time) + self.posting_datetime = get_combine_datetime(self.posting_date, self.posting_time) def validate_inventory_dimension_negative_stock(self): - if self.is_cancelled: + if self.is_cancelled or self.actual_qty >= 0: return - extra_cond = "" - kwargs = {} - dimensions = self._get_inventory_dimensions() if not dimensions: return - for dimension, values in dimensions.items(): - kwargs[dimension] = values.get("value") - extra_cond += f" and {dimension} = %({dimension})s" - - kwargs.update( - { - "item_code": self.item_code, - "warehouse": self.warehouse, - "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: - qty_after_transaction = sle.qty_after_transaction + for dimension, values in dimensions.items(): + dimension_value = values.get("value") + available_qty = self.get_available_qty_after_prev_transaction(dimension, dimension_value) - 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) + diff = flt(available_qty + flt(self.actual_qty), flt_precision) # qty after current transaction + if diff < 0 and abs(diff) > 0.0001: + self.throw_validation_error(diff, dimension, dimension_value) - def throw_validation_error(self, diff, dimensions): - dimension_msg = _(", with the inventory {0}: {1}").format( - "dimensions" if len(dimensions) > 1 else "dimension", - ", ".join(f"{bold(d.doctype)} ({d.value})" for k, d in dimensions.items()), - ) + def get_available_qty_after_prev_transaction(self, dimension, dimension_value): + sle = frappe.qb.DocType("Stock Ledger Entry") + available_qty = ( + frappe.qb.from_(sle) + .select(Sum(sle.actual_qty)) + .where( + (sle.item_code == self.item_code) + & (sle.warehouse == self.warehouse) + & (sle.posting_datetime < self.posting_datetime) + & (sle.company == self.company) + & (sle.is_cancelled == 0) + & (sle[dimension] == dimension_value) + ) + ).run() + return available_qty[0][0] or 0 + + def throw_validation_error(self, diff, dimension, dimension_value): msg = _( - "{0} units of {1} are required in {2}{3}, on {4} {5} for {6} to complete the transaction." + "{0} units of {1} are required in {2} with the inventory dimension: {3} ({4}) on {5} {6} for {7} to complete the transaction." ).format( abs(diff), frappe.get_desk_link("Item", self.item_code), frappe.get_desk_link("Warehouse", self.warehouse), - dimension_msg, + frappe.bold(dimension), + frappe.bold(dimension_value), self.posting_date, self.posting_time, frappe.get_desk_link(self.voucher_type, self.voucher_no), ) - frappe.throw(msg, title=_("Inventory Dimension Negative Stock")) + frappe.throw( + msg, title=_("Inventory Dimension Negative Stock"), exc=InventoryDimensionNegativeStockError + ) def _get_inventory_dimensions(self): inv_dimensions = get_inventory_dimensions() @@ -173,7 +169,6 @@ class StockLedgerEntry(Document): return inv_dimension_dict def on_submit(self): - self.set_posting_datetime(save=True) self.check_stock_frozen_date() # Added to handle few test cases where serial_and_batch_bundles are not required diff --git a/erpnext/stock/doctype/stock_ledger_entry/test_stock_ledger_entry.py b/erpnext/stock/doctype/stock_ledger_entry/test_stock_ledger_entry.py index 42e402e0005..6beab7ce48d 100644 --- a/erpnext/stock/doctype/stock_ledger_entry/test_stock_ledger_entry.py +++ b/erpnext/stock/doctype/stock_ledger_entry/test_stock_ledger_entry.py @@ -456,6 +456,45 @@ class TestStockLedgerEntry(FrappeTestCase, StockTestMixin): frappe.set_user("Administrator") user.remove_roles("Stock Manager") + def test_batchwise_item_valuation_fifo(self): + item, warehouses, batches = setup_item_valuation_test(valuation_method="FIFO") + + # Incoming Entries for Stock Value check + pr_entry_list = [ + (item, warehouses[0], batches[0], 1, 100), + (item, warehouses[0], batches[1], 1, 50), + (item, warehouses[0], batches[0], 1, 150), + (item, warehouses[0], batches[1], 1, 100), + ] + prs = create_purchase_receipt_entries_for_batchwise_item_valuation_test(pr_entry_list) + sle_details = fetch_sle_details_for_doc_list(prs, ["stock_value"]) + sv_list = [d["stock_value"] for d in sle_details] + expected_sv = [100, 150, 300, 400] + self.assertEqual(expected_sv, sv_list, "Incorrect 'Stock Value' values") + + # Outgoing Entries for Stock Value Difference check + dn_entry_list = [ + (item, warehouses[0], batches[1], 1, 200), + (item, warehouses[0], batches[0], 1, 200), + (item, warehouses[0], batches[1], 1, 200), + (item, warehouses[0], batches[0], 1, 200), + ] + + frappe.flags.use_serial_and_batch_fields = True + dns = create_delivery_note_entries_for_batchwise_item_valuation_test(dn_entry_list) + sle_details = fetch_sle_details_for_doc_list(dns, ["stock_value_difference"]) + svd_list = [-1 * d["stock_value_difference"] for d in sle_details] + expected_incoming_rates = expected_abs_svd = [75.0, 125.0, 75.0, 125.0] + + self.assertEqual(expected_abs_svd, svd_list, "Incorrect 'Stock Value Difference' values") + for dn, _incoming_rate in zip(dns, expected_incoming_rates, strict=False): + self.assertTrue( + dn.items[0].incoming_rate in expected_abs_svd, + "Incorrect 'Incoming Rate' values fetched for DN items", + ) + + frappe.flags.use_serial_and_batch_fields = False + def test_batchwise_item_valuation_moving_average(self): item, warehouses, batches = setup_item_valuation_test(valuation_method="Moving Average") diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js index 31985678009..9307eee46f1 100644 --- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js +++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js @@ -207,6 +207,7 @@ frappe.ui.form.on("Stock Reconciliation", { posting_time: frm.doc.posting_time, batch_no: d.batch_no, row: d, + company: frm.doc.company, }, callback: function (r) { const row = frappe.model.get_doc(cdt, cdn); @@ -294,6 +295,11 @@ frappe.ui.form.on("Stock Reconciliation Item", { qty: function (frm, cdt, cdn) { frm.events.set_amount_quantity(frm, cdt, cdn); + + let row = locals[cdt][cdn]; + if (row.use_serial_batch_fields && !row.qty && row.serial_no) { + frappe.model.set_value(cdt, cdn, "serial_no", ""); + } }, valuation_rate: function (frm, cdt, cdn) { diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py index 93e3e69729b..c3d0480e820 100644 --- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py @@ -61,6 +61,7 @@ class StockReconciliation(StockController): self.head_row = ["Item Code", "Warehouse", "Quantity", "Valuation Rate"] def validate(self): + self.validate_items_exist() if not self.expense_account: self.expense_account = frappe.get_cached_value( "Company", self.company, "stock_adjustment_account" @@ -91,7 +92,7 @@ class StockReconciliation(StockController): dimensions = get_inventory_dimensions() for dimension in dimensions: for row in self.items: - if not row.batch_no and row.current_qty and row.get(dimension.get("fieldname")): + if not row.batch_no and row.current_qty and row.get(dimension.get("source_fieldname")): frappe.throw( _( "Row #{0}: You cannot use the inventory dimension '{1}' in Stock Reconciliation to modify the quantity or valuation rate. Stock reconciliation with inventory dimensions is intended solely for performing opening entries." @@ -138,8 +139,8 @@ class StockReconciliation(StockController): "voucher_type": self.doctype, "voucher_no": self.name, "voucher_detail_no": row.name, - "qty": row.current_qty, - "type_of_transaction": "Outward", + "qty": row.current_qty * -1, + "type_of_transaction": "Outward" if row.current_qty > 0 else "Inward", "company": self.company, "is_rejected": 0, "serial_nos": get_serial_nos(row.current_serial_no) @@ -162,6 +163,27 @@ class StockReconciliation(StockController): def set_current_serial_and_batch_bundle(self, voucher_detail_no=None, save=False) -> None: """Set Serial and Batch Bundle for each item""" for item in self.items: + if not frappe.db.exists("Item", item.item_code): + frappe.throw(_("Item {0} does not exist").format(item.item_code)) + + item_details = frappe.get_cached_value( + "Item", item.item_code, ["has_serial_no", "has_batch_no"], as_dict=1 + ) + + if not (item_details.has_serial_no or item_details.has_batch_no): + continue + + if ( + not item.use_serial_batch_fields + and not item.reconcile_all_serial_batch + and not item.serial_and_batch_bundle + ): + frappe.throw( + _("Row # {0}: Please add Serial and Batch Bundle for Item {1}").format( + item.idx, frappe.bold(item.item_code) + ) + ) + if not item.reconcile_all_serial_batch and item.serial_and_batch_bundle: bundle = self.get_bundle_for_specific_serial_batch(item) item.current_serial_and_batch_bundle = bundle.name @@ -177,13 +199,6 @@ class StockReconciliation(StockController): if voucher_detail_no and voucher_detail_no != item.name: continue - item_details = frappe.get_cached_value( - "Item", item.item_code, ["has_serial_no", "has_batch_no"], as_dict=1 - ) - - if not (item_details.has_serial_no or item_details.has_batch_no): - continue - if not item.current_serial_and_batch_bundle: serial_and_batch_bundle = frappe.get_doc( { @@ -320,6 +335,8 @@ class StockReconciliation(StockController): row.item_code, posting_date=self.posting_date, posting_time=self.posting_time, + for_stock_levels=True, + consider_negative_batches=True, ) total_current_qty += current_qty @@ -357,6 +374,9 @@ class StockReconciliation(StockController): def set_new_serial_and_batch_bundle(self): for item in self.items: + if not item.item_code: + continue + if item.use_serial_batch_fields: continue @@ -392,6 +412,28 @@ class StockReconciliation(StockController): item.qty = bundle_doc.total_qty item.valuation_rate = bundle_doc.avg_rate + elif item.serial_and_batch_bundle and item.qty: + self.update_existing_serial_and_batch_bundle(item) + + def update_existing_serial_and_batch_bundle(self, item): + batch_details = frappe.get_all( + "Serial and Batch Entry", + fields=["batch_no", "qty", "name"], + filters={"parent": item.serial_and_batch_bundle, "batch_no": ("is", "set")}, + ) + + if batch_details and len(batch_details) == 1: + batch = batch_details[0] + if abs(batch.qty) == abs(item.qty): + return + + update_values = { + "qty": item.qty, + "stock_value_difference": flt(item.valuation_rate) * flt(item.qty), + } + + frappe.db.set_value("Serial and Batch Entry", batch.name, update_values) + def remove_items_with_no_change(self): """Remove items if qty or rate is not changed""" self.difference_amount = 0.0 @@ -425,6 +467,7 @@ class StockReconciliation(StockController): batch_no=item.batch_no, inventory_dimensions_dict=inventory_dimensions_dict, row=item, + company=self.company, ) if ( @@ -621,7 +664,7 @@ class StockReconciliation(StockController): title=_("Stock Reservation"), ) - def update_stock_ledger(self): + def update_stock_ledger(self, allow_negative_stock=False): """find difference between current and expected entries and create stock ledger entries based on the difference""" from erpnext.stock.stock_ledger import get_previous_sle @@ -677,14 +720,18 @@ class StockReconciliation(StockController): sl_entries.append(self.get_sle_for_items(row)) if sl_entries: - allow_negative_stock = cint(frappe.db.get_single_value("Stock Settings", "allow_negative_stock")) + if not allow_negative_stock: + allow_negative_stock = cint( + frappe.db.get_single_value("Stock Settings", "allow_negative_stock") + ) + self.make_sl_entries(sl_entries, allow_negative_stock=allow_negative_stock) def make_adjustment_entry(self, row, sl_entries): from erpnext.stock.stock_ledger import get_stock_value_difference difference_amount = get_stock_value_difference( - row.item_code, row.warehouse, self.posting_date, self.posting_time + row.item_code, row.warehouse, self.posting_date, self.posting_time, self.name ) if not difference_amount: @@ -922,6 +969,9 @@ class StockReconciliation(StockController): if voucher_detail_no != row.name: continue + if row.current_qty < 0: + return + val_rate = 0.0 current_qty = 0.0 if row.current_serial_and_batch_bundle: @@ -933,6 +983,7 @@ class StockReconciliation(StockController): self.posting_date, self.posting_time, row=row, + company=self.company, ) current_qty = item_dict.get("qty") @@ -1050,6 +1101,8 @@ class StockReconciliation(StockController): posting_date=doc.posting_date, posting_time=doc.posting_time, ignore_voucher_nos=[doc.voucher_no], + for_stock_levels=True, + consider_negative_batches=True, ) or 0 ) * -1 @@ -1267,6 +1320,7 @@ def get_stock_balance_for( with_valuation_rate: bool = True, inventory_dimensions_dict=None, row=None, + company=None, ): frappe.has_permission("Stock Reconciliation", "write", throw=True) @@ -1315,7 +1369,32 @@ def get_stock_balance_for( qty, rate = data if item_dict.get("has_batch_no"): - qty = get_batch_qty(batch_no, warehouse, posting_date=posting_date, posting_time=posting_time) or 0 + qty = ( + get_batch_qty( + batch_no, + warehouse, + posting_date=posting_date, + posting_time=posting_time, + for_stock_levels=True, + consider_negative_batches=True, + ) + or 0 + ) + + if row.use_serial_batch_fields and row.batch_no and (qty or row.current_qty): + rate = get_incoming_rate( + frappe._dict( + { + "item_code": row.item_code, + "warehouse": row.warehouse, + "qty": flt(qty or row.current_qty) * -1, + "batch_no": row.batch_no, + "company": company, + "posting_date": posting_date, + "posting_time": posting_time, + } + ) + ) return { "qty": qty, diff --git a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py index 9bb6ba9ec90..77d2f7eaebb 100644 --- a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py +++ b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py @@ -1242,6 +1242,7 @@ class TestStockReconciliation(FrappeTestCase, StockTestMixin): } ) + doc.set_posting_datetime() doc.flags.ignore_permissions = True doc.flags.ignore_mandatory = True doc.flags.ignore_links = True @@ -1275,6 +1276,176 @@ class TestStockReconciliation(FrappeTestCase, StockTestMixin): qty = get_batch_qty(batch_id, warehouse, batch_item_code) self.assertEqual(qty, 110) + def test_skip_reposting_for_entries_after_stock_reco(self): + from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry + + item_code = create_item("Test Item For Skip Reposting After Stock Reco", is_stock_item=1).name + + warehouse = "_Test Warehouse - _TC" + + make_stock_entry( + posting_date="2024-11-01", + posting_time="11:00", + item_code=item_code, + target=warehouse, + qty=10, + basic_rate=100, + ) + + create_stock_reconciliation( + posting_date="2024-11-02", + posting_time="11:00", + item_code=item_code, + warehouse=warehouse, + qty=20, + rate=100, + ) + + se = make_stock_entry( + posting_date="2024-11-03", + posting_time="11:00", + item_code=item_code, + source=warehouse, + qty=15, + ) + + stock_value_difference = frappe.db.get_value( + "Stock Ledger Entry", {"voucher_no": se.name, "is_cancelled": 0}, "stock_value_difference" + ) + + self.assertEqual(stock_value_difference, 1500.00 * -1) + + make_stock_entry( + posting_date="2024-10-29", + posting_time="11:00", + item_code=item_code, + target=warehouse, + qty=10, + basic_rate=100, + ) + + stock_value_difference = frappe.db.get_value( + "Stock Ledger Entry", {"voucher_no": se.name, "is_cancelled": 0}, "stock_value_difference" + ) + + self.assertEqual(stock_value_difference, 1500.00 * -1) + + def test_stock_reco_for_negative_batch(self): + from erpnext.stock.doctype.batch.batch import get_batch_qty + from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry + + item_code = self.make_item( + "Test Item For Negative Batch", + { + "is_stock_item": 1, + "has_batch_no": 1, + "create_new_batch": 1, + "batch_number_series": "TEST-BATCH-NB-.###", + }, + ).name + + warehouse = "_Test Warehouse - _TC" + + se = make_stock_entry( + posting_date="2024-11-01", + posting_time="11:00", + item_code=item_code, + target=warehouse, + qty=10, + basic_rate=100, + ) + + batch_no = get_batch_from_bundle(se.items[0].serial_and_batch_bundle) + + se = make_stock_entry( + posting_date="2024-11-01", + posting_time="11:00", + item_code=item_code, + source=warehouse, + qty=10, + basic_rate=100, + use_serial_batch_fields=1, + batch_no=batch_no, + ) + + sles = frappe.get_all( + "Stock Ledger Entry", + filters={"voucher_no": se.name, "is_cancelled": 0}, + ) + + # intentionally setting negative qty + doc = frappe.get_doc("Stock Ledger Entry", sles[0].name) + doc.db_set( + { + "actual_qty": -20, + "qty_after_transaction": -10, + } + ) + + sabb_doc = frappe.get_doc("Serial and Batch Bundle", doc.serial_and_batch_bundle) + for row in sabb_doc.entries: + row.db_set("qty", -20) + + batch_qty = get_batch_qty(batch_no, warehouse, item_code, consider_negative_batches=True) + self.assertEqual(batch_qty, -10) + + sr = create_stock_reconciliation( + posting_date="2024-11-02", + posting_time="11:00", + item_code=item_code, + warehouse=warehouse, + use_serial_batch_fields=1, + batch_no=batch_no, + qty=0, + rate=100, + do_not_submit=True, + ) + + self.assertEqual(sr.items[0].current_qty, -10) + sr.submit() + sr.reload() + + self.assertTrue(sr.items[0].current_serial_and_batch_bundle) + self.assertFalse(sr.items[0].serial_and_batch_bundle) + + def test_stock_reco_batch_item_current_valuation(self): + from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry + + # Add new serial nos + item_code = "Stock-Reco-batch-Item-1234" + warehouse = "_Test Warehouse - _TC" + self.make_item( + item_code, + frappe._dict( + { + "is_stock_item": 1, + "has_batch_no": 1, + "create_new_batch": 1, + "batch_number_series": "JJ-SRI1234-.#####", + } + ), + ) + + se = make_stock_entry( + item_code=item_code, + target=warehouse, + qty=1, + basic_rate=100, + ) + + batch_no = get_batch_from_bundle(se.items[0].serial_and_batch_bundle) + + sr = create_stock_reconciliation( + item_code=item_code, warehouse=warehouse, qty=0, rate=100, do_not_save=1 + ) + + sr.items[0].batch_no = batch_no + sr.items[0].use_serial_batch_fields = 1 + sr.save() + self.assertEqual(sr.items[0].current_valuation_rate, 100) + self.assertEqual(sr.difference_amount, 100 * -1) + self.assertTrue(sr.items[0].qty == 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_reconciliation_item/stock_reconciliation_item.json b/erpnext/stock/doctype/stock_reconciliation_item/stock_reconciliation_item.json index bce819fe231..4d3a87c70aa 100644 --- a/erpnext/stock/doctype/stock_reconciliation_item/stock_reconciliation_item.json +++ b/erpnext/stock/doctype/stock_reconciliation_item/stock_reconciliation_item.json @@ -110,7 +110,8 @@ "depends_on": "eval:doc.use_serial_batch_fields === 1", "fieldname": "serial_no", "fieldtype": "Long Text", - "label": "Serial No" + "label": "Serial No", + "no_copy": 1 }, { "fieldname": "column_break_11", @@ -255,7 +256,7 @@ ], "istable": 1, "links": [], - "modified": "2024-05-30 23:20:00.947243", + "modified": "2025-03-12 16:34:51.326821", "modified_by": "Administrator", "module": "Stock", "name": "Stock Reconciliation Item", @@ -266,4 +267,4 @@ "sort_order": "DESC", "states": [], "track_changes": 1 -} +} \ No newline at end of file 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 8316488e253..a66214c0aa7 100644 --- a/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py +++ b/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py @@ -445,6 +445,7 @@ class StockReservationEntry(Document): voucher_delivered_qty = flt(delivered_qty) * flt(conversion_factor) allowed_qty = min(self.available_qty, (self.voucher_qty - voucher_delivered_qty - total_reserved_qty)) + qty_to_be_reserved = flt(qty_to_be_reserved, self.precision("reserved_qty")) 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( diff --git a/erpnext/stock/doctype/stock_settings/stock_settings.json b/erpnext/stock/doctype/stock_settings/stock_settings.json index 069e7da41cb..ea79b78132a 100644 --- a/erpnext/stock/doctype/stock_settings/stock_settings.json +++ b/erpnext/stock/doctype/stock_settings/stock_settings.json @@ -22,6 +22,8 @@ "allow_to_edit_stock_uom_qty_for_sales", "column_break_lznj", "allow_to_edit_stock_uom_qty_for_purchase", + "section_break_ylhd", + "allow_uom_with_conversion_rate_defined_in_item", "stock_validations_tab", "section_break_9", "over_delivery_receipt_allowance", @@ -46,15 +48,34 @@ "auto_reserve_serial_and_batch", "serial_and_batch_item_settings_tab", "section_break_7", + "allow_existing_serial_no", "do_not_use_batchwise_valuation", "auto_create_serial_and_batch_bundle_for_outward", "pick_serial_and_batch_based_on", "column_break_mhzc", "disable_serial_no_and_batch_selector", - "use_naming_series", - "naming_series_prefix", "use_serial_batch_fields", "do_not_update_serial_batch_on_creation_of_auto_bundle", + "serial_and_batch_bundle_section", + "set_serial_and_batch_bundle_naming_based_on_naming_series", + "section_break_gnhq", + "use_naming_series", + "column_break_wslv", + "naming_series_prefix", + "stock_reservation_tab", + "enable_stock_reservation", + "column_break_rx3e", + "allow_partial_reservation", + "auto_reserve_stock_for_sales_order_on_purchase", + "serial_and_batch_reservation_section", + "auto_reserve_serial_and_batch", + "quality_tab", + "quality_inspection_settings_section", + "action_if_quality_inspection_is_not_submitted", + "column_break_23", + "action_if_quality_inspection_is_rejected", + "section_break_uiau", + "allow_to_make_quality_inspection_after_purchase_or_delivery", "stock_planning_tab", "auto_material_request", "auto_indent", @@ -449,7 +470,6 @@ }, { "default": "0", - "depends_on": "eval:doc.valuation_method === \"Moving Average\"", "description": "If enabled, the system will use the moving average valuation method to calculate the valuation rate for the batched items and will not consider the individual batch-wise incoming rate.", "fieldname": "do_not_use_batchwise_valuation", "fieldtype": "Check", @@ -460,6 +480,57 @@ "fieldname": "over_picking_allowance", "fieldtype": "Percent", "label": "Over Picking Allowance" + }, + { + "default": "1", + "fieldname": "allow_existing_serial_no", + "fieldtype": "Check", + "label": "Allow existing Serial No to be Manufactured/Received again" + }, + { + "fieldname": "serial_and_batch_bundle_section", + "fieldtype": "Section Break", + "label": "Serial and Batch Bundle" + }, + { + "default": "0", + "fieldname": "set_serial_and_batch_bundle_naming_based_on_naming_series", + "fieldtype": "Check", + "label": "Set Serial and Batch Bundle Naming Based on Naming Series" + }, + { + "fieldname": "section_break_gnhq", + "fieldtype": "Section Break" + }, + { + "fieldname": "column_break_wslv", + "fieldtype": "Column Break" + }, + { + "fieldname": "section_break_ylhd", + "fieldtype": "Section Break" + }, + { + "default": "0", + "description": "If enabled, the system will allow selecting UOMs in sales and purchase transactions only if the conversion rate is set in the item master.", + "fieldname": "allow_uom_with_conversion_rate_defined_in_item", + "fieldtype": "Check", + "label": "Allow UOM with Conversion Rate Defined in Item" + }, + { + "fieldname": "quality_tab", + "fieldtype": "Tab Break", + "label": "Quality" + }, + { + "fieldname": "section_break_uiau", + "fieldtype": "Section Break" + }, + { + "default": "0", + "fieldname": "allow_to_make_quality_inspection_after_purchase_or_delivery", + "fieldtype": "Check", + "label": "Allow to Make Quality Inspection after Purchase / Delivery" } ], "icon": "icon-cog", @@ -467,7 +538,7 @@ "index_web_pages_for_search": 1, "issingle": 1, "links": [], - "modified": "2024-07-29 14:55:19.093508", + "modified": "2025-04-11 18:56:35.781929", "modified_by": "Administrator", "module": "Stock", "name": "Stock Settings", @@ -488,7 +559,7 @@ } ], "quick_entry": 1, - "sort_field": "modified", + "sort_field": "creation", "sort_order": "ASC", "states": [], "track_changes": 1 diff --git a/erpnext/stock/doctype/stock_settings/stock_settings.py b/erpnext/stock/doctype/stock_settings/stock_settings.py index 229ff944750..82b62fb4062 100644 --- a/erpnext/stock/doctype/stock_settings/stock_settings.py +++ b/erpnext/stock/doctype/stock_settings/stock_settings.py @@ -25,6 +25,7 @@ class StockSettings(Document): action_if_quality_inspection_is_not_submitted: DF.Literal["Stop", "Warn"] action_if_quality_inspection_is_rejected: DF.Literal["Stop", "Warn"] + allow_existing_serial_no: DF.Check allow_from_dn: DF.Check allow_from_pr: DF.Check allow_internal_transfer_at_arms_length_price: DF.Check @@ -32,6 +33,8 @@ class StockSettings(Document): allow_partial_reservation: DF.Check allow_to_edit_stock_uom_qty_for_purchase: DF.Check allow_to_edit_stock_uom_qty_for_sales: DF.Check + allow_to_make_quality_inspection_after_purchase_or_delivery: DF.Check + allow_uom_with_conversion_rate_defined_in_item: DF.Check auto_create_serial_and_batch_bundle_for_outward: DF.Check auto_indent: DF.Check auto_insert_price_list_rate_if_missing: DF.Check @@ -54,6 +57,7 @@ class StockSettings(Document): role_allowed_to_create_edit_back_dated_transactions: DF.Link | None role_allowed_to_over_deliver_receive: DF.Link | None sample_retention_warehouse: DF.Link | None + set_serial_and_batch_bundle_naming_based_on_naming_series: DF.Check show_barcode_field: DF.Check stock_auth_role: DF.Link | None stock_frozen_upto: DF.Date | None @@ -74,6 +78,7 @@ class StockSettings(Document): "default_warehouse", "set_qty_in_transactions_based_on_serial_no_input", "use_serial_batch_fields", + "set_serial_and_batch_bundle_naming_based_on_naming_series", ]: frappe.db.set_default(key, self.get(key, "")) @@ -101,22 +106,6 @@ class StockSettings(Document): self.validate_stock_reservation() self.change_precision_for_for_sales() self.change_precision_for_purchase() - self.validate_use_batch_wise_valuation() - - def validate_use_batch_wise_valuation(self): - if not self.do_not_use_batchwise_valuation: - return - - if self.valuation_method == "FIFO": - frappe.throw(_("Cannot disable batch wise valuation for FIFO valuation method.")) - - if frappe.get_all( - "Item", filters={"valuation_method": "FIFO", "is_stock_item": 1, "has_batch_no": 1}, limit=1 - ): - frappe.throw(_("Can't disable batch wise valuation for items with FIFO valuation method.")) - - if frappe.get_all("Batch", filters={"use_batchwise_valuation": 1}, limit=1): - frappe.throw(_("Can't disable batch wise valuation for active batches.")) def validate_warehouses(self): warehouse_fields = ["default_warehouse", "sample_retention_warehouse"] diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py index 5cfa306066d..ff87d159e36 100644 --- a/erpnext/stock/get_item_details.py +++ b/erpnext/stock/get_item_details.py @@ -10,7 +10,7 @@ from frappe.model import child_table_fields, default_fields from frappe.model.meta import get_field_precision from frappe.model.utils import get_fetch_values from frappe.query_builder.functions import IfNull, Sum -from frappe.utils import add_days, add_months, cint, cstr, flt, getdate +from frappe.utils import add_days, add_months, cint, cstr, flt, getdate, parse_json from erpnext import get_company_currency from erpnext.accounts.doctype.pricing_rule.pricing_rule import ( @@ -115,6 +115,13 @@ def get_item_details(args, doc=None, for_validate=False, overwrite_warehouse=Tru out.update(data) + if ( + frappe.db.get_single_value("Stock Settings", "auto_create_serial_and_batch_bundle_for_outward") + and not args.get("serial_and_batch_bundle") + and (args.get("use_serial_batch_fields") or args.get("doctype") == "POS Invoice") + ): + update_stock(args, out, doc) + if args.transaction_date and item.lead_time_days: out.schedule_date = out.lead_time_date = add_days(args.transaction_date, item.lead_time_days) @@ -168,6 +175,103 @@ def update_bin_details(args, out, doc): out.update(bin_details) +def update_stock(ctx, out, doc=None): + from erpnext.stock.doctype.batch.batch import get_available_batches + from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos_for_outward + + if ( + ( + ctx.get("doctype") in ["Delivery Note", "POS Invoice"] + or (ctx.get("doctype") == "Sales Invoice" and ctx.get("update_stock")) + ) + and out.warehouse + and out.stock_qty > 0 + ): + if doc and isinstance(doc, dict): + doc = frappe._dict(doc) + + kwargs = frappe._dict( + { + "item_code": ctx.item_code, + "warehouse": ctx.warehouse, + "based_on": frappe.db.get_single_value("Stock Settings", "pick_serial_and_batch_based_on"), + } + ) + + if ctx.get("ignore_serial_nos"): + kwargs["ignore_serial_nos"] = ctx.get("ignore_serial_nos") + + qty = out.stock_qty + batches = [] + if out.has_batch_no and not ctx.get("batch_no"): + batches = get_available_batches(kwargs) + if doc: + filter_batches(batches, doc) + + for batch_no, batch_qty in batches.items(): + rate = get_batch_based_item_price( + {"price_list": doc.get("selling_price_list"), "uom": out.uom, "batch_no": batch_no}, + out.item_code, + ) + if batch_qty >= qty: + out.update({"batch_no": batch_no, "actual_batch_qty": qty}) + if rate: + out.update({"rate": rate, "price_list_rate": rate}) + break + else: + qty -= batch_qty + + out.update({"batch_no": batch_no, "actual_batch_qty": batch_qty}) + if rate: + out.update({"rate": rate, "price_list_rate": rate}) + + if out.has_serial_no and out.has_batch_no and has_incorrect_serial_nos(ctx, out): + kwargs["batches"] = [ctx.get("batch_no")] if ctx.get("batch_no") else [out.get("batch_no")] + serial_nos = get_serial_nos_for_outward(kwargs) + serial_nos = get_filtered_serial_nos(serial_nos, doc) + + out["serial_no"] = "\n".join(serial_nos[: cint(out.stock_qty)]) + + elif out.has_serial_no and not ctx.get("serial_no"): + serial_nos = get_serial_nos_for_outward(kwargs) + serial_nos = get_filtered_serial_nos(serial_nos, doc) + + out["serial_no"] = "\n".join(serial_nos[: cint(out.stock_qty)]) + + +def has_incorrect_serial_nos(ctx, out): + from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos + + if not ctx.get("serial_no"): + return True + + serial_nos = get_serial_nos(ctx.get("serial_no")) + if len(serial_nos) != out.get("stock_qty"): + return True + + return False + + +def filter_batches(batches, doc): + for row in doc.get("items"): + if row.get("batch_no") in batches: + batches[row.get("batch_no")] -= row.get("qty") + if batches[row.get("batch_no")] <= 0: + del batches[row.get("batch_no")] + + +def get_filtered_serial_nos(serial_nos, doc): + from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos + + for row in doc.get("items"): + if row.get("serial_no"): + for serial_no in get_serial_nos(row.get("serial_no")): + if serial_no in serial_nos: + serial_nos.remove(serial_no) + + return serial_nos + + def process_args(args): if isinstance(args, str): args = json.loads(args) @@ -592,7 +696,10 @@ def _get_item_tax_template(args, taxes, out=None, for_validate=False): if tax.valid_from or tax.maximum_net_rate: # In purchase Invoice first preference will be given to supplier invoice date # if supplier date is not present then posting date - validation_date = args.get("bill_date") or args.get("transaction_date") + + validation_date = ( + args.get("bill_date") or args.get("posting_date") or args.get("transaction_date") + ) if getdate(tax.valid_from) <= getdate(validation_date) and is_within_valid_range(args, tax): taxes_with_validity.append(tax) @@ -889,7 +996,7 @@ def insert_item_price(args): ) -def get_item_price(args, item_code, ignore_party=False): +def get_item_price(args, item_code, ignore_party=False, force_batch_no=False) -> list[dict]: """ Get name, price_list_rate from Item Price based on conditions Check if the desired qty is within the increment of the packing list. @@ -906,13 +1013,17 @@ def get_item_price(args, item_code, ignore_party=False): (ip.item_code == item_code) & (ip.price_list == args.get("price_list")) & (IfNull(ip.uom, "").isin(["", args.get("uom")])) - & (IfNull(ip.batch_no, "").isin(["", args.get("batch_no")])) ) .orderby(ip.valid_from, order=frappe.qb.desc) .orderby(IfNull(ip.batch_no, ""), order=frappe.qb.desc) .orderby(ip.uom, order=frappe.qb.desc) ) + if force_batch_no: + query = query.where(ip.batch_no == args.get("batch_no")) + else: + query = query.where(IfNull(ip.batch_no, "").isin(["", args.get("batch_no")])) + if not ignore_party: if args.get("customer"): query = query.where(ip.customer == args.get("customer")) @@ -930,6 +1041,26 @@ def get_item_price(args, item_code, ignore_party=False): return query.run() +@frappe.whitelist() +def get_batch_based_item_price(params, item_code) -> float: + if isinstance(params, str): + params = parse_json(params) + + item_price = get_item_price(params, item_code, force_batch_no=True) + + if not item_price: + item_price = get_item_price(params, item_code, ignore_party=True, force_batch_no=True) + + if ( + item_price + and item_price[0][2] == params.get("uom") + and not params.get("items", [{}])[0].get("is_free_item", 0) + ): + return item_price[0][1] + + return 0.0 + + def get_price_list_rate_for(args, item_code): """ :param customer: link to Customer DocType diff --git a/erpnext/stock/number_card/total_warehouses/total_warehouses.json b/erpnext/stock/number_card/total_warehouses/total_warehouses.json index ab0836a3afe..8eadfac48d1 100644 --- a/erpnext/stock/number_card/total_warehouses/total_warehouses.json +++ b/erpnext/stock/number_card/total_warehouses/total_warehouses.json @@ -3,6 +3,7 @@ "docstatus": 0, "doctype": "Number Card", "document_type": "Warehouse", + "dynamic_filters_json": "[[\"Warehouse\",\"company\",\"=\",\"frappe.defaults.get_user_default(\\\"Company\\\")\"]]", "filters_json": "[[\"Warehouse\",\"disabled\",\"=\",0]]", "function": "Count", "idx": 0, diff --git a/erpnext/stock/reorder_item.py b/erpnext/stock/reorder_item.py index 7bc8b71917c..570dc3a3405 100644 --- a/erpnext/stock/reorder_item.py +++ b/erpnext/stock/reorder_item.py @@ -98,6 +98,7 @@ def _reorder_item(): "description": d.description, "stock_uom": d.stock_uom, "purchase_uom": d.purchase_uom, + "lead_time_days": d.lead_time_days, } ), ) @@ -129,6 +130,7 @@ def get_items_for_reorder() -> dict[str, list]: item_table.brand, item_table.variant_of, item_table.has_variants, + item_table.lead_time_days, ) .where( (item_table.disabled == 0) @@ -354,9 +356,14 @@ def get_email_list(company): def get_comapny_wise_users(company): + companies = [company] + + if parent_company := frappe.db.get_value("Company", company, "parent_company"): + companies.append(parent_company) + users = frappe.get_all( "User Permission", - filters={"allow": "Company", "for_value": company, "apply_to_all_doctypes": 1}, + filters={"allow": "Company", "for_value": ("in", companies), "apply_to_all_doctypes": 1}, fields=["user"], ) diff --git a/erpnext/stock/report/available_batch_report/available_batch_report.js b/erpnext/stock/report/available_batch_report/available_batch_report.js index 011f7e09ca2..a13e4ca82f7 100644 --- a/erpnext/stock/report/available_batch_report/available_batch_report.js +++ b/erpnext/stock/report/available_batch_report/available_batch_report.js @@ -17,7 +17,7 @@ frappe.query_reports["Available Batch Report"] = { fieldtype: "Date", width: "80", reqd: 1, - default: frappe.datetime.add_months(frappe.datetime.get_today(), -1), + default: frappe.datetime.get_today(), }, { fieldname: "item_code", diff --git a/erpnext/stock/report/available_serial_no/__init__.py b/erpnext/stock/report/available_serial_no/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/erpnext/stock/report/available_serial_no/available_serial_no.js b/erpnext/stock/report/available_serial_no/available_serial_no.js new file mode 100644 index 00000000000..17f8c666e04 --- /dev/null +++ b/erpnext/stock/report/available_serial_no/available_serial_no.js @@ -0,0 +1,118 @@ +// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors +// License: GNU General Public License v3. See license.txt + +frappe.query_reports["Available Serial No"] = { + filters: [ + { + fieldname: "company", + label: __("Company"), + fieldtype: "Link", + options: "Company", + default: frappe.defaults.get_user_default("Company"), + reqd: 1, + }, + { + fieldname: "from_date", + label: __("From Date"), + fieldtype: "Date", + default: frappe.datetime.add_months(frappe.datetime.get_today(), -1), + reqd: 1, + }, + { + fieldname: "to_date", + label: __("To Date"), + fieldtype: "Date", + default: frappe.datetime.get_today(), + reqd: 1, + }, + { + fieldname: "warehouse", + label: __("Warehouse"), + fieldtype: "Link", + options: "Warehouse", + get_query: function () { + const company = frappe.query_report.get_filter_value("company"); + return { + filters: { company: company }, + }; + }, + }, + { + fieldname: "item_code", + label: __("Item"), + fieldtype: "Link", + options: "Item", + get_query: function () { + return { + query: "erpnext.controllers.queries.item_query", + filters: { + has_serial_no: 1, + }, + }; + }, + }, + { + fieldname: "item_group", + label: __("Item Group"), + fieldtype: "Link", + options: "Item Group", + }, + { + fieldname: "batch_no", + label: __("Batch No"), + fieldtype: "Link", + options: "Batch", + on_change() { + const batch_no = frappe.query_report.get_filter_value("batch_no"); + if (batch_no) { + frappe.query_report.set_filter_value("segregate_serial_batch_bundle", 1); + } else { + frappe.query_report.set_filter_value("segregate_serial_batch_bundle", 0); + } + }, + }, + { + fieldname: "brand", + label: __("Brand"), + fieldtype: "Link", + options: "Brand", + }, + { + fieldname: "voucher_no", + label: __("Voucher #"), + fieldtype: "Data", + }, + { + fieldname: "project", + label: __("Project"), + fieldtype: "Link", + options: "Project", + }, + { + fieldname: "include_uom", + label: __("Include UOM"), + fieldtype: "Link", + options: "UOM", + }, + { + fieldname: "valuation_field_type", + label: __("Valuation Field Type"), + fieldtype: "Select", + width: "80", + options: "Currency\nFloat", + default: "Currency", + }, + ], + formatter: function (value, row, column, data, default_formatter) { + value = default_formatter(value, row, column, data); + if (column.fieldname == "out_qty" && data && data.out_qty < 0) { + value = "" + value + ""; + } else if (column.fieldname == "in_qty" && data && data.in_qty > 0) { + value = "" + value + ""; + } + + return value; + }, +}; + +erpnext.utils.add_inventory_dimensions("Balance Serial No", 10); diff --git a/erpnext/stock/report/available_serial_no/available_serial_no.json b/erpnext/stock/report/available_serial_no/available_serial_no.json new file mode 100644 index 00000000000..63bba01e7fa --- /dev/null +++ b/erpnext/stock/report/available_serial_no/available_serial_no.json @@ -0,0 +1,28 @@ +{ + "add_total_row": 0, + "apply_user_permissions": 1, + "creation": "2025-03-07 10:54:09.429215", + "disabled": 0, + "docstatus": 0, + "doctype": "Report", + "idx": 0, + "is_standard": "Yes", + "modified": "2025-03-07 10:54:09.429215", + "modified_by": "Administrator", + "module": "Stock", + "name": "Available Serial No", + "owner": "Administrator", + "prepared_report": 0, + "ref_doctype": "Stock Ledger Entry", + "report_name": "Available Serial No", + "report_type": "Script Report", + "roles": [ + { + "role": "Stock User" + }, + { + "role": "Accounts Manager" + } + ], + "timeout": 0 +} \ No newline at end of file diff --git a/erpnext/stock/report/available_serial_no/available_serial_no.py b/erpnext/stock/report/available_serial_no/available_serial_no.py new file mode 100644 index 00000000000..bdde9c7f3b6 --- /dev/null +++ b/erpnext/stock/report/available_serial_no/available_serial_no.py @@ -0,0 +1,328 @@ +# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors +# License: GNU General Public License v3. See license.txt + +import frappe +from frappe import _ +from frappe.query_builder.functions import Sum +from frappe.utils import cint, flt + +from erpnext.stock.doctype.inventory_dimension.inventory_dimension import get_inventory_dimensions +from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos, get_serial_nos_from_sle_list +from erpnext.stock.doctype.stock_reconciliation.stock_reconciliation import get_stock_balance_for +from erpnext.stock.report.stock_ledger.stock_ledger import ( + check_inventory_dimension_filters_applied, + get_item_details, + get_item_group_condition, + get_opening_balance, + get_opening_balance_from_batch, + get_stock_ledger_entries, +) +from erpnext.stock.utils import ( + is_reposting_item_valuation_in_progress, + update_included_uom_in_report, +) + + +def execute(filters=None): + is_reposting_item_valuation_in_progress() + include_uom = filters.get("include_uom") + columns = get_columns(filters) + items = get_items(filters) + sl_entries = get_stock_ledger_entries(filters, items) + item_details = get_item_details(items, sl_entries, include_uom) + + opening_row, actual_qty, stock_value = get_opening_balance_data(filters, columns, sl_entries) + + precision = cint(frappe.db.get_single_value("System Settings", "float_precision")) + data, conversion_factors = process_stock_ledger_entries( + filters, sl_entries, item_details, opening_row, actual_qty, stock_value, precision + ) + + update_included_uom_in_report(columns, data, include_uom, conversion_factors) + return columns, data + + +def get_opening_balance_data(filters, columns, sl_entries): + if filters.get("batch_no"): + opening_row = get_opening_balance_from_batch(filters, columns, sl_entries) + else: + opening_row = get_opening_balance(filters, columns, sl_entries) + + actual_qty = opening_row.get("qty_after_transaction") if opening_row else 0 + stock_value = opening_row.get("stock_value") if opening_row else 0 + return opening_row, actual_qty, stock_value + + +def process_stock_ledger_entries( + filters, sl_entries, item_details, opening_row, actual_qty, stock_value, precision +): + data = [] + conversion_factors = [] + + if opening_row: + data.append(opening_row) + conversion_factors.append(0) + + batch_balance_dict = frappe._dict({}) + + if actual_qty and filters.get("batch_no"): + batch_balance_dict[filters.batch_no] = [actual_qty, stock_value] + + available_serial_nos = get_serial_nos_from_sle_list( + [sle.serial_and_batch_bundle for sle in sl_entries if sle.serial_and_batch_bundle] + ) + + for sle in sl_entries: + update_stock_ledger_entry( + sle, item_details, filters, actual_qty, stock_value, batch_balance_dict, precision + ) + update_available_serial_nos(available_serial_nos, sle) + data.append(sle) + + if filters.get("include_uom"): + conversion_factors.append(item_details[sle.item_code].conversion_factor) + + return data, conversion_factors + + +def update_stock_ledger_entry( + sle, item_details, filters, actual_qty, stock_value, batch_balance_dict, precision +): + item_detail = item_details[sle.item_code] + sle.update(item_detail) + + if filters.get("batch_no") or check_inventory_dimension_filters_applied(filters): + actual_qty += flt(sle.actual_qty, precision) + stock_value += sle.stock_value_difference + + if sle.batch_no: + batch_balance_dict.setdefault(sle.batch_no, [0, 0]) + batch_balance_dict[sle.batch_no][0] += sle.actual_qty + + if sle.voucher_type == "Stock Reconciliation" and not sle.actual_qty: + actual_qty = sle.qty_after_transaction + stock_value = sle.stock_value + + sle.update({"qty_after_transaction": actual_qty, "stock_value": stock_value}) + + sle.update({"in_qty": max(sle.actual_qty, 0), "out_qty": min(sle.actual_qty, 0)}) + + if sle.actual_qty: + sle["in_out_rate"] = flt(sle.stock_value_difference / sle.actual_qty, precision) + elif sle.voucher_type == "Stock Reconciliation": + sle["in_out_rate"] = sle.valuation_rate + + +def update_available_serial_nos(available_serial_nos, sle): + serial_nos = ( + get_serial_nos(sle.serial_no) + if sle.serial_no + else available_serial_nos.get(sle.serial_and_batch_bundle) + ) + key = (sle.item_code, sle.warehouse) + if key not in available_serial_nos: + stock_balance = get_stock_balance_for( + sle.item_code, sle.warehouse, sle.posting_date, sle.posting_time + ) + serials = get_serial_nos(stock_balance["serial_nos"]) if stock_balance["serial_nos"] else [] + available_serial_nos.setdefault(key, serials) + sle.balance_serial_no = "\n".join(serials) + return + + existing_serial_no = available_serial_nos[key] + for sn in serial_nos: + if sn in existing_serial_no: + existing_serial_no.remove(sn) + else: + existing_serial_no.append(sn) + + sle.balance_serial_no = "\n".join(existing_serial_no) + + +def get_columns(filters): + columns = [ + {"label": _("Date"), "fieldname": "date", "fieldtype": "Datetime", "width": 150}, + { + "label": _("Item"), + "fieldname": "item_code", + "fieldtype": "Link", + "options": "Item", + "width": 100, + }, + {"label": _("Item Name"), "fieldname": "item_name", "width": 100}, + { + "label": _("Stock UOM"), + "fieldname": "stock_uom", + "fieldtype": "Link", + "options": "UOM", + "width": 90, + }, + ] + + for dimension in get_inventory_dimensions(): + columns.append( + { + "label": _(dimension.doctype), + "fieldname": dimension.fieldname, + "fieldtype": "Link", + "options": dimension.doctype, + "width": 110, + } + ) + + columns.extend( + [ + { + "label": _("In Qty"), + "fieldname": "in_qty", + "fieldtype": "Float", + "width": 80, + "convertible": "qty", + }, + { + "label": _("Out Qty"), + "fieldname": "out_qty", + "fieldtype": "Float", + "width": 80, + "convertible": "qty", + }, + { + "label": _("Balance Qty"), + "fieldname": "qty_after_transaction", + "fieldtype": "Float", + "width": 100, + "convertible": "qty", + }, + { + "label": _("Warehouse"), + "fieldname": "warehouse", + "fieldtype": "Link", + "options": "Warehouse", + "width": 150, + }, + { + "label": _("Item Group"), + "fieldname": "item_group", + "fieldtype": "Link", + "options": "Item Group", + "width": 100, + }, + { + "label": _("Brand"), + "fieldname": "brand", + "fieldtype": "Link", + "options": "Brand", + "width": 100, + }, + {"label": _("Description"), "fieldname": "description", "width": 200}, + { + "label": _("Incoming Rate"), + "fieldname": "incoming_rate", + "fieldtype": "Currency", + "width": 110, + "options": "Company:company:default_currency", + "convertible": "rate", + }, + { + "label": _("Avg Rate (Balance Stock)"), + "fieldname": "valuation_rate", + "fieldtype": filters.valuation_field_type, + "width": 180, + "options": "Company:company:default_currency" + if filters.valuation_field_type == "Currency" + else None, + "convertible": "rate", + }, + { + "label": _("Valuation Rate"), + "fieldname": "in_out_rate", + "fieldtype": filters.valuation_field_type, + "width": 140, + "options": "Company:company:default_currency" + if filters.valuation_field_type == "Currency" + else None, + "convertible": "rate", + }, + { + "label": _("Balance Value"), + "fieldname": "stock_value", + "fieldtype": "Currency", + "width": 110, + "options": "Company:company:default_currency", + }, + { + "label": _("Value Change"), + "fieldname": "stock_value_difference", + "fieldtype": "Currency", + "width": 110, + "options": "Company:company:default_currency", + }, + {"label": _("Voucher Type"), "fieldname": "voucher_type", "width": 110}, + { + "label": _("Voucher #"), + "fieldname": "voucher_no", + "fieldtype": "Dynamic Link", + "options": "voucher_type", + "width": 100, + }, + { + "label": _("Batch"), + "fieldname": "batch_no", + "fieldtype": "Link", + "options": "Batch", + "width": 100, + }, + { + "label": _("Serial No"), + "fieldname": "serial_no", + "fieldtype": "Link", + "options": "Serial No", + "width": 100, + }, + { + "label": _("Serial and Batch Bundle"), + "fieldname": "serial_and_batch_bundle", + "fieldtype": "Link", + "options": "Serial and Batch Bundle", + "width": 100, + }, + {"label": _("Balance Serial No"), "fieldname": "balance_serial_no", "width": 100}, + { + "label": _("Project"), + "fieldname": "project", + "fieldtype": "Link", + "options": "Project", + "width": 100, + }, + { + "label": _("Company"), + "fieldname": "company", + "fieldtype": "Link", + "options": "Company", + "width": 110, + }, + ] + ) + + return columns + + +def get_items(filters): + item = frappe.qb.DocType("Item") + query = frappe.qb.from_(item).select(item.name).where(item.has_serial_no == 1) + conditions = [] + + if item_code := filters.get("item_code"): + conditions.append(item.name == item_code) + else: + if brand := filters.get("brand"): + conditions.append(item.brand == brand) + if item_group := filters.get("item_group"): + if condition := get_item_group_condition(item_group, item): + conditions.append(condition) + + if conditions: + for condition in conditions: + query = query.where(condition) + + return query.run(pluck=True) diff --git a/erpnext/stock/report/available_serial_no/test_available_serial_no.py b/erpnext/stock/report/available_serial_no/test_available_serial_no.py new file mode 100644 index 00000000000..3a843c991f7 --- /dev/null +++ b/erpnext/stock/report/available_serial_no/test_available_serial_no.py @@ -0,0 +1,45 @@ +# Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt + +import frappe +from frappe.tests.utils import FrappeTestCase +from frappe.utils import add_days, today + +from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note +from erpnext.stock.doctype.item.test_item import create_item +from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import make_purchase_receipt + + +class TestStockLedgerReport(FrappeTestCase): + def setUp(self) -> None: + item = create_item("_Test Item with Serial No", is_stock_item=1) + item.has_serial_no = 1 + item.serial_no_series = "TEST.###" + item.save(ignore_permissions=True) + + self.filters = frappe._dict( + company="_Test Company", + from_date=today(), + to_date=add_days(today(), 30), + item_code="_Test Item With Serial No", + ) + + def tearDown(self) -> None: + frappe.db.rollback() + + def test_available_serial_no(self): + report = frappe.get_doc("Report", "Available Serial No") + + make_purchase_receipt(qty=10, item_code="_Test Item with Serial No") + data = report.get_data(filters=self.filters) + serial_nos = [item for item in data[-1][-1]["balance_serial_no"].split("\n")] + + # Test 1: Since we have created an inward entry with Purchase Receipt of 10 qty, we should have 10 serial nos + self.assertEqual(len(serial_nos), 10) + + create_delivery_note(qty=5, item_code="_Test Item with Serial No") + data = report.get_data(filters=self.filters) + serial_nos = [item for item in data[-1][-1]["balance_serial_no"].split("\n")] + + # Test 2: Since we have created a delivery note of 5 qty, we should have 5 serial nos + self.assertEqual(len(serial_nos), 5) diff --git a/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py b/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py index 0bb9d40581a..dabd3b1c6e4 100644 --- a/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py +++ b/erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py @@ -10,25 +10,14 @@ from pypika import functions as fn from erpnext.stock.doctype.warehouse.warehouse import apply_warehouse_filter -SLE_COUNT_LIMIT = 10_000 - - -def _estimate_table_row_count(doctype: str): - table = get_table_name(doctype) - return cint( - frappe.db.sql( - f"""select table_rows - from information_schema.tables - where table_name = '{table}' ;""" - )[0][0] - ) +SLE_COUNT_LIMIT = 100_000 def execute(filters=None): if not filters: filters = {} - sle_count = _estimate_table_row_count("Stock Ledger Entry") + sle_count = frappe.db.estimate_count("Stock Ledger Entry") if ( sle_count > SLE_COUNT_LIMIT @@ -151,6 +140,8 @@ def get_stock_ledger_entries_for_batch_bundle(filters): sle = frappe.qb.DocType("Stock Ledger Entry") batch_package = frappe.qb.DocType("Serial and Batch Entry") + to_date = get_datetime(filters.to_date + " 23:59:59") + query = ( frappe.qb.from_(sle) .inner_join(batch_package) @@ -166,7 +157,7 @@ def get_stock_ledger_entries_for_batch_bundle(filters): (sle.docstatus < 2) & (sle.is_cancelled == 0) & (sle.has_batch_no == 1) - & (sle.posting_date <= filters["to_date"]) + & (sle.posting_datetime <= to_date) ) .groupby(sle.voucher_no, batch_package.batch_no, batch_package.warehouse) .orderby(sle.item_code, sle.warehouse) diff --git a/erpnext/stock/report/incorrect_serial_and_batch_bundle/__init__.py b/erpnext/stock/report/incorrect_serial_and_batch_bundle/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/erpnext/stock/report/incorrect_serial_and_batch_bundle/incorrect_serial_and_batch_bundle.js b/erpnext/stock/report/incorrect_serial_and_batch_bundle/incorrect_serial_and_batch_bundle.js new file mode 100644 index 00000000000..dccb543115e --- /dev/null +++ b/erpnext/stock/report/incorrect_serial_and_batch_bundle/incorrect_serial_and_batch_bundle.js @@ -0,0 +1,47 @@ +// Copyright (c) 2025, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt + +frappe.query_reports["Incorrect Serial and Batch Bundle"] = { + filters: [ + { + fieldname: "item_code", + label: __("Item Code"), + fieldtype: "Link", + options: "Item", + }, + { + fieldname: "warehouse", + label: __("Warehouse"), + fieldtype: "Link", + options: "Warehouse", + }, + ], + + get_datatable_options(options) { + return Object.assign(options, { + checkboxColumn: true, + }); + }, + + onload(report) { + report.page.add_inner_button(__("Remove SABB Entry"), () => { + let indexes = frappe.query_report.datatable.rowmanager.getCheckedRows(); + let selected_rows = indexes.map((i) => frappe.query_report.data[i]); + + if (!selected_rows.length) { + frappe.throw(__("Please select a row to create a Reposting Entry")); + } else { + frappe.call({ + method: "erpnext.stock.report.incorrect_serial_and_batch_bundle.incorrect_serial_and_batch_bundle.remove_sabb_entry", + freeze: true, + args: { + selected_rows: selected_rows, + }, + callback: function (r) { + frappe.query_report.refresh(); + }, + }); + } + }); + }, +}; diff --git a/erpnext/stock/report/incorrect_serial_and_batch_bundle/incorrect_serial_and_batch_bundle.json b/erpnext/stock/report/incorrect_serial_and_batch_bundle/incorrect_serial_and_batch_bundle.json new file mode 100644 index 00000000000..11e6e4ea3d4 --- /dev/null +++ b/erpnext/stock/report/incorrect_serial_and_batch_bundle/incorrect_serial_and_batch_bundle.json @@ -0,0 +1,56 @@ +{ + "add_total_row": 0, + "columns": [], + "creation": "2025-02-03 15:39:44.521366", + "disabled": 0, + "docstatus": 0, + "doctype": "Report", + "filters": [], + "idx": 0, + "is_standard": "Yes", + "json": "{}", + "letter_head": "Test", + "letterhead": null, + "modified": "2025-02-03 15:39:47.613040", + "modified_by": "Administrator", + "module": "Stock", + "name": "Incorrect Serial and Batch Bundle", + "owner": "Administrator", + "prepared_report": 0, + "ref_doctype": "Serial and Batch Bundle", + "report_name": "Incorrect Serial and Batch Bundle", + "report_type": "Script Report", + "roles": [ + { + "role": "Stock User" + }, + { + "role": "Purchase Manager" + }, + { + "role": "Delivery Manager" + }, + { + "role": "System Manager" + }, + { + "role": "Delivery User" + }, + { + "role": "Manufacturing User" + }, + { + "role": "Purchase User" + }, + { + "role": "Stock Manager" + }, + { + "role": "Manufacturing Manager" + }, + { + "role": "Maintenance User" + } + ], + "timeout": 0 +} \ No newline at end of file diff --git a/erpnext/stock/report/incorrect_serial_and_batch_bundle/incorrect_serial_and_batch_bundle.py b/erpnext/stock/report/incorrect_serial_and_batch_bundle/incorrect_serial_and_batch_bundle.py new file mode 100644 index 00000000000..e65725f3c3d --- /dev/null +++ b/erpnext/stock/report/incorrect_serial_and_batch_bundle/incorrect_serial_and_batch_bundle.py @@ -0,0 +1,107 @@ +# Copyright (c) 2025, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +import frappe +from frappe import _ + + +def execute(filters: dict | None = None): + """Return columns and data for the report. + + This is the main entry point for the report. It accepts the filters as a + dictionary and should return columns and data. It is called by the framework + every time the report is refreshed or a filter is updated. + """ + columns = get_columns() + data = get_data(filters) + + return columns, data + + +def get_columns() -> list[dict]: + """Return columns for the report. + + One field definition per column, just like a DocType field definition. + """ + return [ + { + "label": _("Serial and Batch Bundle"), + "fieldname": "name", + "fieldtype": "Link", + "options": "Serial and Batch Bundle", + "width": 200, + }, + { + "label": _("Voucher Type"), + "fieldname": "voucher_type", + "fieldtype": "Data", + "width": 200, + }, + { + "label": _("Voucher No"), + "fieldname": "voucher_no", + "fieldtype": "Dynamic Link", + "options": "voucher_type", + "width": 200, + }, + { + "label": _("Voucher Detail No"), + "fieldname": "voucher_detail_no", + "fieldtype": "Data", + "width": 200, + }, + ] + + +def get_data(filters) -> list[list]: + """Return data for the report. + + The report data is a list of rows, with each row being a list of cell values. + """ + + SABB = frappe.qb.DocType("Serial and Batch Bundle") + SLE = frappe.qb.DocType("Stock Ledger Entry") + ignore_voycher_types = [ + "Installation Note", + "Job Card", + "Maintenance Schedule", + "Pick List", + ] + + query = ( + frappe.qb.from_(SABB) + .left_join(SLE) + .on(SABB.name == SLE.serial_and_batch_bundle) + .select( + SABB.name, + SABB.voucher_type, + SABB.voucher_no, + SABB.voucher_detail_no, + ) + .where( + (SLE.serial_and_batch_bundle.isnull()) + & (SABB.docstatus == 1) + & (SABB.is_cancelled == 0) + & (SABB.voucher_type.notin(ignore_voycher_types)) + ) + ) + + for field in filters: + query = query.where(SABB[field] == filters[field]) + + data = query.run(as_dict=1) + + return data + + +@frappe.whitelist() +def remove_sabb_entry(selected_rows): + if isinstance(selected_rows, str): + selected_rows = frappe.parse_json(selected_rows) + + for row in selected_rows: + doc = frappe.get_doc("Serial and Batch Bundle", row.get("name")) + doc.cancel() + doc.delete() + + frappe.msgprint(_("Selected Serial and Batch Bundle entries have been removed.")) diff --git a/erpnext/stock/report/item_shortage_report/item_shortage_report.js b/erpnext/stock/report/item_shortage_report/item_shortage_report.js index d293b895e5b..8ce71ddadcb 100644 --- a/erpnext/stock/report/item_shortage_report/item_shortage_report.js +++ b/erpnext/stock/report/item_shortage_report/item_shortage_report.js @@ -16,6 +16,7 @@ frappe.query_reports["Item Shortage Report"] = { fieldname: "warehouse", label: __("Warehouse"), fieldtype: "MultiSelectList", + options: "Warehouse", width: "100", get_data: function (txt) { return frappe.db.get_link_options("Warehouse", txt); diff --git a/erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.js b/erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.js index 3b66cb036a7..ab1e2babc80 100644 --- a/erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.js +++ b/erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.js @@ -50,6 +50,7 @@ frappe.query_reports["Serial and Batch Summary"] = { fieldname: "voucher_no", label: __("Voucher No"), fieldtype: "MultiSelectList", + options: "voucher_type", get_data: function (txt) { if (!frappe.query_report.filters) return; diff --git a/erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py b/erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py index 15d9a12bc65..486828af1cc 100644 --- a/erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py +++ b/erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py @@ -106,8 +106,6 @@ def get_columns(filters, data): { "label": _("Voucher Type"), "fieldname": "voucher_type", - "fieldtype": "Link", - "options": "DocType", "width": 120, }, { diff --git a/erpnext/stock/report/serial_no_service_contract_expiry/serial_no_service_contract_expiry.json b/erpnext/stock/report/serial_no_service_contract_expiry/serial_no_service_contract_expiry.json index 6d20719f8eb..75e2fac98fd 100644 --- a/erpnext/stock/report/serial_no_service_contract_expiry/serial_no_service_contract_expiry.json +++ b/erpnext/stock/report/serial_no_service_contract_expiry/serial_no_service_contract_expiry.json @@ -1,30 +1,33 @@ { - "add_total_row": 0, - "apply_user_permissions": 1, - "creation": "2013-01-14 10:52:58", - "disabled": 0, - "docstatus": 0, - "doctype": "Report", - "idx": 3, - "is_standard": "Yes", - "json": "{\"add_total_row\": 0, \"sort_by\": \"Serial No.modified\", \"sort_order\": \"desc\", \"sort_by_next\": null, \"filters\": [[\"Serial No\", \"delivery_document_type\", \"in\", [\"Delivery Note\", \"Sales Invoice\"]], [\"Serial No\", \"warehouse\", \"=\", \"\"]], \"sort_order_next\": \"desc\", \"columns\": [[\"name\", \"Serial No\"], [\"item_code\", \"Serial No\"], [\"amc_expiry_date\", \"Serial No\"], [\"maintenance_status\", \"Serial No\"], [\"delivery_document_no\", \"Serial No\"], [\"customer\", \"Serial No\"], [\"customer_name\", \"Serial No\"], [\"item_name\", \"Serial No\"], [\"description\", \"Serial No\"], [\"item_group\", \"Serial No\"], [\"brand\", \"Serial No\"]]}", - "modified": "2017-02-24 20:02:00.706889", - "modified_by": "Administrator", - "module": "Stock", - "name": "Serial No Service Contract Expiry", - "owner": "Administrator", - "ref_doctype": "Serial No", - "report_name": "Serial No Service Contract Expiry", - "report_type": "Report Builder", + "add_total_row": 0, + "columns": [], + "creation": "2013-01-14 10:52:58", + "disabled": 0, + "docstatus": 0, + "doctype": "Report", + "filters": [], + "idx": 3, + "is_standard": "Yes", + "json": "{\"add_total_row\": 0, \"sort_by\": \"Serial No.modified\", \"sort_order\": \"desc\", \"sort_by_next\": null, \"filters\": [[\"Serial No\", \"warehouse\", \"=\", \"\"]], \"sort_order_next\": \"desc\", \"columns\": [[\"name\", \"Serial No\"], [\"item_code\", \"Serial No\"], [\"amc_expiry_date\", \"Serial No\"], [\"maintenance_status\", \"Serial No\"],[\"item_name\", \"Serial No\"], [\"description\", \"Serial No\"], [\"item_group\", \"Serial No\"], [\"brand\", \"Serial No\"]]}", + "letterhead": null, + "modified": "2024-09-26 13:07:23.451182", + "modified_by": "Administrator", + "module": "Stock", + "name": "Serial No Service Contract Expiry", + "owner": "Administrator", + "prepared_report": 0, + "ref_doctype": "Serial No", + "report_name": "Serial No Service Contract Expiry", + "report_type": "Report Builder", "roles": [ { "role": "Item Manager" - }, + }, { "role": "Stock Manager" - }, + }, { "role": "Stock User" } ] -} \ No newline at end of file +} diff --git a/erpnext/stock/report/serial_no_status/serial_no_status.json b/erpnext/stock/report/serial_no_status/serial_no_status.json index 8f03567c852..d74c2087f72 100644 --- a/erpnext/stock/report/serial_no_status/serial_no_status.json +++ b/erpnext/stock/report/serial_no_status/serial_no_status.json @@ -1,30 +1,33 @@ { - "add_total_row": 0, - "apply_user_permissions": 1, - "creation": "2013-01-14 10:52:58", - "disabled": 0, - "docstatus": 0, - "doctype": "Report", - "idx": 4, - "is_standard": "Yes", - "json": "{\"add_total_row\": 0, \"sort_by\": \"Serial No.name\", \"sort_order\": \"desc\", \"sort_by_next\": null, \"filters\": [], \"sort_order_next\": \"desc\", \"columns\": [[\"name\", \"Serial No\"], [\"item_code\", \"Serial No\"], [\"warehouse\", \"Serial No\"], [\"item_name\", \"Serial No\"], [\"description\", \"Serial No\"], [\"item_group\", \"Serial No\"], [\"brand\", \"Serial No\"], [\"purchase_document_type\", \"Serial No\"], [\"purchase_document_no\", \"Serial No\"], [\"purchase_date\", \"Serial No\"], [\"customer\", \"Serial No\"], [\"customer_name\", \"Serial No\"], [\"purchase_rate\", \"Serial No\"], [\"delivery_document_type\", \"Serial No\"], [\"delivery_document_no\", \"Serial No\"], [\"delivery_date\", \"Serial No\"], [\"supplier\", \"Serial No\"], [\"supplier_name\", \"Serial No\"]]}", - "modified": "2017-02-24 19:54:21.392265", - "modified_by": "Administrator", - "module": "Stock", - "name": "Serial No Status", - "owner": "Administrator", - "ref_doctype": "Serial No", - "report_name": "Serial No Status", - "report_type": "Report Builder", + "add_total_row": 0, + "columns": [], + "creation": "2013-01-14 10:52:58", + "disabled": 0, + "docstatus": 0, + "doctype": "Report", + "filters": [], + "idx": 4, + "is_standard": "Yes", + "json": "{\"add_total_row\": 0, \"sort_by\": \"Serial No.name\", \"sort_order\": \"desc\", \"sort_by_next\": null, \"filters\": [], \"sort_order_next\": \"desc\", \"columns\": [[\"name\", \"Serial No\"], [\"item_code\", \"Serial No\"], [\"warehouse\", \"Serial No\"], [\"item_name\", \"Serial No\"], [\"description\", \"Serial No\"], [\"item_group\", \"Serial No\"], [\"brand\", \"Serial No\"],[\"purchase_document_no\", \"Serial No\"]]}", + "letterhead": null, + "modified": "2024-09-26 13:10:52.693648", + "modified_by": "Administrator", + "module": "Stock", + "name": "Serial No Status", + "owner": "Administrator", + "prepared_report": 0, + "ref_doctype": "Serial No", + "report_name": "Serial No Status", + "report_type": "Report Builder", "roles": [ { "role": "Item Manager" - }, + }, { "role": "Stock Manager" - }, + }, { "role": "Stock User" } ] -} \ No newline at end of file +} diff --git a/erpnext/stock/report/serial_no_warranty_expiry/serial_no_warranty_expiry.json b/erpnext/stock/report/serial_no_warranty_expiry/serial_no_warranty_expiry.json index ef345f45216..75e2fac98fd 100644 --- a/erpnext/stock/report/serial_no_warranty_expiry/serial_no_warranty_expiry.json +++ b/erpnext/stock/report/serial_no_warranty_expiry/serial_no_warranty_expiry.json @@ -1,30 +1,33 @@ { - "add_total_row": 0, - "apply_user_permissions": 1, - "creation": "2013-01-14 10:52:58", - "disabled": 0, - "docstatus": 0, - "doctype": "Report", - "idx": 3, - "is_standard": "Yes", - "json": "{\"add_total_row\": 0, \"sort_by\": \"Serial No.modified\", \"sort_order\": \"desc\", \"sort_by_next\": null, \"filters\": [[\"Serial No\", \"delivery_document_type\", \"in\", [\"Delivery Note\", \"Sales Invoice\"]], [\"Serial No\", \"warehouse\", \"=\", \"\"]], \"sort_order_next\": \"desc\", \"columns\": [[\"name\", \"Serial No\"], [\"item_code\", \"Serial No\"], [\"warranty_expiry_date\", \"Serial No\"], [\"warranty_period\", \"Serial No\"], [\"maintenance_status\", \"Serial No\"], [\"purchase_document_no\", \"Serial No\"], [\"purchase_date\", \"Serial No\"], [\"supplier\", \"Serial No\"], [\"supplier_name\", \"Serial No\"], [\"delivery_document_no\", \"Serial No\"], [\"delivery_date\", \"Serial No\"], [\"customer\", \"Serial No\"], [\"customer_name\", \"Serial No\"], [\"item_name\", \"Serial No\"], [\"description\", \"Serial No\"], [\"item_group\", \"Serial No\"], [\"brand\", \"Serial No\"]]}", - "modified": "2017-02-24 20:01:53.097456", - "modified_by": "Administrator", - "module": "Stock", - "name": "Serial No Warranty Expiry", - "owner": "Administrator", - "ref_doctype": "Serial No", - "report_name": "Serial No Warranty Expiry", - "report_type": "Report Builder", + "add_total_row": 0, + "columns": [], + "creation": "2013-01-14 10:52:58", + "disabled": 0, + "docstatus": 0, + "doctype": "Report", + "filters": [], + "idx": 3, + "is_standard": "Yes", + "json": "{\"add_total_row\": 0, \"sort_by\": \"Serial No.modified\", \"sort_order\": \"desc\", \"sort_by_next\": null, \"filters\": [[\"Serial No\", \"warehouse\", \"=\", \"\"]], \"sort_order_next\": \"desc\", \"columns\": [[\"name\", \"Serial No\"], [\"item_code\", \"Serial No\"], [\"amc_expiry_date\", \"Serial No\"], [\"maintenance_status\", \"Serial No\"],[\"item_name\", \"Serial No\"], [\"description\", \"Serial No\"], [\"item_group\", \"Serial No\"], [\"brand\", \"Serial No\"]]}", + "letterhead": null, + "modified": "2024-09-26 13:07:23.451182", + "modified_by": "Administrator", + "module": "Stock", + "name": "Serial No Service Contract Expiry", + "owner": "Administrator", + "prepared_report": 0, + "ref_doctype": "Serial No", + "report_name": "Serial No Service Contract Expiry", + "report_type": "Report Builder", "roles": [ { "role": "Item Manager" - }, + }, { "role": "Stock Manager" - }, + }, { "role": "Stock User" } ] -} \ No newline at end of file +} diff --git a/erpnext/stock/report/stock_ageing/stock_ageing.js b/erpnext/stock/report/stock_ageing/stock_ageing.js index 578869b6e93..a3ebf14571d 100644 --- a/erpnext/stock/report/stock_ageing/stock_ageing.js +++ b/erpnext/stock/report/stock_ageing/stock_ageing.js @@ -54,25 +54,10 @@ frappe.query_reports["Stock Ageing"] = { options: "Brand", }, { - fieldname: "range1", - label: __("Ageing Range 1"), - fieldtype: "Int", - default: "30", - reqd: 1, - }, - { - fieldname: "range2", - label: __("Ageing Range 2"), - fieldtype: "Int", - default: "60", - reqd: 1, - }, - { - fieldname: "range3", - label: __("Ageing Range 3"), - fieldtype: "Int", - default: "90", - reqd: 1, + fieldname: "range", + label: __("Ageing Range"), + fieldtype: "Data", + default: "30, 60, 90", }, { fieldname: "show_warehouse_wise_stock", diff --git a/erpnext/stock/report/stock_ageing/stock_ageing.py b/erpnext/stock/report/stock_ageing/stock_ageing.py index 09af3f224a3..0edce832aec 100644 --- a/erpnext/stock/report/stock_ageing/stock_ageing.py +++ b/erpnext/stock/report/stock_ageing/stock_ageing.py @@ -7,7 +7,7 @@ from operator import itemgetter import frappe from frappe import _ -from frappe.utils import cint, date_diff, flt +from frappe.utils import cint, date_diff, flt, get_datetime from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos @@ -16,6 +16,7 @@ Filters = frappe._dict def execute(filters: Filters = None) -> tuple: to_date = filters["to_date"] + filters.ranges = [num.strip() for num in filters.range.split(",") if num.strip().isdigit()] columns = get_columns(filters) item_details = FIFOSlots(filters).generate() @@ -48,7 +49,11 @@ def format_report_data(filters: Filters, item_details: dict, to_date: str) -> li average_age = get_average_age(fifo_queue, to_date) earliest_age = date_diff(to_date, fifo_queue[0][1]) latest_age = date_diff(to_date, fifo_queue[-1][1]) - range1, range2, range3, above_range3 = get_range_age(filters, fifo_queue, to_date, item_dict) + range_values = get_range_age(filters, fifo_queue, to_date, item_dict) + + check_and_replace_valuations_if_moving_average( + range_values, details.valuation_method, details.valuation_rate + ) row = [details.name, details.item_name, details.description, details.item_group, details.brand] @@ -59,10 +64,7 @@ def format_report_data(filters: Filters, item_details: dict, to_date: str) -> li [ flt(item_dict.get("total_qty"), precision), average_age, - range1, - range2, - range3, - above_range3, + *range_values, earliest_age, latest_age, details.stock_uom, @@ -74,6 +76,15 @@ def format_report_data(filters: Filters, item_details: dict, to_date: str) -> li return data +def check_and_replace_valuations_if_moving_average(range_values, item_valuation_method, valuation_rate): + if item_valuation_method == "Moving Average" or ( + not item_valuation_method + and frappe.db.get_single_value("Stock Settings", "valuation_method") == "Moving Average" + ): + for i in range(0, len(range_values), 2): + range_values[i + 1] = range_values[i] * valuation_rate + + def get_average_age(fifo_queue: list, to_date: str) -> float: batch_age = age_qty = total_qty = 0.0 for batch in fifo_queue: @@ -89,25 +100,26 @@ def get_average_age(fifo_queue: list, to_date: str) -> float: return flt(age_qty / total_qty, 2) if total_qty else 0.0 -def get_range_age(filters: Filters, fifo_queue: list, to_date: str, item_dict: dict) -> tuple: +def get_range_age(filters: Filters, fifo_queue: list, to_date: str, item_dict: dict) -> list: precision = cint(frappe.db.get_single_value("System Settings", "float_precision", cache=True)) - - range1 = range2 = range3 = above_range3 = 0.0 + range_values = [0.0] * ((len(filters.ranges) * 2) + 2) for item in fifo_queue: age = flt(date_diff(to_date, item[1])) qty = flt(item[0]) if not item_dict["has_serial_no"] else 1.0 + stock_value = flt(item[2]) - if age <= flt(filters.range1): - range1 = flt(range1 + qty, precision) - elif age <= flt(filters.range2): - range2 = flt(range2 + qty, precision) - elif age <= flt(filters.range3): - range3 = flt(range3 + qty, precision) + for i, age_limit in enumerate(filters.ranges): + if age <= flt(age_limit): + i *= 2 + range_values[i] = flt(range_values[i] + qty, precision) + range_values[i + 1] = flt(range_values[i + 1] + stock_value, precision) + break else: - above_range3 = flt(above_range3 + qty, precision) + range_values[-2] = flt(range_values[-2] + qty, precision) + range_values[-1] = flt(range_values[-1] + stock_value, precision) - return range1, range2, range3, above_range3 + return range_values def get_columns(filters: Filters) -> list[dict]: @@ -193,15 +205,18 @@ def get_chart_data(data: list, filters: Filters) -> dict: def setup_ageing_columns(filters: Filters, range_columns: list): - ranges = [ - f"0 - {filters['range1']}", - f"{cint(filters['range1']) + 1} - {cint(filters['range2'])}", - f"{cint(filters['range2']) + 1} - {cint(filters['range3'])}", - _("{0} - Above").format(cint(filters["range3"]) + 1), - ] + prev_range_value = 0 + ranges = [] + for range in filters.ranges: + ranges.append(f"{prev_range_value} - {range}") + prev_range_value = cint(range) + 1 + + ranges.append(f"{prev_range_value} - Above") + for i, label in enumerate(ranges): fieldname = "range" + str(i + 1) add_column(range_columns, label=_("Age ({0})").format(label), fieldname=fieldname) + add_column(range_columns, label=_("Value ({0})").format(label), fieldname=fieldname + "value") def add_column(range_columns: list, label: str, fieldname: str, fieldtype: str = "Float", width: int = 140): @@ -265,7 +280,7 @@ class FIFOSlots: self.__update_balances(d, key) - # Note that stock_ledger_entries is an iterator, you can not reuse it like a list + # Note that stock_ledger_entries is an iterator, you can not reuse it like a list del stock_ledger_entries if not self.filters.get("show_warehouse_wise_stock"): @@ -301,16 +316,22 @@ class FIFOSlots: # neutralize 0/negative stock by adding positive stock fifo_queue[0][0] += flt(row.actual_qty) fifo_queue[0][1] = row.posting_date + fifo_queue[0][2] += flt(row.stock_value_difference) else: - fifo_queue.append([flt(row.actual_qty), row.posting_date]) + fifo_queue.append( + [flt(row.actual_qty), row.posting_date, flt(row.stock_value_difference)] + ) return + valuation = row.stock_value_difference / row.actual_qty for serial_no in serial_nos: if self.serial_no_batch_purchase_details.get(serial_no): - fifo_queue.append([serial_no, self.serial_no_batch_purchase_details.get(serial_no)]) + fifo_queue.append( + [serial_no, self.serial_no_batch_purchase_details.get(serial_no), valuation] + ) else: self.serial_no_batch_purchase_details.setdefault(serial_no, row.posting_date) - fifo_queue.append([serial_no, row.posting_date]) + fifo_queue.append([serial_no, row.posting_date, valuation]) def __compute_outgoing_stock(self, row: dict, fifo_queue: list, transfer_key: tuple, serial_nos: list): "Update FIFO Queue on outward stock." @@ -319,34 +340,44 @@ class FIFOSlots: return qty_to_pop = abs(row.actual_qty) + stock_value = abs(row.stock_value_difference) + while qty_to_pop: - slot = fifo_queue[0] if fifo_queue else [0, None] + slot = fifo_queue[0] if fifo_queue else [0, None, 0] if 0 < flt(slot[0]) <= qty_to_pop: # qty to pop >= slot qty # if +ve and not enough or exactly same balance in current slot, consume whole slot qty_to_pop -= flt(slot[0]) + stock_value -= flt(slot[2]) self.transferred_item_details[transfer_key].append(fifo_queue.pop(0)) elif not fifo_queue: # negative stock, no balance but qty yet to consume - fifo_queue.append([-(qty_to_pop), row.posting_date]) - self.transferred_item_details[transfer_key].append([qty_to_pop, row.posting_date]) + fifo_queue.append([-(qty_to_pop), row.posting_date, -(stock_value)]) + self.transferred_item_details[transfer_key].append( + [qty_to_pop, row.posting_date, stock_value] + ) qty_to_pop = 0 + stock_value = 0 else: # qty to pop < slot qty, ample balance # consume actual_qty from first slot slot[0] = flt(slot[0]) - qty_to_pop - self.transferred_item_details[transfer_key].append([qty_to_pop, slot[1]]) + slot[2] = flt(slot[2]) - stock_value + self.transferred_item_details[transfer_key].append([qty_to_pop, slot[1], stock_value]) qty_to_pop = 0 + stock_value = 0 def __adjust_incoming_transfer_qty(self, transfer_data: dict, fifo_queue: list, row: dict): "Add previously removed stock back to FIFO Queue." transfer_qty_to_pop = flt(row.actual_qty) + stock_value = flt(row.stock_value_difference) def add_to_fifo_queue(slot): if fifo_queue and flt(fifo_queue[0][0]) <= 0: # neutralize 0/negative stock by adding positive stock fifo_queue[0][0] += flt(slot[0]) fifo_queue[0][1] = slot[1] + fifo_queue[0][2] += flt(slot[2]) else: fifo_queue.append(slot) @@ -354,16 +385,20 @@ class FIFOSlots: if transfer_data and 0 < transfer_data[0][0] <= transfer_qty_to_pop: # bucket qty is not enough, consume whole transfer_qty_to_pop -= transfer_data[0][0] + stock_value -= transfer_data[0][2] add_to_fifo_queue(transfer_data.pop(0)) elif not transfer_data: # transfer bucket is empty, extra incoming qty - add_to_fifo_queue([transfer_qty_to_pop, row.posting_date]) + add_to_fifo_queue([transfer_qty_to_pop, row.posting_date, stock_value]) transfer_qty_to_pop = 0 + stock_value = 0 else: # ample bucket qty to consume transfer_data[0][0] -= transfer_qty_to_pop - add_to_fifo_queue([transfer_qty_to_pop, transfer_data[0][1]]) + transfer_data[0][2] -= stock_value + add_to_fifo_queue([transfer_qty_to_pop, transfer_data[0][1], stock_value]) transfer_qty_to_pop = 0 + stock_value = 0 def __update_balances(self, row: dict, key: tuple | str): self.item_details[key]["qty_after_transaction"] = row.qty_after_transaction @@ -374,6 +409,7 @@ class FIFOSlots: self.item_details[key]["total_qty"] += row.actual_qty self.item_details[key]["has_serial_no"] = row.has_serial_no + self.item_details[key]["details"].valuation_rate = row.valuation_rate def __aggregate_details_by_item(self, wh_wise_data: dict) -> dict: "Aggregate Item-Wh wise data into single Item entry." @@ -402,6 +438,7 @@ class FIFOSlots: def __get_stock_ledger_entries(self) -> Iterator[dict]: sle = frappe.qb.DocType("Stock Ledger Entry") item = self.__get_item_query() # used as derived table in sle query + to_date = get_datetime(self.filters.get("to_date") + " 23:59:59") sle_query = ( frappe.qb.from_(sle) @@ -414,7 +451,10 @@ class FIFOSlots: item.description, item.stock_uom, item.has_serial_no, + item.valuation_method, sle.actual_qty, + sle.stock_value_difference, + sle.valuation_rate, sle.posting_date, sle.voucher_type, sle.voucher_no, @@ -427,7 +467,7 @@ class FIFOSlots: .where( (sle.item_code == item.name) & (sle.company == self.filters.get("company")) - & (sle.posting_date <= self.filters.get("to_date")) + & (sle.posting_datetime <= to_date) & (sle.is_cancelled != 1) ) ) @@ -444,7 +484,7 @@ class FIFOSlots: if warehouses: sle_query = sle_query.where(sle.warehouse.isin(warehouses)) - sle_query = sle_query.orderby(sle.posting_date, sle.posting_time, sle.creation, sle.actual_qty) + sle_query = sle_query.orderby(sle.posting_datetime, sle.creation) return sle_query.run(as_dict=True, as_iterator=True) @@ -482,7 +522,14 @@ class FIFOSlots: item_table = frappe.qb.DocType("Item") item = frappe.qb.from_("Item").select( - "name", "item_name", "description", "stock_uom", "brand", "item_group", "has_serial_no" + "name", + "item_name", + "description", + "stock_uom", + "brand", + "item_group", + "has_serial_no", + "valuation_method", ) if self.filters.get("item_code"): diff --git a/erpnext/stock/report/stock_ageing/test_stock_ageing.py b/erpnext/stock/report/stock_ageing/test_stock_ageing.py index fb363606233..61616f71d80 100644 --- a/erpnext/stock/report/stock_ageing/test_stock_ageing.py +++ b/erpnext/stock/report/stock_ageing/test_stock_ageing.py @@ -9,9 +9,7 @@ from erpnext.stock.report.stock_ageing.stock_ageing import FIFOSlots, format_rep class TestStockAgeing(FrappeTestCase): def setUp(self) -> None: - self.filters = frappe._dict( - company="_Test Company", to_date="2021-12-10", range1=30, range2=60, range3=90 - ) + self.filters = frappe._dict(company="_Test Company", to_date="2021-12-10", ranges=["30", "60", "90"]) def test_normal_inward_outward_queue(self): "Reference: Case 1 in stock_ageing_fifo_logic.md (same wh)" @@ -20,6 +18,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=30, qty_after_transaction=30, + stock_value_difference=30, warehouse="WH 1", posting_date="2021-12-01", voucher_type="Stock Entry", @@ -31,6 +30,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=20, qty_after_transaction=50, + stock_value_difference=20, warehouse="WH 1", posting_date="2021-12-02", voucher_type="Stock Entry", @@ -42,6 +42,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=(-10), qty_after_transaction=40, + stock_value_difference=(-10), warehouse="WH 1", posting_date="2021-12-03", voucher_type="Stock Entry", @@ -59,6 +60,8 @@ class TestStockAgeing(FrappeTestCase): self.assertEqual(result["qty_after_transaction"], result["total_qty"]) self.assertEqual(queue[0][0], 20.0) + data = format_report_data(self.filters, slots, self.filters["to_date"]) + self.assertEqual(data[0][8], 40.0) # valuating for stock value between age 0-30 def test_insufficient_balance(self): "Reference: Case 3 in stock_ageing_fifo_logic.md (same wh)" @@ -67,6 +70,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=(-30), qty_after_transaction=(-30), + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-01", voucher_type="Stock Entry", @@ -78,6 +82,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=20, qty_after_transaction=(-10), + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-02", voucher_type="Stock Entry", @@ -89,6 +94,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=20, qty_after_transaction=10, + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-03", voucher_type="Stock Entry", @@ -100,6 +106,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=10, qty_after_transaction=20, + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-03", voucher_type="Stock Entry", @@ -128,6 +135,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=30, qty_after_transaction=30, + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-01", voucher_type="Stock Entry", @@ -139,6 +147,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=0, qty_after_transaction=50, + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-02", voucher_type="Stock Reconciliation", @@ -150,6 +159,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=(-10), qty_after_transaction=40, + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-03", voucher_type="Stock Entry", @@ -180,6 +190,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=0, qty_after_transaction=1000, + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-01", voucher_type="Stock Reconciliation", @@ -191,6 +202,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=0, qty_after_transaction=400, + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-02", voucher_type="Stock Reconciliation", @@ -202,6 +214,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=(-10), qty_after_transaction=390, + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-03", voucher_type="Stock Entry", @@ -235,6 +248,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=0, qty_after_transaction=1000, + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-01", voucher_type="Stock Reconciliation", @@ -246,6 +260,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=0, qty_after_transaction=400, + stock_value_difference=0, warehouse="WH 2", posting_date="2021-12-02", voucher_type="Stock Reconciliation", @@ -257,6 +272,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=(-10), qty_after_transaction=990, + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-03", voucher_type="Stock Entry", @@ -303,6 +319,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=500, qty_after_transaction=500, + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-03", voucher_type="Stock Entry", @@ -314,6 +331,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=(-50), qty_after_transaction=450, + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-04", voucher_type="Stock Entry", @@ -325,6 +343,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=(-50), qty_after_transaction=400, + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-04", voucher_type="Stock Entry", @@ -336,6 +355,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=100, qty_after_transaction=500, + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-04", voucher_type="Stock Entry", @@ -372,6 +392,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=500, qty_after_transaction=500, + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-03", voucher_type="Stock Entry", @@ -383,6 +404,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=(-100), qty_after_transaction=400, + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-04", voucher_type="Stock Entry", @@ -394,6 +416,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=50, qty_after_transaction=450, + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-04", voucher_type="Stock Entry", @@ -428,6 +451,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=20, qty_after_transaction=20, + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-03", voucher_type="Stock Entry", @@ -439,6 +463,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=(-50), qty_after_transaction=(-30), + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-04", voucher_type="Stock Entry", @@ -450,6 +475,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=(-50), qty_after_transaction=(-80), + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-04", voucher_type="Stock Entry", @@ -461,6 +487,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=50, qty_after_transaction=(-30), + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-04", voucher_type="Stock Entry", @@ -498,6 +525,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=500, qty_after_transaction=500, + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-03", voucher_type="Stock Entry", @@ -509,6 +537,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=(-50), qty_after_transaction=450, + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-04", voucher_type="Stock Entry", @@ -520,6 +549,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=100, qty_after_transaction=550, + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-04", voucher_type="Stock Entry", @@ -555,6 +585,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=20, qty_after_transaction=20, + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-03", voucher_type="Stock Entry", @@ -566,6 +597,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=(-50), qty_after_transaction=(-30), + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-04", voucher_type="Stock Entry", @@ -577,6 +609,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=50, qty_after_transaction=20, + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-04", voucher_type="Stock Entry", @@ -588,6 +621,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=50, qty_after_transaction=70, + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-04", voucher_type="Stock Entry", @@ -625,6 +659,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=(-50), qty_after_transaction=(-50), + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-01", voucher_type="Stock Entry", @@ -636,6 +671,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=(-50), qty_after_transaction=(-100), + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-01", voucher_type="Stock Entry", @@ -647,6 +683,7 @@ class TestStockAgeing(FrappeTestCase): name="Flask Item", actual_qty=30, qty_after_transaction=(-70), + stock_value_difference=0, warehouse="WH 1", posting_date="2021-12-01", voucher_type="Stock Entry", @@ -724,6 +761,113 @@ class TestStockAgeing(FrappeTestCase): self.assertEqual(bal_qty, 0.9) self.assertEqual(bal_qty, range_qty_sum) + def test_ageing_stock_valuation(self): + "Test stock valuation for each time bucket." + sle = [ + frappe._dict( + name="Flask Item", + actual_qty=10, + qty_after_transaction=10, + stock_value_difference=10, + warehouse="WH 1", + posting_date="2021-12-01", + voucher_type="Stock Entry", + voucher_no="001", + has_serial_no=False, + serial_no=None, + ), + frappe._dict( + name="Flask Item", + actual_qty=20, + qty_after_transaction=30, + stock_value_difference=20, + warehouse="WH 1", + posting_date="2021-12-02", + voucher_type="Stock Entry", + voucher_no="002", + has_serial_no=False, + serial_no=None, + ), + frappe._dict( + name="Flask Item", + actual_qty=(-10), + qty_after_transaction=20, + stock_value_difference=(-10), + warehouse="WH 1", + posting_date="2021-12-03", + voucher_type="Stock Entry", + voucher_no="003", + has_serial_no=False, + serial_no=None, + ), + frappe._dict( + name="Flask Item", + actual_qty=10, + qty_after_transaction=30, + stock_value_difference=20, + warehouse="WH 1", + posting_date="2022-01-01", + voucher_type="Stock Entry", + voucher_no="004", + has_serial_no=False, + serial_no=None, + ), + frappe._dict( + name="Flask Item", + actual_qty=(-15), + qty_after_transaction=15, + stock_value_difference=(-15), + warehouse="WH 1", + posting_date="2022-01-02", + voucher_type="Stock Entry", + voucher_no="005", + has_serial_no=False, + serial_no=None, + ), + frappe._dict( + name="Flask Item", + actual_qty=10, + qty_after_transaction=25, + stock_value_difference=5, + warehouse="WH 1", + posting_date="2022-02-01", + voucher_type="Stock Entry", + voucher_no="006", + has_serial_no=False, + serial_no=None, + ), + frappe._dict( + name="Flask Item", + actual_qty=5, + qty_after_transaction=30, + stock_value_difference=2.5, + warehouse="WH 1", + posting_date="2022-02-02", + voucher_type="Stock Entry", + voucher_no="007", + has_serial_no=False, + serial_no=None, + ), + frappe._dict( + name="Flask Item", + actual_qty=5, + qty_after_transaction=35, + stock_value_difference=15, + warehouse="WH 1", + posting_date="2022-03-01", + voucher_type="Stock Entry", + voucher_no="008", + has_serial_no=False, + serial_no=None, + ), + ] + + slots = FIFOSlots(self.filters, sle).generate() + report_data = format_report_data(self.filters, slots, "2022-03-31") + range_values = report_data[0][7:15] + range_valuations = range_values[1::2] + self.assertEqual(range_valuations, [15, 7.5, 20, 5]) + def generate_item_and_item_wh_wise_slots(filters, sle): "Return results with and without 'show_warehouse_wise_stock'" diff --git a/erpnext/stock/report/stock_balance/stock_balance.js b/erpnext/stock/report/stock_balance/stock_balance.js index d80261895aa..0d68caa7e09 100644 --- a/erpnext/stock/report/stock_balance/stock_balance.js +++ b/erpnext/stock/report/stock_balance/stock_balance.js @@ -41,8 +41,14 @@ frappe.query_reports["Stock Balance"] = { width: "80", options: "Item", get_query: function () { + let item_group = frappe.query_report.get_filter_value("item_group"); + return { query: "erpnext.controllers.queries.item_query", + filters: { + ...(item_group && { item_group }), + is_stock_item: 1, + }, }; }, }, @@ -107,6 +113,12 @@ frappe.query_reports["Stock Balance"] = { fieldtype: "Check", default: 0, }, + { + fieldname: "show_dimension_wise_stock", + label: __("Show Dimension Wise Stock"), + fieldtype: "Check", + default: 0, + }, ], formatter: function (value, row, column, data, default_formatter) { diff --git a/erpnext/stock/report/stock_balance/stock_balance.py b/erpnext/stock/report/stock_balance/stock_balance.py index 2694ba03c8b..b6587cd7b37 100644 --- a/erpnext/stock/report/stock_balance/stock_balance.py +++ b/erpnext/stock/report/stock_balance/stock_balance.py @@ -214,9 +214,12 @@ class StockBalanceReport: elif entry.posting_date >= self.from_date and entry.posting_date <= self.to_date: if flt(qty_diff, self.float_precision) >= 0: qty_dict.in_qty += qty_diff - qty_dict.in_val += value_diff else: qty_dict.out_qty += abs(qty_diff) + + if flt(value_diff, self.float_precision) >= 0: + qty_dict.in_val += value_diff + else: qty_dict.out_val += abs(value_diff) qty_dict.val_rate = entry.valuation_rate @@ -252,7 +255,10 @@ class StockBalanceReport: group_by_key = [row.company, row.item_code, row.warehouse] for fieldname in self.inventory_dimensions: - if self.filters.get(fieldname): + if not row.get(fieldname): + continue + + if self.filters.get(fieldname) or self.filters.get("show_dimension_wise_stock"): group_by_key.append(row.get(fieldname)) return tuple(group_by_key) @@ -314,7 +320,6 @@ class StockBalanceReport: .where((sle.docstatus < 2) & (sle.is_cancelled == 0)) .orderby(sle.posting_datetime) .orderby(sle.creation) - .orderby(sle.actual_qty) ) query = self.apply_inventory_dimensions_filters(query, sle) @@ -401,16 +406,17 @@ class StockBalanceReport: }, ] - for dimension in get_inventory_dimensions(): - columns.append( - { - "label": _(dimension.doctype), - "fieldname": dimension.fieldname, - "fieldtype": "Link", - "options": dimension.doctype, - "width": 110, - } - ) + if self.filters.get("show_dimension_wise_stock"): + for dimension in get_inventory_dimensions(): + columns.append( + { + "label": _(dimension.doctype), + "fieldname": dimension.fieldname, + "fieldtype": "Link", + "options": dimension.doctype, + "width": 110, + } + ) columns.extend( [ diff --git a/erpnext/stock/report/stock_ledger/stock_ledger.py b/erpnext/stock/report/stock_ledger/stock_ledger.py index e56c499d767..391395503b0 100644 --- a/erpnext/stock/report/stock_ledger/stock_ledger.py +++ b/erpnext/stock/report/stock_ledger/stock_ledger.py @@ -8,7 +8,7 @@ from collections import defaultdict import frappe from frappe import _ from frappe.query_builder.functions import CombineDatetime, Sum -from frappe.utils import cint, flt +from frappe.utils import cint, flt, get_datetime from erpnext.stock.doctype.inventory_dimension.inventory_dimension import get_inventory_dimensions from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos @@ -367,6 +367,9 @@ def get_columns(filters): def get_stock_ledger_entries(filters, items): + from_date = get_datetime(filters.from_date + " 00:00:00") + to_date = get_datetime(filters.to_date + " 23:59:59") + sle = frappe.qb.DocType("Stock Ledger Entry") query = ( frappe.qb.from_(sle) @@ -390,12 +393,8 @@ def get_stock_ledger_entries(filters, items): sle.serial_no, sle.project, ) - .where( - (sle.docstatus < 2) - & (sle.is_cancelled == 0) - & (sle.posting_date[filters.from_date : filters.to_date]) - ) - .orderby(CombineDatetime(sle.posting_date, sle.posting_time)) + .where((sle.docstatus < 2) & (sle.is_cancelled == 0) & (sle.posting_datetime[from_date:to_date])) + .orderby(sle.posting_datetime) .orderby(sle.creation) ) diff --git a/erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.js b/erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.js index 1b05d3a65e4..df65654e36b 100644 --- a/erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.js +++ b/erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.js @@ -32,6 +32,12 @@ frappe.query_reports["Stock Ledger Invariant Check"] = { mandatory: 1, options: "Warehouse", }, + { + fieldname: "show_incorrect_entries", + fieldtype: "Check", + label: "Show Incorrect Entries", + default: 0, + }, ], formatter(value, row, column, data, default_formatter) { diff --git a/erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py b/erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py index fb392f7e36a..5cf653e3851 100644 --- a/erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py +++ b/erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py @@ -5,7 +5,7 @@ import json import frappe from frappe import _ -from frappe.utils import get_link_to_form, parse_json +from frappe.utils import cint, flt, get_link_to_form, parse_json SLE_FIELDS = ( "name", @@ -36,7 +36,7 @@ def execute(filters=None): def get_data(filters): sles = get_stock_ledger_entries(filters) - return add_invariant_check_fields(sles) + return add_invariant_check_fields(sles, filters) def get_stock_ledger_entries(filters): @@ -48,11 +48,14 @@ def get_stock_ledger_entries(filters): ) -def add_invariant_check_fields(sles): +def add_invariant_check_fields(sles, filters): balance_qty = 0.0 balance_stock_value = 0.0 + + incorrect_idx = 0 + precision = frappe.get_precision("Stock Ledger Entry", "actual_qty") for idx, sle in enumerate(sles): - queue = json.loads(sle.stock_queue) + queue = json.loads(sle.stock_queue) if sle.stock_queue else [] fifo_qty = 0.0 fifo_value = 0.0 @@ -95,6 +98,12 @@ def add_invariant_check_fields(sles): ) sle.diff_value_diff = sle.stock_value_from_diff - sle.stock_value + if not incorrect_idx and filters.get("show_incorrect_entries"): + if is_sle_has_correct_data(sle, precision): + continue + else: + incorrect_idx = idx + if idx > 0: sle.fifo_stock_diff = sle.fifo_stock_value - sles[idx - 1].fifo_stock_value sle.fifo_difference_diff = sle.fifo_stock_diff - sle.stock_value_difference @@ -104,9 +113,23 @@ def add_invariant_check_fields(sles): "Batch", sle.batch_no, "use_batchwise_valuation", cache=True ) + if filters.get("show_incorrect_entries"): + if incorrect_idx > 0: + sles = sles[cint(incorrect_idx) - 1 :] + + return [] + return sles +def is_sle_has_correct_data(sle, precision): + if flt(sle.difference_in_qty, precision) != 0.0 or flt(sle.diff_value_diff, precision) != 0: + print(flt(sle.difference_in_qty, precision), flt(sle.diff_value_diff, precision)) + return False + + return True + + def get_columns(): return [ { diff --git a/erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.js b/erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.js index 07e7b59b514..5dfb6627662 100644 --- a/erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.js +++ b/erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.js @@ -47,7 +47,23 @@ frappe.query_reports["Stock Ledger Variance"] = { fieldname: "difference_in", fieldtype: "Select", label: __("Difference In"), - options: ["", "Qty", "Value", "Valuation"], + options: [ + { + // Check "Stock Ledger Invariant Check" report with A - B column + label: __("Quantity (A - B)"), + value: "Qty", + }, + { + // Check "Stock Ledger Invariant Check" report with G - D column + label: __("Value (G - D)"), + value: "Value", + }, + { + // Check "Stock Ledger Invariant Check" report with I - K column + label: __("Valuation (I - K)"), + value: "Valuation", + }, + ], }, { fieldname: "include_disabled", diff --git a/erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py b/erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py index 0b7e551c86f..808afadd05a 100644 --- a/erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py +++ b/erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py @@ -1,6 +1,8 @@ # Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors # For license information, please see license.txt +import json + import frappe from frappe import _ from frappe.utils import cint, flt @@ -270,12 +272,16 @@ def has_difference(row, precision, difference_in, valuation_method): value_diff = flt(row.diff_value_diff, precision) valuation_diff = flt(row.valuation_diff, precision) else: - qty_diff = flt(row.difference_in_qty, precision) or flt(row.fifo_qty_diff, precision) - value_diff = ( - flt(row.diff_value_diff, precision) - or flt(row.fifo_value_diff, precision) - or flt(row.fifo_difference_diff, precision) - ) + qty_diff = flt(row.difference_in_qty, precision) + value_diff = flt(row.diff_value_diff, precision) + + if row.stock_queue and json.loads(row.stock_queue): + value_diff = value_diff or ( + flt(row.fifo_value_diff, precision) or flt(row.fifo_difference_diff, precision) + ) + + qty_diff = qty_diff or flt(row.fifo_qty_diff, precision) + valuation_diff = flt(row.valuation_diff, precision) or flt(row.fifo_valuation_diff, precision) if difference_in == "Qty" and qty_diff: diff --git a/erpnext/stock/report/stock_projected_qty/stock_projected_qty.py b/erpnext/stock/report/stock_projected_qty/stock_projected_qty.py index 743656c6472..9b4520064d6 100644 --- a/erpnext/stock/report/stock_projected_qty/stock_projected_qty.py +++ b/erpnext/stock/report/stock_projected_qty/stock_projected_qty.py @@ -297,6 +297,7 @@ def get_item_map(item_code, include_uom): if include_uom: ucd = frappe.qb.DocType("UOM Conversion Detail") + query = query.select(ucd.conversion_factor) query = query.left_join(ucd).on((ucd.parent == item.name) & (ucd.uom == include_uom)) items = query.run(as_dict=True) diff --git a/erpnext/stock/report/test_reports.py b/erpnext/stock/report/test_reports.py index 74c6afa204b..ad2b46b393f 100644 --- a/erpnext/stock/report/test_reports.py +++ b/erpnext/stock/report/test_reports.py @@ -1,6 +1,7 @@ import unittest import frappe +from frappe.utils.make_random import get_random from erpnext.tests.utils import ReportFilters, ReportName, execute_script_report @@ -11,7 +12,7 @@ DEFAULT_FILTERS = { } -batch = frappe.db.get_value("Batch", fieldname=["name"], as_dict=True, order_by="creation desc") +batch = get_random("Batch") REPORT_FILTER_TEST_CASES: list[tuple[ReportName, ReportFilters]] = [ ("Stock Ledger", {"_optional": True}), @@ -62,7 +63,7 @@ REPORT_FILTER_TEST_CASES: list[tuple[ReportName, ReportFilters]] = [ ("Item Prices", {"items": "Enabled Items only"}), ("Delayed Item Report", {"based_on": "Sales Invoice"}), ("Delayed Item Report", {"based_on": "Delivery Note"}), - ("Stock Ageing", {"range1": 30, "range2": 60, "range3": 90, "_optional": True}), + ("Stock Ageing", {"range": "30, 60, 90", "_optional": True}), ("Stock Ledger Invariant Check", {"warehouse": "_Test Warehouse - _TC", "item": "_Test Item"}), ("FIFO Queue vs Qty After Transaction Comparison", {"warehouse": "_Test Warehouse - _TC"}), ("FIFO Queue vs Qty After Transaction Comparison", {"item_group": "All Item Groups"}), diff --git a/erpnext/stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.js b/erpnext/stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.js index 137c786e44b..ac1ecfff530 100644 --- a/erpnext/stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.js +++ b/erpnext/stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.js @@ -3,6 +3,15 @@ frappe.query_reports["Warehouse wise Item Balance Age and Value"] = { filters: [ + { + fieldname: "company", + label: __("Company"), + fieldtype: "Link", + width: "80", + options: "Company", + reqd: 1, + default: frappe.defaults.get_user_default("Company"), + }, { fieldname: "from_date", label: __("From Date"), @@ -39,6 +48,12 @@ frappe.query_reports["Warehouse wise Item Balance Age and Value"] = { fieldtype: "Link", width: "80", options: "Warehouse", + get_query: function () { + const company = frappe.query_report.get_filter_value("company"); + return { + filters: { company: company }, + }; + }, }, { fieldname: "filter_total_zero_qty", diff --git a/erpnext/stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.py b/erpnext/stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.py index 0df8b6ddb48..68caff40356 100644 --- a/erpnext/stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.py +++ b/erpnext/stock/report/warehouse_wise_item_balance_age_and_value/warehouse_wise_item_balance_age_and_value.py @@ -109,8 +109,6 @@ def validate_filters(filters): sle_count = flt(frappe.qb.from_("Stock Ledger Entry").select(Count("name")).run()[0][0]) if sle_count > 500000: frappe.throw(_("Please set filter based on Item or Warehouse")) - if not filters.get("company"): - filters["company"] = frappe.defaults.get_user_default("Company") def get_warehouse_list(filters): diff --git a/erpnext/stock/serial_batch_bundle.py b/erpnext/stock/serial_batch_bundle.py index 46724be5927..e127960d6bb 100644 --- a/erpnext/stock/serial_batch_bundle.py +++ b/erpnext/stock/serial_batch_bundle.py @@ -6,6 +6,7 @@ from frappe.model.naming import make_autoname from frappe.query_builder.functions import CombineDatetime, Sum, Timestamp from frappe.utils import add_days, cint, cstr, flt, get_link_to_form, now, nowtime, today from pypika import Order +from pypika.terms import ExistsCriterion from erpnext.stock.deprecated_serial_batch import ( DeprecatedBatchNoValuation, @@ -124,7 +125,7 @@ class SerialBatchBundle: "Outward": self.sle.actual_qty < 0, }.get(sn_doc.type_of_transaction) - if not condition: + if not condition and self.sle.actual_qty: correct_type = "Inward" if sn_doc.type_of_transaction == "Inward": correct_type = "Outward" @@ -133,7 +134,7 @@ class SerialBatchBundle: frappe.throw(_(msg), title=_("Incorrect Type of Transaction")) precision = sn_doc.precision("total_qty") - if flt(sn_doc.total_qty, precision) != flt(self.sle.actual_qty, precision): + if self.sle.actual_qty and flt(sn_doc.total_qty, precision) != flt(self.sle.actual_qty, precision): msg = f"Total qty {flt(sn_doc.total_qty, precision)} of Serial and Batch Bundle {link} is not equal to Actual Qty {flt(self.sle.actual_qty, precision)} in the {self.sle.voucher_type} {self.sle.voucher_no}" frappe.throw(_(msg)) @@ -288,7 +289,7 @@ class SerialBatchBundle: "Serial and Batch Bundle", self.sle.serial_and_batch_bundle, "docstatus" ) - if docstatus != 1: + if docstatus == 0: self.submit_serial_and_batch_bundle() if self.item_details.has_serial_no == 1: @@ -301,9 +302,6 @@ class SerialBatchBundle: ): self.set_batch_no_in_serial_nos() - 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() @@ -311,7 +309,9 @@ class SerialBatchBundle: if self.is_pos_transaction(): return - frappe.get_cached_doc("Serial and Batch Bundle", self.sle.serial_and_batch_bundle).cancel() + doc = frappe.get_cached_doc("Serial and Batch Bundle", self.sle.serial_and_batch_bundle) + if doc.docstatus == 1: + doc.cancel() def is_pos_transaction(self): if ( @@ -349,6 +349,15 @@ class SerialBatchBundle: status = "Inactive" if self.sle.actual_qty < 0: status = "Delivered" + if self.sle.voucher_type == "Stock Entry": + purpose = frappe.get_cached_value("Stock Entry", self.sle.voucher_no, "purpose") + if purpose in [ + "Manufacture", + "Material Issue", + "Repack", + "Material Consumption for Manufacture", + ]: + status = "Consumed" sn_table = frappe.qb.DocType("Serial No") @@ -398,20 +407,6 @@ class SerialBatchBundle: .where(sn_table.name.isin(serial_nos)) ).run() - def update_batch_qty(self): - from erpnext.stock.doctype.batch.batch import get_available_batches - - batches = get_batch_nos(self.sle.serial_and_batch_bundle) - if not self.sle.serial_and_batch_bundle and self.sle.batch_no: - batches = frappe._dict({self.sle.batch_no: self.sle.actual_qty}) - - batches_qty = get_available_batches( - frappe._dict({"item_code": self.item_code, "batch_no": list(batches.keys())}) - ) - - for batch_no in batches: - frappe.db.set_value("Batch", batch_no, "batch_qty", batches_qty.get(batch_no, 0)) - def get_serial_nos(serial_and_batch_bundle, serial_nos=None): if not serial_and_batch_bundle: @@ -476,7 +471,7 @@ def get_serial_or_batch_nos(bundle): html = "" for d in data: if d.serial_no: - html += f"" + html += f"" else: html += f"" @@ -506,7 +501,7 @@ class SerialNoValuation(DeprecatedSerialNoValuation): serial_nos = self.get_serial_nos() for serial_no in serial_nos: incoming_rate = self.get_incoming_rate_from_bundle(serial_no) - if not incoming_rate: + if incoming_rate is None: continue self.stock_value_change += incoming_rate @@ -551,7 +546,7 @@ class SerialNoValuation(DeprecatedSerialNoValuation): query = query.where(timestamp_condition) incoming_rate = query.run() - return flt(incoming_rate[0][0]) if incoming_rate else 0.0 + return flt(incoming_rate[0][0]) if incoming_rate else None def get_serial_nos(self): if self.sle.get("serial_nos"): @@ -641,7 +636,10 @@ class BatchNoValuation(DeprecatedBatchNoValuation): child = frappe.qb.DocType("Serial and Batch Entry") timestamp_condition = "" - if self.sle.posting_date and self.sle.posting_time: + if self.sle.posting_date: + if self.sle.posting_time is None: + self.sle.posting_time = nowtime() + timestamp_condition = CombineDatetime(parent.posting_date, parent.posting_time) < CombineDatetime( self.sle.posting_date, self.sle.posting_time ) @@ -685,6 +683,8 @@ class BatchNoValuation(DeprecatedBatchNoValuation): return query.run(as_dict=True) def prepare_batches(self): + from erpnext.stock.utils import get_valuation_method + self.batches = self.batch_nos if isinstance(self.batch_nos, dict): self.batches = list(self.batch_nos.keys()) @@ -692,6 +692,12 @@ class BatchNoValuation(DeprecatedBatchNoValuation): self.batchwise_valuation_batches = [] self.non_batchwise_valuation_batches = [] + if get_valuation_method(self.sle.item_code) == "Moving Average" and frappe.db.get_single_value( + "Stock Settings", "do_not_use_batchwise_valuation" + ): + self.non_batchwise_valuation_batches = self.batches + return + batches = frappe.get_all( "Batch", filters={"name": ("in", self.batches), "use_batchwise_valuation": 1}, fields=["name"] ) @@ -723,15 +729,6 @@ class BatchNoValuation(DeprecatedBatchNoValuation): stock_value_change = self.batch_avg_rate[batch_no] * ledger.qty self.stock_value_change += stock_value_change - frappe.db.set_value( - "Serial and Batch Entry", - ledger.name, - { - "stock_value_difference": stock_value_change, - "incoming_rate": self.batch_avg_rate[batch_no], - }, - ) - def calculate_valuation_rate(self): if not hasattr(self, "wh_data"): return @@ -945,12 +942,13 @@ class SerialBatchCreation: if self.get("make_bundle_from_sle") and self.type_of_transaction == "Inward": doc.flags.ignore_validate_serial_batch = True - doc.save() - self.validate_qty(doc) - if not hasattr(self, "do_not_submit") or not self.do_not_submit: doc.flags.ignore_voucher_validation = True doc.submit() + else: + doc.save() + + self.validate_qty(doc) return doc @@ -984,7 +982,7 @@ class SerialBatchCreation: required_qty = flt(abs(self.actual_qty), precision) if required_qty - total_qty > 0: - msg = f"For the item {bold(doc.item_code)}, the Avaliable qty {bold(total_qty)} is less than the Required Qty {bold(required_qty)} in the warehouse {bold(doc.warehouse)}. Please add sufficient qty in the warehouse." + msg = f"For the item {bold(doc.item_code)}, the Available qty {bold(total_qty)} is less than the Required Qty {bold(required_qty)} in the warehouse {bold(doc.warehouse)}. Please add sufficient qty in the warehouse." frappe.throw(msg, title=_("Insufficient Stock")) def set_auto_serial_batch_entries_for_outward(self): @@ -1016,6 +1014,10 @@ class SerialBatchCreation: elif self.has_serial_no and not self.get("serial_nos"): self.serial_nos = get_serial_nos_for_outward(kwargs) elif not self.has_serial_no and self.has_batch_no and not self.get("batches"): + if self.get("posting_date"): + kwargs["posting_date"] = self.get("posting_date") + kwargs["posting_time"] = self.get("posting_time") + self.batches = get_available_batches(kwargs) def set_auto_serial_batch_entries_for_inward(self): @@ -1088,6 +1090,9 @@ class SerialBatchCreation: frappe.db.bulk_insert("Serial No", fields=fields, values=set(serial_nos_details)) def set_serial_batch_entries(self, doc): + incoming_rate = self.get("incoming_rate") + + precision = frappe.get_precision("Serial and Batch Entry", "qty") if self.get("serial_nos"): serial_no_wise_batch = frappe._dict({}) if self.has_batch_no: @@ -1095,30 +1100,55 @@ class SerialBatchCreation: qty = -1 if self.type_of_transaction == "Outward" else 1 for serial_no in self.serial_nos: + if self.get("serial_nos_valuation"): + incoming_rate = self.get("serial_nos_valuation").get(serial_no) + doc.append( "entries", { "serial_no": serial_no, "qty": qty, "batch_no": serial_no_wise_batch.get(serial_no) or self.get("batch_no"), - "incoming_rate": self.get("incoming_rate"), + "incoming_rate": incoming_rate, }, ) elif self.get("batches"): for batch_no, batch_qty in self.batches.items(): + if self.get("batches_valuation"): + incoming_rate = self.get("batches_valuation").get(batch_no) + doc.append( "entries", { "batch_no": batch_no, - "qty": batch_qty * (-1 if self.type_of_transaction == "Outward" else 1), - "incoming_rate": self.get("incoming_rate"), + "qty": flt(batch_qty, precision) + * (-1 if self.type_of_transaction == "Outward" else 1), + "incoming_rate": incoming_rate, }, ) def create_batch(self): from erpnext.stock.doctype.batch.batch import make_batch + if self.is_rejected: + bundle = frappe.db.get_value( + "Serial and Batch Bundle", + { + "voucher_no": self.voucher_no, + "voucher_type": self.voucher_type, + "voucher_detail_no": self.voucher_detail_no, + "is_rejected": 0, + "docstatus": 1, + "is_cancelled": 0, + }, + "name", + ) + + if bundle: + if batch_no := frappe.db.get_value("Serial and Batch Entry", {"parent": bundle}, "batch_no"): + return batch_no + return make_batch( frappe._dict( { @@ -1210,3 +1240,53 @@ def get_serial_nos_batch(serial_nos): as_list=1, ) ) + + +def update_batch_qty(voucher_type, voucher_no, via_landed_cost_voucher=False): + from erpnext.stock.doctype.batch.batch import get_available_batches + + batches = get_distinct_batches(voucher_type, voucher_no) + if not batches: + return + + precision = frappe.get_precision("Batch", "batch_qty") + batch_data = get_available_batches( + frappe._dict({"batch_no": batches, "consider_negative_batches": 1, "based_on_warehouse": True}) + ) + batchwise_qty = defaultdict(float) + + for (batch_no, warehouse), qty in batch_data.items(): + if not via_landed_cost_voucher and flt(qty, precision) < 0: + throw_negative_batch_validation(batch_no, warehouse, qty) + + batchwise_qty[batch_no] += qty + + for batch_no in batches: + qty = flt(batchwise_qty.get(batch_no, 0), precision) + frappe.db.set_value("Batch", batch_no, "batch_qty", qty) + + +def throw_negative_batch_validation(batch_no, warehouse, qty): + frappe.throw( + _("The Batch {0} has negative quantity {1} in warehouse {2}. Please correct the quantity.").format( + bold(batch_no), bold(qty), bold(warehouse) + ), + title=_("Negative Batch Quantity"), + ) + + +def get_distinct_batches(voucher_type, voucher_no): + bundles = frappe.get_all( + "Serial and Batch Bundle", + filters={"voucher_no": voucher_no, "voucher_type": voucher_type}, + pluck="name", + ) + if not bundles: + return + + return frappe.get_all( + "Serial and Batch Entry", + filters={"parent": ("in", bundles), "batch_no": ("is", "set")}, + group_by="batch_no", + pluck="batch_no", + ) diff --git a/erpnext/stock/stock_balance.py b/erpnext/stock/stock_balance.py index 23c21ed096e..6a2f818f7ae 100644 --- a/erpnext/stock/stock_balance.py +++ b/erpnext/stock/stock_balance.py @@ -80,7 +80,7 @@ def get_balance_qty_from_sle(item_code, warehouse): balance_qty = frappe.db.sql( """select qty_after_transaction from `tabStock Ledger Entry` where item_code=%s and warehouse=%s and is_cancelled=0 - order by posting_date desc, posting_time desc, creation desc + order by posting_datetime desc, creation desc limit 1""", (item_code, warehouse), ) diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py index 556aac09abd..7e2d8bef79b 100644 --- a/erpnext/stock/stock_ledger.py +++ b/erpnext/stock/stock_ledger.py @@ -184,11 +184,16 @@ def validate_serial_no(sle): frappe.throw(_(msg), title=_(title), exc=SerialNoExistsInFutureTransaction) -def validate_cancellation(args): - if args[0].get("is_cancelled"): +def validate_cancellation(kargs): + if kargs[0].get("is_cancelled"): repost_entry = frappe.db.get_value( "Repost Item Valuation", - {"voucher_type": args[0].voucher_type, "voucher_no": args[0].voucher_no, "docstatus": 1}, + { + "voucher_type": kargs[0].voucher_type, + "voucher_no": kargs[0].voucher_no, + "docstatus": 1, + "recreate_stock_ledgers": 0, + }, ["name", "status"], as_dict=1, ) @@ -222,7 +227,6 @@ def make_entry(args, allow_negative_stock=False, via_landed_cost_voucher=False): sle.flags.ignore_permissions = 1 sle.allow_negative_stock = allow_negative_stock sle.via_landed_cost_voucher = via_landed_cost_voucher - sle.set_posting_datetime() sle.submit() # Added to handle the case when the stock ledger entry is created from the repostig @@ -406,23 +410,13 @@ def create_json_gz_file(data, doc, file_name=None) -> str: compressed_content = gzip.compress(encoded_content) if not file_name: - json_filename = f"{scrub(doc.doctype)}-{scrub(doc.name)}.json.gz" - _file = frappe.get_doc( - { - "doctype": "File", - "file_name": json_filename, - "attached_to_doctype": doc.doctype, - "attached_to_name": doc.name, - "attached_to_field": "reposting_data_file", - "content": compressed_content, - "is_private": 1, - } - ) - _file.save(ignore_permissions=True) - - return _file.file_url + return create_file(doc, compressed_content) else: file_doc = frappe.get_doc("File", file_name) + if "/frappe_s3_attachment." in file_doc.file_url: + file_doc.delete() + return create_file(doc, compressed_content) + path = file_doc.get_full_path() with open(path, "wb") as f: @@ -431,6 +425,24 @@ def create_json_gz_file(data, doc, file_name=None) -> str: return doc.reposting_data_file +def create_file(doc, compressed_content): + json_filename = f"{scrub(doc.doctype)}-{scrub(doc.name)}.json.gz" + _file = frappe.get_doc( + { + "doctype": "File", + "file_name": json_filename, + "attached_to_doctype": doc.doctype, + "attached_to_name": doc.name, + "attached_to_field": "reposting_data_file", + "content": compressed_content, + "is_private": 1, + } + ) + _file.save(ignore_permissions=True) + + return _file.file_url + + def get_items_to_be_repost(voucher_type=None, voucher_no=None, doc=None, reposting_data=None): if not reposting_data and doc and doc.reposting_data_file: reposting_data = get_reposting_data(doc.reposting_data_file) @@ -535,9 +547,6 @@ class update_entries_after: self.allow_zero_rate = allow_zero_rate self.via_landed_cost_voucher = via_landed_cost_voucher self.item_code = args.get("item_code") - self.use_moving_avg_for_batch = frappe.db.get_single_value( - "Stock Settings", "do_not_use_batchwise_valuation" - ) self.allow_negative_stock = allow_negative_stock or is_negative_stock_allowed( item_code=self.item_code @@ -554,12 +563,28 @@ class update_entries_after: self.new_items_found = False self.distinct_item_warehouses = args.get("distinct_item_warehouses", frappe._dict()) self.affected_transactions: set[tuple[str, str]] = set() - self.reserved_stock = flt(self.args.reserved_stock) + self.reserved_stock = self.get_reserved_stock() self.data = frappe._dict() self.initialize_previous_data(self.args) self.build() + def get_reserved_stock(self): + sre = frappe.qb.DocType("Stock Reservation Entry") + posting_datetime = get_combine_datetime(self.args.posting_date, self.args.posting_time) + query = ( + frappe.qb.from_(sre) + .select(Sum(sre.reserved_qty) - Sum(sre.delivered_qty)) + .where( + (sre.item_code == self.item_code) + & (sre.warehouse == self.args.warehouse) + & (sre.docstatus == 1) + & (sre.creation <= posting_datetime) + ) + ).run() + + return flt(query[0][0]) if query else 0.0 + def set_precision(self): self.flt_precision = cint(frappe.db.get_default("float_precision")) or 2 self.currency_precision = get_field_precision( @@ -626,6 +651,15 @@ class update_entries_after: if self.exceptions: self.raise_exceptions() + def has_stock_reco_with_serial_batch(self, sle): + if ( + sle.voucher_type == "Stock Reconciliation" + and frappe.db.get_value(sle.voucher_type, sle.voucher_no, "set_posting_time") == 1 + ): + return not (sle.batch_no or sle.serial_no or sle.serial_and_batch_bundle) + + return False + def process_sle_against_current_timestamp(self): sl_entries = self.get_sle_against_current_voucher() for sle in sl_entries: @@ -805,7 +839,7 @@ class update_entries_after: if sle.get(dimension.get("fieldname")): has_dimensions = True - if sle.serial_and_batch_bundle and (not self.use_moving_avg_for_batch or sle.has_serial_no): + if sle.serial_and_batch_bundle: self.calculate_valuation_for_serial_batch_bundle(sle) elif sle.serial_no and not self.args.get("sle_id"): # Only run in reposting @@ -865,21 +899,16 @@ class update_entries_after: sle.stock_value = self.wh_data.stock_value sle.stock_queue = json.dumps(self.wh_data.stock_queue) - if not sle.is_adjustment_entry or not self.args.get("sle_id"): + if not sle.is_adjustment_entry: sle.stock_value_difference = stock_value_difference + elif sle.is_adjustment_entry and not self.args.get("sle_id"): + sle.stock_value_difference = get_stock_value_difference( + sle.item_code, sle.warehouse, sle.posting_date, sle.posting_time, sle.voucher_no + ) sle.doctype = "Stock Ledger Entry" frappe.get_doc(sle).db_update() - if ( - sle.serial_and_batch_bundle - and self.valuation_method == "Moving Average" - and self.use_moving_avg_for_batch - and (sle.batch_no or sle.has_batch_no) - ): - valuation_rate = flt(stock_value_difference) / flt(sle.actual_qty) - self.update_valuation_rate_in_serial_and_batch_bundle(sle, valuation_rate) - if not self.args.get("sle_id") or ( sle.serial_and_batch_bundle and sle.auto_created_serial_and_batch_bundle ): @@ -926,7 +955,7 @@ class update_entries_after: # else it remains the same as that of previous entry self.wh_data.valuation_rate = new_stock_value / new_stock_qty - if not self.wh_data.valuation_rate and sle.voucher_detail_no: + if self.wh_data.valuation_rate is None and sle.voucher_detail_no: allow_zero_rate = self.check_if_allow_zero_valuation_rate(sle.voucher_type, sle.voucher_detail_no) if not allow_zero_rate: self.wh_data.valuation_rate = self.get_fallback_rate(sle) @@ -976,29 +1005,25 @@ class update_entries_after: if not frappe.db.exists("Serial and Batch Bundle", sle.serial_and_batch_bundle): return - doc = frappe.get_cached_doc("Serial and Batch Bundle", sle.serial_and_batch_bundle) - - doc.set_incoming_rate(save=True, allow_negative_stock=self.allow_negative_stock) - doc.calculate_qty_and_amount(save=True) + if self.args.get("sle_id") and sle.actual_qty < 0: + doc = frappe.db.get_value( + "Serial and Batch Bundle", + sle.serial_and_batch_bundle, + ["total_amount", "total_qty"], + as_dict=1, + ) + else: + doc = frappe.get_doc("Serial and Batch Bundle", sle.serial_and_batch_bundle) + doc.set_incoming_rate(save=True, allow_negative_stock=self.allow_negative_stock) + doc.calculate_qty_and_amount(save=True) self.wh_data.stock_value = round_off_if_near_zero(self.wh_data.stock_value + doc.total_amount) - - precision = doc.precision("total_qty") - self.wh_data.qty_after_transaction += flt(doc.total_qty, precision) - if flt(self.wh_data.qty_after_transaction, precision): - self.wh_data.valuation_rate = flt(self.wh_data.stock_value, precision) / flt( - self.wh_data.qty_after_transaction, precision + self.wh_data.qty_after_transaction += flt(doc.total_qty, self.flt_precision) + if flt(self.wh_data.qty_after_transaction, self.flt_precision): + self.wh_data.valuation_rate = flt(self.wh_data.stock_value, self.flt_precision) / flt( + self.wh_data.qty_after_transaction, self.flt_precision ) - def update_valuation_rate_in_serial_and_batch_bundle(self, sle, valuation_rate): - # Only execute if the item has batch_no and the valuation method is moving average - if not frappe.db.exists("Serial and Batch Bundle", sle.serial_and_batch_bundle): - return - - doc = frappe.get_cached_doc("Serial and Batch Bundle", sle.serial_and_batch_bundle) - doc.update_valuation_rate(valuation_rate, save=True) - doc.calculate_qty_and_amount(save=True) - def get_outgoing_rate_for_batched_item(self, sle): if self.wh_data.qty_after_transaction == 0: return 0 @@ -1023,7 +1048,7 @@ class update_entries_after: def get_dynamic_incoming_outgoing_rate(self, sle): # Get updated incoming/outgoing rate from transaction - if sle.recalculate_rate: + if sle.recalculate_rate or self.has_landed_cost_based_on_pi(sle): rate = self.get_incoming_outgoing_rate_from_transaction(sle) if flt(sle.actual_qty) >= 0: @@ -1031,11 +1056,19 @@ class update_entries_after: else: sle.outgoing_rate = rate + def has_landed_cost_based_on_pi(self, sle): + if sle.voucher_type == "Purchase Receipt" and frappe.db.get_single_value( + "Buying Settings", "set_landed_cost_based_on_purchase_invoice_rate" + ): + return True + + return False + def get_incoming_outgoing_rate_from_transaction(self, sle): rate = 0 # Material Transfer, Repack, Manufacturing if sle.voucher_type == "Stock Entry": - self.recalculate_amounts_in_stock_entry(sle.voucher_no) + self.recalculate_amounts_in_stock_entry(sle.voucher_no, sle.voucher_detail_no) rate = frappe.db.get_value("Stock Entry Detail", sle.voucher_detail_no, "valuation_rate") # Sales and Purchase Return elif sle.voucher_type in ( @@ -1074,6 +1107,15 @@ class update_entries_after: } ) + if not rate and sle.voucher_type in ["Delivery Note", "Sales Invoice"]: + rate = get_rate_for_return( + sle.voucher_type, + sle.voucher_no, + sle.item_code, + voucher_detail_no=sle.voucher_detail_no, + sle=sle, + ) + else: rate = get_rate_for_return( sle.voucher_type, @@ -1154,15 +1196,33 @@ class update_entries_after: frappe.db.set_value("Stock Entry Detail", sle.voucher_detail_no, "basic_rate", outgoing_rate) # Update outgoing item's rate, recalculate FG Item's rate and total incoming/outgoing amount - if not sle.dependant_sle_voucher_detail_no: - self.recalculate_amounts_in_stock_entry(sle.voucher_no) + if not sle.dependant_sle_voucher_detail_no or self.is_manufacture_entry_with_sabb(sle): + self.recalculate_amounts_in_stock_entry(sle.voucher_no, sle.voucher_detail_no) - def recalculate_amounts_in_stock_entry(self, voucher_no): + def is_manufacture_entry_with_sabb(self, sle): + if ( + self.args.get("sle_id") + and sle.serial_and_batch_bundle + and sle.auto_created_serial_and_batch_bundle + ): + purpose = frappe.get_cached_value("Stock Entry", sle.voucher_no, "purpose") + if purpose in ["Manufacture", "Repack"]: + return True + + return False + + def recalculate_amounts_in_stock_entry(self, voucher_no, voucher_detail_no): stock_entry = frappe.get_doc("Stock Entry", voucher_no, for_update=True) stock_entry.calculate_rate_and_amount(reset_outgoing_rate=False, raise_error_if_no_rate=False) stock_entry.db_update() for d in stock_entry.items: - d.db_update() + # Update only the row that matches the voucher_detail_no or the row containing the FG/Scrap Item. + if ( + d.name == voucher_detail_no + or (not d.s_warehouse and d.t_warehouse) + or stock_entry.purpose in ["Manufacture", "Repack"] + ): + d.db_update() def update_rate_on_delivery_and_sales_return(self, sle, outgoing_rate): # Update item's incoming rate on transaction @@ -1455,7 +1515,7 @@ class update_entries_after: ) in frappe.local.flags.currently_saving: msg = _("{0} units of {1} needed in {2} to complete this transaction.").format( frappe.bold(abs(deficiency)), - frappe.get_desk_link("Item", exceptions[0]["item_code"]), + frappe.get_desk_link("Item", exceptions[0]["item_code"], show_title_with_name=True), frappe.get_desk_link("Warehouse", warehouse), ) else: @@ -1463,7 +1523,7 @@ class update_entries_after: "{0} units of {1} needed in {2} on {3} {4} for {5} to complete this transaction." ).format( frappe.bold(abs(deficiency)), - frappe.get_desk_link("Item", exceptions[0]["item_code"]), + frappe.get_desk_link("Item", exceptions[0]["item_code"], show_title_with_name=True), frappe.get_desk_link("Warehouse", warehouse), exceptions[0]["posting_date"], exceptions[0]["posting_time"], @@ -1527,7 +1587,7 @@ def get_previous_sle_of_current_voucher(args, operator="<", exclude_current_vouc voucher_no = args.get("voucher_no") voucher_condition = f"and voucher_no != '{voucher_no}'" - elif args.get("creation"): + elif args.get("creation") and args.get("sle_id"): creation = args.get("creation") operator = "<=" voucher_condition = f"and creation < '{creation}'" @@ -1543,7 +1603,7 @@ def get_previous_sle_of_current_voucher(args, operator="<", exclude_current_vouc and ( posting_datetime {operator} %(posting_datetime)s ) - order by posting_date desc, posting_time desc, creation desc + order by posting_datetime desc, creation desc limit 1 for update""", { @@ -1637,7 +1697,7 @@ def get_stock_ledger_entries( where item_code = %(item_code)s and is_cancelled = 0 {conditions} - order by posting_date {order}, posting_time {order}, creation {order} + order by posting_datetime {order}, creation {order} {limit} {for_update}""".format( conditions=conditions, limit=limit or "", @@ -1731,6 +1791,9 @@ def get_valuation_rate( # Get moving average rate of a specific batch number if warehouse and serial_and_batch_bundle: + sabb = frappe.db.get_value( + "Serial and Batch Bundle", serial_and_batch_bundle, ["posting_date", "posting_time"], as_dict=True + ) batch_obj = BatchNoValuation( sle=frappe._dict( { @@ -1738,6 +1801,8 @@ def get_valuation_rate( "warehouse": warehouse, "actual_qty": -1, "serial_and_batch_bundle": serial_and_batch_bundle, + "posting_date": sabb.posting_date, + "posting_time": sabb.posting_time, } ) ) @@ -1754,7 +1819,7 @@ def get_valuation_rate( AND valuation_rate >= 0 AND is_cancelled = 0 AND NOT (voucher_no = %s AND voucher_type = %s) - order by posting_date desc, posting_time desc, name desc limit 1""", + order by posting_datetime desc, creation desc limit 1""", (item_code, warehouse, voucher_no, voucher_type), ): return flt(last_valuation_rate[0][0]) @@ -1947,7 +2012,7 @@ def validate_negative_qty_in_future_sle(args, allow_negative_stock=False): if is_negative_with_precision(neg_sle): message = _("{0} units of {1} needed in {2} on {3} {4} for {5} to complete this transaction.").format( abs(neg_sle[0]["qty_after_transaction"]), - frappe.get_desk_link("Item", args.item_code), + frappe.get_desk_link("Item", args.item_code, show_title_with_name=True), frappe.get_desk_link("Warehouse", args.warehouse), neg_sle[0]["posting_date"], neg_sle[0]["posting_time"], @@ -2005,7 +2070,7 @@ def get_future_sle_with_negative_qty(sle_args): and posting_datetime >= %(posting_datetime)s and is_cancelled = 0 and qty_after_transaction < 0 - order by posting_date asc, posting_time asc + order by posting_datetime asc, creation asc limit 1 """, sle_args, @@ -2019,14 +2084,14 @@ def get_future_sle_with_negative_batch_qty(sle_args): with batch_ledger as ( select posting_date, posting_time, posting_datetime, voucher_type, voucher_no, - sum(actual_qty) over (order by posting_date, posting_time, creation) as cumulative_total + sum(actual_qty) over (order by posting_datetime, creation) as cumulative_total from `tabStock Ledger Entry` where item_code = %(item_code)s and warehouse = %(warehouse)s and batch_no=%(batch_no)s and is_cancelled = 0 - order by posting_date, posting_time, creation + order by posting_datetime, creation ) select * from batch_ledger where @@ -2071,7 +2136,7 @@ def validate_reserved_stock(kwargs): if diff < 0 and abs(diff) > 0.0001: msg = _("{0} units of {1} needed in {2} on {3} {4} to complete this transaction.").format( abs(diff), - frappe.get_desk_link("Item", kwargs.item_code), + frappe.get_desk_link("Item", kwargs.item_code, show_title_with_name=True), frappe.get_desk_link("Warehouse", kwargs.warehouse), nowdate(), nowtime(), diff --git a/erpnext/stock/tests/test_get_item_details.py b/erpnext/stock/tests/test_get_item_details.py index 30f748a65e0..fc19bac0a44 100644 --- a/erpnext/stock/tests/test_get_item_details.py +++ b/erpnext/stock/tests/test_get_item_details.py @@ -34,3 +34,66 @@ class TestGetItemDetail(FrappeTestCase): ) details = get_item_details(args) self.assertEqual(details.get("price_list_rate"), 100) + + # making this test in get_item_details test file as feat/fix is present in that method + def test_fetch_price_from_list_rate_on_doc_save(self): + # create item + item = frappe.get_doc( + { + "doctype": "Item", + "item_code": "Test Item with Batch", + "item_name": "Test Item with Batch", + "item_group": "All Item Groups", + "is_stock_item": 1, + "has_batch_no": 1, + } + ).insert() + + # create batch + frappe.get_doc( + { + "doctype": "Batch", + "batch_id": "BATCH01", + "item": item, + } + ).insert() + + # create item price + frappe.get_doc( + { + "doctype": "Item Price", + "price_list": "Standard Selling", + "item_code": item.item_code, + "price_list_rate": 50, + "batch_no": "BATCH01", + } + ).insert() + + # create purchase receipt to have some stock for delivery + from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import make_purchase_receipt + + make_purchase_receipt( + item_code=item.item_code, + warehouse="_Test Warehouse - _TC", + qty=100, + rate=100, + batch_no="BATCH01", + ) + + # creating sales order just to create delivery note from it + from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order + + so = make_sales_order(item_code=item.item_code, qty=2, rate=75) + + from erpnext.selling.doctype.sales_order.sales_order import make_delivery_note + + dn = make_delivery_note(so.name) + + # Test 1 : On creation of DN, item's batch won't be fetched and rate will remaing the same as in SO + self.assertIsNone(dn.items[0].batch_no) + self.assertEqual(dn.items[0].rate, 75) + + # Test 2 : On saving the DN, item's batch will be fetched and rate will be updated from Item Price + dn.save() + self.assertEqual(dn.items[0].batch_no, "BATCH01") + self.assertEqual(dn.items[0].rate, 50) diff --git a/erpnext/stock/utils.py b/erpnext/stock/utils.py index ee5893eb826..f1055b114cf 100644 --- a/erpnext/stock/utils.py +++ b/erpnext/stock/utils.py @@ -58,7 +58,10 @@ def get_stock_value_from_bin(warehouse=None, item_code=None): def get_stock_value_on( - warehouses: list | str | None = None, posting_date: str | None = None, item_code: str | None = None + warehouses: list | str | None = None, + posting_date: str | None = None, + item_code: str | None = None, + company: str | None = None, ) -> float: if not posting_date: posting_date = nowdate() @@ -84,6 +87,9 @@ def get_stock_value_on( if item_code: query = query.where(sle.item_code == item_code) + if company: + query = query.where(sle.company == company) + return query.run(as_list=True)[0][0] @@ -657,4 +663,4 @@ def get_combine_datetime(posting_date, posting_time): if isinstance(posting_time, datetime.timedelta): posting_time = (datetime.datetime.min + posting_time).time() - return datetime.datetime.combine(posting_date, posting_time).replace(microsecond=0) + return datetime.datetime.combine(posting_date, posting_time) diff --git a/erpnext/stock/workspace/stock/stock.json b/erpnext/stock/workspace/stock/stock.json index 1a683e2b3d8..2f8435ac702 100644 --- a/erpnext/stock/workspace/stock/stock.json +++ b/erpnext/stock/workspace/stock/stock.json @@ -802,7 +802,7 @@ "doc_view": "List", "label": "Learn Inventory Management", "type": "URL", - "url": "https://frappe.school/courses/inventory-management?utm_source=in_app" + "url": "https://school.frappe.io/lms/courses/inventory-management?utm_source=in_app" }, { "color": "Yellow", @@ -850,4 +850,4 @@ } ], "title": "Stock" -} \ No newline at end of file +} diff --git a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js index c6ee3a3e0e3..bf0c8dc53f8 100644 --- a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js +++ b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js @@ -5,10 +5,38 @@ frappe.provide("erpnext.buying"); erpnext.landed_cost_taxes_and_charges.setup_triggers("Subcontracting Order"); +// client script for Subcontracting Order Item is not necessarily required as the server side code will do everything that is necessary. +// this is just so that the user does not get potentially confused +frappe.ui.form.on("Subcontracting Order Item", { + qty(frm, cdt, cdn) { + const row = locals[cdt][cdn]; + frappe.model.set_value(cdt, cdn, "amount", row.qty * row.rate); + const service_item = frm.doc.service_items[row.idx - 1]; + frappe.model.set_value( + service_item.doctype, + service_item.name, + "qty", + row.qty * row.subcontracting_conversion_factor + ); + frappe.model.set_value(service_item.doctype, service_item.name, "fg_item_qty", row.qty); + frappe.model.set_value( + service_item.doctype, + service_item.name, + "amount", + row.qty * row.subcontracting_conversion_factor * service_item.rate + ); + }, + before_items_remove(frm, cdt, cdn) { + const row = locals[cdt][cdn]; + frm.toggle_enable(["service_items"], true); + frm.get_field("service_items").grid.grid_rows[row.idx - 1].remove(); + frm.toggle_enable(["service_items"], false); + }, +}); + frappe.ui.form.on("Subcontracting Order", { setup: (frm) => { frm.get_field("items").grid.cannot_add_rows = true; - frm.get_field("items").grid.only_sortable(); frm.trigger("set_queries"); frm.set_indicator_formatter("item_code", (doc) => (doc.qty <= doc.received_qty ? "green" : "orange")); diff --git a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.json b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.json index b8bda832983..206e3135dfb 100644 --- a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.json +++ b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.json @@ -294,7 +294,7 @@ "fieldname": "total", "fieldtype": "Currency", "label": "Total", - "options": "currency", + "options": "Company:company:default_currency", "read_only": 1 }, { @@ -353,6 +353,7 @@ "fieldname": "total_additional_costs", "fieldtype": "Currency", "label": "Total Additional Costs", + "options": "Company:company:default_currency", "print_hide_if_no_value": 1, "read_only": 1 }, @@ -450,21 +451,21 @@ "options": "Project" }, { - "fieldname": "tab_other_info", - "fieldtype": "Tab Break", - "label": "Other Info" + "fieldname": "tab_other_info", + "fieldtype": "Tab Break", + "label": "Other Info" }, { - "fieldname": "tab_connections", - "fieldtype": "Tab Break", - "label": "Connections", - "show_dashboard": 1 + "fieldname": "tab_connections", + "fieldtype": "Tab Break", + "label": "Connections", + "show_dashboard": 1 } ], "icon": "fa fa-file-text", "is_submittable": 1, "links": [], - "modified": "2024-01-03 20:56:04.670380", + "modified": "2024-12-06 15:21:49.924146", "modified_by": "Administrator", "module": "Subcontracting", "name": "Subcontracting Order", @@ -519,4 +520,4 @@ "timeline_field": "supplier", "title_field": "supplier_name", "track_changes": 1 -} \ No newline at end of file +} diff --git a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.py b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.py index 8419c8e9093..e8bee897840 100644 --- a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.py +++ b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.py @@ -6,7 +6,6 @@ from frappe import _ 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.utils import check_on_hold_or_closed_status from erpnext.controllers.subcontracting_controller import SubcontractingController from erpnext.stock.stock_balance import update_bin_qty @@ -120,20 +119,15 @@ class SubcontractingOrder(SubcontractingController): def on_submit(self): self.update_prevdoc_status() self.update_status() + self.update_subcontracted_quantity_in_po() def on_cancel(self): self.update_prevdoc_status() self.update_status() + self.update_subcontracted_quantity_in_po(cancel=True) def validate_purchase_order_for_subcontracting(self): if self.purchase_order: - if is_subcontracting_order_created(self.purchase_order): - frappe.throw( - _( - "Only one Subcontracting Order can be created against a Purchase Order, cancel the existing Subcontracting Order to create a new one." - ) - ) - po = frappe.get_doc("Purchase Order", self.purchase_order) if not po.is_subcontracted: @@ -154,10 +148,23 @@ class SubcontractingOrder(SubcontractingController): frappe.throw(_("Please select a Subcontracting Purchase Order.")) def validate_service_items(self): - for item in self.service_items: - if frappe.get_value("Item", item.item_code, "is_stock_item"): - msg = f"Service Item {item.item_name} must be a non-stock item." - frappe.throw(_(msg)) + purchase_order_items = [item.purchase_order_item for item in self.items] + self.service_items = [ + service_item + for service_item in self.service_items + if service_item.purchase_order_item in purchase_order_items + ] + + for service_item in self.service_items: + if frappe.get_value("Item", service_item.item_code, "is_stock_item"): + frappe.throw(_("Service Item {0} must be a non-stock item.").format(service_item.item_code)) + + item = next( + item for item in self.items if item.purchase_order_item == service_item.purchase_order_item + ) + service_item.qty = item.qty * item.subcontracting_conversion_factor + service_item.fg_item_qty = item.qty + service_item.amount = service_item.qty * service_item.rate def validate_supplied_items(self): if self.supplier_warehouse: @@ -241,6 +248,20 @@ class SubcontractingOrder(SubcontractingController): for si in self.service_items: if si.fg_item: item = frappe.get_doc("Item", si.fg_item) + + po_item = frappe.get_doc("Purchase Order Item", si.purchase_order_item) + available_qty = po_item.qty - po_item.subcontracted_quantity + + if available_qty == 0: + continue + + si.qty = available_qty + conversion_factor = po_item.qty / po_item.fg_item_qty + si.fg_item_qty = flt( + available_qty / conversion_factor, frappe.get_precision("Purchase Order Item", "qty") + ) + si.amount = available_qty * si.rate + bom = ( frappe.db.get_value( "Subcontracting BOM", @@ -257,6 +278,7 @@ class SubcontractingOrder(SubcontractingController): "schedule_date": self.schedule_date, "description": item.description, "qty": si.fg_item_qty, + "subcontracting_conversion_factor": conversion_factor, "stock_uom": item.stock_uom, "bom": bom, "purchase_order_item": si.purchase_order_item, @@ -310,6 +332,16 @@ class SubcontractingOrder(SubcontractingController): self.update_ordered_qty_for_subcontracting() self.update_reserved_qty_for_subcontracting() + def update_subcontracted_quantity_in_po(self, cancel=False): + for service_item in self.service_items: + doc = frappe.get_doc("Purchase Order Item", service_item.purchase_order_item) + doc.subcontracted_quantity = ( + (doc.subcontracted_quantity + service_item.qty) + if not cancel + else (doc.subcontracted_quantity - service_item.qty) + ) + doc.save() + @frappe.whitelist() def make_subcontracting_receipt(source_name, target_doc=None): diff --git a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order_list.js b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order_list.js index 895ffdbf88c..f5486bbd59d 100644 --- a/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order_list.js +++ b/erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order_list.js @@ -4,7 +4,7 @@ frappe.listview_settings["Subcontracting Order"] = { get_indicator: function (doc) { const status_colors = { - Draft: "grey", + Draft: "red", Open: "orange", "Partially Received": "yellow", Completed: "green", diff --git a/erpnext/subcontracting/doctype/subcontracting_order/test_subcontracting_order.py b/erpnext/subcontracting/doctype/subcontracting_order/test_subcontracting_order.py index 0ae07993be8..43592b628ad 100644 --- a/erpnext/subcontracting/doctype/subcontracting_order/test_subcontracting_order.py +++ b/erpnext/subcontracting/doctype/subcontracting_order/test_subcontracting_order.py @@ -25,6 +25,7 @@ from erpnext.controllers.tests.test_subcontracting_controller import ( make_subcontracted_items, set_backflush_based_on, ) +from erpnext.manufacturing.doctype.production_plan.test_production_plan import make_bom from erpnext.stock.doctype.item.test_item import make_item from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry from erpnext.subcontracting.doctype.subcontracting_order.subcontracting_order import ( @@ -39,12 +40,6 @@ class TestSubcontractingOrder(FrappeTestCase): make_service_items() make_bom_for_subcontracted_items() - def test_populate_items_table(self): - sco = get_subcontracting_order() - sco.items = None - sco.populate_items_table() - self.assertEqual(len(sco.service_items), len(sco.items)) - def test_set_missing_values(self): sco = get_subcontracting_order() before = {sco.total_qty, sco.total, sco.total_additional_costs} @@ -683,6 +678,28 @@ class TestSubcontractingOrder(FrappeTestCase): self.assertEqual(requested_qty, new_requested_qty) + def test_subcontracting_order_rm_required_items_for_precision(self): + item_code = "Subcontracted Item SA9" + raw_materials = ["Subcontracted SRM Item 9"] + if not frappe.db.exists("BOM", {"item": item_code}): + make_bom(item=item_code, raw_materials=raw_materials, rate=100, rm_qty=1.04) + + service_items = [ + { + "warehouse": "_Test Warehouse - _TC", + "item_code": "Subcontracted Service Item 9", + "qty": 1, # 202.0656, + "rate": 100, + "fg_item": "Subcontracted Item SA9", + "fg_item_qty": 202.0656, + }, + ] + + sco = get_subcontracting_order(service_items=service_items) + sco.reload() + + self.assertEqual(sco.supplied_items[0].required_qty, 210.149) + def create_subcontracting_order(**args): args = frappe._dict(args) diff --git a/erpnext/subcontracting/doctype/subcontracting_order_item/subcontracting_order_item.json b/erpnext/subcontracting/doctype/subcontracting_order_item/subcontracting_order_item.json index 1ca90c31654..e85929dd2bb 100644 --- a/erpnext/subcontracting/doctype/subcontracting_order_item/subcontracting_order_item.json +++ b/erpnext/subcontracting/doctype/subcontracting_order_item/subcontracting_order_item.json @@ -51,7 +51,8 @@ "project", "section_break_34", "purchase_order_item", - "page_break" + "page_break", + "subcontracting_conversion_factor" ], "fields": [ { @@ -144,8 +145,8 @@ "fieldtype": "Float", "in_list_view": 1, "label": "Quantity", + "non_negative": 1, "print_width": "60px", - "read_only": 1, "reqd": 1, "width": "60px" }, @@ -185,7 +186,7 @@ "fieldtype": "Currency", "in_list_view": 1, "label": "Rate", - "options": "currency", + "options": "Company:company:default_currency", "read_only": 1, "reqd": 1 }, @@ -199,7 +200,7 @@ "fieldtype": "Currency", "in_list_view": 1, "label": "Amount", - "options": "currency", + "options": "Company:company:default_currency", "read_only": 1, "reqd": 1 }, @@ -269,6 +270,7 @@ "fieldname": "service_cost_per_qty", "fieldtype": "Currency", "label": "Service Cost Per Qty", + "options": "Company:company:default_currency", "read_only": 1, "reqd": 1 }, @@ -277,6 +279,7 @@ "fieldname": "additional_cost_per_qty", "fieldtype": "Currency", "label": "Additional Cost Per Qty", + "options": "Company:company:default_currency", "read_only": 1 }, { @@ -284,6 +287,7 @@ "fieldtype": "Currency", "label": "Raw Material Cost Per Qty", "no_copy": 1, + "options": "Company:company:default_currency", "read_only": 1 }, { @@ -378,13 +382,37 @@ "no_copy": 1, "read_only": 1, "search_index": 1 + }, + { + "fieldname": "references_section", + "fieldtype": "Section Break", + "label": "References" + }, + { + "fieldname": "job_card", + "fieldtype": "Link", + "label": "Job Card", + "options": "Job Card", + "read_only": 1 + }, + { + "fieldname": "column_break_nfod", + "fieldtype": "Column Break" + }, + { + "fieldname": "subcontracting_conversion_factor", + "fieldtype": "Float", + "hidden": 1, + "label": "Subcontracting Conversion Factor", + "read_only": 1 } ], + "grid_page_length": 50, "idx": 1, "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2023-11-30 15:29:43.744618", + "modified": "2025-03-02 17:05:28.386492", "modified_by": "Administrator", "module": "Subcontracting", "name": "Subcontracting Order Item", @@ -392,9 +420,10 @@ "owner": "Administrator", "permissions": [], "quick_entry": 1, + "row_format": "Dynamic", "search_fields": "item_name", "sort_field": "modified", "sort_order": "DESC", "states": [], "track_changes": 1 -} \ No newline at end of file +} diff --git a/erpnext/subcontracting/doctype/subcontracting_order_item/subcontracting_order_item.py b/erpnext/subcontracting/doctype/subcontracting_order_item/subcontracting_order_item.py index fcd143c1dd9..db49fccce3c 100644 --- a/erpnext/subcontracting/doctype/subcontracting_order_item/subcontracting_order_item.py +++ b/erpnext/subcontracting/doctype/subcontracting_order_item/subcontracting_order_item.py @@ -26,8 +26,11 @@ class SubcontractingOrderItem(Document): include_exploded_items: DF.Check item_code: DF.Link item_name: DF.Data + job_card: DF.Link | None manufacturer: DF.Link | None manufacturer_part_no: DF.Data | None + material_request: DF.Link | None + material_request_item: DF.Data | None page_break: DF.Check parent: DF.Data parentfield: DF.Data @@ -42,6 +45,7 @@ class SubcontractingOrderItem(Document): schedule_date: DF.Date | None service_cost_per_qty: DF.Currency stock_uom: DF.Link + subcontracting_conversion_factor: DF.Float warehouse: DF.Link # end: auto-generated types diff --git a/erpnext/subcontracting/doctype/subcontracting_order_service_item/subcontracting_order_service_item.json b/erpnext/subcontracting/doctype/subcontracting_order_service_item/subcontracting_order_service_item.json index f1e94e125a9..ad3dfe34c88 100644 --- a/erpnext/subcontracting/doctype/subcontracting_order_service_item/subcontracting_order_service_item.json +++ b/erpnext/subcontracting/doctype/subcontracting_order_service_item/subcontracting_order_service_item.json @@ -155,7 +155,7 @@ ], "istable": 1, "links": [], - "modified": "2023-11-30 13:29:31.017440", + "modified": "2024-12-05 17:33:46.099601", "modified_by": "Administrator", "module": "Subcontracting", "name": "Subcontracting Order Service Item", diff --git a/erpnext/subcontracting/doctype/subcontracting_order_service_item/subcontracting_order_service_item.py b/erpnext/subcontracting/doctype/subcontracting_order_service_item/subcontracting_order_service_item.py index cc4901baf45..661a2b2702c 100644 --- a/erpnext/subcontracting/doctype/subcontracting_order_service_item/subcontracting_order_service_item.py +++ b/erpnext/subcontracting/doctype/subcontracting_order_service_item/subcontracting_order_service_item.py @@ -19,6 +19,8 @@ class SubcontractingOrderServiceItem(Document): fg_item_qty: DF.Float item_code: DF.Link item_name: DF.Data + material_request: DF.Link | None + material_request_item: DF.Data | None parent: DF.Data parentfield: DF.Data parenttype: DF.Data diff --git a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js index 83113a223c2..2aaf8a8adcd 100644 --- a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js +++ b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js @@ -249,11 +249,15 @@ frappe.ui.form.on("Subcontracting Receipt", { }); frm.set_query("batch_no", "supplied_items", (doc, cdt, cdn) => { - var row = locals[cdt][cdn]; + let row = locals[cdt][cdn]; + let filters = { + item_code: row.rm_item_code, + warehouse: doc.supplier_warehouse, + }; + return { - filters: { - item: row.rm_item_code, - }, + query: "erpnext.controllers.queries.get_batch_no", + filters: filters, }; }); diff --git a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json index ad03171f29a..b8bd95bcbca 100644 --- a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json +++ b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json @@ -336,7 +336,7 @@ "fieldname": "total", "fieldtype": "Currency", "label": "Total", - "options": "currency", + "options": "Company:company:default_currency", "read_only": 1 }, { @@ -618,6 +618,7 @@ "fieldname": "total_additional_costs", "fieldtype": "Currency", "label": "Total Additional Costs", + "options": "Company:company:default_currency", "print_hide_if_no_value": 1, "read_only": 1 }, @@ -656,27 +657,27 @@ "fieldtype": "Column Break" }, { - "fieldname": "tab_other_info", - "fieldtype": "Tab Break", - "label": "Other Info" + "fieldname": "tab_other_info", + "fieldtype": "Tab Break", + "label": "Other Info" }, { - "collapsible": 1, - "fieldname": "order_status_section", - "fieldtype": "Section Break", - "label": "Order Status" + "collapsible": 1, + "fieldname": "order_status_section", + "fieldtype": "Section Break", + "label": "Order Status" }, { - "fieldname": "tab_connections", - "fieldtype": "Tab Break", - "label": "Connections", - "show_dashboard": 1 + "fieldname": "tab_connections", + "fieldtype": "Tab Break", + "label": "Connections", + "show_dashboard": 1 } ], "in_create": 1, "is_submittable": 1, "links": [], - "modified": "2024-05-28 15:02:13.517969", + "modified": "2024-12-06 15:24:38.384232", "modified_by": "Administrator", "module": "Subcontracting", "name": "Subcontracting Receipt", diff --git a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py index 48203167187..300f7a774eb 100644 --- a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py +++ b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py @@ -237,9 +237,14 @@ class SubcontractingReceipt(SubcontractingController): frappe.db.get_single_value("Buying Settings", "backflush_raw_materials_of_subcontract_based_on") == "BOM" and self.supplied_items - and not any(item.serial_and_batch_bundle for item in self.supplied_items) ): - self.supplied_items = [] + if not any( + item.serial_and_batch_bundle or item.batch_no or item.serial_no + for item in self.supplied_items + ): + self.supplied_items = [] + else: + self.update_rate_for_supplied_items() @frappe.whitelist() def get_scrap_items(self, recalculate_rate=False): @@ -326,9 +331,12 @@ class SubcontractingReceipt(SubcontractingController): supplied_items_details[item.name] = {} for supplied_item in supplied_items: + if supplied_item.rm_item_code not in supplied_items_details[item.name]: + supplied_items_details[item.name][supplied_item.rm_item_code] = 0.0 + supplied_items_details[item.name][ supplied_item.rm_item_code - ] = supplied_item.available_qty + ] += supplied_item.available_qty else: for item in self.get("supplied_items"): item.available_qty_for_consumption = supplied_items_details.get(item.reference_name, {}).get( @@ -682,86 +690,136 @@ def make_purchase_receipt(source_name, target_doc=None, save=False, submit=False else: source_doc = source_name - if not source_doc.is_return: - if not target_doc: - target_doc = frappe.new_doc("Purchase Receipt") - target_doc.is_subcontracted = 1 - target_doc.is_old_subcontracting_flow = 0 + if source_doc.is_return: + return - target_doc = get_mapped_doc( - "Subcontracting Receipt", - source_doc.name, - { - "Subcontracting Receipt": { - "doctype": "Purchase Receipt", - "field_map": { - "posting_date": "posting_date", - "posting_time": "posting_time", - "name": "subcontracting_receipt", - "supplier_warehouse": "supplier_warehouse", - }, - "field_no_map": ["total_qty", "total"], - }, - }, - target_doc, - ignore_child_tables=True, + po_sr_item_dict = {} + po_name = None + for item in source_doc.items: + if not item.purchase_order: + continue + + if not po_name: + po_name = item.purchase_order + + po_sr_item_dict[item.purchase_order_item] = { + "qty": flt(item.qty), + "rejected_qty": flt(item.rejected_qty), + "warehouse": item.warehouse, + "rejected_warehouse": item.rejected_warehouse, + "subcontracting_receipt_item": item.name, + } + + if not po_name: + frappe.throw( + _("Purchase Order Item reference is missing in Subcontracting Receipt {0}").format( + source_doc.name + ) ) - target_doc.currency = frappe.get_cached_value("Company", target_doc.company, "default_currency") + def update_item(obj, target, source_parent): + sr_item_details = po_sr_item_dict.get(obj.name) + ratio = flt(obj.qty) / flt(obj.fg_item_qty) - po_items_details = {} - for item in source_doc.items: - if item.purchase_order and item.purchase_order_item: - if item.purchase_order not in po_items_details: - po_doc = frappe.get_doc("Purchase Order", item.purchase_order) - po_items_details[item.purchase_order] = { - po_item.name: po_item for po_item in po_doc.items - } + target.update( + { + "qty": ratio * sr_item_details["qty"], + "rejected_qty": ratio * sr_item_details["rejected_qty"], + "warehouse": sr_item_details["warehouse"], + "rejected_warehouse": sr_item_details["rejected_warehouse"], + "subcontracting_receipt_item": sr_item_details["subcontracting_receipt_item"], + } + ) - if po_item := po_items_details[item.purchase_order].get(item.purchase_order_item): - conversion_factor = flt(po_item.qty) / flt(po_item.fg_item_qty) - item_row = { - "item_code": po_item.item_code, - "item_name": po_item.item_name, - "conversion_factor": conversion_factor, - "qty": flt(item.qty) * conversion_factor, - "rejected_qty": flt(item.rejected_qty) * conversion_factor, - "uom": po_item.uom, - "rate": po_item.rate, - "warehouse": item.warehouse, - "rejected_warehouse": item.rejected_warehouse, - "purchase_order": item.purchase_order, - "purchase_order_item": item.purchase_order_item, - "subcontracting_receipt_item": item.name, - "project": po_item.project, - } - target_doc.append("items", item_row) + def post_process(source, target): + target.set_missing_values() + target.update( + { + "posting_date": source_doc.posting_date, + "posting_time": source_doc.posting_time, + "subcontracting_receipt": source_doc.name, + "supplier_warehouse": source_doc.supplier_warehouse, + "is_subcontracted": 1, + "is_old_subcontracting_flow": 0, + "currency": frappe.get_cached_value("Company", target.company, "default_currency"), + } + ) - if not target_doc.items: - frappe.throw( - _("Purchase Order Item reference is missing in Subcontracting Receipt {0}").format( - source_doc.name - ) + target_doc = get_mapped_doc( + "Purchase Order", + po_name, + { + "Purchase Order": { + "doctype": "Purchase Receipt", + "field_map": {"supplier_warehouse": "supplier_warehouse"}, + "validation": { + "docstatus": ["=", 1], + }, + }, + "Purchase Order Item": { + "doctype": "Purchase Receipt Item", + "field_map": { + "name": "purchase_order_item", + "parent": "purchase_order", + "bom": "bom", + }, + "postprocess": update_item, + "condition": lambda doc: doc.name in po_sr_item_dict, + }, + "Purchase Taxes and Charges": { + "doctype": "Purchase Taxes and Charges", + "reset_value": True, + "condition": lambda doc: not doc.is_tax_withholding_account, + }, + }, + postprocess=post_process, + ) + + if not target_doc.get("items"): + add_po_items_to_pr(source_doc, target_doc) + + if (save or submit) and frappe.has_permission(target_doc.doctype, "create"): + target_doc.save() + + if submit and frappe.has_permission(target_doc.doctype, "submit", target_doc): + try: + target_doc.submit() + except Exception as e: + target_doc.add_comment("Comment", _("Submit Action Failed") + "

" + str(e)) + + if notify: + frappe.msgprint( + _("Purchase Receipt {0} created.").format( + get_link_to_form(target_doc.doctype, target_doc.name) + ), + indicator="green", + alert=True, ) - target_doc.set_missing_values() + return target_doc - if (save or submit) and frappe.has_permission(target_doc.doctype, "create"): - target_doc.save() - if submit and frappe.has_permission(target_doc.doctype, "submit", target_doc): - try: - target_doc.submit() - except Exception as e: - target_doc.add_comment("Comment", _("Submit Action Failed") + "

" + str(e)) +def add_po_items_to_pr(scr_doc, target_doc): + fg_items = {(item.item_code, item.purchase_order): item.qty for item in scr_doc.items} - if notify: - frappe.msgprint( - _("Purchase Receipt {0} created.").format( - get_link_to_form(target_doc.doctype, target_doc.name) - ), - indicator="green", - alert=True, + for (item_code, po_name), fg_qty in fg_items.items(): + po_doc = frappe.get_doc("Purchase Order", po_name) + for item in po_doc.items: + if item.fg_item != item_code: + continue + + qty = (item.stock_qty - item.received_qty) * fg_qty / item.fg_item_qty + if qty: + target_doc.append( + "items", + { + "item_code": item.item_code, + "item_name": item.item_name, + "description": item.description, + "qty": qty, + "rate": item.rate, + "warehouse": item.warehouse, + "purchase_order": item.parent, + "purchase_order_item": item.name, + }, ) - - return target_doc diff --git a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt_list.js b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt_list.js index be6c0d0b18f..5f5a6db01e0 100644 --- a/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt_list.js +++ b/erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt_list.js @@ -4,7 +4,7 @@ frappe.listview_settings["Subcontracting Receipt"] = { get_indicator: function (doc) { const status_colors = { - Draft: "grey", + Draft: "red", Return: "gray", "Return Issued": "grey", Completed: "green", diff --git a/erpnext/subcontracting/doctype/subcontracting_receipt/test_subcontracting_receipt.py b/erpnext/subcontracting/doctype/subcontracting_receipt/test_subcontracting_receipt.py index 8ff5c8f27b0..b5d190f7736 100644 --- a/erpnext/subcontracting/doctype/subcontracting_receipt/test_subcontracting_receipt.py +++ b/erpnext/subcontracting/doctype/subcontracting_receipt/test_subcontracting_receipt.py @@ -1075,18 +1075,42 @@ class TestSubcontractingReceipt(FrappeTestCase): @change_settings("Buying Settings", {"auto_create_purchase_receipt": 1}) def test_auto_create_purchase_receipt(self): + from erpnext.buying.doctype.purchase_order.test_purchase_order import create_purchase_order + fg_item = "Subcontracted Item SA1" service_items = [ { "warehouse": "_Test Warehouse - _TC", "item_code": "Subcontracted Service Item 1", - "qty": 5, + "qty": 10, "rate": 100, "fg_item": fg_item, "fg_item_qty": 5, }, ] - sco = get_subcontracting_order(service_items=service_items) + + po = create_purchase_order( + rm_items=service_items, + is_subcontracted=1, + supplier_warehouse="_Test Warehouse 1 - _TC", + do_not_submit=True, + ) + po.append( + "taxes", + { + "account_head": "_Test Account Excise Duty - _TC", + "charge_type": "On Net Total", + "cost_center": "_Test Cost Center - _TC", + "description": "Excise Duty", + "doctype": "Purchase Taxes and Charges", + "rate": 10, + }, + ) + po.save() + po.submit() + + sco = get_subcontracting_order(po_name=po.name) + rm_items = get_rm_items(sco.supplied_items) itemwise_details = make_stock_in_entry(rm_items=rm_items) make_stock_transfer_entry( @@ -1094,11 +1118,98 @@ class TestSubcontractingReceipt(FrappeTestCase): rm_items=rm_items, itemwise_details=copy.deepcopy(itemwise_details), ) + scr = make_subcontracting_receipt(sco.name) + scr.items[0].qty = 3 scr.save() scr.submit() - self.assertTrue(frappe.db.get_value("Purchase Receipt", {"subcontracting_receipt": scr.name})) + pr_details = frappe.get_all( + "Purchase Receipt", + filters={"subcontracting_receipt": scr.name}, + fields=["name", "total_taxes_and_charges"], + ) + + self.assertTrue(pr_details) + + pr_qty = frappe.db.get_value("Purchase Receipt Item", {"parent": pr_details[0]["name"]}, "qty") + self.assertEqual(pr_qty, 6) + + self.assertEqual(pr_details[0]["total_taxes_and_charges"], 60) + + @change_settings("Buying Settings", {"auto_create_purchase_receipt": 1}) + def test_auto_create_purchase_receipt_with_no_reference_of_po_item(self): + from erpnext.buying.doctype.purchase_order.test_purchase_order import create_purchase_order + + fg_item = "Subcontracted Item SA1" + service_items = [ + { + "warehouse": "_Test Warehouse - _TC", + "item_code": "Subcontracted Service Item 1", + "qty": 10, + "rate": 100, + "fg_item": fg_item, + "fg_item_qty": 5, + }, + ] + + po = create_purchase_order( + rm_items=service_items, + is_subcontracted=1, + supplier_warehouse="_Test Warehouse 1 - _TC", + do_not_submit=True, + ) + po.append( + "taxes", + { + "account_head": "_Test Account Excise Duty - _TC", + "charge_type": "On Net Total", + "cost_center": "_Test Cost Center - _TC", + "description": "Excise Duty", + "doctype": "Purchase Taxes and Charges", + "rate": 10, + }, + ) + po.save() + po.submit() + + sco = get_subcontracting_order(po_name=po.name) + for row in sco.items: + row.db_set("purchase_order_item", None) + + sco.reload() + + for row in sco.items: + self.assertFalse(row.purchase_order_item) + + rm_items = get_rm_items(sco.supplied_items) + itemwise_details = make_stock_in_entry(rm_items=rm_items) + make_stock_transfer_entry( + sco_no=sco.name, + rm_items=rm_items, + itemwise_details=copy.deepcopy(itemwise_details), + ) + + scr = make_subcontracting_receipt(sco.name) + for row in scr.items: + self.assertFalse(row.purchase_order_item) + + scr.items[0].qty = 3 + scr.save() + scr.submit() + + pr_details = frappe.get_all( + "Purchase Receipt", + filters={"subcontracting_receipt": scr.name}, + fields=["name", "total_taxes_and_charges"], + ) + + self.assertTrue(pr_details) + + pr_qty = frappe.db.get_value("Purchase Receipt Item", {"parent": pr_details[0]["name"]}, "qty") + self.assertEqual(pr_qty, 6) + + self.assertEqual(pr_details[0]["total_taxes_and_charges"], 60) def test_use_serial_batch_fields_for_subcontracting_receipt(self): fg_item = make_item( @@ -1361,6 +1472,66 @@ class TestSubcontractingReceipt(FrappeTestCase): frappe.db.set_single_value("Stock Settings", "use_serial_batch_fields", 1) + def test_change_batch_for_raw_materials(self): + set_backflush_based_on("BOM") + + fg_item = make_item(properties={"is_stock_item": 1, "is_sub_contracted_item": 1}).name + rm_item1 = make_item( + properties={ + "is_stock_item": 1, + "has_batch_no": 1, + "create_new_batch": 1, + "batch_number_series": "BNGS-.####", + } + ).name + + bom = make_bom(item=fg_item, raw_materials=[rm_item1]) + second_batch_no = None + for row in bom.items: + se = make_stock_entry( + item_code=row.item_code, + qty=1, + target="_Test Warehouse 1 - _TC", + rate=300, + ) + + se.reload() + se1 = make_stock_entry( + item_code=row.item_code, + qty=1, + target="_Test Warehouse 1 - _TC", + rate=300, + ) + + se1.reload() + + second_batch_no = get_batch_from_bundle(se1.items[0].serial_and_batch_bundle) + + service_items = [ + { + "warehouse": "_Test Warehouse - _TC", + "item_code": "Subcontracted Service Item 1", + "qty": 1, + "rate": 100, + "fg_item": fg_item, + "fg_item_qty": 1, + }, + ] + sco = get_subcontracting_order(service_items=service_items) + scr = make_subcontracting_receipt(sco.name) + scr.save() + scr.reload() + + scr.supplied_items[0].batch_no = second_batch_no + scr.supplied_items[0].use_serial_batch_fields = 1 + scr.submit() + scr.reload() + + batch_no = get_batch_from_bundle(scr.supplied_items[0].serial_and_batch_bundle) + self.assertEqual(batch_no, second_batch_no) + self.assertEqual(scr.items[0].rm_cost_per_qty, 300) + self.assertEqual(scr.items[0].service_cost_per_qty, 100) + def make_return_subcontracting_receipt(**args): args = frappe._dict(args) diff --git a/erpnext/subcontracting/doctype/subcontracting_receipt_item/subcontracting_receipt_item.json b/erpnext/subcontracting/doctype/subcontracting_receipt_item/subcontracting_receipt_item.json index 75e263e2c1c..23a7e69669d 100644 --- a/erpnext/subcontracting/doctype/subcontracting_receipt_item/subcontracting_receipt_item.json +++ b/erpnext/subcontracting/doctype/subcontracting_receipt_item/subcontracting_receipt_item.json @@ -207,7 +207,7 @@ "fieldtype": "Currency", "in_list_view": 1, "label": "Rate", - "options": "currency", + "options": "Company:company:default_currency", "print_width": "100px", "read_only": 1, "width": "100px" @@ -217,7 +217,7 @@ "fieldtype": "Currency", "in_list_view": 1, "label": "Amount", - "options": "currency", + "options": "Company:company:default_currency", "read_only": 1 }, { @@ -231,6 +231,7 @@ "fieldtype": "Currency", "label": "Raw Material Cost Per Qty", "no_copy": 1, + "options": "Company:company:default_currency", "read_only": 1 }, { @@ -239,6 +240,7 @@ "fieldname": "service_cost_per_qty", "fieldtype": "Currency", "label": "Service Cost Per Qty", + "options": "Company:company:default_currency", "read_only": 1, "reqd": 1 }, @@ -248,6 +250,7 @@ "fieldname": "additional_cost_per_qty", "fieldtype": "Currency", "label": "Additional Cost Per Qty", + "options": "Company:company:default_currency", "read_only": 1 }, { @@ -582,7 +585,7 @@ "idx": 1, "istable": 1, "links": [], - "modified": "2024-03-29 15:42:43.425544", + "modified": "2024-12-06 15:23:58.680169", "modified_by": "Administrator", "module": "Subcontracting", "name": "Subcontracting Receipt Item", diff --git a/erpnext/subcontracting/doctype/subcontracting_receipt_item/subcontracting_receipt_item.py b/erpnext/subcontracting/doctype/subcontracting_receipt_item/subcontracting_receipt_item.py index 1a4ce5b977a..69f7ae73e7a 100644 --- a/erpnext/subcontracting/doctype/subcontracting_receipt_item/subcontracting_receipt_item.py +++ b/erpnext/subcontracting/doctype/subcontracting_receipt_item/subcontracting_receipt_item.py @@ -28,6 +28,7 @@ class SubcontractingReceiptItem(Document): is_scrap_item: DF.Check item_code: DF.Link item_name: DF.Data | None + job_card: DF.Link | None manufacturer: DF.Link | None manufacturer_part_no: DF.Data | None page_break: DF.Check diff --git a/erpnext/support/doctype/issue/issue.js b/erpnext/support/doctype/issue/issue.js index 03d209e99e3..eb53469acd5 100644 --- a/erpnext/support/doctype/issue/issue.js +++ b/erpnext/support/doctype/issue/issue.js @@ -15,7 +15,9 @@ frappe.ui.form.on("Issue", { } } ); + }, + refresh: function (frm) { // buttons if (frm.doc.status !== "Closed") { frm.add_custom_button(__("Close"), function () { diff --git a/erpnext/support/doctype/issue/issue.json b/erpnext/support/doctype/issue/issue.json index 3ff7d02f1ae..622e19e9e3a 100644 --- a/erpnext/support/doctype/issue/issue.json +++ b/erpnext/support/doctype/issue/issue.json @@ -27,7 +27,7 @@ "reset_service_level_agreement", "cb", "agreement_status", - "resolution_by", + "sla_resolution_by", "service_level_agreement_creation", "on_hold_since", "total_hold_time", @@ -41,7 +41,7 @@ "column_break1", "opening_date", "opening_time", - "resolution_date", + "sla_resolution_date", "resolution_time", "user_resolution_time", "additional_info", @@ -176,13 +176,6 @@ "options": "fa fa-pushpin", "read_only": 1 }, - { - "depends_on": "eval: doc.status != 'Replied' && doc.service_level_agreement;", - "fieldname": "resolution_by", - "fieldtype": "Datetime", - "label": "Resolution By", - "read_only": 1 - }, { "collapsible": 1, "fieldname": "response", @@ -287,16 +280,6 @@ "oldfieldtype": "Time", "read_only": 1 }, - { - "depends_on": "eval:!doc.__islocal", - "fieldname": "resolution_date", - "fieldtype": "Datetime", - "label": "Resolution Date", - "no_copy": 1, - "oldfieldname": "resolution_date", - "oldfieldtype": "Date", - "read_only": 1 - }, { "fieldname": "content_type", "fieldtype": "Data", @@ -386,12 +369,29 @@ "fieldtype": "Duration", "label": "First Response Time", "read_only": 1 + }, + { + "depends_on": "eval: doc.status != 'Replied' && doc.service_level_agreement;", + "fieldname": "sla_resolution_by", + "fieldtype": "Datetime", + "label": "Resolution By", + "read_only": 1 + }, + { + "depends_on": "eval:!doc.__islocal", + "fieldname": "sla_resolution_date", + "fieldtype": "Datetime", + "label": "Resolution Date", + "no_copy": 1, + "oldfieldname": "resolution_date", + "oldfieldtype": "Date", + "read_only": 1 } ], "icon": "fa fa-ticket", "idx": 7, "links": [], - "modified": "2021-11-24 13:13:10.276630", + "modified": "2025-02-18 21:18:52.797745", "modified_by": "Administrator", "module": "Support", "name": "Issue", @@ -420,4 +420,4 @@ "title_field": "subject", "track_changes": 1, "track_seen": 1 -} \ No newline at end of file +} diff --git a/erpnext/support/doctype/issue/issue.py b/erpnext/support/doctype/issue/issue.py index aeaf28c169c..22630d80f38 100644 --- a/erpnext/support/doctype/issue/issue.py +++ b/erpnext/support/doctype/issue/issue.py @@ -48,13 +48,13 @@ class Issue(Document): priority: DF.Link | None project: DF.Link | None raised_by: DF.Data | None - resolution_by: DF.Datetime | None - resolution_date: DF.Datetime | None resolution_details: DF.TextEditor | None resolution_time: DF.Duration | None response_by: DF.Datetime | None service_level_agreement: DF.Link | None service_level_agreement_creation: DF.Datetime | None + sla_resolution_by: DF.Datetime | None + sla_resolution_date: DF.Datetime | None status: DF.Literal["Open", "Replied", "On Hold", "Resolved", "Closed"] subject: DF.Data total_hold_time: DF.Duration | None diff --git a/erpnext/support/doctype/issue/test_issue.py b/erpnext/support/doctype/issue/test_issue.py index acad115f626..c334a2251b3 100644 --- a/erpnext/support/doctype/issue/test_issue.py +++ b/erpnext/support/doctype/issue/test_issue.py @@ -33,48 +33,48 @@ class TestIssue(TestSetUp): issue = make_issue(creation, "_Test Customer", 1) self.assertEqual(issue.response_by, get_datetime("2019-03-04 14:00")) - self.assertEqual(issue.resolution_by, get_datetime("2019-03-04 15:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2019-03-04 15:00")) # make issue with customer_group specific SLA create_customer("__Test Customer", "_Test SLA Customer Group", "__Test SLA Territory") issue = make_issue(creation, "__Test Customer", 2) self.assertEqual(issue.response_by, get_datetime("2019-03-04 14:00")) - self.assertEqual(issue.resolution_by, get_datetime("2019-03-04 15:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2019-03-04 15:00")) # make issue with territory specific SLA create_customer("___Test Customer", "__Test SLA Customer Group", "_Test SLA Territory") issue = make_issue(creation, "___Test Customer", 3) self.assertEqual(issue.response_by, get_datetime("2019-03-04 14:00")) - self.assertEqual(issue.resolution_by, get_datetime("2019-03-04 15:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2019-03-04 15:00")) # make issue with default SLA issue = make_issue(creation=creation, index=4) self.assertEqual(issue.response_by, get_datetime("2019-03-04 16:00")) - self.assertEqual(issue.resolution_by, get_datetime("2019-03-04 18:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2019-03-04 18:00")) # make issue with default SLA before working hours creation = get_datetime("2019-03-04 7:00") issue = make_issue(creation=creation, index=5) self.assertEqual(issue.response_by, get_datetime("2019-03-04 14:00")) - self.assertEqual(issue.resolution_by, get_datetime("2019-03-04 16:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2019-03-04 16:00")) # make issue with default SLA after working hours creation = get_datetime("2019-03-04 20:00") issue = make_issue(creation, index=6) self.assertEqual(issue.response_by, get_datetime("2019-03-06 14:00")) - self.assertEqual(issue.resolution_by, get_datetime("2019-03-06 16:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2019-03-06 16:00")) # make issue with default SLA next day creation = get_datetime("2019-03-04 14:00") issue = make_issue(creation=creation, index=7) self.assertEqual(issue.response_by, get_datetime("2019-03-04 18:00")) - self.assertEqual(issue.resolution_by, get_datetime("2019-03-06 12:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2019-03-06 12:00")) frappe.flags.current_time = get_datetime("2019-03-04 15:00") issue.reload() @@ -98,7 +98,7 @@ class TestIssue(TestSetUp): issue.save() self.assertEqual(issue.on_hold_since, frappe.flags.current_time) - self.assertFalse(issue.resolution_by) + self.assertFalse(issue.sla_resolution_by) creation = get_datetime("2020-03-04 5:00") frappe.flags.current_time = get_datetime("2020-03-04 5:00") @@ -106,7 +106,7 @@ class TestIssue(TestSetUp): issue.reload() self.assertEqual(flt(issue.total_hold_time, 2), 2700) - self.assertEqual(issue.resolution_by, get_datetime("2020-03-04 16:45")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2020-03-04 16:45")) creation = get_datetime("2020-03-04 5:05") create_communication(issue.name, "test@admin.com", "Sent", creation) @@ -140,8 +140,8 @@ class TestIssue(TestSetUp): issue.status = "Closed" issue.save() - self.assertEqual(issue.resolution_by, get_datetime("2021-11-22 06:00:00")) - self.assertEqual(issue.resolution_date, get_datetime("2021-11-22 01:00:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2021-11-22 06:00:00")) + self.assertEqual(issue.sla_resolution_date, get_datetime("2021-11-22 01:00:00")) self.assertEqual(issue.agreement_status, "Fulfilled") def test_issue_open_after_closed(self): @@ -153,7 +153,7 @@ class TestIssue(TestSetUp): create_communication(issue.name, "test@example.com", "Received", frappe.flags.current_time) self.assertEqual(issue.agreement_status, "First Response Due") self.assertEqual(issue.response_by, get_datetime("2021-11-01 17:00")) - self.assertEqual(issue.resolution_by, get_datetime("2021-11-01 19:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2021-11-01 19:00")) # Replied on → 2 pm frappe.flags.current_time = get_datetime("2021-11-01 14:00") @@ -173,7 +173,7 @@ class TestIssue(TestSetUp): # Hold Time + 1 Hrs self.assertEqual(issue.total_hold_time, 3600) # Resolution By should increase by one hrs - self.assertEqual(issue.resolution_by, get_datetime("2021-11-01 20:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2021-11-01 20:00")) # Replied on → 4 pm, Open → 1 hr, Resolution Due → 8 pm frappe.flags.current_time = get_datetime("2021-11-01 16:00") @@ -190,9 +190,9 @@ class TestIssue(TestSetUp): # Hold Time + 6 Hrs self.assertEqual(issue.total_hold_time, 3600 + 21600) # Resolution By should increase by 6 hrs - self.assertEqual(issue.resolution_by, get_datetime("2021-11-02 02:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2021-11-02 02:00")) self.assertEqual(issue.agreement_status, "Fulfilled") - self.assertEqual(issue.resolution_date, frappe.flags.current_time) + self.assertEqual(issue.sla_resolution_date, frappe.flags.current_time) # Customer Open → 3 am i.e after resolution by is crossed frappe.flags.current_time = get_datetime("2021-11-02 03:00") @@ -201,17 +201,17 @@ class TestIssue(TestSetUp): # Since issue was Resolved, Resolution By should be increased by 5 hrs (3am - 10pm) self.assertEqual(issue.total_hold_time, 3600 + 21600 + 18000) # Resolution By should increase by 5 hrs - self.assertEqual(issue.resolution_by, get_datetime("2021-11-02 07:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2021-11-02 07:00")) self.assertEqual(issue.agreement_status, "Resolution Due") - self.assertFalse(issue.resolution_date) + self.assertFalse(issue.sla_resolution_date) # We Closed → 4 am, SLA should be Fulfilled frappe.flags.current_time = get_datetime("2021-11-02 04:00") issue.status = "Closed" issue.save() - self.assertEqual(issue.resolution_by, get_datetime("2021-11-02 07:00")) + self.assertEqual(issue.sla_resolution_by, get_datetime("2021-11-02 07:00")) self.assertEqual(issue.agreement_status, "Fulfilled") - self.assertEqual(issue.resolution_date, frappe.flags.current_time) + self.assertEqual(issue.sla_resolution_date, frappe.flags.current_time) def test_recording_of_assignment_on_first_reponse_failure(self): from frappe.desk.form.assign_to import add as add_assignment diff --git a/erpnext/support/doctype/service_level_agreement/service_level_agreement.py b/erpnext/support/doctype/service_level_agreement/service_level_agreement.py index 011a5bc371f..26c017bddaa 100644 --- a/erpnext/support/doctype/service_level_agreement/service_level_agreement.py +++ b/erpnext/support/doctype/service_level_agreement/service_level_agreement.py @@ -475,7 +475,7 @@ def get_repeated(values): def get_documents_with_active_service_level_agreement(): - sla_doctypes = frappe.cache().hget("service_level_agreement", "active") + sla_doctypes = frappe.cache.get_value("doctypes_with_active_sla") if sla_doctypes is None: return set_documents_with_active_service_level_agreement() @@ -484,20 +484,22 @@ def get_documents_with_active_service_level_agreement(): def set_documents_with_active_service_level_agreement(): - active = [ + active = frozenset( sla.document_type for sla in frappe.get_all("Service Level Agreement", fields=["document_type"]) - ] - frappe.cache().hset("service_level_agreement", "active", active) + ) + frappe.cache.set_value("doctypes_with_active_sla", active) return active def apply(doc, method=None): # Applies SLA to document on validate + flags = frappe.local.flags + if ( - frappe.flags.in_patch - or frappe.flags.in_migrate - or frappe.flags.in_install - or frappe.flags.in_setup_wizard + flags.in_patch + or flags.in_migrate + or flags.in_install + or flags.in_setup_wizard or doc.doctype not in get_documents_with_active_service_level_agreement() ): return @@ -514,7 +516,7 @@ def apply(doc, method=None): def remove_sla_if_applied(doc): doc.service_level_agreement = None doc.response_by = None - doc.resolution_by = None + doc.sla_resolution_by = None def process_sla(doc, sla): @@ -557,7 +559,7 @@ def handle_status_change(doc, apply_sla_for_resolution): # In case issue was closed and after few days it has been opened # The hold time should be calculated from resolution_date - on_hold_since = doc.resolution_date or doc.on_hold_since + on_hold_since = doc.sla_resolution_date or doc.on_hold_since if on_hold_since: current_hold_hours = time_diff_in_seconds(now_time, on_hold_since) doc.total_hold_time = (doc.total_hold_time or 0) + current_hold_hours @@ -582,7 +584,7 @@ def handle_status_change(doc, apply_sla_for_resolution): # Open to Closed if is_open_status(prev_status) and is_fulfilled_status(doc.status): # Issue is closed -> Set resolution_date - doc.resolution_date = now_time + doc.sla_resolution_date = now_time set_resolution_time(doc) # Closed to Open @@ -606,7 +608,7 @@ def handle_status_change(doc, apply_sla_for_resolution): calculate_hold_hours() # Issue is closed -> Set resolution_date if apply_sla_for_resolution: - doc.resolution_date = now_time + doc.sla_resolution_date = now_time set_resolution_time(doc) @@ -713,7 +715,7 @@ def get_support_days(service_level): def set_resolution_time(doc): start_date_time = get_datetime(doc.get("service_level_agreement_creation") or doc.creation) if doc.meta.has_field("resolution_time"): - doc.resolution_time = time_diff_in_seconds(doc.resolution_date, start_date_time) + doc.resolution_time = time_diff_in_seconds(doc.sla_resolution_date, start_date_time) # total time taken by a user to close the issue apart from wait_time if not doc.meta.has_field("user_resolution_time"): @@ -737,7 +739,7 @@ def set_resolution_time(doc): pending_time.append(wait_time) total_pending_time = sum(pending_time) - resolution_time_in_secs = time_diff_in_seconds(doc.resolution_date, start_date_time) + resolution_time_in_secs = time_diff_in_seconds(doc.sla_resolution_date, start_date_time) doc.user_resolution_time = resolution_time_in_secs - total_pending_time @@ -793,8 +795,8 @@ def reset_service_level_agreement(doctype: str, docname: str, reason, user): def reset_resolution_metrics(doc): - if doc.meta.has_field("resolution_date"): - doc.resolution_date = None + if doc.meta.has_field("sla_resolution_date"): + doc.sla_resolution_date = None if doc.meta.has_field("resolution_time"): doc.resolution_time = None @@ -861,8 +863,8 @@ def on_communication_update(doc, status): def reset_expected_response_and_resolution(doc): if doc.meta.has_field("first_responded_on") and not doc.get("first_responded_on"): doc.response_by = None - if doc.meta.has_field("resolution_by") and not doc.get("resolution_date"): - doc.resolution_by = None + if doc.meta.has_field("sla_resolution_by") and not doc.get("sla_resolution_date"): + doc.sla_resolution_by = None def set_response_by(doc, start_date_time, priority): @@ -879,12 +881,14 @@ def set_response_by(doc, start_date_time, priority): def set_resolution_by(doc, start_date_time, priority): - if doc.meta.has_field("resolution_by"): - doc.resolution_by = get_expected_time_for( + if doc.meta.has_field("sla_resolution_by"): + doc.sla_resolution_by = get_expected_time_for( parameter="resolution", service_level=priority, start_date_time=start_date_time ) if doc.meta.has_field("total_hold_time") and doc.get("total_hold_time"): - doc.resolution_by = add_to_date(doc.resolution_by, seconds=round(doc.get("total_hold_time"))) + doc.sla_resolution_by = add_to_date( + doc.sla_resolution_by, seconds=round(doc.get("total_hold_time")) + ) def record_assigned_users_on_failure(doc): @@ -943,7 +947,7 @@ def get_service_level_agreement_fields(): "read_only": 1, }, { - "fieldname": "resolution_by", + "fieldname": "sla_resolution_by", "fieldtype": "Datetime", "label": "Resolution By", "read_only": 1, @@ -957,7 +961,7 @@ def get_service_level_agreement_fields(): }, { "depends_on": "eval:!doc.__islocal", - "fieldname": "resolution_date", + "fieldname": "sla_resolution_date", "fieldtype": "Datetime", "label": "Resolution Date", "no_copy": 1, @@ -977,9 +981,9 @@ def update_agreement_status(doc, apply_sla_for_resolution): if apply_sla_for_resolution: if doc.meta.has_field("first_responded_on") and not doc.get("first_responded_on"): doc.agreement_status = "First Response Due" - elif doc.meta.has_field("resolution_date") and not doc.get("resolution_date"): + elif doc.meta.has_field("sla_resolution_date") and not doc.get("sla_resolution_date"): doc.agreement_status = "Resolution Due" - elif get_datetime(doc.get("resolution_date")) <= get_datetime(doc.get("resolution_by")): + elif get_datetime(doc.get("sla_resolution_date")) <= get_datetime(doc.get("sla_resolution_by")): doc.agreement_status = "Fulfilled" else: doc.agreement_status = "Failed" diff --git a/erpnext/support/doctype/service_level_agreement/test_service_level_agreement.py b/erpnext/support/doctype/service_level_agreement/test_service_level_agreement.py index 47ea251b0fe..cabd38f6427 100644 --- a/erpnext/support/doctype/service_level_agreement/test_service_level_agreement.py +++ b/erpnext/support/doctype/service_level_agreement/test_service_level_agreement.py @@ -227,7 +227,7 @@ class TestServiceLevelAgreement(unittest.TestCase): self.assertEqual(lead.service_level_agreement, lead_sla.name) self.assertEqual(lead.response_by, datetime.datetime(2019, 3, 4, 16, 0)) - self.assertEqual(lead.resolution_by, datetime.datetime(2019, 3, 4, 18, 0)) + self.assertEqual(lead.sla_resolution_by, datetime.datetime(2019, 3, 4, 18, 0)) frappe.flags.current_time = datetime.datetime(2019, 3, 4, 15, 0) lead.reload() @@ -268,7 +268,7 @@ class TestServiceLevelAgreement(unittest.TestCase): lead.reload() self.assertEqual(flt(lead.total_hold_time, 2), 3000) - self.assertEqual(lead.resolution_by, datetime.datetime(2020, 3, 4, 16, 50)) + self.assertEqual(lead.sla_resolution_by, datetime.datetime(2020, 3, 4, 16, 50)) def test_failed_sla_for_response_only(self): doctype = "Lead" diff --git a/erpnext/support/web_form/issues/issues.json b/erpnext/support/web_form/issues/issues.json index f3834c73a7c..c8a374ecc5b 100644 --- a/erpnext/support/web_form/issues/issues.json +++ b/erpnext/support/web_form/issues/issues.json @@ -54,7 +54,7 @@ "label": "Status", "max_length": 0, "max_value": 0, - "options": "Open\nReplied\nHold\nClosed", + "options": "Open\nReplied\nOn Hold\nClosed", "read_only": 1, "reqd": 0, "show_in_filter": 1 diff --git a/erpnext/templates/includes/footer/footer_extension.html b/erpnext/templates/includes/footer/footer_extension.html index 0072dc280c7..11e0adaa2ee 100644 --- a/erpnext/templates/includes/footer/footer_extension.html +++ b/erpnext/templates/includes/footer/footer_extension.html @@ -17,7 +17,7 @@ frappe.ready(function() { if($("#footer-subscribe-email").val() && validate_email($("#footer-subscribe-email").val())) { $("#footer-subscribe-email").attr('disabled', true); - $("#footer-subscribe-button").html("Sending...") + $("#footer-subscribe-button").html(__("Sending...")) .attr("disabled", true); erpnext.subscribe_to_newsletter({ email: $("#footer-subscribe-email").val(), diff --git a/erpnext/templates/includes/footer/footer_powered.html b/erpnext/templates/includes/footer/footer_powered.html index 8310063e575..fb73931d18e 100644 --- a/erpnext/templates/includes/footer/footer_powered.html +++ b/erpnext/templates/includes/footer/footer_powered.html @@ -1 +1 @@ -{{ _("Powered by {0}").format('ERPNext') }} +{{ _("Powered by {0}").format('ERPNext') }} diff --git a/erpnext/templates/includes/issue_row.html b/erpnext/templates/includes/issue_row.html index a04f558509f..b55712ab189 100644 --- a/erpnext/templates/includes/issue_row.html +++ b/erpnext/templates/includes/issue_row.html @@ -18,7 +18,7 @@ {% if doc.status == "Open" %} {{ doc.priority }} {% else %} - {{ doc.status }} + {{ _(doc.status) }} {%- endif -%} diff --git a/erpnext/templates/includes/order/order_taxes.html b/erpnext/templates/includes/order/order_taxes.html index d7b9620fa0a..42f46ac8d12 100644 --- a/erpnext/templates/includes/order/order_taxes.html +++ b/erpnext/templates/includes/order/order_taxes.html @@ -12,14 +12,14 @@ {% endif %} {% for d in doc.taxes %} - {% if d.base_tax_amount %} + {% if d.tax_amount %}
{{ d.description }}
- {{ d.get_formatted("base_tax_amount") }} + {{ d.get_formatted("tax_amount") }}
diff --git a/erpnext/templates/includes/projects/project_row.html b/erpnext/templates/includes/projects/project_row.html index 686637a2014..ccb306afcdb 100644 --- a/erpnext/templates/includes/projects/project_row.html +++ b/erpnext/templates/includes/projects/project_row.html @@ -20,7 +20,7 @@ {% else %} - {{ doc.status }} + {{ _(doc.status) }} {% endif %} {% if doc["_assign"] %} diff --git a/erpnext/templates/includes/transaction_row.html b/erpnext/templates/includes/transaction_row.html index a498ba0eefa..061c9bd1796 100644 --- a/erpnext/templates/includes/transaction_row.html +++ b/erpnext/templates/includes/transaction_row.html @@ -8,7 +8,7 @@
- {{doc.status}} + {{ _(doc.status) }}
diff --git a/erpnext/templates/pages/order.html b/erpnext/templates/pages/order.html index 6c59a9688dc..0805a32ae33 100644 --- a/erpnext/templates/pages/order.html +++ b/erpnext/templates/pages/order.html @@ -40,7 +40,7 @@

- {{ _("Pay") }} {{doc.get_formatted("grand_total") }} + {{ _("Pay", null, "Amount") }} {{ pay_amount }}

@@ -72,8 +72,7 @@
- {%- set party_name = doc.supplier_name if doc.doctype in ['Supplier Quotation', 'Purchase Invoice', 'Purchase - Order'] else doc.customer_name %} + {%- set party_name = doc.supplier_name if doc.doctype in ['Supplier Quotation', 'Purchase Invoice', 'Purchase Order'] else doc.customer_name %} {{ party_name }} {% if doc.contact_display and doc.contact_display != party_name %} @@ -173,11 +172,11 @@
{{ d.item_code }}
- {{ html2text(d.description) | truncate(140) }} + {{ html2text(d.description or "") | truncate(140) }}
{{ _("Qty ") }}({{ d.get_formatted("qty") }})
-{% endmacro %} \ No newline at end of file +{% endmacro %} diff --git a/erpnext/templates/pages/order.py b/erpnext/templates/pages/order.py index 505399f4a5b..dcf3b046722 100644 --- a/erpnext/templates/pages/order.py +++ b/erpnext/templates/pages/order.py @@ -4,6 +4,11 @@ import frappe from frappe import _ +from erpnext.accounts.doctype.payment_request.payment_request import ( + ALLOWED_DOCTYPES_FOR_PAYMENT_REQUEST, + get_amount, +) + def get_context(context): context.no_cache = 1 @@ -46,9 +51,7 @@ def get_context(context): ) context.available_loyalty_points = int(loyalty_program_details.get("loyalty_points")) - context.show_pay_button = "payments" in frappe.get_installed_apps() and frappe.db.get_single_value( - "Buying Settings", "show_pay_button" - ) + context.show_pay_button, context.pay_amount = get_payment_details(context.doc) context.show_make_pi_button = False if context.doc.get("supplier"): # show Make Purchase Invoice button based on permission @@ -61,3 +64,19 @@ def get_attachments(dt, dn): fields=["name", "file_name", "file_url", "is_private"], filters={"attached_to_name": dn, "attached_to_doctype": dt, "is_private": 0}, ) + + +def get_payment_details(doc): + show_pay_button, amount = ( + ( + "payments" in frappe.get_installed_apps() + and frappe.db.get_single_value("Buying Settings", "show_pay_button") + and doc.doctype in ALLOWED_DOCTYPES_FOR_PAYMENT_REQUEST + ), + 0, + ) + if not show_pay_button: + return show_pay_button, amount + + amount = get_amount(doc) + return bool(amount), amount diff --git a/erpnext/templates/pages/projects.html b/erpnext/templates/pages/projects.html index 3b8698f4ab2..d88088c9819 100644 --- a/erpnext/templates/pages/projects.html +++ b/erpnext/templates/pages/projects.html @@ -56,8 +56,8 @@ {{ empty_state(_("Task")) }} {% endif %} - {% if doc.timesheets %} +
@@ -73,8 +73,6 @@ {% include "erpnext/templates/includes/projects/project_timesheets.html" %}
- {% else %} - {{ empty_state(_("Timesheet")) }} {% endif %} {% if doc.attachments %} @@ -136,4 +134,4 @@
-{% endmacro %} \ No newline at end of file +{% endmacro %} diff --git a/erpnext/templates/pages/projects.py b/erpnext/templates/pages/projects.py index e3e26fc82a6..446437bbb32 100644 --- a/erpnext/templates/pages/projects.py +++ b/erpnext/templates/pages/projects.py @@ -9,7 +9,7 @@ def get_context(context): project_user = frappe.db.get_value( "Project User", {"parent": frappe.form_dict.project, "user": frappe.session.user}, - ["user", "view_attachments"], + ["user", "view_attachments", "hide_timesheets"], as_dict=True, ) if frappe.session.user != "Administrator" and (not project_user or frappe.session.user == "Guest"): @@ -25,7 +25,8 @@ def get_context(context): project.name, start=0, item_status="open", search=frappe.form_dict.get("search") ) - project.timesheets = get_timesheets(project.name, start=0, search=frappe.form_dict.get("search")) + if project_user and not project_user.hide_timesheets: + project.timesheets = get_timesheets(project.name, start=0, search=frappe.form_dict.get("search")) if project_user and project_user.view_attachments: project.attachments = get_attachments(project.name) @@ -51,7 +52,7 @@ def get_tasks(project, start=0, search=None, item_status=None): "parent_task", ], limit_start=start, - limit_page_length=10, + limit_page_length=100, ) task_nest = [] for task in tasks: diff --git a/erpnext/templates/pages/timelog_info.html b/erpnext/templates/pages/timelog_info.html index be13826444c..9f9445661a0 100644 --- a/erpnext/templates/pages/timelog_info.html +++ b/erpnext/templates/pages/timelog_info.html @@ -38,7 +38,7 @@ - + diff --git a/erpnext/templates/utils.py b/erpnext/templates/utils.py index 57750a56f6f..15af9f0f014 100644 --- a/erpnext/templates/utils.py +++ b/erpnext/templates/utils.py @@ -3,6 +3,7 @@ import frappe +from frappe.utils import escape_html @frappe.whitelist(allow_guest=True) @@ -11,6 +12,8 @@ def send_message(sender, message, subject="Website Query"): website_send_message(sender, message, subject) + message = escape_html(message) + lead = customer = None customer = frappe.db.sql( """select distinct dl.link_name from `tabDynamic Link` dl diff --git a/erpnext/tests/test_perf.py b/erpnext/tests/test_perf.py index fc17b1dcbda..db54ca97395 100644 --- a/erpnext/tests/test_perf.py +++ b/erpnext/tests/test_perf.py @@ -3,7 +3,7 @@ from frappe.tests.utils import FrappeTestCase INDEXED_FIELDS = { "Bin": ["item_code"], - "GL Entry": ["voucher_type", "against_voucher_type"], + "GL Entry": ["voucher_no", "posting_date", "company", "party"], "Purchase Order Item": ["item_code"], "Stock Ledger Entry": ["warehouse"], } diff --git a/erpnext/translations/af.csv b/erpnext/translations/af.csv index 1be91d03944..4c6870efa18 100644 --- a/erpnext/translations/af.csv +++ b/erpnext/translations/af.csv @@ -8743,3 +8743,5 @@ WhatsApp,WhatsApp, Make a call,Maak 'n oproep, Approve,goed te keur, Reject,verwerp, +Convert to Group,Skakel na Groep,Warehouse +General Ledger,Algemene lêer,Warehouse diff --git a/erpnext/translations/ar.csv b/erpnext/translations/ar.csv index a0825e906be..0d35aa49a7a 100644 --- a/erpnext/translations/ar.csv +++ b/erpnext/translations/ar.csv @@ -8743,3 +8743,119 @@ WhatsApp,ال WhatsApp, Make a call,إجراء مكالمة, Approve,وافق, Reject,رفض, +% Returned,% تم إرجاعه, +About Us Settings,إعدادات صفحة من نحن, +About {0} minute remaining,حوالي {0} دقيقة متبقية, +About {0} minutes remaining,حوالي {0} دقائق متبقية, +About {0} seconds remaining,حوالي {0} ثانية متبقية, +Actual Qty in Warehouse,الكمية الفعلية في المستودع, +Added By,أضيف من قبل, +Additional Asset Cost,تكلفة الأصول الإضافية, +Additional Cost Per Qty,التكلفة الإضافية لكل كمية, +Ageing Range,مدى العمر, +Allow,السماح, +Allowed,سمح, +Assignment,مهمة, +Auto Email Report,ارسال التقارير عبر البريد الالكتروني الياً, +Auto Name,الإسم التلقائي, +Bulk Update,تحديث بالجمله, +CC,نسخة, +Category Details,تفاصيل التصنيف, +Company Details,تفاصيل الشركة, +Contact Details,تفاصيل الاتصال, +Contact Us Settings,إعدادات الاتصال بنا, +Convert to Group,تحويل إلى تصنيف (مجموعة),Warehouse +Count,عد, +Created On,منشئه في, +Custom,مخصص, +Dashboard,لوحة القيادة, +Delayed,مؤجل, +Deleted Documents,المستندات المحذوفة, +Domain Settings,إعدادات النطاق, +Don't Send Emails,لا ترسل رسائل البريد الإلكتروني, +Download Backups,تحميل النسخ الاحتياطية, +Email Domain,المجال البريد الإلكتروني, +Event,حدث, +Export Data,تصدير البيانات, +Export Errored Rows,تصدير الصفوف الخطأ, +Failure,بالفشل, +Filter,منقي, +Forecast,توقعات, +General Ledger,دفتر الأستاذ العام,Warehouse +Go to {0} List,انتقل إلى قائمة {0}, +Group Same Items,تجميع العناصر المتشابهة, +Half-yearly,نصف سنوي, +Heatmap,خريطة الحرارة, +Import File,استيراد ملف, +Import File Errors and Warnings,استيراد ملف الأخطاء والتحذيرات, +Import Log Preview,استيراد سجل معاينة, +Import Preview,استيراد معاينة, +Import Progress,استيراد التقدم, +Import Type,نوع الاستيراد, +Import Warnings,استيراد تحذيرات, +Import from Google Sheets,استيراد من جداول بيانات Google, +"Importing {0} of {1}, {2}",استيراد {0} من {1} ، {2}, +Insert New Records,أدخل سجلات جديدة, +Invalid,غير صالحة, +Is Standard,هو معيار, +Item {0} does not exist.,العنصر {0} غير موجود\n
\nItem {0} does not exist., +Key,مفتاح, +Leaderboard,المتصدرين, +Length,طول, +Links,الروابط, +Loading import file...,جارٍ تحميل ملف الاستيراد ..., +Mandatory Depends On,إلزامي يعتمد على, +Meeting,لقاء, +Minimum Value,الحد الأدنى, +Modified By,عدل من قبل, +New Event,حدث جديد, +Newsletter,النشرة الإخبارية, +Notification,إعلام, +Notification Settings,إعدادات الإشعار, +Off,إيقاف, +Parent Document,المستند الأب, +Partial Success,نجاح جزئي, +Pay,دفع,Amount +Please set filters,يرجى تعيين المرشحات, +Print Format Builder,منشئ تنسيق الطباعة, +Print Style,الطباعة ستايل, +Printing,طبع, +Progress,تقدم, +Rate of Depreciation (%),معدل الاستهلاك (%), +Reference DocType,مرجع DOCTYPE, +Refresh Google Sheet,قم بتحديث ورقة Google, +Rejected ,مرفوض , +Report Filters,مرشحات تقرير, +Retry,إعادة المحاولة, +Returned,تم إرجاعه, +SMS Settings,SMS إعدادات, +Section,الجزء, +Send Attached Files,إرسال الملفات المرفقة, +Set Quantity,ضبط الكمية, +Show Failed Logs,إظهار السجلات الفاشلة, +Start Import,بدء الاستيراد, +Submit After Import,إرسال بعد الاستيراد, +System Settings,إعدادات النظام, +Template Options,خيارات القالب, +Template Warnings,تحذيرات القالب, +The Condition '{0}' is invalid,الشرط '{0}' غير صالح, +Time in mins,الوقت بالدقائق, +Unit of Measure (UOM),وحدة القياس, +Update Existing Records,تحديث السجلات الموجودة, +"Updating {0} of {1}, {2}",تحديث {0} من {1} ، {2}, +Value Change,قيمة التغير, +Version,الإصدار, +Watch Video,شاهد الفيديو, +Website Script,نص الموقع البرمجي, +Website Theme,شكل الموقع, +Workflow,سير العمل, +Workflow Action,إجراء سير العمل, +Workflow State,حالة سير العمل, +{0} and {1},{0} و {1}, +{} Available,{} متاح, +{} Assigned,{} تم تحديد المهمة, +{} Available,{} متاح, +CANCELLED,ملغي, +Mobile: ,المحمول: , +Sending...,إرسال..., +{0} is a mandatory field.,{0} حقل إلزامي., diff --git a/erpnext/translations/bn.csv b/erpnext/translations/bn.csv index 7bfbd07be36..f77199d085c 100644 --- a/erpnext/translations/bn.csv +++ b/erpnext/translations/bn.csv @@ -8743,3 +8743,12 @@ WhatsApp,হোয়াটসঅ্যাপ, Make a call,ফোন করুন, Approve,অনুমোদন করা, Reject,প্রত্যাখ্যান, +Signature,স্বাক্ষর, +Signature is mandatory,স্বাক্ষর আবশ্যক, +Signature is not mandatory,স্বাক্ষর আবশ্যক নয়, +Authorised Signature,অনুমোদিত স্বাক্ষর, +Billing Month,বিলিং মাস, +Name of Client,ক্লায়েন্টের নাম, +Client Name,ক্লায়েন্টের নাম, +Client,ক্লায়েন্ট, +BD,বিডি, diff --git a/erpnext/translations/bs.csv b/erpnext/translations/bs.csv index 87bd135eb6a..700d8524a55 100644 --- a/erpnext/translations/bs.csv +++ b/erpnext/translations/bs.csv @@ -8743,3 +8743,3243 @@ WhatsApp,WhatsApp, Make a call,Pozovite, Approve,odobriti, Reject,odbiti, + Address, Adresa, + Amount,Iznos, + Is Child Table,Podređena tabela, + Name, Naziv, + Rate, Cijena, + Summary, Sažetak, +"""SN-01::10"" for ""SN-01"" to ""SN-10""","""SB-01::10"" za ""SB-01"" do ""SB-10""", +# In Stock,# Na Zalihama, +# Req'd Items,# Obavezni Artikli, +% Finished Item Quantity,% Količina Gotovih Proizvoda, +% Occupied,% Zauzeto, +% Picked,% Odabrano, +% Process Loss,% Procesni Gubitak, +% Returned,% Vraćeno, +'Account' in the Accounting section of Customer {0},'Račun' u sekciji Knjigovodstvo Klijenta {0}, +'Allow Multiple Sales Orders Against a Customer's Purchase Order','Dozvoli višestruke Prodajne Naloge naspram Kupovnog Naloga Klijenta', +'Default {0} Account' in Company {1},'Standard {0} račun' u Kompaniji {1}, +"'Inspection Required before Delivery' has disabled for the item {0}, no need to create the QI","'Kontrola Obavezna prije Dostave' je onemogućena za artikal {0}, nema potrebe za kreiranjem Kontrole Kvaliteta", +"'Inspection Required before Purchase' has disabled for the item {0}, no need to create the QI","'Potrebna kontrola prije kupovine' je onemogućena za artikal {0}, nema potrebe za kreiranjem kvaliteta kontrole", +'To Package No.' cannot be less than 'From Package No.','Do Paketa Broj' ne može biti manje od 'Od Paketa Broj.', +'{0}' account is already used by {1}. Use another account.,Račun '{0}' već koristi {1}. Koristite drugi račun., +'{0}' should be in company currency {1}.,'{0}' bi trebao biti u valuti kompanije {1}., +(A) Qty After Transaction,(A) Količina Nakon Transakcije, +(B) Expected Qty After Transaction,(B) Očekivana Količina Nakon Transakcije, +(C) Total Qty in Queue,(C) Ukupna Količina u Redu, +(C) Total qty in queue,(C) Ukupna Količina u Redu, +(D) Balance Stock Value,(D) Bilansna Vrijednost Zaliha, +(E) Balance Stock Value in Queue,(E) Bilansna Vrijednost Zaliha u Redu, +(F) Change in Stock Value,(F) Promjena Vrijednosti Zaliha, +(G) Sum of Change in Stock Value,(G) Suma Promjene Vrijednosti Zaliha, +(H) Change in Stock Value (FIFO Queue),(H) Promjena Vrijednosti Zaliha (FIFO), +(H) Valuation Rate,(H) Stopa Vrednovanja, +(I) Valuation Rate,(I) Stopa Vrednovanja, +(J) Valuation Rate as per FIFO,(J) Stopa Vrednovanja prema FIFO, +(K) Valuation = Value (D) ÷ Qty (A),(K) Vrijednovanje = Vrijednost (D) ÷ Količina (A), +0-30 Days,0-30 dana, +3 Yearly,3 Godišnje, +30-60 Days,30-60 dana, +60-90 Days,60-90 dana, +90 Above,Preko 90, +"
+

Note

+ +

Examples

+ + +","
+

Napomena

+ +

Primjeri

+ + +", +"
Other Details
","
Ostali Detalji
", +"
No Matching Bank Transactions Found
","
Nisu Pronađene Odgovarajuće Bankovne Transakcije
", +"
+

All dimensions in centimeter only

+
","
+

Sve dimenzije samo u centimetrima

+
", +"

About Product Bundle

+ +

Aggregate group of Items into another Item. This is useful if you are bundling a certain Items into a package and you maintain stock of the packed Items and not the aggregate Item.

+

The package Item will have Is Stock Item as No and Is Sales Item as Yes.

+

Example:

+

If you are selling Laptops and Backpacks separately and have a special price if the customer buys both, then the Laptop + Backpack will be a new Product Bundle Item.

","

O Paketu Proizvoda

+ +

Spoji grupu artikala u drugi artikal. Ovo je korisno ako spajate određene Artikle u paket i održavate zalihe upakiranih artikala, a ne zbirn artikal.

+

Paketni Artikal će imati artikle na zalihi kao Ne i Prodajni Artikal kao Da .

+

Primjer:

+

Ako prodajete prijenosna računala i ruksake odvojeno i imate posebnu cijenu ako Klijent kupi oboje, tada će prijenosno računalo + ruksak biti novi artikal paketa proizvoda.

", +"

Currency Exchange Settings Help

+

There are 3 variables that could be used within the endpoint, result key and in values of the parameter.

+

Exchange rate between {from_currency} and {to_currency} on {transaction_date} is fetched by the API.

+

Example: If your endpoint is exchange.com/2021-08-01, then, you will have to input exchange.com/{transaction_date}

","

Pomoć za Postavke Razmjene Valuta

+

Postoje 3 varijable koje se mogu koristiti unutar krajnje tačke, ključa rezultata i u vrijednostima parametra.

+

Razmjenski kurs između {from_currency} i {to_currency} na dan {transaction_date} preuzima API.

+

Primjer: Ako je vaša krajnja tačka exchange.com/2021-08-01, tada ćete morati unijeti exchange.com/{transaction_date}

", +"

Body Text and Closing Text Example

+ +
We have noticed that you have not yet paid invoice {{sales_invoice}} for {{frappe.db.get_value(""Currency"", currency, ""symbol"")}} {{outstanding_amount}}. This is a friendly reminder that the invoice was due on {{due_date}}. Please pay the amount due immediately to avoid any further dunning cost.
+ +

How to get fieldnames

+ +

The fieldnames you can use in your template are the fields in the document. You can find out the fields of any documents via Setup > Customize Form View and selecting the document type (e.g. Sales Invoice)

+ +

Templating

+ +

Templates are compiled using the Jinja Templating Language. To learn more about Jinja, read this documentation.

","

Sadržajni Tekst i primjer Završnog teksta

+ +
Primijetili smo da još niste platili fakturu {{sales_invoice}} za {{frappe.db.get_value(""Currency"", currency, ""symbol"")}} {{outstanding_amount}}. Ovo je prijateljski podsjetnik da je faktura dospjela na dan {{due_date}}. Molimo vas da odmah platite iznos koji dugujete kako biste izbjegli bilo kakve dodatne troškove opomene.
+ +

Kako dobiti imena polja

+ +

Nazivi polja koje možete koristiti u svom šablonu su polja u dokumentu. Možete saznati polja bilo kojeg dokumenta putem Podešavanja > Prilagodite prikaz obrasca i odabir tipa dokumenta (npr. Prodajna Faktura)

+ +

Šablon

+ +

Šabloni se kompajliraju koristeći Jinja Templating Language. Da saznate više o Jinji, pročitajte ovu dokumentaciju.

", +"

Contract Template Example

+ +
Contract for Customer {{ party_name }}
+
+-Valid From : {{ start_date }} 
+-Valid To : {{ end_date }}
+
+ +

How to get fieldnames

+ +

The field names you can use in your Contract Template are the fields in the Contract for which you are creating the template. You can find out the fields of any documents via Setup > Customize Form View and selecting the document type (e.g. Contract)

+ +

Templating

+ +

Templates are compiled using the Jinja Templating Language. To learn more about Jinja, read this documentation.

","

Primjer Šablona Ugovora

+ +
Ugovor za Kupca {{ party_name }}
+
+-Važi od: {{ start_date }}
+-Važi do: {{ end_date }}
+
+ +

Kako dobiti imena polja

+ +

Nazivi polja koje možete koristiti u svom predlošku ugovora su polja u ugovoru za koje kreirate šablon. Možete saznati polja bilo kojeg dokumenta putem Podešavanja > Prilagodite prikaz obrasca i odabir vrste dokumenta (npr. Ugovor)

+ +

Šablon

+ +

Šabloni se kompajliraju koristeći Jinja Templating Language. Da saznate više o Jinji, pročitajte ovu dokumentaciju.

", +"

Standard Terms and Conditions Example

+ +
Delivery Terms for Order number {{ name }}
+
+-Order Date : {{ transaction_date }} 
+-Expected Delivery Date : {{ delivery_date }}
+
+ +

How to get fieldnames

+ +

The fieldnames you can use in your email template are the fields in the document from which you are sending the email. You can find out the fields of any documents via Setup > Customize Form View and selecting the document type (e.g. Sales Invoice)

+ +

Templating

+ +

Templates are compiled using the Jinja Templating Language. To learn more about Jinja, read this documentation.

","

Primjer Standardnih Odredbi i Uvjeta

+ +
Uvjeti dostaveza broj Naloga {{ name }}
+
+- Datum Naloga: {{ transaction_date }}
+- Očekivani Datum Dostave: {{ delivery_date }}
+
+ +

Kako preuzeti nazive polja

+ +

Imena polja koja možete koristiti u svom šablonu e-pošte su polja u dokumentu iz kojeg šaljete e-poštu. Polja bilo kojeg dokumenta možete pronaći preko Postavljanje > Prilagodite prikaz forme i odaberite tip dokumenta (npr. Prodajna Faktura)

+ +

Izrada Šablona

+ +

Šabloni su sastavljeni pomoću Jinja Templating Language. Da biste saznali više o Jinji, pročitajte ovu dokumentaciju.

", +"
Or
","
Ili
", +"","", +"","", +"","", +"

In your Email Template, you can use the following special variables: +

+ +

+

Apart from these, you can access all values in this RFQ, like {{ message_for_supplier }} or {{ terms }}.

","

U vašem Šablonu e-pošte možete koristiti sljedeće posebne varijable: +

+ +

+

Osim ovih, možete pristupiti svim vrijednostima u ovom Zahtjevu za ponudu, kao što su {{ message_for_supplier }} ili {{ terms }}.

", +"
Message Example
+ +<p> Thank You for being a part of {{ doc.company }}! We hope you are enjoying the service.</p> + +<p> Please find enclosed the E Bill statement. The outstanding amount is {{ doc.grand_total }}.</p> + +<p> We don't want you to be spending time running around in order to pay for your Bill.
After all, life is beautiful and the time you have in hand should be spent to enjoy it!
So here are our little ways to help you get more time for life! </p> + +<a href=""{{ payment_url }}""> click here to pay </a> + +
+","
Primjer poruke
+ +<p> Hvala vam što ste dio {{ doc.company }}! Nadamo se da uživate u usluzi.</p> + +<p> U prilogu se nalazi izvod E računa. Nepodmireni iznos je {{ doc.grand_total }}.</p> + +<p> Ne želimo da trošite vrijeme na trčanje okolo kako biste platili svoj račun.
Uostalom, život je lijep i vrijeme koje imate u ruci treba potrošiti da uživate u njemu!
Dakle, evo naših malih načina da vam pomognemo da dobijete više vremena za život! </p> + +<a href=""{{ payment_url }}""> kliknite ovdje da platite </a> + +
+", +"
Message Example
+ +<p>Dear {{ doc.contact_person }},</p> + +<p>Requesting payment for {{ doc.doctype }}, {{ doc.name }} for {{ doc.grand_total }}.</p> + +<a href=""{{ payment_url }}""> click here to pay </a> + +
+","
Primjer poruke
+ +<p>Poštovani {{ doc.contact_person }},</p> + +<p>Tražim plaćanje za {{ doc.doctype }}, {{ doc.name }} za {{ doc.grand_total }}.</p> + +<a href=""{{ payment_url }}""> kliknite ovdje da platite </a> + +
+", +"Masters & Reports","Postavke & Izvještaji", +"Quick Access","Brzi pristup", +"Reports & Masters","Izvještaji & Pristupi", +"Reports & Masters","Izvještaji & Pristup", +"Settings","Postavke", +"Shortcuts","Prečice", +"Your Shortcuts + + + + + + ","Prečice", +"Your Shortcuts","Prečice", +Grand Total: {0},Ukupno: {0}, +Outstanding Amount: {0},Nepodmireni iznos: {0}, +"
{d.batch_no}{d.serial_no}{abs(d.qty)}
{d.batch_no}{d.serial_no}{abs(d.qty)}
{d.batch_no}{abs(d.qty)}
+ + + + + + + + + + + + + + + + + +
Child DocumentNon Child Document
+

To access parent document field use parent.fieldname and to access child table document field use doc.fieldname

+ +
+

To access document field use doc.fieldname

+
+

Example: parent.doctype == ""Stock Entry"" and doc.item_code == ""Test""

+ +
+

Example: doc.doctype == ""Stock Entry"" and doc.purpose == ""Manufacture""

+
+ + + + + + +"," + + + + + + + + + + + + + + + + + +
Podređeni DokumentNadređeni Dokument
+

Za pristup polju nadređenog dokumenta koristite ime parent.field, a za pristup polju dokumenta podređene tabele koristite doc.fieldname

+ +
+

Za pristup polju dokumenta koristite doc.fieldname

+
+

Primjer: parent.doctype == ""Stock Entry"" i doc.item_code == ""Test""

+ +
+

Primjer: doc.doctype == ""Stock Entry"" i doc.purpose == ""Proizvodnja""

+
+ + + + + + +", +A Holiday List can be added to exclude counting these days for the Workstation.,Lista Praznika se može dodati kako bi se isključilo brojanje praznika za Radnu Stanicu., +A Packing Slip can only be created for Draft Delivery Note.,Otpremnica se može kreirati samo za nacrt Dostavnice., +"A Price List is a collection of Item Prices either Selling, Buying, or both","Cjenovnik je skup cijena artikala za Prodaju, Kupovinu ili oboje", +A Reconciliation Job {0} is running for the same filters. Cannot reconcile now,Posao usaglašavanja {0} radi za iste filtere. Ne mogu se sada usglasiti, +A Transaction Deletion Document: {0} is triggered for {0},Dokument za Brisanje Transakcije: {0} se pokreće za {0}, +A customer must have primary contact email.,Klijent mora imati primarni kontakt e-poštu., +A driver must be set to submit.,Vozač mora biti naveden da bi se podnijelo., +A template with tax category {0} already exists. Only one template is allowed with each tax category,Šablon sa poreskom kategorijom {0} već postoji. Za svaku poreznu kategoriju dozvoljen je samo jedan šablon, +API Details,API Detalji, +AWB Number,AWB Broj, +Abbreviation: {0} must appear only once,Skraćenica: {0} se mora pojaviti samo jednom, +About Us Settings,O nama Postavke, +About {0} minute remaining,Preostalo je oko {0} minute, +About {0} minutes remaining,Preostalo je oko {0} minuta, +About {0} seconds remaining,Preostalo je oko {0} sekundi, +Acceptance Criteria Formula,Formula Kriterija Prihvatljivosti, +Acceptance Criteria Value,Vrijednost Kriterija Prihvatljivosti, +Accepted Qty in Stock UOM,Prihvaćena Količina u Jedinici Zaliha, +Access Key,Pristupni Ključ, +Access Key is required for Service Provider: {0},Pristupni ključ je potreban za davaoca usluga: {0}, +"According to the BOM {0}, the Item '{1}' is missing in the stock entry.","Prema Sastavnici {0}, artikal '{1}' nedostaje u unosu zaliha.", +Account Closing Balance,Završno Stanje Računa, +Account Currency (From),Valuta Računa , +Account Currency (To),Valuta Računa (Do), +Account Opening Balance,Početno Stanje Računa, +Account not Found,Račun nije pronađen, +Account {0} added multiple times,Račun {0} dodan više puta, +Accounting Dimension Filter,Filter Knjigovodstvenih Dimenzija, +Accounting Dimensions Filter,Filter Knjigovodstvenih Dimenzija, +Accounting Entry for {0},Knjigovodstveni Unos za {0}, +Accounts Closing,Zatvaranje Knjigovodstva, +Accounts Missing Error,Greška Nepostojanja Računa, +Accounts Receivable/Payable,Račun Potraživanja/Obveza, +Accounts to Merge,Računi za Spajanje, +Action If Quality Inspection Is Rejected,Radnja ako je Kontrola Kvaliteta odbijena, +Action If Same Rate is Not Maintained,Radnja ako se Ista Cijena ne Održava, +Action if Same Rate is Not Maintained Throughout Sales Cycle,Radnja ako se ista stopa marže ne održava tokom prodajnog ciklusa, +Active Status,Aktivan status, +Actual Balance Qty,Stvarni Saldo Količinski, +Actual Expense,Stvarni Trošak, +Actual Posting,Stvarno Knjiženje, +Actual Qty in Warehouse,Stvarna Količina u Skladištu, +Actual Time,Stvarno Vrijeme, +Add Columns in Transaction Currency,Dodaj Kolone u Valuti Transakcije, +Add Corrective Operation Cost in Finished Good Valuation,Dodaj korektivne operativne troškove u Vrijednovanje Gotovog Proizvoda, +Add Discount,Dodaj popust, +Add Items in the Purpose Table,Dodaj Artikle u Tabelu Namjena, +Add Lead to Prospect,Dodaj potencijalnog u izglednog kupca, +Add Local Holidays,Dodaj lokalne praznike, +Add Manually,Dodaj ručno, +Add Or Deduct,Dodaj ili oduzmi, +Add Serial / Batch Bundle,Dodaj Serijski / Šaržni Paket, +Add Serial / Batch No,Dodaj Serijski / Šaržni Broj, +Add Serial / Batch No (Rejected Qty),Dodaj Serijski / Šaržni Broj (Odbijena Količina), +Add Stock,Dodaj zalihe, +Add Sub Assembly,Dodaj Podsklop, +Add Template,Dodaj šablon, +Add a Note,Dodaj Bilješku, +Add details,Dodaj detalje, +Add to Prospect,Dodaj u Potencijal, +Added By,Dodano Od, +Added On,Dodano, +Added Supplier Role to User {0}.,Dodata uloga dobavljača korisniku {0}., +Added {1} Role to User {0}.,Dodata {1} uloga korisniku {0}., +Adding Lead to Prospect...,Dodavanje potencijalnog u izgledne kupce..., +Additional,Dodatno, +Additional Asset Cost,Dodatni Trošak Imovine, +Additional Cost Per Qty,Dodatni Trošak po Količini, +Additional Data,Dodatni Podaci, +Additional Info,Dodatne informacije, +Address And Contacts,Adrese i Kontakti, +Adjust Asset Value,Uskladi vrijednost imovine, +Adjustment Against,Usaglašavanje Naspram, +Adjustment based on Purchase Invoice rate,Usklađivanje na osnovu stope fakture nabavke, +Advance Account: {0} must be in either customer billing currency: {1} or Company default currency: {2},Račun Predujma: {0} mora biti u valuti fakture klijenta: {1} ili standard valuti kompanije: {2}, +Advance Payment,Predujamska Plaćanja, +Advance Payment Date,Datum Plaćanja Predujma, +Advance Payment Ledger Entry,Unos u Registar Plaćanja Predujma, +Advance Reconciliation Takes Effect On,Usaglašavanje Predujma stupa na snagu, +Advance Tax,Porez Predujma, +Advance Taxes and Charges,Predujam Poreza i Naknada, +Advance paid against {0} {1} cannot be greater than Grand Total {2},Predujam plaćen naspram {0} {1} ne može biti veći od ukupnog iznosa {2}, +Advance payments allocated against orders will only be fetched,Predujam Uplate dodijeljene naspran Naloga biće samo preuzete, +Affected Transactions,Zahvaćene Transakcije, +Against Customer Order {0},Naspram Naloga Klijenta {0}, +Against Supplier Invoice {0},Naspram Fakture Dobavljača {0}, +Against Voucher No,Naspram Verifikata Broj, +Age ({0}),Dob ({0}), +Ageing Range,Raspon starenja, +Agent Busy Message,Agent Zauzet Poruka, +Agent Group,Agent Groupa, +Agent Unavailable Message,Agent Nedostupan Poruka, +Aggregate a group of Items into another Item. This is useful if you are maintaining the stock of the packed items and not the bundled item,"Spakujte grupu artikala u drugu artikal. Ovo je korisno ako održavate zalihe upakovanih artikala, a ne u paketu", +Algorithm,Algoritam, +All Activities,Sve Aktivnosti, +All Activities HTML,Sve Aktivnosti HTML, +All Items,Svi Artikli, +All Sales Transactions can be tagged against multiple Sales Persons so that you can set and monitor targets.,Sve prodajne transakcije mogu se označiti naspram više prodajnih osoba kako biste mogli postaviti i nadzirati ciljeve., +All allocations have been successfully reconciled,Sve dodjele su uspješno usaglašene, +All items have already been received,Svi Artikli su već primljeni, +All items in this document already have a linked Quality Inspection.,Svi Artiklie u ovom dokumentu već imaju povezanu Kontrolu Kvaliteta., +All the Comments and Emails will be copied from one document to another newly created document(Lead -> Opportunity -> Quotation) throughout the CRM documents.,Svi komentari i e-pošta kopirat će se iz jednog dokumenta u drugi novostvoreni dokument (Potencijalni Klijent -> Prilika-> Ponuda) kroz dokumente Prodajne Podrške., +"All the required items (raw materials) will be fetched from BOM and populated in this table. Here you can also change the Source Warehouse for any item. And during the production, you can track transferred raw materials from this table.",Svi obavezni Artikli (sirovine) bit će preuzeti iz Sastavnice i popunjene u ovoj tabeli. Ovdje također možete promijeniti izvorno skladište za bilo koji artikal. A tokom proizvodnje možete pratiti prenesene sirovine iz ove tabele., +Allocate Payment Request,Dodijeli zahtjev za plaćanje, +Allocated Entries,Dodijeljeni Unosi, +Allocated To:,Alocirano:, +Allocations,Dodjele, +Allow,Dozvoli, +Allow Alternative Item must be checked on Item {},Dozvoli Alternativni Artikal mora biti označena za Artikal {}, +Allow Continuous Material Consumption,Dozvoli kontinuiranu potrošnju materijala, +Allow Excess Material Transfer,Dozvoli Prijenos Viška Materijala, +Allow Internal Transfers at Arm's Length Price,Dozvoli interne transfere po tržišnoj cijeni, +Allow Item to be Added Multiple Times in a Transaction,Dozvolite da se Artikal doda više puta u transakciji, +Allow Lead Duplication based on Emails,Dozvolite dupliciranje Potencijalnih Klijenata na osnovu e-pošte, +Allow Negative rates for Items,Dozvolite negativne cijene za Artikle, +Allow Or Restrict Dimension,Dozvoli ili ograniči dimenziju, +Allow Partial Reservation,Dozvoli Djelimičnu Rezervaciju, +Allow Purchase,Dozvoli Kupovinu, +Allow Sales,Dozvoli Prodaju, +Allow Sales Order Creation For Expired Quotation,Dozvoli Kreiranje Prodajnog Naloga za Isteklu Ponudu, +Allow UOM with Conversion Rate Defined in Item,Dozvoli Jedinicu sa stopom konverzije definiranom u Postavkama Artikla, +Allow User to Edit Discount,Dozvoli Korisniku da Uređuje Popust, +Allow User to Edit Rate,Dozvoli Korisniku da Uređuje Cijenu, +Allow Zero Rate,Dozvoli Nultu Cijenu, +Allow existing Serial No to be Manufactured/Received again,Dozvoli da se postojeći serijski broj ponovo Proizvede/Primi, +Allow material consumptions without immediately manufacturing finished goods against a Work Order,Dozvoli potrošnju materijala bez trenutne proizvodnje gotovog proizvoda naspram Radnom Nalogu, +Allow multi-currency invoices against single party account ,Dozvoli viševalutne fakture naspram računa jedne stranke , +Allow to Edit Stock UOM Qty for Purchase Documents,Dozvoli Uređivanje Količine Jedinice Zaliha za Dokumente Kupovine, +Allow to Edit Stock UOM Qty for Sales Documents,Dozvoli Uređivanje Količine Jedinice Zaliha za Dokumente Prodaje, +Allow transferring raw materials even after the Required Quantity is fulfilled,Dozvoli prijenos sirovina i nakon što je ispunjena Potrebna Količina, +Allowed,Dozvoljeno, +Allowed Dimension,Dozvoljena dimenzija, +Allowed Doctypes,Dozvoljeni Tipovi Dokumenata, +Allowed Items,Dozvoljeni Artikli, +Allowed primary roles are 'Customer' and 'Supplier'. Please select one of these roles only.,Dozvoljene primarne uloge su 'Klijent' i 'Dobavljač'. Molimo odaberite samo jednu od ovih uloga., +Allows to keep aside a specific quantity of inventory for a particular order.,Omogućava zadržavanje određene količine zaliha za određeni Prodajni Nalog., +Already Picked,Već odabrano, +Alternative Items,Alternativni Artikli, +"Alternatively, you can download the template and fill your data in.","Alternativno, možete preuzeti šablon i popuniti svoje podatke.", +Amount (AED),Iznos (AED), +Amount Difference with Purchase Invoice,Razlika u Iznosu naspram Kupovne Fakture, +Amount Eligible for Commission,Iznos prihvatljiv za Proviziju, +Amount in Account Currency,Iznos u Valuti Računa, +Amount in Words,Iznos U Riječima, +Amount in party's bank account currency,Iznos u valuti bankovnog računa stranke, +Amount in transaction currency,Iznos u valuti transakcije, +Amounts,Iznosi, +An Item Group is a way to classify items based on types.,Grupa Artikla je način za klasifikaciju Artikala na osnovu tipa., +An error has been appeared while reposting item valuation via {0},Pojavila se greška prilikom ponovnog knjiženja vrijednosti artikla preko {0}, +Annual Revenue,Godišnji Promet, +"Another Cost Center Allocation record {0} applicable from {1}, hence this allocation will be applicable upto {2}","Drugi zapis dodjele Centra Troškova {0} primjenjiv od {1}, stoga će ova dodjela biti primjenjiva do {2}", +Another Payment Request is already processed,Drugi Zahtjev za Plaćanje je već obrađen, +"Any one of following filters required: warehouse, Item Code, Item Group","Potreban je bilo koji od sljedećih filtera: Skladište, Kod Artikla, Grupa Artikla", +Applicable Dimension,Primjenjiva Dimenzija, +Applicable On Account,Primjenjivo na Račun, +Applied on each reading.,Primjenjuje se na svako čitanje., +Applied putaway rules.,Primijenjena pravila odlaganja., +Applies To,Primjenjuje se na, +Apply Putaway Rule,Primijenite pravilo odlaganja, +Apply Recursion Over (As Per Transaction UOM),Primijeni Rekurziju preko (prema Transakcijskoj Jedinici), +Apply SLA for Resolution Time,Primijeni Ugovor o Nivou Usluge za vrijeme rješavanja, +Apply TDS,Primijeni TDS, +Apply Tax Withholding Amount ,Primijeni Pdv iznos po Odbitku , +Apply restriction on dimension values,Primijeni ograničenje na vrijednosti dimenzije, +Apply to All Inventory Documents,Primijeniti na sve Dokumente Zaliha, +Apply to Document,Primijeniti na Dokument, +Appointment Created Successfully,Termin je uspješno zakazan, +Appointment Scheduling Disabled,Zakazivanje Termina Onemogućeno, +Appointment Scheduling has been disabled for this site,Zakazivanje termina je onemogućeno za ovu stranicu, +Appointment was created. But no lead was found. Please check the email to confirm,Termin je kreiran. Ali Potencijalni Klijent nije pronađen. Provjeri e-poštu da potvrdite, +Approximately match the description/party name against parties,Približno podudaranje opisu/nazivu stranke aspram stranki, +Are you sure you want to clear all demo data?,Jeste li sigurni da želite izbrisati sve demo podatke?, +Are you sure you want to delete this Item?,Jeste li sigurni da želite izbrisati ovaj Artikal?, +Are you sure you want to delete {0}?

This action will also delete all associated Common Code documents.

,Jeste li sigurni da želite izbrisati {0}?

Ova radnja će također izbrisati sve povezane Zajedničke Kod dokumente.

, +Are you sure you want to restart this subscription?,Jeste li sigurni da želite ponovo pokrenuti ovu pretplatu?, +As on Date,Kao na Datum, +"As there are existing submitted transactions against item {0}, you can not change the value of {1}.","Pošto postoje postojeće podnešene transakcije naspram artikla {0}, ne možete promijeniti vrijednost {1}.", +"As there are negative stock, you can not enable {0}.","Pošto postoje negativne zalihe, ne možete omogućiti {0}.", +"As there are reserved stock, you cannot disable {0}.","Pošto postoje rezervisane zalihe, ne možete onemogućiti {0}.", +"As there are sufficient Sub Assembly Items, Work Order is not required for Warehouse {0}.","Pošto ima dovoljno artikala podsklopa, radni nalog nije potreban za Skladište {0}.", +"As {0} is enabled, you can not enable {1}.","Pošto je {0} omogućen, ne možete omogućiti {1}.", +Assembly Items,Artikli za Motiranje, +Asset Activity,Aktivnost Imovine, +Asset Capitalization,Kapitalizacija Imovine, +Asset Capitalization Asset Item,Kapitalizacija Imovine Artikal Imovine, +Asset Capitalization Service Item,Kapitalizacije Imovine Servisni Artikal, +Asset Capitalization Stock Item,Kapitalizacija Imovine Artikal Zalihe, +Asset Depreciation Details,Detalji Amortizacije Imovine, +Asset Depreciation Schedule,Raspored Amortizacije Imovine, +Asset Depreciation Schedule for Asset {0} and Finance Book {1} is not using shift based depreciation,Raspored Amortizacije Imovine {0} i Finansijski Registar {1} ne koristi amortizaciju zasnovanu na smjenama, +Asset Depreciation Schedule not found for Asset {0} and Finance Book {1},Raspored amortizacije imovine nije pronađen za Imovinu {0} i Finansijski Registar {1}, +Asset Depreciation Schedule {0} for Asset {1} already exists.,Raspored Amortizacije Imovine {0} za Imovinu {1} već postoji., +Asset Depreciation Schedule {0} for Asset {1} and Finance Book {2} already exists.,Raspored Amortizacije Imovine {0} za Imovinu {1} i Finansijski Registar {2} već postoji., +"Asset Depreciation Schedules created:
{0}

Please check, edit if needed, and submit the Asset.","Kreirani Rasporedi Amortizacije Imovine:
{0}

Molimo provjerite, uredite ako je potrebno i pošaljite Imovinu.", +Asset ID,ID Imovine, +Asset Quantity,Količina Imovine, +Asset Repair Consumed Item,Potrošeni artikal za popravku imovine, +Asset Settings,Postavke Imovine, +Asset Shift Allocation,Raspodjela Imovine po Smjeni, +Asset Shift Factor,Faktor Smjene Imovine, +Asset Shift Factor {0} is set as default currently. Please change it first.,Faktor smjene imovine {0} je trenutno postavljen kao standard. Prvo ga promijenite., +Asset cancelled,Imovina otkazana, +Asset capitalized after Asset Capitalization {0} was submitted,Imovina kapitalizirana nakon podnošenja Kapitalizacije Imovine {0}, +Asset created,Imovina kreirana, +Asset created after Asset Capitalization {0} was submitted,Imovina kreirana nakon podnošenja Kapitalizacije Imovine {0}, +Asset created after being split from Asset {0},Imovina kreirana nakon odvajanja od imovine {0}, +Asset deleted,Imovina izbrisana, +Asset issued to Employee {0},Imovina izdata {0}, +Asset out of order due to Asset Repair {0},Imovina nije u funkciji zbog popravke imovine {0}, +Asset received at Location {0} and issued to Employee {1},Imovina primljena u {0} i izdata {1}, +Asset restored,Imovina vraćena, +Asset restored after Asset Capitalization {0} was cancelled,Imovina vraćena nakon što je kapitalizacija imovine {0} otkazana, +Asset returned,Imovina vraćena, +Asset scrapped,Imovina rashodovana, +Asset sold,Imovina prodata, +Asset submitted,Imovina Podnešena, +Asset transferred to Location {0},Imovina prebačena na lokaciju {0}, +Asset updated after being split into Asset {0},Imovina je ažurirana nakon što je podijeljena na Imovinu {0}, +Asset updated after cancellation of Asset Repair {0},Imovina ažurirana nakon otkazivanja popravke imovine {0}, +Asset updated after completion of Asset Repair {0},Imovina ažurirana nakon završetka popravke imovine {0}, +Asset {0} cannot be received at a location and given to an employee in a single movement,Imovina {0} ne može se primiti na lokaciji i dati zaposleniku u jednom pokretu, +Asset {0} does not belong to Item {1},Imovina {0} ne pripada Artiklu {1}, +Asset {0} does not exist,Imovina {0} ne postoji, +Asset {0} has been created. Please set the depreciation details if any and submit it.,Imovina {0} je kreirana. Postavi detalje amortizacije ako ih ima i podnesi., +Asset {0} has been updated. Please set the depreciation details if any and submit it.,Imovina {0} je ažurirana. Postavi detalje amortizacije ako ih ima i podnesi., +Asset's depreciation schedule updated after Asset Shift Allocation {0},Raspored Amortizacije Imovine ažuriran nakon alokacije Imovine {0}, +Asset's value adjusted after cancellation of Asset Value Adjustment {0},Vrijednost Imovine prilagođena nakon otkazivanja Ispravke Vrijednosti Imovine {0}, +Asset's value adjusted after submission of Asset Value Adjustment {0},Vrijednost imovine prilagođena nakon podnošenja Ispravke Vrijednosti Imovine {0}, +Assign Job to Employee,Dodijeli Posao Personalu, +Assignment,Dodjela, +Assignment Conditions,Uslovi Dodjele, +At Row #{0}: The picked quantity {1} for the item {2} is greater than available stock {3} for the batch {4} in the warehouse {5}. Please restock the item.,Red #{0}: Izabrana količina {1} za artikl {2} je veća od raspoloživih zaliha {3} za šaržu {4} u skladištu {5}. Popunite zalihu artikla., +At Row #{0}: The picked quantity {1} for the item {2} is greater than available stock {3} in the warehouse {4}.,Red #{0}: Izabrana količina {1} za artikal {2} je veća od raspoloživih zaliha {3} u skladištu {4}., +At least one account with exchange gain or loss is required,Najmanje jedan račun sa dobitkom ili gubitkom na kursu je obavezan, +At row {0}: Batch No is mandatory for Item {1},Red {0}: Broj Šarće je obavezan za Artikal {1}, +At row {0}: Parent Row No cannot be set for item {1},Red {0}: Nadređeni Redni Broj ne može se postaviti za artikal {1}, +At row {0}: Qty is mandatory for the batch {1},Red {0}: Količina je obavezna za Šaržu {1}, +At row {0}: Serial No is mandatory for Item {1},Red {0}: Serijski Broj je obavezan za Artikal {1}, +At row {0}: Serial and Batch Bundle {1} has already created. Please remove the values from the serial no or batch no fields.,Red {0}: Serijski i Šaržni Paket {1} je već kreiran. Molimo uklonite vrijednosti iz polja serijski broj ili šarža., +At row {0}: set Parent Row No for item {1},Red {0}: postavite Nadređeni Redni Broj za Artikal {1}, +Attach CSV File,Priloži CSV datoteku, +Attendance & Leaves,Prisustvo & Odsustvo, +Attribute value: {0} must appear only once,Vrijednost Atributa: {0} se mora pojaviti samo jednom, +Auto Create Exchange Rate Revaluation,Automatsko Kreiranje Revalorizacije Deviznog Kursa, +Auto Create Purchase Receipt,Automatsko Kreiranje Kupovnog Naloga, +Auto Create Serial and Batch Bundle For Outward,Automatsko Kreiranje Serijskog i Šarža paketa za Dostavu, +Auto Create Subcontracting Order,Automatsko Kreiranje Podugovornog Naloga, +Auto Created Serial and Batch Bundle,Automatski kreirani Serijski i Šaržni Paket, +Auto Creation of Contact,Automatsko kreiranje kontakta, +Auto Email Report,Automatski izvještaj e-poštom, +Auto Fetch Serial Numbers,Automatski Preuzmi Serijske Brojeve, +Auto Insert Item Price If Missing,Automatsko stavljanje cijene artikla ako nedostaje, +Auto Name,Automatski naziv, +Auto Reconcile,Automatski Usaglasi, +Auto Reconcile Payments,Automatski Usaglasi Plaćanja, +Auto Reconciliation,Automatsko Usaglašavanje, +Auto Reconciliation Job Trigger,Okidač Posla Automatskog Usaglašavanja, +Auto Reconciliation has started in the background,Automatsko Usaglašavanje je počelo u pozadini, +Auto Reconciliation of Payments has been disabled. Enable it through {0},Automatsko Usglašavanje Plaćanja je onemogućeno. Omogući preko {0}, +Auto Reserve Serial and Batch Nos,Automatski Rezerviši Serijski i Šaržni Broj, +Auto Reserve Stock for Sales Order on Purchase,Automatski Rezerviši Zalihu za Prodajni Nalog pri Kupovini, +Auto close Opportunity Replied after the no. of days mentioned above,Automatski zatvori Odgovoran na Mogućnost nakon broja gore navedenih dana, +Auto match and set the Party in Bank Transactions,Automatsko poravnanje i postavljanje Stranke u Bankovnim Transakcijama, +Auto write off precision loss while consolidation,Automatski otpiši gubitke preciznosti tokom konsolidacije, +Automatically Add Filtered Item To Cart,Automatski dodaj filtrirani Artikal u Korpu, +Automatically Fetch Payment Terms from Order,Automatski Preuzmi Uslove Plaćanja iz Naloga, +Automatically post balancing accounting entry,Automatski knjiži unos obračunskog stanja, +Available Batch Report,Dostupni Izvještaj o Šarži, +Available Qty For Consumption,Dostupna količina za Potrošnju, +Available Qty at Company,Dostupna količina u Kompaniji, +Available Qty at Target Warehouse,Dostupna količina u Izabranom Skladištu, +Available Qty to Reserve,Dostupna količina za Rezervisanje, +Average Completion,Prosječan završetak, +Avg Rate,Prosječna Cijena, +Avg Rate (Balance Stock),Prosječna Cijena (Stanje Zaliha), +BFS,Polovi Kjnigovodstveni Izvod, +BIN Qty,Skladišna Količina, +BOM Created,Sastavnica Kreirana, +BOM Creator,Konstruktor Sastavnice, +BOM Creator Item,Artikal Sastavnice Konstruktora, +BOM Info,Informacija Sastavnice, +BOM Level,Nivo Sastavnice, +BOM Tree,Stablo Sastavnice, +BOM UoM,Jedinica Sastavnice, +BOM Update Batch,Sastavnica Ažurira Šaržu, +BOM Update Initiated,Pokrenuto Ažuriranje Sastavnice, +BOM Update Log,Zapisnik Ažuriranja Sastavnice, +BOM Update Tool Log with job status maintained,Zapisnik Alata Ažuriranja Sastavnice sa očuvanim statusom posla, +BOM Updation already in progress. Please wait until {0} is complete.,Ažuriranje Sastavnica je već u toku. Pričekaj dok {0} ne završi., +BOM Updation is queued and may take a few minutes. Check {0} for progress.,Ažuriranje Sastavnice je na čekanju i može potrajati nekoliko minuta. Provjeri {0} za napredak., +BOM and Production,Sastavnica & Proizvodnja, +BOM recursion: {1} cannot be parent or child of {0},Rekurzija Sastavnice: {1} ne može biti nadređena ili podređena {0}, +BOMs Updated,Sastavnice Ažurirane, +BOMs created successfully,Sastavnice su uspješno kreirane, +BOMs creation failed,Kreiranje Sastavnica nije uspjelo, +"BOMs creation has been enqueued, kindly check the status after some time","Kreiranje Sastavnica je u redu, provjeri status nakon nekog vremena", +Balance Qty (Stock),Količinsko Stanja (Zaliha), +Balance Sheet Summary,Sažetak Bilansa Stanja, +Balance Stock Value,Vrijednost Količinskog Stanja, +Bank Account {} in Bank Transaction {} is not matching with Bank Account {},Bankovni račun {} u bankovnoj transakciji {} se ne podudara s bankovnim računom {}, +Bank Reconciliation Tool,Bankovni Alat Usaglašavanja, +Bank Statement Import,Uvoz Bankovnog Izvoda, +Bank Transaction {0} Matched,Bankovna Transakcija {0} Usaglašena, +Bank Transaction {0} added as Journal Entry,Bankovna Transakcija {0} dodana je kao Nalog Knjiženja, +Bank Transaction {0} added as Payment Entry,Bankovna Transakcija {0} dodana je kao Unos Plaćanja, +Bank Transaction {0} is already fully reconciled,Bankovna Transakcija {0} je već u potpunosti usaglašena, +Bank Transaction {0} updated,Bankovna Transakcija {0} ažurirana, +Bank/Cash Account,Bankovni/Gotovinski Račun, +Bank/Cash Account {0} doesn't belong to company {1},Bankovni/Gotovinski Račun {0} ne pripada kompaniji {1}, +Base Amount,Osnovni Iznos, +Base Cost Per Unit,Osnovni Trošak po Jedinici, +Base Rate,Osnovna Cijena, +Base Tax Withholding Net Total,Neto ukupni PDV po odbitku, +Base Total,Osnovni Ukupni Iznos, +Base Total Billable Amount,Osnovni ukupan iznos za Fakturisanje, +Base Total Billed Amount,Osnovni ukupan Fakturisan iznos, +Base Total Costing Amount,Osnovni Ukupni Obraöunati Iznos, +Based On Value,Na osnovu Vrijednosti, +"Based on your HR Policy, select your leave allocation period's end date","Na osnovu vaših pravila ljudskih resursa, odaberi datum završetka perioda raspodjele odmora", +"Based on your HR Policy, select your leave allocation period's start date","Na osnovu vaših pravila ljudskih resursa, odaberite datum početka perioda raspodjele odmora", +Batch Expiry Date,Datum isteka roka Šarže, +Batch No is mandatory,Broj Šarže je obavezan, +Batch No {0} does not exists,Broj Šarže {0} ne postoji, +Batch No {0} is linked with Item {1} which has serial no. Please scan serial no instead.,"Broj Šarže {0} je povezan sa artiklom {1} koji ima serijski broj. Umjesto toga, skenirajte serijski broj.", +"Batch No {0} is not present in the original {1} {2}, hence you can't return it against the {1} {2}","Broj Šarže {0} nije prisutan u originalnom {1} {2}, stoga ga ne možete vratiti naspram {1} {2}", +Batch No.,Broj Šarže, +Batch Nos,Broj Šarže, +Batch Nos are created successfully,Brojevi Šarže su uspješno kreirani, +Batch Not Available for Return,Šarža nije dostupna za povrat, +Batch Qty,Količina Šarže, +Batch and Serial No,Šarža i Serijski Broj, +Batch not created for item {} since it does not have a batch series.,Šarža nije kreirana za artikal {} jer nema Šaržu., +Batch {0} and Warehouse,Šarža {0} i Skladište, +Batch {0} is not available in warehouse {1},Šarža {0} nije dostupna u skladištu {1}, +Batchwise Valuation,Vrijednovanje na osnovu Šarže, +Beginning of the current subscription period,Početak trenutnog perioda pretplate, +Below Subscription Plans are of different currency to the party default billing currency/Company currency: {0},Planovi Pretplate u nastavku imaju različite valute u odnosu na standard valutu fakturisanja/valutu kompanije: {0}, +Bill for Rejected Quantity in Purchase Invoice,Faktura za odbijenu količinu na Kupovnoj Fakturi, +Billed Items To Be Received,Fakturisani Artikli koje treba Primiti, +"Billed, Received & Returned","Fakturisano, Primljeno & Vraćeno", +Billing Address Details,Detalji Adrese za Fakturu, +Billing Address does not belong to the {0},Faktura Adresa ne pripada {0}, +Billing Interval in Subscription Plan must be Month to follow calendar months,Faktura Interval u Planu pretplate mora biti Mjesec koji prati kalendarsk mjesec, +Bisect Accounting Statements,Prepolovi Knjigovodstveni Izvještaj, +Bisect Left,Prepolovi Lijevo, +Bisect Nodes,Prepolovi Članove, +Bisect Right,Prepolovi Desno, +Bisecting From,Prepolovi Od, +Bisecting Left ...,Polovim Lijevo..., +Bisecting Right ...,Polovim Desno..., +Bisecting To,Prepolovi Do, +Blanket Order Allowance (%),Ugovorni Nalog Dopuštenje (%), +Bom No,Broj Sastavnice, +Book Advance Payments as Liability option is chosen. Paid From account changed from {0} to {1}.,Knjižena opcija Predujam Uplate je izabrana kao Obaveza. Plaćeno Sa računa promijenjeno iz {0} u {1}., +Book Advance Payments in Separate Party Account,Knjiži Predujam Uplate na posebnom računu, +Book Tax Loss on Early Payment Discount,Proknjiži porezni gubitak na popust za prijevremeno plaćanje, +Book an appointment,Zakaži Termin, +Booking stock value across multiple accounts will make it harder to track stock and account value.,Knjiženje vrijednosti zaliha na više računa će otežati praćenje zaliha i vrijednosti računa., +Books have been closed till the period ending on {0},Knjigovodstvo je zatvoreno do perioda koji se završava {0}, +Both Payable Account: {0} and Advance Account: {1} must be of same currency for company: {2},Račun Obaveza: {0} i Račun Predujma: {1} moraju biti u istoj valuti za kompaniju: {2}, +Both Receivable Account: {0} and Advance Account: {1} must be of same currency for company: {2},Račun Prihoda: {0} i Račun Predujma: {1} moraju biti u istoj valuti za kompaniju: {2}, +Both {0} Account: {1} and Advance Account: {2} must be of same currency for company: {3},{0} Račun: {1} i Račun Predujma: {2} moraju biti u istoj valuti za kompaniju: {3}, +Budget Exceeded,Budžet Premašen, +Build All?,Kompiliraj Sve?, +Build Tree,Ažuriraj Stablo, +Buildable Qty,Količina za Proizvodnju, +Bulk Transaction Log,Zapisnik Masovnih Transakcija, +Bulk Transaction Log Detail,Zapisnik Detalja Masovnih Transakcija, +Bulk Update,Masovno Ažuriranje, +Bundle Items,Paketiraj Artikle, +Buying & Selling Settings,Postavke Kupovine & Prodaje, +Buying and Selling,Kupovina & Prodaja, +"By default, the Supplier Name is set as per the Supplier Name entered. If you want Suppliers to be named by a Naming Series choose the 'Naming Series' option.","Prema standard postavkama, Ime dobavljača je postavljeno prema unesenom imenu dobavljača. Ako želite da dobavljači budu imenovani po Imenovanje Serije odaberi opciju 'Imenovanje Serije'.", +Bypass credit check at Sales Order,Zaobiđite provjeru kreditne sposobnosti kod Prodajnog Naloga, +CANCELLED,OTKAZANO, +CC,Kopija, +CODE-39,KOD-39, +COGS By Item Group,Troškovi izrade prema Arikal Grupi, +COGS Debit,Troškovi izrade Debit, +CRM Note,Napomena Prodajne Podrške, +CRM Settings,Postavke Prodajne Podrške, +Calculate Product Bundle Price based on Child Items' Rates,Obračunaj Cijenu Paketa Proizvoda na osnovu cijena Podređenih Artikala, +Calculate daily depreciation using total days in depreciation period,Izračunaj dnevnu amortizaciju koristeći sve dane u periodu amortizacije, +Call Again,Pozovi ponovo, +Call Ended,Poziv je završen, +Call Handling Schedule,Raspored obrade poziva, +Call Received By,Poziv Primljen Od, +Call Receiving Device,Uređaj za primanje poziva, +Call Routing,Usmjeravanje Poziva, +Call Schedule Row {0}: To time slot should always be ahead of From time slot.,Raspored Poziva Red{0}: Vremenski Do termin uvek treba da bude ispred vremenskog Od termina., +Call Type,Tip poziva, +Callback,Povratni Poziv, +Campaign Item,Artikal Kampanje, +Can not close Work Order. Since {0} Job Cards are in Work In Progress state.,Ne mogu zatvoriti Radni Nalog. Budući da su {0} Kartice Poslova u stanju Radovi u Toku., +"Can not filter based on Child Account, if grouped by Account","Ne može se filtrirati na osnovu Podređenog Računa, ako je grupirano prema Računu", +"Can't change the valuation method, as there are transactions against some items which do not have its own valuation method","Ne može se promijeniti način vrijednovanja, jer postoje transakcije naspram nekih artikala koji nemaju svoj metod vrijednovanja", +Cannot Merge,Nije moguće spojiti, +Cannot Resubmit Ledger entries for vouchers in Closed fiscal year.,Nije moguće ponovo dostaviti unose u Registar za verifikate u završenoj Fiskalnoj Godini., +"Cannot amend {0} {1}, please create a new one instead.","Nije moguće izmijeniti {0} {1}, umjesto toga kreirajte novi.", +Cannot apply TDS against multiple parties in one entry,Ne može se primijeniti TDS naspram više strana u jednom unosu, +Cannot cancel as processing of cancelled documents is pending.,Nije moguće otkazati jer je obrada otkazanih dokumenata na čekanju., +Cannot cancel the transaction. Reposting of item valuation on submission is not completed yet.,Nije moguće otkazati transakciju. Ponovno knjiženje procjene vrijednosti artikla prilikom podnošenja još nije završeno., +Cannot change Reference Document Type.,Nije moguće promijeniti tip referentnog dokumenta., +Cannot complete task {0} as its dependant task {1} are not completed / cancelled.,Ne može završiti zadatak {0} jer njegov zavisni zadatak {1} nije dovršen/poništen., +Cannot convert Task to non-group because the following child Tasks exist: {0}.,Nije moguće pretvoriti Zadatak u negrupni jer postoje sljedeći podređeni Zadaci: {0}., +Cannot convert to Group because Account Type is selected.,Nije moguće pretvoriti u Grupu jer je odabran Tip Računa., +Cannot create Stock Reservation Entries for future dated Purchase Receipts.,Nije moguće kreirati Unose Rezervisanja Zaliha za buduće datume Kupovnih Priznanica., +Cannot create a pick list for Sales Order {0} because it has reserved stock. Please unreserve the stock in order to create a pick list.,Nije moguće kreirati Listu Odabira za Prodajni Nalog {0} jer ima rezervisane zalihe. Poništi rezervacije zaliha kako biste kreirali Listu Odabira., +Cannot create accounting entries against disabled accounts: {0},Nije moguće kreirati knjigovodstvene unose naspram onemogućenih računa: {0}, +Cannot delete Exchange Gain/Loss row,Nije moguće izbrisati red Dobitka/Gubitka Deviznog Kursa, +Cannot enqueue multi docs for one company. {0} is already queued/running for company: {1},Nije moguće staviti u red više dokumenata za jednu kompaniju. {0} je već u redu čekanja/pokreće se za kompaniju: {1}, +Cannot find a default warehouse for item {0}. Please set one in the Item Master or in Stock Settings.,Ne može se pronaći zadano skladište za artikal {0}. Molimo vas da postavite jedan u Postavke Artikla ili u Postavke Zaliha., +Cannot make any transactions until the deletion job is completed,Ne mogu se izvršiti nikakve transakcije dok se posao brisanja ne završi, +Cannot produce more item for {0},Ne može se proizvesti više artikala za {0}, +Cannot produce more than {0} items for {1},Ne može se proizvesti više od {0} artikla za {1}, +Cannot receive from customer against negative outstanding,Ne može se primiti od klijenta naspram negativnog nepodmirenog, +Cannot retrieve link token for update. Check Error Log for more information,Nije moguće preuzeti oznaku veze za ažuriranje. Provjerite zapisnik grešaka za više informacija, +Cannot retrieve link token. Check Error Log for more information,Nije moguće preuzeti oznaku veze. Provjerite zapisnik grešaka za više informacija, +Cannot {0} from {1} without any negative outstanding invoice,Ne može se {0} od {1} bez negativne nepodmirene fakture, +Canonical URI,Kanonski URI, +Capacity (Stock UOM),Kapacitet (Jedinica Zaliha), +Capacity in Stock UOM,Kapacitet u Jedinici Zaliha, +Capacity must be greater than 0,Kapacitet mora biti veći od 0, +Capitalization Method,Metoda Kapitalizacije, +Capitalize Asset,Kapitalizacija Imovine, +Capitalize Repair Cost,Kapitaliziraj Troškove Popravke, +Capitalized,Aktiviran, +Carrier,Dostavljač, +Carrier Service,Servis Dostavljača, +Carry Forward Communication and Comments,Prenesi Konverzaciju i Komentare, +Category Details,Detalji o Kategoriji, +Caution: This might alter frozen accounts.,Oprez: Ovo može promijeniti zamrznute račune., +Change in Stock Value,Promjena Vrijednosti Zaliha, +Changed customer name to '{}' as '{}' already exists.,Ime klijenta je promijenjeno u '{}' jer '{}' već postoji., +Changes,Promjene, +Charge of type 'Actual' in row {0} cannot be included in Item Rate or Paid Amount,Naknada tipa 'Stvarni' u redu {0} ne može se uključiti u Cijenu Artikla ili Plaćeni Iznos, +Chart Of Accounts,Kontni Plan, +Checked On,Kontrolisano, +Checking this will round off the tax amount to the nearest integer,Odabir ovoga će zaokružiti iznos PDV na najbliži cijeli broj, +Cheques and Deposits Incorrectly cleared,Čekovi i Depoziti neispravno poravnati, +Child Row Reference,Referenca za Podređeni Red, +Choose a WIP composite asset,Odaberi Posao u Toku Objedinjenu Imovinu, +Clear Demo Data,Obriši Demo Podatke, +Clear Notifications,Obriši Obavještenja, +Clearing Demo Data...,Brisanje Demo Podataka..., +Click on 'Get Finished Goods for Manufacture' to fetch the items from the above Sales Orders. Items only for which a BOM is present will be fetched.,Kliknite na 'Preuzmite Gotov Artikal za Proizvodnju' da preuzmete artikle iz gornjih Prodajnih Naloga. Preuzet će se samo artikli za koje postoji Sastavnica., +Click on Add to Holidays. This will populate the holidays table with all the dates that fall on the selected weekly off. Repeat the process for populating the dates for all your weekly holidays,Kliknite na Dodaj Praznicima. Ovo će popuniti tabelu praznika sa svim datumima koji padaju na odabrani slobodan sedmični dan. Ponovite postupak za popunjavanje datuma za sve vaše sedmićne praznike, +Click on Get Sales Orders to fetch sales orders based on the above filters.,Kliknite na Preuzmi Prodajne Naloge da preuzmete prodajne naloge na osnovu gornjih filtera., +Click to add email / phone,Kliknite da dodate e-poštu / telefon, +Close Replied Opportunity After Days,Zatvori Odgovor na Priliku nakon dana, +Closed Work Order can not be stopped or Re-opened,Zatvoreni Radni Nalog se ne može zaustaviti ili ponovo otvoriti, +Closing,Zatvaranje, +Closing Balance as per Bank Statement,Završno Stanje prema Bankovnom Izvodu, +Closing Balance as per ERP,Završno Stanje prema Sistemu, +Code List,Lista Kodova, +Columns are not according to template. Please compare the uploaded file with standard template,Kolone nisu prema šablonu. Molimo uporedite otpremljenu datoteku sa standardnim šablonom, +Common Code,Zajednički Kod, +Communication Channel,Kanal Konverzacije, +Company Address Display,Prikaz Adrese Kompanije, +Company Billing Address,Faktura Adresa Kompanije, +Company Contact Person,Kontakt Osoba Kompaniju, +Company Details,Detalji o Kompaniji, +Company Shipping Address,Dostavna Adresa Kompanije, +Company Tax ID,Fiskalni Broj Kompanije, +Company and Posting Date is mandatory,Kompanija i Datum Knjiženja su obavezni, +Company is mandatory,Kompanija je obavezna, +Company is mandatory for generating an invoice. Please set a default company in Global Defaults.,Kompanija je obavezna za generisanje fakture. Molimo postavite standard kompaniju u Globalnim Postavkama., +Company which internal customer represents,Kompanija koju predstavlja interni Klijent, +Company which internal customer represents.,Kompanija koju predstavlja interni Klijent., +Company which internal supplier represents,Kompanija koju predstavlja interni Dobavljač, +Company {0} added multiple times,Kompanija {0} dodana više puta, +Company {0} is added more than once,Kompanija {0} je dodana više puta, +Company {} does not exist yet. Taxes setup aborted.,Kompanija {} još ne postoji. Postavljanje poreza je prekinuto., +Company {} does not match with POS Profile Company {},Kompanija {} se ne podudara s Kasa Profilom Kompanije {}, +Competitor,Konkurent, +Competitor Detail,Detalji o Konkurentu, +Competitor Name,Ime Konkurenta, +Competitors,Konkurenti, +Complete Job,Završi Posao, +Complete Order,Završi Nalog, +Completed On,Završeno, +Completed On cannot be greater than Today,Proizvedeno dana ne može biti kasnije od danas, +Completed Tasks,Prizvodni Zadaci, +Completed Time,Vrijeme Obrade, +Completion Date can not be before Failure Date. Please adjust the dates accordingly.,Datum Završetka ne može biti prije Datuma Kvara. Molimo prilagodite datume prema tome., +Conditional Rule,Uslovno Pravilo, +Conditional Rule Examples,Primjeri Uvjetnih Pravila, +Configure Product Assembly,Konfiguriši Proizvodnju Artikla, +Configure the action to stop the transaction or just warn if the same rate is not maintained.,Konfiguriši akciju za zaustavljanje transakcije ili samo upozorite ako se ista stopa marže ne održava., +Connections,Veze, +Consider Entire Party Ledger Amount,Uzmi u obzir cjelokupni iznos Knjigovodstvenog Registra Stranke, +Consider Minimum Order Qty,Uzmi u obzir Minimalnu Količinu Naloga, +Consider Rejected Warehouses,Uzmi u obzir Odbijena Skladišta, +Considered In Paid Amount,Uzmi u obzir Uplaćeni Iznos, +Consolidate Sales Order Items,Objedini Artikle Prodajnog Naloga, +Consolidate Sub Assembly Items,Objedini Artikle Podsklopa, +Consumed Asset Total Value,Ukupna vrijednost Potrošene Imovine, +Consumed Assets,Potrošena Imovina, +Consumed Quantity,Potrošena Količina, +Consumed Stock Items,Potrošeni Artikli Zaliha, +Consumed Stock Items or Consumed Asset Items are mandatory for creating new composite asset,Potrošeni Artikli Zalihe ili Potrošeni Artikli Imovine su obavezni za kreiranje nove objedinjene imovine, +"Consumed Stock Items, Consumed Asset Items or Consumed Service Items is mandatory for Capitalization","Potrošeni Artikli Zalihe, Potrošene Artikli Imovine ili Potrošeni Servisni Artikli su obavezne za Kapitalizaciju", +Consumed Stock Total Value,Ukupna Vrijednost Potrošenih Zaliha, +Consumption Rate,Stopa Potrošnje, +Contact Details,Kontakt Detalji, +Contact Mobile,Mobilni Broj Kontakta, +Contact Person does not belong to the {0},Kontakt Osoba ne pripada {0}, +Contact Us Settings,Postavke Kontaktirajte Nas, +Contacts,Kontakti, +Contract Template Help,Pomoć za Šablon Ugovora, +Contribution Qty,Količinski Doprinos, +Control Historical Stock Transactions,Kontroliši Prijašnje Transakcije Zaliha, +Conversion factor for item {0} has been reset to 1.0 as the uom {1} is same as stock uom {2}.,Faktor pretvaranja za artikal {0} je resetovan na 1.0 jer je jedinica {1} isti kao jedinica zalihe {2}., +Conversion rate cannot be 0,Stopa konverzije ne može biti 0, +"Conversion rate is 1.00, but document currency is different from company currency","Stopa konverzije je 1,00, ali valuta dokumenta se razlikuje od valute kompanije", +Conversion rate must be 1.00 if document currency is same as company currency,"Stopa konverzije mora biti 1,00 ako je valuta dokumenta ista kao valuta kompanije", +Convert Item Description to Clean HTML in Transactions,Pretvori Opis Artikla u čisti HTML u Transakcijama, +Convert to Group,Pretvori u Grupu,Warehouse +Convert to Item Based Reposting,Pretvori u Ponovno Knjiženje na osnovu Artikla, +Convert to Ledger,Pretvori u Registar,Warehouse +Core,Sistem, +Corrective Job Card,Kartica za Korektivni Posao, +Corrective Operation,Korektivna Operacija, +Corrective Operation Cost,Troškovi Korektivne Operacije, +Cost Center Allocation,Dodjela Centra Troškova, +Cost Center Allocation Percentage,Procenat Alokacije Centra Troškova, +Cost Center Allocation Percentages,Procenti Alokacije Centara Troškova, +Cost Center for Item rows has been updated to {0},Centar Troškova za artikal redove je ažuriran na {0}, +"Cost Center is a part of Cost Center Allocation, hence cannot be converted to a group","Centar Troškova je dio dodjele Centra Troškova, stoga se ne može konvertirati u grupu", +Cost Center with Allocation records can not be converted to a group,Centar Troškova sa zapisima dodjele ne može se pretvoriti u grupu, +Cost Center {0} cannot be used for allocation as it is used as main cost center in other allocation record.,Centar Troškova {0} ne može se koristiti za dodjelu jer se koristi kao matični centar troškova u drugom zapisu dodjele., +Cost Center {} doesn't belong to Company {},Centar Troškova {} ne pripada Kompaniji {}, +Cost Center {} is a group cost center and group cost centers cannot be used in transactions,Centar Troškova {} je grupni centar troškova a grupni centri troškova ne mogu se koristiti u transakcijama, +Cost Configuration,Konfiguracija Troškova, +Cost Per Unit,Trošak po Jedinici, +Cost of Poor Quality Report,Izvještaj o Troškovima Lošeg Kvaliteta, +Cost to Company (CTC),Totalni Godišnji Troškovi (CTC), +Costing Details,Detalji Obračuna Troškova, +Could Not Delete Demo Data,Nije moguće izbrisati demo podatke, +Could not auto update shifts. Shift with shift factor {0} needed.,Nije moguće automatsko ažuriranje smjena. Smjena sa faktorom smjene {0} je obavezna., +Could not detect the Company for updating Bank Accounts,Nije moguće otkriti kompaniju za ažuriranje Bankovnih Računa, +Could not find path for ,Nije moguće pronaći put za , +Count,Brojanje, +Create Depreciation Entry,Kreiraj Unos Amortizacije, +Create Employee records.,Kreiraj Personalni Registar, +Create Grouped Asset,Kreiraj Grupiranu Imovinu, +Create Job Card based on Batch Size,Kreiraj Radni Nalog na osnovu veličine Šarže, +Create Journal Entries,Kreiraj Naloge Knjiženja, +Create Ledger Entries for Change Amount,Kreiraj Unose u Registar za Kusur, +Create Link,Kreiraj vezu, +Create Multi-level BOM,Kreiraj višeslojnu Sastavnicu, +Create New Customer,Kreiraj Novog Klijenta, +Create Opportunity,Kreiraj Priliku, +Create Prospect,Kreiraj Prospekt, +Create Reposting Entries,Kreiraj Unose Ponovnog Knjiženja, +Create Reposting Entry,Kreiraj Unos Ponovnog Knjiženja, +Create Stock Entry,Kreiraj unos Zaliha, +Create Workstation,Kreiraj Radnu Stanicu, +Create a new composite asset,Kreiraj novu složenu imovinu, +Create a variant with the template image.,Kreiraj Varijantu sa slikom šablona., +Create in Draft Status,Kreiraj u Statusu Nacrta, +Create {0} {1} ?,Kreiraj {0} {1}?, +Created On,Kreirano, +Created {0} scorecards for {1} between:,Kreirano {0} tablica bodova za {1} između:, +Creating Delivery Note ...,Kreiranje Otpremnice u toku..., +Creating Journal Entries...,Kreiranje Naloga Knjiženja u toku..., +Creating Packing Slip ...,Kreiranje Otpremnice u toku..., +Creating Purchase Invoices ...,Kreiranje Kupovnih Faktura u toku..., +Creating Purchase Receipt ...,Kreiranje Kupovnog Računa u toku..., +Creating Sales Invoices ...,Kreiranje Prodajne Faktura u toku..., +Creating Stock Entry,Kreiranje Unosa Zaliha u toku..., +Creating Subcontracting Order ...,Kreiranje Podugovornog Naloga u toku..., +Creating Subcontracting Receipt ...,Kreiranje Podugovorne Priznanice u toku..., +Creating User...,Kreiranje Korisnika u toku..., +Creation,Kreacija, +Creation of {1}(s) successful,Kreiranje {1}(s) uspješno, +"Creation of {0} failed. + Check Bulk Transaction Log","Kreiranje {0} nije uspjelo. + Provjerite Zapisnik Masovnih Transakcija", +"Creation of {0} partially successful. + Check Bulk Transaction Log","Kreiranje {0} nije uspjelo. + Provjerite Zapisnik Masovnih Transakcija", +Credit (Transaction),Kredit (Transakcija), +Credit Amount in Transaction Currency,Kreditni Iznos u Valuti Transakcije, +Credit Limit Crossed,Kreditno Ograničenje je probijeno, +Credit Limit Settings,Postavke Kreditnog Ograničenja, +"Credit Note will update it's own outstanding amount, even if 'Return Against' is specified.","Kreditna Faktura će ažurirati svoj nepodmireni iznos, čak i ako je navedeno 'Povrat Naspram'.", +Cron Interval should be between 1 and 59 Min,Cron interval bi trebao biti između 1 i 59 min, +Currency Exchange Settings Details,Detalji Postavki Razmjene Valuta, +Currency Exchange Settings Result,Rezultat Postavki Razmjene Valuta, +Current Asset,Trenutna Imovina, +Current Index,Trenutni Index, +Current Level,Trenutni Nivo, +Current Liability,Tekuće Obaveza, +Current Node,Trenutni Čvor, +Current Serial / Batch Bundle,Trenutni Serijski / Šarža Paket, +Custom,Prilagođeno, +Custom delimiters,Prilagođeni Razdjelnici, +Customer ,Klijent , +Customer / Item / Item Group,Klijent / Artikal / Artikal Grupa, +Customer Defaults,Standard Postavke Klijenta, +Customer Group Item,Artikal Grupa Klijenta, +Customer Group: {0} does not exist,Grupa Klijenta: {0} ne postoji, +Customer Item,Artikal Klijenta, +Customer Name: ,Ime Klijenta: , +Customer Portal Users,Korisnici Portala za Korisnike, +Customer: ,Klijent: , +Daily Time to send,Dnevno vrijeme za slanje, +Dashboard,Nadzorna Tabla, +Data Based On,Podatci na osnovu, +Date ,Datum , +Date must be between {0} and {1},Datum mora biti između {0} i {1}, +Dates,Datumi, +Days before the current subscription period,Dana prije trenutnog perioda pretplate, +DeLinked,Odspojen, +Deal Owner,Odgovorni, +Debit (Transaction),Debit (Transakcija), +Debit Amount in Transaction Currency,Debit Iznos u Valuti Transakcije, +"Debit Note will update it's own outstanding amount, even if 'Return Against' is specified.","Debit Faktura će ažurirati svoj nepodmireni iznos, čak i ako je navedeno 'Povrat Naspram'.", +Debit-Credit Mismatch,Debit-Kredit je neusklađeno, +Debit-Credit mismatch,Debit-Kredit je neusklađeno, +Default Advance Account,Standard Račun Predujma, +Default Advance Paid Account,Standard Račun za Predujam Plaćanje, +Default Advance Received Account,Standard Račun za Predujam Plaćanje, +Default BOM not found for FG Item {0},Standard Sastavnica nije pronađena za Artikal Gotovog Proizvoda {0}, +Default Common Code,Standard Zajednički Kod, +Default Discount Account,Standard Račun za Popust, +Default In-Transit Warehouse,Standard Transportno Skladište, +Default Operating Cost Account,Standard Račun Operativnih Troškova, +Default Payment Discount Account,Standard Račun Popusta, +Default Provisional Account,Standard Privremeni Račun, +Default Service Level Agreement for {0} already exists.,Ugovor Standard Nivo Servisa za {0} već postoji., +Default Unit of Measure for Item {0} cannot be changed directly because you have already made some transaction(s) with another UOM. You need to either cancel the linked documents or create a new Item.,Standard Jedinica za artikal {0} ne može se promijeniti direktno jer ste već izvršili neke transakcije sa drugom Jedinicom. Morate ili otkazati povezane dokumente ili kreirati novi artikal., +Default settings for your stock-related transactions,Standard postavke za vaše transakcije vezane za zalihe, +"Default tax templates for sales, purchase and items are created.","Standard šabloni PDV-a za prodaju, kupovinu i artikle su kreirani.", +Deferred Accounting,Odloženo Knjigovodstvo, +Deferred Accounting Defaults,Standard Odloženog Knjigovodstva, +Deferred Revenue and Expense,Odgođeni Prihodi i Rashodi, +Deferred accounting failed for some invoices:,Odgođeno knjigovodstvo nije uspjelo za neke fakture:, +Delay (In Days),Kašnjenje (u danima), +Delayed,Odgođeno, +Delayed Tasks Summary,Sažetak Odgođenih Zadataka, +Delete Accounting and Stock Ledger Entries on deletion of Transaction,Izbriši unose Knjigovodstva i Registra Zaliha pri brisanju Transakcije, +Delete Bins,Izbriši iz Smeća, +Delete Cancelled Ledger Entries,Izbrišite poništene unose iz Registra, +Delete Dimension,Izbriši Dimenziju, +Delete Leads and Addresses,Izriši Potencijalne Klijente i Adrese, +Delete Transactions,Izbriši Transakcije, +Deleted Documents,Izbrisani dokumenti, +Deleting {0} and all associated Common Code documents...,Brisanje {0} u toku i svih povezanih dokumenata Zajedničkog Koda..., +Deletion in Progress!,Brisanje u toku!, +Delimiter options,Opcije Razdjelnika, +Delivery Manager,Upravitelj Dostave, +Delivery Note Packed Item,Paket Artikal Dostavnice, +Delivery User,Korisnik Dostave, +Delivery to,Dostava do, +Demand,Potražnja, +Demo Company,Demo Kompanija, +Demo data cleared,Demo podaci su obrisani, +Dependant SLE Voucher Detail No,Zavisni SLE Verifikat Broj, +Dependent Task {0} is not a Template Task,Zavisni Zadatak {0} nije Šablon Zadatak, +Deposit,Depozit, +Depreciate based on daily pro-rata,Amortizacija na osnovu dnevnih proporcija, +Depreciate based on shifts,Amortizacija na osnovu Smjena, +Depreciation Details,Detalji Amortizacije, +Depreciation Entry Posting Status,Status Knjiženja Unosa Amortizacije, +Depreciation Expense Account should be an Income or Expense Account.,Račun Troškova Amortizacije treba da bude račun Prihoda ili Rashoda., +Depreciation Posting Date cannot be before Available-for-use Date,Datum knjiženja amortizacije ne može biti prije Datuma raspoloživosti za upotrebu, +Depreciation Row {0}: Depreciation Posting Date cannot be before Available-for-use Date,Amortizacija Red {0}: Datum knjiženja amortizacije ne može biti prije datuma raspoloživosti za upotrebu, +Depreciation Schedule View,Pregled Rasporeda Amortizacije, +Depreciation cannot be calculated for fully depreciated assets,Amortizacija se ne može obračunati za potpuno amortizovanu imovinu, +Depreciation eliminated via reversal,Amortizacija eliminirana storniranjem, +Description of Content,Opis Sadržaja, +Desk User,Korisnik Radne Površine, +Difference In,Razlika u, +Difference Posting Date,Datum Knjiženja Razlike, +Difference Qty,Količinska Razlika, +Different 'Source Warehouse' and 'Target Warehouse' can be set for each row.,Za svaki red se mogu postaviti različiti 'Izvorno skladište' i 'Ciljano Skladište'., +Dimension Details,Detalji Dimenzije, +Dimension Filter Help,Pomoć Filter Dimenzije, +Dimension-wise Accounts Balance Report,Izvještaj o stanju računa po dimenzijama, +Dimensions,Dimenzije, +Direct Expense,Direktni Troškak, +Disable Last Purchase Rate,Onemogući posljednju Kupovnu Cijenu, +Disable Serial No And Batch Selector,Onemogući Serijski i Šaržni Odabirač, +Disable auto setting Grand Total to default Payment Mode,Onemogući automatsko postavljanje ukupnog iznosa za standard način plaćanja, +Disabled Account Selected,Odabran je onemogućen Račun, +Disabled Warehouse {0} cannot be used for this transaction.,Onemogućeno Skladište {0} se ne može koristiti za ovu transakciju., +Disabled pricing rules since this {} is an internal transfer,Onemogućena pravila određivanja cijena jer je ovo {} interni prijenos, +Disabled tax included prices since this {} is an internal transfer,Cijene bez PDV budući da je ovo {} interni prijenos, +Disables auto-fetching of existing quantity,Onemogućuje automatsko preuzimanje postojeće količine, +Disassemble,Rastavi, +Disassemble Order,Nalog Rastavljanja, +Discount Account,Račun Popusta, +Discount Date,Datum Popusta, +Discount Settings,Postavke Popusta, +Discount Validity,Valjanost Popusta, +Discount Validity Based On,Valjanost Popusta na osnovu, +Discount cannot be greater than 100%.,Popust ne može biti veći od 100%., +Discount of {} applied as per Payment Term,Popust od {} se primjenjuje prema Uslovima Plaćanja, +Discounted Amount,Iznos Popusta, +"Discounts to be applied in sequential ranges like buy 1 get 1, buy 2 get 2, buy 3 get 3 and so on","Popusti koji se primjenjuju u uzastopnim rasponima kao što je kupiš1 dobiješ 1, kupiš 2 dobiješ 2, kupiš 3 dobiješ 3 i tako dalje", +Discrepancy between General and Payment Ledger,Nesklad između Knjigovodstvenog Registra i Registra Plaćanja, +Dispatch Address,Otpremna Adresa, +Dispatch Address Name,Naziv Otpremne Adrese, +Distinct Item and Warehouse,Posebni Artikal i Skladište, +Distribute Additional Costs Based On ,Raspodijeli dodatne troškove na osnovu , +Distribute Manually,Raspodjeli Ručno, +Do Not Explode,Ne Rastavljati, +Do Not Update Serial / Batch on Creation of Auto Bundle,Ne ažuriraj Serijski / Šaržu pri kreiranju Automatskog Paketa, +Do Not Use Batch-wise Valuation,Ne koristi Šaržno Vrijednovanje, +Do reposting for each Stock Transaction,Uradi Ponovno Knjiženje za svaku transakciju Zaliha, +Do you still want to enable immutable ledger?,Želite li i dalje omogućiti nepromjenjivo knjigovodstvo?, +Do you still want to enable negative inventory?,Želite li i dalje omogućiti negativne zalihe?, +DocField,Dokument Polje, +DocTypes should not be added manually to the 'Excluded DocTypes' table. You are only allowed to remove entries from it.,DocTypes ne treba dodati ručno u tablicu 'Izuzeti DocTypes'. Dozvoljeno vam je samo ukloniti unose iz njega., +Document Type already used as a dimension,Tip dokumenta se već koristi kao dimenzija, +Documents,Dokumenti, +Documents Processed on each trigger. Queue Size should be between 5 and 100,Dokumenti se obrađuju na svakom okidaču. Veličina Reda treba biti između 5 i 100, +Documents: {0} have deferred revenue/expense enabled for them. Cannot repost.,Dokumenti: {0} imaju omogućene odgođene prihode/rashode. Ne mogu ponovo objaviti., +Domain Settings,Postavke Domene, +Don't Enforce Free Item Qty,Ne nameći Besplatnu Količinu Artikla, +Don't Reserve Sales Order Qty on Sales Return,Ne rezerviši Količinu Prodajnog Naloga na povratu Prodaje, +Don't Send Emails,Ne šalji e-poštu, +Dont Recompute tax,Ne obračunavaj ponovo PDV, +Download Backups,Preuzmi Sigurnosne Kopije, +Download CSV Template,Preuzmite CSV Šablon, +Download PDF for Supplier,Preuzmite PDF za Dobavljača, +Dunning Amount (Company Currency),Iznos Opomene (Valuta Kompanije), +Dunning Level,Nivo Opomene, +Duplicate Customer Group,Kopiraj Grupa Klijenta, +Duplicate Finance Book,Kopiraj Finansijski Registar, +Duplicate Item Group,Kopiraj Grupu Artikla, +Duplicate POS Invoices found,Pronađene su kopije Kasa Faktura, +Dynamic Condition,Dinamički Uvjet, +Edit Capacity,Uredi Kapacitet, +Edit Cart,Uredi Korpu, +Edit Full Form,Uredi Punu Formu, +Edit Note,Uredi Bilješku, +Editing {0} is not allowed as per POS Profile settings,Uređivanje {0} nije dozvoljeno prema postavkama profila Kase, +Either 'Selling' or 'Buying' must be selected,Morate odabrati 'Prodaju' ili 'Kupovinu', +Email / Notifications,E-pošta / Obavjesti, +Email Address (required),Adresa E-pošte (obavezno), +"Email Address must be unique, it is already used in {0}","Adresa e-pošte mora biti unikat, već se koristi u {0}", +Email Digest Recipient,Primatelj sažetka e-pošte, +Email Digest: {0},Sažetak e-pošte: {0}, +Email Domain,Domena e-pošte, +Email Receipt,E-pošta, +Email or Phone/Mobile of the Contact are mandatory to continue.,E-pošta ili Telefon/Mobilni Telefon kontakta su obavezni za nastavak., +Email verification failed.,Verifikacija e-pošte nije uspjela., +Employee User Id,Korisnički ID Personala, +Employee {0} is currently working on another workstation. Please assign another employee.,{0} trenutno radi na drugoj radnoj stanici. Dodijeli drugi personal., +Enable Allow Partial Reservation in the Stock Settings to reserve partial stock.,Omogući Dozvoli Djelomičnu Rezervaciju u Postavkama Zaliha da rezervišete djelomične zalihe., +Enable Automatic Party Matching,Omogući Automatsko Poravnanje Stranaka, +Enable Common Party Accounting,Omogući Zajedničko Knjigovodstvo Stranki, +Enable Discount Accounting for Selling,Omogući Knjigovodstvo Prodajnog Popusta, +Enable Fuzzy Matching,Omogući nejasno podudaranje, +Enable Health Monitor,Omogući Nadgledanje Sistema, +Enable Immutable Ledger,Omogući Nepromjenjivo Knjigovodstvo, +Enable Provisional Accounting For Non Stock Items,Omogući Privremeno Knjigovodstvo za Artikle za koje se nevode Zalihe, +Enable Stock Reservation,Omogući Rezervaciju Zaliha, +Enable it if users want to consider rejected materials to dispatch.,Omogući ako korisnici žele da uzmu u obzir odbijene materijale za slanje., +Enable this checkbox even if you want to set the zero priority,Omogući ovo polje ako želite da postavite nulti prioritet, +"Enable this option to calculate daily depreciation by considering the total number of days in the entire depreciation period, (including leap years) while using daily pro-rata based depreciation",Omogući ovu opciju za izračunavanje dnevne amortizacije uzimajući u obzir ukupan broj dana u cijelom periodu amortizacije (uključujući prijestupne godine) dok koristite dnevnu proporcionalnu amortizaciju, +Enable to apply SLA on every {0},Omogući primjenu Standardnog Nivoa Servisa na svaki {0}, +Enabling this ensures each Purchase Invoice has a unique value in Supplier Invoice No. field within a particular fiscal year,Omogućavanje ovoga osigurava da svaka Kupovna Faktura ima jedinstvenu vrijednost u polju Broj Fakture Dobavljača unutar određene fiskalne godine, +Enabling this option will allow you to record -

1. Advances Received in a Liability Account instead of the Asset Account

2. Advances Paid in an Asset Account instead of the Liability Account,Omogućavanje ove opcije omogućit će vam zapisivanje -

1. Predujam primljen na Račun Obaveza umjesto na Račun Imovine

2. Predujam uplaćen na Račun Imovine umjesto na Račun Obaveza, +Enabling this will allow creation of multi-currency invoices against single party account in company currency,Omogućavanje će omogućiti kreiranje viševalutnih faktura naspram računa jedne stranke u valuti kompanije, +Enabling this will change the way how cancelled transactions are handled.,"Omogući, promijenit će se način na koji se postupa s otkazanim transakcijama.", +End Transit,Završi Tranzit, +End of the current subscription period,Kraj trenutnog perioda pretplate, +"Enter First and Last name of Employee, based on Which Full Name will be updated. IN transactions, it will be Full Name which will be fetched.","Unesi ime i prezime zaposlenog, na osnovu koje puno ime će biti ažurirano. U transakcijama, to će biti puno ime koje će se preuzeti.", +Enter Manually,Unesi Ručno, +Enter Serial Nos,Unesi Serijske Brojeve, +Enter Visit Details,Unesi Detalje Posjete, +Enter a name for Routing.,Unesi Naziv za Redoslijed Operacija., +"Enter a name for the Operation, for example, Cutting.","Unesi naziv za Operaciju, na primjer, Rezanje.", +Enter a name for this Holiday List.,Unesi naziv za ovu Listu Praznika., +"Enter an Item Code, the name will be auto-filled the same as Item Code on clicking inside the Item Name field.","Unesi Kod Artikla, ime će se automatski popuniti isto kao kod artikla kada kliknete unutar polja Naziv Artikla.", +Enter each serial no in a new line,Unesi svaki serijski broj u novi red, +"Enter the Operation, the table will fetch the Operation details like Hourly Rate, Workstation automatically. + + After that, set the Operation Time in minutes and the table will calculate the Operation Costs based on the Hourly Rate and Operation Time.","Unesi Operaciju, tabela će automatski preuzeti detalje Operacije kao što su Satnica, Radna Stanica. + + Nakon toga postavite vrijeme Operacije u minutama i tabela će izračunati troškove Operacije na temelju Satnice i vremena Operacije.", +Enter the opening stock units.,Unesi početne jedinice zaliha., +Enter the quantity of the Item that will be manufactured from this Bill of Materials.,Unesi količinu artikla koja će biti proizvedena iz ovog Spiska Materijala., +Enter the quantity to manufacture. Raw material Items will be fetched only when this is set.,Unesi količinu za proizvodnju. Artikal sirovina će se preuzimati samo kada je ovo podešeno., +Error during caller information update,Greška tokom ažuriranja informacija o pozivaocu, +Error in party matching for Bank Transaction {0},Greška u podudaranju stranaka za Bankovnu Transakciju {0}, +Error while posting depreciation entries,Greška prilikom knjiženja unosa amortizacije, +Error while processing deferred accounting for {0},Greška prilikom obrade odgođenog knjiženja za {0}, +Error while reposting item valuation,Greška prilikom ponovnog knjiženja vrijednosti artikla, +"Error: This asset already has {0} depreciation periods booked. + The `depreciation start` date must be at least {1} periods after the `available for use` date. + Please correct the dates accordingly.","Greška: Ova imovina već ima {0} periode amortizacije. + Datum `početka amortizacije` mora biti najmanje {1} perioda nakon datuma `dostupno za upotrebu`. + Molimo ispravite datume u skladu s tim.", +Errors Notification,Obavjest o Greškama, +Even invoices with apply tax withholding unchecked will be considered for checking cumulative threshold breach,Čak i fakture s neprovjerenim PDV po odbitku će se uzeti u obzir za provjeru kumulativnog prekoračenja praga, +Event,Događaj, +Example URL,Primjer URL-a, +Example of a linked document: {0},Primjer povezanog dokumenta: {0}, +"Example: ABCD.##### +If series is set and Serial No is not mentioned in transactions, then automatic serial number will be created based on this series. If you always want to explicitly mention Serial Nos for this item. leave this blank.","Primjer: ABCD.##### +Ako je serija postavljena, a serijski broj nije postavljen u transakcijama, tada će se automatski serijski broj kreirati na osnovu ove serije. Ako uvijek želite eksplicitno postaviti serijske brojeve za ovaj artikal ostavite ovo prazno.", +Example: Serial No {0} reserved in {1}.,Primjer: Serijski Broj {0} je rezervisan u {1}., +Excess Materials Consumed,Višak Potrošenog Materijala, +Excess Transfer,Prenos Viška, +Exchange Gain / Loss,Rezultat Deviznog Kursa, +Exchange Gain Or Loss,Rezultat Deviznog Kursa, +Exchange Gain/Loss amount has been booked through {0},Iznos Rezultata Deviznog Kursa je knjižen preko {0}, +Exchange Rate Revaluation Settings,Postavke Revalorizacije Deviznog Kursa, +Excluded DocTypes,Izuzeti DocTypes, +Exempt Supplies,Izuzete Zalihe, +Exit Full Screen,Izađi iz Cijelog Ekrana, +Expected,Očekivan, +Expected Balance Qty,Očekivano Količinsko Stanje, +Expected End Date should be less than or equal to parent task's Expected End Date {0}.,Očekivani datum završetka bi trebao biti prije ili jednak očekivanom datumu završetka nadređenog zadatka {0}., +Expected Stock Value,Očekivana Vrijednost Zaliha, +Expected Time Required (In Mins),Očekivano Potrebno Vrijeme (u minutama), +Expiry,Istek Roka, +Export Data,Izvezi podatke, +Export Errored Rows,Izvezi redove s greškom, +Export Import Log,Zapisnik Uvoza i Izvoza, +Extra Consumed Qty,Dodatno Potrošena Količina, +Extra Job Card Quantity,Dodatna Količina Radnog Naloga, +FIFO Queue vs Qty After Transaction Comparison,Poređenje FIFO reda u odnosu na Količinu Nakon Transakcije, +"FIFO Stock Queue (qty, rate)","FIFO red Zaliha (količina, cjena)", +FIFO/LIFO Queue,FIFO/LIFO red čekanja, +Failed Entries,Neuspješni Unosi, +"Failed to erase demo data, please delete the demo company manually.","Brisanje demo podataka nije uspjelo, izbrišite demo kompaniju ručno.", +Failed to post depreciation entries,Neuspješan unos amortizacije, +Failed to setup defaults for country {0}. Please contact support.,Neuspješno postavljanje standard postavki za zemlju {0}. Kontaktiraj podršku., +Failure,Neuspjeh, +Failure Description,Opis Kvara, +Fetch Based On,Preuzmi na osnovu, +Fetch Overdue Payments,Preuzmi Dospjela Plaćanja, +Fetch Timesheet,Preuzmi Radni List, +Fetch Timesheet in Sales Invoice,Preuzmi Radni List u Fakturu Prodaje, +Fetch Value From,Preuzmi Vrijednost od, +Fetching Error,Greška pri Preuzimanju, +Fetching exchange rates ...,Preuzimaju se Devizni Kursevi..., +Filter by Reference Date,Filtriraj po Referentnom Datumu, +Filter on Invoice,Filtrer na Fakturi, +Filter on Payment,Filter na Plaćanju, +Filters missing,Nedostaju Filteri, +Final Product,Finalni Proizvod, +Financial Ratios,Finansijski Pokazatelji, +Financial Reports,Izvještaji, +Financial Year Begins On,Finansijska Godina počinje, +Financial reports will be generated using GL Entry doctypes (should be enabled if Period Closing Voucher is not posted for all years sequentially or missing) ,Finansijski izvještaji će se generirati korištenjem doctypes Knjgovodstvenog Unosa (trebalo bi biti omogućeno ako se verifikat za zatvaranje perioda nije objavljen za sve godine uzastopno ili nedostaje) , +Finished Good BOM,Sastavnica Gotovog Proizvoda, +Finished Good Item,Artikal Gotovog Proizvoda, +Finished Good Item Qty,Količina Artikla Gotovog Proizvoda, +Finished Good Item Quantity,Količina Artikla Gotovog Proizvoda, +Finished Good Item is not specified for service item {0},Artikal Gotovog Proizvoda nije naveden za servisni artikal {0}, +Finished Good Item {0} Qty can not be zero,Količina Artikla Gotovog Proizvoda {0} ne može biti nula, +Finished Good Item {0} must be a sub-contracted item,Artikal Gotovog Proizvoda {0} mora biti podugovoreni artikal, +Finished Good Qty,Količina Gotovog Proizvoda, +Finished Good Quantity ,Količina Gotovog Proizvoda, +Finished Good UOM,Jedinica Gotovog Proizvoda, +Finished Good {0} does not have a default BOM.,Gotov Proizvod {0} nema standard Sastavnicu., +Finished Good {0} is disabled.,Gotov Proizvod {0} je onemogućen., +Finished Good {0} must be a stock item.,Gotov Proizvod {0} mora biti artikal na Zalihama., +Finished Good {0} must be a sub-contracted item.,Gotov Proizvod {0} mora biti podizvođački artikal., +Finished Goods Based Operating Cost,Operativni troškovi zasnovani na Gotovom Proizvodu, +Finished Goods Item,Gotov Proizvod Artikal, +Finished Goods Reference,Referenca za Gotov Proizvod, +Finished Goods Value,Vrijednost Gotovog Proizvoda, +Finished Goods based Operating Cost,Operativni troškovi zasnovani na Gotovom Proizvodu, +Finished Item {0} does not match with Work Order {1},Gotov Proizvod {0} ne odgovara Radnom Nalogu {1}, +First Response Due,Rok za Prvi Odgovor, +First Response SLA Failed by {},Standard Nivo Servisa prvog odgovora nije uspio od strane {}, +Fixed Asset Defaults,Standard Postavke Fiksne Imovine, +Fixed Time,Fiksno Vrijeme, +Floor,Sprat, +Floor Name,Naziv Sprata, +For Item,Za Artikal, +For Item {0} cannot be received more than {1} qty against the {2} {3},Za Artikal {0} ne može se primiti više od {1} količine naspram {2} {3}, +For Job Card,Za Radnu Karticu, +For Operation,Za Operaciju, +"For Return Invoices with Stock effect, '0' qty Items are not allowed. Following rows are affected: {0}","Za Povratne Fakture sa efektom zaliha, '0' u količina Artikla nisu dozvoljeni. Ovo utiče na sledeće redove: {0}", +For Work Order,Za Radni Nalog, +For dunning fee and interest,Za Naknadu Opomene i Kamatu, +"For item {0}, rate must be a positive number. To Allow negative rates, enable {1} in {2}","Za artikal {0}, cijena mora biti pozitivan broj. Da biste omogućili negativne cijene, omogućite {1} u {2}", +For quantity {0} should not be greater than allowed quantity {1},Za količinu {0} ne bi trebalo da bude veća od dozvoljene količine {1}, +"For the item {0}, the quantity should be {1} according to the BOM {2}.","Za artikal {0}, količina bi trebala biti {1} prema Sastavnici {2}.", +"For the {0}, no stock is available for the return in the warehouse {1}.",Za {0} nema raspoloživih zaliha za povrat u skladištu {1}., +"For the {0}, the quantity is required to make the return entry","Za {0}, količina je obavezna za unos povrata", +Force-Fetch Subscription Updates,Primoraj Preuzmanja Ažuriranja Pretplate, +Forecast,Prognoza, +Forecasting,Prognoza, +Formula Based Criteria,Kriterijumi Zasnovani na Formuli, +Free Item Rate,Cijena Besplatnog Artikla, +From Corrective Job Card,Iz Popravnog Radnog Naloga, +From Date and To Date are mandatory,Od datuma i do datuma su obavezni, +From Date is mandatory,Od datuma je obavezno, +From Date: {0} cannot be greater than To date: {1},Od datuma: {0} ne može biti kasnije od Do datuma: {1}, +From Delivery Date,Od Datuma Dostave, +From Doctype,Iz Doctype, +From Due Date,Od Datuma Dospijeća, +From Opportunity,Iz Prilike, +From Payment Date,Od Datuma Plaćanja, +From Prospect,Iz Prospekta, +From Reference Date,Od Referentnog Datuma, +From Voucher Detail No,Od Detalja Verifikata Broj, +From Voucher No,Od Verifikata Broj, +From Voucher Type,Od Tipa Verifikata, +From and To dates are required,Od i Do Datumi su obavezni, +Full Screen,Cijeli Ekran, +Full and Final Statement,Potpuna i Konačna Izjava, +GL Balance,Stanje Knjigovodstvenog Registra, +GL Entry Processing Status,Status Obrade Unosa u Knjigovodstveni Registar, +GL reposting index,Knjigovodstveni Registar Indeks ponovnog knjiženja, +Gain/Loss accumulated in foreign currency account. Accounts with '0' balance in either Base or Account currency,Rezultat akumuliran na deviznom računu. Računi sa stanjem '0' u osnovnoj ili valuti računa, +Gain/Loss already booked,Rezultat je već uknjižen, +Gain/Loss from Revaluation,Rezultat od Revalorizacije, +General Ledger,Registar Knjigovodstva,Warehouse +General and Payment Ledger Comparison,Poređenje Knjigovodstvenog Registra i Registra Plaćanja, +General and Payment Ledger mismatch,Nepodudaranje Knjigovodstvenog Registra i Registra Plaćanja, +Generate Demo Data for Exploration,Generiši Demo podatke za istraživanje, +Generate E-Invoice,Generiši e-Fakturu, +Generate Invoice At,Generiši Fakturu, +Generated,Generisano, +Generating Preview,Generiše se Pregled..., +Get Allocations,Preuzmi Dodjele, +Get Customer Group Details,Preuzmi Detalje o Grupi Klijenta, +Get Finished Goods for Manufacture,Preuzmi Artikle za Proizvodnju, +Get Outstanding Orders,Preuzmi Nepodmirene Naloge, +Get Raw Materials Cost from Consumption Entry,Preuzmi Trošak Sirovina iz Unosa Potrošnje, +Get Raw Materials for Purchase,Preuzmi Sirovine za Kupovinu, +Get Raw Materials for Transfer,Preuzmi Sirovine za Transfer, +Get Scrap Items,Preuzmi Otpadne Artikle, +Get Stock,Preuzmi Zalihe, +Get Sub Assembly Items,Preuzmi Artikle Podsklopa, +Get Supplier Group Details,Preuzmi Detalje o Grupi Dobavljača, +Get Timesheets,Preuzmi Radni List, +Get stops from,Preuzmi Stanice iz, +Getting Scrap Items,Preuzimaju se Otpadni Artikli, +Give free item for every N quantity,Dodjeli besplatan artikal za svaku N količinu, +Go back,Idi Nazad, +Go to {0} List,Idite na {0} Listu, +Goals,Ciljevi, +Goods,Proizvod, +Grant Commission,Odobri Proviziju, +Greeting Message,Poruka Dobrodošlice, +Gross Profit Percent,Bruto Rezultat %, +Gross Purchase Amount Too Low: {0} cannot be depreciated over {1} cycles with a frequency of {2} depreciations.,Bruto Iznos Kupovine je prenizak: {0} ne može se amortizirati u {1} ciklusima sa učestalošću od {2} amortizacije., +Gross Purchase Amount should be equal to purchase amount of one single Asset.,Bruto Iznos Kupovine trebao bi biti jednak iznosu kupovine jednog sredstva., +Group Same Items,Grupiši iste Artikle, +Growth View,Pregled Rasta, +Half-yearly,Polugodišnje, +Handle Employee Advances,Rukovanje Predujmom Personala, +Has Alternative Item,Ima Alternativni Artikal, +Has Corrective Cost,Ima Korektivne Troškove, +Has Item Scanned,Ima Skenirani Artikal, +Has Priority,Ima Prioritet, +Have Default Naming Series for Batch ID?,Standard Serija Imenovanja za Šaržu?, +Heatmap,Toplotna karta, +Height (cm),Visina (cm), +"Hello,","Zdravo,", +Helps you distribute the Budget/Target across months if you have seasonality in your business.,Pomaže vam da raspodijelite Budžet/Cilj po mjesecima ako imate sezonski karakter u vašem poslovanju., +Here are the error logs for the aforementioned failed depreciation entries: {0},Ovdje su zapisi grešaka za gore navedene neuspjele unose amortizacije: {0}, +Here are the options to proceed:,Ovdje su opcije za nastavak:, +"Here, you can select a senior of this Employee. Based on this, Organization Chart will be populated.",Ovdje možete odabrati starijeg od ovog. Na osnovu toga će se popuniti Organizaciona Šema., +"Here, your weekly offs are pre-populated based on the previous selections. You can add more rows to also add public and national holidays individually.",Ovdje su vaši sedmični neradni dani unaprijed popunjeni na osnovu prethodnih odabira. Možete dodati više redova kako biste pojedinačno dodali ostale praznike., +"Hi,","Zdravo,", +Hide Images,Sakrij Slike, +Hide timesheets,Sakrij Radne Listove, +Holiday Date {0} added multiple times,Datum Praznika {0} dodan više puta, +Hours Spent,Potrošeni Sati, +How often should Project be updated of Total Purchase Cost ?,Koliko često treba ažurirati Projekat od Ukupnih Troškova Kupovine?, +Idle,Besposlen, +"If Enabled - Reconciliation happens on the Advance Payment posting date
+If Disabled - Reconciliation happens on oldest of 2 Dates: Invoice Date or the Advance Payment posting date
+","Ako je Omogućeno - Usaglašavanje se dešava na Datum Knjiženja Predujma
+Ako je Onemogućeno - Usglašavanje se dešava na kasnijem datumu knjiženja: Datum Fakture ili Datum Knjiženja Predujma
+", +"If an operation is divided into sub operations, they can be added here.","Ako je operacija podijeljena na podoperacije, one se mogu dodati ovdje.", +"If checked, Rejected Quantity will be included while making Purchase Invoice from Purchase Receipt.","Ako je označeno, Odbijena Količina će biti uključena prilikom izrade Kupovne Fakture iz Kupovnog Računa.", +"If checked, Stock will be reserved on Submit","Ako je označeno, Zalihe će biti rezervisane na Podnesi", +"If checked, picked qty won't automatically be fulfilled on submit of pick list.","Ako je označeno, odabrana količina neće biti automatski ispunjena prilikom podnošenja liste odabira.", +"If checked, the tax amount will be considered as already included in the Paid Amount in Payment Entry","Ako je označeno, iznos PDV-a će se smatrati već uključenim u Uplaćeni iznos u Unosu Plaćanja", +"If checked, we will create demo data for you to explore the system. This demo data can be erased later.","Ako je označeno, kreirat ćemo demo podatke za vas da istražite sistem. Ovi demo podaci mogu se kasnije izbrisati.", +If enabled then system won't apply the pricing rule on the delivery note which will be create from the pick list,"Ako je omogućeno, sistem neće primijeniti pravilo cijena na dostavnicu koja će biti kreirana sa liste odabira", +If enabled then system won't override the picked qty / batches / serial numbers.,"Ako je omogućeno, onda sistem neće poništiti odabranu količinu / šaržu / serijske brojeve.", +"If enabled, a print of this document will be attached to each email","Ako je omogućeno, ispis ovog dokumenta će biti priložen uz svaku e-poštu", +"If enabled, additional ledger entries will be made for discounts in a separate Discount Account","Ako je omogućeno, dodatni unosi u registar će biti napravljeni za popuste na posebnom računu za popust", +"If enabled, all files attached to this document will be attached to each email","Ako je omogućeno, sve datoteke priložene ovom dokumentu bit će priložene svakoj e-pošti", +"If enabled, do not update serial / batch values in the stock transactions on creation of auto Serial + / Batch Bundle. ","Ako je omogućeno, nemojte ažurirati serijske/šarža vrijednosti u transakcijama zaliha prilikom kreiranja automatskog serijskog + / šarža paketa. ", +"If enabled, ledger entries will be posted for change amount in POS transactions","Ako je omogućeno, unosi registra će biti knjiženi za iznos promjene u Kasa transakcijama", +"If enabled, the consolidated invoices will have rounded total disabled","Ako je omogućeno, objedinjene fakture će imati onemogućeno zaokruženo ukupno", +"If enabled, the item rate won't adjust to the valuation rate during internal transfers, but accounting will still use the valuation rate.","Ako je omogućeno, cijena artikla se neće prilagođavati stopi vrednovanja tokom internih transfera, ali će knjigovodstvo i dalje koristiti stopu vrednovanja.", +"If enabled, the system will allow selecting UOMs in sales and purchase transactions only if the conversion rate is set in the item master.","Ako je omogućeno, sistem će dozvoliti izbor jedinica u transakcijama prodaje i kupovine samo ako je stopa konverzije postavljena u postavkama artikla.", +"If enabled, the system will create material requests even if the stock exists in the 'Raw Materials Warehouse'.","Ako je omogućeno, sistem će kreirati materijalne naloge čak i ako zaliha postoji u 'Skladištu Sirovina'.", +"If enabled, the system will use the moving average valuation method to calculate the valuation rate for the batched items and will not consider the individual batch-wise incoming rate.","Ako je omogućeno, sistem će koristiti metodu vrednovanja pokretnog prosjeka za izračunavanje stope vrednovanja za šaržne artikle i neće uzeti u obzir pojedinačnu dolaznu cijenu u paketu.", +"If enabled, then system will only validate the pricing rule and not apply automatically. User has to manually set the discount percentage / margin / free items to validate the pricing rule","Ako je omogućeno, sistem će samo potvrditi pravilo cijena i neće se automatski primjenjivati. Korisnik mora ručno podesiti postotak popusta / maržu / besplatne artikle kako bi potvrdio pravilo cijena", +"If mentioned, the system will allow only the users with this Role to create or modify any stock transaction earlier than the latest stock transaction for a specific item and warehouse. If set as blank, it allows all users to create/edit back-dated transactions.","Ako je postavljeno, sistem će dozvoliti samo korisnicima sa ovom ulogom da kreiraju ili modifikuju bilo koju transakciju zaliha ranije od poslednje transakcije zaliha za određeni artikal i skladište. Ako je postavljeno kao prazno, omogućava svim korisnicima da kreiraju/uređuju transakcije sa datumom unazad.", +"If not, you can Cancel / Submit this entry","Ako ne, možete Otkazati / Podnijeti ovaj unos", +"If rate is zero then item will be treated as ""Free Item""","Ako je cijena nula, artikal će se tretirati kao ""Besplatni Artikal""", +"If the BOM results in Scrap material, the Scrap Warehouse needs to be selected.","Ako Sastavnica rezultira otpadnim materijalom, potrebno je odabrati Skladište Otpada.", +"If the selected BOM has Operations mentioned in it, the system will fetch all Operations from BOM, these values can be changed.","Ako odabrana Sastavnica ima Operacije spomenute u njoj, sistem će preuzeti sve operacije iz nje, i te vrijednosti se mogu promijeniti.", +"If there is no title column, use the code column for the title.","Ako nema kolone naslova, koristite kolonu koda za naslov.", +"If this checkbox is enabled, then the system won’t run the MRP for the available sub-assembly items.","Ako je ovo polje omogućeno, sistem neće pokrenuti Materijalni Zahtjev Plan za dostupne artikle podsklopa.", +If this is undesirable please cancel the corresponding Payment Entry.,"Ako je ovo nepoželjno, otkaži odgovarajući Unos Plaćanja.", +"If yes, then this warehouse will be used to store rejected materials","Ako da, onda će se ovo skladište koristiti za skladištenje odbijenog materijala", +"If you are maintaining stock of this Item in your Inventory, ERPNext will make a stock ledger entry for each transaction of this item.","Ako održavate zalihe ovog artikla u svojim zalihama, Sistem će napraviti unos u registar zaliha za svaku transakciju ovog artikla.", +"If you need to reconcile particular transactions against each other, then please select accordingly. If not, all the transactions will be allocated in FIFO order.","Ako trebate usaglasiti određene transakcije jedne s drugima, odaberite u skladu s tim. U suprotnom, sve transakcije će biti dodijeljene FIFO redoslijedom.", +"If you still want to proceed, please disable 'Skip Available Sub Assembly Items' checkbox.","Ako i dalje želite da nastavite, onemogući polje za potvrdu 'Preskoči Dostupne Artikle Podsklopa'.", +"If you still want to proceed, please enable {0}.","Ako i dalje želite da nastavite, omogući {0}.", +"If your CSV uses a different delimiter, add that character here, ensuring no spaces or additional characters are included.","Ako vaš CSV koristi drugačiji razdjelnik, dodajte taj znak ovdje, pazeći da nema razmaka ili dodatnih znakova.", +Ignore Account Closing Balance,Zanemari Stanje Perioda Zatvaranju Računa, +Ignore Available Stock,Zanemari Dostupne Zalihe, +Ignore Closing Balance,Zanemari Završno Stanje, +Ignore Default Payment Terms Template,Zanemari Šablon Standard Uslova Plaćanja, +Ignore Empty Stock,Zanemari Prazne Zalihe, +Ignore Exchange Rate Revaluation Journals,Zanemari Žurnale Revalorizacije Deviznog Kursa, +Ignore Is Opening check for reporting,Zanemari Početno kontrolu za izvještaj, +Ignore Pricing Rule is enabled. Cannot apply coupon code.,Zanemari da je Pravilnik Cijena omogućen. Nije moguće primijeniti kod kupona., +Ignore System Generated Credit / Debit Notes,Zanemari Sistemske Kreditne/Debitne Napomene, +Ignore Voucher Type filter and Select Vouchers Manually,Zanemari filter tipa verifikat i odaberi verifikate ručno, +Ignores legacy Is Opening field in GL Entry that allows adding opening balance post the system is in use while generating reports,Zanemaruje naslijeđe polje 'Početno' u unosu Knjigovodstva koje omogućava dodavanje početnog stanja nakon što je sistem u upotrebi prilikom generiranja izvještaja, +Impairment,Otpisi, +Import File,Uvezi Datoteku, +Import File Errors and Warnings,Greške i Upozorenja pri Uvozu Datoteka, +Import Genericode File,Uvezi Genericode Datoteku, +Import Log Preview,Pregled Zapisnika Uvoza, +Import Preview,Pregled Uvoza, +Import Progress,Napredak Uvoza, +Import Type,Tip Uvoza, +Import Using CSV file,Uvezi Koristeći CSV datoteku, +Import Warnings,Import Upozorenja, +Import completed. {0} common codes created.,Uvoz završen. Kreirano {0} zajedničkih kodova., +Import from Google Sheets,Importiraj iz Google Sheets, +Importing Common Codes,Uvoz Zajedničkih Kodova u toku, +"Importing {0} of {1}, {2}","Uvozi se {0} od {1}, {2}", +In House,Interno, +In Minutes,U Minutama, +In Party Currency,U Valuti Stranke, +In Transit Transfer,U Tranzitnom Prenosu, +In Transit Warehouse,U Tranzitnom Skladištu, +In mins,U Minutama, +"In row {0} of Appointment Booking Slots: ""To Time"" must be later than ""From Time"".","U redu {0} Rezervacija Termina: ""Do vremena"" mora biti kasnije od ""Od vremena"".", +"In this section, you can define Company-wide transaction-related defaults for this Item. Eg. Default Warehouse, Default Price List, Supplier, etc.","U ovoj sekciji možete definirati zadane postavke transakcije koje se odnose na cijelu kompaniju za ovaj artikal. Npr. Standard Skladište, Standard Cijenovnik, Dobavljač itd.", +Inactive Status,Neaktivan Status, +Include Account Currency,Uključi Valutu Računa, +Include Closed Orders,Uključi Zatvorene Naloge, +Include Default FB Assets,Uključi standard Finansijski Registar Imovinu, +Include Disabled,Uključi Onemogućene, +Include Expired Batches,Uključi istekle Šarže, +Include Safety Stock in Required Qty Calculation,Uključi sigurnosne zalihe u kalkulaciju potrebne količine, +Include Timesheets in Draft Status,Uključi Radni List u Status Nacrta, +Include Zero Stock Items,Uključi artikle bez zaliha, +Incoming Call Handling Schedule,Raspored Obrade Dolaznih Poziva, +Incoming Call Settings,Postavke Dolaznog Poziva, +Incoming Rate (Costing),Kupovna Cijena (Obračun Troškova), +Incorrect Balance Qty After Transaction,Netačna količina stanja nakon transakcije, +Incorrect Batch Consumed,Potrošena Pogrešna Šarža, +Incorrect Check in (group) Warehouse for Reorder,Netačno prijavljivanje (grupno) skladište za ponovnu narudžbu, +Incorrect Component Quantity,Netačna Količina Komponenti, +Incorrect Invoice,Netočna Faktura, +Incorrect Movement Purpose,Netačna Namjena Kretanja, +Incorrect Payment Type,Netačan Tip Plaćanja, +Incorrect Reference Document (Purchase Receipt Item),Netaöan referentni dokument (Artikal Kupovnog Naloga), +Incorrect Serial No Valuation,Netačno Vrijednovanje Serijskog Broja, +Incorrect Serial Number Consumed,Pogrešan Serijski Broj Potrošen, +Incorrect Serial and Batch Bundle,Pogrešan Serijski i Šaržni Paket, +Incorrect Stock Value Report,Netačan Izvještaj o Vrijednosti Zaliha, +Incorrect Type of Transaction,Netačan Tip Transakcije, +Increase In Asset Life(Months),Povećanje Vijeka Trajanja Imovine (mjeseci), +Indirect Expense,Indirektni Troškak, +Individual GL Entry cannot be cancelled.,Individualni Knjigovodstveni Unos nemože se otkazati., +Individual Stock Ledger Entry cannot be cancelled.,Pojedinačni Unos u Registar Zaliha nemože se otkazati., +Initialize Summary Table,Inicijaliziraj Tabelu Sažetka, +Insert New Records,Ubaci Nove Zapise, +Inspection Rejected,Inspekcija Odbijena, +Inspection Submission,Podnošenje Kontrole, +Instruction,Uputstvo, +Insufficient Capacity,Nedovoljan Kapacitet, +Insufficient Stock for Batch,Nedovoljne Zalihe Šarže, +Inter Transfer Reference,Referenca Prenosa Inter Kompanija, +Interest and/or dunning fee,Kamata i/ili Naknada Opomene, +Internal Customer,Interni Klijent, +Internal Customer for company {0} already exists,Interni Klijent za kompaniju {0} već postoji, +Internal Sale or Delivery Reference missing.,Nedostaje referenca za Internu Prodaju ili Dostavu., +Internal Sales Reference Missing,Nedostaje Interna Prodajna Referenca, +Internal Supplier,Interni Dobavljač, +Internal Supplier for company {0} already exists,Interni Dobavljač za kompaniju {0} već postoji, +Internal Transfer Reference Missing,Nedostaje Referenca Internog Prijenosa, +Internal Transfers,Interni Prenosi, +Internal transfers can only be done in company's default currency,Interni prenosi se mogu vršiti samo u standard valuti kompanije, +Interval should be between 1 to 59 MInutes,Interval bi trebao biti između 1 i 59 minuta, +Invalid,Nevažeći, +Invalid Allocated Amount,Nevažeći Dodijeljeni Iznos, +Invalid Amount,Nevažeći Iznos, +Invalid Auto Repeat Date,Nevažeći Datum Automatskog Ponavljanja, +Invalid Cost Center,Nevažeći Centar Troškova, +Invalid Delivery Date,Nevažeći Datum Dostave, +Invalid Discount,Nevažeći Popust, +Invalid Document,Nevažeći Dokument, +Invalid Document Type,Nevažeći Dokument Tip, +Invalid Formula,Nevažeća Formula, +Invalid Group By,Nevažeća Grupa po, +Invalid Item Defaults,Nevažeće Standard Postavke Artikla, +Invalid Ledger Entries,Nevažeći unosi u Registar, +Invalid Primary Role,Nevažeća Primarna Uloga, +Invalid Priority,Nevažeći Prioritet, +Invalid Process Loss Configuration,Nevažeća Konfiguracija Gubitka Procesa, +Invalid Purchase Invoice,Nevažeća Kupovna Faktura, +Invalid Qty,Nevažeća Količina, +Invalid Schedule,Nevažeći Raspored, +Invalid Serial and Batch Bundle,Nevažeći Serijski i Šaržni Paket, +Invalid Warehouse,Nevažeće Skladište, +Invalid amount in accounting entries of {} {} for Account {}: {},Nevažeći iznos u knjigovodstvenim unosima {} {} za račun {}: {}, +Invalid result key. Response:,Nevažeći ključ rezultata. Odgovor:, +Invalid value {0} for {1} against account {2},Nevažeća vrijednost {0} za {1} naspram računa {2}, +Inventory Dimension,Dimenzija Zaliha, +Inventory Dimension Negative Stock,Negativne Zalihe Dimenzije Zaliha, +Inventory Settings,Postavke Zaliha, +Invoice Cancellation,Otkazivanje Fakture, +Invoice ID,Faktura, +Invoice Limit,Ograničenje Fakture, +Invoice Portion (%),Udio Fakture (%), +Invoice and Billing,Faktura & Fakturisanje, +Invoiced Qty,Fakturisana Količina, +Invoices and Payments have been Fetched and Allocated,Fakture i Plaćanja su Preuzeti i Dodijeljeni, +Invoicing Features,Funkcije Fakturisanja, +Is Adjustment Entry,Unos Podešavanja, +Is Alternative,Alternativa, +Is Cash or Non Trade Discount,Gotovinski ili Netrgovčki Popust, +Is Composite Asset,Objedinjena Imovina, +Is Corrective Job Card,Popravni Radni Nalog, +Is Corrective Operation,Popravna Operacija, +Is Exchange Gain / Loss?,Dobitak/Gubitak Deviznog Kursa?, +Is Expandable,Proširivo, +Is Finished Item,Gotov Artikal, +Is Fully Depreciated,Potpuno Amortizovano, +Is Group Warehouse,Grupno Skladište, +Is Old Subcontracting Flow,Stari Tok Podugovaranja, +Is Outward,Dostava, +Is Period Closing Voucher Entry,Unos Verifikata za Yatvaranje Perioda, +Is Rate Adjustment Entry (Debit Note),Unos Korekcije Artikla (Debit Faktura), +Is Recursive,Rekuruzivno, +Is Rejected,Odbijeno, +Is Rejected Warehouse,Odbijeno Skladište, +Is Scrap Item,Otpadni Artikal, +Is Short/Long Year,Kratka/Duga Godina, +Is Standard,Standard, +Is Stock Item,Artikal Zaliha, +Is System Generated,Sistem Generisno, +Is Tax Withholding Account,Račun po Odbitku PDV, +Is Template,Šablon, +Issue Analytics,Analiza Slučaja, +Issue Summary,Sažetak Slučaja, +Issue a debit note with 0 qty against an existing Sales Invoice,Izdaj Zadužnicu sa 0 količinom na postojeću Prodajnu Fakturu, +Issuing cannot be done to a location. Please enter employee to issue the Asset {0} to,Izdavanje se ne može izvršiti na lokaciji. Unesi personal kojem će izdati imovina {0}, +It can take upto few hours for accurate stock values to be visible after merging items.,Može potrajati i do nekoliko sati da tačne vrijednosti zaliha budu vidljive nakon spajanja artikala., +"It's not possible to distribute charges equally when total amount is zero, please set 'Distribute Charges Based On' as 'Quantity'","Nije moguće ravnomjerno raspodijeliti troškove kada je ukupan iznos nula, postavite 'Distribuiraj Naknade na Osnovu' kao 'Količina'", +Item Code (Final Product),Kod Artikla (Finalni Proizvod), +Item Group wise Discount,Popust po Grupni Artikla, +Item Price Settings,Postavke Cijene Artikla, +"Item Price appears multiple times based on Price List, Supplier/Customer, Currency, Item, Batch, UOM, Qty, and Dates.","Cijena Artikla se pojavljuje više puta na osnovu Cijenovnika, Dobavljača/Klijenta, Valute, Artikla, Šarže, Jedinice, Količine i Datuma.", +Item Reference,Referenca Artikla, +Item Warehouse based reposting has been enabled.,Omogućeno je ponovno knjiženje Artikala na osnovi Skladišta., +Item and Warehouse,Artikal i Skladište, +Item is removed since no serial / batch no selected.,Artikal je uklonjen jer nije odabrana Šarža / Serijski Broj., +Item qty can not be updated as raw materials are already processed.,Količina artikla se ne može ažurirati jer su sirovine već obrađene., +Item rate has been updated to zero as Allow Zero Valuation Rate is checked for item {0},Cijena Artikla je ažurirana na nulu jer je Dozvoli Nultu Stopu Vrednovanja označena za artikal {0}, +Item valuation reposting in progress. Report might show incorrect item valuation.,Ponovno knjiženje vrijednosti artikla je u toku. Izvještaj može prikazati netačnu procjenu artikla., +Item {0} cannot be added as a sub-assembly of itself,Artikal {0} nemože se dodati kao sam podsklop, +Item {0} cannot be ordered more than {1} against Blanket Order {2}.,Artikal {0} se nemože naručiti više od {1} u odnosu na Ugovorni Nalog {2}., +Item {0} does not exist.,Artikal {0} ne postoji., +Item {0} entered multiple times.,Artikal {0} unesen više puta., +Item {0} is already reserved/delivered against Sales Order {1}.,Artikal {0} je već rezervisan/dostavljen naspram Prodajnog Naloga {1}., +Item {0} must be a Non-Stock Item,Artikal {0} mora biti artikal koji nije na zalihama, +Item {0} not found in 'Raw Materials Supplied' table in {1} {2},Artikal {0} nije pronađen u tabeli 'Dostavljene Sirovine' u {1} {2}, +Item {0} not found.,Artikal {0} nije pronađen., +Item {} does not exist.,Atikal {} ne postoji., +Items & Pricing,Artikli & Cijene, +Items Catalogue,Katalog Artikala, +Items cannot be updated as Subcontracting Order is created against the Purchase Order {0}.,Artikal se ne mođe ažurirati jer je Podugovorni Nalog kreiran naspram Kupovnog Naloga {0}., +Items rate has been updated to zero as Allow Zero Valuation Rate is checked for the following items: {0},Cijena Artikala je ažurirana na nulu jer je Dozvoli Nultu Stopu Vrednovanja izabrana za sljedeće artikle: {0}, +Items to Be Repost,Artikli koje treba ponovo objaviti, +Items to Order and Receive,Artikli za Naručiti i Primiti, +Items to Reserve,Artikli za Rezervisanje, +Items {0} do not exist in the Item master.,Artikli {0} ne postoje u Tabeli Artikala., +Job Capacity,Radni Kapacitet, +Job Card Operation,Operacija Radne Kartice, +Job Card Scheduled Time,Zakazano Vrijeme Radne Kartice, +Job Card Scrap Item,Otpadni Artikal Radne Kartice, +Job Card and Capacity Planning,Radne Kartice i Planiranje Kapaciteta, +Job Cards,Radne Kartice, +Job Paused,Posao Pauziran, +Job Worker,Podizvođač, +Job Worker Address,Adresa Podizvođača, +Job Worker Address Details,Detalji Adrese Podizvođača, +Job Worker Contact,Kontakt Podizvođača, +Job Worker Delivery Note,Dostavnica Podizvođača, +Job Worker Name,Naziv Podizvođača, +Job Worker Warehouse,Skladište Podizvođača, +Job: {0} has been triggered for processing failed transactions,Posao: {0} je pokrenut za obradu neuspjelih transakcija, +Joining,Pridruživanje, +Journal Entries,Nalozi Knjiženja, +Journal Entry for Asset scrapping cannot be cancelled. Please restore the Asset.,Naloga Knjiženja za rashod Imovine ne može se otkazati. Vrati Imovinu., +Journal Entry type should be set as Depreciation Entry for asset depreciation,Tip Naloga Knjiženja treba postaviti kao Unos Amortizacije za amortizaciju imovine, +Journal entries have been created,Nalozi Knjiženja su kreirani, +Journals,Žurnali, +Key,Ključ, +Kindly cancel the Manufacturing Entries first against the work order {0}.,Otkaži Unose Proizvodnje naspram Radnog Naloga {0}., +Last GL Entry update was done {}. This operation is not allowed while system is actively being used. Please wait for 5 minutes before retrying.,Posljednje ažuriranje Knjigovodstvenog Registra je obavljeno {}. Ova operacija nije dozvoljena dok se sistem aktivno koristi. Pričekaj 5 minuta prije ponovnog pokušaja., +"Last Name, Email or Phone/Mobile of the user are mandatory to continue.","Prezime, e-mail ili telefon/mobilni telefon korisnika su obavezni za nastavak.", +Last transacted,Zadnja Transakcija, +Lead -> Prospect,Potencijalni Klijent-> Prospekt, +Lead Conversion Time,Vrijeme Konverzije Potencijalnog Klijenta, +Lead Owner cannot be same as the Lead Email Address,Odgovorni za Potencijalnog Klijenta ne može biti isti kao i adresa e-pošte potencijalnog klijenta, +Lead {0} has been added to prospect {1}.,Potencijalni Klijent {0} je dodat Prospektu {1}., +Leaderboard,Poredak, +Leads,Potencijalni Klijenti, +Learn Accounting,Naučite Knjigovodstvo, +Learn Inventory Management,Naučite Upravljanje Zalihama, +Learn Manufacturing,Naučite Proizvodnju, +Learn Procurement,Naučite Kupovinu, +Learn Project Management,Naučite Upravljanje Projektima, +Learn Sales Management,Naučite Upravljanje Prodajom, +"Learn about Common Party","Saznaj više o Zajedniča Stranka", +"Leave blank for home. +This is relative to site URL, for example ""about"" will redirect to ""https://yoursitename.com/about""","Ostavite prazno za Početna. Ovo se odnosi na URL web-lokacije, na primjer ""o"" će preusmjeriti na ""https://yoursitename.com/about""", +Ledger Health,Status Registra, +Ledger Health Monitor,Prati Status Registra, +Ledger Health Monitor Company,Kompanija Praćenja Statusa Registra, +Ledger Merge,Spoji Registre, +Ledger Merge Accounts,Računi Spojenih Registara, +Ledgers,Registri, +Left Child,Lijevo Podređen, +Legend,Legenda, +Length,Dužine, +Length (cm),Dužina (cm), +Level (BOM),Nivo (Sastavnica), +Limit timeslot for Stock Reposting,Ograniči vremenski termin za ponovno Knjiženje Zaliha, +Limits don't apply on,Ograničenja se ne primjenjuju na, +Link a new bank account,Poveži novi bankovni račun, +Link with Customer,Veza sa Klijentom, +Link with Supplier,Veza sa Dobavljačem, +Linked with submitted documents,Povezano sa podnešenim dokumentima, +Linking Failed,Povezivanje nije uspjelo, +Linking to Customer Failed. Please try again.,Povezivanje s klijentom nije uspjelo. Molimo pokušajte ponovo., +Linking to Supplier Failed. Please try again.,Povezivanje sa dobavljačem nije uspjelo. Molimo pokušajte ponovo., +Links,Veze, +Loading Invoices! Please Wait...,Učitavanje Faktura u toku! Molimo pričekajte..., +Loading import file...,Učitavanje datoteke uvoza..., +Locked,Zaključano, +Log Entries,Unosi Zapisa, +Log the selling and buying rate of an Item,Zabilježi prodajnu i kupovnu cijenu artikla, +Lost Quotations,Izgubljene Ponude, +Lost Quotations %,Izgubljene Ponude %, +Lost Reasons are required in case opportunity is Lost.,Izgubljeni Razlozi su potrebni u slučaju da je prilika izgubljena., +Lost Value,Izgubljen(a) Vrijednost, +Lost Value %,Izgubljen(a) Vrijednost %, +Machine Type,Tip Mašine, +Main Cost Center,Matični Centar Troškova, +Main Cost Center {0} cannot be entered in the child table,Matični Centar Troškova {0} ne može se unijeti u podređenu tabelu, +Maintain Asset,Održavanje Imovine, +Maintenance Details,Detalji Održavanja, +Make ,Marka , +Make Asset Movement,Napravi Pokrete Imovine, +Make Quotation,Napravi Ponudu, +Make Return Entry,Napravi Povratni Unos, +Make Serial No / Batch from Work Order,Napravi Serijski Broj / Šaržu iz Radnog Naloga, +Make {0} Variant,Napravi {0} Varijantu, +Make {0} Variants,Napravi {0} Varijante, +Making Journal Entries against advance accounts: {0} is not recommended. These Journals won't be available for Reconciliation.,Kreiranje Naloga Knjiženja naspram računa predujma: {0} se ne preporučuje. Ovi Nalozi Knjiženja neće biti dostupni za Usaglašavanje., +Manage,Upravljaj, +Mandatory Accounting Dimension,Obavezna Knjigovodstvena Dimenzija, +Mandatory Depends On,Obavezno zavisi od, +Mandatory Field,Obavezno Polje, +Mandatory Section,Obavezna Sekcija, +Manual Inspection,Manualna Kontrola, +Manufacturing Type,Tip Proizvodnje, +Mapping Purchase Receipt ...,Mapiranje Kupovnog Računa..., +Mapping Subcontracting Order ...,Mapiranje Podugovornog Naloga..., +Mapping {0} ...,Mapiranje {0} u toku..., +Margin View,Pregled Marže, +Mark As Closed,Označi kao Zatvoreno, +Material Returned from WIP,Materijal vraćen iz Posla u Toku, +Material Transfer (In Transit),Prijenos Materijala (u transportu), +Materials are already received against the {0} {1},Materijali su već primljeni naspram {0} {1}, +Materials needs to be transferred to the work in progress warehouse for the job card {0},Materijale je potrebno prebaciti u Skladište u Toku za Radnu Karticu {0}, +Max Qty (As Per Stock UOM),Maksimalna Količina (prema Jedinici Zaliha), +Maximum Net Rate,Maksimalna Neto Cijena, +Maximum Payment Amount,Maksimalni Iznos Uplate, +Maximum Value,Minimalna Vrijednost, +Maximum quantity scanned for item {0}.,Maksimalna skenirana količina za artikal{0}., +Meeting,Sastanak, +Mention if non-standard Receivable account,Navedite ako Račun Potraživanja nije standard, +Merge Invoices Based On,Spoji Fakture na osnovu, +Merge Progress,Napredak Spajanja, +Merge Similar Account Heads,Spoji Slične Račune, +Merge taxes from multiple documents,Spoji PDV iz više dokumenata, +Merged,Spojeno, +"Merging is only possible if following properties are same in both records. Is Group, Root Type, Company and Account Currency","Spajanje je moguće samo ako su sljedeća svojstva ista u oba zapisa. Grupa, Tip Klase, Kompanija i Valuta Računa", +Merging {0} of {1},Spajanje {0} od {1} u toku, +Min Qty (As Per Stock UOM),Minimalna Količina (prema Jedinici Zaliha), +Min Qty should be greater than Recurse Over Qty,Minimalna Količina bi trebao biti veći od Povratne Količina, +Minimum Net Rate,Minimalna Neto Cijena, +Minimum Payment Amount,Minimalni Iznos Plaćanja, +Minimum Value,Minimalna Vrijednost, +Mismatch,Neusklađeno, +Missing,Nedostaje, +Missing Asset,Nedostaje Imovina, +Missing Cost Center,Nedostaje Centar Troškova, +Missing Default in Company,Nedostaju Standard Postavke u kompaniji, +Missing Finance Book,Nedostaje Finansijski Registar, +Missing Finished Good,Nedostaje Gotov Proizvod, +Missing Formula,Nedostaje Formula, +Missing Item,Nedostaje Artikal, +Missing Items,Nedostajući Artikli, +Missing Payments App,Nedostaje Aplikacija za Plaćanje, +Missing Serial No Bundle,Nedostaje Serijski Broj Paket, +Missing value,Nedostaje vrijednost, +Mobile: ,Mobilni Broj: , +Modified By,Izmijenio, +Modified On,Izmijenjeno, +Module Settings,Postavke Modula, +Monitor for Last 'X' days,Prati zadnjih 'X' dana, +More/Less than 12 months.,Duže/Kraće od 12 mjeseci., +Move Stock,Premjesti Zalihe, +Move to Cart,Premjesti u Korpu, +Movement,Kretanje, +Moving up in tree ...,Pomjeranje prema Stablu..., +Multi-level BOM Creator,Konstruktor Višeslojne Sastavnice, +Multiple Loyalty Programs found for Customer {}. Please select manually.,Višestruki Programi Lojalnosti pronađeni za Klijenta {}. Odaberi ručno., +Multiple Warehouse Accounts,Više Skladišnih Računa, +Multiple items cannot be marked as finished item,Više artikala se ne mogu označiti kao gotov proizvod, +Must be a publicly accessible Google Sheets URL and adding Bank Account column is necessary for importing via Google Sheets,Mora biti javno dostupan URL Google Sheets i dodavanje kolone Bankovnog Računa je neophodno za import preko Google Sheets, +Named Place,Mjesto, +Naming Series and Price Defaults,Serija Imenovanja & Standard Cijene, +Naming Series is mandatory,Serija Imenovanja je obavezna, +Negative Batch Quantity,Negativna količina Šarže, +Net Purchase Amount,Neto Kupovni Iznos, +Net total calculation precision loss,Ukupni neto gubitak preciznosti proračuna, +New Balance In Account Currency,Novo Stanje u Valuti Računa, +New Event,Novi Događaj, +New Note,Nova Napomena, +New Task,Novi Zadatak, +New Version,Nova Verzija, +Newsletter,Bilten, +No Answer,Bez Odgovora, +No Customers found with selected options.,Nisu pronađeni Klijenti sa odabranim opcijama., +No Items selected for transfer.,Nema odabranih artikala za prijenos., +No Matching Bank Transactions Found,Nisu pronađene odgovarajuće bankovne transakcije, +No Notes,Nema Napomena, +No Outstanding Invoices found for this party,Nisu pronađene neplaćene fakture za ovu stranku, +No POS Profile found. Please create a New POS Profile first,Nije pronađen Kasa profil. Kreiraj novi Kasa Profil, +No Records for these settings.,Nema zapisa za ove postavke., +No Selection,Bez Odabira, +No Serial / Batches are available for return,Nema Serijskih Brojeva / Šarži dostupnih za povrat, +No Stock Available Currently,Trenutno nema Dostupnih Zaliha, +No Summary,Nema Sažetak, +No Tax Withholding data found for the current posting date.,Nisu pronađeni podaci o PDV-u po odbitku za trenutni datum knjiženja., +No Terms,Nema Uslova, +No Unreconciled Invoices and Payments found for this party and account,Nisu pronađene neusaglašene fakture i plaćanja za ovu stranku i račun, +No Unreconciled Payments found for this party,Nisu pronađene neusaglašene uplate za ovu stranku, +No Work Orders were created,Radni Nalozi nisu kreirani, +No additional fields available,Nema dostupnih dodatnih polja, +No billing email found for customer: {0},Nije pronađena e-pošta fakture za: {0}, +No data found. Seems like you uploaded a blank file,Nema podataka. Čini se da ste otpremili praznu datoteku, +No employee was scheduled for call popup,Personal nije zakazao poziv, +No failed logs,Nema neuspjelih zapisa, +No item available for transfer.,Nema dostupnih artikala za prijenos., +No items are available in sales orders {0} for production,Nema dostupnih artikala u Prodajnim Nalozima {0} za proizvodnju, +No items are available in the sales order {0} for production,Nema dostupnih artikala u Prodajnom Nalogu {0} za proizvodnju, +No items in cart,Nema artikala u korpi, +No matches occurred via auto reconciliation,Nije došlo do podudaranja putem automatskog usaglašavanja, +No more children on Left,Nema više podređenih na Lijevoj strani, +No more children on Right,Nema više podređenih na Desnoj strani, +No of Docs,Broj Dokumenata, +No of Employees,Personalni Broj, +No of Months (Expense),Broj Mjeseci (Troškovi), +No of Months (Revenue),Broj Mjeseci (Prihodi), +No open event,Nema Otvorenih Događaja, +No open task,Nema Otvorenog Zadatka, +No outstanding {0} found for the {1} {2} which qualify the filters you have specified.,Nema neplaćenih {0} pronađenih za {1} {2} koji ispunjavaju filtre koje ste naveli., +No primary email found for customer: {0},Nije pronađena primarna e-pošta: {0}, +No recent transactions found,Nisu pronađene nedavne transakcije, +No records found in Allocation table,Nema zapisa u tabeli Dodjele, +No records found in the Invoices table,Nije pronađen zapis u tabeli Fakture, +No records found in the Payments table,Nije pronađen zapis u tabeli Plaćanja, +No stock transactions can be created or modified before this date.,Nikakve transakcije Zalihama se ne mogu kreirati ili mijenjati prije ovog datuma., +No {0} Accounts found for this company.,Nisu pronađeni {0} računi za ovu kompaniju., +No.,Br., +No. of Employees,Personalni Broj, +No. of parallel job cards which can be allowed on this workstation. Example: 2 would mean this workstation can process production for two Work Orders at a time.,Broj paralelnih radnih kartica koje se mogu dozvoliti na ovoj radnoj stanici. Primjer: 2 bi značilo da ova radna stanica može obraditi proizvodnju za dva radna naloga istovremeno., +Note: Automatic log deletion only applies to logs of type Update Cost,Napomena: Automatsko brisanje zapisa primjenjuje se samo na zapise tipa Ažuriraj Trošak, +"Note: To merge the items, create a separate Stock Reconciliation for the old item {0}","Napomena: Da biste spojili artikle, kreirajte zasebno Usaglašavanje Zaliha za stari artikal {0}", +Notes HTML,HTML Napomene, +Notification,Obavijest, +Notification Settings,Postavke Obavijesti, +Notify Reposting Error to Role,Obavijesti o Grešci Ponovnog Knjiženja sljedećoj Ulozi, +Number of Days,Broj Dana, +Numeric,Numerički, +Numeric Inspection,Numerička Inspekcija, +Off,Isključen, +Offsetting Account,Prijebojni Račun, +Offsetting for Accounting Dimension,Prijeboj za Knjigovodstvenu Dimenziju, +Oldest Of Invoice Or Advance,Najstarija od Faktura ili Predujam, +On Paid Amount,Na Plaćeni Iznos, +On This Date,Na Ovaj Datum, +On Track,Na Putu, +On enabling this cancellation entries will be posted on the actual cancellation date and reports will consider cancelled entries as well,"Nakon omogućavanja ovog otkazivanja, unosi će biti uknjiženi na datum stvarnog otkazivanja, a izvještaji će uzeti u obzir i otkazane unose", +"On expanding a row in the Items to Manufacture table, you'll see an option to 'Include Exploded Items'. Ticking this includes raw materials of the sub-assembly items in the production process.","Kada proširite red u tabeli Artikli za Proizvodnju, vidjet ćete opciju 'Uključi Rastavljenje Artikle'. Ovo označavanje uključuje sirovine za podsklopove u procesu proizvodnje.", +"On submission of the stock transaction, system will auto create the Serial and Batch Bundle based on the Serial No / Batch fields.","Pri podnošenju transakcije zaliha, sistem će automatski kreirati Serijski i Šaržni Paket na osnovu polja Serijskog Broja / Šarže.", +Once the Work Order is Closed. It can't be resumed.,Nakon što je Radni Nalog Yatvoren. Ne može se ponovo otvoriti., +Only 'Payment Entries' made against this advance account are supported.,Podržani su samo 'Unosi Plaćanja' naspram ovog predujam računa., +Only CSV and Excel files can be used to for importing data. Please check the file format you are trying to upload,Za uvoz podataka mogu se koristiti samo CSV i Excel datoteke. Provjeri format datoteke koji pokušavate učitati, +Only Deduct Tax On Excess Amount ,Odbij porez samo na višak Iznosa, +Only Include Allocated Payments,Uzmi u obzir samo Dodijeljena Plaćanja, +Only Parent can be of type {0},Jedino Nadređeni može biti tipa {0}, +Only applies for Normal Payments,Primjenjuje se samo za Normalna Plaćanja, +Only existing assets,Samo postojeća imovina, +Only one {0} entry can be created against the Work Order {1},Samo jedan {0} unos se može kreirati naspram Radnog Naloga {1}, +"Only values between [0,1) are allowed. Like {0.00, 0.04, 0.09, ...} +Ex: If allowance is set at 0.07, accounts that have balance of 0.07 in either of the currencies will be considered as zero balance account","Dozvoljene su samo vrijednosti između [0,1). Kao {0,00, 0,04, 0,09, ...} +Primjer: Ako je odobrenje postavljeno na 0,07, računi koji imaju stanje od 0,07 u bilo kojoj od valuta će se smatrati nultim stanjem računa", +Only {0} are supported,Podržano je samo {0}, +Open Activities HTML,Otvorene HTML Aktivnosti, +Open Call Log,Otvori Zapis Poziva, +Open Event,Otvori Događaj, +Open Events,Otvoreni Događaji, +Open Sales Orders,Otvori Prodajni Nalog, +Open Task,Otvori Zadatak, +Open Tasks,Otvori Zadatke, +Open Work Order {0},Otvori Radni Nalog {0}, +Opening & Closing,Otvaranje & Zatvaranje, +Opening Accumulated Depreciation must be less than or equal to {0},Početna Akumulirana Amortizacija mora biti manja ili jednaka {0}, +Opening Entry can not be created after Period Closing Voucher is created.,Početni Unos ne može se kreirati nakon kreiranja Verifikata Zatvaranje Perioda., +"Opening Invoice has rounding adjustment of {0}.

'{1}' account is required to post these values. Please set it in Company: {2}.

Or, '{3}' can be enabled to not post any rounding adjustment.","Početna Faktura ima podešavanje zaokruživanja od {0}.

'{1}' račun je potreban za postavljanje ovih vrijednosti. Molimo postavite ga u kompaniji: {2}.

Ili, '{3}' se može omogućiti da se ne objavljuje nikakvo podešavanje zaokruživanja.", +Opening Number of Booked Depreciations,Početni broj knjiženih amortizacija, +Opening Purchase Invoices have been created.,Početne Fakture Kupovine su kreirane., +Opening Sales Invoices have been created.,Početne Fakture Prodaje su kreirane., +Operating Cost Per BOM Quantity,Operativni trošak po količini Sastavnice, +Operation time does not depend on quantity to produce,Vrijeme Operacije ne ovisi o količini za proizvodnju, +Opportunity Amount (Company Currency),Iznos Prilike (Valuta Kompanije), +Opportunity Owner,Odgovorni Prilike, +Opportunity Source,Izvor Mogućnost, +Opportunity Summary by Sales Stage,Sažetak Prilike prema Fazi Prodaje, +Opportunity Summary by Sales Stage ,Sažetak Prilike prema Fazi Prodaje , +Opportunity Value,Vrijednost Prilike, +Order Date,Datum Naloga, +Order No,Broj Naloga, +Order Status,Status Nalog, +Other Info,Ostale Informacije, +Out of stock,Nema u Zalihana, +Outstanding (Company Currency),Nepodmireno (Valuta Tvrtke), +Over Picking Allowance,Dozvola za prekomjernu Odabir, +Over Receipt,Preko Dostavnice, +Over Receipt/Delivery of {0} {1} ignored for item {2} because you have {3} role.,Prekmjerni Prijema/Dostava {0} {1} zanemareno za artikal {2} jer imate {3} ulogu., +Over Transfer Allowance,Dozvola za prekomjerni Prenos, +Overbilling of {0} {1} ignored for item {2} because you have {3} role.,Prekomjerno Fakturisanje {0} {1} zanemareno za artikal {2} jer imate {3} ulogu., +Overbilling of {} ignored because you have {} role.,Prekomjerno Fakturisanje {} zanemareno jer imate {} ulogu., +Overdue Payment,Dospjelo Plaćanje, +Overdue Payments,Dospjela Plaćanja, +Overdue Tasks,Dospjeli Zadaci, +Overview,Pregled, +PDF Name,PDF Naziv, +POS Closed,Kasa Zatvorena, +POS Closing Failed,Zatvaranje Kase nije uspjelo, +POS Closing failed while running in a background process. You can resolve the {0} and retry the process again.,Zatvaranje Kase nije uspjelo dok je pokrenut u pozadini. Možete riješiti {0} i ponovo pokušati proces., +POS Invoice is already consolidated,Kasa Faktura je već objedinjena, +POS Invoice is not submitted,Kasa Faktura nije podnešena, +POS Invoice should have the field {0} checked.,Kasa Faktura treba da ima označeno polje {0} ., +POS Invoices will be consolidated in a background process,Kasa Fakture će biti objedinjene u pozadinskom procesu, +POS Invoices will be unconsolidated in a background process,Kasa Fakture će biti razjedinjene u pozadinskom procesu, +POS Profile doesn't match {},Kasa Profil ne poklapa se s {}, +POS Profile {} contains Mode of Payment {}. Please remove them to disable this mode.,Kasa Profil {} sadrži ovaj način plaćanja {}. Uklonite ga da onemogućite ovaj način., +POS Search Fields,Kasa Polja za Pretragu, +POS Setting,Kasa Postavke, +POS has been closed at {0}. Please refresh the page.,Kasa je zatvorena u {0}. Osvježi Stranicu., +Package No(s) already in use. Try from Package No {0},Broj(evi) Paketa su već u upotrebi. Pokušajte od Paketa broj {0}, +Packaging Slip From Delivery Note,Otpremnica iz Dostavnice, +Packed Items cannot be transferred internally,Upakovani Artikli se ne mogu interno prenositi, +Packed Qty,Upakovani Kvantitet, +Page Break After Each SoA,Prijelom stranice nakon svake SoA, +Paid Amount After Tax,Plaćeni Iznos nakon Oporezivanja, +Paid Amount After Tax (Company Currency),Plaćeni Iznos nakon Oporezivanja (Valuta Kompanije), +Paid From Account Type,Plaćeno sa Tipa Računa, +Paid To Account Type,Plaćeno na Tip Računa, +Pallets,Paleta, +Parameter Group,Parametar Grupe , +Parameter Group Name,Naziv Parametara Grupe, +Parcel Template,Dostavni Paket Šablon, +Parcel Template Name,Naziv Dostavnog Paketa Šablona, +Parcel weight cannot be 0,Težina paketa ne može biti 0, +Parcels,Paket, +Parent Account Missing,Nedostaje Nadređeni Račun, +Parent Document,Nadređeni Dokument, +Parent Item {0} must not be a Fixed Asset,Nadređeni Artikal {0} ne smije biti Osnovna Imovina, +Parent Row No,Nadređeni Red Broj, +Parent Row No not found for {0},Nadređeni Red Broj nije pronađen za {0}, +Parent Task {0} is not a Template Task,Nadređeni Yadatak {0} nije Šablon Zadatak, +Parsing Error,Pogreška Raščlanjivanja, +Partial Material Transferred,Djelomični Prenesen Materijal, +Partial Payment in POS Invoice is not allowed.,Djelomično plaćanje preko Kasa Fakture nije dozvoljeno., +Partial Stock Reservation,Djelomična Rezervacija Zaliha, +Partial Success,Djelimičan uspjeh, +"Partial stock can be reserved. For example, If you have a Sales Order of 100 units and the Available Stock is 90 units then a Stock Reservation Entry will be created for 90 units. ","Djelomične zalihe mogu se rezervirati. Na primjer, ako imate Prodajni Nalog od 100 jedinica, a Raspoloživa Zaliha je 90 jedinica, tada će se kreirati unos rezervacije zaliha za 90 jedinica. ", +Partially Delivered,Djelomično Dostavljeno, +Partially Reconciled,Djelimično Usaglašeno, +Partially Reserved,Djelomično Rezervisano, +Partly Paid,Delimično Plaćeno, +Partly Paid and Discounted,Djelomično Plaćeno i Sniženo, +Partnership,Partnerstvo, +Party Account No. (Bank Statement),Broj Računa Stranke (Izvod iz Banke), +Party Account {0} currency ({1}) and document currency ({2}) should be same,Valuta Računa Stranke {0} ({1}) i valuta dokumenta ({2}) trebaju biti iste, +Party IBAN (Bank Statement),IBAN Stranke (Izvod iz Banke), +Party Item Code,Kod Artikla Stranke, +Party Link,Veza Stranke, +Party Name/Account Holder (Bank Statement),Ime Stranke/Vlasnik Računa (Izvod iz Banke), +Party Specific Item,Specifični Artikal Stranke, +Party Type and Party can only be set for Receivable / Payable account

{0},Tip Stranke i Stranka mogu se postaviti samo za račun Potraživanja / Plaćanja

{0}, +Party Type and Party is required for Receivable / Payable account {0},Tip Stranke i Strana su obaveyni za račun Potraživanja / Plaćanja {0}, +Party can only be one of {0},Stranka može biti samo jedna od {0}, +Passport Details,Detalji Pasoša, +Pause Job,Pauziraj Posao, +Paused,Pauzirano, +Pay,Plati,Amount +Payment Amount (Company Currency),Iznos Plaćanja (Valuta Kompanije), +"Payment Entry {0} is linked against Order {1}, check if it should be pulled as advance in this invoice.","Unos plaćanja {0} je povezan naspram Naloga {1}, provjerite da li treba biti povučen kao predujam u ovoj fakturi.", +Payment Ledger,Registar Uplata, +Payment Ledger Balance,Stanje Registra Uplate, +Payment Ledger Entry,Unos Registra Uplate, +Payment Limit,Ograničenje Plaćanja, +Payment Reconciliation Allocation,Dodjela Usaglašavanja Plaćanja, +Payment Reconciliation Job: {0} is running for this party. Can't reconcile now.,Posao Usaglašavanja Plaćanja: {0} se vršiza ovu stranku. Nemože se sad usaglasiti., +Payment Reconciliation Settings,Postavke Usaglašavanje Plaćanja, +Payment Request Outstanding,Nerješeni Zahtjev Plaćanja, +Payment Request created from Sales Order or Purchase Order will be in Draft status. When disabled document will be in unsaved state.,"Platni Nalog je kreiran iz Prodajnog ili Kupovnog Naloga bit će u statusu Nacrta. Kada je onemogućen, dokument će biti u nespremljnom stanju.", +Payment Request is already created,Platni Zahtjev je već kreiran, +Payment Request took too long to respond. Please try requesting for payment again.,Odgovor na Platni Zahtjev trajao je predugo. Pokušajte ponovo zatražiti plaćanje., +Payment Requests cannot be created against: {0},Platni Zahtjevi ne mogu se kreirati naspram: {0}, +Payment Status,Status Plaćanja, +Payment Term Outstanding,Neizmireni Rok Plaćanja, +Payment Terms Status for Sales Order,Status Uslova Plaćanja Prodajnog Naloga, +Payment Terms from orders will be fetched into the invoices as is,Uslovi plaćanja iz Naloga će biti preneseni u Fakture takvi kakvi jesu, +Payment Unlink Error,Greška Otkazivanja Veze, +Payment of {0} received successfully.,Uspješno primljena uplata od {0}., +Payment of {0} received successfully. Waiting for other requests to complete...,Uplata od {0} je uspješno primljena. Čeka se da se drugi zahtjevi završe..., +Payment request failed,Zahtjev Plaćanje nije uspio, +Payment term {0} not used in {1},Uslov Plaćanja {0} nije korišten u {1}, +Pending processing,Obrada na Čekanju, +Per Received,Po Primljenom, +Percentage (%),Procentualno (%), +Percentage you are allowed to order beyond the Blanket Order quantity.,Procenat s kojim vam je dozvoljeno da naručite iznad količine Ugovornog Naloga., +Percentage you are allowed to sell beyond the Blanket Order quantity.,Procenat s kojim vam je dozvoljeno da prodate iznad količine Ugovornog Naloga., +Period Closed,Period Zatvoren, +Period Closing Entry For Current Period,Završni Unos Perioda za Tekući Period, +Period Closing Settings,Postavke Zatvaranja Perioda, +Period Details,Detalji Perioda, +Period End Date cannot be greater than Fiscal Year End Date,Datum Završetka Perioda ne može biti kasnije od Datuma Završetka Fiskalne Godine, +Period Start Date cannot be greater than Period End Date,Datum Početka Perioda ne može biti kasnije od Datuma Završetka Perioda, +Period Start Date must be {0},Datum Početka Perioda mora biti {0}, +Period To Date,Period do Datuma, +Period_from_date,Period od Datuma, +Phone Ext.,Telefon Ext., +Pick List Incomplete,Lista Odabira nije kompletna, +Pick Manually,Odaberi Ručno, +Pick Serial / Batch Based On,Odaberi Serijski / Šaržu na osnovu, +Pick Serial / Batch No,Odaberi Serijski/Šaržni Broj, +Picked Qty (in Stock UOM),Odabrana Količina (u Jedinici Zaliha), +Pickup,Preuzimanje, +Pickup Contact Person,Kontakt Osoba za Preuzimanje, +Pickup Date,Datum Preuzimanja, +Pickup Date cannot be before this day,Datum Preuzimanja ne može biti prije ovog dana, +Pickup From,Preuzimanje od, +Pickup To time should be greater than Pickup From time,Vrijeme Preuzimanja Do mora biti kasnije od Vreme Preuzimanja Od, +Pickup Type,Tip Preuzimanja, +Pickup from,Preuzimanje od, +Pickup to,Preuzimanje do, +Pipeline By,Lijevak prema, +Plaid Link Failed,Plaid Veya nije uspjela, +Plaid Link Refresh Required,Obavezno Ažuriranje Plaid Veze, +Plaid Link Updated,Plaid Link Ažuriran, +Plan to Request Qty,Planirana Količina, +Plant Dashboard,Nadzorna Tabla Postrojenja, +Plant Floor,Proizvodna Površina, +Please Set Priority,Postavi Prioritet, +Please Specify Account,Navedi Račun, +Please add 'Supplier' role to user {0}.,Dodaj ulogu 'Dobavljač' korisniku {0}., +Please add Request for Quotation to the sidebar in Portal Settings.,Dodaj Zahtjev za Ponudu na bočnu traku u Postavci Portala., +Please add Root Account for - {0},Dodaj Root Račun za - {0}, +Please add atleast one Serial No / Batch No,Molimo dodaj barem jedan Serijski Broj/Šaržni Broj, +Please add the Bank Account column,Dodaj kolonu Bankovni Račun, +Please add the account to root level Company - {0},Dodaj Račun Matičnoj Kompaniji - {0}, +Please add {1} role to user {0}.,Dodaj {1} ulogu korisniku {0}., +Please adjust the qty or edit {0} to proceed.,Podesi količinu ili uredi {0} da nastavite., +Please attach CSV file,Priložite CSV datoteku, +Please cancel and amend the Payment Entry,Poništi i Izmijeni Unos Plaćanja, +Please cancel payment entry manually first,Ručno otkaži Unos Plaćanja, +Please cancel related transaction.,Otkaži povezanu transakciju., +Please check Process Deferred Accounting {0} and submit manually after resolving errors.,Odaberi Obradi Odloženo Knjigovodstvo {0} i podnesi ručno nakon otklanjanja grešaka., +Please check either with operations or FG Based Operating Cost.,Odaberi ili s operacijama ili operativnim troškovima zasnovanim na Gotovom Proizvodu., +Please check the error message and take necessary actions to fix the error and then restart the reposting again.,"Provjeri poruku o grešci i poduzmite potrebne radnje da popravite grešku, a zatim ponovo pokrenite ponovno knjiženje.", +Please check your email to confirm the appointment,Provjeri e-poštu da potvrdite termin, +Please contact any of the following users to extend the credit limits for {0}: {1},Kontaktiraj bilo kojeg od sljedećih korisnika da produžite kreditna ograničenja za {0}: {1}, +Please contact any of the following users to {} this transaction.,Kontaktiraj bilo kojeg od sljedećih korisnika da {} ovu transakciju., +Please contact your administrator to extend the credit limits for {0}.,Kontaktiraj administratora da produži kreditna ograničenja za {0}., +Please create Landed Cost Vouchers against Invoices that have 'Update Stock' enabled.,Kreiraj verifikate za Obračunate Troškove naspram Faktura koje imaju omogućenu opciju „Ažuriraj Zalihe“., +Please create a new Accounting Dimension if required.,Kreiraj novu Knjigovodstvenu Dimenziju ako je potrebno., +Please create purchase from internal sale or delivery document itself,Kreiraj kupovinu iz interne prodaje ili samog dokumenta dostave, +"Please delete Product Bundle {0}, before merging {1} into {2}","Izbriši Artikal Paket {0}, prije spajanja {1} u {2}", +Please do not book expense of multiple assets against one single Asset.,Ne knjiži trošak više imovine naspram pojedinačne imovine., +Please enable Use Old Serial / Batch Fields to make_bundle,Omogući Koristi Stari Serijski / Šaržna polja za Kreiraj Paket, +Please enable only if the understand the effects of enabling this.,Omogući samo ako razumijete efekte omogućavanja., +Please enable {0} in the {1}.,Omogući {0} u {1}., +Please enable {} in {} to allow same item in multiple rows,Omogući {} u {} da dozvolite isti artikal u više redova, +Please ensure that the {0} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Potvrdi da je {0} račun račun Bilansa Stanja. Možete promijeniti nadređeni račun u račun Bilansa Stanja ili odabrati drugi račun., +Please ensure that the {0} account {1} is a Payable account. You can change the account type to Payable or select a different account.,Potvrdi da je {0} račun {1} Troškovni račun. Možete promijeniti vrstu računa u Troškovni ili odabrati drugi račun., +Please ensure {} account is a Balance Sheet account.,Potvrdi je li {} račun račun Bilansa Stanja., +Please ensure {} account {} is a Receivable account.,Potvrdi da je {} račun {} račun Potraživanja., +Please enter Root Type for account- {0},Unesi Kontnu Klasu za račun- {0}, +Please enter Serial Nos,Unesi Serijski Broj, +Please enter Shipment Parcel information,Unesi Podatke Paketa Dostave, +Please enter Stock Items consumed during the Repair.,Unesi Artikle Zaliha koje su potrošene tokom Popravke., +Please enter mobile number first.,Unesi broj mobilnog telefona., +Please enter quantity for item {0},Unesi količinu za artikal {0}, +Please enter serial nos,Unesi Serijski Broj, +"Please first set Last Name, Email and Phone for the user","Prvo postavite Prezime, E-poštu i Telefon korisnika", +Please fix overlapping time slots for {0},Popravi preklapanje vremenskih termina za {0}, +Please fix overlapping time slots for {0}.,Popravi preklapanje vremenskih termina za {0}., +Please import accounts against parent company or enable {} in company master.,Uvezi račune naspram matične kompanije ili omogući {} u Postavkama Kompanije., +"Please keep one Applicable Charges, when 'Distribute Charges Based On' is 'Distribute Manually'. For more charges, please create another Landed Cost Voucher.","Zadrži jednu primjenjivu naknadu, kada je 'Distribuiraj Naknade na osnovu' kao 'Distribuiraj Ručno'. Za više troškova, kreiraj drugi Verifikat Obračunatih Troškova.", +Please make sure the file you are using has 'Parent Account' column present in the header.,Potvrdi da datoteka koju koristite ima kolonu 'Nadređeni Račun' u zaglavlju., +Please mention 'Weight UOM' along with Weight.,Navedi 'Jedinicu Težine' zajedno s Težinom., +Please mention '{0}' in Company: {1},Navedi '{0}' u kompaniji: {1}, +Please mention the Current and New BOM for replacement.,Navedi Trenutnu i Novu Sastavnicu za zamjenu., +Please rectify and try again.,Ispravi i pokušaj ponovo., +Please refresh or reset the Plaid linking of the Bank {}.,Osvježi ili poništi Plaid vezu od Banke {}., +Please save before proceeding.,Spremi prije nego što nastaviš., +Please select Bank Account,Odaberi Bankovni Račun, +Please select Finished Good Item for Service Item {0},Molimo odaberi Artikal Gotovog Proizvoda za servisni artikal {0}, +Please select Serial/Batch Nos to reserve or change Reservation Based On to Qty.,Odaberi Serijski/Šaržni Broj da rezervišete ili promijenite rezervaciju na osnovu za Količinu., +Please select Subcontracting Order instead of Purchase Order {0},Odaberi Podizvođački umjesto Kupovnog Naloga {0}, +Please select Unrealized Profit / Loss account or add default Unrealized Profit / Loss account account for company {0},Odaberi Račun Nerealiziranog Rezultata ili postavi Standard Račun Nerealiziranog Rezultata za kompaniju {0}, +Please select a Subcontracting Purchase Order.,Odaberi Podugovorni Kupovni Nalog., +Please select a Warehouse,Odaberi Skladište, +Please select a Work Order first.,Odaberi Radni Nalog., +Please select a country,Odaberi Zemlju, +Please select a customer for fetching payments.,Odaberi Klijenta za preuzimanje plaćanja., +Please select a date,Odaberi Datum, +Please select a date and time,Odaberi Datum i Vrijeme, +Please select a row to create a Reposting Entry,Odaberi red za kreiranje Unosa Ponovnog Knjiženje, +Please select a supplier for fetching payments.,Odaberi Dobavljača za preuzimanje plaćanja., +Please select a valid Purchase Order that has Service Items.,Odaberi važeći Kupovni Nalog koja sadrži servisne artikle., +Please select a valid Purchase Order that is configured for Subcontracting.,Odaberi važeći Kupovni Nalog koji je konfigurisan za Podugovor., +Please select an item code before setting the warehouse.,Odaberite kod artikla prije postavljanja skladišta., +Please select either the Item or Warehouse or Warehouse Type filter to generate the report.,Odaberite filter Artikal ili Skladišta ili Tip Skladišta da biste generirali izvještaj., +Please select items,Odaberi artikle, +Please select items to reserve.,Odaber artikle za rezervaciju., +Please select items to unreserve.,Odaberi artikle koje želite izbrisati iz rezervacije., +Please select only one row to create a Reposting Entry,Odaberi samo jedan red da kreirate Unos Ponovnog Knjiženja, +Please select rows to create Reposting Entries,Odaberi redove da kreirate unose za ponovno knjiženje, +Please select the required filters,Odaberi obavezne filtere, +Please select valid document type.,Odaberi važeći tip dokumenta., +Please set '{0}' in Company: {1},Postavi '{0}' u Kompaniji: {1}, +Please set Account,Postavi Račun, +Please set Accounting Dimension {} in {},Postavi Knjigovodstvenu Dimenziju {} u {}, +Please set Email/Phone for the contact,Postavi E-poštu/Telefon za kontakt, +Please set Fiscal Code for the customer '%s',Postavi Fiskalni Kod za Klijenta '%s', +Please set Fiscal Code for the public administration '%s',Postavi Fiskalni Kod za Javnu Upravu '%s', +Please set Fixed Asset Account in {} against {}.,Postavi Račun Fiksne Imovine u {} naspram {}., +Please set Opening Number of Booked Depreciations,Postavi Početni Broj Knjiženih Amortizacija, +Please set Parent Row No for item {0},Postavi Broj Nadređenog reda za artikal {0}, +Please set Root Type,Postavi Kontni Tip, +Please set Tax ID for the customer '%s',Postavi Fiskalni Broj za Klijenta '%s', +Please set VAT Accounts in {0},Postavi PDV Račune u {0}, +"Please set Vat Accounts for Company: ""{0}"" in UAE VAT Settings","Postavi PDV Račune za Kompaniju: ""{0}"" u postavkama PDV-a UAE", +Please set a Cost Center for the Asset or set an Asset Depreciation Cost Center for the Company {},Postavi Centar Troškova za Imovinu ili postavite Centar Troškova Amortizacije za kompaniju {}, +Please set a default Holiday List for Company {0},Postavi standard Listu Praznika za Kompaniju {0}, +Please set an Address on the Company '%s',Postavi Adresu Kompanije '%s', +Please set an Expense Account in the Items table,Postavi Račun Troškova u tabeli Artikala, +Please set both the Tax ID and Fiscal Code on Company {0},Postavi i Porezni i Fiskalni broj za {0}, +Please set default Exchange Gain/Loss Account in Company {},Postavi Standard Račun Rezultata u Kompaniji {}, +Please set default Expense Account in Company {0},Postavi Standard Račun Troškova u Kompaniji {0}, +Please set default cost of goods sold account in company {0} for booking rounding gain and loss during stock transfer,Postavi standardni račun troška prodanog proizvoda u kompaniji {0} za zaokruživanje knjiženja rezultata tokom prijenosa zaliha, +Please set filters,Postavi filtere, +Please set one of the following:,Postavi jedno od sljedećeg:, +Please set the cost center field in {0} or setup a default Cost Center for the Company.,Postavi Centra Troškova u polje {0} ili postavite Standard Centar Troškova za kompaniju., +Please set {0} first.,Postavi {0}., +Please set {0} in BOM Creator {1},Postavi {0} u Konstruktoru Sastavnice {1}, +Please set {0} in Company {1} to account for Exchange Gain / Loss,Postavi {0} u Kompaniji {1} kako biste knjižili Dobit/Gubitak Deviznog Kursa, +"Please set {0} to {1}, the same account that was used in the original invoice {2}.","Postavi {0} na {1}, isti račun koji je korišten u originalnoj fakturi {2}.", +Please setup and enable a group account with the Account Type - {0} for the company {1},Podesi i omogući grupni račun sa Kontnom Klasom - {0} za Kompaniju {1}, +Please share this email with your support team so that they can find and fix the issue.,Podijeli ovu e-poštu sa svojim timom za podršku kako bi mogli pronaći i riješiti problem., +Please specify a {0} first.,Navedi {0}., +Please try again in an hour.,Pokušaj ponovo za sat vremena., +Please update Repair Status.,Ažuriraj Status Popravke., +Portal User,Korisnik Portala, +Portal Users,Korisnici Portala, +Posting Date Inheritance for Exchange Gain / Loss,Datum knjiženja nasljeđen za Devizni Kurs Rezultata, +Posting Datetime,Datuma Knjiženja, +Powered by {0},Pokreće {0}, +Preview Required Materials,Pregledaj Obavezne Materijale, +"Previous Year is not closed, please close it first","Prethodna Godina nije zatvorena, prvo je zatvorite", +Price ({0}),Cijena ({0}), +Price List Defaults,Standard Cijenovnika, +Price Per Unit ({0}),Cijena po Jedinici ({0}), +Price is not set for the item.,Cijena nije određena za artikal., +Primary Address and Contact,Primarna Adresa i Kontakt, +Primary Contact,Primarni Kontakt, +Primary Party,Primarna Stranka, +Primary Role,Primarna Uloga, +Print Format Builder,Konstruktor Formata Ispisa, +Print Receipt on Order Complete,Ispiši Račun pri dovršenju Naloga, +Print Style,Ispisni Stil, +Printed on {0},Ispisano {0}, +Printing,Ispisivanje, +Priority cannot be lesser than 1.,Prioritet ne može biti manji od 1., +Priority is mandatory,Prioritet je Obavezan, +Probability,Vjerovatnoća, +Process Loss,Procesni Gubitak, +Process Loss Percentage cannot be greater than 100,Procentualni Gubitka Procesa ne može biti veći od 100, +Process Loss Qty,Količinski Gubitak Procesa, +Process Loss Report,Izvještaj Gubitka Procesa, +Process Loss Value,Vrijednost Gubitka Procesa, +Process Payment Reconciliation,Obradi Usaglašavanja Plaćanja, +Process Payment Reconciliation Log,Zapisnik Obrade Usaglašavanja Plaćanja, +Process Payment Reconciliation Log Allocations,Dodjele Zapisnika Obrade Usaglašavanja Plaćanja, +Process Statement Of Accounts CC,Obradi Kopiju Izvoda Računa, +Process Subscription,Obradi Pretplatu, +Process in Single Transaction,Obrada u Jednoj Transakciji, +Processed BOMs,Obrađene Sastavnice, +Processing Sales! Please Wait...,Obrada Prodaje u toku ! Pričekajte..., +Produced / Received Qty,Proizvedena / Primljeno Količina, +Product Price ID,ID Cijene Proizvoda, +Production Plan Already Submitted,Plan Proizvodnje je Podnešen, +Production Plan Item Reference,Referenca Artikla Plana Proizvodnje, +Production Plan Qty,Količina Plana Proizvodnje, +Production Plan Sub Assembly Item,Artikal Podsklopa Plana Proizvodnje, +Production Plan Sub-assembly Item,Artikal Podsklopa Plana Proizvodnje, +Production Plan Summary,Sažetak Plana Proizvodnje, +Profile,Profil, +Profit and Loss Summary,Sažetak Rezultata, +Progress,Napredak, +Progress (%),Napredak (%), +Project Progress:,Napredak Projekta:, +Prompt Qty,Količina, +Prospect,Potencijal, +Prospect Lead,Pperspektivan Potencijalni Klijent, +Prospect Opportunity,Perspektivna Prilika, +Prospect Owner,Potencijal vlasnik, +Prospect {0} already exists,Perspektiva {0} već postoji, +Provisional Account,Privremeni Račun, +Provisional Expense Account,Račun Privremenih Troškova, +Publisher,Izdavač, +Publisher ID,ID Izdavača, +Purchase Order Item reference is missing in Subcontracting Receipt {0},Referenca Artikal Kupovnog Naloga nedostaje u Priznanici Podugovora {0}, +Purchase Orders {0} are un-linked,Kupovni Nalozi {0} nisu povezani, +Purchase Receipt (Draft) will be auto-created on submission of Subcontracting Receipt.,Kupovni Račun (nacrt) će se automatski kreirati pri podnošenju Podugovornog Računa., +Purchase Receipt {0} created.,Kupovni Račun {0} je kreiran., +Purchase Value,Kupovna Vrijednost, +Purchases,Kupovina, +Purposes Required,Svrhe su Obavezne, +Putaway Rule,Pravilo Odlaganja, +Putaway Rule already exists for Item {0} in Warehouse {1}.,Pravilo Odlaganja već postoji za Artikal {0} u Skladištu {1}., +Qty ,Količina , +Qty (Company),Količina (Kompanija), +Qty (Warehouse),Količina (Skladište), +Qty After Transaction,Količina Nakon Transakcije, +Qty As Per BOM,Količina prema Sastavnici, +Qty Change,Promjena Količine, +Qty In Stock,Količina na Zalihama, +Qty Per Unit,Količina po Jedinici, +"Qty To Manufacture ({0}) cannot be a fraction for the UOM {2}. To allow this, disable '{1}' in the UOM {2}.","Količina za Proizvodnju ({0}) ne može biti razlomak za Jedinicu {2}. Da biste to omogućili, onemogući '{1}' u Jedinici {2}.", +Qty To Produce,Količina za Proizvesti, +Qty Wise Chart,Količinski Dijagram, +Qty and Rate,Količina i Cijena, +Qty as Per Stock UOM,Količina po Jedinici Zaliha, +Qty for which recursion isn't applicable.,Količina za koju rekurzija nije primjenjiva., +Qty in Stock UOM,Količina u Jedinici Zaliha, +Qty of Finished Goods Item should be greater than 0.,Količina Gotovog Proizvoda treba da bude veća od 0., +Qty to Be Consumed,Količina za Potrošnju, +Qty to Build,Količina za Proizvodnju, +Qty to Fetch,Količina za Preuzeti, +Qty to Produce,Količina za Proizvodnju, +Qualification Status,Status Kvalifikacije, +Qualified,Kvalificiran, +Qualified By,Kvalificirao, +Qualified on,Kvalificiran, +Quality Inspection Parameter,Parametar Kontrole Kvaliteta, +Quality Inspection Parameter Group,Grupa Parametara Kontrole Kvaliteta, +Quality Inspection Settings,Postavke Kontrole Kvaliteta, +Quality Inspection(s),Kontrola Kvaliteta, +Quantity (A - B),Količina (A - B), +Quantity is required,Količina je obavezna, +"Quantity must be greater than zero, and less or equal to {0}",Količina mora biti veća od nule i manja ili jednaka {0}, +Quantity to Produce should be greater than zero.,Količina za Proizvodnju treba da bude veća od nule., +Quantity to Scan,Količina za Skeniranje, +Quarter {0} {1},Četvrtina {0} {1}, +Queue Size should be between 5 and 100,Veličina Reda čekanja treba biti između 5 i 100, +Quotation Number,Broj Ponude, +Quoted Amount,Navedeni Iznos, +Rate Section,Sekcija Cijena, +Rate of Depreciation (%),Stopa Amortizacije (%), +Rate of Stock UOM,Cijena Jedinice Zaliha, +Ratios,Omjeri, +Raw Material Cost Per Qty,Cijena Sirovine po Količini, +Raw Material Item,Artikal Sirovine, +Raw Material Value,Vrijednost Sirovine, +Raw Materials Actions,Akcije Sirovina, +Raw Materials Warehouse,Skladište Sirovina, +Reached Root,Dostignut je Najviši Nivo, +Reading Value,Vrijednost Čitanja, +Reason for hold:,Razlog Čekanja:, +Rebuild Tree,Ažuriraj Stablo, +Rebuilding BTree for period ...,Obnova BTree-a za period ..., +Recalculate Incoming/Outgoing Rate,Preračunaj Kupovnu/Prodajnu Cijenu, +Recalculating Purchase Cost against this Project...,Preračunavanje Troškova Kupovine naspram ovog Projekta..., +Receivable/Payable Account,Račun Potraživanja / Plaćanja, +Receivable/Payable Account: {0} doesn't belong to company {1},Račun Potraživanja/ Plaćanja: {0} ne pripada kompaniji {1}, +Received Amount After Tax,Primljeni Iznos nakon PDV-a, +Received Amount After Tax (Company Currency),Primljeni iznos nakon PDV-a (Valuta Kompanije), +Received Amount cannot be greater than Paid Amount,Primljeni Iznos ne može biti veći od Plaćenog Iznosa, +Received Qty in Stock UOM,Primljena Količina u Jedinici Zaliha, +Recent Orders,Nedavni Nalozi, +Recent Transactions,Nedavne Transakcije, +Reconcile All Serial Nos / Batches,Usaglasi sve Serijske Brojeve / Šarže, +Reconcile Effect On,Usaglašavanje stupa na snagu, +Reconcile on Advance Payment Date,Usaglasi na Datum Uplate Predujma, +Reconcile the Bank Transaction,Usaglasi Bankovnu Transakciju, +Reconciled Entries,Usaglašeni Unosi, +Reconciliation Date,Datum Usaglašavanja, +Reconciliation Error Log,Zapisnik Grešaka Usaglašavanja, +Reconciliation Logs,Zapisnik Usaglašavanja, +Reconciliation Progress,Napredak Usaglašavanja, +Reconciliation Queue Size,Veličina reda Usaglašavanja, +Reconciliation Takes Effect On,Usaglašavanje Stupa na Snagu, +Recording HTML,HTML Snimanja, +Recoverable Standard Rated expenses should not be set when Reverse Charge Applicable is Y,Standardni nadoknadivi troškovi ne bi trebali biti postavljeni kada je Suprotna Naplata Da, +Recreate Stock Ledgers,Ponovno kreiraj Registar Zaliha, +Recurse Every (As Per Transaction UOM),Povrati Svaki (prema Jedinici Transakcije), +Recurse Over Qty cannot be less than 0,Rekurzija preko Količine ne može biti manja od 0, +Recursive Discounts with Mixed condition is not supported by the system,Sistem ne podržava rekurzivne popuste sa mješovitim uvjetima, +Reference Date for Early Payment Discount,Referentni Datum za popust pri ranijem plaćanju, +Reference Detail,Referentni Detalj, +Reference DocType,Referentni DocType, +Reference Exchange Rate,Referentni Devizni Kurs, +Reference No,Referentni Broj, +Reference number of the invoice from the previous system,Referentni Broj Fakture iz prethodnog sistema, +References to Sales Invoices are Incomplete,Reference na Prodajne Fakture su Nepotpune, +References to Sales Orders are Incomplete,Reference na Prodajne Naloge su Nepotpune, +References {0} of type {1} had no outstanding amount left before submitting the Payment Entry. Now they have a negative outstanding amount.,Reference {0} tipa {1} nisu imale nepodmirenog iznosa prije podnošenja unosa plaćanja. Sada imaju negativan nepodmireni iznos., +Refresh Google Sheet,Osvježite Google Sheet, +Refresh Plaid Link,Osvježite Plaid Link, +Rejected ,Odbijeno , +Rejected Serial and Batch Bundle,Odbijen Serijski i Šaržni Paket, +Rejected Warehouse and Accepted Warehouse cannot be same.,Odbijeno i Prihvaćeno Skladište ne mogu biti isto., +Remarks Column Length,Dužina Kolone Napomene, +Remove Parent Row No in Items Table,Ukloni Nadređeni Red Broj u Tabeli Artikala, +Remove SABB Entry,Ukloni Unos Serijskog i Šaržnog Paketa, +Removing rows without exchange gain or loss,Uklanjanje redova bez dobitka ili gubitka na deviznom kursu, +Repair,Popravi, +Repair Asset,Popravi Imovinu, +Repair Details,Detalji Popravke, +"Replace a particular BOM in all other BOMs where it is used. It will replace the old BOM link, update cost and regenerate ""BOM Explosion Item"" table as per new BOM. +It also updates latest price in all the BOMs.","Zamijeni određenu Sastavnicu u svim ostalim Sastavnicama gdje se koristi. Zamijenit će staru vezu Sastavnice, ažurirati troškove i regenerirati tabelu ""Artikal Nestavljene Sastavnice"" prema novoj Sastavnici. +Također ažurira najnoviju cijenu u svim Sastavnicama.", +Report Error,Prijavi Grešku, +Report Filters,Izvještajni Filteri, +Report View,Pregled Izvještaja, +Repost Accounting Ledger,Ponovo knjiži Knjigovodstveni Registar, +Repost Accounting Ledger Items,Unosi Ponovnog Knjiženja Knjigovodstvenog Registra, +Repost Accounting Ledger Settings,Postavke ponovnog knjiženja Knjigovodstvenog Registra, +Repost Allowed Types,Dozvoljeni Tipovi Ponovnog Knjiženja, +Repost Error Log,Zapisnik Grešaka Ponovnog Knjiženja, +Repost Item Valuation,Ponovo Knjiži Vrijednost Artikla, +Repost Payment Ledger,Ponovo Knjiži Registar Plaćanja, +Repost Payment Ledger Items,Artikal Ponovnog Knjiženja Registra Plaćanja, +Repost Status,Status Ponovnog Knjiženja, +Repost has started in the background,Ponovno Knjiženje je započeto u pozadini, +Repost in background,Ponovo Knjiži u pozadini, +Repost started in the background,Ponovno Knjiženje je započeto u pozadini, +Reposting Completed {0}%,Ponovno Knjiženje je izavršeno do {0}%, +Reposting Data File,Datoteke Podataka Ponovnog Knjiženja, +Reposting Info,Informacija Ponovnog Knjiženja, +Reposting Progress,Napredak Ponovnog Knjiženja, +Reposting entries created: {0},Unosi Ponovno kniženja kreirani: {0}, +Reposting has been started in the background.,Ponovno Knjiženje je započeto u pozadini., +Reposting in the background.,Ponovno Knjiženje u pozadini., +Represents a Financial Year. All accounting entries and other major transactions are tracked against the Fiscal Year.,Predstavlja Finansijsku Godinu. Svi knjigovodstveni unosi i druge velike transakcije prate se naspram Fiskalne Godine., +Request Parameters,Parametri Zahtjeva, +Request Timeout,Zahtjev je Istekao, +Reservation Based On,Rezervacija Na Osnovu, +Reserve,Rezerviši, +Reserve Stock,Rezerviši Zalihe, +"Reserved Qty ({0}) cannot be a fraction. To allow this, disable '{1}' in UOM {3}.","Rezervisana Količina ({0}) ne može biti razlomak. Da biste to omogućili, onemogući '{1}' u Jedinici {3}.", +Reserved Qty for Production Plan,Rezervisana Količina za Plan Proizvodnje, +Reserved Qty for Subcontract,Rezervisana Količina za Podugovor, +Reserved Qty should be greater than Delivered Qty.,Rezervisana Količina bi trebala biti veća od Dostavljene Količine., +Reserved Serial No.,Rezervisani Serijski Broj, +Reserved Stock,Rezervisane Zalihe, +Reserved Stock for Batch,Rezervisane Zalihe za Šaržu, +Reserved for POS Transactions,Rezervirano za Kasa Transakcije, +Reserved for Production,Rezervisano za Proizvodnju, +Reserved for Production Plan,Rezervisano za Plan Proizvodnje, +Reserved for Sub Contracting,Rezervirano za Podugovor, +Reserving Stock...,Rezervacija Zaliha..., +Reset Company Default Values,Poništi Standard Vrijednosti Kompanije, +Reset Plaid Link,Poništi Plaid Link, +Reset Raw Materials Table,Poništi Tabelu Sirovina, +Resolution Due,Rok Rješenja, +Response and Resolution,Odgovor i Rezolucija, +Restart,Ponovo pokreni, +Restore Asset,Vrati Imovinu, +Restrict,Ograniči, +Restrict Items Based On,Ograniči Artikle na osnovu, +Result Key,Ključ Rezultata, +Resume Job,Nastavi Posao, +Resume Timer,Nastavi Tajmer, +Retried,Ponovo pokušao, +Retry,Ponovi, +Retry Failed Transactions,Ponovi Neuspjele Transakcije, +Return Against,Povrat Naspram, +Return Against Subcontracting Receipt,Povrat naspram Podizvođačkog Računa , +Return Components,Povrat Komponenti, +Return Issued,Povrat Izdat, +Return Qty,Povratna Količina, +Return Qty from Rejected Warehouse,Povratna Količina iz Odbijenog Skladišta, +Return of Components,Povrat Komponenti, +Returned,Vraćeno, +Returned Against,Povrat naspram, +Returned Qty ,Vraćeno Količina, +Returned Qty in Stock UOM,Vraćena količina u Jedinici Zaliha, +Returned exchange rate is neither integer not float.,Vraćeni Devizni Kurs nije ni ceo broj ni zarezni broj., +Revaluation Journals,Revaloracijski Žurnali, +Revaluation Surplus,Revalorizacioni Višak, +Revenue,Prihod, +Reversal Of,Suprotno od, +Right Child,Desno Podređen, +Role Allowed to Create/Edit Back-dated Transactions,Uloga dozvoljena da Kreira/Uređuje Transakcije s prijašnjim datumom, +Role Allowed to Over Bill ,Uloga dozvoljena da prekomjerno Fakturiše , +Role Allowed to Over Deliver/Receive,Uloga dozvoljena za prekomjernu Dostavu/Primanje, +Role Allowed to Override Stop Action,Uloga dozvoljena da Poništi Akciju Zaustavljanja, +Role allowed to bypass Credit Limit,Uloga dozvoljena da zaobiđe Kreditno Ograničenje, +Root,Korijen, +"Root Type for {0} must be one of the Asset, Liability, Income, Expense and Equity","Kontna Klasa za {0} mora biti jedna od imovine, obaveza, prihoda, rashoda i kapitala", +Round Free Qty,Zaoktuži Besplatnu Kolićinu, +Round Off Tax Amount,Zaokruženi Iznos PDV-a, +Round Off for Opening,Zaokruži Početno, +Round Tax Amount Row-wise,Zaokruži Iznos PDV-a po redovima, +Rounding Loss Allowance,Dozvola Zaokruživanja Gubitka, +Rounding Loss Allowance should be between 0 and 1,Dozvola Zaokruživanje Gubitka treba da bude između 0 i 1, +Rounding gain/loss Entry for Stock Transfer,Unos Zaokruživanja Rezultat za Prijenos Zaliha, +Row #,Red #, +Row # {0}:,Red # {0}:, +Row # {0}: Please add Serial and Batch Bundle for Item {1},Red # {0}: Dodaj Serijski i Šaržni Paket za Artikal {1}, +Row #{0}: A reorder entry already exists for warehouse {1} with reorder type {2}.,Red #{0}: Unos ponovnog naručivanja već postoji za skladište {1} sa tipom ponovnog naručivanja {2}., +Row #{0}: Acceptance Criteria Formula is incorrect.,Red #{0}: Formula Kriterijuma Prihvatanja je netačna., +Row #{0}: Acceptance Criteria Formula is required.,Red #{0}: Formula Kriterijuma Prihvatanja je obavezna., +Row #{0}: Accepted Warehouse and Rejected Warehouse cannot be same,Red #{0}: Prihvaćeno Skladište i Odbijeno Skladište ne mogu biti isto, +Row #{0}: Accepted Warehouse is mandatory for the accepted Item {1},Red #{0}: Prihvaćeno Skladište je obavezno za Prihvaćeni Artikal {1}, +Row #{0}: Allocated Amount cannot be greater than Outstanding Amount of Payment Request {1},Red #{0}: Dodijeljeni Iznos ne može biti veći od Nepodmirenog Iznosa zahtjeva za plaćanje {1}, +Row #{0}: Allocated amount:{1} is greater than outstanding amount:{2} for Payment Term {3},Red #{0}: Dodijeljeni iznos:{1} je veći od nepodmirenog iznosa:{2} za rok plaćanja {3}, +Row #{0}: Amount must be a positive number,Red #{0}: Iznos mora biti pozitivan broj, +Row #{0}: BOM is not specified for subcontracting item {0},Red #{0}: Sastavnica nije navedena za podizvođački artikal {0}, +Row #{0}: Batch No {1} is already selected.,Red #{0}: Broj Šarže {1} je već odabran., +Row #{0}: Cannot allocate more than {1} against payment term {2},Red #{0}: Ne može se dodijeliti više od {1} naspram uslova plaćanja {2}, +Row #{0}: Cannot transfer more than Required Qty {1} for Item {2} against Job Card {3},Red #{0}: Ne može se prenijeti više od potrebne količine {1} za artikal {2} naspram Radne Kartice {3}, +Row #{0}: Consumed Asset {1} cannot be Draft,Red #{0}: Potrošena Imovina {1} ne može biti nacrt, +Row #{0}: Consumed Asset {1} cannot be cancelled,Red #{0}: Potrošena Imovina {1} ne može se poništiti, +Row #{0}: Consumed Asset {1} cannot be the same as the Target Asset,Red #{0}: Potrošena imovina {1} ne može biti isto što i Ciljna Imovina, +Row #{0}: Consumed Asset {1} cannot be {2},Red #{0}: Potrošena Imovina {1} ne može biti {2}, +Row #{0}: Consumed Asset {1} does not belong to company {2},Red #{0}: Potrošena Imovina {1} ne pripada kompaniji {2}, +Row #{0}: Cumulative threshold cannot be less than Single Transaction threshold,Red #{0}: Kumulativni prag ne može biti manji od praga pojedinačne transakcije, +Row #{0}: Dates overlapping with other row,Red #{0}: Datumi se preklapaju sa drugim redom, +Row #{0}: Default BOM not found for FG Item {1},Red #{0}: Standard Sastavnica nije pronađena za gotov proizvod artikla {1}, +Row #{0}: Expense Account not set for the Item {1}. {2},Red #{0}: Račun Troškova nije postavljen za artikal {1}. {2}, +Row #{0}: Finished Good Item Qty can not be zero,Red #{0}: Količina gotovog proizvoda artikla ne može biti nula, +Row #{0}: Finished Good Item is not specified for service item {1},Red #{0}: Gotov Proizvod artikla nije navedena zaservisni artikal {1}, +Row #{0}: Finished Good Item {1} must be a sub-contracted item,Red #{0}: Gotov Proizvod Artikla {1} mora biti podugovorni artikal, +Row #{0}: Finished Good reference is mandatory for Scrap Item {1}.,Red #{0}: Gotov Proizvod referenca je obavezna za Otpadni Artikal {1}., +Row #{0}: For {1} Clearance date {2} cannot be before Cheque Date {3},Red #{0}: Za {1} datum odobrenja {2} ne može biti prije datuma Čeka {3}, +"Row #{0}: For {1}, you can select reference document only if account gets credited","Red #{0}: Za {1}, možete odabrati referentni dokument samo ako je račun kreditiran", +"Row #{0}: For {1}, you can select reference document only if account gets debited","Red #{0}: Za {1}, možete odabrati referentni dokument samo ako račun bude zadužen", +Row #{0}: From Date cannot be before To Date,Red #{0}: Od datuma ne može biti prije Do datuma, +Row #{0}: Item {1} does not exist,Red #{0}: Artikel {1} ne postoji, +"Row #{0}: Item {1} has been picked, please reserve stock from the Pick List.","Red #{0}: Artikal {1} je odabran, rezerviši zalihe sa Liste Odabira.", +Row #{0}: Item {1} is not a service item,Red #{0}: Artikal {1} nije servisni artikal, +Row #{0}: Item {1} is not a stock item,Red #{0}: Artikal {1} nije artikal na zalihama, +Row #{0}: Only {1} available to reserve for the Item {2},Red #{0}: Samo {1} je dostupno za rezervisanje za artikal {2}, +Row #{0}: Please select Item Code in Assembly Items,Red #{0}: Odaberi Kod Artikla u Artiklima Montaže, +Row #{0}: Please select the BOM No in Assembly Items,Red #{0}: Odaberi broj Spiska Materijala u Artiklima Montaže, +Row #{0}: Please select the Sub Assembly Warehouse,Red #{0}: Odaberi Skladište Podmontaže, +Row #{0}: Please update deferred revenue/expense account in item row or default account in company master,Red #{0}: Ažuriraj račun odloženih prihoda/troškova u redu artikla ili sttandard račun u postavkama kompanije, +Row #{0}: Qty increased by {1},Red #{0}: Količina povećana za {1}, +Row #{0}: Qty must be a positive number,Red #{0}: Količina mora biti pozitivan broj, +Row #{0}: Qty should be less than or equal to Available Qty to Reserve (Actual Qty - Reserved Qty) {1} for Iem {2} against Batch {3} in Warehouse {4}.,Red #{0}: Količina bi trebala biti manja ili jednaka Dostupnoj Količini za Rezervaciju (stvarna količina - rezervisana količina) {1} za artikal {2} naspram Šarže {3} u Skladištu {4}., +Row #{0}: Quality Inspection is required for Item {1},Red #{0}: Kontrola Kvaliteta je obavezna za artikal {1}, +Row #{0}: Quality Inspection {1} is not submitted for the item: {2},Red #{0}: Kontrola kKvaliteta {1} nije dostavljena za artikal: {2}, +Row #{0}: Quality Inspection {1} was rejected for item {2},Red #{0}: Kontrola Kvaliteta {1} je odbijena za artikal {2}, +Row #{0}: Quantity to reserve for the Item {1} should be greater than 0.,Red #{0}: Količina koju treba rezervisati za artikal {1} treba biti veća od 0., +Row #{0}: Rate must be same as {1}: {2} ({3} / {4}),Red #{0}: Cijena mora biti ista kao {1}: {2} ({3} / {4}), +Row #{0}: Rejected Qty cannot be set for Scrap Item {1}.,Red #{0}: Odbijena Količina ne može se postaviti za Artikal Otpada {1}., +Row #{0}: Rejected Warehouse is mandatory for the rejected Item {1},Red #{0}: Odbijeno Skladište je obavezno za odbijeni artikal {1}, +Row #{0}: Scrap Item Qty cannot be zero,Red #{0}: Količina Otpadnih Artikala ne može biti nula, +"Row #{0}: Selling rate for item {1} is lower than its {2}. + Selling {3} should be atleast {4}.

Alternatively, + you can disable selling price validation in {5} to bypass + this validation.","Red #{0}: Prodajna Cijena za artikal {1} je niža od njegovog {2}. + Prodajna Cijena {3} bi trebala biti najmanje {4}.

Alternativno, + možete onemogućiti validaciju prodajne cijene u {5} da biste zaobišli + ovu validaciju.", +Row #{0}: Serial No {1} for Item {2} is not available in {3} {4} or might be reserved in another {5}.,Red #{0}: Serijski broj {1} za artikal {2} nije dostupan u {3} {4} ili može biti rezervisan u drugom {5}., +Row #{0}: Serial No {1} is already selected.,Red #{0}: Serijski Broj {1} je već odabran., +Row #{0}: Start Time and End Time are required,Red #{0}: Vrijeme Početka i Vrijeme Završetka je obavezno, +Row #{0}: Start Time must be before End Time,Red #{0}: Vrijeme Početka mora biti prije Vremena Završetka, +Row #{0}: Status is mandatory,Red #{0}: Status je obavezan, +Row #{0}: Stock cannot be reserved for Item {1} against a disabled Batch {2}.,Red #{0}: Zaliha se ne može rezervisati za artikal {1} naspram onemogućene Šarže {2}., +Row #{0}: Stock cannot be reserved for a non-stock Item {1},Red #{0}: Zalihe se ne mogu rezervirati za artikal bez zaliha {1}, +Row #{0}: Stock cannot be reserved in group warehouse {1}.,Red #{0}: Zalihe se ne mogu rezervisati u grupnom skladištu {1}., +Row #{0}: Stock is already reserved for the Item {1}.,Red #{0}: Zaliha je već rezervisana za artikal {1}., +Row #{0}: Stock is reserved for item {1} in warehouse {2}.,Red #{0}: Zalihe su rezervisane za artikal {1} u skladištu {2}., +Row #{0}: Stock not available to reserve for Item {1} against Batch {2} in Warehouse {3}.,Red #{0}: Zaliha nije dostupna za rezervisanje za artikal {1} naspram Šarže {2} u Skladištu {3}., +Row #{0}: Stock not available to reserve for the Item {1} in Warehouse {2}.,Red #{0}: Zaliha nije dostupna za rezervisanje za artikal {1} u skladištu {2}., +Row #{0}: The warehouse {1} is not a child warehouse of a group warehouse {2},Red #{0}: Skladište {1} nije podređeno skladište grupnog skladišta {2}, +Row #{0}: You cannot use the inventory dimension '{1}' in Stock Reconciliation to modify the quantity or valuation rate. Stock reconciliation with inventory dimensions is intended solely for performing opening entries.,Red #{0}: Ne možete koristiti dimenziju zaliha '{1}' u usaglašavanju zaliha za izmjenu količine ili stope vrednovanja. Usaglašavanje zaliha sa dimenzijama zaliha namijenjeno je isključivo za obavljanje početnih unosa., +Row #{0}: You must select an Asset for Item {1}.,Red #{0}: Odaberi Imovinu za Artikal {1}., +Row #{0}: {1} is not a valid reading field. Please refer to the field description.,Red #{0}: {1} nije važeće polje za čitanje. Pogledaj opis polja., +Row #{0}: {1} of {2} should be {3}. Please update the {1} or select a different account.,Red #{0}: {1} od {2} bi trebao biti {3}. Ažuriraj {1} ili odaberi drugi račun., +Row #{1}: Warehouse is mandatory for stock Item {0},Red #{1}: Skladište je obavezno za artikal {0}, +Row #{}: Finance Book should not be empty since you're using multiple.,Red #{}: Finansijski Registar ne smije biti prazan jer ih koristite više., +Row #{}: Please use a different Finance Book.,Red #{}: Koristi drugi Finansijski Registar., +Row #{}: The original Invoice {} of return invoice {} is not consolidated.,Red #{}: Originalna Faktura {} povratne fakture {} nije objedinjena., +Row #{}: item {} has been picked already.,Red #{}: Artikal {} je već odabran., +Row #{}: {} {} doesn't belong to Company {}. Please select valid {}.,Red #{}: {} {} ne pripada kompaniji {}. Odaberi važeći {}., +Row No {0}: Warehouse is required. Please set a Default Warehouse for Item {1} and Company {2},Red br {0}: Skladište je obezno. Postavite standard skladište za artikal {1} i kompaniju {2}, +Row Number,Broj reda, +Row {0},Red {0}, +"Row {0} picked quantity is less than the required quantity, additional {1} {2} required.","Red {0} odabrana količina je manja od potrebne količine, potrebno je dodatno {1} {2}.", +Row {0}# Item {1} cannot be transferred more than {2} against {3} {4},Red {0}# Artikal {1} se ne može prenijeti više od {2} naspram {3} {4}, +Row {0}# Item {1} not found in 'Raw Materials Supplied' table in {2} {3},Red {0}# Artikal {1} nije pronađen u tabeli 'Isporučene Sirovine' u {2} {3}, +Row {0}: Accepted Qty and Rejected Qty can't be zero at the same time.,Red {0}: Prihvaćena Količina i Odbijena Količina ne mogu biti nula u isto vrijeme., +Row {0}: Account {1} and Party Type {2} have different account types,Red {0}: Račun {1} i Tip Stranke {2} imaju različite tipove računa, +Row {0}: Allocated amount {1} must be less than or equal to invoice outstanding amount {2},Red {0}: Dodijeljeni iznos {1} mora biti manji ili jednak nepodmirenom iznosu fakture {2}, +Row {0}: Allocated amount {1} must be less than or equal to remaining payment amount {2},Red {0}: Dodijeljeni iznos {1} mora biti manji ili jednak preostalom iznosu plaćanja {2}, +"Row {0}: As {1} is enabled, raw materials cannot be added to {2} entry. Use {3} entry to consume raw materials.","Red {0}: Kako je {1} omogućen, sirovine se ne mogu dodati u {2} unos. Koristite {3} unos za potrošnju sirovina.", +Row {0}: Both Debit and Credit values cannot be zero,Red {0}: Vrijednosti debita i kredita ne mogu biti nula, +Row {0}: Cost Center {1} does not belong to Company {2},Red {0}: Centar Troškova {1} ne pripada kompaniji {2}, +Row {0}: Either Delivery Note Item or Packed Item reference is mandatory.,Red {0}: Ili je Artikal Dostavnice ili Pakirani Artikal referenca obavezna., +Row {0}: Expense Head changed to {1} as no Purchase Receipt is created against Item {2}.,Red {0}: Račun Troškova je promijenjen u {1} jer se nije kreirao Kupovni Račun naspram artikla {2}., +Row {0}: Expense Head changed to {1} because account {2} is not linked to warehouse {3} or it is not the default inventory account,Red {0}: Račun Troškova je promijenjen u {1} jer račun {2} nije povezan sa skladištem {3} ili nije standard račun zaliha, +Row {0}: Expense Head changed to {1} because expense is booked against this account in Purchase Receipt {2},Red {0}: Račun Troškova je promijenjen u {1} jer je trošak knjižen naspram ovaog računa u Kupovnom Računu {2}, +Row {0}: From Warehouse is mandatory for internal transfers,Red {0}: Iz skladišta je obavezano za interne prijenose, +Row {0}: Item Tax template updated as per validity and rate applied,Red {0}: Šablon PDV-a za Artikal ažuriran je prema valjanosti i primijenjenoj cijeni, +Row {0}: Item rate has been updated as per valuation rate since its an internal stock transfer,Red {0}: Cijena artikla je ažurirana prema stopi vrednovanja zato što je ovo interni prijenos zaliha, +Row {0}: Item {1} must be a stock item.,Red {0}: Artikal {1} mora biti artikal na zalihama., +Row {0}: Item {1} must be a subcontracted item.,Red {0}: Artikal {1} mora biti podugovorni artikal., +Row {0}: Item {1}'s quantity cannot be higher than the available quantity.,Red {0}: Količina Artikla {1} ne može biti veća od raspoložive količine., +Row {0}: Packed Qty must be equal to {1} Qty.,Red {0}: Pakovana Količina mora biti jednaka {1} Količini., +Row {0}: Packing Slip is already created for Item {1}.,Red {0}: Otpremnica je već kreirana za artikal {1}., +Row {0}: Payment Term is mandatory,Red {0}: Uslov Plaćanja je obavezan, +Row {0}: Please provide a valid Delivery Note Item or Packed Item reference.,Red {0}: Navedi važeću referencu Artikla Dostavnice ili Pakiranog Artikla., +Row {0}: Please select a BOM for Item {1}.,Red {0}: Odaberi Sastavnicu za artikal {1}., +Row {0}: Please select an active BOM for Item {1}.,Red {0}: Odaberi Aktivnu Sastavnicu za artikal {1}., +Row {0}: Please select an valid BOM for Item {1}.,Red {0}: Odaberi važeću Sastavnicu za artikal{1}., +Row {0}: Project must be same as the one set in the Timesheet: {1}.,Red {0}: Projekat mora biti isti kao onaj postavljen u Radnoj Listi: {1}., +Row {0}: Purchase Invoice {1} has no stock impact.,Red {0}: Kupovna Faktura {1} nema utjecaja na zalihe., +Row {0}: Qty cannot be greater than {1} for the Item {2}.,Red {0}: Količina ne može biti veća od {1} za artikal {2}., +Row {0}: Qty in Stock UOM can not be zero.,Red {0}: Količina u Jedinici Zaliha ne može biti nula., +Row {0}: Qty must be greater than 0.,Red {0}: Količina mora biti veća od 0., +Row {0}: Quantity cannot be negative.,Red {0}: Količina ne može biti negativna., +Row {0}: Shift cannot be changed since the depreciation has already been processed,Red {0}: Smjena se ne može promijeniti jer je amortizacija već obrađena, +Row {0}: Target Warehouse is mandatory for internal transfers,Red {0}: Ciljno Skladište je obavezno za interne transfere, +"Row {0}: To set {1} periodicity, difference between from and to date must be greater than or equal to {2}","Red {0}: Za postavljanje {1} periodičnosti, razlika između od i do datuma mora biti veća ili jednaka {2}", +Row {0}: Total Number of Depreciations cannot be less than or equal to Opening Number of Booked Depreciations,Red {0}: Ukupan broj amortizacija ne može biti manji ili jednak početnom broju knjiženih amortizacija, +Row {0}: Workstation or Workstation Type is mandatory for an operation {1},Red {0}: Radna Stanica ili Tip Radne Stanice je obavezan za operaciju {1}, +Row {0}: {1} account already applied for Accounting Dimension {2},Red {0}: {1} račun je već primijenjen za Knjigovodstvenu Dimenziju {2}, +Row {0}: {1} {2} cannot be same as {3} (Party Account) {4},Red {0}: {1} {2} ne može biti isto kao {3} (Račun Stranke) {4}, +Row {0}: {2} Item {1} does not exist in {2} {3},Red {0}: {2} Artikal {1} ne postoji u {2} {3}, +Row({0}): Outstanding Amount cannot be greater than actual Outstanding Amount {1} in {2},Red ({0}): Nepodmireni Iznos ne može biti veći od stvarnog Nepodmirenog Iznosa {1} u {2}, +Rows with Same Account heads will be merged on Ledger,Redovi sa unosom istog računa će se spojiti u Registru, +Rows: {0} have 'Payment Entry' as reference_type. This should not be set manually.,Redovi: {0} imaju 'Unos Plaćanja' kao Tip Reference. Ovo ne treba postavljati ručno., +Rows: {0} in {1} section are Invalid. Reference Name should point to a valid Payment Entry or Journal Entry.,Redovi: {0} u {1} sekciji su nevažeći. Naziv reference treba da ukazuje na važeći Unos Plaćanja ili Nalog Knjiženja., +Run parallel job cards in a workstation,Pokreni paralelne radne kartice na radnom mjestu, +Running,Obrađivanje u toku, +SCO Supplied Item,Dostavljeni Artikal Podizvođačkog Naloga, +SLA Fulfilled On,Standard Nivo Servisa Ispunjen, +SLA Fulfilled On Status,Standard Nivo Servisa Ispunjen na Status, +SLA Paused On,Standard Nivo Servisa Pauziran, +SLA will be applied if {1} is set as {2}{3},Standard Nivo Servisa će se primijeniti ako je {1} postavljen kao {2}{3}, +SLA will be applied on every {0},Standard Nivo Servisa će se primjenjivati na svaki {0}, +SMS Settings,SMS Postavke, +SO Total Qty,Ukupna Količina Prodajnog Naloga, +Salary Currency,Valuta Plate, +Sales Incoming Rate,Prodajna Ulazna Cijena, +Sales Invoice {0} must be deleted before cancelling this Sales Order,Prodajna Faktura {0} mora se izbrisati prije otkazivanja ovog Prodajnog Naloga, +Sales Order Packed Item,Pakovani Artikal Prodajnog Naloga, +Sales Order Reference,Referenca Prodajnog Naloga, +Sales Order Status,Status Prodajnog Naloga, +"Sales Order {0} already exists against Customer's Purchase Order {1}. To allow multiple Sales Orders, Enable {2} in {3}","Prodajni Nalog {0} već postoji naspram Kupovnog Naloga {1}. Da dozvolite višestruke Prodajne Naloge, omogući {2} u {3}", +Sales Partner ,Partner Prodaje , +Sales Partner Item,Artikal Prodajnog Partnera, +Sales Partner Target Variance Based On Item Group,Odstupanje Cilja Prodajnog Partnera zasnovana na Grupi Artikla, +Sales Person {0} is disabled.,Prodavač {0} je onemogućen., +Sales Pipeline Analytics,Analiza Prodaje, +Sales Update Frequency in Company and Project,Učestalost Ažuriranja Prodaje u Kompaniji i Projektu, +Sales Value,Prodajna Vrijednost, +Salvage Value Percentage,Procentualna Vrijednosti Recikliže, +Same item and warehouse combination already entered.,Ista kombinacija artikla i skladišta je već unesena., +Savings,Štednja, +Scan Batch No,Skeniraj Broj Šarže, +Scan Mode,Način Skeniranja, +Scan Serial No,Skeniraj Serijski Broj, +Scan barcode for item {0},Skenirajte bar kod za artikal {0}, +"Scan mode enabled, existing quantity will not be fetched.","Način skeniranja je omogućen, postojeća količina neće biti preuzeta.", +Scanned Quantity,Skenirana Količina, +Scheduled Time Logs,Zapisi Planiranog Vremena, +Scheduler is Inactive. Can't trigger job now.,Raspoređivač je neaktivan. Sada nije moguće pokrenuti posao., +Scheduler is Inactive. Can't trigger jobs now.,Raspoređivač je neaktivan. Sada nije moguće pokrenuti poslove., +Scheduler is inactive. Cannot enqueue job.,Raspoređivač je neaktivan. Nije moguće staviti posao u red čekanja., +Scheduler is inactive. Cannot merge accounts.,Raspoređivač je neaktivan. Nije moguće spojiti račune., +Scheduling,Raspored, +"Scorecard variables can be used, as well as: +{total_score} (the total score from that period), +{period_number} (the number of periods to present day) +","Mogu se koristiti varijable Bodovne Tablice, kao i: +{total_score} (ukupno bodovanje iz tog razdoblja), +{period_number} (broj razdoblja do današnjeg dana). +", +Scrap & Process Loss,Otpad & Gubitak u Procesu, +Scrap Asset,Rashodovana Imovina, +Scrap Cost Per Qty,Trošak Otpada po Količini, +Scrap Item Code,Kod Artikla Otpada, +Scrap Item Name,Naziv Artikla Otpada, +"Search by item code, serial number or barcode","Pretražuj po kodu artikla, serijskom broju ili barkodu", +Secondary Party,Sekundarna Stranka, +Secondary Role,Sekundarna Uloga, +Section,Sekcija, +Segregate Serial / Batch Bundle,Razdvoji Serijski / Šaržni Paket, +Select Accounting Dimension.,Odaberi Knjigovodstvenu Dimenziju., +Select Alternative Items for Sales Order,Odaberite Alternativni Artikal za Prodajni Nalog, +Select Batch No,Odaberi Broj Šarže, +Select Columns and Filters,Odaberi Kolone i Filtere, +Select Corrective Operation,Odaberi Popravnu Operaciju, +Select Date of Birth. This will validate Employees age and prevent hiring of under-age staff.,Navedi Datum Rođenja. Ovo će potvrditi dob personala i spriječiti zapošljavanje maloljetnih osoba., +"Select Date of joining. It will have impact on the first salary calculation, Leave allocation on pro-rata bases.","Odaberi Datum pridruživanja. To će uticati na prvi obračun plate, raspodjelu odsustva po proporcionalnoj osnovi.", +Select Dimension,Odaberi Dimenziju, +Select Finished Good,Odaberi Fotov Proizvod, +Select Items for Quality Inspection,Odaberi Artikle za Inspekciju Kvaliteta, +Select Job Worker Address,Odaberi Adresu Podizvođača, +Select Serial No,Odaberi Serijski Broj, +Select Serial and Batch,Odaberi Serijski Broj I Šaržu, +Select Time,Odaberi Vrijeme, +Select View,Odaberi Prikaz, +Select Vouchers to Match,Odaber Verifikate za Podudaranje, +Select Warehouses to get Stock for Materials Planning,Odaberi Skladišta ta preuzimanje Zalihe za Planiranje Materijala, +Select a Company this Employee belongs to.,Navedi Kompaniju kojoj ovaj personal pripada., +Select a Customer,Odaberi Klijenta, +Select an Item Group.,Odaberi Grupu Artikla., +Select an invoice to load summary data,Odaberi fakturu za učitavanje sažetih podataka, +Select an item from each set to be used in the Sales Order.,Odaber artikal iz svakog skupa koja će se koristiti u Prodajnom Nalogu., +Select the Default Workstation where the Operation will be performed. This will be fetched in BOMs and Work Orders.,Odaberi Standard Radnu Stanicu na kojoj će se izvoditi operacija. Ovo će se preuzeti u Spiskovima Materijala i Radnim Nalozima., +Select the Item to be manufactured.,Odaberi Artikal za Proizvodnju., +"Select the Item to be manufactured. The Item name, UoM, Company, and Currency will be fetched automatically.","Odaber Artikal za Proizvodnju. Naziv Artikla, Jedinica, Kompanija i Valuta će se automatski preuzeti.", +Select the Warehouse,Odaberi Skladište, +Select the date and your timezone,Odaberi Datum i Vremensku Zonu, +Select the raw materials (Items) required to manufacture the Item,Odaberite Sirovine (Artikle) obavezne za proizvodnju artikla, +"Select whether to get items from a Sales Order or a Material Request. For now select Sales Order. + A Production Plan can also be created manually where you can select the Items to manufacture.","Odaberi hoćete li preuzeti artikle iz Prodajnog Naloga ili Materijalnog Naloga. Za sada odaberi Prodajni Nalog. + Plan Proizvodnje se može kreirati i ručno gdje možete odabrati artikle za proizvodnju.", +Select your weekly off day,Odaberi sedmicni slobodan dan, +Selected Serial and Batch Bundle entries have been removed.,Odabrani unosi Serijskih i Šaržnih Paketa su uklonjeni., +Selected Vouchers,Odabrani Verifikati, +Selected date is,Odabrani datum je, +Selected document must be in submitted state,Odabrani dokument mora biti u podnešenom stanju, +Self delivery,Samostalna Dostava, +Sell Asset,Prodaj Imovinu, +Send Attached Files,Pošalji priložene datoteke, +Send Document Print,Pošalji Ispis, +Send Emails,Pošalji e-poštu, +Sending...,Slanje u toku..., +Sequential,Sekvencijalno, +Serial & Batch Item,Serijski & Šaržni Artikal, +Serial & Batch Item Settings,Postavke za Serijski & Šaržni Artikal, +Serial / Batch Bundle,Serijski / Šaržni Paket, +Serial / Batch Bundle Missing,Serijski / Šaržni Paket, +Serial / Batch No,Serijski / Šaržni Broj, +Serial / Batch Nos,Serijski / Šaržni Broj, +Serial No Ledger,Serijski Broj Registar, +Serial No Range,Serijski Broj Raspon, +Serial No and Batch Selector cannot be use when Use Serial / Batch Fields is enabled.,Serijski Broj i odabirač Šarže ne mogu se koristiti kada je omogućeno Koristi Serijski Broj / Šaržna Polja., +Serial No and Batch for Finished Good,Serijski Broj i Šarža Gotovog Proizvoda, +Serial No is mandatory,Serijski Broj je Obavezan, +Serial No {0} already exists,Serijski Broj {0} već postoji, +Serial No {0} already scanned,Serijski Broj {0} je već skeniran, +Serial No {0} does not exists,Serijski Broj {0} ne postoji, +Serial No {0} is already added,Serijski Broj {0} je već dodan, +"Serial No {0} is not present in the {1} {2}, hence you can't return it against the {1} {2}","Serijski broj {0} nije u {1} {2}, i ne može se vratiti naspram {1} {2}", +Serial Nos,Serijski Broj, +Serial Nos / Batch Nos,Serijski Broj / Šaržni Broj, +Serial Nos are created successfully,Serijski Brojevi su uspješno kreirani, +"Serial Nos are reserved in Stock Reservation Entries, you need to unreserve them before proceeding.","Serijski brojevi su rezervisani u unosima za rezervacije zaliha, morate ih opozvati prije nego što nastavite.", +Serial and Batch,Serijski i Šarža, +Serial and Batch Bundle,Serijski i Šaržni Paket, +Serial and Batch Bundle created,Serijski i Šaržni Paket je kreiran, +Serial and Batch Bundle updated,Serijski i Šaržni Paket je ažuriran, +Serial and Batch Bundle {0} is already used in {1} {2}.,Serijski i Šaržni Paket {0} se već koristi u {1} {2}., +Serial and Batch Details,Detalji Serijskog Broja i Šarže, +Serial and Batch Entry,Unos Serijskog Broja i Šarže, +Serial and Batch No,Serijski i Šaržni Broj, +Serial and Batch Nos,Serijski i Šaržni Broj, +Serial and Batch Nos will be auto-reserved based on Pick Serial / Batch Based On,Serijski i Šaržni brojevi će biti automatski rezervisani na osnovu Odaberi Serijski / Šaržu na osnovu, +Serial and Batch Reservation,Serijska i Šaržna Rezervacija, +Serial and Batch Summary,Sažetak Serije i Šarže, +Service Cost Per Qty,Cijena Servisa po Kolicini, +Service Expense Total Amount,Ukupan Iznos Troškova Servisa, +Service Expenses,Servisni Troškovi, +Service Item,Servisni Artikal, +Service Item Qty,Količina Servisnog Artikla, +Service Item Qty / Finished Good Qty,Količina Servisnog Artikla / Količina Gotovog Proizvoda, +Service Item UOM,Jedinica Servisnog Artikla, +Service Item {0} is disabled.,Servisn Artikal {0} je onemogućen., +Service Item {0} must be a non-stock item.,Servisni Artikal {0} mora biti artikal koji nije na zalihama., +Service Items,Servisni Artikli, +Service Level Agreement for {0} {1} already exists.,Ugovor Standard Nivo Servisa za {0} {1} već postoji., +Service Level Name,Naziv Servisnog Nivoa, +Service Provider,Dobavljač Servisa, +Set Default Supplier,Postavi Standard Dobavljača, +Set From Warehouse,Postavi Iz Skladišta, +Set Landed Cost Based on Purchase Invoice Rate,Odredi obračunatu cijenu na temelju cijene Kupovne Fakture, +Set Loyalty Program,Postavi Program Lojalnosti, +Set Operating Cost / Scrap Items From Sub-assemblies,Postavi Operativni Trošak / Otpadne Artikle iz podsklopova, +Set Operating Cost Based On BOM Quantity,Postavi Operativni Trošak na osnovu količine Sastavnice, +Set Parent Row No in Items Table,Postavite Broj Nadređenog Reda u Tabeli Artikala, +Set Process Loss Item Quantity,Postavi količinu gubitka artikla u procesu, +Set Project Status,Postavi Status Pojekta, +Set Quantity,Postavi Količinu, +Set Response Time for Priority {0} in row {1}.,Postavi Vrijeme Odgovora za Prioritet {0} u redu {1}., +Set Serial and Batch Bundle Naming Based on Naming Series,Postavi Imenovanje Serijskog i Šaržnog Paketa na osnovu Imenovanja Serije, +Set Valuation Rate Based on Source Warehouse,Postavi Stopu Vrednovanja na osnovu Izvornog Skladišta, +Set Warehouse,Postavi Skladište, +Set default {0} account for non stock items,Postavi Standard Račun {0} za artikle za koje se nevode zalihe, +Set fieldname from which you want to fetch the data from the parent form.,Postavi ime polja iz kojeg želite da preuzmete podatke iz nadređenog obrasca., +Set quantity of process loss item:,Postavi količinu artikla gubitka u procesa:, +Set the Planned Start Date (an Estimated Date at which you want the Production to begin),Postavi Planirani Datum Početka (procijenjeni datum na koji želite da počne proizvodnja), +Set the status manually.,Postavi Status Ručno., +Set {0} in asset category {1} for company {2},Postavi {0} u kategoriju imovine {1} za kompaniju {2}, +Sets 'Accepted Warehouse' in each row of the Items table.,Postavlja 'Prihvaćeno Skladište' u svakom redu tabele Artikala., +Sets 'Rejected Warehouse' in each row of the Items table.,Postavlja 'Odbijeno Skladište' u svaki red tabele Artikala., +Sets 'Reserve Warehouse' in each row of the Supplied Items table.,Postavlja 'Rezervisano Skladište' u svakom redu tabele Dostavljeni Artikli., +Setting Item Locations...,Postavlja se Lokacija Artikla..., +Setting the account as a Company Account is necessary for Bank Reconciliation,Postavljanje računa kao Računa Kompanije je neophodno za Bankovno Usaglašavanje, +Setting {} is required,Postavka {} je obavezna, +Setup your organization,Postavi svoju organizaciju, +Shelf Life in Days,Rok Trajanja u Danima, +Shift,Smjena, +Shift Factor,Faktor Smjene, +Shift Name,Naziv Smjene, +Shipment,Pošiljka, +Shipment Amount,Iznos Pošiljke, +Shipment Delivery Note,Dostavnica Pošiljke, +Shipment ID,ID Pošiljke, +Shipment Information,Informacije Pošiljke, +Shipment Parcel,Paket Pošiljke, +Shipment Parcel Template,Šablon Paketa Pošiljke, +Shipment Type,Tip Pošiljke, +Shipment details,Detalji Pošiljke, +Shipping Address Details,Detalji Adrese Pošiljke, +Shipping Address Template,Šablon Adrese Pošiljke, +Shipping Address does not belong to the {0},Adresa Dostave ne pripada {0}, +Show Aggregate Value from Subsidiary Companies,Prikaži ukupnu vrijednost od Kompanija Podružnica, +Show Balances in Chart Of Accounts,Prikaz Stanja u Kontnom Planu, +Show Barcode Field in Stock Transactions,Prikaži polje Barkoda u Transakcijama Artikala, +Show Dimension Wise Stock,Prikaži Zalihe prema Dimenenzijama, +Show Disabled Warehouses,Prikaži Onemogućena Skladišta, +Show Failed Logs,Prikaži Neuspjele Zapise, +Show GL Balance,Prikaži Stanje Knjigovodstvenog Registra, +Show Item Name,Prikaži Naziv Artikla, +Show Ledger View,Prikaži Prikaz Registra, +Show Net Values in Party Account,Prikaži Neto Vrijednosti na Računu Stranke, +Show Pay Button in Purchase Order Portal,Prikaži Dugme za Plaćanje na Portalu Kupovnog Naloga, +Show Preview,Prikaži Pregled, +Show Remarks,Prikaži Napomene, +Show Taxes as Table in Print,Prikaži PDV kao Kolonu u Ispisu, +Show net values in opening and closing columns,Prikaži neto vrijednosti u kolonama za otvaranje i zatvaranje, +Show only the Immediate Upcoming Term,Prikaži samo Neposredan Predstojeći Uslov, +Show pending entries,Prikaži unose na čekanju, +Show with upcoming revenue/expense,Prikaži s nadolazećim prihodima/rashodima, +"Simple Python Expression, Example: doc.status == 'Open' and doc.issue_type == 'Bug'","Jednostavan Python izraz, primjer: doc.status == 'Open' i doc.issue_type == 'Bug'", +"Simple Python formula applied on Reading fields.
Numeric eg. 1: reading_1 > 0.2 and reading_1 < 0.5
+Numeric eg. 2: mean > 3.5 (mean of populated fields)
+Value based eg.: reading_value in (""A"", ""B"", ""C"")","Jednostavna Python formula primijenjena na polja za čitanje.
Numerička npr. 1: čitanje_1 > 0,2 i čitanje_1 < 0,5 +Numerički npr. 2: srednje > 3.5 (srednja vrijednost popunjenih polja)
+Na temelju vrijednosti npr.: reading_value u (""A"", ""B"", ""C"")", +Simultaneous,Istovremeno, +Skip Available Sub Assembly Items,Preskoči Dostupne Artikle Podsklopa, +Skipped,Preskočeno, +Skipping Tax Withholding Category {0} as there is no associated account set for Company {1} in it.,Preskoče Kategoriju Poreza po Odbitku {0} jer u njoj nema pridruženog računa za Kompaniju {1} ., +"Skipping {0} of {1}, {2}","Preskačem {0} od {1}, {2}", +Sold by,Prodato od, +Something went wrong please try again,"Nešto nije u redu, pokušajte ponovo", +Source Exchange Rate,Izvorni Kurs, +Source Fieldname,Naziv Izvornog Polja, +Source Warehouse Address Link,Veza Adrese Izvornog Skladišta, +South Africa VAT Account,Južnoafrički PDV Račun, +South Africa VAT Settings,Postavke PDV-a u Južnoj Africi, +Spacer,Razmak, +Split Asset,Podjeljena Imovina, +Split Early Payment Discount Loss into Income and Tax Loss,Podijeli Gubitak Popusta Prijevremenog Plaćanja na Prihod i Gubitak PDV-a, +Split From,Podjeli od, +Split Qty,Podjeljena Količina, +Split qty cannot be grater than or equal to asset qty,Podijeljena količina ne može biti veća ili jednaka količini imovine, +Splitting {0} {1} into {2} rows as per Payment Terms,Podjela {0} {1} na {2} redove prema Uslovima Plaćanja, +Stage,Faza, +Stale Days should start from 1.,Neaktivni Dani bi trebalo da počnu od 1., +Standard Description,Standard Opis, +Standard Rated Expenses,Standard Ocenjeni Troškovi, +"Standard Terms and Conditions that can be added to Sales and Purchases. Examples: Validity of the offer, Payment Terms, Safety and Usage, etc.","Standard Uslovi i Odredbe koji se mogu navesti u Prodaju i Kupovinu. Primjeri: Valjanost Ponude, Uslovi Plaćanja, Sigurnost i Korištenje itd.", +Standard rated supplies in {0},Standardno ocijenjeno zalihe u {0}, +"Standard tax template that can be applied to all Purchase Transactions. This template can contain a list of tax heads and also other expense heads like ""Shipping"", ""Insurance"", ""Handling"", etc.","Standard PDV šablon koji se može primijeniti na sve kupovne transakcije. Ovaj šablon može sadržavati listu PDV računa, kao i drugih računa troškova kao što su ""Pošiljka"", ""Osiguranje"", ""Rukovanje"", itd.", +"Standard tax template that can be applied to all Sales Transactions. This template can contain a list of tax heads and also other expense/income heads like ""Shipping"", ""Insurance"", ""Handling"" etc.","Standardni PDV šablon koji se može primijeniti na sve Prodajne Transakcije. Ovaj šablon može sadržavati listu PDV Računa, kao i drugih računa rashoda/prihoda kao što su ""Poštarina"", ""Osiguranje"", ""Rukovanje"" itd.", +Start / Resume,Pokreni / Nastavi, +Start Date should be lower than End Date,Datum početka bi trebao biti prije od datuma završetka, +Start Deletion,Pokreni Brisanje, +Start Import,Pokreni Uvoz, +Start Job,Počni Rad, +Start Merge,Pokreni Spajanje, +Start Reposting,Počni Ponovno Knjiženje, +Start Time can't be greater than or equal to End Time for {0}.,Vrijeme Početka ne može biti veće ili jednako Vremenu Završetka za {0}., +Start Timer,Pokreni Brojanje Vremena, +Started a background job to create {1} {0},Započet je pozadinski posao za kreiranje {1} {0}, +Status Details,Detalji Statusa, +Status Illustration,Prikaz Statusa, +Status set to rejected as there are one or more rejected readings.,Status je postavljen na odbijeno jer postoji jedno ili više odbijenih očitavanja., +Stock Closing,Zamrzavanje Zaliha, +Stock Consumed During Repair,Zalihe Potrošene Tokom Popravke, +Stock Consumption Details,Detalji Potrošnje Zaliha, +Stock Entries already created for Work Order {0}: {1},Unosi Zaliha su već kreirani za Radni Nalog {0}: {1}, +Stock Ledger Invariant Check,Kontrola Nepromjenjivog Registra Zaliha, +Stock Ledger Variance,Odstupanja Registra Zaliha, +Stock Movement,Upravljanje Zalihama, +Stock Planning,Planiranje Zaliha, +Stock Reposting Settings,Postavke Ponovnog Knjiženja Zaliha, +Stock Reservation,Rezervacija Zaliha, +Stock Reservation Entries Cancelled,Otkazani Unosi Rezervacije Zaliha, +Stock Reservation Entries Created,Kreirani Unosi Rezervacija Zaliha, +Stock Reservation Entry,Unos Rezervacije Zaliha, +Stock Reservation Entry cannot be updated as it has been delivered.,Unos Rezervacije Zaliha ne može se ažurirati pošto je već dostavljeno., +"Stock Reservation Entry created against a Pick List cannot be updated. If you need to make changes, we recommend canceling the existing entry and creating a new one.","Unos Rezervacije Zaliha kreiran naspram Liste Odabira ne može se ažurirati. Ako trebate napraviti promjene, preporučujemo da poništite postojeći unos i kreirate novi.", +Stock Reservation Warehouse Mismatch, Neusklađeno Skladišta Rezervacije Zaliha, +Stock Reservation can only be created against {0}.,Rezervacija Zaliha može se kreirati naspram {0}., +Stock Reserved Qty (in Stock UOM),Rezervisana Količina Zaliha (u Jedinici Zaliha), +Stock Transactions Settings,Postavke Transakcija Zaliha, +Stock UOM Quantity,Količina u Skladišnoj Jedinici, +Stock Unreservation,Poništavanje Rezervacije Zaliha, +Stock Validations,Provjera Zaliha, +Stock and Manufacturing,Zalihe i Proizvodnja, +Stock cannot be reserved in group warehouse {0}.,Zalihe se ne mogu rezervisati u grupnom skladištu {0}., +Stock cannot be reserved in the group warehouse {0}.,Zalihe se ne mogu rezervisati u grupnom skladištu {0}., +Stock not available for Item {0} in Warehouse {1}.,Zaliha nije dostupna za Artikal {0} u Skladištu {1}., +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2} {3}.,Količina Zaliha nije dovoljna za Kod Artikla: {0} na skladištu {1}. Dostupna količina {2} {3}., +Stock transactions that are older than the mentioned days cannot be modified.,Transakcije Zaliha koje su starije od navedenih dana ne mogu se mijenjati., +Stock will be reserved on submission of Purchase Receipt created against Material Request for Sales Order.,Zalihe će biti rezervisane po podnošenju Kupovnog Računa kreirane naspram Materijalnog Naloga za Prodajni Nalog., +Stock/Accounts can not be frozen as processing of backdated entries is going on. Please try again later.,Zalihe/Računi ne mogu se zamrznuti jer je u toku obrada unosa unazad. Pkušaj ponovo kasnije., +Sub Assemblies & Raw Materials,Podsklopovi i Sirovine, +Sub Assembly Item,Artikal Podsklopa, +Sub Assembly Item Code,Kod Artikla Podsklopa, +Sub Assembly Items,Artikli Podsklopa, +Sub Assembly Warehouse,Skladište Podsklopa, +Sub Operation,Podoperacija, +Sub Operations,Podoperacije, +Sub Total,Podzbir, +Subcontract BOM,Sastavnica Podizvođača, +Subcontract Order,Podizvođački Nalog, +Subcontract Order Summary,Sažetak Podizvođačkog Naloga, +Subcontract Return,Podizvođački Povrat, +Subcontracted Quantity,Podizvođačka Količina, +Subcontracting BOM,Sastavnica Podizvođača, +Subcontracting Conversion Factor,Faktor Konverzije Podizvođača, +Subcontracting Order,Podizvođački Nalog, +Subcontracting Order (Draft) will be auto-created on submission of Purchase Order.,Podizvođački Nalog (nacrt) će biti automatski kreiran nakon podnošenja Kupovnog Naloga., +Subcontracting Order Item,Artikal Podizvođačkog Naloga, +Subcontracting Order Service Item,Servisni Artikal Podizvođačkog Naloga, +Subcontracting Order Supplied Item,Dostavljeni Artikal Podizvođačkog Naloga, +Subcontracting Order {0} created.,Podizvođački Nalog {0} je kreiran., +Subcontracting Purchase Order,Podizvođački Kupovni Nalog, +Subcontracting Receipt,Podizvođački Račun, +Subcontracting Receipt Item,Artikal Podizvođačkog Računa, +Subcontracting Receipt Supplied Item,Dostavljeni Artikal Podizvođačkog Računa, +Subcontracting Settings,Postavke Podizvođača, +Subdivision,Pododjeljenje, +Submit Action Failed,Radnja Podnošenja Neuspješna, +Submit After Import,Podnesi Nakon Uvoza, +Submit ERR Journals?,Podnesi ERR Žurnale?, +Submit Generated Invoices,Podnesi Generirane Fakture, +Subscription for Future dates cannot be processed.,Pretplata za buduće datume nemože se obraditi., +Succeeded,Uspjelo, +Succeeded Entries,Uspjeli Upisi, +"Successfully changed Stock UOM, please redefine conversion factors for new UOM.","Uspješno promijenjena Jedinica Zaliha, redefinirajte faktore konverzije za novu Jedinicu.", +Successfully imported {0},Uspješno uveženo {0}, +"Successfully imported {0} record out of {1}. Click on Export Errored Rows, fix the errors and import again.","Uspješno uvežen {0} zapis iz {1}. Kliknite na Izvezi redove s greškom, popravite greške i ponovo izvezi.", +Successfully imported {0} record.,Uspješno uvežen {0} zapis., +"Successfully imported {0} records out of {1}. Click on Export Errored Rows, fix the errors and import again.","Uspješno uveženo {0} zapisa iz {1}. Klikni na izvezi redove s greškom, popravite greške i ponovo uvezi.", +Successfully imported {0} records.,Uspješno uveženo {0} zapisa., +Successfully linked to Customer,Uspješno povezan s Klijentom, +Successfully linked to Supplier,Uspješno povezan s Dobavljačem, +Successfully merged {0} out of {1}.,Uspješno spojeno {0} od {1}., +Successfully updated {0},Uspješno ažuriran {0}, +"Successfully updated {0} record out of {1}. Click on Export Errored Rows, fix the errors and import again.","Uspješno ažuriran zapis {0} od {1}. Klikni na Izvezi Redove s Greškom, popravi greške i ponovo uvezi.", +Successfully updated {0} record.,Zapis {0} je uspješno ažuriran., +"Successfully updated {0} records out of {1}. Click on Export Errored Rows, fix the errors and import again.","Uspješno ažurirano {0} zapisa od {1}. Klikni na Izvezi Redove s Greškom, popravi greške i ponovo uvezi.", +Successfully updated {0} records.,Uspješno ažurirano {0} zapisa., +Sum of Repair Cost and Value of Consumed Stock Items.,Iznos Troškova Popravke i Vrijednost Potrošenih Zaliha., +Supplied Item,Dostavljeni Artikal, +Supplier Address Details,Detalji Adrese Dostavljača, +Supplier Contact,Kontakt Dobavljača, +Supplier Group Item,Artikal Grupa Dobavljača, +Supplier Info,Informacije Dobavljača, +Supplier Invoice,Faktura Dobavljača, +Supplier Item,Artikal Dobavljača, +Supplier Portal Users,Korisnici Portala Dobavljača, +Supplier Primary Address,Primarna Adresa Dobavljača, +Supplier Primary Contact,Primarni Kontakt Dobavljača, +Supplies subject to the reverse charge provision,Zalihe podliježu odredbi o povratnoj naplati, +Sync Now,Sinhronizuj Sad, +Sync Started,Sinhronizacija Pokrenuta, +System In Use,Sistem u Upotrebi, +System Settings,Postavke Sistema, +System will automatically create the serial numbers / batch for the Finished Good on submission of work order,Sistem će automatski kreirati serijske brojeve/šaržu za Gotov Proizvod nakon predaje Radnog Naloga, +System will not check over billing since amount for Item {0} in {1} is zero,Sistem neće provjeravati prekomjerno fakturisanje jer je iznos za Artikal {0} u {1} nula, +TCS Amount,Iznos PDV-a po odbitku (TCS), +TCS Rate %,Stopa poreza po odbitku (TCS) %, +TDS Amount,Iznos poreza po odbitku (TDS), +TDS Deducted,Odbijen porez po odbitku (TDS), +TDS Payable,Dospjeli porez po odbitku (TDS)., +Target Asset,Ciljana Imovina, +Target Asset Location,Lokacija Ciljane Imovine, +Target Asset {0} cannot be cancelled,Ciljana Imovina {0} ne može se otkazati, +Target Asset {0} cannot be submitted,Ciljana Imovina {0} nemože se podnijeti, +Target Asset {0} cannot be {1},Ciljana Imovina {0} ne može biti {1}, +Target Asset {0} does not belong to company {1},Ciljna Imovina {0} ne pripada kompaniji {1}, +Target Asset {0} needs to be composite asset,Ciljana Imovina {0} mora biti objedinjena imovina, +Target Batch No,Ciljni Broj Šarže, +Target Exchange Rate,Ciljani Devizni Kurs, +Target Fieldname (Stock Ledger Entry),Naziv ciljnog polja (Unos Registra Zaliha), +Target Fixed Asset Account,Račun Fiksne Imovine, +Target Has Batch No,Odabrano ima Broj Šarže, +Target Has Serial No,Ima Serijski Broj, +Target Incoming Rate,Kupovna Cijena, +Target Is Fixed Asset,Fiksna Imovina, +Target Item Code,Kod Artikla, +Target Item Name,Naziv Artikla, +Target Item {0} must be a Fixed Asset item,Artikal {0} mora biti Artikla Fiksne Imovine, +Target Qty must be a positive number,Količina mora biti pozitivan broj, +Target Serial No,Serijski Broj, +Target Warehouse Address Link,Veza Adrese Skladišta, +Target Warehouse is set for some items but the customer is not an internal customer.,"Skladište je postavljeno za neke artikle, ali klijent nije interni klijent.", +Task Assignee Email,E-pošta Nosioca Zadatka, +Task {0} depends on Task {1}. Please add Task {1} to the Tasks list.,Zadatak {0} zavisi od Zadatka {1}. Dodaj zadatak {1} na Listu Zadataka., +Tax Amount,PDV Iznos, +Tax Amount will be rounded on a row(items) level,Iznos PDV-a će biti zaokružen na nivou reda (artikala)., +Tax Masters,PDV Postavke, +Tax Refunds provided to Tourists under the Tax Refunds for Tourists Scheme,Povrat PDV koji se pruža turistima u okviru šeme povrata poreza za turiste, +Tax Settings,PDV Postavke, +Tax Withheld Vouchers,Verifikati PDV Odbitka, +Tax Withholding,PDV Odbitak, +Tax Withholding Category {} against Company {} for Customer {} should have Cumulative Threshold value.,Kategorija Odbitka Pdv {} naspram kompanije {} za klijenta {} treba imati Kumulativnu Vrijednost Praga., +Tax Withholding Details,Detalji Odbitka PDV, +Tax Withholding Net Total,Neto Ukupno PDV Odbitka, +"Tax detail table fetched from item master as a string and stored in this field. +Used for Taxes and Charges","Tabela PDV detalja preuzeta iz postavke artikla kao niz i pohranjena u ovom polju. +Koristi se za PDV i Naknade", +Tax will be withheld only for amount exceeding the cumulative threshold,PDV će biti odbijen samo za iznos koji premašuje kumulativni prag, +Taxes row #{0}: {1} cannot be smaller than {2},PDV red #{0}: {1} ne može biti manji od {2}, +Team,Tim, +Telephony Call Type,Tip Telefonskog Poziva, +Template Item Selected,Odabrani Šablon Artikla, +Template Options,Šablon Opcije, +Template Task,Šablon Zadatka, +Template Warnings,Šablon Upozorenja, +Terms & Conditions,Odredbe & Uslovi, +Terms Template,Šablon Uslova, +Territory Item,Artikal Distrikta, +Territory Wise Sales,Prodaja po Distriktu, +The Batch {0} has negative quantity {1} in warehouse {2}. Please correct the quantity.,Šarća {0} ima negativnu količinu {1} u skladištu {2}. Ispravi količinu., +The Condition '{0}' is invalid,Uvjet '{0}' je nevažeći, +The Document Type {0} must have a Status field to configure Service Level Agreement,Dolument Tip {0} mora imati Status polje za konfiguraciju Ugovora Standard Nivo Servisa, +"The GL Entries and closing balances will be processed in the background, it can take a few minutes.","Knjigovodstveni Unosi i zaključna stanja će se obraditi u pozadini, to može potrajati nekoliko minuta.", +"The GL Entries will be cancelled in the background, it can take a few minutes.","Knjigovodstveni Unosi će biti otkazani u pozadini, može potrajati nekoliko minuta.", +"The Payment Request {0} is already paid, cannot process payment twice","Zahtjev Plaćanja {0} je već plaćen, ne može se obraditi plaćanje dvaput", +"The Pick List having Stock Reservation Entries cannot be updated. If you need to make changes, we recommend canceling the existing Stock Reservation Entries before updating the Pick List.","Lista Odabira koja ima Unose Rezervacije Zaliha ne može se ažurirati. Ako trebate unijeti promjene, preporučujemo da otkažete postojeće Unose Rezervacije Zaliha prije ažuriranja Liste Odabira.", +The Process Loss Qty has reset as per job cards Process Loss Qty,Količinski Gubitak Procesa je poništen prema Radnim Karticama Količinskog Gubitka Procesa, +The Sales Person is linked with {0},Prodavač je povezan sa {0}, +The Serial No at Row #{0}: {1} is not available in warehouse {2}.,Serijski Broj u redu #{0}: {1} nije dostupan u skladištu {2}., +The Serial and Batch Bundle {0} is not valid for this transaction. The 'Type of Transaction' should be 'Outward' instead of 'Inward' in Serial and Batch Bundle {0},Serijski i Šaržni Paket {0} ne važi za ovu transakciju. 'Tip transakcije' bi trebao biti 'Vani' umjesto 'Unutra' u Serijskom i Šaržnom Paketu {0}, +The Work Order is mandatory for Disassembly Order,Radni Nalog je obavezan za Demontažni Nalog, +The allocated amount is greater than the outstanding amount of Payment Request {0},Dodijeljeni iznos je veći od nepodmirenog iznosa Zahtjeva Plaćanja {0}, +The currency of invoice {} ({}) is different from the currency of this dunning ({}).,Valuta Fakture {} ({}) se razlikuje od valute ove Opomene ({})., +The default BOM for that item will be fetched by the system. You can also change the BOM.,Sistem će preuzeti standard Sastavnicu za Artikal. Također možete promijeniti Sastavnicu., +The field {0} in row {1} is not set,Polje {0} u redu {1} nije postavljeno, +"The following Items, having Putaway Rules, could not be accomodated:","Sljedeći artikl, koji imaju Pravila Odlaganju, nisu mogli biti prihvaćeni:", +The following assets have failed to automatically post depreciation entries: {0},Sljedeća imovina nije uspjela automatski knjižiti unose amortizacije: {0}, +"The following batches are expired, please restock them:
{0}","Sljedeće šarže su istekle, obnovi zalihe:
{0}", +The following invalid Pricing Rules are deleted:,Sljedeća nevažeća Pravila Cijena se brišu:, +The items {0} and {1} are present in the following {2} :,Artikli {0} i {1} se nalaze u sljedećem {2} :, +The operation {0} can not add multiple times,Operacija {0} ne može se dodati više puta, +The operation {0} can not be the sub operation,Operacija {0} ne može biti podoperacija, +The original invoice should be consolidated before or along with the return invoice.,Originalnu fakturu treba objediniti prije ili zajedno sa povratnom fakturom., +The percentage you are allowed to pick more items in the pick list than the ordered quantity.,Procenat kojim je dozvoljeno da odaberete više artikala na listi odabira od naručene količine., +"The percentage you are allowed to transfer more against the quantity ordered. For example, if you have ordered 100 units, and your Allowance is 10%, then you are allowed transfer 110 units.","Procenat kojim vam je dozvoljeno prenijeti više naspram naručene količine. Na primjer, ako ste naručili 100 jedinica, a vaš dodatak iznosi 10%, onda vam je dozvoljen prijenos 110 jedinica.", +The reserved stock will be released when you update items. Are you certain you wish to proceed?,Rezervisane Zalihe će biti puštene kada ažurirate artikle. Jeste li sigurni da želite nastaviti?, +The reserved stock will be released. Are you certain you wish to proceed?,Rezervisane Zalihe će biti puštene. Jeste li sigurni da želite nastaviti?, +The serial and batch bundle {0} not linked to {1} {2},Serijski i Šaržni Paket {0} nije povezan sa {1} {2}, +"The stock for the item {0} in the {1} warehouse was negative on the {2}. You should create a positive entry {3} before the date {4} and time {5} to post the correct valuation rate. For more details, please read the documentation.","Zaliha za artikal {0} u {1} skladištu je bila negativna na {2}. Trebali biste kreirati pozitivan unos {3} prije datuma {4} i vremena {5} da biste knjižili ispravnu Stopu Vrednovanja. Za više detalja, molimo pročitaj dokumentaciju.", +"The stock has been reserved for the following Items and Warehouses, un-reserve the same to {0} the Stock Reconciliation:

{1}","Zalihe su rezervirane za sljedeće artikle i skladišta, poništite ih za {0} Usglašavanje Zaliha:

{1}", +"The sync has started in the background, please check the {0} list for new records.","Sinhronizacija je počela u pozadini, provjerite listu {0} za nove zapise.", +The task has been enqueued as a background job.,Zadatak je stavljen u red kao pozadinski posao., +"The task has been enqueued as a background job. In case there is any issue on processing in background, the system will add a comment about the error on this Stock Reconciliation and revert to the Submitted stage","Zadatak je stavljen u red kao pozadinski posao. U slučaju da postoji bilo kakav problem sa obradom u pozadini, sistem će dodati komentar o grešci na ovom usklađivanju zaliha i vratiti se na fazu Poslano", +The total Issue / Transfer quantity {0} in Material Request {1} cannot be greater than allowed requested quantity {2} for Item {3},Ukupna količina izdavanja / prijenosa {0} u Materijalnom Nalogu {1} ne može biti veća od dozvoljene tražene količine {2} za artikal {3}, +The total Issue / Transfer quantity {0} in Material Request {1} cannot be greater than requested quantity {2} for Item {3},Ukupna količina Izdavanja / Prijenosa {0} u Materijalnom Nalogu {1} ne može biti veća od dozvoljene tražene količine {2} za artikal {3}, +The uploaded file does not match the selected Code List.,Učitani fajl ne odgovara odabranoj Listi Kodova., +The user cannot submit the Serial and Batch Bundle manually,Korisnik ne može ručno podnijeti Serijski i Šaržni Paket, +"The users with this Role are allowed to create/modify a stock transaction, even though the transaction is frozen.","Korisnicima sa ovom ulogom je dozvoljeno da kreiraju/modifikuju transakciju zaliha, iako su transakcije zamrznute.", +The warehouse where you store finished Items before they are shipped.,Skladište u kojem skladištite gotove artikle prije nego što budu poslani., +"The warehouse where you store your raw materials. Each required item can have a separate source warehouse. Group warehouse also can be selected as source warehouse. On submission of the Work Order, the raw materials will be reserved in these warehouses for production usage.","Skladište u kojem je skladište sirovine. Svaki potrebni artikal može imati posebno izvorno skladište. Grupno skladište se takođe može odabrati kao izvorno skladište. Po podnošenju radnog naloga, sirovine će biti rezervisane u ovim skladištima za proizvodnu upotrebu.", +The warehouse where your Items will be transferred when you begin production. Group Warehouse can also be selected as a Work in Progress warehouse.,Skladište u koje će vaši artikli biti prebačeni kada započnete proizvodnju. Grupno skladište se takođe može odabrati kao Skladište u Toku., +The {0} {1} is used to calculate the valuation cost for the finished good {2}.,{0} {1} se koristi za izračunavanje troška vrednovanja za gotov proizvod {2}., +There are ledger entries against this account. Changing {0} to non-{1} in live system will cause incorrect output in 'Accounts {2}' report,Na ovom računu postoje unosi u registar. Promjena {0} u ne-{1} u sistemu će uzrokovati netačan izlaz u izvještaju 'Računi {2}', +There are no Failed transactions,Nema neuspjelih transakcija, +There are no active Fiscal Years for which Demo Data can be generated.,Ne postoje aktivne Fiskalne Godine za koje se mogu generirati Demo Podaci., +There are no slots available on this date,Za ovaj datum nema slobodnih termina, +There are only {0} asset created or linked to {1}. Please create or link {2} Assets with respective document.,Postoji samo {0} imovina kreirana ili povezana sa {1}. Kreiraj ili poveži {2} imovinu sa odgovarajućim dokumentom., +"There are two options to maintain valuation of stock. FIFO (first in - first out) and Moving Average. To understand this topic in detail please visit
Item Valuation, FIFO and Moving Average.","Postoje dvije opcije za održavanje vrijednosti artikal. FIFO (prvi ušao - prvi izašao) i Pokretni Prosijek. Da biste detaljno razumjeli ovu temu, posjetite Vrednovanje Artikla, FIFO i Pokretni Prosijek.", +There aren't any item variants for the selected item,Ne postoje varijante artikla za odabrani artikal, +There is already a valid Lower Deduction Certificate {0} for Supplier {1} against category {2} for this time period.,Već postoji važeći certifikat o nižem odbitku {0} za dobavljača {1} prema kategoriji {2} za ovaj vremenski period., +There is already an active Subcontracting BOM {0} for the Finished Good {1}.,Već postoji aktivna Podizvođačka Sastavnica {0} za gotov proizvod {1}., +There must be atleast 1 Finished Good in this Stock Entry,U ovom Unosu Zaliha mora biti najmanje jedan gotov proizvod, +There was an error creating Bank Account while linking with Plaid.,Došlo je do greške pri kreiranju Bankovnog Računa prilikom povezivanja s Plaid., +There was an error syncing transactions.,Došlo je do greške pri sinhronizaciji transakcija., +There was an error updating Bank Account {} while linking with Plaid.,Došlo je do greške prilikom ažuriranja Bankovnog Računa {} prilikom povezivanja s Plaid., +There was an issue connecting to Plaid's authentication server. Check browser console for more information,Došlo je do problema pri povezivanju s Plaidovim serverom za autentifikaciju. Provjerite konzolu pretraživača za više informacija, +There were issues unlinking payment entry {0}.,Problem s poništavanjem veze unosa plaćanja {0}., +This Account has '0' balance in either Base Currency or Account Currency,Račun ima stanje '0' u Osnovnoj Valuti ili u Valuti Računa, +This PO has been fully subcontracted.,Kupovni Nalog je u potpunosti podugovoren., +This field is used to set the 'Customer'.,Ovo polje se koristi za postavljanje 'Klijenta'., +This filter will be applied to Journal Entry.,Ovaj filter će se primijeniti na Nalog Knjiženja., +This is a Template BOM and will be used to make the work order for {0} of the item {1},Ovo je Šablon Sastavnica i koristit će se za izradu Radnog Naloga za {0} artikal {1}, +This is a preview of the email to be sent. A PDF of the document will automatically be attached with the email.,Ovo je pregled e-pošte koju treba poslati. PDF dokument će automatski biti priložen uz e-poštu., +This is considered dangerous from accounting point of view.,Ovo se smatra opasnim knjigovodstvene tačke gledišta., +"This is enabled by default. If you want to plan materials for sub-assemblies of the Item you're manufacturing leave this enabled. If you plan and manufacture the sub-assemblies separately, you can disable this checkbox.","Ovo je standard omogućeno. Ako želite da planirate materijale za podsklopove artikla koji proizvodite, ostavite ovo omogućeno. Ako planirate i proizvodite podsklopove zasebno, možete onemogućiti ovo polje.", +"This is for raw material Items that'll be used to create finished goods. If the Item is an additional service like 'washing' that'll be used in the BOM, keep this unchecked.","Ovo se odnosi na artikle sirovina koje će se koristiti za izradu gotovog proizvoda. Ako je artikal dodatna usluga kao što je 'povrat' koja će se koristiti u Sastavnici, ne označite ovo.", +This item filter has already been applied for the {0},Ovaj filter artikala je već primijenjen za {0}, +This option can be checked to edit the 'Posting Date' and 'Posting Time' fields.,Ova opcija se može označiti za uređivanje polja 'Datum Knjiženja' i 'Vrijeme Knjiženja'., +This schedule was created when Asset {0} was adjusted through Asset Value Adjustment {1}.,Ovaj raspored je kreiran kada je imovina {0} prilagođena kroz Podešavanje Vrijednosti Imovine {1}., +This schedule was created when Asset {0} was consumed through Asset Capitalization {1}.,Ovaj raspored je kreiran kada je imovina {0} potrošena kroz kapitalizaciju imovine {1}., +This schedule was created when Asset {0} was repaired through Asset Repair {1}.,Ovaj raspored je kreiran kada je imovina {0} popravljena putem Popravka Imovine {1}., +This schedule was created when Asset {0} was restored on Asset Capitalization {1}'s cancellation.,Ovaj raspored je kreiran kada je imovina {0} vraćena nakon otkazivanja kapitalizacije imovine {1}., +This schedule was created when Asset {0} was restored.,Ovaj raspored je kreiran kada je Imovina {0} vraćena., +This schedule was created when Asset {0} was returned through Sales Invoice {1}.,Ovaj raspored je kreiran kada je imovina {0} vraćena putem Prodajne Fakture {1}., +This schedule was created when Asset {0} was scrapped.,Ovaj raspored je kreiran kada je imovina {0} rashodovana., +This schedule was created when Asset {0} was sold through Sales Invoice {1}.,Ovaj raspored je kreiran kada je imovina {0} prodata putem Prodajne Fakture {1}., +This schedule was created when Asset {0} was updated after being split into new Asset {1}.,Ovaj raspored je kreiran kada jeImovina {0} ažurirana nakon što je podijeljena u novu Imovinu {1}., +This schedule was created when Asset {0}'s Asset Repair {1} was cancelled.,Ovaj raspored je kreiran kada je Imovinska {0} popravka imovine {1} otkazana., +This schedule was created when Asset {0}'s Asset Value Adjustment {1} was cancelled.,Ovaj raspored je kreiran kada je Imovina {0} iVrijednost Amortizacije Imovine {1} otkazan., +This schedule was created when Asset {0}'s shifts were adjusted through Asset Shift Allocation {1}.,Ovaj raspored je kreiran kad su Smjene Imovine {0} prilagođene kroz Dodjelu Smjene Imovine {1}., +This schedule was created when new Asset {0} was split from Asset {1}.,Ovaj raspored je kreiran kada je nova Imovina {0} odvojeno od Imovine {1}., +"This table is used to set details about the 'Item', 'Qty', 'Basic Rate', etc.","Ova tabela se koristi za postavljanje detalja o 'Artiku', 'Količini', 'Osnovnoj Cijeni', itd.", +This value shall be used when no matching Common Code for a record is found.,Ova vrijednost će se koristiti kada se ne pronađe odgovarajući Zajednički Kod za zapis., +This {} will be treated as material transfer.,Ovaj {} će se tretirati kao prijenos materijala., +Threshold for Suggestion (In Percentage),Prag za Prijedlog (u Procentima), +Time Taken to Deliver,Vrijeme Dostave, +Time in mins,Vrijeme u minutama, +Time in mins.,Vrijeme u minutama., +Time slot is not available,Vremenski termin nije dostupan, +To Date is mandatory,Do datuma je obavezno, +To Delivery Date,Do Datuma Dostave, +To Doctype,Za Doctype, +To Due Date,Do Datuma isteka roka, +To Payment Date,Do Datuma Plaćanja, +To Reference Date,Do Referentnog Datuma, +To add Operations tick the 'With Operations' checkbox.,"Da biste dodali Operacije, označite polje 'S Operacijama'.", +To add subcontracted Item's raw materials if include exploded items is disabled.,Da se doda podizvođačka sirovina artikala ako je Uključi Rastavljene Artikle onemogućeno., +To apply condition on parent field use parent.field_name and to apply condition on child table use doc.field_name. Here field_name could be based on the actual column name of the respective field.,Za primjenu uvjeta na nadređeno polje koristite parent.field_name i za primjenu uvjeta na podređenu tablicu koristite doc.field_name. Ovdje field_name može biti zasnovano na stvarnom imenu kolone odgovarajućeg polja., +To be Delivered to Customer,Dostava Klijentu, +To cancel a {} you need to cancel the POS Closing Entry {}.,"Da otkažete {}, morate otkazati Unos Zatvaranja Kase {}.", +"To enable Capital Work in Progress Accounting,","Da biste omogućili Knjigovodstvo Kapitalnih Radova u Toku,", +To include non-stock items in the material request planning. i.e. Items for which 'Maintain Stock' checkbox is unticked.,Uključivanje artikala bez zaliha u planiranje Materijalnog Naloga. tj. artikle za koje je 'Održavanje Zaliha'.polje poništeno., +"To include sub-assembly costs and scrap items in Finished Goods on a work order without using a job card, when the 'Use Multi-Level BOM' option is enabled.","Za uključivanje troškova podmontaže i otpadnih artikala u Gotov Proizvod na radnom nalogu bez upotrebe radne kartice, kada je omogućena opcija 'Koristi Višeslojnu Sastavnicu'.", +To submit the invoice without purchase order please set {0} as {1} in {2},"Da biste podnijeli Fakturu bez Kupovnog Naloga, postavi {0} kao {1} u {2}", +To submit the invoice without purchase receipt please set {0} as {1} in {2},"Da biste podnijeli Fakturu bez Kupovnog Računa, postavite {0} kao {1} u {2}", +"To use a different finance book, please uncheck 'Include Default FB Assets'","Da biste koristili drugi Finansijski Registar, poništi 'Uključi Standard Imovinu Finansijskog Registra'", +"To use a different finance book, please uncheck 'Include Default FB Entries'","Da biste koristili drugi Finansijski Registar, poništite oznaku 'Obuhvati standard Finansijski Registar unose'", +Total Active Items,Ukupno Aktivnih Artikala, +Total Allocations,Ukupno Dodjeljeno, +Total Asset,Ukupna Imovina, +Total Asset Cost,Ukupni Trošak Imovine, +Total Billing Hours,Ukupno Fakturisanih Sati, +Total Contribution Amount Against Invoices: {0},Ukupan Iznos Doprinosa naspram Faktura: {0}, +Total Contribution Amount Against Orders: {0},Ukupan Iznos Doprinosa naspram Naloga: {0}, +Total Equity,Ukupni Kapital, +Total Incoming Bills,Ukupno Dolaznih Faktura, +Total Incoming Payment,Ukupno Dolazno Plaćanje, +Total Incoming Value (Receipt),Ukupna ulazna vrijednost (Račun), +Total Interest,Ukupna Kamata, +Total Issues,Ukupno Slučajeva, +Total Items,Ukupno Artikala, +Total Liability,Ukupno Obaveze, +Total Number of Booked Depreciations ,Ukupan broj Knjiženih Amortizacija , +Total Operation Time,Ukupno Vrijeme Rada, +Total Other Charges,Ukupni Ostali Troškovi, +Total Outgoing Bills,Ukupno Odlaznih Faktura, +Total Outgoing Payment,Ukupno Odlazno Plaćanje, +Total Outgoing Value (Consumption),Ukupna Izlazna Vrijednost (Potrošnja), +Total Picked Quantity {0} is more than ordered qty {1}. You can set the Over Picking Allowance in Stock Settings.,Ukupna Odabrana Količina {0} je veća od naručene količine {1}. Dozvolu za prekoračenje možete postaviti u Postavkama Zaliha., +Total Purchase Amount,Ukupan Iznos Kupovine, +Total Purchase Cost has been updated,Ukupnni Kupovni Trošak je ažuriran, +Total Repair Cost,Ukupni Troškovi Popravke, +Total Reposting Count,Ukupan broj Ponovnog Unosa, +Total Sales Amount,Ukupan Iznos Prodaje, +Total Stock Value,Ukupna Vrijednost Zaliha, +Total Supplied Qty,Ukupna Isporučena Količina, +Total Time (in Mins),Ukupno Vrijeme (minuta), +Total Value,Ukupna Vrijednost, +Total Value Difference (Incoming - Outgoing),Ukupna Vrijednost Razlike (Dolazni- Odlazni), +Total Views,Ukupno Pregleda, +Total Warehouses,Ukupno Skladišta, +Total Weight (kg),Ukupna Težina (kg), +Total percentage against cost centers should be 100,Ukupna procentulna suma naspram Centara Troškova treba da bude 100, +Tracking Status,Status Praćenja, +Tracking Status Info,Status Praćenja Informacija, +Tracking URL,URL Praćenja, +Transaction Deletion Document: {0} is running for this Company. {1},Dokument Brisanje Transakcije: {0} u toku za ovu kompaniju. {1}, +Transaction Deletion Record,Zapis Brisanju Transakcije, +Transaction Deletion Record Details,Detalji Zapisa Brisanja Transakcije, +Transaction Deletion Record Item,Artikal Zapisa Brisanja Transakcije, +Transaction Exchange Rate,Transakcioni Devizni Kurs, +Transaction Settings,Postavke Transakcije, +Transaction currency: {0} cannot be different from Bank Account({1}) currency: {2},Valuta Transakcije: {0} mora biti ista kao valuta Bankovnog Računa ({1}): {2}, +Transactions against the Company already exist! Chart of Accounts can only be imported for a Company with no transactions.,Transakcije naspram Kompanije već postoje! Kontni Plan se može uvesti samo za kompaniju bez transakcija., +Transfer Asset,Prijenos Imovine, +Transfer From Warehouses,Prijenos iz Skladišta, +Transferring cannot be done to an Employee. Please enter location where Asset {0} has to be transferred,Prenos se ne može izvršiti na personal. Unesi lokaciju na koju se imovina {0} mora prenijeti, +Transit,Tranzit, +Transit Entry,Unos Tranzita, +Truncates 'Remarks' column to set character length,Skraćuje kolonu 'Napomene' radi postavljanja dužine znakova, +Type Of Call,Tip Poziva, +Type of Transaction,Tip Transakcije, +UAE VAT 201,UAE PDV 201, +UAE VAT Account,Račun PDV-a UAE PDV, +UAE VAT Accounts,Računi PDV-a UAE, +UAE VAT Settings,Postavke PDV-a UAE, +UOM conversion factor required for UOM: {0} in Item: {1},Faktor Konverzije je obavezan za Jedinicu: {0} za Artikal: {1}, +UnReconcile,Otkaži Usaglašavanje, +UnReconcile Allocations,Poništi Dodjele, +Unable to find the time slot in the next {0} days for the operation {1}. Please increase the 'Capacity Planning For (Days)' in the {2}.,Nije moguće pronaći vremenski termin u narednih {0} dana za operaciju {1}. Molimo povećajte 'Planiranje Kapaciteta za (Dana)' u {2}., +Unable to find variable:,Nije moguće pronaći varijablu:, +Unassigned Qty,Nedodijeljena Količina, +"Under Working Hours table, you can add start and end times for a Workstation. For example, a Workstation may be active from 9 am to 1 pm, then 2 pm to 5 pm. You can also specify the working hours based on shifts. While scheduling a Work Order, the system will check for the availability of the Workstation based on the working hours specified.","U tabeli radnog vremena možete dodati vrijeme početka i završetka za Radnu Stanicu. Na primjer, Radna Stanica može biti aktivna od 9 do 13 sati, zatim od 14 do 17 sati. Također možete odrediti radno vrijeme na osnovu smjena. Prilikom zakazivanja Radnog Naloga, sistem će provjeriti dostupnost Radne Stanice na osnovu navedenog radnog vremena.", +Unit of Measure (UOM),Jedinica Mjere, +Unlinked,Nepovezano, +Unqualified,Nekvalificiran, +Unrealized Profit / Loss Account,Nerealizovani Račun Rezultata, +Unrealized Profit / Loss account for intra-company transfers,Nerealizovani Račun Rezultata za transfere intra-kompanije, +Unrealized Profit/Loss account for intra-company transfers,Nerealizovani Račun Rezultata za transfere unutar kompanije, +Unreconcile Payment,Otkaži Usaglašavanje Plaćanja, +Unreconcile Payment Entries,Otkaži Unose Usaglašavanja Plaćanja, +Unreconcile Transaction,Otkaži Usaglašavanje Transakcije, +Unreconciled Amount,Neusaglešeni Iznos, +Unreconciled Entries,Neusaglašeni Unosi, +Unreserve,Otkaži Rezervaciju, +Unreserve Stock,Otkaži Rezervaciju Zaliha, +Unreserving Stock...,Otkazivanje Zaliha u toku..., +Unset Matched Payment Request,OtkažiI Usklađeni Zahtjev Plaćanje, +Up,Gore, +Update Billed Amount in Delivery Note,Ažuriraj Fakturisani Iznos Dostavnice, +Update Billed Amount in Purchase Order,Ažuriraj Fakturisani Iznos Kupovnog Naloga, +Update Billed Amount in Purchase Receipt,Ažuriraj Fakturisani Iznos Kupovnog Raöuna, +Update Existing Price List Rate,Ažuriraj postojeću Cijenu Cijenovnika, +Update Existing Records,Ažuriraj Postojeće Zapise, +Update Outstanding for Self,Ažuriraj neplaćeni iznos za ovaj dokument, +Update Rate as per Last Purchase,Ažuriraj Cijenu prema Posljednjoj Kupovini, +Update Total Purchase Cost,Ažuriraj Ukupnu Troškove Kupovine, +Update frequency of Project,Ažuriraj Učestalost Projekta, +Update stock must be enabled for the purchase invoice {0},Ažuriranje zaliha mora biti omogućeno za Kupovnu Fakturu {0}, +Update the modified timestamp on new communications received in Lead & Opportunity.,Ažuriraj izmijenjenu vremensku oznaku za novu korespondenciju primljene u Potencijalni Klijent & Prilici., +Update timestamp on new communication,Ažuriraj vremensku oznaku za novu korespondenciju, +Updated via 'Time Log' (In Minutes),Ažurirano putem 'Vremenski Zapisnik' (u minutama), +Updating Work Order status,Ažuriranje statusa radnog naloga u toku, +"Updating {0} of {1}, {2}","Ažuriram {0} od {1}, {2}", +Upload Bank Statement,Otpremi Bankovni Izvod, +Use 'Repost in background' button to trigger background job. Job can only be triggered when document is in Queued or Failed status.,Koristite dugme 'Ponovo knjiži u pozadini' da pokrenete posao u pozadini. Zadatak se može pokrenuti samo kada je dokument u stanju čekanja ili neuspješan., +Use Batch-wise Valuation,Koristi Šaržno Vrijednovanje, +Use Company Default Round Off Cost Center,Koristi Standard Centar Troškova Zaokruživanja kompanije, +Use Company default Cost Center for Round off,Koristi Standard Centar Troškova Zaokruživanja kompanije, +Use HTTP Protocol,Koristi HTTP Protokol, +Use Item based reposting,Koristi Ponovno Knjiženje na osnovu Artikla, +Use Serial / Batch Fields,Koristi Serijske Brojeve / Šaržna Polja, +Use Serial No / Batch Fields,Koristi Serijske Brojeve / Šaržna Polja, +Use Transaction Date Exchange Rate,Koristi Devizni Kurs Datuma Transakcije, +User {0}: Removed Employee Self Service role as there is no mapped employee.,Korisnik {0}: Uklonjena uloga samoposluživanja zaposlenika jer nema mapiranog zaposlenika., +User {0}: Removed Employee role as there is no mapped employee.,Korisnik {0}: Uklonjena uloga personala jer nema mapiranog personala., +Users can enable the checkbox If they want to adjust the incoming rate (set using purchase receipt) based on the purchase invoice rate.,Korisnici mogu omogućiti potvrdni okvir Ako žele prilagoditi ulaznu cijenu (podešenu pomoću kupovnog računa) na osnovu cijene kupovne fakture., +Users with this role are allowed to over bill above the allowance percentage,Korisnicima sa ovom ulogom je dozvoljeno da fakturišu iznad procentualnog odobrenja, +Users with this role are allowed to over deliver/receive against orders above the allowance percentage,Korisnicima sa ovom ulogom je dozvoljena prekomjerna Dostava/Primanje naspram narudžbi iznad procentualnog odobrenja, +Using negative stock disables FIFO/Moving average valuation when inventory is negative.,Korištenje negativnih zaliha onemogućava FIFO/Pokretni Prosjek vrednovanja kada je zaliha negativna., +VAT Accounts,PDV Računi, +VAT Amount (AED),Iznos PDV-a (AED), +VAT Audit Report,Izvještaj revizije PDV-a, +VAT on Expenses and All Other Inputs,PDV na rashode i sve ostale ulaze, +VAT on Sales and All Other Outputs,PDV na Prodaju i sve ostale izlaze, +Valid From must be after {0} as last GL Entry against the cost center {1} posted on this date,Važi Od mora biti nakon {0} kao posljednji Knigovodstveni unos naspram Centru Troškova {1} knjiženog na ovaj datum, +Validate Components and Quantities Per BOM,Potvrdi Komponente i Količine po Listi Materijala, +Validate Negative Stock,Potvrdi Negativne Zalihe, +Validate Pricing Rule,Potvrdi Pravilo Cijena, +Validate Stock on Save,Potvrdi Zalihe na Spremi, +Valuation (I - K),Vrijednovanje (I - K), +Valuation Field Type,Tip Polja Vrijednovanja, +Valuation Rate (In / Out),Stopa Vrednovnja (Ulaz / Izlaz), +Valuation rate for customer provided items has been set to zero.,Stopa Vrednovanja za Artikle koje je dostavio Klijent postavljena je na nulu., +Valuation rate for the item as per Sales Invoice (Only for Internal Transfers),Stopa Vrednovanja artikla prema Prodajnoj Fakturi (samo za interne transfere), +Value (G - D),Vrijednost (G - D), +Value ({0}),Vrijednost ({0}), +Value Based Inspection,Kontrola zasnovana na Vrijednosti, +Value Change,Promjena Vrijednosti, +Value Details,Detalji Vrijednosti, +Value as on,Vrijednost kao na, +Value of Goods,Vrijednost Proizvoda, +Value of New Capitalized Asset,Vrijednost nove kapitalizirane imovine, +Value of New Purchase,Vrijednost nove Kupovine, +Value of Scrapped Asset,Vrijednost Rashodovane Imovine, +Value of Sold Asset,Vrijednost Prodate Imovine, +Value of goods cannot be 0,Vrijednost Proizvoda ne može biti 0, +Verification failed please check the link,"Verifikacija nije uspjela, provjeri vezu", +Version,Verzija, +Via Landed Cost Voucher,Preko Obračunatih Troškova Verifikata, +View BOM Update Log,Pogledaj Zapisnik Ažuriranja Sastavnice, +View Exchange Gain/Loss Journals,Prikaži Žurnale Rezultata Deviznog Kursa, +View General Ledger,Pogledaj Knjigovodstveni Registar, +View Ledgers,Prikaži Registre, +Visits,Posjete, +Voice Call Settings,Postavke Telefonskog Poziva, +Voucher,Verifikat, +Voucher Name,Naziv Verifikata, +Voucher No is mandatory,Broj Verifikata je obavezan, +Voucher Qty,Količina, +Voucher Subtype,Podtip Verifikata, +Voucher {0} is over-allocated by {1},Verifikat {0} je prekomjerno dodijeljen od {1}, +Voucher-wise Balance,Stanje prema Verifikatu, +"WARNING: Exotel app has been separated from ERPNext, please install the app to continue using Exotel integration.","UPOZORENJE: Exotel aplikacija je odvojena od Sistema, instalirajte aplikaciju da nastavite koristiti Exotel integraciju.", +WIP Composite Asset,Objedinjena Imovina Posla u Toku, +Waiting for payment...,Čeka se uplata..., +Warehouse Capacity for Item '{0}' must be greater than the existing stock level of {1} {2}.,Kapacitet Skladišta za artikal '{0}' mora biti veći od postojećeg nivoa zaliha od {1} {2}., +Warehouse Details,Detalji Skladišta, +Warehouse Disabled?,Skladište Onemogućeno?, +Warehouse Settings,Postavke Skladišta, +Warehouse Wise Stock Balance,Stanje Zaliha prema Skladištu, +Warehouse wise Stock Value,Vrijednost Zaliha prema Skladištu, +Warehouse {0} does not belong to Company {1}.,Skladište {0} ne pripada Kompaniji {1}., +"Warehouse {0} is not linked to any account, please mention the account in the warehouse record or set default inventory account in company {1}.","Skladište {0} nije povezano ni sa jednim računom, navedi račun u zapisu skladišta ili postavi standard račun zaliha u kompaniji {1}.", +Warehouse's Stock Value has already been booked in the following accounts:,Vrijednost zaliha skladišta je već knjižena na sljedećim računima:, +Warning - Row {0}: Billing Hours are more than Actual Hours,Upozorenje - Red {0}: Sati naplate su više od stvarnih sati, +Warning on Negative Stock,Upozorenje na Negativnu Zalihu, +Warning!,Upozorenje!, +Watch Video,Pogledaj Video, +Website Script,Skripta Web Stranice, +Website Theme,Tema Web Stranice, +Week {0} {1},Sedmica {0} {1}, +Weekly Time to send,Sedmično vrijeme za slanje, +Weight (kg),Težina (kg), +"When a parent warehouse is chosen, the system conducts stock checks against the associated child warehouses","Kada se izabere Nadređeno skladište, sistem provodi provjere zaliha naspram pridruženih podređenih skladišta", +"When creating an Item, entering a value for this field will automatically create an Item Price at the backend.","Kada kreirate artikal, unosom vrijednosti za ovo polje automatski će se kreirati Cijena Artikla u pozadini.", +"While making Purchase Invoice from Purchase Order, use Exchange Rate on Invoice's transaction date rather than inheriting it from Purchase Order. Only applies for Purchase Invoice.","Dok pravite Kupovnu Fakturu iz Kupovnog Naloga, koristi Devizni Kurs na datum transakcije Kupovne Fakture umjesto da ga preuzmete iz Kupovnog Naloga. Primjenjuje se samo na Kupovnu Fakturu.", +Width (cm),Širina (cm), +With Period Closing Entry For Opening Balances,Sa završnim unosom perioda za Početna Stanja, +Withdrawal,Isplata, +Work Order / Subcontract PO,Radni Nalog / Podugovorni Kupovni Nalog, +Work Order Consumed Materials,Potrošeni Materijali Radnog Naloga, +Workflow,Radni Tok, +Workflow Action,Radnja Radnog Toka, +Workflow State,Radni Tok Stanje, +Workstation Dashboard,Kontrolna Tabla Radne Stanice, +Workstation Status,Status Radne Stanice, +Workstation Type,Tip Radne Stanice, +Workstations,Radne Stanice, +Write Off Limit,Ograničenje Otpisa, +Wrong Company,Pogrešna Kompanija, +Wrong Template,Pogrešan Šablon, +You are importing data for the code list:,Uvoziš podatke za Listu Koda:, +You are not authorized to make/edit Stock Transactions for Item {0} under warehouse {1} before this time.,Niste ovlašteni da vršite/uredite transakcije zaliha za artikal {0} u skladištu {1} prije ovog vremena., +You are picking more than required quantity for the item {0}. Check if there is any other pick list created for the sales order {1}.,Birate više od potrebne količine za artikal {0}. Provjerite postoji li neka druga lista odabira kreirana za prodajni nalog {1}., +You can add the original invoice {} manually to proceed.,Možete dodati originalnu fakturu {} ručno da nastavite., +"You can set it as a machine name or operation type. For example, stiching machine 12","Možete ga postaviti kao naziv mašine ili tip operacije. Na primjer, mašina za šivanje 12", +You can't make any changes to Job Card since Work Order is closed.,Ne možete napraviti nikakve promjene na Radnoj Kartici jer je Radni Nalog zatvoren., +You can't process the serial number {0} as it has already been used in the SABB {1}. {2} if you want to inward same serial number multiple times then enabled 'Allow existing Serial No to be Manufactured/Received again' in the {3},"Ne možete obraditi serijski broj {0} jer je već korišten u Serijskom i Šaržnom Paketu {1}. {2} ako želite da primite isti serijski broj više puta, tada omogući 'Dozvoli da se postojeći Serijski Broj ponovo Proizvede/Primi' u {3}", +You can't redeem Loyalty Points having more value than the Rounded Total.,Ne možete iskoristiti bodove lojalnosti koji imaju veću vrijednost od zaokruženog ukupnog iznosa., +You cannot change the rate if BOM is mentioned against any Item.,Ne možete promijeniti cijenu ako je Sastavnica navedena naspram bilo kojeg artikla., +You cannot create a {0} within the closed Accounting Period {1},Ne možete kreirati {0} unutar zatvorenog Knjigovodstvenog Perioda {1}, +You cannot create/amend any accounting entries till this date.,Ne možete kreirati/izmijeniti bilo koje knjigovodstvene unose do ovog datuma., +You cannot repost item valuation before {},Ne možete ponovo knjižiti procjenu artikla prije {}, +You cannot {0} this document because another Period Closing Entry {1} exists after {2},Ne možete {0} ovaj dokument jer postoji drugi Unos Zatvaranje Perioda {1} nakon {2}, +You have entered a duplicate Delivery Note on Row,Unijeli ste duplikat Dostavnice u red, +You haven't created a {0} yet,Još niste kreirali {0}, +You need to cancel POS Closing Entry {} to be able to cancel this document.,Morate otkazati Unos Zatvaranje Kase {} da biste mogli otkazati ovaj dokument., +Your Name (required),Vaše Ime (obavezno), +Your email has been verified and your appointment has been scheduled,Vaša e-pošta je verificirana i vaš termin je zakazan, +Zero Balance,Nulto Stanje, +Zero Rated,Nulta Stopa, +Zero quantity,Nulta Količina, +`Allow Negative rates for Items`,`Dozvoli negativne cijene za Artikle`, +as Code,kao Kod, +as Description,kao Opis, +as Title,kao Naslov, +as a percentage of finished item quantity,kao procentualna količine gotovog proizvoda, +at,u, +by {},od {}, +dated {0},datirano {0}, +description,opis, +discount applied,primijenjen popust, +fieldname,naziv polja, +is already,već je, +must be between 0 and 100,mora biti između 0 i 100, +or its descendants,ili njegovih podređnih, +out of 5,od 5 mogućih, +payments app is not installed. Please install it from {0} or {1},aplikacija za plaćanja nije instalirana. Instaliraj s {0} ili {1}, +payments app is not installed. Please install it from {} or {},aplikacija za plaćanja nije instalirana. Instaliraj s {} ili {}, +performing either one below:,izvodi bilo koje dolje:, +product bundle item row's name in sales order. Also indicates that picked item is to be used for a product bundle,naziv reda artikla paketa proizvoda u prodajnom nalogu. Također označava da odabrani artikal treba koristiti za paket proizvoda, +quotation_item,Artikal Ponude, +ratings,ocjene, +subscription is already cancelled.,pretplata je već otkazana., +temporary name,privremeno ime, +to unallocate the amount of this Return Invoice before cancelling it.,da poništite iznos ove povratne fakture prije nego što je poništite., +variance,odstupanje, +via BOM Update Tool,putem Alata Ažuriranje Sastavnice, +will be,će biti, +{0} {1} has submitted Assets. Remove Item {2} from table to continue.,{0} {1} je podnijeo Imovinu. Ukloni Artikal {2} iz tabele da nastavite., +{0} Account not found against Customer {1}.,{0} Račun nije pronađen prema Klijentu {1}., +{0} Account: {1} ({2}) must be in either customer billing currency: {3} or Company default currency: {4},{0} Račun: {1} ({2}) mora biti u bilo kojoj valuti fakture klijenta: {3} ili standard valuta kompanije: {4}, +{0} Budget for Account {1} against {2} {3} is {4}. It {5} exceed by {6},{0} Budžet za račun {1} naspram {2} {3} je {4}. To {5} premašuje za {6}, +{0} Transaction(s) Reconciled,{0} Transakcije su Usaglašene, +{0} account is not of type {1},{0} račun nije tipa {1}, +{0} account not found while submitting purchase receipt,{0} račun nije pronađen prilikom podnošenja Kupovnog Računa, +{0} and {1},{0} i {1}, +{0} cannot be used as a Main Cost Center because it has been used as child in Cost Center Allocation {1},{0} se ne može koristiti kao Matični Centar Troškova jer je korišten kao podređeni u raspodjeli Centra Troškova {1}, +{0} cannot be zero,{0} ne može biti nula, +{0} currency must be same as company's default currency. Please select another account.,{0} valuta mora biti ista kao standard valuta kompanije. Odaberi drugi račun., +{0} entered twice {1} in Item Taxes,{0} uneseno dvaput {1} u PDV Artikla, +{0} has Payment Term based allocation enabled. Select a Payment Term for Row #{1} in Payment References section,{0} ima omogućenu dodjelu na osnovu uslova plaćanja. Odaberi rok plaćanja za red #{1} u sekciji Reference plaćanja, +{0} is a mandatory Accounting Dimension.
Please set a value for {0} in Accounting Dimensions section.,{0} je obavezna knjigovodstvena dimenzija.
Postavite vrijednost za {0} u sekciji Knjigovodstvene Dimenzije., +{0} is a mandatory field.,{0} je obavezno polje., +{0} is added multiple times on rows: {1},{0} je dodata više puta u redove: {1}, +{0} is already running for {1},{0} već radi za {1}, +{0} is mandatory for account {1},{0} je obavezan za račun {1}, +{0} is not running. Cannot trigger events for this Document,{0} ne radi. Nije moguće pokrenuti događaje za ovaj dokument, +{0} items lost during process.,{0} artikala izgubljenih tokom procesa., +{0} qty of Item {1} is being received into Warehouse {2} with capacity {3}.,{0} količina artikla {1} se prima u Skladište {2} kapaciteta {3}., +"{0} units are reserved for Item {1} in Warehouse {2}, please un-reserve the same to {3} the Stock Reconciliation.","{0} jedinica je rezervisano za artikal {1} u Skladištu {2}, poništi rezervaciju iste za {3} Popis Zaliha.", +{0} units of Item {1} is not available in any of the warehouses.,{0} jedinica artikla {1} nije dostupan ni u jednom od skladišta., +{0} units of Item {1} is picked in another Pick List.,{0} jedinica artikla {1} je odabrano na drugoj Listi Odabira., +{0} units of {1} are required in {2} with the inventory dimension: {3} ({4}) on {5} {6} for {7} to complete the transaction.,{0} jedinice {1} su obavezne u {2} sa dimenzijom zaliha: {3} ({4}) na {5} {6} za {7} za dovršetak transakcije., +{0} units of {1} needed in {2} on {3} {4} to complete this transaction.,{0} jedinica {1} potrebnih u {2} na {3} {4} za završetak ove transakcije., +{0} will be given as discount.,{0} će biti dato kao popust., +{0} {1} Manually,{0} {1} Ručno, +{0} {1} Partially Reconciled,{0} {1} Djelimično Usaglašeno, +"{0} {1} cannot be updated. If you need to make changes, we recommend canceling the existing entry and creating a new one.","{0} {1} se ne može ažurirati. Ako trebate napraviti promjene, preporučujemo da poništite postojeći unos i kreirate novi.", +{0} {1} has already been fully paid.,{0} {1} je već u potpunosti plaćeno., +{0} {1} has already been partly paid. Please use the 'Get Outstanding Invoice' or the 'Get Outstanding Orders' button to get the latest outstanding amounts.,{0} {1} je već djelimično plaćena. Koristi dugme 'Preuzmi Nepodmirene Fakture' ili 'Preuzmi Nepodmirene Naloge' da preuzmete najnovije nepodmirene iznose., +{0} {1} is allocated twice in this Bank Transaction,{0} {1} se dodeljuje dva puta u ovoj bankovnoj transakciji, +{0} {1} is already linked to Common Code {2}.,{0} {1} je već povezan sa Zajedničkim Kodom {2}., +{0} {1} is not in any active Fiscal Year,{0} {1} nije ni u jednoj aktivnoj Fiskalnoj Godini, +{0} {1} is on hold,{0} {1} je na čekanju, +{0} {1} not allowed to be reposted. Modify {2} to enable reposting.,{0} {1} nije dozvoljeno ponovno knjiženje. Izmijeni {2} da omogućite ponovno knjiženje., +{0} {1} via CSV File,{0} {1} preko CSV datoteke, +{0} {1}: Account {2} is a Group Account and group accounts cannot be used in transactions,{0} {1}: Račun {2} je Grupni Račun a grupni računi se ne mogu koristiti u transakcijama, +{0} {1}: Cost Center is required for 'Profit and Loss' account {2}.,{0} {1}: Centar Troškova je obavezan za račun 'Rezultat' {2}., +{0} {1}: Cost Center {2} is a group cost center and group cost centers cannot be used in transactions,{0} {1}: Centar Troškova {2} je grupni centar troškova a grupni centri troškova se ne mogu koristiti u transakcijama, +{0}% of total invoice value will be given as discount.,{0}% ukupne vrijednosti fakture će se dati kao popust., +{0}'s {1} cannot be after {2}'s Expected End Date.,{0} {1} ne može biti nakon {2}očekivanog datuma završetka., +{0}: {1} does not belong to the Company: {2},{0}: {1} ne pripada Kompaniji: {2}, +{item_name}'s Sample Size ({sample_size}) cannot be greater than the Accepted Quantity ({accepted_quantity}),{item_name} Veličina Uzorka ({sample_size}) ne može biti veća od Prihvaćene Količina ({accepted_quantity}), +{} Available,{} Dostupno, +{} To Deliver,{} Za Dostavu, +{} To Receive,{} Za Primiti, +{} Assigned,{} Dodijeljeno, +{} Available,{} Dostupno, +{} Open,{} Otvori, +{} Pending,{} Na Čekanju, +{} To Bill,{} Za Fakturisati, +{} is a child company.,{} je podređena kompanija., +{} {} is already linked with another {},{} {} je već povezan s drugim {}, +{} {} is already linked with {} {},{} {} je već povezan sa {} {}, +{} {} is not affecting bank account {},{} {} ne utiče na bankovni račun {}, diff --git a/erpnext/translations/de.csv b/erpnext/translations/de.csv index b9d790d2428..ae21d758b75 100644 --- a/erpnext/translations/de.csv +++ b/erpnext/translations/de.csv @@ -309,7 +309,7 @@ BOM {0} does not belong to Item {1},Stückliste {0} gehört nicht zum Artikel {1 BOM {0} must be active,Stückliste {0} muss aktiv sein, BOM {0} must be submitted,Stückliste {0} muss übertragen werden, Balance,Saldo, -Balance (Dr - Cr),Balance (Dr - Cr), +Balance (Dr - Cr),Saldo (S - H), Balance ({0}),Saldo ({0}), Balance Qty,Bilanzmenge, Balance Sheet,Bilanz, @@ -508,9 +508,9 @@ Close Loan,Darlehen schließen, Close the POS,Schließen Sie die Kasse, Closed,Geschlossen, Closed order cannot be cancelled. Unclose to cancel.,Geschlosser Auftrag kann nicht abgebrochen werden. Bitte wiedereröffnen um abzubrechen., -Closing (Cr),Schlußstand (Haben), -Closing (Dr),Schlußstand (Soll), -Closing (Opening + Total),Schließen (Eröffnung + Gesamt), +Closing (Cr),Schlußstand (H), +Closing (Dr),Schlußstand (S), +Closing (Opening + Total),Schlußstand (Anfangssstand + Summe), Closing Account {0} must be of type Liability / Equity,Abschlußkonto {0} muss vom Typ Verbindlichkeiten/Eigenkapital sein, Closing Balance,Schlussbilanz, Code,Code, @@ -598,7 +598,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, @@ -647,8 +647,8 @@ Creating Fees,Gebühren anlegen, Creating student groups,Erstelle Studentengruppen, Creating {0} Invoice,{0} Rechnung erstellen, Credit,Haben, -Credit ({0}),Guthaben ({0}), -Credit Account,Guthabenkonto, +Credit ({0}),Haben ({0}), +Credit Account,Haben-Konto, Credit Balance,Verfügbarer Kredit, Credit Card,Kreditkarte, Credit Days cannot be a negative number,Kredit-Tage können keine negative Zahl sein, @@ -712,14 +712,14 @@ Date of Transaction,Datum der Transaktion, Day,Tag, Debit,Soll, Debit ({0}),Soll ({0}), -Debit Account,Sollkonto, +Debit Account,Soll-Konto, Debit Note,Lastschrift, Debit Note Amount,Lastschriftbetrag, Debit Note Issued,Lastschrift ausgestellt am, -Debit To is required,Debit Um erforderlich, +Debit To is required,Forderungskonto ist erforderlich, Debit and Credit not equal for {0} #{1}. Difference is {2}.,Soll und Haben nicht gleich für {0} #{1}. Unterschied ist {2}., -Debtors,Schuldner, -Debtors ({0}),Schuldnern ({0}), +Debtors,Debitoren, +Debtors ({0}),Debitoren ({0}), Declare Lost,Für verloren erklären, Default Activity Cost exists for Activity Type - {0},Es gibt Standard-Aktivitätskosten für Aktivitätsart - {0}, Default BOM ({0}) must be active for this item or its template,Standardstückliste ({0}) muss für diesen Artikel oder dessen Vorlage aktiv sein, @@ -1628,7 +1628,7 @@ Open Item {0},Offene-Posten {0}, Open Notifications,Offene Benachrichtigungen, Open Orders,Offene Bestellungen, Open a new ticket,Öffnen Sie ein neues Ticket, -Opening,Eröffnung, +Opening,Anfangssstand, Opening (Cr),Anfangssstand (Haben), Opening (Dr),Anfangsstand (Soll), Opening Accounting Balance,Eröffnungsbilanz, @@ -2215,8 +2215,8 @@ Retained Earnings,Gewinnrücklagen, Retention Stock Entry,Vorratsbestandseintrag, Retention Stock Entry already created or Sample Quantity not provided,Aufbewahrungsbestandseintrag bereits angelegt oder Musterbestand nicht bereitgestellt, Return,Zurück, -Return / Credit Note,Return / Gutschrift, -Return / Debit Note,Return / Lastschrift, +Return / Credit Note,Rückgabe / Gutschrift, +Return / Debit Note,Rückgabe / Lastschrift, Returns,Retouren, Reverse Journal Entry,Buchungssatz umkehren, Review Invitation Sent,Einladung überprüfen gesendet, @@ -2826,7 +2826,7 @@ To {0} | {1} {2},An {0} | {1} {2}, Toggle Filters,Filter umschalten, Too many columns. Export the report and print it using a spreadsheet application.,Zu viele Spalten. Exportieren Sie den Bericht und drucken Sie ihn mit einem Tabellenkalkulationsprogramm aus., Tools,Werkzeuge, -Total (Credit),Insgesamt (Credit), +Total (Credit),Insgesamt (Haben), Total (Without Tax),Summe (ohne Steuern), Total Achieved,Gesamtsumme erreicht, Total Actual,Summe Tatsächlich, @@ -2837,7 +2837,7 @@ Total Budget,Gesamtbudget; Gesamtetat, Total Collected: {0},Gesammelt gesammelt: {0}, Total Commission,Gesamtprovision, Total Contribution Amount: {0},Gesamtbeitragsbetrag: {0}, -Total Credit/ Debit Amount should be same as linked Journal Entry,Der Gesamtkreditbetrag sollte identisch mit dem verknüpften Buchungssatz sein, +Total Credit/ Debit Amount should be same as linked Journal Entry,Der gesamte Soll-/ Habenbetrag sollte identisch mit dem verknüpften Buchungssatz sein, Total Debit must be equal to Total Credit. The difference is {0},Gesamt-Soll muss gleich Gesamt-Haben sein. Die Differenz ist {0}, Total Invoiced Amount,Gesamtrechnungsbetrag, Total Order Considered,Geschätzte Summe der Bestellungen, @@ -2915,7 +2915,7 @@ Unable to find score starting at {0}. You need to have standing scores covering Unable to find variable: ,Variable kann nicht gefunden werden:, Unblock Invoice,Rechnung entsperren, Uncheck all,Alle abwählen, -Unclosed Fiscal Years Profit / Loss (Credit),Offener Gewinn / Verlust (Kredit) des Geschäftsjahres, +Unclosed Fiscal Years Profit / Loss (Credit),Offener Gewinn / Verlust (Haben) des Geschäftsjahres, Unit,Einheit, Unit of Measure,Maßeinheit, Unit of Measure {0} has been entered more than once in Conversion Factor Table,Die Mengeneinheit {0} wurde mehr als einmal in die Umrechnungsfaktortabelle eingetragen., @@ -3185,7 +3185,7 @@ on,Am, {0} {1}: Cost Center is required for 'Profit and Loss' account {2}. Please set up a default Cost Center for the Company.,"{0} {1}: Kostenstelle ist erforderlich für ""Gewinn- und Verlust"" Konto {2}. Bitte erstellen Sie eine Standard-Kostenstelle für das Unternehmen.", {0} {1}: Cost Center {2} does not belong to Company {3},{0} {1}: Kostenstelle {2} gehört nicht zu Unternehmen {3}, {0} {1}: Customer is required against Receivable account {2},{0} {1}: Für das Eingangskonto {2} ist ein Kunde erforderlich, -{0} {1}: Either debit or credit amount is required for {2},{0} {1}: Debit- oder Kreditbetrag ist für {2} erforderlich, +{0} {1}: Either debit or credit amount is required for {2},{0} {1}: Soll- oder Habenbetrag ist für {2} erforderlich, {0} {1}: Supplier is required against Payable account {2},{0} {1}: Für das Kreditorenkonto ist ein Lieferant erforderlich {2}, {0}% Billed,{0}% berechnet, {0}% Delivered,{0}% geliefert, @@ -3408,7 +3408,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, @@ -3889,7 +3889,8 @@ Operation Id,Arbeitsgang-ID, Partially ordered,teilweise geordnete, Please select company first,Bitte wählen Sie zuerst die Firma aus, Please select patient,Bitte wählen Sie Patient, -Printed On ,Gedruckt auf, +Printed On ,Gedruckt am, +Printed on {0},Gedruckt am {0}, Projected qty,Geplante Menge, Sales person,Vertriebsmitarbeiter, Serial No {0} Created,Seriennummer {0} Erstellt, @@ -4338,9 +4339,9 @@ Auto Created,Automatisch erstellt, Stock User,Lager-Benutzer, Fiscal Year Company,Geschäftsjahr Unternehmen, Debit Amount,Soll-Betrag, -Credit Amount,Guthaben-Summe, +Credit Amount,Haben-Betrag, Debit Amount in Account Currency,Soll-Betrag in Kontowährung, -Credit Amount in Account Currency,(Gut)Haben-Betrag in Kontowährung, +Credit Amount in Account Currency,Haben-Betrag in Kontowährung, Voucher Detail No,Belegdetail-Nr., Is Opening,Ist Eröffnungsbuchung, Is Advance,Ist Anzahlung, @@ -4480,10 +4481,23 @@ Payment Reconciliation,Zahlungsabgleich, Receivable / Payable Account,Forderungen-/Verbindlichkeiten-Konto, Bank / Cash Account,Bank / Geldkonto, From Invoice Date,Ab Rechnungsdatum, -To Invoice Date,Um Datum Rechnung, -Minimum Invoice Amount,Mindestabrechnung, +To Invoice Date,Bis Rechnungsdatum, +Invoice Limit,Max. Anzahl Rechnungen, +From Payment Date,Ab Zahlungsdatum, +To Payment Date,Bis Zahlungsdatum, +Payment Limit,Max. Anzahl Zahlungen, +Minimum Invoice Amount,Minimaler Rechnungsbetrag, Maximum Invoice Amount,Maximaler Rechnungsbetrag, -System will fetch all the entries if limit value is zero.,"Das System ruft alle Einträge ab, wenn der Grenzwert Null ist.", +Minimum Payment Amount,Minimaler Zahlungsbetrag, +Maximum Payment Amount,Maximaler Zahlungsbetrag, +Filter on Invoice,Filter auf Rechnungsnr., +Filter on Payment,Filter auf Zahlungsnr., +"If you need to reconcile particular transactions against each other, then please select accordingly. If not, all the transactions will be allocated in FIFO order.","Wenn Sie bestimmte Transaktionen gegeneinander abgleichen müssen, wählen Sie diese bitte entsprechend aus. Andernfalls werden alle Transaktionen in FIFO-Reihenfolge zugewiesen.", +System will fetch all the entries if limit value is zero.,"Das System ruft alle Einträge ab, wenn die max. Anzahl Null ist.", +This filter will be applied to Journal Entry.,Dieser Filter wird auf Buchungssätze angewendet., +Unreconciled Entries,Nicht zugeordnete Buchungen, +Allocated Entries,Zugewiesene Buchungen, +Accounting Dimensions Filter,Filetr nach Buchhaltungsdimensionen, Get Unreconciled Entries,Nicht zugeordnete Buchungen aufrufen, Unreconciled Payment Details,Nicht abgeglichene Zahlungen, Invoice/Journal Entry Details,Einzelheiten zu Rechnungs-/Journalbuchungen, @@ -5085,7 +5099,7 @@ Percentage you are allowed to transfer more against the quantity ordered. For ex PUR-ORD-.YYYY.-,PUR-ORD-.YYYY.-, Get Items from Open Material Requests,Hole Artikel von offenen Material Anfragen, Fetch items based on Default Supplier.,Abrufen von Elementen basierend auf dem Standardlieferanten., -Required By,Benötigt von, +Required By,Benötigt bis, Order Confirmation No,Auftragsbestätigung Nr, Order Confirmation Date,Auftragsbestätigungsdatum, Customer Mobile No,Mobilnummer des Kunden, @@ -5686,13 +5700,13 @@ Is Master Data Processed,Werden Stammdaten verarbeitet?, Is Master Data Imported,Werden Stammdaten importiert?, Tally Creditors Account,Tally Gläubigerkonto, Creditors Account set in Tally,Gläubigerkonto in Tally eingestellt, -Tally Debtors Account,Tally Debtors Account, +Tally Debtors Account,Tally Debitorenkonto, Debtors Account set in Tally,Debitorenkonto in Tally eingestellt, -Tally Company,Tally Company, -Company Name as per Imported Tally Data,Firmenname gemäß Imported Tally Data, +Tally Company,Tally Unternehmen, +Company Name as per Imported Tally Data,Firmenname gemäß Importierten Tally-Daten, Default UOM,Standard-UOM, UOM in case unspecified in imported data,"UOM für den Fall, dass in importierten Daten nicht angegeben", -ERPNext Company,ERPNext Company, +ERPNext Company,ERPNext Unternehmen, Your Company set in ERPNext,Ihr Unternehmen in ERPNext eingestellt, Processed Files,Verarbeitete Dateien, Parties,Parteien, @@ -8326,6 +8340,7 @@ Please set a Company,Bitte legen Sie eine Firma fest, "Sorry, this coupon code's validity has expired",Die Gültigkeit dieses Gutscheincodes ist leider abgelaufen, "Sorry, this coupon code is no longer valid",Dieser Gutscheincode ist leider nicht mehr gültig, For the 'Apply Rule On Other' condition the field {0} is mandatory,Für die Bedingung 'Regel auf andere anwenden' ist das Feld {0} obligatorisch, +"For the new {0} to take effect, would you like to clear the current {1}?","Möchten sie die/den aktuelle(n) {1} entfernen, damit das neue {0} angewendet wird?",Clear payment terms template and/or payment schedule when due date is changed {1} Not in Stock,{1} Nicht auf Lager, Only {0} in Stock for item {1},Nur {0} auf Lager für Artikel {1}, Please enter a coupon code,Bitte geben Sie einen Gutscheincode ein, @@ -8832,7 +8847,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.", @@ -11816,103 +11830,489 @@ will be,wird sein, {} is a child company.,{} ist ein untergeordnetes Unternehmen., {} {} is already linked with another {},{} {} ist bereits mit einem anderen {} verknüpft, {} {} is already linked with {} {},{} {} ist bereits mit {} {} verknüpft, -A Transaction Deletion Document: {0} is triggered for {0},Eine Transaktion Löschungsdokument: {0} wird für {0} ausgelöst, -About Us Settings,"Einstellungen zu ""Über uns""", -Allow Internal Transfers at Arm's Length Price,Interne Übertragungen zum Fremdvergleichspreis zulassen, -Asset decapitalized after Asset Capitalization {0} was submitted,"Vermögenswert freigegeben, nachdem Anlagenaktivierung {0} gebucht wurde", -Auto Email Report,Auto Email-Bericht, -Auto close Opportunity Replied after the no. of days mentioned above,Automatische Schließungschaltung antwortete nach der oben genannten Anzahl von Tagen, -Avg Rate (Balance Stock),Durchschnittliche Rate (Lagerbestand), -Billing Interval in Subscription Plan must be Month to follow calendar months,"Abrechnungsintervall im Abonnementplan muss ""Monat"" sein, um Kalendermonate zu folgen", -Bulk Update,Massen-Update, -Can't disable batch wise valuation for active batches.,Sie können die chargenweise Bewertung für aktive Chargen nicht deaktivieren., -Can't disable batch wise valuation for items with FIFO valuation method.,Sie können die chargenweise Bewertung für Artikel mit FIFO-Bewertungsmethode nicht deaktivieren., -Cannot disable batch wise valuation for FIFO valuation method.,Sie können die chargenweise Bewertung für die FIFO-Bewertungsmethode nicht deaktivieren., -Cannot enqueue multi docs for one company. {0} is already queued/running for company: {1},Mehrere Dokumente für ein Unternehmen können nicht in die Warteschlange gestellt werden. {0} ist bereits in die Warteschlange gestellt/wird für das Unternehmen ausgeführt: {1}, -Contact Us Settings,Einstellungen zu „Kontaktieren Sie uns“, -Create Journal Entries,Buchungssätze erstellen, -Create a variant with the template image.,Eine Variante mit dem Vorlagenbild erstellen., -Create in Draft Status,In Entwurfsstatus erstellen, -Custom delimiters,Benutzerdefinierte Trennzeichen, -Deleted Documents,Gelöschte Dokumente, -Delimiter options,Trennzeichenoptionen, -Dependent Task {0} is not a Template Task,Abhängige Aufgabe {0} ist keine Vorlage einer Aufgabe, -Depreciation Entry Posting Status,Buchungsstatus des Abschreibungseintrags, -Depreciation Schedule View,Ansicht Abschreibungsplan, -Depreciation cannot be calculated for fully depreciated assets,Für vollständig abgeschriebene Vermögensgegenstände kann keine Abschreibung berechnet werden, -Do Not Use Batch-wise Valuation,Keine chargenweise Bewertung verwenden, -Domain Settings,Domäneneinstellungen, -Email Domain,E-Mail-Domain, -Enable Immutable Ledger,Unveränderliches Hauptbuch aktivieren, -Enable it if users want to consider rejected materials to dispatch.,"Aktivieren Sie diese Option, wenn Benutzer zurückgewiesenes Material für den Versand berücksichtigen möchten.", -Excess Materials Consumed,Überschüssige Materialien verbraucht, -Excess Transfer,Überschuss-Übertragung, -FIFO Queue vs Qty After Transaction Comparison,Vergleich zwischen FIFO-Warteschlange und Menge nach Transaktion, -"For the {0}, the quantity is required to make the return entry","Für die {0} ist die Menge erforderlich, um die Retoure zu erstellen", -"If enabled, the item rate won't adjust to the valuation rate during internal transfers, but accounting will still use the valuation rate.","Falls aktiviert, wird der Artikelkurs bei internen Transfers nicht an den Bewertungskurs angepasst, aber die Buchhaltung verwendet weiterhin den Wertansatz.", -"If enabled, the system will use the moving average valuation method to calculate the valuation rate for the batched items and will not consider the individual batch-wise incoming rate.","Falls aktiviert, verwendet das System die Bewertungsmethode des gleitenden Durchschnitts zur Berechnung des Wertansatzes für die chargenweisen Artikel und berücksichtigt nicht den individuellen chargenweisen Eingangskurs.", -Job Worker,Unterauftragnehmer, -Job Worker Address,Unterauftragnehmer Adresse, -Job Worker Address Details,Vorschau Adresse Unterauftragnehmer, -Job Worker Contact,Vertrag des Unterauftragnehmers, -Job Worker Delivery Note,Lieferschein des Unterauftragnehmers, -Job Worker Name,Name des Unterauftragnehmer, -Job Worker Warehouse,Lagerhaus des Unterauftragnehmers, -"Learn about Common Party","Erfahren Sie mehr über die Verknüpfung von Kunden und Lieferanten", -Notification,Benachrichtigung, -Notification Settings,Benachrichtigungseinstellungen, -Offsetting for Accounting Dimension,Verrechnung für Buchhaltungsdimension, -Only Include Allocated Payments,Nur zugeordnete Zahlungen einbeziehen, -Only one {0} entry can be created against the Work Order {1},Nur ein {0} Eintrag kann gegen den Arbeitsauftrag {1} erstellt werden, -Over Picking Allowance,Überkommissionierzugabe, -Over Transfer Allowance,Überschlusstransferzugabe, -Overbilling of {} ignored because you have {} role.,"Überhöhte Abrechnung von {} wurde ignoriert, weil Sie die Rolle {} haben.", -Payment Reconciliation Job: {0} is running for this party. Can't reconcile now.,Job für Zahlungsabgleich: {0} läuft für diese Partei. Kann jetzt nicht abgleichen., -Payment Request created from Sales Order or Purchase Order will be in Draft status. When disabled document will be in unsaved state.,"Eine Zahlungsanforderung, die aus einem Auftrag oder einer Bestellung erstellt wurde, wird im Entwurfsstatus sein. Wenn deaktiviert, wird das Dokument in ungespeichertem Zustand sein.", -Payment Request took too long to respond. Please try requesting for payment again.,"Zahlungsaufforderung hat zu lange gedauert, um zu antworten. Bitte versuchen Sie die Zahlung erneut anzufragen.", -Payment Terms Status for Sales Order,Status für Zahlungsbedingungen für Aufträge, -Pipeline By,Pipeline von, -Please enable Use Old Serial / Batch Fields to make_bundle,"Bitte aktivieren Sie ""Alte Serien-/Batchfelder verwenden"" für make_bundle", -Print Style,Druckstil, -Reconcile All Serial Nos / Batches,Alle Seriennummern/Chargen abgleichen, -Reset Company Default Values,Standardwerte des Unternehmens zurücksetzen, -Reset Raw Materials Table,Tabelle Rohstoffe zurücksetzen, -Return Against Subcontracting Receipt,Retoure gegen Unterauftragsbeleg, -Return Components,Komponenten zurückgeben, -Returned Against,Zurückgegeben gegen, -Returned exchange rate is neither integer not float.,Der zurückgegebene Wechselkurs ist weder Integer noch Float., -Round Off Tax Amount,Steuerbetrag abrunden, -Rounding Loss Allowance,Rundungsverlusttoleranz, -Rounding Loss Allowance should be between 0 and 1,Rundungsverlusttoleranz muss zwischen 0 und 1 sein, -Row #{0}: Rejected Warehouse is mandatory for the rejected Item {1},Zeile #{0}: Ausschusslager ist für den abgelehnten Artikel {1} obligatorisch, -Row #{0}: You cannot use the inventory dimension '{1}' in Stock Reconciliation to modify the quantity or valuation rate. Stock reconciliation with inventory dimensions is intended solely for performing opening entries.,"Zeile #{0}: Sie können die Bestandsdimension '{1}' in der Bestandsabgleich nicht verwenden, um die Menge oder den Wertansatz zu ändern. Die Bestandsabgleich mit Bestandsdimensionen ist ausschließlich für die Durchführung von Eröffnungsbuchungen vorgesehen.", -Row {0}: Packed Qty must be equal to {1} Qty.,Zeile {0}: Verpackte Menge muss gleich der {1} Menge sein., -Row {0}: Total Number of Depreciations cannot be less than or equal to Opening Number of Booked Depreciations,Zeile {0}: Die Gesamtzahl der Abschreibungen kann nicht kleiner oder gleich der Anzahl der gebuchten Abschreibungen zu Beginn sein, -SCO Supplied Item,Artikel beigestellt für Unterauftrag, -SLA Fulfilled On Status,SLA erfüllt am Status, -SLA will be applied if {1} is set as {2}{3},"SLA wird angewendet, wenn {1} als {2}{3} eingestellt ist", -SMS Settings,SMS-Einstellungen, -SO Total Qty,Kd.-Auftr.-Gesamtmenge, -"Sales Order {0} already exists against Customer's Purchase Order {1}. To allow multiple Sales Orders, Enable {2} in {3}","Auftrag {0} existiert bereits für die Kundenbestellung {1}. Um mehrere Verkaufsaufträge zuzulassen, aktivieren Sie {2} in {3}", +A Transaction Deletion Document: {0} is triggered for {0},Eine Transaktion Löschungsdokument: {0} wird für {0} ausgelöst, +About Us Settings,"Einstellungen zu ""Über uns""", +Allow Internal Transfers at Arm's Length Price,Interne Übertragungen zum Fremdvergleichspreis zulassen, +Asset decapitalized after Asset Capitalization {0} was submitted,"Vermögenswert freigegeben, nachdem Anlagenaktivierung {0} gebucht wurde", +Auto Email Report,Auto Email-Bericht, +Auto close Opportunity Replied after the no. of days mentioned above,Automatische Schließungschaltung antwortete nach der oben genannten Anzahl von Tagen, +Avg Rate (Balance Stock),Durchschnittliche Rate (Lagerbestand), +Billing Interval in Subscription Plan must be Month to follow calendar months,"Abrechnungsintervall im Abonnementplan muss ""Monat"" sein, um Kalendermonate zu folgen", +Bulk Update,Massen-Update, +Can't disable batch wise valuation for active batches.,Sie können die chargenweise Bewertung für aktive Chargen nicht deaktivieren., +Can't disable batch wise valuation for items with FIFO valuation method.,Sie können die chargenweise Bewertung für Artikel mit FIFO-Bewertungsmethode nicht deaktivieren., +Cannot disable batch wise valuation for FIFO valuation method.,Sie können die chargenweise Bewertung für die FIFO-Bewertungsmethode nicht deaktivieren., +Cannot enqueue multi docs for one company. {0} is already queued/running for company: {1},Mehrere Dokumente für ein Unternehmen können nicht in die Warteschlange gestellt werden. {0} ist bereits in die Warteschlange gestellt/wird für das Unternehmen ausgeführt: {1}, +Contact Us Settings,Einstellungen zu „Kontaktieren Sie uns“, +Create Journal Entries,Buchungssätze erstellen, +Create a variant with the template image.,Eine Variante mit dem Vorlagenbild erstellen., +Create in Draft Status,In Entwurfsstatus erstellen, +Custom delimiters,Benutzerdefinierte Trennzeichen, +Deleted Documents,Gelöschte Dokumente, +Delimiter options,Trennzeichenoptionen, +Dependent Task {0} is not a Template Task,Abhängige Aufgabe {0} ist keine Vorlage einer Aufgabe, +Depreciation Entry Posting Status,Buchungsstatus des Abschreibungseintrags, +Depreciation Schedule View,Ansicht Abschreibungsplan, +Depreciation cannot be calculated for fully depreciated assets,Für vollständig abgeschriebene Vermögensgegenstände kann keine Abschreibung berechnet werden, +Do Not Use Batch-wise Valuation,Keine chargenweise Bewertung verwenden, +Domain Settings,Domäneneinstellungen, +Email Domain,E-Mail-Domain, +Enable Immutable Ledger,Unveränderliches Hauptbuch aktivieren, +Enable it if users want to consider rejected materials to dispatch.,"Aktivieren Sie diese Option, wenn Benutzer zurückgewiesenes Material für den Versand berücksichtigen möchten.", +Excess Materials Consumed,Überschüssige Materialien verbraucht, +Excess Transfer,Überschuss-Übertragung, +FIFO Queue vs Qty After Transaction Comparison,Vergleich zwischen FIFO-Warteschlange und Menge nach Transaktion, +"For the {0}, the quantity is required to make the return entry","Für die {0} ist die Menge erforderlich, um die Retoure zu erstellen", +"If enabled, the item rate won't adjust to the valuation rate during internal transfers, but accounting will still use the valuation rate.","Falls aktiviert, wird der Artikelkurs bei internen Transfers nicht an den Bewertungskurs angepasst, aber die Buchhaltung verwendet weiterhin den Wertansatz.", +"If enabled, the system will use the moving average valuation method to calculate the valuation rate for the batched items and will not consider the individual batch-wise incoming rate.","Falls aktiviert, verwendet das System die Bewertungsmethode des gleitenden Durchschnitts zur Berechnung des Wertansatzes für die chargenweisen Artikel und berücksichtigt nicht den individuellen chargenweisen Eingangskurs.", +Job Worker,Unterauftragnehmer, +Job Worker Address,Unterauftragnehmer Adresse, +Job Worker Address Details,Vorschau Adresse Unterauftragnehmer, +Job Worker Contact,Vertrag des Unterauftragnehmers, +Job Worker Delivery Note,Lieferschein des Unterauftragnehmers, +Job Worker Name,Name des Unterauftragnehmer, +Job Worker Warehouse,Lagerhaus des Unterauftragnehmers, +"Learn about Common Party","Erfahren Sie mehr über die Verknüpfung von Kunden und Lieferanten", +Notification,Benachrichtigung, +Notification Settings,Benachrichtigungseinstellungen, +Offsetting for Accounting Dimension,Verrechnung für Buchhaltungsdimension, +Only Include Allocated Payments,Nur zugeordnete Zahlungen einbeziehen, +Only one {0} entry can be created against the Work Order {1},Nur ein {0} Eintrag kann gegen den Arbeitsauftrag {1} erstellt werden, +Over Picking Allowance,Überkommissionierzugabe, +Over Transfer Allowance,Überschlusstransferzugabe, +Overbilling of {} ignored because you have {} role.,"Überhöhte Abrechnung von {} wurde ignoriert, weil Sie die Rolle {} haben.", +Payment Reconciliation Job: {0} is running for this party. Can't reconcile now.,Job für Zahlungsabgleich: {0} läuft für diese Partei. Kann jetzt nicht abgleichen., +Payment Request created from Sales Order or Purchase Order will be in Draft status. When disabled document will be in unsaved state.,"Eine Zahlungsanforderung, die aus einem Auftrag oder einer Bestellung erstellt wurde, wird im Entwurfsstatus sein. Wenn deaktiviert, wird das Dokument in ungespeichertem Zustand sein.", +Payment Request took too long to respond. Please try requesting for payment again.,"Zahlungsaufforderung hat zu lange gedauert, um zu antworten. Bitte versuchen Sie die Zahlung erneut anzufragen.", +Payment Terms Status for Sales Order,Status für Zahlungsbedingungen für Aufträge, +Pipeline By,Pipeline von, +Please enable Use Old Serial / Batch Fields to make_bundle,"Bitte aktivieren Sie ""Alte Serien-/Batchfelder verwenden"" für make_bundle", +Print Style,Druckstil, +Reconcile All Serial Nos / Batches,Alle Seriennummern/Chargen abgleichen, +Reset Company Default Values,Standardwerte des Unternehmens zurücksetzen, +Reset Raw Materials Table,Tabelle Rohstoffe zurücksetzen, +Return Against Subcontracting Receipt,Retoure gegen Unterauftragsbeleg, +Return Components,Komponenten zurückgeben, +Returned Against,Zurückgegeben gegen, +Returned exchange rate is neither integer not float.,Der zurückgegebene Wechselkurs ist weder Integer noch Float., +Round Off Tax Amount,Steuerbetrag abrunden, +Rounding Loss Allowance,Rundungsverlusttoleranz, +Rounding Loss Allowance should be between 0 and 1,Rundungsverlusttoleranz muss zwischen 0 und 1 sein, +Row #{0}: Rejected Warehouse is mandatory for the rejected Item {1},Zeile #{0}: Ausschusslager ist für den abgelehnten Artikel {1} obligatorisch, +Row #{0}: You cannot use the inventory dimension '{1}' in Stock Reconciliation to modify the quantity or valuation rate. Stock reconciliation with inventory dimensions is intended solely for performing opening entries.,"Zeile #{0}: Sie können die Bestandsdimension '{1}' in der Bestandsabgleich nicht verwenden, um die Menge oder den Wertansatz zu ändern. Die Bestandsabgleich mit Bestandsdimensionen ist ausschließlich für die Durchführung von Eröffnungsbuchungen vorgesehen.", +Row {0}: Packed Qty must be equal to {1} Qty.,Zeile {0}: Verpackte Menge muss gleich der {1} Menge sein., +Row {0}: Total Number of Depreciations cannot be less than or equal to Opening Number of Booked Depreciations,Zeile {0}: Die Gesamtzahl der Abschreibungen kann nicht kleiner oder gleich der Anzahl der gebuchten Abschreibungen zu Beginn sein, +SCO Supplied Item,Artikel beigestellt für Unterauftrag, +SLA Fulfilled On Status,SLA erfüllt am Status, +SLA will be applied if {1} is set as {2}{3},"SLA wird angewendet, wenn {1} als {2}{3} eingestellt ist", +SMS Settings,SMS-Einstellungen, +SO Total Qty,Kd.-Auftr.-Gesamtmenge, +"Sales Order {0} already exists against Customer's Purchase Order {1}. To allow multiple Sales Orders, Enable {2} in {3}","Auftrag {0} existiert bereits für die Kundenbestellung {1}. Um mehrere Verkaufsaufträge zuzulassen, aktivieren Sie {2} in {3}", "Scorecard variables can be used, as well as: {total_score} (the total score from that period), {period_number} (the number of periods to present day) ","Variablen der Bewertung können verwendet werden, sowie: {total_score} (die Gesamtpunktzahl aus diesem Zeitraum), {period_number} (die Anzahl der Zeiträume bis zum heutigen Tag) -", -Select Accounting Dimension.,Buchhaltungsdimension auswählen, -Select Corrective Operation,Nacharbeit auswählen, -Select Date of Birth. This will validate Employees age and prevent hiring of under-age staff.,Wählen Sie Geburtsdatum. Damit wird das Alter der Mitarbeiter überprüft und die Einstellung von minderjährigen Mitarbeitern verhindert., -"Select Date of joining. It will have impact on the first salary calculation, Leave allocation on pro-rata bases.",Wählen Sie Eintrittsdatum. Es wirkt sich auf die erste Gehaltsberechnung und die Zuteilung von Abwesenheiten auf Pro-rata-Basis aus., -Select Dimension,Dimension auswählen, -Select Items for Quality Inspection,Artikel für die Qualitätsprüfung auswählen, -Select Job Worker Address,Unterauftragnehmer Adresse auswählen, -Service Expenses,Wartungsaufwand, -Service Level Agreement for {0} {1} already exists.,Service Level Agreement für {0} {1} existiert bereits., -System Settings,Systemverwaltung, -Website Script,Webseiten-Skript, -Website Theme,Webseiten-Thema, -Workflow Action,Workflow-Aktion, -Workflow State,Workflow-Status, -{0} is not running. Cannot trigger events for this Document,{0} läuft nicht. Ereignisse für dieses Dokument können nicht ausgelöst werden, +", +Select Accounting Dimension.,Buchhaltungsdimension auswählen, +Select Corrective Operation,Nacharbeit auswählen, +Select Date of Birth. This will validate Employees age and prevent hiring of under-age staff.,Wählen Sie Geburtsdatum. Damit wird das Alter der Mitarbeiter überprüft und die Einstellung von minderjährigen Mitarbeitern verhindert., +"Select Date of joining. It will have impact on the first salary calculation, Leave allocation on pro-rata bases.",Wählen Sie Eintrittsdatum. Es wirkt sich auf die erste Gehaltsberechnung und die Zuteilung von Abwesenheiten auf Pro-rata-Basis aus., +Select Dimension,Dimension auswählen, +Select Items for Quality Inspection,Artikel für die Qualitätsprüfung auswählen, +Select Job Worker Address,Unterauftragnehmer Adresse auswählen, +Service Expenses,Wartungsaufwand, +Service Level Agreement for {0} {1} already exists.,Service Level Agreement für {0} {1} existiert bereits., +System Settings,Systemverwaltung, +Website Script,Webseiten-Skript, +Website Theme,Webseiten-Thema, +Workflow Action,Workflow-Aktion, +Workflow State,Workflow-Status, +{0} is not running. Cannot trigger events for this Document,{0} läuft nicht. Ereignisse für dieses Dokument können nicht ausgelöst werden, +"""SN-01::10"" for ""SN-01"" to ""SN-10""","""SN-01::10"" für ""SN-01"" bis ""SN-10""", +"Masters & Reports","Stammdaten & Berichte", +"Quick Access","Schnellzugriff", +"Reports & Masters","Berichte & Stammdaten", +"Reports & Masters","Berichte & Stammdaten", +"Settings","Einstellungen", +"Shortcuts","Verknüpfungen", +"Your Shortcuts + + + + + + ","Ihre Verknüpfungen + + + + + + ", +"Your Shortcuts","Ihre Verknüpfungen", +Grand Total: {0},Gesamtsumme:{0}, +Outstanding Amount: {0},Ausstehender Betrag: {0}, +Against Customer Order {0},Gegen Kundenauftrag {0}, +Against Supplier Invoice {0},Gegen Lieferantenrechnung {0}, +Ageing Range,Alterungsbereich, +Allocate Payment Request,Zahlungsanfrage zuweisen, +Amount in party's bank account currency,Betrag in der Währung des Bankkontos des Beteiligten, +Amount in transaction currency,Betrag in Transaktionswährung, +BIN Qty,BIN Menge, +BOM and Production,Stückliste und Produktion, +Balance Stock Value,Bestandswert, +Base Cost Per Unit,Grundkosten pro Einheit, +Base Rate,Basispreis, +Base Tax Withholding Net Total,Basis-Steuereinbehalt-Nettosumme, +Base Total,Basis-Summe, +Base Total Billable Amount,Basis Gesamter abrechenbarer Betrag, +Batch Expiry Date,Ablaufdatum der Charge, +Bill for Rejected Quantity in Purchase Invoice,Rechnung für abgelehnte Menge in der Eingangsrechnung, +Calculate daily depreciation using total days in depreciation period,Tägliche Abschreibung anhand der Gesamttage im Abschreibungszeitraum berechnen, +Call Schedule Row {0}: To time slot should always be ahead of From time slot.,Anrufplanzeile {0}: Das Zeitfenster Bis sollte immer vor dem Zeitfenster Von liegen., +Cannot find a default warehouse for item {0}. Please set one in the Item Master or in Stock Settings.,Es wurde kein Standardlager für den Artikel {0} gefunden. Bitte legen Sie eines im Artikelstamm oder in den Lagereinstellungen fest., +Cannot {0} from {2} without any negative outstanding invoice,Kann nicht {0} von {2} ohne negative ausstehende Rechnung, +Cheques and Deposits Incorrectly cleared,Falsch verrechnete Schecks und Einzahlungen, +Columns are not according to template. Please compare the uploaded file with standard template,Die Spalten stimmen nicht mit der Vorlage überein. Bitte vergleichen Sie die hochgeladene Datei mit der Standardvorlage, +Company is mandatory,Unternehmen ist obligatorisch, +Completion Date can not be before Failure Date. Please adjust the dates accordingly.,Das Fertigstellungsdatum kann nicht vor dem Ausfalldatum liegen. Bitte passen Sie die Daten entsprechend an., +Consumed Stock Items or Consumed Asset Items are mandatory for creating new composite asset,Verbrauchte Lagerartikel oder verbrauchte Vermögensgegenstand-Artikel sind für die Erstellung obligatorisch, +Convert to Item Based Reposting,Umstellung auf artikelbasiertes Umbuchen, +Create Workstation,Arbeitsplatz erstellen, +Creating Journal Entries...,Journaleinträge erstellen..., +Creating Purchase Invoices ...,Eingangsrechnungen erstellen ..., +Creating Sales Invoices ...,Ausgangsrechnungen erstellen ..., +Currency Exchange Settings Result,Währungsumtauscheinstellungen Ergebnis, +Deal Owner,Besitzer des Deals, +Decapitalized,Dekapitalisiert, +Dependant SLE Voucher Detail No,Unterhaltsberechtigter SLE Beleg Detail Nr., +Disassemble,Demontage, +Documents: {0} have deferred revenue/expense enabled for them. Cannot repost.,Dokumente: {0} hat vertagte Einnahmen/Ausgaben aktiviert. Kann nicht erneut posten., +Don't Reserve Sales Order Qty on Sales Return,Menge des Auftrags nicht bei der Rücksendung reservieren, +Enter Manually,Manuell eingeben, +Failed to post depreciation entries,Abschreibungsbuchungen fehlgeschlagen, +Filters missing,Filter fehlen, +"For Return Invoices with Stock effect, '0' qty Items are not allowed. Following rows are affected: {0}",Bei Retourenrechnungen mit Lagereffekt sind Artikel mit einer Menge von '0' nicht zulässig. Folgende Zeilen sind betroffen: {0}, +"For the item {0}, the quantity should be {1} according to the BOM {2}.",Für den Artikel {0} sollte die Menge gemäß Stückliste {2} {1} betragen., +"For the {0}, no stock is available for the return in the warehouse {1}.",Für {0} ist im Lager {1} kein Bestand für die Retoure verfügbar., +Force-Fetch Subscription Updates,Abonnement-Updates erzwingen, +From Date is mandatory,Von-Datum ist obligatorisch, +From Prospect,Von Interessenten, +Gross Purchase Amount Too Low: {0} cannot be depreciated over {1} cycles with a frequency of {2} depreciations.,Bruttokaufbetrag zu niedrig: {0} kann nicht über {1} Zyklen mit einer Häufigkeit von {2} Abschreibungen abgeschrieben werden., +If enabled then system won't apply the pricing rule on the delivery note which will be create from the pick list,"Falls aktiviert, wird das System die Preisregel nicht auf den Lieferschein anwenden, der aus der Pickliste erstellt wird", +Impairment,Wertminderung, +Include Closed Orders,Geschlossene Aufträge/Bestellungen einbeziehen, +Invalid Allocated Amount,Ungültiger zugewiesener Betrag, +Invalid Amount,Ungültiger Betrag, +Is Standard,Ist Standard, +Item {0} does not exist.,Artikel {0} existiert nicht., +Items {0} do not exist in the Item master.,Artikel {0} sind nicht im Artikelstamm vorhanden., +Journal entries have been created,Journaleinträge wurden erstellt, +Net total calculation precision loss,Präzisionsverlust bei Berechnung der Nettosumme, +Only Deduct Tax On Excess Amount ,Nur den überschüssigen Betrag versteuern , +Payment Ledger Entry,Zahlungsbucheintrag, +Payment Requests cannot be created against: {0},Zahlungsanforderungen können nicht erstellt werden für: {0}, +Period Closing Entry For Current Period,Periodenabschlussbuchung für aktuelle Periode, +Provisional Account,Vorläufiges Konto, +Rate of Stock UOM,Einzelpreis der Lager-ME, +Raw Materials Consumption ,Rohstoffverbrauch , +Recalculating Purchase Cost against this Project...,Neuberechnung der Anschaffungskosten für dieses Projekt..., +Reference DocType,Referenz DocType, +Round Tax Amount Row-wise,Steuerbetrag zeilenweise runden, +Rounding gain/loss Entry for Stock Transfer,Rundungsgewinn/-verlustbuchung für Umlagerung, +Row #{0}: Only {1} available to reserve for the Item {2},Zeile #{0}: Nur {1} zur Reservierung für den Artikel {2} verfügbar, +Row #{}: The original Invoice {} of return invoice {} is not consolidated.,Zeile #{}: Die ursprüngliche Rechnung {} der Rechnungskorrektur {} ist nicht konsolidiert., +Row {0}: Item {1} must be a subcontracted item.,Zeile {0}: Artikel {1} muss ein an Dritte vergebener Artikel sein., +Row {0}: Please provide a valid Delivery Note Item or Packed Item reference.,Zeile {0}: Bitte geben Sie einen gültigen Lieferschein Artikel oder verpackten Artikel an., +Row {0}: Target Warehouse is mandatory for internal transfers,Zeile {0}: Ziellager ist für interne Transfers obligatorisch, +Row({0}): Outstanding Amount cannot be greater than actual Outstanding Amount {1} in {2},Zeile({0}): Ausstehender Betrag kann nicht größer sein als der tatsächliche ausstehende Betrag {1} in {2}, +Rows with Same Account heads will be merged on Ledger,Zeilen mit denselben Konten werden im Hauptbuch zusammengefasst, +Select Warehouses to get Stock for Materials Planning,"Wählen Sie Lager aus, um Bestände für die Materialplanung zu erhalten", +Select an invoice to load summary data,"Wählen Sie eine Rechnung aus, um die Zusammenfassung zu laden", +Serial / Batch Bundle,Serien- / Chargenbündel, +Serial / Batch Bundle Missing,Serien- / Chargenbündel fehlt, +Serial No Range,Seriennummernbereich, +Serial and Batch Details,Serien- und Chargendetails, +Sets 'Accepted Warehouse' in each row of the Items table.,Legt in jeder Zeile der Artikeltabelle das Annahmelager fest., +Sets 'Rejected Warehouse' in each row of the Items table.,Legt in jeder Zeile der Artikeltabelle das „Ausschusslager“ fest., +Shelf Life in Days,Haltbarkeitsdauer in Tagen, +Show Disabled Warehouses,Deaktivierte Lager anzeigen, +Show GL Balance,Hauptbuchsaldo anzeigen, +Show Pay Button in Purchase Order Portal,Schaltfläche „Bezahlen“ im Bestellportal anzeigen, +Show Taxes as Table in Print,Steuern als Tabelle im Druck anzeigen, +Show net values in opening and closing columns,Nettowerte in Eröffnungs- und Abschlussspalten anzeigen, +Show with upcoming revenue/expense,Mit kommenden Einnahmen/Ausgaben anzeigen, +Something went wrong please try again,"Etwas ist schief gelaufen, bitte versuchen Sie es erneut", +South Africa VAT Account,Südafrika Mehrwertsteuer-Konto, +South Africa VAT Settings,Südafrika Mehrwertsteuer-Einstellungen, +Start Date should be lower than End Date,Das Startdatum muss vor dem Enddatum liegen, +Start Deletion,Löschen starten, +Start Time can't be greater than or equal to End Time for {0}.,Die Startzeit kann nicht größer oder gleich der Endzeit für {0} sein., +Started a background job to create {1} {0},Hintergrundjob zum Erstellen von {1} {0} gestartet, +Status set to rejected as there are one or more rejected readings.,"Der Status wurde auf abgelehnt gesetzt, da es einen oder mehrere abgelehnte Messwerte gibt.", +Stock Consumed During Repair,Während der Reparatur verbrauchter Bestand, +Stock Consumption Details,Details zum Lagerverbrauch, +Stock Planning,Bestandsplanung, +Stock Reservation,Bestandsreservierung, +Stock Reservation Entries Cancelled,Bestandsreservierungen storniert, +Stock Reservation Entries Created,Bestandsreservierungen erstellt, +Stock Reservation Entry,Bestandsreservierungseintrag, +Stock Reservation Entry cannot be updated as it has been delivered.,"Der Bestandsreservierungseintrag kann nicht aktualisiert werden, da er bereits geliefert wurde.", +"Stock Reservation Entry created against a Pick List cannot be updated. If you need to make changes, we recommend canceling the existing entry and creating a new one.","Ein anhand einer Kommissionierliste erstellter Bestandsreservierungseintrag kann nicht aktualisiert werden. Wenn Sie Änderungen vornehmen müssen, empfehlen wir, den vorhandenen Eintrag zu stornieren und einen neuen zu erstellen.", +Stock Reservation can only be created against {0}.,Bestandsreservierungen können nur gegen {0} erstellt werden., +Stock Reserved Qty (in Stock UOM),Reservierter Bestand (in Lager-ME), +Stock Unreservation,Aufhebung der Bestandsreservierung, +Stock/Accounts can not be frozen as processing of backdated entries is going on. Please try again later.,"Lagerbestände/Konten können nicht eingefroren werden, da die Verarbeitung rückwirkender Einträge noch läuft. Bitte versuchen Sie es später erneut.", +Supplied Item,Gelieferter Artikel, +Supplies subject to the reverse charge provision,"Lieferungen, die der Reverse-Charge-Regelung unterliegen", +Task {0} depends on Task {1}. Please add Task {1} to the Tasks list.,Aufgabe {0} hängt von Aufgabe {1} ab. Bitte fügen Sie Aufgabe {1} zur Aufgabenliste hinzu., +Tax Amount will be rounded on a row(items) level,Der Steuerbetrag wird auf (Artikel-)Zeilenebene gerundet, +Tax Refunds provided to Tourists under the Tax Refunds for Tourists Scheme,Steuererstattungen für Touristen im Rahmen der Steuererstattungsregelung für Touristen, +"Tax detail table fetched from item master as a string and stored in this field. +Used for Taxes and Charges","Steuerdetailtabelle, die aus dem Artikelstamm als Zeichenfolge abgerufen und in diesem Feld gespeichert wird. +Wird für Steuern und Gebühren verwendet", +"The Payment Request {0} is already paid, cannot process payment twice","Die Auszahlungsanforderung {0} ist bereits bezahlt, die Zahlung kann nicht zweimal verarbeitet werden", +The Serial No at Row #{0}: {1} is not available in warehouse {2}.,Die Seriennummer in Zeile #{0}: {1} ist im Lager {2} nicht verfügbar., +The Work Order is mandatory for Disassembly Order,Der Arbeitsauftrag ist obligatorisch für den Demontageauftrag, +The allocated amount is greater than the outstanding amount of Payment Request {0},Der zugewiesene Betrag ist größer als der ausstehende Betrag der Zahlungsanforderung {0}, +The field {0} in row {1} is not set,Das Feld {0} in der Zeile {1} ist nicht gesetzt, +The following invalid Pricing Rules are deleted:,Die folgenden ungültigen Preisregeln werden gelöscht:, +The original invoice should be consolidated before or along with the return invoice.,Die Originalrechnung sollte vor oder zusammen mit der Erstattungsrechnung konsolidiert werden., +"The sync has started in the background, please check the {0} list for new records.",Die Synchronisierung wurde im Hintergrund gestartet. Bitte überprüfen Sie die Liste {0} auf neue Datensätze., +"The users with this Role are allowed to create/modify a stock transaction, even though the transaction is frozen.","Die Benutzer mit dieser Rolle dürfen eine Lagerbewegungen erstellen/ändern, auch wenn die Transaktion eingefroren ist.", +There are no active Fiscal Years for which Demo Data can be generated.,"Es gibt keine aktiven Geschäftsjahre, für die Demodaten erstellt werden können.", +There were issues unlinking payment entry {0}.,Es gab Probleme bei der Aufhebung der Verknüpfung der Zahlung {0}., +"This is enabled by default. If you want to plan materials for sub-assemblies of the Item you're manufacturing leave this enabled. If you plan and manufacture the sub-assemblies separately, you can disable this checkbox.","Diese Option ist standardmäßig aktiviert. Wenn Sie Materialien für Unterbaugruppen des Artikels, den Sie herstellen, planen möchten, lassen Sie diese Option aktiviert. Wenn Sie die Unterbaugruppen separat planen und herstellen, können Sie dieses Kontrollkästchen deaktivieren.", +To Date is mandatory,Bis Datum ist obligatorisch, +To Delivery Date,Bis Liefertermin, +To Due Date,Bis Fälligkeitsdatum, +To Reference Date,Bis Stichtag, +To cancel a {} you need to cancel the POS Closing Entry {}.,"Um einen {} zu stornieren, müssen Sie die POS-Abschlussbuchung {} stornieren.", +Total Incoming Value (Receipt),Gesamter eingehender Wert (Empfang), +Total Number of Booked Depreciations ,Gesamtzahl der gebuchten Abschreibungen , +Total Operation Time,Gesamtbetriebszeit, +Total Other Charges,Sonstige Kosten insgesamt, +Total Purchase Amount,Gesamtkaufbetrag, +Total Purchase Cost has been updated,Die Gesamteinkaufskosten wurden aktualisiert, +UnReconcile,Zuordnung aufheben, +Unrealized Profit / Loss account for intra-company transfers,Konto für nicht realisierte Gewinne/Verluste aus konzerninternen Transfers, +Unrealized Profit/Loss account for intra-company transfers,Konto für nicht realisierte Gewinne/Verluste aus konzerninternen Transfers, +Validate Components Quantities Per BOM,Anzahl der Komponenten pro Stückliste überprüfen, +Validate Pricing Rule,Preisregel validieren, +Validate Stock on Save,Lagerbestand beim Speichern validieren, +Warning on Negative Stock,Warnung vor negativem Bestand, +You cannot create a {0} within the closed Accounting Period {1},Sie können innerhalb der abgeschlossenen Abrechnungsperiode {1} kein(e) {0} erstellen, +dated {0},von {0}, +must be between 0 and 100,muss zwischen 0 und 100 liegen, +or its descendants,oder seine Nachkommen, +subscription is already cancelled.,abonnement ist bereits storniert., +{0} Account not found against Customer {1}.,{0} Konto für Kunde {1} nicht gefunden., +{0} Transaction(s) Reconciled,{0} Transaktion(en) Abgestimmt, +{0} cannot be zero,{0} kann nicht Null sein, +{0} is already running for {1},{0} läuft bereits für {1}, +{0} units of Item {1} is not available in any of the warehouses.,{0} Einheiten des Artikels {1} sind in keinem der Lager verfügbar., +Cannot {0} from {1} without any negative outstanding invoice,Kann nicht {0} von {1} ohne negative ausstehende Rechnung, +Common Code,Gemeinsamer Code, +Event,Ereignis, +Forecast,Prognose, +"If Enabled - Reconciliation happens on the Advance Payment posting date
+If Disabled - Reconciliation happens on oldest of 2 Dates: Invoice Date or the Advance Payment posting date
+","Falls aktiviert - erfolgt der Abgleich am Buchungsdatum der Vorauszahlung
+Falls deaktiviert - erfolgt der Abgleich am ältesten von 2 Daten: Rechnungsdatum oder Buchungsdatum der Vorauszahlung
+", +Pay,Zahlen,Amount +Please set '{0}' in Company: {1},Bitte stellen Sie '{0}' in Unternehmen ein: {1}, +Price is not set for the item.,Für den Artikel ist kein Preis festgelegt., +Rate of Depreciation (%),Abschreibungssatz (%), +Rejected ,Abgelehnt , +Row #{0}: Allocated Amount cannot be greater than Outstanding Amount of Payment Request {1},Zeile #{0}: Der zugewiesene Betrag kann nicht größer sein als der ausstehende Betrag der Zahlungsanforderung {1}, +Section,Sektion, +Sending...,Senden..., +"According to the BOM {0}, the Item '{1}' is missing in the stock entry.",Laut Stückliste {0} fehlt in der Lagerbuchung die Position '{1}'., +Additional Data,Zusätzliche Daten, +Advance Payment Date,Datum der Vorauszahlung, +Advance Payment Ledger Entry,Vorauszahlungsbucheintrag, +Allow existing Serial No to be Manufactured/Received again,"Erlauben, dass bestehende Seriennummern erneut hergestellt/empfangen werden", +Amount in Words,Betrag in Worten, +Amounts,Beträge, +Another Payment Request is already processed,Eine andere Zahlungsaufforderung wird bereits bearbeitet, +Applies To,Gilt für, +Are you sure you want to delete {0}?

This action will also delete all associated Common Code documents.

,"Sind Sie sicher, dass Sie {0} löschen möchten?

Durch dieser Aktion werden auch alle zugehörigen Common Code Dokumente gelöscht.

", +At Row #{0}: The picked quantity {1} for the item {2} is greater than available stock {3} for the batch {4} in the warehouse {5}. Please restock the item.,In Zeile #{0}: Die entnommene Menge {1} für den Artikel {2} ist größer als der verfügbare Bestand {3} für die Charge {4} im Lager {5}. Bitte füllen Sie den Artikel wieder auf., +At least one account with exchange gain or loss is required,Mindestens ein Konto mit Wechselkursgewinnen oder -verlusten ist erforderlich, +Auto Fetch Serial Numbers,Seriennummern automatisch abrufen, +Auto Reconciliation Job Trigger,Auslöser für automatischen Abgleichsjob, +Auto Reconciliation has started in the background,Der automatische Abgleich wurde im Hintergrund gestartet, +Bank Account {} in Bank Transaction {} is not matching with Bank Account {},Bankkonto {} in Banktransaktion {} stimmt nicht mit Bankkonto {} überein, +"Batch No {0} is not present in the original {1} {2}, hence you can't return it against the {1} {2}","Charge Nr. {0} ist im Original {1} {2} nicht vorhanden, daher können Sie sie nicht gegen {1} {2} zurückgeben", +Billing Address does not belong to the {0},Die Rechnungsadresse gehört nicht zu {0}, +CANCELLED,Abgebrochen, +Child Row Reference,Zeilenreferenz, +Code List,Code-Liste, +Company Contact Person,Kontaktperson des Unternehmens, +Company {0} added multiple times,Unternehmen {0} mehrfach hinzugefügt, +"Consumed Stock Items, Consumed Asset Items or Consumed Service Items is mandatory for Capitalization","Verbrauchte Lagerartikel, verbrauchte Vermögensgegenstand-Artikel oder verbrauchte Dienstleistungsartikel sind für die Aktivierung obligatorisch.", +Contact Person does not belong to the {0},Die Kontaktperson gehört nicht zu {0}, +Conversion factor for item {0} has been reset to 1.0 as the uom {1} is same as stock uom {2}.,"Der Umrechnungsfaktor für Artikel {0} wurde auf 1,0 zurückgesetzt, da die Maßeinheit {1} dieselbe ist wie die Lagermaßeinheit {2}.", +Conversion rate cannot be 0,Der Umrechnungskurs kann nicht 0 sein, +"Conversion rate is 1.00, but document currency is different from company currency","Der Umrechnungskurs beträgt 1,00, aber die Währung des Dokuments unterscheidet sich von der Währung des Unternehmens", +Conversion rate must be 1.00 if document currency is same as company currency,"Der Umrechnungskurs muss 1,00 betragen, wenn die Belegwährung mit der Währung des Unternehmens übereinstimmt", +Cost Center for Item rows has been updated to {0},Die Kostenstelle für Artikelzeilen wurde auf {0} aktualisiert, +"Credit Note will update it's own outstanding amount, even if 'Return Against' is specified.","Den ausstehenden Betrag dieser Rechnungskorrektur separat buchen, statt den der korrigierten Rechnung zu verringern.", +Cron Interval should be between 1 and 59 Min,Das Cron-Intervall sollte zwischen 1 und 59 Minuten liegen, +Dates,Daten, +"Debit Note will update it's own outstanding amount, even if 'Return Against' is specified.","Den ausstehenden Betrag dieser Rechnungskorrektur separat buchen, statt den der korrigierten Rechnung zu verringern.", +Default Common Code,Standard Common Code, +Demand,Nachfrage, +Depreciation Expense Account should be an Income or Expense Account.,Das Abschreibungsaufwandskonto sollte ein Erlös- oder Aufwandskonto sein., +Depreciation Posting Date cannot be before Available-for-use Date,Das Buchungsdatum der Abschreibung kann nicht vor dem Datum der Verfügbarkeit liegen, +Depreciation Row {0}: Depreciation Posting Date cannot be before Available-for-use Date,Abschreibungszeile {0}: Das Buchungsdatum der Abschreibung darf nicht vor dem Verfügbarkeitsdatum liegen, +Depreciation eliminated via reversal,Abschreibung durch Umkehr eliminiert, +Disassemble Order,Demontageauftrag, +Discount cannot be greater than 100%.,Der Rabatt kann nicht mehr als 100% betragen., +Do you still want to enable immutable ledger?,Möchten Sie das unveränderliche Hauptbuch dennoch aktivieren?, +Documents Processed on each trigger. Queue Size should be between 5 and 100,Bei jedem Trigger verarbeitete Dokumente. Die Größe der Warteschlange sollte zwischen 5 und 100 liegen., +Don't Enforce Free Item Qty,Kostenlose Artikelmenge nicht erzwingen, +Download PDF for Supplier,PDF für Lieferanten herunterladen, +Email Receipt,Quittung per E-Mail senden, +Employee {0} is currently working on another workstation. Please assign another employee.,Der Mitarbeiter {0} arbeitet derzeit an einem anderen Arbeitsplatz. Bitte weisen Sie einen anderen Mitarbeiter zu., +"Enable this option to calculate daily depreciation by considering the total number of days in the entire depreciation period, (including leap years) while using daily pro-rata based depreciation","Aktivieren Sie diese Option, um die tägliche Abschreibung unter Berücksichtigung der Gesamtzahl der Tage im gesamten Abschreibungszeitraum (einschließlich Schaltjahre) zu berechnen, während die tägliche anteilige Abschreibung verwendet wird", +Exit Full Screen,Vollbildmodus verlassen, +Fetch Timesheet in Sales Invoice,Zeiterfassung in Ausgangsrechnung laden, +Full Screen,Vollbild, +Handle Employee Advances,Umgang mit Mitarbeitervorschüssen, +Has Corrective Cost,Hat Korrekturkosten, +Has Item Scanned,Artikel wurde gescannt, +Hide timesheets,Zeiterfassung verstecken, +"If there is no title column, use the code column for the title.","Wenn es keine Titelspalte gibt, verwenden Sie die Code-Spalte für den Titel.", +Ignore Exchange Rate Revaluation Journals,Wechselkursneubewertungsjournale ignorieren, +Ignore Pricing Rule is enabled. Cannot apply coupon code.,„Preisregel ignorieren“ ist aktiviert. Gutscheincode kann nicht angewendet werden., +Ignore Voucher Type filter and Select Vouchers Manually,Gutscheintyp-Filter ignorieren und Gutscheine manuell auswählen, +Import Genericode File,Genericode-Datei importieren, +Import completed. {0} common codes created.,Import abgeschlossen. {0} gemeinsame Codes erstellt., +Importing Common Codes,Gemeinsame Codes importieren, +Include Zero Stock Items,Nullbestandsartikel einschließen, +Incorrect Reference Document (Purchase Receipt Item),Falsches Referenzdokument (Eingangsbeleg Artikel), +Incorrect Serial and Batch Bundle,Ungültiges Serien- und Chargenbündel, +Incorrect Stock Value Report,Falscher Lagerwertbericht, +Individual GL Entry cannot be cancelled.,Einzelne Hauptbucheinträge können nicht storniert werden., +Initialize Summary Table,Übersichtstabelle initialisieren, +Interval should be between 1 to 59 MInutes,Das Intervall sollte zwischen 1 und 59 Minuten liegen, +Invalid Discount,Ungültiger Rabatt, +Invoice ID,Rechnungs-ID, +Is Corrective Job Card,Ist Nacharbeitsauftrag, +Is Period Closing Voucher Entry,Ist Periodenabschlussbeleg, +Item rate has been updated to zero as Allow Zero Valuation Rate is checked for item {0},"Artikelpreis wurde auf Null aktualisiert, da „Nullbewertung zulassen“ für Artikel {0} aktiviert ist", +Last transacted,Zuletzt verarbeitet, +Loading Invoices! Please Wait...,Rechnungen werden geladen! Bitte warten..., +Missing Item,Fehlender Artikel, +Mobile: ,Mobil: , +More/Less than 12 months.,Mehr/Weniger als 12 Monate., +Negative Batch Quantity,Negative Chargenmenge, +No recent transactions found,Keine kürzlichen Transaktionen gefunden, +Only applies for Normal Payments,Gilt nur für normale Zahlungen, +"Only values between [0,1) are allowed. Like {0.00, 0.04, 0.09, ...} +Ex: If allowance is set at 0.07, accounts that have balance of 0.07 in either of the currencies will be considered as zero balance account","Es sind nur Werte zwischen [0;1) zulässig. Wie {0,00; 0,04; 0,09; ...} +Beispiel: Wenn der Freibetrag auf 0,07 festgelegt ist, werden Konten mit einem Saldo von 0,07 in einer der beiden Währungen als Konten mit Nullsaldo betrachtet.", +POS Invoice is already consolidated,POS-Rechnung ist bereits konsolidiert, +POS Invoice should have the field {0} checked.,Für die POS-Rechnung sollte das Feld {0} aktiviert sein., +POS Profile doesn't match {},POS-Profil stimmt nicht mit {} überein, +Parent Row No not found for {0},Übergeordnete Zeilennummer für {0} nicht gefunden, +Partial Payment in POS Invoice is not allowed.,Teilzahlungen in POS-Rechnungen sind nicht zulässig., +Party Type and Party can only be set for Receivable / Payable account

{0},Parteityp und Partei können nur für das Debitoren-/Kreditorenkonto {0} festgelegt werden., +Payment Reconciliation Settings,Einstellungen für den Zahlungsabgleich, +Payment Request Outstanding,Ausstehende Zahlungsanforderung, +Payment Request is already created,Die Zahlungsanforderung wurde bereits erstellt, +Payment Status,Zahlungsstatus, +Period End Date cannot be greater than Fiscal Year End Date,Das Enddatum des Zeitraums kann nicht nach dem Enddatum des Geschäftsjahrs liegen, +Period Start Date cannot be greater than Period End Date,Das Startdatum des Zeitraums kann nicht nach dem Enddatum des Zeitraums liegen, +Please set {0} first.,Bitte geben Sie zuerst {0} ein., +Please set {0} in Company {1} to account for Exchange Gain / Loss,"Bitte stellen Sie {0} in Unternehmen {1} ein, um Wechselkursgewinne/-verluste zu berücksichtigen", +"Please set {0} to {1}, the same account that was used in the original invoice {2}.","Bitte setzen Sie {0} auf {1}, das gleiche Konto, das in der ursprünglichen Rechnung {2} verwendet wurde.", +Please specify a {0} first.,Bitte geben Sie zuerst {0} ein., +Preview Required Materials,Vorschau der erforderlichen Materialien, +Publisher,Herausgeber, +Publisher ID,Herausgeber-ID, +Qty (Company),Menge (Unternehmen), +Qty (Warehouse),Menge (Lager), +Qty for which recursion isn't applicable.,"Menge, für die Rekursion nicht anwendbar ist.", +Quantity (A - B),Menge (A - B), +Queue Size should be between 5 and 100,Die Größe der Warteschlange sollte zwischen 5 und 100 liegen, +Reconciliation Date,Abstimmungsdatum, +Reconciliation Queue Size,Größe der Abstimmungswarteschlange, +Reference Date for Early Payment Discount,Stichtag für Skonto, +Reference Detail,Referenzdetail, +Removing rows without exchange gain or loss,Entfernen von Zeilen ohne Kursgewinn oder -verlust, +Resume Timer,Timer fortsetzen, +Revaluation Journals,Neubewertungsjournale, +Revaluation Surplus,Neubewertungsüberschüsse, +Role Allowed to Over Bill ,"Rolle, die mehr abrechnen darf", +Role Allowed to Over Deliver/Receive,"Rolle, die mehr liefern/empfangen darf", +Round Free Qty,Kostenfreie Menge runden, +Row # {0}: Please add Serial and Batch Bundle for Item {1},Zeile {0}: Bitte fügen Sie Serien- und Chargenbündel für Artikel {1} hinzu, +Row #{0}: Quality Inspection is required for Item {1},Zeile {0}: Für Artikel {1} ist eine Qualitätsprüfung erforderlich, +Row #{0}: Quality Inspection {1} is not submitted for the item: {2},Zeile {0}: Qualitätsprüfung {1} wurde für den Artikel {2} nicht gebucht, +Row #{0}: Quality Inspection {1} was rejected for item {2},Zeile {0}: Qualitätsprüfung {1} wurde für Artikel {2} abgelehnt, +"Row {0}: As {1} is enabled, raw materials cannot be added to {2} entry. Use {3} entry to consume raw materials.","Zeile {0}: Da {1} aktiviert ist, können dem {2}-Eintrag keine Rohstoffe hinzugefügt werden. Verwenden Sie einen {3}-Eintrag, um Rohstoffe zu verbrauchen.", +Row {0}: Item Tax template updated as per validity and rate applied,Zeile {0}: Artikelsteuervorlage aktualisiert gemäß Gültigkeit und angewendetem Satz, +Row {0}: Item {1}'s quantity cannot be higher than the available quantity.,Zeile {0}: Die Menge des Artikels {1} kann nicht höher sein als die verfügbare Menge., +Row {0}: Project must be same as the one set in the Timesheet: {1}.,Zeile {0}: Das Projekt muss mit dem in der Zeiterfassung festgelegten Projekt identisch sein: {1}., +Row {0}: Quantity cannot be negative.,Zeile {0}: Die Menge darf nicht negativ sein., +"Row {0}: To set {1} periodicity, difference between from and to date must be greater than or equal to {2}","Zeile {0}: Um die Periodizität {1} festzulegen, muss die Differenz zwischen dem Von- und Bis-Datum größer oder gleich {2} sein", +Row {0}: Workstation or Workstation Type is mandatory for an operation {1},Zeile {0}: Arbeitsplatz oder Arbeitsplatztyp ist obligatorisch für einen Vorgang {1}, +Row {0}: {1} account already applied for Accounting Dimension {2},Zeile {0}: Konto {1} wird bereits für die Buchhaltungsdimension {2} verwendet, +Select Columns and Filters,Spalten und Filter auswählen, +Set Parent Row No in Items Table,Übergeordnete Zeilennummer in der Artikeltabelle festlegen, +Set Response Time for Priority {0} in row {1}.,Legen Sie die Reaktionszeit für die Priorität {0} in der Zeile {1} fest., +Set Valuation Rate Based on Source Warehouse,Bewertungssatz basierend auf dem Quelllager festlegen, +Set quantity of process loss item:,Menge des Prozessverlustartikels festlegen:, +Setting Item Locations...,Festlegen der Artikelstandorte ..., +Shipping Address does not belong to the {0},Die Lieferadresse gehört nicht zu {0}, +Splitting {0} {1} into {2} rows as per Payment Terms,Aufteilen von {0} {1} in {2} Zeilen gemäß Zahlungsbedingungen, +Sub Total,Zwischensumme, +Subscription for Future dates cannot be processed.,Abonnements für zukünftige Termine können nicht verarbeitet werden., +Task Assignee Email,E-Mail des Aufgabenempfängers, +Tax will be withheld only for amount exceeding the cumulative threshold,"Die Steuer wird nur für den Betrag einbehalten, der den kumulierten Schwellenwert überschreitet", +Territory Wise Sales,Gebietsbezogene Verkäufe, +The Batch {0} has negative quantity {1} in warehouse {2}. Please correct the quantity.,Die Charge {0} hat eine negative Menge {1} im Lager {2}. Bitte korrigieren Sie die Menge., +"The GL Entries and closing balances will be processed in the background, it can take a few minutes.","Die Hauptbucheinträge und Schlusssalden werden im Hintergrund verarbeitet, dies kann einige Minuten dauern.", +The Process Loss Qty has reset as per job cards Process Loss Qty,Die Prozessverlustmenge wurde gemäß den Jobkarten zurückgesetzt, +The Sales Person is linked with {0},Der Verkäufer ist mit {0} verknüpft, +"The following batches are expired, please restock them:
{0}","Die folgenden Chargen sind abgelaufen, bitte füllen Sie sie wieder auf:
{0}", +The items {0} and {1} are present in the following {2} :,Die Artikel {0} und {1} sind im folgenden {2} zu finden:, +The percentage you are allowed to pick more items in the pick list than the ordered quantity.,"Der Prozentsatz, um den Sie mehr Artikel in der Kommissionierliste auswählen dürfen als die bestellte Menge.", +"The percentage you are allowed to transfer more against the quantity ordered. For example, if you have ordered 100 units, and your Allowance is 10%, then you are allowed transfer 110 units.","Der Prozentsatz, den Sie mehr als die bestellte Menge übertragen dürfen. Wenn Sie zum Beispiel 100 Einheiten bestellt haben und Ihr Freibetrag 10% beträgt, dürfen Sie 110 Einheiten übertragen.", +The reserved stock will be released when you update items. Are you certain you wish to proceed?,"Der reservierte Bestand wird freigegeben, wenn Sie Artikel aktualisieren. Möchten Sie wirklich fortfahren?", +The serial and batch bundle {0} not linked to {1} {2},Das Seriennummern- und Chargenbündel {0} ist nicht mit {1} {2} verknüpft, +The uploaded file does not match the selected Code List.,Die hochgeladene Datei stimmt nicht mit der ausgewählten Codeliste überein., +The user cannot submit the Serial and Batch Bundle manually,Der Benutzer kann das Seriennummer- und Chargennummer-Bündel nicht manuell buchen, +Total Items,Artikel insgesamt, +Total Picked Quantity {0} is more than ordered qty {1}. You can set the Over Picking Allowance in Stock Settings.,Die gesamte kommissionierte Menge {0} ist größer als die bestellte Menge {1}. Sie können die Zulässigkeit der Überkommissionierung in den Lagereinstellungen festlegen., +Total Reposting Count,Gesamtzahl der Umbuchungen, +Total Weight (kg),Gesamtgewicht (kg), +Unable to find the time slot in the next {0} days for the operation {1}. Please increase the 'Capacity Planning For (Days)' in the {2}.,"Es ist nicht möglich, ein Zeitfenster in den nächsten {0} Tagen für die Operation {1} zu finden. Bitte erhöhen Sie die 'Kapazitätsplanung für (Tage)' in der {2}.", +Unassigned Qty,Nicht zugewiesene Menge, +Update timestamp on new communication,Zeitstempel bei neuer Kommunikation aktualisieren, +Updated via 'Time Log' (In Minutes),Aktualisiert über „Zeitprotokoll“ (in Minuten), +Updating Work Order status,Status des Arbeitsauftrags aktualisieren, +Use Item based reposting,Artikelbasierte Umbuchung verwenden, +VAT Amount (AED),MwSt.-Betrag (AED), +Valuation (I - K),Bewertung (I - K), +Value (G - D),Wert (G - D), +Value ({0}),Wert ({0}), +Value as on,Wert zum, +Value of New Capitalized Asset,Wert der neu aktivierten Sachanlage, +You are importing data for the code list:,Sie importieren Daten für die Codeliste:, +You can add the original invoice {} manually to proceed.,"Sie können die Originalrechnung {} manuell hinzufügen, um fortzufahren.", +You can't redeem Loyalty Points having more value than the Rounded Total.,"Sie können keine Treuepunkte einlösen, deren Wert höher ist als die gerundete Summe.", +You cannot change the rate if BOM is mentioned against any Item.,"Sie können den Preis nicht ändern, wenn bei einem Artikel die Stückliste angegeben ist.", +You cannot {0} this document because another Period Closing Entry {1} exists after {2},"Sie können dieses Dokument nicht {0}, da nach {2} ein weiterer Periodenabschlusseintrag {1} existiert", +You need to cancel POS Closing Entry {} to be able to cancel this document.,"Sie müssen den POS-Abschlusseintrag {} stornieren, um diesen Beleg stornieren zu können.", +Zero Balance,Nullsaldo, +Zero quantity,Nullmenge, +as Description,als Beschreibung, +by {},von {}, +{0} is a mandatory field.,{0} ist ein Pflichtfeld., +{0}: {1} does not belong to the Company: {2},{0}: {1} gehört nicht zum Unternehmen: {2}, +{} {} is not affecting bank account {},{} {} hat keinen Einfluss auf das Bankkonto {}, diff --git a/erpnext/translations/es.csv b/erpnext/translations/es.csv index 1b0468d2077..8d90f5ce2ed 100644 --- a/erpnext/translations/es.csv +++ b/erpnext/translations/es.csv @@ -8743,3 +8743,2575 @@ WhatsApp,WhatsApp, Make a call,Haz una llamada, Approve,Aprobar, Reject,Rechazar, + Address, Dirección, + Amount, Importe, + Is Child Table, Es una tabla secundaria, + Name, Nombre, + Rate, Precio, + Summary, Resumen, +"""SN-01::10"" for ""SN-01"" to ""SN-10""","""SN-01::10"" para ""SN-01"" a ""SN-10""", +# In Stock,# En stock, +# Req'd Items,# Artículos Requeridos, +% Finished Item Quantity,% Cantidad de Artículos Terminados, +% Occupied,% Ocupado, +% Picked,% Seleccionado, +% Process Loss,% Pérdida por Proceso, +% Returned,% Devuelto, +'Account' in the Accounting section of Customer {0},'Cuenta' en la sección Contabilidad de Cliente {0}, +'Allow Multiple Sales Orders Against a Customer's Purchase Order','Permitir múltiples órdenes de venta contra la orden de compra de un cliente', +'Default {0} Account' in Company {1},'Cuenta {0} Predeterminada' en la Compañía {1}, +'To Package No.' cannot be less than 'From Package No.','Al paquete n.°' no puede ser menor que 'Desde el paquete n.°', +'{0}' account is already used by {1}. Use another account.,La cuenta de '{0}' ya está siendo utilizada por {1}. Utilice otra cuenta., +'{0}' should be in company currency {1}.,'{0}' debe estar en la moneda de la empresa {1}., +(A) Qty After Transaction,(A) Cant. después de la transacción, +(B) Expected Qty After Transaction,(B) Cant. esperada después de la transacción, +(C) Total Qty in Queue,(C) Cant. total en cola, +(C) Total qty in queue,(C) Cant. total en cola, +(D) Balance Stock Value,(D) Valor del balance de las existencias, +(E) Balance Stock Value in Queue,(E) Valor del balance de las existencias en cola, +(F) Change in Stock Value,(F) Cambio en el Valor de Stock, +(G) Sum of Change in Stock Value,(G) Suma del Cambio en el Valor de Stock, +(H) Change in Stock Value (FIFO Queue),(H) Cambio en Valor de Stock (Cola FIFO), +(H) Valuation Rate,(H) Tasa de valoración, +(I) Valuation Rate,(I) Tasa de valoración, +(J) Valuation Rate as per FIFO,(J) Tasa de valoración según FIFO, +(K) Valuation = Value (D) ÷ Qty (A),(K) Valoración = Valor (D) ÷ Cant. (A), +", with the inventory {0}: {1}",", con el inventario {0}: {1}", +0-30 Days,0-30 días, +1000+,más de 1.000, +11-50,11 a 50, +3 Yearly,3 Anual, +30-60 Days,30-60 días, +60-90 Days,60-90 días, +90 Above,Superior a 90, +"
+

Note

+
    +
  • +You can use Jinja tags in Subject and Body fields for dynamic values. +
  • + All fields in this doctype are available under the doc object and all fields for the customer to whom the mail will go to is available under the customer object. +
+

Examples

+ +
    +
  • Subject:

    Statement Of Accounts for {{ customer.customer_name }}

  • +
  • Body:

    +
    Hello {{ customer.customer_name }},
    PFA your Statement Of Accounts from {{ doc.from_date }} to {{ doc.to_date }}.
  • +
+","
+

Nota

+
    +
  • +Puede usar las etiquetas Jinja en los campos Asunto y Cuerpo para valores dinámicos. +
  • + Todos los campos de este doctype están disponibles en el objeto doc y todos los campos del cliente al que se enviará el correo están disponibles en el objeto customer . +
+

Ejemplos

+ +
    +
  • Asunto:

    Estado de Cuentas para {{ customer.customer_name }}

  • +
  • Cuerpo:

    +
    Hola {{ customer.customer_name }},
    PFA tu Estado de Cuenta del {{ doc.from_date }} al {{ doc.to_date }}.
  • +
+", +"
Other Details
","
Otros detalles
", +"
No Matching Bank Transactions Found
","
No se han encontrado transacciones bancarias coincidentes
", +"
+

All dimensions in centimeter only

+
","
+

Todas las dimensiones solo en centímetros

+
", +"

About Product Bundle

+ +

Aggregate group of Items into another Item. This is useful if you are bundling a certain Items into a package and you maintain stock of the packed Items and not the aggregate Item.

+

The package Item will have Is Stock Item as No and Is Sales Item as Yes.

+

Example:

+

If you are selling Laptops and Backpacks separately and have a special price if the customer buys both, then the Laptop + Backpack will be a new Product Bundle Item.

","

Acerca de la agrupación de productos

+ +

Agregue un grupo de Artículos en otro Artículo. Esto es útil si está agrupando ciertos Artículos en un paquete y mantiene existencias de los Artículos empaquetados y no del Artículo agregado.

+

El Artículo del paquete tendrá Es Artículo de Stock como No y Es Artículo de Venta como .

+

Ejemplo:

+

Si está vendiendo Portátiles y Mochilas por separado y tiene un precio especial si el cliente compra ambos, entonces el Portátil + Mochila será un nuevo Artículo de Paquete de Productos.

", +"

Currency Exchange Settings Help

+

There are 3 variables that could be used within the endpoint, result key and in values of the parameter.

+

Exchange rate between {from_currency} and {to_currency} on {transaction_date} is fetched by the API.

+

Example: If your endpoint is exchange.com/2021-08-01, then, you will have to input exchange.com/{transaction_date}

","

Ayuda para la configuración del cambio de divisas

+

Hay 3 variables que se pueden utilizar dentro del endpoint, clave de resultado y en valores del parámetro.

+

El tipo de cambio entre {from_currency} y {to_currency} en {transaction_date} es obtenido por la API.

+

Ejemplo: Si su endpoint es exchange.com/2021-08-01, entonces, tendrá que introducir exchange.com/{transaction_date}

", +"

Body Text and Closing Text Example

+ +
We have noticed that you have not yet paid invoice {{sales_invoice}} for {{frappe.db.get_value(""Currency"", currency, ""symbol"")}} {{outstanding_amount}}. This is a friendly reminder that the invoice was due on {{due_date}}. Please pay the amount due immediately to avoid any further dunning cost.
+ +

How to get fieldnames

+ +

The fieldnames you can use in your template are the fields in the document. You can find out the fields of any documents via Setup > Customize Form View and selecting the document type (e.g. Sales Invoice)

+ +

Templating

+ +

Templates are compiled using the Jinja Templating Language. To learn more about Jinja, read this documentation.

","

Ejemplo de cuerpo de texto y texto de cierre

+ +
Hemos observado que aún no ha pagado la factura {{sales_invoice}} correspondiente a {{frappe.db.get_value(""Currency"", currency, ""symbol"")}} {{outstanding_amount}}. Este es un recordatorio amistoso de que la factura vencía el {{due_date}}. Le rogamos que abone inmediatamente el importe adeudado para evitar posibles gastos de reclamación.
+ +

Cómo obtener nombres de campo

+ +

Los nombres de campo que puede utilizar en su plantilla son los campos del documento. Puede averiguar los campos de cualquier documento a través de Configuración > Personalizar vista de formulario y seleccionando el tipo de documento (por ejemplo, Factura de venta)

+ +

Plantillas

+ +

Las plantillas se compilan utilizando el lenguaje de plantillas Jinja. Para saber más sobre Jinja, lea esta documentación.

", +"

Contract Template Example

+ +
Contract for Customer {{ party_name }}
+
+-Valid From : {{ start_date }} 
+-Valid To : {{ end_date }}
+
+ +

How to get fieldnames

+ +

The field names you can use in your Contract Template are the fields in the Contract for which you are creating the template. You can find out the fields of any documents via Setup > Customize Form View and selecting the document type (e.g. Contract)

+ +

Templating

+ +

Templates are compiled using the Jinja Templating Language. To learn more about Jinja, read this documentation.

","

Ejemplo de plantilla de contrato

+ +
Contrato para cliente {{ party_name }}
+
+-Válido desde : {{ start_date }} 
+-Válido hasta : {{ end_date }}
+
+ +

Cómo obtener los nombres de campo

+ +

Los nombres de campo que puede utilizar en su Plantilla de Contrato son los campos del Contrato para el que está creando la plantilla. Puede averiguar los campos de cualquier documento a través de Configuración > Personalizar vista de formulario y seleccionando el tipo de documento (por ejemplo, Contrato)

+ +

Creación de plantillas

+ +

Las plantillas se compilan utilizando el lenguaje de plantillas Jinja. Para saber más sobre Jinja, lea esta documentación.

", +"

Standard Terms and Conditions Example

+ +
Delivery Terms for Order number {{ name }}
+
+-Order Date : {{ transaction_date }} 
+-Expected Delivery Date : {{ delivery_date }}
+
+ +

How to get fieldnames

+ +

The fieldnames you can use in your email template are the fields in the document from which you are sending the email. You can find out the fields of any documents via Setup > Customize Form View and selecting the document type (e.g. Sales Invoice)

+ +

Templating

+ +

Templates are compiled using the Jinja Templating Language. To learn more about Jinja, read this documentation.

","

Ejemplo de condiciones generales

+ +
Condiciones de entrega para el número de pedido {{ name }}
+
+-Fecha de pedido : {{ transaction_date }} 
+-Fecha de entrega prevista : {{ delivery_date }}
+
+ +

Cómo obtener los nombres de campo

+ +

Los nombres de campo que puede utilizar en su plantilla de correo electrónico son los campos del documento desde el que está enviando el correo electrónico. Puede averiguar los campos de cualquier documento a través de Configuración > Personalizar vista de formulario y seleccionando el tipo de documento (por ejemplo, Factura de venta)

+ +

Plantillas

+ +

Las plantillas se compilan utilizando el lenguaje de plantillas Jinja. Para saber más sobre Jinja, lea esta documentación.

", +"
Or
","
O
", +"","", +"","", +"","", +"

In your Email Template, you can use the following special variables: +

+
    +
  • + {{ update_password_link }}: A link where your supplier can set a new password to log into your portal. +
  • +
  • + {{ portal_link }}: A link to this RFQ in your supplier portal. +
  • +
  • + {{ supplier_name }}: The company name of your supplier. +
  • +
  • + {{ contact.salutation }} {{ contact.last_name }}: The contact person of your supplier. +
  • + {{ user_fullname }}: Your full name. +
  • +
+

+

Apart from these, you can access all values in this RFQ, like {{ message_for_supplier }} or {{ terms }}.

","

En su plantilla de correo electrónico, puede utilizar las siguientes variables especiales: +

+
    +
  • + {{ update_password_link }}: Un enlace donde su proveedor puede establecer una nueva contraseña para acceder a su portal. +
  • +
  • + {{ portal_link }}: Un enlace a esta petición de oferta en su portal de proveedores. +
  • +
  • + {{ supplier_name }}: El nombre de la empresa de su proveedor. +
  • +
  • + {{ contact.salutation }} {{ contact.last_name }}: La persona de contacto de su proveedor. +
  • + {{ user_fullname }}: Su nombre completo. +
  • +
+

+

Aparte de éstos, puede acceder a todos los valores de esta petición de oferta, como {{ message_for_supplier }} o {{ terms }}.

", +"
Message Example
+ +<p> Thank You for being a part of {{ doc.company }}! We hope you are enjoying the service.</p> + +<p> Please find enclosed the E Bill statement. The outstanding amount is {{ doc.grand_total }}.</p> + +<p> We don't want you to be spending time running around in order to pay for your Bill.
After all, life is beautiful and the time you have in hand should be spent to enjoy it!
So here are our little ways to help you get more time for life! </p> + +<a href=""{{ payment_url }}""> click here to pay </a> + +
+","
Ejemplo de mensaje
+ +<p> ¡Gracias por formar parte de {{ doc.company }}! Esperamos que esté disfrutando del servicio.</p> + +<p> Le adjuntamos el extracto de la factura E. El importe pendiente es de {{ doc.grand_total }}.</p> + +<p> No queremos que pierda tiempo dando vueltas para pagar su Factura.
¡Después de todo, la vida es bella y el tiempo de que dispone debe emplearlo en disfrutarla!
¡Así que aquí tiene nuestras pequeñas maneras de ayudarle a tener más tiempo para la vida! </p> + +<a href=""{{ payment_url }}""> pulse aquí para pagar </a> + +
+", +"
Message Example
+ +<p>Dear {{ doc.contact_person }},</p> + +<p>Requesting payment for {{ doc.doctype }}, {{ doc.name }} for {{ doc.grand_total }}.</p> + +<a href=""{{ payment_url }}""> click here to pay </a> + +
+","
Ejemplo de mensaje
+ +<p>Estimado {{ doc.contact_person }},</p> + +<p>Solicitando pago por {{ doc.doctype }}, {{ doc.name }} por {{ doc.grand_total }}.</p> + +<a href=""{{ payment_url }}""> Haga clic aquí para pagar </a> + +
+", +"Masters & Reports","Datos Maestros & Informes", +"Quick Access","Acceso rápido", +"Reports & Masters","Informes y Datos Maestros", +"Reports & Masters","Informes & Datos Maestros", +"Settings","Configuración", +"Shortcuts","Accesos directos", +"Your Shortcuts + + + + + + ","Tus accesos directos + + + + + + ", +"Your Shortcuts","Tus accesos directos", +Grand Total: {0},Total general: {0}, +Outstanding Amount: {0},Importe pendiente: {0}, +" + + + + + + + + + + + + + + + + + +
Child DocumentNon Child Document
+

To access parent document field use parent.fieldname and to access child table document field use doc.fieldname

+ +
+

To access document field use doc.fieldname

+
+

Example: parent.doctype == ""Stock Entry"" and doc.item_code == ""Test""

+ +
+

Example: doc.doctype == ""Stock Entry"" and doc.purpose == ""Manufacture""

+
+ + + + + + +"," + + + + + + + + + + + + + + + + + +
Documento secundarioDocumento no secundario
+

Para acceder al campo del documento principal, utilice parent.fieldname y para acceder al campo del documento de la tabla secundaria, utilice doc.fieldname

+ +
+

Para acceder al campo del documento, utilice doc.fieldname

+
+

Ejemplo: parent.doctype == ""Entrada de stock"" y doc.item_code == ""Prueba""

+ +
+

Ejemplo: doc.doctype == ""Entrada de stock"" y doc.purpose == ""Fabricación""

+
+ + + + + + +", +A - B,A-B, +A - C,A-C, +A Holiday List can be added to exclude counting these days for the Workstation.,Se puede añadir una lista de días festivos para excluir el cómputo de estos días para el puesto de trabajo., +A Packing Slip can only be created for Draft Delivery Note.,Solo se puede crear un albarán para un borrador de nota de entrega., +"A Price List is a collection of Item Prices either Selling, Buying, or both","Una lista de precios es una colección de Precios de Productos, ya sea de Venta, de Compra o ambos", +A Reconciliation Job {0} is running for the same filters. Cannot reconcile now,Se está ejecutando un trabajo de reconciliación {0} para los mismos filtros. No se puede reconciliar ahora., +A Transaction Deletion Document: {0} is triggered for {0},Un documento de borrado de transacciones: {0} se activa para {0}, +A customer must have primary contact email.,Un cliente debe tener un correo electrónico de contacto principal., +A driver must be set to submit.,Debe seleccionar un conductor antes de confirmar., +A template with tax category {0} already exists. Only one template is allowed with each tax category,Ya existe una plantilla con categoría de impuestos {0}. Sólo se permite una plantilla con cada categoría de impuestos, +API Details,Detalles de la API, +AWB Number,Número AWB, +Abbreviation: {0} must appear only once,Abreviación: {0} debe aparecer sólo una vez, +About Us Settings,Configuración de información de la compañía, +About {0} minute remaining,Quedan aproximadamente {0} minutos, +About {0} minutes remaining,Quedan aproximadamente {0} minutos, +About {0} seconds remaining,Quedan aproximadamente {0} segundos, +Acceptance Criteria Formula,Fórmula de Criterio de Aceptación, +Acceptance Criteria Value,Valor de los Criterios de Aceptación, +Accepted Qty in Stock UOM,Cantidad Aceptada en UdM de Stock, +Access Key,Clave de Acceso, +Access Key is required for Service Provider: {0},Se requiere clave de acceso para el proveedor de servicios: {0}, +Account Balance (From),Saldo de cuenta (Desde), +Account Balance (To),Saldo de cuenta (Para), +Account Closing Balance,Balance de Cierre de Cuenta, +Account Currency (From),Moneda de la Cuenta (De), +Account Currency (To),Divisa de la Cuenta (De), +Account Opening Balance,Saldo de Apertura de Cuenta, +Account not Found,Cuenta no encontrada, +Account {0} added multiple times,Cuenta {0} agregada varias veces, +Accounting Dimension Filter,Filtro de dimensión contable, +Accounting Dimensions Filter,Filtro de dimensiones contables, +Accounting Entry for {0},Entrada contable para {0}, +Accounts Closing,Cierre de Cuentas, +Accounts Missing Error,Error de Cuentas Faltantes, +Accounts Receivable/Payable,Cuentas por Cobrar/Pagar, +Accounts to Merge,Cuentas a fusionar, +Action If Quality Inspection Is Rejected,Acción si se rechaza la inspección de calidad, +Action If Same Rate is Not Maintained,Acción si no se mantiene la misma tasa, +Action if Same Rate is Not Maintained Throughout Sales Cycle,Si no se mantiene la misma tarifa durante todo el ciclo de ventas, +Active Status,Estado activo, +Actual Balance Qty,Cantidad de Saldo Actual, +Actual Expense,Gasto actual, +Actual Posting,Asiento Actual, +Actual Qty in Warehouse,Cantidad real en Almacén, +Actual Time,Tiempo actual, +Add Columns in Transaction Currency,Añadir Columnas en Moneda de Transacción, +Add Corrective Operation Cost in Finished Good Valuation,Añadir Costo de Operación Correctiva en la Valoración de Productos Terminados, +Add Discount,Agregar descuento, +Add Items in the Purpose Table,Añadir Elementos en la Tabla de Propósitos, +Add Lead to Prospect,Añadir cliente potencial a prospecto, +Add Local Holidays,Agregar días festivos locales, +Add Manually,Añadir manualmente, +Add Or Deduct,Añadir o deducir, +Add Serial / Batch Bundle,Añadir Nro. Serie/Lote, +Add Serial / Batch No,Añadir Nro Serie/Lote, +Add Serial / Batch No (Rejected Qty),Añadir Nro Serie/Lote (Cant Rechazada), +Add Stock,Añadir Inventario, +Add Sub Assembly,Añadir sub ensamblaje, +Add Template,Añadir plantilla, +Add a Note,Añadir Nota, +Add details,Añadir detalles, +Add to Prospect,Añadir a prospectos, +Added By,Añadido por, +Added On,Añadido el, +Added Supplier Role to User {0}.,Añadido el Rol de Proveedor al Usuario {0}., +Added {1} Role to User {0}.,Se agregó el Rol {1} al Usuario {0}., +Adding Lead to Prospect...,Agregando cliente potencial a prospecto..., +Additional,Adicional, +Additional Asset Cost,Costo Adicional del Activo, +Additional Cost Per Qty,Costo adicional por cantidad, +Additional Info,Información Adicional, +Address And Contacts,Dirección y Contactos, +Adjust Asset Value,Ajustar el valor del activo, +Adjustment Against,Ajuste contra, +Adjustment based on Purchase Invoice rate,Ajuste basado en la tarifa de la Factura de Compra, +Advance Account: {0} must be in either customer billing currency: {1} or Company default currency: {2},La cuenta de anticipo: {0} debe estar en la moneda de facturación del cliente: {1} o en la moneda predeterminada de la empresa: {2}, +Advance Payment,Pago adelantado, +Advance Tax,Impuesto anticipado, +Advance Taxes and Charges,Impuestos y Cargos anticipados, +Advance paid against {0} {1} cannot be greater than Grand Total {2},El anticipo pagado contra {0} {1} no puede ser mayor que el total general {2}., +Advance payments allocated against orders will only be fetched,Los pagos anticipados asignados a pedidos solo se recuperarán., +Affected Transactions,Transacciones Afectadas, +Against Customer Order {0},Contra pedido del cliente {0}, +Against Supplier Invoice {0},Contra factura del proveedor {0}, +Against Voucher No,Contra el Número de Comprobante, +Age ({0}),Edad ({0}), +Ageing Range,Rango de antigüedad, +Agent Busy Message,Mensaje de agente ocupado, +Agent Group,Grupo de agentes, +Agent Unavailable Message,Mensaje de agente no disponible, +Aggregate a group of Items into another Item. This is useful if you are maintaining the stock of the packed items and not the bundled item,Agregue un grupo de Artículos en otro Artículo. Esto es útil si está manteniendo el stock de los artículos empaquetados y no del artículo agrupado, +Algorithm,Algoritmo, +All Activities,Todas las Actividades, +All Activities HTML,Todas las actividades HTML, +All Items,Todos los Productos, +All Sales Transactions can be tagged against multiple Sales Persons so that you can set and monitor targets.,Todas las transacciones de ventas se pueden etiquetar contra varias personas de ventas para que pueda establecer y supervisar los objetivos., +All allocations have been successfully reconciled,Todas las asignaciones se han reconciliado con éxito., +All items have already been received,Todos los artículos ya han sido recibidos, +All items in this document already have a linked Quality Inspection.,Todos los artículos de este documento ya tienen una Inspección de Calidad vinculada., +All the Comments and Emails will be copied from one document to another newly created document(Lead -> Opportunity -> Quotation) throughout the CRM documents.,Todos los comentarios y correos electrónicos se copiarán de un documento a otro recién creado (Cliente potencial -> Oportunidad -> Oferta) en todos los documentos del CRM., +"All the required items (raw materials) will be fetched from BOM and populated in this table. Here you can also change the Source Warehouse for any item. And during the production, you can track transferred raw materials from this table.","Todos los artículos necesarios (materias primas) se obtendrán de la lista de materiales y se rellenarán en esta tabla. Aquí también puede cambiar el Almacén de Origen para cualquier artículo. Y durante la producción, puede hacer un seguimiento de las materias primas transferidas desde esta tabla.", +Allocate Payment Request,Asignar solicitud de pago, +Allocated Entries,Entradas Asignadas, +Allocated To:,Asignado a:, +Allocations,Asignaciones, +Allow,Permitir, +Allow Alternative Item must be checked on Item {},Permitir elemento alternativo debe estar marcado en Elemento {}, +Allow Continuous Material Consumption,Permitir el consumo continuo de material, +Allow Excess Material Transfer,Permitir la transferencia de material sobrante, +Allow Internal Transfers at Arm's Length Price,Permitir Transferencias Internas a Precio de Mercado, +Allow Item to be Added Multiple Times in a Transaction,Permitir que un artículo se añada varias veces en una transacción, +Allow Lead Duplication based on Emails,Permitir la duplicación de clientes potenciales basada en correos electrónicos, +Allow Negative rates for Items,Permitir tarifas negativas para Productos, +Allow Or Restrict Dimension,Permitir o Restringir dimensión, +Allow Partial Reservation,Permitir reserva parcial, +Allow Purchase,Permitir Compra, +Allow Sales,Permitir Ventas, +Allow Sales Order Creation For Expired Quotation,Permitir la creación de Órdenes de Venta para Cotizaciones vencidas, +Allow User to Edit Discount,Permitir al usuario editar el descuento, +Allow User to Edit Rate,Permitir al usuario editar la tarifa, +Allow Zero Rate,Permitir Tarifa Cero, +Allow material consumptions without immediately manufacturing finished goods against a Work Order,Permitir consumos de material sin fabricar inmediatamente productos acabados contra una Orden de Trabajo, +Allow multi-currency invoices against single party account ,Permitir facturas en múltiples monedas contra una cuenta de una sola parte., +Allow to Edit Stock UOM Qty for Purchase Documents,Permitir editar la cantidad de UdM de stock para documentos de compras, +Allow to Edit Stock UOM Qty for Sales Documents,Permitir editar la cantidad de UdM de stock para documentos de ventas, +Allow transferring raw materials even after the Required Quantity is fulfilled,Permitir la transferencia de materias primas incluso después de cumplir la cantidad requerida, +Allowed,Permitido, +Allowed Dimension,Dimensión permitida, +Allowed Doctypes,Doctypes permitidos, +Allowed Items,Productos Permitidos, +Allowed primary roles are 'Customer' and 'Supplier'. Please select one of these roles only.,"Los roles principales permitidos son 'Cliente' y 'Proveedor'. Por favor, seleccione sólo uno de estos roles.", +Allows to keep aside a specific quantity of inventory for a particular order.,Permite reservar una cantidad específica de existencias para un pedido concreto., +Already Picked,Ya ha sido seleccionado, +Alternative Items,Ítems Alternativos, +"Alternatively, you can download the template and fill your data in.",También puede descargar la plantilla y rellenar sus datos., +Amount (AED),Importe del impuesto (AED), +Amount Eligible for Commission,Importe elegible para la comisión, +Amount in Account Currency,Importe en Moneda de la Cuenta, +Amount in party's bank account currency,Importe en la divisa de la cuenta bancaria., +Amount in transaction currency,Importe en la divisa de la transacción, +An Item Group is a way to classify items based on types.,Un Grupo de Producto es una forma de clasificar Productos según sus tipos., +An error has been appeared while reposting item valuation via {0},Se ha producido un error al volver a publicar la valoración del artículo a través de {0}, +An error has occurred during {0}. Check {1} for more details,Se ha producido un error durante {0}. Consulte {1} para obtener más detalles.,Error Log +Annual Revenue,Ingresos Anuales, +"Another Cost Center Allocation record {0} applicable from {1}, hence this allocation will be applicable upto {2}","Otro registro de Asignación de Centro de Coste {0} aplicable desde {1}, por lo tanto esta asignación será aplicable hasta {2}", +"Any one of following filters required: warehouse, Item Code, Item Group","Se requiere cualquiera de los siguientes filtros: almacén, código de artículo, grupo de artículos", +Applicable Dimension,Dimensión aplicable, +Applicable On Account,Aplicable en Cuenta, +Applied on each reading.,Se aplica en cada lectura., +Applied putaway rules.,Reglas de almacenamiento aplicadas., +Apply Putaway Rule,Aplicar la regla de almacenamiento, +Apply Recursion Over (As Per Transaction UOM),Aplicar recursión sobre (según UdM de transacción), +Apply SLA for Resolution Time,Aplicar SLA para el tiempo de resolución, +Apply TDS,Aplicar a, +Apply Tax Withholding Amount ,Aplicar Monto de Retención de Impuestos , +Apply restriction on dimension values,Aplicar restricción a los valores de dimensión, +Apply to All Inventory Documents,Aplicar a todos los documentos de inventario, +Apply to Document,Aplicar al documento, +Appointment Created Successfully,Cita creada exitosamente, +Appointment Scheduling Disabled,Programación de citas deshabilitada, +Appointment Scheduling has been disabled for this site,La programación de citas ha sido desactivada para este sitio, +Appointment was created. But no lead was found. Please check the email to confirm,"Se creó la cita, pero no se encontró ningún cliente potencial. Por favor, revise el correo electrónico para confirmar.", +Approximately match the description/party name against parties,Comparar aproximadamente la descripción/nombre de la parte con las partes., +Are you sure you want to clear all demo data?,¿Está seguro de que desea borrar todos los datos de la demostración?, +Are you sure you want to delete this Item?,¿Está seguro de que desea borrar este elemento?, +Are you sure you want to restart this subscription?,¿Está seguro de que desea reiniciar esta suscripción?, +As on Date,A fecha, +"As there are existing submitted transactions against item {0}, you can not change the value of {1}.","Como ya existen transacciones validadas contra el artículo {0}, no puede cambiar el valor de {1}.", +"As there are negative stock, you can not enable {0}.","Como hay existencias negativas, no puede habilitar {0}.", +"As there are reserved stock, you cannot disable {0}.","Como hay stock reservado, no puedes desactivar {0}.", +"As there are sufficient Sub Assembly Items, Work Order is not required for Warehouse {0}.","Dado que hay suficientes artículos de sub ensamblaje, no se requiere una orden de trabajo para el almacén {0}.", +"As {0} is enabled, you can not enable {1}.","Como {0} está habilitado, no puedes habilitar {1}.", +Assembly Items,Artículos de montaje, +Asset Activity,Actividad de Activos, +Asset Capitalization,Capitalización de Activos, +Asset Capitalization Asset Item,Elemento de Capitalización de Activos, +Asset Capitalization Service Item,Elemento de servicio de capitalización de activos, +Asset Capitalization Stock Item,Elemento de stock de capitalización de activos, +Asset Depreciation Details,Detalles de depreciación de activos, +Asset Depreciation Schedule,Calendario de depreciación de activos, +Asset Depreciation Schedule for Asset {0} and Finance Book {1} is not using shift based depreciation,Calendario de depreciación de activos para el activo {0} y el libro de finanzas {1} no está utilizando la depreciación por turnos, +Asset Depreciation Schedule not found for Asset {0} and Finance Book {1},El Calendario de amortización de activos no encontrado para el activo {0} y el libro de finanzas {1}, +Asset Depreciation Schedule {0} for Asset {1} already exists.,El Calendario de amortización de activos {0} para el activo {1} ya existe., +Asset Depreciation Schedule {0} for Asset {1} and Finance Book {2} already exists.,El Calendario de Depreciación de Activos {0} para el Activo {1} y el Libro Financiero {2} ya existe., +"Asset Depreciation Schedules created:
{0}

Please check, edit if needed, and submit the Asset.","Programas de depreciación de activos creados:
{0}

Verifique, edite si es necesario y valide el activo.", +Asset ID,Id de Activo, +Asset Quantity,Cantidad de Activos, +Asset Repair Consumed Item,Artículo Consumido en Reparación de Activos, +Asset Settings,Configuración de Activos, +Asset Shift Allocation,Asignación de Turnos de Activos, +Asset Shift Factor,Factor de cambio de activos, +Asset Shift Factor {0} is set as default currently. Please change it first.,El factor de cambio de activos {0} está configurado como predeterminado actualmente. Cámbielo primero., +Asset cancelled,Activo cancelado, +Asset capitalized after Asset Capitalization {0} was submitted,El Activo capitalizado fue validado después de la Capitalización de Activos {0}, +Asset created,Activo creado, +Asset created after Asset Capitalization {0} was submitted,El Activo creado fue validado después del la Capitalización de Activos {0}, +Asset created after being split from Asset {0},Activo creado después de ser separado del Activo {0}, +Asset decapitalized after Asset Capitalization {0} was submitted,El Activo descapitalizado fue validado después de la Capitalización de Activos {0}, +Asset deleted,Activo eliminado, +Asset issued to Employee {0},Activo emitido al empleado {0}, +Asset out of order due to Asset Repair {0},Activo fuera de servicio debido a la reparación del activo {0}, +Asset received at Location {0} and issued to Employee {1},Activo recibido en el lugar {0} y entregado al empleado {1}, +Asset restored,Activo restituido, +Asset restored after Asset Capitalization {0} was cancelled,Activo restituido después de la Capitalización de Activos {0} fue cancelada, +Asset returned,Activo devuelto, +Asset scrapped,Activo desechado, +Asset sold,Activo vendido, +Asset submitted,Activo validado, +Asset transferred to Location {0},Activo transferido a la ubicación {0}, +Asset updated after being split into Asset {0},Activo actualizado tras ser dividido en Activo {0}, +Asset updated after cancellation of Asset Repair {0},Activo actualizado tras la anulación de la reparación de activos {0}, +Asset updated after completion of Asset Repair {0},Activo actualizado tras la finalización de la reparación del activo {0}, +Asset {0} cannot be received at a location and given to an employee in a single movement,El activo {0} no puede recibirse en un lugar y entregarse a un empleado en un solo movimiento, +Asset {0} does not belong to Item {1},Activo {0} no pertenece al Producto {1}, +Asset {0} does not exist,Activo {0} no existe, +Asset {0} has been created. Please set the depreciation details if any and submit it.,"Se ha creado el activo {0}. Por favor, establezca los detalles de depreciación si los hay y valídelo.", +Asset {0} has been updated. Please set the depreciation details if any and submit it.,"El activo {0} ha sido actualizado. Por favor, establezca los detalles de depreciación si los hay y valídelo.", +Asset's depreciation schedule updated after Asset Shift Allocation {0},Calendario de amortización del activo actualizado tras la asignación del cambio de activo {0}, +Asset's value adjusted after cancellation of Asset Value Adjustment {0},Valor del activo ajustado tras la cancelación del ajuste del valor del activo {0}, +Asset's value adjusted after submission of Asset Value Adjustment {0},Valor del activo ajustado tras la presentación del ajuste del valor del activo {0}, +Assign Job to Employee,Asignar trabajo a un empleado, +Assignment,Asignación, +Assignment Conditions,Condiciones de asignación, +At Row #{0}: The picked quantity {1} for the item {2} is greater than available stock {3} for the batch {4} in the warehouse {5}.,En la fila #{0}: La cantidad seleccionada {1} para el artículo {2} es mayor que el stock disponible {3} para el lote {4} en el almacén {5}., +At Row #{0}: The picked quantity {1} for the item {2} is greater than available stock {3} in the warehouse {4}.,En la fila #{0}: La cantidad seleccionada {1} para el artículo {2} es mayor que el stock disponible {3} en el almacén {4}., +At row {0}: Batch No is mandatory for Item {1},En la fila {0}: el Núm. de Lote es obligatorio para el Producto {1}, +At row {0}: Parent Row No cannot be set for item {1},En la fila {0}: No se puede establecer el nº de fila padre para el artículo {1}, +At row {0}: Qty is mandatory for the batch {1},En la fila {0}: La cant. es obligatoria para el lote {1}, +At row {0}: Serial No is mandatory for Item {1},En la fila {0}: el Núm. Serial es obligatorio para el Producto {1}, +At row {0}: Serial and Batch Bundle {1} has already created. Please remove the values from the serial no or batch no fields.,"En la fila {0}: El paquete de serie y lote {1} ya está creado. Por favor, elimine los valores de los campos nº de serie o nº de lote.", +At row {0}: set Parent Row No for item {1},En la fila {0}: establezca el nº de fila padre para el artículo {1}, +Attach CSV File,Adjuntar archivo CSV, +Attendance & Leaves,Asistencia y Salidas, +Attribute value: {0} must appear only once,Valor del atributo: {0} debe aparecer sólo una vez, +Auto Create Exchange Rate Revaluation,Creación automática de la revalorización del Tipo de Cambio, +Auto Create Purchase Receipt,Creación automática de Recibo de Compra, +Auto Create Serial and Batch Bundle For Outward,Crear Automáticamente Lote y Serie para Salida, +Auto Create Subcontracting Order,Crear orden de subcontratación automáticamente, +Auto Created Serial and Batch Bundle,Creación automática de series y lotes, +Auto Creation of Contact,Creación automática de Contacto, +Auto Email Report,Reporte de Correo Electrónico Automático, +Auto Insert Item Price If Missing,Insertar automáticamente el precio del artículo si falta, +Auto Name,Nombre Automático, +Auto Reconcile,Reconciliación Automática, +Auto Reconcile Payments,Reconciliación Automática de Pagos, +Auto Reconciliation,Reconciliación Automática, +Auto Reconciliation of Payments has been disabled. Enable it through {0},Reconciliación automática de pagos ha sido desactivada. Habilítelo a través de {0}, +Auto Reserve Serial and Batch Nos,Reserva automática de números de serie y de lote, +Auto Reserve Stock for Sales Order on Purchase,Reserva automática de stock para órdenes de venta en el momento de la compra, +Auto close Opportunity Replied after the no. of days mentioned above,Cierre automático Oportunidad Respondida después del número de días mencionado anteriormente, +Auto match and set the Party in Bank Transactions,Coincidencia automática y fijación de la entidad en las Transacciones Bancarias, +Auto write off precision loss while consolidation,Cancelación automática de la pérdida de precisión durante la consolidación, +Automatically Add Filtered Item To Cart,Añadir automáticamente el artículo filtrado a la cesta, +Automatically Fetch Payment Terms from Order,Obtenga automáticamente las condiciones de pago del pedido, +Automatically post balancing accounting entry,Registrar automáticamente el asiento contable de balance, +Available Batch Report,Informe de lotes disponibles, +Available Qty For Consumption,Cantidad disponible para consumo, +Available Qty at Company,Cant. disponible en Compañía, +Available Qty at Target Warehouse,Cantidad disponible en Almacén de destino, +Available Qty to Reserve,Cantidad disponible para reservar, +Average Completion,Promedio de completado, +Avg Rate,Tasa promedio, +Avg Rate (Balance Stock),Tasa media (Balance Stock), +BFS,BFS (Búsqueda en Amplitud), +BIN Qty,Cant. BIN, +BOM Created,LdM Creado, +BOM Creator,Creador LdM, +BOM Creator Item,Creador de elementos de lista de materiales, +BOM Info,Información de LdM, +BOM Level,Nivel de lista de materiales, +BOM Tree,Árbol LdM, +BOM UoM,LdM UdM, +BOM Update Batch,Lote de actualización de lista de materiales, +BOM Update Initiated,Actualización de lista de materiales iniciada, +BOM Update Log,Registro de actualización de lista de materiales, +BOM Update Tool Log with job status maintained,Registro de la herramienta de actualización de lista de materiales con el estado del trabajo mantenido, +BOM Updation already in progress. Please wait until {0} is complete.,La actualización de la lista de materiales ya está en curso. Espere hasta que se complete {0} ., +BOM Updation is queued and may take a few minutes. Check {0} for progress.,La actualización de la lista de materiales está en cola y puede tardar unos minutos. Verifique {0} para ver el progreso., +BOM and Production,Lista de materiales y producción, +BOM recursion: {1} cannot be parent or child of {0},Recursión de la lista de materiales: {1} no puede ser padre o hijo de {0}, +BOMs Updated,Listas de materiales actualizadas, +BOMs created successfully,Listas de materiales creadas con éxito, +BOMs creation failed,La creación de listas de materiales falló, +"BOMs creation has been enqueued, kindly check the status after some time","La creación de listas de materiales se ha puesto en cola, compruebe el estado después de algún tiempo", +Balance Qty (Stock),Cantidad (stock), +Balance Sheet Summary,Resumen del balance general, +Balance Stock Value,Valor de stock, +Bank Reconciliation Tool,Herramienta de Reconciliación Bancaria, +Bank Statement Import,Importación de extractos bancarios, +Bank Transaction {0} Matched,Transacción bancaria {0} Cotejada, +Bank Transaction {0} added as Journal Entry,Transacción bancaria {0} añadida como asiento, +Bank Transaction {0} added as Payment Entry,Transacción bancaria {0} añadida como asiento de pago, +Bank Transaction {0} is already fully reconciled,Transacción bancaria {0} ya está totalmente conciliada, +Bank Transaction {0} updated,Transacción bancaria {0} actualizada, +Bank/Cash Account,Cuenta Banco/Efectivo, +Bank/Cash Account {0} doesn't belong to company {1},La Cuenta Banco/Efectivo {0} no pertenece a la compañía {1}, +Base Amount,Importe base, +Base Cost Per Unit,Coste base por unidad, +Base Rate,Tarifa base, +Base Tax Withholding Net Total,Base Imponible Retención Neta Total, +Base Total,Total base, +Base Total Billable Amount,Base Importe total facturable, +Base Total Billed Amount,Base Importe total facturado, +Base Total Costing Amount,Base Importe total del cálculo de costes, +Based On Value,Basado en el Valor, +"Based on your HR Policy, select your leave allocation period's end date","Basándose en su política de RRHH, seleccione la fecha de finalización del período de asignación de vacaciones", +"Based on your HR Policy, select your leave allocation period's start date","Basándose en su política de RRHH, seleccione la fecha de inicio de su período de asignación de vacaciones", +Batch Expiry Date,Fecha de caducidad del lote, +Batch No is mandatory,El número de lote es obligatorio, +Batch No {0} does not exists,Lote núm. {0} no existe, +Batch No {0} is linked with Item {1} which has serial no. Please scan serial no instead.,"El lote nº {0} está vinculado con el artículo {1} que tiene nº de serie. Por favor, escanee el nº de serie en su lugar.", +Batch No.,Nº de Lote, +Batch Nos,Números de Lote, +Batch Nos are created successfully,Los Núm. de Lote se crearon correctamente, +Batch Not Available for Return,Lote no disponible para devolución, +Batch Qty,Cantidad de lote, +Batch and Serial No,Núm. de Lote y Serie, +Batch not created for item {} since it does not have a batch series.,"Lote no creado para el artículo {}, ya que no tiene serie de lote.", +Batch {0} and Warehouse,Lote {0} y almacén, +Batch {0} is not available in warehouse {1},El lote {0} no está disponible en el almacén {1}, +Batchwise Valuation,Valoración por lotes, +Beginning of the current subscription period,Inicio del periodo de suscripción actual, +Below Subscription Plans are of different currency to the party default billing currency/Company currency: {0},Los siguientes planes de suscripción tienen una moneda diferente a la moneda de facturación predeterminada de la parte/moneda de la empresa: {0}, +Bill for Rejected Quantity in Purchase Invoice,Facturación de la cantidad rechazada en la factura de compra, +Billed Items To Be Received,Artículos facturados por recibir, +"Billed, Received & Returned","Facturado, Recibido y Devuelto", +Billing Address Details,Detalles de la dirección de facturación, +Billing Interval in Subscription Plan must be Month to follow calendar months,El intervalo de facturación en el plan de suscripción debe ser Mes para seguir los meses naturales, +Bisect Accounting Statements,Estados contables divididos, +Bisect Left,Dividir a la izquierda, +Bisect Nodes,Dividir nodos, +Bisect Right,Dividir a la derecha, +Bisecting From,Dividir desde, +Bisecting Left ...,Dividir a la izquierda..., +Bisecting Right ...,Dividir a la derecha..., +Bisecting To,Dividir a, +Blanket Order Allowance (%),Asignación de pedidos generales (%), +Bom No,Lista de materiales Nº, +Book Advance Payments as Liability option is chosen. Paid From account changed from {0} to {1}.,Se eligió la opción de Reservar pagos por adelantado como pasivo. La cuenta Pagado desde cambió de {0} a {1}., +Book Advance Payments in Separate Party Account,Contabilizar los pagos anticipados en una cuenta separada, +Book Tax Loss on Early Payment Discount,Pérdida de impuestos sobre descuentos de pago anticipado, +Book an appointment,Concierte una cita, +Booking stock value across multiple accounts will make it harder to track stock and account value.,Registrar el valor de las existencias en varias cuentas hará que sea más difícil realizar un seguimiento del valor de las existencias y de las cuentas., +Books have been closed till the period ending on {0},Los libros estarán cerrados hasta el período que finaliza el {0}, +Both Payable Account: {0} and Advance Account: {1} must be of same currency for company: {2},Tanto la Cuenta de Acreedores: {0} como la Cuenta de Anticipos: {1} deben ser de la misma moneda para la empresa: {2}, +Both Receivable Account: {0} and Advance Account: {1} must be of same currency for company: {2},Tanto la cuenta de deudores: {0} como la cuenta de anticipos: {1} deben ser de la misma moneda para la empresa: {2}, +Both {0} Account: {1} and Advance Account: {2} must be of same currency for company: {3},Tanto la cuenta {0} : {1} como la cuenta de anticipos: {2} deben ser de la misma moneda para la empresa: {3}, +Budget Exceeded,Presupuesto excedido, +Build All?,¿Construir todo?, +Build Tree,Construir árbol, +Buildable Qty,Cantidad fabricable, +Bulk Transaction Log,Registro de transacciones masivas, +Bulk Transaction Log Detail,Detalle del registro de transacciones masivas, +Bulk Update,Actualización masiva, +Bundle Items,Conjunto de Productos, +Buying & Selling Settings,Configuración de Compra y Venta, +Buying and Selling,Compra y Venta, +"By default, the Supplier Name is set as per the Supplier Name entered. If you want Suppliers to be named by a Naming Series choose the 'Naming Series' option.","Por defecto, el Nombre del Proveedor se establece según el Nombre del Proveedor introducido. Si desea que los Proveedores sean nombrados por una Serie de Nombres elija la opción 'Serie de Nombres'.", +Bypass credit check at Sales Order,Omitir verificación de crédito en Orden de Venta, +COGS By Item Group,CMV grupo de artículos, +COGS Debit,Débito CMV, +CRM Note,Nota CRM, +CRM Settings,Configuración CRM, +Calculate Product Bundle Price based on Child Items' Rates,Calcular el precio del paquete de productos en función de las tarifas de los artículos secundarios, +Calculate daily depreciation using total days in depreciation period,Calcular la depreciación diaria utilizando el total de días del período de depreciación, +Call Again,Volver a llamar, +Call Ended,Llamada finalizada, +Call Handling Schedule,Horario de atención de llamadas, +Call Received By,Llamada recibida por, +Call Receiving Device,Dispositivo receptor de llamadas, +Call Routing,Enrutamiento de llamadas, +Call Schedule Row {0}: To time slot should always be ahead of From time slot.,Horario de llamadas Fila {0}: La franja horaria A debe estar siempre por delante de la franja horaria Desde., +Call Type,Tipo de llamada, +Callback,Devolver Llamada, +Campaign Item,Artículos de campaña, +Can not close Work Order. Since {0} Job Cards are in Work In Progress state.,No se puede cerrar la Orden de Trabajo. Ya que {0} Las fichas de trabajo están en estado Trabajo en curso., +"Can not filter based on Child Account, if grouped by Account",No se puede filtrar basado en la cuenta secundaria si está agrupada por cuenta, +"Can't change the valuation method, as there are transactions against some items which do not have its own valuation method","No se puede cambiar el método de valoración, ya que hay transacciones contra algunos artículos que no tienen su propio método de valoración.", +Can't disable batch wise valuation for active batches.,No se puede deshabilitar la valoración por lotes para lotes activos., +Can't disable batch wise valuation for items with FIFO valuation method.,No se puede desactivar la valoración por lotes para artículos con método de valoración FIFO., +Cannot Merge,No se puede fusionar, +Cannot Resubmit Ledger entries for vouchers in Closed fiscal year.,No se pueden volver a validar entradas del libro mayor para comprobantes en un año fiscal cerrado., +"Cannot amend {0} {1}, please create a new one instead.","No se puede modificar {0} {1}; en su lugar, cree uno nuevo.", +Cannot apply TDS against multiple parties in one entry,No se puede aplicar Retención de impuestos en origen contra varias partes en una sola entrada, +Cannot cancel as processing of cancelled documents is pending.,No se puede cancelar porque el procesamiento de los documentos cancelados está pendiente., +Cannot cancel the transaction. Reposting of item valuation on submission is not completed yet.,"No se puede cancelar la transacción. La validación del traspaso de la valoración del artículo, aún no se ha completado.", +Cannot change Reference Document Type.,No se puede cambiar el tipo de documento de referencia., +Cannot complete task {0} as its dependant task {1} are not completed / cancelled.,No se puede completar la tarea {0} porque su tarea dependiente {1} no está completada / cancelada., +Cannot convert Task to non-group because the following child Tasks exist: {0}.,No se puede convertir una tarea a una no grupal porque existen las siguientes tareas secundarias: {0}., +Cannot convert to Group because Account Type is selected.,No se puede convertir a Grupo porque Tipo de Cuenta está seleccionado., +Cannot create Stock Reservation Entries for future dated Purchase Receipts.,No se pueden crear entradas de reserva de stock para recibos de compra con fecha futura., +Cannot create a pick list for Sales Order {0} because it has reserved stock. Please unreserve the stock in order to create a pick list.,No se puede crear una lista de selección para la orden de venta {0} porque tiene stock reservado. Anule la reserva del stock para crear una lista de selección., +Cannot create accounting entries against disabled accounts: {0},No se pueden crear asientos contables contra cuentas desactivadas: {0}, +Cannot disable batch wise valuation for FIFO valuation method.,No se puede desactivar la valoración por lotes para el método de valoración FIFO., +Cannot enqueue multi docs for one company. {0} is already queued/running for company: {1},No se pueden poner en cola varios documentos para una empresa. {0} ya está en cola/en ejecución para la empresa: {1}, +Cannot find a default warehouse for item {0}. Please set one in the Item Master or in Stock Settings.,No se puede encontrar un almacén predeterminado para el artículo {0}. Establezca uno en el Maestro de artículos o en la Configuración de existencias., +Cannot make any transactions until the deletion job is completed,No se puede realizar ninguna transacción hasta que se complete el trabajo de eliminación., +Cannot produce more item for {0},No se puede producir más productos por {0}, +Cannot produce more than {0} items for {1},No se pueden producir más de {0} productos por {1}, +Cannot receive from customer against negative outstanding,No se puede recibir del cliente contra saldos pendientes negativos, +Cannot retrieve link token for update. Check Error Log for more information,No se puede recuperar el token de enlace para la actualización. Consulte el registro de errores para obtener más información, +Cannot retrieve link token. Check Error Log for more information,No se puede recuperar el token de enlace. Compruebe el registro de errores para obtener más información, +Cannot {0} from {2} without any negative outstanding invoice,No se puede {0} desde {2} sin ninguna factura pendiente negativa, +Capacity (Stock UOM),Capacidad (Stock UdM), +Capacity in Stock UOM,Capacidad en stock UdM, +Capacity must be greater than 0,La capacidad debe ser superior a 0, +Capitalization,Capitalización, +Capitalization Method,Método de Capitalización, +Capitalize Asset,Capitalizar Activo, +Capitalize Repair Cost,Capitalizar el coste de reparación, +Capitalized,Capitalizado, +Carrier,Operador, +Carrier Service,Servicio de Operador, +Carry Forward Communication and Comments,Llevar adelante la comunicación y los comentarios, +Category Details,Detalles de la categoría, +Caution: This might alter frozen accounts.,Precaución: Esto podría alterar las cuentas congeladas., +Change in Stock Value,Cambio en el Valor de Stock, +Changed customer name to '{}' as '{}' already exists.,Se cambió el nombre del Cliente a '{}' porque '{}' ya existe., +Changes,Cambio, +Charge of type 'Actual' in row {0} cannot be included in Item Rate or Paid Amount,El cargo de tipo 'Real' en la fila {0} no puede incluirse en la Tarifa del artículo o en el Importe pagado, +Chart Of Accounts,Plan de Cuentas, +Checked On,Comprobado el, +Checking this will round off the tax amount to the nearest integer,Al marcar esta casilla se redondeará el importe del impuesto al número entero más próximo, +Cheques and Deposits Incorrectly cleared,Cheques y depósitos compensados incorrectamente, +Choose a WIP composite asset,Elija un activo compuesto WIP, +Clear Demo Data,Borrar datos de demostración, +Clear Notifications,Borrar Notificaciones, +Clearing Demo Data...,Borrando datos de demostración..., +Click on 'Get Finished Goods for Manufacture' to fetch the items from the above Sales Orders. Items only for which a BOM is present will be fetched.,"Haga clic en ""Obtener Productos Terminados para Fabricación"" para obtener los artículos de los Pedidos de Ventas anteriores. Sólo se obtendrán los artículos para los que exista una lista de materiales.", +Click on Add to Holidays. This will populate the holidays table with all the dates that fall on the selected weekly off. Repeat the process for populating the dates for all your weekly holidays,Haga clic en Añadir a vacaciones. Esto rellenará la tabla de días festivos con todas las fechas que caen en el día festivo semanal seleccionado. Repita el proceso para rellenar las fechas de todas sus vacaciones semanales, +Click on Get Sales Orders to fetch sales orders based on the above filters.,Haga clic en Obtener pedidos de venta para obtener los pedidos de venta basados en los filtros anteriores., +Click to add email / phone,Clic para añadir correo / teléfono, +Close Replied Opportunity After Days,Cerrar oportunidad respondida después de días, +Closed Work Order can not be stopped or Re-opened,La orden de trabajo cerrada no puede detenerse ni reabrirse, +Closing,Cierre, +Closing Balance as per Bank Statement,Saldo de cierre según extracto bancario, +Closing Balance as per ERP,Saldo de cierre según ERP, +Closing Stock Balance,Saldo de stock de cierre, +Columns are not according to template. Please compare the uploaded file with standard template,"Las columnas no se ajustan a la plantilla. Por favor, compare el archivo subido con la plantilla estándar", +Communication Channel,Canal de comunicación, +Company Address Display,Mostrar dirección de la empresa, +Company Billing Address,Dirección de Facturación de la Compañía, +Company Details,Detalles de la Compañía, +Company Shipping Address,Dirección de envío de la compañía, +Company Tax ID,Número de Identificación Fiscal de la Compañía, +Company and Posting Date is mandatory,La Empresa y la Fecha de Publicación son obligatorias, +Company is mandatory,La empresa es obligatoria, +Company is mandatory for generating an invoice. Please set a default company in Global Defaults.,La empresa es obligatoria para generar una factura. Establezca una empresa predeterminada en Valores predeterminados globales., +Company which internal customer represents,Compañía a la que representa el Cliente Interno, +Company which internal customer represents.,Compañía a la que representa el Cliente Interno., +Company which internal supplier represents,Empresa a la que representa el proveedor interno, +Company {0} is added more than once,La empresa {0} se agrega más de una vez, +Company {} does not exist yet. Taxes setup aborted.,La empresa {} aún no existe. Configuración de impuestos abortada., +Company {} does not match with POS Profile Company {},La empresa {} no coincide con el perfil de POS {}, +Competitor,Competidor, +Competitor Detail,Detalle del Competidor, +Competitor Name,Nombre del Competidor, +Competitors,Competidores, +Complete Job,Trabajo completo, +Complete Order,Pedido completo, +Completed On,Completado el, +Completed On cannot be greater than Today,Completado el no puede ser después de hoy, +Completed Tasks,Tareas Completadas, +Completed Time,Tiempo completado, +Completion Date can not be before Failure Date. Please adjust the dates accordingly.,La fecha de finalización no puede ser anterior a la fecha de falla. Ajuste las fechas según corresponda., +Conditional Rule,Regla condicional, +Conditional Rule Examples,Ejemplos de reglas condicionales, +Configure Product Assembly,Configurar el ensamblaje del producto, +Configure the action to stop the transaction or just warn if the same rate is not maintained.,Configure la acción para detener la transacción o simplemente avisar si no se mantiene la misma tasa., +Connections,Conexiones, +Consider Entire Party Ledger Amount,Considerar el importe total del Libro Mayor de Partes, +Consider Minimum Order Qty,Considerar la cantidad mínima de pedido, +Consider Rejected Warehouses,Considerar los almacenes rechazados, +Considered In Paid Amount,Considerado en el importe pagado, +Consolidate Sales Order Items,Consolidar posiciones de pedido de cliente, +Consolidate Sub Assembly Items,Consolidar elementos de subensamblado, +Consumed Asset Items is mandatory for Decapitalization,Los elementos de activos consumidos son obligatorios para la descapitalización, +Consumed Asset Total Value,Valor total de los activos consumidos, +Consumed Assets,Activos consumidos, +Consumed Quantity,Calidad consumida, +Consumed Stock Items,Artículos de stock consumidos, +Consumed Stock Items or Consumed Asset Items are mandatory for creating new composite asset,Los artículos de stock consumidos o los artículos de activos consumidos son obligatorios para crear un nuevo activo compuesto., +"Consumed Stock Items, Consumed Asset Items or Consumed Service Items is mandatory for Capitalization","Los artículos de stock consumidos, los artículos de activos consumidos o los artículos de servicios consumidos son obligatorios para la capitalización", +Consumed Stock Total Value,Valor total del stock consumido, +Consumption Rate,Tasa de consumo, +Contact Details,Detalles de contacto, +Contact Mobile,Contacto Móvil, +Contact Us Settings,Configuración de contácto, +Contacts,Contactos, +Contract Template Help,Ayuda con la plantilla de contrato, +Contribution Qty,Contribución Cantidad, +Control Historical Stock Transactions,Control de las transacciones históricas de existencias, +Conversion factor for item {0} has been reset to 1.0 as the uom {1} is same as stock uom {2}.,El factor de conversión para el artículo {0} se ha restablecido a 1.0 ya que la unidad de medida {1} es la misma que la unidad de medida de stock {2}., +Convert Item Description to Clean HTML in Transactions,Convertir la descripción del artículo a HTML limpio en las transacciones, +Convert to Group,Convertir a grupo,Warehouse +Convert to Item Based Reposting,Convertir a reenvío basado en artículos, +Convert to Ledger,Convertir a libro mayor,Warehouse +Core,Núcleo, +Corrective Job Card,Ficha de trabajo correctivo, +Corrective Operation,Operación correctiva, +Corrective Operation Cost,Coste de la operación correctiva, +Cost Center Allocation,Asignación de centros de costes, +Cost Center Allocation Percentage,Porcentaje de Asignación del Centro de Costos, +Cost Center Allocation Percentages,Porcentajes de Asignación del Centro de Costo, +Cost Center For Item with Item Code {0} has been Changed to {1},El centro de costes para el artículo con código de artículo {0} se ha cambiado a {1}, +"Cost Center is a part of Cost Center Allocation, hence cannot be converted to a group","El centro de costes forma parte de la asignación de centros de costes, por lo que no puede convertirse en un grupo", +Cost Center with Allocation records can not be converted to a group,El centro de costes con registros de asignación no puede convertirse en un grupo, +Cost Center {0} cannot be used for allocation as it is used as main cost center in other allocation record.,"El centro de costes {0} no puede utilizarse para la asignación, ya que se utiliza como centro de costes principal en otro registro de asignación.", +Cost Center {} doesn't belong to Company {},Centro de costos {} no pertenece a la empresa {}, +Cost Center {} is a group cost center and group cost centers cannot be used in transactions,El centro de costes {} es un centro de costes de grupo y los centros de costes de grupo no pueden utilizarse en las transacciones, +Cost Configuration,Configuración de costes, +Cost Per Unit,Coste por unidad, +Cost of New Capitalized Asset,Coste del nuevo activo capitalizado, +Cost of Poor Quality Report,Informe sobre el coste de la mala calidad, +Cost to Company (CTC),Coste para la empresa (CTE), +Costing Details,Detalles de costos, +Could Not Delete Demo Data,No se pueden borrar los datos de la demostración, +Could not auto update shifts. Shift with shift factor {0} needed.,No se pudieron actualizar automáticamente los turnos. Se necesita un turno con un factor de turno {0} ., +Could not detect the Company for updating Bank Accounts,No se ha podido detectar la empresa para actualizar las cuentas bancarias, +Could not find path for ,No se pudo encontrar la ruta para , +Count,Contar, +Create Depreciation Entry,Crear asiento de amortización, +Create Employee records.,Crear registros de empleados., +Create Grouped Asset,Crear activos agrupados, +Create Job Card based on Batch Size,Crear tarjeta de trabajo en función del tamaño del lote, +Create Journal Entries,Crear asientos, +Create Ledger Entries for Change Amount,Crear entradas en el libro mayor para el importe de modificación, +Create Link,Crear enlace, +Create Multi-level BOM,Crear lista de materiales Multi-Nivel, +Create New Customer,Crear Nuevo Cliente, +Create Opportunity,Crear Oportunidad, +Create Prospect,Crear prospecto, +Create Reposting Entries,Crear entradas de reenvío, +Create Reposting Entry,Crear entrada de reenvío, +Create Stock Entry,Crear entrada de stock, +Create Workstation,Crear estación de trabajo, +Create a new composite asset,Crear un nuevo activo compuesto, +Create a variant with the template image.,Cree una variante con la imagen de la plantilla., +Create in Draft Status,Crear en estado Borrador, +Create {0} {1} ?,¿Crear {0} {1} ?, +Created On,Creado el, +Created {0} scorecards for {1} between:,Se crearon {0} tarjetas de puntos para {1} entre:, +Creating Delivery Note ...,Creando Nota de Entrega..., +Creating Journal Entries...,Creación de asientos de diario..., +Creating Packing Slip ...,Creando albarán..., +Creating Purchase Invoices ...,Creando facturas de compra..., +Creating Purchase Receipt ...,Creando Recibo de Compra..., +Creating Sales Invoices ...,Creando facturas de venta..., +Creating Stock Entry,Creando Entrada de Inventario, +Creating Subcontracting Order ...,Creando Orden de Subcontratación..., +Creating Subcontracting Receipt ...,Creando Recibo de Subcontratación..., +Creating User...,Creando usuario..., +Creation,Creación, +Creation of {1}(s) successful,Creación de {1}(s) exitosa, +"Creation of {0} failed. + Check Bulk Transaction Log","La creación de {0} falló. + Verificar Registro de transacciones masivas", +"Creation of {0} partially successful. + Check Bulk Transaction Log","Creación de {0} parcialmente satisfactoria. + Compruebe Registro de transacciones masivas", +Credit (Transaction),Crédito (Transacción), +Credit Amount in Transaction Currency,Importe del crédito en la moneda de la transacción, +Credit Limit Crossed,Límite de crédito sobrepasado, +Credit Limit Settings,Configuración del límite de crédito, +"Credit Note will update it's own outstanding amount, even if ""Return Against"" is specified.","La nota de crédito actualizará su propio importe pendiente, incluso si se especifica ""Devolución contra"".", +Currency Exchange Settings Details,Detalles de la configuración del cambio de divisas, +Currency Exchange Settings Result,Resultado de la configuración de cambio de moneda, +Current Asset,Activo corriente, +Current Index,Índice actual, +Current Level,Nivel actual, +Current Liability,Pasivo corriente, +Current Node,Nodo actual, +Current Serial / Batch Bundle,Paquete de serie / lote actual, +Custom,Personalizar, +Custom delimiters,Delimitador personalizado, +Customer ,Cliente , +Customer / Item / Item Group,Cliente / Producto / Grupo de Productos, +Customer Defaults,Valores predeterminados del cliente, +Customer Group Item,Artículo del grupo de clientes, +Customer Group: {0} does not exist,Grupo de Clientes: {0} no existe, +Customer Item,Artículo del cliente, +Customer Name: ,Nombre del cliente: , +Customer Portal Users,Usuarios del Portal del Cliente, +Customer: ,Cliente: , +Daily Time to send,Tiempo diario para enviar, +Dashboard,Tablero, +Data Based On,Datos basados en, +Date ,Fecha , +Date must be between {0} and {1},La fecha debe estar entre {0} y {1}, +Days before the current subscription period,Días antes del período de suscripción actual, +DeLinked,Desvinculado, +Deal Owner,Propietario de la Oferta, +Debit (Transaction),Débito (Transacción), +Debit Amount in Transaction Currency,Importe del débito en la moneda de la transacción, +"Debit Note will update it's own outstanding amount, even if ""Return Against"" is specified.","La nota de débito actualizará su propio monto pendiente, incluso si se especifica ""Devolver contra"".", +Debit-Credit Mismatch,Desajuste débito-crédito, +Debit-Credit mismatch,Desajuste débito-crédito, +Decapitalization,Descapitalización, +Decapitalized,Descapitalizado, +Default Advance Account,Cuenta de anticipos por defecto, +Default Advance Paid Account,Cuenta de anticipos por defecto, +Default Advance Received Account,Cuenta de anticipos recibidos por defecto, +Default BOM not found for FG Item {0},Lista de materiales por defecto no encontrada para el artículo FG {0}, +Default Discount Account,Cuenta de descuento predeterminada, +Default In-Transit Warehouse,Almacén en tránsito predeterminado, +Default Operating Cost Account,Cuenta de costos operativos por defecto, +Default Payment Discount Account,Cuenta de descuento por pago predeterminado, +Default Provisional Account,Cuenta provisional predeterminada, +Default Service Level Agreement for {0} already exists.,Ya existe un acuerdo de nivel de servicio predeterminado para {0} ., +Default Unit of Measure for Item {0} cannot be changed directly because you have already made some transaction(s) with another UOM. You need to either cancel the linked documents or create a new Item.,La unidad de medida predeterminada para el artículo {0} no se puede cambiar directamente porque ya ha realizado alguna transacción con otra unidad de medida. Debe cancelar los documentos vinculados o crear un artículo nuevo., +Default settings for your stock-related transactions,Configuración predeterminada para sus transacciones relacionadas con acciones, +"Default tax templates for sales, purchase and items are created.","Se crean plantillas de impuestos por defecto para ventas, compras y artículos.", +Deferred Accounting,Contabilidad diferida, +Deferred Accounting Defaults,Contabilidad diferida predeterminada, +Deferred Revenue and Expense,Ingresos y gastos diferidos, +Deferred accounting failed for some invoices:,La contabilidad diferida falló para algunas facturas:, +Delay (In Days),Retraso (en días), +Delayed,Retrasado, +Delayed Tasks Summary,Resumen de tareas retrasadas, +Delete Accounting and Stock Ledger Entries on deletion of Transaction,Borrar asientos del libro de contabilidad y de existencias al borrar una transacción, +Delete Bins,Eliminar contenedores, +Delete Cancelled Ledger Entries,Eliminar entradas contables canceladas, +Delete Dimension,Eliminar Dimensión, +Delete Leads and Addresses,Eliminar clientes potenciales y direcciones, +Delete Transactions,Eliminar transacciones, +Deleted Documents,Documentos Eliminados, +Deletion in Progress!,¡Eliminación en progreso!, +Delimiter options,Opciones de delimitador, +Delivery Manager,Gerente de Envío, +Delivery Note Packed Item,Albarán de entrega Artículo embalado, +Delivery Note(s) created for the Pick List,Nota(s) de entrega creada(s) para la lista de selección, +Delivery User,Usuario de Envío, +Delivery to,Entregar a, +Demo Company,Empresa de Demostración, +Demo data cleared,Datos de demostración borrados, +Dependant SLE Voucher Detail No,Detalle del comprobante SLE dependiente N.º, +Dependent Task {0} is not a Template Task,La tarea dependiente {0} no es una tarea plantilla, +Deposit,Depósito, +Depreciate based on daily pro-rata,Depreciación basada en el prorrateo diario, +Depreciate based on shifts,Depreciar según turnos, +Depreciation Details,Detalles de la depreciación, +Depreciation Entry Posting Status,Estado de contabilización del asiento de amortización, +Depreciation Expense Account should be an Income or Expense Account.,La cuenta de gastos de depreciación debe ser una cuenta de ingresos o de gastos., +Depreciation Posting Date cannot be before Available-for-use Date,La fecha de contabilización de la depreciación no puede ser anterior a la fecha de disponibilidad para uso, +Depreciation Row {0}: Depreciation Posting Date cannot be before Available-for-use Date,Fila de depreciación {0}: La fecha de contabilización de la depreciación no puede ser anterior a la fecha de disponibilidad para uso, +Depreciation Schedule View,Vista del calendario de amortización, +Depreciation cannot be calculated for fully depreciated assets,La amortización no puede calcularse para los activos totalmente amortizados, +Description of Content,Descripción del contenido, +Desk User,Usuario de Escritorio, +Difference In,Diferencia en, +Difference Posting Date,Fecha de publicación de la diferencia, +Difference Qty,Diferencia Cant., +Different 'Source Warehouse' and 'Target Warehouse' can be set for each row.,Se pueden configurar diferentes 'Almacén de origen' y 'Almacén de destino' para cada fila., +Dimension Details,Detalles de la dimensión, +Dimension Filter Help,Ayuda del filtro de dimensiones, +Dimension-wise Accounts Balance Report,Informe de balance de cuentas por dimensiones, +Direct Expense,Gastos Directos, +Disable Last Purchase Rate,Desactivar última tasa de compra, +Disable Serial No And Batch Selector,Desactivar selección de Nún. de Serie y Lote, +Disabled Account Selected,Cuenta deshabilitada seleccionada, +Disabled Warehouse {0} cannot be used for this transaction.,El almacén deshabilitado {0} no se puede utilizar para esta transacción., +Disabled pricing rules since this {} is an internal transfer,Deshabilitado las reglas de precios ya que esta {} es una transferencia interna, +Disabled tax included prices since this {} is an internal transfer,"Precios con impuestos incluidos, ya que este {} es un traslado interno", +Disables auto-fetching of existing quantity,Desactiva la obtención automática de la cantidad existente, +Disassemble,Desmontar, +Disassemble Order,Orden de desmontaje, +Discount Account,Cuenta de Descuento, +Discount Date,Fecha de descuento, +Discount Settings,Configuración de Descuento, +Discount Validity,Validez del descuento, +Discount Validity Based On,Validez del descuento basado en, +Discount of {} applied as per Payment Term,Descuento de {} aplicado según la Condición de Pago, +Discounted Amount,Importe descontado, +"Discounts to be applied in sequential ranges like buy 1 get 1, buy 2 get 2, buy 3 get 3 and so on","Descuentos a aplicar en rangos secuenciales como compra 1 consigue 1, compra 2 consigue 2, compra 3 consigue 3 y así sucesivamente", +Discrepancy between General and Payment Ledger,Discrepancia entre el Libro Mayor y el Libro de Pagos, +Dispatch Address,Dirección de Despacho, +Dispatch Address Name,Nombre de Dirección de Despacho, +Distinct Item and Warehouse,Distinto artículo y almacén, +Distribute Additional Costs Based On ,Distribuir los costes adicionales en función de , +Distribute Manually,Distribuir manualmente, +Do Not Explode,No desglosar, +Do Not Update Serial / Batch on Creation of Auto Bundle,No actualizar el número de serie o lote al crear un paquete automático, +Do Not Use Batch-wise Valuation,No utilice la valoración por lotes, +Do reposting for each Stock Transaction,Realice el traspaso para cada transacción bursátil, +Do you still want to enable negative inventory?,¿Aún desea activar el inventario negativo?, +DocTypes should not be added manually to the 'Excluded DocTypes' table. You are only allowed to remove entries from it.,Los DocTypes no deben añadirse manualmente a la tabla 'DocTypes excluidos'. Solamente se le permite eliminar entradas de la misma., +Document Type already used as a dimension,Tipo de documento ya utilizado como dimensión, +Documents,Documentos, +Documents: {0} have deferred revenue/expense enabled for them. Cannot repost.,Documentos: {0} tienen habilitados ingresos/gastos diferidos. No se pueden volver a publicar., +Domain Settings,Configuraciones de Dominio, +Don't Reserve Sales Order Qty on Sales Return,No reserve la cantidad de la orden de venta en la devolución de ventas, +Don't Send Emails,No envíe correos electrónicos, +Dont Recompute tax,No recalcular impuestos, +Download Backups,Descargar Backups, +Download CSV Template,Descargar la plantilla CSV, +Download Materials Request Plan,Descargar Plan de Solicitud de Materiales, +Download Materials Request Plan Section,Descargar Sección de Solicitud de Planos de Materiales, +Dunning Amount (Company Currency),Importe de la reclamación (moneda de la empresa), +Dunning Level,Nivel de reclamación, +Duplicate Closing Stock Balance,Saldo de stock de cierre duplicado, +Duplicate Customer Group,Grupo de clientes duplicados, +Duplicate Finance Book,Duplicado del Libro de Finanzas, +Duplicate Item Group,Grupo de Productos duplicado, +Duplicate POS Invoices found,Se encontraron facturas PV duplicadas, +Dynamic Condition,Condición Dinámica, +Edit Capacity,Editar capacidad, +Edit Cart,Editar carrito, +Edit Full Form,Editar formulario completo, +Edit Note,Editar Nota, +Editing {0} is not allowed as per POS Profile settings,La edición de {0} no está permitida según la configuración del perfil del PV, +Either 'Selling' or 'Buying' must be selected,"Debe seleccionar ""Vender"" o ""Comprar"".", +Email / Notifications,Correo / Notificaciones, +Email Address (required),Dirección de correo electrónico (obligatorio), +"Email Address must be unique, it is already used in {0}","La dirección de correo electrónico debe ser única, ya se utiliza en {0}", +Email Digest Recipient,Destinatario del resumen de correo electrónico, +Email Digest: {0},Resumen de correo: {0}, +Email Domain,Dominio de Correo Electrónico, +Email or Phone/Mobile of the Contact are mandatory to continue.,El correo electrónico o el teléfono/móvil del contacto son obligatorios para continuar., +Email verification failed.,Error en la verificación del correo electrónico., +Employee User Id,Id. de usuario del empleado, +Enable Allow Partial Reservation in the Stock Settings to reserve partial stock.,Habilite Permitir reserva parcial en la configuración de stock para reservar stock parcial., +Enable Automatic Party Matching,Habilitar la coincidencia automática de partes, +Enable Common Party Accounting,Habilitar la contabilidad de partes comunes, +Enable Discount Accounting for Selling,Habilitar la contabilidad de descuentos para las ventas, +Enable Fuzzy Matching,Habilitar coincidencia difusa, +Enable Health Monitor,Habilitar monitor de salud, +Enable Immutable Ledger,Habilitar libro mayor inmutable, +Enable Provisional Accounting For Non Stock Items,Habilitar contabilidad provisional para artículos que no están en stock, +Enable Stock Reservation,Habilitar reserva de existencias, +Enable it if users want to consider rejected materials to dispatch.,Habilítelo si los usuarios desean considerar los materiales rechazados para enviarlos., +Enable this checkbox even if you want to set the zero priority,Active esta casilla incluso si desea establecer la prioridad cero, +"Enable this option to calculate daily depreciation by considering the total number of days in the entire depreciation period, (including leap years) while using daily pro-rata based depreciation","Active esta opción para calcular la amortización diaria teniendo en cuenta el número total de días de todo el período de amortización, (incluidos los años bisiestos) al utilizar la amortización diaria prorrateada.", +Enable to apply SLA on every {0},Habilitar para aplicar SLA en cada {0}, +Enabling this ensures each Purchase Invoice has a unique value in Supplier Invoice No. field within a particular fiscal year,Habilitar esta opción garantiza que cada factura de compra tenga un valor único en el campo Nº de factura del proveedor dentro de un ejercicio fiscal determinado, +Enabling this option will allow you to record -

1. Advances Received in a Liability Account instead of the Asset Account

2. Advances Paid in an Asset Account instead of the Liability Account,Activar esta opción le permitirá registrar -

1. Anticipos Recibidos en una Cuenta de Pasivo en lugar de la Cuenta de Activo

2. Anticipos Pagados en una Cuenta de Activo en lugar de la Cuenta de Pasivo, +Enabling this will allow creation of multi-currency invoices against single party account in company currency,Habilitar esta opción permitirá la creación de facturas multidivisa contra la cuenta de una sola parte en la divisa de la empresa, +Enabling this will change the way how cancelled transactions are handled.,Al activar esta opción cambiará la forma en que se gestionan las transacciones canceladas., +End Transit,Fin del tránsito, +End of the current subscription period,Fin del periodo de suscripción actual, +"Enter First and Last name of Employee, based on Which Full Name will be updated. IN transactions, it will be Full Name which will be fetched.","Introduzca el Nombre y Apellidos del Empleado, en base a los cuales se actualizará el Nombre Completo. EN las transacciones, será el Nombre Completo el que se obtendrá.", +Enter Manually,Introducir manualmente, +Enter Serial Nos,Ingrese Serial Nro., +Enter Visit Details,Introduzca los datos de la visita, +Enter a name for Routing.,Introduzca un nombre para el Enrutamiento., +"Enter a name for the Operation, for example, Cutting.","Introduzca un nombre para la Operación, por ejemplo, Corte.", +Enter a name for this Holiday List.,Introduzca un nombre para esta Lista de vacaciones., +"Enter an Item Code, the name will be auto-filled the same as Item Code on clicking inside the Item Name field.","Introduzca un Código de Artículo, el nombre se autocompletará igual que Código de Artículo al pulsar dentro del campo Nombre de Artículo.", +Enter each serial no in a new line,Introduzca cada nº de serie en una nueva línea, +"Enter the Operation, the table will fetch the Operation details like Hourly Rate, Workstation automatically. + + After that, set the Operation Time in minutes and the table will calculate the Operation Costs based on the Hourly Rate and Operation Time.","Introduzca la Operación, la tabla obtendrá los detalles de la Operación como la Tasa Horaria, la Estación de Trabajo automáticamente. + + Después, fije el Tiempo de Operación en minutos y la tabla calculará los Costes de Operación basándose en la Tarifa Horaria y el Tiempo de Operación.", +Enter the opening stock units.,Introduzca las unidades de existencias iniciales., +Enter the quantity of the Item that will be manufactured from this Bill of Materials.,Introduzca la cantidad del Artículo que se fabricará a partir de esta Lista de Materiales., +Enter the quantity to manufacture. Raw material Items will be fetched only when this is set.,Introduzca la cantidad a fabricar. Los artículos de materia prima sólo se obtendrán cuando se haya configurado esta opción., +Error during caller information update,Error al actualizar la información de llamada, +Error while posting depreciation entries,Error al contabilizar asientos de amortización, +Error while processing deferred accounting for {0},Error al procesar la contabilidad diferida para {0}, +Error while reposting item valuation,Error al volver a publicar la valoración del artículo, +"Error: This asset already has {0} depreciation periods booked. + The `depreciation start` date must be at least {1} periods after the `available for use` date. + Please correct the dates accordingly.","Error: Este activo ya tiene contabilizados {0} periodos de amortización. + La fecha de `inicio de la amortización` debe ser al menos {1} periodos después de la fecha de `disponible para su uso`. + Por favor, corrija las fechas en consecuencia.", +Errors Notification,Notificación de errores, +Even invoices with apply tax withholding unchecked will be considered for checking cumulative threshold breach,Incluso las facturas que no tengan marcada la opción de aplicar la retención de impuestos se tendrán en cuenta para comprobar el incumplimiento del umbral acumulativo., +Example URL,URL de ejemplo, +Example of a linked document: {0},Ejemplo de documento vinculado: {0}, +"Example: ABCD.##### +If series is set and Serial No is not mentioned in transactions, then automatic serial number will be created based on this series. If you always want to explicitly mention Serial Nos for this item. leave this blank.","Ejemplo: ABCD. #####. Si se establece una serie y no se menciona el No de lote en las transacciones, se creará un número de lote automático basado en esta serie. Si siempre quiere mencionar explícitamente el No de lote para este artículo, déjelo en blanco. Nota: esta configuración tendrá prioridad sobre el Prefijo de denominación de serie en Configuración de stock.", +Example: Serial No {0} reserved in {1}.,Ejemplo: Número de serie {0} reservado en {1}., +Excess Materials Consumed,Exceso de materiales consumidos, +Excess Transfer,Exceso de transferencia, +Exchange Gain Or Loss,Ganancias o pérdidas por cambio de divisas, +Exchange Gain/Loss amount has been booked through {0},El importe de las ganancias/pérdidas de cambio se ha contabilizado a través de {0}., +Exchange Rate Revaluation Settings,Configuración de revaluación del tipo de cambio, +Excluded DocTypes,DocTipes excluidos, +Exempt Supplies,Suministros exentos, +Expected,Esperado, +Expected Balance Qty,Balance esperado, +Expected End Date should be less than or equal to parent task's Expected End Date {0}.,La fecha de finalización esperada debe ser menor o igual a la fecha de finalización esperada de la tarea principal {0}., +Expected Stock Value,Valor esperado de stock, +Expected Time Required (In Mins),Tiempo previsto necesario (en minutos), +Expiry,Expiración, +Export Data,Exportar Datos, +Export Errored Rows,Exportar filas con errores, +Export Import Log,Exportar registro de importación, +Extra Consumed Qty,Cantidad extra consumida, +Extra Job Card Quantity,Cantidad de tarjetas de trabajo adicionales, +FIFO Queue vs Qty After Transaction Comparison,Comparación entre cola FIFO y cantidad después de la transacción, +"FIFO Stock Queue (qty, rate)","Cola de existencias FIFO (cantidad, tasa)", +FIFO/LIFO Queue,Cola FIFO/LIFO, +Failed Entries,Entradas fallidas, +"Failed to erase demo data, please delete the demo company manually.","Fallo al borrar los datos de demostración, por favor borre la empresa de demostración manualmente.", +Failed to post depreciation entries,Fallo al contabilizar las entradas de depreciación, +Failed to setup defaults for country {0}. Please contact support.,Fallo al configurar los valores predeterminados para el país {0}. Póngase en contacto con el servicio de asistencia., +Failure,Fracaso, +Failure Description,Descripción del fallo, +Fetch Based On,Obtener Basado en, +Fetch Overdue Payments,Recuperar pagos atrasados, +Fetch Timesheet,Obtener Hoja de Tiempo, +Fetch Value From,Obtener valor de, +Fetching exchange rates ...,Obteniendo tipos de cambio..., +Filter by Reference Date,Filtrar por Fecha de Referencia, +Filter on Invoice,Filtrar en factura, +Filter on Payment,Filtrar en el pago, +Filters missing,Faltan filtros, +Final Product,Producto final, +Financial Ratios,Índices financieros, +Financial Reports,Informes Financieros, +Financial Year Begins On,El año fiscal comienza el, +Financial reports will be generated using GL Entry doctypes (should be enabled if Period Closing Voucher is not posted for all years sequentially or missing) ,Los informes financieros se generarán utilizando los doctypes de entrada GL (debe activarse si el Comprobante de Cierre de Período no se contabiliza para todos los años secuencialmente o faltantes) , +Finished Good BOM,Lista de materiales de productos terminados, +Finished Good Item,Artículo de Producto Terminado, +Finished Good Item Qty,Producto acabado Cantidad, +Finished Good Item Quantity,Producto acabado Cantidad, +Finished Good Item is not specified for service item {0},Artículo de producto terminado no especificado para artículo de servicio {0}, +Finished Good Item {0} Qty can not be zero,Producto terminado Artículo {0} La cantidad no puede ser cero, +Finished Good Item {0} must be a sub-contracted item,El artículo terminado {0} debe ser un artículo subcontratado, +Finished Good Qty,Cantidad de producto acabado, +Finished Good Quantity ,Cantidad de producto acabado , +Finished Good UOM,Producto acabado UdM, +Finished Good {0} does not have a default BOM.,El Producto acabado {0} no tiene una lista de materiales predeterminada., +Finished Good {0} is disabled.,El Producto acabado {0} está deshabilitado., +Finished Good {0} must be a stock item.,El Producto acabado {0} debe ser un artículo de stock., +Finished Good {0} must be a sub-contracted item.,El producto terminado {0} debe ser un artículo subcontratado., +Finished Goods Based Operating Cost,Coste de explotación basado en los productos acabados, +Finished Goods Item,Producto acabado, +Finished Goods Reference,Productos acabados Referencia, +Finished Goods Value,Valor de los productos acabados, +Finished Goods based Operating Cost,Coste de explotación basado en los productos acabados, +Finished Item {0} does not match with Work Order {1},Artículo terminado {0} no coincide con la orden de trabajo {1}, +First Response Due,Primera respuesta pendiente, +First Response SLA Failed by {},El primer acuerdo de nivel de servicio de respuesta falló por {}, +Fixed Asset Defaults,Cuenta de activo fijo predeterminada, +Fixed Time,Tiempo fijo, +Floor,Piso, +Floor Name,Nombre del Piso, +For Item,Para artículo, +For Item {0} cannot be received more than {1} qty against the {2} {3},Para el artículo {0} no se puede recibir más de {1} cantidad contra {2} {3}, +For Job Card,Para tarjeta de trabajo, +For Operation,Para operaciones, +"For Return Invoices with Stock effect, '0' qty Items are not allowed. Following rows are affected: {0}","Para las Facturas de Devolución con efecto de Stock, no se permiten artículos de cant. '0'. Se ven afectadas las siguientes líneas: {0}", +For Work Order,Para Orden de Trabajo, +For dunning fee and interest,Por gastos de reclamación e intereses, +"For item {0}, rate must be a positive number. To Allow negative rates, enable {1} in {2}","Para el producto {0}, el precio debe ser un número positivo. Para permitir precios negativos, habilite {1} en {2}", +For quantity {0} should not be greater than allowed quantity {1},Para la cantidad {0} no debe ser mayor que la cantidad permitida {1}, +"For the item {0}, the quantity should be {1} according to the BOM {2}.","Para el artículo {0}, la cantidad debe ser {1} según la lista de materiales {2}.", +"For the {0}, no stock is available for the return in the warehouse {1}.","Para la {0}, no hay existencias disponibles para la devolución en el almacén {1}.", +"For the {0}, the quantity is required to make the return entry","Para el {0}, se requiere la cantidad para realizar la entrada de devolución", +Force-Fetch Subscription Updates,Actualizaciones forzadas de suscripciones, +Forecasting,Previsión, +Formula Based Criteria,Criterios basados en fórmulas, +Free Item Rate,Tarifa de artículo libre, +From Corrective Job Card,De la ficha de trabajo correctiva, +From Date and To Date are mandatory,Desde la fecha y hasta la fecha son obligatorios, +From Date is mandatory,Desde Fecha es obligatorio, +From Date: {0} cannot be greater than To date: {1},Desde la fecha: {0} no puede ser mayor que Hasta la fecha: {1}, +From Delivery Date,Desde la fecha de entrega, +From Doctype,Desde DocType, +From Due Date,Desde la fecha de vencimiento, +From Opportunity,Desde Oportunidad, +From Payment Date,Desde la fecha de pago, +From Prospect,Desde Prospecto, +From Reference Date,Desde la fecha de referencia, +From Voucher Detail No,Desde el número de detalle del comprobante, +From Voucher No,Del número de comprobante, +From Voucher Type,Desde el tipo de comprobante, +From and To dates are required,Las fechas desde y hasta son obligatorias, +Full and Final Statement,Declaración completa y definitiva, +GL Balance,Balance GL, +GL Entry Processing Status,Estado de procesamiento de la entrada GL, +GL reposting index,Índice de traspaso GL, +Gain/Loss accumulated in foreign currency account. Accounts with '0' balance in either Base or Account currency,Ganancia/pérdida acumulada en cuenta en moneda extranjera. Cuentas con saldo “0” en moneda base o de cuenta, +Gain/Loss already booked,Ganancias/pérdidas ya contabilizadas, +Gain/Loss from Revaluation,Ganancias/pérdidas por revalorización, +General Ledger,Balance general,Warehouse +General and Payment Ledger Comparison,Comparación de los libros mayor y de pagos, +General and Payment Ledger mismatch,Desajuste entre el Libro Mayor y el Libro de Pagos, +Generate Closing Stock Balance,Generar balance de cierre de stock, +Generate Demo Data for Exploration,Generar datos de demostración para la exploración, +Generate E-Invoice,Generar E-Factura, +Generate Invoice At,Generar factura el, +Generated,Generado, +Generating Preview,Generando vista previa, +Get Allocations,Obtener Asignaciones, +Get Customer Group Details,Obtener Detalles del Grupo de Clientes, +Get Finished Goods for Manufacture,Obtener productos acabados para su fabricación, +Get Outstanding Orders,Obtener pedidos pendientes, +Get Raw Materials Cost from Consumption Entry,Obtenga el coste de las materias primas a partir de la entrada de consumo, +Get Raw Materials for Purchase,Obtener materias primas para comprar, +Get Raw Materials for Transfer,Obtener materias primas para el traslado, +Get Scrap Items,Obtener artículos de desecho, +Get Stock,Obtener existencias, +Get Sub Assembly Items,Obtener artículos de subensamblaje, +Get Supplier Group Details,Obtener detalles del grupo de proveedores, +Get Timesheets,Obtener Hojas de Tiempo, +Get stops from,Obtener paradas de, +Getting Scrap Items,Obtener artículos de desecho, +Give free item for every N quantity,Regale un artículo gratis por cada cantidad N, +Go back,Volver, +Go to {0} List,Ir a la lista {0}, +Goals,Objetivos, +Goods,Mercancías, +Grant Commission,Conceder Comisión, +Greeting Message,Mensaje de saludo, +Gross Profit Percent,Porcentaje de beneficio bruto, +Gross Purchase Amount Too Low: {0} cannot be depreciated over {1} cycles with a frequency of {2} depreciations.,Importe bruto de compra demasiado bajo: {0} no puede amortizarse a lo largo de {1} ciclos con una frecuencia de {2} amortizaciones., +Gross Purchase Amount should be equal to purchase amount of one single Asset.,El monto bruto de compra debe ser igual a al monto de compra de un solo activo., +Group Same Items,Agrupar mismos artículos, +Growth View,Vista de Crecimiento, +Half-yearly,Medio año, +Handle Employee Advances,Gestionar los anticipos de los empleados, +Has Alternative Item,Tiene Ítem Alternativo, +Has Item Scanned,Tiene artículos escaneados, +Has Priority,Tiene prioridad, +Have Default Naming Series for Batch ID?,¿Dispone de series de nombres por defecto para el ID de lote?, +Heatmap,Mapa de calor, +Height (cm),Altura (cm), +"Hello,","Hola,", +Helps you distribute the Budget/Target across months if you have seasonality in your business.,Le ayuda a distribuir el Presupuesto/Objetivo a lo largo de los meses si tiene estacionalidad en su negocio., +Here are the error logs for the aforementioned failed depreciation entries: {0},A continuación se muestran los registros de errores de las entradas de depreciación fallidas mencionadas anteriormente: {0}, +Here are the options to proceed:,Estas son las opciones para proceder:, +"Here, you can select a senior of this Employee. Based on this, Organization Chart will be populated.","Aquí puede seleccionar un superior de este Empleado. Basándose en esto, se rellenará el Organigrama.", +"Here, your weekly offs are pre-populated based on the previous selections. You can add more rows to also add public and national holidays individually.","Aquí, los días libres semanales se rellenan previamente en función de las selecciones anteriores. Puede agregar más filas para agregar también días festivos públicos y nacionales de forma individual.", +"Hi,","Hola,", +Hide Images,Ocultar Imágenes, +Holiday Date {0} added multiple times,Fecha de vacaciones {0} añadida varias veces, +Hours Spent,Horas Dedicadas, +How often should Project be updated of Total Purchase Cost ?,¿Con qué frecuencia debe actualizarse el proyecto del coste total de compra?, +Idle,Inactivo, +"If Enabled - Reconciliation happens on the Advance Payment posting date
+If Disabled - Reconciliation happens on oldest of 2 Dates: Invoice Date or the Advance Payment posting date
+","Si está habilitado : la conciliación se realiza en la fecha de contabilización del pago por adelantado
+Si está deshabilitado : la conciliación se realiza en la fecha más antigua de las 2 fechas: fecha de factura o la fecha de contabilización del pago por adelantado
+", +"If an operation is divided into sub operations, they can be added here.","Si una operación se divide en suboperaciones, éstas pueden añadirse aquí.", +"If checked, Rejected Quantity will be included while making Purchase Invoice from Purchase Receipt.","Si se marca, la Cantidad Rechazada se incluirá al hacer la Factura de Compra a partir del Recibo de Compra.", +"If checked, Stock will be reserved on Submit","Si está marcado, se reservarán las existencias al Validar", +"If checked, picked qty won't automatically be fulfilled on submit of pick list.","Si se marca, la cantidad seleccionada no se completará automáticamente al validar la lista de selección.", +"If checked, the tax amount will be considered as already included in the Paid Amount in Payment Entry","Si está marcada, el importe del impuesto se considerará ya incluido en el Importe pagado en la Entrada de pago", +"If checked, we will create demo data for you to explore the system. This demo data can be erased later.","Si está marcada, crearemos datos de demostración para que explore el sistema. Estos datos de demostración pueden borrarse posteriormente.", +If enabled then system will manufacture Sub-assembly against the Job Card (operation).,"Si se activa, el sistema fabricará el subconjunto según la tarjeta de trabajo (operación).", +If enabled then system won't apply the pricing rule on the delivery note which will be create from the pick list,"Si se activa, el sistema no aplicará la regla de precios en el albarán que se creará a partir de la lista de selección.", +If enabled then system won't override the picked qty / batches / serial numbers.,"Si se activa, el sistema no anulará las cantidades / lotes / números de serie elegidos.", +"If enabled, a print of this document will be attached to each email","Si está habilitado, se adjuntará una impresión de este documento a cada correo electrónico", +"If enabled, additional ledger entries will be made for discounts in a separate Discount Account","Si está habilitado, se realizarán entradas contables adicionales para descuentos en una cuenta de descuento separada", +"If enabled, all files attached to this document will be attached to each email","Si está habilitado, todos los archivos adjuntos a este documento se adjuntarán a cada correo electrónico.", +"If enabled, do not update serial / batch values in the stock transactions on creation of auto Serial + / Batch Bundle. ","Si está habilitado, no actualice los valores de serie/lote en las transacciones de stock al crear automáticamente el paquete de serie + /lote. ", +"If enabled, ledger entries will be posted for change amount in POS transactions","Si se activa, se contabilizarán las entradas en el libro mayor para el importe de cambio en las transacciones de TPV", +"If enabled, the consolidated invoices will have rounded total disabled","Si se activa, las facturas consolidadas tendrán el total redondeado desactivado", +"If enabled, the item rate won't adjust to the valuation rate during internal transfers, but accounting will still use the valuation rate.","Si está activada, la tasa del artículo no se ajustará a la tasa de valoración durante las transferencias internas, pero la contabilidad seguirá utilizando la tasa de valoración.", +"If enabled, the system will create material requests even if the stock exists in the 'Raw Materials Warehouse'.","Si se activa, el sistema creará solicitudes de material aunque haya existencias en el ""Almacén de materias primas"".", +"If enabled, the system will use the moving average valuation method to calculate the valuation rate for the batched items and will not consider the individual batch-wise incoming rate.","Si se activa, el sistema utilizará el método de valoración media móvil para calcular la tasa de valoración de los artículos por lotes y no tendrá en cuenta la tasa de entrada individual por lotes.", +"If enabled, then system will only validate the pricing rule and not apply automatically. User has to manually set the discount percentage / margin / free items to validate the pricing rule","Si está activada, el sistema sólo validará la regla de precios y no la aplicará automáticamente. El usuario debe establecer manualmente el porcentaje de descuento / margen / artículos gratuitos para validar la regla de precios.", +"If mentioned, the system will allow only the users with this Role to create or modify any stock transaction earlier than the latest stock transaction for a specific item and warehouse. If set as blank, it allows all users to create/edit back-dated transactions.","Si se menciona, el sistema permitirá sólo a los usuarios con este Rol crear o modificar cualquier transacción de existencias anterior a la última transacción de existencias para un artículo y almacén específicos. Si se establece en blanco, permite a todos los usuarios crear/editar transacciones con fecha anterior.", +"If not, you can Cancel / Submit this entry","En caso contrario, puedes Cancelar/Validar esta entrada", +"If rate is zero then item will be treated as ""Free Item""","Si la tarifa es cero, el artículo se tratará como ""Artículo gratuito"".", +"If the BOM results in Scrap material, the Scrap Warehouse needs to be selected.","Si la lista de materiales arroja como resultado material de desecho, se debe seleccionar el almacén de desecho.", +"If the selected BOM has Operations mentioned in it, the system will fetch all Operations from BOM, these values can be changed.","Si la lista de materiales seleccionada tiene Operaciones mencionadas en ella, el sistema obtendrá todas las Operaciones de la lista de materiales, estos valores pueden modificarse.", +"If this checkbox is enabled, then the system won’t run the MRP for the available sub-assembly items.","Si esta casilla de verificación está activada, el sistema no ejecutará la planificación de necesidades para los artículos de subensamblaje disponibles.", +If this is undesirable please cancel the corresponding Payment Entry.,"Si no lo desea, anule el asiento de pago correspondiente.", +"If yes, then this warehouse will be used to store rejected materials","En caso afirmativo, este almacén se utilizará para almacenar los materiales rechazados", +"If you are maintaining stock of this Item in your Inventory, ERPNext will make a stock ledger entry for each transaction of this item.","Si mantiene existencias de este artículo en su inventario, ERPNext realizará una entrada en el libro de existencias para cada transacción de este artículo.", +"If you need to reconcile particular transactions against each other, then please select accordingly. If not, all the transactions will be allocated in FIFO order.","Si necesita conciliar transacciones específicas entre sí, seleccione la opción correspondiente. De lo contrario, todas las transacciones se asignarán en orden FIFO.", +"If you still want to proceed, please disable 'Skip Available Sub Assembly Items' checkbox.","Si aún así desea continuar, desactive la casilla 'Omitir elementos de subensamblaje disponibles'.", +"If you still want to proceed, please enable {0}.","Si aún desea continuar, habilite {0}.", +"If your CSV uses a different delimiter, add that character here, ensuring no spaces or additional characters are included.","Si su CSV utiliza un delimitador diferente, añada ese carácter aquí, asegurándose de no incluir espacios ni caracteres adicionales.", +Ignore Account Closing Balance,Ignorar el saldo de cierre de la cuenta, +Ignore Available Stock,Ignorar stock disponible, +Ignore Closing Balance,Ignorar el saldo de cierre, +Ignore Default Payment Terms Template,Ignorar Plantilla de Términos de Pago Predeterminado, +Ignore Empty Stock,Ignorar Stock Vacío, +Ignore Exchange Rate Revaluation Journals,Ignorar los Diarios de Revaluación del Tipo de Cambio, +Ignore Pricing Rule is enabled. Cannot apply coupon code.,La opción Ignorar regla de precios está habilitada. No se puede aplicar el código de cupón., +Ignore System Generated Credit / Debit Notes,Ignorar las notas de crédito / débito generadas por el sistema, +Ignore Voucher Type filter and Select Vouchers Manually,Ignorar el filtro de tipo de cupón y seleccionar cupones manualmente, +Impairment,Deteriorado, +Import File,Importar archivo, +Import File Errors and Warnings,Importar errores y advertencias de archivos, +Import Log Preview,Vista previa de registro de importación, +Import Preview,Vista previa de importación, +Import Progress,Progreso de importación, +Import Type,Tipo de importación, +Import Using CSV file,Importación mediante archivo CSV, +Import Warnings,Advertencias de importación, +Import from Google Sheets,Importar desde Google Sheets, +"Importing {0} of {1}, {2}","Importar {0} de {1}, {2}", +In House,En casa, +In Minutes,En Minutos, +In Party Currency,En moneda del individuo, +In Transit Transfer,Transferencia en tránsito, +In Transit Warehouse,Almacén en Tránsito, +In mins,En minutos, +"In row {0} of Appointment Booking Slots: ""To Time"" must be later than ""From Time"".","En la fila {0} de las franjas horarias de reserva de citas: ""Hora de llegada"" debe ser posterior a ""Hora de salida"".", +"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.","En el caso de ""Utilizar lista de materiales multi-nivel"" en una orden de trabajo, si el usuario desea añadir costes de subconjuntos a los artículos de productos acabados sin utilizar una ficha de trabajo, así como a los artículos de desecho, deberá activar esta opción.", +"In this section, you can define Company-wide transaction-related defaults for this Item. Eg. Default Warehouse, Default Price List, Supplier, etc.","En esta sección, puede definir los valores predeterminados relacionados con las transacciones de toda la empresa para este Artículo. Por ejemplo, Almacén por defecto, Lista de precios por defecto, Proveedor, etc.", +Inactive Status,Estado inactivo, +Include Account Currency,Incluir la divisa de la cuenta, +Include Closed Orders,Incluye Pedidos Cerrados, +Include Default FB Assets,Incluir activos FB por defecto, +Include Disabled,Incluye Deshabilitado, +Include Expired Batches,Incluir lotes caducados, +Include Safety Stock in Required Qty Calculation,Incluir stock de seguridad en el cálculo de cantidad requerida, +Include Timesheets in Draft Status,Incluir hojas de horas en estado borrador, +Include Zero Stock Items,Incluir Productos sin existencias, +Incoming Call Handling Schedule,Programa de gestión de llamadas entrantes, +Incoming Call Settings,Configuración de llamadas entrantes, +Incoming Rate (Costing),Tarifa de entrada (costo), +Incorrect Balance Qty After Transaction,Cantidad de saldo incorrecta tras la transacción, +Incorrect Batch Consumed,Lote incorrecto consumido, +Incorrect Check in (group) Warehouse for Reorder,Comprobación incorrecta en (grupo) Almacén para Reordenar, +Incorrect Component Quantity,Cantidad incorrecta de componentes, +Incorrect Invoice,Factura incorrecta, +Incorrect Movement Purpose,Movimiento incorrecto Propósito, +Incorrect Payment Type,Tipo de pago incorrecto, +Incorrect Reference Document (Purchase Receipt Item),Documento de referencia incorrecto (partida de recibo de compra), +Incorrect Serial No Valuation,Valoración incorrecta del número de serie, +Incorrect Serial Number Consumed,Número de serie incorrecto Consumido, +Incorrect Stock Value Report,Informe incorrecto sobre el valor de las existencias, +Incorrect Type of Transaction,Tipo de transacción incorrecto, +Increase In Asset Life(Months),Aumento de la vida útil del activo (meses), +Indent,Sangría, +Indirect Expense,Gastos Indirectos, +Individual GL Entry cannot be cancelled.,La inscripción GL individual no puede cancelarse., +Individual Stock Ledger Entry cannot be cancelled.,La entrada individual en el Libro Mayor no puede cancelarse., +Initialize Summary Table,Inicializar tabla resumen, +Insert New Records,Insertar nuevos registros, +Inspection Rejected,Inspección Rechazada, +Inspection Submission,Presentación de la inspección, +Instruction,Instrucción, +Insufficient Capacity,Capacidad Insuficiente, +Insufficient Stock for Batch,Stock insuficiente para el lote, +Inter Transfer Reference,Referencia de inter transferencia, +Interest and/or dunning fee,Intereses y/o gastos de reclamación, +Internal,Interno, +Internal Customer,Cliente Interno, +Internal Customer for company {0} already exists,Cliente Interno para empresa {0} ya existe, +Internal Sale or Delivery Reference missing.,Falta referencia de venta o entrega interna., +Internal Sales Reference Missing,Falta la referencia de ventas internas, +Internal Supplier,Proveedor Interno, +Internal Supplier for company {0} already exists,El Proveedor Interno de la compañía {0} ya existe, +Internal Transfer Reference Missing,Falta referencia de transferencia interna, +Internal Transfers,Transferencias Internas, +Internal transfers can only be done in company's default currency,Las transferencias internas solo se pueden realizar en la moneda predeterminada de la empresa., +Invalid,Inválido, +Invalid Allocated Amount,Importe asignado no válido, +Invalid Amount,Importe no válido, +Invalid Auto Repeat Date,Fecha de repetición automática inválida, +Invalid Cost Center,Centro de Costo Inválido, +Invalid Delivery Date,Fecha de Entrega Inválida, +Invalid Document,Documento inválido, +Invalid Document Type,Tipo de Documento Inválido, +Invalid Formula,Fórmula Inválida, +Invalid Group By,Agrupar por no válido, +Invalid Item Defaults,Artículos por defecto no válidos, +Invalid Ledger Entries,Entradas no válidas en el libro mayor, +Invalid Primary Role,Función principal no válida, +Invalid Priority,Prioridad inválida, +Invalid Process Loss Configuration,Configuración de pérdida de proceso no válida, +Invalid Purchase Invoice,Factura de Compra no válida, +Invalid Qty,Cant. inválida, +Invalid Schedule,Programación no válida, +Invalid Serial and Batch Bundle,Paquete de serie y lote no válidos, +Invalid Warehouse,Almacén inválido, +Invalid result key. Response:,Clave de resultado no válida. Respuesta:, +Invalid value {0} for {1} against account {2},Valor no válido {0} para {1} contra la cuenta {2}, +Inventory Dimension,Dimensión del inventario, +Inventory Dimension Negative Stock,Dimensión del inventario Existencias negativas, +Inventory Settings,Configuración de Inventario, +Invoice Cancellation,Cancelación de facturas, +Invoice Limit,Límite de facturación, +Invoice Portion (%),Porción de Factura (%), +Invoice and Billing,Factura y facturación, +Invoiced Qty,Cant. Facturada, +Invoices and Payments have been Fetched and Allocated,Se han obtenido y asignado facturas y pagos, +Invoicing Features,Características de Facturación, +Is Adjustment Entry,Es entrada de ajuste, +Is Alternative,Es Alternativo, +Is Cash or Non Trade Discount,Es Efectivo o Descuento no Comercial, +Is Composite Asset,Es Activo compuesto, +Is Corrective Job Card,Es Tarjeta de Trabajo Correctiva, +Is Corrective Operation,Es Operación Correctiva, +Is Expandable,Es expansible, +Is Finished Item,Es un artículo acabado, +Is Fully Depreciated,Está completamente Depreciado, +Is Group Warehouse,Es Almacén de Grupo, +Is Old Subcontracting Flow,Es un antiguo flujo de subcontratación, +Is Outward,Es hacia afuera, +Is Period Closing Voucher Entry,Es la entrada de comprobante de cierre de período, +Is Rate Adjustment Entry (Debit Note),Es Entrada de Ajuste de Tarifa (Nota de Débito), +Is Recursive,Es recursivo, +Is Rejected,Rechazado, +Is Rejected Warehouse,Es Almacén de Rechazados, +Is Scrap Item,Es artículo de desecho, +Is Short Year,Es Año corto, +Is Standard,Es estándar, +Is Stock Item,Es artículo de stock, +Is System Generated,Es generado por el sistema, +Is Tax Withholding Account,Es una cuenta de retención de impuestos, +Is Template,Es Plantilla, +Issue Analytics,Análisis de Incidencias, +Issue Summary,Resumen de Incidencias, +Issue a debit note with 0 qty against an existing Sales Invoice,Emitir una Nota de Débito con cantidad 0 contra una Factura de Venta existente, +Issuing cannot be done to a location. Please enter employee to issue the Asset {0} to,No se puede emitir a una ubicación. Ingrese el empleado al que se emitirá el activo {0}, +It can take upto few hours for accurate stock values to be visible after merging items.,Pueden pasar algunas horas hasta que los valores de stock precisos sean visibles después de fusionar los elementos., +"It's not possible to distribute charges equally when total amount is zero, please set 'Distribute Charges Based On' as 'Quantity'","No es posible distribuir los cargos equitativamente cuando el importe total es cero, por favor configure 'Distribuir cargos en base a' como 'Cantidad'.", +Item Code (Final Product),Código de artículo (producto final), +Item Group wise Discount,Descuento por grupo de artículos, +Item Price Settings,Configuración del precio del artículo, +"Item Price appears multiple times based on Price List, Supplier/Customer, Currency, Item, Batch, UOM, Qty, and Dates.","El precio del producto aparece varias veces según la lista de precios, proveedor/cliente, moneda, producto, lote, unidad de medida, cantidad y fechas.", +Item Reference,Referencia del artículo, +Item Warehouse based reposting has been enabled.,Se ha habilitado el traspaso basado en el almacén de artículos., +Item and Warehouse,Producto y Almacén, +Item is removed since no serial / batch no selected.,El artículo se elimina al no haberse seleccionado ningún número de serie / lote., +Item qty can not be updated as raw materials are already processed.,La cantidad de artículos no puede actualizarse porque las materias primas ya están procesadas., +Item rate has been updated to zero as Allow Zero Valuation Rate is checked for item {0},La tasa del artículo se ha actualizado a cero ya que la opción Permitir tasa de valoración cero está marcada para el artículo {0}, +Item valuation reposting in progress. Report might show incorrect item valuation.,Traspaso de valoración de artículos en curso. El informe podría mostrar una valoración de artículos incorrecta., +Item {0} cannot be added as a sub-assembly of itself,El artículo {0} no puede añadirse como subconjunto de sí mismo, +Item {0} cannot be ordered more than {1} against Blanket Order {2}.,El artículo {0} no se puede pedir más de {1} contra el pedido general {2}., +Item {0} does not exist.,El artículo {0} no existe., +Item {0} entered multiple times.,Producto {0} ingresado varias veces., +Item {0} is already reserved/delivered against Sales Order {1}.,El artículo {0} ya está reservado/entregado contra el pedido de venta {1}., +Item {0} must be a Non-Stock Item,El artículo {0} debe ser un artículo que no se encuentra en stock, +Item {0} not found in 'Raw Materials Supplied' table in {1} {2},El artículo {0} no se encontró en la tabla 'Materias primas suministradas' en {1} {2}, +Item {0} not found.,Artículo {0} no encontrado., +Item {} does not exist.,Producto {0} no existe., +Items & Pricing,Productos y Precios, +Items Catalogue,Catálogo de Productos, +Items cannot be updated as Subcontracting Order is created against the Purchase Order {0}.,Los artículos no se pueden actualizar ya que la orden de subcontratación se crea contra la orden de compra {0}., +Items rate has been updated to zero as Allow Zero Valuation Rate is checked for the following items: {0},"La tasa de artículos se ha actualizado a cero, ya que la opción Permitir tasa de valoración cero está marcada para los siguientes artículos: {0}", +Items to Be Repost,Artículos a reenviar, +Items to Order and Receive,Productos para Ordenar y Recibir, +Items to Reserve,Artículos para reservar, +Items {0} do not exist in the Item master.,Los artículos {0} no existen en el maestro de artículos., +Job Capacity,Capacidad de Trabajo, +Job Card Operation,Ficha de trabajo Operación, +Job Card Scheduled Time,Ficha de trabajo Hora programada, +Job Card Scrap Item,Ficha de trabajo Artículo de desecho, +Job Card and Capacity Planning,Tarjeta de trabajo y planificación de capacidad, +Job Cards,Tarjetas de Trabajo, +Job Paused,Trabajo en pausa, +Job Worker,Trabajador, +Job Worker Address,Dirección del trabajador, +Job Worker Address Details,Datos de la dirección del trabajador, +Job Worker Contact,Contacto del trabajador, +Job Worker Delivery Note,Albarán del trabajador, +Job Worker Name,Nombre del trabajador, +Job Worker Warehouse,Trabajador de almacén, +Job: {0} has been triggered for processing failed transactions,Trabajo: {0} se ha activado para procesar transacciones fallidas, +Joining,Uniéndose, +Journal Entries,Entradas de diario, +Journal Entry for Asset scrapping cannot be cancelled. Please restore the Asset.,No se puede cancelar la entrada del diario correspondiente al desguace de activos. Restaure el activo., +Journal Entry type should be set as Depreciation Entry for asset depreciation,El tipo de entrada de diario debe configurarse como Entrada de depreciación para la depreciación de activos., +Journal entries have been created,Se han creado entradas de diario, +Journals,Diarios, +Key,Clave, +Kindly cancel the Manufacturing Entries first against the work order {0}.,Por favor cancele primero las entradas de fabricación contra la orden de trabajo {0}., +"Last Name, Email or Phone/Mobile of the user are mandatory to continue.","Apellido, Email o Teléfono/Móvil del usuario son obligatorios para continuar.", +Lead -> Prospect,Cliente potencial -> Prospecto, +Lead Conversion Time,Tiempo de conversión de clientes potenciales, +Lead Owner cannot be same as the Lead Email Address,El propietario del cliente potencial no puede ser el mismo que la dirección de correo electrónico del cliente potencial, +Lead {0} has been added to prospect {1}.,El cliente potencial {0} se ha agregado al prospecto {1}., +Leaderboard,Tabla de líderes, +Leads,Clientes potenciales, +Learn Accounting,Aprender Contabilidad, +Learn Inventory Management,Aprende la Gestión del Inventario, +Learn Manufacturing,Aprender Manufactura, +Learn Procurement,Aprender Compras, +Learn Project Management,Aprender Gestión de Proyecto, +Learn Sales Management,Aprender Gestión de Ventas, +"Learn about Common Party","Conozca más sobre Partes comúnes", +"Leave blank for home. +This is relative to site URL, for example ""about"" will redirect to ""https://yoursitename.com/about""","Déjelo en blanco para la página de inicio. +Esto es relativo a la URL del sitio, por ejemplo ""acerca de"" redirigirá a ""https://yoursitename.com/about""", +Ledger Health,Estado del libro mayor, +Ledger Health Monitor,Monitor de estado del libro mayor, +Ledger Health Monitor Company,Monitor de estado del libro mayor Empresa, +Ledger Merge,Fusión de libro mayor, +Ledger Merge Accounts,Cuentas de fusión de libro mayor, +Ledgers,Libros mayores, +Left Child,Secundario izquierdo, +Legend,Leyenda, +Length,Largo, +Length (cm),Longitud (cm), +Less than 12 months.,Menos de 12 meses., +Level (BOM),Nivel (lista de materiales), +Limit timeslot for Stock Reposting,Limitar el tiempo disponible para la reubicación de existencias, +Limits don't apply on,Los límites no se aplican en, +Link a new bank account,Vincular una nueva cuenta bancaria, +Link with Customer,Enlace con el cliente, +Link with Supplier,Enlace con el proveedor, +Linked with submitted documents,Vinculado con los documentos validados, +Linking Failed,Enlace fallido, +Linking to Customer Failed. Please try again.,Error al vincular al cliente. Inténtalo de nuevo., +Linking to Supplier Failed. Please try again.,Error al vincular al proveedor. Inténtalo nuevamente., +Links,Enlaces, +Loading import file...,Cargando archivo de importación..., +Locked,Bloqueado, +Log Entries,Entradas de registro, +Log the selling and buying rate of an Item,Registra la tasa de venta y compra de un artículo, +Lost Quotations,Cotizaciones perdidas, +Lost Quotations %,Cotizaciones perdidas %, +Lost Reasons are required in case opportunity is Lost.,Se requieren motivos de pérdida en caso de que se pierda la oportunidad., +Lost Value,Valor perdido, +Lost Value %,% de valor perdido, +Machine Type,Tipo de Máquina, +Main Cost Center,Centro de Costo principal, +Main Cost Center {0} cannot be entered in the child table,El centro de costo principal {0} no se puede ingresar en la tabla secundaria, +Maintain Asset,Mantener activos, +Maintenance Details,Detalles de mantenimiento, +Make ,Crear , +Make Asset Movement,Realizar movimiento de activos, +Make Quotation,Hacer Cotización, +Make Return Entry,Hacer Entrada de Devolución, +Make Serial No / Batch from Work Order,Crear número de serie/lote a partir de la orden de trabajo, +Make {0} Variant,Hacer {0} variante, +Make {0} Variants,Hacer {0} variantes, +Making Journal Entries against advance accounts: {0} is not recommended. These Journals won't be available for Reconciliation.,No se recomienda realizar asientos contables contra cuentas anticipadas: {0} . Estos asientos contables no estarán disponibles para la conciliación., +Manage,Gestionar, +Mandatory Accounting Dimension,Dimensión contable obligatoria, +Mandatory Depends On,Obligatorio depende de, +Mandatory Field,Campo obligatorio, +Mandatory Section,Sección obligatoria, +Manual Inspection,Inspección Manual, +Manufacture Sub-assembly in Operation,Subensamblaje de Manufactura en Operación, +Manufacturing Type,Tipo de fabricación, +Mapping Purchase Receipt ...,Mapeando Recibo de Compra..., +Mapping Subcontracting Order ...,Mapeando órdenes de subcontratación..., +Mapping {0} ...,Mapeando {0} ..., +Margin View,Vista de Margen, +Mark As Closed,Marcar como cerrado, +Material Returned from WIP,Material devuelto de WIP, +Material Transfer (In Transit),Transferencia de material (en tránsito), +Materials are already received against the {0} {1},Los materiales ya se recibieron contra el {0} {1}, +Materials needs to be transferred to the work in progress warehouse for the job card {0},Es necesario transferir los materiales al almacén de trabajos en curso para la ficha de trabajo {0}, +Max Qty (As Per Stock UOM),Cantidad máxima (según unidad de medida en existencia), +Maximum Net Rate,Tasa Neta Máxima, +Maximum Payment Amount,Importe máximo del pago, +Maximum Value,Valor Máximo, +Maximum quantity scanned for item {0}.,Cantidad máxima escaneada para el artículo {0}., +Meeting,Reunión, +Mention if non-standard Receivable account,Indique si no es Cuenta por Cobrar estándar, +Merge Invoices Based On,Fusionar facturas en función de, +Merge Progress,Progreso de fusión, +Merge Similar Account Heads,Fusionar cuentas similares, +Merge taxes from multiple documents,Fusionar impuestos de varios documentos, +Merged,Combinado, +"Merging is only possible if following properties are same in both records. Is Group, Root Type, Company and Account Currency","La fusión solo es posible si las siguientes propiedades son las mismas en ambos registros: grupo, tipo de raíz, empresa y moneda de la cuenta.", +Merging {0} of {1},Fusionando {0} de {1}, +Min Qty (As Per Stock UOM),Cant. mín. (según UdM en almacén), +Min Qty should be greater than Recurse Over Qty,La cantidad mínima debe ser mayor que la cantidad recursiva, +Minimum Net Rate,Tasa Neta Mínima, +Minimum Payment Amount,Importe mínimo de pago, +Minimum Value,Valor mínimo, +Mismatch,Desajuste, +Missing,Faltante, +Missing Asset,Activo faltante, +Missing Cost Center,Centro de costos faltante, +Missing Finance Book,Falta el libro de finanzas, +Missing Finished Good,Falta Acabado Bueno, +Missing Formula,Falta fórmula, +Missing Items,Faltan artículos, +Missing Payments App,Aplicación de pagos faltantes, +Missing Serial No Bundle,Falta el número de serie del paquete, +Missing value,Valor faltante, +Modified By,Modificado por, +Modified On,Modificado el, +Module Settings,Configuración de Módulos, +Monitor for Last 'X' days,"Monitorización de los últimos ""X"" días", +Move Stock,Mover Stock, +Move to Cart,Mover al carrito, +Movement,Movimiento, +Moving up in tree ...,Subiendo en árbol ..., +Multi-level BOM Creator,Creador de listas de materiales multinivel, +Multiple Loyalty Programs found for Customer {}. Please select manually.,Se encontraron varios programas de fidelización para el cliente {}. Seleccione manualmente., +Multiple Warehouse Accounts,Múltiples cuentas de almacén, +Multiple items cannot be marked as finished item,No se pueden marcar varios artículos como artículo terminado, +Must be a publicly accessible Google Sheets URL and adding Bank Account column is necessary for importing via Google Sheets,Debe ser una URL de Hojas de cálculo de Google de acceso público y es necesario agregar la columna Cuenta bancaria para importar a través de Hojas de cálculo de Google., +Named Place,Lugar nombrado, +Naming Series and Price Defaults,Series de Nombres y Precios por Defecto, +Net total calculation precision loss,Pérdida neta total de precisión de cálculo, +New Balance In Account Currency,Nuevo saldo en la moneda de la cuenta, +New Event,Nuevo Evento, +New Note,Nueva Nota, +New Task,Nueva Tarea, +New Version,Nueva versión, +Newsletter,Boletín de noticias, +No Answer,Sin respuesta, +No Customers found with selected options.,No se encontraron clientes con las opciones seleccionadas., +No Items selected for transfer.,No hay artículos seleccionados para transferir., +No Matching Bank Transactions Found,No se han encontrado transacciones bancarias coincidentes, +No Notes,Sin notas, +No Outstanding Invoices found for this party,No se encontraron facturas pendientes para esta parte, +No POS Profile found. Please create a New POS Profile first,"No se ha encontrado ningún Perfil de PV. Por favor, cree primero un Nuevo Perfil PV", +No Records for these settings.,No hay registros para estas configuraciones., +No Serial / Batches are available for return,No hay números de serie ni lotes disponibles para devolución, +No Stock Available Currently,No hay existencias disponibles actualmente, +No Summary,Sin resumen, +No Tax Withholding data found for the current posting date.,No se han encontrado datos de retenciones fiscales para la fecha de contabilización actual., +No Terms,Sin términos, +No Unreconciled Invoices and Payments found for this party and account,No se encontraron facturas ni pagos sin conciliar para esta parte y cuenta, +No Unreconciled Payments found for this party,No se encontraron pagos no conciliados para esta parte, +No Work Orders were created,No se crearon órdenes de trabajo, +No additional fields available,No hay campos adicionales disponibles, +No billing email found for customer: {0},No se encontró ningún correo electrónico de facturación para el cliente: {0}, +No data found. Seems like you uploaded a blank file,No se encontraron datos. Parece que has subido un archivo en blanco., +No employee was scheduled for call popup,No se programó ningún empleado para la ventana emergente de llamada, +No failed logs,No hay registros fallidos, +No item available for transfer.,No hay ningún artículo disponible para transferencia., +No items are available in sales orders {0} for production,No hay artículos disponibles en los pedidos de venta {0} para producción, +No items are available in the sales order {0} for production,No hay artículos disponibles en la orden de venta {0} para producción, +No items in cart,No hay artículos en el carrito, +No matches occurred via auto reconciliation,No se produjeron coincidencias mediante la conciliación automática, +No more children on Left,No más secundarios en la izquierda, +No more children on Right,No más secundarios en la derecha, +No of Docs,Nº de documentos, +No of Employees,Núm. de Empleados, +No of Months (Expense),Nº de meses (gastos), +No of Months (Revenue),Nº de meses (Ingresos), +No open event,Ningún evento abierto, +No open task,Sin tareas abiertas, +No outstanding {0} found for the {1} {2} which qualify the filters you have specified.,No se encontraron {0} pendientes para los {1} {2} que califican para los filtros que ha especificado., +No primary email found for customer: {0},No se encontró ningún correo electrónico principal para el cliente: {0}, +No records found in Allocation table,No se encontraron registros en la tabla de asignación, +No records found in the Invoices table,No se encontraron registros en la tabla Facturas, +No records found in the Payments table,No se encontraron registros en la tabla Pagos, +No stock transactions can be created or modified before this date.,No se podrán crear ni modificar transacciones de stock antes de esta fecha., +No {0} Accounts found for this company.,No se han encontrado cuentas en {0} para esta empresa., +No.,Nº, +No. of Employees,Núm. de Empleados, +No. of parallel job cards which can be allowed on this workstation. Example: 2 would mean this workstation can process production for two Work Orders at a time.,Nº de tarjetas de trabajo paralelas que se pueden permitir en esta estación de trabajo. Ejemplo: 2 significaría que esta estación de trabajo puede procesar la producción de dos Órdenes de Trabajo a la vez., +Note: Automatic log deletion only applies to logs of type Update Cost,Nota: El borrado automático de registros sólo se aplica a los registros de tipo Coste de actualización, +"Note: To merge the items, create a separate Stock Reconciliation for the old item {0}","Nota: Para fusionar los artículos, cree una reconciliación de existencias separada para el antiguo artículo {0}.", +Notes HTML,Notas HTML, +Notification,Notificación, +Notification Settings,Configuración de las notificaciones, +Notify Reposting Error to Role,Notificar error de reenvío al rol, +Number of Days,Número de días, +Numeric,Numérico, +Numeric Inspection,Inspección numérica, +Off,Apagado, +Offsetting Account,Cuenta de compensación, +Offsetting for Accounting Dimension,Compensación de la dimensión contable, +On Paid Amount,Sobre el importe pagado, +On This Date,En esta fecha, +On Track,En marcha, +On enabling this cancellation entries will be posted on the actual cancellation date and reports will consider cancelled entries as well,Al habilitar esta cancelación las entradas se contabilizarán en la fecha real de cancelación y los informes también tendrán en cuenta las entradas canceladas, +"On expanding a row in the Items to Manufacture table, you'll see an option to 'Include Exploded Items'. Ticking this includes raw materials of the sub-assembly items in the production process.","Al expandir una fila en la tabla de Artículos para fabricar, verá una opción para ""Incluir artículos despiezados"". Al marcar esta opción, se incluyen las materias primas de los artículos del subconjunto en el proceso de producción.", +"On submission of the stock transaction, system will auto create the Serial and Batch Bundle based on the Serial No / Batch fields.","En la validación la transacción de existencias, el sistema creará automáticamente el lote de series y lotes basándose en los campos Número de serie / Lote.", +Once the Work Order is Closed. It can't be resumed.,Una vez cerrada la Orden de Trabajo. No se puede reanudar., +Only 'Payment Entries' made against this advance account are supported.,Sólo se admiten 'Entradas de pago' realizadas contra esta cuenta de anticipo., +Only CSV and Excel files can be used to for importing data. Please check the file format you are trying to upload,Solo se pueden utilizar archivos CSV y Excel para importar datos. Verifique el formato del archivo que intenta cargar, +Only Deduct Tax On Excess Amount ,Deducir impuestos solo sobre el importe excedente , +Only Include Allocated Payments,Incluir sólo los pagos asignados, +Only Parent can be of type {0},Sólo el principal puede ser del tipo {0}, +Only existing assets,Solo activos existentes, +"Only one Subcontracting Order can be created against a Purchase Order, cancel the existing Subcontracting Order to create a new one.",Solo se puede crear una orden de subcontratación contra una orden de compra; cancele la orden de subcontratación existente para crear una nueva., +Only one {0} entry can be created against the Work Order {1},Solo se puede crear una entrada {0} contra la orden de trabajo {1}, +"Only values between [0,1) are allowed. Like {0.00, 0.04, 0.09, ...} +Ex: If allowance is set at 0.07, accounts that have balance of 0.07 in either of the currencies will be considered as zero balance account","Solo se permiten valores entre [0,1). Como {0,00, 0,04, 0,09, ...} +Ejemplo: si la asignación se establece en 0,07, las cuentas que tengan un saldo de 0,07 en cualquiera de las monedas se considerarán cuentas con saldo cero.", +Only {0} are supported,Solo se admiten {0}, +Open Activities HTML,Abrir actividades HTML, +Open Call Log,Abrir registro de llamadas, +Open Event,Abrir Evento, +Open Events,Eventos abiertos, +Open Sales Orders,Órdenes de venta abiertas, +Open Task,Abrir tarea, +Open Tasks,Tareas abiertas, +Open Work Order {0},Orden de trabajo abierta {0}, +Opening & Closing,Apertura y cierre, +Opening Accumulated Depreciation must be less than or equal to {0},La depreciación acumulada de apertura debe ser inferior o igual a {0}., +Opening Entry can not be created after Period Closing Voucher is created.,El asiento de apertura no puede crearse después de haber creado el comprobante de cierre del período., +Opening Number of Booked Depreciations,Número de apertura de depreciaciones registradas, +Opening Purchase Invoices have been created.,Se han creado facturas de compra de apertura., +Opening Sales Invoices have been created.,Se han creado facturas de venta de apertura., +Operating Cost Per BOM Quantity,Coste operativo por cantidad de la lista de materiales, +Operation time does not depend on quantity to produce,El tiempo de operación no depende de la cantidad a producir, +Opportunity Amount (Company Currency),Valor de la oportunidad (moneda de la empresa), +Opportunity Owner,Propietario de oportunidad, +Opportunity Source,Fuente de oportunidad, +Opportunity Summary by Sales Stage,Resumen de oportunidades por etapa de venta, +Opportunity Summary by Sales Stage ,Resumen de oportunidades por etapa de venta , +Opportunity Value,Valor de oportunidad, +Order Status,Estado del Pedido, +Other Info,Información adicional, +Out of stock,Agotado, +Over Picking Allowance,Tolerancia por exceso de recogida, +Over Receipt,Sobre recibo, +Over Receipt/Delivery of {0} {1} ignored for item {2} because you have {3} role.,Se ignora la recepción/entrega excesiva de {0} {1} para el artículo {2} porque tiene el rol {3} ., +Over Transfer Allowance,Exceso de asignación por transferencia, +Overbilling of {0} {1} ignored for item {2} because you have {3} role.,Sobrefacturación de {0} {1} ignorada para el artículo {2} porque tiene el rol {3} ., +Overbilling of {} ignored because you have {} role.,Se ignora la sobrefacturación de {} porque tiene el rol {}., +Overdue Payment,Pago vencido, +Overdue Payments,Pagos vencidos, +Overdue Tasks,Tareas atrasadas, +Overview,Visión general, +PDF Name,Nombre del PDF, +POS Closing Failed,Cierre de TPV fallido, +POS Closing failed while running in a background process. You can resolve the {0} and retry the process again.,El Cierre del TPV falló mientras se ejecutaba un proceso en segundo plano. Puede resolver el {0} y reintentar el proceso de nuevo., +POS Invoice is already consolidated,La factura del TPV ya está consolidada, +POS Invoice is not submitted,La factura del TPV no se presenta, +POS Invoice should have the field {0} checked.,La factura del TPV debe tener el campo {} marcado., +POS Invoices will be consolidated in a background process,Las facturas de TPV se consolidarán en un proceso en segundo plano, +POS Invoices will be unconsolidated in a background process,Las facturas de TPV no se consolidarán en un proceso en segundo plano, +POS Profile doesn't match {},El perfil de TPV no coincide con {}, +POS Profile {} contains Mode of Payment {}. Please remove them to disable this mode.,"El Perfil de TPV {} contiene el Modo de Pago {}. Por favor, elimínelos para desactivar este modo.", +POS Search Fields,Campos de búsqueda en el TPV, +POS Setting,Ajuste del TPV, +Package No(s) already in use. Try from Package No {0},Los números de paquete ya están en uso. Pruebe desde el número de paquete {0}, +Packaging Slip From Delivery Note,Recibo de embalaje de la nota de entrega, +Packed Items cannot be transferred internally,Los artículos empaquetados no se pueden transferir internamente, +Packed Qty,Cantidad empaquetada, +Page Break After Each SoA,Salto de página después de cada SoA, +Paid Amount After Tax,Importe pagado después de impuestos, +Paid Amount After Tax (Company Currency),Importe pagado después de impuestos (moneda de la empresa), +Paid From Account Type,Pagado desde tipo de cuenta, +Paid To Account Type,Tipo de cuenta pagada, +Pallets,Palés, +Parameter Group,Grupo de parámetros, +Parameter Group Name,Nombre del grupo de parámetros, +Parcel Template,Plantilla de paquete, +Parcel Template Name,Nombre de la plantilla de parcela, +Parcel weight cannot be 0,El peso del paquete no puede ser 0, +Parcels,Paquetes, +Parent Account Missing,Falta la cuenta principal, +Parent Document,Documento Principal, +Parent Item {0} must not be a Fixed Asset,El artículo principal {0} no debe ser un activo fijo, +Parent Row No,Número de fila principal, +Parent Task {0} is not a Template Task,La tarea principal {0} no es una tarea de plantilla, +Partial Material Transferred,Material parcial transferido, +Partial Stock Reservation,Reserva parcial de stock, +Partial Success,Éxito Parcial, +"Partial stock can be reserved. For example, If you have a Sales Order of 100 units and the Available Stock is 90 units then a Stock Reservation Entry will be created for 90 units. ","Se puede reservar un stock parcial. Por ejemplo, si tiene un pedido de venta de 100 unidades y el stock disponible es de 90 unidades, se creará una entrada de reserva de stock para 90 unidades. ", +Partially Delivered,Entregado parcialmente, +Partially Reconciled,Parcialmente reconciliado, +Partially Reserved,Parcialmente reservado, +Partly Paid,Pagado parcialmente, +Partly Paid and Discounted,Parcialmente pagado y descontado, +Partnership,Asociación, +Party Account No. (Bank Statement),Número de cuenta de la Entidad(extracto bancario), +Party Account {0} currency ({1}) and document currency ({2}) should be same,La moneda de la cuenta de la Entidad {0} ({1}) y la moneda del documento ({2}) deben ser las mismas, +Party IBAN (Bank Statement),IBAN del destinatario (extracto bancario), +Party Item Code,Código de artículo de la Entidad, +Party Link,Enlace de la Entidad, +Party Name/Account Holder (Bank Statement),Nombre de la Entidad/titular de la cuenta (extracto bancario), +Party Specific Item,Producto específico de la Parte, +Party Type and Party is required for Receivable / Payable account {0},Se requiere el tipo de Entidad y la Entidad para la cuenta por cobrar/pagar {0}, +Party can only be one of {0},La Entidad solo puede ser una de {0}, +Passport Details,Datos del pasaporte, +Pause Job,Pausar trabajo, +Paused,Pausado, +Payment Amount (Company Currency),Importe del pago (moneda de la empresa), +"Payment Entry {0} is linked against Order {1}, check if it should be pulled as advance in this invoice.","La entrada de pago {0} está vinculada al pedido {1}, verifique si debe extraerse como anticipo en esta factura.", +Payment Ledger,Libro de pagos, +Payment Ledger Balance,Saldo del libro mayor de pagos, +Payment Ledger Entry,Entrada de libro mayor de pagos, +Payment Limit,Límite de pago, +Payment Reconciliation Allocation,Asignación de conciliación de pagos, +Payment Reconciliation Job: {0} is running for this party. Can't reconcile now.,Trabajo de conciliación de pagos: {0} se está ejecutando para esta parte. No se puede conciliar ahora., +Payment Reconciliations,Conciliaciones de pagos, +Payment Request Outstanding,Solicitud de pago pendiente, +Payment Request created from Sales Order or Purchase Order will be in Draft status. When disabled document will be in unsaved state.,"La solicitud de pago creada a partir de una orden de venta o una orden de compra estará en estado de borrador. Si está deshabilitada, el documento estará en estado de no guardado.", +Payment Request is already created,La solicitud de pago ya está creada, +Payment Request took too long to respond. Please try requesting for payment again.,La solicitud de pago tardó demasiado en responder. Intente solicitar el pago nuevamente., +Payment Requests cannot be created against: {0},No se pueden crear solicitudes de pago contra: {0}, +Payment Term Outstanding,Plazo de pago pendiente, +Payment Terms Status for Sales Order,Estado de las condiciones de pago de la orden de venta, +Payment Terms from orders will be fetched into the invoices as is,Las condiciones de pago de los pedidos se reflejarán en las facturas tal como están., +Payment Unlink Error,Error al desvincular el pago, +Payment of {0} received successfully.,Pago de {0} recibido exitosamente., +Payment of {0} received successfully. Waiting for other requests to complete...,Pago de {0} recibido con éxito. Esperando que se completen otras solicitudes..., +Payment request failed,Solicitud de pago fallida, +Payment term {0} not used in {1},Término de pago {0} no utilizado en {1}, +Pending processing,Pendiente de procesamiento, +Per Received,Por recibido, +Percentage (%),Porcentaje (%), +Percentage you are allowed to order beyond the Blanket Order quantity.,Porcentaje que se le permite pedir más allá de la cantidad del pedido general., +Percentage you are allowed to sell beyond the Blanket Order quantity.,Porcentaje que se le permite vender más allá de la cantidad del pedido general., +Period Closed,Período cerrado, +Period Closing Entry For Current Period,Asiento de cierre de período para el período actual, +Period Closing Settings,Configuración de cierre de período, +Period Details,Detalles del periodo, +Period To Date,Período hasta la fecha, +Period_from_date,Periodo_desde_fecha, +Phone Ext.,Extensión telefónica, +Pick List Incomplete,Lista de selección incompleta, +Pick Manually,Seleccionar manualmente, +Pick Serial / Batch Based On,Selección de serie / lote basada en, +Pick Serial / Batch No,Seleccione el número de serie/lote, +Picked Qty (in Stock UOM),Cantidad seleccionada (en stock UdM), +Pickup,Recogida, +Pickup Contact Person,Persona de contacto para la recogida, +Pickup Date,Fecha de recogida, +Pickup Date cannot be before this day,La fecha de recogida no puede ser anterior a este día., +Pickup From,Recoger de, +Pickup To time should be greater than Pickup From time,La hora de recogida hasta debe ser mayor que la hora de recogida desde, +Pickup Type,Tipo de recogida, +Pickup from,Recoger de, +Pickup to,Recogida a, +Pipeline By,Fuente de información por, +Plaid Link Failed,Vinculación a Plaid fallido, +Plaid Link Refresh Required,Se requiere actualización de la vinculación con Plaid, +Plaid Link Updated,Enlace de Plaid actualizado, +Plan to Request Qty,Plan para solicitar cantidad, +Plant Dashboard,Panel de control de la planta, +Plant Floor,Planta, +Please Set Priority,"Por favor, establezca la prioridad", +Please Specify Account,Por favor especifique la cuenta, +Please add 'Supplier' role to user {0}.,"Por favor, añada el rol 'Proveedor' al usuario {0}.", +Please add Request for Quotation to the sidebar in Portal Settings.,"Por favor, añada la Solicitud de Presupuesto a la barra lateral en los Ajustes del Portal.", +Please add Root Account for - {0},"Por favor, añada una cuenta raíz para - {0}", +Please add atleast one Serial No / Batch No,"Por favor, añada al menos un nº de serie / nº de lote", +Please add the Bank Account column,"Por favor, añada la columna Cuenta bancaria", +Please add the account to root level Company - {0},"Por favor, añada la cuenta al nivel raíz Empresa - {0}", +Please add {1} role to user {0}.,"Por favor, añada el rol {1} al usuario {0}.", +Please adjust the qty or edit {0} to proceed.,Ajuste la cantidad o edite {0} para continuar., +Please attach CSV file,Adjunte el archivo CSV, +Please cancel and amend the Payment Entry,"Por favor, cancele y modifique la Entrada de Pago", +Please cancel payment entry manually first,"Por favor, cancele primero la entrada del pago manualmente", +Please cancel related transaction.,"Por favor, cancele la transacción relacionada.", +Please check Process Deferred Accounting {0} and submit manually after resolving errors.,"Por favor, marque Procesar contabilidad diferida {0} y valídelo manualmente después de resolver los errores.", +Please check either with operations or FG Based Operating Cost.,Consulte con operaciones o con el costo operativo basado en FG., +Please check the error message and take necessary actions to fix the error and then restart the reposting again.,"Por favor, compruebe el mensaje de error y tome las medidas necesarias para solucionar el error y luego reinicie el reenvío de nuevo.", +Please check your email to confirm the appointment,"Por favor, compruebe su correo electrónico para confirmar la cita", +Please contact any of the following users to extend the credit limits for {0}: {1},Comuníquese con cualquiera de los siguientes usuarios para ampliar los límites de crédito para {0}: {1}, +Please contact any of the following users to {} this transaction.,"Por favor, póngase en contacto con cualquiera de los siguientes usuarios para {} esta transacción.", +Please contact your administrator to extend the credit limits for {0}.,Póngase en contacto con su administrador para ampliar los límites de crédito de {0}., +Please create Landed Cost Vouchers against Invoices that have 'Update Stock' enabled.,"Cree comprobantes de costo de destino contra facturas que tengan habilitada la opción ""Actualizar stock"".", +Please create a new Accounting Dimension if required.,"Por favor, cree una nueva Dimensión Contable si es necesario.", +Please create purchase from internal sale or delivery document itself,"Por favor, cree la compra a partir de la venta interna o del propio documento de entrega", +"Please delete Product Bundle {0}, before merging {1} into {2}","Por favor, elimine el paquete de productos {0}, antes de fusionar {1} en {2}", +Please do not book expense of multiple assets against one single Asset.,"Por favor, no contabilice gastos de múltiples activos contra un único Activo.", +Please enable Use Old Serial / Batch Fields to make_bundle,"Por favor, active Usar campos de serie / lote antiguos en make_bundle", +Please enable only if the understand the effects of enabling this.,Habilítelo solo si comprende los efectos de habilitar esto., +Please enable {0} in the {1}.,"Por favor, habilite {0} en la página {1}.", +Please enable {} in {} to allow same item in multiple rows,"Por favor, active {} en {} para permitir el mismo elemento en varias filas", +Please ensure that the {0} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Asegúrese de que la cuenta {0} es una cuenta de Balance. Puede cambiar la cuenta padre a una cuenta de Balance o seleccionar una cuenta diferente., +Please ensure that the {0} account {1} is a Payable account. You can change the account type to Payable or select a different account.,Asegúrese de que la cuenta {0} {1} sea una cuenta de pago. Puede cambiar el tipo de cuenta a pago o seleccionar una cuenta diferente., +Please ensure {} account is a Balance Sheet account.,Asegúrese de que la cuenta {} sea una cuenta de balance general., +Please ensure {} account {} is a Receivable account.,Asegúrese de que {} cuenta {} sea una cuenta por cobrar., +Please enter Root Type for account- {0},"Por favor, introduzca el tipo de cuenta- {0}", +Please enter Serial Nos,"Por favor, introduzca Serial Nos", +Please enter Shipment Parcel information,"Por favor, introduzca la información del paquete de envío", +Please enter Stock Items consumed during the Repair.,Ingrese los artículos en stock consumidos durante la reparación., +Please enter mobile number first.,"Por favor, introduzca primero el número de móvil.", +Please enter quantity for item {0},Ingrese la cantidad del artículo {0}, +Please enter serial nos,"Por favor, introduzca los números de serie", +"Please first set Last Name, Email and Phone for the user","Primero configure el apellido, el correo electrónico y el teléfono del usuario.", +Please fix overlapping time slots for {0},"Por favor, arreglen los espacios de tiempo superpuestos para {0}", +Please fix overlapping time slots for {0}.,"Por favor, arregle los espacios de tiempo superpuestos para {0}.", +Please import accounts against parent company or enable {} in company master.,"Por favor, importe las cuentas contra la empresa principal o habilite {} en el maestro de empresas.", +"Please keep one Applicable Charges, when 'Distribute Charges Based On' is 'Distribute Manually'. For more charges, please create another Landed Cost Voucher.","Conserve un solo Cargo aplicable cuando la opción ""Distribuir cargos según"" esté configurada como ""Distribuir manualmente"". Para más cargos, cree otro Comprobante de costo de destino.", +Please make sure the file you are using has 'Parent Account' column present in the header.,Asegúrese de que el archivo que está utilizando tenga la columna 'Cuenta principal' presente en el encabezado., +Please mention 'Weight UOM' along with Weight.,Mencione 'Peso UdM' junto con el Peso., +Please mention the Current and New BOM for replacement.,"Por favor, mencione la lista de materiales actual y la nueva para la sustitución.", +Please rectify and try again.,"Por favor, corrija y vuelva a intentarlo.", +Please refresh or reset the Plaid linking of the Bank {}.,"Por favor, actualice o reinicie la vinculación del Banco con Plaid {}.", +Please save before proceeding.,"Por favor, guarde antes de continuar.", +Please select Bank Account,"Por favor, seleccione Cuenta Bancaria", +Please select Finished Good Item for Service Item {0},"Por favor, seleccione Artículo de producto terminado para el artículo de servicio {0}", +Please select Serial/Batch Nos to reserve or change Reservation Based On to Qty.,Seleccione los números de serie/lote para reservar o cambie Reserva basada en a Cantidad., +Please select Subcontracting Order instead of Purchase Order {0},Por favor seleccione Orden de Subcontratación en lugar de Orden de Compra {0}, +Please select Unrealized Profit / Loss account or add default Unrealized Profit / Loss account account for company {0},Seleccione la cuenta de ganancias/pérdidas no realizadas o agregue la cuenta de ganancias/pérdidas no realizadas predeterminada para la empresa {0}, +Please select a Subcontracting Purchase Order.,Seleccione una orden de compra de subcontratación., +Please select a Warehouse,Por favor seleccione un almacén, +Please select a Work Order first.,Seleccione primero una orden de trabajo., +Please select a country,"Por favor, selecciona un país", +Please select a customer for fetching payments.,Seleccione un cliente para obtener los pagos., +Please select a date,"Por favor, seleccione una fecha", +Please select a date and time,Por favor seleccione una fecha y hora, +Please select a row to create a Reposting Entry,Seleccione una fila para crear una entrada de reenvío, +Please select a supplier for fetching payments.,"Por favor, seleccione un proveedor para obtener los pagos.", +Please select a valid Purchase Order that has Service Items.,"Por favor, seleccione una Orden de Compra válida que tenga Artículos de Servicio.", +Please select a valid Purchase Order that is configured for Subcontracting.,"Por favor, seleccione un Pedido válido que esté configurado para Subcontratación.", +Please select an item code before setting the warehouse.,Seleccione un código de artículo antes de configurar el almacén., +Please select either the Item or Warehouse or Warehouse Type filter to generate the report.,Seleccione el filtro Artículo o Almacén o Tipo de almacén para generar el informe., +Please select items,Por favor seleccione artículos, +Please select items to reserve.,Por favor seleccione los artículos que desea reservar., +Please select items to unreserve.,Seleccione los artículos que desea cancelar la reserva., +Please select only one row to create a Reposting Entry,Seleccione solo una fila para crear una entrada de reenvío, +Please select rows to create Reposting Entries,Seleccione filas para crear entradas de reenvío, +Please select the required filters,Por favor seleccione los filtros requeridos, +Please select valid document type.,Seleccione un tipo de documento válido., +Please set Account,"Por favor, establezca una cuenta", +Please set Accounting Dimension {} in {},"Por favor, establezca la dimensión contable {} en {}", +Please set Email/Phone for the contact,"Por favor, establezca Email/Teléfono para el contacto", +Please set Fiscal Code for the customer '%s',"Por favor, establezca el código fiscal para el cliente '%s'", +Please set Fiscal Code for the public administration '%s',"Por favor, establezca el código fiscal para la administración pública '%s'", +Please set Fixed Asset Account in {} against {}.,Establezca la cuenta de activos fijos en {} frente a {}., +Please set Opening Number of Booked Depreciations,"Por favor, establezca el número de apertura de las depreciaciones registradas", +Please set Parent Row No for item {0},Establezca el número de fila principal para el artículo {0}, +Please set Root Type,"Por favor, configure el tipo de raíz", +Please set Tax ID for the customer '%s',"Por favor, establezca el número de identificación fiscal para el cliente '%s'", +Please set VAT Accounts in {0},Establezca las cuentas de IVA en {0}, +"Please set Vat Accounts for Company: ""{0}"" in UAE VAT Settings","Establezca las cuentas de IVA para la empresa: ""{0}"" en la configuración de IVA de los EAU", +Please set a Cost Center for the Asset or set an Asset Depreciation Cost Center for the Company {},Establezca un centro de costo para el activo o establezca un centro de costo de depreciación de activos para la empresa {}, +Please set a default Holiday List for Company {0},Establezca una lista de días festivos predeterminada para la empresa {0}, +Please set an Address on the Company '%s',"Por favor, establezca una dirección en la empresa '%s'", +Please set an Expense Account in the Items table,Establezca una cuenta de gastos en la tabla de artículos, +Please set default Exchange Gain/Loss Account in Company {},Establezca la cuenta de ganancias/pérdidas de cambio predeterminada en la empresa {}, +Please set default Expense Account in Company {0},Establezca la cuenta de gastos predeterminada en la empresa {0}, +Please set default cost of goods sold account in company {0} for booking rounding gain and loss during stock transfer,Establezca la cuenta de costo de bienes vendidos predeterminada en la empresa {0} para registrar las ganancias y pérdidas por redondeo durante la transferencia de existencias, +Please set either the Tax ID or Fiscal Code on Company '%s',Establezca el ID fiscal o el código fiscal en la empresa '%s', +Please set filters,"Por favor, defina los filtros", +Please set one of the following:,Establezca una de las siguientes opciones:, +Please set the cost center field in {0} or setup a default Cost Center for the Company.,Establezca el campo del centro de costo en {0} o configure un centro de costo predeterminado para la empresa., +Please set {0} in BOM Creator {1},Establezca {0} en LdM Creator {1}, +Please setup and enable a group account with the Account Type - {0} for the company {1},"Por favor, configura y habilita una cuenta de grupo con el tipo de cuenta - {0} para la empresa {1}.", +Please share this email with your support team so that they can find and fix the issue.,Comparta este correo electrónico con su equipo de soporte para que puedan encontrar y solucionar el problema., +Please specify a {0},Por favor especifique un {0}, +Please try again in an hour.,Vuelve a intentarlo en 1 hora., +Please update Repair Status.,"Por favor, actualice el estado de la reparación.", +Portal User,Usuario del portal, +Portal Users,Usuario del Portal, +Posting Datetime,Fecha y hora de publicación, +Powered by {0},Desarrollado por {0}, +"Previous Year is not closed, please close it first","El año anterior no está cerrado, por favor ciérrelo primero", +Price ({0}),Precio ({0}), +Price List Defaults,Lista de precios por defecto, +Price Per Unit ({0}),Precio por Unidad ({0}), +Primary Address and Contact,Dirección principal y Contacto, +Primary Contact,Contacto Principal, +Primary Party,Entidad Primaria, +Primary Role,Rol principal, +Print Format Builder,Diseñador de formatos de impresión, +Print Style,Estilo de Impresión, +Printing,Impresión, +Priority cannot be lesser than 1.,La prioridad no puede ser menor a 1., +Priority is mandatory,La prioridad es obligatoria, +Probability,Probabilidad, +Process Loss,Pérdida por Proceso, +Process Loss Percentage cannot be greater than 100,El porcentaje de pérdida de proceso no puede ser mayor que 100, +Process Loss Qty,Cantidad de pérdida de proceso, +Process Loss Report,Informe de pérdidas de proceso, +Process Loss Value,Valor de pérdida del proceso, +Process Payment Reconciliation,Proceso de conciliación de pagos, +Process Payment Reconciliation Log,Registro de conciliación de procesos de pago, +Process Payment Reconciliation Log Allocations,Asignaciones del registro de conciliación de pagos del proceso, +Process Subscription,Proceso de suscripción, +Process in Single Transaction,Proceso en Transacción Única, +Processed BOMs,Listas de materiales procesadas, +Processing Sales! Please Wait...,¡Procesando ventas! Por favor espere..., +Produced / Received Qty,Cantidad producida/recibida, +Product Price ID,ID del Precio del producto, +Production Plan Already Submitted,Plan de producción ya validado, +Production Plan Item Reference,Plan de producción Articulo de referencia, +Production Plan Qty,Plan de producción Cantidad, +Production Plan Sub Assembly Item,Plan de producción Elemento de subensamblaje, +Production Plan Sub-assembly Item,Plan de producción Subconjunto Artículo, +Production Plan Summary,Resumen del plan de producción, +Profile,Perfil, +Profit and Loss Summary,Resumen de pérdidas y ganancias, +Progress,Progreso, +Progress (%),Progreso (%), +Project Progress:,Progreso del proyecto:, +Prompt Qty,Cantidad inmediata, +Prospect,Prospecto, +Prospect Lead,Prospecto de cliente potencial, +Prospect Opportunity,Oportunidad prospecto, +Prospect Owner,Propietario del prospecto, +Prospect {0} already exists,El prospecto {0} ya existe, +Provisional Account,Cuenta provisional, +Provisional Expense Account,Cuenta de Gastos Provisionales, +Purchase Order Item reference is missing in Subcontracting Receipt {0},Falta la referencia del artículo de la orden de compra en el recibo de subcontratación {0}, +Purchase Orders {0} are un-linked,Las órdenes de compra {0} no están vinculadas, +Purchase Receipt (Draft) will be auto-created on submission of Subcontracting Receipt.,El recibo de compra (borrador) se creará automáticamente al validar el recibo de subcontratación., +Purchase Receipt {0} created.,Recibo de compra {0} creado., +Purchase Value,Valor de compra, +Purchases,Compras, +Purposes Required,Propósitos requeridos, +Putaway Rule,Regla de almacenamiento, +Putaway Rule already exists for Item {0} in Warehouse {1}.,La regla de almacenamiento ya existe para el artículo {0} en el almacén {1}., +Qty ,Cant. , +Qty After Transaction,Cantidad después de la transacción, +Qty As Per BOM,Cantidad según lista de materiales, +Qty Change,Cantidad Cambio, +Qty In Stock,Cant en existencia, +Qty Per Unit,Cantidad por unidad, +"Qty To Manufacture ({0}) cannot be a fraction for the UOM {2}. To allow this, disable '{1}' in the UOM {2}.","La cantidad a fabricar ({0}) no puede ser una fracción para la unidad de medida {2}. Para permitir esto, deshabilite '{1}' en la unidad de medida {2}.", +Qty To Produce,Cantidad a producir, +Qty and Rate,Cantidad y Tarifa, +Qty as Per Stock UOM,Cantidad según stock UdM, +Qty for which recursion isn't applicable.,Cantidad para la que no es aplicable la recursividad., +Qty in Stock UOM,Cantidad en stock UdM, +Qty of Finished Goods Item should be greater than 0.,La cantidad de productos acabados debe ser superior a 0., +Qty to Be Consumed,Cantidad para ser consumida, +Qty to Build,Cantidad a construir, +Qty to Fetch,Cantidad a buscar, +Qty to Produce,Cantidad a producir, +Qualification Status,Estado de la cualificación, +Qualified,Cualificado, +Qualified By,Calificado por, +Qualified on,Calificado el, +Quality Inspection Parameter,Parámetros de inspección de calidad, +Quality Inspection Parameter Group,Grupo de parámetros de inspección de calidad, +Quality Inspection Settings,Configuración de inspección de calidad, +Quality Inspection(s),Inspección(es) de calidad, +Quantity is required,Se requiere cantidad, +"Quantity must be greater than zero, and less or equal to {0}",La cantidad debe ser mayor que cero y menor o igual a {0}, +Quantity to Produce should be greater than zero.,La cantidad a producir debe ser mayor que cero., +Quantity to Scan,Cantidad a escanear, +Quarter {0} {1},Cuatrimestre {0} {1}, +Quotation Number,Número de Cotización, +Quoted Amount,Importe Cotizado, +Rate Difference with Purchase Invoice,Diferencia de tarifa con la factura de compra, +Rate Section,Sección de tarifas, +Rate of Stock UOM,Tasa de stock UdM, +Raw Material Cost Per Qty,Coste de la materia prima por cant., +Raw Material Item,Artículo de materia prima, +Raw Material Value,Valor de la materia prima, +Raw Materials Actions,Acciones de Materias Primas, +Raw Materials Consumption ,Consumo de materias primas , +Raw Materials Warehouse,Almacén de materias primas, +Reached Root,Raíz alcanzada, +Reading Value,Valor de lectura, +Reason for hold:,Motivo de la retención:, +Rebuild Tree,Reconstruir el árbol, +Rebuilding BTree for period ...,Reconstruyendo BTree para el período..., +Recalculate Incoming/Outgoing Rate,Recalcular la tasa de entrada/salida, +Recalculating Purchase Cost against this Project...,Recalcular el coste de compra contra este proyecto..., +Receivable/Payable Account,Cuenta por cobrar/por pagar, +Receivable/Payable Account: {0} doesn't belong to company {1},Cuenta por cobrar/por pagar: {0} no pertenece a la empresa {1}, +Received Amount After Tax,Importe recibido después de impuestos, +Received Amount After Tax (Company Currency),Importe recibido después de impuestos (moneda de la empresa), +Received Amount cannot be greater than Paid Amount,El importe recibido no puede ser mayor que el importe pagado, +Received Qty in Stock UOM,Cantidad recibida en stock UdM, +Recent Orders,Pedidos recientes, +Recent Transactions,Transacciones recientes, +Reconcile All Serial Nos / Batches,Concilie todos los números de serie / lotes, +Reconcile on Advance Payment Date,Conciliar en fecha de pago anticipado, +Reconcile the Bank Transaction,Conciliar la transacción bancaria, +Reconciled Entries,Entradas conciliadas, +Reconciliation Error Log,Registro de errores de conciliación, +Reconciliation Logs,Registros de conciliación, +Reconciliation Progress,Progreso de la reconciliación, +Recording HTML,Grabación HTML, +Recoverable Standard Rated expenses should not be set when Reverse Charge Applicable is Y,Los gastos recuperables con tasa estándar no se deben establecer cuando la inversión de cargo aplicable es Y, +Recurse Every (As Per Transaction UOM),Recursiva cada (según la unidad de medida de la transacción), +Recurse Over Qty cannot be less than 0,El recursivo sobre cantidad no puede ser menor que 0, +Recursive Discounts with Mixed condition is not supported by the system,El sistema no admite descuentos recursivos con condiciones mixtas, +Reference Date for Early Payment Discount,Fecha de referencia para el descuento por pronto pago, +Reference Detail,Detalle de referencia, +Reference DocType,DocType de referencia, +Reference Exchange Rate,Tipo de cambio de referencia, +Reference No,Nº de referencia, +Reference number of the invoice from the previous system,Número de referencia de la factura del sistema anterior, +References to Sales Invoices are Incomplete,Las referencias a las facturas de venta están incompletas, +References to Sales Orders are Incomplete,Las referencias a los pedidos de venta están incompletas, +References {0} of type {1} had no outstanding amount left before submitting the Payment Entry. Now they have a negative outstanding amount.,Las referencias {0} del tipo {1} no tenían ningún importe pendiente antes de enviar la Entrada de pago. Ahora tienen un importe pendiente negativo., +Refresh Google Sheet,Actualizar hoja de Google, +Refresh Plaid Link,Actualizar enlace de Plaid, +Regenerate Closing Stock Balance,Regenerar saldo de stock de cierre, +Rejected Serial and Batch Bundle,Lote y serie rechazados, +Rejected Warehouse and Accepted Warehouse cannot be same.,Almacén Rechazado y Almacén Aceptado no pueden ser el mismo., +Remarks Column Length,Observaciones Longitud de la columna, +Remove Parent Row No in Items Table,Eliminar el número de fila principal en la tabla de elementos, +Repair,Reparar, +Repair Asset,Reparar activos, +Repair Details,Detalles de la reparación, +"Replace a particular BOM in all other BOMs where it is used. It will replace the old BOM link, update cost and regenerate ""BOM Explosion Item"" table as per new BOM. +It also updates latest price in all the BOMs.","Sustituye una determinada lista de materiales en todas las demás listas de materiales en las que se utilice. Reemplazará el enlace de la lista de materiales antigua, actualizará el coste y regenerará la tabla ""Elemento de explosión de la lista de materiales"" según la nueva lista de materiales. +También actualiza el último precio en todas las listas de materiales.", +Report Error,Reportar Error, +Report Filters,Filtros de informe, +Report View,Vista de Reporte, +Repost Accounting Ledger,Traspaso libro de contabilidad, +Repost Accounting Ledger Items,Traspaso de partidas del libro mayor de contabilidad, +Repost Accounting Ledger Settings,Traspasar configuración del libro mayor de contabilidad, +Repost Allowed Types,Tipos de Traspasos permitidos, +Repost Error Log,Traspaso registro de errores, +Repost Item Valuation,Traspaso Valoración de artículos, +Repost Payment Ledger,Traspaso del Libro de Pagos, +Repost Payment Ledger Items,Traspaso de partidas del libro de pagos, +Repost Status,Estado del Traspaso, +Repost has started in the background,El traspaso ha comenzado en segundo plano., +Repost in background,Traspasar en segundo plano, +Repost started in the background,Traspaso iniciado en segundo plano, +Reposting Completed {0}%,Traspaso completado {0}%, +Reposting Data File,Traspaso del archivo de datos, +Reposting Info,Información de Traspaso , +Reposting Progress,Traspasar el progreso, +Reposting entries created: {0},Traspaso de entradas creadas: {0}, +Reposting has been started in the background.,Se ha iniciado un traspaso en segundo plano., +Reposting in the background.,Traspasando en segundo plano., +Represents a Financial Year. All accounting entries and other major transactions are tracked against the Fiscal Year.,Representa un año fiscal. Todos los asientos contables y otras transacciones importantes se registran en relación con el año fiscal., +Request Parameters,Parámetros de la solicitud, +Request Timeout,Tiempo de espera superado, +Reservation Based On,Reserva basada en, +Reserve,Reservar, +Reserve Stock,Reservar stock, +"Reserved Qty ({0}) cannot be a fraction. To allow this, disable '{1}' in UOM {3}.","La cantidad reservada ({0}) no puede ser una fracción. Para permitirlo, deshabilite '{1}' en la unidad de medida {3}.", +Reserved Qty for Production Plan,Cantidad reservada para el plan de producción, +Reserved Qty for Subcontract,Cantidad reservada para subcontrato, +Reserved Qty should be greater than Delivered Qty.,La cantidad reservada debe ser mayor que la cantidad entregada., +Reserved Serial No.,Número de serie reservado., +Reserved Stock,Existencias Reservadas, +Reserved Stock for Batch,Stock reservado para lote, +Reserved for POS Transactions,Reservado para transacciones TPV, +Reserved for Production,Reservado para producción, +Reserved for Production Plan,Reservado para el plan de producción, +Reserved for Sub Contracting,Reservado para subcontratación, +Reserving Stock...,Reservando de stock..., +Reset Company Default Values,Restablecer valores predeterminados de la empresa, +Reset Plaid Link,Restablecer vinculación con Plaid, +Reset Raw Materials Table,Restablecer tabla de materias primas, +Resolution Due,Resolución pendiente, +Response and Resolution,Respuesta y resolución, +Restart,Reiniciar, +Restore Asset,Restaurar activo, +Restrict,Restringir, +Restrict Items Based On,Restringir Pruductos según, +Result Key,Clave de resultados, +Resume Job,Reanudar Trabajo, +Retried,Reintentado, +Retry,Reintentar, +Retry Failed Transactions,Reintentar transacciones fallidas, +Return Against,Devolución contra, +Return Against Subcontracting Receipt,Devolución contra recibo de subcontratación, +Return Components,Componentes de retorno, +Return Issued,Devolución emitida, +Return Qty,Cantidad devuelta, +Return Qty from Rejected Warehouse,Cantidad devuelta del almacén rechazado, +Return of Components,Devolución de componentes, +Returned,Devuelto, +Returned Against,Devuelto contra, +Returned Qty ,Cant devuelta , +Returned Qty in Stock UOM,Cantidad devuelta en stock UdM, +Returned exchange rate is neither integer not float.,El tipo de cambio devuelto no es ni entero ni flotante., +Revaluation Journals,Diarios de revalorización, +Revaluation Surplus,Superávit de revalorización, +Revenue,Ganancia, +Reversal Of,Reversión de, +Right Child,Secundario correcto, +Role Allowed to Create/Edit Back-dated Transactions,Rol permitido para crear o editar transacciones retroactivas, +Role Allowed to Over Bill ,Rol Permitido para Facturar en Exceso , +Role Allowed to Over Deliver/Receive,Rol que permite entregar/recibir más de lo debido, +Role Allowed to Override Stop Action,Rol autorizado para anular la acción de parada, +Role allowed to bypass Credit Limit,Rol permitido para eludir el límite de crédito, +Root,Raíz, +"Root Type for {0} must be one of the Asset, Liability, Income, Expense and Equity","El tipo de raíz para {0} debe ser uno de los siguientes: Activo, Pasivo, Ingreso, Gasto y Patrimonio", +Round Free Qty,Redondear cantidad gratis, +Round Off Tax Amount,Redondear el importe del impuesto, +Round Tax Amount Row-wise,Redondear el importe del impuesto por filas, +Rounding Loss Allowance,Redondeo de la indemnización por pérdidas, +Rounding Loss Allowance should be between 0 and 1,El margen de pérdida por redondeo debe estar entre 0 y 1, +Rounding gain/loss Entry for Stock Transfer,Redondeo de ganancias/pérdidas Entrada para traslado de existencias, +Row #,Fila #, +Row # {0}:,Fila # {0}:, +Row #{0}: A reorder entry already exists for warehouse {1} with reorder type {2}.,Fila #{0}: Ya existe una entrada de reorden para el almacén {1} con el tipo de reorden {2}., +Row #{0}: Acceptance Criteria Formula is incorrect.,Fila #{0}: La fórmula de los criterios de aceptación es incorrecta., +Row #{0}: Acceptance Criteria Formula is required.,Fila #{0}: Se requiere la fórmula de criterios de aceptación., +Row #{0}: Accepted Warehouse and Rejected Warehouse cannot be same,Fila #{0}: Almacén Aceptado y Almacén Rechazado no puede ser el mismo, +Row #{0}: Accepted Warehouse is mandatory for the accepted Item {1},Fila #{0}: El almacén aceptado es obligatorio para el artículo aceptado {1}, +Row #{0}: Allocated Amount cannot be greater than Outstanding Amount of Payment Request {1},Fila #{0}: El Importe Asignado no puede ser mayor que el Importe Pendiente de la Solicitud de Pago {1}, +Row #{0}: Allocated amount:{1} is greater than outstanding amount:{2} for Payment Term {3},Fila #{0}: Importe asignado:{1} es superior al importe pendiente:{2} para el plazo de pago {3}, +Row #{0}: Amount must be a positive number,Fila #{0}: El importe debe ser un número positivo, +Row #{0}: BOM is not specified for subcontracting item {0},Fila #{0}: La lista de materiales no está especificada para el artículo de subcontratación {0}, +Row #{0}: Batch No {1} is already selected.,Fila #{0}: El lote nº {1} ya está seleccionado., +Row #{0}: Cannot allocate more than {1} against payment term {2},Fila #{0}: No se puede asignar más de {1} contra la condición de pago {2}, +Row #{0}: Cannot transfer more than Required Qty {1} for Item {2} against Job Card {3},Fila #{0}: No se puede transferir más de la cantidad requerida {1} para el artículo {2} contra la tarjeta de trabajo {3}, +Row #{0}: Consumed Asset {1} cannot be Draft,Fila #{0}: El activo consumido {1} no puede ser borrador, +Row #{0}: Consumed Asset {1} cannot be cancelled,Fila #{0}: El activo consumido {1} no puede estar cancelado, +Row #{0}: Consumed Asset {1} cannot be the same as the Target Asset,Fila #{0}: El activo consumido {1} no puede ser el mismo que el activo de destino, +Row #{0}: Consumed Asset {1} cannot be {2},Fila #{0}: El activo consumido {1} no puede ser {2}, +Row #{0}: Consumed Asset {1} does not belong to company {2},Fila #{0}: El activo consumido {1} no pertenece a la empresa {2}, +Row #{0}: Cumulative threshold cannot be less than Single Transaction threshold,Fila #{0}: El umbral acumulativo no puede ser menor que el umbral de transacción única, +Row #{0}: Dates overlapping with other row,Fila #{0}: Fechas superpuestas con otras filas, +Row #{0}: Default BOM not found for FG Item {1},Fila #{0}: No se encontró la lista de materiales predeterminada para el artículo FG {1}, +Row #{0}: Expense Account not set for the Item {1}. {2},Fila #{0}: Cuenta de gastos no configurada para el artículo {1}. {2}, +Row #{0}: Finished Good Item Qty can not be zero,Fila #{0}: La cantidad de artículos terminados no puede ser cero, +Row #{0}: Finished Good Item is not specified for service item {1},Fila #{0}: No se especifica el artículo bueno acabado para el artículo de servicio {1}, +Row #{0}: Finished Good Item {1} must be a sub-contracted item,Fila #{0}: Artículo terminado. El artículo {1} debe ser un artículo subcontratado., +Row #{0}: Finished Good reference is mandatory for Scrap Item {1}.,Fila #{0}: La referencia de producto terminado es obligatoria para el artículo de desecho {1}., +Row #{0}: For {1} Clearance date {2} cannot be before Cheque Date {3},Fila #{0}: Para {1} La fecha de liquidación {2} no puede ser anterior a la fecha del cheque {3}, +"Row #{0}: For {1}, you can select reference document only if account gets credited","Fila #{0}: Para {1}, puede seleccionar el documento de referencia solo si se acredita la cuenta", +"Row #{0}: For {1}, you can select reference document only if account gets debited","Fila #{0}: Para {1}, puede seleccionar el documento de referencia solo si se debita la cuenta", +Row #{0}: From Date cannot be before To Date,Fila #{0}: La fecha de inicio no puede ser anterior a la fecha de finalización, +Row #{0}: Item {1} does not exist,Fila #{0}: El artículo {1} no existe, +"Row #{0}: Item {1} has been picked, please reserve stock from the Pick List.","Fila #{0}: El artículo {1} ha sido recogido, por favor reserve existencias de la Lista de Recogida.", +Row #{0}: Item {1} is not a service item,Fila #{0}: El artículo {1} no es un artículo de servicio, +Row #{0}: Item {1} is not a stock item,Fila #{0}: El artículo {1} no es un artículo de stock, +Row #{0}: Only {1} available to reserve for the Item {2},Fila #{0}: Solo {1} disponible para reservar para el artículo {2}, +Row #{0}: Please select Item Code in Assembly Items,"Fila #{0}: Por favor, seleccione el código del artículo en Artículos de ensamblaje", +Row #{0}: Please select the BOM No in Assembly Items,"Fila #{0}: Por favor, seleccione el nº de lista de materiales en Artículos de ensamblaje", +Row #{0}: Please select the Sub Assembly Warehouse,"Fila #{0}: Por favor, seleccione el Almacén de Sub-montaje", +Row #{0}: Please update deferred revenue/expense account in item row or default account in company master,"Fila #{0}: Por favor, actualice la cuenta de ingresos/gastos diferidos en la fila de artículos o la cuenta por defecto en el maestro de empresas", +Row #{0}: Qty increased by {1},Fila #{0}: Cantidad aumentada en {1}, +Row #{0}: Qty must be a positive number,Fila #{0}: La cantidad debe ser un número positivo, +Row #{0}: Qty should be less than or equal to Available Qty to Reserve (Actual Qty - Reserved Qty) {1} for Iem {2} against Batch {3} in Warehouse {4}.,Fila #{0}: La cantidad debe ser menor o igual a la cantidad disponible para reservar (cantidad real - cantidad reservada) {1} para Artículo {2} contra el lote {3} en el almacén {4}., +Row #{0}: Quantity to reserve for the Item {1} should be greater than 0.,Fila #{0}: La cantidad a reservar para el artículo {1} debe ser superior a 0., +Row #{0}: Rate must be same as {1}: {2} ({3} / {4}),Fila #{0}: La tasa debe ser la misma que {1}: {2} ({3} / {4}), +Row #{0}: Received Qty must be equal to Accepted + Rejected Qty for Item {1},Fila #{0}: La cantidad recibida debe ser igual a la cantidad aceptada + rechazada para el artículo {1}, +Row #{0}: Rejected Qty cannot be set for Scrap Item {1}.,Fila #{0}: No se puede establecer la cantidad rechazada para el artículo de rechazo {1}., +Row #{0}: Rejected Warehouse is mandatory for the rejected Item {1},Fila #{0}: El almacén rechazado es obligatorio para el artículo rechazado {1}, +Row #{0}: Scrap Item Qty cannot be zero,Fila #{0}: La cantidad de artículos desechados no puede ser cero, +"Row #{0}: Selling rate for item {1} is lower than its {2}. + Selling {3} should be atleast {4}.

Alternatively, + you can disable selling price validation in {5} to bypass + this validation.","Fila #{0}: El precio de venta del artículo {1} es inferior a su {2}. + Venta {3} debe ser al menos {4}.

Alternativamente, + puede desactivar la validación del precio de venta en {5} para saltarse + esta validación.", +Row #{0}: Serial No {1} for Item {2} is not available in {3} {4} or might be reserved in another {5}.,Fila #{0}: El número de serie {1} del artículo {2} no está disponible en {3} {4} o podría estar reservado en otro {5}., +Row #{0}: Serial No {1} is already selected.,Fila #{0}: El número de serie {1} ya está seleccionado., +Row #{0}: Start Time and End Time are required,Fila #{0}: Se requiere hora de inicio y hora de fin, +Row #{0}: Start Time must be before End Time,Fila #{0}: La hora de inicio debe ser antes del fin, +Row #{0}: Status is mandatory,Fila #{0}: El estado es obligatorio, +Row #{0}: Stock cannot be reserved for Item {1} against a disabled Batch {2}.,Fila #{0}: No se puede reservar stock para el artículo {1} contra un lote deshabilitado {2}., +Row #{0}: Stock cannot be reserved for a non-stock Item {1},Fila #{0}: No se puede reservar stock para un artículo que no es de stock {1}, +Row #{0}: Stock cannot be reserved in group warehouse {1}.,Fila #{0}: No se pueden reservar existencias en el almacén de grupo {1}., +Row #{0}: Stock is already reserved for the Item {1}.,Fila #{0}: Ya hay stock reservado para el artículo {1}., +Row #{0}: Stock is reserved for item {1} in warehouse {2}.,Fila #{0}: Hay stock reservado para el artículo {1} en el almacén {2}., +Row #{0}: Stock not available to reserve for Item {1} against Batch {2} in Warehouse {3}.,Fila #{0}: Stock no disponible para reservar para el artículo {1} contra el lote {2} en el almacén {3}., +Row #{0}: Stock not available to reserve for the Item {1} in Warehouse {2}.,Fila #{0}: Stock no disponible para reservar para el artículo {1} en el almacén {2}., +Row #{0}: The warehouse {1} is not a child warehouse of a group warehouse {2},Fila #{0}: El almacén {1} no es un almacén secundario de un almacén de grupo {2}, +Row #{0}: You cannot use the inventory dimension '{1}' in Stock Reconciliation to modify the quantity or valuation rate. Stock reconciliation with inventory dimensions is intended solely for performing opening entries.,Fila #{0}: No se puede utilizar la dimensión de inventario '{1}' en la conciliación de stock para modificar la cantidad o la tasa de valoración. La conciliación de stock con las dimensiones de inventario está destinada únicamente a realizar asientos de apertura., +Row #{0}: You must select an Asset for Item {1}.,Fila #{0}: Debe seleccionar un activo para el artículo {1}., +Row #{0}: {1} is not a valid reading field. Please refer to the field description.,Fila #{0}: {1} no es un campo de lectura válido. Consulte la descripción del campo., +Row #{0}: {1} of {2} should be {3}. Please update the {1} or select a different account.,"Fila #{0}: {1} de {2} debería ser {3}. Por favor, actualice {1} o seleccione una cuenta diferente.", +Row #{1}: Warehouse is mandatory for stock Item {0},Fila #{1}: El Almacén es obligatorio para el producto en stock {0}, +Row #{}: Finance Book should not be empty since you're using multiple.,"Fila #{}: Libro de Finanzas no debe estar vacío, ya que está utilizando múltiples.", +Row #{}: Please use a different Finance Book.,"Fila #{}: Por favor, utilice un Libro de Finanzas diferente.", +Row #{}: The original Invoice {} of return invoice {} is not consolidated.,Fila #{}: La factura original {} de la factura de devolución {} no está consolidada., +Row #{}: item {} has been picked already.,Fila #{}: el artículo {} ya ha sido seleccionado., +Row #{}: {} {} doesn't belong to Company {}. Please select valid {}.,"Fila #{}: {} {} no pertenece a la empresa {}. Por favor, seleccione una {} válida.", +Row No {0}: Warehouse is required. Please set a Default Warehouse for Item {1} and Company {2},Fila n.° {0}: Se requiere almacén. Establezca un almacén predeterminado para el artículo {1} y la empresa {2}, +Row Number,Número de fila, +Row {0},Fila {0}, +"Row {0} picked quantity is less than the required quantity, additional {1} {2} required.","Fila {0} la cantidad recogida es inferior a la requerida, se requiere {1} {2} adicional.", +Row {0}# Item {1} cannot be transferred more than {2} against {3} {4},Fila {0}# El artículo {1} no puede transferirse más que {2} contra {3} {4}, +Row {0}# Item {1} not found in 'Raw Materials Supplied' table in {2} {3},Fila {0}# El artículo {1} no se encontró en la tabla 'Materias primas suministradas' en {2} {3}, +Row {0}: Accepted Qty and Rejected Qty can't be zero at the same time.,Fila {0}: La cantidad aceptada y la cantidad rechazada no pueden ser cero al mismo tiempo., +Row {0}: Account {1} and Party Type {2} have different account types,Fila {0}: La cuenta {1} y el tipo de entidad {2} tienen diferentes tipos de cuenta, +Row {0}: Allocated amount {1} must be less than or equal to invoice outstanding amount {2},Fila {0}: El importe asignado {1} debe ser inferior o igual al importe pendiente de la factura {2}, +Row {0}: Allocated amount {1} must be less than or equal to remaining payment amount {2},Fila {0}: El importe asignado {1} debe ser inferior o igual al importe de pago restante {2}, +"Row {0}: As {1} is enabled, raw materials cannot be added to {2} entry. Use {3} entry to consume raw materials.","Fila {0}: Como {1} está activada, no se pueden añadir materias primas a la entrada {2} . Utilice la entrada {3} para consumir materias primas.", +Row {0}: Both Debit and Credit values cannot be zero,Fila {0}: Tanto el Debe como el Haber no pueden ser cero, +Row {0}: Cost Center {1} does not belong to Company {2},Fila {0}: El centro de costes {1} no pertenece a la empresa {2}, +Row {0}: Either Delivery Note Item or Packed Item reference is mandatory.,Fila {0}: La referencia del artículo de la nota de entrega o del artículo empaquetado es obligatoria., +Row {0}: Expense Head changed to {1} as no Purchase Receipt is created against Item {2}.,Fila {0}: el encabezado de gasto cambió a {1} ya que no se crea ningún recibo de compra para el artículo {2}., +Row {0}: Expense Head changed to {1} because account {2} is not linked to warehouse {3} or it is not the default inventory account,Fila {0}: Cabecera de Gasto cambiada a {1} porque la cuenta {2} no está vinculada al almacén {3} o no es la cuenta de inventario por defecto, +Row {0}: Expense Head changed to {1} because expense is booked against this account in Purchase Receipt {2},Fila {0}: Cabecera de Gasto cambiada a {1} porque el gasto se contabiliza contra esta cuenta en el Recibo de Compra {2}, +Row {0}: From Warehouse is mandatory for internal transfers,Fila {0}: Desde el almacén es obligatorio para transferencias internas, +Row {0}: Item Tax template updated as per validity and rate applied,Fila {0}: Plantilla de impuesto del artículo actualizada según la validez y la tasa aplicada, +Row {0}: Item rate has been updated as per valuation rate since its an internal stock transfer,"Fila {0}: La tarifa del artículo se ha actualizado según la tarifa de valoración, ya que se trata de una transferencia de stock interna", +Row {0}: Item {1} must be a stock item.,Fila {0}: El artículo {1} debe ser un artículo de stock., +Row {0}: Item {1} must be a subcontracted item.,Fila {0}: El artículo {1} debe ser un artículo subcontratado., +Row {0}: Packed Qty must be equal to {1} Qty.,Fila {0}: La cantidad embalada debe ser igual a la cantidad {1} ., +Row {0}: Packing Slip is already created for Item {1}.,Fila {0}: Ya se creó el albarán para el artículo {1}., +Row {0}: Payment Term is mandatory,Fila {0}: El plazo de pago es obligatorio, +Row {0}: Please provide a valid Delivery Note Item or Packed Item reference.,Fila {0}: proporcione una referencia de artículo de nota de entrega o artículo empaquetado válida., +Row {0}: Please select a BOM for Item {1}.,"Fila {0}: Por favor, seleccione una lista de materiales para el artículo {1}.", +Row {0}: Please select an active BOM for Item {1}.,"Fila {0}: Por favor, seleccione una lista de materiales activa para el artículo {1}.", +Row {0}: Please select an valid BOM for Item {1}.,"Fila {0}: Por favor, seleccione una lista de materiales válida para el artículo {1}.", +Row {0}: Project must be same as the one set in the Timesheet: {1}.,Fila {0}: El proyecto debe ser el mismo que el establecido en la hoja de horas: {1}., +Row {0}: Purchase Invoice {1} has no stock impact.,Fila {0}: La factura de compra {1} no tiene impacto en el stock., +Row {0}: Qty cannot be greater than {1} for the Item {2}.,Fila {0}: La cantidad no puede ser mayor que {1} para el artículo {2}., +Row {0}: Qty in Stock UOM can not be zero.,Fila {0}: La UdM de cantidad en stock no puede ser cero., +Row {0}: Qty must be greater than 0.,Fila {0}: La cantidad debe ser mayor que 0., +Row {0}: Shift cannot be changed since the depreciation has already been processed,Fila {0}: No se puede cambiar el turno porque ya se ha procesado la amortización, +Row {0}: Target Warehouse is mandatory for internal transfers,Fila {0}: El almacén de destino es obligatorio para las transferencias internas, +"Row {0}: To set {1} periodicity, difference between from and to date must be greater than or equal to {2}","Fila {0}: Para establecer la periodicidad {1} , la diferencia entre la fecha de inicio y la de finalización debe ser mayor o igual a {2}", +Row {0}: Total Number of Depreciations cannot be less than or equal to Opening Number of Booked Depreciations,Fila {0}: El número total de amortizaciones no puede ser inferior o igual al número inicial de amortizaciones contabilizadas, +Row {0}: {1} account already applied for Accounting Dimension {2},Fila {0}: {1} cuenta ya aplicada para la Dimensión Contable {2}, +Row {0}: {1} {2} cannot be same as {3} (Party Account) {4},Fila {0}: {1} {2} no puede ser la misma que {3} (Cuenta de la Entidad) {4}, +Row {0}: {2} Item {1} does not exist in {2} {3},Fila {0}: {2} El elemento {1} no existe en {2} {3}, +Row({0}): Outstanding Amount cannot be greater than actual Outstanding Amount {1} in {2},Fila({0}): El importe pendiente no puede ser mayor que el importe pendiente real {1} en {2}, +Rows with Same Account heads will be merged on Ledger,Las líneas con los mismos encabezamientos de cuenta se fusionarán en el Libro Mayor, +Rows: {0} have 'Payment Entry' as reference_type. This should not be set manually.,Filas: {0} tienen 'Entrada de pago' como reference_type. No debe establecerse manualmente., +Rows: {0} in {1} section are Invalid. Reference Name should point to a valid Payment Entry or Journal Entry.,Las filas {0} en la sección {1} no son válidas. El nombre de referencia debe apuntar a una entrada de pago o de diario válida., +Run parallel job cards in a workstation,Ejecutar tarjetas de trabajo en paralelo en una estación de trabajo, +Running,Ejecutando, +SCO Supplied Item,Artículo suministrado por SCO, +SLA Fulfilled On,SLA completado el, +SLA Fulfilled On Status,SLA cumplido en estado, +SLA Paused On,SLA en pausa, +SLA will be applied if {1} is set as {2}{3},SLA se aplicará si {1} se establece como {2}{3}, +SLA will be applied on every {0},El SLA se aplicará en cada {0}, +SMS Settings,Ajustes de SMS, +SO Total Qty,SO Cantidad total, +Salary Currency,Divisa de salario, +Sales Incoming Rate,Tasa de entrada de ventas, +Sales Invoice {0} must be deleted before cancelling this Sales Order,La factura de venta {0} debe eliminarse antes de cancelar esta orden de venta, +Sales Order Packed Item,Artículo empaquetado de la orden de venta, +Sales Order Reference,Referencia del pedido de venta, +Sales Order Status,Estado del pedido de venta, +"Sales Order {0} already exists against Customer's Purchase Order {1}. To allow multiple Sales Orders, Enable {2} in {3}","El Pedido de Venta {0} ya existe contra el Pedido de Compra del Cliente {1}. Para permitir múltiples Pedidos de Venta, habilite {2} en {3}.", +Sales Partner ,Socio de ventas , +Sales Partner Item,Artículo de socio de ventas, +Sales Partner Target Variance Based On Item Group,Variación de objetivos del socio de ventas según el grupo de artículos, +Sales Pipeline Analytics,Análisis del flujo de ventas, +Sales Update Frequency in Company and Project,Frecuencia de actualización de ventas en empresa y proyecto, +Sales Value,Valor de las ventas, +Salvage Value Percentage,Porcentaje de Valor de Recuperación, +Same item and warehouse combination already entered.,Ya se ha introducido la misma combinación de artículo y almacén., +Savings,Ahorros, +Scan Batch No,Escanear Lote No, +Scan Mode,Modo de escaneo, +Scan Serial No,Escanear número de serie, +Scan barcode for item {0},Escanee el código de barras del artículo {0}, +"Scan mode enabled, existing quantity will not be fetched.","Modo de escaneo habilitado, la cantidad existente no se obtendrá.", +Scanned Quantity,Cantidad escaneada, +Scheduled Time Logs,Registros de tiempo programado, +Scheduler is Inactive. Can't trigger job now.,El planificador está inactivo. No se puede activar el trabajo ahora., +Scheduler is Inactive. Can't trigger jobs now.,El planificador está inactivo. No se pueden activar los trabajos ahora., +Scheduler is inactive. Cannot enqueue job.,El planificador está inactivo. No se puede poner en cola el trabajo., +Scheduler is inactive. Cannot merge accounts.,El planificador está inactivo. No se pueden combinar cuentas., +Scheduling,Planificación, +Select Alternative Items for Sales Order,Seleccionar ítems alternativos para Orden de Venta, +Select View,Seleccione Vista, +Select an item from each set to be used in the Sales Order.,Seleccione un ítem de cada conjunto para usarlo en la Orden de Venta., +Send Attached Files,Enviar Archivos Adjuntos, +Send Document Print,Enviar Impresión de Documento, +Service Expenses,Gastos de servicio, +Service Item,Artículo de servicio, +Set Default Supplier,Establecer Proveedor Predeterminado, +Set Quantity,Establecer cantidad, +Set Warehouse,Establecer Almacén, +Shipment,Envío, +Shipment Amount,Monto del envío, +Shipment Delivery Note,Nota de Entrega de envío, +Shipment ID,ID de Envío, +Shipment Information,Información del Envío, +Shipment Type,Tipo de Envío, +Shipment details,Detalles del envío, +Show Failed Logs,Mostrar registros fallidos, +Show Preview,Mostrar Vista Previa, +Show Remarks,Mostrar Observaciones, +Skipped,Omitido, +"Skipping {0} of {1}, {2}","Saltando {0} de {1}, {2}", +Sold by,Vendido por, +Spacer,Espaciador, +Start Deletion,Iniciar eliminación, +Start Import,Comience a Importar, +Sub Operation,Sub operación, +Sub Operations,Sub operaciones, +Subcontracting Settings,Configuración de Subcontratación, +Subdivision,Subdivisión, +Submit After Import,Validar después de la importación, +Successfully imported {0} record.,Importado correctamente {0} registro., +Successfully imported {0} records.,Importado correctamente {0} registros., +Successfully linked to Customer,Vinculado exitosamente al Cliente, +Successfully linked to Supplier,Vinculado exitosamente al Proveedor, +Successfully merged {0} out of {1}.,Fusionado satisfactoriamente {0} de {1}., +Successfully updated {0},Actualizado exitosamente {0}, +"Successfully updated {0} record out of {1}. Click on Export Errored Rows, fix the errors and import again.","Registro {0} actualizado correctamente de {1}. Haga clic en Exportar filas con errores, corrija los errores e importe nuevamente.", +Successfully updated {0} record.,Registro {0} actualizado correctamente., +"Successfully updated {0} records out of {1}. Click on Export Errored Rows, fix the errors and import again.","Actualizado correctamente los registros {0} de {1}. Haga clic en Exportar filas Erroradas, corrija los errores e importe de nuevo.", +Successfully updated {0} records.,Registros {0} actualizados correctamente., +Supplied Item,Producto suministrado, +Supplier Address Details,Detalles de Dirección del Proveedor, +Supplier Info,Info. Proveedor, +Supplier Invoice,Factura de Proveedor, +Supplier Item,Producto del Proveedor, +Supplier Portal Users,Usuarios del Portal del Proveedor, +Supplier Primary Address,Dirección principal del Proveedor, +Supplier Primary Contact,Contacto principal del Proveedor, +Sync Now,Sincronizar ahora, +Sync Started,Sincronización Iniciada, +System Settings,Configuración del Sistema, +Tax Amount,Importe de Impuestos, +Tax Masters,Maestros Fiscales, +Tax Settings,Configuración de Impuestos, +Team,Equipo, +Template Options,Opciones de plantilla, +Template Warnings,Advertencias de plantilla, +Terms & Conditions,Términos y Condiciones, +Terms Template,Plantilla de Términos, +Territory Wise Sales,Ventas por territorios, +The Condition '{0}' is invalid,La Condición '{0}' no es válida, +"The sync has started in the background, please check the {0} list for new records.","La sincronización se ha iniciado en segundo plano, por favor compruebe en la lista {0} si hay nuevos registros.", +The task has been enqueued as a background job.,La tarea se ha puesto en cola como trabajo en segundo plano., +There was an error creating Bank Account while linking with Plaid.,Se ha producido un error al crear la cuenta bancaria mientras se vinculaba con Plaid., +There was an error syncing transactions.,Se ha producido un error al sincronizar las transacciones., +There was an error updating Bank Account {} while linking with Plaid.,Se ha producido un error al actualizar la cuenta bancaria {} mientras se vinculaba con Plaid., +There was an issue connecting to Plaid's authentication server. Check browser console for more information,Se ha producido un problema al conectar con el servidor de autenticación de Plaid. Compruebe la consola del navegador para obtener más información, +Time in mins,Tiempo en min, +Time in mins.,Tiempo en minutos., +Time slot is not available,La franja horaria no está disponible, +To Doctype,A Doctype, +Total Incoming Value (Receipt),Valor Total Entrante (Recepción), +Total Issues,Total de Incidencias, +Total Outgoing Value (Consumption),Valor Total Saliente (Consumo), +Total Supplied Qty,Cant. Total suministrada, +Total Time (in Mins),Tiempo total (en minutos), +Total Value,Valor Total, +Total Value Difference (Incoming - Outgoing),Diferencia de valor total (entrante - saliente), +Total Views,Total de visualizaciones, +Total Warehouses,Total Almacenes, +Tracking Status,Estado de seguimiento, +Tracking Status Info,Información de estado de seguimiento, +Tracking URL,URL de Seguimiento, +Transaction Settings,Configuración de Transacciones, +Transaction currency: {0} cannot be different from Bank Account({1}) currency: {2},Moneda de la transacción: {0} no puede ser diferente de la moneda de la cuenta bancaria ({1}): {2}, +Transit,Tránsito, +Transit Entry,Entrada de Tránsito, +Type of Transaction,Tipo de Transacción, +UAE VAT 201,IVA EAU 201, +Unable to find variable:,No se puede encontrar la variable:, +Unassigned Qty,Cant. Sin asignar, +Unit of Measure (UOM),Unidad de Medida (UdM), +Unlinked,Desvincular, +Unqualified,No calificada, +Unrealized Profit / Loss Account,Cuenta de Pérdidas/Ganancias no realizada, +Up,Arriba, +Update Existing Records,Actualizar registros existentes, +Update Rate as per Last Purchase,Actualizar tasa según la última compra, +Update Total Purchase Cost,Actualizar Costo Total de Compra, +Updating Work Order status,Actualizando estado de la Orden de Trabajo, +"Updating {0} of {1}, {2}","Actualización {0} de {1}, {2}", +Upload Bank Statement,Cargar extracto bancario, +Use Company Default Round Off Cost Center,Utilizar el Centro de Costes de redondeo por defecto de la Compañía, +Use Company default Cost Center for Round off,Utilizar el Centro de Costos por defecto de la compañía para el redondeo, +Use HTTP Protocol,Usar protocolo HTTP, +Use Transaction Date Exchange Rate,Usar el tipo de cambio de fecha de la transacción, +User {0}: Removed Employee Self Service role as there is no mapped employee.,"Usuario {0}: Eliminado el rol de Autoservicio del Empleado, ya que no hay ningún empleado mapeado.", +User {0}: Removed Employee role as there is no mapped employee.,"Usuario {0}: Se eliminó el rol de Empleado, ya que no hay ningún empleado asignado.", +VAT Accounts,Cuentas de IVA, +VAT Amount (AED),Importe del IVA (AED), +VAT Audit Report,Informe de auditoría del IVA, +Valuation Rate (In / Out),Tasa de Valoración (Entrada/Salida), +Value Change,Cambio de Valor, +Voucher,Comprobante, +"WARNING: Exotel app has been separated from ERPNext, please install the app to continue using Exotel integration.",ADVERTENCIA: La aplicación Exotel se ha separado de ERPNext; instale la aplicación para continuar usando la integración de Exotel., +Waiting for payment...,Esperando Pago..., +Warehouse Capacity for Item '{0}' must be greater than the existing stock level of {1} {2}.,Capacidad del Almacén para el Producto '{0}' debe ser mayor que el nivel de stock existente de {1} {2}., +Warehouse Details,Detalle del Almacén, +Warehouse Disabled?,¿Almacén deshabilitado?, +Warehouse Settings,Configuración del Almacén, +Warehouse Wise Stock Balance,Saldo de existencias en almacén, +Warehouse wise Stock Value,Valor de las existencias en función del almacén, +Warehouse {0} does not belong to Company {1}.,Almacén {0} no pertenece a la Compañía {1}., +Warning!,¡Advertencia!, +Watch Video,Ver video, +Website Script,Script del Sitio Web, +Website Theme,Tema del Sitio Web, +Week {0} {1},Semana {0} {1}, +Weight (kg),Peso (kg), +Width (cm),Ancho (cm), +Workflow,Flujos de Trabajo, +Workflow Action,Acciones de flujos de trabajo, +Workflow State,Estados de flujos de trabajo, +Workstation Status,Estado de la estación de trabajo, +Workstation Type,Tipo de estación de trabajo, +Workstations,Estación de trabajo, +Wrong Company,Compañía incorrecta, +You haven't created a {0} yet,Aún no ha creado un {0}, +Your Name (required),Su nombre (requerido), +`Allow Negative rates for Items`,`Permitir precios Negativos para los Productos`, +description,descripción, +fieldname,nombre del campo, +variance,variación, +{0} and {1},{0} y {1}, +{0} is already running for {1},{0} ya se está ejecutando por {1}, +{0} {1} Manually,{0} {1} Manualmente, +{0} {1} Partially Reconciled,{0} {1} Parcialmente reconciliado, +{0} {1}: Account {2} is a Group Account and group accounts cannot be used in transactions,{0} {1}: La cuenta {2} es una Cuenta de Grupo y las Cuentas de Grupo no pueden utilizarse en transacciones, +{0} {1}: Cost Center {2} is a group cost center and group cost centers cannot be used in transactions,{0} {1}: El Centro de Costos {2} es un Centro de Costos de Grupo y los Centros de Costos de Grupo no pueden utilizarse en transacciones, +{0}% of total invoice value will be given as discount.,{0}% del valor total de la factura se otorgará como descuento., +{} Available,{} Disponible, +{} Assigned,{} Asignado, +{} Available,{} Disponible, +{} Open,{} Abierto, +{} {} is already linked with another {},{} {} ya está vinculado con otro {}, +{} {} is already linked with {} {},{} {} ya está vinculado con {} {}, +"'Inspection Required before Delivery' has disabled for the item {0}, no need to create the QI","'Inspección requerida antes de la entrega' se ha desactivado para el artículo {0}, no es necesario crear el QI", +"'Inspection Required before Purchase' has disabled for the item {0}, no need to create the QI","'Inspección requerida antes de la compra' se ha desactivado para el artículo {0}, no es necesario crear el QI", +Additional Data,Datos Adicionales, +Advance Payment Ledger Entry,Asiento contable de pago anticipado, +Amounts,Importes, +Another Payment Request is already processed,Ya se ha tramitado otra solicitud de pago, +Applies To,Se aplica a, +At least one account with exchange gain or loss is required,Se requiere al menos una cuenta con ganancias o pérdidas por cambio, +Cannot {0} from {1} without any negative outstanding invoice,No se puede {0} desde {1} sin ninguna factura pendiente negativa, +Common Code,Código común, +Dates,Fechas, +Dimensions,Dimensiones, +Discount cannot be greater than 100%.,El descuento no puede ser superior al 100%., +Event,Evento, +Filter,Filtrar, +Forecast,Pronóstico, +Pay,Pagar,Amount +Publisher,Publicador, +Rate of Depreciation (%),Tasa de depreciación (%), +Rejected ,Rechazado , +Row #{0}: Quality Inspection is required for Item {1},Fila #{0}: Se requiere inspección de calidad para el artículo {1}, +Row #{0}: Quality Inspection {1} is not submitted for the item: {2},Fila #{0}: La inspección de calidad {1} no se ha validado para el artículo: {2}, +Row #{0}: Quality Inspection {1} was rejected for item {2},Fila #{0}: La inspección de calidad {1} fue rechazada para el artículo {2}, +Sales Person {0} is disabled.,Vendedor {0} está desactivado., +Secondary Party,Tercero secundario, +Section,Sección, +"Select Date of joining. It will have impact on the first salary calculation, Leave allocation on pro-rata bases.",Seleccione la fecha de incorporación. Esto tendrá un impacto en el cálculo del primer salario y en la asignación de permisos de manera prorrateada., +"Select the Item to be manufactured. The Item name, UoM, Company, and Currency will be fetched automatically.","Seleccione el artículo a fabricar. El nombre del artículo, la UdM, la empresa y la moneda se obtendrán automáticamente.", +Sending...,Enviando..., +Show Net Values in Party Account,Mostrar valores netos en la cuenta de la entidad, +Start Date should be lower than End Date,La fecha de inicio debe ser menor a la fecha final, +There is already a valid Lower Deduction Certificate {0} for Supplier {1} against category {2} for this time period.,Ya existe un certificado de deducción inferior válido {0} para el proveedor {1} contra la categoría {2} para este período., +This item filter has already been applied for the {0},El filtro ya se había usado para el tipo {0}, +Total Other Charges,Total de otros cargos, +Total Outgoing Bills,Total de Facturas Salientes, +Total Outgoing Payment,Pago Total Saliente, +Transferring cannot be done to an Employee. Please enter location where Asset {0} has to be transferred,"La transferencia no puede realizarse a un empleado. Por favor, introduzca la ubicación a la que debe transferirse el activo {0}", +Validate Stock on Save,Validar Stock al Guardar, +Version,Versión, +Advance Payment Date,Fecha de pago anticipado, +Advance Reconciliation Takes Effect On,La conciliación anticipada entra en vigor el, +Allow existing Serial No to be Manufactured/Received again,Permitir que los números de serie existentes se fabriquen/reciban de nuevo, +CANCELLED,CANCELADO, +Code List,Lista de códigos, +Has Corrective Cost,Tiene costo correctivo, +Mobile: ,Móvil: , +{0} is a mandatory field.,{0} es un campo obligatorio., diff --git a/erpnext/translations/fa.csv b/erpnext/translations/fa.csv index 7c2e8544c9c..68b5d94f05d 100644 --- a/erpnext/translations/fa.csv +++ b/erpnext/translations/fa.csv @@ -8743,3 +8743,2715 @@ WhatsApp,واتس اپ, Make a call,تماس بگیر, Approve,تایید, Reject,رد کردن, + Address, آدرس, + Amount, میزان, + Is Child Table, جدول فرزند است, + Name, نام, + Rate, نرخ, + Summary, خلاصه, +"""SN-01::10"" for ""SN-01"" to ""SN-10""","""SN-01::10"" برای ""SN-01"" تا ""SN-10""", +# In Stock,# در موجودی, +# Req'd Items,# آیتم‌های درخواست شده, +% Finished Item Quantity,% مقدار آیتم تمام شده, +% Occupied,٪ مشغول, +% Picked,% انتخاب شده, +% Process Loss,% از دست دادن فرآیند, +% Returned,% برگردانده شده, +'Account' in the Accounting section of Customer {0},حساب در بخش حسابداری مشتری {0}, +'Allow Multiple Sales Orders Against a Customer's Purchase Order',اجازه دادن سفارش‌های فروش چندگانه در برابر سفارش خرید مشتری, +'Default {0} Account' in Company {1},«حساب پیش‌فرض {0}» در شرکت {1}, +'To Package No.' cannot be less than 'From Package No.',"'به شماره بسته.' نمی تواند کمتر از ""از شماره بسته"" باشد.", +'{0}' account is already used by {1}. Use another account.,حساب '{0}' قبلاً توسط {1} استفاده شده است. از حساب دیگری استفاده کنید., +'{0}' should be in company currency {1}.,"""{0}"" باید به ارز شرکت {1} باشد.", +(A) Qty After Transaction,(A) تعداد پس از تراکنش, +(B) Expected Qty After Transaction,(ب) تعداد مورد انتظار پس از تراکنش, +(C) Total Qty in Queue,(C) تعداد کل در صف, +(C) Total qty in queue,(C) تعداد کل در صف, +(D) Balance Stock Value,(D) ارزش موجودی, +(E) Balance Stock Value in Queue,(E) موجودی ارزش موجودی در صف, +(F) Change in Stock Value,(F) تغییر در ارزش موجودی, +(G) Sum of Change in Stock Value,(ز) مجموع تغییر در ارزش موجودی, +(H) Change in Stock Value (FIFO Queue),(H) تغییر در ارزش موجودی (صف FIFO), +(H) Valuation Rate,(H) نرخ ارزش گذاری, +(I) Valuation Rate,(I) نرخ ارزش گذاری, +(J) Valuation Rate as per FIFO,(J) نرخ ارزیابی مطابق با FIFO, +(K) Valuation = Value (D) ÷ Qty (A),(K) ارزش = ارزش (D) ÷ تعداد (A), +", with the inventory {0}: {1}",، با موجودی {0}: {1}, +0-30 Days,0-30 روز, +3 Yearly,3 سالانه, +30-60 Days,30-60 روز, +60-90 Days,60-90 روز, +90 Above,90 بالا, +"
Other Details
","
جزئیات دیگر
", +"
No Matching Bank Transactions Found
","
هیچ تراکنش بانکی منطبقی پیدا نشد
", +"
+

All dimensions in centimeter only

+
","
+

همه ابعاد فقط به سانتی‌متر

+
", +"

About Product Bundle

+ +

Aggregate group of Items into another Item. This is useful if you are bundling a certain Items into a package and you maintain stock of the packed Items and not the aggregate Item.

+

The package Item will have Is Stock Item as No and Is Sales Item as Yes.

+

Example:

+

If you are selling Laptops and Backpacks separately and have a special price if the customer buys both, then the Laptop + Backpack will be a new Product Bundle Item.

","

درباره باندل محصول

+ +

گروهی از آیتم‌ها را در آیتم دیگری جمع آوری کنید. اگر آیتم‌های خاصی را در یک باندل قرار دهید و موجودی آیتم‌های بسته بندی شده را حفظ کنید و نه آیتم‌های جمع آوری شده، مفید است.

+

بسته آیتم دارای آیتم موجودی است به عنوان خیر و آیتم فروش است به عنوان بله خواهد بود. .

+

مثال:

+

اگر لپ‌تاپ و کوله‌پشتی را جداگانه می‌فروشید و اگر مشتری هر دو را بخرد، قیمت ویژه‌ای دارید، لپ‌تاپ + کوله‌پشتی یک کالای باندل محصول جدید خواهد بود.

", +"
Or
","
یا
", +"","", +"","", +"","", +"Masters & Reports","مستندات و گزارش ها", +"Quick Access","دسترسی سریع", +"Reports & Masters","گزارش ها و مستندات", +"Reports & Masters","گزارش ها و مستندات", +"Settings","تنظیمات", +"Shortcuts","میانبرها", +"Your Shortcuts + + + + + + ","میانبرهای شما + + + + + + ", +"Your Shortcuts","میانبرهای شما", +Grand Total: {0},جمع کل: {0}, +Outstanding Amount: {0},مبلغ معوق: {0}, +A - B,الف - ب, +A - C,الف - ج, +A Holiday List can be added to exclude counting these days for the Workstation.,فهرست تعطیلات را می توان اضافه کرد تا شمارش این روزها برای ایستگاه کاری حذف شود., +A Packing Slip can only be created for Draft Delivery Note.,یک برگه بسته بندی فقط می تواند برای پیش نویس یادداشت تحویل ایجاد شود., +"A Price List is a collection of Item Prices either Selling, Buying, or both",لیست قیمت مجموعه ای از قیمت های آیتم‌های فروش، خرید یا هر دو است, +A Reconciliation Job {0} is running for the same filters. Cannot reconcile now,یک کار تطبیق {0} برای همین فیلترها در حال اجرا است. الان نمیشه تطبیق کرد, +A Transaction Deletion Document: {0} is triggered for {0},یک سند حذف تراکنش: {0} برای {0} فعال می شود, +A customer must have primary contact email.,مشتری باید ایمیل تماس اصلی داشته باشد., +A driver must be set to submit.,یک راننده باید برای ارسال تنظیم شود., +A template with tax category {0} already exists. Only one template is allowed with each tax category,الگویی با دسته مالیاتی {0} از قبل وجود دارد. فقط یک الگو با هر دسته مالیات مجاز است, +API Details,جزئیات API, +AWB Number,شماره AWB, +Abbreviation: {0} must appear only once,مخفف: {0} باید فقط یک بار ظاهر شود, +About Us Settings,تنظیمات درباره ما, +About {0} minute remaining,حدود {0} دقیقه باقی مانده است, +About {0} minutes remaining,حدود {0} دقیقه باقی مانده است, +About {0} seconds remaining,حدود {0} ثانیه باقی مانده است, +Acceptance Criteria Formula,فرمول معیارهای پذیرش, +Acceptance Criteria Value,مقدار معیارهای پذیرش, +Accepted Qty in Stock UOM,تعداد پذیرفته شده در انبار UOM, +Access Key,کلید دسترسی, +Access Key is required for Service Provider: {0},کلید دسترسی برای ارائه‌دهنده خدمات لازم است: {0}, +Account Balance (From),تراز حساب (از), +Account Balance (To),تراز حساب (به), +Account Closing Balance,تراز اختتامیه حساب, +Account Currency (From),ارز حساب (از), +Account Currency (To),ارز حساب (به), +Account Opening Balance,تراز افتتاحیه حساب, +Account not Found,حساب پیدا نشد, +Account {0} added multiple times,حساب {0} چندین بار اضافه شد, +Accounting Dimension Filter,فیلتر ابعاد حسابداری, +Accounting Dimensions Filter,فیلتر ابعاد حسابداری, +Accounting Entry for {0},ثبت حسابداری برای {0}, +Accounts Closing,بسته شدن حساب ها, +Accounts Missing Error,خطای گم شدن حساب ها, +Accounts Receivable/Payable,حساب های دریافتنی / پرداختنی, +Accounts to Merge,حساب ها برای ادغام, +Action If Quality Inspection Is Rejected,اقدام اگر بازرسی کیفیت رد شود, +Action If Same Rate is Not Maintained,اگر همان نرخ حفظ نشود، اقدام کنید, +Action if Same Rate is Not Maintained Throughout Sales Cycle,اگر نرخ یکسانی در طول چرخه فروش حفظ نشود، اقدام کنید, +Active Status,وضعیت فعال, +Actual Balance Qty,مقدار تراز واقعی, +Actual Expense,هزینه واقعی, +Actual Posting,ارسال واقعی, +Actual Qty in Warehouse,مقدار واقعی در انبار, +Actual Time,زمان واقعی, +Add Columns in Transaction Currency,اضافه کردن ستون به ارز تراکنش, +Add Corrective Operation Cost in Finished Good Valuation,اضافه کردن هزینه عملیات اصلاحی در ارزش گذاری کالای تمام شده, +Add Discount,افزودن تخفیف, +Add Items in the Purpose Table,افزودن آیتم‌ها در جدول هدف, +Add Lead to Prospect,لید را به Prospect اضافه کنید, +Add Local Holidays,تعطیلات محلی را اضافه کنید, +Add Manually,افزودن دستی, +Add Or Deduct,افزودن یا کسر, +Add Serial / Batch Bundle,افزودن باندل سریال / دسته, +Add Serial / Batch No,اضافه کردن سریال / شماره دسته, +Add Serial / Batch No (Rejected Qty),اضافه کردن سریال / شماره دسته (تعداد رد شده), +Add Stock,افزودن موجودی, +Add Sub Assembly,افزودن زیر مونتاژ, +Add Template,اضافه کردن الگو, +Add a Note,یک یادداشت اضافه کنید, +Add details,جزئیات را اضافه کنید, +Add to Prospect,به Prospect اضافه کنید, +Added By,اضافه شده توسط, +Added On,اضافه شده در, +Added Supplier Role to User {0}.,نقش تامین کننده به کاربر {0} اضافه شد., +Added {1} Role to User {0}.,نقش {1} به کاربر {0} اضافه شد., +Adding Lead to Prospect...,افزودن سرنخ به مشتری بالقوه..., +Additional,اضافی, +Additional Asset Cost,هزینه دارایی اضافی, +Additional Cost Per Qty,هزینه اضافی در هر تعداد, +Additional Info,اطلاعات اضافی, +Address And Contacts,آدرس و مخاطبین, +Adjust Asset Value,ارزش دارایی را تنظیم کنید, +Adjustment Against,تعدیل در مقابل, +Adjustment based on Purchase Invoice rate,تعدیل بر اساس نرخ فاکتور خرید, +Advance Payment,پیش پرداخت, +Advance Tax,پیش پرداخت مالیات, +Advance Taxes and Charges,پیش پرداخت مالیات و هزینه ها, +Advance paid against {0} {1} cannot be greater than Grand Total {2},پیش پرداخت در مقابل {0} {1} نمی تواند بیشتر از کل کل {2} باشد, +Advance payments allocated against orders will only be fetched,پیش پرداخت های تخصیص یافته در برابر سفارش ها فقط واکشی می شود, +Affected Transactions,معاملات تحت تأثیر, +Against Customer Order {0},در مقابل سفارش مشتری {0}, +Against Supplier Invoice {0},در مقابل فاکتور تامین کننده {0}, +Against Voucher No,در مقابل کوپن شماره, +Age ({0}),سن ({0}), +Ageing Range,محدوده سالخوردگی, +Agent Busy Message,پیام مامور مشغول, +Agent Group,گروه عامل, +Agent Unavailable Message,پیام عامل در دسترس نیست, +Aggregate a group of Items into another Item. This is useful if you are maintaining the stock of the packed items and not the bundled item,گروهی از آیتم‌ها را در یک آیتم دیگر جمع کنید. اگر موجودی آیتم‌های بسته بندی شده را نگهداری می کنید و نه آیتم باندل شده، مفید است, +Algorithm,الگوریتم, +All Activities,تمام فعالیت ها, +All Activities HTML,تمام فعالیت ها HTML, +All Items,همه آیتم ها, +All allocations have been successfully reconciled,همه تخصیص ها با موفقیت تطبیق داده شده است, +All items have already been received,همه آیتم‌ها قبلاً دریافت شده است, +All items in this document already have a linked Quality Inspection.,همه آیتم‌ها در این سند قبلاً دارای یک بازرسی کیفیت مرتبط هستند., +All the Comments and Emails will be copied from one document to another newly created document(Lead -> Opportunity -> Quotation) throughout the CRM documents.,تمام نظرات و ایمیل ها از یک سند به سند جدید ایجاد شده دیگر (سرنخ -> فرصت -> پیش فاکتور) در سراسر اسناد CRM کپی می شوند., +"All the required items (raw materials) will be fetched from BOM and populated in this table. Here you can also change the Source Warehouse for any item. And during the production, you can track transferred raw materials from this table.",تمام آیتم‌های مورد نیاز (مواد اولیه) از BOM واکشی شده و در این جدول پر می شود. در اینجا شما همچنین می توانید انبار منبع را برای هر آیتم تغییر دهید. و در حین تولید می توانید مواد اولیه انتقال یافته را از این جدول ردیابی کنید., +Allocate Payment Request,تخصیص درخواست پرداخت, +Allocated Entries,ورودی های اختصاص داده شده, +Allocated To:,اختصاص داده شده به:, +Allocations,تخصیص ها, +Allow,اجازه, +Allow Alternative Item must be checked on Item {},آیتم جایگزین مجاز است باید برای آیتم {} علامت زده شود, +Allow Continuous Material Consumption,اجازه مصرف مداوم مواد, +Allow Excess Material Transfer,اجازه انتقال مواد اضافی را بدهید, +Allow Item to be Added Multiple Times in a Transaction,اجازه دهید آیتم چندین بار در یک تراکنش اضافه شود, +Allow Lead Duplication based on Emails,اجازه تکرار سرنخ بر اساس ایمیل, +Allow Negative rates for Items,نرخ های منفی برای آیتم‌ها مجاز است, +Allow Or Restrict Dimension,اجازه یا محدود کردن ابعاد, +Allow Partial Reservation,اجازه رزرو جزئی, +Allow Purchase,اجازه خرید, +Allow Sales,اجازه فروش, +Allow Sales Order Creation For Expired Quotation,اجازه ایجاد سفارش فروش برای قیمت منقضی شده, +Allow User to Edit Discount,به کاربر اجازه ویرایش تخفیف را بدهید, +Allow User to Edit Rate,به کاربر اجازه ویرایش نرخ بدهید, +Allow Zero Rate,اجازه نرخ صفر, +Allow material consumptions without immediately manufacturing finished goods against a Work Order,اجازه مصرف مواد را بدون تولید فوری کالاهای تمام شده در برابر دستور کار بدهید, +Allow multi-currency invoices against single party account , صورتحساب‌های چند ارزی را در برابر حساب یک طرف مجاز کنید, +Allow to Edit Stock UOM Qty for Purchase Documents,اجازه ویرایش موجودی UOM Qty برای اسناد خرید, +Allow to Edit Stock UOM Qty for Sales Documents,امکان ویرایش موجودی UOM Qty برای اسناد فروش, +Allow transferring raw materials even after the Required Quantity is fulfilled,امکان انتقال مواد خام حتی پس از برآورده شدن مقدار مورد نیاز, +Allowed,مجاز, +Allowed Dimension,ابعاد مجاز, +Allowed Doctypes,Doctypes مجاز, +Allowed Items,آیتم‌های مجاز, +Allowed primary roles are 'Customer' and 'Supplier'. Please select one of these roles only.,نقش‌های اصلی مجاز عبارتند از «مشتری» و «تامین‌کننده». لطفا فقط یکی از این نقش ها را انتخاب کنید., +Allows to keep aside a specific quantity of inventory for a particular order.,اجازه می دهد تا مقدار مشخصی از موجودی را برای یک سفارش خاص کنار بگذارید., +Already Picked,قبلاً انتخاب شده است, +Alternative Items,آیتم‌های جایگزین, +"Alternatively, you can download the template and fill your data in.",همچنین می توانید الگو را دانلود کرده و داده های خود را پر کنید., +Amount (AED),مقدار (AED), +Amount Eligible for Commission,مبلغ واجد شرایط برای کمیسیون, +Amount in Account Currency,مبلغ به ارز حساب, +Amount in party's bank account currency,مبلغ به ارز حساب بانکی طرف, +Amount in transaction currency,مبلغ به ارز تراکنش, +An Item Group is a way to classify items based on types.,گروه آیتم راهی برای دسته بندی آیتم‌ها بر اساس انواع است., +An error has been appeared while reposting item valuation via {0},هنگام ارسال مجدد ارزیابی مورد از طریق {0} خطایی ظاهر شد, +An error has occurred during {0}. Check {1} for more details,خطایی در طول {0} رخ داده است. برای جزئیات بیشتر {1} را بررسی کنید,Error Log +Annual Revenue,درآمد سالانه, +"Another Cost Center Allocation record {0} applicable from {1}, hence this allocation will be applicable upto {2}",یکی دیگر از رکوردهای تخصیص مرکز هزینه {0} قابل اعمال از {1}، بنابراین این تخصیص تا {2} قابل اعمال خواهد بود., +"Any one of following filters required: warehouse, Item Code, Item Group",هر یک از فیلترهای زیر مورد نیاز است: انبار، کد آیتم، گروه آیتم, +Applicable Dimension,ابعاد قابل اجرا, +Applicable On Account,قابل اجرا در حساب, +Applied on each reading.,در هر خواندن اعمال می شود., +Applied putaway rules.,اعمال قوانین حذف, +Apply Putaway Rule,اعمال قانون Putaway, +Apply Recursion Over (As Per Transaction UOM),اعمال بازگشت بیش از (بر اساس UOM تراکنش), +Apply SLA for Resolution Time,اعمال SLA برای زمان حل و فصل, +Apply TDS,TDS را اعمال کنید, +Apply Tax Withholding Amount , اعمال مبلغ کسر مالیات, +Apply restriction on dimension values,اعمال محدودیت در مقادیر ابعاد, +Apply to All Inventory Documents,برای همه اسناد موجودی اعمال شود, +Apply to Document,درخواست برای سند, +Appointment Created Successfully,قرار ملاقات با موفقیت ایجاد شد, +Appointment Scheduling Disabled,زمان‌بندی قرار غیرفعال است, +Appointment Scheduling has been disabled for this site,زمان‌بندی قرار برای این سایت غیرفعال شده است, +Appointment was created. But no lead was found. Please check the email to confirm,قرار ملاقات ایجاد شد. اما سرنخی پیدا نشد. لطفا برای تایید ایمیل را بررسی کنید, +Approximately match the description/party name against parties,تقریباً توصیف/نام طرف را با طرف‌ها مطابقت دهید, +Are you sure you want to clear all demo data?,آیا مطمئن هستید که می خواهید تمام داده های نمایشی را پاک کنید؟, +Are you sure you want to delete this Item?,آیا مطمئن هستید که میخواهید این آیتم را حذف کنید؟, +Are you sure you want to restart this subscription?,آیا مطمئن هستید که می خواهید این اشتراک را مجدداً راه‌اندازی کنید؟, +As on Date,همانطور که در تاریخ, +"As there are existing submitted transactions against item {0}, you can not change the value of {1}.",از آنجایی که تراکنش‌های ارسالی موجود در مقابل آیتم {0} وجود دارد، نمی‌توانید مقدار {1} را تغییر دهید., +"As there are negative stock, you can not enable {0}.",از آنجایی که موجودی منفی وجود دارد، نمی توانید {0} را فعال کنید., +"As there are reserved stock, you cannot disable {0}.",از آنجایی که موجودی رزرو شده وجود دارد، نمی توانید {0} را غیرفعال کنید., +"As there are sufficient Sub Assembly Items, Work Order is not required for Warehouse {0}.",از آنجایی که آیتم‌های زیر مونتاژ کافی وجود دارد، برای انبار {0} نیازی به دستور کار نیست., +"As {0} is enabled, you can not enable {1}.",از آنجایی که {0} فعال است، نمی توانید {1} را فعال کنید., +Assembly Items,آیتم‌های مونتاژ, +Asset Activity,فعالیت دارایی, +Asset Capitalization,سرمایه گذاری دارایی ها, +Asset Capitalization Asset Item,دارایی دارایی با سرمایه, +Asset Capitalization Service Item,آیتم خدمات سرمایه گذاری دارایی, +Asset Capitalization Stock Item,آیتم موجودی سرمایه گذاری دارایی, +Asset Depreciation Details,جزئیات استهلاک دارایی, +Asset Depreciation Schedule,جدول استهلاک دارایی ها, +Asset Depreciation Schedule for Asset {0} and Finance Book {1} is not using shift based depreciation,برنامه استهلاک دارایی برای دارایی {0} و کتاب مالی {1} از استهلاک مبتنی بر شیفت استفاده نمی کند, +Asset Depreciation Schedule not found for Asset {0} and Finance Book {1},برنامه استهلاک دارایی برای دارایی {0} و کتاب مالی {1} یافت نشد, +Asset Depreciation Schedule {0} for Asset {1} already exists.,برنامه استهلاک دارایی {0} برای دارایی {1} از قبل وجود دارد., +Asset Depreciation Schedule {0} for Asset {1} and Finance Book {2} already exists.,برنامه استهلاک دارایی {0} برای دارایی {1} و کتاب مالی {2} از قبل وجود دارد., +"Asset Depreciation Schedules created:
{0}

Please check, edit if needed, and submit the Asset.",برنامه‌های استهلاک دارایی ایجاد شده:
{0}

لطفاً بررسی کنید، در صورت نیاز ویرایش کنید و دارایی را ارسال کنید., +Asset ID,شناسه دارایی, +Asset Quantity,مقدار دارایی, +Asset Repair Consumed Item,کالای مصرفی تعمیر دارایی, +Asset Settings,تنظیمات دارایی, +Asset Shift Allocation,تخصیص تغییر دارایی, +Asset Shift Factor,عامل تغییر دارایی, +Asset Shift Factor {0} is set as default currently. Please change it first.,عامل تغییر دارایی {0} در حال حاضر به عنوان پیش فرض تنظیم شده است. لطفا ابتدا آن را تغییر دهید., +Asset cancelled,دارایی لغو شد, +Asset capitalized after Asset Capitalization {0} was submitted,پس از ارسال دارایی با حروف بزرگ {0} دارایی با حروف بزرگ نوشته شد, +Asset created,دارایی ایجاد شد, +Asset created after Asset Capitalization {0} was submitted,دارایی ایجاد شده پس از ارسال با حروف بزرگ دارایی {0}, +Asset created after being split from Asset {0},دارایی پس از جدا شدن از دارایی {0} ایجاد شد, +Asset decapitalized after Asset Capitalization {0} was submitted,پس از ارسال دارایی با سرمایه {0}، دارایی از سرمایه خارج شد, +Asset deleted,دارایی حذف شد, +Asset issued to Employee {0},دارایی برای کارمند {0} حواله شده, +Asset out of order due to Asset Repair {0},دارایی از کار افتاده به دلیل تعمیر دارایی {0}, +Asset received at Location {0} and issued to Employee {1},دارایی در مکان {0} دریافت و برای کارمند {1} حواله شد, +Asset restored,دارایی بازیابی شد, +Asset restored after Asset Capitalization {0} was cancelled,دارایی پس از لغو حروف بزرگ دارایی {0} بازیابی شد, +Asset returned,دارایی برگردانده شد, +Asset scrapped,دارایی از بین رفته است, +Asset sold,دارایی فروخته شده, +Asset submitted,دارایی ارسال شد, +Asset transferred to Location {0},دارایی به مکان {0} منتقل شد, +Asset updated after being split into Asset {0},دارایی پس از تقسیم به دارایی {0} به روز شد, +Asset updated after cancellation of Asset Repair {0},دارایی پس از لغو تعمیر دارایی {0} به روز شد, +Asset updated after completion of Asset Repair {0},دارایی پس از اتمام تعمیر دارایی به روز شد {0}, +Asset {0} cannot be received at a location and given to an employee in a single movement,دارایی {0} را نمی توان در یک مکان دریافت کرد و در یک حرکت به کارمند داد, +Asset {0} does not belong to Item {1},دارایی {0} به آیتم {1} تعلق ندارد, +Asset {0} does not exist,دارایی {0} وجود ندارد, +Asset {0} has been created. Please set the depreciation details if any and submit it.,دارایی {0} ایجاد شده است. لطفاً جزئیات استهلاک را در صورت وجود تنظیم و ارسال کنید., +Asset {0} has been updated. Please set the depreciation details if any and submit it.,دارایی {0} به روز شده است. لطفاً جزئیات استهلاک را در صورت وجود تنظیم و ارسال کنید., +Asset's depreciation schedule updated after Asset Shift Allocation {0},برنامه استهلاک دارایی پس از تخصیص تغییر دارایی {0} به روز شد, +Asset's value adjusted after cancellation of Asset Value Adjustment {0},ارزش دارایی پس از لغو تعدیل ارزش دارایی تنظیم شد {0}, +Asset's value adjusted after submission of Asset Value Adjustment {0},ارزش دارایی پس از ارسال تعدیل ارزش دارایی تنظیم شد {0}, +Assign Job to Employee,کار را به کارمند واگذار کنید, +Assignment,تخصیص, +Assignment Conditions,شرایط تخصیص, +At Row #{0}: The picked quantity {1} for the item {2} is greater than available stock {3} for the batch {4} in the warehouse {5}.,در ردیف #{0}: مقدار انتخاب شده {1} برای آیتم {2} بیشتر از موجودی در دسترس {3} برای دسته {4} در انبار {5} است., +At Row #{0}: The picked quantity {1} for the item {2} is greater than available stock {3} in the warehouse {4}.,در ردیف #{0}: مقدار انتخاب شده {1} برای آیتم {2} بیشتر از موجودی در دسترس {3} در انبار {4} است., +At row {0}: Batch No is mandatory for Item {1},در ردیف {0}: شماره دسته برای مورد {1} اجباری است, +At row {0}: Parent Row No cannot be set for item {1},در ردیف {0}: ردیف والد برای آیتم {1} قابل تنظیم نیست, +At row {0}: Qty is mandatory for the batch {1},در ردیف {0}: مقدار برای دسته {1} اجباری است, +At row {0}: Serial No is mandatory for Item {1},در ردیف {0}: شماره سریال برای آیتم {1} اجباری است, +At row {0}: Serial and Batch Bundle {1} has already created. Please remove the values from the serial no or batch no fields.,در ردیف {0}: باندل سریال و دسته {1} قبلا ایجاد شده است. لطفاً مقادیر را از فیلدهای شماره سریال یا شماره دسته حذف کنید., +At row {0}: set Parent Row No for item {1},در ردیف {0}: تنظیم شماره ردیف والد برای آیتم {1}, +Attach CSV File,پیوست فایل CSV, +Attendance & Leaves,حضور و غیاب و مرخصی, +Attribute value: {0} must appear only once,مقدار مشخصه: {0} باید فقط یک بار ظاهر شود, +Auto Create Exchange Rate Revaluation,ایجاد خودکار تجدید ارزیابی نرخ ارز, +Auto Create Purchase Receipt,ایجاد خودکار رسید خرید, +Auto Create Serial and Batch Bundle For Outward,ایجاد خودکار باندل سریال و دسته برای بیرون, +Auto Create Subcontracting Order,ایجاد خودکار سفارش قرارداد فرعی, +Auto Created Serial and Batch Bundle,باندل سریال و دسته ایجاد شده به صورت خودکار, +Auto Creation of Contact,ایجاد خودکار مخاطب, +Auto Email Report,گزارش خودکار ایمیل, +Auto Insert Item Price If Missing,درج خودکار قیمت آیتم در صورت فراموش شدن, +Auto Name,نام خودکار, +Auto Reconcile,تطبیق خودکار, +Auto Reconcile Payments,تطبیق خودکار پرداخت ها, +Auto Reconciliation,تطبیق خودکار, +Auto Reconciliation of Payments has been disabled. Enable it through {0},تطبیق خودکار پرداخت‌ها غیرفعال شده است. آن را از طریق {0} فعال کنید, +Auto Reserve Serial and Batch Nos,شماره سریال و دسته رزرو خودکار, +Auto Reserve Stock for Sales Order on Purchase,ذخیره خودکار موجودی برای سفارش فروش در هنگام خرید, +Auto close Opportunity Replied after the no. of days mentioned above,فرصت بسته شدن خودکار پس از خیر پاسخ داده شد. از روزهای ذکر شده در بالا, +Auto match and set the Party in Bank Transactions,مطابقت خودکار و تنظیم طرف در معاملات بانکی, +Auto write off precision loss while consolidation,حذف خودکار از دست دادن دقت در هنگام تلفیق, +Automatically Add Filtered Item To Cart,افزودن خودکار آیتم فیلتر شده به سبد خرید, +Automatically Fetch Payment Terms from Order,واکشی خودکار شرایط پرداخت از سفارش, +Automatically post balancing accounting entry,ثبت حسابداری تراز به طور خودکار, +Available Qty For Consumption,تعداد موجود برای مصرف, +Available Qty at Company,تعداد موجود در شرکت, +Available Qty at Target Warehouse,تعداد موجود در انبار هدف, +Available Qty to Reserve,تعداد برای رزرو موجود است, +Average Completion,میانگین تکمیل, +Avg Rate,میانگین نرخ, +Avg Rate (Balance Stock),میانگین نرخ (تراز موجودی), +BOM Created,BOM ایجاد شد, +BOM Creator,ایجاد کننده BOM, +BOM Creator Item,آیتم ایجاد کننده BOM, +BOM Info,اطلاعات BOM, +BOM Level,سطح BOM, +BOM Tree,درخت BOM, +BOM UoM,واحد اندازه گیری BOM, +BOM Update Batch,دسته به روز رسانی BOM, +BOM Update Initiated,به روز رسانی BOM آغاز شد, +BOM Update Log,لاگ به روز رسانی BOM, +BOM Updation already in progress. Please wait until {0} is complete.,به‌روزرسانی BOM در حال انجام است. لطفاً صبر کنید تا {0} کامل شود., +BOM Updation is queued and may take a few minutes. Check {0} for progress.,به روز رسانی BOM در صف است و ممکن است چند دقیقه طول بکشد. برای پیشرفت، {0} را بررسی کنید., +BOM and Production,BOM و تولید, +BOM recursion: {1} cannot be parent or child of {0},بازگشت BOM: {1} نمی تواند والد یا فرزند {0} باشد, +BOMs Updated,BOM ها به روز شدند, +BOMs created successfully,BOM با موفقیت ایجاد شد, +BOMs creation failed,ایجاد BOM ناموفق بود, +"BOMs creation has been enqueued, kindly check the status after some time",ایجاد BOM در نوبت قرار گرفته است، لطفاً وضعیت را پس از مدتی بررسی کنید, +Balance Qty (Stock),مقدار تراز (موجودی), +Balance Sheet Summary,خلاصه ترازنامه, +Balance Stock Value,تراز ارزش موجودی, +Bank Reconciliation Tool,ابزار تطبیق بانکی, +Bank Statement Import,درون‌بُرد صورتحساب بانکی, +Bank Transaction {0} Matched,تراکنش بانکی {0} مطابقت دارد, +Bank Transaction {0} added as Journal Entry,تراکنش بانکی {0} به عنوان ثبت دفتر روزنامه اضافه شد, +Bank Transaction {0} added as Payment Entry,تراکنش بانکی {0} به عنوان ثبت پرداخت اضافه شد, +Bank Transaction {0} is already fully reconciled,تراکنش بانکی {0} در حال حاضر به طور کامل تطبیق شده است, +Bank Transaction {0} updated,تراکنش بانکی {0} به روز شد, +Bank/Cash Account,بانک / حساب نقدی, +Bank/Cash Account {0} doesn't belong to company {1},حساب بانکی/نقدی {0} به شرکت {1} تعلق ندارد, +Base Amount,مقدار پایه, +Base Cost Per Unit,هزینه پایه به ازای هر واحد, +Base Rate,نرخ پایه, +Base Tax Withholding Net Total,کل خالص کسر مالیات پایه, +Base Total,مجموع پایه, +Base Total Billable Amount,مبنا کل مبلغ قابل پرداخت, +Base Total Billed Amount,مبنا کل مبلغ صورتحساب, +Base Total Costing Amount,مبنا کل بهای تمام شده, +Based On Value,بر اساس ارزش, +"Based on your HR Policy, select your leave allocation period's end date",بر اساس خط مشی منابع انسانی خود، تاریخ پایان دوره تخصیص مرخصی خود را انتخاب کنید, +"Based on your HR Policy, select your leave allocation period's start date",بر اساس خط مشی منابع انسانی خود، تاریخ شروع دوره تخصیص مرخصی خود را انتخاب کنید, +Batch No is mandatory,شماره دسته اجباری است, +Batch No {0} does not exists,شماره دسته {0} وجود ندارد, +Batch No {0} is linked with Item {1} which has serial no. Please scan serial no instead.,شماره دسته {0} با آیتم {1} که دارای شماره سریال است پیوند داده شده است. لطفاً شماره سریال را اسکن کنید., +Batch No.,شماره دسته, +Batch Nos,شماره های دسته, +Batch Nos are created successfully,شماره های دسته با موفقیت ایجاد شد, +Batch Qty,مقدار دسته, +Batch and Serial No,شماره دسته و سریال, +Batch not created for item {} since it does not have a batch series.,دسته ای برای آیتم {} ایجاد نشده است زیرا سری دسته ای ندارد., +Batch {0} and Warehouse,دسته {0} و انبار, +Batch {0} is not available in warehouse {1},دسته {0} در انبار {1} موجود نیست, +Batchwise Valuation,ارزش گذاری دسته ای, +Beginning of the current subscription period,شروع دوره اشتراک فعلی, +Bill for Rejected Quantity in Purchase Invoice,صورتحساب مقدار رد شده در فاکتور خرید, +Billed Items To Be Received,آیتم‌های صورتحساب شده برای دریافت, +"Billed, Received & Returned",صورتحساب، دریافت و برگردانده شد, +Billing Address Details,جزئیات آدرس صورتحساب, +Billing Interval in Subscription Plan must be Month to follow calendar months,فاصله صورتحساب در طرح اشتراک باید ماه باشد تا ماه‌های تقویمی را دنبال کنید, +Blanket Order Allowance (%),سفارش کلی مجاز (%), +Bom No,شماره BOM, +Book Advance Payments as Liability option is chosen. Paid From account changed from {0} to {1}.,گزینه رزرو پیش پرداخت به عنوان بدهی انتخاب شده است. حساب Paid From از {0} به {1} تغییر کرد., +Book Advance Payments in Separate Party Account,پیش پرداخت را در حساب طرف جداگانه رزرو کنید, +Book Tax Loss on Early Payment Discount,از دست دادن مالیات در تخفیف پرداخت زودهنگام رزرو کنید, +Book an appointment,یک قرار ملاقات رزرو کنید, +Booking stock value across multiple accounts will make it harder to track stock and account value.,رزرو ارزش موجودی در چندین حساب، ردیابی موجودی و ارزش حساب را دشوارتر می کند., +Books have been closed till the period ending on {0},کتاب‌ها تا پایان دوره {0} بسته شده‌اند, +Budget Exceeded,بودجه بیش از حد, +Build All?,ساخت همه؟, +Buildable Qty,تعداد قابل ساخت, +Bulk Transaction Log,لاگ تراکنش های انبوه, +Bulk Transaction Log Detail,جزئیات لاگ تراکنش های انبوه, +Bulk Update,به روز رسانی انبوه, +Bundle Items,آیتم‌های باندل, +Buying & Selling Settings,تنظیمات خرید و فروش, +Buying and Selling,خرید و فروش, +"By default, the Supplier Name is set as per the Supplier Name entered. If you want Suppliers to be named by a Naming Series choose the 'Naming Series' option.","به‌طور پیش‌فرض، نام تامین‌کننده مطابق با نام تامین‌کننده وارد شده تنظیم می‌شود. اگر می‌خواهید تامین‌کنندگان با سری نام‌گذاری نام‌گذاری شوند. گزینه ""Naming Series"" را انتخاب کنید.", +Bypass credit check at Sales Order,دور زدن بررسی اعتبار در سفارش فروش, +COGS By Item Group,COGS بر اساس گروه آیتم, +CRM Note,یادداشت CRM, +CRM Settings,تنظیمات CRM, +Calculate Product Bundle Price based on Child Items' Rates,قیمت باندل محصول را بر اساس نرخ آیتم‌های فرزند محاسبه کنید, +Call Again,دوباره تماس بگیر, +Call Ended,مکالمه تلفنی تمام شد, +Call Handling Schedule,برنامه رسیدگی به تماس ها, +Call Received By,تماس دریافت شده توسط, +Call Receiving Device,دستگاه دریافت تماس, +Call Routing,مسیریابی تماس, +Call Schedule Row {0}: To time slot should always be ahead of From time slot.,ردیف زمان‌بندی تماس {0}: بازه زمانی To همیشه باید جلوتر از بازه زمانی از زمان باشد., +Call Type,نوع تماس, +Callback,پاسخ به تماس, +Campaign Item,آیتم کمپین, +Can not close Work Order. Since {0} Job Cards are in Work In Progress state.,نمی توان دستور کار را بست. از آنجایی که کارت کارهای {0} در حالت کار در حال انجام هستند., +"Can not filter based on Child Account, if grouped by Account",اگر براساس حساب گروه‌بندی شود، نمی‌توان بر اساس حساب فرزند فیلتر کرد, +"Can't change the valuation method, as there are transactions against some items which do not have its own valuation method",نمی توان روش ارزش گذاری را تغییر داد، زیرا معاملاتی در برابر برخی اقلام وجود دارد که روش ارزش گذاری خاص خود را ندارند., +Cannot Merge,نمی توان ادغام کرد, +Cannot Resubmit Ledger entries for vouchers in Closed fiscal year.,نمی‌توان ورودی‌های دفتر کل را برای کوپن‌ها در سال مالی بسته دوباره ارسال کرد., +"Cannot amend {0} {1}, please create a new one instead.",نمی توان {0} {1} را اصلاح کرد، لطفاً در عوض یک مورد جدید ایجاد کنید., +Cannot apply TDS against multiple parties in one entry,نمی‌توان TDS را در یک ورودی در مقابل چندین طرف اعمال کرد, +Cannot cancel the transaction. Reposting of item valuation on submission is not completed yet.,نمی توان تراکنش را لغو کرد. ارسال مجدد ارزیابی اقلام هنگام ارسال هنوز تکمیل نشده است., +Cannot change Reference Document Type.,نمی توان نوع سند مرجع را تغییر داد., +Cannot complete task {0} as its dependant task {1} are not completed / cancelled.,نمی توان کار {0} را تکمیل کرد زیرا وظیفه وابسته آن {1} تکمیل نشده / لغو شد., +Cannot convert Task to non-group because the following child Tasks exist: {0}.,نمی توان وظیفه را به غیر گروهی تبدیل کرد زیرا وظایف فرزند زیر وجود دارد: {0}., +Cannot convert to Group because Account Type is selected.,نمی توان به گروه تبدیل کرد زیرا نوع حساب انتخاب شده است., +Cannot create Stock Reservation Entries for future dated Purchase Receipts.,نمی توان ورودی های رزرو موجودی را برای رسیدهای خرید با تاریخ آینده ایجاد کرد., +Cannot create a pick list for Sales Order {0} because it has reserved stock. Please unreserve the stock in order to create a pick list.,نمی‌توان فهرست انتخابی برای سفارش فروش {0} ایجاد کرد زیرا موجودی رزرو کرده است. لطفاً برای ایجاد لیست انتخاب، موجودی را لغو رزرو کنید., +Cannot create accounting entries against disabled accounts: {0},نمی توان ورودی های حسابداری را در برابر حساب های غیرفعال ایجاد کرد: {0}, +Cannot enqueue multi docs for one company. {0} is already queued/running for company: {1},نمی توان چند سند را برای یک شرکت در صف قرار داد. {0} قبلاً برای شرکت: {1} در صف/در حال اجراست, +Cannot find a default warehouse for item {0}. Please set one in the Item Master or in Stock Settings.,نمی توان یک انبار پیش فرض برای آیتم {0} پیدا کرد. لطفاً یکی را در مدیریت آیتم یا در تنظیمات سهام تنظیم کنید., +Cannot make any transactions until the deletion job is completed,تا زمانی که کار حذف کامل نشود، نمی توان هیچ تراکنشی انجام داد, +Cannot produce more item for {0},نمی توان مورد بیشتری برای {0} تولید کرد, +Cannot produce more than {0} items for {1},نمی توان بیش از {0} مورد برای {1} تولید کرد, +Cannot receive from customer against negative outstanding,نمی توان از مشتری در برابر معوقات منفی دریافت کرد, +Cannot retrieve link token for update. Check Error Log for more information,نمی توان توکن پیوند را برای به روز رسانی بازیابی کرد. برای اطلاعات بیشتر Log خطا را بررسی کنید, +Cannot retrieve link token. Check Error Log for more information,توکن پیوند بازیابی نمی شود. برای اطلاعات بیشتر Log خطا را بررسی کنید, +Capacity (Stock UOM),ظرفیت (Stock UOM), +Capacity in Stock UOM,ظرفیت موجود در انبار UOM, +Capacity must be greater than 0,ظرفیت باید بیشتر از 0 باشد, +Capitalization,حروف بزرگ, +Capitalization Method,روش حروف بزرگ, +Capitalize Asset,سرمایه گذاری دارایی, +Capitalize Repair Cost,سرمایه گذاری در هزینه تعمیر, +Capitalized,با حروف بزرگ, +Carrier,حامل, +Carrier Service,خدمات حامل, +Carry Forward Communication and Comments,انتقال ارتباطات و نظرات, +Category Details,جزئیات دسته, +Caution: This might alter frozen accounts.,احتیاط: این ممکن است حساب های مسدود شده را تغییر دهد., +Change in Stock Value,تغییر در ارزش موجودی, +Changed customer name to '{}' as '{}' already exists.,"نام مشتری به ""{}"" به عنوان ""{}"" تغییر کرده است.", +Changes,تغییرات, +Charge of type 'Actual' in row {0} cannot be included in Item Rate or Paid Amount,"هزینه از نوع ""واقعی"" در ردیف {0} نمی تواند در نرخ مورد یا مبلغ پرداختی لحاظ شود", +Chart Of Accounts,نمودار حساب, +Checking this will round off the tax amount to the nearest integer,بررسی این مقدار مالیات را به نزدیکترین عدد صحیح گرد می کند, +Choose a WIP composite asset,یک دارایی ترکیبی «کار در حال انجام» را انتخاب کنید, +Clear Demo Data,پاک کردن داده های نمایشی, +Clear Notifications,پاک کردن اعلان ها, +Clearing Demo Data...,در حال پاک کردن داده های نمایشی..., +Click on 'Get Finished Goods for Manufacture' to fetch the items from the above Sales Orders. Items only for which a BOM is present will be fetched.,"برای دریافت آیتم‌ها از سفارش‌های فروش فوق، روی ""دریافت کالاهای تمام شده برای ساخت"" کلیک کنید. فقط آیتم‌هایی که BOM برای آنها وجود دارد واکشی می شوند.", +Click on Add to Holidays. This will populate the holidays table with all the dates that fall on the selected weekly off. Repeat the process for populating the dates for all your weekly holidays,روی افزودن به تعطیلات کلیک کنید. با این کار جدول تعطیلات با تمام تاریخ هایی که در تعطیلات هفتگی انتخاب شده قرار می گیرند پر می کند. فرآیند پر کردن تاریخ ها را برای تمام تعطیلات هفتگی خود تکرار کنید, +Click on Get Sales Orders to fetch sales orders based on the above filters.,برای دریافت سفارش‌های فروش بر اساس فیلترهای بالا، روی دریافت سفارش‌های فروش کلیک کنید., +Click to add email / phone,برای افزودن ایمیل / تلفن کلیک کنید, +Close Replied Opportunity After Days,بستن فرصت پاسخ داده شده پس از چند روز, +Closed Work Order can not be stopped or Re-opened,دستور کار بسته را نمی توان متوقف کرد یا دوباره باز کرد, +Closing,بسته شدن, +Closing Balance as per Bank Statement,مانده پایانی طبق صورتحساب بانکی, +Closing Balance as per ERP,تراز پایانی طبق ERP, +Closing Stock Balance,تراز پایانی موجودی, +Communication Channel,کانال ارتباطی, +Company Address Display,نمایش آدرس شرکت, +Company Billing Address,آدرس صورتحساب شرکت, +Company Details,جزئیات شرکت, +Company Shipping Address,آدرس حمل و نقل شرکت, +Company Tax ID,شناسه مالیاتی شرکت, +Company and Posting Date is mandatory,شرکت و تاریخ ارسال الزامی است, +Company is mandatory,شرکت الزامی است, +Company is mandatory for generating an invoice. Please set a default company in Global Defaults.,شرکت برای تهیه فاکتور الزامی است. لطفاً یک شرکت پیش‌فرض را در پیش‌فرض‌های سراسری تنظیم کنید., +Company which internal customer represents,شرکتی که مشتری داخلی نماینده آن است, +Company which internal customer represents.,شرکتی که مشتری داخلی نماینده آن است., +Company which internal supplier represents,شرکتی که تامین کننده داخلی آن را نمایندگی می کند, +Company {0} is added more than once,شرکت {0} بیش از یک بار اضافه شده است, +Company {} does not exist yet. Taxes setup aborted.,شرکت {} هنوز وجود ندارد. تنظیم مالیات لغو شد., +Company {} does not match with POS Profile Company {},شرکت {} با نمایه POS شرکت {} مطابقت ندارد, +Competitor,رقیب, +Competitor Detail,جزئیات رقیب, +Competitor Name,نام رقیب, +Competitors,رقبا, +Complete Job,کار کامل, +Completed On,تکمیل شد, +Completed On cannot be greater than Today,تکمیل شده در تاریخ نمی تواند بزرگتر از امروز باشد, +Completed Tasks,وظایف تکمیل شده, +Completed Time,زمان تکمیل شده, +Conditional Rule,قانون مشروط, +Conditional Rule Examples,مثال های قانون شرطی, +Configure Product Assembly,پیکربندی اسمبلی محصول, +Configure the action to stop the transaction or just warn if the same rate is not maintained.,کنش را طوری پیکربندی کنید که تراکنش را متوقف کند یا در صورت عدم حفظ همان نرخ فقط هشدار دهد., +Connections,اتصالات, +Consider Entire Party Ledger Amount,کل مبلغ دفتر کل طرف را در نظر بگیرید, +Consider Minimum Order Qty,در نظر گرفتن حداقل تعداد سفارش, +Consider Rejected Warehouses,در نظر گرفتن انبارهای مرجوعی, +Considered In Paid Amount,به مبلغ پرداختی در نظر گرفته شده است, +Consolidate Sales Order Items,تلفیق آیتم‌های سفارش فروش, +Consolidate Sub Assembly Items,تلفیق آیتم‌های زیر مونتاز, +Consumed Asset Items is mandatory for Decapitalization,اقلام دارایی مصرف شده برای کاهش سرمایه اجباری است, +Consumed Asset Total Value,ارزش کل دارایی مصرف شده, +Consumed Assets,دارایی های مصرف شده, +Consumed Quantity,مقدار مصرف شده, +Consumed Stock Items,آیتم‌های موجودی مصرفی, +Consumed Stock Total Value,ارزش کل موجودی مصرف شده, +Consumption Rate,نرخ مصرف, +Contact Details,اطلاعات تماس, +Contact Mobile,موبایل مخاطب, +Contact Us Settings,تنظیمات تماس با ما, +Contacts,مخاطب, +Contract Template Help,راهنمای الگوی قرارداد, +Contribution Qty,مقدار مشارکت, +Control Historical Stock Transactions,معاملات تاریخی موجودی را کنترل کنید, +Convert Item Description to Clean HTML in Transactions,توضیحات مورد را به Clean HTML در Transactions تبدیل کنید, +Convert to Group,تبدیل به گروه,Warehouse +Convert to Item Based Reposting,تبدیل به ارسال مجدد بر اساس آیتم, +Convert to Ledger,تبدیل به دفتر کل,Warehouse +Core,هسته, +Corrective Job Card,کارت کار اصلاحی, +Corrective Operation,عملیات اصلاحی, +Corrective Operation Cost,هزینه عملیات اصلاحی, +Cost Center Allocation,تخصیص مرکز هزینه, +Cost Center Allocation Percentage,درصد تخصیص مرکز هزینه, +Cost Center Allocation Percentages,درصدهای تخصیص مرکز هزینه, +Cost Center For Item with Item Code {0} has been Changed to {1},مرکز هزینه برای مورد با کد مورد {0} به {1} تغییر کرده است, +"Cost Center is a part of Cost Center Allocation, hence cannot be converted to a group",مرکز هزینه بخشی از تخصیص مرکز هزینه است، بنابراین نمی توان آن را به یک گروه تبدیل کرد, +Cost Center with Allocation records can not be converted to a group,مرکز هزینه با رکوردهای تخصیص را نمی توان به گروه تبدیل کرد, +Cost Center {0} cannot be used for allocation as it is used as main cost center in other allocation record.,مرکز هزینه {0} را نمی توان برای تخصیص استفاده کرد زیرا به عنوان مرکز هزینه اصلی در سایر رکوردهای تخصیص استفاده می شود., +Cost Center {} doesn't belong to Company {},مرکز هزینه {} متعلق به شرکت {} نیست, +Cost Center {} is a group cost center and group cost centers cannot be used in transactions,مرکز هزینه {} یک مرکز هزینه گروهی است و مراکز هزینه گروهی را نمی توان در تراکنش ها استفاده کرد, +Cost Configuration,پیکربندی هزینه, +Cost Per Unit,هزینه هر واحد, +Cost of Poor Quality Report,گزارش هزینه کیفیت پایین, +Cost to Company (CTC),هزینه شرکت (CTC), +Costing Details,جزئیات هزینه, +Could Not Delete Demo Data,داده های نسخه ی نمایشی حذف نشد, +Could not auto update shifts. Shift with shift factor {0} needed.,به‌روزرسانی خودکار شیفت‌ها ممکن نیست. Shift با ضریب تغییر {0} مورد نیاز است., +Could not detect the Company for updating Bank Accounts,شرکت برای به‌روزرسانی حساب‌های بانکی شناسایی نشد, +Could not find path for , مسیری برای پیدا نشد, +Count,شمردن, +Create Depreciation Entry,ایجاد ثبت استهلاک, +Create Employee records.,ایجاد رکوردهای کارمندان., +Create Grouped Asset,ایجاد دارایی گروهی, +Create Job Card based on Batch Size,ایجاد کارت کار بر اساس اندازه دسته ای, +Create Ledger Entries for Change Amount,برای تغییر مقدار، ورودی های دفتر کل ایجاد کنید, +Create Link,ایجاد لینک, +Create Multi-level BOM,BOM چند سطحی ایجاد کنید, +Create New Customer,مشتری جدید ایجاد کنید, +Create Opportunity,ایجاد فرصت, +Create Prospect,ایجاد مشتری بالقوه, +Create Reposting Entries,ورودی های ارسال مجدد ایجاد کنید, +Create Reposting Entry,ایجاد ورودی ارسال مجدد, +Create Stock Entry,ایجاد ثبت موجودی, +Create a new composite asset,یک دارایی ترکیبی جدید ایجاد کنید, +Create {0} {1} ?,{0} {1} ایجاد شود؟, +Created On,ایجاد شد, +Created {0} scorecards for {1} between:,ایجاد {0} کارت امتیازی برای {1} بین:, +Creating Delivery Note ...,ایجاد یادداشت تحویل ..., +Creating Packing Slip ...,ایجاد برگه بسته بندی ..., +Creating Purchase Invoices ...,ایجاد فاکتورهای خرید ..., +Creating Purchase Receipt ...,ایجاد رسید خرید ..., +Creating Sales Invoices ...,ایجاد فاکتورهای فروش ..., +Creating Stock Entry,ایجاد ثبت موجودی, +Creating Subcontracting Order ...,ایجاد سفارش پیمانکاری فرعی ..., +Creating Subcontracting Receipt ...,ایجاد رسید پیمانکاری فرعی ..., +Creating User...,ایجاد کاربر..., +Creation,ایجاد, +Creation of {1}(s) successful,ایجاد {1}(ها) با موفقیت, +Credit (Transaction),اعتبار (تراکنش), +Credit Amount in Transaction Currency,مقدار اعتبار به ارز تراکنش, +Credit Limit Crossed,از حد اعتبار عبور کرد, +Credit Limit Settings,تنظیمات محدودیت اعتباری, +Currency Exchange Settings Details,جزئیات تنظیمات تبادل ارز, +Currency Exchange Settings Result,نتیجه تنظیمات تبادل ارز, +Current Asset,دارایی جاری, +Current Index,شاخص فعلی, +Current Level,سطح فعلی, +Current Liability,بدهی جاری, +Current Serial / Batch Bundle,باندل سریال / دسته فعلی, +Custom,سفارشی, +Customer , مشتری, +Customer / Item / Item Group,مشتری / آیتم / گروه آیتم, +Customer Defaults,پیش فرض های مشتری, +Customer Group Item,مورد گروه مشتری, +Customer Group: {0} does not exist,گروه مشتری: {0} وجود ندارد, +Customer Item,مورد مشتری, +Customer Name: , نام مشتری:, +Customer Portal Users,کاربران پورتال مشتری, +Customer: , مشتری:, +D - E,د - ای, +Daily Time to send,زمان ارسال روزانه, +Dashboard,داشبورد, +Data Based On,داده ها بر اساس, +Date , تاریخ, +Date must be between {0} and {1},تاریخ باید بین {0} و {1} باشد, +Days before the current subscription period,چند روز قبل از دوره اشتراک فعلی, +Deal Owner,صاحب معامله, +Debit (Transaction),بدهی (تراکنش), +Debit Amount in Transaction Currency,مبلغ بدهی به ارز تراکنش, +Decapitalization,سرمایه زدایی, +Decapitalized,بدون سرمایه, +Default Advance Account,حساب پیش فرض پیش فرض, +Default Advance Paid Account,حساب پیش فرض پیش پرداخت, +Default Advance Received Account,پیش فرض پیش فرض حساب دریافت شده, +Default BOM not found for FG Item {0},BOM پیش فرض برای آیتم کالای تمام شده {0} یافت نشد, +Default Discount Account,حساب تخفیف پیش فرض, +Default In-Transit Warehouse,انبار پیش فرض در حمل و نقل, +Default Payment Discount Account,حساب تخفیف پیش‌فرض پرداخت, +Default Provisional Account,حساب موقت پیش فرض, +Default Service Level Agreement for {0} already exists.,توافقنامه سطح سرویس پیش فرض برای {0} از قبل وجود دارد., +Default Unit of Measure for Item {0} cannot be changed directly because you have already made some transaction(s) with another UOM. You need to either cancel the linked documents or create a new Item.,واحد اندازه گیری پیش فرض برای مورد {0} را نمی توان مستقیماً تغییر داد زیرا قبلاً تراکنش(هایی) را با UOM دیگری انجام داده اید. شما باید اسناد پیوند داده شده را لغو کنید یا یک مورد جدید ایجاد کنید., +Default settings for your stock-related transactions,تنظیمات پیش‌فرض برای تراکنش‌های مربوط به موجودی شما, +"Default tax templates for sales, purchase and items are created.",الگوهای مالیاتی پیش فرض برای فروش، خرید و اقلام ایجاد می شود., +Deferred Accounting,حسابداری معوق, +Deferred Accounting Defaults,پیش‌فرض‌های حسابداری معوق, +Deferred Revenue and Expense,درآمد و هزینه معوق, +Deferred accounting failed for some invoices:,حسابداری معوق برای برخی از فاکتورها ناموفق بود:, +Delay (In Days),تاخیر (در چند روز), +Delayed,با تاخیر, +Delayed Tasks Summary,خلاصه وظایف تاخیری, +Delete Accounting and Stock Ledger Entries on deletion of Transaction,حذف ورودی های حسابداری و دفتر کل موجودی در حذف تراکنش, +Delete Cancelled Ledger Entries,ورودی های لغو شده در دفتر کل را حذف کنید, +Delete Dimension,حذف ابعاد, +Delete Leads and Addresses,سرنخ ها و آدرس ها را حذف کنید, +Delete Transactions,حذف تراکنش ها, +Deleted Documents,اسناد حذف شده, +Deletion in Progress!,حذف در حال انجام است!, +Delimiter options,گزینه های جداکننده, +Delivery Manager,مدیر تحویل, +Delivery Note Packed Item,کالای بسته بندی شده یادداشت تحویل, +Delivery Note(s) created for the Pick List,یادداشت(های) تحویل برای لیست انتخاب ایجاد شده است, +Delivery User,کاربر تحویل, +Delivery to,تحویل به, +Demo Company,شرکت دمو, +Demo data cleared,داده‌های نمایشی پاک شد, +Dependant SLE Voucher Detail No,شماره جزئیات کوپن SLE وابسته, +Dependent Task {0} is not a Template Task,وظیفه وابسته {0} یک کار الگو نیست, +Deposit,سپرده, +Depreciate based on daily pro-rata,استهلاک بر اساس تناسب روزانه, +Depreciate based on shifts,استهلاک بر اساس نوبت, +Depreciation Details,جزئیات استهلاک, +Depreciation Entry Posting Status,وضعیت ثبت استهلاک, +Depreciation Expense Account should be an Income or Expense Account.,حساب هزینه استهلاک باید یک حساب درآمد یا هزینه باشد., +Depreciation Schedule View,مشاهده برنامه زمانبندی استهلاک, +Depreciation cannot be calculated for fully depreciated assets,استهلاک برای دارایی های کاملا مستهلک شده قابل محاسبه نیست, +Description of Content,شرح مطالب, +Desk User,کاربر میز, +Difference In,تفاوت در, +Difference Posting Date,تفاوت تاریخ ارسال, +Difference Qty,تفاوت تعداد, +Different 'Source Warehouse' and 'Target Warehouse' can be set for each row.,برای هر ردیف می توان «انبار منبع» و «انبار هدف» متفاوتی را تنظیم کرد., +Dimension Details,جزئیات ابعاد, +Dimension Filter Help,راهنمای فیلتر ابعاد, +Dimension-wise Accounts Balance Report,گزارش تراز حسابها از نظر ابعاد, +Direct Expense,هزینه مستقیم, +Disable Last Purchase Rate,نرخ آخرین خرید را غیرفعال کنید, +Disable Serial No And Batch Selector,غیرفعال کردن سریال No And Batch Selector, +Disabled Account Selected,حساب غیرفعال انتخاب شد, +Disabled Warehouse {0} cannot be used for this transaction.,از انبار غیرفعال شده {0} نمی توان برای این تراکنش استفاده کرد., +Disabled pricing rules since this {} is an internal transfer,قوانین قیمت گذاری غیرفعال شده است زیرا این {} یک انتقال داخلی است, +Disabled tax included prices since this {} is an internal transfer,مالیات غیرفعال شامل قیمت‌ها می‌شود زیرا این {} یک انتقال داخلی است, +Disables auto-fetching of existing quantity,واکشی خودکار مقدار موجود را غیرفعال می کند, +Disassemble,مجزا کردن (دیس اسمبل), +Discount Account,حساب تخفیف, +Discount Date,تاریخ تخفیف, +Discount Settings,تنظیمات تخفیف, +Discount Validity,اعتبار تخفیف, +Discount Validity Based On,اعتبار تخفیف بر اساس, +Discount of {} applied as per Payment Term,تخفیف {} طبق شرایط پرداخت اعمال شد, +Discounted Amount,مبلغ با تخفیف, +"Discounts to be applied in sequential ranges like buy 1 get 1, buy 2 get 2, buy 3 get 3 and so on",تخفیف هایی که در محدوده های متوالی اعمال می شوند مانند خرید 1 دریافت 1، خرید 2 دریافت 2، خرید 3 دریافت 3 و غیره, +Discrepancy between General and Payment Ledger,اختلاف بین دفتر کل و دفتر پرداخت, +Dispatch Address,آدرس اعزام, +Dispatch Address Name,نام آدرس اعزام, +Distinct Item and Warehouse,کالا و انبار متمایز, +Distribute Additional Costs Based On , توزیع هزینه های اضافی بر اساس, +Distribute Manually,توزیع دستی, +Do Not Explode,گسترده نکنید, +DocTypes should not be added manually to the 'Excluded DocTypes' table. You are only allowed to remove entries from it.,DocTypes نباید به صورت دستی به جدول 'Excluded DocTypes' اضافه شود. شما فقط مجاز به حذف ورودی ها از آن هستید., +Document Type already used as a dimension,نوع سند قبلاً به عنوان بعد استفاده شده است, +Documents,اسناد, +Documents: {0} have deferred revenue/expense enabled for them. Cannot repost.,اسناد: {0} درآمد/هزینه معوق را برای آنها فعال کرده است. امکان ارسال مجدد وجود ندارد., +Domain Settings,تنظیمات دامنه, +Don't Reserve Sales Order Qty on Sales Return,تعداد سفارش فروش را در بازگشت فروش رزرو نکنید, +Don't Send Emails,ایمیل ارسال نکنید, +Dont Recompute tax,مالیات را دوباره محاسبه نکنید, +Download Backups,دانلود نسخه پشتیبان, +Download CSV Template,دانلود قالب CSV, +Download Materials Request Plan,دانلود طرح درخواست مواد, +Download Materials Request Plan Section,دانلود بخش طرح درخواست مواد, +Dunning Amount (Company Currency),مقدار Dunning (ارز شرکت), +Dunning Level,سطح دانینگ, +Duplicate Closing Stock Balance,تکرار کردن تراز موجودی اختتامیه, +Duplicate Customer Group,گروه مشتریان تکراری, +Duplicate Finance Book,کتاب مالی تکراری, +Duplicate Item Group,گروه آیتم تکراری, +Duplicate POS Invoices found,فاکتورهای POS تکراری پیدا شد, +Edit Capacity,ویرایش ظرفیت, +Edit Full Form,ویرایش فرم کامل, +Edit Note,ویرایش یادداشت, +Editing {0} is not allowed as per POS Profile settings,ویرایش {0} طبق تنظیمات نمایه POS مجاز نیست, +Either 'Selling' or 'Buying' must be selected,«فروش» یا «خرید» باید انتخاب شود, +Email / Notifications,ایمیل / اعلان ها, +Email Address (required),آدرس ایمیل (الزامی), +"Email Address must be unique, it is already used in {0}",آدرس ایمیل باید منحصر به فرد باشد، از قبل در {0} استفاده شده است, +Email Digest Recipient,دریافت کننده خلاصه ایمیل, +Email Digest: {0},خلاصه ایمیل: {0}, +Email Domain,دامنه ایمیل, +Email or Phone/Mobile of the Contact are mandatory to continue.,برای ادامه ایمیل یا تلفن/موبایل مخاطب الزامی است., +Email verification failed.,تأیید ایمیل انجام نشد., +Employee User Id,شناسه کاربر کارمند, +Enable Allow Partial Reservation in the Stock Settings to reserve partial stock.,برای رزرو موجودی جزئی، Allow Partial Reservation را در تنظیمات موجودی فعال کنید., +Enable Automatic Party Matching,تنظیم خودکار طرف را فعال کنید, +Enable Common Party Accounting,حسابداری طرف مشترک را فعال کنید, +Enable Discount Accounting for Selling,فعال کردن حسابداری تخفیف برای فروش, +Enable Fuzzy Matching,Fuzzy Matching را فعال کنید, +Enable Provisional Accounting For Non Stock Items,فعال کردن حسابداری موقت برای آیتم‌ها غیر موجودی, +Enable Stock Reservation,فعال کردن رزرو موجودی, +Enable it if users want to consider rejected materials to dispatch.,اگر کاربران می خواهند مواد رد شده را برای ارسال در نظر بگیرند، آن را فعال کنید., +Enable to apply SLA on every {0},فعال کردن اعمال SLA در هر {0}, +Enabling this option will allow you to record -

1. Advances Received in a Liability Account instead of the Asset Account

2. Advances Paid in an Asset Account instead of the Liability Account,فعال کردن این گزینه به شما امکان می دهد ثبت کنید -

1. پیش پرداخت های دریافت شده در حساب بدهی به جای حساب دارایی

2. پیش پرداخت های پرداخت شده در حساب دارایی به جای حساب بدهی, +Enabling this will allow creation of multi-currency invoices against single party account in company currency,فعال کردن این امکان ایجاد صورتحساب‌های چند ارزی را در برابر حساب یک طرف به واحد پول شرکت فراهم می‌کند, +End Transit,پایان حمل و نقل, +End of the current subscription period,پایان دوره اشتراک فعلی, +"Enter First and Last name of Employee, based on Which Full Name will be updated. IN transactions, it will be Full Name which will be fetched.",نام و نام خانوادگی کارمند را که بر اساس نام کامل به روز می شود وارد کنید. در معاملات، نام کامل خواهد بود که واکشی می شود., +Enter Manually,ورود دستی, +Enter Serial Nos,شماره های سریال را وارد کنید, +Enter Visit Details,جزئیات بازدید را وارد کنید, +Enter a name for Routing.,یک نام برای مسیریابی وارد کنید., +"Enter a name for the Operation, for example, Cutting.",یک نام برای عملیات وارد کنید، به عنوان مثال، برش., +Enter a name for this Holiday List.,یک نام برای این لیست تعطیلات وارد کنید., +"Enter an Item Code, the name will be auto-filled the same as Item Code on clicking inside the Item Name field.",یک کد مورد را وارد کنید، نام با کلیک کردن در داخل قسمت نام مورد، به طور خودکار مانند کد مورد پر می شود., +Enter each serial no in a new line,هر شماره سریال را در یک خط جدید وارد کنید, +Enter the opening stock units.,واحدهای موجودی افتتاحی را وارد کنید., +Enter the quantity of the Item that will be manufactured from this Bill of Materials.,مقدار آیتمی را که از این صورتحساب مواد تولید می شود وارد کنید., +Enter the quantity to manufacture. Raw material Items will be fetched only when this is set.,مقدار تولید را وارد کنید. آیتم‌های مواد خام فقط زمانی واکشی می شوند که این تنظیم شود., +Error during caller information update,خطا در حین به روز رسانی اطلاعات تماس گیرنده, +Error while posting depreciation entries,خطا هنگام ارسال ورودی های استهلاک, +Error while processing deferred accounting for {0},خطا هنگام پردازش حسابداری معوق برای {0}, +Error while reposting item valuation,خطا هنگام ارسال مجدد ارزیابی مورد, +Errors Notification,اعلان خطاها, +Even invoices with apply tax withholding unchecked will be considered for checking cumulative threshold breach,حتی فاکتورهایی با اعمال کسر مالیات بدون بررسی برای بررسی نقض آستانه تجمعی در نظر گرفته می‌شوند., +Example URL,URL مثال, +Example of a linked document: {0},نمونه ای از یک سند پیوندی: {0}, +Example: Serial No {0} reserved in {1}.,مثال: شماره سریال {0} در {1} رزرو شده است., +Excess Materials Consumed,مواد اضافی مصرف شده, +Excess Transfer,انتقال مازاد, +Exchange Gain Or Loss,سود یا ضرر مبادله, +Exchange Gain/Loss amount has been booked through {0},مبلغ سود/زیان مبادله از طریق {0} رزرو شده است, +Exchange Rate Revaluation Settings,تنظیمات تجدید ارزیابی نرخ ارز, +Excluded DocTypes,DocType های حذف شده, +Exempt Supplies,لوازم معاف, +Expected,انتظار می رود, +Expected Balance Qty,مقدار تراز مورد انتظار, +Expected End Date should be less than or equal to parent task's Expected End Date {0}.,تاریخ پایان مورد انتظار باید کمتر یا مساوی با تاریخ پایان مورد انتظار وظیفه والد {0} باشد., +Expected Stock Value,ارزش موجودی مورد انتظار, +Expected Time Required (In Mins),زمان مورد نیاز مورد انتظار (به دقیقه), +Expiry,انقضا, +Export Data,برون‌بُرد داده ها, +Export Errored Rows,صادر کردن ردیف های خطا, +Export Import Log,لاگ درون‌بُرد برون‌بُرد, +Extra Consumed Qty,مقدار مصرف اضافی, +Extra Job Card Quantity,مقدار کارت کار اضافی, +FIFO Queue vs Qty After Transaction Comparison,صف FIFO در مقابل تعداد پس از مقایسه تراکنش, +"FIFO Stock Queue (qty, rate)",صف موجودی FIFO (تعداد، نرخ), +FIFO/LIFO Queue,صف FIFO/LIFO, +Failed Entries,ورودی های ناموفق, +"Failed to erase demo data, please delete the demo company manually.",داده‌های نمایشی پاک نشد، لطفاً شرکت نمایشی را به صورت دستی حذف کنید., +Failed to setup defaults for country {0}. Please contact support.,تنظیم پیش فرض های کشور {0} انجام نشد. لطفا با پشتیبانی تماس بگیرید., +Failure,شکست, +Failure Description,شرح شکست, +Fetch Based On,واکشی بر اساس, +Fetch Overdue Payments,واکشی پرداخت های معوق, +Fetch Timesheet,واکشی جدول زمانی, +Fetch Value From,واکشی ارزش از, +Fetching exchange rates ...,واکشی نرخ ارز ..., +Filter by Reference Date,فیلتر بر اساس تاریخ مرجع, +Filter on Invoice,فیلتر روی فاکتور, +Filter on Payment,فیلتر در پرداخت, +Filters missing,فیلترها یافت نشدند, +Final Product,محصول نهایی, +Financial Ratios,نسبت های مالی, +Financial Reports,گزارشهای مالی, +Financial Year Begins On,سال مالی شروع می شود, +Financial reports will be generated using GL Entry doctypes (should be enabled if Period Closing Voucher is not posted for all years sequentially or missing) ,گزارش‌های مالی با استفاده از اسناد ثبت دفتر کل ایجاد می‌شوند (اگر کوپن پایان دوره برای همه سال‌ها به‌طور متوالی پست نشده باشد یا مفقود شده باشد، باید فعال شود) , +Finished Good BOM,BOM کالای تمام شده, +Finished Good Item,آیتم کالای تمام شده, +Finished Good Item Qty,تعداد آیتم کالای تمام شده, +Finished Good Item Quantity,تعداد آیتم کالای تمام شده, +Finished Good Item is not specified for service item {0},آیتم کالای تمام شده برای آیتم سرویس مشخص نشده است {0}, +Finished Good Item {0} Qty can not be zero,مقدار آیتم کالای تمام شده {0} تعداد نمی تواند صفر باشد, +Finished Good Item {0} must be a sub-contracted item,آیتم کالای تمام شده {0} باید یک آیتم قرارداد فرعی باشد, +Finished Good Qty,مقدار کالای تمام شده, +Finished Good Quantity ,مقدار کالای تمام شده , +Finished Good UOM,UOM خوب به پایان رسید, +Finished Good {0} does not have a default BOM.,Finished Good {0} BOM پیش فرض ندارد., +Finished Good {0} is disabled.,Finished Good {0} غیرفعال است., +Finished Good {0} must be a stock item.,کالای تمام شده {0} باید یک آیتم موجودی باشد., +Finished Good {0} must be a sub-contracted item.,کالای تمام شده {0} باید یک آیتم قرارداد فرعی باشد., +Finished Goods Based Operating Cost,هزینه عملیاتی بر اساس کالاهای تمام شده, +Finished Goods Item,آیتم کالاهای تمام شده, +Finished Goods Reference,مرجع کالاهای تمام شده, +Finished Goods Value,ارزش کالاهای تمام شده, +Finished Goods based Operating Cost,هزینه عملیاتی بر اساس کالاهای تمام شده, +Finished Item {0} does not match with Work Order {1},مورد تمام شده {0} با دستور کار {1} مطابقت ندارد, +First Response Due,اولین پاسخ به علت, +First Response SLA Failed by {},اولین پاسخ SLA توسط {} انجام نشد, +Fixed Asset Defaults,پیش فرض دارایی های ثابت, +Fixed Time,زمان ثابت, +For Item,برای آیتم, +For Job Card,برای کارت کار, +For Operation,برای عملیات, +For Work Order,برای دستور کار, +For dunning fee and interest,برای هزینه و سود, +"For item {0}, rate must be a positive number. To Allow negative rates, enable {1} in {2}",برای مورد {0}، نرخ باید یک عدد مثبت باشد. برای مجاز کردن نرخ‌های منفی، {1} را در {2} فعال کنید, +For quantity {0} should not be greater than allowed quantity {1},برای مقدار {0} نباید بیشتر از مقدار مجاز {1} باشد, +Forecasting,پیش بینی, +Formula Based Criteria,معیارهای مبتنی بر فرمول, +Free Item Rate,نرخ آیتم رایگان, +From Corrective Job Card,از کارت کار اصلاحی, +From Date and To Date are mandatory,از تاریخ و تا تاریخ اجباری است, +From Delivery Date,از تاریخ تحویل, +From Doctype,از Doctype, +From Due Date,از تاریخ سررسید, +From Opportunity,از فرصت, +From Payment Date,از تاریخ پرداخت, +From Reference Date,از تاریخ مرجع, +From Voucher Detail No,از جزئیات کوپن شماره, +From Voucher No,از کوپن شماره, +From Voucher Type,از نوع کوپن, +From and To dates are required,تاریخ های از و تا تاریخ لازم است, +Full and Final Statement,صورت کامل و نهایی, +GL Balance,تراز دفتر کل, +GL Entry Processing Status,وضعیت پردازش ثبت دفتر کل, +GL reposting index,فهرست ارسال مجدد دفتر کل, +Gain/Loss accumulated in foreign currency account. Accounts with '0' balance in either Base or Account currency,سود/زیان انباشته شده در حساب ارزی. حساب‌هایی با موجودی «0» به ارز پایه یا حساب, +Gain/Loss already booked,سود/باخت قبلا رزرو شده است, +Gain/Loss from Revaluation,سود/زیان ناشی از تجدید ارزیابی, +General Ledger,دفتر کل مرکزی,Warehouse +General and Payment Ledger Comparison,مقایسه دفتر کل مرکزی و پرداخت, +General and Payment Ledger mismatch,عدم تطابق دفتر کل و دفتر پرداخت, +Generate Closing Stock Balance,ایجاد تراز موجودی اختتامیه, +Generate Demo Data for Exploration,داده های نسخه ی نمایشی را برای کاوش ایجاد کنید, +Generate E-Invoice,ایجاد فاکتور الکترونیکی, +Generate Invoice At,ایجاد فاکتور در, +Generating Preview,ایجاد پیش نمایش, +Get Allocations,تخصیص ها را دریافت کنید, +Get Customer Group Details,دریافت جزئیات گروه مشتری, +Get Finished Goods for Manufacture,دریافت کالاهای تمام شده برای تولید, +Get Outstanding Orders,دریافت سفارش‌های معوق, +Get Raw Materials for Purchase,دریافت مواد اولیه برای خرید, +Get Raw Materials for Transfer,دریافت مواد اولیه برای انتقال, +Get Scrap Items,آیتم‌های ضایعات را دریافت کنید, +Get Stock,موجودی دریافت کنید, +Get Sub Assembly Items,دریافت آیتم‌های زیر مونتاژ, +Get Supplier Group Details,جزئیات گروه تامین کننده را دریافت کنید, +Get Timesheets,برگه های زمانی را دریافت کنید, +Get stops from,توقف از, +Getting Scrap Items,دریافت آیتم‌های ضایعات, +Give free item for every N quantity,برای هر N مقدار آیتم رایگان بدهید, +Go back,برگرد, +Go to {0} List,به فهرست {0} بروید, +Goals,اهداف, +Goods,کالاها, +Grant Commission,اعطاء کمیسیون, +Greeting Message,پیام تبریک, +Gross Profit Percent,درصد سود ناخالص, +Gross Purchase Amount should be equal to purchase amount of one single Asset.,مقدار خرید ناخالص باید برابر برای خرید یک دارایی واحد باشد., +Group Same Items,گروه بندی آیتم‌های مشابه, +Growth View,نمای رشد, +Half-yearly,نیم سال, +Has Alternative Item,دارای آیتم جایگزین, +Has Item Scanned,آیتم اسکن شده است, +Have Default Naming Series for Batch ID?,آیا سری نام‌گذاری پیش‌فرض برای Batch ID دارید؟, +Heatmap,نقشه حرارت, +Height (cm),ارتفاع (سانتی متر), +"Hello,",سلام،, +Here are the error logs for the aforementioned failed depreciation entries: {0},در اینجا گزارش های خطا برای ورودی های استهلاک ناموفق فوق الذکر آمده است: {0}, +Here are the options to proceed:,در اینجا گزینه هایی برای ادامه وجود دارد:, +"Here, you can select a senior of this Employee. Based on this, Organization Chart will be populated.",در اینجا، می توانید یک ارشد این کارمند را انتخاب کنید. بر این اساس نمودار سازمانی پر می شود., +"Here, your weekly offs are pre-populated based on the previous selections. You can add more rows to also add public and national holidays individually.",در اینجا، تخفیف‌های هفتگی شما بر اساس انتخاب‌های قبلی از قبل پر شده است. می‌توانید ردیف‌های بیشتری اضافه کنید تا تعطیلات عمومی و ملی را به‌صورت جداگانه اضافه کنید., +"Hi,",سلام،, +Hide Images,مخفی کردن تصاویر, +Holiday Date {0} added multiple times,تاریخ تعطیلات {0} چندین بار اضافه شد, +Hours Spent,ساعت های صرف شده, +How often should Project be updated of Total Purchase Cost ?,هر چند وقت یکبار پروژه باید از هزینه کل خرید به روز شود؟, +I - J,من - جی, +I - K,من - ک, +Idle,بیکار (Idle), +"If an operation is divided into sub operations, they can be added here.",اگر یک عملیات به عملیات فرعی تقسیم شود، می توان آنها را در اینجا اضافه کرد., +"If checked, Rejected Quantity will be included while making Purchase Invoice from Purchase Receipt.",در صورت علامت زدن، مقدار رد شده هنگام تهیه فاکتور خرید از رسید خرید لحاظ می شود., +"If checked, Stock will be reserved on Submit",در صورت علامت زدن، موجودی در ارسال رزرو خواهد شد, +"If checked, picked qty won't automatically be fulfilled on submit of pick list.",اگر علامت زده شود، تعداد انتخاب شده به طور خودکار در ارسال لیست انتخاب انجام نمی شود., +"If checked, the tax amount will be considered as already included in the Paid Amount in Payment Entry",در صورت بررسی، مبلغ مالیات به عنوان مبلغ پرداخت شده در ثبت پرداخت در نظر گرفته می شود, +"If checked, we will create demo data for you to explore the system. This demo data can be erased later.",در صورت علامت زدن، داده‌های نمایشی را برای شما ایجاد می‌کنیم تا سیستم را کاوش کنید. این داده های نمایشی را می توان بعداً پاک کرد., +If enabled then system won't override the picked qty / batches / serial numbers.,اگر فعال باشد، سیستم تعداد / دسته / شماره سریال انتخاب شده را بازنویسی نمی کند., +"If enabled, a print of this document will be attached to each email",در صورت فعال بودن، چاپی از این سند به هر ایمیل پیوست می شود, +"If enabled, additional ledger entries will be made for discounts in a separate Discount Account",در صورت فعال بودن، ورودی های دفتر کل اضافی برای تخفیف در یک حساب تخفیف جداگانه ایجاد می شود, +"If enabled, all files attached to this document will be attached to each email",در صورت فعال بودن، تمام فایل های پیوست شده به این سند به هر ایمیل پیوست می شود, +"If enabled, ledger entries will be posted for change amount in POS transactions",در صورت فعال بودن، ورودی‌های دفتر کل برای مبلغ تغییر در تراکنش‌های POS پست می‌شوند, +"If enabled, the consolidated invoices will have rounded total disabled",در صورت فعال بودن، صورتحساب‌های تلفیقی، کل غیرفعال می‌شوند, +"If enabled, the system will create material requests even if the stock exists in the 'Raw Materials Warehouse'.","اگر فعال باشد، سیستم حتی اگر موجودی در ""انبار مواد خام"" وجود داشته باشد، درخواست های مواد ایجاد می کند.", +"If mentioned, the system will allow only the users with this Role to create or modify any stock transaction earlier than the latest stock transaction for a specific item and warehouse. If set as blank, it allows all users to create/edit back-dated transactions.",در صورت ذکر شده، این سیستم فقط به کاربران دارای این نقش اجازه می‌دهد تا هر تراکنش موجودی را زودتر از آخرین تراکنش موجودی برای یک کالا و انبار خاص ایجاد یا اصلاح کنند. اگر به صورت خالی تنظیم شود، به همه کاربران اجازه می دهد تا تراکنش های قدیمی را ایجاد/ویرایش کنند., +"If not, you can Cancel / Submit this entry",اگر نه، می توانید این ثبت را لغو / ارسال کنید, +"If rate is zero then item will be treated as ""Free Item""","اگر نرخ صفر باشد، آیتم به عنوان ""آیتم رایگان"" تلقی می شود", +"If the BOM results in Scrap material, the Scrap Warehouse needs to be selected.",اگر BOM منجر به مواد قراضه شود، انبار ضایعات باید انتخاب شود., +"If the selected BOM has Operations mentioned in it, the system will fetch all Operations from BOM, these values can be changed.",اگر BOM انتخاب شده دارای عملیات ذکر شده در آن باشد، سیستم تمام عملیات را از BOM واکشی می کند، این مقادیر را می توان تغییر داد., +"If this checkbox is enabled, then the system won’t run the MRP for the available sub-assembly items.",اگر این چک باکس فعال باشد، سیستم MRP را برای آیتم‌های زیر مونتاژ موجود اجرا نمی کند., +If this is undesirable please cancel the corresponding Payment Entry.,اگر این امر نامطلوب است، لطفاً ثبت پرداخت مربوطه را لغو کنید., +"If yes, then this warehouse will be used to store rejected materials",اگر بله، پس از این انبار برای نگهداری مواد رد شده استفاده می شود, +"If you are maintaining stock of this Item in your Inventory, ERPNext will make a stock ledger entry for each transaction of this item.",اگر موجودی این کالا را در موجودی خود نگهداری می کنید، ERPNext برای هر تراکنش این کالا یک ثبت در دفتر کل موجودی ایجاد می کند., +"If you need to reconcile particular transactions against each other, then please select accordingly. If not, all the transactions will be allocated in FIFO order.",اگر نیاز به تطبیق معاملات خاصی با یکدیگر دارید، لطفاً مطابق آن را انتخاب کنید. در غیر این صورت، تمام تراکنش ها به ترتیب FIFO تخصیص می یابد., +"If you still want to proceed, please disable 'Skip Available Sub Assembly Items' checkbox.",اگر همچنان می‌خواهید ادامه دهید، لطفاً کادر انتخاب «صرف نظر از آیتم‌های زیر مونتاژ موجود» را غیرفعال کنید., +"If you still want to proceed, please enable {0}.",اگر همچنان می‌خواهید ادامه دهید، لطفاً {0} را فعال کنید., +"If your CSV uses a different delimiter, add that character here, ensuring no spaces or additional characters are included.",اگر CSV شما از جداکننده دیگری استفاده می‌کند، آن کاراکتر را در اینجا اضافه کنید، مطمئن شوید که هیچ فاصله یا نویسه اضافی در آن وجود ندارد., +Ignore Account Closing Balance,نادیده گرفتن موجودی بسته شدن حساب, +Ignore Available Stock,نادیده گرفتن موجودی در دسترس, +Ignore Closing Balance,نادیده گرفتن تراز اختتامیه, +Ignore Default Payment Terms Template,الگوی شرایط پرداخت پیش‌فرض را نادیده بگیرید, +Ignore Empty Stock,موجودی خالی را نادیده بگیرید, +Ignore Exchange Rate Revaluation Journals,دفتر روزنامه های تجدید ارزیابی نرخ ارز را نادیده بگیرید, +Ignore Pricing Rule is enabled. Cannot apply coupon code.,نادیده گرفتن قانون قیمت گذاری فعال است. نمی توان کد تخفیف را اعمال کرد., +Ignore Voucher Type filter and Select Vouchers Manually,فیلتر نوع کوپن را نادیده بگیرید و کوپن ها را به صورت دستی انتخاب کنید, +Import File,درون‌بُرد فایل, +Import File Errors and Warnings,خطاها و هشدارهای درون‌بُرد فایل, +Import Log Preview,پیش نمایش لاگ درون‌بُرد, +Import Preview,پیش نمایش درون‌بُرد, +Import Progress,پیشرفت درون‌بُرد, +Import Type,نوع درون‌بُرد, +Import Using CSV file,درون‌بُرد با استفاده از فایل CSV, +Import Warnings,هشدارهای درون‌بُرد, +Import from Google Sheets,درون‌بُرد از Google Sheets, +"Importing {0} of {1}, {2}",در حال درون‌بُرد {0} از {1}، {2}, +In House,در خانه, +In Minutes,به دقیقه, +In Party Currency,به ارز طرف, +In Transit Transfer,در انتقال ترانزیت, +In Transit Warehouse,در انبار ترانزیت, +In mins,به دقیقه, +"In row {0} of Appointment Booking Slots: ""To Time"" must be later than ""From Time"".",در ردیف {0} قسمت‌های رزرو قرار ملاقات: «تا زمان» باید دیرتر از «از زمان» باشد., +"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.",در مورد «استفاده از BOM چند سطحی» در یک دستور کار، اگر کاربر بخواهد هزینه‌های زیر مونتاژ را بدون استفاده از کارت کار و همچنین آیتم‌های ضایعات به کالاهای نهایی اضافه کند، این گزینه باید فعال شود., +"In this section, you can define Company-wide transaction-related defaults for this Item. Eg. Default Warehouse, Default Price List, Supplier, etc.",در این بخش می‌توانید پیش‌فرض‌های مربوط به تراکنش‌های کل شرکت را برای این آیتم تعریف کنید. به عنوان مثال. انبار پیش فرض، لیست قیمت پیش فرض، تامین کننده و غیره, +Inactive Status,وضعیت غیر فعال, +Include Account Currency,شامل ارز حساب, +Include Default FB Assets,دارایی های پیش فرض FB را شامل شود, +Include Disabled,شامل افراد غیر فعال, +Include Safety Stock in Required Qty Calculation,لحاظ کردن موجودی ایمنی در محاسبه مقدار مورد نیاز, +Include Timesheets in Draft Status,شامل جدول زمانی در وضعیت پیش نویس, +Include Zero Stock Items,شامل آیتم‌های موجودی صفر, +Incoming Call Handling Schedule,برنامه رسیدگی به تماس های ورودی, +Incoming Call Settings,تنظیمات تماس ورودی, +Incoming Rate (Costing),نرخ ورودی (هزینه‌یابی), +Incorrect Balance Qty After Transaction,تعداد موجودی نادرست پس از تراکنش, +Incorrect Batch Consumed,دسته نادرست مصرف شده است, +Incorrect Invoice,فاکتور نادرست, +Incorrect Movement Purpose,هدف جابجایی نادرست, +Incorrect Payment Type,نوع پرداخت نادرست, +Incorrect Serial No Valuation,ارزش گذاری شماره سریال نادرست است, +Incorrect Serial Number Consumed,شماره سریال نادرست مصرف شده است, +Incorrect Stock Value Report,گزارش ارزش موجودی نادرست است, +Incorrect Type of Transaction,نوع تراکنش نادرست, +Incoterm,اینکوترم, +Increase In Asset Life(Months),افزایش عمر دارایی (ماه), +Indent,تورفتگی, +Indirect Expense,هزینه غیر مستقیم, +Individual GL Entry cannot be cancelled.,ثبت انفرادی دفتر کل را نمی توان لغو کرد., +Individual Stock Ledger Entry cannot be cancelled.,ورود فردی به دفتر موجودی را نمی توان لغو کرد., +Insert New Records,درج رکوردهای جدید, +Inspection Rejected,بازرسی رد شد, +Inspection Submission,ارسال بازرسی, +Instruction,دستورالعمل, +Insufficient Capacity,ظرفیت ناکافی, +Insufficient Stock for Batch,موجودی ناکافی برای دسته, +Inter Transfer Reference,مرجع انتقال داخلی, +Interest and/or dunning fee,بهره و/یا هزینه اجناس, +Internal,درونی؛ داخلی, +Internal Customer,مشتری داخلی, +Internal Customer for company {0} already exists,مشتری داخلی برای شرکت {0} از قبل وجود دارد, +Internal Sale or Delivery Reference missing.,مرجع فروش داخلی یا تحویل موجود نیست., +Internal Sales Reference Missing,مرجع فروش داخلی وجود ندارد, +Internal Supplier,تامین کننده داخلی, +Internal Supplier for company {0} already exists,تامین کننده داخلی برای شرکت {0} از قبل وجود دارد, +Internal Transfer Reference Missing,مرجع انتقال داخلی وجود ندارد, +Internal Transfers,نقل و انتقالات داخلی, +Internal transfers can only be done in company's default currency,نقل و انتقالات داخلی فقط با ارز پیش فرض شرکت قابل انجام است, +Invalid,بی اعتبار, +Invalid Auto Repeat Date,تاریخ تکرار خودکار نامعتبر است, +Invalid Cost Center,مرکز هزینه نامعتبر است, +Invalid Delivery Date,تاریخ تحویل نامعتبر است, +Invalid Document,سند نامعتبر, +Invalid Document Type,نوع سند نامعتبر است, +Invalid Formula,فرمول نامعتبر است, +Invalid Group By,گروه نامعتبر توسط, +Invalid Item Defaults,پیش فرض های آیتم نامعتبر, +Invalid Ledger Entries,ورودی های دفتر نامعتبر, +Invalid Primary Role,نقش اصلی نامعتبر است, +Invalid Priority,اولویت نامعتبر است, +Invalid Process Loss Configuration,پیکربندی از دست دادن فرآیند نامعتبر است, +Invalid Purchase Invoice,فاکتور خرید نامعتبر, +Invalid Qty,تعداد نامعتبر است, +Invalid Schedule,زمانبندی نامعتبر است, +Invalid Warehouse,انبار نامعتبر, +Invalid result key. Response:,کلید نتیجه نامعتبر است. واکنش:, +Invalid value {0} for {1} against account {2},مقدار {0} برای {1} در برابر حساب {2} نامعتبر است, +Inventory Dimension,ابعاد موجودی, +Inventory Dimension Negative Stock,ابعاد موجودی منفی, +Inventory Settings,تنظیمات موجودی, +Invoice Cancellation,لغو فاکتور, +Invoice Limit,حد فاکتور, +Invoice Portion (%),سهم فاکتور (%), +Invoice and Billing,فاکتور و صورتحساب, +Invoiced Qty,تعداد فاکتور, +Invoices and Payments have been Fetched and Allocated,فاکتورها و پرداخت ها واکشی و تخصیص داده شده است, +Invoicing Features,ویژگی های صورتحساب, +Is Adjustment Entry,ثبت تعدیل است, +Is Alternative,جایگزین است, +Is Cash or Non Trade Discount,تخفیف نقدی یا غیرتجاری است, +Is Composite Asset,دارایی مرکب است, +Is Corrective Job Card,کارت کار اصلاحی است, +Is Corrective Operation,عملیات اصلاحی است, +Is Expandable,قابل گسترش است, +Is Finished Item,مورد تمام شده است, +Is Fully Depreciated,کاملا مستهلک شده, +Is Group Warehouse,انبار گروه است, +Is Old Subcontracting Flow,جریان پیمانکاری فرعی قدیمی است, +Is Outward,بیرونی است, +Is Period Closing Voucher Entry,ثبت کوپن پایان دوره است, +Is Rate Adjustment Entry (Debit Note),ثبت تعدیل نرخ است (یادداشت بدهی), +Is Recursive,بازگشتی است, +Is Rejected,رد شده است, +Is Rejected Warehouse,انبار مرجوعی است, +Is Scrap Item,آیتم ضایعات است, +Is Short Year,سال کوتاه است, +Is Standard,استاندارد است, +Is Stock Item,آیتم موجودی است, +Is System Generated,سیستم تولید شده است, +Is Template,قالب است, +Issue Analytics,تجزیه و تحلیل مشکل, +Issue Summary,خلاصه مشکل, +Issue a debit note with 0 qty against an existing Sales Invoice,در مقابل فاکتور فروش موجود، یک برگه بدهی با مقدار 0 صادر کنید, +Issuing cannot be done to a location. Please enter employee to issue the Asset {0} to,صدور را نمی توان به یک مکان انجام داد. لطفاً کارمند را وارد کنید تا دارایی {0} را صادر کند, +It can take upto few hours for accurate stock values to be visible after merging items.,ممکن است چند ساعت طول بکشد تا ارزش موجودی دقیق پس از ادغام اقلام قابل مشاهده باشد., +"It's not possible to distribute charges equally when total amount is zero, please set 'Distribute Charges Based On' as 'Quantity'",وقتی مبلغ کل صفر است، نمی توان هزینه ها را به طور مساوی تقسیم کرد، لطفاً «توزیع هزینه ها بر اساس» را به عنوان «مقدار» تنظیم کنید, +Item Code (Final Product),کد آیتم (محصول نهایی), +Item Group wise Discount,تخفیف بر اساس گروه آیتم, +Item Price Settings,تنظیمات قیمت آیتم, +"Item Price appears multiple times based on Price List, Supplier/Customer, Currency, Item, Batch, UOM, Qty, and Dates.",قیمت آیتم چندین بار بر اساس لیست قیمت، تامین کننده/مشتری، ارز، آیتم، دسته، UOM، مقدار و تاریخ ها ظاهر می شود., +Item Reference,مرجع آیتم, +Item Warehouse based reposting has been enabled.,ارسال مجدد بر اساس انبار مورد فعال شده است., +Item and Warehouse,آیتم و انبار, +Item is removed since no serial / batch no selected.,مورد حذف شده است زیرا هیچ سریال / دسته ای انتخاب نشده است., +Item qty can not be updated as raw materials are already processed.,تعداد مورد را نمی توان به روز کرد زیرا مواد خام قبلاً پردازش شده است., +Item rate has been updated to zero as Allow Zero Valuation Rate is checked for item {0},نرخ مورد به صفر به‌روزرسانی شده است زیرا نرخ ارزش گذاری مجاز صفر برای مورد {0} بررسی می‌شود, +Item valuation reposting in progress. Report might show incorrect item valuation.,ارسال مجدد ارزیابی آیتم در حال انجام است. گزارش ممکن است ارزش گذاری اقلام نادرست را نشان دهد., +Item {0} cannot be added as a sub-assembly of itself,آیتم {0} را نمی توان به عنوان یک زیر مونتاژ از خودش اضافه کرد, +Item {0} cannot be ordered more than {1} against Blanket Order {2}.,مورد {0} را نمی توان بیش از {1} در مقابل سفارش بلانکت {2} سفارش داد., +Item {0} does not exist.,آیتم {0} وجود ندارد., +Item {0} entered multiple times.,آیتم {0} چندین بار وارد شده است., +Item {0} is already reserved/delivered against Sales Order {1}.,مورد {0} قبلاً در برابر سفارش فروش {1} رزرو شده/تحویل شده است., +Item {0} must be a Non-Stock Item,مورد {0} باید یک کالای غیر موجودی باشد, +Item {0} not found in 'Raw Materials Supplied' table in {1} {2},"مورد {0} در جدول ""مواد خام تامین شده"" در {1} {2} یافت نشد", +Item {0} not found.,مورد {0} یافت نشد., +Item {} does not exist.,مورد {} وجود ندارد., +Items & Pricing,آیتم‌ها و قیمت, +Items Catalogue,کاتالوگ آیتم‌ها, +Items cannot be updated as Subcontracting Order is created against the Purchase Order {0}.,موارد را نمی توان به روز کرد زیرا سفارش قرارداد فرعی در برابر سفارش خرید {0} ایجاد شده است., +Items rate has been updated to zero as Allow Zero Valuation Rate is checked for the following items: {0},نرخ اقلام به صفر به‌روزرسانی شده است زیرا نرخ ارزش گذاری مجاز صفر برای موارد زیر بررسی می‌شود: {0}, +Items to Be Repost,مواردی که باید بازنشر شوند, +Items to Order and Receive,آیتم‌های قابل سفارش و دریافت, +Items to Reserve,موارد برای رزرو, +Job Capacity,ظرفیت کاری, +Job Card Operation,عملیات کارت کار, +Job Card Scheduled Time,زمان برنامه ریزی شده کارت کار, +Job Card Scrap Item,آیتم ضایعات کارت کار, +Job Card and Capacity Planning,برنامه ریزی کارت کار و ظرفیت, +Job Paused,کار متوقف شد, +Job: {0} has been triggered for processing failed transactions,شغل: {0} برای پردازش تراکنش های ناموفق فعال شده است, +Joining,پیوستن, +Journal Entries,ورودی های دفتر روزنامه, +Journal Entry for Asset scrapping cannot be cancelled. Please restore the Asset.,ثبت دفتر روزنامه برای حذف دارایی را نمی توان لغو کرد. لطفا دارایی را بازیابی کنید., +Journal Entry type should be set as Depreciation Entry for asset depreciation,نوع ثبت دفتر روزنامه باید به عنوان ورودی استهلاک برای استهلاک دارایی تنظیم شود, +Journals,دفترهای روزنامه, +Key,کلید, +Kindly cancel the Manufacturing Entries first against the work order {0}.,لطفاً ابتدا ورودی‌های تولید را در برابر دستور کار {0} لغو کنید., +"Last Name, Email or Phone/Mobile of the user are mandatory to continue.",نام خانوادگی، ایمیل یا تلفن / تلفن همراه کاربر برای ادامه اجباری است., +Lead -> Prospect,سرنخ -> مشتری بالقوه, +Lead Conversion Time,زمان تبدیل سرنخ, +Lead Owner cannot be same as the Lead Email Address,مالک اصلی نمی تواند با آدرس ایمیل اصلی یکسان باشد, +Lead {0} has been added to prospect {1}.,سرنخ {0} به مشتری بالقوه {1} اضافه شده است., +Leaderboard,تابلوی امتیازات, +Leads,سرنخ ها, +Learn Accounting,حسابداری یاد بگیرید, +Learn Inventory Management,مدیریت لیست موجودی را یاد بگیرید, +Learn Manufacturing,یادگیری تولید, +Learn Procurement,تدارکات را بیاموزید, +Learn Project Management,مدیریت پروژه را یاد بگیرید, +Learn Sales Management,مدیریت فروش را یاد بگیرید, +Ledger Merge,ادغام دفتر کل, +Ledger Merge Accounts,حساب های ادغام دفتر کل, +Ledgers,دفتر کل, +Legend,افسانه, +Length,طول, +Length (cm),طول (سانتی متر), +Less than 12 months.,کمتر از 12 ماه., +Level (BOM),سطح (BOM), +Limit timeslot for Stock Reposting,محدودیت زمانی برای ارسال مجدد موجودی, +Limits don't apply on,محدودیت ها اعمال نمی شود, +Link a new bank account,پیوند یک حساب بانکی جدید, +Link with Customer,پیوند با مشتری, +Link with Supplier,پیوند با تامین کننده, +Linked with submitted documents,مرتبط با اسناد ارسالی, +Linking Failed,پیوند ناموفق بود, +Linking to Customer Failed. Please try again.,پیوند به مشتری انجام نشد. لطفا دوباره تلاش کنید., +Linking to Supplier Failed. Please try again.,پیوند به تامین کننده انجام نشد. لطفا دوباره تلاش کنید., +Links,پیوندها, +Loading import file...,در حال بارگیری فایل درون‌بُرد..., +Locked,قفل شده است, +Log Entries,ورودی های لاگ, +Lost Quotations,پیش فاکتور های از دست رفته, +Lost Quotations %,% پیش فاکتور های از دست رفته, +Lost Reasons are required in case opportunity is Lost.,در صورت از دست رفتن فرصت، دلایل از دست رفتن مورد نیاز است., +Lost Value,ارزش از دست رفته, +Lost Value %,مقدار از دست رفته %, +Machine Type,نوع ماشین, +Main Cost Center,مرکز هزینه اصلی, +Main Cost Center {0} cannot be entered in the child table,مرکز هزینه اصلی {0} را نمی توان در جدول فرزند وارد کرد, +Maintain Asset,حفظ دارایی, +Maintenance Details,جزئیات تعمیر و نگهداری, +Make , بسازید, +Make Asset Movement,جابجایی دارایی را ایجاد کنید, +Make Quotation,پیش فاکتور ایجاد کنید, +Make Return Entry,ایجاد ثبت بازگشت, +Make Serial No / Batch from Work Order,شماره سریال / دسته از دستور کار را بسازید, +Make {0} Variant,ایجاد {0} گونه, +Make {0} Variants,ایجاد {0} گونه, +Manage,مدیریت, +Mandatory Accounting Dimension,بعد حسابداری اجباری, +Mandatory Depends On,اجباری بستگی دارد, +Mandatory Field,فیلد اجباری, +Mandatory Section,بخش اجباری, +Manual Inspection,بازرسی دستی, +Manufacture Sub-assembly in Operation,تولید زیر مونتاژ در عملیات, +Manufacturing Type,نوع تولید, +Mapping Purchase Receipt ...,نگاشت رسید خرید ..., +Mapping Subcontracting Order ...,نگاشت سفارش پیمانکاری فرعی ..., +Mapping {0} ...,نگاشت {0}..., +Mark As Closed,علامت گذاری به عنوان بسته شده, +Material Returned from WIP,مواد برگردانده شده از «کار در حال انجام», +Material Transfer (In Transit),انتقال مواد (در حال حمل و نقل), +Materials are already received against the {0} {1},مواد قبلاً در مقابل {0} {1} دریافت شده است, +Materials needs to be transferred to the work in progress warehouse for the job card {0},برای کارت کار باید مواد به انبار کار در حال انجام انتقال داده شود {0}, +Max Qty (As Per Stock UOM),حداکثر تعداد (بر اساس موجودی UOM), +Maximum Net Rate,حداکثر نرخ خالص, +Maximum Payment Amount,حداکثر مبلغ پرداختی, +Maximum Value,حداکثر ارزش, +Maximum quantity scanned for item {0}.,حداکثر مقدار اسکن شده برای مورد {0}., +Meeting,ملاقات, +Mention if non-standard Receivable account,اگر حساب دریافتنی غیر استاندارد است را ذکر کنید, +Merge Invoices Based On,ادغام فاکتورها بر اساس, +Merge Progress,ادغام پیشرفت, +Merge Similar Account Heads,ادغام سران حساب های مشابه, +Merge taxes from multiple documents,ادغام مالیات از اسناد متعدد, +Merged,ادغام شد, +"Merging is only possible if following properties are same in both records. Is Group, Root Type, Company and Account Currency",ادغام تنها در صورتی امکان پذیر است که ویژگی های زیر در هر دو رکورد یکسان باشند. گروه، نوع ریشه، شرکت و ارز حساب است, +Merging {0} of {1},ادغام {0} از {1}, +Min Qty (As Per Stock UOM),حداقل تعداد (بر اساس موجودی UOM), +Min Qty should be greater than Recurse Over Qty,Min Qty باید بیشتر از Recurse Over Qty باشد, +Minimum Net Rate,حداقل نرخ خالص, +Minimum Payment Amount,حداقل مبلغ پرداختی, +Minimum Value,حداقل ارزش, +Mismatch,عدم تطابق, +Missing,جا افتاده, +Missing Asset,دارایی گمشده, +Missing Cost Center,مرکز هزینه جا افتاده, +Missing Finance Book,کتاب مالی جا افتاده, +Missing Finished Good,از دست رفته به پایان رسید, +Missing Formula,فرمول جا افتاده, +Missing Items,آیتم‌های جا افتاده, +Missing Payments App,برنامه پرداخت وجود ندارد, +Missing Serial No Bundle,باندل شماره سریال جا افتاده, +Missing value,مقدار از دست رفته, +Modified By,تغییر داده شده توسط, +Modified On,اصلاح شده در, +Module Settings,تنظیمات ماژول, +Move Stock,انتقال موجودی, +Move to Cart,جابجایی به سبد خرید, +Movement,جابجایی, +Moving up in tree ...,بالا رفتن در درخت..., +Multi-level BOM Creator,ایجاد کننده BOM چند سطحی, +Multiple Loyalty Programs found for Customer {}. Please select manually.,چندین برنامه وفاداری برای مشتری {} پیدا شد. لطفا به صورت دستی انتخاب کنید, +Multiple Warehouse Accounts,چندین حساب انبار, +Multiple items cannot be marked as finished item,چند مورد را نمی توان به عنوان مورد تمام شده علامت گذاری کرد, +Must be a publicly accessible Google Sheets URL and adding Bank Account column is necessary for importing via Google Sheets,باید یک URL کاربرگ‌نگار Google برای عموم قابل دسترسی باشد و افزودن ستون حساب بانکی برای درون‌بُرد از طریق Google Sheets ضروری است., +Named Place,مکان نامگذاری شده, +Naming Series and Price Defaults,نام گذاری سری ها و پیش فرض های قیمت, +Net total calculation precision loss,خالص از دست دادن دقت محاسبه کل, +New Balance In Account Currency,تراز جدید به ارز حساب, +New Event,رویداد جدید, +New Note,یادداشت جدید, +New Task,وظیفه جدید, +New Version,نسخه جدید, +Newsletter,خبرنامه, +No Answer,بدون پاسخ, +No Customers found with selected options.,هیچ مشتری با گزینه های انتخاب شده یافت نشد., +No Items selected for transfer.,هیچ موردی برای انتقال انتخاب نشده است., +No Matching Bank Transactions Found,هیچ تراکنش بانکی منطبقی یافت نشد, +No Notes,بدون یادداشت, +No Outstanding Invoices found for this party,هیچ صورتحساب معوقی برای این طرف یافت نشد, +No POS Profile found. Please create a New POS Profile first,هیچ نمایه POS یافت نشد. لطفا ابتدا یک نمایه POS جدید ایجاد کنید, +No Records for these settings.,هیچ رکوردی برای این تنظیمات وجود ندارد., +No Stock Available Currently,موجودی در حال حاضر موجود نیست, +No Summary,بدون خلاصه, +No Tax Withholding data found for the current posting date.,هیچ داده کسر مالیات برای تاریخ ارسال فعلی یافت نشد., +No Terms,بدون شرایط, +No Unreconciled Invoices and Payments found for this party and account,هیچ فاکتور و پرداخت ناسازگاری برای این طرف و حساب پیدا نشد, +No Unreconciled Payments found for this party,هیچ پرداخت ناسازگاری برای این طرف یافت نشد, +No Work Orders were created,هیچ دستور کار ایجاد نشد, +No additional fields available,هیچ فیلد اضافی در دسترس نیست, +No billing email found for customer: {0},هیچ ایمیل صورتحساب برای مشتری پیدا نشد: {0}, +No data found. Seems like you uploaded a blank file,داده ای یافت نشد. به نظر می رسد شما یک فایل خالی آپلود کرده اید, +No employee was scheduled for call popup,هیچ کارمندی برای فراخوانی برنامه ریزی نشده بود, +No failed logs,هیچ لاگ ناموفقی نیست, +No item available for transfer.,هیچ آیتمی برای انتقال موجود نیست., +No items are available in sales orders {0} for production,هیچ موردی در سفار‌ش‌های فروش {0} برای تولید موجود نیست, +No items are available in the sales order {0} for production,هیچ موردی در سفارش فروش {0} برای تولید موجود نیست, +No matches occurred via auto reconciliation,هیچ همخوانی ای از طریق تطبیق خودکار رخ نداد, +No more children on Left,دیگر هیچ فرزندی در سمت چپ وجود ندارد, +No more children on Right,دیگر هیچ فرزندی در سمت راست وجود ندارد, +No of Docs,شماره اسناد, +No of Employees,تعداد کارمندان, +No of Months (Expense),تعداد ماه ها (هزینه), +No of Months (Revenue),تعداد ماه ها (درآمد), +No open event,رویداد باز وجود ندارد, +No open task,هیچ وظیفه بازی نیست, +No outstanding {0} found for the {1} {2} which qualify the filters you have specified.,هیچ {0} معوقاتی برای {1} {2} که واجد شرایط فیلترهایی است که شما مشخص کرده اید، یافت نشد., +No primary email found for customer: {0},ایمیل اصلی برای مشتری پیدا نشد: {0}, +No records found in Allocation table,هیچ رکوردی در جدول تخصیص یافت نشد, +No records found in the Invoices table,هیچ رکوردی در جدول فاکتورها یافت نشد, +No records found in the Payments table,هیچ رکوردی در جدول پرداخت ها یافت نشد, +No stock transactions can be created or modified before this date.,هیچ تراکنش موجودیی را نمی توان قبل از این تاریخ ایجاد یا تغییر داد., +No {0} Accounts found for this company.,هیچ حساب {0} برای این شرکت یافت نشد., +No.,شماره, +No. of Employees,تعداد کارمندان, +No. of parallel job cards which can be allowed on this workstation. Example: 2 would mean this workstation can process production for two Work Orders at a time.,تعداد کارت کارهای موازی که می توانند در این ایستگاه کاری مجاز باشند. مثال: 2 به این معنی است که این ایستگاه کاری می تواند تولید را برای دو دستور کار در یک زمان پردازش کند., +Note: Automatic log deletion only applies to logs of type Update Cost,توجه: حذف خودکار لاگ فقط برای گزارش‌هایی از نوع به‌روزرسانی هزینه اعمال می‌شود, +"Note: To merge the items, create a separate Stock Reconciliation for the old item {0}",توجه: برای ادغام آیتم‌ها، یک تطبیق موجودی جداگانه برای آیتم قدیمی {0} ایجاد کنید, +Notes HTML,یادداشت های HTML, +Notification,اعلان, +Notification Settings,تنظیمات اعلان, +Notify Reposting Error to Role,خطای ارسال مجدد به نقش را اطلاع دهید, +Number of Days,تعداد روزها, +Numeric,عددی, +Numeric Inspection,بازرسی عددی, +Off,خاموش, +Offsetting Account,تسویه حساب, +Offsetting for Accounting Dimension,جبران برای بعد حسابداری, +On Paid Amount,با مبلغ پرداخت شده, +On This Date,در این تاریخ, +On Track,در مسیر, +"On expanding a row in the Items to Manufacture table, you'll see an option to 'Include Exploded Items'. Ticking this includes raw materials of the sub-assembly items in the production process.","با گسترش یک ردیف در جدول Items to Manufacture، گزینه ای برای ""شامل آیتم‌های گسترده شده"" را مشاهده خواهید کرد. تیک زدن این شامل مواد اولیه آیتم‌های زیر مونتاژ در فرآیند تولید می شود.", +Once the Work Order is Closed. It can't be resumed.,هنگامی که دستور کار بسته شد. نمی توان آن را از سر گرفت., +Only CSV and Excel files can be used to for importing data. Please check the file format you are trying to upload,برای درون‌بُرد داده ها فقط می توان از فایل های CSV و Excel استفاده کرد. لطفاً فرمت فایلی را که می‌خواهید آپلود کنید بررسی کنید, +Only Deduct Tax On Excess Amount , فقط از مقدار مازاد مالیات کسر کنید, +Only Include Allocated Payments,فقط شامل پرداخت های اختصاص داده شده است, +Only Parent can be of type {0},فقط والد می توانند از نوع {0} باشند, +Only existing assets,فقط دارایی های موجود, +"Only one Subcontracting Order can be created against a Purchase Order, cancel the existing Subcontracting Order to create a new one.",فقط یک سفارش پیمانکاری فرعی را می توان در مقابل یک سفارش خرید ایجاد کرد، برای ایجاد یک سفارش جدید، سفارش پیمانکاری فرعی موجود را لغو کنید., +Only {0} are supported,فقط {0} پشتیبانی می شود, +Open Activities HTML,Activity HTML را باز کنید, +Open Call Log,لاگ تماس را باز کنید, +Open Events,رویدادهای باز, +Open Sales Orders,باز کردن سفارش‌های فروش, +Open Task,وظیفه باز, +Open Tasks,وظایف باز, +Opening & Closing,افتتاحیه و اختتامیه, +Opening Accumulated Depreciation must be less than or equal to {0},استهلاک انباشته افتتاحیه باید کمتر یا مساوی با {0} باشد., +Opening Entry can not be created after Period Closing Voucher is created.,پس از ایجاد کوپن بسته شدن دوره، ورودی باز نمی تواند ایجاد شود., +Opening Purchase Invoices have been created.,فاکتورهای خرید افتتاحیه ایجاد شده است., +Opening Sales Invoices have been created.,فاکتورهای فروش افتتاحیه ایجاد شده است., +Operating Cost Per BOM Quantity,هزینه عملیاتی به ازای هر مقدار BOM, +Operation time does not depend on quantity to produce,زمان عملیات به مقدار تولید بستگی ندارد, +Opportunity Amount (Company Currency),مقدار فرصت (ارز شرکت), +Opportunity Owner,صاحب فرصت, +Opportunity Source,منبع فرصت, +Opportunity Summary by Sales Stage,خلاصه فرصت بر اساس مرحله فروش, +Opportunity Summary by Sales Stage ,خلاصه فرصت بر اساس مرحله فروش , +Opportunity Value,ارزش فرصت, +Order Status,وضعیت سفارش, +Other Info,سایر اطلاعات, +Out of stock,تمام شده, +Over Receipt,بیش از رسید, +Over Receipt/Delivery of {0} {1} ignored for item {2} because you have {3} role.,بیش از رسید/تحویل {0} {1} برای مورد {2} نادیده گرفته شد زیرا شما نقش {3} را دارید., +Over Transfer Allowance,بیش از کمک هزینه انتقال, +Overbilling of {0} {1} ignored for item {2} because you have {3} role.,اضافه صورتحساب {0} {1} برای مورد {2} نادیده گرفته شد زیرا شما نقش {3} را دارید., +Overbilling of {} ignored because you have {} role.,پرداخت بیش از حد {} نادیده گرفته شد زیرا شما نقش {} را دارید., +Overdue Payment,پرداخت معوقه, +Overdue Payments,پرداخت های معوق, +Overdue Tasks,وظایف عقب افتاده, +Overview,بررسی اجمالی, +PDF Name,نام PDF, +POS Closing Failed,بسته شدن POS ناموفق بود, +POS Closing failed while running in a background process. You can resolve the {0} and retry the process again.,بسته شدن POS هنگام اجرا در یک فرآیند پس‌زمینه انجام نشد. می توانید {0} را حل کنید و دوباره این فرآیند را امتحان کنید., +POS Invoices will be consolidated in a background process,فاکتورهای POS در یک فرآیند پس زمینه تلفیق می شوند, +POS Invoices will be unconsolidated in a background process,فاکتورهای POS در یک فرآیند پس زمینه تجمیع نمی شوند, +POS Profile {} contains Mode of Payment {}. Please remove them to disable this mode.,نمایه POS {} شامل حالت پرداخت {} است. لطفاً آنها را حذف کنید تا این حالت غیرفعال شود., +POS Search Fields,فیلدهای جستجوی POS, +POS Setting,تنظیمات POS, +Package No(s) already in use. Try from Package No {0},شماره (های) بسته در حال حاضر در حال استفاده است. از بسته شماره {0} امتحان کنید, +Packaging Slip From Delivery Note,برگه بسته بندی از یادداشت تحویل, +Packed Items cannot be transferred internally,اقلام بسته بندی شده را نمی توان به صورت داخلی منتقل کرد, +Packed Qty,تعداد بسته بندی شده, +Page Break After Each SoA,شکست صفحه پس از هر SoA, +Paid Amount After Tax,مبلغ پرداختی پس از کسر مالیات, +Paid Amount After Tax (Company Currency),مبلغ پرداختی پس از مالیات (ارز شرکت), +Paid From Account Type,پرداخت از نوع حساب, +Paid To Account Type,پرداخت به نوع حساب, +Pallets,پالت, +Parameter Group,گروه پارامتر, +Parameter Group Name,نام گروه پارامتر, +Parcel Template,قالب بسته, +Parcel Template Name,نام قالب بسته, +Parcel weight cannot be 0,وزن بسته نمی تواند 0 باشد, +Parcels,بسته ها, +Parent Account Missing,حساب والدین جا افتاده است, +Parent Document,سند والد, +Parent Item {0} must not be a Fixed Asset,مورد اصلی {0} نباید دارایی ثابت باشد, +Parent Row No,شماره ردیف والد, +Parent Task {0} is not a Template Task,وظیفه والد {0} یک وظیفه الگو نیست, +Partial Material Transferred,مواد جزئی منتقل شد, +Partial Stock Reservation,رزرو جزئی موجودی, +Partial Success,موفقیت جزئی, +"Partial stock can be reserved. For example, If you have a Sales Order of 100 units and the Available Stock is 90 units then a Stock Reservation Entry will be created for 90 units. ",موجودی جزئی قابل رزرو است. به عنوان مثال، اگر شما یک سفارش فروش 100 واحدی دارید و موجودی در دسترس 90 واحد است، یک ورودی رزرو موجودی برای 90 واحد ایجاد می شود. , +Partially Delivered,تا حدی تحویل شد, +Partially Reconciled,تا حدی تطبیق کرد, +Partially Reserved,تا حدی رزرو شده است, +Partly Paid,تا حدی پرداخت شده, +Partly Paid and Discounted,تا حدودی پرداخت شده و با تخفیف, +Partnership,شراکت, +Party Account No. (Bank Statement),شماره حساب طرف (صورتحساب بانکی), +Party Account {0} currency ({1}) and document currency ({2}) should be same,واحد پول حساب طرف {0} ({1}) و واحد پول سند ({2}) باید یکسان باشند, +Party IBAN (Bank Statement),طرف IBAN (صورتحساب بانکی), +Party Item Code,کد آیتم طرف, +Party Link,لینک طرف, +Party Name/Account Holder (Bank Statement),نام طرف / دارنده حساب (صورتحساب بانکی), +Party Specific Item,مورد خاص طرف, +Party Type and Party is required for Receivable / Payable account {0},نوع طرف و طرف برای حساب دریافتنی / پرداختنی {0} لازم است, +Party can only be one of {0},طرف فقط می تواند یکی از {0} باشد, +Passport Details,مشخصات پاسپورت, +Pause Job,مکث کار, +Paused,مکث کرد, +Payment Amount (Company Currency),مبلغ پرداختی (ارز شرکت), +"Payment Entry {0} is linked against Order {1}, check if it should be pulled as advance in this invoice.",ثبت پرداخت {0} با سفارش {1} مرتبط است، بررسی کنید که آیا باید به عنوان پیش پرداخت در این فاکتور آورده شود., +Payment Ledger,دفتر کل پرداخت, +Payment Ledger Balance,تراز دفتر کل پرداخت, +Payment Ledger Entry,ثبت دفتر پرداخت, +Payment Limit,محدودیت پرداخت, +Payment Reconciliation Allocation,تخصیص تطبیق پرداخت, +Payment Reconciliation Job: {0} is running for this party. Can't reconcile now.,کار تطبیق پرداخت: {0} برای این طرف اجرا می شود. الان نمیشه تطبیق کرد, +Payment Reconciliations,تطبیق های پرداخت, +Payment Request took too long to respond. Please try requesting for payment again.,پاسخ درخواست پرداخت خیلی طول کشید. لطفاً دوباره درخواست پرداخت کنید., +Payment Requests cannot be created against: {0},درخواست های پرداخت را نمی توان در مقابل: {0} ایجاد کرد, +Payment Terms Status for Sales Order,وضعیت شرایط پرداخت برای سفارش فروش, +Payment Terms from orders will be fetched into the invoices as is,شرایط پرداخت از سفارش‌ها همانطور که هست در فاکتورها آورده می شود, +Payment Unlink Error,خطای لغو پیوند پرداخت, +Payment of {0} received successfully.,پرداخت {0} با موفقیت دریافت شد., +Payment of {0} received successfully. Waiting for other requests to complete...,پرداخت {0} با موفقیت دریافت شد. در انتظار تکمیل درخواست های دیگر..., +Payment request failed,درخواست پرداخت انجام نشد, +Payment term {0} not used in {1},مدت پرداخت {0} در {1} استفاده نشده است, +Pending processing,در انتظار پردازش, +Per Received,هر دریافت شده, +Percentage (%),درصد (%), +Percentage you are allowed to order beyond the Blanket Order quantity.,درصدی که مجاز به سفارش آن هستید فراتر از مقدار سفارش کلی., +Percentage you are allowed to sell beyond the Blanket Order quantity.,درصدی که مجاز به فروش آن هستید فراتر از مقدار سفارش کلی., +Period Closed,دوره بسته است, +Period Closing Settings,تنظیمات اختتامیه دوره, +Period Details,جزئیات دوره, +Phone Ext.,تلفن خارجی, +Pick List Incomplete,فهرست انتخابی ناقص است, +Pick Manually,انتخاب دستی, +Pick Serial / Batch Based On,انتخاب سریال / دسته بر اساس, +Pick Serial / Batch No,انتخاب سریال / شماره دسته, +Picked Qty (in Stock UOM),تعداد انتخاب شده (در انبار UOM), +Pickup,سوار کردن, +Pickup Contact Person,شخص تماس وانت, +Pickup Date,تاریخ تحویل, +Pickup Date cannot be before this day,تاریخ تحویل نمی‌تواند قبل از این روز باشد, +Pickup From,وانت از, +Pickup To time should be greater than Pickup From time,Pickup To time باید بیشتر از Pickup From Time باشد, +Pickup Type,نوع پیکاپ, +Pickup from,وانت از, +Pickup to,وانت به, +Pipeline By,خط لوله توسط, +Plaid Link Failed,پیوند Plaid ناموفق بود, +Plaid Link Refresh Required,بازخوانی پیوند شطرنجی مورد نیاز است, +Plaid Link Updated,پیوند شطرنجی به روز شد, +Plan to Request Qty,برنامه ریزی برای مقدار درخواست, +Please Set Priority,لطفا اولویت را تعیین کنید, +Please Specify Account,لطفا حساب را مشخص کنید, +Please add 'Supplier' role to user {0}.,"لطفا نقش ""تامین کننده"" را به کاربر {0} اضافه کنید.", +Please add Request for Quotation to the sidebar in Portal Settings.,لطفاً درخواست برای پیش فاکتور را به نوار کناری در تنظیمات پورتال اضافه کنید., +Please add Root Account for - {0},لطفاً حساب ریشه برای - {0} اضافه کنید, +Please add atleast one Serial No / Batch No,لطفاً حداقل یک شماره سریال / شماره دسته اضافه کنید, +Please add the Bank Account column,لطفا ستون حساب بانکی را اضافه کنید, +Please add the account to root level Company - {0},لطفاً حساب را به شرکت سطح ریشه اضافه کنید - {0}, +Please add {1} role to user {0}.,لطفاً نقش {1} را به کاربر {0} اضافه کنید., +Please adjust the qty or edit {0} to proceed.,لطفاً تعداد را تنظیم کنید یا برای ادامه {0} را ویرایش کنید., +Please attach CSV file,لطفا فایل CSV را پیوست کنید, +Please cancel and amend the Payment Entry,لطفاً ثبت پرداخت را لغو و اصلاح کنید, +Please cancel payment entry manually first,لطفاً ابتدا ثبت پرداخت را به صورت دستی لغو کنید, +Please cancel related transaction.,لطفا تراکنش مربوطه را لغو کنید., +Please check Process Deferred Accounting {0} and submit manually after resolving errors.,لطفاً Process Deferred Accounting {0} را بررسی کنید و پس از رفع خطاها را به صورت دستی ارسال کنید., +Please check either with operations or FG Based Operating Cost.,لطفاً با عملیات یا هزینه عملیاتی مبتنی بر FG بررسی کنید., +Please check the error message and take necessary actions to fix the error and then restart the reposting again.,لطفاً پیام خطا را بررسی کنید و اقدامات لازم را برای رفع خطا انجام دهید و سپس ارسال مجدد را مجدداً راه‌اندازی کنید., +Please check your email to confirm the appointment,لطفا ایمیل خود را برای تایید قرار ملاقات بررسی کنید, +Please contact any of the following users to extend the credit limits for {0}: {1},لطفاً برای تمدید محدودیت اعتبار برای {0} با هر یک از کاربران زیر تماس بگیرید: {1}, +Please contact any of the following users to {} this transaction.,لطفاً با هر یک از کاربران زیر برای {} این تراکنش تماس بگیرید., +Please contact your administrator to extend the credit limits for {0}.,لطفاً برای تمدید محدودیت اعتبار برای {0} با سرپرست خود تماس بگیرید., +Please create Landed Cost Vouchers against Invoices that have 'Update Stock' enabled.,لطفاً در برابر فاکتورهایی که «به‌روزرسانی موجودی» را فعال کرده‌اند، کوپن‌های هزینه تمام شده تا درب انبار ایجاد کنید., +Please create a new Accounting Dimension if required.,لطفاً در صورت نیاز یک بعد حسابداری جدید ایجاد کنید., +Please create purchase from internal sale or delivery document itself,لطفا خرید را از فروش داخلی یا سند تحویل خود ایجاد کنید, +"Please delete Product Bundle {0}, before merging {1} into {2}",لطفاً قبل از ادغام {1} در {2}، باندل محصول {0} را حذف کنید, +Please do not book expense of multiple assets against one single Asset.,لطفا هزینه چند دارایی را در مقابل یک دارایی ثبت نکنید., +Please enable only if the understand the effects of enabling this.,لطفاً فقط در صورتی فعال کنید که تأثیرات فعال کردن آن را درک کنید., +Please enable {0} in the {1}.,لطفاً {0} را در {1} فعال کنید., +Please enable {} in {} to allow same item in multiple rows,لطفاً {} را در {} فعال کنید تا یک مورد در چندین ردیف مجاز باشد, +Please ensure {} account is a Balance Sheet account.,لطفاً مطمئن شوید که حساب {} یک حساب ترازنامه است., +Please ensure {} account {} is a Receivable account.,لطفاً مطمئن شوید که {} حساب {} یک حساب دریافتنی است., +Please enter Root Type for account- {0},لطفاً نوع ریشه را برای حساب وارد کنید- {0}, +Please enter Serial Nos,لطفا شماره های سریال را وارد کنید, +Please enter Shipment Parcel information,لطفا اطلاعات بسته حمل و نقل را وارد کنید, +Please enter Stock Items consumed during the Repair.,لطفاً آیتم‌های موجودی مصرف شده در طول تعمیر را وارد کنید., +Please enter mobile number first.,لطفا ابتدا شماره موبایل را وارد کنید, +Please enter quantity for item {0},لطفاً مقدار مورد {0} را وارد کنید, +Please enter serial nos,لطفا شماره سریال را وارد کنید, +"Please first set Last Name, Email and Phone for the user",لطفا ابتدا نام خانوادگی، ایمیل و تلفن را برای کاربر تنظیم کنید, +Please fix overlapping time slots for {0},لطفاً بازه های زمانی همپوشانی را برای {0} اصلاح کنید, +Please fix overlapping time slots for {0}.,لطفاً بازه های زمانی همپوشانی را برای {0} برطرف کنید., +Please import accounts against parent company or enable {} in company master.,لطفاً حساب‌ها را در مقابل شرکت مادر وارد کنید یا {} را در شرکت اصلی فعال کنید., +Please make sure the file you are using has 'Parent Account' column present in the header.,لطفاً مطمئن شوید که فایلی که استفاده می‌کنید دارای ستون «حساب والد» در سرصفحه باشد., +Please mention 'Weight UOM' along with Weight.,"لطفا ""وزن UOM"" را همراه با وزن ذکر کنید.", +Please mention the Current and New BOM for replacement.,لطفاً BOM فعلی و جدید را برای جایگزینی ذکر کنید., +Please rectify and try again.,لطفاً اصلاح کنید و دوباره امتحان کنید., +Please refresh or reset the Plaid linking of the Bank {}.,لطفاً پیوند Plaid بانک {} را بازخوانی یا بازنشانی کنید., +Please save before proceeding.,لطفا قبل از ادامه ذخیره کنید., +Please select Bank Account,لطفا حساب بانکی را انتخاب کنید, +Please select Finished Good Item for Service Item {0},لطفاً آیتم کالای تمام شده را برای آیتم سرویس {0} انتخاب کنید, +Please select Serial/Batch Nos to reserve or change Reservation Based On to Qty.,لطفاً شماره‌های سریال/دسته را برای رزرو انتخاب کنید یا رزرو براساس تعداد را تغییر دهید., +Please select Subcontracting Order instead of Purchase Order {0},لطفاً به جای سفارش خرید، سفارش قرارداد فرعی را انتخاب کنید {0}, +Please select Unrealized Profit / Loss account or add default Unrealized Profit / Loss account account for company {0},لطفاً حساب سود / زیان تحقق نیافته را انتخاب کنید یا حساب سود / زیان پیش فرض را برای شرکت اضافه کنید {0}, +Please select a Subcontracting Purchase Order.,لطفاً سفارش خرید پیمانکاری فرعی را انتخاب کنید., +Please select a Warehouse,لطفاً یک انبار انتخاب کنید, +Please select a Work Order first.,لطفاً ابتدا یک دستور کار را انتخاب کنید., +Please select a country,لطفا یک کشور را انتخاب کنید, +Please select a customer for fetching payments.,لطفاً یک مشتری را برای واکشی پرداخت ها انتخاب کنید., +Please select a date,لطفا تاریخ را انتخاب کنید, +Please select a date and time,لطفا تاریخ و زمان را انتخاب کنید, +Please select a row to create a Reposting Entry,لطفاً یک ردیف برای ایجاد یک ورودی ارسال مجدد انتخاب کنید, +Please select a supplier for fetching payments.,لطفاً یک تامین کننده برای واکشی پرداخت ها انتخاب کنید., +Please select a valid Purchase Order that has Service Items.,لطفاً یک سفارش خرید معتبر که دارای آیتم‌های خدماتی است انتخاب کنید., +Please select a valid Purchase Order that is configured for Subcontracting.,لطفاً یک سفارش خرید معتبر که برای قرارداد فرعی پیکربندی شده است، انتخاب کنید., +Please select an item code before setting the warehouse.,لطفاً قبل از تنظیم انبار یک کد آیتم را انتخاب کنید., +Please select items,لطفا آیتم‌ها را انتخاب کنید, +Please select items to unreserve.,لطفا آیتم‌ها را برای لغو رزرو انتخاب کنید., +Please select only one row to create a Reposting Entry,لطفاً فقط یک ردیف را برای ایجاد یک ورودی ارسال مجدد انتخاب کنید, +Please select rows to create Reposting Entries,لطفاً ردیف‌هایی را برای ایجاد ورودی‌های ارسال مجدد انتخاب کنید, +Please select the required filters,لطفا فیلترهای مورد نیاز را انتخاب کنید, +Please select valid document type.,لطفا نوع سند معتبر را انتخاب کنید., +Please set Account,لطفا حساب را تنظیم کنید, +Please set Accounting Dimension {} in {},لطفاً بعد حسابداری {} را در {} تنظیم کنید, +Please set Email/Phone for the contact,لطفا ایمیل/تلفن را برای مخاطب تنظیم کنید, +Please set Fiscal Code for the customer '%s',"لطفاً کد مالی را برای مشتری ""%s"" تنظیم کنید", +Please set Fixed Asset Account in {} against {}.,لطفاً حساب دارایی ثابت را در {} در مقابل {} تنظیم کنید., +Please set Parent Row No for item {0},لطفاً شماره ردیف والد را برای آیتم {0} تنظیم کنید, +Please set Root Type,لطفا Root Type را تنظیم کنید, +Please set Tax ID for the customer '%s',"لطفاً شناسه مالیاتی را برای مشتری ""%s"" تنظیم کنید", +Please set VAT Accounts in {0},لطفاً حساب‌های VAT را در {0} تنظیم کنید, +"Please set Vat Accounts for Company: ""{0}"" in UAE VAT Settings","لطفاً حساب‌های مالیات بر ارزش افزوده را برای شرکت تنظیم کنید: ""{0}"" در تنظیمات مالیات بر ارزش افزوده امارات", +Please set a Cost Center for the Asset or set an Asset Depreciation Cost Center for the Company {},لطفاً یک مرکز هزینه برای دارایی یا یک مرکز هزینه استهلاک دارایی برای شرکت تنظیم کنید {}, +Please set a default Holiday List for Company {0},لطفاً یک فهرست تعطیلات پیش‌فرض برای شرکت {0} تنظیم کنید, +Please set an Address on the Company '%s',"لطفاً یک آدرس در شرکت ""%s"" تنظیم کنید", +Please set an Expense Account in the Items table,لطفاً یک حساب هزینه در جدول آیتم‌ها تنظیم کنید, +Please set default Exchange Gain/Loss Account in Company {},لطفاً حساب سود/زیان مبادله پیش‌فرض را در شرکت تنظیم کنید {}, +Please set default Expense Account in Company {0},لطفاً حساب هزینه پیش‌فرض را در شرکت {0} تنظیم کنید, +Please set default cost of goods sold account in company {0} for booking rounding gain and loss during stock transfer,لطفاً حساب هزینه پیش‌فرض کالاهای فروخته‌شده در شرکت {0} را برای رزرو سود و زیان در حین انتقال موجودی تنظیم کنید, +Please set filters,لطفا فیلترها را تنظیم کنید, +Please set one of the following:,لطفا یکی از موارد زیر را تنظیم کنید:, +Please set the cost center field in {0} or setup a default Cost Center for the Company.,لطفاً فیلد مرکز هزینه را در {0} تنظیم کنید یا یک مرکز هزینه پیش‌فرض برای شرکت تنظیم کنید., +Please set {0} in BOM Creator {1},لطفاً {0} را در BOM Creator {1} تنظیم کنید, +Please share this email with your support team so that they can find and fix the issue.,لطفاً این ایمیل را با تیم پشتیبانی خود به اشتراک بگذارید تا آنها بتوانند مشکل را پیدا کرده و برطرف کنند., +Please specify a {0},لطفاً یک {0} را مشخص کنید, +Please try again in an hour.,لطفا یک ساعت دیگر دوباره امتحان کنید., +Please update Repair Status.,لطفاً وضعیت تعمیر را به روز کنید., +Portal User,کاربر پورتال, +Portal Users,کاربران پورتال, +"Previous Year is not closed, please close it first",سال قبل تعطیل نیست، لطفا اول آن را ببندید, +Price ({0}),قیمت ({0}), +Price List Defaults,لیست قیمت پیش فرض, +Price Per Unit ({0}),قیمت هر واحد ({0}), +Primary Address and Contact,آدرس و مخاطب اصلی, +Primary Contact,مخاطب اصلی, +Primary Party,طرف اصلی, +Primary Role,نقش اصلی, +Print Format Builder,فرمت ساز چاپ, +Print Style,سبک چاپ, +Printing,چاپ, +Priority cannot be lesser than 1.,اولویت نمی تواند کمتر از 1 باشد., +Priority is mandatory,اولویت الزامی است, +Probability,احتمال, +Process Loss,از دست دادن فرآیند, +Process Loss Percentage cannot be greater than 100,درصد ضرر فرآیند نمی تواند بیشتر از 100 باشد, +Process Loss Qty,تعداد از دست دادن فرآیند, +Process Loss Report,گزارش از دست دادن فرآیند, +Process Loss Value,ارزش از دست دادن فرآیند, +Process Payment Reconciliation,فرآیند تطبیق پرداخت, +Process Payment Reconciliation Log,گزارش تطبیق پرداخت فرآیند, +Process Payment Reconciliation Log Allocations,تخصیص گزارش تطبیق پرداخت فرآیند, +Process Subscription,فرآیند اشتراک, +Processed BOMs,BOM های پردازش شده, +Processing Sales! Please Wait...,در حال پردازش فروش! لطفا صبر کنید..., +Produced / Received Qty,تعداد تولید / دریافت شده, +Product Price ID,شناسه قیمت محصول, +Production Plan Already Submitted,طرح تولید قبلا ارسال شده است, +Production Plan Item Reference,مرجع آیتم طرح تولید, +Production Plan Qty,مقدار برنامه تولید, +Production Plan Sub Assembly Item,آیتم زیر مونتاژ برنامه تولید, +Production Plan Sub-assembly Item,آیتم زیر مونتاژ برنامه تولید, +Production Plan Summary,خلاصه برنامه تولید, +Profile,مشخصات, +Profit and Loss Summary,خلاصه سود و زیان, +Progress,پیشرفت, +Progress (%),پیشرفت (%), +Project Progress:,پیشرفت پروژه:, +Prompt Qty,تعداد را اعلان کنید, +Prospect,مشتری بالقوه, +Prospect Lead,سرنخ مشتری بالقوه, +Prospect Opportunity,فرصت مشتری بالقوه, +Prospect Owner,مالک مشتری بالقوه, +Prospect {0} already exists,مشتری بالقوه {0} از قبل وجود دارد, +Provisional Expense Account,حساب هزینه موقت, +Purchase Order Item reference is missing in Subcontracting Receipt {0},مرجع آیتم سفارش خرید در رسید پیمانکاری فرعی وجود ندارد {0}, +Purchase Orders {0} are un-linked,سفارش‌های خرید {0} لغو پیوند هستند, +Purchase Receipt (Draft) will be auto-created on submission of Subcontracting Receipt.,رسید خرید (پیش نویس) به صورت خودکار با ارائه رسید پیمانکاری فرعی ایجاد می شود., +Purchase Receipt {0} created.,رسید خرید {0} ایجاد شد., +Purchase Value,ارزش خرید, +Purchases,خریدها, +Purposes Required,اهداف مورد نیاز, +Putaway Rule,قانون Putaway, +Putaway Rule already exists for Item {0} in Warehouse {1}.,قانون Putaway از قبل برای مورد {0} در انبار {1} وجود دارد., +Qty , تعداد, +Qty After Transaction,تعداد بعد از تراکنش, +Qty As Per BOM,مقدار طبق BOM, +Qty Change,تغییر تعداد, +Qty In Stock,تعداد موجود در انبار, +Qty Per Unit,تعداد در هر واحد, +Qty To Produce,تعداد برای تولید, +Qty and Rate,تعداد و نرخ, +Qty as Per Stock UOM,تعداد به ازای موجودی UOM, +Qty for which recursion isn't applicable.,تعداد که بازگشت برای آنها قابل اعمال نیست., +Qty in Stock UOM,تعداد موجود در انبار UOM, +Qty of Finished Goods Item should be greater than 0.,تعداد کالاهای تمام شده باید بیشتر از 0 باشد., +Qty to Be Consumed,مقدار قابل مصرف, +Qty to Build,تعداد برای ساخت, +Qty to Fetch,تعداد برای واکشی, +Qty to Produce,تعداد برای تولید, +Qualification Status,وضعیت صلاحیت, +Qualified,واجد شرایط, +Qualified By,واجد شرایط توسط, +Qualified on,واجد شرایط, +Quality Inspection Parameter,پارامتر بازرسی کیفیت, +Quality Inspection Parameter Group,گروه پارامترهای بازرسی کیفیت, +Quality Inspection Settings,تنظیمات بازرسی کیفیت, +Quality Inspection(s),بازرسی(های) کیفیت, +Quantity is required,مقدار مورد نیاز است, +"Quantity must be greater than zero, and less or equal to {0}",مقدار باید بزرگتر از صفر و کمتر یا مساوی با {0} باشد., +Quantity to Produce should be greater than zero.,مقدار تولید باید بیشتر از صفر باشد., +Quantity to Scan,مقدار برای اسکن, +Quarter {0} {1},سه ماهه {0} {1}, +Quotation Number,شماره پیش فاکتور, +Quoted Amount,مبلغ نقل شده, +Rate Difference with Purchase Invoice,تفاوت نرخ با فاکتور خرید, +Rate Section,بخش امتیاز دهی, +Rate of Stock UOM,نرخ موجودی UOM, +Ratios,نسبت ها, +Raw Material Cost Per Qty,هزینه مواد خام به ازای هر تعداد, +Raw Material Item,مورد مواد خام, +Raw Material Value,ارزش مواد خام, +Raw Materials Consumption ,مصرف مواد اولیه , +Raw Materials Warehouse,انبار مواد اولیه, +Reading Value,مقدار خواندن, +Reason for hold:,دلیل نگه داشتن:, +Rebuild Tree,درخت را بازسازی کنید, +Recalculate Incoming/Outgoing Rate,محاسبه مجدد نرخ ورودی/خروجی, +Recalculating Purchase Cost against this Project...,محاسبه مجدد هزینه خرید در مقابل این پروژه..., +Receivable/Payable Account,حساب دریافتنی/پرداختنی, +Receivable/Payable Account: {0} doesn't belong to company {1},حساب دریافتنی/پرداختنی: {0} به شرکت {1} تعلق ندارد, +Received Amount After Tax,مبلغ دریافتی پس از کسر مالیات, +Received Amount After Tax (Company Currency),مبلغ دریافتی پس از کسر مالیات (ارز شرکت), +Received Amount cannot be greater than Paid Amount,مبلغ دریافتی نمی تواند بیشتر از مبلغ پرداختی باشد, +Received Qty in Stock UOM,تعداد در انبار UOM دریافت شد, +Recent Orders,سفارش‌های اخیر, +Reconcile the Bank Transaction,تراکنش بانکی را تطبیق دهید, +Reconciled Entries,ثبت های تطبیق شده, +Reconciliation Error Log,لاگ خطای تطبیق, +Reconciliation Logs,لاگ‌های مربوط به تطبیق, +Reconciliation Progress,پیشرفت تطبیق, +Recording HTML,ضبط HTML, +Recoverable Standard Rated expenses should not be set when Reverse Charge Applicable is Y,زمانی که شارژ معکوس قابل اعمال Y است، هزینه‌های استاندارد قابل بازیافت نباید تنظیم شوند, +Recurse Every (As Per Transaction UOM),تکرار هر (بر اساس UOM تراکنش), +Recurse Over Qty cannot be less than 0,Recurse Over Qty نمی تواند کمتر از 0 باشد, +Reference Date for Early Payment Discount,تاریخ مرجع برای تخفیف پرداخت زودهنگام, +Reference Detail,جزئیات مرجع, +Reference DocType,مرجع DocType, +Reference Exchange Rate,نرخ ارز مرجع, +Reference No,شماره مرجع, +Reference number of the invoice from the previous system,شماره مرجع فاکتور از سیستم قبلی, +References {0} of type {1} had no outstanding amount left before submitting the Payment Entry. Now they have a negative outstanding amount.,مراجع {0} از نوع {1} قبل از ارسال ثبت پرداخت، مبلغ معوقه ای باقی نمانده بود. اکنون آنها یک مبلغ معوقه منفی دارند., +Refresh Google Sheet,برگه Google را بازخوانی کنید, +Refresh Plaid Link,پیوند شطرنجی را تازه کنید, +Regenerate Closing Stock Balance,بازسازی تراز موجودی اختتامیه, +Rejected Serial and Batch Bundle,باندل سریال و دسته رد شده, +Remarks Column Length,طول ستون اظهارات, +Repair,تعمیر, +Repair Asset,دارایی تعمیر, +Repair Details,جزئیات تعمیر, +Report Error,گزارش خطا, +Report Filters,گزارش فیلترها, +Report View,نمای گزارش, +Repost Accounting Ledger,بازنشر دفتر کل حسابداری, +Repost Accounting Ledger Items,بازنشر اقلام دفتر کل حسابداری, +Repost Accounting Ledger Settings,بازنشر تنظیمات دفتر کل حسابداری, +Repost Allowed Types,بازنشر انواع مجاز, +Repost Error Log,لاگ خطای ارسال مجدد, +Repost Item Valuation,ارسال مجدد ارزش گذاری مورد, +Repost Payment Ledger,ارسال مجدد دفتر کل پرداخت, +Repost Payment Ledger Items,ارسال مجدد اقلام دفتر کل پرداخت, +Repost Status,وضعیت بازنشر, +Repost has started in the background,ارسال مجدد در پس زمینه شروع شده است, +Repost in background,بازنشر در پس زمینه, +Repost started in the background,بازنشر در پس‌زمینه شروع شد, +Reposting Data File,ارسال مجدد فایل داده, +Reposting Info,بازنشر اطلاعات, +Reposting Progress,بازنشر پیشرفت, +Reposting entries created: {0},ارسال مجدد ورودی های ایجاد شده: {0}, +Reposting has been started in the background.,ارسال مجدد در پس‌زمینه آغاز شده است., +Reposting in the background.,بازنشر در پس زمینه, +Represents a Financial Year. All accounting entries and other major transactions are tracked against the Fiscal Year.,نشان دهنده یک سال مالی است. کلیه ثبت‌های حسابداری و سایر تراکنش‌های عمده در برابر سال مالی ردیابی می شوند., +Request Parameters,پارامترهای درخواست, +Request Timeout,درخواست مهلت زمانی, +Reservation Based On,رزرو بر اساس, +Reserve,ذخیره, +Reserve Stock,ذخیره موجودی, +"Reserved Qty ({0}) cannot be a fraction. To allow this, disable '{1}' in UOM {3}.","تعداد رزرو شده ({0}) نمی تواند کسری باشد. برای اجازه دادن به این کار، ""{1}"" را در UOM {3} غیرفعال کنید.", +Reserved Qty for Production Plan,تعداد رزرو شده برای طرح تولید, +Reserved Qty for Subcontract,مقدار رزرو شده برای قرارداد فرعی, +Reserved Qty should be greater than Delivered Qty.,تعداد رزرو شده باید بیشتر از تعداد تحویل شده باشد., +Reserved Serial No.,شماره سریال رزرو شده, +Reserved Stock,موجودی رزرو شده, +Reserved Stock for Batch,موجودی رزرو شده برای دسته, +Reserved for POS Transactions,برای معاملات POS رزرو شده است, +Reserved for Production,برای تولید محفوظ است, +Reserved for Production Plan,برای طرح تولید محفوظ است, +Reserved for Sub Contracting,برای پیمانکاری فرعی محفوظ است, +Reserving Stock...,رزرو موجودی..., +Reset Company Default Values,بازنشانی مقادیر پیش فرض شرکت, +Reset Plaid Link,بازنشانی پیوند Plaid, +Resolution Due,سررسید حل و فصل, +Response and Resolution,پاسخ و حل و فصل, +Restart,راه‌اندازی مجدد, +Restore Asset,بازیابی دارایی, +Restrict,محدود کردن, +Restrict Items Based On,موارد را بر اساس محدود کنید, +Result Key,کلید نتیجه, +Resume Job,رزومه کاری, +Retried,دوباره امتحان شد, +Retry,دوباره امتحان کنید, +Retry Failed Transactions,تراکنش های ناموفق را دوباره امتحان کنید, +Return Against,بازگشت در مقابل, +Return Against Subcontracting Receipt,استرداد در مقابل رسید پیمانکاری فرعی, +Return Components,برگرداندن اجزاء, +Return Issued,حواله بازگشت صادر شد, +Return Qty,تعداد برگشت, +Return Qty from Rejected Warehouse,تعداد بازگرداندن از انبار مرجوعی, +Return of Components,بازگشت اجزاء, +Returned,بازگشت, +Returned Against,بازگشت در برابر, +Returned Qty ,مقدار برگردانده شده , +Returned Qty in Stock UOM,تعداد برگردانده شده در انبار UOM, +Returned exchange rate is neither integer not float.,نرخ ارز برگشتی نه عدد صحیح است و نه شناور., +Revaluation Journals,دفترهای روزنامه تجدید ارزیابی, +Revaluation Surplus,مازاد تجدید ارزیابی, +Revenue,درآمد, +Reversal Of,معکوس شدن, +Role Allowed to Create/Edit Back-dated Transactions,نقش مجاز برای ایجاد/ویرایش تراکنش های قدیمی, +Role Allowed to Over Bill , نقش مجاز به Over Bill, +Role Allowed to Over Deliver/Receive,نقش مجاز به تحویل/دریافت بیش از حد, +Role Allowed to Override Stop Action,نقش مجاز برای لغو عمل توقف, +Role allowed to bypass Credit Limit,نقش مجاز برای دور زدن محدودیت اعتبار, +"Root Type for {0} must be one of the Asset, Liability, Income, Expense and Equity",نوع ریشه برای {0} باید یکی از دارایی، بدهی، درآمد، هزینه و حقوق صاحبان موجودی باشد., +Round Free Qty,دور تعداد رایگان, +Round Off Tax Amount,دور کردن مبلغ مالیات, +Round Tax Amount Row-wise,گرد کردن مقدار مالیات مبتنی بر ردیف, +Rounding Loss Allowance,زیان گرد کردن مجاز, +Rounding Loss Allowance should be between 0 and 1,زیان گرد کردن مجاز باید بین 0 و 1 باشد, +Rounding gain/loss Entry for Stock Transfer,گرد کردن ثبت سود/زیان برای انتقال موجودی, +Row #,ردیف #, +Row # {0}:,ردیف شماره {0}:, +Row #{0}: A reorder entry already exists for warehouse {1} with reorder type {2}.,ردیف #{0}: یک ورودی سفارش مجدد از قبل برای انبار {1} با نوع سفارش مجدد {2} وجود دارد., +Row #{0}: Acceptance Criteria Formula is incorrect.,ردیف #{0}: فرمول معیارهای پذیرش نادرست است., +Row #{0}: Acceptance Criteria Formula is required.,ردیف #{0}: فرمول معیارهای پذیرش الزامی است., +Row #{0}: Accepted Warehouse and Rejected Warehouse cannot be same,ردیف #{0}: انبار پذیرفته شده و انبار مرجوعی نمی توانند یکسان باشند, +Row #{0}: Accepted Warehouse is mandatory for the accepted Item {1},ردیف #{0}: انبار پذیرفته شده برای مورد پذیرفته شده اجباری است {1}, +Row #{0}: Allocated amount:{1} is greater than outstanding amount:{2} for Payment Term {3},ردیف #{0}: مبلغ تخصیص یافته:{1} بیشتر از مبلغ معوق است:{2} برای مدت پرداخت {3}, +Row #{0}: Amount must be a positive number,ردیف #{0}: مقدار باید یک عدد مثبت باشد, +Row #{0}: BOM is not specified for subcontracting item {0},ردیف #{0}: BOM برای قرارداد فرعی مورد {0} مشخص نشده است, +Row #{0}: Batch No {1} is already selected.,ردیف #{0}: شماره دسته {1} قبلاً انتخاب شده است., +Row #{0}: Cannot allocate more than {1} against payment term {2},ردیف #{0}: نمی توان بیش از {1} را در مقابل مدت پرداخت {2} تخصیص داد, +Row #{0}: Cannot transfer more than Required Qty {1} for Item {2} against Job Card {3},ردیف #{0}: نمی توان بیش از مقدار لازم {1} برای مورد {2} در مقابل کارت کار {3} انتقال داد, +Row #{0}: Consumed Asset {1} cannot be Draft,ردیف #{0}: دارایی مصرف شده {1} نمی تواند پیش نویس باشد, +Row #{0}: Consumed Asset {1} cannot be cancelled,ردیف #{0}: دارایی مصرف شده {1} قابل لغو نیست, +Row #{0}: Consumed Asset {1} cannot be the same as the Target Asset,ردیف #{0}: دارایی مصرف شده {1} نمی تواند با دارایی هدف یکسان باشد, +Row #{0}: Consumed Asset {1} cannot be {2},ردیف #{0}: دارایی مصرف شده {1} نمی تواند {2} باشد, +Row #{0}: Consumed Asset {1} does not belong to company {2},ردیف #{0}: دارایی مصرف شده {1} به شرکت {2} تعلق ندارد, +Row #{0}: Cumulative threshold cannot be less than Single Transaction threshold,ردیف #{0}: آستانه تجمعی نمی‌تواند کمتر از آستانه یک تراکنش باشد, +Row #{0}: Dates overlapping with other row,ردیف #{0}: تاریخ ها با ردیف دیگر همپوشانی دارند, +Row #{0}: Default BOM not found for FG Item {1},ردیف #{0}: BOM پیش‌فرض برای آیتم کالای تمام شده {1} یافت نشد, +Row #{0}: Expense Account not set for the Item {1}. {2},ردیف #{0}: حساب هزینه برای مورد {1} تنظیم نشده است. {2}, +Row #{0}: Finished Good Item Qty can not be zero,ردیف #{0}: مقدار آیتم کالای تمام شده نمی تواند صفر باشد, +Row #{0}: Finished Good Item is not specified for service item {1},ردیف #{0}: آیتم کالای تمام شده برای مورد خدماتی {1} مشخص نشده است, +Row #{0}: Finished Good Item {1} must be a sub-contracted item,ردیف #{0}: آیتم کالای تمام شده {1} باید یک آیتم قرارداد فرعی باشد, +Row #{0}: Finished Good reference is mandatory for Scrap Item {1}.,ردیف #{0}: مرجع کالای تمام شده برای ضایعات {1} اجباری است., +"Row #{0}: For {1}, you can select reference document only if account gets credited",ردیف #{0}: برای {1}، فقط در صورتی می‌توانید سند مرجع را انتخاب کنید که حساب اعتبار شود, +"Row #{0}: For {1}, you can select reference document only if account gets debited",ردیف #{0}: برای {1}، فقط در صورتی می‌توانید سند مرجع را انتخاب کنید که حساب بدهکار شود, +Row #{0}: From Date cannot be before To Date,ردیف #{0}: From Date نمی تواند قبل از To Date باشد, +Row #{0}: Item {1} does not exist,ردیف #{0}: مورد {1} وجود ندارد, +"Row #{0}: Item {1} has been picked, please reserve stock from the Pick List.",ردیف #{0}: مورد {1} انتخاب شده است، لطفاً موجودی را از فهرست انتخاب رزرو کنید., +Row #{0}: Item {1} is not a service item,ردیف #{0}: مورد {1} یک مورد خدماتی نیست, +Row #{0}: Item {1} is not a stock item,ردیف #{0}: مورد {1} یک کالای موجودی نیست, +Row #{0}: Only {1} available to reserve for the Item {2},ردیف #{0}: فقط {1} برای رزرو مورد {2} موجود است, +Row #{0}: Please select Item Code in Assembly Items,ردیف #{0}: لطفاً کد آیتم را در آیتم‌های اسمبلی انتخاب کنید, +Row #{0}: Please select the BOM No in Assembly Items,ردیف #{0}: لطفاً شماره BOM را در آیتم‌های اسمبلی انتخاب کنید, +Row #{0}: Please select the Sub Assembly Warehouse,ردیف #{0}: لطفاً انبار زیر مونتاژ را انتخاب کنید, +Row #{0}: Please update deferred revenue/expense account in item row or default account in company master,ردیف #{0}: لطفاً حساب درآمد/هزینه معوق را در ردیف آیتم یا حساب پیش‌فرض در اصلی شرکت به‌روزرسانی کنید., +Row #{0}: Qty increased by {1},ردیف #{0}: تعداد با {1} افزایش یافت, +Row #{0}: Qty must be a positive number,ردیف #{0}: تعداد باید یک عدد مثبت باشد, +Row #{0}: Qty should be less than or equal to Available Qty to Reserve (Actual Qty - Reserved Qty) {1} for Iem {2} against Batch {3} in Warehouse {4}.,ردیف #{0}: تعداد باید کمتر یا برابر با تعداد موجود برای رزرو (تعداد واقعی - تعداد رزرو شده) {1} برای Iem {2} در مقابل دسته {3} در انبار {4} باشد., +Row #{0}: Quantity to reserve for the Item {1} should be greater than 0.,ردیف #{0}: مقدار قابل رزرو برای مورد {1} باید بیشتر از 0 باشد., +Row #{0}: Rate must be same as {1}: {2} ({3} / {4}),ردیف #{0}: نرخ باید مانند {1} باشد: {2} ({3} / {4}), +Row #{0}: Received Qty must be equal to Accepted + Rejected Qty for Item {1},ردیف #{0}: تعداد دریافتی باید برابر با تعداد پذیرفته شده + رد شده برای مورد {1} باشد., +Row #{0}: Rejected Qty cannot be set for Scrap Item {1}.,سطر #{0}: تعداد رد شده را نمی توان برای ضایعات {1} تنظیم کرد., +Row #{0}: Rejected Warehouse is mandatory for the rejected Item {1},ردیف #{0}: انبار مرجوعی برای مورد رد شده اجباری است {1}, +Row #{0}: Scrap Item Qty cannot be zero,ردیف #{0}: تعداد مورد ضایعات نمی تواند صفر باشد, +Row #{0}: Serial No {1} for Item {2} is not available in {3} {4} or might be reserved in another {5}.,ردیف #{0}: شماره سریال {1} برای آیتم {2} در {3} {4} موجود نیست یا ممکن است در {5} دیگری رزرو شده باشد., +Row #{0}: Serial No {1} is already selected.,ردیف #{0}: شماره سریال {1} قبلاً انتخاب شده است., +Row #{0}: Start Time and End Time are required,ردیف #{0}: زمان شروع و زمان پایان مورد نیاز است, +Row #{0}: Start Time must be before End Time,ردیف #{0}: زمان شروع باید قبل از زمان پایان باشد, +Row #{0}: Status is mandatory,ردیف #{0}: وضعیت اجباری است, +Row #{0}: Stock cannot be reserved for Item {1} against a disabled Batch {2}.,ردیف #{0}: موجودی را نمی توان برای آیتم {1} در مقابل دسته غیرفعال شده {2} رزرو کرد., +Row #{0}: Stock cannot be reserved for a non-stock Item {1},ردیف #{0}: موجودی را نمی توان برای یک کالای غیر موجودی رزرو کرد {1}, +Row #{0}: Stock cannot be reserved in group warehouse {1}.,ردیف #{0}: موجودی در انبار گروهی {1} قابل رزرو نیست., +Row #{0}: Stock is already reserved for the Item {1}.,ردیف #{0}: موجودی قبلاً برای مورد {1} رزرو شده است., +Row #{0}: Stock is reserved for item {1} in warehouse {2}.,ردیف #{0}: موجودی برای کالای {1} در انبار {2} رزرو شده است., +Row #{0}: Stock not available to reserve for Item {1} against Batch {2} in Warehouse {3}.,ردیف #{0}: موجودی برای رزرو مورد {1} در مقابل دسته {2} در انبار {3} موجود نیست., +Row #{0}: Stock not available to reserve for the Item {1} in Warehouse {2}.,ردیف #{0}: موجودی برای رزرو مورد {1} در انبار {2} موجود نیست., +Row #{0}: You cannot use the inventory dimension '{1}' in Stock Reconciliation to modify the quantity or valuation rate. Stock reconciliation with inventory dimensions is intended solely for performing opening entries.,ردیف #{0}: نمی‌توانید از بعد موجودی «{1}» در تطبیق موجودی برای تغییر مقدار یا نرخ ارزیابی استفاده کنید. تطبیق موجودی با ابعاد موجودی صرفاً برای انجام ورودی های افتتاحیه در نظر گرفته شده است., +Row #{0}: You must select an Asset for Item {1}.,ردیف #{0}: باید یک دارایی برای مورد {1} انتخاب کنید., +Row #{0}: {1} is not a valid reading field. Please refer to the field description.,ردیف #{0}: {1} یک فیلد خواندنی معتبر نیست. لطفا به توضیحات فیلد مراجعه کنید., +Row #{0}: {1} of {2} should be {3}. Please update the {1} or select a different account.,ردیف #{0}: {1} از {2} باید {3} باشد. لطفاً {1} را به روز کنید یا حساب دیگری را انتخاب کنید., +Row #{1}: Warehouse is mandatory for stock Item {0},ردیف #{1}: انبار برای کالای موجودی {0} اجباری است, +Row #{}: Finance Book should not be empty since you're using multiple.,ردیف #{}: کتاب مالی نباید خالی باشد زیرا از چندگانه استفاده می کنید., +Row #{}: Please use a different Finance Book.,ردیف #{}: لطفاً از کتاب مالی دیگری استفاده کنید., +Row #{}: item {} has been picked already.,ردیف #{}: مورد {} قبلاً انتخاب شده است., +Row #{}: {} {} doesn't belong to Company {}. Please select valid {}.,ردیف #{}: {} {} به شرکت {} تعلق ندارد. لطفاً {} معتبر را انتخاب کنید., +Row No {0}: Warehouse is required. Please set a Default Warehouse for Item {1} and Company {2},ردیف شماره {0}: انبار مورد نیاز است. لطفاً یک انبار پیش فرض برای مورد {1} و شرکت {2} تنظیم کنید, +Row Number,شماره ردیف, +Row {0},ردیف {0}, +"Row {0} picked quantity is less than the required quantity, additional {1} {2} required.",مقدار انتخابی ردیف {0} کمتر از مقدار مورد نیاز است، {1} {2} اضافی مورد نیاز است., +Row {0}# Item {1} cannot be transferred more than {2} against {3} {4},ردیف {0}# مورد {1} را نمی توان بیش از {2} در برابر {3} {4} منتقل کرد, +Row {0}# Item {1} not found in 'Raw Materials Supplied' table in {2} {3},ردیف {0}# مورد {1} در جدول «مواد خام عرضه شده» در {2} {3} یافت نشد, +Row {0}: Accepted Qty and Rejected Qty can't be zero at the same time.,ردیف {0}: تعداد پذیرفته شده و تعداد رد شده نمی توانند همزمان صفر باشند., +Row {0}: Account {1} and Party Type {2} have different account types,ردیف {0}: حساب {1} و نوع طرف {2} انواع مختلف حساب دارند, +Row {0}: Allocated amount {1} must be less than or equal to invoice outstanding amount {2},ردیف {0}: مبلغ تخصیص یافته {1} باید کمتر یا برابر با مبلغ معوق فاکتور {2} باشد., +Row {0}: Allocated amount {1} must be less than or equal to remaining payment amount {2},ردیف {0}: مبلغ تخصیص یافته {1} باید کمتر یا مساوی با مبلغ پرداخت باقی مانده باشد {2}, +Row {0}: Both Debit and Credit values cannot be zero,ردیف {0}: هر دو مقدار بدهی و اعتبار نمی توانند صفر باشند, +Row {0}: Cost Center {1} does not belong to Company {2},ردیف {0}: مرکز هزینه {1} به شرکت {2} تعلق ندارد, +Row {0}: Either Delivery Note Item or Packed Item reference is mandatory.,ردیف {0}: مرجع مورد یادداشت تحویل یا کالای بسته بندی شده اجباری است., +Row {0}: Expense Head changed to {1} as no Purchase Receipt is created against Item {2}.,ردیف {0}: سر هزینه به {1} تغییر کرد زیرا هیچ رسید خریدی در برابر مورد {2} ایجاد نشد., +Row {0}: Expense Head changed to {1} because account {2} is not linked to warehouse {3} or it is not the default inventory account,ردیف {0}: سر هزینه به {1} تغییر کرد زیرا حساب {2} به انبار {3} مرتبط نیست یا حساب موجودی پیش‌فرض نیست, +Row {0}: Expense Head changed to {1} because expense is booked against this account in Purchase Receipt {2},ردیف {0}: سر هزینه به {1} تغییر کرد زیرا هزینه در قبض خرید {2} در مقابل این حساب رزرو شده است., +Row {0}: From Warehouse is mandatory for internal transfers,ردیف {0}: از انبار برای نقل و انتقالات داخلی اجباری است, +Row {0}: Item Tax template updated as per validity and rate applied,ردیف {0}: الگوی مالیات آیتم بر اساس اعتبار و نرخ اعمال شده به روز شد, +Row {0}: Item rate has been updated as per valuation rate since its an internal stock transfer,ردیف {0}: نرخ اقلام براساس نرخ ارزیابی به‌روزرسانی شده است، زیرا یک انتقال داخلی موجودی است, +Row {0}: Item {1} must be a stock item.,ردیف {0}: مورد {1} باید یک کالای موجودی باشد., +Row {0}: Item {1} must be a subcontracted item.,ردیف {0}: مورد {1} باید یک آیتم قرارداد فرعی باشد., +Row {0}: Packed Qty must be equal to {1} Qty.,ردیف {0}: تعداد بسته بندی شده باید برابر با {1} تعداد باشد., +Row {0}: Packing Slip is already created for Item {1}.,ردیف {0}: برگه بسته بندی قبلاً برای مورد {1} ایجاد شده است., +Row {0}: Payment Term is mandatory,ردیف {0}: مدت پرداخت اجباری است, +Row {0}: Please provide a valid Delivery Note Item or Packed Item reference.,ردیف {0}: لطفاً یک مورد یادداشت تحویل معتبر یا مرجع کالای بسته بندی شده ارائه دهید., +Row {0}: Please select a BOM for Item {1}.,ردیف {0}: لطفاً یک BOM برای مورد {1} انتخاب کنید., +Row {0}: Please select an active BOM for Item {1}.,ردیف {0}: لطفاً یک BOM فعال برای مورد {1} انتخاب کنید., +Row {0}: Please select an valid BOM for Item {1}.,ردیف {0}: لطفاً یک BOM معتبر برای مورد {1} انتخاب کنید., +Row {0}: Project must be same as the one set in the Timesheet: {1}.,ردیف {0}: پروژه باید مانند آنچه در صفحه زمان تنظیم شده است: {1} باشد., +Row {0}: Purchase Invoice {1} has no stock impact.,ردیف {0}: فاکتور خرید {1} تأثیری بر موجودی ندارد., +Row {0}: Qty cannot be greater than {1} for the Item {2}.,ردیف {0}: تعداد نمی‌تواند بیشتر از {1} برای مورد {2} باشد., +Row {0}: Qty in Stock UOM can not be zero.,ردیف {0}: تعداد موجودی UOM در انبار نمی تواند صفر باشد., +Row {0}: Qty must be greater than 0.,ردیف {0}: تعداد باید بیشتر از 0 باشد., +Row {0}: Shift cannot be changed since the depreciation has already been processed,ردیف {0}: Shift را نمی توان تغییر داد زیرا استهلاک قبلاً پردازش شده است, +Row {0}: Target Warehouse is mandatory for internal transfers,ردیف {0}: انبار هدف برای نقل و انتقالات داخلی اجباری است, +"Row {0}: To set {1} periodicity, difference between from and to date must be greater than or equal to {2}",ردیف {0}: برای تنظیم تناوب {1}، تفاوت بین تاریخ و تاریخ باید بزرگتر یا مساوی با {2} باشد., +Row {0}: {1} account already applied for Accounting Dimension {2},ردیف {0}: حساب {1} قبلاً برای بعد حسابداری {2} اعمال شده است, +Row {0}: {1} {2} cannot be same as {3} (Party Account) {4},ردیف {0}: {1} {2} نمی‌تواند مانند {3} (حساب طرف) {4}, +Row({0}): Outstanding Amount cannot be greater than actual Outstanding Amount {1} in {2},ردیف ({0}): مبلغ معوق نمی تواند بیشتر از مبلغ معوقه واقعی {1} در {2} باشد., +Rows with Same Account heads will be merged on Ledger,ردیف هایی با سرهای حساب یکسان در دفتر کل ادغام می شوند, +Rows: {0} have 'Payment Entry' as reference_type. This should not be set manually.,"ردیف‌ها: {0} دارای ""ثبت پرداخت"" به عنوان reference_type هستند. این نباید به صورت دستی تنظیم شود.", +Rows: {0} in {1} section are Invalid. Reference Name should point to a valid Payment Entry or Journal Entry.,ردیف‌ها: {0} در بخش {1} نامعتبر است. نام مرجع باید به یک ثبت پرداخت معتبر یا ثبت دفتر روزنامه اشاره کند., +Run parallel job cards in a workstation,اجرای موازی کارت های در یک ایستگاه کاری, +Running,در حال اجرا, +SCO Supplied Item,مورد عرضه شده SCO, +SLA Fulfilled On,SLA تکمیل شد, +SLA Fulfilled On Status,SLA در وضعیت تکمیل شد, +SLA Paused On,SLA متوقف شد, +SLA will be applied if {1} is set as {2}{3},اگر {1} به عنوان {2}{3} تنظیم شود، SLA اعمال خواهد شد, +SLA will be applied on every {0},SLA در هر {0} اعمال خواهد شد, +SMS Settings,تنظیمات پیامک, +Salary Currency,ارز حقوق و دستمزد, +Sales Invoice {0} must be deleted before cancelling this Sales Order,فاکتور فروش {0} باید قبل از لغو این سفارش فروش حذف شود, +Sales Order Packed Item,سفارش فروش کالای بسته بندی شده, +Sales Order Reference,مرجع سفارش فروش, +Sales Order Status,وضعیت سفارش فروش, +"Sales Order {0} already exists against Customer's Purchase Order {1}. To allow multiple Sales Orders, Enable {2} in {3}",سفارش فروش {0} در مقابل سفارش خرید مشتری {1} وجود دارد. برای مجاز کردن چندین سفارش فروش، {2} را در {3} فعال کنید, +Sales Partner , شریک فروش, +Sales Partner Item,مورد شریک فروش, +Sales Pipeline Analytics,تجزیه و تحلیل خط لوله فروش, +Sales Update Frequency in Company and Project,فرکانس به روز رسانی فروش در شرکت و پروژه, +Sales Value,ارزش فروش, +Salvage Value Percentage,درصد ارزش نجات, +Same item and warehouse combination already entered.,همان کالا و ترکیب انبار قبلا وارد شده است., +Savings,پس انداز, +Scan Batch No,اسکن شماره دسته, +Scan Mode,حالت اسکن, +Scan Serial No,اسکن شماره سریال, +Scan barcode for item {0},اسکن بارکد برای مورد {0}, +"Scan mode enabled, existing quantity will not be fetched.",حالت اسکن فعال است، مقدار موجود واکشی نخواهد شد., +Scanned Quantity,مقدار اسکن شده, +Scheduled Time Logs,گزارش های زمان برنامه ریزی شده, +Scheduler is Inactive. Can't trigger job now.,زمان‌بند غیرفعال است. اکنون نمی توان کار را آغاز کرد., +Scheduler is Inactive. Can't trigger jobs now.,زمان‌بند غیرفعال است. اکنون نمی توان کارها را آغاز کرد., +Scheduler is inactive. Cannot enqueue job.,زمانبند غیرفعال است. نمی توان کار را در نوبت گذاشت., +Scheduler is inactive. Cannot merge accounts.,زمانبند غیرفعال است. نمی توان حساب ها را ادغام کرد., +Scheduling,برنامه ریزی, +Scrap & Process Loss,ضایعات و از دست دادن فرآیند, +Scrap Asset,دارایی قراضه, +Scrap Cost Per Qty,هزینه قراضه در هر تعداد, +Scrap Item Code,کد آیتم ضایعات, +Scrap Item Name,نام آیتم ضایعات, +"Search by item code, serial number or barcode",جستجو بر اساس کد آیتم، شماره سریال یا بارکد, +Secondary Party,طرف ثانویه, +Secondary Role,نقش ثانویه, +Segregate Serial / Batch Bundle,جداسازی باندل سریال / دسته, +Select Accounting Dimension.,بعد حسابداری را انتخاب کنید., +Select Alternative Items for Sales Order,آیتم‌های جایگزین را برای سفارش فروش انتخاب کنید, +Select Batch No,شماره دسته را انتخاب کنید, +Select Corrective Operation,عملیات اصلاحی را انتخاب کنید, +Select Date of Birth. This will validate Employees age and prevent hiring of under-age staff.,تاریخ تولد را انتخاب کنید. این امر سن کارکنان را تأیید می کند و از استخدام کارکنان زیر سن جلوگیری می کند., +"Select Date of joining. It will have impact on the first salary calculation, Leave allocation on pro-rata bases.",تاریخ عضویت را انتخاب کنید. در اولین محاسبه حقوق، تخصیص مرخصی به نسبت، تاثیر خواهد داشت., +Select Dimension,Dimension را انتخاب کنید, +Select Finished Good,Finished Good را انتخاب کنید, +Select Items for Quality Inspection,موارد را برای بازرسی کیفیت انتخاب کنید, +Select Serial No,شماره سریال را انتخاب کنید, +Select Serial and Batch,سریال و دسته را انتخاب کنید, +Select Time,زمان را انتخاب کنید, +Select Vouchers to Match,کوپن‌ها را برای مطابقت انتخاب کنید, +Select Warehouses to get Stock for Materials Planning,برای بدست آوردن انبار برای برنامه ریزی مواد، انبارها را انتخاب کنید, +Select a Company this Employee belongs to.,شرکتی را انتخاب کنید که این کارمند به آن تعلق دارد., +Select a Customer,یک مشتری انتخاب کنید, +Select an Item Group.,یک گروه آیتم را انتخاب کنید., +Select an item from each set to be used in the Sales Order.,از هر مجموعه یک مورد را برای استفاده در سفارش فروش انتخاب کنید., +Select the Default Workstation where the Operation will be performed. This will be fetched in BOMs and Work Orders.,ایستگاه کاری پیش‌فرض را که در آن عملیات انجام می‌شود، انتخاب کنید. این در BOM ها و دستور کارها واکشی می شود., +Select the Item to be manufactured.,موردی را که باید تولید شود انتخاب کنید., +"Select the Item to be manufactured. The Item name, UoM, Company, and Currency will be fetched automatically.",موردی را که باید تولید شود انتخاب کنید. نام مورد، UoM، شرکت و ارز به طور خودکار واکشی می شود., +Select the Warehouse,انبار را انتخاب کنید, +Select the date and your timezone,تاریخ و منطقه زمانی خود را انتخاب کنید, +Select the raw materials (Items) required to manufacture the Item,مواد خام (آیتم‌ها) مورد نیاز برای تولید آیتم را انتخاب کنید, +Select your weekly off day,روز تعطیل هفتگی خود را انتخاب کنید, +Selected Vouchers,کوپن های انتخاب شده, +Selected date is,تاریخ انتخاب شده است, +Selected document must be in submitted state,سند انتخاب شده باید در حالت ارسال شده باشد, +Self delivery,تحویل خود, +Sell Asset,فروش دارایی, +Send Attached Files,ارسال فایل های پیوست, +Send Document Print,ارسال سند چاپ, +Send Emails,ارسال ایمیل, +Sequential,متوالی, +Serial & Batch Item,آیتم سریال و دسته ای, +Serial & Batch Item Settings,تنظیمات آیتم سریال و دسته ای, +Serial / Batch Bundle,باندل سریال / دسته, +Serial / Batch Bundle Missing,باندل سریال / دسته جا افتاده, +Serial / Batch No,شماره سریال / دسته, +Serial / Batch Nos,شماره های سریال / دسته ای, +Serial No Ledger,دفتر کل شماره سریال, +Serial No Range,محدوده شماره سریال, +Serial No and Batch for Finished Good,شماره سریال و دسته ای برای Finished Good, +Serial No is mandatory,شماره سریال اجباری است, +Serial No {0} already exists,شماره سریال {0} از قبل وجود دارد, +Serial No {0} already scanned,شماره سریال {0} قبلاً اسکن شده است, +Serial No {0} does not exists,شماره سریال {0} وجود ندارد, +Serial No {0} is already added,شماره سریال {0} قبلاً اضافه شده است, +Serial Nos,شماره های سریال, +Serial Nos / Batch Nos,شماره های سریال / شماره های دسته ای, +Serial Nos Mismatch,عدم تطابق شماره های سریال, +Serial Nos are created successfully,شماره های سریال با موفقیت ایجاد شد, +"Serial Nos are reserved in Stock Reservation Entries, you need to unreserve them before proceeding.",شماره های سریال در ورودی های رزرو موجودی رزرو شده اند، قبل از ادامه باید آنها را لغو رزرو کنید., +Serial and Batch,سریال و دسته, +Serial and Batch Bundle,باندل سریال و دسته, +Serial and Batch Bundle created,باندل سریال و دسته ایجاد شد, +Serial and Batch Bundle updated,باندل سریال و دسته به روز شد, +Serial and Batch Details,جزئیات سریال و دسته, +Serial and Batch Entry,ثبت سریال و دسته, +Serial and Batch No,شماره سریال و دسته, +Serial and Batch Nos,شماره سریال و دسته, +Serial and Batch Nos will be auto-reserved based on Pick Serial / Batch Based On,شماره های سریال و دسته بر اساس انتخاب سریال / دسته بر اساس به صورت خودکار رزرو می شوند, +Serial and Batch Reservation,رزرو سریال و دسته, +Serial and Batch Summary,خلاصه سریال و دسته ای, +Service Cost Per Qty,هزینه خدمات در هر تعداد, +Service Expense Total Amount,هزینه خدمات کل مبلغ, +Service Expenses,هزینه های خدمات, +Service Item,آیتم خدمات, +Service Item Qty,تعداد مورد خدمات, +Service Item Qty / Finished Good Qty,تعداد آیتم خدمات / تعداد کالای تمام شده, +Service Item UOM,مورد خدمات UOM, +Service Item {0} is disabled.,مورد سرویس {0} غیرفعال است., +Service Item {0} must be a non-stock item.,مورد سرویس {0} باید یک کالای غیر موجودی باشد., +Service Items,آیتم‌های خدماتی, +Service Level Agreement for {0} {1} already exists.,قرارداد سطح سرویس برای {0} {1} از قبل وجود دارد., +Service Level Name,نام سطح خدمات, +Service Provider,ارائه دهنده خدمات, +Set Default Supplier,تامین کننده پیش فرض را تنظیم کنید, +Set From Warehouse,مجموعه از انبار, +Set Landed Cost Based on Purchase Invoice Rate,تنظیم هزینه تمام شده تا درب انبار بر اساس نرخ فاکتور خرید, +Set Loyalty Program,تنظیم برنامه وفاداری, +Set Operating Cost / Scrape Items From Sub-assemblies,تنظیم هزینه عملیاتی / آیتم‌های ضایعات از زیر مونتاژها, +Set Operating Cost Based On BOM Quantity,هزینه عملیاتی را بر اساس مقدار BOM تنظیم کنید, +Set Process Loss Item Quantity,مقدار مورد از دست دادن فرآیند را تنظیم کنید, +Set Project Status,تنظیم وضعیت پروژه, +Set Quantity,تنظیم مقدار, +Set Response Time for Priority {0} in row {1}.,زمان پاسخ را برای اولویت {0} در ردیف {1} تنظیم کنید., +Set Valuation Rate Based on Source Warehouse,نرخ ارزش گذاری را بر اساس انبار منبع تنظیم کنید, +Set Warehouse,مجموعه انبار, +Set default {0} account for non stock items,تنظیم حساب پیش‌فرض {0} را برای آیتم‌های غیر موجودی, +Set fieldname from which you want to fetch the data from the parent form.,نام فیلدی را که می‌خواهید داده‌ها را از فرم والد دریافت کنید، تنظیم کنید., +Set quantity of process loss item:,تنظیم مقدار مورد از دست دادن فرآیند:, +Set the Planned Start Date (an Estimated Date at which you want the Production to begin),تاریخ شروع برنامه ریزی شده را تنظیم کنید (تاریخ تخمینی که در آن می خواهید تولید شروع شود), +Set the status manually.,وضعیت را به صورت دستی تنظیم کنید., +Set {0} in asset category {1} for company {2},تنظیم {0} در دسته دارایی {1} برای شرکت {2}, +Sets 'Accepted Warehouse' in each row of the Items table.,انبار پذیرفته شده را در هر ردیف از جدول آیتم ها تنظیم می کند., +Sets 'Rejected Warehouse' in each row of the Items table.,انبار مرجوعی را در هر ردیف از جدول آیتم ها تنظیم می کند., +Sets 'Reserve Warehouse' in each row of the Supplied Items table.,انبار ذخیره را در هر ردیف از جدول اقلام عرضه شده تنظیم می کند., +Setting Item Locations...,تنظیم مکان مورد..., +Setting the account as a Company Account is necessary for Bank Reconciliation,تنظیم حساب به عنوان حساب شرکت برای تسویه حساب بانکی ضروری است, +Setting {} is required,تنظیم {} مورد نیاز است, +Setup your organization,سازمان خود را راه‌اندازی کنید, +Shift,تغییر مکان, +Shift Factor,ضریب تغییر, +Shift Name,نام شیفت, +Shipment,حمل و نقل, +Shipment Amount,مبلغ حمل و نقل, +Shipment Delivery Note,یادداشت تحویل حمل و نقل, +Shipment ID,شناسه حمل و نقل, +Shipment Information,اطلاعات حمل و نقل, +Shipment Parcel,بسته حمل و نقل, +Shipment Parcel Template,قالب بسته حمل و نقل, +Shipment Type,نوع حمل و نقل, +Shipment details,جزئیات حمل و نقل, +Shipping Address Details,جزئیات آدرس حمل و نقل, +Shipping Address Template,الگوی آدرس حمل و نقل, +Show Balances in Chart Of Accounts,نمایش موجودی در نمودار حساب, +Show Barcode Field in Stock Transactions,نمایش فیلد بارکد در معاملات موجودی, +Show Dimension Wise Stock,نمایش موجودی بر اساس ابعاد, +Show Disabled Warehouses,نمایش انبارهای غیرفعال, +Show Failed Logs,نمایش لاگ های ناموفق, +Show GL Balance,نمایش تراز دفتر کل, +Show Item Name,نمایش نام آیتم, +Show Ledger View,نمایش نمای دفتر کل, +Show Net Values in Party Account,نمایش ارزش خالص در حساب طرف, +Show Pay Button in Purchase Order Portal,نمایش دکمه پرداخت در پورتال سفارش خرید, +Show Preview,نمایش پیش نمایش, +Show Remarks,نمایش اظهارات, +Show Taxes as Table in Print,نمایش مالیات به عنوان جدول در چاپ, +Show net values in opening and closing columns,نمایش مقادیر خالص در ستون افتتاحیه و اختتامیه, +Show only the Immediate Upcoming Term,فقط عبارت فوری آینده را نشان دهید, +Show pending entries,نمایش ورودی های معلق, +Show with upcoming revenue/expense,نمایش با درآمد/هزینه آتی, +"Simple Python Expression, Example: doc.status == 'Open' and doc.issue_type == 'Bug'",عبارت ساده پایتون، مثال: doc.status == 'Open' و doc.issue_type == 'Bug', +Simultaneous,همزمان, +Skip Available Sub Assembly Items,صرف نظر از آیتم‌های زیر مونتاژ موجود, +Skipped,رد شد, +Skipping Tax Withholding Category {0} as there is no associated account set for Company {1} in it.,رد شدن از دسته مالیات کسر مالیات {0} زیرا هیچ حساب مرتبطی برای شرکت {1} در آن تنظیم نشده است., +"Skipping {0} of {1}, {2}",پرش از {0} از {1}، {2}, +Sold by,فروخته شده توسط, +Something went wrong please try again,اشتباهی رخ داده لطفا دوباره تلاش کنید, +Source Exchange Rate,نرخ مبادله منبع, +Source Fieldname,نام فیلد منبع, +South Africa VAT Account,حساب مالیات بر ارزش افزوده آفریقای جنوبی, +South Africa VAT Settings,تنظیمات مالیات بر ارزش افزوده آفریقای جنوبی, +Spacer,اسپیسر, +Split Asset,تقسیم دارایی, +Split Early Payment Discount Loss into Income and Tax Loss,زیان تخفیف پرداخت زودهنگام را به درآمد و ضرر مالیات تقسیم کنید, +Split From,تقسیم از, +Split Qty,تقسیم تعداد, +Split qty cannot be grater than or equal to asset qty,مقدار تقسیم نمی‌تواند بیشتر یا مساوی تعداد دارایی باشد, +Splitting {0} {1} into {2} rows as per Payment Terms,تقسیم {0} {1} به ردیف‌های {2} طبق شرایط پرداخت, +Stage,صحنه, +Stale Days should start from 1.,روزهای قدیمی باید از 1 شروع شود., +Standard Description,شرح استاندارد, +Standard Rated Expenses,هزینه های رتبه بندی استاندارد, +"Standard Terms and Conditions that can be added to Sales and Purchases. Examples: Validity of the offer, Payment Terms, Safety and Usage, etc.",شرایط و ضوابط استاندارد که می تواند به خرید و فروش اضافه شود. مثال: اعتبار پیشنهاد، شرایط پرداخت، ایمنی و استفاده و غیره., +Standard rated supplies in {0},منابع دارای رتبه استاندارد در {0}, +Start / Resume,شروع / از سرگیری, +Start Date should be lower than End Date,تاریخ شروع باید کمتر از تاریخ پایان باشد, +Start Deletion,شروع حذف, +Start Import,شروع درون‌بُرد, +Start Job,شروع کار, +Start Merge,ادغام را شروع کنید, +Start Reposting,بازنشر را شروع کنید, +Start Time can't be greater than or equal to End Time for {0}.,زمان شروع نمی تواند بزرگتر یا مساوی با زمان پایان برای {0} باشد., +Started a background job to create {1} {0},یک کار پس‌زمینه برای ایجاد {1} {0} شروع کرد, +Status Details,جزئیات وضعیت, +Status Illustration,مصور سازی وضعیت, +Status set to rejected as there are one or more rejected readings.,وضعیت رد شد زیرا یک یا چند قرائت رد شده وجود دارد., +Stock Closing,اختتامیه موجودی, +Stock Consumed During Repair,موجودی مصرف شده در حین تعمیر, +Stock Consumption Details,جزئیات مصرف موجودی, +Stock Entries already created for Work Order {0}: {1},ثبت های موجودی قبلاً برای دستور کار {0} ایجاد شده‌اند: {1}, +Stock Ledger Invariant Check,چک ثابت دفتر کل موجودی, +Stock Ledger Variance,واریانس دفتر کل موجودی, +Stock Movement,جابه‌جایی موجودی, +Stock Planning,برنامه ریزی موجودی, +Stock Reposting Settings,تنظیمات ارسال مجدد موجودی, +Stock Reservation,رزرو موجودی, +Stock Reservation Entries Cancelled,ورودی های رزرو موجودی لغو شد, +Stock Reservation Entries Created,نوشته های رزرو موجودی ایجاد شد, +Stock Reservation Entry,ثبت رزرو موجودی, +Stock Reservation Entry cannot be updated as it has been delivered.,ورودی رزرو موجودی را نمی توان به دلیل تحویل گرفتن به روز کرد., +"Stock Reservation Entry created against a Pick List cannot be updated. If you need to make changes, we recommend canceling the existing entry and creating a new one.",ثبت رزرو موجودی ایجاد شده در برابر فهرست انتخابی نمی تواند به روز شود. اگر نیاز به ایجاد تغییرات دارید، توصیه می کنیم ثبت موجود را لغو کنید و یک ثبت جدید ایجاد کنید., +Stock Reservation Warehouse Mismatch,عدم تطابق انبار رزرو انبار, +Stock Reservation can only be created against {0}.,رزرو موجودی فقط می تواند در مقابل {0} ایجاد شود., +Stock Reserved Qty (in Stock UOM),تعداد موجودی رزرو شده (در انبار UOM), +Stock Transactions Settings,تنظیمات معاملات موجودی, +Stock UOM Quantity,مقدار موجودی UOM, +Stock Unreservation,عدم رزرو موجودی, +Stock Validations,اعتبارسنجی موجودی, +Stock cannot be reserved in group warehouse {0}.,موجودی در انبار گروهی {0} قابل رزرو نیست., +Stock cannot be reserved in the group warehouse {0}.,موجودی در انبار گروهی {0} قابل رزرو نیست., +Stock not available for Item {0} in Warehouse {1}.,موجودی برای کالای {0} در انبار {1} موجود نیست., +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2} {3}.,مقدار موجودی برای کد مورد کافی نیست: {0} در انبار {1}. مقدار موجود {2} {3}., +Stock transactions that are older than the mentioned days cannot be modified.,معاملات موجودی با قدمت بیشتر از روزهای مذکور قابل تغییر نمی باشد., +Stock/Accounts can not be frozen as processing of backdated entries is going on. Please try again later.,موجودی/حساب‌ها را نمی‌توان مسدود کرد زیرا پردازش ورودی‌های به‌تاریخ در حال انجام است. لطفاً بعداً دوباره امتحان کنید., +Sub Assemblies & Raw Materials,زیر مونتاژها و مواد اولیه, +Sub Assembly Item,آیتم زیر مونتاژ, +Sub Assembly Item Code,کد آیتم‌های زیر مونتاژ, +Sub Assembly Items,آیتم‌های زیر مونتاژ, +Sub Assembly Warehouse,انبار زیر مونتاژ, +Sub Operation,عملیات فرعی, +Sub Operations,عملیات فرعی, +Subcontract BOM,قرارداد فرعی BOM, +Subcontract Order,سفارش قرارداد فرعی, +Subcontract Order Summary,خلاصه سفارش قرارداد فرعی, +Subcontract Return,بازگشت قرارداد فرعی, +Subcontracting BOM,پیمانکاری فرعی BOM, +Subcontracting Order,سفارش پیمانکاری فرعی, +Subcontracting Order (Draft) will be auto-created on submission of Purchase Order.,سفارش پیمانکاری فرعی (پیش نویس) با ارسال سفارش خرید به صورت خودکار ایجاد می شود., +Subcontracting Order Item,مورد سفارش پیمانکاری فرعی, +Subcontracting Order Service Item,آیتم خدمات سفارش قرارداد فرعی, +Subcontracting Order Supplied Item,اقلام عرضه شده سفارش پیمانکاری فرعی, +Subcontracting Order {0} created.,سفارش قرارداد فرعی {0} ایجاد شد., +Subcontracting Purchase Order,سفارش خرید پیمانکاری فرعی, +Subcontracting Receipt,رسید پیمانکاری فرعی, +Subcontracting Receipt Item,آیتم رسید پیمانکاری, +Subcontracting Receipt Supplied Item,آیتم عرضه شده رسید پیمانکاری فرعی, +Subcontracting Settings,تنظیمات پیمانکاری فرعی, +Subdivision,زیر مجموعه, +Submit Action Failed,اقدام ارسال نشد, +Submit After Import,ارسال پس از درون‌بُرد, +Submit ERR Journals?,دفترهای روزنامه ERR ارسال شود؟, +Submit Generated Invoices,فاکتورهای تولید شده را ارسال کنید, +Succeeded,موفق شد, +Succeeded Entries,ورودی های موفق, +"Successfully changed Stock UOM, please redefine conversion factors for new UOM.",UOM موجودی با موفقیت تغییر کرد، لطفاً فاکتورهای تبدیل را برای UOM جدید دوباره تعریف کنید., +Successfully imported {0},{0} با موفقیت درون‌بُرد شد, +"Successfully imported {0} record out of {1}. Click on Export Errored Rows, fix the errors and import again.",{0} رکورد از {1} با موفقیت درون‌بُرد شد. روی Export Errored Rows کلیک کنید، خطاها را برطرف کرده و دوباره وارد کنید., +Successfully imported {0} record.,{0} رکورد با موفقیت درون‌بُرد شد., +"Successfully imported {0} records out of {1}. Click on Export Errored Rows, fix the errors and import again.",{0} رکورد از {1} با موفقیت درون‌بُرد شد. روی Export Errored Rows کلیک کنید، خطاها را برطرف کرده و دوباره وارد کنید., +Successfully imported {0} records.,{0} رکورد با موفقیت درون‌بُرد شد., +Successfully linked to Customer,با موفقیت به مشتری پیوند داده شد, +Successfully linked to Supplier,با موفقیت به تامین کننده پیوند داده شد, +Successfully merged {0} out of {1}.,{0} از {1} با موفقیت ادغام شد., +Successfully updated {0},با موفقیت به روز شد {0}, +"Successfully updated {0} record out of {1}. Click on Export Errored Rows, fix the errors and import again.",{0} رکورد از {1} با موفقیت به روز شد. روی Export Errored Rows کلیک کنید، خطاها را برطرف کرده و دوباره وارد کنید., +Successfully updated {0} record.,رکورد {0} با موفقیت به روز شد., +"Successfully updated {0} records out of {1}. Click on Export Errored Rows, fix the errors and import again.",{0} رکورد از {1} با موفقیت به روز شد. روی Export Errored Rows کلیک کنید، خطاها را برطرف کرده و دوباره وارد کنید., +Successfully updated {0} records.,رکورد {0} با موفقیت به روز شد., +Sum of Repair Cost and Value of Consumed Stock Items.,مجموع هزینه تعمیر و ارزش آیتم‌های موجودی مصرف شده., +Supplied Item,مورد عرضه شده, +Supplier Address Details,جزئیات آدرس تامین کننده, +Supplier Contact,تماس با تامین کننده, +Supplier Group Item,مورد گروه تامین کننده, +Supplier Info,اطلاعات تامین کننده, +Supplier Invoice,فاکتور تامین کننده, +Supplier Item,مورد تامین کننده, +Supplier Portal Users,کاربران پورتال تامین کننده, +Supplier Primary Address,آدرس اصلی تامین کننده, +Supplier Primary Contact,تماس اصلی تامین کننده, +Supplier Warehouse mandatory for sub-contracted {0},انبار تامین کننده برای قراردادهای فرعی {0} اجباری است, +Supplies subject to the reverse charge provision,لوازم مشمول ارائه شارژ معکوس, +Sync Now,اکنون همگام سازی کنید, +Sync Started,همگام سازی شروع شد, +System Settings,تنظیمات سیستم, +System will automatically create the serial numbers / batch for the Finished Good on submission of work order,سیستم به طور خودکار شماره سریال / دسته ای را برای کالای تمام شده در هنگام ارسال سفارش ایجاد می کند, +System will not check over billing since amount for Item {0} in {1} is zero,سیستم صورتحساب را بررسی نمی‌کند زیرا مبلغ مورد {0} در {1} صفر است, +TDS Payable,TDS قابل پرداخت, +Target Asset,دارایی هدف, +Target Asset Location,مکان دارایی مورد نظر, +Target Asset {0} cannot be cancelled,دارایی هدف {0} قابل لغو نیست, +Target Asset {0} cannot be submitted,دارایی هدف {0} قابل ارسال نیست, +Target Asset {0} cannot be {1},دارایی هدف {0} نمی تواند {1} باشد, +Target Asset {0} does not belong to company {1},دارایی هدف {0} به شرکت {1} تعلق ندارد, +Target Asset {0} needs to be composite asset,دارایی هدف {0} باید دارایی ترکیبی باشد, +Target Batch No,شماره دسته هدف, +Target Exchange Rate,نرخ ارز هدف, +Target Fieldname (Stock Ledger Entry),نام فیلد هدف (ثبت دفتر کل موجودی), +Target Fixed Asset Account,حساب دارایی ثابت هدف, +Target Has Batch No,هدف دارای Batch No, +Target Has Serial No,هدف دارای شماره سریال, +Target Incoming Rate,نرخ ورودی هدف, +Target Is Fixed Asset,هدف دارایی ثابت است, +Target Item Code,کد آیتم هدف, +Target Item Name,نام آیتم هدف, +Target Item {0} is neither a Fixed Asset nor a Stock Item,مورد هدف {0} نه یک دارایی ثابت است و نه یک کالای موجودی, +Target Item {0} must be a Fixed Asset item,مورد هدف {0} باید یک مورد دارایی ثابت باشد, +Target Item {0} must be a Stock Item,مورد هدف {0} باید یک مورد موجودی باشد, +Target Qty must be a positive number,تعداد هدف باید یک عدد مثبت باشد, +Target Serial No,شماره سریال هدف, +Target Warehouse is mandatory for Decapitalization,انبار هدف برای کاهش سرمایه اجباری است, +Target Warehouse is set for some items but the customer is not an internal customer.,انبار هدف برای برخی آیتم‌ها تنظیم شده است اما مشتری، یک مشتری داخلی نیست., +Task {0} depends on Task {1}. Please add Task {1} to the Tasks list.,وظیفه {0} به وظیفه {1} بستگی دارد. لطفاً وظیفه {1} را به لیست وظایف اضافه کنید., +Tax Amount,مقدار مالیات, +Tax Amount will be rounded on a row(items) level,مقدار مالیات در سطح ردیف (آیتم‌ها) گرد می شود, +Tax Refunds provided to Tourists under the Tax Refunds for Tourists Scheme,بازپرداخت مالیات بر اساس طرح بازپرداخت مالیات برای گردشگران به گردشگران ارائه می شود, +Tax Settings,تنظیمات مالیاتی, +Tax Withheld Vouchers,کوپن های مالیاتی کسر شده, +Tax Withholding Category {} against Company {} for Customer {} should have Cumulative Threshold value.,رده مالیاتی {} در برابر شرکت {} برای مشتری {} باید مقدار آستانه تجمعی داشته باشد., +Tax Withholding Details,جزئیات کسر مالیات, +Tax Withholding Net Total,کل خالص کسر مالیات, +Tax will be withheld only for amount exceeding the cumulative threshold,مالیات فقط برای مبلغی که بیش از آستانه تجمعی باشد، کسر خواهد شد, +Team,تیم, +Telephony Call Type,نوع تماس تلفنی, +Template Item Selected,آیتم الگو انتخاب شد, +Template Options,گزینه های الگو, +Template Task,وظیفه الگو, +Template Warnings,هشدارهای الگو, +Terms & Conditions,شرایط و ضوابط, +Terms Template,الگوی شرایط, +Territory Item,قلمرو مورد, +Territory Wise Sales,فروش از نظر منطقه, +The Condition '{0}' is invalid,"شرط ""{0}"" نامعتبر است", +The Document Type {0} must have a Status field to configure Service Level Agreement,نوع سند {0} باید دارای یک فیلد وضعیت برای پیکربندی قرارداد سطح سرویس باشد, +"The GL Entries will be cancelled in the background, it can take a few minutes.",ورودی‌های دفتر کل در پس‌زمینه لغو می‌شوند، ممکن است چند دقیقه طول بکشد., +"The Payment Request {0} is already paid, cannot process payment twice",درخواست پرداخت {0} قبلاً پرداخت شده است، نمی‌توان پرداخت را دو بار پردازش کرد, +"The Pick List having Stock Reservation Entries cannot be updated. If you need to make changes, we recommend canceling the existing Stock Reservation Entries before updating the Pick List.",فهرست انتخابی دارای ورودی های رزرو موجودی نمی تواند به روز شود. اگر نیاز به ایجاد تغییرات دارید، توصیه می‌کنیم قبل از به‌روزرسانی فهرست انتخاب، ورودی‌های رزرو موجودی را لغو کنید., +The Process Loss Qty has reset as per job cards Process Loss Qty,Process Loss Qty مطابق با کارت کارهای Process Loss Ty بازنشانی شده است, +The currency of invoice {} ({}) is different from the currency of this dunning ({}).,واحد پول فاکتور {} ({}) با واحد پول این دونینگ ({}) متفاوت است., +The default BOM for that item will be fetched by the system. You can also change the BOM.,BOM پیش‌فرض برای آن مورد توسط سیستم واکشی می‌شود. شما همچنین می توانید BOM را تغییر دهید., +The field {0} in row {1} is not set,فیلد {0} در ردیف {1} تنظیم نشده است, +"The following Items, having Putaway Rules, could not be accomodated:",موارد زیر که دارای قوانین Putaway هستند، قابل استفاده نیستند:, +The following assets have failed to automatically post depreciation entries: {0},دارایی های زیر به طور خودکار ورودی های استهلاک را پست نکرده اند: {0}, +The items {0} and {1} are present in the following {2} :,موارد {0} و {1} در {2} زیر موجود هستند:, +The operation {0} can not add multiple times,عملیات {0} نمی تواند چندین بار اضافه کند, +The operation {0} can not be the sub operation,عملیات {0} نمی تواند عملیات فرعی باشد, +The reserved stock will be released when you update items. Are you certain you wish to proceed?,با به‌روزرسانی موارد، موجودی رزرو شده آزاد می‌شود. آیا مطمئن هستید که می خواهید ادامه دهید؟, +The reserved stock will be released. Are you certain you wish to proceed?,موجودی رزرو شده آزاد خواهد شد. آیا مطمئن هستید که می خواهید ادامه دهید؟, +The selected {0} does not contain the selected Asset Item.,{0} انتخاب شده حاوی مورد دارایی انتخابی نیست., +"The stock has been reserved for the following Items and Warehouses, un-reserve the same to {0} the Stock Reconciliation:

{1}",موجودی برای اقلام و انبارهای زیر رزرو شده است، همان را در {0} تطبیق موجودی لغو کنید:

{1}, +"The sync has started in the background, please check the {0} list for new records.",همگام سازی در پس زمینه شروع شده است، لطفاً لیست {0} را برای رکوردهای جدید بررسی کنید., +"The task has been enqueued as a background job. In case there is any issue on processing in background, the system will add a comment about the error on this Stock Reconciliation and revert to the Submitted stage",وظیفه به عنوان یک کار پس زمینه در نوبت قرار گرفته است. در صورت وجود هرگونه مشکل در پردازش در پس‌زمینه، سیستم نظری در مورد خطا در این تطبیق موجودی اضافه می‌کند و به مرحله ارسال باز می‌گردد., +The total Issue / Transfer quantity {0} in Material Request {1} cannot be greater than allowed requested quantity {2} for Item {3},مجموع مقدار حواله / انتقال {0} در درخواست مواد {1} نمی تواند بیشتر از مقدار مجاز درخواستی {2} برای آیتم {3} باشد, +The total Issue / Transfer quantity {0} in Material Request {1} cannot be greater than requested quantity {2} for Item {3},مجموع مقدار حواله / انتقال {0} در درخواست مواد {1} نمی تواند بیشتر از مقدار درخواستی {2} برای آیتم {3} باشد, +"The users with this Role are allowed to create/modify a stock transaction, even though the transaction is frozen.",کاربران دارای این نقش مجاز به ایجاد/تغییر تراکنش موجودی هستند، حتی اگر تراکنش مسدود شده باشد., +The warehouse where you store finished Items before they are shipped.,انباری که اقلام تمام شده را قبل از ارسال در آن ذخیره می کنید., +"The warehouse where you store your raw materials. Each required item can have a separate source warehouse. Group warehouse also can be selected as source warehouse. On submission of the Work Order, the raw materials will be reserved in these warehouses for production usage.",انباری که مواد اولیه خود را در آن نگهداری می کنید. هر کالای مورد نیاز می تواند یک انبار منبع جداگانه داشته باشد. انبار گروهی نیز می تواند به عنوان انبار منبع انتخاب شود. پس از ارسال دستور کار، مواد اولیه در این انبارها برای استفاده تولید رزرو می شود., +The warehouse where your Items will be transferred when you begin production. Group Warehouse can also be selected as a Work in Progress warehouse.,انباری که هنگام شروع تولید، اقلام شما در آن منتقل می شوند. انبار گروهی همچنین می تواند به عنوان انبار Work in Progress انتخاب شود., +The {0} {1} is used to calculate the valuation cost for the finished good {2}.,{0} {1} برای محاسبه هزینه ارزیابی کالای نهایی {2} استفاده می‌شود., +There are no Failed transactions,هیچ تراکنش ناموفقی وجود ندارد, +There are no slots available on this date,هیچ اسلاتی در این تاریخ موجود نیست, +There are only {0} asset created or linked to {1}. Please create or link {2} Assets with respective document.,فقط {0} دارایی ایجاد شده یا به {1} پیوند داده شده است. لطفاً {2} دارایی ها را با سند مربوطه ایجاد یا پیوند دهید., +"There are two options to maintain valuation of stock. FIFO (first in - first out) and Moving Average. To understand this topic in detail please visit Item Valuation, FIFO and Moving Average.",دو گزینه برای حفظ ارزش موجودی وجود دارد. FIFO (اولین ورود - اولین خروج) و میانگین متحرک. برای درک جزئیات این موضوع، لطفاً از هدف ارزش اقلام، FIFO و میانگین متحرک., +There aren't any item variants for the selected item,هیچ گونه آیتمی برای آیتم انتخابی وجود ندارد, +There is already a valid Lower Deduction Certificate {0} for Supplier {1} against category {2} for this time period.,در حال حاضر یک گواهی کسر کمتر معتبر {0} برای تامین کننده {1} در برابر دسته {2} برای این دوره زمانی وجود دارد., +There is already an active Subcontracting BOM {0} for the Finished Good {1}.,در حال حاضر یک BOM قرارداد فرعی فعال {0} برای کالای نهایی {1} وجود دارد., +There must be atleast 1 Finished Good in this Stock Entry,باید حداقل 1 کالای تمام شده در این ثبت موجودی وجود داشته باشد, +There was an error creating Bank Account while linking with Plaid.,هنگام پیوند با Plaid خطایی در ایجاد حساب بانکی روی داد., +There was an error syncing transactions.,هنگام همگام‌سازی تراکنش‌ها خطایی روی داد., +There was an error updating Bank Account {} while linking with Plaid.,هنگام به‌روزرسانی حساب بانکی {} هنگام پیوند با Plaid خطایی روی داد., +There was an issue connecting to Plaid's authentication server. Check browser console for more information,مشکلی در اتصال به سرور تأیید اعتبار Plaid وجود داشت. برای اطلاعات بیشتر کنسول مرورگر را بررسی کنید, +There were issues unlinking payment entry {0}.,مشکلاتی در قطع پیوند ثبت پرداخت {0} وجود داشت., +This Account has '0' balance in either Base Currency or Account Currency,این حساب دارای موجودی '0' به ارز پایه یا ارز حساب است, +This field is used to set the 'Customer'.,"این فیلد برای تنظیم ""مشتری"" استفاده می شود.", +This filter will be applied to Journal Entry.,این فیلتر برای ثبت دفتر روزنامه اعمال خواهد شد., +This is a Template BOM and will be used to make the work order for {0} of the item {1},این یک الگوی BOM است و برای ایجاد دستور کار برای {0} مورد {1} استفاده خواهد شد., +This is considered dangerous from accounting point of view.,این از نظر حسابداری خطرناک تلقی می شود., +"This is enabled by default. If you want to plan materials for sub-assemblies of the Item you're manufacturing leave this enabled. If you plan and manufacture the sub-assemblies separately, you can disable this checkbox.",این به طور پیش فرض فعال است. اگر می‌خواهید مواد را برای زیر مونتاژ های آیتمی که در حال تولید آن هستید برنامه‌ریزی کنید، این گزینه را فعال کنید. اگر زیر مونتاژ ها را جداگانه برنامه ریزی و تولید می کنید، می توانید این چک باکس را غیرفعال کنید., +"This is for raw material Items that'll be used to create finished goods. If the Item is an additional service like 'washing' that'll be used in the BOM, keep this unchecked.","این برای اقلام مواد خام است که برای ایجاد کالاهای نهایی استفاده می شود. اگر مورد یک سرویس اضافی مانند ""شستن"" است که در BOM استفاده می شود، این مورد را علامت نزنید.", +This item filter has already been applied for the {0},این فیلتر مورد قبلاً برای {0} اعمال شده است, +This option can be checked to edit the 'Posting Date' and 'Posting Time' fields.,این گزینه برای ویرایش فیلدهای «تاریخ ارسال» و «زمان ارسال» قابل بررسی است., +This schedule was created when Asset {0} was adjusted through Asset Value Adjustment {1}.,این برنامه زمانی ایجاد شد که دارایی {0} از طریق تعدیل ارزش دارایی {1} تنظیم شد., +This schedule was created when Asset {0} was consumed through Asset Capitalization {1}.,این برنامه زمانی ایجاد شد که دارایی {0} از طریق سرمایه گذاری دارایی {1} مصرف شد., +This schedule was created when Asset {0} was repaired through Asset Repair {1}.,این برنامه زمانی ایجاد شد که دارایی {0} از طریق تعمیر دارایی {1} تعمیر شد., +This schedule was created when Asset {0} was restored on Asset Capitalization {1}'s cancellation.,این برنامه زمانی ایجاد شد که دارایی {0} در لغو دارایی با حروف بزرگ {1} بازیابی شد., +This schedule was created when Asset {0} was restored.,این برنامه زمانی ایجاد شد که دارایی {0} بازیابی شد., +This schedule was created when Asset {0} was returned through Sales Invoice {1}.,این برنامه زمانی ایجاد شد که دارایی {0} از طریق فاکتور فروش {1} برگردانده شد., +This schedule was created when Asset {0} was scrapped.,این برنامه زمانی ایجاد شد که دارایی {0} لغو شد., +This schedule was created when Asset {0} was sold through Sales Invoice {1}.,این برنامه زمانی ایجاد شد که دارایی {0} از طریق فاکتور فروش {1} فروخته شد., +This schedule was created when Asset {0} was updated after being split into new Asset {1}.,این برنامه زمانی ایجاد شد که دارایی {0} پس از تقسیم به دارایی جدید {1} به روز شد., +This schedule was created when Asset {0}'s Asset Repair {1} was cancelled.,این برنامه زمانی ایجاد شد که تعمیر دارایی {0} {1} لغو شد., +This schedule was created when Asset {0}'s Asset Value Adjustment {1} was cancelled.,این برنامه زمانی ایجاد شد که تعدیل ارزش دارایی {0} {1} لغو شد., +This schedule was created when Asset {0}'s shifts were adjusted through Asset Shift Allocation {1}.,این برنامه زمانی ایجاد شد که تغییرات دارایی {0} از طریق تخصیص تغییر دارایی {1} تنظیم شد., +This schedule was created when new Asset {0} was split from Asset {1}.,این برنامه زمانی ایجاد شد که دارایی جدید {0} از دارایی {1} جدا شد., +"This table is used to set details about the 'Item', 'Qty', 'Basic Rate', etc.","این جدول برای تنظیم جزئیات مربوط به ""آیتم""، ""مقدار""، ""نرخ پایه"" و غیره استفاده می شود.", +This {} will be treated as material transfer.,این {} به عنوان انتقال مواد در نظر گرفته می شود., +Threshold for Suggestion (In Percentage),آستانه پیشنهاد (در درصد), +Time Taken to Deliver,زمان صرف شده برای تحویل, +Time in mins,زمان به دقیقه, +Time in mins.,زمان به دقیقه., +Time slot is not available,بازه زمانی در دسترس نیست, +To Delivery Date,تا تاریخ تحویل, +To Doctype,برای Doctype, +To Due Date,به تاریخ سررسید, +To Payment Date,به تاریخ پرداخت, +To Reference Date,به تاریخ مرجع, +To add Operations tick the 'With Operations' checkbox.,"برای افزودن عملیات، کادر ""با عملیات"" را علامت بزنید.", +To add subcontracted Item's raw materials if include exploded items is disabled.,افزودن مواد خام قراردادی فرعی در صورت وجود آیتم‌های گسترده شده غیرفعال است., +To apply condition on parent field use parent.field_name and to apply condition on child table use doc.field_name. Here field_name could be based on the actual column name of the respective field.,برای اعمال شرط در فیلد والد از parent.field_name و برای اعمال شرط در جدول فرزند از doc.field_name استفاده کنید. در اینجا field_name می تواند بر اساس نام ستون واقعی فیلد مربوطه باشد., +To be Delivered to Customer,برای تحویل به مشتری, +To cancel a {} you need to cancel the POS Closing Entry {}.,برای لغو یک {}، باید ثبت اختتامیه POS {} را لغو کنید., +"To enable Capital Work in Progress Accounting,",برای فعال کردن حسابداری کار سرمایه ای،, +To include non-stock items in the material request planning. i.e. Items for which 'Maintain Stock' checkbox is unticked.,"گنجاندن آیتم‌های غیر موجودی در برنامه ریزی درخواست مواد. به عنوان مثال آیتم‌هایی که چک باکس ""نگهداری موجودی"" برای آنها علامت گذاری نشده است.", +To submit the invoice without purchase order please set {0} as {1} in {2},برای ارسال فاکتور بدون سفارش خرید لطفاً {0} را به عنوان {1} در {2} تنظیم کنید, +To submit the invoice without purchase receipt please set {0} as {1} in {2},برای ارسال فاکتور بدون رسید خرید، لطفاً {0} را به عنوان {1} در {2} تنظیم کنید., +"To use a different finance book, please uncheck 'Include Default FB Assets'",برای استفاده از یک کتاب مالی متفاوت، لطفاً علامت «شامل دارایی‌های پیش‌فرض FB» را بردارید., +"To use a different finance book, please uncheck 'Include Default FB Entries'",برای استفاده از یک کتاب مالی متفاوت، لطفاً علامت «شامل ورودی‌های پیش‌فرض FB» را بردارید., +Total Active Items,مجموع آیتم‌های فعال, +Total Allocations,مجموع تخصیص ها, +Total Asset,کل دارایی, +Total Asset Cost,هزینه کل دارایی, +Total Billing Hours,کل ساعت صورتحساب, +Total Contribution Amount Against Invoices: {0},مجموع مبلغ مشارکت در برابر فاکتورها: {0}, +Total Contribution Amount Against Orders: {0},کل مبلغ مشارکت در برابر سفارش‌ها: {0}, +Total Equity,مجموع حقوق صاحبان موجودی, +Total Incoming Bills,مجموع صورتحساب های دریافتی, +Total Incoming Payment,کل پرداخت ورودی, +Total Incoming Value (Receipt),مجموع ارزش ورودی (رسید), +Total Interest,سود کل, +Total Issues,مجموع مشکلات, +Total Items,مجموع آیتم‌ها, +Total Liability,کل مسئولیت, +Total Operation Time,کل زمان عملیات, +Total Other Charges,مجموع سایر هزینه ها, +Total Outgoing Bills,مجموع صورتحساب خروجی, +Total Outgoing Payment,کل پرداخت خروجی, +Total Outgoing Value (Consumption),کل ارزش خروجی (مصرف), +Total Purchase Amount,کل مبلغ خرید, +Total Purchase Cost has been updated,کل هزینه خرید به روز شده است, +Total Repair Cost,کل هزینه تعمیر, +Total Reposting Count,تعداد کل بازنشر, +Total Sales Amount,کل مبلغ فروش, +Total Stock Value,ارزش کل موجودی, +Total Supplied Qty,تعداد کل عرضه شده, +Total Time (in Mins),زمان کل (به دقیقه), +Total Value,ارزش کل, +Total Value Difference (Incoming - Outgoing),تفاوت ارزش کل (ورودی - خروجی), +Total Views,کل بازدیدها, +Total Warehouses,کل انبارها, +Total percentage against cost centers should be 100,درصد کل در مقابل مراکز هزینه باید 100 باشد, +Tracking Status,وضعیت پیگیری, +Tracking Status Info,اطلاعات وضعیت ردیابی, +Tracking URL,URL پیگیری, +Transaction Deletion Document: {0} is running for this Company. {1},سند حذف تراکنش: {0} برای این شرکت در حال اجرا است. {1}, +Transaction Deletion Record,رکورد حذف تراکنش, +Transaction Deletion Record Item,مورد رکورد حذف تراکنش, +Transaction Exchange Rate,نرخ ارز معاملات, +Transaction Settings,تنظیمات تراکنش, +Transactions against the Company already exist! Chart of Accounts can only be imported for a Company with no transactions.,معاملات در مقابل شرکت در حال حاضر وجود دارد! نمودار حساب ها فقط برای شرکتی بدون تراکنش قابل درون‌بُرد است., +Transfer Asset,انتقال دارایی, +Transfer From Warehouses,انتقال از انبارها, +Transferring cannot be done to an Employee. Please enter location where Asset {0} has to be transferred,انتقال به کارمند امکان پذیر نیست. لطفاً مکانی را وارد کنید که دارایی {0} باید در آنجا منتقل شود, +Transit,ترانزیت, +Transit Entry,ورودی حمل و نقل, +Truncates 'Remarks' column to set character length,"ستون ""Remarks"" را برای تنظیم طول کاراکتر کوتاه می کند", +Type Of Call,نوع تماس, +Type of Transaction,نوع تراکنش, +UAE VAT 201,مالیات بر ارزش افزوده امارات متحده عربی 201, +UAE VAT Account,حساب مالیات بر ارزش افزوده امارات متحده عربی, +UAE VAT Accounts,حساب های مالیات بر ارزش افزوده امارات متحده عربی, +UAE VAT Settings,تنظیمات مالیات بر ارزش افزوده امارات متحده عربی, +UOM conversion factor required for UOM: {0} in Item: {1},ضریب تبدیل UOM مورد نیاز برای UOM: {0} در مورد: {1}, +UnReconcile,تطبیق نکردن, +Unable to find variable:,قادر به یافتن متغیر نیست:, +Unassigned Qty,تعداد تعیین نشده, +"Under Working Hours table, you can add start and end times for a Workstation. For example, a Workstation may be active from 9 am to 1 pm, then 2 pm to 5 pm. You can also specify the working hours based on shifts. While scheduling a Work Order, the system will check for the availability of the Workstation based on the working hours specified.",در جدول ساعات کاری، می توانید زمان شروع و پایان یک ایستگاه کاری را اضافه کنید. به عنوان مثال، یک ایستگاه کاری ممکن است از ساعت 9 صبح تا 1 بعد از ظهر و سپس از 2 بعد از ظهر تا 5 بعد از ظهر فعال باشد. همچنین می توانید ساعت کاری را بر اساس شیفت ها مشخص کنید. هنگام برنامه ریزی یک دستور کار، سیستم بر اساس ساعات کاری مشخص شده، در دسترس بودن ایستگاه کاری را بررسی می کند., +Unit of Measure (UOM),واحد اندازه گیری (UOM), +Unlinked,بدون پیوند, +Unqualified,فاقد صلاحیت, +Unrealized Profit / Loss Account,حساب سود / زیان تحقق نیافته, +Unrealized Profit / Loss account for intra-company transfers,حساب سود / زیان تحقق نیافته برای نقل و انتقالات درون شرکتی, +Unrealized Profit/Loss account for intra-company transfers,حساب سود/زیان تحقق نیافته برای نقل و انتقالات درون شرکتی, +Unreconcile Payment,پرداخت ناسازگار, +Unreconcile Payment Entries,ورودی های پرداخت ناسازگار, +Unreconcile Transaction,تراکنش ناسازگار, +Unreconciled Amount,مبلغ ناسازگار, +Unreconciled Entries,ورودی های تطبیق نگرفته, +Unreserve,لغو رزرو کنید, +Unreserve Stock,ذخیره موجودی, +Unreserving Stock...,عدم رزرو موجودی..., +Up,بالا, +Update Billed Amount in Delivery Note,مبلغ صورتحساب در یادداشت تحویل را به روز کنید, +Update Existing Price List Rate,به روز رسانی نرخ لیست قیمت موجود, +Update Existing Records,به روز رسانی رکوردهای موجود, +Update Rate as per Last Purchase,نرخ به روز رسانی بر اساس آخرین خرید, +Update Total Purchase Cost,به روز رسانی کل هزینه خرید, +Update frequency of Project,فرکانس به روز رسانی پروژه, +Update stock must be enabled for the purchase invoice {0},به‌روزرسانی موجودی باید برای فاکتور خرید فعال شود {0}, +Updated via 'Time Log' (In Minutes),"به روز شده از طریق ""Time Log"" (به دقیقه)", +Updating Work Order status,به روز رسانی وضعیت دستور کار, +"Updating {0} of {1}, {2}",در حال به روز رسانی {0} از {1}، {2}, +Upload Bank Statement,بارگذاری صورتحساب بانکی, +Use 'Repost in background' button to trigger background job. Job can only be triggered when document is in Queued or Failed status.,برای فعال کردن کار پس‌زمینه از دکمه «بازنشر در پس‌زمینه» استفاده کنید. کار فقط زمانی می تواند فعال شود که سند در وضعیت صف یا ناموفق باشد., +Use Batch-wise Valuation,استفاده از ارزش گذاری دسته ای, +Use Company Default Round Off Cost Center,از مرکز هزینه دور پیش فرض شرکت استفاده کنید, +Use Company default Cost Center for Round off,از مرکز هزینه پیش‌فرض شرکت برای دور کردن استفاده کنید, +Use HTTP Protocol,استفاده از پروتکل HTTP, +Use Item based reposting,از ارسال مجدد بر اساس آیتم استفاده کنید, +Use Serial No / Batch Fields,از فیلدهای شماره سریال / دسته استفاده کنید, +Use Transaction Date Exchange Rate,از نرخ مبادله تاریخ تراکنش استفاده کنید, +User {0}: Removed Employee Self Service role as there is no mapped employee.,کاربر {0}: نقش خود سرویس کارمند حذف شد زیرا کارمند نگاشت شده وجود ندارد., +User {0}: Removed Employee role as there is no mapped employee.,کاربر {0}: نقش کارمند حذف شد زیرا کارمند نگاشت شده وجود ندارد., +Users can enable the checkbox If they want to adjust the incoming rate (set using purchase receipt) based on the purchase invoice rate.,اگر کاربران بخواهند نرخ ورودی (تنظیم با استفاده از رسید خرید) را بر اساس نرخ فاکتور خرید تنظیم کنند، می توانند کادر انتخاب را فعال کنند., +Users with this role are allowed to over bill above the allowance percentage,کاربرانی که این نقش را دارند مجاز به اضافه صورتحساب بالاتر از درصد مجاز هستند, +Users with this role are allowed to over deliver/receive against orders above the allowance percentage,کاربرانی که این نقش را دارند مجاز به بیش تحویل/دریافت سفارش‌ها بالاتر از درصد مجاز هستند, +Using negative stock disables FIFO/Moving average valuation when inventory is negative.,استفاده از موجودی منفی، ارزش گذاری FIFO / میانگین متحرک را زمانی که موجودی کالا منفی است، غیرفعال می کند., +VAT Accounts,حساب های مالیات بر ارزش افزوده, +VAT Amount (AED),مقدار VAT (AED), +VAT Audit Report,گزارش حسابرسی مالیات بر ارزش افزوده, +VAT on Expenses and All Other Inputs,مالیات بر ارزش افزوده هزینه ها و سایر ورودی ها, +VAT on Sales and All Other Outputs,مالیات بر ارزش افزوده بر فروش و سایر خروجی ها, +Valid From must be after {0} as last GL Entry against the cost center {1} posted on this date,معتبر از باید بعد از {0} به عنوان آخرین ثبت دفتر کل در برابر مرکز هزینه {1} پست شده در این تاریخ باشد, +Validate Negative Stock,اعتبار موجودی منفی, +Validate Stock on Save,اعتبار موجودی در ذخیره, +Valuation Field Type,نوع فیلد ارزش گذاری, +Valuation Rate (In / Out),نرخ ارزش گذاری (ورودی/خروجی), +Valuation rate for customer provided items has been set to zero.,نرخ ارزش گذاری برای آیتم‌های ارائه شده توسط مشتری صفر تعیین شده است., +Value Based Inspection,بازرسی مبتنی بر ارزش, +Value Change,تغییر ارزش, +Value Details,جزئیات ارزش, +Value of Goods,ارزش کالاها, +Value of goods cannot be 0,ارزش کالا نمی تواند 0 باشد, +Verification failed please check the link,تأیید انجام نشد لطفاً پیوند را بررسی کنید, +Via Landed Cost Voucher,از طریق کوپن هزینه تمام شده تا درب انبار, +View BOM Update Log,مشاهده لاگ به‌روزرسانی BOM, +View Exchange Gain/Loss Journals,مشاهده دفترهای روزنامه سود/زیان تبادل, +View General Ledger,مشاهده دفتر کل مرکزی, +View Ledgers,مشاهده دفتر کل ها, +Visits,بازدیدها, +Voice Call Settings,تنظیمات تماس صوتی, +Voucher,کوپن, +Voucher Name,نام کوپن, +Voucher No is mandatory,شماره کوپن الزامی است, +Voucher Qty,مقدار کوپن, +Voucher Subtype,زیرنوع کوپن, +Voucher {0} is over-allocated by {1},کوپن {0} توسط {1} بیش از حد تخصیص داده شده است, +Voucher {0} value is broken: {1},ارزش کوپن {0} خراب است: {1}, +Voucher-wise Balance,تراز مبتنی بر کوپن, +"WARNING: Exotel app has been separated from ERPNext, please install the app to continue using Exotel integration.",هشدار: برنامه Exotel از ERPNext جدا شده است، لطفاً برای ادامه استفاده از Exotel یکپارچه سازی، برنامه را نصب کنید., +WIP Composite Asset,دارایی ترکیبی «کار در حال انجام», +Waiting for payment...,در انتظار پرداخت..., +Warehouse Capacity for Item '{0}' must be greater than the existing stock level of {1} {2}.,"ظرفیت انبار برای آیتم ""{0}"" باید بیشتر از سطح موجودی موجود در {1} {2} باشد.", +Warehouse Details,جزئیات انبار, +Warehouse Disabled?,انبار غیر فعال است؟, +Warehouse Settings,تنظیمات انبار, +Warehouse Wise Stock Balance,تراز موجودی مبتنی بر انبار, +Warehouse wise Stock Value,ارزش موجودی مبتنی بر انبار, +Warehouse {0} does not belong to Company {1}.,انبار {0} متعلق به شرکت {1} نیست., +"Warehouse {0} is not linked to any account, please mention the account in the warehouse record or set default inventory account in company {1}.",انبار {0} به هیچ حسابی مرتبط نیست، لطفاً حساب را در سابقه انبار ذکر کنید یا حساب موجودی پیش فرض را در شرکت {1} تنظیم کنید., +Warehouse's Stock Value has already been booked in the following accounts:,ارزش موجودی انبار قبلاً در حساب های زیر رزرو شده است:, +Warning - Row {0}: Billing Hours are more than Actual Hours,هشدار - ردیف {0}: ساعات صورتحساب بیشتر از ساعت‌های واقعی است, +Warning on Negative Stock,هشدار در مورد موجودی منفی, +Warning!,هشدار!, +Watch Video,تماشای ویدیو, +Website Script,اسکریپت وب سایت, +Website Theme,تم وب سایت, +Week {0} {1},هفته {0} {1}, +Weekly Time to send,زمان ارسال هفتگی, +Weight (kg),وزن (کیلوگرم), +"When a parent warehouse is chosen, the system conducts stock checks against the associated child warehouses",هنگامی که یک انبار اصلی انتخاب می شود، سیستم بررسی های موجودی را در مقابل انبارهای فرزند مرتبط انجام می دهد, +"When creating an Item, entering a value for this field will automatically create an Item Price at the backend.",هنگام ایجاد یک آیتم، با وارد کردن یک مقدار برای این فیلد، به طور خودکار قیمت آیتم در قسمت پشتیبان ایجاد می شود., +"While making Purchase Invoice from Purchase Order, use Exchange Rate on Invoice's transaction date rather than inheriting it from Purchase Order. Only applies for Purchase Invoice.",هنگام تهیه فاکتور خرید از سفارش خرید، به جای ارث بردن آن از سفارش خرید، از نرخ مبادله در تاریخ تراکنش فاکتور استفاده کنید. فقط برای فاکتور خرید اعمال می شود., +Width (cm),عرض (سانتی متر), +Withdrawal,برداشت از حساب, +Work Order / Subcontract PO,دستور کار / PO قرارداد فرعی, +Work Order Consumed Materials,مواد مصرفی دستور کار, +Workflow,جریان کار, +Workflow Action,عمل گردش کار, +Workflow State,وضعیت گردش کار, +Workstation Dashboard,داشبورد ایستگاه کاری, +Workstation Status,وضعیت ایستگاه کاری, +Workstation Type,نوع ایستگاه کاری, +Workstations,ایستگاه های کاری, +Write Off Limit,محدودیت نوشتن, +Wrong Company,شرکت اشتباه, +Wrong Template,الگوی اشتباه, +You are not authorized to make/edit Stock Transactions for Item {0} under warehouse {1} before this time.,شما مجاز به انجام/ویرایش معاملات موجودی برای کالای {0} در انبار {1} قبل از این زمان نیستید., +You are picking more than required quantity for the item {0}. Check if there is any other pick list created for the sales order {1}.,شما در حال انتخاب بیش از مقدار مورد نیاز برای مورد {0} هستید. بررسی کنید که آیا لیست انتخاب دیگری برای سفارش فروش {1} ایجاد شده است., +"You can set it as a machine name or operation type. For example, stiching machine 12",می توانید آن را به عنوان نام ماشین یا نوع عملیات تنظیم کنید. مثلا ماشین دوخت 12, +You can't make any changes to Job Card since Work Order is closed.,از آنجایی که دستور کار بسته شده است، نمی توانید هیچ تغییری در کارت کار ایجاد کنید., +You can't redeem Loyalty Points having more value than the Rounded Total.,نمی‌توانید امتیازهای وفاداری را که ارزش بیشتری از مجموع گرد شده دارند، پس‌خرید کنید., +You cannot change the rate if BOM is mentioned against any Item.,اگر BOM در برابر هر موردی ذکر شده باشد، نمی توانید نرخ را تغییر دهید., +You cannot create a {0} within the closed Accounting Period {1},شما نمی توانید یک {0} در دوره حسابداری بسته {1} ایجاد کنید, +You cannot create/amend any accounting entries till this date.,تا این تاریخ نمی توانید هیچ ورودی حسابداری ایجاد یا اصلاح کنید., +You cannot repost item valuation before {},شما نمی توانید ارزیابی مورد را قبل از {} دوباره ارسال کنید, +You have entered a duplicate Delivery Note on Row,شما یک یادداشت تحویل تکراری در ردیف وارد کرده اید, +You haven't created a {0} yet,شما هنوز یک {0} ایجاد نکرده اید, +You need to cancel POS Closing Entry {} to be able to cancel this document.,برای اینکه بتوانید این سند را لغو کنید، باید ثبت اختتامیه POS {} را لغو کنید., +Your Name (required),نام شما (الزامی), +Your email has been verified and your appointment has been scheduled,ایمیل شما تایید شده و قرار ملاقات شما تعیین شده است, +Zero Balance,تراز صفر, +Zero Rated,دارای امتیاز صفر, +Zero quantity,مقدار صفر, +`Allow Negative rates for Items`,«نرخ های منفی برای آیتم‌ها مجاز است», +as a percentage of finished item quantity,به عنوان درصدی از مقدار کالای تمام شده, +at,در, +description,شرح, +discount applied,تخفیف اعمال شد, +doc_type,نوع_doc, +exchangerate.host,مبادله.میزبان, +is already,است در حال حاضر, +must be between 0 and 100,باید بین 0 تا 100 باشد, +or its descendants,یا فرزندان آن, +out of 5,از 5, +payments app is not installed. Please install it from {0} or {1},برنامه پرداخت نصب نشده است لطفاً آن را از {0} یا {1} نصب کنید, +payments app is not installed. Please install it from {} or {},برنامه پرداخت نصب نشده است لطفاً آن را از {} یا {} نصب کنید, +performing either one below:,انجام هر یک از موارد زیر:, +product bundle item row's name in sales order. Also indicates that picked item is to be used for a product bundle,نام ردیف آیتم‌های باندل محصول در سفارش فروش. همچنین نشان می دهد که آیتم انتخاب شده قرار است برای یک باندل محصول استفاده شود, +ratings,رتبه بندی ها, +subscription is already cancelled.,اشتراک در حال حاضر لغو شده است., +temporary name,نام موقت, +to unallocate the amount of this Return Invoice before cancelling it.,برای تخصیص مبلغ این فاکتور برگشتی قبل از لغو آن., +variance,واریانس, +via BOM Update Tool,از طریق BOM Update Tool, +will be,خواهد بود, +{0} {1} has submitted Assets. Remove Item {2} from table to continue.,{0} {1} دارایی‌ها را ارسال کرده است. برای ادامه، آیتم {2} را از جدول حذف کنید., +{0} Account not found against Customer {1}.,{0} حساب در مقابل مشتری پیدا نشد {1}., +{0} Budget for Account {1} against {2} {3} is {4}. It {5} exceed by {6},{0} بودجه برای حساب {1} در برابر {2} {3} {4} است. {5} از {6} بیشتر است, +{0} Transaction(s) Reconciled,{0} تراکنش(های) تطبیق شد, +{0} account is not of type {1},حساب {0} از نوع {1} نیست, +{0} account not found while submitting purchase receipt,هنگام ارسال رسید خرید، حساب {0} پیدا نشد, +{0} and {1},{0} و {1}, +{0} cannot be used as a Main Cost Center because it has been used as child in Cost Center Allocation {1},{0} نمی‌تواند به‌عنوان مرکز هزینه اصلی استفاده شود زیرا به‌عنوان فرزند در تخصیص مرکز هزینه {1} استفاده شده است., +{0} cannot be zero,{0} نمی تواند صفر باشد, +{0} currency must be same as company's default currency. Please select another account.,ارز {0} باید با واحد پول پیش‌فرض شرکت یکسان باشد. لطفا حساب دیگری را انتخاب کنید., +{0} entered twice {1} in Item Taxes,{0} دو بار {1} در مالیات آیتم وارد شد, +{0} has Payment Term based allocation enabled. Select a Payment Term for Row #{1} in Payment References section,{0} تخصیص مبتنی بر مدت پرداخت را فعال کرده است. در بخش مراجع پرداخت، یک شرایط پرداخت برای ردیف #{1} انتخاب کنید, +{0} is a mandatory Accounting Dimension.
Please set a value for {0} in Accounting Dimensions section.,{0} یک بعد حسابداری اجباری است.
لطفاً یک مقدار برای {0} در بخش ابعاد حسابداری تنظیم کنید., +{0} is added multiple times on rows: {1},{0} چندین بار در ردیف ها اضافه می شود: {1}, +{0} is already running for {1},{0} در حال حاضر برای {1} در حال اجرا است, +{0} is mandatory for account {1},{0} برای حساب {1} اجباری است, +{0} qty of Item {1} is being received into Warehouse {2} with capacity {3}.,{0} تعداد مورد {1} در انبار {2} با ظرفیت {3} در حال دریافت است., +"{0} units are reserved for Item {1} in Warehouse {2}, please un-reserve the same to {3} the Stock Reconciliation.",{0} واحد برای مورد {1} در انبار {2} رزرو شده است، لطفاً همان را در {3} تطبیق موجودی لغو کنید., +{0} units of Item {1} is picked in another Pick List.,{0} واحد از مورد {1} در فهرست انتخاب دیگری انتخاب شده است., +"{0} units of {1} are required in {2}{3}, on {4} {5} for {6} to complete the transaction.",{0} واحد از {1} در {2}{3}، در {4} {5} برای {6} برای تکمیل تراکنش مورد نیاز است., +{0} units of {1} needed in {2} on {3} {4} to complete this transaction.,برای تکمیل این تراکنش به {0} واحد از {1} در {2} در {3} {4} نیاز است., +{0} will be given as discount.,{0} به عنوان تخفیف داده می شود., +{0} {1} Manually,{0} {1} به صورت دستی, +{0} {1} Partially Reconciled,{0} {1} تا حدی تطبیق کرد, +"{0} {1} cannot be updated. If you need to make changes, we recommend canceling the existing entry and creating a new one.",{0} {1} نمی تواند به روز شود. اگر نیاز به ایجاد تغییرات دارید، توصیه می کنیم ورودی موجود را لغو کنید و یک ورودی جدید ایجاد کنید., +{0} {1} has already been fully paid.,{0} {1} قبلاً به طور کامل پرداخت شده است., +{0} {1} has already been partly paid. Please use the 'Get Outstanding Invoice' or the 'Get Outstanding Orders' button to get the latest outstanding amounts.,{0} {1} قبلاً تا حدی پرداخت شده است. لطفاً از دکمه «دریافت صورتحساب معوق» یا «دریافت سفارش‌های معوق» برای دریافت آخرین مبالغ معوق استفاده کنید., +{0} {1} is allocated twice in this Bank Transaction,{0} {1} دو بار در این تراکنش بانکی تخصیص داده شده است, +{0} {1} is not in any active Fiscal Year,{0} {1} در هیچ سال مالی فعالی نیست, +{0} {1} is on hold,{0} {1} در انتظار است, +{0} {1} not allowed to be reposted. Modify {2} to enable reposting.,{0} {1} مجاز به ارسال مجدد نیست. برای فعال کردن ارسال مجدد، {2} را تغییر دهید., +{0} {1} via CSV File,{0} {1} از طریق فایل CSV, +{0} {1}: Account {2} is a Group Account and group accounts cannot be used in transactions,{0} {1}: حساب {2} یک حساب گروهی است و نمی توان از حساب های گروهی در تراکنش ها استفاده کرد, +{0} {1}: Cost Center is required for 'Profit and Loss' account {2}.,"{0} {1}: مرکز هزینه برای حساب ""سود و زیان"" {2} لازم است.", +{0} {1}: Cost Center {2} is a group cost center and group cost centers cannot be used in transactions,{0} {1}: مرکز هزینه {2} یک مرکز هزینه گروهی است و مراکز هزینه گروهی را نمی توان در تراکنش ها استفاده کرد, +{0}% of total invoice value will be given as discount.,{0}% از ارزش کل فاکتور به عنوان تخفیف داده می شود., +{0}'s {1} cannot be after {2}'s Expected End Date.,{1} {0} نمی تواند بعد از تاریخ پایان مورد انتظار {2} باشد., +{item_name}'s Sample Size ({sample_size}) cannot be greater than the Accepted Quantity ({accepted_quantity}),اندازه نمونه {item_name} ({sample_size}) نمی‌تواند بیشتر از مقدار مورد قبول ({accepted_quantity}) باشد., +{} Available,{} در دسترس, +{} To Deliver,{} برای تحویل, +{} To Receive,{} برای دریافت, +{} Assigned,{} اختصاص یافته, +{} Available,{} در دسترس, +{} Open,{} باز, +{} Pending,{} انتظار, +{} To Bill,{} برای صورتحساب, +{} is a child company.,{} یک شرکت فرزند است., +{} {} is already linked with another {},{} {} قبلاً با {} دیگری پیوند شده است, +{} {} is already linked with {} {},{} {} قبلاً با {} {} پیوند داده شده است, +"'Inspection Required before Delivery' has disabled for the item {0}, no need to create the QI",«بازرسی قبل از تحویل لازم است» برای آیتم {0} غیرفعال شده است، نیازی به ایجاد QI نیست, +"'Inspection Required before Purchase' has disabled for the item {0}, no need to create the QI",«بازرسی قبل از خرید لازم است» برای آیتم {0} غیرفعال شده است، نیازی به ایجاد QI نیست, +Additional Data,اطلاعات بیشتر, +Advance Payment Date,تاریخ پیش پرداخت, +Advance Payment Ledger Entry,ثبت دفتر پیش پرداخت, +Amounts,مبالغ, +Another Payment Request is already processed,درخواست پرداخت دیگری در حال حاضر پردازش شده است, +Applies To,اعمال می شود به, +Build Tree,ساختار درختی را بساز, +Canonical URI,آدرس کانونیکال, +Checked On,بررسی شد در, +Cheques and Deposits Incorrectly cleared,چک ها و سپرده ها به اشتباه پاک شدند, +Code List,لیست کد, +Columns are not according to template. Please compare the uploaded file with standard template,ستون ها مطابق با الگو نیستند. لطفا فایل آپلود شده را با قالب استاندارد مقایسه کنید, +Company Contact Person,شخص تماس شرکت, +Complete Order,تکمیل سفارش, +Create Journal Entries,ایجاد ثبت دفتر روزنامه, +Create Workstation,ایجاد ایستگاه کاری, +Create a variant with the template image.,ایجاد یک گونه با تصویر قالب., +Create in Draft Status,ایجاد در وضعیت پیش‌نویس, +Creating Journal Entries...,در حال ایجاد ثبت دفتر روزنامه..., +Custom delimiters,جداکننده‌های سفارشی, +Dates,تاریخ‌ها, +Default Common Code,کد مشترک پیش فرض, +Dimensions,ابعاد, +Discount cannot be greater than 100%.,تخفیف نمی تواند بیشتر از 100٪ باشد., +Do you still want to enable negative inventory?,آیا همچنان می خواهید موجودی منفی را فعال کنید؟, +Download PDF for Supplier,دانلود PDF برای تامین کننده, +Dynamic Condition,شروط متغیر, +Email Receipt,رسید ایمیل, +Event,رویداد, +Filter,فیلتر, +Forecast,پیش بینی, +From Date is mandatory,از تاریخ اجباری است, +From Date: {0} cannot be greater than To date: {1},از تاریخ: {0} نمی تواند بیشتر از تا تاریخ: {1} باشد, +Generated,تولید شده, +Get Raw Materials Cost from Consumption Entry,دریافت هزینه مواد اولیه از ثبت مصرف, +Ignore System Generated Credit / Debit Notes,نادیده گرفتن یادداشت های بستانکاری / بدهکاری ایجاد شده توسط سیستم, +Impairment,اختلال, +Include Closed Orders,شامل سفارش‌های بسته شده, +Incorrect Reference Document (Purchase Receipt Item),سند مرجع نادرست (آیتم رسید خرید), +Invalid Amount,مبلغ نامعتبر, +Invalid Discount,تخفیف نامعتبر, +Job Cards,کارت کارها, +Job Worker,پیمانکار, +Job Worker Address,آدرس پیمانکار, +Job Worker Address Details,جرئیات آدرس پیمانکار, +Job Worker Contact,تماس پیمانکار, +Job Worker Delivery Note,یادداشت تحویل پیمانکار, +Job Worker Name,نام پیمانکار, +Job Worker Warehouse,انبار پیمانکار, +Missing Item,آیتم جا افتاده, +No recent transactions found,هیچ تراکنش اخیری یافت نشد, +Order Date,تاریخ سفارش, +Parent Row No not found for {0},شماره ردیف والد برای {0} یافت نشد, +Pay,پرداخت,Amount +Payment Request created from Sales Order or Purchase Order will be in Draft status. When disabled document will be in unsaved state.,درخواست پرداخت ایجاد شده از سفارش فروش یا سفارش خرید در وضعیت پیش‌نویس خواهد بود. وقتی غیرفعال شود، سند در حالت ذخیره نشده خواهد بود., +Plant Dashboard,داشبورد کارخانه, +Plant Floor,سالن کارخانه, +Please mention '{0}' in Company: {1},"لطفاً ""{0}"" را در شرکت: {1} ذکر کنید", +Please set '{0}' in Company: {1},"لطفاً ""{0}"" را در شرکت: {1} تنظیم کنید", +Preview Required Materials,پیش نمایش مواد مورد نیاز, +Price is not set for the item.,قیمت برای آیتم تعیین نشده است., +Publisher,ناشر, +Publisher ID,شناسه ناشر, +Qty (Company),مقدار (شرکت), +Qty (Warehouse),مقدار (انبار), +Qty Wise Chart,نمودار بر اساس مقدار, +Quantity (A - B),مقدار (A - B), +Queue Size should be between 5 and 100,اندازه صف باید بین 5 تا 100 باشد, +Rate of Depreciation (%),نرخ استهلاک (%), +Rebuilding BTree for period ...,بازسازی BTree برای دوره ..., +Recent Transactions,تراکنش های اخیر, +Rejected ,رد شده , +Reset Raw Materials Table,بازنشانی جدول مواد اولیه, +Resume Timer,ادامه زمان‌سنج, +Right Child,فرزند راست, +Root,ریشه, +Round Off for Opening,گرد کردن برای افتتاحیه, +Row {0}: Quantity cannot be negative.,ردیف {0}: مقدار نمی تواند منفی باشد., +SO Total Qty,مقدار کل س.ف, +Sales Incoming Rate,نرخ ورودی فروش, +Section,بخش, +Select Job Worker Address,انتخاب آدرس پیمانکار, +"Select whether to get items from a Sales Order or a Material Request. For now select Sales Order. + A Production Plan can also be created manually where you can select the Items to manufacture.","انتخاب کنید که آیا آیتم‌ها را از یک سفارش فروش یا یک درخواست مواد دریافت کنید. در حال حاضر سفارش فروشرا انتخاب کنید. + همچنین می توان یک برنامه تولید به صورت دستی ایجاد کرد که در آن می توانید آیتم‌هایی را برای تولید انتخاب کنید.", +Sending...,در حال ارسال..., +"Serial No {0} is not present in the {1} {2}, hence you can't return it against the {1} {2}",شماره سریال {0} در {1} {2} وجود ندارد، بنابراین نمی توانید آن را در برابر {1} {2} برگردانید, +Start Timer,آغاز زمان‌سنج, +Stock and Manufacturing,موجودی و تولید, +Subcontracted Quantity,مقدار قرارداد فرعی شده, +This PO has been fully subcontracted.,این سفارش خرید به طور کامل قرارداد فرعی شده است., +This value shall be used when no matching Common Code for a record is found.,این مقدار باید زمانی استفاده شود که هیچ کد مشترک منطبقی برای یک رکورد پیدا نشود., +Valuation (I - K),ارزش گذاری (I - K), +Value (G - D),مقدار (G - D), +Value of Scrapped Asset,ارزش دارایی اسقاط شده, +Version,نسخه, +You are importing data for the code list:,شما در حال درون‌برد داده ها برای لیست کد هستید:, +You can add the original invoice {} manually to proceed.,برای ادامه می توانید فاکتور اصلی {} را به صورت دستی اضافه کنید., +Advance Account: {0} must be in either customer billing currency: {1} or Company default currency: {2},حساب پیش پرداخت: {0} باید یا به ارز صورتحساب مشتری: {1} یا به ارز پیش‌فرض شرکت: {2} باشد, +Allow Internal Transfers at Arm's Length Price,اجازه انتقالات داخلی با قیمت منصفانه, +Allow existing Serial No to be Manufactured/Received again,اجازه استفاده مجدد از شماره سریال موجود برای تولید/دریافت, +Amount Difference with Purchase Invoice,تفاوت مبلغ با فاکتور خرید, +Amount in Words,مبلغ به حروف, +Auto Fetch Serial Numbers,واکشی خودکار شماره سریال, +Auto Reconciliation has started in the background,تطبیق خودکار در پس‌زمینه شروع شده است, +Billing Address does not belong to the {0},آدرس صورتحساب به {0} تعلق ندارد, +Both Receivable Account: {0} and Advance Account: {1} must be of same currency for company: {2},هر دو حساب دریافتنی: {0} و حساب پیش پرداخت: {1} باید دارای یک ارز یکسان برای شرکت: {2} باشند, +CANCELLED,لغو شده, +Company {0} added multiple times,شرکت {0} چندین بار اضافه شد, +Contact Person does not belong to the {0},شخص مخاطب به {0} تعلق ندارد, +Conversion rate cannot be 0,نرخ تبدیل نمی تواند 0 باشد, +Cost Center for Item rows has been updated to {0},مرکز هزینه برای ردیف های آیتم به {0} به روز شده است, +Do Not Update Serial / Batch on Creation of Auto Bundle,عدم به‌روزرسانی سریال / دسته هنگام ایجاد باندل خودکار, +Do Not Use Batch-wise Valuation,عدم استفاده از ارزیابی دسته‌ای, +Do reposting for each Stock Transaction,انجام ارسال مجدد برای هر تراکنش موجودی, +Employee {0} is currently working on another workstation. Please assign another employee.,کارمند {0} در حال حاضر روی ایستگاه کاری دیگری کار می‌کند. لطفا کارمند دیگری را تعیین کنید., +Enabling this ensures each Purchase Invoice has a unique value in Supplier Invoice No. field within a particular fiscal year,فعال‌سازی این گزینه تضمین می‌کند که هر فاکتور خرید دارای مقدار یکتایی در فیلد شماره فاکتور تأمین‌کننده در یک سال مالی مشخص باشد, +Exit Full Screen,خروج از تمام صفحه, +Floor,سالن, +Floor Name,نام سالن, +Full Screen,تمام صفحه, +Has Corrective Cost,هزینه اصلاحی دارد, +If enabled then system won't apply the pricing rule on the delivery note which will be create from the pick list,اگر فعال باشد، سیستم قانون قیمت‌گذاری را بر روی یادداشت تحویل که از لیست انتخاب ایجاد می‌شود، اعمال نخواهد کرد, +"If enabled, do not update serial / batch values in the stock transactions on creation of auto Serial + / Batch Bundle. ","در صورت فعال بودن، مقادیر سریال / دسته را در تراکنش‌های موجودی هنگام ایجاد خودکار باندل سریال + / دسته به روز نکنید. ", +"If enabled, the item rate won't adjust to the valuation rate during internal transfers, but accounting will still use the valuation rate.",اگر فعال شود، نرخ آیتم در انتقالات داخلی با نرخ ارزیابی تنظیم نخواهد شد، اما حسابداری همچنان از نرخ ارزیابی استفاده خواهد کرد., +"If enabled, the system will use the moving average valuation method to calculate the valuation rate for the batched items and will not consider the individual batch-wise incoming rate.",اگر فعال شود، سیستم از روش ارزیابی میانگین متحرک برای محاسبه نرخ ارزیابی آیتم‌های دسته‌ای استفاده خواهد کرد و نرخ ورودی هر دسته را به‌طور جداگانه در نظر نخواهد گرفت., +Incorrect Serial and Batch Bundle,باندل سریال و دسته نادرست, +Interval should be between 1 to 59 MInutes,بازه زمانی باید بین 1 تا 59 دقیقه باشد, +Invalid Serial and Batch Bundle,باندل سریال و دسته نامعتبر, +Invoice ID,شناسه فاکتور, +Is Short/Long Year,سال کوتاه/بلند است, +Mobile: ,تلفن همراه: , +More/Less than 12 months.,بیشتر/کمتر از 12 ماه., +Naming Series is mandatory,سری نامگذاری اجباری است, +Net Purchase Amount,مبلغ خالص خرید, +"On submission of the stock transaction, system will auto create the Serial and Batch Bundle based on the Serial No / Batch fields.",پس از ارسال تراکنش موجودی، سیستم به صورت خودکار باندل سریال و دسته را بر اساس فیلدهای شماره سریال / دسته ایجاد می‌کند., +Only 'Payment Entries' made against this advance account are supported.,فقط «ثبت‌های پرداخت» انجام‌شده در برابر این حساب پیش پرداخت پشتیبانی می‌شوند., +Only applies for Normal Payments,فقط برای پرداخت های عادی اعمال می‌شود, +Order No,شماره سفارش, +Over Picking Allowance,اجازه برداشت بیش از حد, +Partial Payment in POS Invoice is not allowed.,پرداخت جزئی در فاکتور POS مجاز نمی باشد., +Payment Reconciliation Settings,تنظیمات تطبیق پرداخت, +Payment Status,وضعیت پرداخت, +Please set both the Tax ID and Fiscal Code on Company {0},لطفاً شناسه مالیاتی و کد مالی شرکت {0} را تنظیم کنید, +Please set {0} first.,لطفا ابتدا {0} را تنظیم کنید., +Please specify a {0} first.,لطفا ابتدا یک {0} را مشخص کنید., +Print Receipt on Order Complete,چاپ رسید در صورت کامل شدن سفارش, +Reconcile All Serial Nos / Batches,تطبیق همه شماره سریال ها / دسته ها, +Reconciliation Date,تاریخ تطبیق, +Reconciliation Queue Size,اندازه صف تطبیق, +Reconciliation Takes Effect On,تطبیق تاثیر می گذارد روی, +Remove SABB Entry,حذف ثبت SABB, +Row # {0}: Please add Serial and Batch Bundle for Item {1},ردیف # {0}: لطفاً باندل سریال و دسته را برای آیتم {1} اضافه کنید, +Select View,انتخاب نما, +Selected Serial and Batch Bundle entries have been removed.,ثبت‌های باندل سریال و دسته انتخاب شده حذف شده اند., +Serial No and Batch Selector cannot be use when Use Serial / Batch Fields is enabled.,انتخاب‌گر شماره سریال و دسته زمانی که فیلدهای شماره سریال / دسته فعال شده‌اند، قابل استفاده نیست., +Serial and Batch Bundle {0} is already used in {1} {2}.,باندل سریال و دسته {0} قبلاً در {1} {2} استفاده شده است., +Shipping Address does not belong to the {0},آدرس حمل و نقل به {0} تعلق ندارد, +Stock will be reserved on submission of Purchase Receipt created against Material Request for Sales Order.,موجودی هنگام ارسال رسید خرید ایجاد شده بر اساس درخواست مواد برای سفارش فروش رزرو خواهد شد., +System In Use,سیستم در حال استفاده, +Tax Withholding,کسر مالیات, +The Serial and Batch Bundle {0} is not valid for this transaction. The 'Type of Transaction' should be 'Outward' instead of 'Inward' in Serial and Batch Bundle {0},باندل سریال و دسته {0} برای این تراکنش معتبر نیست. «نوع تراکنش» باید به جای «ورودی» در باندل سریال و دسته {0} «خروجی» باشد, +The percentage you are allowed to pick more items in the pick list than the ordered quantity.,درصد مجاز برای انتخاب آیتم‌های بیشتر از مقدار سفارش داده‌شده در فهرست برداشت., +"The percentage you are allowed to transfer more against the quantity ordered. For example, if you have ordered 100 units, and your Allowance is 10%, then you are allowed transfer 110 units.",درصدی که مجاز به انتقال بیشتر نسبت به مقدار سفارش شده هستید. به عنوان مثال، اگر 100 عدد سفارش داده اید، و مقدار مجاز شما 10٪ است، سپس شما مجاز به انتقال 110 واحد هستید., +The serial and batch bundle {0} not linked to {1} {2},باندل سریال و دسته {0} به {1} {2} مرتبط نیست, +The user cannot submit the Serial and Batch Bundle manually,کاربر نمی‌تواند باندل سریال و دسته را به صورت دستی ارسال کند, +To Date is mandatory,تا تاریخ اجباری است, +Total Picked Quantity {0} is more than ordered qty {1}. You can set the Over Picking Allowance in Stock Settings.,مقدار کل برداشت‌شده {0} بیشتر از مقدار سفارش داده‌شده {1} است. می‌توانید حد مجاز برداشت اضافی را در تنظیمات موجودی تعیین کنید., +Total Weight (kg),وزن کل (کیلوگرم), +Update the modified timestamp on new communications received in Lead & Opportunity.,به‌روزرسانی تایم‌استمپ تغییرات بر روی ارتباطات جدید دریافت‌شده در سرنخ و فرصت., +Update timestamp on new communication,به روز رسانی تایم‌استمپ در ارتباطات جدید, +Use Serial / Batch Fields,استفاده از فیلدهای سریال / دسته, +You can't process the serial number {0} as it has already been used in the SABB {1}. {2} if you want to inward same serial number multiple times then enabled 'Allow existing Serial No to be Manufactured/Received again' in the {3},شما نمی‌توانید شماره سریال {0} را پردازش کنید زیرا قبلاً در SABB {1} استفاده شده است. {2} اگر می‌خواهید همان شماره سریال را چندین بار دریافت کنید، گزینه 'اجازه دریافت/تولید مجدد شماره سریال موجود' را در {3} فعال کنید, +{0} is a mandatory field.,{0} یک فیلد اجباری است., +{0} items lost during process.,{0} آیتم در طول فرآیند گم شده است., +{0}: {1} does not belong to the Company: {2},{0}: {1} متعلق به شرکت: {2} نیست, diff --git a/erpnext/translations/fi.csv b/erpnext/translations/fi.csv index c8f4a4999ed..37cf77194f0 100644 --- a/erpnext/translations/fi.csv +++ b/erpnext/translations/fi.csv @@ -8743,3 +8743,5 @@ WhatsApp,WhatsApp, Make a call,Soita, Approve,Hyväksyä, Reject,Hylätä, +Convert to Group,Muunna ryhmäksi,Warehouse +General Ledger,Päätilikirja,Warehouse diff --git a/erpnext/translations/fr.csv b/erpnext/translations/fr.csv index 7e224113787..7e45e80540c 100644 --- a/erpnext/translations/fr.csv +++ b/erpnext/translations/fr.csv @@ -8914,3 +8914,316 @@ Sales Update Frequency in Company and Project,Fréquence de mise à jour des ven Transaction Settings,Paramètres des transactions, Subcontracting Settings,Paramètres de sous-traitance, Users with this role are allowed to over bill above the allowance percentage,Les utilisateurs avec ce rôle sont autorisés à sur-facturer au delà du pourcentage de tolérance, + Address, Adresse, + Amount, Montant, + Name, Nom, + Rate, Prix, + Summary, Résumé, +% Picked,% choisi, +% Process Loss,% de perte de processus, +% Returned,% retourné, +'Allow Multiple Sales Orders Against a Customer's Purchase Order',Autoriser les commandes multiples contre un bon de commande du client', +'To Package No.' cannot be less than 'From Package No.','Au numéro du paquet' ne peut pas être inférieur à 'À partir du paquet N°'., +(A) Qty After Transaction,(A) Quantité après la transaction, +(B) Expected Qty After Transaction,(B) Quantité attendue après la transaction, +(C) Total Qty in Queue,(C) Qté totale dans la file d'attente, +(C) Total qty in queue,(C) Quantité totale en file d'attente, +(D) Balance Stock Value,(D) Valeur du solde du stock, +(E) Balance Stock Value in Queue,(E) Solde de la valeur de stock dans la file d'attente, +(F) Change in Stock Value,(F) Changement de la valeur du stock, +(G) Sum of Change in Stock Value,(G) Somme de la variation de la valeur du stock, +(H) Change in Stock Value (FIFO Queue),(H) Changement de la valeur du stock (file d’attente IFO), +(H) Valuation Rate,(H) Taux d'évaluation, +(I) Valuation Rate,(I) Taux d'évaluation, +(J) Valuation Rate as per FIFO,(J) Taux d'évaluation selon la FIFO, +(K) Valuation = Value (D) ÷ Qty (A),(K) Évaluation = Valeur (D) ÷ Qty (A), +0-30 Days,0-30 jours, +3 Yearly,3 Annuel, +"
+

Note

+
    +
  • +You can use Jinja tags in Subject and Body fields for dynamic values. +
  • + All fields in this doctype are available under the doc object and all fields for the customer to whom the mail will go to is available under the customer object. +
+

Examples

+ +
    +
  • Subject:

    Statement Of Accounts for {{ customer.customer_name }}

  • +
  • Body:

    +
    Hello {{ customer.customer_name }},
    PFA your Statement Of Accounts from {{ doc.from_date }} to {{ doc.to_date }}.
  • +
+","
+

Note

+
    +
  • +Vous pouvez utiliser des tags Jinja dans les éléments Subject et Body pour avoir des valeurs dynamiques. +
  • + Tous les champs dans ce DocType sont disponibles sous l'objet doc et tous les champs pour le client à qui l'email est adressé sont disponibles sous l'objet customer. +
+

Exemples

+ +
    +
  • Subject:

    Relevés de comptes pour {{ customer.customer_name }}

  • +
  • Body:

    +
    Bonjour {{ customer.customer_name }},
    Vous trouverez en pièce-jointe vos relevés de comptes du {{ doc.from_date }} au {{ doc.to_date }}.
  • +
+", +"
Other Details
","
Autres détails
", +"
No Matching Bank Transactions Found
","
Aucune transaction bancaire correspondante trouvée
", +"
+

All dimensions in centimeter only

+
","
+

Toutes les dimensions doivent être en centimètres

+
", +"

About Product Bundle

+ +

Aggregate group of Items into another Item. This is useful if you are bundling a certain Items into a package and you maintain stock of the packed Items and not the aggregate Item.

+

The package Item will have Is Stock Item as No and Is Sales Item as Yes.

+

Example:

+

If you are selling Laptops and Backpacks separately and have a special price if the customer buys both, then the Laptop + Backpack will be a new Product Bundle Item.

","

À propos du lot de produits

+ +

Constituer un article composé d'autres articles. Utile si vous avez certains articles dans un lot de vente et que vous maintenez un stock individuel de chaque article du lot et non de l'ensemble Article.

+

Le lot Article aura la variable Article de stock sur Non et Article de vente sur Oui.

+

Exemple :

+

Si vous vendez des ordinateurs portables et des sacs à dos séparément et bénéficiez d'un prix spécial si le client achète les deux , l'ordinateur portable + le sac à dos constitueront un nouvel élément du pack de produits.

", +"
Or
","
Ou
", +AWB Number,Numéro AWB, +Abbreviation: {0} must appear only once,Abréviation: {0} ne doit apparaître qu'une seule fois, +About Us Settings,Paramétrages À Propos, +About {0} minute remaining,Il reste environ {0} minute, +About {0} minutes remaining,Il reste environ {0} minutes, +About {0} seconds remaining,Il reste environ {0} secondes, +Acceptance Criteria Formula,Critères d'acceptation de la formule, +Acceptance Criteria Value,Critères d'acceptation valeur, +Accepted Qty in Stock UOM,Quantité acceptée en UOM de Stock, +Access Key,Clé d'accès, +Access Key is required for Service Provider: {0},La clé d'accès est requise pour le fournisseur de service : {0}, +Account Balance (From),Solde du code comptable (depuis le), +Account Balance (To),Solde du compte (À), +Account Closing Balance,Solde de clôture du compte, +Account Currency (From),Devise du cpte client (From), +Account Currency (To),Devise du compte (à), +Account Opening Balance,Solde d'ouverture du compte, +Accounting Dimensions Filter,Filtre de dimensions comptables, +Accounting Entry for {0},Entrée comptable pour {0}, +Accounts Missing Error,Erreur de compte manquant, +Accounts Receivable/Payable,Comptes débiteurs / créditeurs, +Accounts to Merge,Comptes à fusionner, +Action If Same Rate is Not Maintained,Action si le même taux n'est pas maintenu, +Action if Same Rate is Not Maintained Throughout Sales Cycle,Action si le même taux n'est pas maintenu tout au long du cycle de vente, +Active Status,Statut actif, +Actual Qty in Warehouse,Quantité réelle en entrepôt, +Add Serial / Batch No,Ajouter une série / numéro de lot, +Add Serial / Batch No (Rejected Qty),Ajouter numéro de série / numéro de lot (Qté rejetée), +Add Sub Assembly,Ajouter une sous-Ruche, +Add a Note,Ajouter une note, +Add details,Ajouter des détails, +Add to Prospect,Ajouter à Prospect, +Added By,Ajouté par, +Added On,Ajouté le, +Added Supplier Role to User {0}.,Ajout du rôle de fournisseur à l'utilisateur {0}., +Added {1} Role to User {0}.,Ajout du rôle {1} à l'utilisateur {0}., +Adding Lead to Prospect...,Ajout du prospect à Prospect..., +Additional Asset Cost,Coût d'actif supplémentaire, +Additional Cost Per Qty,Coût supplémentaire par quantité, +Additional Info,Infos supplémentaires, +Address And Contacts,Adresse et contacts, +Adjust Asset Value,Ajuster la valeur de l'actif, +Adjustment Against,Ajustement pour, +Adjustment based on Purchase Invoice rate,Ajustement basé sur le taux de la facture d'achat, +Ageing Range,Balance Agée, +Allow,Autoriser, +Allow Purchase,Autoriser à l'achat, +Allow Sales,Autoriser à la vente, +Allowed,Autorisé, +Annual Revenue,CA annuel, +Assignment,Affectation, +Auto Email Report,Rapport par Email Automatique, +Auto Name,Nom Auto, +Billing Address Details,Adresse de facturation (détails), +Bom No,N° Nomenclature, +Bulk Update,Mise à jour en Masse, +Closing,Clôture, +Consolidate Sales Order Items,Consolider les articles de la commande client, +Contact Details,Coordonnées, +Contact Us Settings,Paramètres du Formulaire de Contact, +Convert to Group,Convertir en groupe,Warehouse +Count,Compter, +Created On,Créé Le, +Custom,Personnaliser, +Dashboard,Tableau de bord, +Deal Owner,Resp. de l'opportunité, +Deferred Accounting,Comptabilité différée, +Deferred Accounting Defaults,Paramètres par défaut de comptabilité différée, +Delayed,Différé, +Deleted Documents,Documents Supprimés, +"Discounts to be applied in sequential ranges like buy 1 get 1, buy 2 get 2, buy 3 get 3 and so on","La remise sera appliquée séquentiellement telque : acheter 1 => recupérer 1, acheter 2 => recupérer 2, acheter 3 => recupérer 3, etc...", +Domain Settings,Paramètres de Domaine, +Don't Send Emails,Ne pas envoyer d'emails, +Download Backups,Télécharger les Sauvegardes, +Edit Full Form,Ouvrir le formulaire complet, +Email Domain,Serveur de courriels, +Event,Événement, +Export Data,Exporter des données, +Export Errored Rows,Exporter les lignes erronées, +Failure,Échec, +Filter,Filtre, +Forecast,Prévoir, +From Opportunity,Depuis l'opportunité, +General Ledger,Grand Livre,Warehouse +Go to {0} List,Aller à la liste {0}, +Half-yearly,Semestriel, +Heatmap,Carte de chaleur, +Height (cm),Hauteur (cm), +"If mentioned, the system will allow only the users with this Role to create or modify any stock transaction earlier than the latest stock transaction for a specific item and warehouse. If set as blank, it allows all users to create/edit back-dated transactions.",Les utilisateur de ce role pourront creer et modifier des transactions dans le passé. Si vide tout les utilisateurs pourrons le faire, +Import File,Importer le fichier, +Import File Errors and Warnings,Importer les erreurs de fichier et les avertissements, +Import Log Preview,Importer l'aperçu du journal, +Import Preview,Aperçu d'importation, +Import Progress,Progression de l'importation, +Import Type,Type d'importation, +Import Warnings,Avertissements d'importation, +Import from Google Sheets,Importer depuis Google Sheets, +"Importing {0} of {1}, {2}","Importation de {0} de {1}, {2}", +Indent,Indentation, +Insert New Records,Insérer de nouveaux enregistrements, +Inter Transfer Reference,Référence de transfert interne, +Internal Customer,Client interne, +Internal Supplier,Fournisseur interne, +Invalid,Invalide, +Inventory Settings,Paramétrage de l'inventaire, +Is Standard,Est Standard, +Item {0} does not exist.,Article {0} n'existe pas., +Key,Clé, +Leaderboard,Classement, +Length,Longueur, +Length (cm),Longueur (cm), +Links,Liens, +Loading import file...,Chargement du fichier d'importation ..., +Mandatory Depends On,Obligatoire dépend de, +Meeting,Réunion, +Modified By,Modifié Par, +New Event,Nouvel évènement, +New Task,Nv. Tâche à faire, +No of Employees,Nb de salarié(e)s, +No stock transactions can be created or modified before this date.,Aucune transaction ne peux être créée ou modifié avant cette date., +No. of Employees,Nb de salarié(e)s, +Notification Settings,Paramètres de notification, +Off,De, +Parcel Template,Modèle de colis, +Parcel Template Name,Nom du modèle de colis, +Parcels,Colis, +Partial Success,Succès Partiel, +Pay,Payer,Amount +Please set filters,Veuillez définir des filtres, +Primary Address and Contact,Adresse et contact principal, +Print Format Builder,Éditeur de Format d'Impression, +Print Style,Style d'Impression, +Printing,Impression, +Probability,Probabilité, +Production Plan Qty,Qté du plan de production, +Production Plan Sub-assembly Item,Plan de production de l'article de Sous-assemblage, +Progress,Progression, +Prospect Owner,Resp. du Prospect, +Qualified By,Qualifié par, +Qualified on,Qualifié le, +Rate of Depreciation (%),Taux d'amortissement (%), +Reference DocType,Référence DocType, +Refresh Google Sheet,Actualiser Google Sheet, +Rejected ,Rejeté , +Report Filters,Filtres du Rapport, +Retry,Recommencez, +Returned,retourné, +SMS Settings,Paramètres des SMS, +Sales Order Packed Item,Article emballé pour l'ordre de vente, +Sales Order Reference,Référence de la commande client, +Set Quantity,Définir Quantité, +Show Failed Logs,Afficher les journaux ayant échoué, +Stage,Etape, +Start Import,Démarrer l'import, +Sub Assembly Item Code,Code de l'article de Sous-assemblage, +Sub Assembly Items,Articles de sous-assemblage, +Submit After Import,Validation après importation, +Supplier Address Details,Adresse Fournisseur (détails), +Supplier Primary Address,Adresse fournisseur principal, +Supplier Primary Contact,Contact fournisseur principal, +System Settings,Paramètres Système, +Template Options,Options de modèle, +Template Warnings,Avertissements de modèles, +The Condition '{0}' is invalid,La Condition '{0}' est invalide, +This Warehouse will be auto-updated in the Target Warehouse field of Work Order.,Cet entrepôt sera mis à jour automatiquement dans le champ Entrepôt cible de l'ordre de fabrication., +Update Existing Records,Mettre à jour les enregistrements existants, +"Updating {0} of {1}, {2}","Mise à jour de {0} sur {1}, {2}", +Value Change,Modification de Valeur, +Watch Video,Regarder la vidéo, +Website Script,Script du Site web, +Website Theme,Thème du Site Web, +Weight (kg),Poids (kg), +Width (cm),Largeur (cm), +Workflow,Flux de Travail, +Workflow Action,Action du Flux de Travail, +Workflow State,État du Flux de Travail, +product bundle item row's name in sales order. Also indicates that picked item is to be used for a product bundle,nom de la colonne de l'article du lot de produits dans la commande client. Indique également que l'article sélectionné doit être utilisé pour un lot de produits, +quotation_item,article_devis, +{0} and {1},{0} et {1}, +{} Assigned,{} Attribué, +{} Available,{} Disponible, +"

Currency Exchange Settings Help

+

There are 3 variables that could be used within the endpoint, result key and in values of the parameter.

+

Exchange rate between {from_currency} and {to_currency} on {transaction_date} is fetched by the API.

+

Example: If your endpoint is exchange.com/2021-08-01, then, you will have to input exchange.com/{transaction_date}

","

Aide sur les paramètres de change

+

Trois variables peuvent être utilisées dans le point final, la clé de résultat et les valeurs du paramètre.

+

Le taux de change entre {from_currency} et {to_currency} sur {transaction_date} est récupéré par l'API.

+

Exemple : Si votre point de terminaison est exchange.com/2021-08-01, vous devrez saisir exchange.com/{transaction_date}.

", +"Masters & Reports","Rapports & Fonctionnalités principales", +"Reports & Masters","Rapports et Pages principales", +"Your Shortcuts","Vos raccourcis", +A - C,A-C, +A Holiday List can be added to exclude counting these days for the Workstation.,Une liste de jours fériés peut être ajoutée pour exclure le comptage de ces jours pour le poste de travail., +A Packing Slip can only be created for Draft Delivery Note.,Un bordereau d'emballage ne peut être créé que pour les brouillons de bons de livraison., +"A Price List is a collection of Item Prices either Selling, Buying, or both","Une liste de prix est une liste de prix d'articles à la vente, à l'achat, ou les deux", +A Reconciliation Job {0} is running for the same filters. Cannot reconcile now,Un travail de réconciliation {0} est en cours d'exécution pour les mêmes filtres. Impossible de réconcilier maintenant, +A customer must have primary contact email.,Un client doit avoir un courriel de contact principal., +A driver must be set to submit.,Un conducteur doit être défini pour soumettre., +A template with tax category {0} already exists. Only one template is allowed with each tax category,Un modèle avec la catégorie de taxe {0} existe déjà. Un seul modèle est autorisé pour chaque catégorie de taxe, +Actual Time,Heure actuelle, +Add Columns in Transaction Currency,Ajouter des colonnes dans la devise de la transaction, +Add Discount,Ajouter une promotion, +Add Items in the Purpose Table,Ajouter des éléments dans le tableau des objectifs, +Add Lead to Prospect,Ajouter un lead à un prospect, +Add Local Holidays,Ajouter des jours fériés locaux, +Add Manually,Ajouter manuellement, +Add Or Deduct,Ajouter ou déduire, +Add Serial / Batch Bundle,Ajouter une série / un lot, +Add Stock,Ajouter du stock, +Add Template,Ajouter un modèle, +Additional,Additionnel, +Advance Account: {0} must be in either customer billing currency: {1} or Company default currency: {2},Compte d'avance : {0} doit être dans la devise de facturation du client : {1} ou dans la devise par défaut de l'entreprise : {2}, +Advance Payment,Acompte, +Advance Payment Date,Date du paiement anticipé, +Advance Reconciliation Takes Effect On,Le rapprochement anticipé prend effet le, +Advance payments allocated against orders will only be fetched,Seul les paiements anticipés alloués aux commandes seront uniquement récupérés, +Attendance & Leaves,Présences et congés, +Avg Rate (Balance Stock),Valorisation Moyenne (Livre d'inventaire), +BOM UoM,UdM de la nomenclature, +BOM Update Batch,Mise à jour en lot des nomenclatures, +"Based on your HR Policy, select your leave allocation period's end date","En fonction de votre politique RH, sélectionnez la date de fin de la période d'attribution des congés", +Batch Nos,Numéros de lots, +Batch and Serial No,N° de lot et de série, +CANCELLED,ANNULÉ, +Company Details,Détail de la société, +Deferred accounting failed for some invoices:,La comptabilité différée a échoué pour certaines factures :, +Delivery Manager,Gestionnaire des livraisons, +Delivery User,Utilisateur de la livraison, +Error while processing deferred accounting for {0},Erreur lors du traitement de la comptabilité différée pour {0}, +Only Include Allocated Payments,Inclure uniquement les paiements alloués, +Parcel weight cannot be 0,Le poids du colis ne peut pas être égal à 0, +Please enter Shipment Parcel information,Veuillez entrer les informations sur l'expédition du colis, +Row #{0}: You cannot use the inventory dimension '{1}' in Stock Reconciliation to modify the quantity or valuation rate. Stock reconciliation with inventory dimensions is intended solely for performing opening entries.,Ligne #{0}: Vous ne pouvez pas utiliser la dimension de stock '{1}' dans l'inventaire pour modifier la quantité ou le taux de valorisation. L'inventaire avec les dimensions du stock est destiné uniquement à effectuer les écritures d'ouverture., +Row {0}: Item Tax template updated as per validity and rate applied,Ligne {0}: Modèle de taxe d'article mis à jour selon la validité et le taux appliqué, +Shipment Parcel,Expédition Colis, +Shipment Parcel Template,Modèle d'expédition de colis, +"The stock has been reserved for the following Items and Warehouses, un-reserve the same to {0} the Stock Reconciliation:

{1}","Le stock a été réservé pour les articles et entrepôts suivants, annulez-le pour {0} l'inventaire:

{1}", +{0} is a mandatory field.,{0} est un champ obligatoire., diff --git a/erpnext/translations/hr.csv b/erpnext/translations/hr.csv index ec5b0667784..34089ec5354 100644 --- a/erpnext/translations/hr.csv +++ b/erpnext/translations/hr.csv @@ -8743,3 +8743,145 @@ WhatsApp,Što ima, Make a call,Uputi poziv, Approve,Odobriti, Reject,Odbiti, + Address, Adresa, + Amount,Iznos, + Is Child Table,Podređena tabela, + Name, Naziv, + Rate, Cijena, + Summary, Sažetak, +"""SN-01::10"" for ""SN-01"" to ""SN-10""","""SB-01::10"" za ""SB-01"" do ""SB-10""", +# In Stock,# Na Zalihama, +# Req'd Items,# Obavezni Artikli, +% Picked,% Odabrano, +% Returned,% Vraćeno, +'Default {0} Account' in Company {1},'Standard {0} račun' u Tvrtki {1}, +'{0}' should be in company currency {1}.,'{0}' bi trebao biti u valuti tvrtke {1}., +"Reports & Masters","Izvještaji & Pristupi", +"Reports & Masters","Izvještaji & Pristupi", +"Your Shortcuts","Prečice", +Add Template,Dodaj Predložak, +Added On,Dodato, +Advance Account: {0} must be in either customer billing currency: {1} or Company default currency: {2},Račun Predujma: {0} mora biti u valuti fakture klijenta: {1} ili standard valuti tvrtke: {2}, +Allow,Dopusti, +Allow UOM with Conversion Rate Defined in Item,Dopusti Jedinicu sa stopom konverzije definiranom u Postavkama Artikla, +Amount Difference with Purchase Invoice,Razlika u Iznosu naspram Kupovne Fakture, +Amount in Words,Iznos U Riječima, +Auto Fetch Serial Numbers,Automatski Preuzmi Serijske Brojeve, +BOM Created,Sastavnica Stvorena, +BOM Creator,Konstruktor Sastavnice, +BOM Creator Item,Artikal Sastavnice Konstruktora, +BOM Info,Informacija Sastavnice, +BOM Level,Nivo Sastavnice, +BOM Tree,Stablo Sastavnice, +BOM UoM,Jedinica Sastavnice, +BOM Update Batch,Sastavnica Ažurira Šaržu, +BOM Update Initiated,Pokrenuto Ažuriranje Sastavnice, +BOM Update Log,Zapisnik Ažuriranja Sastavnice, +BOM and Production,Sastavnica & Proizvodnja, +Bank Account {} in Bank Transaction {} is not matching with Bank Account {},Bankovni račun {} u bankovnoj transakciji {} ne odgovara bankovnom računu {}, +Below Subscription Plans are of different currency to the party default billing currency/Company currency: {0},Planovi Pretplate u nastavku imaju različite valute u odnosu na standard valutu fakturisanja/valutu tvrtke: {0}, +Both Payable Account: {0} and Advance Account: {1} must be of same currency for company: {2},Račun Obaveza: {0} i Račun Predujma: {1} moraju biti u istoj valuti za tvrtke: {2}, +Both Receivable Account: {0} and Advance Account: {1} must be of same currency for company: {2},Račun Prihoda: {0} i Račun Predujma: {1} moraju biti u istoj valuti za tvrtku: {2}, +Both {0} Account: {1} and Advance Account: {2} must be of same currency for company: {3},{0} Račun: {1} i Račun Predujma: {2} moraju biti u istoj valuti za tvrtku: {3}, +Call Received By,Poziv Primljen Od, +Cannot enqueue multi docs for one company. {0} is already queued/running for company: {1},Nije moguće staviti u red više dokumenata za jednu tvrtku. {0} je već u redu čekanja/pokreće se za tvrtku: {1}, +Company Address Display,Prikaz Adrese Tvrtke, +Company Billing Address,Faktura Adresa Tvrtke, +Company Contact Person,Kontakt Osoba Tvrtke, +Company Details,Detalji o Tvrtki, +Company Tax ID,Fiskalni Broj Tvrtke, +Company and Posting Date is mandatory,Tvrtka i Datum Knjiženja su obavezni, +Company is mandatory,Tvrtka je obavezna, +Company is mandatory for generating an invoice. Please set a default company in Global Defaults.,Tvrtka je obavezna za generisanje fakture. Postavi standard tvrtku u Globalnim Postavkama., +Company which internal customer represents,Tvrtka koju predstavlja interni Klijent, +Company which internal customer represents.,Tvrtka koju predstavlja interni Klijent., +Company which internal supplier represents,Tvrtka koju predstavlja interni Dobavljač, +Company {0} is added more than once,Tvrtka {0} je dodana više puta, +Company {} does not exist yet. Taxes setup aborted.,Tvrtka {} još ne postoji. Postavljanje poreza je prekinuto., +Company {} does not match with POS Profile Company {},Tvrtka {} se ne podudara s Kasa Profilom Tvrtke {}, +Conversion rate cannot be 0,Stopa konverzije ne može biti 0, +"Conversion rate is 1.00, but document currency is different from company currency","Stopa konverzije je 1,00, ali valuta dokumenta razlikuje se od valute tvrtke", +Conversion rate must be 1.00 if document currency is same as company currency,"Stopa konverzije mora biti 1,00 ako je valuta dokumenta ista kao valuta tvrtke", +Cost Center for Item rows has been updated to {0},Centar Troškova za artikal redove je ažuriran na {0}, +Cost Center {} doesn't belong to Company {},Centar Troškova {} ne pripada Tvrtki {}, +Could not detect the Company for updating Bank Accounts,Nije moguće otkriti tvrtku za ažuriranje Bankovnih Računa, +Demo Company,Demo Tvrtka, +Depreciation eliminated via reversal,Amortizacija eliminirana storniranjem, +Dunning Amount (Company Currency),Iznos Opomene (Valuta Tvrtke), +Enabling this will allow creation of multi-currency invoices against single party account in company currency,Omogućavanje će omogućiti kreiranje viševalutnih faktura naspram računa jedne stranke u valuti tvrtke, +"Failed to erase demo data, please delete the demo company manually.","Brisanje demo podataka nije uspjelo, izbrišite demo tvrtku ručno.", +Hide timesheets,Sakrij Radne Listove, +"If enabled, the system will allow selecting UOMs in sales and purchase transactions only if the conversion rate is set in the item master.","Ako je omogućeno, sustav će dopustiti odabir jedinica u transakcijama prodaje i kupnje samo ako je stopa konverzije postavljena u postavkama artikla.", +"In this section, you can define Company-wide transaction-related defaults for this Item. Eg. Default Warehouse, Default Price List, Supplier, etc.","U ovoj sekciji možete definirati zadane postavke transakcije koje se odnose na cijelu tvrtku za ovaj artikal. Npr. Standard Skladište, Standard Cijenovnik, Dobavljač itd.", +Inter Transfer Reference,Referenca Prenosa Inter Tvrtke, +Internal Customer for company {0} already exists,Interni Klijent za tvrtku {0} već postoji, +Internal Supplier for company {0} already exists,Interni Dobavljač za tvrtku {0} već postoji, +Internal transfers can only be done in company's default currency,Interni prenosi se mogu vršiti samo u standard valuti tvrtke, +Invalid amount in accounting entries of {} {} for Account {}: {},Nevažeći iznos u knjigovodstvenim unosima od {} {} za Račun {}: {}, +Invoice ID,Faktura, +Job Card Operation,Operacija Radne Kartice, +Ledger Health Monitor Company,Tvrtka Praćenja Statusa Registra, +"Merging is only possible if following properties are same in both records. Is Group, Root Type, Company and Account Currency","Spajanje je moguće samo ako su sljedeća svojstva ista u oba zapisa. Grupa, Tip Klase, Tvrtka i Valuta Računa", +Missing Default in Company,Nedostaju Standard Postavke u Tvrtki, +Mobile: ,Mobilni: , +Net Purchase Amount,Neto Kupovni Iznos, +No Selection,Bez Odabira, +No {0} Accounts found for this company.,Nisu pronađeni {0} računi za ovu tvrtku., +Opportunity Amount (Company Currency),Iznos Prilike (Valuta Tvrtke), +Outstanding (Company Currency),Nepodmireno (Valuta Tvrtke), +POS Closed,Kasa Zatvorena, +POS has been closed at {0}. Please refresh the page.,Kasa je zatvorena u {0}. Osvježi Stranicu., +Paid Amount After Tax (Company Currency),Plaćeni Iznos nakon Oporezivanja (Valuta Tvrtke), +Payment Amount (Company Currency),Iznos Plaćanja (Valuta Tvrtke), +Payment Status,Status Plaćanja, +Please add the account to root level Company - {0},Dodaj Račun Matičnoj Tvrtki - {0}, +Please import accounts against parent company or enable {} in company master.,Uvezi račune naspram matične tvrtke ili omogući {} u Postavkama Tvrtke., +Please mention '{0}' in Company: {1},Navedi '{0}' u Tvrtki: {1}, +Please select Unrealized Profit / Loss account or add default Unrealized Profit / Loss account account for company {0},Odaberi Račun Nerealiziranog Rezultata ili postavi Standard Račun Nerealiziranog Rezultata za tvrtku {0}, +Please set '{0}' in Company: {1},Postavi '{0}' u Tvrtki: {1}, +"Please set Vat Accounts for Company: ""{0}"" in UAE VAT Settings","Postavi PDV Račune za Tvrtku: ""{0}"" u postavkama PDV-a UAE", +Please set a Cost Center for the Asset or set an Asset Depreciation Cost Center for the Company {},Postavi Centar Troškova za Imovinu ili postavite Centar Troškova Amortizacije za tvrtku {}, +Please set a default Holiday List for Company {0},Postavi standard Listu Praznika za Tvrtku {0}, +Please set an Address on the Company '%s',Postavi Adresu Tvrtke '%s', +Please set default Exchange Gain/Loss Account in Company {},Postavi Standard Račun Rezultata u Tvrtki {}, +Please set default Expense Account in Company {0},Postavi Standard Račun Troškova u Tvrtki {0}, +Please set default cost of goods sold account in company {0} for booking rounding gain and loss during stock transfer,Postavi standardni račun troška prodanog proizvoda u tvrtki {0} za zaokruživanje knjiženja rezultata tokom prijenosa zaliha, +Please set the cost center field in {0} or setup a default Cost Center for the Company.,Postavi Centra Troškova u polje {0} ili postavi Standard Centar Troškova za tvrtku., +Please set {0} in Company {1} to account for Exchange Gain / Loss,Postavi {0} u Tvrtku {1} kako biste knjižili rezultat tečaja, +Please setup and enable a group account with the Account Type - {0} for the company {1},Podesi i omogući grupni račun sa Kontnom Klasom - {0} za Tvrtku {1}, +Qty (Company),Količina (Tvrtka), +Receivable/Payable Account: {0} doesn't belong to company {1},Račun Potraživanja/ Plaćanja: {0} ne pripada tvrtki {1}, +Received Amount After Tax (Company Currency),Primljeni iznos nakon Pdv-a (Valuta Tvrtke), +Recreate Stock Ledgers,Ponovno kreiraj Registar Zaliha, +Reset Company Default Values,Poništi Standard Vrijednosti Tvrtke, +Row #{0}: Consumed Asset {1} does not belong to company {2},Red #{0}: Potrošena Imovina {1} ne pripada tvrtki {2}, +Row #{0}: Please update deferred revenue/expense account in item row or default account in company master,Red #{0}: Ažuriraj račun odloženih prihoda/troškova u redu artikla ili sttandard račun u postavkama tvrtke, +Row #{}: {} {} doesn't belong to Company {}. Please select valid {}.,Red #{}: {} {} ne pripada tvrtki {}. Odaberi važeći {}., +Row No {0}: Warehouse is required. Please set a Default Warehouse for Item {1} and Company {2},Red br {0}: Skladište je obezno. Postavite standard skladište za artikal {1} i tvrtku {2}, +Row {0}: Cost Center {1} does not belong to Company {2},Red {0}: Centar Troškova {1} ne pripada tvrtki {2}, +Sales Update Frequency in Company and Project,Učestalost Ažuriranja Prodaje u Tvrtki i Projektu, +Select a Company this Employee belongs to.,Navedi Tvrtku kojoj ovaj personal pripada., +"Select the Item to be manufactured. The Item name, UoM, Company, and Currency will be fetched automatically.","Odaber Artikal za Proizvodnju. Naziv Artikla, Jedinica, Tvrtka i Valuta će se automatski preuzeti.", +Set {0} in asset category {1} for company {2},Postavi {0} u kategoriju imovine {1} za tvrtku {2}, +Setting the account as a Company Account is necessary for Bank Reconciliation,Postavljanje računa kao Računa Tvrtke je neophodno za Bankovno Usaglašavanje, +Skipping Tax Withholding Category {0} as there is no associated account set for Company {1} in it.,Preskoči kategorije poreza po odbitku {0} jer u njoj nema povezanog računa za tvrtku {1}., +Sub Total,Podzbroj, +Subcontracting Conversion Factor,Faktor Konverzije Podizvođača, +Target Asset {0} does not belong to company {1},Ciljna Imovina {0} ne pripada tvrtki {1}, +Tax Withholding Category {} against Company {} for Customer {} should have Cumulative Threshold value.,Kategorija Odbitka Pdv {} naspram tvrtke {} za klijenta {} treba imati Kumulativnu Vrijednost Praga., +"The following batches are expired, please restock them:
{0}","Sljedeće šarže su istekle, obnovi zalihe:
{0}", +Transaction Deletion Document: {0} is running for this Company. {1},Dokument Brisanje Transakcije: {0} u toku za ovu tvrtku. {1}, +Transactions against the Company already exist! Chart of Accounts can only be imported for a Company with no transactions.,Transakcije naspram Tvrtke već postoje! Kontni Plan se može uvesti samo za kompaniju bez transakcija., +UnReconcile Allocations,Poništi Dodjele, +Unrealized Profit / Loss account for intra-company transfers,Nerealizovani Račun Rezultata za transfere intra-tvrtke, +Unrealized Profit/Loss account for intra-company transfers,Nerealizovani Račun Rezultata za transfere unutar tvrtke, +Use Company Default Round Off Cost Center,Koristi Standard Centar Troškova Zaokruživanja tvrtke, +Use Company default Cost Center for Round off,Koristi Standard Centar Troškova Zaokruživanja tvrtke, +Warehouse {0} does not belong to Company {1}.,Skladište {0} ne pripada Tvrtki {1}., +"Warehouse {0} is not linked to any account, please mention the account in the warehouse record or set default inventory account in company {1}.","Skladište {0} nije povezano ni sa jednim računom, navedi račun u zapisu skladišta ili postavi standard račun zaliha u tvrtki {1}.", +Wrong Company,Pogrešna Tvrtka, +{0} Account: {1} ({2}) must be in either customer billing currency: {3} or Company default currency: {4},{0} Račun: {1} ({2}) mora biti u bilo kojoj valuti fakture klijenta: {3} ili standard valuta tvrtke: {4}, +{0} currency must be same as company's default currency. Please select another account.,{0} valuta mora biti ista kao standard valuta tvrtke. Odaberi drugi račun., +{0}: {1} does not belong to the Company: {2},{0}: {1} ne pripada Tvrtki: {2}, +{} is a child company.,{} je podređena tvrtka., +{} {} is not affecting bank account {},{} {} ne utječe na bankovni račun {}, diff --git a/erpnext/translations/hu.csv b/erpnext/translations/hu.csv index a2a416cf556..7a3a1185622 100644 --- a/erpnext/translations/hu.csv +++ b/erpnext/translations/hu.csv @@ -8743,3 +8743,13 @@ WhatsApp,WhatsApp, Make a call,Hívást kezdeményezni, Approve,Jóváhagy, Reject,Elutasít, +Event,Esemény, +Filter,Szűrő, +Forecast,Előrejelzés, +Item {0} does not exist.,"Tétel: {0}, nem létezik.", +Rate of Depreciation (%),Értékcsökkenés mértéke (%), +Rejected ,Elutasítva , +Version,Verzió, +CANCELLED,TÖRÖLVE, +Mobile: ,Mobil: , +{0} is a mandatory field.,A(z) {0} egy kötelező mező., diff --git a/erpnext/translations/id.csv b/erpnext/translations/id.csv index 72e9b9c1fbd..05cdb911a97 100644 --- a/erpnext/translations/id.csv +++ b/erpnext/translations/id.csv @@ -8743,3 +8743,5 @@ WhatsApp,Ada apa, Make a call,Menelpon, Approve,Menyetujui, Reject,Menolak, +Convert to Group,Konversikan ke Grup,Warehouse +General Ledger,Buku Besar,Warehouse diff --git a/erpnext/translations/it.csv b/erpnext/translations/it.csv index 7a92e47715f..7d6b4179477 100644 --- a/erpnext/translations/it.csv +++ b/erpnext/translations/it.csv @@ -8743,3 +8743,4 @@ WhatsApp,WhatsApp, Make a call,Effettuare una chiamata, Approve,Approva, Reject,Rifiutare, +General Ledger,Contabilità Generale,Warehouse diff --git a/erpnext/translations/nl.csv b/erpnext/translations/nl.csv index 541e87ac8c1..3f462979820 100644 --- a/erpnext/translations/nl.csv +++ b/erpnext/translations/nl.csv @@ -8743,3 +8743,5 @@ WhatsApp,WhatsApp, Make a call,Bellen, Approve,Goedkeuren, Reject,afwijzen, +Convert to Group,Converteren naar groep,Warehouse +General Ledger,Grootboek,Warehouse diff --git a/erpnext/translations/pl.csv b/erpnext/translations/pl.csv index eab9dc4281b..912a47d4f76 100644 --- a/erpnext/translations/pl.csv +++ b/erpnext/translations/pl.csv @@ -8654,3 +8654,4 @@ WhatsApp,WhatsApp, Make a call,Zadzwoń, Approve,Zatwierdzać, Reject,Odrzucać, +Forecast,Prognoza, diff --git a/erpnext/translations/pt-BR.csv b/erpnext/translations/pt-BR.csv index dc993a6cb99..f0068b27368 100644 --- a/erpnext/translations/pt-BR.csv +++ b/erpnext/translations/pt-BR.csv @@ -8743,3 +8743,28 @@ WhatsApp,Whatsapp, Make a call,Faça uma ligação, Approve,Aprovar, Reject,Rejeitar, +Allowed,Permitido, +Auto Name,Nome Automático, +Contact Details,Detalhes do Contato, +Convert to Group,Converter Em Grupo,Warehouse +General Ledger,Livro Razão,Warehouse +Heatmap,Mapa de calor, +Import File,Importar arquivo, +Import File Errors and Warnings,Erros e avisos de importação de arquivos, +Import Log Preview,Visualização do registro de importação, +Import Preview,Visualização de importação, +Import Warnings,Avisos de importação, +Import from Google Sheets,Importar do Planilhas Google, +Insert New Records,Inserir novos registros, +Is Standard,É Padrão, +Key,Chave, +Mandatory Depends On,Obrigatório Depende, +Mobile: ,Móvel: , +Off,Desligado, +Refresh Google Sheet,Atualizar planilha do Google, +Report Filters,Filtros de relatório, +Section,Seção, +Submit After Import,Enviar após importação, +Template Options,Opções de modelo, +Template Warnings,Avisos do modelo, +Update Existing Records,Atualizar registros existentes, diff --git a/erpnext/translations/pt.csv b/erpnext/translations/pt.csv index eb43c914eb7..9b357285f62 100644 --- a/erpnext/translations/pt.csv +++ b/erpnext/translations/pt.csv @@ -8743,3 +8743,5 @@ WhatsApp,Whatsapp, Make a call,Faça uma ligação, Approve,Aprovar, Reject,Rejeitar, +Convert to Group,Converter a Grupo,Warehouse +General Ledger,Razão Geral,Warehouse diff --git a/erpnext/translations/ru.csv b/erpnext/translations/ru.csv index 26c32ec4099..f06b9e730e8 100644 --- a/erpnext/translations/ru.csv +++ b/erpnext/translations/ru.csv @@ -8663,3 +8663,11 @@ Make a call,Позвонить, Is Template,Является шаблоном, Approve,Одобрить, Reject,Отклонить, +Cannot {0} from {1} without any negative outstanding invoice,Действие {0} для {1} невозможно без наличия отрицательного остатка по счетам-фактурам, +Discount cannot be greater than 100%.,Скидка не может быть больше 100%., +Event,Событие, +Forecast,Прогноз, +Rate of Depreciation (%),Норма амортизации (%), +Rejected ,Отклонено , +Mobile: ,Мобильный: , +{0} is a mandatory field.,{0} - обязательное поле., diff --git a/erpnext/translations/sv.csv b/erpnext/translations/sv.csv index 4a53c63fafa..5965d7d6336 100644 --- a/erpnext/translations/sv.csv +++ b/erpnext/translations/sv.csv @@ -8743,3 +8743,3288 @@ WhatsApp,WhatsApp, Make a call,Ringa ett samtal, Approve,Godkänna, Reject,Avvisa, + Address, Adress, + Amount,Belopp, + Is Child Table,Är Undertabell, + Name,Namn, + Rate,Moms %, + Summary,Översikt, +"""SN-01::10"" for ""SN-01"" to ""SN-10""","""SN-01::10"" för ""SN-01"" till ""SN-10""", +# In Stock,# I Lager, +# Req'd Items,# Erfodrade Artiklar, +% Finished Item Quantity,% Färdig Artikel Kvantitet, +% Occupied,% Upptagen, +% Picked,% Plockad, +% Process Loss,% Process Förlust, +% Returned,% Retur, +'Account' in the Accounting section of Customer {0},"""Konto"" i Bokföring Sektion för Kund {0}", +'Allow Multiple Sales Orders Against a Customer's Purchase Order',"""Tillåt flera Försäljning Order mot Kund Inköp Order""", +'Default {0} Account' in Company {1},"""Standard {0} Konto"" i Bolag {1}", +'To Package No.' cannot be less than 'From Package No.',"""Till Paket Nummer."" får inte vara lägre än ""Från Paket Nummer.""", +'{0}' account is already used by {1}. Use another account.,'{0}' konto används redan av {1}. Använd ett annat konto., +'{0}' should be in company currency {1}.,"""{0}"" ska vara i bolag valuta {1}.", +(A) Qty After Transaction,(A) Kvantitet Efter Transaktion, +(B) Expected Qty After Transaction,(B) Förväntad Kvantitet Efter Transaktion, +(C) Total Qty in Queue,(C) Totalt Kvantitet i Kö, +(C) Total qty in queue,(C) Totalt Kvantitet i Kö, +(D) Balance Stock Value,(D) Saldo Lager Värde, +(E) Balance Stock Value in Queue,(E) Saldo Lager Värde i Kö, +(F) Change in Stock Value,(F) Förändring i Lager Värde, +(G) Sum of Change in Stock Value,(G) Summan av Förändring i Lager Värde, +(H) Change in Stock Value (FIFO Queue),(H) Förändring av Lager Värde (FIFO), +(H) Valuation Rate,(H) Grund Pris, +(I) Valuation Rate,(I) Grund Pris, +(J) Valuation Rate as per FIFO,(J) Grund Pris enligt FIFO, +(K) Valuation = Value (D) ÷ Qty (A),(K) Värdering = Värde (D) ÷ Kvantitet (A), +", with the inventory {0}: {1}",", med inventering {0}: {1}", +0-30 Days,0-30 Dagar, +3 Yearly,Var Tredje År, +30-60 Days,30-60 Dagar, +60-90 Days,60 - 90 Dagar, +90 Above,90+ Dagar, +"
+

Note

+
    +
  • +You can use Jinja tags in Subject and Body fields for dynamic values. +
  • + All fields in this doctype are available under the doc object and all fields for the customer to whom the mail will go to is available under the customer object. +
+

Examples

+ +
    +
  • Subject:

    Statement Of Accounts for {{ customer.customer_name }}

  • +
  • Body:

    +
    Hello {{ customer.customer_name }},
    PFA your Statement Of Accounts from {{ doc.from_date }} to {{ doc.to_date }}.
  • +
+","
+

Observera

+
    +
  • +Du kan använda Jinja Taggar i Ämne och Huvudtext-fält för dynamiska värden. +
  • + Alla fält i denna doctype är tillgängliga under doc-objekt och alla fält för kund som e-post meddelande går till är tillgängliga under customer-objekt. +
+

Exempel

+ +
    +
  • Ämne:

    Konto besked för {{ customer.customer_name }}

  • +
  • Huvudtext:

    +
    Hej {{ customer.customer_name }},
    Kontoutdrag från {{ doc.from_date }} till {{ doc.to_date }}.
    +
+", +"
Other Details
","
Övriga Detaljer
", +"
No Matching Bank Transactions Found
","
Inga avstämda Bank Transaktioner hittades
", +"
+

All dimensions in centimeter only

+
","
+

Alla mått endast i centimeter

+
", +"

About Product Bundle

+ +

Aggregate group of Items into another Item. This is useful if you are bundling a certain Items into a package and you maintain stock of the packed Items and not the aggregate Item.

+

The package Item will have Is Stock Item as No and Is Sales Item as Yes.

+

Example:

+

If you are selling Laptops and Backpacks separately and have a special price if the customer buys both, then the Laptop + Backpack will be a new Product Bundle Item.

","

Om Artikel Paket

+ +

Paketera grupp av artiklar till annan Artikel. Det är användbart om man paketerar vissa Artiklar i paket och har lager av packade Artiklar och inte paketarad Artikel.Artikel kommer att ha Artikel. Är Lagerar Artikel som Nej och Är Försäljning Artikel som Ja.

+

Exempel:

+

Om man säljer bärbara datorer och ryggsäckar separat och har specialpris om kunder köper båda, så kommer det att vara bärbar dator + ryggsäck som paket artikel.", +"

Currency Exchange Settings Help

+

There are 3 variables that could be used within the endpoint, result key and in values of the parameter.

+

Exchange rate between {from_currency} and {to_currency} on {transaction_date} is fetched by the API.

+

Example: If your endpoint is exchange.com/2021-08-01, then, you will have to input exchange.com/{transaction_date}

","

Valutaväxling Inställningar Hjälp

+

Det finns 3 variabler som kan användas av slutpunkt, resultat nyckel och i parameter värde.

+

Växelkurs mellan {from_currency} och {to_currency} {transaction_date} hämtas av API.

+

Exempel: Om slutpunkt är exchange.com/2021-08-01 måste du ange exchange.com/{transaction_date}

", +"

Body Text and Closing Text Example

+ +
We have noticed that you have not yet paid invoice {{sales_invoice}} for {{frappe.db.get_value(""Currency"", currency, ""symbol"")}} {{outstanding_amount}}. This is a friendly reminder that the invoice was due on {{due_date}}. Please pay the amount due immediately to avoid any further dunning cost.
+ +

How to get fieldnames

+ +

The fieldnames you can use in your template are the fields in the document. You can find out the fields of any documents via Setup > Customize Form View and selecting the document type (e.g. Sales Invoice)

+ +

Templating

+ +

Templates are compiled using the Jinja Templating Language. To learn more about Jinja, read this documentation.

","

Huvudtext och exempel på Avslutande Text

+ +
Vi har märkt att ni ännu inte har betalat faktura {{sales_invoice}} för {{frappe.db.get_value(""Currency"", currency, ""symbol"")}} {{outstanding_amount}}. Detta är en vänlig påminnelse om att fakturan var förfallen {{due_date}}. Vänligen betala förfallen belopp omedelbart för att undvika ytterligare kostnader.
+ +

Hur får man fältnamn

+ +

Fältnamn man kan använda i mall är fält i dokument. Du kan ta reda på fält namn för alla dokument via Inställningar > Anpassa formulärvy och välj dokument typ (t.ex. Försäljning Faktura)

+ +

Mall

+ +

Mallar kompileras med Jinja Templating Language. Om du vill veta mer om Jinja läs denna dokumentation.

", +"

Contract Template Example

+ +
Contract for Customer {{ party_name }}
+
+-Valid From : {{ start_date }} 
+-Valid To : {{ end_date }}
+
+ +

How to get fieldnames

+ +

The field names you can use in your Contract Template are the fields in the Contract for which you are creating the template. You can find out the fields of any documents via Setup > Customize Form View and selecting the document type (e.g. Contract)

+ +

Templating

+ +

Templates are compiled using the Jinja Templating Language. To learn more about Jinja, read this documentation.

","

Exempel på Avtal Mall

+ +
Avtal för Kund {{ party_name }}
+
+-Giltigt från: {{ start_date }}
+-Gäller till: {{ end_date }}
+
+ +

Hur får man fältnamn

+ +

Fältnamn du kan använda i avtal mall är fält i avtal som du skapar mallen för. Du kan ta reda på fält namn för alla dokument via Inställningar > Anpassa formulärvy och välj dokument typ (t.ex. Avtal)

+ +

Mall

+ +

Mallar kompileras med Jinja Templating Language. Om du vill veta mer om Jinja läser du den här dokumentationen.

", +"

Standard Terms and Conditions Example

+ +
Delivery Terms for Order number {{ name }}
+
+-Order Date : {{ transaction_date }} 
+-Expected Delivery Date : {{ delivery_date }}
+
+ +

How to get fieldnames

+ +

The fieldnames you can use in your email template are the fields in the document from which you are sending the email. You can find out the fields of any documents via Setup > Customize Form View and selecting the document type (e.g. Sales Invoice)

+ +

Templating

+ +

Templates are compiled using the Jinja Templating Language. To learn more about Jinja, read this documentation.

","

Exempel på Standard Villkor

+ +
Leverans Villkor för Order Nummer {{ name }}
+
+-Order Datum: {{ transaction_date }}
+-Förväntat Leverans Datum: {{ delivery_date }}
+
+ +

Hur hämtas fältnamn

+ +

Fältnamn som kan användas i E-post Mall är fält i Dokument som man skickar E-post meddelande från. Man kan ta reda på fält namn för alla dokument via Inställning > Anpassa Formulär Vy och välja Dokument Typ (t.ex. Försäljning Faktura)

+ +

Skriva Mallar

+ +

Mallar kompileras med Jinja Mall Språk. Läs mer om Jinja dokumentation:

", +"
Or
","
Eller
", +"","", +"","", +"","", +"

In your Email Template, you can use the following special variables: +

+
    +
  • + {{ update_password_link }}: A link where your supplier can set a new password to log into your portal. +
  • +
  • + {{ portal_link }}: A link to this RFQ in your supplier portal. +
  • +
  • + {{ supplier_name }}: The company name of your supplier. +
  • +
  • + {{ contact.salutation }} {{ contact.last_name }}: The contact person of your supplier. +
  • + {{ user_fullname }}: Your full name. +
  • +
+

+

Apart from these, you can access all values in this RFQ, like {{ message_for_supplier }} or {{ terms }}.

","

I E-post Mall kan följande specialvariabler användas: +

+
    +
  • + {{ update_password_link }} : Länk där leverantör kan ange nytt lösenord för att logga in på leverantör portal. +
  • +
  • + {{ portal_link }}: Länk till offert begäran på leverantör portal. +
  • +
  • + {{ supplier_name }}: Leverantör namn. +
  • +
  • + {{ contact.salutation }} {{ contact.last_name }}: Kontakt person för leverantör. +
  • +
  • + {{ user_fullname } }: Användarens fullständiga namn. +
  • +
+

+

+

Förutom dessa kan man komma åt alla värden i offert begäran, som {{ message_for_supplier }} eller {{ terms }}.

", +"
Message Example
+ +<p> Thank You for being a part of {{ doc.company }}! We hope you are enjoying the service.</p> + +<p> Please find enclosed the E Bill statement. The outstanding amount is {{ doc.grand_total }}.</p> + +<p> We don't want you to be spending time running around in order to pay for your Bill.
After all, life is beautiful and the time you have in hand should be spent to enjoy it!
So here are our little ways to help you get more time for life! </p> + +<a href=""{{ payment_url }}""> click here to pay </a> + +
+","
Meddelande Exempel
+ +<p> Tack för att ni är en del av {{ doc.company }}! Vi hoppas att ni gillar tjänst.</p> + +<p> Vänligen se bifogat E-faktura. Utestående belopp är {{ doc.grand_total }}.</p> + +<p> Vi vill inte att ni ska spendera tid med att springa runt för att betala faktura.
Livet är trots allt vackert och den tid man har bör spenderas för att njuta av livet!
Så här är våra små sätt att hjälpa er att få mer tid för livet! < /p> + +<a href=""{{ payment_url }}""> klicka här för att betala </a> + +
+", +"
Message Example
+ +<p>Dear {{ doc.contact_person }},</p> + +<p>Requesting payment for {{ doc.doctype }}, {{ doc.name }} for {{ doc.grand_total }}.</p> + +<a href=""{{ payment_url }}""> click here to pay </a> + +
+","
Meddelande Exempel
+ +<p>Hej {{ doc.contact_person }},</p> + +<p>Begär betalning för {{ doc.doctype }}, {{ doc.name }} för {{ doc.grand_total }}.</p> + +<a href=""{{ payment_url }}""> klicka här för att betala </a> + +
+", +"Masters & Reports","Inställningar & Rapporter", +"Quick Access","Genvägar", +"Reports & Masters","Rapporter & Inställningar", +"Reports & Masters","Rapporter & Inställningar", +"Settings","Inställningar", +"Shortcuts","Genvägar", +"Your Shortcuts + + + + + + ","Genvägar + + + + + + ", +"Your Shortcuts","Genvägar", +Grand Total: {0},Totalt: {0}, +Outstanding Amount: {0},Utestående belopp: {0}, +" + + + + + + + + + + + + + + + + + +
Child DocumentNon Child Document
+

To access parent document field use parent.fieldname and to access child table document field use doc.fieldname

+ +
+

To access document field use doc.fieldname

+
+

Example: parent.doctype == ""Stock Entry"" and doc.item_code == ""Test""

+ +
+

Example: doc.doctype == ""Stock Entry"" and doc.purpose == ""Manufacture""

+
+ + + + + + +"," + + Underordnad Dokument + Överordnad Dokument + + + + + +

För att komma åt överordnad dokument fält använd parent.fieldname och för att komma åt underordnad dokument fält använd doc.fieldname

+ + + +

För att komma åt dokument fält använd doc.fieldname

+ + + + +

Exampel: parent.doctype == ""Stock Entry"" and doc.item_code == ""Test""

+ + + +

Exampel: doc.doctype == ""Stock Entry"" and doc.purpose == ""Produktion""

+ + + + + + + + + + + +", +A Holiday List can be added to exclude counting these days for the Workstation.,Helg Lista kan läggas till för att utesluta dessa dagar för Arbetsstation., +A Packing Slip can only be created for Draft Delivery Note.,Packsedel kan endast skapas för utkast till Försäljning Följesedel., +"A Price List is a collection of Item Prices either Selling, Buying, or both","Prislista är samling av artikel priser som antingen säljs, köpes eller båda", +A Reconciliation Job {0} is running for the same filters. Cannot reconcile now,Avstämning jobb {0} körs för samma filter. Kan inte stämma av nu, +A Transaction Deletion Document: {0} is triggered for {0},Transaktion Borttagning jobb utlöst för {0} , +A customer must have primary contact email.,Kund måste ha primär kontakt e-post adress., +A driver must be set to submit.,Förare måste anges för att godkänna., +A template with tax category {0} already exists. Only one template is allowed with each tax category,Mall med moms kategori {0} finns redan. Endast en mall är tillåten med varje moms kategori, +API Details,API Detaljer, +AWB Number,AWB Nummer, +Abbreviation: {0} must appear only once,Förkortning: {0} får endast visas en gång, +About Us Settings,Om Oss Inställningar, +About {0} minute remaining,Cirka {0} minut kvar, +About {0} minutes remaining,Cirka {0} minuter kvar, +About {0} seconds remaining,Cirka {0} sekunder kvar, +Acceptance Criteria Formula,Acceptans Kriterier Formel , +Acceptance Criteria Value,Acceptans Kriterier Värde, +Accepted Qty in Stock UOM,Godkänd Kvantitet (per Lager Enhet), +Access Key,Åtkomst Nyckel, +Access Key is required for Service Provider: {0},Åtkomst Nyckel erfordras för Tjänsteleverantör: {0}, +Account Balance (From),Konto Saldo (Från), +Account Balance (To),Konto Saldo (Till), +Account Closing Balance,Konto Stängning Saldo, +Account Currency (From),Konto Valuta (Från), +Account Currency (To),Konto Valuta (Till), +Account Opening Balance,Öppning Saldo, +Account not Found,Konto ej funnen, +Account {0} added multiple times,Konto {0} har lagts till flera gånger, +Accounting Dimension Filter,Bokföring Dimension Filter, +Accounting Dimensions Filter,Bokföring Dimension Filter, +Accounting Entry for {0},Bokföring Post för {0}, +Accounts Closing,Bokföring Låsning, +Accounts Missing Error,Konton Saknas Fel, +Accounts Receivable/Payable,Fordringar/Skulder, +Accounts to Merge,Konton som ska Slås Samman, +Action If Quality Inspection Is Rejected,Åtgärd om Kvalitet Kontroll är Avvisad, +Action If Same Rate is Not Maintained,Åtgärd om Marginal inte Bibehålls, +Action if Same Rate is Not Maintained Throughout Sales Cycle,Åtgärd om samma Pris inte bibehålls under Försäljning, +Active Status,Aktiv Status, +Actual Balance Qty,Faktiskt Saldo Kvantitet, +Actual Expense,Faktisk Kostnad, +Actual Posting,Faktisk Postning, +Actual Qty in Warehouse,Faktisk Kvantitet på Lager, +Actual Time,Verklig Tid, +Add Columns in Transaction Currency,Lägg till kolumner i Transaktion Valuta, +Add Corrective Operation Cost in Finished Good Valuation,Lägg till Korrigerande Driftkostnad i Färdig Artikel, +Add Discount,Lägg till Rabatt, +Add Items in the Purpose Table,Lägg till Artiklar i Syfte Tabell, +Add Lead to Prospect,Lägg till Potentiell Kund till Prospekt, +Add Local Holidays,Lägg till Lokal Helgdag, +Add Manually,Lägg till Manuellt, +Add Or Deduct,Lägg till eller Dra av, +Add Serial / Batch Bundle,Lägg till Serie / Parti Paket, +Add Serial / Batch No,Lägg till Serie/Parti Nummer, +Add Serial / Batch No (Rejected Qty),Lägg till Serie/Parti Nummer (Avvisad Kvantitet), +Add Stock,Lägg till Lager, +Add Sub Assembly,Lägg till Delmontering, +Add Template,Lägg till Mall, +Add a Note,Lägg till Notering, +Add details,Lägg till Detaljer, +Add to Prospect,Lägg till Prospekt, +Added By,Lagt till Av, +Added On,Tillagd, +Added Supplier Role to User {0}.,Lade till Leverantör Roll till Användare {0}., +Added {1} Role to User {0}.,Lade till {1} roll till användare {0}., +Adding Lead to Prospect...,Lägger till Potentiell Kund..., +Additional,Extra, +Additional Asset Cost,Extra Tillgång Kostnad, +Additional Cost Per Qty,Extra Kostnad per Kvantitet, +Additional Info,Extra Information, +Address And Contacts,Adress & Kontakter, +Adjust Asset Value,Justera Tillgång Värde, +Adjustment Against,Justering Mot, +Adjustment based on Purchase Invoice rate,Justering Baserad på Inköp Faktura Pris, +Advance Account: {0} must be in either customer billing currency: {1} or Company default currency: {2},Förskott Konto: {0} måste vara antingen i kundens fakturering valuta: {1} eller bolag standard valuta: {2}, +Advance Payment,Förskott Betalning, +Advance Tax,Förskott Moms, +Advance Taxes and Charges,Förskott Moms och Avgifter, +Advance paid against {0} {1} cannot be greater than Grand Total {2},Förskott Betalning mot {0} {1} kan inte vara större än Totalt Belopp {2}, +Advance payments allocated against orders will only be fetched,Förskott betalningar allokerade mot order kommer att hämtas, +Affected Transactions,Berörda Transaktioner, +Against Customer Order {0},Mot Kund Order {0}, +Against Supplier Invoice {0},Mot Leverantör Faktura {0}, +Against Voucher No,Mot Verifikat Nummer, +Age ({0}),Ålder ({0}), +Ageing Range,Åldring Intervall, +Agent Busy Message,Agent Upptaget Meddelande, +Agent Group,Agent Grupp, +Agent Unavailable Message,Agent Otillgänglig Meddelande, +Aggregate a group of Items into another Item. This is useful if you are maintaining the stock of the packed items and not the bundled item,Paketera flera Artiklar till ett annat Artikel. Användbart om lager baseras på packade artiklar och inte ingående artiklar, +Algorithm,Algoritm, +All Activities,Alla Aktivitet, +All Activities HTML,Alla Aktivitet HTML, +All Items,Alla Artiklar, +All Sales Transactions can be tagged against multiple Sales Persons so that you can set and monitor targets.,Alla försäljning transaktioner kan taggas mot flera säljare för att ange och övervaka mål., +All allocations have been successfully reconciled,Alla tilldelningar är avstämda, +All items have already been received,Alla Artiklar är redan mottagna, +All items in this document already have a linked Quality Inspection.,Alla Artiklar i detta dokument har redan länkad Kvalitet Kontroll., +All the Comments and Emails will be copied from one document to another newly created document(Lead -> Opportunity -> Quotation) throughout the CRM documents.,Alla kommentarer och E-post meddelande kommer att kopieras från ett dokument till ett annat nyskapad dokument (Potentiell Kund -> Möjlighet -> Försäljning Offert) genom hela Säljstöd process., +"All the required items (raw materials) will be fetched from BOM and populated in this table. Here you can also change the Source Warehouse for any item. And during the production, you can track transferred raw materials from this table.",Alla nödvändiga artiklar (råmaterial) kommer att hämtas från stycklista och läggs till denna tabell. Här kan du också ändra hämtlager för valfri artikel. Och under produktion kan du spåra överförd råmaterial från denna tabell., +Allocate Payment Request,Tilldela Betalning Begäran, +Allocated Entries,Tilldelade Poster, +Allocated To:,Tilldelad Till:, +Allocations,Tilldelningar, +Allow,Tillåt, +Allow Alternative Item must be checked on Item {},Tillåt Alternativ Artikel måste vara vald för Artikel {}, +Allow Continuous Material Consumption,Tillåt Kontinuerlig Material Förbrukning, +Allow Excess Material Transfer,Tillåt Överflödig Material Överföring, +Allow Internal Transfers at Arm's Length Price,Tillåt Interna Överföringar till Marknad Pris, +Allow Item to be Added Multiple Times in a Transaction,Tillåt att Artikel läggs till flera gånger i Transaktion, +Allow Lead Duplication based on Emails,Tillåt Potentiella Kunder Duplicering baserat på E-post Meddelande, +Allow Negative rates for Items,Tillåt Negativa Priser för Artiklar, +Allow Or Restrict Dimension,Tillåt eller Begränsa Dimension, +Allow Partial Reservation,Tillåt Partiell Reservation, +Allow Purchase,Tillåt Inköp, +Allow Sales,Tillåt Försäljning, +Allow Sales Order Creation For Expired Quotation,Tillåt att Försäljning Order skapas för Förfallen Försäljning Offert, +Allow User to Edit Discount,Tillåt Användare att Redigera Rabatt, +Allow User to Edit Rate,Tillåt Användare att Redigera Pris, +Allow Zero Rate,Tillåt Noll Pris, +Allow material consumptions without immediately manufacturing finished goods against a Work Order,Tillåt Material Förbrukning utan att omedelbart producera färdiga artiklar mot Arbetsorder, +Allow multi-currency invoices against single party account ,Tillåt Fler Valuta Fakturor mot Parti Konto, +Allow to Edit Stock UOM Qty for Purchase Documents,Tillåt att redigera Lager Enhet Kvantitet för Inköp Dokument, +Allow to Edit Stock UOM Qty for Sales Documents,Tillåt att redigera Lager Enhet Kvantitet för Försäljning Dokument, +Allow transferring raw materials even after the Required Quantity is fulfilled,Tillåt överföring av råmaterial även efter att Erfordrad Kvantitet är uppfylld, +Allowed,Tillåten, +Allowed Dimension,Tillåten Dimension, +Allowed Doctypes,Tillåtna Dokument, +Allowed Items,Tillåtna Artiklar, +Allowed primary roles are 'Customer' and 'Supplier'. Please select one of these roles only.,Tillåtna primära roller är 'Kund' och 'Leverantör'. Välj endast en av dessa roller., +Allows to keep aside a specific quantity of inventory for a particular order.,Tillåter reservation av specifierad artikel kvantitet för angiven order., +Already Picked,Redan Plockad, +Alternative Items,Alternativa Artiklar, +"Alternatively, you can download the template and fill your data in.",Alternativt kan du ladda ner mall och fylla i dina uppgifter., +Amount (AED),Belopp (AED), +Amount Eligible for Commission,Provision Belopp, +Amount in Account Currency,Belopp i Konto Valuta, +Amount in party's bank account currency,Belopp i partens Bank Konto Valuta, +Amount in transaction currency,Belopp i transaktion valuta, +An Item Group is a way to classify items based on types.,Artikel grupp är ett sätt att klassificera artiklar baserat på typer., +An error has been appeared while reposting item valuation via {0},Fel har uppstått vid ompostering av artikel värdering via {0}, +An error has occurred during {0}. Check {1} for more details,Fel har uppstått under {0}. Kontrollera {1} för mer information,Error Log +Annual Revenue,Årlig Omsätning, +"Another Cost Center Allocation record {0} applicable from {1}, hence this allocation will be applicable upto {2}","Annan Resultat Enhet Tilldelning Post {0} är tillämplig från {1}, därför kommer denna tilldelning att gälla upp till {2}", +"Any one of following filters required: warehouse, Item Code, Item Group","Något av följande filter erfordras: Lager, Artikelkod, Artikelgrupp", +Applicable Dimension,Tillämpad Dimension, +Applicable On Account,Tillämplig På Konto, +Applied on each reading.,Tillämpas vid varje läsning., +Applied putaway rules.,Tillämpad Läggundan Regler, +Apply Putaway Rule,Tillämpa Lägg Undan Regel, +Apply Recursion Over (As Per Transaction UOM),Tillämpa Rekursion Över (per Transaktion Enhet), +Apply SLA for Resolution Time,Tillämpa Service Nivå Avtal för Resolution Tid, +Apply TDS,Tillämpa TDS, +Apply Tax Withholding Amount ,Tillämpa Moms Avdrag Belopp, +Apply restriction on dimension values,Tillämpa begränsning på dimension värde, +Apply to All Inventory Documents,Tillämpa på Alla Lager Dokument, +Apply to Document,Tillämpa på Dokument, +Appointment Created Successfully,Möte Bokad!, +Appointment Scheduling Disabled,Bokning av Möten Inaktiverad, +Appointment Scheduling has been disabled for this site,Bokning av Möten är Inaktiverad för denna Webbplats, +Appointment was created. But no lead was found. Please check the email to confirm,Möte Skapad. Men inget Poteentiel Kund hittades. Kontrollera e-post meddelande för att bekräfta, +Approximately match the description/party name against parties,Ungefärlig avstämning av beskrivning/partinamn mot parti, +Are you sure you want to clear all demo data?,Är du säker på att du vill ta bort alla demodata?, +Are you sure you want to delete this Item?,Är du säker på att du vill ta bort detta Artikel?, +Are you sure you want to restart this subscription?,Är du säker på att du vill starta om denna prenumeration?, +As on Date,Som den, +"As there are existing submitted transactions against item {0}, you can not change the value of {1}.",Eftersom det finns befintliga godkäAda transaktioner mot artikel {0} kan man inte ändra värdet på {1}., +"As there are negative stock, you can not enable {0}.",Eftersom det finns negativ lager kan du inte aktivera {0}., +"As there are reserved stock, you cannot disable {0}.",Eftersom det finns reserverat lager kan du inte inaktivera {0}., +"As there are sufficient Sub Assembly Items, Work Order is not required for Warehouse {0}.",Eftersom det finns tillräckligt med Undermontering Artiklar erfordras inte Arbetsorder för Lager {0}., +"As {0} is enabled, you can not enable {1}.",Eftersom {0} är aktiverad kan du inte aktivera {1}., +Assembly Items,Montering Artiklar, +Asset Activity,Tillgång Aktivitet, +Asset Capitalization,Tillgång Bokning, +Asset Capitalization Asset Item,Tillgång Bokning Tillgång Post, +Asset Capitalization Service Item,Tillgång Bokning Service Post, +Asset Capitalization Stock Item,Tillgång Bokning Lager Post, +Asset Depreciation Details,Tillgång Avskrivning Detaljer, +Asset Depreciation Schedule,Tillgång Avskrivning Schema, +Asset Depreciation Schedule for Asset {0} and Finance Book {1} is not using shift based depreciation,Tillgång Avskrivning Schema för Tillgång {0} och Finans Register {1} använder inte skift baserad avskrivning, +Asset Depreciation Schedule not found for Asset {0} and Finance Book {1},Tillgång Avskrivning Schema finns inte för Tillgång {0} och Finans Register {1}, +Asset Depreciation Schedule {0} for Asset {1} already exists.,Tillgång Avskrivning Schema {0} för Tillgång {1} finns redan., +Asset Depreciation Schedule {0} for Asset {1} and Finance Book {2} already exists.,Tillgång Avskrivning Schema {0} för Tillgång {1} och Finans Register {2} finns redan., +"Asset Depreciation Schedules created:
{0}

Please check, edit if needed, and submit the Asset.",Tillgång Avskrivning Schema skapades:
{0}

Kontrollera och Godkänn Tillgång., +Asset ID,Tillgång ID, +Asset Quantity,Tillgång Antal, +Asset Repair Consumed Item,Tillgång Bokning Förbrukad Post, +Asset Settings,Tillgång Inställningar, +Asset Shift Allocation,Tillgång Skift Tilldelning, +Asset Shift Factor,Tillgång Förskjutning Faktor, +Asset Shift Factor {0} is set as default currently. Please change it first.,Tillgång Förskjutning Faktor {0} är för närvarande angiven som standard. Vänligen ändra det först., +Asset cancelled,Tillgång Annullerad, +Asset capitalized after Asset Capitalization {0} was submitted,Tillgång kapitaliserad efter att Tillgång Kapitalisering {0} godkändes , +Asset created,Tillgång Skapad, +Asset created after Asset Capitalization {0} was submitted,Tillgång skapad efter att Tillgång Kapitalisering {0} godkändes, +Asset created after being split from Asset {0},Tillgång skapad efter att ha delats från Tillgång {0}, +Asset decapitalized after Asset Capitalization {0} was submitted,Tillgång avkapitaliserad efter att Tillgång Kapitalisering {0} godkändes, +Asset deleted,Tillgång Borttagen, +Asset issued to Employee {0},Tillgång utfärdad till Personal {0}, +Asset out of order due to Asset Repair {0},Tillgång ur funktion på grund av reparation av Tillgång {0}, +Asset received at Location {0} and issued to Employee {1},Tillgång mottagen på plats {0} och utfärdad till Personal {1}, +Asset restored,Tillgång återställd, +Asset restored after Asset Capitalization {0} was cancelled,Tillgång återställd efter att Tillgång Kapitalisering {0} annullerats, +Asset returned,Tillgång återlämnad, +Asset scrapped,Tillgång skrotad, +Asset sold,Tillgång Såld, +Asset submitted,Tillgång Godkänd, +Asset transferred to Location {0},Tillgång överförd till Plats {0}, +Asset updated after being split into Asset {0},Tillgång uppdaterad efter att ha delats upp i Tillgång {0}, +Asset updated after cancellation of Asset Repair {0},Tillgång uppdaterad efter annullering av Tillgång Reparation {0}, +Asset updated after completion of Asset Repair {0},Tillgång uppdaterad efter slutförande av Tillgång Reparation {0}, +Asset {0} cannot be received at a location and given to an employee in a single movement,Tillgång {0} kan inte tas emot på plats och ges till Personal i en enda rörelse, +Asset {0} does not belong to Item {1},Tillgång {0} tillhör inte Post {1}, +Asset {0} does not exist,Tillgång {0} finns inte, +Asset {0} has been created. Please set the depreciation details if any and submit it.,Tillgång {0} skapad. Ange avskrivning detaljer och godkänn den., +Asset {0} has been updated. Please set the depreciation details if any and submit it.,Tillgång {0} uppdaterad. Ange avskrivning detaljer och godkänn den., +Asset's depreciation schedule updated after Asset Shift Allocation {0},Tillgång Avskrivning Schema uppdaterad efter Tillgång Förskjutning Tilldelning {0}, +Asset's value adjusted after cancellation of Asset Value Adjustment {0},Tillgång Värde Justerat efter annullering av Tillgång Värde Justering {0}, +Asset's value adjusted after submission of Asset Value Adjustment {0},Tillgångens Värde Justerat efter godkänade av Tillgång Värde Justering {0}, +Assign Job to Employee,Tilldela jobb till Personal, +Assignment,Tilldelning, +Assignment Conditions,Tilldelning Villkor, +At Row #{0}: The picked quantity {1} for the item {2} is greater than available stock {3} for the batch {4} in the warehouse {5}.,På rad #{0}: Plockad kvantitet {1} för artikel {2} är större än tillgänglig kvantitet {3} för parti {4} i lager {5}., +At Row #{0}: The picked quantity {1} for the item {2} is greater than available stock {3} in the warehouse {4}.,På rad #{0}: Plockad kvantitet {1} för artikel {2} är större än tillgänglig kvantitet {3} i lager {4}., +At row {0}: Batch No is mandatory for Item {1},Rad {0}: Parti Nummer erfordras för Artikel {1}, +At row {0}: Parent Row No cannot be set for item {1},Rad {0}: Överordnad rad nummer kan inte anges för artikel {1}, +At row {0}: Qty is mandatory for the batch {1},Rad {0}: Kvantitet erfordras för Artikel {1}, +At row {0}: Serial No is mandatory for Item {1},Rad {0}: Serie Nummer erfordras för Artikel {1}, +At row {0}: Serial and Batch Bundle {1} has already created. Please remove the values from the serial no or batch no fields.,Rad {0}: Serie och Parti Paket {1} år redan skapad. Ta bort värde från serienummer eller parti nummer fält., +At row {0}: set Parent Row No for item {1},Rad {0}: ange överordnad rad nummer för artikel {1}, +Attach CSV File,Bifoga CSV Fil, +Attendance & Leaves,Närvaro & Ledighet, +Attribute value: {0} must appear only once,Egenskap Värde: {0} får endast visas en gång, +Auto Create Exchange Rate Revaluation,Automatiskt Skapa Valuta Växling Kurs Omvärdering, +Auto Create Purchase Receipt,Automatiskt Skapa Inköp Följesedel, +Auto Create Serial and Batch Bundle For Outward,Automatiskt Skapa Serie Nummer och Parti Paket för Försäljning, +Auto Create Subcontracting Order, Automatiskt Skapa Underleverantör Order, +Auto Created Serial and Batch Bundle,Automatiskt Skapad Serie och Parti Paket, +Auto Creation of Contact,Automatiskt Skapa Kontakt, +Auto Email Report,Automatiskt E-post Rapport, +Auto Insert Item Price If Missing,Automatiskt Infoga Artikel Pris om det saknas, +Auto Name,Automatiskt, +Auto Reconcile,Automatiskt Avstämning, +Auto Reconcile Payments,Automatisk Betalning Avstämning, +Auto Reconciliation,Automatisk Avstämning, +Auto Reconciliation of Payments has been disabled. Enable it through {0},Automatisk Avstämning av Betalningar har inaktiverats. Aktivera genom {0}, +Auto Reserve Serial and Batch Nos,Automatisk Reservera Serie och Parti Nummer, +Auto Reserve Stock for Sales Order on Purchase,Automatisk Reservera Lager för Försäljning Order vid Inköp, +Auto close Opportunity Replied after the no. of days mentioned above,Automatiskt Stäng Besvarad Möjlighet efter ovan angivet antal dagar, +Auto match and set the Party in Bank Transactions,Automatiskt avstäm och ange Parti i Bank Transaktioner, +Auto write off precision loss while consolidation,Automatisk Avskrivning Precision av Förlust under Konsolidering, +Automatically Add Filtered Item To Cart,Automatiskt Lägg till Filtrerad Artikel till Kundkorg, +Automatically Fetch Payment Terms from Order,Automatikt Hämta Betalning Villkor från Order, +Automatically post balancing accounting entry,Automatiskt skapa balans bokföring post, +Available Batch Report,Tillgänglig Parti Rapport, +Available Qty For Consumption,Tillgänglig Kvantitet för Förbrukning, +Available Qty at Company,Tillgänglig Kvantitet, +Available Qty at Target Warehouse,Tillgänglig Kvantitet på Till Lager, +Available Qty to Reserve,Tillgängligt Kvantitet att Reservera, +Average Completion,Genomsnittlig Slutförande, +Avg Rate,Genomsnittlig Pris, +Avg Rate (Balance Stock),Genomsnittlig Pris (Lager Saldo), +BIN Qty,Lager Kvantitet, +BOM Created,Stycklista Skapad, +BOM Creator,Stycklista Generator, +BOM Creator Item,Stycklista Generator Post, +BOM Info,Stycklista Information, +BOM Level,Stycklista Nivå, +BOM Tree,Stycklista Träd, +BOM UoM,Stycklista Enhet, +BOM Update Batch,Stycklista Uppdatera Parti , +BOM Update Initiated,Stycklista Uppdatering Initierad, +BOM Update Log,Stycklista Uppdatering Logg, +BOM Update Tool Log with job status maintained,Stycklista Uppdatering Verktyg Logg med jobb status upprätthållen, +BOM Updation already in progress. Please wait until {0} is complete.,Stycklista Uppdatering pågår. Vänta tills {0} är klar., +BOM Updation is queued and may take a few minutes. Check {0} for progress.,Stycklista Uppdatering i kö och kan ta några minuter. Kontrollera {0} för framsteg., +BOM and Production,Stycklista & Produktion, +BOM recursion: {1} cannot be parent or child of {0},Stycklista Rekursion: {1} kan inte vara överordnad eller underordnad till {0}, +BOMs Updated,Stycklista Uppdaterad, +BOMs created successfully,Stycklista Skapad, +BOMs creation failed,Stycklista Skapande Misslyckades, +"BOMs creation has been enqueued, kindly check the status after some time",Skapandet av Stycklistor i Kö. Vänligen kontrollera status efter en tid, +Balance Qty (Stock),Saldo Kvantitet (Lager), +Balance Sheet Summary,Balans Rapport Översikt, +Balance Stock Value,Saldo Lager Värde, +Bank Reconciliation Tool,Bank Avstämning Verktyg, +Bank Statement Import,Bank Avstämning Import, +Bank Transaction {0} Matched,Bank Transaktion {0} avstämd, +Bank Transaction {0} added as Journal Entry,Bank Transaktion {0} har lagts till som Journal Post, +Bank Transaction {0} added as Payment Entry,Bank Transaktion {0} har lagts till som Betalning Post, +Bank Transaction {0} is already fully reconciled,Bank Transaktion {0} är redan helt avstämd, +Bank Transaction {0} updated,Bank Transaktion {0} uppdaterad, +Bank/Cash Account,Bank / Kassa Konto, +Bank/Cash Account {0} doesn't belong to company {1},Bank / Kassa Konto {0} tillhör inte bolag {1}, +Base Amount,Bas Belopp, +Base Cost Per Unit,Bas Kostnad per Enhet, +Base Rate,Bas Pris, +Base Tax Withholding Net Total,Bas Netto Totalt Ex Moms , +Base Total,Bas Totalt, +Base Total Billable Amount,Bas Totalt Fakturerbar Belopp, +Base Total Billed Amount,Bas Totalt Fakturerad Belopp, +Base Total Costing Amount,Bas Totalt Kostnad Belopp, +Based On Value,Baserad på Värde, +"Based on your HR Policy, select your leave allocation period's end date",Baserat på din Personal Princip välj slutdatum för din ledighet tilldelning, +"Based on your HR Policy, select your leave allocation period's start date",Baserat på din Personal Princip väljstart datum för ledighet period, +Batch Expiry Date,Parti Förfallodatum, +Batch No is mandatory,Parti Nummer erfordras, +Batch No {0} does not exists,Parti Nummer {0} finns inte, +Batch No {0} is linked with Item {1} which has serial no. Please scan serial no instead.,Parti Nummer {0} är länkat till Artikel {1} som har serie nummer. Skanna serie nummer istället., +Batch No.,Parti Nummer, +Batch Nos,Parti Nummer, +Batch Nos are created successfully,Parti Nummer Skapade, +Batch Not Available for Return,Parti Ej Tillgänglig för Retur, +Batch Qty,Parti Kvantitet, +Batch and Serial No,Parti och Serie Nummer, +Batch not created for item {} since it does not have a batch series.,Parti är inte skapad för Artikel {} eftersom den inte har Parti Nummer., +Batch {0} and Warehouse,Parti {0} och Lager, +Batch {0} is not available in warehouse {1},Parti {0} är inte tillgängligt i lager {1}, +Batchwise Valuation,Värdering per Parti, +Beginning of the current subscription period,Början av aktuell prenumeration period, +Below Subscription Plans are of different currency to the party default billing currency/Company currency: {0},Nedan Prenumeration Planer är i annan valuta än Parti standard valuta/bolag valuta: {0}, +Bill for Rejected Quantity in Purchase Invoice,Faktura för Avvisad Kvantitet i Inköp Faktura, +Billed Items To Be Received,Fakturerade Artiklar att Ta Emot, +"Billed, Received & Returned","Fakturerad,Mottagen & Returnerad", +Billing Address Details,Faktura Adress Detaljer, +Billing Interval in Subscription Plan must be Month to follow calendar months,Fakturering Intervall i Prenumeration Plan måste vara Månad för att följa kalender månader, +Bisect Accounting Statements,Halvera Bokföring Rapporter, +Bisect Left,Bisekt Vänster, +Bisect Nodes,Halvera Noder, +Bisect Right,Halvera Höger, +Bisecting From,Halvera Från, +Bisecting Left ...,Halverar Vänster..., +Bisecting Right ...,Halverar Höger..., +Bisecting To,Halverar Till, +Blanket Order Allowance (%),Blankoavtal Order Tillåtelse (%), +Bom No,Stycklista Nummer, +Book Advance Payments as Liability option is chosen. Paid From account changed from {0} to {1}.,Bokför Förskott Betalningar eftersom Skuld alternativ är vald. Betald från konto har ändrats från {0} till {1}., +Book Advance Payments in Separate Party Account,Bokför Förskott Betalningar på Separat Konto, +Book Tax Loss on Early Payment Discount,Bokför Moms Bortfall vid Tidig Betalning Rabatt, +Book an appointment,Boka Möte, +Booking stock value across multiple accounts will make it harder to track stock and account value.,Bokföring av Lager Värde på flera Konto gör det svårare att spåra lager och konto värde., +Books have been closed till the period ending on {0},Bokföring är låst till {0}, +Both Payable Account: {0} and Advance Account: {1} must be of same currency for company: {2},Både Skuld Konto: {0} och Förskott Konto: {1} måste vara i samma valuta för bolag: {2}, +Both Receivable Account: {0} and Advance Account: {1} must be of same currency for company: {2},Både Fordring Konto: {0} och Förskott Konto: {1} måste vara i samma valuta för bolag: {2}, +Both {0} Account: {1} and Advance Account: {2} must be of same currency for company: {3},Både {0} Konto: {1} och Förskott Konto: {2} måste vara i samma valuta för bolag: {3}, +Budget Exceeded,Budget Överskriden, +Buildable Qty,Producerbart Kvantitet, +Bulk Transaction Log,Mass Transaktion Logg, +Bulk Transaction Log Detail,Mass Transaktion Logg Detaljer, +Bulk Update,Mass Uppdatera, +Bundle Items,Paketera Artiklar, +Buying & Selling Settings,Inköp & Försäljning Inställningar, +Buying and Selling,Inköp & Försäljning, +"By default, the Supplier Name is set as per the Supplier Name entered. If you want Suppliers to be named by a Naming Series choose the 'Naming Series' option.","Som standard är leverantör namn satt enligt angiven Leverantörs Namn. Om man vill att leverantörer ska namnges av Nummer Serie Välj 'Nummer Serie'", +Bypass credit check at Sales Order,Ignorera Kredit Kontroll vid Försäljning Order, +COGS By Item Group,Kostnad för Sålda Artiklar Efter Artikel Grupp, +COGS Debit,Kostnad för Sålda Artiklar Debet, +CRM Note,Säljstöd Anteckning, +CRM Settings,Säljstöd Inställningar, +Calculate Product Bundle Price based on Child Items' Rates,Beräkna Artikel Paket Pris baserat på Underordnade Artiklar priser, +Calculate daily depreciation using total days in depreciation period,Beräkna daglig avskrivning med hjälp av totalt antal dagar i avskrivningsperiod, +Call Again,Ring Igen, +Call Ended,Samtal Avslutad, +Call Handling Schedule,Samtal Hantering Schema, +Call Received By,Samtal Mottagen Av, +Call Receiving Device,Samtal Mottagning Enhet, +Call Routing,Samtal Dirigering, +Call Schedule Row {0}: To time slot should always be ahead of From time slot.,Samtal Schema Rad {0}: Till tid bör alltid ligga före Från tid., +Call Type,Samtal Typ, +Callback,Återuppringning, +Campaign Item,Kampanj Artikel, +Can not close Work Order. Since {0} Job Cards are in Work In Progress state.,"Kan inte stänga Arbetsorder, eftersom {0} Jobbkort har Arbete pågår status.", +"Can not filter based on Child Account, if grouped by Account","Kan inte filtrera baserat på Underordnad Konto, om grupperat efter konto", +"Can't change the valuation method, as there are transactions against some items which do not have its own valuation method","Kan inte ändra värdering sätt, eftersom det finns transaktioner mot vissa artiklar som inte har egen värdering sätt", +Can't disable batch wise valuation for active batches.,Kan inte inaktivera partivis värdering för aktiva partier., +Can't disable batch wise valuation for items with FIFO valuation method.,Kan inte inaktivera partivis värdering för artiklar med FIFO värdering metod., +Cannot Merge,Kan inte Slå Samman, +Cannot Resubmit Ledger entries for vouchers in Closed fiscal year.,Kan inte godkänna om Register Poster för verifikationer under stängt Bokföringsår., +"Cannot amend {0} {1}, please create a new one instead.","Kan inte ändra {0} {1}, skapa ny istället.", +Cannot apply TDS against multiple parties in one entry,Kan inte tillämpa TDS mot flera parter i en post, +Cannot cancel as processing of cancelled documents is pending.,Kan inte avbryta eftersom behandling av annullerade dokument väntar., +Cannot cancel the transaction. Reposting of item valuation on submission is not completed yet.,Kan inte annullera transaktion. Ompostering av artikel värdering vid godkännande är inte klar ännu., +Cannot change Reference Document Type.,Kan inte ändra Referens Dokument Typ, +Cannot complete task {0} as its dependant task {1} are not completed / cancelled.,Kan inte slutföra uppgift {0} eftersom dess beroende uppgift {1} inte har slutförts/avbrutits., +Cannot convert Task to non-group because the following child Tasks exist: {0}.,Kan inte konvertera uppgift till ej grupp eftersom följande underordnade uppgifter finns: {0}., +Cannot convert to Group because Account Type is selected.,Kan inte konvertera till Grupp eftersom Konto Typ är vald., +Cannot create Stock Reservation Entries for future dated Purchase Receipts.,Kan inte skapa Lager Reservation Poster för framtid daterade Inköp Följesedlar., +Cannot create a pick list for Sales Order {0} because it has reserved stock. Please unreserve the stock in order to create a pick list.,Kan inte skapa plocklista för Försäljning Order {0} eftersom den har reserverad lager. Vänligen avboka lager för att skapa plocklista., +Cannot create accounting entries against disabled accounts: {0},Kan inte skapa bokföring poster mot inaktiverade konto: {0}, +Cannot disable batch wise valuation for FIFO valuation method.,Kan inte inaktivera partivis värdering för FIFO värdering metod., +Cannot enqueue multi docs for one company. {0} is already queued/running for company: {1},Kan inte ställa flera dokument i kö för ett bolag. {0} är redan i kö/körs för bolag: {1}, +Cannot find a default warehouse for item {0}. Please set one in the Item Master or in Stock Settings.,Kan inte hitta standardlager för artikel {0}. Ange det i Artikelinställningar eller i Lagerinställningar., +Cannot make any transactions until the deletion job is completed,Kan inte skapa transaktioner förrän borttagning jobb är slutfört, +Cannot produce more item for {0},Kan inte producera fler artiklar för {0}, +Cannot produce more than {0} items for {1},Kan inte producera mer än {0} artiklar för {1}, +Cannot receive from customer against negative outstanding,Kan inte ta emot från kund mot negativt utestående, +Cannot retrieve link token for update. Check Error Log for more information,Kan inte hämta länk token för uppdatering Kontrollera Fellogg för mer information, +Cannot retrieve link token. Check Error Log for more information,Kan inte hämta länk token. Se fellogg för mer information, +Cannot {0} from {2} without any negative outstanding invoice,Kan inte {0} från {2} utan någon negativ utestående faktura, +Capacity (Stock UOM),Kapacitet (Lager Enhet), +Capacity in Stock UOM,Kapacitet i Lager Enhet, +Capacity must be greater than 0,Kapacitet måste vara högre än 0, +Capitalization,Kapitalisering, +Capitalization Method,Kaptitalisering Sätt, +Capitalize Asset,Kapitalisera Tillgång, +Capitalize Repair Cost,Kapitalisera Reparation Kostnad, +Capitalized,Kapitaliserad, +Carrier,Transportör, +Carrier Service,Transportör Service, +Carry Forward Communication and Comments,Vidarebefordra E-post och Kommentarer, +Category Details,Kategori Detaljer, +Caution: This might alter frozen accounts.,Varning: Detta kan ändra låsta konto., +Change in Stock Value,Förändring i Lager Värde, +Changed customer name to '{}' as '{}' already exists.,Ändrade kund namn till '{}' eftersom '{}' redan finns., +Changes,Ändringar, +Charge of type 'Actual' in row {0} cannot be included in Item Rate or Paid Amount,"Debitering av typ ""Verklig"" i rad {0} kan inte inkluderas i Artikel Pris eller Betald Belopp", +Chart Of Accounts,Kontoplan, +Checked On,Kontrollerad, +Checking this will round off the tax amount to the nearest integer,Om vald avrundas moms belopp till närmaste heltal, +Cheques and Deposits Incorrectly cleared,Checkar och Depositioner felaktigt avstämda, +Choose a WIP composite asset,Välj pågående arbete Sammansatt Tillgång, +Clear Demo Data,Tar Bort Demo Data... , +Clear Notifications,Rensa Noteringar, +Clearing Demo Data...,Tar Bort Demo Data..., +Click on 'Get Finished Goods for Manufacture' to fetch the items from the above Sales Orders. Items only for which a BOM is present will be fetched.,"Klicka på ""Hämta Färdiga Artiklar för Produktion"" för att hämta artiklar från ovanstående Försäljning Ordrar. Endast artiklar för vilka det finns stycklista kommer att hämtas.", +Click on Add to Holidays. This will populate the holidays table with all the dates that fall on the selected weekly off. Repeat the process for populating the dates for all your weekly holidays,Klicka på 'Lägg till Helgdagar'. Detta kommer att fylla helg tabell med alla datum som infaller på valda veckovis ledighet. Upprepa processen för att fylla i datum för alla helgdagar, +Click on Get Sales Orders to fetch sales orders based on the above filters.,Klicka på 'Hämta Försäljning Order' för att hämta Försäljning Ordrar baserade på ovanstående filter., +Click to add email / phone,Klicka på att lägga till e-post / telefon, +Close Replied Opportunity After Days,Stäng Besvarad Möjlighet Efter Dagar, +Closed Work Order can not be stopped or Re-opened,Stängd Arbetsorder kan inte stoppas eller öppnas igen, +Closing,Stänger, +Closing Balance as per Bank Statement,Stängning Saldo enligt Bank, +Closing Balance as per ERP, Stängning Saldo enligt System, +Closing Stock Balance,Stängning Lager Saldo, +Columns are not according to template. Please compare the uploaded file with standard template,Kolumner är inte enligt mall. Jämför uppladdad fil med standardmall, +Communication Channel,Kommunikation Kanal, +Company Address Display,Bolag Adress Visning, +Company Billing Address,Bolag Faktura Adress, +Company Details,Bolag Detaljer, +Company Shipping Address,Bolag Leverans Adress, +Company Tax ID,Org.Nr., +Company and Posting Date is mandatory,Bolag och Bokföring Datum erfordras, +Company is mandatory,Bolag Erfordras, +Company is mandatory for generating an invoice. Please set a default company in Global Defaults.,Bolag erfordras för att skapa faktura. Ange standard bolag i Standard Inställningar., +Company which internal customer represents,Bolag som intern kund representerar, +Company which internal customer represents.,Bolag som intern kund representerar., +Company which internal supplier represents,Bolag som intern leverantör representerar, +Company {0} is added more than once,Bolag{0} har lagts till mer än en gång, +Company {} does not exist yet. Taxes setup aborted.,Bolag {} finns inte ännu. Moms inställning avbröts., +Company {} does not match with POS Profile Company {},Bolag {} stämmer inte med Kassa Profil Bolag {}, +Competitor,Konkurrent, +Competitor Detail,Konkurrent Detaljer, +Competitor Name,Konkurrent Namn, +Competitors,Konkurrenter, +Complete Job,Slutför Jobb, +Complete Order,Slutför Order, +Completed On,Slutförd, +Completed On cannot be greater than Today,Klar datum kan inte vara senare än idag, +Completed Tasks,Antal Klara Uppgifter, +Completed Time,Klar Tid, +Completion Date can not be before Failure Date. Please adjust the dates accordingly.,Slutförande datum kan inte vara före fel datum. Justera datum därefter., +Conditional Rule,Villkor Regel, +Conditional Rule Examples,Villkor Regel Exempel, +Configure Product Assembly,Konfigurera Artikel Produktion, +Configure the action to stop the transaction or just warn if the same rate is not maintained.,Konfigurera åtgärd att stoppa transaktion eller varna om Marginal inte bibehålls., +Connections,Anslutningar, +Consider Entire Party Ledger Amount,Inkludera Hela Partibok Belopp, +Consider Minimum Order Qty,Inkludera Minimum Order Kvantitet, +Consider Rejected Warehouses,Inkludera Avvisad Lager , +Considered In Paid Amount,Moms Inkluderad i Betald Belopp, +Consolidate Sales Order Items,Konsolidera Försäljning Order Artiklar, +Consolidate Sub Assembly Items,Konsolidera Delmontering Artiklar, +Consumed Asset Items is mandatory for Decapitalization,Förbrukade Tillgång Artiklar erfordras för Dekapitalisering, +Consumed Asset Total Value,Förbrukad Tillgång Totalt Värde, +Consumed Assets,Förbrukade Tillgångar, +Consumed Quantity,Förbrukad Kvantitet, +Consumed Stock Items,Förbrukade Lager Artiklar, +Consumed Stock Items or Consumed Asset Items are mandatory for creating new composite asset,Förbrukade Lager Artiklar eller Förbrukade Tillgång Artiklar erfordras för att skapa ny sammansatt tillgång, +"Consumed Stock Items, Consumed Asset Items or Consumed Service Items is mandatory for Capitalization","Förbrukade Lager Artiklar, Förbrukade Tillgång Artiklar eller Förbrukade Service Artiklar erfordras för Kapitalisering", +Consumed Stock Total Value,Förbrukad Lager Totalt Värde, +Consumption Rate,Förbrukning Värde, +Contact Details,Kontakt Uppgifter, +Contact Mobile,Kontakt Mobil, +Contact Us Settings,Kontakta Oss Inställningar, +Contacts,Kontakter, +Contract Template Help,Avtal Mall Hjälp, +Contribution Qty,Bidrag Kvantitet, +Control Historical Stock Transactions,Kontroll Tidigare Lager Transaktioner, +Conversion factor for item {0} has been reset to 1.0 as the uom {1} is same as stock uom {2}.,"Konvertering faktor för artikel {0} är återställd till 1,0 eftersom enhet {1} är samma som lager enhet {2}.", +Convert Item Description to Clean HTML in Transactions,Konvertera Artikel Beskrivning till ren HTML i Transaktioner, +Convert to Group,Konvertera till Grupp,Warehouse +Convert to Item Based Reposting,Konvertera till Artikel Baserad Ompostering, +Convert to Ledger,Konvertera till Register,Warehouse +Core,System, +Corrective Job Card,Korrigerande Jobbkort, +Corrective Operation,Korrigerande Åtgärd, +Corrective Operation Cost,Korrigerande Åtgärd Kostnad, +Cost Center Allocation,Resultat Enhet Tilldelning, +Cost Center Allocation Percentage,Resultat Enhet Procentuell Tilldelning , +Cost Center Allocation Percentages,Resultat Enhet Procentuell Tilldelning, +Cost Center For Item with Item Code {0} has been Changed to {1},Resultat Enhet för Artikel med Artikelkod {0} har ändrats till {1}, +"Cost Center is a part of Cost Center Allocation, hence cannot be converted to a group",Resultat Enhet är del av Resultat Enhet Tilldelning och kan därför inte konverteras till grupp, +Cost Center with Allocation records can not be converted to a group,Resultat Enhet med tilldelning poster kan inte konverteras till grupp, +Cost Center {0} cannot be used for allocation as it is used as main cost center in other allocation record.,Resultat Enhet {0} kan inte användas för tilldelning eftersom det används som Huvud Resultat Enhet i annan tilldelning post., +Cost Center {} doesn't belong to Company {},Resultat Enhet {} tillhör inte bolag {}, +Cost Center {} is a group cost center and group cost centers cannot be used in transactions,Resultat Enhet {} är Grupp Resultat Enhet och Grupp Resultat Enhet kan inte användas i transaktioner, +Cost Configuration,Kostnad Inställning, +Cost Per Unit,Kostnad Per Enhet, +Cost of New Capitalized Asset,Kostnad för ny Kapitaliserad Tillgång, +Cost of Poor Quality Report,Kostand för Dålig Kvalitet Rapport, +Cost to Company (CTC),Totalt Kostnad per År, +Costing Details,Kostnad Detaljer, +Could Not Delete Demo Data,Kunde inte ta bort demodata, +Could not auto update shifts. Shift with shift factor {0} needed.,Kunde inte uppdatera förskjutning automatiskt. Förskjutning med förskjutning faktor {0} behövs., +Could not detect the Company for updating Bank Accounts,Kunde inte identifiera bolag för uppdatering av Bank Konto, +Could not find path for ,Kunde inte hitta sökväg för, +Count,Antal, +Create Depreciation Entry,Skapa Avskrivning Post, +Create Employee records.,Skapa Personal Uppgifter, +Create Grouped Asset,Skapa Grupperad Tillgång, +Create Job Card based on Batch Size,Skapa Jobbkort baserad på Parti Storlek, +Create Journal Entries,Skapa Journal Poster, +Create Ledger Entries for Change Amount,Skapa Register Poster för Växel Belopp, +Create Link,Skapa Länk, +Create Multi-level BOM,Skapa Flernivå Stycklista, +Create New Customer,Skapa Ny Kund, +Create Opportunity,Skapa Möjlighet, +Create Prospect,Skapa Prospekt, +Create Reposting Entries,Skapa Ompostering Poster, +Create Reposting Entry,Skapa Ompostering Post, +Create Stock Entry,Skapa Lager Post, +Create Workstation,Skapa Arbetsplats, +Create a new composite asset,Skapa ny Sammansatt Tillgång, +Create a variant with the template image.,Skapa variant med Mall Bild., +Create in Draft Status,Skapa i Utkast Status, +Create {0} {1} ?,Skapa {0} {1} ?, +Created On,Skapad, +Created {0} scorecards for {1} between:,Skapade {0} Resultatkort för {1} mellan:, +Creating Delivery Note ...,Skapar Försäljning Följesedel ..., +Creating Journal Entries...,Skapar Journal Poster..., +Creating Packing Slip ...,Skapar Packsedel ..., +Creating Purchase Invoices ...,Skapar Inköp Ordrar ..., +Creating Purchase Receipt ...,Skapar Inköp Följesedel ..., +Creating Sales Invoices ...,Skapa Försäljning Fakturor ..., +Creating Stock Entry,Skapar Lager Post...., +Creating Subcontracting Order ...,Skapar Underleverantör Order ..., +Creating Subcontracting Receipt ...,Skapar Underleverantör Följesedel ..., +Creating User...,Skapar Användare..., +Creation,Skapande, +Creation of {1}(s) successful,Skapande av {1}(s) klar, +"Creation of {0} failed. + Check Bulk Transaction Log","Skapande av {0} misslyckad. + Kontrollera Mass Transaktion Logg", +"Creation of {0} partially successful. + Check Bulk Transaction Log","Skapande av {0} delvis klar. + Kontrollera Mass Transaktion Logg", +Credit (Transaction),Kredit (Transaktion), +Credit Amount in Transaction Currency,Kredit Belopp i Transaktion Valuta, +Credit Limit Crossed,Kredit Gräns Överskriden, +Credit Limit Settings,Kredit Gräns Inställningar, +"Credit Note will update it's own outstanding amount, even if ""Return Against"" is specified.","Kredit Nota kommer att uppdatera sitt eget utestående belopp, även om ""Retur Mot"" anges.", +Currency Exchange Settings Details,Valuta Växling Inställning Detaljer, +Currency Exchange Settings Result,Valuta Växling Inställning Resultat, +Current Asset,Aktuell Tillgång, +Current Index,Aktuellt Index, +Current Level,Aktuell Nivå, +Current Liability,Aktuell Skuld, +Current Node,Aktuell Nod, +Current Serial / Batch Bundle,Aktuell Serie / Parti Paket, +Custom,Anpassad, +Custom delimiters,Anpassade Avgränsare, +Customer ,Kund, +Customer / Item / Item Group,Kund / Artikel / Artikel Grupp, +Customer Defaults,Kund Standard, +Customer Group Item,Kund Grupp Artikel, +Customer Group: {0} does not exist,Kund Grupp: {0} finns inte, +Customer Item,Kund Artikel, +Customer Name: ,Kund Namn:, +Customer Portal Users,Portal  Användare, +Customer: ,Kund:, +Daily Time to send,Daglig Tid att Skicka, +Dashboard,Översikt Panel, +Data Based On,Data Baserad På, +Date ,Datum , +Date must be between {0} and {1},Datum måste vara mellan {0} och {1}, +Days before the current subscription period,Dagar före aktuell prenumeration period, +DeLinked,Bortkoppplad, +Deal Owner,Ansvarig, +Debit (Transaction),Debet (Transaktion), +Debit Amount in Transaction Currency,Debet Belopp i Transaktion Valuta, +"Debit Note will update it's own outstanding amount, even if ""Return Against"" is specified.","Debet Nota kommer att uppdatera sitt eget utestående belopp, även om ""Retur Mot"" anges.", +Debit-Credit Mismatch,Debet-Kredit överensstämmer ej, +Debit-Credit mismatch,Debet-Kredit överensstämmer ej, +Decapitalization,Dekapitalisering, +Decapitalized,Dekapitaliserad, +Default Advance Account,Standard Förskött Konto, +Default Advance Paid Account,Standard Förskött Skuld Konto, +Default Advance Received Account,Standard Förskött Intäkt Konto, +Default BOM not found for FG Item {0},Standard Stycklista hittades inte för Färdig Artikel {0}, +Default Discount Account,Standard Rabatt Konto, +Default In-Transit Warehouse,Standard I Transit Lager, +Default Operating Cost Account,Standard Driftskostnad Konto, +Default Payment Discount Account,Standard Rabatt Konto, +Default Provisional Account,Standard Provisorisk Konto, +Default Service Level Agreement for {0} already exists.,Standard Service Nivå Avtal för {0} finns redan., +Default Unit of Measure for Item {0} cannot be changed directly because you have already made some transaction(s) with another UOM. You need to either cancel the linked documents or create a new Item.,Standard Enhet för Artikel {0} kan inte ändras eftersom det finns några transaktion(er) med annan Enhet. Man måste antingen annullera länkade dokument eller skapa ny artikel., +Default settings for your stock-related transactions,Standard inställningar för lager relaterade transaktioner, +"Default tax templates for sales, purchase and items are created.","Standard Moms Mallar för Försäljning,Inköp och Artiklar är skapade. ", +Deferred Accounting,Uppskjuten Bokföring, +Deferred Accounting Defaults,Uppskjuten Bokföring Standard, +Deferred Revenue and Expense,Uppskjuten Intäkt och Kostnad, +Deferred accounting failed for some invoices:,Uppskjuten Bokföring misslyckades för vissa fakturor:, +Delay (In Days),Försening (I Dagar), +Delayed,Försenad, +Delayed Tasks Summary,Försenad Uppgifter Översikt, +Delete Accounting and Stock Ledger Entries on deletion of Transaction,Ta bort Bokföring och Lager Register Poster vid radering av Transaktion, +Delete Bins,Ta bort från Papperskorg, +Delete Cancelled Ledger Entries,Ta bort Annullerade Register Poster, +Delete Dimension,Ta bort Dimension, +Delete Leads and Addresses,Ta bort Prospekt och Adresser, +Delete Transactions,Ta bort Transaktioner, +Deleted Documents,Papperskorg, +Deletion in Progress!,Borttagning Pågår!, +Delimiter options,Avgränsning Alternativ, +Delivery Manager,Leverans Ansvarig, +Delivery Note Packed Item,Försäljning Följesedel Packad Artikel, +Delivery Note(s) created for the Pick List,Försäljning Följesedel skapad för Plocklista, +Delivery User,Leverans Användare, +Delivery to,Leverera Till, +Demo Company,Demo Bolag, +Demo data cleared,Demo Data Borttagen, +Dependant SLE Voucher Detail No,Beroende SLE Verifikat Detalj Nummer, +Dependent Task {0} is not a Template Task,Beroende Uppgift {0} är inte Mall Uppgift, +Deposit,Insättning, +Depreciate based on daily pro-rata,Skriv av baserat på dagliga proportioner, +Depreciate based on shifts,Skriv av baserat på förskjutningar, +Depreciation Details,Avskrivning Detaljer, +Depreciation Entry Posting Status,Avskrivning Post Bokföring Status, +Depreciation Expense Account should be an Income or Expense Account.,Kostnad Avskrivning Konto ska vara Intäkt eller Kostnad Konto., +Depreciation Posting Date cannot be before Available-for-use Date,Avskrivning Bokföring Datum kan inte vara före Tillgänglig för Användning Datum, +Depreciation Row {0}: Depreciation Posting Date cannot be before Available-for-use Date,Avskrivning Rad {0}: Avskrivning Bokföring Datum kan inte vara före Tillgänglig för Användning Datum, +Depreciation Schedule View,Avskrivning Schema Vy, +Depreciation cannot be calculated for fully depreciated assets,Avskrivning kan inte beräknas för fullt avskrivna tillgångar, +Description of Content,Beskrivning av Innehåll, +Desk User,Skrivbord Användare, +Difference In,Differens I, +Difference Posting Date,Differens Bokföring Datum, +Difference Qty,Differens Kvantitet, +Different 'Source Warehouse' and 'Target Warehouse' can be set for each row.,Olika 'Från Lager' och 'Till Lager' kan anges för varje rad., +Dimension Details,Dimension Detaljer, +Dimension Filter Help,Dimension Filter Hjälp, +Dimension-wise Accounts Balance Report,Bokföring Saldo Rapport per Dimension, +Direct Expense,Direkta Kostnader, +Disable Last Purchase Rate,Inaktivera Senaste Inköp Pris, +Disable Serial No And Batch Selector,Inaktivera Serie Nummer och Parti Väljare, +Disabled Account Selected,Inaktiverad Konto Vald, +Disabled Warehouse {0} cannot be used for this transaction.,Inaktiverad Lager {0} kan inte användas för denna transaktion., +Disabled pricing rules since this {} is an internal transfer,Inaktiverade Prissättning Regler eftersom detta {} är intern överföring, +Disabled tax included prices since this {} is an internal transfer,Inaktiverade Pris Inklusive Moms eftersom detta {} är intern överföring, +Disables auto-fetching of existing quantity,Inaktiverar automatisk hämtning av befintlig kvantitet, +Disassemble,Demontera, +Disassemble Order,Demontering Order, +Discount Account,Rabatt Konto, +Discount Date,Rabatt Datum, +Discount Settings,Rabatt Inställningar, +Discount Validity,Rabatt Giltighet , +Discount Validity Based On,Rabatt Giltighet Baserad På, +Discount of {} applied as per Payment Term,Rabatt på {} tillämpad enligt Betalning Villkor, +Discounted Amount,Rabatterad Belopp, +"Discounts to be applied in sequential ranges like buy 1 get 1, buy 2 get 2, buy 3 get 3 and so on","Rabatter som ska tillämpas i sekventiella intervall som köp 1 få 1, köp 2 få 2, köp 3 få 3 och så vidare", +Discrepancy between General and Payment Ledger,Avvikelse mellan Bökföring Register och Betalning Register, +Dispatch Address,Leverans Adress, +Dispatch Address Name,Leverans Adress Namn, +Distinct Item and Warehouse,Distinkt Artikel och Lager, +Distribute Additional Costs Based On ,Fördela Extra Kostnader Baserat På, +Distribute Manually,Fördela Manuellt, +Do Not Explode,Utvidga Ej, +Do Not Update Serial / Batch on Creation of Auto Bundle,Uppdatera inte Serie / Parti vid skapande av Automatiskt Paket, +Do Not Use Batch-wise Valuation,Använd inte partivis värdering, +Do reposting for each Stock Transaction,Skapa ompostering för varje Lager Transaktion, +Do you still want to enable negative inventory?,Vill du fortfarande aktivera negativ Lager?, +DocField,DocType Fält, +DocTypes should not be added manually to the 'Excluded DocTypes' table. You are only allowed to remove entries from it.,"DocTypes ska inte läggas till manuellt i ""Excluded DocTypes"" tabell . Man får bara ta bort poster från den.", +Document Type already used as a dimension,Dokument Typ används redan som dimension, +Documents,Dokument , +Documents: {0} have deferred revenue/expense enabled for them. Cannot repost.,Dokument: {0} har uppskjutna intäkter/kostnader aktiverat för dem. Kan inte posta om., +Domain Settings,Domän Inställningar, +Don't Reserve Sales Order Qty on Sales Return,Reservera inte Försäljning Order Kvantitet vid Försäljning Retur, +Don't Send Emails,Skicka inte E-post, +Dont Recompute tax,Räkna inte om Moms, +Download Backups,Säkerhetskopior, +Download CSV Template,Ladda ner CSV Mall, +Download Materials Request Plan,Ladda ner Material Begäran Plan, +Download Materials Request Plan Section,Ladda ner Material Begäran Plan Sektion, +Dunning Amount (Company Currency),Påminnelse Avgift (Bolag Valuta), +Dunning Level,Påminnelse Nivå, +Duplicate Closing Stock Balance,Kopiera Stängning Lager Saldo, +Duplicate Customer Group,Kopiera Kund Grupp, +Duplicate Finance Book,Kopiera Finans Register, +Duplicate Item Group,Kopiera Artikel Grupp, +Duplicate POS Invoices found,Kopiera Kassa Fakturor , +Dynamic Condition,Dynamiska Villkor, +Edit Capacity,Redigera Kapacitet, +Edit Cart,Ändra Kundkorg, +Edit Full Form,Öppna i Full Formulär, +Edit Note,Redigera Anteckning, +Editing {0} is not allowed as per POS Profile settings,Ej Tillåtet att Redigera {0} pga Kassa Profil Inställningar, +Either 'Selling' or 'Buying' must be selected,"""Inköp"" eller ""Försäljning"" måste väljas", +Email / Notifications,E-post / Aviseringar, +Email Address (required),E-post Adress (erfordras), +"Email Address must be unique, it is already used in {0}","E-post Adress måste vara unik, den används redan i {0}", +Email Digest Recipient,E-post Utskick Mottagare, +Email Digest: {0},E-post Utskick: {0}, +Email Domain,E-post Domän, +Email or Phone/Mobile of the Contact are mandatory to continue.,E-post eller Telefon / Mobil för Kontakt erfordras för att fortsätta., +Email verification failed.,E-post verifiering misslyckades., +Employee User Id,Användare ID, +Enable Allow Partial Reservation in the Stock Settings to reserve partial stock.,Aktivera Tillåt Partiell Reservation i Lager Inställningar för att reservera partiell lager., +Enable Automatic Party Matching,Aktivera Automatiskt Parti Avstämning, +Enable Common Party Accounting,Aktivera Gemensam Parti Bokföring, +Enable Discount Accounting for Selling,Aktivera Rabatt Bokföring för Försäljning, +Enable Fuzzy Matching,Aktivera Ungefärlig Avstämning, +Enable Health Monitor,Aktivera System Övervakning, +Enable Immutable Ledger,Aktivera Oförenderlig Bokföring, +Enable Provisional Accounting For Non Stock Items,Aktivera Provisorisk Bokföring för ej Lager Artiklar, +Enable Stock Reservation,Aktivera Lager Reservation, +Enable it if users want to consider rejected materials to dispatch.,Aktivera om användare vill inkludera att avvisat material ska skickas., +Enable this checkbox even if you want to set the zero priority,Aktivera denna kryssruta även om nollprioritet ska anges, +"Enable this option to calculate daily depreciation by considering the total number of days in the entire depreciation period, (including leap years) while using daily pro-rata based depreciation",Aktivera detta alternativ för att beräkna daglig avskrivning genom att använda totalt antal dagar i hela avskrivningsperiod (inklusive skottår) vid användning av proportionell baserad avskrivning, +Enable to apply SLA on every {0},Aktivera för att tillämpa Service Nivå Avtal på varje {0}, +Enabling this ensures each Purchase Invoice has a unique value in Supplier Invoice No. field within a particular fiscal year,Aktivera för att säkerställa att varje Inköp Faktura har unikt värde i fält Leverantör Faktura Nummer fält per bokföring år, +Enabling this option will allow you to record -

1. Advances Received in a Liability Account instead of the Asset Account

2. Advances Paid in an Asset Account instead of the Liability Account,Aktivera för att möjliggöra bokföring av:

1. Mottagna Förskott Betalningar bokförs på Skuld Konto istället för Tillgång Konto

2. Betalade Förskott Betalningar bokförs på Tillgång Konto istället för Skuld Konto, +Enabling this will allow creation of multi-currency invoices against single party account in company currency,Aktivera för att tillåta skapande av fakturor i flera valutor mot enskilt konto i bolag valuta, +Enabling this will change the way how cancelled transactions are handled.,Aktivering av detta ändrar hur avbrutna transaktioner hanteras., +End Transit,Avsluta Transit, +End of the current subscription period,Slut datum på aktuell prenumeration period, +"Enter First and Last name of Employee, based on Which Full Name will be updated. IN transactions, it will be Full Name which will be fetched.","Ange För och Efternamn på Personal, baserat på vilket Fullständigt namn kommer att uppdateras. Vid transaktioner kommer det att vara Fullständigt namn som kommer att hämtas.", +Enter Manually,Ange Manuellt, +Enter Serial Nos,Ange Serie Nummer, +Enter Visit Details,Ange Besök Detaljer, +Enter a name for Routing.,Ange namn för Åtgärd Följd., +"Enter a name for the Operation, for example, Cutting.","Ange namn för Åtgärd, till exempel Skärning.", +Enter a name for this Holiday List.,Ange namn för denna Helg Lista., +"Enter an Item Code, the name will be auto-filled the same as Item Code on clicking inside the Item Name field.","Ange Artikel Kod, namn kommer att automatiskt hämtas på samma sätt som Artikel Kod när man klickar i Artikel Namn fält .", +Enter each serial no in a new line,Ange varje Serie Nummer på ny rad, +"Enter the Operation, the table will fetch the Operation details like Hourly Rate, Workstation automatically. + + After that, set the Operation Time in minutes and the table will calculate the Operation Costs based on the Hourly Rate and Operation Time.","Ange Åtgärd, detaljer hämtas automatiskt som timpris, arbetsstation . + + Efteråt, anges Åtgärd tid i minuter och system beräknar Åtgärd Kostnad baserat på timpris och tid.", +Enter the opening stock units.,Ange Öppning Lager Enheter., +Enter the quantity of the Item that will be manufactured from this Bill of Materials.,Ange kvantitet för Artikel som ska produceras från denna Stycklista., +Enter the quantity to manufacture. Raw material Items will be fetched only when this is set.,Ange kvantitet som ska produceras. Råmaterial Artiklar hämtas endast när detta är angivet., +Error during caller information update,Fel uppstod under uppdatering av samtalsinformation, +Error while posting depreciation entries,Fel uppstod vid bokföring av avskrivning poster, +Error while processing deferred accounting for {0},Fel uppstod när uppskjuten bokföring för {0} bearbetades, +Error while reposting item valuation,Fel uppstod vid ombokning av artikel värdering , +"Error: This asset already has {0} depreciation periods booked. + The `depreciation start` date must be at least {1} periods after the `available for use` date. + Please correct the dates accordingly.","Fel: Denna tillgång har redan {0} avskrivning perioder bokade. + Start datum för ""avskrivning"" måste vara minst {1} perioder efter ""tillgänglig för användning"" datum. + Korrigera datum enligt detta.", +Errors Notification,Fel Avisering, +Even invoices with apply tax withholding unchecked will be considered for checking cumulative threshold breach,Även fakturor med tillämpa moms undanhållning omarkerad kommer att betraktas för att kontrollera kumulativ tröskel överträdelse, +Example URL,Exempel URL, +Example of a linked document: {0},Exempel på länkad dokument: {0}, +"Example: ABCD.##### +If series is set and Serial No is not mentioned in transactions, then automatic serial number will be created based on this series. If you always want to explicitly mention Serial Nos for this item. leave this blank.","Exempel:. ABCD ##### Om serie är angiven och Serie Nummer inte anges i transaktioner, skapas Serie Nummer automatiskt utifrån denna serie. Om man alltid vill ange serie nummer för denna artikel lämna det tomt.", +Example: Serial No {0} reserved in {1}.,Exempel: Serie Nummer {0} reserverad i {1}., +Excess Materials Consumed,Överskott Material Förbrukad, +Excess Transfer,Överskott Överföring, +Exchange Gain Or Loss,Valutaväxling Resultat, +Exchange Gain/Loss amount has been booked through {0},Valutaväxling Resultat Belopp har bokförts genom {0}, +Exchange Rate Revaluation Settings,Valutaväxling Kurs Omvärdering Inställningar, +Excluded DocTypes,Exkluderade DocTyper, +Exempt Supplies,Undantagna Leveranser, +Expected,Förväntad, +Expected Balance Qty,Förväntad Saldo Kvantitet, +Expected End Date should be less than or equal to parent task's Expected End Date {0}.,Förväntat Slut Datum ska vara tidigare än eller lika med Överordnade Uppgifters förväntade Slut Datum {0}., +Expected Stock Value,Förväntad Lager Värde, +Expected Time Required (In Mins),Förväntad Tid (I Minuter), +Expiry,BESTFÖRE, +Export Data,Data Export, +Export Errored Rows,Exportera Felaktiga Rader, +Export Import Log,Exportera Import Logg, +Extra Consumed Qty,Extra Förbrukad Kvantitet, +Extra Job Card Quantity,Extra Jobbkort Kvantitet, +FIFO Queue vs Qty After Transaction Comparison,FIFO Kö mot Kvantitet Efter Transaktion Jämförelse, +"FIFO Stock Queue (qty, rate)","FIFO Lager Kö (kvantitet, pris)", +FIFO/LIFO Queue,FIFO / LIFO Kö, +Failed Entries,Misslyckade Poster, +"Failed to erase demo data, please delete the demo company manually.","Misslyckades att ta bort demodata, vänligen radera demo bolag manuellt.", +Failed to post depreciation entries,Kunde inte bokföra avskrivning poster, +Failed to setup defaults for country {0}. Please contact support.,Misslyckades att ange standard inställningar för {0}. Kontakta support., +Failure,Fel, +Failure Description,Fel Beskrivning, +Fetch Based On,Hämta Baserad På, +Fetch Overdue Payments,Hämta Förfallna Fakturor, +Fetch Timesheet,Hämta Tidrapport, +Fetch Value From,Hämta Värde Från, +Fetching exchange rates ...,Hämtar växel kurs ..., +Filter by Reference Date,Filtrera efter Referens Datum, +Filter on Invoice,Filtrera Faktura, +Filter on Payment,Filtrera Betalning, +Filters missing,Filter saknas, +Final Product,Färdig Artikel, +Financial Ratios,Finansiell Nyckeltal, +Financial Reports,Rapporter, +Financial Year Begins On,Bokföringsår Start Datum, +Financial reports will be generated using GL Entry doctypes (should be enabled if Period Closing Voucher is not posted for all years sequentially or missing) ,Finansiella Rapporter kommer att genereras med hjälp av Bokföring Poster (ska vara aktiverat om Period Låsning Verifikat inte publiceras för alla år i följd eller saknas), +Finished Good BOM,Färdig Stycklista, +Finished Good Item,Färdig Artikel, +Finished Good Item Qty,Färdig Artikel Kvantitet, +Finished Good Item Quantity,Färdig Artikel Kvantitet, +Finished Good Item is not specified for service item {0},Färdig Artikel är inte specificerad för service artikel {0}, +Finished Good Item {0} Qty can not be zero,Färdig Artikel {0} kvantitet kan inte vara noll, +Finished Good Item {0} must be a sub-contracted item,Färdig Artikel {0} måste vara underleverantör artikel, +Finished Good Qty,Färdig Artikel Kvantitet, +Finished Good Quantity ,Färdig Artikel Kvantitet, +Finished Good UOM,Färdig Artikel Enhet, +Finished Good {0} does not have a default BOM.,Färdig Artikel {0} har ingen standard Stycklista., +Finished Good {0} is disabled.,Färdig Artikel {0} är inaktiverad., +Finished Good {0} must be a stock item.,Färdig Artikel {0} måste vara lager artikel., +Finished Good {0} must be a sub-contracted item.,Färdig Artikel {0} måste vara underleverantör artikel., +Finished Goods Based Operating Cost,Färdiga Artiklar Baserade Driftskostnader, +Finished Goods Item,Färdig Artikel Post, +Finished Goods Reference,Färdig Artikel Referens, +Finished Goods Value,Färdig Artikel Värde, +Finished Goods based Operating Cost,Färdiga Artiklar Baserade Driftskostnader, +Finished Item {0} does not match with Work Order {1},Färdig Artikel {0} stämmer inte med Arbetsorder {1}, +First Response Due,Första Respons, +First Response SLA Failed by {},Första Respons Service Nivå Avtal misslyckades efter {}, +Fixed Asset Defaults,Fasta Tillgångar, +Fixed Time,Fast Tid, +Floor,Yta, +Floor Name,Yta Namn, +For Item,För Artikel, +For Item {0} cannot be received more than {1} qty against the {2} {3},För Artikel {0} kan inte tas emot mer än {1} i kvantitet mot {2} {3}, +For Job Card,För Jobbkort, +For Operation,För Åtgärd, +"For Return Invoices with Stock effect, '0' qty Items are not allowed. Following rows are affected: {0}","För Retur Fakturor med Lager påverkan, '0' kvantitet artiklar är inte tillåtna. Följande rader påverkas: {0}", +For Work Order,För Arbetsorder, +For dunning fee and interest,För påminnelseavgift och ränta, +"For item {0}, rate must be a positive number. To Allow negative rates, enable {1} in {2}","För Artikel {0} pris måste vara positiv tal. Att tillåta negativa priser, aktivera {1} i {2}", +For quantity {0} should not be greater than allowed quantity {1},För Kvantitet {0} ska inte vara högre än tillåten kvantitet {1}, +"For the item {0}, the quantity should be {1} according to the BOM {2}.",För artikel {0} ska kvantitet vara {1} enligt stycklista {2}., +"For the {0}, no stock is available for the return in the warehouse {1}.",För {0} finns inget kvantitet tillgängligt för retur i lager {1}., +"For the {0}, the quantity is required to make the return entry",För {0} erfordras kvantitet för att skapa retur post, +Force-Fetch Subscription Updates,Hämta Prenumeration Uppdateringar, +Forecasting,Prognos, +Formula Based Criteria,Formel Baserade Kriterier, +Free Item Rate,Gratis Artikel Pris, +From Corrective Job Card,Från Korrigerande Jobbkort, +From Date and To Date are mandatory,Från Datum och Till Datum Erfodras, +From Date is mandatory,Från Datum Erfordras, +From Date: {0} cannot be greater than To date: {1},Från Datum: {0} kan inte vara senare än Till Datum: {1}, +From Delivery Date,Från Leverans Datum, +From Doctype,Från DocType, +From Due Date,Från Förfallo Datum, +From Opportunity,Från Möjlighet, +From Payment Date,Från Betalning Datum, +From Prospect,Från Prospekt, +From Reference Date,Från Referens Datum, +From Voucher Detail No,Från Verifikat Detalj Nummer, +From Voucher No,Från Verifikat Nummer, +From Voucher Type,Från Verifikat Typ, +From and To dates are required,Från och Till Datum Erfodras, +Full and Final Statement,Avgång Avtal, +GL Balance,Bokföring Register Saldo, +GL Entry Processing Status,Bokföring Register Bearbetning Status, +GL reposting index,Bokföring Register Ompostering Index, +Gain/Loss accumulated in foreign currency account. Accounts with '0' balance in either Base or Account currency,Resultat ackumulerad på konto i utländsk valuta. Konto med '0' saldo i antingen Bas eller Konto valuta, +Gain/Loss already booked,Resultat Bokförd, +Gain/Loss from Revaluation,Omvärdering Resultat, +General Ledger,Bokföring Register,Warehouse +General and Payment Ledger Comparison,Bokföring och Betalning Register Jämförelse, +General and Payment Ledger mismatch,Bokföring och Betalning Register Jämförelse , +Generate Closing Stock Balance,Skapa Stängning Lager Saldo, +Generate Demo Data for Exploration,Skapa Demo Data för att Utforska, +Generate E-Invoice,Skapa E-Faktura, +Generate Invoice At,Skapa Faktura , +Generated,Skapad, +Generating Preview,Skapar Förhandsvisning, +Get Allocations,Hämta Tilldelningar, +Get Customer Group Details,Hämta Kund Grupp Detaljer, +Get Finished Goods for Manufacture,Hämta Artiklar för Produktion, +Get Outstanding Orders,Hämta Utestående Ordrar, +Get Raw Materials Cost from Consumption Entry,Hämta Råmaterial Kostnad från Förbrukning Post, +Get Raw Materials for Purchase,Hämta Råmaterial för Inköp, +Get Raw Materials for Transfer,Hämta Råmaterial för Överföring, +Get Scrap Items,Hämta Rest Artiklar, +Get Stock,Hämta Lager, +Get Sub Assembly Items,Hämta Delmontering Artiklar, +Get Supplier Group Details,Hämta Leverantör Grupp Detaljer, +Get Timesheets,Hämta Tidrapporter, +Get stops from,Hämta Leverans Stopp från, +Getting Scrap Items,Hämta Rest Artiklar, +Give free item for every N quantity,Lämna gratis artikel för varje N kvantitet, +Go back,Tillbaka, +Go to {0} List,Till {0} Lista, +Goals,Mål, +Goods,Gods, +Grant Commission,Bevilja Provision, +Greeting Message,Hälsning Meddelande, +Gross Profit Percent,Brutto Resultat %, +Gross Purchase Amount Too Low: {0} cannot be depreciated over {1} cycles with a frequency of {2} depreciations.,Brutto Inköp Belopp för lågt: {0} kan inte skrivas av över {1} cykler med en frekvens på {2} avskrivningar., +Gross Purchase Amount should be equal to purchase amount of one single Asset.,Brutto Inköp Belopp ska vara lika med inköp belopp för enskild Tillgång., +Group Same Items,Sammanfoga lika Artikelrader, +Growth View,Tillväxt Vy, +Half-yearly,Halvår, +Handle Employee Advances,Hantera Personal Förskott, +Has Alternative Item,Har Alternativ Artikel, +Has Item Scanned,Har Artikel Skannad, +Has Priority,Har Prioritet, +Have Default Naming Series for Batch ID?,Har Standard Nummer Serie för Parti?, +Heatmap,Värme Karta, +Height (cm),Höjd (cm), +"Hello,","Hej,", +Helps you distribute the Budget/Target across months if you have seasonality in your business.,Hjälper vid fördelning av Budget/ Mål över månader om bolag har säsongsvariationer., +Here are the error logs for the aforementioned failed depreciation entries: {0},Här är felloggar för ovannämnda misslyckade avskrivning poster: {0}, +Here are the options to proceed:,Här är alternativ för att fortsätta:, +"Here, you can select a senior of this Employee. Based on this, Organization Chart will be populated.",Här kan du välja överordnad för Personal. Baserat på detta kommer organisation diagam att fyllas i., +"Here, your weekly offs are pre-populated based on the previous selections. You can add more rows to also add public and national holidays individually.",Här är veckovisa ledigheter angivna i förväg baserat på de tidigare val. Man kan lägga till fler rader för att även lägga till allmänna och nationella helgdagar individuellt., +"Hi,","Hej,", +Hide Images,Dölj Bilder, +Holiday Date {0} added multiple times,Helgdag {0} har lagts till flera gånger, +Hours Spent,Förbrukade Timmar, +How often should Project be updated of Total Purchase Cost ?,Hur ofta ska Projekt uppdateras baserat på Totalt Inköp Kostnad?, +Idle,Overksam, +"If Enabled - Reconciliation happens on the Advance Payment posting date
+If Disabled - Reconciliation happens on oldest of 2 Dates: Invoice Date or the Advance Payment posting date
+","Om Aktiverad - Avstämning sker på Förskott Betalning datum
+Om Inaktiverad - Avstämning sker på äldsta av 2 datum: Faktura datum eller Förskott Betalning datum
+", +"If an operation is divided into sub operations, they can be added here.",Om åtgärd är uppdelad i underåtgärder kan de läggas till här., +"If checked, Rejected Quantity will be included while making Purchase Invoice from Purchase Receipt.","Om vald, kommer avvisad kvantitet att inkluderas när Inköp Faktura skapas från Inköp Följesedel.", +"If checked, Stock will be reserved on Submit","Om vald, kommer Lager Reservation att skapas vid Godkänn", +"If checked, picked qty won't automatically be fulfilled on submit of pick list.","Om vald, kommer plockad kvantitet inte automatiskt att uppfyllas när plocklista godkänns.", +"If checked, the tax amount will be considered as already included in the Paid Amount in Payment Entry","Om vald, kommer moms belopp anses vara inkluderad i Betald Belopp i Betalning Post", +"If checked, we will create demo data for you to explore the system. This demo data can be erased later.","Om vald,kommer demo data skapas så att man kan utforska system. Dessa demo data kan raderas senare.", +If enabled then system will manufacture Sub-assembly against the Job Card (operation).,Om aktiverad kommer system att producera Underenheter mot Jobbkort (Åtgärd)., +If enabled then system won't apply the pricing rule on the delivery note which will be create from the pick list,Om aktiverat kommer systemet inte att tillämpa prisregel på följesedel som kommer att skapas från plocklista, +If enabled then system won't override the picked qty / batches / serial numbers.,Om aktiverad kommer system inte åsidosätta plockad kvantitet / partier / serie nummer., +"If enabled, a print of this document will be attached to each email","Om aktiverad, kommer utskrift av detta dokument att bifogas till varje e-post meddelande", +"If enabled, additional ledger entries will be made for discounts in a separate Discount Account","Om aktiverad, extra bokföring poster kommer att skapas för rabatter på separat rabatt konto", +"If enabled, all files attached to this document will be attached to each email","Om aktiverad, kommer alla filer som bifogas detta dokument att bifogas till varje e-post meddelande", +"If enabled, do not update serial / batch values in the stock transactions on creation of auto Serial + / Batch Bundle. ","Om aktiverad, uppdatera inte serie nummer /parti värde i lager transaktioner vid skapande av automatiskt Serie Nummer + / Parti Paket. ", +"If enabled, ledger entries will be posted for change amount in POS transactions","Om aktiverad,bokföring poster kommer att bokföras för Växel Belopp i Kassa Transaktioner", +"If enabled, the consolidated invoices will have rounded total disabled",Om aktiverad kommer Konsoliderad Faktura att ha avrundad totalt inaktiverad, +"If enabled, the item rate won't adjust to the valuation rate during internal transfers, but accounting will still use the valuation rate.","Om aktiverad, kommer artikel pris inte att sättas till grund pris vid interna överföringar, men bokföring kommer fortfarande att använda grund pris.", +"If enabled, the system will create material requests even if the stock exists in the 'Raw Materials Warehouse'.","Om aktiverad, kommer system att skapa material begäran även om det finns på 'Råmaterial Lager'.", +"If enabled, the system will use the moving average valuation method to calculate the valuation rate for the batched items and will not consider the individual batch-wise incoming rate.","aaOm aktiverad, kommer system att använda Ma värdering sätt för att beräkna värdering för artikel partier och kommer inte att beakta individuell per parti pris.", +"If enabled, then system will only validate the pricing rule and not apply automatically. User has to manually set the discount percentage / margin / free items to validate the pricing rule","Om aktiverad, kommer system bara att validera prissättning regel och inte tillämpas automatiskt. Användare måste manuellt ange rabatt procent / marginal / gratis artikel för att validera prissättning regel", +"If mentioned, the system will allow only the users with this Role to create or modify any stock transaction earlier than the latest stock transaction for a specific item and warehouse. If set as blank, it allows all users to create/edit back-dated transactions.","Om angiven kommer system att tillåta Användare med denna roll att skapa eller ändra lager transaktioner tidigare än senaste lager transaktion för specifik artikel och lager. Om angiven som tomt, tillåter det alla Användare att skapa/redigera backdaterade transaktioner.", +"If not, you can Cancel / Submit this entry",Om inte kan man Annullera/Godkänna denna post, +"If rate is zero then item will be treated as ""Free Item""","Om pris är noll kommer artikel att behandlas som ""Gratis Artikel""", +"If the BOM results in Scrap material, the Scrap Warehouse needs to be selected.",Om Stycklista har Rest Material måste Rest Lager väljas., +"If the selected BOM has Operations mentioned in it, the system will fetch all Operations from BOM, these values can be changed.","Om vald Stycklista har angivna Åtgärder kommer system att hämta alla Åtgärder från Stycklista, dessa värden kan ändras.", +"If this checkbox is enabled, then the system won’t run the MRP for the available sub-assembly items.",Om vald kommer systemet inte att köra Material Resurs Planering för tillgängliga undermontering artiklar., +If this is undesirable please cancel the corresponding Payment Entry.,Om detta inte är önskvärt annullera motsvarande betalning post., +"If yes, then this warehouse will be used to store rejected materials","Om ja, kommer detta lager att användas för att lagra avvisat material", +"If you are maintaining stock of this Item in your Inventory, ERPNext will make a stock ledger entry for each transaction of this item.","Om man har denna artikel i Lager, kommer System att lagerbokföra varje transaktion av denna artikel.", +"If you need to reconcile particular transactions against each other, then please select accordingly. If not, all the transactions will be allocated in FIFO order.","Om man behöver stämma av specifika transaktioner mot varandra, välj därefter. Om inte, kommer alla transaktioner att tilldelas i FIFO ordning.", +"If you still want to proceed, please disable 'Skip Available Sub Assembly Items' checkbox.","Om du fortfarande vill fortsätta, avmarkera ""Hoppa över tillgängliga undermontering artiklar"".", +"If you still want to proceed, please enable {0}.","För att fortsätta, aktivera {0}.", +"If your CSV uses a different delimiter, add that character here, ensuring no spaces or additional characters are included.","Om CSV använder en annan avgränsare, lägg till det tecknet här, se till att inga mellanslag eller ytterligare tecken inkluderas.", +Ignore Account Closing Balance,Ignorera Bokföring Stängning Saldo, +Ignore Available Stock,Ignorera Tillgängligt Lager, +Ignore Closing Balance,Ignorera Stängning Saldo, +Ignore Default Payment Terms Template,Ignorera Standard Betalning Villkor Mall , +Ignore Empty Stock,Ignorera Tom Lager, +Ignore Exchange Rate Revaluation Journals,Ignorera Växelkurs Omvärdering Journaler , +Ignore Pricing Rule is enabled. Cannot apply coupon code.,Ignorera att Prissättning Regel är aktiverad. Det går inte att använda kupong kod., +Ignore System Generated Credit / Debit Notes,Ignorera System Skapade Kredit / Debet Notor, +Ignore Voucher Type filter and Select Vouchers Manually,Ignorera Verifikat Typ filter och Välj Verifikat Manuellt, +Impairment,Nedskrivningar, +Import File,Importera Fil, +Import File Errors and Warnings,Importera Fil Fel och Varningar, +Import Log Preview,Importera Logg Förhandsvisning, +Import Preview,Importera Förhandsvisning, +Import Progress,Import Framsteg, +Import Type,Import Typ, +Import Using CSV file,Importera med hjälp av CSV fil, +Import Warnings,Import Varningar, +Import from Google Sheets,Importera från Google Sheets, +"Importing {0} of {1}, {2}","Importerar {0} av {1}, {2}", +In House,Intern, +In Minutes,I Minuter, +In Party Currency,I Parti Valuta, +In Transit Transfer,I Transit Överföring, +In Transit Warehouse,I Transit Lager, +In mins,I Minuter, +"In row {0} of Appointment Booking Slots: ""To Time"" must be later than ""From Time"".","På rad {0} av Möte Bokning Tider: ""Till Tid"" måste vara senare än ""Från Tid"".", +"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.","I fall att 'Använd Flernivå Stycklista' används i arbetsorder, om användare vill lägga till undermontering kostnader till färdiga artiklar utan att använda jobbkort samt rest artiklar, måste detta alternativ vara aktiverad.", +"In this section, you can define Company-wide transaction-related defaults for this Item. Eg. Default Warehouse, Default Price List, Supplier, etc.","I detta sektion kan man definiera bolagsomfattande transaktion relaterade standard inställningar för denna artikel. T.ex. Standard Lager, Standard Prislista, Leverantör, osv.", +Inactive Status,Inaktiv Status, +Include Account Currency,Inkludera Konto Valuta, +Include Closed Orders,Inkludera Stängda Ordrar, +Include Default FB Assets,Inkludera Standard Finans Register Tillgångar, +Include Disabled,Inkludera Inaktiverad, +Include Expired Batches,Inkludera Utgångna Partier, +Include Safety Stock in Required Qty Calculation,Inkludera Säkerhet Lager i Begärd Kvantitet Beräkning, +Include Timesheets in Draft Status,Inkludera Tidrapporter i Utkast Status, +Include Zero Stock Items,Inkludera artiklar ej tillgängliga i lager, +Incoming Call Handling Schedule,Inkommande Samtalshantering Schema, +Incoming Call Settings,Inkommande Samtal Inställningar, +Incoming Rate (Costing),Inköp Pris (Kostnad), +Incorrect Balance Qty After Transaction,Felaktig Saldo Kvantitet Efter Transaktion, +Incorrect Batch Consumed,Felaktig Parti Förbrukad, +Incorrect Check in (group) Warehouse for Reorder,Felaktig vald (grupp) Lager för Ombeställning, +Incorrect Component Quantity,Felaktig Komponent Kvantitet, +Incorrect Invoice,Felaktig Faktura, +Incorrect Movement Purpose,Felaktig Förflytning Syfte, +Incorrect Payment Type,Felaktig Betalning Typ, +Incorrect Reference Document (Purchase Receipt Item),Felaktig Referens Dokument (Inköp Följesedel Artikel), +Incorrect Serial No Valuation,Felaktig Serie Nummer Värdering, +Incorrect Serial Number Consumed,Felaktig Serie Nummer Förbrukad, +Incorrect Stock Value Report,Felaktig Lager Värde Rapport, +Incorrect Type of Transaction,Felaktig Typ av Transaktion, +Increase In Asset Life(Months),Utökning av Tillgång Livslängd (Månader), +Indent,Rekvisition, +Indirect Expense,Indirekt Kostnad, +Individual GL Entry cannot be cancelled.,Enskild Bokföring Post kan inte avbokas., +Individual Stock Ledger Entry cannot be cancelled.,Enskild Lager Register Post kan inte avbokas., +Initialize Summary Table,Initiera Översikt Tabell, +Insert New Records,Infoga Nya Poster, +Inspection Rejected,Kontroll Avvisad, +Inspection Submission,Kontroll Godkännande, +Instruction,Instruktion, +Insufficient Capacity,Otillräcklig Kapacitet, +Insufficient Stock for Batch,Otillräcklig Lager för Parti, +Inter Transfer Reference,Intern Överföring Referens, +Interest and/or dunning fee,Ränta och/eller Påminnelseavgift, +Internal,Intern, +Internal Customer,Intern Kund, +Internal Customer for company {0} already exists,Intern Kund för Bolag {0} finns redan, +Internal Sale or Delivery Reference missing.,Intern Försäljning eller Leverans Referens saknas., +Internal Sales Reference Missing,Intern Försäljning Referens saknas, +Internal Supplier,Intern Leverantör, +Internal Supplier for company {0} already exists,Intern Leverantör för Bolag {0} finns redan, +Internal Transfer Reference Missing,Intern Överföring Referens saknas, +Internal Transfers,Interna Överföringar, +Internal transfers can only be done in company's default currency,Interna Överföringar kan endast göras i bolag standard valuta, +Invalid,Ogiltig, +Invalid Allocated Amount,Ogiltig Tilldelad Belopp, +Invalid Amount,Ogiltig Belopp, +Invalid Auto Repeat Date,Ogiltig Återkommande Datum, +Invalid Cost Center,Ogiltig Resultat Enhet, +Invalid Delivery Date,Ogiltig Leverans Datum, +Invalid Document,Ogiltig Dokument, +Invalid Document Type,Ogiltig Dokument Typ, +Invalid Formula,Ogiltig Formel, +Invalid Group By,Ogiltig Gruppera Efter, +Invalid Item Defaults,Ogiltig Artikel Standard, +Invalid Ledger Entries,Ogiltiga Register Poster, +Invalid Primary Role,Ogiltig Primär Roll, +Invalid Priority,Ogiltig Prioritet, +Invalid Process Loss Configuration,Ogiltig Process Förlust Konfiguration, +Invalid Purchase Invoice,Ogiltig Inköp Faktura, +Invalid Qty,Ogiltig Kvantitet, +Invalid Schedule,Ogiltig Schema, +Invalid Serial and Batch Bundle,Felaktig Serie och Parti Paket, +Invalid Warehouse,Ogiltig Lager, +Invalid result key. Response:,Ogiltig resultat nyckel. Svar:, +Invalid value {0} for {1} against account {2},Ogiltigt värde {0} för {1} mot konto {2}, +Inventory Dimension,Lager Dimension, +Inventory Dimension Negative Stock,Lager Dimension Negativ Lager, +Inventory Settings,Lager Inställningar, +Invoice Cancellation,Faktura Annullering, +Invoice Limit,Faktura Gräns, +Invoice Portion (%),Faktura Andel (%), +Invoice and Billing,Faktura & Fakturering, +Invoiced Qty,Fakturerad Kvantitet, +Invoices and Payments have been Fetched and Allocated,Fakturor och Betalningar är Hämtade och Tilldelade, +Invoicing Features,Fakturering Funktioner, +Is Adjustment Entry,Är Justering Post, +Is Alternative,Är Alternativ, +Is Cash or Non Trade Discount,Är Kontant eller Ej Försäljning Rabatt, +Is Composite Asset,Är Sammansatt Tillgång, +Is Corrective Job Card,Är Korrigerande Jobbkort, +Is Corrective Operation,Är Korrigerande Åtgärd, +Is Expandable,Är Utvidningsbar, +Is Finished Item,Är Färdig Artikel, +Is Fully Depreciated,Är Helt Avskriven, +Is Group Warehouse,Är Grupp Lager, +Is Old Subcontracting Flow,Är Gammal Underleverantör Flöde, +Is Outward,Är Utgående, +Is Period Closing Voucher Entry,Är Period Stängning Verifikat Post, +Is Rate Adjustment Entry (Debit Note),Är Pris Justering Post (Debet Nota), +Is Recursive,Är Rekursiv, +Is Rejected,Är Avvisad, +Is Rejected Warehouse,Är Avvisad Lager, +Is Scrap Item,Är Rest Artikel, +Is Short Year, Är Kort År, +Is Standard,Är Standard, +Is Stock Item,Är Lager Artikel, +Is System Generated,Är System Skapad, +Is Tax Withholding Account,Är Moms Avdrag Konto, +Is Template,Är Mall, +Issue Analytics,Ärende Analys, +Issue Summary,Ärende Översikt, +Issue a debit note with 0 qty against an existing Sales Invoice,Utfärda Debet Nota med 0 i Kvantitet mot befintlig Försäljning Faktura, +Issuing cannot be done to a location. Please enter employee to issue the Asset {0} to,Utfärdande kan inte göras till plats. Ange personal att utfärda Tillgång {0} , +It can take upto few hours for accurate stock values to be visible after merging items.,Det kan ta upp till några timmar för korrekta lagervärden att vara synliga efter sammanslagning av artiklar., +"It's not possible to distribute charges equally when total amount is zero, please set 'Distribute Charges Based On' as 'Quantity'","Det är inte möjligt att fördela avgifter lika när det totala beloppet är noll, vänligen ange ""Distribuera Avgifter Baserat På"" som ""Kvantitet""", +Item Code (Final Product),Artikel Kod (Färdig Artikel), +Item Group wise Discount,Rabatt per Artikel Grupp, +Item Price Settings,Artikel Pris Inställningar, +"Item Price appears multiple times based on Price List, Supplier/Customer, Currency, Item, Batch, UOM, Qty, and Dates.","Artikel Pris visas flera gånger baserat på Prislista, Leverantör/Kund, Valuta, Artikel, Parti, Enhet, Kvantitet och Datum.", +Item Reference,Artikel Referens, +Item Warehouse based reposting has been enabled.,Artikel Lager baserad omläggning är aktiverad., +Item and Warehouse,Artikel och Lager, +Item is removed since no serial / batch no selected.,Artikel tas bort eftersom ingen serie nummer/parti nummer är vald., +Item qty can not be updated as raw materials are already processed.,Artikel kvantitet kan inte uppdateras eftersom råmaterial redan är bearbetad., +Item rate has been updated to zero as Allow Zero Valuation Rate is checked for item {0},Artikel pris har ändrats till noll eftersom Tillåt Noll Grund Pris är vald för artikel {0}, +Item valuation reposting in progress. Report might show incorrect item valuation.,Artikel värdering omläggning pågår. Rapport kan visa felaktig artikelvärde., +Item {0} cannot be added as a sub-assembly of itself,Artikel {0} kan inte läggas till som underenhet av sig själv, +Item {0} cannot be ordered more than {1} against Blanket Order {2}.,Artikel {0} kan inte skapas order för mer än {1} mot Blankoavtal Order {2}., +Item {0} does not exist.,Artikel {0} finns inte., +Item {0} entered multiple times.,Artikel {0} är angiven flera gånger., +Item {0} is already reserved/delivered against Sales Order {1}.,Artikel {0} är redan reserverad/levererad mot Försäljning Order {1}., +Item {0} must be a Non-Stock Item,Artikel {0} måste vara Ej Lager Artikel, +Item {0} not found in 'Raw Materials Supplied' table in {1} {2},"Artikel {0} hittades inte i ""Råmaterial Levererad"" tabell i {1} {2}", +Item {0} not found.,Artikel {0} hittades inte., +Item {} does not exist.,Artikel {} finns inte., +Items & Pricing,Artiklar & Priser, +Items Catalogue,Artikel Katalog, +Items cannot be updated as Subcontracting Order is created against the Purchase Order {0}.,Artiklar kan inte uppdateras eftersom underleverantör order är skapad mot Inköp Order {0}., +Items rate has been updated to zero as Allow Zero Valuation Rate is checked for the following items: {0},Artikel Pris har ändrats till noll eftersom Tillåt Noll Grund Pris är vald för följande artiklar: {0}, +Items to Be Repost,Artikel som ska Läggas om, +Items to Order and Receive,Inköp Artiklar, +Items to Reserve,Artiklar att Reservera, +Items {0} do not exist in the Item master.,Artikel {0} saknas i Artikel Register., +Job Capacity,Arbetskapacitet, +Job Card Operation,Jobbkort Åtgärd, +Job Card Scheduled Time,Jobbkort Schemalagd Tid, +Job Card Scrap Item,Jobbkort Rest Artikel, +Job Card and Capacity Planning,Jobbkort & Kapacitet Planering, +Job Cards,Jobbkort , +Job Paused,Jobb Pausad, +Job Worker,Jobb Ansvarig, +Job Worker Address,Jobb Ansvarig Adress, +Job Worker Address Details,Jobb Ansvarig Adress Detaljer, +Job Worker Contact,Jobb Ansvarig Kontakt, +Job Worker Delivery Note,Jobb Ansvarig Följesedel, +Job Worker Name,Jobb Ansvarig Namn, +Job Worker Warehouse,Jobb Ansvarig Lager, +Job: {0} has been triggered for processing failed transactions,Jobb: {0} är utlöst för bearbetning av misslyckade transaktioner, +Joining,Anställning, +Journal Entries,Journal Poster, +Journal Entry for Asset scrapping cannot be cancelled. Please restore the Asset.,Journal Post för Tillgång avskrivning kan inte annulleras. Vänligen återställ Tillgång., +Journal Entry type should be set as Depreciation Entry for asset depreciation,Journal Post Typ ska anges som Avskrivning Post för tillgång avskrivning, +Journal entries have been created,Journal Poster är skapade, +Journals,Journaler, +Key,Nyckel, +Kindly cancel the Manufacturing Entries first against the work order {0}.,Vänligen annullera Produktion Poster först mot Arbetsorder {0}., +"Last Name, Email or Phone/Mobile of the user are mandatory to continue.","Efternamn, E-post eller Telefon/Mobil erfodras för användare att fortsätta.", +Lead -> Prospect,Potentiell Kund -> Prospekt, +Lead Conversion Time,Potentiell Kund Samtal Tid, +Lead Owner cannot be same as the Lead Email Address,Potentiell Kund Ansvarig kan inte vara samma som Potentiell Kund E-post Adress, +Lead {0} has been added to prospect {1}.,Potentiell Kund {0} är lagd till Prospekt {1}., +Leaderboard,Topplista, +Leads,Potentiella Kunder, +Learn Accounting,Lär dig om Bokföring, +Learn Inventory Management,Lär dig om Lager Hantering, +Learn Manufacturing,Lär dig om Produktion, +Learn Procurement,Lär dig om Inköp, +Learn Project Management,Lär dig om Projekt Hantering, +Learn Sales Management,Lär dig om Försäljning, +"Learn about Common Party","Lär dig om Gemensam Parti", +"Leave blank for home. +This is relative to site URL, for example ""about"" will redirect to ""https://yoursitename.com/about""","Lämna tom för Hem. Detta är relativt till webbadress, till exempel 'Om' kommer att omdirigera till 'https://yoursitename.com/about'", +Ledger Health,Register Status, +Ledger Health Monitor,Register Status Övervakning, +Ledger Health Monitor Company,Register Status Övervakning Bolag, +Ledger Merge,Bokgöring Register Sammanslagning, +Ledger Merge Accounts,Register Sammanslagning Konton, +Ledgers,Register, +Left Child,Vänster Underordnad, +Legend,Förklaring, +Length,Längd, +Length (cm),Längd (cm), +Less than 12 months.,Kortare än tolv månader., +Level (BOM),Nivå (Stycklista), +Limit timeslot for Stock Reposting,Begränsa tid för Lager Omläggning, +Limits don't apply on,Gräns gäller inte, +Link a new bank account,Länka ny Bank Konto, +Link with Customer,Länka med Kund, +Link with Supplier,Länka med Leverantör, +Linked with submitted documents,Länkad med godkända dokument, +Linking Failed,Länkning Misslyckad, +Linking to Customer Failed. Please try again.,Länkning med Kund Misslyckades. Var god försök igen., +Linking to Supplier Failed. Please try again.,Länkning med Leverantör Misslyckades. Var god försök igen., +Links,Länkar, +Loading import file...,Laddar import fil..., +Locked,Låst, +Log Entries,Logg Poster, +Log the selling and buying rate of an Item,Logga försäljning och inköp pris för Artikel, +Lost Quotations,Förlorade Försäljning Offerter, +Lost Quotations %,Förlorade Försäljning Offerter (%), +Lost Reasons are required in case opportunity is Lost.,Förlorad Anledning erfordras om Möjlighet är Förlorad., +Lost Value,Förlorad Värde, +Lost Value %,Förlorad Värde %, +Machine Type,Maskin Typ, +Main Cost Center,Standard Resultat Enhet, +Main Cost Center {0} cannot be entered in the child table,Huvud Resultat Enhet {0} kan inte anges i underordnad tabell, +Maintain Asset,Underhåll Tillgång, +Maintenance Details,Service Detaljer, +Make ,Märke , +Make Asset Movement,Skapa Tillgång Förflyttning, +Make Quotation,Skapa Offert, +Make Return Entry,Skapa Retur Post, +Make Serial No / Batch from Work Order,Skapa Serie / Parti Nummer från Arbetsorder, +Make {0} Variant,Skapa {0} Variant, +Make {0} Variants,Skapa {0} Varianter, +Making Journal Entries against advance accounts: {0} is not recommended. These Journals won't be available for Reconciliation.,Skapa Journal Poster mot förskott konton: {0} rekommenderas inte. Dessa journaler kommer inte att vara tillgängliga för avstämning., +Manage,Hantera, +Mandatory Accounting Dimension,Erfodrad Bokföring Dimension, +Mandatory Depends On,Erfordrad Beroende Av, +Mandatory Field,Erfodrad Fält, +Mandatory Section,Erfodrad Sektion, +Manual Inspection,Manuell Kontroll, +Manufacture Sub-assembly in Operation,Producera Underenhet i Åtgärd, +Manufacturing Type,Produktion Typ, +Mapping Purchase Receipt ...,Mappar Inköp Följesedel..., +Mapping Subcontracting Order ...,Mappar Underleverantör Order ..., +Mapping {0} ...,Mappar {0} ..., +Margin View,Marginal Vy, +Mark As Closed,Ange som Stängd , +Material Returned from WIP,Material Retur från Arbete Pågår, +Material Transfer (In Transit),Material Överföring (I Transit), +Materials are already received against the {0} {1},Material mottagen mot {0} {1}, +Materials needs to be transferred to the work in progress warehouse for the job card {0},Material måste överföras till Arbete Pågår Lager för Jobbkort {0}, +Max Qty (As Per Stock UOM),Maximum Kvantitet (per Lager Enhet), +Maximum Net Rate,Maximum Netto Pris, +Maximum Payment Amount,Maximum Betalning Belopp, +Maximum Value,Maximum Värde, +Maximum quantity scanned for item {0}.,Maximum kvantitet skannad för artikel {0}., +Meeting,Möte, +Mention if non-standard Receivable account,Ange om ej Standard Fordring Konto, +Merge Invoices Based On,Slå Samman Faktura Baserad På, +Merge Progress,Sammanslagning Framsteg, +Merge Similar Account Heads,Slå Samman Liknande Konto Poster, +Merge taxes from multiple documents,Slå Samman Moms från flera dokument, +Merged,Sammanslagen, +"Merging is only possible if following properties are same in both records. Is Group, Root Type, Company and Account Currency","Sammanslagning är endast möjlig om följande egenskaper är lika i båda poster. Är Grupp, Konto Klass, Bolag och Konto Valuta", +Merging {0} of {1},Slår Samman {0} av {1}, +Min Qty (As Per Stock UOM),Minimum Kvantitet (per Lager Enhet), +Min Qty should be greater than Recurse Over Qty,Minimum Kvantitet ska vara högre än Rekurs över kvantitet, +Minimum Net Rate,Minimum Netto Pris, +Minimum Payment Amount,Minimum Betalning Belopp, +Minimum Value,Mimimum Värde, +Mismatch,Felavstämd, +Missing,Saknas, +Missing Asset,Tillgång Saknas, +Missing Cost Center,Resultat Enhet Saknas, +Missing Finance Book,Finans Register Saknas, +Missing Finished Good,Färdig Artikel Saknas, +Missing Formula,Formel Saknas, +Missing Items,Artiklar Saknas, +Missing Payments App,Betalning App Saknas, +Missing Serial No Bundle,Serie Nummer Paket Saknas, +Missing value,Värde Saknas, +Modified By,Modifierad Av, +Modified On,Modifierad, +Module Settings,Modul Inställningar, +Monitor for Last 'X' days,"Övervakning för senaste ""X"" dagar", +Move Stock,Flytta Lager, +Move to Cart,Flytta till Kundkorg, +Movement,Förflyttning, +Moving up in tree ...,Flytta upp i träd..., +Multi-level BOM Creator,Fler Nivå Stycklista Generator, +Multiple Loyalty Programs found for Customer {}. Please select manually.,Flera Lojalitet Program hittades för Kund {}. Välj manuellt., +Multiple Warehouse Accounts,Flera Lager Konton, +Multiple items cannot be marked as finished item,Flera artiklar kan inte väljas som färdiga artiklar, +Must be a publicly accessible Google Sheets URL and adding Bank Account column is necessary for importing via Google Sheets,Måste vara publik tillgänglig URL för Google Sheets och det är nödvändigt att lägga till Bank Konto Kolumn att importera via Google Sheets, +Named Place,Namngiven Plats, +Naming Series and Price Defaults,Nummer Serie & Pris Standard, +Net total calculation precision loss,Netto Total Beräkning Precision Förlust, +New Balance In Account Currency,Ny Saldo i Konto Valuta, +New Event,Ny Händelse, +New Note,Ny Anteckning, +New Task,Ny Uppgift, +New Version,Ny Version, +Newsletter,Nyhetsbrev, +No Answer,Ingen Svar, +No Customers found with selected options.,Inga Kunder hittades med valda alternativ., +No Items selected for transfer.,Inga Artiklar har valts för överföring., +No Matching Bank Transactions Found,Inga matchande banktransaktioner hittades, +No Notes,Inga Anteckningar, +No Outstanding Invoices found for this party,Inga Utestående Fakturor hittades för denna parti, +No POS Profile found. Please create a New POS Profile first,Ingen Kassa Profil hittad. Skapa ny Kassa Profil, +No Records for these settings.,Inga Poster för dessa inställningar., +No Serial / Batches are available for return,Inga Serie Nummer/Partier är tillgängliga för retur, +No Stock Available Currently,Ingen Lager Tillgänglig för närvarande, +No Summary,Ingen Översikt, +No Tax Withholding data found for the current posting date.,Ingen Moms Avdrag data hittades för aktuell bokföring datum., +No Terms,Inga Villkor, +No Unreconciled Invoices and Payments found for this party and account,Inga Oavstämda Fakturor och Betalningar hittades för denna parti och konto, +No Unreconciled Payments found for this party,Inga Oavstämda Betalningar hittades för denna parti, +No Work Orders were created,Inga Arbetsordrar skapades, +No additional fields available,Inga extra fält tillgängliga, +No billing email found for customer: {0},Ingen faktura e-post hittades för kund: {0}, +No data found. Seems like you uploaded a blank file,Ingen data hittades. Det verkar som om tom fil laddats upp, +No employee was scheduled for call popup,Ingen personal var schemalagd för oväntad samtal, +No failed logs,Inga Misslyckade Logg, +No item available for transfer.,Ingen artikel tillgänglig för överföring., +No items are available in sales orders {0} for production,Inga artiklar är tillgängliga i Försäljning Order {0} för produktion, +No items are available in the sales order {0} for production,Inga artiklar är tillgängliga i Försäljning Order {0} för produktion, +No items in cart,Antal Artiklar i Kundkorg, +No matches occurred via auto reconciliation,Inga avstämningar uppstod via automatisk avstämning, +No more children on Left,Inga fler underordnade till Vänster, +No more children on Right,Inga fler underordnade till Höger, +No of Docs,Antal Dokument , +No of Employees,Personal Antal, +No of Months (Expense),Antal Månader, +No of Months (Revenue),Antal Månader, +No open event,Inga öppna Händelse, +No open task,Inga öppna Uppgifter, +No outstanding {0} found for the {1} {2} which qualify the filters you have specified.,Inga utestående {0} hittades för {1} {2} som uppfyller angiven filter., +No primary email found for customer: {0},Ingen primär e-post adress hittades för kund: {0}, +No records found in Allocation table,Inga poster hittades i Tilldelning tabell, +No records found in the Invoices table,Inga poster hittades i Faktura Tabell, +No records found in the Payments table,Inga poster hittades i Betalning Tabell, +No stock transactions can be created or modified before this date.,Inga lager transaktioner kan skapas eller ändras före detta datum., +No {0} Accounts found for this company.,Inga {0} konto hittades för detta bolag., +No.,Nr., +No. of Employees,Personal Antal, +No. of parallel job cards which can be allowed on this workstation. Example: 2 would mean this workstation can process production for two Work Orders at a time.,Antal samtidiga Jobbkort som kan tillåtas på denna arbetsstation. Exempel: 2 skulle innebära att denna arbetsstation kan hantera två Arbetsordrar åt gången., +Note: Automatic log deletion only applies to logs of type Update Cost,Obs: Automatisk logg radering gäller endast loggar av typ Uppdatera Kostnad, +"Note: To merge the items, create a separate Stock Reconciliation for the old item {0}",Obs: För att slå samman artiklar skapar separat lager avstämning för gamla artikel {0}, +Notes HTML,Anteckningar HTML, +Notification,Aviseringar, +Notification Settings,Avisering Inställningar, +Notify Reposting Error to Role,Avisera omläggning fel till roll, +Number of Days,Antal Dagar, +Numeric,Numerisk, +Numeric Inspection,Numerisk Kontroll, +Off,Av, +Offsetting Account,Avräkning Konto, +Offsetting for Accounting Dimension,Avräkning för Bokföring Dimension, +On Paid Amount,På Betald Belopp, +On This Date,Datum, +On Track,På Bana, +On enabling this cancellation entries will be posted on the actual cancellation date and reports will consider cancelled entries as well,När du aktiverar denna annullering kommer poster att publiceras på faktisk annullering datum och rapporter kommer också att inkludera annullerade poster, +"On expanding a row in the Items to Manufacture table, you'll see an option to 'Include Exploded Items'. Ticking this includes raw materials of the sub-assembly items in the production process.","Vid utökning av rad i Artiklar att Producera Tabell,kommer du att se alternativ ""Inkludera Utvidgade Artiklar"". Genom att väljadetta ingår råvaror från delkomponenter i produktion process.", +"On submission of the stock transaction, system will auto create the Serial and Batch Bundle based on the Serial No / Batch fields.",Vid godkännade av lager transaktion kommer system att automatiskt skapa Serie och Parti Paket baserat på Serienummer / Parti fält., +Once the Work Order is Closed. It can't be resumed.,När Arbetsorder är Stängd kan den inte återupptas., +Only 'Payment Entries' made against this advance account are supported.,"Endast ""Betalning Poster"" som skapas mot detta förskott konto stöds.", +Only CSV and Excel files can be used to for importing data. Please check the file format you are trying to upload,Endast CSV och Excel filer kan användas för data import. Kontrollera filformat du försöker ladda upp, +Only Deduct Tax On Excess Amount ,Endast Dra av Skatt på Överskjutande Belopp, +Only Include Allocated Payments,Endast Inkludera allokerade betalningar, +Only Parent can be of type {0},Endast Överordnad kan vara av typ {0}, +Only existing assets,Endast Befintliga Tillgångar, +"Only one Subcontracting Order can be created against a Purchase Order, cancel the existing Subcontracting Order to create a new one.","Endast en Underleverantör Order kan skapas mot en Inköp Order, annullera befintlig Underleverantör Order för att skapa ny.", +Only one {0} entry can be created against the Work Order {1},Endast en {0} post kan skapas mot Arbetsorder {1}, +"Only values between [0,1) are allowed. Like {0.00, 0.04, 0.09, ...} +Ex: If allowance is set at 0.07, accounts that have balance of 0.07 in either of the currencies will be considered as zero balance account","Endast värden mellan [0,1) är tillåtna, t.ex.{0.00, 0.04, 0.09, ...} +Exempel: Om tillåtelse är angiven till 0,07, kommer konton som har saldo på 0,07 i någon av valutorna att betraktas som noll saldo konto.", +Only {0} are supported,Endast {0} stöds, +Open Activities HTML,Öppna Aktiviteter HTML, +Open Call Log,Öppna Samtal Logg, +Open Event,Öppna Händelse, +Open Events,Öppna Händelser, +Open Sales Orders,Öppna Försäljning Ordrar, +Open Task,Öppna Uppgift, +Open Tasks,Öppna Uppgifter, +Open Work Order {0},Öppna Arbetsorder {0}, +Opening & Closing,Öppning & Stängning, +Opening Accumulated Depreciation must be less than or equal to {0},Öppning Ackumulerad Avskrivning måste vara mindre än eller lika med {0}, +Opening Entry can not be created after Period Closing Voucher is created.,Öppning Post kan inte skapas efter att Period Stängning Verifikat är skapad., +Opening Number of Booked Depreciations,Öppning Nummer för Bokförda Avskrivningar, +Opening Purchase Invoices have been created.,Öppning Inköp Fakturor är skapade., +Opening Sales Invoices have been created.,Öppning Försäljning Fakturor är skapade., +Operating Cost Per BOM Quantity,Drift Kostnad per Stycklista Kvantitet, +Operation time does not depend on quantity to produce,Åtgärd Tid beror inte på kvantitet som ska produceras, +Opportunity Amount (Company Currency),Möjlighet Belopp (Bolag Valuta), +Opportunity Owner,Möjlighet Ansvarig, +Opportunity Source,Möjlighet Källa, +Opportunity Summary by Sales Stage,Möjlighet Översikt efter Försäljning Stadium, +Opportunity Summary by Sales Stage ,Möjlighet Översikt efter Försäljning Stadium, +Opportunity Value,Möjlighet Värde, +Other Info,Övrig Information, +Out of stock,Ej på Lager, +Over Picking Allowance,Över Plock Tillåtelse, +Over Receipt,Över Följesedel, +Over Receipt/Delivery of {0} {1} ignored for item {2} because you have {3} role.,Över Följesedel/Leverans av {0} {1} ignoreras för artikel {2} eftersom du har {3} roll., +Over Transfer Allowance,Över Överföring Tillåtelse, +Overbilling of {0} {1} ignored for item {2} because you have {3} role.,Överfakturering av {0} {1} ignoreras för artikel {2} eftersom du har {3} roll., +Overbilling of {} ignored because you have {} role.,Överfakturering av {} ignoreras eftersom du har {} roll., +Overdue Payment,Förfallna Fakturor, +Overdue Payments,Förfallna Fakturor, +Overdue Tasks,Försenade Uppgifter, +Overview,Recension , +PDF Name,PDF Namn, +POS Closing Failed,Kassa Stängning Misslyckad, +POS Closing failed while running in a background process. You can resolve the {0} and retry the process again.,Kassa Stängning misslyckades medan den kördes i bakgrund process. Du kan lösa {0} och försöka igen., +POS Invoice is already consolidated,Kassa Faktura är redan konsoliderad, +POS Invoice is not submitted,Kassa Faktura är inte godkänd, +POS Invoice should have the field {0} checked.,Kassa Faktura ska ha {} fält vald., +POS Invoices will be consolidated in a background process,Kassa Fakturor kommer att konsolideras i bakgrund process, +POS Invoices will be unconsolidated in a background process,Kassa Fakturor kommer att okonsolideras i bakgrund process, +POS Profile doesn't match {},Kassa Profil matchar inte {}, +POS Profile {} contains Mode of Payment {}. Please remove them to disable this mode.,Kassa Profil {} innehåller Betalning Sätt {}. Ta bort Betalning Sätt för att inaktivera detta läge., +POS Search Fields,Kassa Sök Fält, +POS Setting,Kassa Inställningar, +Package No(s) already in use. Try from Package No {0},Paket Nummer används redan. Prova från Paket Nummer {0} , +Packaging Slip From Delivery Note,Packsedel från Försäljning Följesedel, +Packed Items cannot be transferred internally,Packade artiklar kan inte överföras internt, +Packed Qty,Förpackad Kvantitet, +Page Break After Each SoA,Sidbrytning efter varje SoA, +Paid Amount After Tax,Betald Belopp efter Moms, +Paid Amount After Tax (Company Currency),Betald Belopp efter Moms (Bolag Valuta), +Paid From Account Type,Betald från Konto Typ, +Paid To Account Type,Betald till Konto Typ, +Pallets,Pall, +Parameter Group,Parameter Grupp, +Parameter Group Name,Parameter Grupp Namn, +Parcel Template,Leverans Paket Mall, +Parcel Template Name,Leverans Paket Mall Namn, +Parcel weight cannot be 0,Leverans Paket Vikt får inte vara 0, +Parcels,Paket, +Parent Account Missing,Överordnad Konto Saknas, +Parent Document,Överordnad Dokument, +Parent Item {0} must not be a Fixed Asset,Överordnad Artikel {0} får inte vara Tillgång, +Parent Row No,Överordnad Rad Nummer, +Parent Task {0} is not a Template Task,Överordnad Uppgift {0} är inte Mall Uppgift, +Partial Material Transferred,Delvis Material Överförd, +Partial Stock Reservation,Delvis Lager Reservation, +Partial Success,Delvis Klar, +"Partial stock can be reserved. For example, If you have a Sales Order of 100 units and the Available Stock is 90 units then a Stock Reservation Entry will be created for 90 units. ","Delvis Lager kan reserveras. Till exempel, om du har en försäljning order på 100 enheter och det tillgängliga lagret är 90 enheter kommer lager reservation post att skapas för 90", +Partially Delivered,Delvis Levererad, +Partially Reconciled,Delvis Avstämd, +Partially Reserved,Delvis Reserverad, +Partly Paid,Delvis Betald, +Partly Paid and Discounted,Delvis Betald och Rabatterad, +Partnership,Partner, +Party Account No. (Bank Statement),Parti Konto Nummer (Kontoutdrag), +Party Account {0} currency ({1}) and document currency ({2}) should be same,Parti Konto {0} valuta ({1}) och dokument valuta ({2}) ska vara samma, +Party IBAN (Bank Statement),Parti IBAN (Kontoutdrag), +Party Item Code,Parti Artikel Kod, +Party Link,Parti Länk, +Party Name/Account Holder (Bank Statement),Parti Namn/Kontoinnehavare (Kontoutdrag), +Party Specific Item,Parti Specifik Artikel, +Party Type and Party is required for Receivable / Payable account {0},Parti Typ och Parti erfodras för Fordring / Skuld konto {0}, +Party can only be one of {0},Parti kan endast vara en av {0}, +Passport Details,Passport Detaljer, +Pause Job,Pausa Jobb, +Paused,Pausad, +Payment Amount (Company Currency),Faktura Belopp (Bolag Valuta), +"Payment Entry {0} is linked against Order {1}, check if it should be pulled as advance in this invoice.","Betalning Post {0} är länkad till Order {1}, kontrollera om den ska hämtas som förskott på denna faktura.", +Payment Ledger,Betalning Register, +Payment Ledger Balance,Betalning Register Saldo, +Payment Ledger Entry,Betalning Register Post, +Payment Limit,Betalning Gräns, +Payment Reconciliation Allocation,Betalning Avstämning Tilldelning , +Payment Reconciliation Job: {0} is running for this party. Can't reconcile now.,Betalning Avstämning Jobb: {0} körs för denna parti. Kan inte avstämas nu., +Payment Reconciliations,Betalning Avstämningar, +Payment Request Outstanding,Betalning Begäran Utestående Belopp, +Payment Request created from Sales Order or Purchase Order will be in Draft status. When disabled document will be in unsaved state.,Betalning Begäran som skapas från Försäljning Order eller Inköp Order kommer att få Utkast status. När inaktiverad kommer dokument att vara i osparat tillstånd., +Payment Request is already created,Betalning Begäran är redan skapad, +Payment Request took too long to respond. Please try requesting for payment again.,Betalning Begäran tog för lång tid att svara. Försök att begära betalning igen., +Payment Requests cannot be created against: {0},Betalning Begäran kan inte skapas mot: {0}, +Payment Term Outstanding,Betalningsvillkor Utestående Belopp, +Payment Terms Status for Sales Order,Betalning Villkor Status för Försäljning Order, +Payment Terms from orders will be fetched into the invoices as is,Betalning Villkor från Order hämtas till Faktura som den är, +Payment Unlink Error,Betalning Bortkoppling Fel, +Payment of {0} received successfully.,Betalning på {0} mottagen., +Payment of {0} received successfully. Waiting for other requests to complete...,Betalning på {0} mottagen. Väntar på att andra begäran ska slutföras..., +Payment request failed,Betalning Begäran Misslyckades, +Payment term {0} not used in {1},Betalning Villkor {0} används inte i {1}, +Pending processing,Väntar på bearbetning, +Per Received,Per Mottagen, +Percentage (%),Procent (%), +Percentage you are allowed to order beyond the Blanket Order quantity.,Procentandel tillåten för order utöver Blankoavtal Order Kvantitet., +Percentage you are allowed to sell beyond the Blanket Order quantity.,Procentandel tillåten för försäljning utöver Blankoavtal Order Kvantitet., +Period Closed,Period Stängd, +Period Closing Entry For Current Period,Period Låsning Post för Aktuell Period, +Period Closing Settings,Period Låsning Inställningar, +Period Details,Period Detaljer, +Period To Date,Period Till Datum, +Period_from_date,Period Från Datum, +Phone Ext.,Telefon Anknytning, +Pick List Incomplete,Plocklista Ofullständig, +Pick Manually,Plocka Manuellt, +Pick Serial / Batch Based On,Välj Serie / Parti Baserad På, +Pick Serial / Batch No,Välj Serie / Parti Nummer, +Picked Qty (in Stock UOM),Plockad Kvantitet (Lager Enhet), +Pickup,Hämtning, +Pickup Contact Person,Hämtning Adress Kontakt Person, +Pickup Date,Hämtning Datum, +Pickup Date cannot be before this day,Hämtning Datum kan inte infalla före denna dag, +Pickup From,Hämtning Från, +Pickup To time should be greater than Pickup From time,Hämtning Till Tid ska vara senare än Hämtning Från Tid, +Pickup Type,Hämtning Typ, +Pickup from,Hämtning Från, +Pickup to,Hämtning Till, +Pipeline By,Tratt Efter, +Plaid Link Failed,Plaid Länk Misslyckades, +Plaid Link Refresh Required,Plaid Länk Uppdatering erfordras, +Plaid Link Updated,Plaid Länk Uppdaterad, +Plan to Request Qty,Planerad Kvantitet, +Plant Dashboard,Fabrik Översikt Panel, +Plant Floor,Produktion Yta, +Please Set Priority,Ange Prioritet, +Please Specify Account,Specificera Konto, +Please add 'Supplier' role to user {0}.,"Lägg till Roll ""Leverantör"" till användare {0}.", +Please add Request for Quotation to the sidebar in Portal Settings.,Lägg till Offert Förfråga i sidofält i Portal Inställningar., +Please add Root Account for - {0},Lägg till Överordnad Konto för - {0}, +Please add atleast one Serial No / Batch No,Lägg till minst en Serie Nr / Parti Nr, +Please add the Bank Account column,Lägg till Bank Konto kolumn, +Please add the account to root level Company - {0},Lägg till Konto till Överordnad Bolag - {0}, +Please add {1} role to user {0}.,Lägg till roll {1} till användare {0}., +Please adjust the qty or edit {0} to proceed.,Justera kvantitet eller redigera {0} för att fortsätta., +Please attach CSV file,Bifoga CSV Fil, +Please cancel and amend the Payment Entry,Annullera och ändra Betalning Post, +Please cancel payment entry manually first,Annullera Betalning Post manuellt, +Please cancel related transaction.,Annullera relaterad transaktion., +Please check Process Deferred Accounting {0} and submit manually after resolving errors.,Välj Bearbeta Uppskjuten Bokföring {0} och godkänn manuellt efter att ha löst fel., +Please check either with operations or FG Based Operating Cost.,Välj antingen Med Åtgärder eller Färdig Artikel Baserad Åtgärd Kostnad., +Please check the error message and take necessary actions to fix the error and then restart the reposting again.,Kontrollera felmeddelande och vidta nödvändiga åtgärder för att åtgärda fel och starta sedan ompostning igen., +Please check your email to confirm the appointment,Kontrollera din E-post för att bekräfta Möte, +Please contact any of the following users to extend the credit limits for {0}: {1},Kontakta någon av följande användare för att utöka kredit gränser för {0}: {1}, +Please contact any of the following users to {} this transaction.,Kontakta någon av följande användare för att {} denna transaktion., +Please contact your administrator to extend the credit limits for {0}.,Kontakta administratör för att utöka kredit gränser för {0}., +Please create Landed Cost Vouchers against Invoices that have 'Update Stock' enabled.,"Skapa Landad Kostnad Verifikat mot fakturor som har ""Uppdatera Lager"" aktiverad.", +Please create a new Accounting Dimension if required.,Skapa Bokföring Dimension vid behov., +Please create purchase from internal sale or delivery document itself,Skapa Inköp från intern Försäljning eller Följesedel, +"Please delete Product Bundle {0}, before merging {1} into {2}",Ta bort Artikel Paket {0} innan sammanslagning av {1} med {2}, +Please do not book expense of multiple assets against one single Asset.,Bokför inte kostnader för flera Tillgångar mot enskild Tillgång., +Please enable Use Old Serial / Batch Fields to make_bundle,Aktivera Använd gamla Serie / Parti Fält för att skapa paket, +Please enable only if the understand the effects of enabling this.,Aktivera endast om du förstår effekterna av att aktivera detta., +Please enable {0} in the {1}.,Aktivera {0} i {1}., +Please enable {} in {} to allow same item in multiple rows,Aktivera {} i {} för att tillåta samma Artikel i flera rader, +Please ensure that the {0} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Kontrollera att {0} konto är Balans Rapport Konto. Ändra Överordnad Konto till Balans Rapport Konto eller välj annat konto., +Please ensure that the {0} account {1} is a Payable account. You can change the account type to Payable or select a different account.,Kontrollera att {0} konto {1} är Skuld Konto. Ändra Konto Typ till Skuld Konto Typ eller välj ett annat konto., +Please ensure {} account is a Balance Sheet account.,Kontrollera att {} konto är Balans Rapport konto., +Please ensure {} account {} is a Receivable account.,Kontrollera att {} konto {} är fordring konto., +Please enter Root Type for account- {0},Ange Konto Klass för konto {0}, +Please enter Serial Nos,Ange Serie Nummer, +Please enter Shipment Parcel information,Ange Leverans Paket information, +Please enter Stock Items consumed during the Repair.,Ange Artiklar förbrukade under reparation., +Please enter mobile number first.,Ange Mobil Nummer, +Please enter quantity for item {0},Ange Kvantitet för artikel {0}, +Please enter serial nos,Ange Serie Nummer, +"Please first set Last Name, Email and Phone for the user","Ange Efternamn, E-post och Telefon för användare", +Please fix overlapping time slots for {0},Åtgärda överlappande tider för {0}, +Please fix overlapping time slots for {0}.,Åtgärda överlappande tider för {0}, +Please import accounts against parent company or enable {} in company master.,Importera konton mot moderbolag eller aktivera {} i bolag inställningar., +"Please keep one Applicable Charges, when 'Distribute Charges Based On' is 'Distribute Manually'. For more charges, please create another Landed Cost Voucher.","Behåll en Tillämplig Avgift när ""Distribuera avgifter Baserat på"" är ""Distribuera Manuellt"". För fler avgifter, skapa annan Landad Kostnad Verifikat", +Please make sure the file you are using has 'Parent Account' column present in the header.,"Kontrollera att fil har kolumn ""Överordnad Konto"" i rubrik.", +Please mention 'Weight UOM' along with Weight.,"Ange ""Vikt Enhet"" tillsammans med Vikt.", +Please mention the Current and New BOM for replacement.,Ange Aktuell och Ny Stycklista för ersättning., +Please rectify and try again.,Rätta till och försök igen., +Please refresh or reset the Plaid linking of the Bank {}.,Uppdatera eller återställ Plaid Länk för Bank {}., +Please save before proceeding.,Spara innan du fortsätter., +Please select Bank Account,Välj Bank Konto, +Please select Finished Good Item for Service Item {0},Välj Färdig Artikel för Service Artikel {0}, +Please select Serial/Batch Nos to reserve or change Reservation Based On to Qty.,Välj Serie / Parti Nummer att reservera eller ändra Reservation Baserad På Kvantitet., +Please select Subcontracting Order instead of Purchase Order {0},Välj Underleverantör Order istället för Inköp Order {0}, +Please select Unrealized Profit / Loss account or add default Unrealized Profit / Loss account account for company {0},Välj Orealiserad Resultat Konto eller ange standard konto för Orealiserad Resultat Konto för Bolag {0}, +Please select a Subcontracting Purchase Order.,Välj Underleverantörer Inköp Order, +Please select a Warehouse,Välj Lager, +Please select a Work Order first.,Välj Arbetsorder, +Please select a country,Välj Land, +Please select a customer for fetching payments.,Välj Kund för att hämta betalningar., +Please select a date,Välj Datum, +Please select a date and time,Välj Tid och Datum, +Please select a row to create a Reposting Entry,Välj rad att skapa Ompostering Post, +Please select a supplier for fetching payments.,Välj Leverantör för att hämta betalningar., +Please select a valid Purchase Order that has Service Items.,Välj giltig Inköp Order med Service Artiklar., +Please select a valid Purchase Order that is configured for Subcontracting.,Välj giltig Inköp Order som är konfigurerad för Underleverantör., +Please select an item code before setting the warehouse.,Välj Artikel Kod innan du anger Lager., +Please select either the Item or Warehouse or Warehouse Type filter to generate the report.,"Välj antingen Artikel,Lager eller Lager Typ filter att skapa rapport.", +Please select items,Välj Artiklar, +Please select items to reserve.,Välj Artiklar att reservera, +Please select items to unreserve.,Välj Artiklar att reservera, +Please select only one row to create a Reposting Entry,Vänligen välj endast en rad för att skapa Ompostering Post, +Please select rows to create Reposting Entries,Välj rader för att skapa Ompostering Poster, +Please select the required filters,Välj de filter som krävs, +Please select valid document type.,Välj giltig dokument typ., +Please set Account,Ange Konto, +Please set Accounting Dimension {} in {},Ange Bokföring Dimension {} i {}, +Please set Email/Phone for the contact,Ange E-post/Telefon för Kontakt, +Please set Fiscal Code for the customer '%s',"Ange Org.Nr. för Kund ""%s""", +Please set Fiscal Code for the public administration '%s',"Ange Org.Nr. för Offentlig Förvaltning ""%s""", +Please set Fixed Asset Account in {} against {}.,Ange Tillgång Konto i {} mot {}., +Please set Opening Number of Booked Depreciations,Ange Öppning Nummer för Bokförda Avskrivningar, +Please set Parent Row No for item {0},Ange Överordnad Rad Nummer för artikel {0}, +Please set Root Type,Ange Konto Klass, +Please set Tax ID for the customer '%s',Ange Org.Nr. for Kund '%s', +Please set VAT Accounts in {0},Ange Moms Konton i {0}, +"Please set Vat Accounts for Company: ""{0}"" in UAE VAT Settings","Ange Moms Konton för Bolag: ""{0}"" i moms inställningarna i Förenade Arabemirater", +Please set a Cost Center for the Asset or set an Asset Depreciation Cost Center for the Company {},Ange Resultat Enhet för Tillgång eller ange Resultat Enhet för Tillgång Avskrivningar för Bolag {}, +Please set a default Holiday List for Company {0},Ange standard Helg Lista för Bolag {0}, +Please set an Address on the Company '%s',Ange adress för Bolag '%s', +Please set an Expense Account in the Items table,Ange Kostnad konto i Artikel tabell, +Please set default Exchange Gain/Loss Account in Company {},Ange Standard Valutaväxling Resultat Konto för Bolag {}, +Please set default Expense Account in Company {0},Ange Standard Konstnad Konto för Bolag {0}, +Please set default cost of goods sold account in company {0} for booking rounding gain and loss during stock transfer,Ange Standard Kostnad för sålda artiklar i bolag {0} för bokning av avrundning av vinst och förlust under lager överföring, +Please set either the Tax ID or Fiscal Code on Company '%s',"Ange antingen Skatt eller Moms Kod för Bolag ""%s""", +Please set filters,Ange Filter, +Please set one of the following:,Ange något av följande:, +Please set the cost center field in {0} or setup a default Cost Center for the Company.,Ange Resultat Enhet i {0} eller ange Standard Resultat Enhet för Bolag., +Please set {0} in BOM Creator {1},Ange {0} i Stycklista Generator {1}, +Please setup and enable a group account with the Account Type - {0} for the company {1},Konfigurera och aktivera Kontoplan Grupp med Kontoklass {0} för bolag {1}, +Please share this email with your support team so that they can find and fix the issue.,Dela detta e-post meddelande med support så att de kan hitta och åtgärda problem. , +Please specify a {0},Ange {0}, +Please try again in an hour.,Försök igen om en timme., +Please update Repair Status.,Uppdatera Reparation Status., +Portal User,Portal Användare, +Portal Users,Portal Användare, +Posting Datetime,Bokföring Datum och Tid, +Powered by {0},Tillhandahålls av {0}, +"Previous Year is not closed, please close it first","Föregående År är inte stängd, vänligen stäng det", +Price ({0}),Pris ({0}), +Price List Defaults,Prislista Standard, +Price Per Unit ({0}),Pris Per Enhet ({0}), +Primary Address and Contact,Primär Adress & Kontakt, +Primary Contact,Primär Kontakt, +Primary Party,Primär Parti, +Primary Role,Primär Roll, +Print Format Builder,Utskrift Format Redigerare, +Print Style,Utskrift Stil, +Printing,Utskrift, +Priority cannot be lesser than 1.,Prioritet får inte vara mindre än 1., +Priority is mandatory,Parti Erfodras , +Probability,Sannolikhet, +Process Loss,Process Förlust, +Process Loss Percentage cannot be greater than 100,Process Förlust i Procent får inte vara större än 100 , +Process Loss Qty,Process Förlust Kvantitet, +Process Loss Report,Process Förlust Rapport, +Process Loss Value,Process Förlust Värde, +Process Payment Reconciliation,Betalning Avstämning Bearbetning, +Process Payment Reconciliation Log,Betalning Avstämning Bearbetning Logg, +Process Payment Reconciliation Log Allocations,Betalning Avstämning Bearbetning Logg Tilldelningar, +Process Subscription,Behandla Prenumeration, +Process in Single Transaction,Process i Singel Transaktion, +Processed BOMs,Behandlade Stycklistor, +Processing Sales! Please Wait...,Behandlar Försäljning!Vänlige Vänta..., +Produced / Received Qty,Producerad / Mottagen Kvantitet, +Product Price ID,Artikel Pris, +Production Plan Already Submitted,Produktion Plan Redan Godkänd, +Production Plan Item Reference,Produktion Plan Post Referens, +Production Plan Qty,Produktion Plan Kvantitet, +Production Plan Sub Assembly Item,Produktion Plan Delmontering Artikel, +Production Plan Sub-assembly Item,Produktion Plan Delmontering Artikel, +Production Plan Summary,Produktion Plan Översikt, +Profile,Profil, +Profit and Loss Summary,Resultat Rapport Översikt, +Progress,Framsteg, +Progress (%),Framsteg(%), +Project Progress:,Projekt Framsteg:, +Prompt Qty,Fråga efter Kvantitet, +Prospect,Prospekt, +Prospect Lead,Prospekt Potentiell Kund, +Prospect Opportunity,Prospekt Möjlighet, +Prospect Owner,Prospekt Ansvarig, +Prospect {0} already exists,Prospekt {0} finns redan, +Provisional Account,Provisoriskt Konto, +Provisional Expense Account,Provisorisk Kostnad Konto, +Purchase Order Item reference is missing in Subcontracting Receipt {0},Inköp Order Artikel Referens saknas på Underleverantör Följesedel {0}, +Purchase Orders {0} are un-linked,Inköp Ordrar {0} är inte länkade, +Purchase Receipt (Draft) will be auto-created on submission of Subcontracting Receipt.,Inköp Följesedel (utkast) kommer att skapas automatiskt vid godkännande av Underleverantör Följesedel., +Purchase Receipt {0} created.,Inköp Följesedel {0} skapad, +Purchase Value,Inköp Värde, +Purchases,Inköp, +Purposes Required,Anledning Erfodras, +Putaway Rule,Lägg Undan Regel, +Putaway Rule already exists for Item {0} in Warehouse {1}.,Lägg Undan Regel finns redan för Artikel {0} i Lager {1}., +Qty ,Kvantitet, +Qty After Transaction,Kvantitet efter Transaktion, +Qty As Per BOM,Kvantitet per Stycklista, +Qty Change,Kvantitet Förändring, +Qty In Stock,Kvantitet i Lager, +Qty Per Unit,Kvantitet per Enhet, +"Qty To Manufacture ({0}) cannot be a fraction for the UOM {2}. To allow this, disable '{1}' in the UOM {2}.","Kvantitet att Producera ({0}) kan inte vara bråkdel för enhet {2}. För att tillåta detta, inaktivera '{1}' i enhet {2}.", +Qty To Produce,Kvantitet att Producera, +Qty and Rate,Kvantitet och Pris, +Qty as Per Stock UOM,Kvantitet per Lager Enhet, +Qty for which recursion isn't applicable.,Kvantitet för vilket rekursion inte är tillämplig., +Qty in Stock UOM,Kvantitet i Lager Enhet, +Qty of Finished Goods Item should be greater than 0.,Kvantitet Färdiga Artiklar ska vara högre än 0., +Qty to Be Consumed,Kvantitet att Förbruka, +Qty to Build,Kvantitet att Producera, +Qty to Fetch,Kvantitet att Hämta, +Qty to Produce,Kvantitet att Producera, +Qualification Status,Kvalificering Status, +Qualified,Kvalificerad, +Qualified By,Kvalificerad Av, +Qualified on,Kvalificerad(Datum), +Quality Inspection Parameter,Kvalitet Kontroll Parameter, +Quality Inspection Parameter Group,Kvalitet Kontroll Parametrar Grupp, +Quality Inspection Settings,Kvalitet Kontroll Inställningar, +Quality Inspection(s),Kvalitet Kontroll, +Quantity is required,Kvantitet erfodras, +"Quantity must be greater than zero, and less or equal to {0}",Kvantitet måste vara större än noll och mindre eller lika med {0}, +Quantity to Produce should be greater than zero.,Kvantitet att producera ska vara högre än noll., +Quantity to Scan,Kvantitet att Skanna, +Quarter {0} {1},Kvartal {0} {1}, +Quotation Number,Försäljning Offert Nummer, +Quoted Amount,Offererad Belopp, +Rate Difference with Purchase Invoice,Pris Differens mot Inköp Faktura, +Rate Section,Pris, +Rate of Stock UOM,Pris av Lager Enhet, +Ratios,Förhållanden, +Raw Material Cost Per Qty,Råmaterial Kostnad per Kvantitet, +Raw Material Item,Råmaterial Artikel, +Raw Material Value,Råmaterial Värde, +Raw Materials Actions,Råmaterial Åtgärder, +Raw Materials Consumption ,Råmaterial Förbrukning , +Raw Materials Warehouse,Råmaterial Lager, +Reached Root,Nått Rot, +Reading Value,Avläst Värde, +Reason for hold:,Anledning för Spärr:, +Rebuild Tree,Bygg om Träd, +Rebuilding BTree for period ...,Bygger om BTree för period ..., +Recalculate Incoming/Outgoing Rate,Räkna om In/Ut Pris, +Recalculating Purchase Cost against this Project...,Räkna om Inköp Kostnad mot detta Projekt..., +Receivable/Payable Account,Fordring / Skuld Konto, +Receivable/Payable Account: {0} doesn't belong to company {1},Fordring / Skuld Konto: {0} tillhör inte bolag {1}, +Received Amount After Tax,Mottaget Belopp Efter Moms, +Received Amount After Tax (Company Currency),Mottaget Belopp Efter Moms (Bolag Valuta), +Received Amount cannot be greater than Paid Amount,Mottaget Belopp kan inte vara högre än Betald Belopp, +Received Qty in Stock UOM,Mottagen Kvantitet (per Lager Enhet), +Recent Orders,Senaste Ordrar, +Recent Transactions,Senaste Transaktioner, +Reconcile All Serial Nos / Batches,Stäm av alla Serie Nummer / Partier, +Reconcile on Advance Payment Date,Stäm av på Förskott Betalning Datum, +Reconcile the Bank Transaction,Avstäm Bank Transaktion, +Reconciled Entries,Avstämda Poster, +Reconciliation Error Log,Avstämning Fel Logg, +Reconciliation Logs,Avstämning Logg, +Reconciliation Progress,Avstämning Framsteg, +Recording HTML,Inspelning HTML, +Recoverable Standard Rated expenses should not be set when Reverse Charge Applicable is Y,Återställbara Standard Klassade Kostnader ska inte anges när Omvänd Debitering är Ja, +Recurse Every (As Per Transaction UOM),Rekurs Varje (per Transaktion Enhet), +Recurse Over Qty cannot be less than 0,Rekurs Över Kvantitet får inte vara mindre än 0, +Recursive Discounts with Mixed condition is not supported by the system,Rekursiva Rabatter med Blandat Villkor stöds inte av system, +Reference Date for Early Payment Discount,Referens Datum för Tidig Betalning Rabatt, +Reference Detail,Referens Detalj, +Reference DocType,Referens DocType, +Reference Exchange Rate,Referens Växel Kurs, +Reference No,Referens Nummer. , +Reference number of the invoice from the previous system,Referens Nummer på Faktura från tidigare system, +References to Sales Invoices are Incomplete,Referenser till Försäljning Fakturor är ofullständiga, +References to Sales Orders are Incomplete,Referenser till Försäljning Ordrar är ofullständiga, +References {0} of type {1} had no outstanding amount left before submitting the Payment Entry. Now they have a negative outstanding amount.,Referenser {0} av typ {1} hade inget utestående belopp kvar innan godkännande av Betalning Post. Nu har de negativ utestående belopp., +Refresh Google Sheet,Uppdatera Google Sheet, +Refresh Plaid Link,Uppdatera Plaid Länk, +Regenerate Closing Stock Balance,Återskapa Stängning Lager Saldo, +Rejected Serial and Batch Bundle,Avvisad Serie och Parti Paket, +Rejected Warehouse and Accepted Warehouse cannot be same.,Avvisad lager och Accepterad lager kan inte vara samma., +Remarks Column Length,Anmärkningar Kolumn Bredd, +Remove Parent Row No in Items Table,Ta bort Överordnad Radnummer i Artikel Tabell, +Repair,Reparera, +Repair Asset,Reparera Tillgång, +Repair Details,Reparation Detaljer, +"Replace a particular BOM in all other BOMs where it is used. It will replace the old BOM link, update cost and regenerate ""BOM Explosion Item"" table as per new BOM. +It also updates latest price in all the BOMs.","Ersätt stycklista i alla andra stycklistor där den används. Den kommer att ersätta gamla stycklista länk, uppdatera kostnaden och regenerera tabell ""Stycklista Utvidgad Artikel"" enligt ny stycklista. +Den uppdaterar också senaste pris i alla stycklistor.", +Report Error,Rapport Fel, +Report Filters,Rapport Sortering, +Report View,Rapport Vy, +Repost Accounting Ledger,Posta om Bokföring Register, +Repost Accounting Ledger Items,Posta om Bokföring Register Poster, +Repost Accounting Ledger Settings,Posta om Bokföring Register Poster Inställningar, +Repost Allowed Types,Posta om Tillåtna Typer, +Repost Error Log,Posta om Fel Logg, +Repost Item Valuation,Posta om Artikel Värdering, +Repost Payment Ledger,Posta om Betalning Register, +Repost Payment Ledger Items,Posta om Betalning Register Poster, +Repost has started in the background,Repost startad i bakgrund, +Repost in background,Repost i bakgrund, +Repost started in the background,Repost startad i bakgrund, +Reposting Completed {0}%,Repostering Klar {0}%, +Reposting Data File,Repostering av Data Fil, +Reposting Info,Repostering Info, +Reposting Progress,Repostering Framsteg, +Reposting entries created: {0},Repostering Poster skapade: {0}, +Reposting has been started in the background.,Repostering startad i bakgrund, +Reposting in the background.,Repostering i bakgrund, +Represents a Financial Year. All accounting entries and other major transactions are tracked against the Fiscal Year.,Representerar ett bokföringsår. Alla bokföringsposter och andra större transaktioner spåras mot bokföringsår., +Request Parameters,Begäran Parametrar, +Request Timeout,Begäran Löpte Ut, +Reservation Based On,Reservation Baserad På, +Reserve,Reservera, +Reserve Stock,Reservera, +"Reserved Qty ({0}) cannot be a fraction. To allow this, disable '{1}' in UOM {3}.","Reserverat Kvantitet ({0}) kan inte vara bråkdel. För att tillåta detta, inaktivera '{1}' i Enhet {3}.", +Reserved Qty for Production Plan,Reserverad Kvantitet för Produktion Plan, +Reserved Qty for Subcontract,Reserverad Kvantitet för Underleverantör, +Reserved Qty should be greater than Delivered Qty.,Reserverad Kvantitet ska vara högre än Levererad Kvantitet., +Reserved Serial No.,Reserverad Serie Nummer, +Reserved Stock,Reserverad, +Reserved Stock for Batch,Reserverad för Parti, +Reserved for POS Transactions,Reserverad för Kassa, +Reserved for Production,Reserverad för Produktion, +Reserved for Production Plan,Reserverad för Produktion Plan, +Reserved for Sub Contracting,Reserverad för Underleverantör, +Reserving Stock...,Reserverar...., +Reset Company Default Values,Återställ Bolag Standard Värde, +Reset Plaid Link,Återställ Plaid Länk, +Reset Raw Materials Table,Återställ Råmaterial Tabell, +Resolution Due,Beslut om, +Response and Resolution,Svar och Lösning, +Restart,Starta om, +Restore Asset,Återställ Tillgång, +Restrict,Begränsa, +Restrict Items Based On,Begränsa Artiklar Baserat På, +Result Key,Resultat Nyckel, +Resume Job,Återuppta Jobb, +Retried,Försökte igen, +Retry,Försök igen, +Retry Failed Transactions,Försök igen med Misslyckade Transaktioner, +Return Against,Retur Mot, +Return Against Subcontracting Receipt,Retur mot Underleverantör Följesedel, +Return Components,Returnera Komponenter, +Return Issued,Retur Utfärdad, +Return Qty,Retur Kvantitet, +Return Qty from Rejected Warehouse,Retur Kvantitet från Avvisad Lager, +Return of Components,Retur av Komponenter, +Returned,Retur, +Returned Against,Returnerad Mot, +Returned Qty ,Retur Kvantitet, +Returned Qty in Stock UOM,Retur Kvantitet (per Lager Enhet), +Returned exchange rate is neither integer not float.,Returnerad växelkurs är varken heltal eller flyttal., +Revaluation Journals,Omvärdering Journaler, +Revaluation Surplus,Omvärdering Överskott, +Revenue,Intäkt, +Reversal Of,Återföring Av, +Right Child,Höger Underordnad, +Role Allowed to Create/Edit Back-dated Transactions,Roll Godkänd att Skapa/Redigera Bakdaterade Transaktioner, +Role Allowed to Over Bill ,Roll Godkänd att Överfakturera, +Role Allowed to Over Deliver/Receive,Roll Godkänd att Över Leverera/Ta Emot, +Role Allowed to Override Stop Action,Roll Godkänd att Åsidosätta Stopp Åtgärd, +Role allowed to bypass Credit Limit,Roll Godkänd att Åsidosätta Kredit Gräns, +Root,Klass, +"Root Type for {0} must be one of the Asset, Liability, Income, Expense and Equity","Konto Klass för {0} måste vara en av följande klasser: Tillgång, Skuld, Intäkt, Kostnad och Eget Kapital", +Round Free Qty,Avrunda Gratis Kvantitet, +Round Off Tax Amount,Avrunda Moms Belopp, +Round Tax Amount Row-wise,Avrunda Moms Belopp per Artikelrad, +Rounding Loss Allowance,Avrundning Förlust Tillåtelse, +Rounding Loss Allowance should be between 0 and 1,Avrundning Förlust Tillåtelse ska vara mellan 0 och 1, +Rounding gain/loss Entry for Stock Transfer,Avrundning Resultat Post för Lager Överföring, +Row #,Rad #, +Row # {0}:,Rad # {0}:, +Row #{0}: A reorder entry already exists for warehouse {1} with reorder type {2}.,Rad # {0}: Återbeställning Post finns redan för lager {1} med återbeställning typ {2}., +Row #{0}: Acceptance Criteria Formula is incorrect.,Rad # {0}: Godkännande Villkor Formel är felaktig., +Row #{0}: Acceptance Criteria Formula is required.,Rad # {0}: Godkännande Villkor Formel erfodras., +Row #{0}: Accepted Warehouse and Rejected Warehouse cannot be same,Rad # {0}: Godkänd Lager och Avvisat Lager kan inte vara samma, +Row #{0}: Accepted Warehouse is mandatory for the accepted Item {1},Rad # {0}: Godkänd Lager erfodras för godkänd Artikel {1}, +Row #{0}: Allocated Amount cannot be greater than Outstanding Amount of Payment Request {1},Rad #{0}: Tilldelad belopp kan inte vara högre än utestående belopp för betalning begäran {1}, +Row #{0}: Allocated amount:{1} is greater than outstanding amount:{2} for Payment Term {3},Rad # {0}: Tilldela belopp:{1} är högre än utestående belopp:{2} för Betalning Villkor {3}, +Row #{0}: Amount must be a positive number,Rad # {0}: Belopp måste vara positiv tal, +Row #{0}: BOM is not specified for subcontracting item {0},Rad # {0}: Stycklista är inte specificerad för Underleverantör Artikel {0}, +Row #{0}: Batch No {1} is already selected.,Rad # {0}: Parti Nummer {1} är redan vald., +Row #{0}: Cannot allocate more than {1} against payment term {2},Rad # {0}: Kan inte tilldela mer än {1} mot betalning villkor {2}, +Row #{0}: Cannot transfer more than Required Qty {1} for Item {2} against Job Card {3},Rad # {0}: Kan inte överföra mer än Erforderlig Kvantitet {1} för Artikel {2} mot Jobbkort {3}, +Row #{0}: Consumed Asset {1} cannot be Draft,Rad # {0}: Förbrukad Tillgång {1} kan inte vara Utkast, +Row #{0}: Consumed Asset {1} cannot be cancelled,Rad # {0}: Förbrukad tillgång {1} kan inte annulleras, +Row #{0}: Consumed Asset {1} cannot be the same as the Target Asset,Rad # {0}: Förbrukad Tillgång {1} kan inte vara samma som Mål Tillgång, +Row #{0}: Consumed Asset {1} cannot be {2},Rad # {0}: Förbrukad Tillgång {1} kan inte vara {2}, +Row #{0}: Consumed Asset {1} does not belong to company {2},Rad # {0}: Förbrukad Tillgång {1} tillhör inte Bolag {2}, +Row #{0}: Cumulative threshold cannot be less than Single Transaction threshold,Rad # {0}: Kumulativ tröskel får inte vara lägre än Enskild Transaktion tröskel, +Row #{0}: Dates overlapping with other row,Rad # {0}: Datum överlappar andra rad , +Row #{0}: Default BOM not found for FG Item {1},Rad # {0}: Standard Stycklista hittades inte för Färdig Artikel {1} , +Row #{0}: Expense Account not set for the Item {1}. {2},Rad # {0}: Kostnad Konto inte angiven för Artikel {1}. {2}, +Row #{0}: Finished Good Item Qty can not be zero,Rad # {0}: Färdig Artikel Kvantitet kan inte vara noll, +Row #{0}: Finished Good Item is not specified for service item {1},Rad # {0}: Färdig Artikel är inte specificerad för Service Artikel {1} , +Row #{0}: Finished Good Item {1} must be a sub-contracted item,Rad # {0}: Färdig Artikel {1} måste vara Underleverantör Artikel , +Row #{0}: Finished Good reference is mandatory for Scrap Item {1}.,Rad # {0}: Färdig Artikel referens erfodras för Rest Artikel {1}. , +Row #{0}: For {1} Clearance date {2} cannot be before Cheque Date {3},Rad #{0}: För {1} Avstämning datum {2} kan inte vara före Check Datum {3}, +"Row #{0}: For {1}, you can select reference document only if account gets credited",Rad # {0}: För {1} kan du välja referens dokument endast om konto krediteras, +"Row #{0}: For {1}, you can select reference document only if account gets debited",Rad # {0}: För {1} kan du välja referens dokument endast om konto debiteras, +Row #{0}: From Date cannot be before To Date,Rad # {0}: Från Datum kan inte vara före Till Datum, +Row #{0}: Item {1} does not exist,Rad # {0}: Artikel {1} finns inte, +"Row #{0}: Item {1} has been picked, please reserve stock from the Pick List.","Rad # {0}: Artikel {1} är plockad, reservera lager från Plocklista. ", +Row #{0}: Item {1} is not a service item,Rad # {0}: Artikel {1} är inte service artikel, +Row #{0}: Item {1} is not a stock item,Rad # {0}: Artikel {1} är inte service artikel, +Row #{0}: Only {1} available to reserve for the Item {2},Rad # {0}: Endast {1} tillgänglig att reservera för artikel {2} , +Row #{0}: Please select Item Code in Assembly Items,Rad # {0}: Välj Artikel Kod för Montering Artiklar, +Row #{0}: Please select the BOM No in Assembly Items,Rad # {0}: Välj Stycklista Nummer för Montering Artiklar, +Row #{0}: Please select the Sub Assembly Warehouse,Rad # {0}: Välj Undermontering Lager, +Row #{0}: Please update deferred revenue/expense account in item row or default account in company master,Rad # {0}: Uppdatera konto för uppskjutna intäkter/kostnader i artikel rad eller standard konto i bolag, +Row #{0}: Qty increased by {1},Rad # {0}: Kvantitet ökade med {1}, +Row #{0}: Qty must be a positive number,Rad # {0}: Kvantitet måste vara psitivt tal, +Row #{0}: Qty should be less than or equal to Available Qty to Reserve (Actual Qty - Reserved Qty) {1} for Iem {2} against Batch {3} in Warehouse {4}.,Rad # {0}: Kvantitet ska vara mindre än eller lika med tillgänglig kvantitet att reservera (verklig antal - reserverad antal) {1} för artikel {2} mot parti {3} i lager {4}., +Row #{0}: Quantity to reserve for the Item {1} should be greater than 0.,Rad # {0}: Kvantitet att reservera för Artikel {1} ska vara högre än 0., +Row #{0}: Rate must be same as {1}: {2} ({3} / {4}),Rad #{0}: Pris måste vara samma som {1}: {2} ({3} / {4}) , +Row #{0}: Received Qty must be equal to Accepted + Rejected Qty for Item {1},Rad #{0}: Mottaget Kvantitet måste vara lika med Godkänd + Avvisad Kvantitet för Artikel {1}, +Row #{0}: Rejected Qty cannot be set for Scrap Item {1}.,Rad # {0}: Avvisad Kvantitet kan inte anges för Rest Artikel {1}., +Row #{0}: Rejected Warehouse is mandatory for the rejected Item {1},Rad # {0}: Avvisad Lager erfodras för avvisad Artikel {1}, +Row #{0}: Scrap Item Qty cannot be zero,Rad # {0}: Rest Artikel Kvantitet kan inte vara noll, +"Row #{0}: Selling rate for item {1} is lower than its {2}. + Selling {3} should be atleast {4}.

Alternatively, + you can disable selling price validation in {5} to bypass + this validation.","Rad # {0}: Försäljning Pris för artikel {1} är lägre än {2}. + Försäljning Pris {3} ska vara minst {4}.

Alternativt, + kan man inaktivera validering av försäljning pris i {5} för att kringgå + denna validering.", +Row #{0}: Serial No {1} for Item {2} is not available in {3} {4} or might be reserved in another {5}.,Rad # {0}: Serie Nummer {1} för artikel {2} är inte tillgänglig i {3} {4} eller kan vara reserverad i annan {5}., +Row #{0}: Serial No {1} is already selected.,Rad # {0}: Serie Nummer {1} är redan vald., +Row #{0}: Start Time and End Time are required,Rad # {0}: Från Tid och till Tid erfodras. , +Row #{0}: Start Time must be before End Time,Rad # {0}: Från Tid måste vara före till Tid , +Row #{0}: Status is mandatory,Rad # {0}: Status erfodras, +Row #{0}: Stock cannot be reserved for Item {1} against a disabled Batch {2}.,Rad # {0}: Lager kan inte reserveras för artikel {1} mot inaktiverad Parti {2}., +Row #{0}: Stock cannot be reserved for a non-stock Item {1},Rad # {0}: Lager kan inte reserveras för artikel som inte finns i lager {1}, +Row #{0}: Stock cannot be reserved in group warehouse {1}.,Rad # {0}: Lager kan inte reserveras i Grupp Lager {1}., +Row #{0}: Stock is already reserved for the Item {1}.,Rad # {0}: Lager är redan reserverad för artikel {1}., +Row #{0}: Stock is reserved for item {1} in warehouse {2}.,Rad # {0}: Lager är reserverad för artikel {1} i lager {2}., +Row #{0}: Stock not available to reserve for Item {1} against Batch {2} in Warehouse {3}.,Rad # {0}: Lager är inte tillgänglig att reservera för artikel {1} mot Parti {2} i Lager {3}., +Row #{0}: Stock not available to reserve for the Item {1} in Warehouse {2}.,Rad # {0}: Kvantitet ej tillgänglig för reservation för Artikel {1} på {2} Lager., +Row #{0}: The warehouse {1} is not a child warehouse of a group warehouse {2},Rad # {0}: Lager {1} är inte underordnad till grupp lager {2}, +Row #{0}: You cannot use the inventory dimension '{1}' in Stock Reconciliation to modify the quantity or valuation rate. Stock reconciliation with inventory dimensions is intended solely for performing opening entries.,Rad # {0}: Man kan inte använda Lager Dimension '{1}' i Lager Avstämning för att ändra kvantitet eller Grund Pris. Lager Avstämning med Lager Dimensioner är endast avsedd för att utföra öppningsposter., +Row #{0}: You must select an Asset for Item {1}.,Rad # {0}: Du måste välja Tillgång för Artikel {1}., +Row #{0}: {1} is not a valid reading field. Please refer to the field description.,Rad #{0}: {1} är inte giltigt läsfält. Se fält beskrivning., +Row #{0}: {1} of {2} should be {3}. Please update the {1} or select a different account.,Rad # {0}: {1} av {2} ska vara {3}. Uppdatera {1} eller välj ett annat konto., +Row #{1}: Warehouse is mandatory for stock Item {0},Rad # {1}: Lager erfodras för lager artikel {0} , +Row #{}: Finance Book should not be empty since you're using multiple.,Rad # {}: Finans Register ska inte vara tom eftersom du använder flera., +Row #{}: Please use a different Finance Book.,Rad # {}: Använd annan Finans Register., +Row #{}: The original Invoice {} of return invoice {} is not consolidated.,Rad #{}: Ursprunglig Faktura {} för Retur Faktura {} är inte konsoliderad., +Row #{}: item {} has been picked already.,Rad # {}: Artikel {} är redan plockad., +Row #{}: {} {} doesn't belong to Company {}. Please select valid {}.,Rad # {}: {} {} tillhör inte bolag {}. Välj giltig {}., +Row No {0}: Warehouse is required. Please set a Default Warehouse for Item {1} and Company {2},Rad # {0}: Lager erfodras. Ange Standard Lager för Artikel {1} och Bolag {2}, +Row Number,Rad Nummer, +Row {0},Rad {0}, +"Row {0} picked quantity is less than the required quantity, additional {1} {2} required.","Rad # {0}: Plockad kvantitet är lägre än erfodrad kvantitet, ytterligare {1} {2} erfodras.", +Row {0}# Item {1} cannot be transferred more than {2} against {3} {4},Rad # {0}: Artikel {1} kan inte överföras mer än {2} mot {3} {4}, +Row {0}# Item {1} not found in 'Raw Materials Supplied' table in {2} {3},"Rad # {0}: Artikel {1} hittades inte i tabellen ""Råmaterial Levererad"" i {2} {3}", +Row {0}: Accepted Qty and Rejected Qty can't be zero at the same time.,Rad # {0}: Godkänd Kvantitet och Avvisad Kvantitet kan inte vara noll samtidigt., +Row {0}: Account {1} and Party Type {2} have different account types,Rad # {0}: Konto {1} och Parti Typ {2} har olika konto typer, +Row {0}: Allocated amount {1} must be less than or equal to invoice outstanding amount {2},Rad # {0}: Tilldelad belopp {1} måste vara lägre än eller lika med utestående faktura belopp {2}, +Row {0}: Allocated amount {1} must be less than or equal to remaining payment amount {2},Rad # {0}: Tilldelad belopp {1} måste vara lägre än eller lika med återstående betalning belopp {2}, +"Row {0}: As {1} is enabled, raw materials cannot be added to {2} entry. Use {3} entry to consume raw materials.",Rad {0}: Eftersom {1} är aktiverat kan råmaterial inte läggas till {2} post. Använd {3} post för att förbruka råmaterial., +Row {0}: Both Debit and Credit values cannot be zero,Rad # {0}: Både debet och kredit värdena kan inte vara noll, +Row {0}: Cost Center {1} does not belong to Company {2},Rad # {0}: Resultat Enhet {1} tillhör inte Bolag {2}, +Row {0}: Either Delivery Note Item or Packed Item reference is mandatory.,Rad # {0}: Antingen Följesedel eller Packad Artikel Referens erfordras, +Row {0}: Expense Head changed to {1} as no Purchase Receipt is created against Item {2}.,Rad # {0}: Kostnad har ändrats till {1} eftersom inget Inköp Följesedel är skapad mot Artikel {2}., +Row {0}: Expense Head changed to {1} because account {2} is not linked to warehouse {3} or it is not the default inventory account,Rad # {0}: Kostnad har ändrats till {1} eftersom konto {2} inte är länkat till lager {3} eller det inte är standard konto för lager, +Row {0}: Expense Head changed to {1} because expense is booked against this account in Purchase Receipt {2},Rad # {0}: Kostnad har ändrats till {1} eftersom kostnad bokförs mot detta konto i Inköp Följesedel {2}, +Row {0}: From Warehouse is mandatory for internal transfers,Rad # {0}: Från Lager erfodras för interna överföringar, +Row {0}: Item Tax template updated as per validity and rate applied,Rad # {0}: Artikel Moms Mall uppdaterad enligt giltighet och tillämpad moms sats, +Row {0}: Item rate has been updated as per valuation rate since its an internal stock transfer,Rad # {0}: Artikel Pris är uppdaterad enligt Grund Pris eftersom det är intern lager överföring, +Row {0}: Item {1} must be a stock item.,Rad # {0}: Artikel {1} måste vara lager artikel., +Row {0}: Item {1} must be a subcontracted item.,Rad # {0}: Artikel {1} måste vara Underleverantör Artikel., +Row {0}: Packed Qty must be equal to {1} Qty.,Rad # {0}: Packad Kvantitet måste vara lika med {1} Kvantitet., +Row {0}: Packing Slip is already created for Item {1}.,Rad # {0}: Packsedel är redan skapad för Artikel {1}., +Row {0}: Payment Term is mandatory,Rad # {0}: Betalning Villkor Erfodras, +Row {0}: Please provide a valid Delivery Note Item or Packed Item reference.,Rad # {0}: Ange giltig referens för Försäljning Följesedel eller Packsedel., +Row {0}: Please select a BOM for Item {1}.,Rad # {0}: Välj Stycklista för Artikel {1}., +Row {0}: Please select an active BOM for Item {1}.,Rad # {0}: Välj aktiv Stycklista för Artikel {1}., +Row {0}: Please select an valid BOM for Item {1}.,Rad # {0}: Välj giltig Stycklista för Artikel {1}, +Row {0}: Project must be same as the one set in the Timesheet: {1}.,Rad # {0}: Projekt måste vara samma som är angiven i tidrapport: {1}., +Row {0}: Purchase Invoice {1} has no stock impact.,Rad # {0}: Inköp Faktura {1} har ingen efekt på lager., +Row {0}: Qty cannot be greater than {1} for the Item {2}.,Rad # {0}: Kvantitet får inte vara högre än {1} för Artikel {2}., +Row {0}: Qty in Stock UOM can not be zero.,Rad # {0}: Kvantitet i Lager Enhet kan inte vara noll., +Row {0}: Qty must be greater than 0.,Rad # {0}: Kvantitet måste vara högre än 0., +Row {0}: Shift cannot be changed since the depreciation has already been processed,Rad # {0}: Förskjutning inte ändras eftersom avskrivning redan är behandlad, +Row {0}: Target Warehouse is mandatory for internal transfers,Rad # {0}: Till Lager erfodras för interna överföringar, +"Row {0}: To set {1} periodicity, difference between from and to date must be greater than or equal to {2}",Rad # {0}: För att ange periodicitet för {1} måste skillnaden mellan från och till datum vara större än eller lika med {2}, +Row {0}: Total Number of Depreciations cannot be less than or equal to Opening Number of Booked Depreciations,Rad # {0}: Totalt Antal Avskrivningar får inte vara mindre än eller lika med antal bokförda avskrivningar, +Row {0}: {1} account already applied for Accounting Dimension {2},Rad # {0}: {1} konto är redan tillämpad för Bokföring Dimension {2}, +Row {0}: {1} {2} cannot be same as {3} (Party Account) {4},Rad # {0}: {1} {2} kan inte vara samma som {3} (Parti Konto) {4}, +Row {0}: {2} Item {1} does not exist in {2} {3},Rad # {0}: {2} Artikel {1} finns inte i {2} {3}, +Row({0}): Outstanding Amount cannot be greater than actual Outstanding Amount {1} in {2},Rad # ({0}): Utestående belopp kan inte vara högre än verklig utestående belopp {1} i {2}, +Rows with Same Account heads will be merged on Ledger,Rader med samma Konto Poster kommer slås samman i Bokföring Register, +Rows: {0} have 'Payment Entry' as reference_type. This should not be set manually.,"Rader: {0} har ""Betalning Post"" som referens typ. Detta ska inte anges manuellt.", +Rows: {0} in {1} section are Invalid. Reference Name should point to a valid Payment Entry or Journal Entry.,Rader: {0} i sektion {1} är ogiltiga. Referens namn ska peka på giltig Betalning Post eller Journal Post, +Run parallel job cards in a workstation,Kör parallella jobbkort på arbetsplats, +Running,Behandlar, +SCO Supplied Item,Underleverantör Levererad Artikel, +SLA Fulfilled On,Service Nivå Avtal Uppfylld , +SLA Fulfilled On Status,Service Nivå Avtal Uppfylld Status, +SLA Paused On,Service Nivå Avtal Pausad, +SLA will be applied if {1} is set as {2}{3},"Service Nivå Avtal kommer att tillämpas om {1} är angiven som {2}{3} +​", +SLA will be applied on every {0},Service Nivå Avtal kommer att tillämpas varje {0}, +SMS Settings,SMS Inställningar, +SO Total Qty,Försäljning Order Totalt Kvantitet, +Salary Currency,Lön Valuta, +Sales Incoming Rate,Inkommande Försäljning Pris, +Sales Invoice {0} must be deleted before cancelling this Sales Order,Försäljning Faktura {0} måste annulleras innan annullering av denna Försäljning Order, +Sales Order Packed Item,Försäljning Order Packad Artikel, +Sales Order Reference,Försäljning Order Referens, +Sales Order Status,Försäljning Order Status, +"Sales Order {0} already exists against Customer's Purchase Order {1}. To allow multiple Sales Orders, Enable {2} in {3}","Försäljning Order {0} finns redan mot Kund Inköp Order {1}. För att tillåta flera Försäljning Ordrar, aktivera {2} i {3}", +Sales Partner ,Försäljning Partner, +Sales Partner Item,Försäljning Partner Artikel, +Sales Partner Target Variance Based On Item Group,Artikel Grupp Mål Avvikelse per Försäljning Partner, +Sales Pipeline Analytics,Försäljning Analys, +Sales Update Frequency in Company and Project,Försäljning Uppdatering Intervall, +Sales Value,Försäljning Värde, +Salvage Value Percentage,Procentuellt Rest Värde, +Same item and warehouse combination already entered.,Samma artikel och lager kombination är redan angivna., +Savings,Besparingar, +Scan Batch No,Skanna Parti Nummer, +Scan Mode,Skanning Läge, +Scan Serial No,Skanna Serie Nummer, +Scan barcode for item {0},Skanna Streckkod för artikel {0}, +"Scan mode enabled, existing quantity will not be fetched.","Skanning Läge aktiverad, befintlig kvantitet kommer inte att hämtas.", +Scanned Quantity,Skannad Kvantitet, +Scheduled Time Logs,Schemalagda Tidsloggar, +Scheduler is Inactive. Can't trigger job now.,Schemaläggare är inaktiv. Kan inte starta jobb nu., +Scheduler is Inactive. Can't trigger jobs now.,Schemaläggare är inaktiv. Kan inte starta jobb nu., +Scheduler is inactive. Cannot enqueue job.,Schemaläggare är inaktiv. Kan inte placera jobb i kö., +Scheduler is inactive. Cannot merge accounts.,Schemaläggare är inaktiv. Kan inte slå samman konton., +Scheduling,Schemaläggning, +"Scorecard variables can be used, as well as: +{total_score} (the total score from that period), +{period_number} (the number of periods to present day) +","Resultatkort variabler kan användas, såväl som: +{total_score} (totalt resultat från detta period), +{period_number} (antal intervall tills nu) +", +Scrap & Process Loss,Rest & Bearbetning Förlust, +Scrap Asset,Rest Tillgång, +Scrap Cost Per Qty,Rest Kostnad per Kvantitet, +Scrap Item Code,Rest Artikel Kod, +Scrap Item Name,Rest Artikel Namn, +"Search by item code, serial number or barcode","Sök efter Artikel Kod, Serie Nummer eller Streck/QR Kod", +Secondary Party,Sekundär Parti, +Secondary Role,Sekundär Roll, +Segregate Serial / Batch Bundle,Skilj Serie / Parti Paket, +Select Accounting Dimension.,Välj Bokföring Dimension, +Select Alternative Items for Sales Order,Välj Alternativ Artikel för Försäljning Order, +Select Batch No,Välj Parti Nummer, +Select Corrective Operation,Välj Korrigerande Åtgärd, +Select Date of Birth. This will validate Employees age and prevent hiring of under-age staff.,Välj Födelsedag. Detta kommer att validera personal ålder och förhindra anställning av minderårig personal., +"Select Date of joining. It will have impact on the first salary calculation, Leave allocation on pro-rata bases.","Välj Anställning Datum. Detta kommer att påverka första lön, Ledighet tilldelning på proportionell bas.", +Select Dimension,Välj Dimension, +Select Finished Good,Välj Färdig Artikel, +Select Items for Quality Inspection, Välj Artiklar för Kvalitet Kontroll, +Select Job Worker Address,Välj Jobb Ansvarig Adress, +Select Serial No,Välj Serie Nummer, +Select Serial and Batch,Välj Serie Nummer och Parti Nummer, +Select Time,Välj Tid, +Select View,Välj Vy, +Select Vouchers to Match,Välj Verifikat, +Select Warehouses to get Stock for Materials Planning,Välj Lager för att hämta Lager Kvantitet för Material Planering, +Select a Company this Employee belongs to.,Välj Bolag som detta Personal tillhör till, +Select a Customer,Välj Kund, +Select an Item Group.,Välj Artikel Grupp, +Select an invoice to load summary data,Välj faktura för att ladda översikt data, +Select an item from each set to be used in the Sales Order.,Välj artikel från varje uppsättning som ska användas i Försäljning Order., +Select the Default Workstation where the Operation will be performed. This will be fetched in BOMs and Work Orders.,Välj Standard Arbetsstation där Åtgärd ska utföras. Detta kommer att läggas till Stycklistor och Arbetsordrar., +Select the Item to be manufactured.,Välj Artikel som ska produceras., +"Select the Item to be manufactured. The Item name, UoM, Company, and Currency will be fetched automatically.","Välj Artikel som ska produceras. Artikel Namn, Enhet, Bolag och Valuta kommer att hämtas automatiskt.", +Select the Warehouse,Välj Lager, +Select the date and your timezone,Välj Datum och Tidzon, +Select the raw materials (Items) required to manufacture the Item,Välj Råmaterial (Artiklar) som erfodras för att producera artikel, +"Select whether to get items from a Sales Order or a Material Request. For now select Sales Order. + A Production Plan can also be created manually where you can select the Items to manufacture.","Välj att få artiklar från Försäljning Order eller Material Begäran. För Tillfället Välj Försäljning Order. + Produktion Plan kan också skapas manuellt där man kan välja vilka artiklar som ska produceras.", +Select your weekly off day,Välj ledig dag i veckan, +Selected Vouchers,Valda Verifikat, +Selected date is,Vald Datum, +Selected document must be in submitted state,Vald dokument måste ha godkänd status, +Self delivery,Egen Leverans, +Sell Asset,Sälj Tillgång, +Send Attached Files,Skicka Bifogade Filer, +Send Document Print,Skicka Utskrifter, +Send Emails,Skicka E-post, +Sequential,Sekventiell, +Serial & Batch Item,Serie Nummer & Parti, +Serial & Batch Item Settings,Serie Nummer & Parti Inställningar, +Serial / Batch Bundle,Serie / Parti Paket, +Serial / Batch Bundle Missing,Serie / Parti Paket Saknas, +Serial / Batch No,Serie / Parti Nummer, +Serial / Batch Nos,Serie / Parti Nummer, +Serial No Ledger,Serie Nummer Register, +Serial No Range,Serienummer Intervall, +Serial No and Batch Selector cannot be use when Use Serial / Batch Fields is enabled.,Serie Nummer och Parti Väljare kan inte användas när Använd Serie Nummer / Parti Fält är aktiverad., +Serial No and Batch for Finished Good,Serie Nummer och Parti för Färdig Artikel, +Serial No is mandatory,Serie Nummer erfodras, +Serial No {0} already exists,Serie Nummer {0} finns redan, +Serial No {0} already scanned,Serie Nummer {0} är redan skannad, +Serial No {0} does not exists,Serie Nummer {0} finns inte , +Serial No {0} is already added,Serie Nummer {0} har redan lagts till, +Serial Nos,Serie Nummer., +Serial Nos / Batch Nos,Serie Nummer. / Parti Nummer., +Serial Nos Mismatch,Serie Nummer stämmer inte, +Serial Nos are created successfully,Serie Nummer skapade, +"Serial Nos are reserved in Stock Reservation Entries, you need to unreserve them before proceeding.","Serie Nmmer är reserverade iLagerreservationsinlägg, du måste avboka dem innan du fortsätter.", +Serial and Batch,Serie Nummer och Parti , +Serial and Batch Bundle,Serie och Parti Paket, +Serial and Batch Bundle created,Serie och Parti Paket skapad, +Serial and Batch Bundle updated,Serie och Parti Paket uppdaterad, +Serial and Batch Bundle {0} is already used in {1} {2}.,Serie och Parti Paket {0} används redan i {1} {2}., +Serial and Batch Details,Serie och Parti Detaljer, +Serial and Batch Entry,Serie och Parti Post, +Serial and Batch No,Serie och Parti Nummer, +Serial and Batch Nos,Serie och Parti Nummer, +Serial and Batch Nos will be auto-reserved based on Pick Serial / Batch Based On,Serie och Parti Nummer kommer att reserveras automatiskt baserat på Välj Serie/Parti baserat på, +Serial and Batch Reservation,Serie Nummer och Parti Reservation, +Serial and Batch Summary,Serie- och batchnummer kommer att reserveras automatiskt baserat på Välj serie/batch baserat på, +Service Cost Per Qty,Service Kostnad Per Kvantitet, +Service Expense Total Amount,Service Kostnad Totalt Belopp, +Service Expenses,Service Kostnader, +Service Item,Service Artikel, +Service Item Qty,Service Artikel Kvantitet, +Service Item Qty / Finished Good Qty,Service Artikel Kvantitet / Färdig Artikel Kvantitet, +Service Item UOM,Service Artikel Enhet, +Service Item {0} is disabled.,Service Artikel är inaktiverad, +Service Item {0} must be a non-stock item.,Service Artikel {0} får inte vara Lager Artikel., +Service Items,Service Artikel, +Service Level Agreement for {0} {1} already exists.,Service Nivå Avtal för {0} {1} finns redan., +Service Level Name,Service Nivå Namn, +Service Provider,Service Leverantör, +Set Default Supplier,Ange Standard Leverantör, +Set From Warehouse,Ange Från Lager, +Set Landed Cost Based on Purchase Invoice Rate,Ange Landad Kostnad baserat på Inköp Faktura Pris, +Set Loyalty Program,Ange Bonus Program, +Set Operating Cost / Scrape Items From Sub-assemblies,Ange Driftskostnad / Rest Artiklar från Underenheter, +Set Operating Cost Based On BOM Quantity,Ange Åtgärd Kostnad baserad på Stycklista, +Set Parent Row No in Items Table,Ange Överordnad Radnummer i Artikel Tabell, +Set Process Loss Item Quantity,Ange Process Förlust Artikel Kvantitet, +Set Project Status,Ange Projekt Status, +Set Quantity,Ange Kvantitet, +Set Response Time for Priority {0} in row {1}.,Ange Svarstid för Prioritet {0} i rad {1}., +Set Valuation Rate Based on Source Warehouse,Ange Grund Pris Baserad på Från Lager, +Set Warehouse,Välj Lager, +Set default {0} account for non stock items,Ange Standard {0} konto för Ej Lager Artiklar, +Set fieldname from which you want to fetch the data from the parent form.,Ange fältnamn från vilket data ska hämtas från överordnad formulär., +Set quantity of process loss item:,Ange kvantitet för Process Förlust Artikel:, +Set the Planned Start Date (an Estimated Date at which you want the Production to begin),Ange Planerad Start Datum, +Set the status manually.,Ange status manuellt., +Set {0} in asset category {1} for company {2},Ange {0} i Tillgång Kategori {1} för Bolag {2}, +Sets 'Accepted Warehouse' in each row of the Items table.,Ange 'Godkänd Lager' i varje rad i Artiklar Tabell, +Sets 'Rejected Warehouse' in each row of the Items table.,Ange 'Avvisad Lager' i varje rad i Artikel Tabell, +Sets 'Reserve Warehouse' in each row of the Supplied Items table.,Anger 'Reserv Lager' i varje rad i Levererad Artikel Tabell., +Setting Item Locations...,Anger Artikelplatser..., +Setting the account as a Company Account is necessary for Bank Reconciliation,Ange konto som Bolag Konto för Bank Avstämmning, +Setting {} is required,Konfigurera {} erfodras, +Setup your organization,Bolag Inställningar, +Shelf Life in Days,Hållbarhet i Dagar, +Shift,Skift, +Shift Factor,Förskjutning Faktor, +Shift Name,Förskjutning Namn, +Shipment,Leverans, +Shipment Amount,Leverans Belopp, +Shipment Delivery Note,Leverans Försäljning Följesedel, +Shipment ID,Leverans ID, +Shipment Information,Leverans Information, +Shipment Parcel,Leverans Paket, +Shipment Parcel Template,Leverans Paket Mall, +Shipment Type,Leverans Typ, +Shipment details,Leverans Detaljer, +Shipping Address Details,Leverans Adress Detaljer, +Shipping Address Template,Leverans Adress Mall, +Show Balances in Chart Of Accounts,Visa Saldo i Kontoplan, +Show Barcode Field in Stock Transactions,Visa Streck/QR Kod Fält i Lager Transaktioner, +Show Dimension Wise Stock,Visa Lager per Dimension, +Show Disabled Warehouses,Visa Inaktiverade Lager, +Show Failed Logs,Visa Misslyckade Logg, +Show GL Balance,Visa Bokföring Register Saldo, +Show Item Name,Visa Artikel Namn, +Show Ledger View,Visa Register Vy, +Show Net Values in Party Account,Visa Nettovärde i Parti Konto, +Show Pay Button in Purchase Order Portal,Visa Betala Knapp i Portal, +Show Preview,Förhandsgranska, +Show Remarks,Visa Anmärkningar, +Show Taxes as Table in Print,Visa Moms Belopp som Kolumn, +Show net values in opening and closing columns,Visa Nettovärde i Öppning och Stängning kolumner, +Show only the Immediate Upcoming Term,Visa endast Omedelbart Kommande Villkor, +Show pending entries,Visa väntande poster, +Show with upcoming revenue/expense,Visa med kommande Intäkter/Kostnader, +"Simple Python Expression, Example: doc.status == 'Open' and doc.issue_type == 'Bug'","Enkelt Python uttryck, exempel: doc.status == 'Open' och doc.issue_type == 'Bug'", +"Simple Python formula applied on Reading fields.
Numeric eg. 1: reading_1 > 0.2 and reading_1 < 0.5
+Numeric eg. 2: mean > 3.5 (mean of populated fields)
+Value based eg.: reading_value in (""A"", ""B"", ""C"")","Enkel Python formel tillämpad på läsfält.
Numerisk t.ex. 1: reading_1 > 0.2 and reading_1 < 0.5
+Numerisk t.ex. 2: mean > 3.5 (mean of populated fields)
+Värde baserad t.ex.: reading_value in (""A"", ""B"", ""C"")", +Simultaneous,Samtidig, +Skip Available Sub Assembly Items,Hoppa över tillgängliga Delmontering Artiklar, +Skipped,Hoppade över, +Skipping Tax Withholding Category {0} as there is no associated account set for Company {1} in it.,Hoppar över Moms Undantag Kategori {0} eftersom det inte finns något konto associerat med Bolag {1}., +"Skipping {0} of {1}, {2}","Hoppa över {0} av {1}, {2}", +Sold by,Försäljare, +Something went wrong please try again,Något gick snett! Försök igen., +Source Exchange Rate,Käll Växelkurs, +Source Fieldname,Käll Fältnamn, +Source Warehouse Address Link,Från Lager Adress Länk, +South Africa VAT Account,Sydafrika Moms Konto, +South Africa VAT Settings,Sydafrika Moms Konto Inställningar, +Spacer,Mellanrum, +Split Asset,Dela Tillgång, +Split Early Payment Discount Loss into Income and Tax Loss,Dela Tidig Betalning Rabatt Bortfall i Intäkt och Moms Bortfall, +Split From,Dela Från, +Split Qty,Dela Kvantitet, +Split qty cannot be grater than or equal to asset qty,Delad kvantitet får inte vara större än eller lika med tillgång kvantitet, +Splitting {0} {1} into {2} rows as per Payment Terms,Delar {0} {1} i {2} rader enligt Betalning Villkor, +Stage,Stadie, +Stale Days should start from 1.,Inaktuella Dagar ska börja från 1., +Standard Description,Standard Beskrivning, +Standard Rated Expenses,Standard Klassade Kostnader, +"Standard Terms and Conditions that can be added to Sales and Purchases. Examples: Validity of the offer, Payment Terms, Safety and Usage, etc.","Standard Villkor som kan läggas till Försäljning och Inköp. Exempel: Erbjudande Giltighet, Betalningsvillkor, Säkerhet,Användning, etc.", +Standard rated supplies in {0},Standard Klassade Förbrukning Artiklar i {0}, +"Standard tax template that can be applied to all Purchase Transactions. This template can contain a list of tax heads and also other expense heads like ""Shipping"", ""Insurance"", ""Handling"", etc.","Standard Moms Mall som kan tillämpas på alla Inköp Transaktioner. Mallen kan innehålla lista över Moms Konto och även andra kostnad konto som ""Leverans"", ""Försäkring"", ""Hantering"" osv.", +"Standard tax template that can be applied to all Sales Transactions. This template can contain a list of tax heads and also other expense/income heads like ""Shipping"", ""Insurance"", ""Handling"" etc.","Standard Moms Mall som kan tillämpas på alla Försäljning Transaktioner. Mallen kan innehålla lista över Moms Konto och även andra kostnad konto som ""Leverans"", ""Försäkring"", ""Hantering"" osv.", +Start / Resume,Starta / Återuppta, +Start Date should be lower than End Date,Startdatum ska vara före Slutdatum, +Start Deletion,Starta Borttagning, +Start Import,Starta Import, +Start Job,Starta Jobb, +Start Merge,Starta Sammanslagning, +Start Reposting,Starta Ompostning, +Start Time can't be greater than or equal to End Time for {0}.,Start Tid får inte vara senare än eller lika med Slut Tid för {0}., +Started a background job to create {1} {0},Startade bakgrundsjobb för att skapa {1} {0}, +Status Details,Status Detaljer, +Status Illustration,Statusbild, +Status set to rejected as there are one or more rejected readings.,Status satt till avvisad eftersom det finns en eller flera avvisade avläsningar., +Stock Closing,Lager Låsning, +Stock Consumed During Repair,Lager Förbrukad under Reparation, +Stock Consumption Details,Lager Förbrukning Detaljer, +Stock Entries already created for Work Order {0}: {1},Lager Poster redan skapade för Arbetsorder {0}: {1}, +Stock Ledger Invariant Check,Lager Register Oföränderlig Kontroll, +Stock Ledger Variance,Lager Register Avvikelse, +Stock Movement,Lager Hantering, +Stock Planning,Lager Planering, +Stock Reposting Settings,Lager Ompostering Inställningar, +Stock Reservation,Lager Reservation, +Stock Reservation Entries Cancelled,Lager Reservation Poster Annullerade, +Stock Reservation Entries Created,Lager Reservation Poster Skapade, +Stock Reservation Entry,Lager Reservation Post, +Stock Reservation Entry cannot be updated as it has been delivered.,Lager Reservation Post kan inte uppdateras eftersom den är levererad. , +"Stock Reservation Entry created against a Pick List cannot be updated. If you need to make changes, we recommend canceling the existing entry and creating a new one.",Lager Reservation Post skapad mot Plocklista kan inte uppdateras. Om man behöver göra ändringar rekommenderas att man anullerar befintlig post och skapar ny. , +Stock Reservation Warehouse Mismatch,Lager Reservation för Lager stämmer inte, +Stock Reservation can only be created against {0}.,Lager Reservation kan endast skapas mot {0}., +Stock Reserved Qty (in Stock UOM),Lager Reserverad Kvantitet (Lager Enhet), +Stock Transactions Settings,Lager Transaktion Inställningar, +Stock UOM Quantity,Lager Kvantitet, +Stock Unreservation,Lager Reservation Annullering, +Stock Validations,Lager Validering, +Stock and Manufacturing,Lager & Produktion, +Stock cannot be reserved in group warehouse {0}.,Lager kan inte reserveras i grupp lager {0}., +Stock cannot be reserved in the group warehouse {0}.,Lager kan inte reserveras i grupp lager {0}., +Stock not available for Item {0} in Warehouse {1}.,Lager ej tillgängligt för Artikel {0} i Lager {1}., +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2} {3}.,Lager Kvantitet ej tillgänglig för Artikel Kod: {0} på lager {1}. Tillgänglig kvantitet {2} {3}., +Stock transactions that are older than the mentioned days cannot be modified.,Lager Transaktioner som är äldre än angiven antal dagar kan inte ändras., +Stock will be reserved on submission of Purchase Receipt created against Material Request for Sales Order.,Lager kommer att reserveras vid godkännade av Inköp Följesedel skapat mot Material Begäran för Försäljning Order., +Stock/Accounts can not be frozen as processing of backdated entries is going on. Please try again later.,Lager/Konton kan inte låsas eftersom bearbetning av bakdaterade poster pågår. Försök igen senare., +Sub Assemblies & Raw Materials,Delmonteringar & Råmaterial, +Sub Assembly Item,Delmontering Artikel, +Sub Assembly Item Code,Delmontering Artikel Kod, +Sub Assembly Items,Delmontering Artiklar, +Sub Assembly Warehouse,Delmontering Lager, +Sub Operation,Underåtgärd, +Sub Operations,Underåtgärder, +Subcontract BOM,Underleverantör Stycklista, +Subcontract Order,Underleverantör Order, +Subcontract Order Summary,Underleverantör Order Översikt, +Subcontract Return,Underleverantör Retur, +Subcontracting BOM,Underleverantör Stycklista, +Subcontracting Order,Underleverantör Order, +Subcontracting Order (Draft) will be auto-created on submission of Purchase Order.,Underleverantör Order (Utkast) kommer att skapas automatiskt vid godkännande av Inköp Order., +Subcontracting Order Item,Underleverantör Order Artikel, +Subcontracting Order Service Item,Underleverantör Order Service Artikel, +Subcontracting Order Supplied Item,Underleverantör Order Levererad Artikel, +Subcontracting Order {0} created.,Underleverantör Order {0} skapad, +Subcontracting Purchase Order,Underleverantör Inköp Order, +Subcontracting Receipt,Underleverantör Följesedel/Kvitto, +Subcontracting Receipt Item,Underleverantör Följesedel/Kvitto Artikel, +Subcontracting Receipt Supplied Item,Underleverantör Följesedel/Kvitto Levererad Artikel, +Subcontracting Settings,Underleverantör Inställningar, +Subdivision,Underavdelning, +Submit Action Failed,Godkännande Misslyckades, +Submit After Import,Godkänn efter Import, +Submit ERR Journals?,Godkänn ERR Journaler ?, +Submit Generated Invoices,Godkänn Skapade Fakturor, +Subscription for Future dates cannot be processed.,Prenumeration för framtida datum kan inte behandlas., +Succeeded,Klar, +Succeeded Entries,Klara Poster, +"Successfully changed Stock UOM, please redefine conversion factors for new UOM.","Lager Enhet ändrad, ändra konvertering faktor för ny enhet.", +Successfully imported {0},Importerade {0}, +"Successfully imported {0} record out of {1}. Click on Export Errored Rows, fix the errors and import again.","Importerade {0} post av {1}. Klicka på Exportera felaktiga rader, åtgärda fel och importera igen.", +Successfully imported {0} record.,Importerade {0} post., +"Successfully imported {0} records out of {1}. Click on Export Errored Rows, fix the errors and import again.","Importerade {0} poster av {1}. Klicka på Exportera felaktiga rader, åtgärda fel och importera igen.", +Successfully imported {0} records.,Importerade {0} poster., +Successfully linked to Customer,Länkad till Kund, +Successfully linked to Supplier,Länkad till Leverantör, +Successfully merged {0} out of {1}.,Slog samman {0} av {1}., +Successfully updated {0},Uppdaterade {0}, +"Successfully updated {0} record out of {1}. Click on Export Errored Rows, fix the errors and import again.","Uppdaterade {0} post av {1}. Klicka på Exportera felaktiga rader, åtgärda fel och importera igen.", +Successfully updated {0} record.,Uppdaterade {0} post., +"Successfully updated {0} records out of {1}. Click on Export Errored Rows, fix the errors and import again.","Uppdaterade {0} poster av {1}. Klicka på Exportera felaktiga rader, åtgärda fel och importera igen.", +Successfully updated {0} records.,Uppdaterade {0} poster., +Sum of Repair Cost and Value of Consumed Stock Items.,Summa för reparation kostnad och värde för förbrukade lager artiklar., +Supplied Item,Levererad Artikel, +Supplier Address Details,Leverantör Adress Detaljer, +Supplier Contact,Leverantör Kontakt, +Supplier Group Item,Leverantör Grupp Artikel, +Supplier Info,Leverantör Info, +Supplier Invoice,Leverantör Faktura, +Supplier Item,Leverantör Artikel, +Supplier Portal Users,Leverantör  Portal Användare, +Supplier Primary Address,Leverantör Primär Adress, +Supplier Primary Contact,Leverantör Primär Kontakt, +Supplier Warehouse mandatory for sub-contracted {0},Leverantör Lager erfodras för underleverantör {0}, +Supplies subject to the reverse charge provision,Leveranser som omfattas av omvänd betalning provision, +Sync Now,Synkronisera Nu, +Sync Started,Synkronisering Startad, +System Settings,System Inställningar, +System will automatically create the serial numbers / batch for the Finished Good on submission of work order,System kommer automatiskt att skapa serienummer/parti för färdig artikel vid godkännade av arbetsorder, +System will not check over billing since amount for Item {0} in {1} is zero,System kontrollerar inte överfakturering eftersom belopp för Artikel {0} i {1} är noll, +TCS Amount,TCS Belopp, +TCS Rate %,TDS Sats %, +TDS Amount,TDS Belopp, +TDS Payable,TDS Betalbar, +Target Asset,Tillgång, +Target Asset Location,Tillgång Plats, +Target Asset {0} cannot be cancelled,Tillgång {0} kan inte annulleras, +Target Asset {0} cannot be submitted,Tillgång {0} kan inte godkännas, +Target Asset {0} cannot be {1},Tillgång {0} kan inte bli {1}, +Target Asset {0} does not belong to company {1},Tillgång {0} tillhör inte bolag {1}, +Target Asset {0} needs to be composite asset,Tillgång {0} måste vara sammansatt tillgång, +Target Batch No,Parti Nummer, +Target Exchange Rate,Växelkurs, +Target Fieldname (Stock Ledger Entry),Fältnamn (Lager Register Post), +Target Fixed Asset Account,Tillgång Konto, +Target Has Batch No,Har Parti Nummer, +Target Has Serial No,Har Serie Nummer, +Target Incoming Rate,In Pris, +Target Is Fixed Asset,Är Tillgång, +Target Item Code,Artikel Kod, +Target Item Name,Artikel Namn, +Target Item {0} is neither a Fixed Asset nor a Stock Item,Artikel {0} är varken Tillgång eller Lager Artikel, +Target Item {0} must be a Fixed Asset item,Artikel {0} måste vara Tillgång, +Target Item {0} must be a Stock Item,Artikel {0} måste vara Lager Artikel, +Target Qty must be a positive number,Kvantitet måste vara positivt tal, +Target Serial No,Serie Nummer, +Target Warehouse Address Link,Till Lager Adress Länk, +Target Warehouse is mandatory for Decapitalization,Till Lager erfodras för Dekapitalisering, +Target Warehouse is set for some items but the customer is not an internal customer.,Till Lager angiven för vissa artiklar men kund är inte intern kund., +Task {0} depends on Task {1}. Please add Task {1} to the Tasks list.,Uppgift {0} beror på Uppgift {1}. Lägg till Uppgift {1} i Uppgift Lista., +Tax Amount,Momspliktig Belopp, +Tax Amount will be rounded on a row(items) level,Moms Belopp kommer att avrundas per Artikelrad, +Tax Masters,Moms Inställningar, +Tax Refunds provided to Tourists under the Tax Refunds for Tourists Scheme,Moms Återbäring till turister enligt momsåterbäring för turister, +Tax Settings,Moms Inställningar, +Tax Withheld Vouchers,Moms Avdrag Verifikat, +Tax Withholding,Moms Avdrag, +Tax Withholding Category {} against Company {} for Customer {} should have Cumulative Threshold value.,Moms Avdrag Kategori {} mot bolag {} för kund {} ska ha Kumulativ Tröskel Värde., +Tax Withholding Details,Moms Avdrag Kategori, +Tax Withholding Net Total,Moms Avdrag Netto Totalt, +"Tax detail table fetched from item master as a string and stored in this field. +Used for Taxes and Charges","Moms Tabell hämtad från Artikel Tabell som sträng och lagrad i detta fält. +Används för Moms och Avgifter", +Tax will be withheld only for amount exceeding the cumulative threshold,Moms kommer att dras av bara för belopp som överstiger kumulativ tröskel, +Taxes row #{0}: {1} cannot be smaller than {2},Momsrad #{0}: {1} kan inte vara lägre än {2}, +Telephony Call Type,Telefoni Typ, +Template Item Selected,Mall Artikel Vald, +Template Options,Mall Alternativ, +Template Task,Mall Upgift, +Template Warnings,Mall Varningar, +Terms & Conditions,Regler & Villkor, +Terms Template,Villkor Mall, +Territory Item,Distrikt Artikel, +Territory Wise Sales,Försäljning per Distrikt, +The Condition '{0}' is invalid,Villkor '{0}' är ogiltig, +The Document Type {0} must have a Status field to configure Service Level Agreement,Dokument Typ {0} måste ha Statusfält för att konfigurera Service Nivå Avtal, +"The GL Entries will be cancelled in the background, it can take a few minutes.","Bokföring Register Poster kommer att annulleras i bakgrunden, det kan ta några minuter.", +"The Payment Request {0} is already paid, cannot process payment twice","Betalning Begäran {0} är redan betald, kan inte behandla betalning två gånger", +"The Pick List having Stock Reservation Entries cannot be updated. If you need to make changes, we recommend canceling the existing Stock Reservation Entries before updating the Pick List.",Plocklista med Lager Reservation kan inte uppdateras. Om ändringar behöver göras rekommenderas annullering av befintlig Lager Reservation innan uppdatering av Plocklista., +The Process Loss Qty has reset as per job cards Process Loss Qty,Process Förlust Kvantitet är återställd enligt Jobbkort Process Förlust Kvantitet, +The Serial No at Row #{0}: {1} is not available in warehouse {2}.,Serie Nummer på rad #{0}: {1} är inte tillgänglig i lager {2}., +The Serial and Batch Bundle {0} is not valid for this transaction. The 'Type of Transaction' should be 'Outward' instead of 'Inward' in Serial and Batch Bundle {0},"Serie och Parti Paket {0} är inte giltigt för denna transaktion. ""Typ av Transaktion"" ska vara ""Utgående"" istället för ""Ingående"" i Serie och Parti Paket {0}", +The Work Order is mandatory for Disassembly Order,Arbetsorder erfordras för Demontering Order, +The allocated amount is greater than the outstanding amount of Payment Request {0},Tilldelad Belopp är högre än utestående belopp för Betalning Begäran {0}, +The currency of invoice {} ({}) is different from the currency of this dunning ({}).,Faktura valuta {} ({}) är annan än valuta för denna påminnelse ({})., +The default BOM for that item will be fetched by the system. You can also change the BOM.,Standard Stycklista för artikel kommer att hämtas av system. Man kan också ändra Stycklista., +The field {0} in row {1} is not set,Fält {0} i rad {1} är inte angiven, +"The following Items, having Putaway Rules, could not be accomodated:","Följande Artiklar, med Lägg undan regler, kunde inte tillgodoses:", +The following assets have failed to automatically post depreciation entries: {0},Följande tillgångar kunde inte bokföra avskrivning poster automatiskt: {0}, +The following invalid Pricing Rules are deleted:,Följande ogiltiga prissättningsregler tas bort:, +The items {0} and {1} are present in the following {2} :,Artiklar {0} och {1} finns i följande {2}:, +The operation {0} can not add multiple times,Åtgärd {0} kan inte läggas till flera gånger, +The operation {0} can not be the sub operation,Åtgärd {0} kan inte vara underåtgärd, +The original invoice should be consolidated before or along with the return invoice.,Original Faktura ska konsolideras före eller tillsammans med retur faktura., +The percentage you are allowed to pick more items in the pick list than the ordered quantity.,Procentandel artiklar du får plocka utöver artiklar i plocklista., +"The percentage you are allowed to transfer more against the quantity ordered. For example, if you have ordered 100 units, and your Allowance is 10%, then you are allowed transfer 110 units.","Procentandel man får överföra mer mot order kvantitet. Till exempel, om man har order på 100 enheter och tillåtelse är 10%, får man överföra upp till 110 enheter.", +The reserved stock will be released when you update items. Are you certain you wish to proceed?,Lager Reservation kommer att släppas när artiklar uppdaterats. Fortsätt?, +The reserved stock will be released. Are you certain you wish to proceed?,Lager Reservation kommer att släppas. Fortsätt?, +The selected {0} does not contain the selected Asset Item.,Vald {0} innehåller inte vald Tillgång Post., +"The stock for the item {0} in the {1} warehouse was negative on the {2}. You should create a positive entry {3} before the date {4} and time {5} to post the correct valuation rate. For more details, please read the documentation.","Lager för artikel {0} i {1} lager var negativt {2}. Skapa positiv post {3} före {4} och {5} för att bokföra rätt grund pris. För mer information, läs dokumentation .", +"The stock has been reserved for the following Items and Warehouses, un-reserve the same to {0} the Stock Reconciliation:

{1}","Lager är reserverad för följande Artiklar och Lager, ta bort reservation till {0} Lager Inventering :

{1}", +"The sync has started in the background, please check the {0} list for new records.",Synkronisering startad i bakgrunden. Kolla {0} lista för nya poster., +The task has been enqueued as a background job.,Uppgift är i kö som bakgrund jobb., +"The task has been enqueued as a background job. In case there is any issue on processing in background, the system will add a comment about the error on this Stock Reconciliation and revert to the Submitted stage",Uppgift är i kö som ett bakgrund jobb. Om det finns några problem med bearbetning i bakgrund kommer system att lägga till kommentar om fel på denna Lager Inventering och återgå till Godkänd status, +The total Issue / Transfer quantity {0} in Material Request {1} cannot be greater than allowed requested quantity {2} for Item {3},Totalt Utfärdad / Överföring Kvantitet {0} i Material Begäran {1} kan inte vara högre än tillåten begärd kvantitet {2} för artikel {3}, +The total Issue / Transfer quantity {0} in Material Request {1} cannot be greater than requested quantity {2} for Item {3},Totalt Utfärdad / Överföring Kvantitet {0} i Material Begäran {1} kan inte vara högre än begärd kvantitet {2} för artikel {3}, +"The users with this Role are allowed to create/modify a stock transaction, even though the transaction is frozen.","Användare med denna roll får skapa/ändra lager transaktion, även om transaktion är låst.", +The warehouse where you store finished Items before they are shipped.,Lager där färdiga artiklar lagras innan de levereras., +"The warehouse where you store your raw materials. Each required item can have a separate source warehouse. Group warehouse also can be selected as source warehouse. On submission of the Work Order, the raw materials will be reserved in these warehouses for production usage.",Lager där råmaterial lagras. Varje erfodrad artikel kan ha separat från lager. Grupp lager kan också väljas som från lager. Vid godkännade av arbetsorder kommer råmaterial att reserveras i dessa lager för produktion., +The warehouse where your Items will be transferred when you begin production. Group Warehouse can also be selected as a Work in Progress warehouse.,Lager där artiklar kommer att överföras när produktion påbörjas. Grupp Lager kan också väljas som Arbete Pågår lager., +The {0} {1} is used to calculate the valuation cost for the finished good {2}.,{0} {1} används för att beräkna grund kostnad för färdig artikel {2}., +There are ledger entries against this account. Changing {0} to non-{1} in live system will cause incorrect output in 'Accounts {2}' report,"Det finns bokföring register aposter mot detta konto. Om du ändrar {0} till icke-{1} i system kommer det att orsaka felaktig utdata i ""Konton {2}"" rapporten ", +There are no Failed transactions,Det finns inga misslyckade transaktioner, +There are no active Fiscal Years for which Demo Data can be generated.,Det finns inga aktiva bokföringsår för vilka demo data kan genereras., +There are no slots available on this date,Det finns inga lediga tider för detta datum, +There are only {0} asset created or linked to {1}. Please create or link {2} Assets with respective document.,Det finns bara {0} tillgångar skapade eller länkade till {1}. Skapa eller länka {2} Tillgångar med respektive dokument., +"There are two options to maintain valuation of stock. FIFO (first in - first out) and Moving Average. To understand this topic in detail please visit
Item Valuation, FIFO and Moving Average.","Det finns två alternativ för att upprätthålla Lager värdering. FIFO (först in - först ut) och Medelvärde. För att förstå detta ämne i detalj besök Artikelvärdering, FIFO och Medelvärde.", +There aren't any item variants for the selected item,Det finns inga artikelvarianter för vald artikel, +There is already a valid Lower Deduction Certificate {0} for Supplier {1} against category {2} for this time period.,Det finns redan giltigt Lägre Avdrag Certifikat {0} för Leverantör {1} mot kategori {2} för denna tidsperiod., +There is already an active Subcontracting BOM {0} for the Finished Good {1}.,Det finns redan aktiv Underleverantör Stycklista {0} för färdig artikel {1}., +There must be atleast 1 Finished Good in this Stock Entry,Det måste finnas minst en färdig artikel i denna Lager Post, +There was an error creating Bank Account while linking with Plaid.,Det uppstod fel när Bank Konto skulle skapas vid länkning med Plaid., +There was an error syncing transactions.,Det uppstod fel med synkronisering av transaktioner., +There was an error updating Bank Account {} while linking with Plaid.,Det uppstod fel när Bank Konto {} skulle uppdateras vid länkning med Plaid., +There was an issue connecting to Plaid's authentication server. Check browser console for more information,Det uppstod fel vid anslutning till Plaid autentisering server. Kontrollera webbläsare konsol för mer information, +There were issues unlinking payment entry {0}.,Det uppstod fel med borttagning av länk till Betalning Post {0}., +This Account has '0' balance in either Base Currency or Account Currency,"Konto har ""0"" Saldo i antingen Standard Valuta eller Konto Valuta", +This field is used to set the 'Customer'.,Detta fält används för att ange 'Kund'., +This filter will be applied to Journal Entry.,Detta filter kommer att tillämpas på Journal Post, +This is a Template BOM and will be used to make the work order for {0} of the item {1},Detta är Stycklista Mall och kommer att användas för att skapa arbetsorder för {0} av artikel {1}, +This is considered dangerous from accounting point of view.,Detta anses vara farligt ur bokföring synpunkt., +"This is enabled by default. If you want to plan materials for sub-assemblies of the Item you're manufacturing leave this enabled. If you plan and manufacture the sub-assemblies separately, you can disable this checkbox.","Detta är aktiverat som standard. Planeras material för underenheter för artikel som produceras, lämna detta aktiverat. Planeras och produceras underenheterna separat kan den inaktiveras.", +"This is for raw material Items that'll be used to create finished goods. If the Item is an additional service like 'washing' that'll be used in the BOM, keep this unchecked.","Detta är för råmaterial artiklar som kommer att användas för att skapa färdiga artiklar. Om artikel är tillägg service som ""tvätt"" som kommer att användas i stycklista, låt den vara inaktiverad", +This item filter has already been applied for the {0},Detta artikel filter har redan tillämpats för {0}, +This option can be checked to edit the 'Posting Date' and 'Posting Time' fields.,Detta alternativ kan väljas för att redigera fält 'Post Datum' och 'Post Tid'., +This schedule was created when Asset {0} was adjusted through Asset Value Adjustment {1}.,Detta schema skapades när Tillgång {0} justerades genom Tillgång Värde Justering {1}., +This schedule was created when Asset {0} was consumed through Asset Capitalization {1}.,Detta schema skapades när Tillgång {0} förbrukades genom Tillgång Kapitalisering {1}., +This schedule was created when Asset {0} was repaired through Asset Repair {1}.,Detta schema skapades när Tillgång {0} reparerades genom Tillgång Reparation {1}., +This schedule was created when Asset {0} was restored on Asset Capitalization {1}'s cancellation.,Detta schema skapades när Tillgång {0} återställdes vid annullering av Tillgång Kapitalisering {1}., +This schedule was created when Asset {0} was restored.,Detta schema skapades när Tillgång {0} återställdes., +This schedule was created when Asset {0} was returned through Sales Invoice {1}.,Detta schema skapades när Tillgång {0} returnerades via Försäljning Faktura {1}., +This schedule was created when Asset {0} was scrapped.,Detta schema skapades när Tillgång {0} skrevs av., +This schedule was created when Asset {0} was sold through Sales Invoice {1}.,Detta schema skapades när Tillgång {0} såldes via Försäljning Faktura {1}., +This schedule was created when Asset {0} was updated after being split into new Asset {1}.,Detta schema skapades när Tillgång {0} uppdaterades efter att ha delats upp i ny Tillgång {1}., +This schedule was created when Asset {0}'s Asset Repair {1} was cancelled.,Detta schema skapades när Tillgång Reparation {0} Tillgång Reparation {1} annullerades., +This schedule was created when Asset {0}'s Asset Value Adjustment {1} was cancelled.,Detta schema skapades när Tillgång {0} Tillgång Värde Justering {1} annullerades., +This schedule was created when Asset {0}'s shifts were adjusted through Asset Shift Allocation {1}.,Detta schema skapades när Tillgång {0} förskjutning justerades genom Tillgång Förskjutning Tilldelning {1}., +This schedule was created when new Asset {0} was split from Asset {1}.,Detta schema skapades när ny Tillgång {0} delades från Tillgång {1}., +"This table is used to set details about the 'Item', 'Qty', 'Basic Rate', etc.","Denna tabell används för att ange detaljer om 'Artikel', 'Kvantitet', 'Bas Pris', etc.", +This {} will be treated as material transfer.,Denna {} kommer att behandlas som material överföring., +Threshold for Suggestion (In Percentage),Tröskel för Förslag (%), +Time Taken to Deliver,Tid som tagits att Leverera, +Time in mins,Tid i minuter, +Time in mins.,Tid i minuter, +Time slot is not available,Tid är inte tillgänglig, +To Date is mandatory,Till Datum Erfordras, +To Delivery Date,Till Leverans Datum, +To Doctype,Till DocType, +To Due Date,Till Förfallo Datum, +To Payment Date,Till Betalning Datum, +To Reference Date,Till Referens Datum, +To add Operations tick the 'With Operations' checkbox.,Att lägga till Åtgärder kryssa i rutan 'Med Åtgärder'., +To add subcontracted Item's raw materials if include exploded items is disabled.,Att lägga till Underleverantör Artikel råmaterial om Inkludera Utvidgade Artiklar är inaktiverad., +To apply condition on parent field use parent.field_name and to apply condition on child table use doc.field_name. Here field_name could be based on the actual column name of the respective field.,"Att tillämpa villkor på överordnad fält, använd parent.field_name och för att tillämpa villkor på underordnad tabell använd doc.field_name. Här kan fältnamn baseras på verklig kolumn namn för respektive fält.", +To be Delivered to Customer,Levereras till Kund, +To cancel a {} you need to cancel the POS Closing Entry {}.,Att annullera {} måste du annullera Kassa Stängning Post {}., +"To enable Capital Work in Progress Accounting,",Att aktivera Pågående Kapitalarbete Bokföring, +To include non-stock items in the material request planning. i.e. Items for which 'Maintain Stock' checkbox is unticked.,Att inkludera ej lagerartiklar i material begäran planering. dvs Artiklar för vilka ruta 'Lager Hantera' är inaktiverad., +To submit the invoice without purchase order please set {0} as {1} in {2},"Att godkänna faktura utan inköp order, ange {0} som {1} i {2}", +To submit the invoice without purchase receipt please set {0} as {1} in {2},Att godkänna faktura utan inköp följesedel ange {0} som {1} i {2}, +"To use a different finance book, please uncheck 'Include Default FB Assets'","Att använda annan finans register, inaktivera ""Inkludera Standard Finans Register Tillgångar""", +"To use a different finance book, please uncheck 'Include Default FB Entries'","Att använda annan finans register, inaktivera ""Inkludera Standard Finans Register Tillgångar""", +Total Active Items,Totalt Aktiva Artiklar, +Total Allocations,Totala Tilldelningar, +Total Asset,Totalt Tillgång, +Total Asset Cost,Totalt Tillgång Kostnad, +Total Billing Hours,Totalt Fakturerbara Timmar, +Total Contribution Amount Against Invoices: {0},Totalt Bidrag Belopp Mot Fakturor: {0}, +Total Contribution Amount Against Orders: {0},Totalt Bidrag Belopp Mot Ordrar: {0}, +Total Equity,Totalt Eget Kapital, +Total Incoming Bills,Inkommande Fakturor, +Total Incoming Payment,Inkommande Betalningar, +Total Incoming Value (Receipt),Totalt Ingående Värde (Faktura), +Total Interest,Totalt Ränta, +Total Issues,Totalt Frågor, +Total Items,Totalt Artiklar, +Total Liability,Totalt Skuld, +Total Number of Booked Depreciations ,Totalt Antal Bokförda Avskrivningar , +Total Operation Time,Totalt Drift Tid, +Total Other Charges,Totalt Övriga Avgifter, +Total Outgoing Bills,Utgående Fakturor, +Total Outgoing Payment,Utgående Betalningar, +Total Outgoing Value (Consumption),Utgående Värde (Förbrukning), +Total Picked Quantity {0} is more than ordered qty {1}. You can set the Over Picking Allowance in Stock Settings.,Totalt plockad kvantitet {0} är mer än order kvantitet {1}. Du kan ange överplock tillåtelse i Lager Inställningar., +Total Purchase Amount,Totalt Inköp Belopp, +Total Purchase Cost has been updated,Totalt Inköp Kostnad uppdaterad, +Total Repair Cost,Totalt Reparation Kostnad, +Total Reposting Count,Totalt Ompostering Antal, +Total Sales Amount,Totalt Försäljning Belopp, +Total Stock Value,Totalt Lager Värde, +Total Supplied Qty,Totalt Levererad Kvantitet, +Total Time (in Mins),Totalt Tid i Minuter, +Total Value,Totalt Värde, +Total Value Difference (Incoming - Outgoing),Värde Differens (Inkommande - Utgående), +Total Views,Totalt Visningar, +Total Warehouses,Totalt Antal Lager, +Total percentage against cost centers should be 100,Totalt procentsats mot resultat enhet ska vara 100%, +Tracking Status,Spårning Status, +Tracking Status Info,Spårning Status Info, +Tracking URL,Spårning URL, +Transaction Deletion Document: {0} is running for this Company. {1},Transaktion Borttagning Dokument: {0} körs redan för {1}, +Transaction Deletion Record,Transaktion Borttagning Post, +Transaction Deletion Record Details,Transaktion Borttagning Post Detaljer, +Transaction Deletion Record Item,Transaktion Borttagning Post Artikel, +Transaction Exchange Rate,Transaktion Växelkurs, +Transaction Settings,Transaktion Inställningar, +Transaction currency: {0} cannot be different from Bank Account({1}) currency: {2},Transaktion valuta: {0} kan inte skilja sig från Bank Konto ({1}) valuta: {2}, +Transactions against the Company already exist! Chart of Accounts can only be imported for a Company with no transactions.,Transaktioner mot bolag finns redan! Kontoplan kan endast importeras för bolag utan transaktioner., +Transfer Asset,Överför Tillgång, +Transfer From Warehouses,Överföring Från Lager, +Transferring cannot be done to an Employee. Please enter location where Asset {0} has to be transferred,Överföring kan inte skapas för Personal. Ange plats där Tillgång {0} ska överföras, +Transit Entry,Transit Post, +Truncates 'Remarks' column to set character length,"Trunkerar kolumn ""Anmärkningar"" för att ange teckenlängd", +Type Of Call,Typ av Samtal, +Type of Transaction,Typ av Transaktion, +UAE VAT Account,UAE VAT Konto, +UAE VAT Accounts,UAE VAT Konton, +UAE VAT Settings,UAE VAT Inställningar, +UOM conversion factor required for UOM: {0} in Item: {1},Enhet Konvertering Faktor erfodras för Enhet: {0} för Artikel: {1}, +UnReconcile,Ångra, +Unable to find the time slot in the next {0} days for the operation {1}. Please increase the 'Capacity Planning For (Days)' in the {2}.,"Kunde inte att hitta tider under de kommande {0} dagarna för åtgärd {1}. Öka ""Kapacitet Planering för (Dagar)"" i {2}.", +Unable to find variable:,Kan inte hitta variabel:, +Unassigned Qty,Ej Tilldelat Kvantitet, +"Under Working Hours table, you can add start and end times for a Workstation. For example, a Workstation may be active from 9 am to 1 pm, then 2 pm to 5 pm. You can also specify the working hours based on shifts. While scheduling a Work Order, the system will check for the availability of the Workstation based on the working hours specified.","Under Arbetstid tabell kan man lägga till start och slut tider för arbetsstation. Till exempel kan arbetsstation vara aktiv från 9.00 till 12.00, sedan 1300 till 17.00. Du kan även ange arbetstid utifrån skift. Under schemaläggning av arbetsorder kommer system att kontrollera tillgänglighet för arbetsstation baserat på angiven arbetstid.", +Unit of Measure (UOM),Enhet, +Unlinked,Bortkopplad, +Unqualified,Okvalificerad, +Unrealized Profit / Loss Account,Orealiserad Resultat Konto, +Unrealized Profit / Loss account for intra-company transfers,Orealiserad Resultat konto för koncern överföringar, +Unrealized Profit/Loss account for intra-company transfers,Orealiserad Resultat konto för koncern överföringar, +Unreconcile Payment,Ångra Betalning Avstämning, +Unreconcile Payment Entries,Ångra Betalning Avstämning Post, +Unreconcile Transaction,Ångra Transaktion, +Unreconciled Amount,Ångrad Betalning Avstämning Belopp, +Unreconciled Entries,Ångrad Betalning Avstämning Post, +Unreserve,Ångra Reservation, +Unreserve Stock,Ångra Lager Reservation, +Unreserving Stock...,Ångrar Lager Reservation ..., +Unset Matched Payment Request,Ångra Avstämd Betalning Begäran, +Up,Upp, +Update Billed Amount in Delivery Note,Uppdatera Fakturerad Belopp i Försäljning Följesedel, +Update Billed Amount in Purchase Order,Uppdatera Fakturerad Belopp i Inköp Order, +Update Billed Amount in Purchase Receipt,Uppdatera Fakturerad Belopp i Inköp Följesedel, +Update Existing Price List Rate,Uppdatera Befintlig Prislista Pris, +Update Existing Records,Uppdatera Befintliga Poster, +Update Outstanding for Self,Uppdatera Utestående för sig själv, +Update Rate as per Last Purchase,Uppdatera Pris per Senaste Inköp, +Update Total Purchase Cost,Uppdatera Total Inköp Kostnad, +Update frequency of Project,Projekt Uppdatering Intervall, +Update stock must be enabled for the purchase invoice {0},Uppdatera Lager måste vara aktiverat för Inköp Faktura {0}, +Updated via 'Time Log' (In Minutes),Uppdaterad via 'Tid Logg' (i Minuter), +Updating Work Order status,Uppdaterar Arbetsorder status, +"Updating {0} of {1}, {2}","Uppdaterar {0} av {1}, {2}", +Upload Bank Statement,Importera Bank Avstämning, +Use 'Repost in background' button to trigger background job. Job can only be triggered when document is in Queued or Failed status.,"Använd knapp ""Posta om i Backgrund"" för att utlösa bakgrund jobb. Jobb kan bara utlösas när dokument har status 'I Kö' eller 'Misslyckad'.", +Use Batch-wise Valuation,Använd Värdering per Parti, +Use Company Default Round Off Cost Center,Använd Bolag Standard Avrundning Resultat Enhet, +Use Company default Cost Center for Round off,Använd Bolag standard Resultat Enhet för Avrundning, +Use HTTP Protocol,Använd HTTP Protokoll, +Use Item based reposting,Använd Artikel baserad Ompostering , +Use Serial / Batch Fields,Använd Serie / Parti Nummer Fält, +Use Serial No / Batch Fields,Använd Serie / Parti Nummer Fält, +Use Transaction Date Exchange Rate,Använd Transaktion Datum Växelkurs, +User {0}: Removed Employee Self Service role as there is no mapped employee.,Användare {0}: Borttagen Personal Självbetjäning roll eftersom det inte finns någon mappad personal., +User {0}: Removed Employee role as there is no mapped employee.,Användare {0}: Borttagen Personal roll eftersom det inte finns mappad personal., +Users can enable the checkbox If they want to adjust the incoming rate (set using purchase receipt) based on the purchase invoice rate.,Användare kan kryssa i rut Om de vill justera inköp pris (anges med inköp följesedel) baserat på inköp faktura pris., +Users with this role are allowed to over bill above the allowance percentage,Användare med denna roll tillåts att överfakturera över tillåten procentsats, +Users with this role are allowed to over deliver/receive against orders above the allowance percentage,Användare med denna roll tillåts att överleverera/ta emot ordrar över tillåten procentsats, +Using negative stock disables FIFO/Moving average valuation when inventory is negative.,Användning av negativ lager inaktiverar FIFO/MA värdering sätt när lager värde är negativ., +VAT Accounts,Moms Konton, +VAT Amount (AED),Moms Belopp (AED), +VAT Audit Report,Moms Revision Rapport, +VAT on Expenses and All Other Inputs,Moms på Utgifter och Alla Andra intäkter, +VAT on Sales and All Other Outputs,Moms på Försäljning och Alla Andra utgifter, +Valid From must be after {0} as last GL Entry against the cost center {1} posted on this date,Giltig Från Datum måste vara efter {0} eftersom senaste Bokföring Register Post mot resultat enhet {1} postad detta datum, +Validate Components Quantities Per BOM,Validera Komponent Kvantiteter per Stycklista, +Validate Negative Stock,Validera Negativ Lager, +Validate Pricing Rule,Validera Prissättning Regel, +Validate Stock on Save,Validera Lager på Spara, +Valuation Field Type,Värdering Fält Typ, +Valuation Rate (In / Out),Grund Pris (In/Ut), +Valuation rate for customer provided items has been set to zero.,Grund Pris för Kund Försedda Artiklar angavs till noll., +Valuation rate for the item as per Sales Invoice (Only for Internal Transfers),Grund Pris för artikel enligt Försäljning Faktura (endast för Interna Överföringar), +Value Based Inspection,Värde Baserad Kontroll, +Value Change,Värde Förändring, +Value Details,Värde Detaljer, +Value of Goods,Gods Värde, +Value of goods cannot be 0,Godsvärde kan inte vara 0, +Verification failed please check the link,"Verifiering misslyckades, kontrollera länk", +Via Landed Cost Voucher,Genom Landad Kostnad Verifikat, +View BOM Update Log,Visa Stycklista Uppdatering Logg, +View Exchange Gain/Loss Journals,Visa Växelkurs Resultat Journaler, +View General Ledger,Visa Bokföring Register, +View Ledgers,Visa Register, +Visits,Besök, +Voice Call Settings,Röst Samtal Inställningar, +Voucher,Verifikat, +Voucher Name,Verifikat Namn, +Voucher No is mandatory,Verifikat Nummer Erfodras, +Voucher Qty,Verifikat Kvantitet, +Voucher Subtype,Verifikat Undertyp, +Voucher {0} is over-allocated by {1},Verifikat {0} är övertilldelad av {1}, +Voucher {0} value is broken: {1},Verifikat {0} värde bruten: {1}, +Voucher-wise Balance,Saldo per Verifikat, +"WARNING: Exotel app has been separated from ERPNext, please install the app to continue using Exotel integration.","OBS: Exotel app har separerats från System, installera app för att fortsätta använda Exotelintegration.", +WIP Composite Asset,Pågående Arbete Sammansatt Tillgång, +Waiting for payment...,Väntar på betalning..., +Warehouse Capacity for Item '{0}' must be greater than the existing stock level of {1} {2}.,Lager Kapacitet för Artikel '{0}' måste vara högre än befintlig lager nivå på {1} {2}. , +Warehouse Details,Lager Detaljer, +Warehouse Disabled?,Lager Inaktiverad?, +Warehouse Settings,Lager Inställningar, +Warehouse Wise Stock Balance,Lager Saldo per Lager, +Warehouse wise Stock Value,Lager Värde per Lager, +Warehouse {0} does not belong to Company {1}.,Lager {0} tillhör inte Bolag {1}., +"Warehouse {0} is not linked to any account, please mention the account in the warehouse record or set default inventory account in company {1}.",Lager {0} är inte länkad till något konto. Ange konto i lager post eller ange standard konto för lager i bolag {1}., +Warehouse's Stock Value has already been booked in the following accounts:,Lagrets Lager Värde är redan bokförd på följande konton:, +Warning - Row {0}: Billing Hours are more than Actual Hours,Varning - Rad # {0}: Fakturerbara timmar är fler än verkliga timmar, +Warning on Negative Stock,Varna vid Negativt Lager, +Warning!,Varning!, +Watch Video,Visa Video, +"We can see {0} is made against {1}. If you want {1}'s outstanding to be updated, uncheck '{2}' checkbox.

Or you can use {3} tool to reconcile against {1} later.","Vi kan se att {0} skapades mot {1}. Om du vill att {1}s utestående ska uppdateras, avmarkera '{2}'kryssruta .

Eller så kan du använda {3} verktyg för att stämma av mot {1} senare.", +Website Script,Webbplats Skript, +Website Theme,Webbplats Tema, +Week {0} {1},Vecka {0} {1}, +Weekly Time to send,Veckotid att skicka, +Weight (kg),Vikt (kg), +"When a parent warehouse is chosen, the system conducts stock checks against the associated child warehouses",Näröverordnat lager valts utför system lagerkontroller mot tillhörande underordnade lager, +"When creating an Item, entering a value for this field will automatically create an Item Price at the backend.","Vid skapande av Artikel, om man anger värde för detta fält, skapas automatiskt artikelpris i bakgrund.", +"While making Purchase Invoice from Purchase Order, use Exchange Rate on Invoice's transaction date rather than inheriting it from Purchase Order. Only applies for Purchase Invoice.","Vid skapande av Inköp Faktura från Inköp Order, använd Inköp Faktura transaktion datum för växelkurs istället för att ärva den från Inköp Order. Gäller endast Inköp Faktura.", +Width (cm),Bredd (cm), +With Period Closing Entry For Opening Balances,Med PeriodStängning Post för Öppning Saldon, +Withdrawal,Uttag, +Work Order / Subcontract PO,Arbetsorder / Underleverantör Inköp Order, +Work Order Consumed Materials,Arbetsorder Förbrukat Material, +Workflow,Arbetsflöde, +Workflow Action,Arbetsflöde Åtgärd, +Workflow State,Arbetsflöde Tillstånd, +Workstation Dashboard,Arbetsplats Översikt Panel, +Workstation Status,Arbetsplats Status, +Workstation Type,Arbetsplats Typ, +Workstations,Arbetsplatser, +Write Off Limit,Avskrivning Gräns, +Wrong Company,Fel Bolag, +Wrong Template,Fel Mall, +You are not authorized to make/edit Stock Transactions for Item {0} under warehouse {1} before this time.,Du är inte behörig att skapa/redigera lager transaktioner för artikel {0} under lager {1} före denna tidpunkt., +You are picking more than required quantity for the item {0}. Check if there is any other pick list created for the sales order {1}.,Du väljer mer än vad som krävs för artikel {0}. Kontrollera om det finns någon annan plocklista skapad för försäljning order {1}., +You can add the original invoice {} manually to proceed.,Lägg till original faktura {} manuellt för att fortsätta., +"You can set it as a machine name or operation type. For example, stiching machine 12",Du kan ange den som maskin namn eller åtgärd typ. Till exempel sy maskin 12, +You can't make any changes to Job Card since Work Order is closed.,Du kan inte göra några ändringar i Jobbkort eftersom Arbetsorder är stängd., +You can't redeem Loyalty Points having more value than the Rounded Total.,Det går inte att lösa in Lojalitet Poäng som har mer värde än Avrundad Belopp., +You cannot change the rate if BOM is mentioned against any Item.,Du kan inte ändra pris om Stycklista är angiven mot någon artikel., +You cannot create a {0} within the closed Accounting Period {1},Du kan inte skapa {0} inom stängd bokföring period {1}, +You cannot create/amend any accounting entries till this date.,Du kan inte skapa/ändra några bokföring poster fram till detta datum., +You cannot repost item valuation before {},Du kan inte lägga om artikel värdering före {}, +You have entered a duplicate Delivery Note on Row,Du har angett dubblett Försäljning Följesedel på Rad, +You haven't created a {0} yet,Ingen {0} skapad än, +You need to cancel POS Closing Entry {} to be able to cancel this document.,Annullera Kassa Stängning Post {} för att annullera detta dokument., +Your Name (required),Ditt Namn, +Your email has been verified and your appointment has been scheduled,Din E-post är verifierad och ditt möte är bokad, +Zero Balance,Noll Saldo, +Zero Rated,Noll Pris, +Zero quantity,Noll Kvantitet, +`Allow Negative rates for Items`,"""Tillåt Negativa Priser för Artiklar"".", +as a percentage of finished item quantity,som procentsats av färdig artikel kvantitet, +at,kl., +dated {0},daterad {0}, +description,Beskrivning, +discount applied,Rabatt Tillämpad, +fieldname,Fält Namn , +is already,är redan, +must be between 0 and 100,måste vara mellan 0 och 100, +or its descendants,eller dess underordnad, +out of 5,av 5 möjliga, +payments app is not installed. Please install it from {0} or {1},payment app är inte installerad. Installera det från {0} eller {1}, +payments app is not installed. Please install it from {} or {},payment app är inte installerad. Installera det från {0} eller {1}, +performing either one below:,utför någon av dem nedan:, +product bundle item row's name in sales order. Also indicates that picked item is to be used for a product bundle,Artikel paket artikel rad namn i försäljning order. Indikerar också att plockad artikel ska användas för artikel paket, +quotation_item,Försäljning Offert Artikel, +ratings,Bedömningar, +subscription is already cancelled.,prenumeration är redan annullerad., +to unallocate the amount of this Return Invoice before cancelling it.,att ta bort belopp för denna Retur Faktura innan annullering., +variance,avvikelse, +via BOM Update Tool,via Ersätt Stycklista Verktyg, +will be,kommer vara, +{0} {1} has submitted Assets. Remove Item {2} from table to continue.,{0} {1} har godkänt tillgångar. Ta bort Artikel {2} från tabell för att fortsätta., +{0} Account not found against Customer {1}.,{0} Konto hittades inte mot Kund {1}., +{0} Account: {1} ({2}) must be in either customer billing currency: {3} or Company default currency: {4},{0} Konto: {1} ({2}) måste vara antingen i kundens faktura valuta: {3} eller bolag standard valuta: {4}, +{0} Budget for Account {1} against {2} {3} is {4}. It {5} exceed by {6},{0} Budget för Konto {1} mot {2} {3} är {4}. Det {5} överstiger med {6}, +{0} Transaction(s) Reconciled,{0} Transaktion(er) Avstämda, +{0} account is not of type {1},{0} konto är inte av typ {1}, +{0} account not found while submitting purchase receipt,{0} konto hittades inte när vid godkänande av Inköp Följesedel, +{0} and {1},{0} och {1}, +{0} cannot be used as a Main Cost Center because it has been used as child in Cost Center Allocation {1},{0} kan inte användas som Överordnad Resultat Enhet eftersom det har använts som underordnad i Resultat Enhet Tilldelning {1}, +{0} cannot be zero,{0} kan inte vara noll, +{0} currency must be same as company's default currency. Please select another account.,{0} valuta måste vara samma som bolag standard valuta. Välj ett annat konto., +{0} entered twice {1} in Item Taxes,{0} angiven två gånger {1} under Artikel Moms, +{0} has Payment Term based allocation enabled. Select a Payment Term for Row #{1} in Payment References section,{0} har Betalning Villkor baserad tilldelning aktiverad. Välj Betalning Villkor för Rad #{1} i Betalning Referenser, +{0} is a mandatory Accounting Dimension.
Please set a value for {0} in Accounting Dimensions section.,{0} är erfordrad Bokföring Dimension.
Ange värde för {0} Bokföring Dimensioner., +{0} is added multiple times on rows: {1},{0} läggs till flera gånger på rader: {1}, +{0} is already running for {1}, {0} körs redan för {1}, +{0} is mandatory for account {1},{0} är erfodrad för konto {1}, +{0} is not running. Cannot trigger events for this Document,{0} körs inte. Kan inte utlösa händelser för detta Dokument, +{0} qty of Item {1} is being received into Warehouse {2} with capacity {3}.,{0} kvantitet av artikel {1} tas emot i Lager {2} med kapacitet {3}., +"{0} units are reserved for Item {1} in Warehouse {2}, please un-reserve the same to {3} the Stock Reconciliation.","{0} enheter är reserverade för Artikel {1} i Lager {2}, ta bort reservation för {3} Lager Inventering.", +{0} units of Item {1} is not available in any of the warehouses.,{0} enheter av Artikel {1} är inte tillgängliga på Lager., +{0} units of Item {1} is picked in another Pick List.,{0} enheter av Artikel {1} är vald i en annan Plocklista., +"{0} units of {1} are required in {2}{3}, on {4} {5} for {6} to complete the transaction.","{0} enheter av {1} erfordras i {2}{3}, den {4} {5} för att {6} ska kunna slutföra transaktion.", +{0} units of {1} needed in {2} on {3} {4} to complete this transaction.,{0} enheter av {1} behövs i {2} den {3} {4} för att slutföra denna transaktion., +{0} will be given as discount.,{0} kommer att ges som rabatt., +{0} {1} Manually,{0} {1} Manuellt, +{0} {1} Partially Reconciled,{0} {1} Delvis Avstämd, +"{0} {1} cannot be updated. If you need to make changes, we recommend canceling the existing entry and creating a new one.",{0} {1} kan inte uppdateras. Om du behöver göra ändringar rekommenderar vi att du annullerar befintlig post och skapar ny., +{0} {1} has already been fully paid.,{0} {1} är redan betalad till fullo., +{0} {1} has already been partly paid. Please use the 'Get Outstanding Invoice' or the 'Get Outstanding Orders' button to get the latest outstanding amounts.,"{0} {1} är redan delvis betald. Använd knapp ""Hämta Utestående Faktura"" eller ""Hämta Utestående Ordrar"" knapp för att hämta senaste utestående belopp.", +{0} {1} is allocated twice in this Bank Transaction,{0} {1} är tilldelad två gånger i denna Bank Transaktion, +{0} {1} is not in any active Fiscal Year,{0} {1} är inte under något aktivt Bokföringsår, +{0} {1} is on hold,{0} {1} är parkerad, +{0} {1} not allowed to be reposted. Modify {2} to enable reposting.,{0} {1} får inte läggas upp igen. Ändra {2} för att aktivera omläggning., +{0} {1} via CSV File,{0} {1} via CSV fil, +{0} {1}: Account {2} is a Group Account and group accounts cannot be used in transactions,{0} {1}: Konto {2} är ett grupp konto och grupp konton kan inte användas i transaktioner, +{0} {1}: Cost Center is required for 'Profit and Loss' account {2}.,"{0} {1}: Resultat Enhet erfordras för ""Resultat"" konto {2}.", +{0} {1}: Cost Center {2} is a group cost center and group cost centers cannot be used in transactions,{0} {1}: Resultat Enhet {2} är grupp resultat enhet och grupp resultat enhet kan inte användas i transaktioner, +{0}'s {1} cannot be after {2}'s Expected End Date.,{0}s {1} kan inte vara efter förväntad slut datum för {2}, +{item_name}'s Sample Size ({sample_size}) cannot be greater than the Accepted Quantity ({accepted_quantity}),{item_name} Prov Kvantitet ({sample_size}) kan inte vara högre än accepterad kvantitete ({accepted_quantity}), +{} Available,{} Tillgängliga, +{} To Deliver,{} Att Leverera, +{} To Receive,{} Att Ta Emot, +{} Assigned,{} Tilldelade, +{} Available,{} Tillgängliga, +{} Open,{} Öppen, +{} Pending,{}Pågående, +{} To Bill,{} Att Fakturera, +{} is a child company.,{} är dotter bolag., +{} {} is already linked with another {},{} {} är redan länkad till annan {}, +{} {} is already linked with {} {},{} {} är redan länkad till {} {}, +"'Inspection Required before Delivery' has disabled for the item {0}, no need to create the QI","""Kontroll erfordras före Leverans"" har inaktiverats för artikel {0}, inget behov av att skapa Kvalitet Kontroll", +"'Inspection Required before Purchase' has disabled for the item {0}, no need to create the QI","""Kontroll erfordras före Inköp"" har inaktiverats för artikel {0}, inget behov av att skapa Kvalitet Kontroll", +"According to the BOM {0}, the Item '{1}' is missing in the stock entry.",Enligt stycklista {0} saknas artikel '{1}' i lager post., +Additional Data,Extra Data, +Advance Payment Date,Förskott Betalning Datum, +Advance Payment Ledger Entry,Förskottsbetalning Register Post, +Advance Reconciliation Takes Effect On,Förskott Avstämning Träder i Kraft, +Allow existing Serial No to be Manufactured/Received again,Tillåt att befintligt serienummer produceras/tas emot igen, +Amounts,Belopp, +Another Payment Request is already processed,En annan betalningsbegäran är redan behandlad, +Applies To,Tillämpas På, +Are you sure you want to delete {0}?

This action will also delete all associated Common Code documents.

,Är du säker på att du vill ta bort {0}?

Denna åtgärd kommer också att ta bort alla associerade Gemensamma Kod dokument.

, +At Row #{0}: The picked quantity {1} for the item {2} is greater than available stock {3} for the batch {4} in the warehouse {5}. Please restock the item.,Rad #{0}: Plockad kvantitet {1} för artikel {2} är högre än som är tillgängligt lager {3} för parti {4} på lager {5}. Fyll på Lager., +At least one account with exchange gain or loss is required,Minst ett konto med Valutaväxling Resultat erfordras, +Auto Reconciliation Job Trigger,Automatisk Avstämning Jobb Utlösare, +"Batch No {0} is not present in the original {1} {2}, hence you can't return it against the {1} {2}","Parti nr {0} finns inte i {1} {2}, därför kan du inte returnera det mot {1} {2}", +CC,Kopia Till, +Cannot delete Exchange Gain/Loss row,Kan inte ta bort Valutaväxling Resultat rad, +Cannot {0} from {1} without any negative outstanding invoice,Kan inte {0} från {1} utan någon negativ utestående faktura, +Canonical URI,Kanonisk URI, +Child Row Reference,Underordnad Rad Referens, +Code List,Kod Lista, +Common Code,Vanlig Kod, +Company Contact Person,Bolag Kontakt, +"Credit Note will update it's own outstanding amount, even if 'Return Against' is specified.","Kredit Faktura kommer att uppdatera sitt eget utestående belopp, även om ""Retur Mot"" är angivet.", +Cron Interval should be between 1 and 59 Min,Cron Intervall ska vara mellan 1 och 59 minuter, +Dates,Datum, +"Debit Note will update it's own outstanding amount, even if 'Return Against' is specified.","Debet Faktura kommer att uppdatera sitt eget utestående belopp, även om ""Retur Mot"" är angivet.", +Default Common Code,Standard Gemensam Kod, +Deleting {0} and all associated Common Code documents...,Tar bort {0} och alla tillhörande Gemensamma Kod dokument..., +Demand,Efterfråga, +Dimensions,Dimensioner, +Discount cannot be greater than 100%.,Rabatt kan inte vara högre än 100%., +Do you still want to enable immutable ledger?,Vill du fortfarande aktivera oföränderlig bokföring?, +Documents Processed on each trigger. Queue Size should be between 5 and 100,Dokument Behandlade vid varje utlösare. Kö storlek bör vara mellan 5 och 100, +Download PDF for Supplier,Ladda ner PDF för Leverantör, +Email Receipt,E-post, +Error in party matching for Bank Transaction {0},Fel i parti avstämning för banktransaktion {0}, +Event,Händelse, +Exchange Gain / Loss,Valutaväxling Resultat, +Exit Full Screen,Avsluta Helskärm, +Fetching Error,Hämtar Fel, +Forecast,Prognos, +Full Screen,Helskärm, +Has Corrective Cost,Har Korrigerande Kostnad, +"If there is no title column, use the code column for the title.","Om det inte finns någon titel kolumn, använd kod kolumn för titel.", +Ignore Is Opening check for reporting,Ignorera Öppning Kontroll för rapportering, +Ignores legacy Is Opening field in GL Entry that allows adding opening balance post the system is in use while generating reports,Ignorerar gammal 'Är Öppning' fält i Bokföring Post som gör det möjligt att lägga till Öppning Saldo Post efter att system används vid skapande av rapporter, +Import Genericode File,Importera generisk kod fil, +Import completed. {0} common codes created.,Import klar. {0} gemensamma koder skapade., +Importing Common Codes,Importerar Gemensamma Koder, +Interval should be between 1 to 59 MInutes,Intervall ska vara mellan 1 och 59 minuter, +Invalid Discount,Ogiltig Rabatt, +Is Exchange Gain / Loss?,Är Valutaväxling Resultat?, +Is Short/Long Year,Är Kort/Långt År, +Last transacted,Senast genomförd:, +Loading Invoices! Please Wait...,Laddar Fakturor! Vänta..., +Missing Default in Company,Standard Inställningar i Bolag saknas, +Missing Item,Saknad Artikel, +More/Less than 12 months.,Mer/Mindre än 12 månader., +No recent transactions found,Inga nya transaktioner hittades, +Oldest Of Invoice Or Advance,Äldsta Faktura eller Förskott, +Only applies for Normal Payments,Gäller endast för Normala Betalningar, +"Opening Invoice has rounding adjustment of {0}.

'{1}' account is required to post these values. Please set it in Company: {2}.

Or, '{3}' can be enabled to not post any rounding adjustment.",Öppning Fakturan har avrundning justering på {0}.

'{1}' konto erfordras för att bokföra dessa värden. Ange det i Bolag: {2}.

Eller så kan '{3}' aktiveras för att inte bokföra någon avrundning justering., +Order Date,Order Datum, +Order No,Order Nummer, +Parent Row No not found for {0},Överordnad Rad Nummer hittades inte för {0}, +Parsing Error,Tolkningsfel, +Party Type and Party can only be set for Receivable / Payable account

{0},Parti Typ och Parti kan endast anges för Fordring / Skuld konto

{0}, +Pay,Betala,Amount +Payment Reconciliation Settings,Betalning Avstämning Inställningar, +Period End Date cannot be greater than Fiscal Year End Date,Period Slutdatum får inte vara senare än Bokföringsår Slutdatum, +Period Start Date cannot be greater than Period End Date,Period startdatum kan inte vara senare än period slutdatum, +Period Start Date must be {0},Period Startdatum måste vara {0}, +Please mention '{0}' in Company: {1},Ange '{0}' i Bolag: {1}, +Please set '{0}' in Company: {1},Ange '{0}' i Bolag: {1}, +Please set {0} first.,Ange {0} först., +Please set {0} in Company {1} to account for Exchange Gain / Loss,Ange {0} i Bolag {1} för att bokföra valutaväxling resultat, +"Please set {0} to {1}, the same account that was used in the original invoice {2}.","Ange {0} till {1}, samma konto som användes i ursprunglig faktura {2}.", +Please specify a {0} first.,Ange {0} först., +Posting Date Inheritance for Exchange Gain / Loss,Bokning Datum Övertagen för Växling Resultat, +Preview Required Materials,Förhandsgranska Erfordrad Material, +Price is not set for the item.,Artikel pris är inte angiven., +Print Receipt on Order Complete,Skriv ut när Ordern är klar, +Process Statement Of Accounts CC,Behandla Kontoutdrag Kopia, +Publisher,Utgivare, +Publisher ID,Utgivarens ID, +Qty (Company),Kvantitet (Bolag), +Qty (Warehouse),Kvantitet (Lager), +Qty Wise Chart,Kvalitetsmässig Diagram, +Quantity (A - B),Kvantitet (A - B), +Queue Size should be between 5 and 100,Kö Storlek ska vara mellan 5 och 100, +Rate of Depreciation (%),Avskrivning Takt (%), +Reconcile Effect On,Avstämning Effektiv, +Reconciliation Date,Avstämning Datum, +Reconciliation Queue Size,Avstämning Kö Storlek, +Reconciliation Takes Effect On,Avstämning Träder i Kraft, +Rejected ,Avvisad , +Removing rows without exchange gain or loss,Tar bort rader utan Valutaväxling Resultat, +Resume Timer,Återuppta Tidur, +Round Off for Opening,Avrundning för Öppning, +Row # {0}: Please add Serial and Batch Bundle for Item {1},Rad # {0}: Lägg till serie och partipaket för artikel {1}, +Row #{0}: Quality Inspection is required for Item {1},Rad #{0}: Kvalitet Kontroll erfordras för artikel {1}, +Row #{0}: Quality Inspection {1} is not submitted for the item: {2},Rad #{0}: Kvalitet Kontroll {1} är inte godkänd för artikel: {2}, +Row #{0}: Quality Inspection {1} was rejected for item {2},Rad #{0}: Kvalitet Kontroll {1} avvisades för artikel {2}, +Row {0}: Item {1}'s quantity cannot be higher than the available quantity.,Rad {0}: Artikel {1} kvantitet kan inte vara högre än tillgänglig kvantitet., +Row {0}: Quantity cannot be negative.,Rad {0}: Kvantitet kan inte vara negativ., +Row {0}: Workstation or Workstation Type is mandatory for an operation {1},Rad {0}: Arbetsplats eller Arbetsplats Typ erfordras för åtgärd {1}, +Sales Person {0} is disabled.,Säljare {0} är inaktiverad., +Section,Sektion, +Select Columns and Filters,Välj Kolumner och Filter, +Sending...,Skickar..., +"Serial No {0} is not present in the {1} {2}, hence you can't return it against the {1} {2}","Serienummer {0} finns inte i {1} {2}, därför kan du inte returnera det mot {1} {2}", +Set Operating Cost / Scrap Items From Sub-assemblies,Ange Driftskostnad / Skrotade Artiklar från Underenheter, +Show Aggregate Value from Subsidiary Companies,Visa sammanlagt värde från dotterbolag, +Start Timer,Starta Tidur, +Subcontracted Quantity,Underleverantör Kvantitet, +TDS Deducted,TDS Avdragen, +Task Assignee Email,Uppgift Tilldelade E-post, +"The GL Entries and closing balances will be processed in the background, it can take a few minutes.","Bokföringsposter och de stängning saldo behandlas i bakgrunden, det kan ta några minuter.", +The Sales Person is linked with {0},Säljare är länkad till {0}, +The uploaded file does not match the selected Code List.,Uppladdad fil stämmer inte överens med vald Kod Lista., +This PO has been fully subcontracted.,Detta Inköp Order har helt lagts ut på underleverantörer., +This is a preview of the email to be sent. A PDF of the document will automatically be attached with the email.,Detta är förhandsvisning av e-postmeddelandet som ska skickas. En PDF av dokumentet kommer automatiskt att bifogas med e-postmeddelandet., +This value shall be used when no matching Common Code for a record is found.,Detta värde ska användas när ingen matchande Gemensam Kod för post hittas., +"To include sub-assembly costs and scrap items in Finished Goods on a work order without using a job card, when the 'Use Multi-Level BOM' option is enabled.","Inkludera kostnader för underenheter och skrot artiklar i Färdiga Artiklar på Arbetsorder utan att använda Jobbkort, när alternativ ""Använd Flernivå Stycklista"" är aktiverat.", +Update the modified timestamp on new communications received in Lead & Opportunity.,Uppdatera ändrad tidsstämpel på ny konversation mottagen i Potentiell Kund & Möjlighet., +Update timestamp on new communication,Uppdatera tidsstämpel på ny Konversation, +Validate Components and Quantities Per BOM,Validera Komponenter och Kvantitet per Stycklista, +Valuation (I - K),Värdering (I - K), +Value (G - D),Värde (G - D), +Value ({0}),Värde ({0}), +Value as on,Värde per, +Value of New Capitalized Asset,Värde av ny Aktiverad Tllgång, +Value of New Purchase,Värde av ny Inköp, +Value of Scrapped Asset,Värde av Skrotad Tillgång, +Value of Sold Asset,Värde på Såld Tillgång, +You are importing data for the code list:,Du importerar data för Kod Lista:, +You can't process the serial number {0} as it has already been used in the SABB {1}. {2} if you want to inward same serial number multiple times then enabled 'Allow existing Serial No to be Manufactured/Received again' in the {3},"Du kan inte behandla serienummer {0} eftersom det redan har använts i Serienummer och Parti Paket {1}. {2} Om du vill leverera in samma serienummer flera gånger aktiverar du ""Tillåt att befintligt serienummer produceras/tas emot igen"" i {3}", +You cannot {0} this document because another Period Closing Entry {1} exists after {2},Du kan inte {0} detta dokument eftersom en annan Period Stängning Post {1} finns efter {2}, +as Code,som Kod, +as Description,som Beskrivning, +as Title,som Benämning, +by {},av {}, +{0} units of {1} are required in {2} with the inventory dimension: {3} ({4}) on {5} {6} for {7} to complete the transaction.,{0} enheter av {1} erfordras i {2} med lagerdimension: {3} ({4}) på {5} {6} för {7} för att slutföra transaktion., +{0} {1} is already linked to Common Code {2}.,{0} {1} är redan länkad till Gemensam kod {2}., +Allow UOM with Conversion Rate Defined in Item,Tillåt Enhet med Konvertering Sats definierad i Artikel, +Amount Difference with Purchase Invoice,Belopp Skillnad mot Inköp Faktura, +Amount in Words,Belopp i Ord, +Auto Fetch Serial Numbers,Automatisk Hämta Serienummer, +Auto Reconciliation has started in the background,Automatisk avstämning har startat i bakgrunden, +Bank Account {} in Bank Transaction {} is not matching with Bank Account {},Bank Konto {} i Bank Transaktion {} stämmer inte överens med Bank Konto {}, +Billing Address does not belong to the {0},Faktura Adress tillhör inte {0}, +Build All?,Kompilera Alla?, +CANCELLED,ANNULLERAD, +Company {0} added multiple times,Bolag {0} har lagts till flera gånger, +Contact Person does not belong to the {0},Kontakt Person tillhör inte {0}, +Conversion rate cannot be 0,Konverteringsvärde kan inte vara 0, +"Conversion rate is 1.00, but document currency is different from company currency","Konverteringsvärde är 1.00, men dokument valuta skiljer sig från bolag valuta", +Conversion rate must be 1.00 if document currency is same as company currency,"Konverteringsvärde måste vara 1,00 om dokument valuta är samma som bolag valuta", +Cost Center for Item rows has been updated to {0},Resultat Enhet för artikel rader har uppdaterats till {0}, +Depreciation eliminated via reversal,Avskrivning eliminerad via återföring, +Disable auto setting Grand Total to default Payment Mode,Inaktivera automatisk tilldelning av Total Summa till Standard Betalning Läge, +Don't Enforce Free Item Qty,Tvinga Inte Gratis Artikel Kvantitet, +Employee {0} is currently working on another workstation. Please assign another employee.,{0} arbetar för närvarande på en annan arbetsstation. Tilldela annan anställd., +Fetch Timesheet in Sales Invoice,Hämta Tidrapport i Försäljning Faktura, +Hide timesheets,Dölj Tidrapporter, +"If enabled, the system will allow selecting UOMs in sales and purchase transactions only if the conversion rate is set in the item master.",Om aktiverad kommer system att tillåta val av Enhet i försäljning och inköp transaktioner endast om konvertering sats är angiven i Artikel Inställningar., +Incorrect Serial and Batch Bundle,Felaktig Serie och Parti Paket, +Invalid amount in accounting entries of {} {} for Account {}: {},Ogiltigt belopp i bokföring av {} {} för Konto {}: {}, +Invoice ID,Faktura, +Last GL Entry update was done {}. This operation is not allowed while system is actively being used. Please wait for 5 minutes before retrying.,Senaste uppdatering av Bokföring Register gjordes {}. Denna åtgärd är inte tillåten när system används aktivt. Vänta i 5 minuter innan du försöker igen., +Mobile: ,Mobil: , +Naming Series is mandatory,Nummer Serie erfodras, +Negative Batch Quantity,Negativ Parti Kvantitet, +Net Purchase Amount,Netto Inköp Belopp, +No Selection,Inget valt, +Outstanding (Company Currency),Utestående (Bolag Valuta), +POS Closed,Kassa Stängd, +POS has been closed at {0}. Please refresh the page.,Kassa stängd {0}. Uppdatera sida., +Partial Payment in POS Invoice is not allowed.,Delbetalning med Kassa Faktura är inte tillåten., +Payment Status,Betalningsstatus, +Please set both the Tax ID and Fiscal Code on Company {0},Ange både Moms och Org. Nr. för {0}, +Printed on {0},Utskriven {0}, +Recreate Stock Ledgers,Återskapa Lager Register, +Remove SABB Entry,Ta bort Serie och Parti Paket, +Selected Serial and Batch Bundle entries have been removed.,Valda Serie och Parti Paket poster har tagits bort., +Set Serial and Batch Bundle Naming Based on Naming Series,Ange namn på Serie och Parti paket baserat på Nummer Serie, +Shipping Address does not belong to the {0},Leveransadress tillhör inte {0}, +Sub Total,Delsumma, +Subcontracting Conversion Factor,Underleverantör Konvertering Faktor, +System In Use,System Används, +The Batch {0} has negative quantity {1} in warehouse {2}. Please correct the quantity.,Parti {0} har negativ kvantitet {1} i lager {2}. Korrigera kvantitet., +"The following batches are expired, please restock them:
{0}","Följande partier är utgångna, fyll på dem:
{0}", +The serial and batch bundle {0} not linked to {1} {2},Serie och Parti Paket {0} är inte kopplat till {1} {2}, +The user cannot submit the Serial and Batch Bundle manually,Användare kan inte godkänna Serie och Parti Paket manuellt, +Total Weight (kg),Total Vikt (kg), +UnReconcile Allocations,Ångra Tilldelningar, +{0} is a mandatory field.,{0} är erfordrad fält., +{0} items lost during process.,{0} artiklar förlorade under processen., +{0}: {1} does not belong to the Company: {2},{0}: {1} tillhör inte bolag: {2}, +{} {} is not affecting bank account {},{} {} påverkar inte bank konto {}, diff --git a/erpnext/translations/tr.csv b/erpnext/translations/tr.csv index f79acdbb6c6..ec1daedde35 100644 --- a/erpnext/translations/tr.csv +++ b/erpnext/translations/tr.csv @@ -9690,3 +9690,2866 @@ Default Amendment Naming,Varsayılan Değişikliğin Adlandırılması, Update Amendment Naming,Değişiklik Adlandırmasını Güncelle, Default Naming,Varsayılan Adlandırma, Amend Counter,Sayacı Değiştir, + Address, Adres, + Amount, Tutar, + Is Child Table, Alt Tablo, + Name,İsim, + Rate, Fiyat, + Summary, Özet, +"""SN-01::10"" for ""SN-01"" to ""SN-10""",“SN-01::10” için “SN-01” ile “SN-10”, +# In Stock,# Stokta, +# Req'd Items,# Gerekli Ürünler, +% Finished Item Quantity,% Bitmiş Ürün Miktarı, +% Occupied,% Dolu, +% Picked,% Hazır, +'Account' in the Accounting section of Customer {0},{0} isimli Müşterinin Muhasebe bölümündeki ‘Hesap’, +'Allow Multiple Sales Orders Against a Customer's Purchase Order','Müşterinin Satın Alma Siparişine Karşı Çoklu Satış Siparişlerine İzin Ver', +'Default {0} Account' in Company {1},Şirket {1} için Varsayılan {0} Hesabı, +"'Inspection Required before Delivery' has disabled for the item {0}, no need to create the QI","Teslimattan Önce Kalite Kontrol Gereklidir ayarı {0} ürünü için devre dışı bırakılmıştır, Kalite Kontrol Raporu oluşturmanıza gerek yok.", +"'Inspection Required before Purchase' has disabled for the item {0}, no need to create the QI","Satın Alma Öncesi Kalite Kontrol Gereklidir ayarı {0} ürünü için devre dışı bırakılmıştır, Kalite Kontrol Raporu oluşturmanıza gerek yok.", +'To Package No.' cannot be less than 'From Package No.','Hedef Paket No' 'Kaynak Paket No' dan az olamaz., +'{0}' account is already used by {1}. Use another account.,'{0}' hesabı zaten {1} tarafından kullanılıyor. Başka bir hesap kullanın., +'{0}' should be in company currency {1}.,'{0}' şirket para birimi {1} olmalıdır., +(A) Qty After Transaction,(A) İşlem Sonrası Miktar, +(B) Expected Qty After Transaction,(B) İşlem Sonrası Beklenen Miktar, +(C) Total Qty in Queue,(C) Kuyruktaki Toplam Miktar, +(C) Total qty in queue,(C) Kuyruktaki Toplam Miktar, +(D) Balance Stock Value,(D) Stok Değeri Bakiyesi, +(E) Balance Stock Value in Queue,(E) Kuyruktaki Stok Değeri Bakiyesi, +(F) Change in Stock Value,(F) Stok Değerindeki Değişim, +(G) Sum of Change in Stock Value,(F) Stok Değerindeki Değişim, +(H) Change in Stock Value (FIFO Queue),(H) Stok Değerindeki Değişim (FIFO Kuyruğu), +(H) Valuation Rate,(H) Değerleme Oranı, +(I) Valuation Rate,(I) Değerleme Oranı, +(J) Valuation Rate as per FIFO,(J) FIFO'ya göre Değerleme Oranı, +(K) Valuation = Value (D) ÷ Qty (A),(K) Değerleme = Değer (D) ÷ Miktar (A), +0-30 Days,0-30 Gün, +3 Yearly,3 Yıllık, +30-60 Days,30-60 Gün, +60-90 Days,60-90 Gün, +90 Above,90 Üstü, +"
+

Note

+
    +
  • +You can use Jinja tags in Subject and Body fields for dynamic values. +
  • + All fields in this doctype are available under the doc object and all fields for the customer to whom the mail will go to is available under the customer object. +
+

Examples

+ +
    +
  • Subject:

    Statement Of Accounts for {{ customer.customer_name }}

  • +
  • Body:

    +
    Hello {{ customer.customer_name }},
    PFA your Statement Of Accounts from {{ doc.from_date }} to {{ doc.to_date }}.
  • +
+","
+

Not

+
    +
  • +Dinamik değerler için Konu ve Gövde alanlarında Jinja etiketlerini kullanabilirsiniz. +
  • + Bu belge türündeki tüm alanlar belge nesnesi altında ve postanın gideceği müşteriye ait tüm alanlar müşteri nesnesi altında mevcuttur. +
+

Örnekler

+ +
    +
  • Konu:

    Hesap Özeti {{ customer.customer_name }}

  • +
  • Gövde:

    +
    Merhaba {{ customer.customer_name }},
    Hesap Özetinizi {{ doc.from_date }} 'den {{ doc.to_date }}'e kadar PFA yapın.
  • +
+", +"
Other Details
","
Diğer Detaylar
", +"
No Matching Bank Transactions Found
","
Eşleşen Banka İşlemi Bulunamadı
", +"
+

All dimensions in centimeter only

+
","
+

Tüm boyutlar sadece santimetre cinsindendir

+
", +"

About Product Bundle

+ +

Aggregate group of Items into another Item. This is useful if you are bundling a certain Items into a package and you maintain stock of the packed Items and not the aggregate Item.

+

The package Item will have Is Stock Item as No and Is Sales Item as Yes.

+

Example:

+

If you are selling Laptops and Backpacks separately and have a special price if the customer buys both, then the Laptop + Backpack will be a new Product Bundle Item.

","

Ürün Paketi Hakkında

+ +

Bir grup Ürünü başka bir Üründe toplar. Bu, belirli Ürünleri bir pakette topluyorsanız ve toplu Ürünün değil paketlenmiş Ürünlerin stokunu tutuyorsanız kullanışlıdır.

+

Paket Ürünü Stok Ürünü mü Hayır ve Satış Ürünü mü Evet olarak ayarlanacaktır.

+

Örnek:

+

Dizüstü Bilgisayarları ve Sırt Çantalarını ayrı ayrı satıyorsanız ve müşteri her ikisini de satın alırsa özel bir fiyatınız varsa, Dizüstü Bilgisayar + Sırt Çantası yeni bir Ürün Paketinin Ürünü olacaktır.

", +"

Currency Exchange Settings Help

+

There are 3 variables that could be used within the endpoint, result key and in values of the parameter.

+

Exchange rate between {from_currency} and {to_currency} on {transaction_date} is fetched by the API.

+

Example: If your endpoint is exchange.com/2021-08-01, then, you will have to input exchange.com/{transaction_date}

","

Döviz Kuru Ayarları Yardımı

+

Son nokta, sonuç anahtarı ve parametre değerlerinde kullanılabilecek 3 değişken vardır.

+

{transaction_date} tarihinde {from_currency} ile {to_currency} arasındaki döviz kuru API tarafından alınır.

+

Örnek: Son noktanız exchange.com/2024-08-01 ise, exchange.com/{transaction_date}

girmeniz gerekecektir.", +"

Body Text and Closing Text Example

+ +
We have noticed that you have not yet paid invoice {{sales_invoice}} for {{frappe.db.get_value(""Currency"", currency, ""symbol"")}} {{outstanding_amount}}. This is a friendly reminder that the invoice was due on {{due_date}}. Please pay the amount due immediately to avoid any further dunning cost.
+ +

How to get fieldnames

+ +

The fieldnames you can use in your template are the fields in the document. You can find out the fields of any documents via Setup > Customize Form View and selecting the document type (e.g. Sales Invoice)

+ +

Templating

+ +

Templates are compiled using the Jinja Templating Language. To learn more about Jinja, read this documentation.

","

Gövde Metni ve Kapanış Metni Örneği

+ +
{{frappe.db.get_value(""Currency"", currency, ""symbol"")}} {{outstanding_amount}}için {{sales_invoice}} faturasını henüz ödemediğinizi fark ettik. Bu, faturanın {{due_date}}tarihinde ödenmesi gerektiğine dair dostane bir hatırlatmadır. Daha fazla ihtar masrafından kaçınmak için lütfen ödenmesi gereken tutarı derhal ödeyin.
+ +

Alan adları nasıl alınır

+ +

Şablonunuzda kullanabileceğiniz alan adları belgede yer alan alanlardır. Herhangi bir belgenin alanlarını Kurulum > Form Görünümünü Özelleştir üzerinden ve belge türünü seçerek öğrenebilirsiniz (örn. Satış Faturası)

+ +

Şablonlama

+ +

Şablonlar Jinja Templating Language kullanılarak derlenir. Jinja hakkında daha fazla bilgi edinmek için bu belgeyi okuyun.

", +"

Contract Template Example

+ +
Contract for Customer {{ party_name }}
+
+-Valid From : {{ start_date }} 
+-Valid To : {{ end_date }}
+
+ +

How to get fieldnames

+ +

The field names you can use in your Contract Template are the fields in the Contract for which you are creating the template. You can find out the fields of any documents via Setup > Customize Form View and selecting the document type (e.g. Contract)

+ +

Templating

+ +

Templates are compiled using the Jinja Templating Language. To learn more about Jinja, read this documentation.

","

Sözleşme Şablonu Örneği

+ +
Müşteri için Sözleşme {{ party_name }}
+
+-Geçerli Başlangıç : {{ start_date }} 
+-Geçerli Bitiş : {{ end_date }}
+
+ +

Alan adları nasıl alınır

+ +

Sözleşme Şablonunuzda kullanabileceğiniz alan adları, şablonunu oluşturduğunuz Sözleşmedeki alanlardır. Herhangi bir belgenin alanlarını Kurulum > Form Görünümünü Özelleştir aracılığıyla ve belge türünü (örneğin Sözleşme) seçerek öğrenebilirsiniz

+ +

Şablonlama

+ +

Şablonlar Jinja Templating Language kullanılarak derlenir. Jinja hakkında daha fazla bilgi edinmek için bu belgeyi okuyun.

", +"

Standard Terms and Conditions Example

+ +
Delivery Terms for Order number {{ name }}
+
+-Order Date : {{ transaction_date }} 
+-Expected Delivery Date : {{ delivery_date }}
+
+ +

How to get fieldnames

+ +

The fieldnames you can use in your email template are the fields in the document from which you are sending the email. You can find out the fields of any documents via Setup > Customize Form View and selecting the document type (e.g. Sales Invoice)

+ +

Templating

+ +

Templates are compiled using the Jinja Templating Language. To learn more about Jinja, read this documentation.

","

Standart Şartlar ve Koşullar Örneği

+ +
Sipariş numarası için Teslimat Koşulları {{ name }}
+
+-Sipariş Tarihi: {{ transaction_date }} 
+-Beklenen Teslimat Tarihi: {{ delivery_date }}
+
+ +

Alan adları nasıl alınır

+ +

E-posta şablonunuzda kullanabileceğiniz alan adları, e-postayı gönderdiğiniz belgedeki alanlardır. Herhangi bir belgenin alanlarını Kurulum > Form Görünümünü Özelleştir ve belge türünü (örneğin Satış Faturası) seçerek bulabilirsiniz

+ +

Şablonlama

+ +

Şablonlar Jinja Şablonlama Dili kullanılarak derlenir. Jinja hakkında daha fazla bilgi edinmek için bu dokümanı okuyun.

", +"
Or
","
Veya
", +"","", +"","", +"","", +"

In your Email Template, you can use the following special variables: +

+
    +
  • + {{ update_password_link }}: A link where your supplier can set a new password to log into your portal. +
  • +
  • + {{ portal_link }}: A link to this RFQ in your supplier portal. +
  • +
  • + {{ supplier_name }}: The company name of your supplier. +
  • +
  • + {{ contact.salutation }} {{ contact.last_name }}: The contact person of your supplier. +
  • + {{ user_fullname }}: Your full name. +
  • +
+

+

Apart from these, you can access all values in this RFQ, like {{ message_for_supplier }} or {{ terms }}.

","

E-posta Şablonunuzda, aşağıdaki özel değişkenleri kullanabilirsiniz: +

+
    +
  • + {{ update_password_link }}: Tedarikçinizin portalınıza giriş yapmak için yeni bir şifre belirleyebileceği bir bağlantı. +
  • +
  • + {{ portal_link }}: Tedarikçi portalınızda bu Fiyat Teklifi Talebine yönlendiren bir bağlantı. +
  • +
  • + {{ supplier_name }}: Tedarikçinizin şirket adı. +
  • +
  • + {{ contact.salutation }} {{ contact.last_name }}: Tedarikçinizin iletişim kişisi. +
  • + {{ user_fullname }}: Tam adınız. +
  • +
+

+

Bunların dışında, bu Fiyat Teklifi Talebindeki tüm değerlere, {{ message_for_supplier }} veya {{ terms }} gibi, erişebilirsiniz.

", +"
Message Example
+ +<p> Thank You for being a part of {{ doc.company }}! We hope you are enjoying the service.</p> + +<p> Please find enclosed the E Bill statement. The outstanding amount is {{ doc.grand_total }}.</p> + +<p> We don't want you to be spending time running around in order to pay for your Bill.
After all, life is beautiful and the time you have in hand should be spent to enjoy it!
So here are our little ways to help you get more time for life! </p> + +<a href=""{{ payment_url }}""> click here to pay </a> + +
+","
Mesaj Örneği
+ +<p> {{ doc.company }}'in bir parçası olduğunuz için teşekkür ederiz! Hizmetten keyif aldığınızı umuyoruz.</p> + +<p> E-Fatura ekstresini ekte bulabilirsiniz. Ödenmemiş tutar {{ doc.grand_total }}'dir.</p> + +<p> Faturanızı ödemek için oradan oraya koşturarak zaman harcamanızı istemiyoruz.
Sonuçta, hayat güzeldir ve elinizdeki zamanı tadını çıkarmak için harcamalısınız!
İşte hayatınıza daha fazla zaman ayırmanıza yardımcı olacak küçük yollarımız! </p> + +<a href=""{{ payment_url }}""> ödeme yapmak için tıklayın </a> + +
+", +"
Message Example
+ +<p>Dear {{ doc.contact_person }},</p> + +<p>Requesting payment for {{ doc.doctype }}, {{ doc.name }} for {{ doc.grand_total }}.</p> + +<a href=""{{ payment_url }}""> click here to pay </a> + +
+","
Mesaj Örneği
+ +<p>Sevgili {{ doc.contact_person }},</p> + +<p> {{ doc.doctype }}, {{ doc.name }} için {{ doc.grand_total }}için ödeme talep ediyoruz.</p> + +<a href=""{{ payment_url }}""> ödemek için buraya tıklayın </a> + +
+", +"Masters & Reports","Kayıtlar & Raporlar", +"Quick Access","Hızlı Erişim", +"Reports & Masters","Raporlar & Kayıtlar", +"Reports & Masters","Raporlar & Kayıtlar", +"Settings","Ayarlar", +"Shortcuts","Kısayollar", +"Your Shortcuts + + + + + + ","Kısayollar + + + + + + ", +"Your Shortcuts","Kısayollar", +Grand Total: {0},Genel Toplam: {0}, +Outstanding Amount: {0},Ödenmemiş Tutar: {0}, +" + + + + + + + + + + + + + + + + + +
Child DocumentNon Child Document
+

To access parent document field use parent.fieldname and to access child table document field use doc.fieldname

+ +
+

To access document field use doc.fieldname

+
+

Example: parent.doctype == ""Stock Entry"" and doc.item_code == ""Test""

+ +
+

Example: doc.doctype == ""Stock Entry"" and doc.purpose == ""Manufacture""

+
+ + + + + + +"," + + + + + + + + + + + + + + + + + +
Çocuk BelgesiÇocuk Olmayan Belge
+

Üst belge alanına erişmek için parent.fieldname ve alt tablo belge alanına erişmek için doc.fieldname kullanın

+ +
+

Belge alanına erişmek için doc.fieldname kullanın

+
+

Örnek: parent.doctype == ""Stok Girişi"" ve doc.item_code == ""Test""

+ +
+

Örnek: doc.doctype == ""Stok Girişi"" ve doc.purpose == ""Üretim""

+
+ + + + + + +", +A Holiday List can be added to exclude counting these days for the Workstation.,İş İstasyonu için bu günlerin sayılmasını hariç tutmak üzere bir Tatil Listesi eklenebilir., +A Packing Slip can only be created for Draft Delivery Note.,Bir Paketleme Fişi yalnızca Taslak İrsaliye için oluşturulabilir., +"A Price List is a collection of Item Prices either Selling, Buying, or both","Fiyat Listesi, Satılan, Alınan veya Her İkisi de Olan Ürün Fiyatlarının bir koleksiyonudur", +A Reconciliation Job {0} is running for the same filters. Cannot reconcile now,Aynı filtreler için {0} numaralı bir Mutabakat İşi çalışıyor. Şu anda mutabakat yapılamaz, +A Transaction Deletion Document: {0} is triggered for {0},İşlem Silme Belgesi: {0} için {0} başlatıldı, +A customer must have primary contact email.,Müşterinin birincil iletişim e-postasına sahip olması gerekir., +A driver must be set to submit.,Göndermek için bir sürücü ayarlanmalıdır., +A template with tax category {0} already exists. Only one template is allowed with each tax category,{0} vergi kategorisiyle zaten bir şablon mevcut. Her vergi kategorisi için yalnızca bir şablona izin verilir, +API Details,API Ayrıntıları, +AWB Number,AWB Numarası, +Abbreviation: {0} must appear only once,Kısaltma: {0} yalnızca bir kez görünmelidir, +About Us Settings,Hakkımızda Ayarları, +About {0} minute remaining,Yaklaşık {0} dakika kaldı, +About {0} minutes remaining,Yaklaşık {0} dakika kaldı, +About {0} seconds remaining,Yaklaşık {0} saniye kaldı, +Acceptance Criteria Formula,Kabul Kriterleri Formülü, +Acceptance Criteria Value,Kabul Kriterleri Değeri, +Access Key,Erişim Anahtarı, +Access Key is required for Service Provider: {0},Servis Sağlayıcı için Erişim Anahtarı gereklidir: {0}, +"According to the BOM {0}, the Item '{1}' is missing in the stock entry.","{0} Ürün Ağacı, ‘{1}’ ürünü stok girişinde eksik.", +Account Balance (From),Borç Hesabı, +Account Balance (To),Alacak Hesabı, +Account Closing Balance,Hesap Kapanış Bakiyesi, +Account Currency (From),Hesap Para Birimi (Borç), +Account Currency (To),Hesap Para Birimi (Alacak), +Account Opening Balance,Hesap Açılış Bakiyesi, +Account not Found,Hesap bulunamadı, +Account {0} added multiple times,{0} Hesabı birden çok kez eklendi, +Accounting Dimension Filter,Muhasebe Boyutu Filtresi, +Accounting Dimensions Filter,Muhasebe Boyutları Filtresi, +Accounting Entry for {0},{0} için Muhasebe Girişi, +Accounts Missing Error,Hesap Eksik Hatası, +Accounts to Merge,Birleştirilecek Hesaplar, +Action if Same Rate is Not Maintained Throughout Sales Cycle,Satış Döngüsü Boyunca Aynı Oran Korunmazsa Yapılacak İşlem, +Active Status,Aktif Durum, +Actual Balance Qty,Gerçek Bakiye Miktarı, +Actual Expense,Gerçekleşen Gider, +Actual Posting,Gerçek Kaydetme Zamanı, +Actual Qty in Warehouse,Depodaki Gerçek Miktar, +Add Discount,İndirim Ekle, +Add Items in the Purpose Table,Amaç Tablosuna Öğeler Ekleyin, +Add Lead to Prospect,Potansiyel Müşteriye Ekle, +Add Local Holidays,Yerel Tatilleri Ekle, +Add Manually,Manuel Olarak Ekle, +Add Or Deduct,Ekle veya Çıkar, +Add Serial / Batch Bundle,Seri / Toplu Paket Ekle, +Add Serial / Batch No,Seri / Parti No Ekle, +Add Serial / Batch No (Rejected Qty),Seri / Parti No Ekle (Reddedilen Miktar), +Add Stock,Stok Ekle, +Add Sub Assembly,Alt Montaj Ekle, +Add Template,Şablon Ekle, +Add a Note,Not Ekle, +Add details,Detayları Ekle, +Add to Prospect,Potansiyel Müşteriye Ekle, +Added By,Ekleyen, +Added On,Eklenme Tarihi, +Added Supplier Role to User {0}.,{0} Kullanıcısına Tedarikçi Rolü eklendi., +Added {1} Role to User {0}.,{1} Rolü {0} Kullanıcısına Eklendi., +Adding Lead to Prospect...,Müşteri Adayı Potansiyel Müşteriye Ekleniyor..., +Additional,Ek Olarak, +Additional Asset Cost,Ek Varlık Maliyeti, +Additional Cost Per Qty,Adet Başına Ek Maliyet, +Additional Data,Ek Veriler, +Address And Contacts,Adres ve Kişiler, +Adjust Asset Value,Varlık Değerini Ayarla, +Adjustment Against,Karşılığına Yapılan Düzenleme, +Adjustment based on Purchase Invoice rate,Satın Alma Faturası oranına göre düzeltme, +Advance Account: {0} must be in either customer billing currency: {1} or Company default currency: {2},Avans Hesabı: {0} müşteri fatura para biriminde olmalıdır: {1} veya Şirketin varsayılan para biriminde: {2}, +Advance Payment,Avans Ödemesi, +Advance Payment Date,Peşinat Ödeme Tarihi, +Advance Payment Ledger Entry,Peşin Ödeme Muhasebe Kaydı, +Advance Reconciliation Takes Effect On,Avans Mutabakatı Şu Tarihten İtibaren Geçerli Olur, +Advance Tax,Peşin Vergi, +Advance paid against {0} {1} cannot be greater than Grand Total {2},"{0} {1} karşılığında ödenen avans, Genel Toplam {2} tutarından fazla olamaz.", +Advance payments allocated against orders will only be fetched,Sadece siparişlere karşılık gelen avans ödemeleri alınacaktır., +Affected Transactions,Etkilenen İşlemler, +Against Customer Order {0},Müşteri Siparişi {0} Karşılığında, +Against Supplier Invoice {0},Tedarikçi Faturasına Karşı {0}, +Against Voucher No,İlgili Belge No, +Age ({0}),Yaş ({0}), +Ageing Range,Stokta Kalma Süresi, +Agent Busy Message,Temsilci Meşgul Mesajı, +Agent Group,Temsilci Grubu, +Agent Unavailable Message,Temsilci Müsait Değil Mesajı, +Algorithm,Algoritma, +All Activities,Tüm Aktiviteler, +All Activities HTML,Tüm Etkinlikler HTML, +All Items,Tüm Ürünler, +All Sales Transactions can be tagged against multiple Sales Persons so that you can set and monitor targets.,"Tüm Satış İşlemleri birden fazla Satış Elemanına etiketlenebilir, böylece hedefler belirleyebilir ve izleyebilirsiniz.", +All allocations have been successfully reconciled,Tüm tahsisatların mutabakatı başarıyla sağlandı, +All items have already been received,Tüm ürünler zaten alındı, +All items in this document already have a linked Quality Inspection.,Bu belgedeki tüm Ürünlerin zaten bağlantılı bir Kalite Kontrolü var., +"All the required items (raw materials) will be fetched from BOM and populated in this table. Here you can also change the Source Warehouse for any item. And during the production, you can track transferred raw materials from this table.","Tüm gerekli malzemeler (hammadde) Ürün Ağacı'ndan alınarak bu tabloya eklenir. Burada herhangi bir ürün için Kaynak Depo'yu da değiştirebilirsiniz. Üretim sırasında, bu tablodan transfer edilen hammaddeleri takip edebilirsiniz.", +Allocate Payment Request,Ödeme Talebini Tahsis Et, +Allocated Entries,Tahsis Edilen Girişler, +Allocated To:,Ayrılan:, +Allocations,Tahsisler, +Allow,İzin Ver, +Allow Alternative Item must be checked on Item {},{} Ürünü için Alternatif Ürüne İzin Ver seçeneği işaretlenmelidir, +Allow Internal Transfers at Arm's Length Price,İç Transferlerde Piyasa Fiyatına İzin Ver, +Allow Or Restrict Dimension,Boyuta İzin Ver veya Sınırla, +Allow Partial Reservation,Kısmi Rezervasyona İzin Ver, +Allow User to Edit Discount,Kullanıcının İndirimi Düzenlemesine İzin Verin, +Allow User to Edit Rate,Kullanıcının Fiyatı Düzenlemesine İzin Verin, +Allow Zero Rate,Sıfır Değerlemeye İzin Ver, +Allow existing Serial No to be Manufactured/Received again,Mevcut Seri Numarasının Tekrar Üretilmesine/Alınmasına İzin Ver, +Allow to Edit Stock UOM Qty for Purchase Documents,Satın Alma için Stok Birimi Adetini Düzenlemeye İzin Ver, +Allow to Edit Stock UOM Qty for Sales Documents,Satış Belgelerinde Stok Birimi Miktarını Düzenlemeye İzin Ver, +Allowed,İzin Verilen, +Allowed Dimension,İzin Verilen Boyut, +Allowed Doctypes,İzin Verilen DocType'lar, +Allowed primary roles are 'Customer' and 'Supplier'. Please select one of these roles only.,İzin verilen birincil roller 'Müşteri' ve 'Tedarikçi'dir. Lütfen yalnızca bu rollerden birini seçin., +Allows to keep aside a specific quantity of inventory for a particular order.,Belirli bir sipariş için envanterden belirli bir miktarı ayırmaya olanak tanır., +Already Picked,Zaten Seçilmiş, +Alternative Items,Alternatif Ürünler, +"Alternatively, you can download the template and fill your data in.","Alternatif olarak, şablonu indirebilir ve verilerinizi doldurabilirsiniz.", +Amount (AED),Tutar (AED), +Amount in Account Currency,Hesap Para Birimindeki Tutar, +Amount in party's bank account currency,Tarafın banka hesabındaki tutar para birimi, +Amount in transaction currency,İşlem para birimi cinsinden tutar, +Amounts,Tutarlar, +An Item Group is a way to classify items based on types.,"Ürün Grubu, Ürünleri türlerine göre sınıflandırmanın bir yoludur.", +An error has been appeared while reposting item valuation via {0},Ürün değerlemesi {0} üzerinden yeniden yayınlanırken bir hata oluştu, +"Another Cost Center Allocation record {0} applicable from {1}, hence this allocation will be applicable upto {2}","Başka bir Maliyet Merkezi Tahsis kaydı {0} {1} tarihinden itibaren geçerlidir, dolayısıyla bu tahsis {2} tarihine kadar geçerli olacaktır", +Another Payment Request is already processed,Başka bir Ödeme Talebi zaten işleme alındı, +"Any one of following filters required: warehouse, Item Code, Item Group","Aşağıdaki filtrelerden herhangi biri gereklidir: Depo, Ürün Kodu, Ürün Grubu", +Applicable Dimension,Uygulanabilir Boyut, +Applicable On Account,Hesap Üzerinden Uygulanabilir, +Applied on each reading.,Her okumaya uygulanır., +Applied putaway rules.,Yerleştirme kuralları uygulandı., +Applies To,Uygulanan, +Apply Recursion Over (As Per Transaction UOM),Tekrarlamayı Uygula (İşlem Ölçü Birimine Göre), +Apply TDS,Vergiyi Dahil Et, +Apply Tax Withholding Amount ,Vergi Kesintisini Uygula , +Apply restriction on dimension values,Boyut değerlerine kısıtlama uygulayın, +Apply to All Inventory Documents,Tüm Envanter Belgelerine Uygula, +Apply to Document,Belgeye Uygula, +Appointment Created Successfully,Randevu Başarıyla Oluşturuldu, +Appointment Scheduling Disabled,Randevu Planlama Devre Dışı, +Appointment Scheduling has been disabled for this site,Bu site için Randevu Planlama devre dışı bırakıldı, +Appointment was created. But no lead was found. Please check the email to confirm,Randevu oluşturuldu. Ancak müşteri adayı bulunamadı. Lütfen onaylamak için e-postayı kontrol edin, +Approximately match the description/party name against parties,Açıklama/cari adını carilerle yaklaşık olarak eşleştirin, +Are you sure you want to clear all demo data?,Tüm Demo Verilerini temizlemek istediğinizden emin misiniz?, +Are you sure you want to delete this Item?,Bu ürünü silmek istediğinizden emin misiniz?, +Are you sure you want to delete {0}?

This action will also delete all associated Common Code documents.

,"{0} girişini silmek istediğinizden emin misiniz?

Bu işlem, ilişkili tüm Ortak Kod belgelerini de silecektir.

", +Are you sure you want to restart this subscription?,Bu aboneliği yeniden başlatmak istediğinizden emin misiniz?, +As on Date,Tarih itibariyle, +"As there are existing submitted transactions against item {0}, you can not change the value of {1}.","{0} Ürününe karşı mevcut gönderilmiş işlemler olduğundan, {1} değerini değiştiremezsiniz.", +"As there are negative stock, you can not enable {0}.",Negatif stok olduğu için {0} özelliğini aktif hale getiremezsiniz., +"As there are reserved stock, you cannot disable {0}.",Depolarda Rezerv stok olduğu için {0} ayarını devre dışı bırakamazsınız., +"As there are sufficient Sub Assembly Items, Work Order is not required for Warehouse {0}.","Yeterli Alt Montaj Ürünleri mevcut olduğundan, {0} Deposu için İş Emri gerekli değildir.", +"As {0} is enabled, you can not enable {1}.",{0} etkinleştirildiğinden {1} etkinleştirilemez., +Asset Capitalization Asset Item,Varlık Sermayelendirmesi Varlık Kalemi, +Asset Capitalization Service Item,Varlık Sermayelendirme Hizmet Kalemi, +Asset Capitalization Stock Item,Varlık Sermayesi Stok Kalemi, +Asset Depreciation Details,Varlık Amortisman Detayları, +Asset Depreciation Schedule for Asset {0} and Finance Book {1} is not using shift based depreciation,Varlık Amortisman Programı {0} ve Finans Defteri {1} için vardiya bazlı amortisman kullanmıyor, +Asset Depreciation Schedule not found for Asset {0} and Finance Book {1},Varlık Amortisman Programı Varlık {0} ve Finans Defteri {1} için bulunamadı, +Asset Depreciation Schedule {0} for Asset {1} already exists.,Varlık Amortisman Programı {0} Varlık {1} için zaten mevcut., +Asset Depreciation Schedule {0} for Asset {1} and Finance Book {2} already exists.,Varlık Amortisman Programı {0} Varlık {1} ve Finans Defteri {2} için zaten mevcut., +"Asset Depreciation Schedules created:
{0}

Please check, edit if needed, and submit the Asset.","Varlık Amortisman Çizelgeleri oluşturuldu:
{0}

Lütfen kontrol edin, gerekiyorsa düzenleyin ve Varlığı kaydedin.", +Asset ID,Varlık Kimliği, +Asset Quantity,Varlık Miktarı, +Asset Repair Consumed Item,Varlık Onarımı Tüketilen Öğe, +Asset Shift Allocation,Varlık Vardiya Ataması, +Asset Shift Factor,Varlık Kaydırma Faktörü, +Asset Shift Factor {0} is set as default currently. Please change it first.,Varlık Kaydırma Faktörü {0} şu anda varsayılan olarak ayarlanmıştır. Lütfen önce bunu değiştirin., +Asset cancelled,Varlık iptal edildi, +Asset capitalized after Asset Capitalization {0} was submitted,Varlık Sermayelendirmesi {0} gönderildikten sonra varlık sermayelendirildi, +Asset created,Varlık oluşturuldu, +Asset created after Asset Capitalization {0} was submitted,Varlık Sermayelendirmesi {0} gönderildikten sonra oluşturulan varlık, +Asset created after being split from Asset {0},Varlıktan ayrıldıktan sonra oluşturulan varlık {0}, +Asset deleted,Varlık silindi, +Asset issued to Employee {0},Personele verilen varlık {0}, +Asset out of order due to Asset Repair {0},"Varlık, {0} nedeniyle onarımda ve şuan devre dışı.", +Asset received at Location {0} and issued to Employee {1},Varlık {0} Konumunda alındı ve {1} Çalışanına verildi, +Asset restored,Varlık geri yüklendi, +Asset restored after Asset Capitalization {0} was cancelled,Varlık Sermayelendirmesi {0} iptal edildikten sonra varlık geri yüklendi, +Asset returned,Varlık iade edildi, +Asset scrapped,Varlık hurdaya çıkarıldı, +Asset sold,Satılan Varlık, +Asset submitted,Varlık Kaydedildi, +Asset transferred to Location {0},Varlık {0} konumuna aktarıldı, +Asset updated after being split into Asset {0},"Varlık, Varlığa bölündükten sonra güncellendi {0}", +Asset updated after cancellation of Asset Repair {0},Varlık Onarımı {0} iptal edildikten sonra varlık güncellendi., +Asset updated after completion of Asset Repair {0},Varlık Onarımı {0} tamamlandıktan sonra varlık güncellendi., +Asset {0} cannot be received at a location and given to an employee in a single movement,Varlık {0} tek bir hareketle bir yerden alınıp bir personele verilemez, +Asset {0} does not belong to Item {1},{0} Varlık {1} Ürününe ait değil, +Asset {0} does not exist,{0} Varlığı mevcut değil, +Asset {0} has been created. Please set the depreciation details if any and submit it.,Varlık {0} oluşturuldu. Lütfen varsa amortisman ayrıntılarını ayarlayın ve gönderin., +Asset {0} has been updated. Please set the depreciation details if any and submit it.,Varlık {0} güncellendi. Lütfen varsa amortisman ayrıntılarını ayarlayın ve gönderin., +Asset's depreciation schedule updated after Asset Shift Allocation {0},Varlığın amortisman programı Varlık Kaydırma Tahsisinden sonra güncellendi {0}, +Asset's value adjusted after cancellation of Asset Value Adjustment {0},Varlık Değer Düzeltmesinin iptalinden sonra varlığın düzeltilmiş değeri {0}, +Asset's value adjusted after submission of Asset Value Adjustment {0},Varlık Değer Düzeltmesinin sunulmasından sonra düzeltilen varlık değeri {0}, +Assign Job to Employee,Yapılacak İşi Personele Ata, +Assignment,Atama, +At Row #{0}: The picked quantity {1} for the item {2} is greater than available stock {3} for the batch {4} in the warehouse {5}. Please restock the item.,"Satır #{0}: {2} ürünü için seçilen miktar {1}, {5} deposundaki {4} parti numarası için mevcut stok {3} miktarından daha fazla. Lütfen ürünü yeniden stoklayın.", +At Row #{0}: The picked quantity {1} for the item {2} is greater than available stock {3} in the warehouse {4}.,"Satır #{0}: Ürün {2} için seçilen miktar {1}, depo {4} içinde mevcut stok {3} değerinden fazladır.", +At least one account with exchange gain or loss is required,En az bir adet döviz kazancı veya kaybı hesabının bulunması zorunludur, +At row {0}: Batch No is mandatory for Item {1},"Satır {0}: Parti No, {1} Ürünü için zorunludur", +At row {0}: Parent Row No cannot be set for item {1},"Satır {0}: Üst Satır No, {1} öğesi için ayarlanamıyor", +At row {0}: Qty is mandatory for the batch {1},Satır {0}: {1} partisi için miktar zorunludur, +At row {0}: Serial No is mandatory for Item {1},"Satır {0}: Seri No, {1} Ürünü için zorunludur", +At row {0}: Serial and Batch Bundle {1} has already created. Please remove the values from the serial no or batch no fields.,Satır {0}: Seri ve Toplu Paket {1} zaten oluşturuldu. Lütfen seri no veya toplu no alanlarından değerleri kaldırın., +At row {0}: set Parent Row No for item {1},Satır {0}: Ürün {1} için Üst Satır No'yu ayarlayın, +Attach CSV File,CSV Dosyası Ekle, +Attribute value: {0} must appear only once,Özellik değeri: {0} yalnızca bir kez görünmelidir, +Auto Create Serial and Batch Bundle For Outward,Dışarıya Yönelik Otomatik Seri ve Toplu Paket Oluşturma, +Auto Created Serial and Batch Bundle,Otomatik Oluşturulan Seri ve Toplu Paket, +Auto Email Report,Otomatik E-Posta Raporu, +Auto Name,Otomatik İsim, +Auto Reconcile,Otomatik Mutabakat, +Auto Reconciliation,Otomatik Mutabakat, +Auto Reconciliation Job Trigger,Otomatik Mutabakat İşlemi Tetikleyicisi, +Auto Reconciliation of Payments has been disabled. Enable it through {0},Ödemelerin Otomatik Mutabakatı devre dışı bırakıldı. {0} adresinden etkinleştirin., +Auto Reserve Serial and Batch Nos,Seri ve Parti Numaralarını Otomatik Rezerve Et, +Auto Reserve Stock for Sales Order on Purchase,Satın Alma Sırasında Satış Siparişi için Otomatik Stok Ayırma, +Auto write off precision loss while consolidation,Birleştirme Sırasında Hassasiyet Kayıplarını Otomatik Olarak Kapat, +Automatically Add Filtered Item To Cart,Filtrelenmiş Ürünü Sepete Otomatik Olarak Ekle, +Automatically post balancing accounting entry,Dengeleme muhasebe girişini otomatik olarak gönder, +Available Batch Report,Mevcut Parti Raporu, +Available Qty at Company,Şirketteki Mevcut Miktar, +Available Qty at Target Warehouse,Hedef Depodaki Mevcut Miktar, +Available Qty to Reserve,Stok Yapılacak Mevcut Miktar, +Average Completion,Ortalama Tamamlama, +Avg Rate,Ortalama Oran, +Avg Rate (Balance Stock),Ortalama Oran (Stok Bakiyesi), +BFS,Genişlik Öncelikli Arama, +BIN Qty,Ürün Ağacı Miktarı, +BOM Created,Ürün Ağacı Oluşturuldu, +BOM Creator Item,Ürün Ağacı Oluşturucu Ürünü, +BOM Level,Ürün Ağacı Seviyesi, +BOM Tree,Ürün Ağacı Yapısı, +BOM UoM,Ürün Ağacı Ölçü Birimi, +BOM Update Batch,Ürün Ağacı Toplu Güncelleme, +BOM Update Initiated,Ürün Ağacı Güncellemesi Başlatıldı, +BOM Update Log,Ürün Ağacı Güncelleme Kayıtları, +BOM Update Tool Log with job status maintained,İş durumunun korunduğu Ürün Ağacı Güncelleme Aracı Günlüğü, +BOM Updation already in progress. Please wait until {0} is complete.,Ürün Ağacı Güncellemesi zaten devam ediyor. Lütfen {0} tamamlanana kadar bekleyin., +BOM Updation is queued and may take a few minutes. Check {0} for progress.,Ürün Ağacı Güncellemesi sıraya alındı ve birkaç dakika sürebilir. İlerleme için {0} adresini kontrol edin., +BOM and Production,Ürün Ağacı ve Üretim, +BOM recursion: {1} cannot be parent or child of {0},"Ürün Ağacı yinelemesi: {1}, {0} girişinin üst öğesi veya alt öğesi olamaz", +BOMs Updated,Ürün Ağaçları Güncellendi, +BOMs created successfully,Ürün Ağaçları Başarıyla Oluşturuldu, +BOMs creation failed,Ürün Ağaçları Oluşturma Başarısız Oldu, +"BOMs creation has been enqueued, kindly check the status after some time","Ürün Ağaçlarının oluşturulması sıraya alındı, lütfen bir süre sonra durumu kontrol edin", +Balance Qty (Stock),Bakiye Miktarı (Stok), +Balance Sheet Summary,Bilanço Özeti, +Balance Stock Value,Stok Değeri Bakiyesi, +Bank Statement Import,Banka Hesap Özeti İçe Aktar, +Bank Transaction {0} Matched,Banka İşlemi {0} Eşleşti, +Bank Transaction {0} added as Journal Entry,Banka İşlemi {0} Defter Girişi olarak eklendi, +Bank Transaction {0} added as Payment Entry,Banka İşlemi {0} Ödeme Girişi olarak eklendi, +Bank Transaction {0} is already fully reconciled,Banka İşlemi {0} ile zaten tamamen mutabakat sağlandı, +Bank Transaction {0} updated,Banka İşlemi {0} güncellendi, +Bank/Cash Account,Banka / Kasa Hesabı, +Bank/Cash Account {0} doesn't belong to company {1},{0} Banka/Nakit Hesabı {1} şirkete ait değil, +Base Amount,Birim Tutarı, +Base Cost Per Unit,Birim Başına Birim Maliyet, +Base Rate,Taban Fiyat, +Base Tax Withholding Net Total,Vergi Stopajı Net Taban Toplamı, +Base Total,Birim Toplam, +Base Total Billable Amount,Toplam Faturalandırılabilir Tutar, +Base Total Billed Amount,Toplam Fatura Tutarı, +Base Total Costing Amount,Toplam Maliyet Tutarı, +Based On Value,Değere Göre, +"Based on your HR Policy, select your leave allocation period's end date",İnsan Kaynakları Politikanıza göre izin tahsis döneminizin bitiş tarihini seçin, +"Based on your HR Policy, select your leave allocation period's start date",İnsan Kaynakları Politikanıza göre izin tahsis döneminizin bitiş tarihini seçin, +Batch Expiry Date,Parti Son Kullanma Tarihi, +Batch No is mandatory,Parti Numarası Zorunlu, +Batch No {0} does not exists,Parti No {0} mevcut değil, +Batch No {0} is linked with Item {1} which has serial no. Please scan serial no instead.,"Parti No {0} , seri numarası olan {1} öğesi ile bağlantılıdır. Lütfen bunun yerine seri numarasını tarayın.", +"Batch No {0} is not present in the original {1} {2}, hence you can't return it against the {1} {2}","Parti No {0}, orijinalinde {1} {2} için mevcut değil, bu nedenle bunu {1} {2} adına iade edemezsiniz.", +Batch No.,Parti No., +Batch Nos,Parti Numaraları, +Batch Nos are created successfully,Parti Numaraları başarıyla oluşturuldu, +Batch Not Available for Return,Parti İade İçin Uygun Değil, +Batch Qty,Parti Miktarı, +Batch and Serial No,Parti ve Seri No, +Batch not created for item {} since it does not have a batch series.,{} öğesi için parti oluşturulamadı çünkü parti serisi yok., +Batch {0} and Warehouse,Parti {0} ve Depo, +Batch {0} is not available in warehouse {1},{0} partisi {1} deposunda mevcut değil, +Batchwise Valuation,Toplu Değerleme, +Beginning of the current subscription period,Mevcut abonelik döneminin başlangıcı, +Below Subscription Plans are of different currency to the party default billing currency/Company currency: {0},"Aşağıdaki Abonelik Planları, carinin varsayılan Fatura Para Birimi / Şirket Para Birimi {0} ile farklı para birimindedir.", +Billed Items To Be Received,Alınacak Faturalı Ürünler, +"Billed, Received & Returned","Faturalandı, Teslim Alındı & İade Edildi", +Billing Address Details,Fatura Adresi Bilgileri, +Billing Interval in Subscription Plan must be Month to follow calendar months,Abonelik Planındaki Fatura Aralığı takvim aylarını takip etmek için Aylık olmalıdır, +Bisect Accounting Statements,İkiye Bölünmüş Muhasebe Tabloları, +Bisect Left,Sola İkiye Böl, +Bisect Nodes,Grupları İkiye Böl, +Bisect Right,Sağa İkiye Böl, +Bisecting From,Bölme Başlangıcı, +Bisecting Left ...,Sola İkiye Bölünüyor..., +Bisecting Right ...,Sağ İkiye Bölünüyor..., +Bisecting To,İkiye Bölme, +Bom No,Ürün Ağacı No, +Book Advance Payments as Liability option is chosen. Paid From account changed from {0} to {1}.,Avans Ödemelerini Borç Olarak Kaydet seçeneği seçildi. Ödeme Hesabı {0} hesabından {1} olarak değiştirildi., +Book an appointment,Randevu oluşturun, +Booking stock value across multiple accounts will make it harder to track stock and account value.,"Stok değerinin birden fazla hesaba kaydedilmesi, stok ve hesap değerinin izlenmesini zorlaştıracaktır.", +Books have been closed till the period ending on {0},Defterler {0} adresinde sona eren döneme kadar kapatılmıştır., +Both Payable Account: {0} and Advance Account: {1} must be of same currency for company: {2},Hem Borç Hesabı: {0} hem de Avans Hesabı: {1} şirket için aynı para biriminde olmalıdır: {2}, +Both Receivable Account: {0} and Advance Account: {1} must be of same currency for company: {2},Hem Alacak Hesabı: {0} hem de Avans Hesabı: {1} şirket için aynı para biriminde olmalıdır: {2}, +Both {0} Account: {1} and Advance Account: {2} must be of same currency for company: {3},Hem {0} Hesap: {1} hem de Avans Hesap: {2} şirket için aynı para biriminde olmalıdır: {3}, +Budget Exceeded,Bütçe Aşıldı, +Build All?,Tümünü Oluştur?, +Build Tree,Ağaç Oluştur, +Buildable Qty,Üretilebilir Miktar, +Bulk Transaction Log,Toplu İşlem Günlüğü, +Bulk Transaction Log Detail,Toplu İşlem Günlüğü Detayı, +Bulk Update,Toplu Güncelleme, +Bundle Items,Paket Ürünler, +"By default, the Supplier Name is set as per the Supplier Name entered. If you want Suppliers to be named by a Naming Series choose the 'Naming Series' option.","Varsayılan olarak Tedarikçi Adı, girilen Tedarikçi Adına göre ayarlanır. Tedarikçilerin Adlandırma Serisi ile adlandırılmasını istiyorsanız 'Seri Adlandırma' seçeneğini seçin.", +Bypass credit check at Sales Order,Satış Siparişinde Borç Limiti Kontrolünü Atla, +CC,Bilgi, +COGS By Item Group,Ürün Grubuna Göre Satılan Malın Maliyeti, +COGS Debit,Satılan Malın Maliyeti Borç Kaydı, +CRM Note,CRM Notu, +Calculate daily depreciation using total days in depreciation period,Amortisman dönemindeki toplam gün sayısını kullanarak günlük amortismanı hesaplayın, +Call Again,Tekrar Ara, +Call Ended,Görüşme Sonlandı, +Call Handling Schedule,Çağrı Yönetim Programı, +Call Received By,Çağrı Alındı, +Call Receiving Device,Çağrı Alma Cihazı, +Call Routing,Çağrı Yönlendirme, +Call Schedule Row {0}: To time slot should always be ahead of From time slot.,Çağrı Programı Satırı {0}: Kime zaman aralığı her zaman Kimden zaman aralığının önünde olmalıdır., +Call Type,Çağrı Türü, +Callback,Geri ara, +Campaign Item,Kampanya Ürünü, +Can not close Work Order. Since {0} Job Cards are in Work In Progress state.,{0} İş Kartı Devam Ediyor durumunda olduğu için İş Emri kapatılamıyor., +"Can not filter based on Child Account, if grouped by Account",Hesaba göre gruplanmışsa Alt Hesaba göre filtreleme yapılamaz, +"Can't change the valuation method, as there are transactions against some items which do not have its own valuation method",Kendi değerleme yöntemi olmayan bazı kalemlere karşı işlemler olduğu için değerleme yöntemi değiştirilemez, +Can't disable batch wise valuation for active batches.,Aktif partiler için parti bazında değerleme devre dışı bırakılamıyor., +Can't disable batch wise valuation for items with FIFO valuation method.,FIFO değerleme yöntemine sahip kalemler için parti bazında değerleme devre dışı bırakılamıyor., +Cannot Merge,Birleştirilemez, +Cannot Resubmit Ledger entries for vouchers in Closed fiscal year.,Kapalı mali yıldaki fişler için Defter girişleri Yeniden Gönderilemez., +"Cannot amend {0} {1}, please create a new one instead.","{0} {1} değiştirilemiyor, lütfen bunu düzenlemek yerine yeni bir tane oluşturun.", +Cannot apply TDS against multiple parties in one entry,Bir girişte birden fazla tarafa karşı Stopaj Vergisi uygulanamaz, +Cannot cancel as processing of cancelled documents is pending.,İptal edilen belgelerin işlenmesi beklemede olduğundan iptal edilemiyor., +Cannot cancel the transaction. Reposting of item valuation on submission is not completed yet.,İşlem iptal edilemiyor. Gönderim sırasında Ürün değerlemesinin yeniden yayınlanması henüz tamamlanmadı., +Cannot change Reference Document Type.,Referans Belge Türü değiştirilemiyor., +Cannot complete task {0} as its dependant task {1} are not completed / cancelled.,{0} görevi tamamlanamıyor çünkü bağımlı görevi {1} tamamlanmadı/iptal edilmedi., +Cannot convert Task to non-group because the following child Tasks exist: {0}.,Aşağıdaki alt Görevler mevcut olduğundan Görev grup dışı olarak dönüştürülemiyor: {0}., +Cannot convert to Group because Account Type is selected.,Hesap Türü seçili olduğundan Gruba dönüştürülemiyor., +Cannot create Stock Reservation Entries for future dated Purchase Receipts.,İleri tarihli Alış İrsaliyeleri için Stok Rezervasyon Girişleri oluşturulamıyor., +Cannot create a pick list for Sales Order {0} because it has reserved stock. Please unreserve the stock in order to create a pick list.,Rezerve stok olduğundan {0} Satış Siparişi için bir Çekme Listesi oluşturulamıyor. Çekme Listesi oluşturmak için lütfen stok rezervini kaldırın., +Cannot create accounting entries against disabled accounts: {0},Devre dışı bırakılan hesaplar için muhasebe girişleri oluşturulamıyor: {0}, +Cannot delete Exchange Gain/Loss row,Kur Farkı Satırı Silinemiyor, +Cannot disable batch wise valuation for FIFO valuation method.,FIFO değerleme yöntemi için parti bazında değerleme devre dışı bırakılamıyor., +Cannot enqueue multi docs for one company. {0} is already queued/running for company: {1},Bir şirket için birden fazla belge sıraya alınamıyor. {0} zaten şu şirket için sıraya alındı/çalışıyor: {1}, +Cannot find a default warehouse for item {0}. Please set one in the Item Master or in Stock Settings.,{0} ürünü için varsayılan bir depo bulunamadı. Lütfen Ürün Ana Verisi'nde veya Stok Ayarları'nda bir tane ayarlayın., +Cannot make any transactions until the deletion job is completed,Silme işi tamamlanana kadar herhangi bir işlem yapılamaz, +Cannot produce more item for {0},{0} için daha fazla ürün üretilemiyor, +Cannot produce more than {0} items for {1},{1} için {0} Üründen fazlasını üretemezsiniz, +Cannot receive from customer against negative outstanding,Negatif bakiye karşılığında müşteriden teslim alınamıyor, +Cannot retrieve link token for update. Check Error Log for more information,Güncelleme için bağlantı token'ı alınamıyor. Daha fazla bilgi için Hata Günlüğünü kontrol edin, +Cannot retrieve link token. Check Error Log for more information,Güncelleme için bağlantı token'ı alınamıyor. Daha fazla bilgi için Hata Günlüğünü kontrol edin, +Cannot {0} from {1} without any negative outstanding invoice,{1} üzerinde herhangi bir negatif açık faturası olmadan {0} yapılamaz, +Canonical URI,Benzersiz URL, +Capacity (Stock UOM),Kapasite (Stok Birimi), +Capacity in Stock UOM,Stok Birimindeki Kapasite, +Capacity must be greater than 0,Kapasite 0'dan büyük olmalıdır, +Capitalization Method,Sermaye Yöntemi, +Capitalize Asset,Varlığı Sermayeleştir, +Capitalize Repair Cost,Onarım Maliyetini Aktifleştir, +Capitalized,Sermayeleştirildi, +Carrier,Taşıyıcı, +Carrier Service,Taşıma Hizmeti, +Category Details,Kategori Detayları, +Caution: This might alter frozen accounts.,Dikkat: Bu işlem dondurulmuş hesapları değiştirebilir., +Change in Stock Value,Stok Değerindeki Değişim, +Changed customer name to '{}' as '{}' already exists.,'{}' zaten mevcut olduğundan müşteri adı '{}' olarak değiştirildi., +Changes,Değişiklikler, +Charge of type 'Actual' in row {0} cannot be included in Item Rate or Paid Amount,{0} satırındaki 'Gerçekleşen' türündeki ücret Kalem Oranına veya Ödenen Tutara dahil edilemez, +Checked On,Kontrol Edildi, +Checking this will round off the tax amount to the nearest integer,Bu işaretlendiğinde vergi tutarı en yakın tam sayıya yuvarlanır, +Cheques and Deposits Incorrectly cleared,Çekler ve Mevduatlar Hatalı Şekilde Temizlenmiş, +Child Row Reference,Alt Satır Referansı, +Choose a WIP composite asset,Bir Yarı Mamul Bileşik Varlık Seçin, +Clear Demo Data,Demo Verilerini Temizle, +Clear Notifications,Bildirimleri Temizle, +Clearing Demo Data...,Demo Verileri Temizleniyor..., +Click on 'Get Finished Goods for Manufacture' to fetch the items from the above Sales Orders. Items only for which a BOM is present will be fetched.,Yukarıdaki Satış Siparişlerinden öğeleri almak için 'Üretim İçin Bitmiş Ürünleri Al'a tıklayın. Yalnızca Ürün Ağacı bulunan Ürünler alınacaktır., +Click on Add to Holidays. This will populate the holidays table with all the dates that fall on the selected weekly off. Repeat the process for populating the dates for all your weekly holidays,"Tatillere Ekle'ye tıklayın. Bu işlem, tatiller tablosunu seçilen haftalık izin gününe denk gelen tüm tarihlerle dolduracaktır. Tüm haftalık tatillerinizin tarihlerini doldurmak için işlemi tekrarlayın", +Click on Get Sales Orders to fetch sales orders based on the above filters.,Yukarıdaki filtrelere göre satış siparişlerini almak için Satış Siparişlerini Getir butonuna tıklayın., +Click to add email / phone,E-posta / telefon eklemek için tıklayın, +Closed Work Order can not be stopped or Re-opened,Kapatılan İş Emri durdurulamaz veya Yeniden Açılamaz, +Closing Balance as per Bank Statement,Banka Hesap Özetine Göre Kapanış Bakiyesi, +Closing Balance as per ERP,ERP'ye göre Kapanış Bakiyesi, +Code List,Kod Listesi, +Columns are not according to template. Please compare the uploaded file with standard template,Sütunlar şablona göre değil. Lütfen yüklenen dosyayı standart şablonla karşılaştırın, +Common Code,Ortak Kod, +Communication Channel,İletişim Türü, +Company Address Display,Şirket Adres Gösterimi, +Company Contact Person,Şirket İrtibat Kişisi, +Company Tax ID,Şirket Vergi Numarası, +Company and Posting Date is mandatory,Şirket ve Kaydetme Tarihi zorunludur, +Company is mandatory,Şirket zorunludur, +Company is mandatory for generating an invoice. Please set a default company in Global Defaults.,Fatura oluşturmak için şirket zorunludur. Lütfen Global Varsayılanlar'da varsayılan bir şirket ayarlayın., +Company which internal customer represents,İç müşterinin temsil ettiği şirket, +Company which internal customer represents.,İç müşterinin temsil ettiği şirket., +Company which internal supplier represents,Dahili tedarikçinin temsil ettiği şirket, +Company {0} is added more than once,Şirket {0} birden fazla kez eklendi, +Company {} does not exist yet. Taxes setup aborted.,{} şirketi henüz mevcut değil. Vergi kurulumu iptal edildi., +Company {} does not match with POS Profile Company {},"{} Şirketi, {} Şirketi POS Profili ile eşleşmiyor", +Competitor,Rakip, +Competitor Detail,Rakip Detayları, +Competitor Name,Rakip Adı, +Competitors,Rakipler, +Complete Job,İşi Tamamla, +Complete Order,Siparişi Tamamla, +Completed On,Tamamlanma Tarihi, +Completed On cannot be greater than Today,Tamamlanma Tarihi Bugünden büyük olamaz, +Completed Tasks,Tamamlanan Görevler, +Completed Time,Tamamlanma Zamanı, +Completion Date can not be before Failure Date. Please adjust the dates accordingly.,Tamamlanma Tarihi Arıza Tarihinden önce olamaz. Lütfen tarihleri buna göre ayarlayın., +Conditional Rule,Koşullu Kural, +Conditional Rule Examples,Koşullu Kural Örnekleri, +Configure Product Assembly,Ürün Montajını Yapılandırma, +Consider Entire Party Ledger Amount,Tüm Parti Defteri Tutarını Dikkate Alın, +Considered In Paid Amount,Ödenen Tutar İçerisinde Sayılır, +Consolidate Sales Order Items,Satış Siparişi Ürünlerini Birleştir, +Consumed Asset Total Value,Tüketilen Varlık Toplam Değeri, +Consumed Assets,Tüketilen Varlıklar, +Consumed Quantity,Tüketilen Miktar, +Consumed Stock Items,Tüketilen Stok Ürünleri, +Consumed Stock Items or Consumed Asset Items are mandatory for creating new composite asset,Tüketilen Stok Kalemleri veya Tüketilen Varlık Kalemleri yeni bileşik varlık oluşturmak için zorunludur, +"Consumed Stock Items, Consumed Asset Items or Consumed Service Items is mandatory for Capitalization","Tüketilen Stok Kalemleri, Tüketilen Varlık Kalemleri veya Tüketilen Hizmet Kalemleri Aktifleştirme için zorunludur", +Consumed Stock Total Value,Tüketilen Stok Toplam Değeri, +Consumption Rate,Tüketim Oranı, +Contact Details,İletişim Detayları, +Contact Us Settings,İletişim Ayarları, +Contacts,Kişiler, +Contract Template Help,Sözleşme Şablonu Yardımı, +Contribution Qty,Katkı Miktarı, +Conversion factor for item {0} has been reset to 1.0 as the uom {1} is same as stock uom {2}.,"Ürün {0} için dönüşüm faktörü, birimi {1} stok birimi {2} ile aynı olduğu için 1.0 olarak sıfırlandı", +Convert to Group,Gruba Dönüştür,Warehouse +Convert to Item Based Reposting,Ürün Bazlı Yeniden Kayıt İşlemine Dönüştür, +Convert to Ledger,Deftere Dönüştür,Warehouse +Core,Çekirdek, +Corrective Job Card,Düzeltici Faaliyet İş Kartı, +Corrective Operation,Düzeltici Faaliyet, +Corrective Operation Cost,Düzeltici Faaliyet Maliyeti, +Cost Center Allocation Percentage,Maliyet Merkezi Dağılımı Yüzdesi, +Cost Center Allocation Percentages,Maliyet Merkezi Dağılımı Yüzdeleri, +Cost Center For Item with Item Code {0} has been Changed to {1},{0} Ürün Kodlu Ürün İçin Maliyet Merkezi {1} Olarak Değiştirildi, +"Cost Center is a part of Cost Center Allocation, hence cannot be converted to a group","Maliyet Merkezi, Maliyet Merkezi Tahsisinin bir parçasıdır, dolayısıyla bir gruba dönüştürülemez", +Cost Center with Allocation records can not be converted to a group,Mevcut işlemleri olan Maliyet Merkezi gruba dönüştürülemez., +Cost Center {0} cannot be used for allocation as it is used as main cost center in other allocation record.,Maliyet Merkezi {0} diğer tahsis kayıtlarında ana maliyet merkezi olarak kullanıldığından tahsis için kullanılamaz., +Cost Center {} doesn't belong to Company {},"Maliyet Merkezi {}, {} Şirketine ait değil", +Cost Center {} is a group cost center and group cost centers cannot be used in transactions,Maliyet Merkezi {} bir grup maliyet merkezidir ve grup maliyet merkezleri işlemlerde kullanılamaz, +Cost Per Unit,Birim Başına Maliyet, +Cost of Poor Quality Report,Kalitesizlik Maliyeti Raporu, +Costing Details,Maliyet Detayları, +Could Not Delete Demo Data,Demo Verileri Silinemedi, +Could not auto update shifts. Shift with shift factor {0} needed.,Vardiyalar otomatik olarak güncellenemedi. {0} vardiya faktörüne sahip vardiyaya ihtiyaç var., +Could not detect the Company for updating Bank Accounts,Banka Hesaplarını güncellemek için Şirket tespit edilemedi, +Could not find path for ,Yol bulunamadı , +Count,Sayı, +Create Depreciation Entry,Amortisman Kaydı Oluştur, +Create Employee records.,Personel Kayıtları Oluştur., +Create Grouped Asset,Gruplandırılmış Varlık Oluştur, +Create Journal Entries,Muhasebe Girişlerini Oluştur, +Create Link,Bağlantı Oluştur, +Create Multi-level BOM,Çok Seviyeli Ürün Ağacı Oluştur, +Create New Customer,Yeni Müşteri Oluştur, +Create Opportunity,Fırsat Oluştur, +Create Prospect,Potansiyel Müşteri Oluştur, +Create Reposting Entries,Yeniden Gönderim Girişleri Oluştur, +Create Reposting Entry,Yeniden Gönderim Girişi Oluştur, +Create Stock Entry,Stok Girişi Oluştur, +Create Workstation,İş İstasyonu Oluştur, +Create a new composite asset,Yeni bir bileşik varlık oluşturun, +Create a variant with the template image.,Şablon görselini kullanarak bir varyant oluşturun., +Create in Draft Status,Taslak Olarak Oluştur, +Create {0} {1} ?,{0} {1} oluştur?, +Created On,Oluşturulma Zamanı, +Created {0} scorecards for {1} between:,"{1} için, şu tarih aralığında {0} adet puan kartı oluşturuldu: +", +Creating Delivery Note ...,İrsaliye Oluşturuluyor..., +Creating Journal Entries...,Defter Girişleri Oluşturuluyor..., +Creating Packing Slip ...,Paketleme Fişi Oluşturuluyor ..., +Creating Purchase Invoices ...,Satın Alma Faturaları Oluşturuluyor..., +Creating Purchase Receipt ...,Satın Alma İrsaliyesi Oluşturuluyor..., +Creating Sales Invoices ...,Satış Faturaları Oluşturuluyor..., +Creating Stock Entry,Stok Girişi Oluşturun, +Creating Subcontracting Order ...,Alt Yüklenici Siparişi Oluşturuluyor ..., +Creating Subcontracting Receipt ...,Alt Yüklenici İrsaliyesi Oluşturuluyor..., +Creating User...,Kullanıcı Oluşturuluyor..., +Creation,Oluşturma, +Creation of {1}(s) successful,{1} oluşturma başarılı, +"Creation of {0} failed. + Check Bulk Transaction Log","{0} oluşturma başarısız oldu. + Toplu İşlem Günlüğünü Kontrol Edin", +"Creation of {0} partially successful. + Check Bulk Transaction Log","{0} oluşturulması kısmen başarılı. + Toplu İşlem Günlüğü Kontrol Edin", +Credit Amount in Transaction Currency,İşlem Para Birimindeki Alacak Tutarı, +Credit Limit Crossed,Borç Limiti Aşıldı, +"Credit Note will update it's own outstanding amount, even if 'Return Against' is specified.","Alacak Dekontu, ""Karşı İade"" belirtilmiş olsa bile kendi bakiye tutarını güncelleyecektir.", +Cron Interval should be between 1 and 59 Min,Cron Aralığı 1 ile 59 Dakika arasında olmalıdır, +Currency Exchange Settings Details,Döviz Kuru Ayarları Detayları, +Currency Exchange Settings Result,Döviz Kurları Ayarları Sonucu, +Current Asset,Dönen Varlık, +Current Index,Güncel Dizin, +Current Level,Mevcut Seviye, +Current Liability,Kısa Vadeli Borç, +Current Node,Mevcut Düğüm, +Current Serial / Batch Bundle,Mevcut Seri / Parti Paketi, +Custom,Özel, +Custom delimiters,Özel Ayırıcılar, +Customer ,Müşteri , +Customer / Item / Item Group,Müşteri / Ürün / Ürün Grubu, +Customer Group Item,Müşteri Grubu Öğesi, +Customer Group: {0} does not exist,Müşteri Grubu: {0} mevcut değil, +Customer Item,Müşteri Ürünü, +Customer Name: ,Müşteri İsmi: , +Customer: ,Müşteri: , +Daily Time to send,Günlük Gönderme Zamanı, +Dashboard,Gösterge Paneli, +Data Based On,Tarihe Göre, +Date ,Tarih , +Date must be between {0} and {1},Tarih {0} ile {1} arasında olmalıdır., +Dates,Tarihler, +Days before the current subscription period,Mevcut abonelik döneminden önceki günler, +DeLinked,Bağlantı Kesildi, +"Dear System Manager,","Sayın Sistem Yöneticisi,", +Debit Amount in Transaction Currency,İşlem Para Birimindeki Borç Tutarı, +"Debit Note will update it's own outstanding amount, even if 'Return Against' is specified.","İade Faturası, ‘Karşı Fatura’ belirtilmiş olsa bile kendi açık bakiyesini güncelleyecektir.", +Debit-Credit Mismatch,Borç-Alacak Uyuşmazlığı, +Debit-Credit mismatch,Borç-Alacak uyuşmazlığı, +Default Advance Account,Varsayılan Avans Hesabı, +Default Advance Paid Account,Varsayılan Ödenen Avans Hesabı, +Default Advance Received Account,Varsayılan Alınan Avans Hesabı, +Default BOM not found for FG Item {0},{0} Ürünü için Varsayılan Ürün Ağacı bulunamadı, +Default Common Code,Varsayılan Ortak Kod, +Default Discount Account,Varsayılan İndirim Hesabı, +Default Operating Cost Account,Varsayılan Operasyon Maliyeti Hesabı, +Default Payment Discount Account,Varsayılan İndirim Hesabı, +Default Service Level Agreement for {0} already exists.,{0} için Varsayılan Hizmet Düzeyi Sözleşmesi zaten mevcut., +Default Unit of Measure for Item {0} cannot be changed directly because you have already made some transaction(s) with another UOM. You need to either cancel the linked documents or create a new Item.,{0} Ürünü için Varsayılan Ölçü Birimi doğrudan değiştirilemez çünkü zaten başka bir Ölçü Birimi ile bazı işlemler yaptınız. Ya bağlantılı belgeleri iptal etmeniz ya da yeni bir Ürün oluşturmanız gerekir., +Default settings for your stock-related transactions,Stok ile alakalı işlemlerin Varsayılan Ayarları, +"Default tax templates for sales, purchase and items are created.","Satış, satın alma ve kalemler için varsayılan vergi şablonları oluşturulur.", +Deferred Accounting Defaults,Ertelenmiş Muhasebe Ayarları, +Deferred Revenue and Expense,Ertelenmiş Gelir ve Gider, +Deferred accounting failed for some invoices:,Bazı faturalar için ertelenmiş muhasebe başarısız oldu:, +Delay (In Days),Gecikme (Gün), +Delayed,Gecikti, +Delete Bins,Kutuları Sil, +Delete Cancelled Ledger Entries,İptal Edilen Defter Girişlerini Sil, +Delete Dimension,Boyutu Sil, +Delete Leads and Addresses,Potansiyel Müşterileri ve Adresleri Sil, +Deleted Documents,Silinen Belgeler, +Deleting {0} and all associated Common Code documents...,{0} ve ilişkili tüm Ortak Kod belgeleri siliniyor..., +Deletion in Progress!,Silme İşlemi Devam Ediyor!, +Delimiter options,Sınırlayıcı seçenekleri, +Delivery Manager,Sevkiyat Yöneticisi, +Delivery Note(s) created for the Pick List,"İrsaliyeler, Paketleme için oluşturuldu", +Delivery User,Sevkiyat Sorumlusu, +Delivery to,Teslimat, +Demand,Talep, +Demo Company,Demo Şirketi, +Demo data cleared,Demo verileri temizlendi, +Dependant SLE Voucher Detail No,Bağlı Stok Giriş Belgesi Detay Numarası, +Dependent Task {0} is not a Template Task,Bağımlı Görev {0} bir Şablon Görevi değildir, +Deposit,Mevduat, +Depreciate based on daily pro-rata,Günlük Orantılı Amortisman, +Depreciate based on shifts,Vardiyalara göre amortisman, +Depreciation Details,Amortisman Detayları, +Depreciation Entry Posting Status,Amortisman Girişi Gönderme Durumu, +Depreciation Expense Account should be an Income or Expense Account.,Amortisman Gider Hesabı bir Gelir veya Gider Hesabı olmalıdır., +Depreciation Posting Date cannot be before Available-for-use Date,"Amortisman Kayıt Tarihi, Kullanıma Hazır Tarihten önce olamaz", +Depreciation Row {0}: Depreciation Posting Date cannot be before Available-for-use Date,"Amortisman Satırı {0}: Amortisman Kayıt Tarihi, Kullanıma Hazır Tarihinden önce olamaz", +Depreciation Schedule View,Amortisman Planı, +Depreciation cannot be calculated for fully depreciated assets,Tam amortismana tabi varlıklar için amortisman hesaplanamaz, +Description of Content,İçerik Açıklaması, +Desk User,Sistem Kullanıcısı, +Difference In,Fark, +Difference Posting Date,Fark Gönderme Tarihi, +Difference Qty,Fark Miktarı, +Different 'Source Warehouse' and 'Target Warehouse' can be set for each row.,Her satır için farklı 'Kaynak Depo' ve 'Hedef Depo' ayarlanabilir., +Dimension Details,Boyut Detayları, +Dimension Filter Help,Boyut Filtresi Yardımı, +Dimension-wise Accounts Balance Report,Boyut bazında Hesap Bakiye Raporu, +Dimensions,Boyutlar, +Direct Expense,Doğrudan Gider, +Disabled Account Selected,Devre Dışı Hesap Seçildi, +Disabled Warehouse {0} cannot be used for this transaction.,"{0} Deposu devre dışı bırakıldığından, bu işlem için kullanılamaz.", +Disabled pricing rules since this {} is an internal transfer,"{} iç transfer olduğu için, fiyatlandırma kuralı devre dışı bırakıldı.", +Disabled tax included prices since this {} is an internal transfer,"{0} bir dahili transfer olduğundan, vergiler dahil fiyatlar devre dışı bırakıldı", +Disassemble,Sök, +Disassemble Order,Sökme Emri, +Discount Account,İndirim Hesabı, +Discount Date,İndirim Tarihi, +Discount Validity,İndirim Geçerliliği, +Discount Validity Based On,İndirim Geçerliliğine Göre, +Discount cannot be greater than 100%.,İndirim %100'den fazla olamaz., +Discount of {} applied as per Payment Term,Ödeme Vadesine göre {} indirim uygulandı, +Discounted Amount,İndirimli Tutar, +"Discounts to be applied in sequential ranges like buy 1 get 1, buy 2 get 2, buy 3 get 3 and so on","İndirimler 1 alana 1 bedava, 2 alana 2 bedava, 3 alana 3 bedava gibi sıralı aralıklarla uygulanacak", +Discrepancy between General and Payment Ledger,Genel Muhasebe Defteri ile Ödeme Defteri Arasındaki Uyuşmazlık, +Dispatch Address,Sevkiyat Adresi, +Distinct Item and Warehouse,Farklı Ürün ve Depo, +Distribute Additional Costs Based On ,Ek Maliyetleri Şunlara Göre Dağıtın , +Do Not Explode,Detaylandırmayı Kapat, +Do Not Update Serial / Batch on Creation of Auto Bundle,Otomatik Paket Oluşturulurken Seri / Parti Güncellenesi Yapmayın, +Do Not Use Batch-wise Valuation,Toplu Değerleme Kullanma, +Do reposting for each Stock Transaction,Her Stok Hareketi İşlemi için yeniden gönderim yapın, +Do you still want to enable negative inventory?,Hala negatif envanteri etkinleştirmek istiyor musunuz?, +DocField,DocType Alanı, +DocTypes should not be added manually to the 'Excluded DocTypes' table. You are only allowed to remove entries from it.,DocType'lar 'Hariç Tutulan Doküman Türleri' tablosuna manuel olarak eklenmemelidir. Yalnızca buradaki girişleri kaldırmanıza izin verilir., +Document Type already used as a dimension,Belge Türü zaten bir boyut olarak kullanılıyor, +Documents,Belgeler, +Documents Processed on each trigger. Queue Size should be between 5 and 100,Her tetikleyicide işlenen belgeler. Kuyruk Boyutu 5 ile 100 arasında olmalıdır, +Documents: {0} have deferred revenue/expense enabled for them. Cannot repost.,Belgeler: {0} için ertelenmiş gelir/gider etkinleştirildi. Yeniden gönderilemiyor., +Domain Settings,Etki Alanı Ayarları, +Don't Send Emails,E-Posta Gönderme, +Dont Recompute tax,Vergiyi Yeniden Hesaplamayın, +Download Backups,Yedekleri İndir, +Download CSV Template,CSV Şablonunu İndir, +Download PDF for Supplier,Tedarikçi için PDF İndir, +Dunning Amount (Company Currency),Gecikme Ücreti Tutarı (Şirket Para Birimi), +Dunning Level,İhtar Seviyesi, +Duplicate Customer Group,Müşteri Grubunu Çoğalt, +Duplicate Finance Book,Finans Defterini Çoğalt, +Duplicate Item Group,Ürün Grubunu Çoğalt, +Duplicate POS Invoices found,Yinelenen POS Faturaları bulundu, +Dynamic Condition,Dinamik Koşul, +Edit Capacity,Kapasiteyi Düzenle, +Edit Cart,Grafiği Düzenle, +Edit Full Form,Tam Sayfa Düzenle, +Edit Note,Notu Düzenle, +Editing {0} is not allowed as per POS Profile settings,POS Profili ayarlarına göre {0} düzenlemesine izin verilmiyor, +Either 'Selling' or 'Buying' must be selected,'Satış' veya 'Alış' seçeneklerinden biri seçilmelidir, +Email / Notifications,E-posta / Bildirimler, +Email Address (required),E-posta Adresi (gerekli), +"Email Address must be unique, it is already used in {0}","E-posta Adresi benzersiz olmalıdır, {0} için zaten kullanılıyor", +Email Digest Recipient,E-posta Özeti Alıcısı, +Email Digest: {0},E-posta Özeti: {0}, +Email Domain,E-posta Etki Alanı, +Email Receipt,E-posta Makbuzu, +Email or Phone/Mobile of the Contact are mandatory to continue.,Devam etmek için İletişim Kişisinin E-postası veya Telefon/Cep Telefonu zorunludur., +Email verification failed.,E-posta doğrulaması başarısız oldu., +Employee User Id,Personel Kullanıcı ID, +Enable Allow Partial Reservation in the Stock Settings to reserve partial stock.,Belirli bir sipariş için envanterden belirli bir miktarı ayırmaya izin verir., +Enable Fuzzy Matching,Bulanık Eşleştirmeyi Etkinleştir, +Enable Health Monitor,Sağlık Monitörünü Etkinleştir, +Enable Immutable Ledger,Değiştirilemez Defteri Etkinleştir, +Enable Stock Reservation,Stok Ayırmayı Etkinleştir, +Enable this checkbox even if you want to set the zero priority,Sıfır önceliğini ayarlamak isteseniz bile bu onay kutusunu etkinleştirin, +"Enable this option to calculate daily depreciation by considering the total number of days in the entire depreciation period, (including leap years) while using daily pro-rata based depreciation","Günlük orantılı amortisman esaslı amortismanı kullanırken, tüm amortisman dönemindeki (artık yıllar dahil) toplam gün sayısını dikkate alarak günlük amortismanı hesaplamak için bu seçeneği etkinleştirin", +Enable to apply SLA on every {0},Her {0} adresinde SLA uygulamayı etkinleştirin, +Enabling this ensures each Purchase Invoice has a unique value in Supplier Invoice No. field within a particular fiscal year,"Bunun etkinleştirilmesi, her bir Satın Alma Faturasının belirli bir mali yıl içinde Tedarikçi Fatura No. alanında benzersiz bir değere sahip olmasını sağlar", +Enabling this will change the way how cancelled transactions are handled.,"Bunu etkinleştirmek, iptal edilen işlemlerin işlenme biçimini değiştirecektir.", +End Transit,Taşımayı Sonlandır, +End of the current subscription period,Mevcut abonelik döneminin sonu, +"Enter First and Last name of Employee, based on Which Full Name will be updated. IN transactions, it will be Full Name which will be fetched.","Personelin Adı ve Soyadını Girin, buna göre Tam Adı güncellenecektir. İşlemlerde, Tam Ad kullanılacaktır.", +Enter Manually,Elle Girin, +Enter Serial Nos,Seri Numaralarını Girin, +Enter Visit Details,Ziyaret Ayrıntılarını Girin, +Enter a name for Routing.,Yönlendirme için bir ad girin., +"Enter a name for the Operation, for example, Cutting.","Operasyon için bir ad girin, örneğin Kesme.", +Enter a name for this Holiday List.,Bu Tatil Listesi için bir ad girin., +"Enter an Item Code, the name will be auto-filled the same as Item Code on clicking inside the Item Name field.","Bir Ürün Kodu girin, Ürün Adı alanına tıklandığında ad, Ürün Kodu ile aynı şekilde otomatik olarak doldurulacaktır.", +Enter each serial no in a new line,Her seri numarasını yeni bir satıra girin, +"Enter the Operation, the table will fetch the Operation details like Hourly Rate, Workstation automatically. + + After that, set the Operation Time in minutes and the table will calculate the Operation Costs based on the Hourly Rate and Operation Time.","Operasyona girin, tablo Saatlik Ücret, İş İstasyonu gibi Operasyon detaylarını otomatik olarak getirecektir. + + Bundan sonra, Operasyon Süresini dakika olarak ayarlayın ve tablo Saatlik Ücret ve Operasyon Süresine göre Operasyon Maliyetlerini hesaplayacaktır.", +Enter the opening stock units.,Açılış stok birimlerini girin., +Enter the quantity of the Item that will be manufactured from this Bill of Materials.,Bu Ürün Ağacından üretilecek Ürünün miktarını girin., +Enter the quantity to manufacture. Raw material Items will be fetched only when this is set.,Üretilecek miktarı girin. Hammadde Kalemleri yalnızca bu ayarlandığında getirilecektir., +Error during caller information update,Arayan bilgileri güncellenirken hata oluştu, +Error in party matching for Bank Transaction {0},Banka İşlemi için cari eşleştirmesinde hata {0}, +Error while posting depreciation entries,Amortisman girişleri kaydedilirken hata oluştu, +Error while processing deferred accounting for {0},{0} için ertelenmiş muhasebe işlenirken hata oluştu, +Error while reposting item valuation,Ürün değerlemesi yeniden gönderilirken hata oluştu, +"Error: This asset already has {0} depreciation periods booked. + The `depreciation start` date must be at least {1} periods after the `available for use` date. + Please correct the dates accordingly.","Hata: Bu varlık için zaten {0} amortisman dönemi ayrılmıştır. + Amortisman başlangıç tarihi, `kullanıma hazır` tarihinden en az {1} dönem sonra olmalıdır. + Lütfen tarihleri buna göre düzeltin.", +Errors Notification,Hata Bildirimi, +Even invoices with apply tax withholding unchecked will be considered for checking cumulative threshold breach,Vergi tevkifatı uygulanan faturalar bile kontrol edilmeden kümülatif eşik ihlalinin kontrol edilmesi için dikkate alınacaktır, +Event,Etkinlik, +Example URL,Örnek URL, +Example of a linked document: {0},Bağlantılı bir döküman örneği: {0}, +"Example: ABCD.##### +If series is set and Serial No is not mentioned in transactions, then automatic serial number will be created based on this series. If you always want to explicitly mention Serial Nos for this item. leave this blank.","Örnek: ABCD.##### + Seri ayarlanmışsa ve işlemlerde Seri No belirtilmemişse, bu seriye göre otomatik seri numarası oluşturulacaktır. Bu ürünün Seri No'larından her zaman açıkça bahsetmek istiyorsanız, bunu boş bırakın.", +Example: Serial No {0} reserved in {1}.,Örnek: Seri No {0} {1} adresinde ayrılmıştır., +Excess Materials Consumed,Tüketilen Fazla Malzemeler, +Excess Transfer,Fazla Transfer, +Exchange Gain / Loss,Kur Farkı Karı / Zararı, +Exchange Gain Or Loss,Döviz Kazancı veya Zararı, +Exchange Gain/Loss amount has been booked through {0},Döviz Kar/Zarar tutarı {0} adresinde muhasebeleştirilmiştir., +Excluded DocTypes,Hariç Tutulan DocType'lar, +Exempt Supplies,Vergiden Muaf Malzemeler, +Expected,Beklenen, +Expected Balance Qty,Beklenen Bakiye Miktarı, +Expected End Date should be less than or equal to parent task's Expected End Date {0}.,"Beklenen Bitiş Tarihi, ana görevin Beklenen Bitiş Tarihi {0} değerinden küçük veya ona eşit olmalıdır.", +Expected Stock Value,Beklenen Stok Değeri, +Expiry,Son kullanma tarihi, +Export Data,Dışarı Aktar, +Export Errored Rows,Hatalı Satırları Dışa Aktar, +Export Import Log,İçeri ve Dışarı Aktarma Günlüğü, +Extra Consumed Qty,Ekstra Tüketilen Miktar, +Extra Job Card Quantity,Ekstra İş Kartı Miktarı, +FIFO Queue vs Qty After Transaction Comparison,FIFO Sırası ve İşlem Sonrası Adet Karşılaştırması, +"FIFO Stock Queue (qty, rate)","FIFO Stok Kuyruğu (miktar, oran)", +FIFO/LIFO Queue,FIFO/LIFO Sırası, +Failed Entries,Başarısız Girişler, +"Failed to erase demo data, please delete the demo company manually.","Demo verileri silinemedi, lütfen demo şirketini manuel olarak silin.", +Failed to post depreciation entries,Amortisman Kayıtları Gönderilemedi, +Failed to setup defaults for country {0}. Please contact support.,Ülke için varsayılanlar ayarlanamadı {0}. Lütfen destek ile iletişime geçin., +Failure,Başarısız, +Failure Description,Arıza Açıklaması, +Fetch Based On,Şuna Göre Getir, +Fetch Overdue Payments,Gecikmiş Ödemeler, +Fetch Value From,Değeri Şuradan Getir, +Fetching Error,Veri Çekme Hatası, +Fetching exchange rates ...,Döviz kurları alınıyor ..., +Filter,Filtre, +Filter by Reference Date,Referans Tarihine Göre Filtrele, +Filter on Invoice,Fatura Filtresi, +Filter on Payment,Ödeme Filtresi, +Filters missing,Filtreler eksik, +Final Product,Final Ürün, +Financial Ratios,Finansal Oranlar, +Financial Year Begins On,Mali Yıl Başlangıcı, +Finished Good BOM,Nihai Ürünün Ürün Ağacı, +Finished Good Item,Bitmiş Ürün, +Finished Good Item Qty,Bitmiş Ürün Miktarı, +Finished Good Item Quantity,Bitmiş Ürün Miktarı, +Finished Good Item is not specified for service item {0},{0} Hizmet kalemi için Tamamlanmış Ürün belirtilmemiş, +Finished Good Item {0} Qty can not be zero,Bitmiş Ürün {0} Miktarı sıfır olamaz, +Finished Good Item {0} must be a sub-contracted item,Bitmiş Ürün {0} alt yüklenici ürünü olmalıdır, +Finished Good Qty,Bitmiş Ürün Miktarı, +Finished Good Quantity ,Bitmiş Ürün Miktarı , +Finished Good UOM,Bitmiş Ürün Ağacı Ölçü Birimi, +Finished Good {0} does not have a default BOM.,{0} isimli Ürünün varsayılan bir Ürün Ağacı bulunmuyor., +Finished Good {0} is disabled.,Bitmiş Ürün {0} devre dışı bırakılmıştır., +Finished Good {0} must be a stock item.,Bitmiş Ürün {0} stok ürünü olmalıdır., +Finished Good {0} must be a sub-contracted item.,Bitmiş Ürün {0} alt yüklenici ürünü olmalıdır., +Finished Goods Based Operating Cost,Ürün Bazlı Operasyonel Maliyeti, +Finished Goods Item,Bitmiş Ürün, +Finished Goods Reference,Bitmiş Ürün Referansı, +Finished Goods Value,Bitmiş Ürün Değeri, +Finished Goods based Operating Cost,Bitmiş Ürün Operasyon Maliyeti, +Finished Item {0} does not match with Work Order {1},Bitmiş Ürün {0} İş Emri {1} ile eşleşmiyor, +First Response Due,İlk Müdahale Zamanı, +First Response SLA Failed by {},İlk Müdahale SLA'sı {} Tarafından Başarısız Oldu, +Floor,Üretim Alanı, +For Item,Ürün için, +For Item {0} cannot be received more than {1} qty against the {2} {3},{0} Ürünü için {2} {3} karşılığında {1} miktarından fazla alınamaz., +For Job Card,İş Kartı İçin, +For Operation,Operasyon, +"For Return Invoices with Stock effect, '0' qty Items are not allowed. Following rows are affected: {0}",Stok etkili İade Faturaları için '0' adetlik Kalemlere izin verilmez. Aşağıdaki satırlar etkilenir: {0}, +For Work Order,İş Emri İçin, +For dunning fee and interest,İhtar ücreti ve faiz için, +"For item {0}, rate must be a positive number. To Allow negative rates, enable {1} in {2}",{0} Ürünü için oran pozitif bir sayı olmalıdır. Negatif oranlara izin vermek için {2} sayfasında {1} ayarını etkinleştirin, +For quantity {0} should not be greater than allowed quantity {1},{0} Miktarı izin verilen {1} miktarından büyük olmamalıdır, +"For the item {0}, the quantity should be {1} according to the BOM {2}.","Ürün {0} için miktar, {2} Ürün Ağacına göre {1} olmalıdır.", +"For the {0}, no stock is available for the return in the warehouse {1}.",{0} için {1} deposunda iade için stok bulunmamaktadır., +"For the {0}, the quantity is required to make the return entry",{0} için iade girişini oluşturmak amacıyla miktar gereklidir., +Force-Fetch Subscription Updates,Abonelik Güncellemelerini Zorla Getir, +Forecast,Tahmin, +Formula Based Criteria,Formüle Dayalı Kriter, +Free Item Rate,Ücretsiz Ürün Oranı, +From Corrective Job Card,Düzeltici İş Kartına Göre, +From Date and To Date are mandatory,Başlangıç Tarihi ve Bitiş Tarihi zorunludur, +From Date is mandatory,Başlangıç Tarihi zorunludur, +From Date: {0} cannot be greater than To date: {1},{0} Başlangıç Tarihi {1} Bitiş Tarihinden Büyük Olamaz, +From Doctype,Kaynak Doctype, +From Due Date,Vade Tarihinden İtibaren, +From Payment Date,Başlangıç Ödeme Tarihi, +From Prospect,Potansiyel Müşteriden, +From Reference Date,Referans Tarihinden İtibaren, +From Voucher Detail No,Kaynak Fatura No Detayı, +From Voucher No,Kaynak Fatura No, +From Voucher Type,Belge Türüne Göre Seç, +From and To dates are required,Başlangıç ve Bitiş tarihleri gereklidir, +Full and Final Statement,Tam ve Nihai Açıklama, +GL Balance,Genel Muhasebe Bakiyesi, +GL Entry Processing Status,GM Girişleri İşlenme Durumu, +GL reposting index,Genel Muhasebe Yeniden İşlem İndeksi, +Gain/Loss accumulated in foreign currency account. Accounts with '0' balance in either Base or Account currency,Yabancı para birimi hesabında biriken Kar/Zarar. Ana para birimi veya hesap para biriminde '0' bakiye bulunan hesaplar, +Gain/Loss already booked,Kazanç/Kayıp zaten kaydedildi, +Gain/Loss from Revaluation,Yeniden Değerlemeden Kaynaklanan Kâr/Zarar, +General Ledger,Genel Muhasebe,Warehouse +General and Payment Ledger Comparison,Genel ve Ödeme Defteri Karşılaştırması, +General and Payment Ledger mismatch,Genel ve Ödeme Defteri uyuşmazlığı, +Generate Demo Data for Exploration,Demo Verisi Oluştur, +Generate E-Invoice,E-Fatura Oluştur, +Generate Invoice At,Fatura Oluşturma Tarihi, +Generated,Oluşturuldu, +Generating Preview,Önizleme Oluşturuluyor, +Get Allocations,Tahsisleri Getir, +Get Customer Group Details,Müşteri Grubu Ayrıntıları, +Get Finished Goods for Manufacture,Üretim İçin Bitmiş Ürünleri Al, +Get Outstanding Orders,Ödenmemiş Siparişleri Getir, +Get Raw Materials Cost from Consumption Entry,Tüketim Girişinden Hammadde Maliyetini Getir, +Get Scrap Items,Hurda Ürünleri Getir, +Get Stock,Stok Getir, +Get Supplier Group Details,Tedarikçi Grubu Ayrıntılarını Alın, +Get Timesheets,Zaman Çizelgesini Getir, +Get stops from,Durakları Getir, +Getting Scrap Items,Hurda Ürünlerin Alınması, +Give free item for every N quantity,Her N adet için ücretsiz ürün verin, +Go back,Geri git, +Go to {0} List,{0} Listesine Git, +Goals,Hedefler, +Goods,Ürünler, +Greeting Message,Karşılama Mesajı, +Gross Profit Percent,Brüt Kâr Yüzdesi, +Gross Purchase Amount Too Low: {0} cannot be depreciated over {1} cycles with a frequency of {2} depreciations.,"Brüt Satın Alma Tutarı Çok Düşük: {0} , {2} amortisman sıklığı ile {1} döngüleri üzerinden amortismana tabi tutulamaz.", +Gross Purchase Amount should be equal to purchase amount of one single Asset.,"Brüt Satın Alma Tutarı, tek bir Varlığın satın alma tutarına eşit olmalıdır.", +Half-yearly,6 Aylık, +Handle Employee Advances,Çalışan Avanslarını Yönetin, +Has Alternative Item,Alternatif Ürün Var, +Has Item Scanned,Ürün Taraması, +Has Priority,Önceliği Var, +Heatmap,Isı Haritası, +Height (cm),Yükseklik (cm), +"Hello,","Merhaba,", +Helps you distribute the Budget/Target across months if you have seasonality in your business.,İşletmenizde mevsimsel çalışma varsa Bütçeyi/Hedefi aylara dağıtmanıza yardımcı olur., +Here are the error logs for the aforementioned failed depreciation entries: {0},Yukarıda bahsedilen başarısız amortisman girişleri için hata kayıtları şunlardır: {0}, +Here are the options to proceed:,İşleme devam etmek için seçenekleriniz:, +"Here, you can select a senior of this Employee. Based on this, Organization Chart will be populated.","Burada, bu Çalışanın bir üst düzeyini seçebilirsiniz. Buna bağlı olarak, Organizasyon Şeması doldurulacaktır.", +"Here, your weekly offs are pre-populated based on the previous selections. You can add more rows to also add public and national holidays individually.","Burada, haftalık izinleriniz önceki seçimlere göre önceden doldurulur. Resmi ve ulusal tatilleri ayrı ayrı eklemek için daha fazla satır ekleyebilirsiniz.", +"Hi,","Merhaba,", +Hide Images,Resimleri Gizle, +Holiday Date {0} added multiple times,{0} Tatil Tarihi birden çok kez eklendi, +Hours Spent,Harcanan saat, +Idle,Boşta, +"If Enabled - Reconciliation happens on the Advance Payment posting date
+If Disabled - Reconciliation happens on oldest of 2 Dates: Invoice Date or the Advance Payment posting date
+","Etkinleştirilmişse - Mutabakat, Avans Ödemesi kayıt tarihinde gerçekleşir
+Devre Dışı Bırakılmışsa - Mutabakat, 2 Tarihten en eskisinde gerçekleşir: Fatura Tarihi veya Avans Ödemesi kayıt tarihi
+", +"If an operation is divided into sub operations, they can be added here.",Bir operasyon alt operasyonlara bölünmüşse buraya eklenebilir., +"If checked, Stock will be reserved on Submit","İşaretlenirse, Stok Gönder butonuna nasıldığında rezerve edilecektir", +"If checked, the tax amount will be considered as already included in the Paid Amount in Payment Entry","İşaretlendiğinde, vergi tutarı Ödeme Girişindeki Ödenen Tutar'a zaten dahil edilmiş olarak kabul edilir.", +"If checked, we will create demo data for you to explore the system. This demo data can be erased later.","İşaretlenirse, sistemi keşfetmeniz için demo verileri oluşturacağız. Bu demo verileri daha sonra silinebilir.", +If enabled then system won't apply the pricing rule on the delivery note which will be create from the pick list,"Etkinleştirilirse sistem, çekme listesinden oluşturulacak irsaliyeye fiyatlandırma kuralını uygulamaz", +If enabled then system won't override the picked qty / batches / serial numbers.,"Etkinleştirilirse, sistem seçilen adet / parti / seri numaralarını geçersiz kılmaz.", +"If enabled, a print of this document will be attached to each email","Etkinleştirilirse, bu belgenin bir çıktısı her e-postaya eklenecektir", +"If enabled, all files attached to this document will be attached to each email",B belgeye eklenen tüm dosyalar her e-postaya da eklenir., +"If enabled, do not update serial / batch values in the stock transactions on creation of auto Serial + / Batch Bundle. ","Etkinleştirildiğinde, otomatik Seri + / Toplu Paket oluşturulması durumunda stok hareketlerindeki seri / toplu değerleri güncellemez. ", +"If enabled, the consolidated invoices will have rounded total disabled","Etkinleştirilirse, konsolide faturalarda yuvarlanmış toplam devre dışı bırakılır", +"If enabled, the item rate won't adjust to the valuation rate during internal transfers, but accounting will still use the valuation rate.","İç transferler sırasında ürün fiyatı, değerleme oranına göre ayarlanmaz ancak muhasebe işlemleri yine de değerleme oranını kullanır.", +"If enabled, the system will create material requests even if the stock exists in the 'Raw Materials Warehouse'.",Hammadde Deposu'nda stok bulunsa bile sistem malzeme talepleri oluşturacaktır., +"If enabled, the system will use the moving average valuation method to calculate the valuation rate for the batched items and will not consider the individual batch-wise incoming rate.","Etkinleştirilirse, sistem toplu kalemlerin değerleme oranını hesaplamak için hareketli ortalama değerleme yöntemini kullanacak ve tek tek parti bazında gelen oranı dikkate almayacaktır.", +"If enabled, then system will only validate the pricing rule and not apply automatically. User has to manually set the discount percentage / margin / free items to validate the pricing rule","Etkinleştirilirse, sistem fiyatlandırma kuralını yalnızca doğrulayacak ve otomatik olarak uygulamayacaktır. Kullanıcı, fiyatlandırma kuralını doğrulamak için indirim yüzdesini / marjı / ücretsiz ürünleri manuel olarak ayarlamalıdır", +"If not, you can Cancel / Submit this entry","Aksi takdirde, bu girişi İptal Edebilir veya Gönderebilirsiniz", +"If rate is zero then item will be treated as ""Free Item""","Fiyat sıfır ise Ürün ""Ücretsiz Ürün"" olarak değerlendirilecektir", +"If the BOM results in Scrap material, the Scrap Warehouse needs to be selected.",Ürün Ağacının Hurda malzemeyle sonuçlanması durumunda Hurda Deposunun seçilmesi gerekir., +"If the selected BOM has Operations mentioned in it, the system will fetch all Operations from BOM, these values can be changed.","Seçilen Ürün Ağacında belirtilen İşlemler varsa, sistem Ürün Ağacından tüm İşlemleri getirir, bu değerler değiştirilebilir.", +"If there is no title column, use the code column for the title.","Başlık sütunu yoksa, başlık için kod sütununu kullanın.", +If this is undesirable please cancel the corresponding Payment Entry.,Eğer bu istenmiyorsa lütfen ilgili Ödeme Girişini iptal edin., +"If you are maintaining stock of this Item in your Inventory, ERPNext will make a stock ledger entry for each transaction of this item.","Bu Ürünün stokunu Envanterinizde tutuyorsanız, ERPNext bu ürünün her işlemi için bir stok defteri girişi yapacaktır.", +"If you need to reconcile particular transactions against each other, then please select accordingly. If not, all the transactions will be allocated in FIFO order.","Belirli işlemleri birbiriyle mutabık hale getirmeniz gerekiyorsa, lütfen buna göre seçin. Aksi takdirde, tüm işlemler FIFO sırasına göre tahsis edilecektir.", +"If you still want to proceed, please disable 'Skip Available Sub Assembly Items' checkbox.","Yine de devam etmek istiyorsanız, lütfen 'Mevcut Alt Montaj Öğelerini Atla' onay kutusunu devre dışı bırakın.", +"If you still want to proceed, please enable {0}.",Hala devam etmek istiyorsanız lütfen {0} ayarını etkinleştirin., +"If your CSV uses a different delimiter, add that character here, ensuring no spaces or additional characters are included.","CSV dosyanız farklı bir ayırıcı kullanıyorsa, o karakteri buraya ekleyin ve boşluk veya ek karakter olmadığından emin olun.", +Ignore Default Payment Terms Template,Varsayılan Ödeme Koşulları Şablonunu Yoksay, +Ignore Empty Stock,Boş Stoku Yoksay, +Ignore Pricing Rule is enabled. Cannot apply coupon code.,Fiyatlandırma Kuralını Yoksay etkinleştirildi. Kupon kodu uygulanamıyor., +Ignore System Generated Credit / Debit Notes,Otomatik Oluşturulan Alacak ve Borçları Yoksay, +Ignore Voucher Type filter and Select Vouchers Manually,Belge Türü filtresini yok say ve Belgeleri Manuel Seç, +Impairment,Değer Düşüklüğü, +Import File,Dosyayı İçe Aktar, +Import File Errors and Warnings,İçe Aktarma Dosyası Hataları ve Uyarıları, +Import Genericode File,Genericode Dosyasını İçe Aktar, +Import Log Preview,İçe Aktarma Günlüğü Önizlemesi, +Import Preview,İçe Aktarma Önizlemesi, +Import Progress,İçeri Aktarma İlerlemesi, +Import Type,İçe Aktarma Türü, +Import Using CSV file,CSV dosyasını kullanarak içe aktar, +Import Warnings,İçeri Aktarma Uyarıları, +Import completed. {0} common codes created.,İçe aktarma tamamlandı. {0} ortak kod oluşturuldu., +Import from Google Sheets,Google E-Tablolar'dan İçe Aktar, +Importing Common Codes,Ortak Kodlar İçe Aktarılıyor, +"Importing {0} of {1}, {2}",{2} İçe Aktarılıyor {0}/{1}, +In House,Firma, +In Minutes,Dakika, +In Party Currency,Cari Para Birimi, +In Transit Transfer,Transfer Sürecinde, +In Transit Warehouse,Taşıma Deposu, +In mins,Dakika, +"In row {0} of Appointment Booking Slots: ""To Time"" must be later than ""From Time"".","Randevu Rezervasyon Slotları’nın {0}. satırında: “Bitiş Saati”, “Başlangıç Saati”nden sonra olmalıdır.", +"In this section, you can define Company-wide transaction-related defaults for this Item. Eg. Default Warehouse, Default Price List, Supplier, etc.","Bu bölümde, bu ürün için Şirket Genelinde yapılacak işlemlerle ilgili varsayılanları tanımlayabilirsiniz. Örneğin; Varsayılan Depo, Varsayılan Fiyat Listesi, Tedarikçi vb.", +Inactive Status,İnaktif Durum, +Include Account Currency,Hesap Para Birimini Dahil Et, +Include Closed Orders,Kapalı Siparişleri Dahil Et, +Include Default FB Assets,Varsayılan FD Varlıklarını Dahil Et, +Include Disabled,Kapatılanları Göster, +Include Expired Batches,Süresi Dolmuş Partileri Dahil Et, +Include Timesheets in Draft Status,Zaman Çizelgelerini Taslak Durumuna Dahil Et, +Include Zero Stock Items,Stokta Olmayan Ürünleri Dahil Et, +Incoming Call Handling Schedule,Gelen Çağrı İşleme Programı, +Incoming Call Settings,Gelen Arama Ayarları, +Incoming Rate (Costing),Gelen Oran (Maliyetlendirme), +Incorrect Balance Qty After Transaction,İşlem Sonrası Yanlış Bakiye Miktarı, +Incorrect Batch Consumed,Yanlış Parti Tüketildi, +Incorrect Check in (group) Warehouse for Reorder,Yeniden Sipariş İçin Depoda Yanlış Giriş (grup), +Incorrect Component Quantity,Yanlış Bileşen Miktarı, +Incorrect Invoice,Yanlış Fatura, +Incorrect Movement Purpose,Hatalı Hareket Amacı, +Incorrect Payment Type,Hatalı Ödeme Türü, +Incorrect Reference Document (Purchase Receipt Item),Yanlış Referans Belgesi (Satın Alma İrsaliyesi Kalemi), +Incorrect Serial No Valuation,Hatalı Seri No Değerleme, +Incorrect Serial Number Consumed,Yanlış Seri Numarası Tüketildi, +Incorrect Stock Value Report,Yanlış Stok Değeri Raporu, +Incorrect Type of Transaction,Yanlış İşlem Türü, +Incoterm,Inkoterm, +Increase In Asset Life(Months),Varlık Ömründeki Artış (Ay), +Indent,Talep, +Indirect Expense,Dolaylı Gider, +Individual GL Entry cannot be cancelled.,Tek başına Defter Girişi iptal edilemez., +Individual Stock Ledger Entry cannot be cancelled.,Tek başına Stok Defteri Girişi iptal edilemez., +Initialize Summary Table,Özet Tablosunu Başlat, +Insert New Records,Yeni Kayıt Ekle, +Inspection Rejected,Kalite Kontrol Rededildi, +Inspection Submission,Kontrol Gönderimi, +Instruction,Talimat, +Insufficient Capacity,Yetersiz Kapasite, +Insufficient Stock for Batch,Parti için Yetersiz Stok, +Interest and/or dunning fee,Faiz ve/veya gecikme ücreti, +Internal Customer for company {0} already exists,Şirket için İç Müşteri {0} zaten mevcut, +Internal Sale or Delivery Reference missing.,Dahili Satış veya Teslimat Referansı eksik., +Internal Sales Reference Missing,Dahili Satış Referansı Eksik, +Internal Supplier for company {0} already exists,{0} şirketinin Dahili Tedarikçisi zaten mevcut, +Internal Transfer Reference Missing,Dahili Transfer Referansı Eksik, +Internal Transfers,İç Transferler, +Internal transfers can only be done in company's default currency,İç transferler yalnızca şirketin varsayılan para biriminde yapılabilir, +Interval should be between 1 to 59 MInutes,Aralık 1 ila 59 Dakika arasında olmalıdır, +Invalid,Geçersiz, +Invalid Allocated Amount,Geçersiz Tahsis Edilen Tutar, +Invalid Amount,Geçersiz Miktar, +Invalid Auto Repeat Date,Geçersiz Otomatik Tekrar Tarihi, +Invalid Cost Center,Geçersiz Maliyet Merkezi, +Invalid Delivery Date,Geçersiz Teslimat Tarihi, +Invalid Discount,Geçersiz İndirim, +Invalid Document,Geçersiz Döküman, +Invalid Document Type,Geçersiz Belge Türü, +Invalid Formula,Geçersiz Formül, +Invalid Group By,Geçersiz Gruplama Ölçütü, +Invalid Item Defaults,Geçersiz Ürün Varsayılanları, +Invalid Ledger Entries,Geçersiz Defter Girişleri, +Invalid Primary Role,Geçersiz Birincil Rol, +Invalid Priority,Geçersiz Öncelik, +Invalid Process Loss Configuration,Geçersiz Proses Kaybı Yapılandırması, +Invalid Purchase Invoice,Geçersiz Satın Alma Faturası, +Invalid Qty,Geçersiz Miktar, +Invalid Schedule,Geçersiz Program, +Invalid Serial and Batch Bundle,Geçersiz Seri ve Parti, +Invalid Warehouse,Geçersiz Depo, +Invalid result key. Response:,Geçersiz sonuç anahtarı. Yanıt:, +Invalid value {0} for {1} against account {2},{2} hesabına karşı {1} için geçersiz değer {0}, +Inventory Dimension,Envanter Boyutu, +Inventory Dimension Negative Stock,Envanter Boyutu Negatif Stok, +Invoice Limit,Fatura Limiti, +Invoiced Qty,Faturalanan Miktar, +Invoices and Payments have been Fetched and Allocated,Faturalar ve Ödemeler Alındı ve Tahsis Edildi, +Is Adjustment Entry,Düzeltme Girişi, +Is Alternative,Alternatif Ürün, +Is Composite Asset,Birleşik Varlık, +Is Corrective Job Card,Düzeltici Faaliyet, +Is Exchange Gain / Loss?,Kur Farkı Kârı / Zararı, +Is Expandable,Genişletilebilir, +Is Fully Depreciated,Tamamen Amorti Edilmiş, +Is Old Subcontracting Flow,Eski Alt Yüklenici Akışı, +Is Outward,Giden, +Is Period Closing Voucher Entry,Dönem Kapanış Fişi Girişi, +Is Recursive,Yinelenen, +Is Rejected,Reddedildi, +Is Short/Long Year,Kısa/Uzun Dönem, +Is Standard,Standart, +Is Stock Item,Stok Ürünü, +Is System Generated,Sistem Tarafından Oluşturuldu, +Is Tax Withholding Account,Tevkifatlı Fatura, +Issue Analytics,Sorun Analitiği, +Issue Summary,Sorun Özeti, +Issuing cannot be done to a location. Please enter employee to issue the Asset {0} to,Çıkış işlemi bir lokasyona yapılamaz. Lütfen {0} varlığını çıkış yapmak için bir personel seçin., +It can take upto few hours for accurate stock values to be visible after merging items.,Ürünlerin birleştirilmesinden sonra doğru stok değerlerinin görünür hale gelmesi birkaç saat sürebilir., +"It's not possible to distribute charges equally when total amount is zero, please set 'Distribute Charges Based On' as 'Quantity'","Toplam tutar sıfır olduğunda ücretleri eşit olarak dağıtmak mümkün değildir, lütfen 'Ücretleri Şuna Göre Dağıt' seçeneğini 'Miktar' olarak ayarlayın", +Item Code (Final Product),Bitmiş Ürün, +Item Group wise Discount,Ürün Grubu Bazında İndirim, +"Item Price appears multiple times based on Price List, Supplier/Customer, Currency, Item, Batch, UOM, Qty, and Dates.","Ürün Fiyatı, Fiyat Listesi, Tedarikçi/Müşteri, Para Birimi, Ürün, Parti, Birim, Miktar ve Tarihlere göre birden fazla kez görünür.", +Item Warehouse based reposting has been enabled.,Ürün Deposu bazlı yeniden gönderim etkinleştirildi., +Item and Warehouse,Ürün ve Depo, +Item is removed since no serial / batch no selected.,Seri/parti numarası seçilmediği için ürün kaldırıldı., +Item qty can not be updated as raw materials are already processed.,Ürün miktarı güncellenemez çünkü hammaddeler zaten işlenmiş durumda., +Item rate has been updated to zero as Allow Zero Valuation Rate is checked for item {0},"Aşağıdaki kalemler için Sıfır Değerlemeye İzin Ver işaretlendiğinden, fiyat sıfır olarak güncellenmiştir: {0}", +Item valuation reposting in progress. Report might show incorrect item valuation.,Ürün değerlemesi yeniden yapılıyor. Rapor geçici olarak yanlış değerleme gösterebilir., +Item {0} cannot be added as a sub-assembly of itself,{0} Ürünü kendisine bir alt montaj olarak eklenemez, +Item {0} cannot be ordered more than {1} against Blanket Order {2}.,"Ürün {0}, Toplu Sipariş {2} kapsamında {1} miktarından daha fazla sipariş edilemez.", +Item {0} does not exist.,{0} ürünü mevcut değil., +Item {0} entered multiple times.,{0} ürünü birden fazla kez girildi., +Item {0} is already reserved/delivered against Sales Order {1}.,Ürün {0} zaten {1} Satış Siparişi karşılığında rezerve edilmiş/teslim edilmiştir., +Item {0} must be a Non-Stock Item,Ürün {0} Stokta Olmayan Ürün olmalıdır, +Item {0} not found in 'Raw Materials Supplied' table in {1} {2},"Ürün {0}, {1} {2} içindeki ‘Tedarik Edilen Ham Maddeler’ tablosunda bulunamadı.", +Item {0} not found.,{0} ürünü bulunamadı., +Item {} does not exist.,{0} Ürünü mevcut değil., +Items cannot be updated as Subcontracting Order is created against the Purchase Order {0}.,Alt Yüklenici Siparişi {0} Satın Alma Siparişine karşı oluşturulduğu için kalemler güncellenemez., +Items rate has been updated to zero as Allow Zero Valuation Rate is checked for the following items: {0},Aşağıdaki kalemler için Sıfır Değerleme Oranına İzin Ver işaretlendiğinden kalem oranı sıfır olarak güncellenmiştir: {0}, +Items to Be Repost,Tekrar Gönderilecek Öğeler, +Items to Reserve,Rezerve Edilecek Ürünler, +Items {0} do not exist in the Item master.,Öğeler {0} Ürün ana verisinde mevcut değil., +JAN,OCA, +Job Capacity,İş Kapasitesi, +Job Card Operation,İş Kartı Operasyonu, +Job Card Scrap Item,İş Kartı Hurda Ürünü, +Job Card and Capacity Planning,İş Kartı ve Kapasite Planlama, +Job Cards,İş Kartları, +Job Paused,İş Duraklatıldı, +Job Worker,Yüklenici, +Job Worker Address,İş Adresi, +Job Worker Address Details,İş Adresi Detayları, +Job Worker Contact,Yetkili Kişi, +Job Worker Delivery Note,İşçi Teslimat Notu, +Job Worker Name,Yetkili Kişi Adı, +Job Worker Warehouse,Alt Yüklenici Deposu, +Job: {0} has been triggered for processing failed transactions,İş: {0} başarısız işlemlerin işlenmesi için tetiklendi, +Journal Entries,Defter Girişi, +Journal Entry for Asset scrapping cannot be cancelled. Please restore the Asset.,Varlık hurdaya çıkarma için Yevmiye Kaydı iptal edilemez. Lütfen Varlığı geri yükleyin., +Journal Entry type should be set as Depreciation Entry for asset depreciation,Varlık amortismanı için Yevmiye Kaydı türü Amortisman Kaydı olarak ayarlanmalıdır, +Journal entries have been created,Defter girişleri oluşturuldu, +Key,Anahtar, +Kindly cancel the Manufacturing Entries first against the work order {0}.,Lütfen önce {0} İş Emri adına Üretim Girişlerini iptal edin., +"Last Name, Email or Phone/Mobile of the user are mandatory to continue.","Devam etmek için kullanıcının Soyadı, E-posta veya Telefon / Cep Telefonu zorunludur.", +Last transacted,Son İşlem, +Lead -> Prospect,Müşteri Adayı > Potansiyel Müşteri, +Lead Conversion Time,Potansiyel Müşteri Dönüşüm Süresi, +Lead Owner cannot be same as the Lead Email Address,"Potansiyel Müşteri Sahibi, Potansiyel Müşteri E-posta Adresi ile aynı olamaz", +Lead {0} has been added to prospect {1}.,{0} isimli müşteri adayı {1} potansiyel müşteri listesine eklendi., +Leaderboard,Liderlik Sıralaması, +"Learn about Common Party","Ortak Cari hakkında bilgi edinin", +"Leave blank for home. +This is relative to site URL, for example ""about"" will redirect to ""https://yoursitename.com/about""","Ana sayfa için boş bırakın. +Bu, site URL'sine göredir, örneğin ""hakkında"", ""https://sitenizinadi.com/hakkinda"" adresine yönlendirecektir.", +Ledger Health,Defter Sağlığı, +Ledger Health Monitor,Defter Sağlık Monitörü, +Ledger Health Monitor Company,Defter Sağlık Monitörü Şirketi, +Ledger Merge,Defter Birleştirme, +Ledger Merge Accounts,Defter Birleştirme Hesapları, +Left Child,Sol Alt, +Legend,Defter, +Length,Uzunluk, +Length (cm),Uzunluk (cm), +Level (BOM),Ürün Ağacı Seviyesi, +Limit timeslot for Stock Reposting,Stok Yeniden Gönderimi için zaman aralığını sınırlayın, +Limits don't apply on,Sınırlamalar geçerli değildir, +Link a new bank account,Yeni Banka Hesabı Bağla, +Link with Customer,Müşteri ile İlişkilendir, +Link with Supplier,Tedarikçi ile İlişkilendir, +Linked with submitted documents,Gönderilen belgelerle bağlantılı, +Linking Failed,Bağlantı Başarısız, +Linking to Customer Failed. Please try again.,Müşteriye Bağlantı Başarısız Oldu. Lütfen tekrar deneyin., +Linking to Supplier Failed. Please try again.,Tedarikçiye Bağlantı Başarısız Oldu. Lütfen tekrar deneyin., +Links,Bağlantılar, +Loading Invoices! Please Wait...,"Lütfen Bekleyin, Faturalar yükleniyor...", +Loading import file...,İçeri Aktarma Yükleniyor..., +Locked,Kilitli, +Log Entries,Günlük Girişleri, +Log the selling and buying rate of an Item,Bir Ürünün alış ve satış fiyatının kaydı, +Lost Quotations,Kayıp Teklifler, +Lost Quotations %,Kayıp Teklifler %, +Lost Reasons are required in case opportunity is Lost.,Fırsatın Kaybedilmesi halinde Kayıp Nedenleri gereklidir., +Lost Value,Kayıp Değer, +Lost Value %,Kayıp Değer %, +Machine Type,Makine Türü, +Main Cost Center,Ana Maliyet Merkezi, +Main Cost Center {0} cannot be entered in the child table,Ana Maliyet Merkezi {0} alt tabloya girilemez, +Maintain Asset,Varlık Bakımı, +Maintenance Details,Bakım Detayları, +Make ,Oluştur , +Make Asset Movement,Varlık Hareketi, +Make Quotation,Teklif Oluştur, +Make Return Entry,İade Girişi Yapın, +Make {0} Variant,{0} Varyantı Oluştur, +Make {0} Variants,{0} Varyantları Oluştur, +Making Journal Entries against advance accounts: {0} is not recommended. These Journals won't be available for Reconciliation.,Avans hesaplarına karşı yevmiye kayıtları yapmak: {0} önerilmez. Bu yevmiye kayıtları mutabakat için uygun olmayacaktır., +Mandatory Accounting Dimension,Zorunlu Muhasebe Boyutu, +Mandatory Depends On,Zorunluluk Bağlılığı, +Mandatory Field,Zorunlu Alan, +Mandatory Section,Zorunlu Bölüm, +Mapping Purchase Receipt ...,Alış İrsaliyeleri Eşleşiyor..., +Mapping Subcontracting Order ...,Alt Yüklenici Siparişi Eşleştiriliyor..., +Mapping {0} ...,Eşleştiriliyor {0} ..., +Mark As Closed,Kapalı Olarak İşaretle, +Material Returned from WIP,Devam Eden İşlerden Geri Dönen Malzemeler, +Material Transfer (In Transit),Malzeme Transferi (Yolda), +Materials are already received against the {0} {1},Malzemeler zaten {0} {1} karşılığında alındı, +Materials needs to be transferred to the work in progress warehouse for the job card {0},{0} nolu İş Kartı için malzemelerin devam eden işler deposuna aktarılması gerekiyor, +Maximum Payment Amount,Maksimum Ödeme Tutarı, +Maximum Value,Maksimum Değer, +Maximum quantity scanned for item {0}.,{0} Ürünü için taranan maksimum miktar., +Meeting,Toplantı, +Mention if non-standard Receivable account,Standart Değilse Ayrıca Belirtin, +Merge Invoices Based On,Faturaları Şuna Göre Birleştir, +Merge Progress,Birleştirme İlerlemesi, +Merge taxes from multiple documents,Birden fazla belgedeki vergileri birleştirme, +Merged,Birleştirildi, +"Merging is only possible if following properties are same in both records. Is Group, Root Type, Company and Account Currency","Birleştirme sadece aşağıdaki özelliklerin her iki kayıtta da aynı olması durumunda mümkündür. Grup, Kök Türü, Şirket ve Hesap Para Birimi", +Merging {0} of {1},Birleştiriliyor {0} / {1}, +Min Qty should be greater than Recurse Over Qty,"Minimum Miktar, Yeniden İşlenecek Miktardan büyük olmalıdır.", +Minimum Payment Amount,Minimum Ödeme Tutarı, +Minimum Value,Minimum Değer, +Mismatch,Uyuşmazlık, +Missing,Eksik, +Missing Asset,Kayıp Varlık, +Missing Cost Center,Maliyet Merkezi Eksik, +Missing Default in Company,Şirkette Eksik Varsayılan, +Missing Finance Book,Kayıp Finans Kitabı, +Missing Finished Good,Eksik Bitmiş Ürün, +Missing Formula,Eksik Formül, +Missing Item,Eksik Ürünler, +Missing Items,Eksik Ürünler, +Missing Payments App,Eksik Ödemeler Uygulaması, +Missing Serial No Bundle,Eksik Seri No Paketi, +Missing value,Eksik Değer, +Modified By,Değiştiren, +Modified On,Değiştirilme Tarihi, +Module Settings,Modül Ayarları, +Monitor for Last 'X' days,Son 'X' gün için izleyin, +More/Less than 12 months.,12 aydan fazla/az., +Move Stock,Stoku Taşı, +Move to Cart,Sepete Taşı, +Movement,Hareket, +Moving up in tree ...,Ağaçta yukarı taşınıyor..., +Multi-level BOM Creator,Çok Seviyeli Ürün Ağacı Oluşturucu, +Multiple Loyalty Programs found for Customer {}. Please select manually.,Müşteri {} için birden fazla Sadakat Programı bulundu. Lütfen manuel olarak seçin., +Multiple Warehouse Accounts,Çoklu Depo Hesapları, +Multiple items cannot be marked as finished item,Birden fazla ürün bitmiş ürün olarak işaretlenemez, +Must be a publicly accessible Google Sheets URL and adding Bank Account column is necessary for importing via Google Sheets,Google E-Tablolar URL'si herkese açık olmalı ve Google E-Tablolar üzerinden içe aktarma için Banka Hesabı sütununun eklenmesi gerekir, +Net total calculation precision loss,Net toplam hesaplama hassasiyet kaybı, +New Balance In Account Currency,Hesap Para Biriminde Yeni Bakiye, +New Event,Yeni Etkinlik, +New Note,Yeni Not, +New Task,Yeni Görev, +New Version,Yeni Versiyon, +Newsletter,Bülten, +No Answer,Cevap Yok, +No Customers found with selected options.,Seçilen seçeneklere sahip Müşteri bulunamadı., +No Items selected for transfer.,Transfer için hiçbir Ürün seçilmedi., +No Matching Bank Transactions Found,Eşleşen Banka İşlemi Bulunamadı, +No Notes,Not Yok, +No Outstanding Invoices found for this party,Bu Cari için Ödenmemiş Fatura bulunamadı, +No POS Profile found. Please create a New POS Profile first,POS Profili bulunamadı. Lütfen önce Yeni bir POS Profili oluşturun, +No Records for these settings.,Bu ayarlar için Kayıt Yok., +No Serial / Batches are available for return,İade için Seri / Parti mevcut değil, +No Stock Available Currently,Şu Anda Stok Mevcut Değil, +No Summary,Özet Yok, +No Tax Withholding data found for the current posting date.,Geçerli kayıt tarihi için Vergi Stopajı verisi bulunamadı., +No Terms,Şart Yok, +No Unreconciled Invoices and Payments found for this party and account,Bu Cari ve Hesap için Uzlaştırılmamış Fatura ve Ödeme bulunamadı, +No Unreconciled Payments found for this party,Bu Cari için Uzlaşılmamış Ödeme bulunamadı, +No Work Orders were created,Hiçbir İş Emri oluşturulmadı, +No additional fields available,Ek alan mevcut değil, +No billing email found for customer: {0},{0} isimli Müşteri için fatura e-postası bulunamadı., +No data found. Seems like you uploaded a blank file,Veri bulunamadı. Boş bir dosya yüklemişsiniz gibi görünüyor, +No employee was scheduled for call popup,Hiçbir çağrı bildirimi personel için planlanmadı, +No failed logs,Başarısız kayıt yok, +No item available for transfer.,Transfer için uygun ürün bulunamadı., +No items are available in sales orders {0} for production,Üretim için {0} satış siparişlerinde hiçbir ürün mevcut değil, +No items are available in the sales order {0} for production,Üretim için {0} satış siparişlerinde hiçbir ürün mevcut değil, +No items in cart,Sepette ürün yok, +No matches occurred via auto reconciliation,Otomatik mutabakat yoluyla hiçbir eşleşme oluşmadı, +No more children on Left,Solda başka alt öğe yok, +No more children on Right,Sağda başka alt öğe yok, +No of Docs,Doküman Sayısı, +No of Months (Expense),Ay Sayısı (Gider), +No of Months (Revenue),Ay Sayısı (Gelir), +No open event,Açık etkinlik yok, +No open task,Açık görev yok, +No outstanding {0} found for the {1} {2} which qualify the filters you have specified.,Belirttiğiniz filtreleri karşılayan {1} {2} için bekleyen {0} bulunamadı., +No primary email found for customer: {0},{0} isimli Müşteri için tanımlı birincil e-posta bulunamadı., +No recent transactions found,Son zamanlarda herhangi bir işlem bulunamadı, +No records found in Allocation table,Tahsis tablosunda kayıt bulunamadı, +No records found in the Invoices table,Fatura tablosunda kayıt bulunamadı, +No records found in the Payments table,Ödemeler tablosunda kayıt bulunamadı, +No {0} Accounts found for this company.,Bu şirket için {0} Hesap bulunamadı., +No.,Sıra, +No. of parallel job cards which can be allowed on this workstation. Example: 2 would mean this workstation can process production for two Work Orders at a time.,"Bu iş istasyonunda izin verilebilecek paralel iş kartı sayısı. Örnek: 2, bu iş istasyonunun aynı anda iki İş Emri için üretim yapabileceği anlamına gelir.", +Note: Automatic log deletion only applies to logs of type Update Cost,Not: Otomatik kayıt silme yalnızca Maliyet Güncelleme türündeki kayıtlar için geçerlidir, +"Note: To merge the items, create a separate Stock Reconciliation for the old item {0}","Kalemleri birleştirmek istiyorsanız, eski kalem {0} için ayrı bir Stok Mutabakatı oluşturun", +Notes HTML,Notlar HTML, +Notification,Bildirim, +Notification Settings,Bildirim Ayarları, +Notify Reposting Error to Role,Yeniden Gönderme Hatasını Role Bildir, +Number of Days,Gün Sayısı, +Numeric,Rakamsal, +Numeric Inspection,Sayısal Kontrol, +Off,Kapalı, +Offsetting Account,Mahsuplaşma Hesabı, +Offsetting for Accounting Dimension,Muhasebe Boyutu için Mahsuplaşma, +Oldest Of Invoice Or Advance,En Eski Fatura veya Avans, +On Paid Amount,Ödenen Tutar Üzerinden, +On This Date,Bu Tarihte, +On Track,Hedefte, +On enabling this cancellation entries will be posted on the actual cancellation date and reports will consider cancelled entries as well,İptal girişleri gerçek iptal tarihinde yayınlanacak ve raporlar iptal edilen girişleri de dikkate alacaktır, +"On expanding a row in the Items to Manufacture table, you'll see an option to 'Include Exploded Items'. Ticking this includes raw materials of the sub-assembly items in the production process.","Üretilecek Ürünler tablosunda bir satırı genişlettiğinizde, 'Patlatılmış Ürünleri Dahil Et' seçeneğini göreceksiniz. Bunu işaretlemek, üretim sürecindeki alt montaj ürünlerinin ham maddelerini içerir.", +"On submission of the stock transaction, system will auto create the Serial and Batch Bundle based on the Serial No / Batch fields.","Stok işleminin gönderilmesi üzerine, sistem Seri No / Parti alanlarına dayalı olarak Seri ve Parti Paketini otomatik olarak oluşturacaktır.", +Once the Work Order is Closed. It can't be resumed.,"İş Emri Kapatıldıktan sonra, Devam ettirilemez.", +Only 'Payment Entries' made against this advance account are supported.,Sadece bu avans hesabına yapılan 'Ödeme Girişleri' desteklenmektedir., +Only CSV and Excel files can be used to for importing data. Please check the file format you are trying to upload,Verileri içe aktarmak için yalnızca CSV ve Excel dosyaları kullanılabilir. Lütfen yüklemeye çalıştığınız dosya biçimini kontrol edin, +Only Deduct Tax On Excess Amount ,Sadece Fazla Tutar Üzerinden Vergi Kesintisi Yapın , +Only Include Allocated Payments,Sadece Ayrılan Ödemeleri Dahil Et, +Only Parent can be of type {0},Yalnızca Üst Öğe {0} türünde olabilir, +Only existing assets,Sadece Mevcut Varlıklar, +Only one {0} entry can be created against the Work Order {1},İş Emri {1} için yalnızca bir {0} girişi oluşturulabilir, +"Only values between [0,1) are allowed. Like {0.00, 0.04, 0.09, ...} +Ex: If allowance is set at 0.07, accounts that have balance of 0.07 in either of the currencies will be considered as zero balance account","Yalnızca [0,1) arasındaki değerlere izin verilir. {0.00, 0.04, 0.09, ...} gibi +Örn: Eğer ödenek 0.07 olarak ayarlanırsa, her iki para biriminde de 0.07 bakiyesi olan hesaplar sıfır bakiyeli hesap olarak değerlendirilecektir", +Only {0} are supported,Sadece {0} destekleniyor, +Open Activities HTML,Açık Etkinlikler HTML, +Open Call Log,Arama Günlüğünü Aç, +Open Event,Açık Etkinlik, +Open Events,Açık Etkinlikler, +Open Sales Orders,Açık Siparişler, +Open Task,Açık Görev, +Open Tasks,Açık Görevler, +Open Work Order {0},Açık İş Emri {0}, +Opening Accumulated Depreciation must be less than or equal to {0},Açılış Birikmiş Amortismanı {0} sayısına küçük veya eşit olmalıdır., +Opening Entry can not be created after Period Closing Voucher is created.,Dönem Kapanış Fişi oluşturulduktan sonra Açılış Fişi oluşturulamaz., +"Opening Invoice has rounding adjustment of {0}.

'{1}' account is required to post these values. Please set it in Company: {2}.

Or, '{3}' can be enabled to not post any rounding adjustment.","Açılış Faturası {0} yuvarlama ayarına sahiptir.

'{1}' hesabının bu değerleri göndermesi gerekir. Lütfen Şirket'te bu hesabı ayarlayın: {2}.

Veya, herhangi bir yuvarlama ayarı göndermemek için '{3}' seçeneğini aktifleştirin.", +Opening Number of Booked Depreciations,Kayıtlı Amortismanlar Açılış Sayısı, +Opening Purchase Invoices have been created.,Açılış Alış Faturaları oluşturuldu., +Opening Sales Invoices have been created.,Açılış Satış Faturaları oluşturuldu., +Operating Cost Per BOM Quantity,Ürün Ağacındaki Miktara Göre Operasyon Maliyeti, +Opportunity Amount (Company Currency),Fırsat Tutarı (Company Currency), +Opportunity Source,Fırsat Kaynağı, +Opportunity Summary by Sales Stage ,Satış Aşamasına göre Fırsat Özeti , +Order Date,Sipariş Tarihi, +Order No,Sipariş No, +Out of stock,Stokta yok, +Over Picking Allowance,Fazla Seçim İzni, +Over Receipt,Fazla Teslim Alma, +Over Receipt/Delivery of {0} {1} ignored for item {2} because you have {3} role.,{3} rolüne sahip olduğunuz için {2} ürünü için {0} {1} fazla alım/teslimat göz ardı edildi., +Overbilling of {0} {1} ignored for item {2} because you have {3} role.,{3} rolüne sahip olduğunuz için {2} ürünü için {0} {1} fazla faturalandırma göz ardı edildi., +Overbilling of {} ignored because you have {} role.,Rolünüz {} olduğu için {} fazla fatura türü göz ardı edildi., +Overdue Payment,Gecikmiş ödeme, +Overdue Payments,Gecikmiş Ödemeler, +Overdue Tasks,Gecikmiş Görevler, +PDF Name,PDF Adı, +POS Closing Failed,POS Kapatma Başarısız, +POS Closing failed while running in a background process. You can resolve the {0} and retry the process again.,Arka planda çalışan bir işlem sırasında POS Kapatma başarısız oldu. {0} adresini çözebilir ve işlemi tekrar deneyebilirsiniz., +POS Invoice is already consolidated,POS Faturası zaten konsolide edilmiştir, +POS Invoice is not submitted,POS Faturası gönderilmedi, +POS Invoice should have the field {0} checked.,POS Faturasında {0} alanı işaretlenmiş olmalıdır., +POS Invoices will be consolidated in a background process,POS Faturaları arka plan sürecinde birleştirilecek, +POS Invoices will be unconsolidated in a background process,POS Faturaları arka planda ayrıştırılacak, +POS Profile doesn't match {},POS Profili {} ile eşleşmiyor, +POS Profile {} contains Mode of Payment {}. Please remove them to disable this mode.,POS Profili {} Ödeme Modu {} içerir. Bu modu devre dışı bırakmak için lütfen bunları kaldırın., +POS Search Fields,POS Arama Alanları, +Package No(s) already in use. Try from Package No {0},Paket Numarası zaten kullanılıyor. Paket No {0} değerinden itibaren deneyin., +Packaging Slip From Delivery Note,Sevk İrsaliyesinden Ambalaj Fişi, +Packed Items cannot be transferred internally,Paketlenmiş Ürünler dahili olarak transfer edilemez, +Packed Qty,Paketlenen Miktar, +Page Break After Each SoA,Her Hesap Ekstresinden Sonra Sayfa Sonu Ekle, +Paid Amount After Tax,Vergi Sonrası Ödenen Tutar, +Paid Amount After Tax (Company Currency),Vergi Sonrası Ödenen Tutar (Şirket Para Birimi), +Paid From Account Type,Ödeme Yapılacak Hesap Türü, +Paid To Account Type,Ödenen Yapılacak Hesap Türü, +Pallets,Paletler, +Parameter Group,Parametre Grubu, +Parameter Group Name,Parametre Grup Adı, +Parcel Template,Parsel Şablonu, +Parcel Template Name,Parsel Şablon Adı, +Parcel weight cannot be 0,Parsel ağırlığı 0 olamaz, +Parcels,Parseller, +Parent Account Missing,Ana Hesap Eksik, +Parent Document,Ana Belge, +Parent Item {0} must not be a Fixed Asset,Ana Kalem {0} Sabit Varlık olmamalıdır, +Parent Row No,Üst Satır No, +Parent Row No not found for {0},Üst Satır No {0} için bulunamadı, +Parent Task {0} is not a Template Task,Üst Görev {0} bir Şablon Görevi değildir, +Parsing Error,Birleştirme Hatası, +Partial Material Transferred,Kısmi Malzeme Transferi, +Partial Stock Reservation,Kısmi Stok Rezervasyonu, +Partial Success,Kısmen Başarılı, +"Partial stock can be reserved. For example, If you have a Sales Order of 100 units and the Available Stock is 90 units then a Stock Reservation Entry will be created for 90 units. ","Kısmi stok rezerve edilebilir. Örneğin, 100 birimlik bir Satış Siparişiniz varsa ve Mevcut Stok 90 birimse, 90 birim için bir Stok Rezervi Girişi oluşturulacaktır. ", +Partially Delivered,Kısmen Teslim Edildi, +Partially Reconciled,Kısmen Uzlaşıldı, +Partially Reserved,Kısmen Ayrılmış, +Party Account No. (Bank Statement),Taraf Hesap No. (Banka Hesap Özeti), +Party Account {0} currency ({1}) and document currency ({2}) should be same,Cari Hesabı {0} para birimi ({1}) ve belge para birimi ({2}) aynı olmalıdır, +Party IBAN (Bank Statement),Taraf IBAN No (Banka Hesap Özeti), +Party Item Code,Parti Ürün Kodu, +Party Link,Cari Bağlantısı, +Party Name/Account Holder (Bank Statement),Taraf Adı/Hesap Sahibi (Banka Hesap Özeti), +Party Type and Party can only be set for Receivable / Payable account

{0},Cari ve Cari Türü yalnızca Alacaklı / Borçlu hesaplar için ayarlanabilir

{0}, +Party Type and Party is required for Receivable / Payable account {0},Alacak / Borç hesabı {0} için Cari Türü ve Cari bilgisi gereklidir, +Party can only be one of {0},Cari yalnızca {0} seçeneğinden biri olabilir, +Pause Job,İşi Duraklat, +Paused,Duraklatıldı, +Pay,Ödeme,Amount +Payment Amount (Company Currency),Ödeme Tutarı, +"Payment Entry {0} is linked against Order {1}, check if it should be pulled as advance in this invoice.","Ödeme Girişi {0}, Sipariş {1} ile bağlantılı. Bu ödemenin bu faturada avans olarak kullanılıp kullanılmayacağını kontrol edin.", +Payment Ledger,Ödeme Defteri, +Payment Ledger Balance,Ödeme Defteri Bakiyesi, +Payment Ledger Entry,Ödeme Defteri Girişi, +Payment Limit,Ödeme Limiti, +Payment Reconciliation Allocation,Ödeme Mutabakatı Tahsisi, +Payment Reconciliation Job: {0} is running for this party. Can't reconcile now.,Ödeme Mutabakatı İşi: {0} bu cari için çalışıyor. Şu anda mutabakat yapılamaz., +Payment Request Outstanding,Ödeme Talebi Bekleyen Tutar, +Payment Request created from Sales Order or Purchase Order will be in Draft status. When disabled document will be in unsaved state.,Satış Siparişi veya Satın Alma Siparişinden oluşturulan Ödeme Talebi Taslak durumunda olacaktır. Devre dışı bırakıldığında belge kaydedilmemiş durumda olacaktır., +Payment Request is already created,Ödeme Talebi zaten oluşturuldu, +Payment Request took too long to respond. Please try requesting for payment again.,Ödeme Talebi yanıtlanması çok uzun sürdü. Lütfen ödemeyi tekrar talep etmeyi deneyin., +Payment Requests cannot be created against: {0},Ödeme Talepleri {0} için oluşturulamaz, +Payment Term Outstanding,Ödeme Vadesi Bekleyen Tutar, +Payment Unlink Error,Ödeme Bağlantısı Kaldırma Hatası, +Payment of {0} received successfully.,{0} ödemesi başarıyla alındı., +Payment of {0} received successfully. Waiting for other requests to complete...,{0} ödemesi başarıyla alındı. Diğer isteklerin tamamlanması bekleniyor..., +Payment request failed,Ödeme talebi başarısız oldu, +Payment term {0} not used in {1},"Ödeme vadesi {0}, {1} içinde kullanılmadı", +Pending processing,Bekleyen İşlemler, +Per Received,Alınan Başına, +Percentage (%),Yüzde (%), +Period Closed,Dönem Kapalı, +Period Details,Dönem Detayları, +Period End Date cannot be greater than Fiscal Year End Date,"Dönem Bitiş Tarihi, Mali Yıl Bitiş Tarihinden büyük olamaz", +Period Start Date cannot be greater than Period End Date,Dönem Başlangıç Tarihi Dönem Bitiş Tarihinden büyük olamaz, +Period Start Date must be {0},Dönem Başlangıç Tarihi {0} olmalıdır, +Period To Date,Dönem Sonu Tarihi, +Pick List Incomplete,Toplama Listesi Tamamlanmadı, +Pick Manually,Manuel Seçim, +Pick Serial / Batch Based On,Seri / Parti Bazlı Seçim, +Pick Serial / Batch No,Seri / Parti No Seç, +Pickup,Teslim Al, +Pickup Contact Person,Teslim Alacak İrtibat Kişisi, +Pickup Date,Teslim Alma Tarihi, +Pickup Date cannot be before this day,Teslim Alma Tarihi bu günden önce olamaz, +Pickup From,Teslim Alma Yeri, +Pickup To time should be greater than Pickup From time,"Teslim Alma Zamanı, Teslim Alma Zamanından büyük olmalıdır", +Pickup Type,Teslim Alma Türü, +Pickup from,Teslim alma yeri, +Pipeline By,Satış Hattı, +Plaid Link Failed,Plaid Bağlantısı Başarısız, +Plaid Link Refresh Required,Plaid Bağlantısının Yenilenmesi Gerekiyor, +Plaid Link Updated,Plaid Bağlantısı Güncellendi, +Plant Dashboard,Üretim Alanı Gösterge Panosu, +Please Set Priority,Lütfen Önceliği Belirleyin, +Please Specify Account,Lütfen Hesap Belirtin, +Please add 'Supplier' role to user {0}.,Lütfen {0} kullanıcısına 'Tedarikçi' Rolü ekleyin., +Please add Request for Quotation to the sidebar in Portal Settings.,Lütfen Portal Ayarları kenar çubuğuna Teklif Talebi'ni ekleyin., +Please add Root Account for - {0},Lütfen {0} için Kök Hesap ekleyin, +Please add atleast one Serial No / Batch No,Lütfen en az bir Seri No / Parti No ekleyin, +Please add the Bank Account column,Lütfen Banka Hesabı sütununu ekleyin, +Please add the account to root level Company - {0},Lütfen hesabı kök seviyesindeki Şirkete ekleyin - {0}, +Please add {1} role to user {0}.,Lütfen {0} kullanıcısına {1} rolünü ekleyin., +Please adjust the qty or edit {0} to proceed.,Lütfen miktarı ayarlayın veya devam etmek için {0} öğesini düzenleyin., +Please attach CSV file,Lütfen CSV dosyasını ekleyin, +Please cancel and amend the Payment Entry,Lütfen Ödeme Girişini iptal edin ve düzeltin, +Please cancel payment entry manually first,Lütfen önce ödeme girişini manuel olarak iptal edin, +Please cancel related transaction.,Lütfen ilgili işlemi iptal edin., +Please check Process Deferred Accounting {0} and submit manually after resolving errors.,Lütfen Ertelenmiş Muhasebe İşlemini {0} kontrol edin ve hataları çözdükten sonra manuel olarak gönderin., +Please check either with operations or FG Based Operating Cost.,Lütfen operasyonları veya Bitmiş Ürün Bazlı İşletme Maliyetini kontrol edin., +Please check the error message and take necessary actions to fix the error and then restart the reposting again.,Lütfen hata mesajını kontrol edin ve hatayı düzeltmek için gerekli işlemleri yapın ve ardından yeniden göndermeyi yeniden başlatın., +Please check your email to confirm the appointment,Randevuyu onaylamak için lütfen e-postanızı kontrol edin, +Please contact any of the following users to extend the credit limits for {0}: {1},Kredi limitlerini uzatmak için lütfen aşağıdaki kullanıcılardan herhangi biriyle iletişime geçin: {0}: {1}, +Please contact any of the following users to {} this transaction.,Bu işlemi {} yapmak için lütfen aşağıdaki kullanıcılardan herhangi biriyle iletişime geçin., +Please contact your administrator to extend the credit limits for {0}.,{0} için kredi limitlerini uzatmak amacıyla lütfen yöneticinizle iletişime geçin., +Please create Landed Cost Vouchers against Invoices that have 'Update Stock' enabled.,Lütfen ‘Stok Güncelle’ seçeneği etkin olan faturalar için İndirgenmiş Maliyet Fişleri oluşturun., +Please create a new Accounting Dimension if required.,Gerekirse lütfen yeni bir Muhasebe Boyutu oluşturun., +Please create purchase from internal sale or delivery document itself,Lütfen satın alma işlemini dahili satış veya teslimat belgesinin kendisinden oluşturun, +"Please delete Product Bundle {0}, before merging {1} into {2}",Lütfen {1} adresini {2} adresiyle birleştirmeden önce {0} Ürün Paketini silin, +Please do not book expense of multiple assets against one single Asset.,Lütfen birden fazla varlığın giderini tek bir Varlığa karşı muhasebeleştirmeyin., +Please enable Use Old Serial / Batch Fields to make_bundle,Lütfen make_bundle için Eski Seri / Toplu Alanları Kullan seçeneğini etkinleştirin, +Please enable only if the understand the effects of enabling this.,Lütfen yalnızca bunu etkinleştirmenin etkilerini anlıyorsanız etkinleştirin., +Please enable {0} in the {1}.,Lütfen {1} içindeki {0} öğesini etkinleştirin., +Please enable {} in {} to allow same item in multiple rows,Aynı öğeye birden fazla satırda izin vermek için lütfen {} içinde {} ayarını etkinleştirin, +Please ensure that the {0} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,Lütfen {0} hesabının bir Bilanço hesabı olduğundan emin olun. Ana hesabı bir Bilanço hesabı olarak değiştirebilir veya farklı bir hesap seçebilirsiniz., +Please ensure that the {0} account {1} is a Payable account. You can change the account type to Payable or select a different account.,Lütfen {0} hesabının {1} bir Borç hesabı olduğundan emin olun. Hesap türünü Ödenecek olarak değiştirebilir veya farklı bir hesap seçebilirsiniz., +Please ensure {} account is a Balance Sheet account.,Lütfen {} hesabının bir Bilanço Hesabı olduğundan emin olun., +Please ensure {} account {} is a Receivable account.,Lütfen {} hesabının {} bir Alacak hesabı olduğundan emin olun., +Please enter Root Type for account- {0},Lütfen hesap için Kök Türünü girin- {0}, +Please enter Serial Nos,Lütfen Seri Numaralarını girin, +Please enter Shipment Parcel information,Lütfen Gönderi Koli bilgilerini girin, +Please enter Stock Items consumed during the Repair.,Lütfen Onarım sırasında tüketilen Stok Kalemlerini girin., +Please enter mobile number first.,Lütfen önce cep telefonu numaranızı girin., +Please enter quantity for item {0},Lütfen {0} ürünü için miktar girin, +Please enter serial nos,Lütfen seri numaralarını girin, +"Please first set Last Name, Email and Phone for the user","Lütfen önce kullanıcı için Soyadı, E-posta ve Telefon ayarlayın", +Please fix overlapping time slots for {0},Lütfen {0} için çakışan zaman aralıklarını düzeltin, +Please fix overlapping time slots for {0}.,Lütfen {0} için çakışan zaman aralıklarını düzeltin., +Please import accounts against parent company or enable {} in company master.,Lütfen hesapları ana şirkete karşı içe aktarın veya şirket ana sayfasında {} öğesini etkinleştirin., +"Please keep one Applicable Charges, when 'Distribute Charges Based On' is 'Distribute Manually'. For more charges, please create another Landed Cost Voucher.","‘Masrafları Manuel Dağıt’ seçili olduğunda, lütfen bir geçerli masraf tutun. Daha fazla masraf için başka bir Gümrük Masraf Fişi oluşturun.", +Please make sure the file you are using has 'Parent Account' column present in the header.,Lütfen kullandığınız dosyanın başlığında 'Ana Hesap' sütununun bulunduğundan emin olun., +Please mention 'Weight UOM' along with Weight.,Lütfen Ağırlık ile birlikte 'Ağırlık Ölçü Birimini de belirtin., +Please mention '{0}' in Company: {1},Lütfen Şirket: {1} için '{0}' ifadesini belirtin, +Please mention the Current and New BOM for replacement.,Lütfen değiştirmek için Mevcut ve Yeni Ürün Ağacını belirtin., +Please rectify and try again.,Lütfen gözden geçirip tekrar deneyiniz., +Please refresh or reset the Plaid linking of the Bank {}.,Lütfen Banka {}'nın Plaid bağlantısını yenileyin veya sıfırlayın., +Please save before proceeding.,Devam etmeden önce lütfen kaydedin., +Please select Bank Account,Lütfen Banka Hesabını Seçin, +Please select Finished Good Item for Service Item {0},Lütfen Hizmet Kalemi için Bitmiş Ürünü seçin {0}, +Please select Serial/Batch Nos to reserve or change Reservation Based On to Qty.,Lütfen rezerve etmek için Seri/Parti Numaralarını seçin veya Rezervasyonu Miktara Göre Değiştirin., +Please select Subcontracting Order instead of Purchase Order {0},Lütfen Satın Alma Siparişi yerine Alt Yüklenici Siparişini seçin {0}, +Please select Unrealized Profit / Loss account or add default Unrealized Profit / Loss account account for company {0},Lütfen Gerçekleşmemiş Kâr / Zarar hesabını seçin veya {0} şirketi için varsayılan Gerçekleşmemiş Kâr / Zarar hesabı hesabını ekleyin, +Please select a Subcontracting Purchase Order.,Lütfen bir Alt Yüklenici Siparişi seçin., +Please select a Warehouse,Lütfen bir Depo seçin, +Please select a Work Order first.,Lütfen önce bir İş Emri seçin., +Please select a country,Lütfen bir ülke seçin, +Please select a customer for fetching payments.,Lütfen ödemeleri almak için bir müşteri seçin., +Please select a date,Lütfen bir tarih seçin, +Please select a date and time,Lütfen bir tarih ve saat seçin, +Please select a row to create a Reposting Entry,Yeniden Yayınlama Girişi oluşturmak için lütfen bir satır seçin, +Please select a supplier for fetching payments.,Lütfen ödemeleri almak için bir tedarikçi seçin., +Please select a valid Purchase Order that has Service Items.,Lütfen Hizmet Ürünleri içeren geçerli bir Satın Alma Siparişi seçin., +Please select a valid Purchase Order that is configured for Subcontracting.,Lütfen Alt Sözleşme için yapılandırılmış geçerli bir Satın Alma Siparişi seçin., +Please select an item code before setting the warehouse.,Depoyu ayarlamadan önce lütfen bir ürün kodu seçin., +Please select either the Item or Warehouse or Warehouse Type filter to generate the report.,"Raporu oluşturmak için Ürün, Depo veya Depo Türü filtresinden birini seçin.", +Please select items,Lütfen Ürün Seçin, +Please select items to reserve.,Lütfen rezerve edilecek ürünleri seçin., +Please select items to unreserve.,Lütfen ayırmak istediğiniz ürünleri seçin., +Please select only one row to create a Reposting Entry,Yeniden Yayınlama Girişi oluşturmak için lütfen yalnızca bir satır seçin, +Please select rows to create Reposting Entries,Yeniden Yayınlama Girişi oluşturmak için lütfen bir satır seçin, +Please select the required filters,Lütfen gerekli filtreleri seçin, +Please select valid document type.,Lütfen geçerli belge türünü seçin., +Please set '{0}' in Company: {1},Lütfen Şirket: {1} için '{0}' değerini ayarlayın, +Please set Account,Lütfen Hesabı Ayarlayın, +Please set Accounting Dimension {} in {},Lütfen {} içinde Muhasebe Boyutunu {} ayarlayın, +Please set Email/Phone for the contact,Lütfen kişi için E-posta/Telefon ayarlayın, +Please set Fiscal Code for the customer '%s',Lütfen müşteri için Mali Kodu ayarlayın '%s', +Please set Fiscal Code for the public administration '%s',Lütfen kamu idaresi için Mali Kodu belirleyin '%s', +Please set Fixed Asset Account in {} against {}.,Lütfen {} içindeki Sabit Kıymet Hesabını {} ile karşılaştırın., +Please set Opening Number of Booked Depreciations,Lütfen Kayıtlı Amortismanların Açılış Sayısını ayarlayın, +Please set Parent Row No for item {0},Lütfen {0} öğesi için Üst Satır Numarasını ayarlayın, +Please set Root Type,Lütfen Kök Türünü Ayarlayın, +Please set Tax ID for the customer '%s',Lütfen müşteri için Vergi Kimliğini ayarlayın '%s', +Please set VAT Accounts in {0},Lütfen KDV Hesaplarını {0} olarak ayarlayın, +"Please set Vat Accounts for Company: ""{0}"" in UAE VAT Settings","Lütfen BAE KDV Ayarlarında Şirket için KDV Hesaplarını ""{0}"" olarak ayarlayın", +Please set a Cost Center for the Asset or set an Asset Depreciation Cost Center for the Company {},Lütfen Varlık için bir Maliyet Merkezi belirleyin veya Şirket için bir Varlık Amortisman Maliyet Merkezi belirleyin {}, +Please set an Address on the Company '%s',Lütfen Şirket için bir Adres belirleyin '%s', +Please set an Expense Account in the Items table,Lütfen Ürünler tablosunda bir Gider Hesabı ayarlayın, +Please set default Exchange Gain/Loss Account in Company {},Lütfen {} Şirketi varsayılan Döviz Kazanç/Zarar Hesabını ayarlayın, +Please set default Expense Account in Company {0},Lütfen Şirket {0} adresinde varsayılan Gider Hesabını ayarlayın, +Please set default cost of goods sold account in company {0} for booking rounding gain and loss during stock transfer,Stok transferi sırasında yuvarlama kazancı ve kaybını kaydetmek için lütfen {0} şirketinde varsayılan satılan malın maliyeti hesabını ayarlayın, +Please set either the Tax ID or Fiscal Code on Company '%s',Lütfen Şirket '%s' için Vergi Kimlik Numarasını veya Mali Kodunu ayarlayın, +Please set filters,Lütfen filtreleri ayarlayın, +Please set one of the following:,Lütfen aşağıdakilerden birini ayarlayın:, +Please set the cost center field in {0} or setup a default Cost Center for the Company.,Lütfen {0} adresinde maliyet merkezi alanını ayarlayın veya Şirket için varsayılan bir Maliyet Merkezi kurun., +Please set {0} in BOM Creator {1},{1} Ürün Ağacı Oluşturucuda {0} değerini ayarlayın, +Please set {0} in Company {1} to account for Exchange Gain / Loss,Lütfen {1} şirketinde Döviz Kur Farkı Kâr/Zarar hesabını ayarlamak için {0} belirleyin., +"Please set {0} to {1}, the same account that was used in the original invoice {2}.","Lütfen {0} alanını {1} olarak ayarlayın, bu orijinal fatura {2} için kullanılan hesapla aynı olmalıdır.", +Please setup and enable a group account with the Account Type - {0} for the company {1},Lütfen {1} şirketi için Hesap Türü {0} olan bir grup hesabı kurun ve etkinleştirin, +Please share this email with your support team so that they can find and fix the issue.,Sorunu bulup çözebilmeleri için lütfen bu e-postayı destek ekibinizle paylaşın., +Please try again in an hour.,Lütfen bir saat sonra tekrar deneyin., +Please update Repair Status.,Lütfen Onarım Durumunu güncelleyin., +Portal User,Portal Kullanıcısı, +Posting Datetime,Gönderim Tarih ve Saati, +Powered by {0},{0} Tarafından desteklenmektedir, +Preview Required Materials,Gerekli Malzemeleri İncele, +"Previous Year is not closed, please close it first","Önceki Mali Yıl henüz kapatılmamış, önce bu işlemi tamamlayın", +Price ({0}),Fiyat ({0}), +Price Per Unit ({0}),Birim Fiyatı ({0}), +Price is not set for the item.,Ürün için fiyat belirlenmedi., +Primary Party,Birincil Parti, +Primary Role,Birincil Rol, +Print Format Builder,Yazdırma Formatı Oluşturucu, +Print Receipt on Order Complete,Sipariş Tamamlandığında Makbuz Yazdır, +Print Style,Yazdırma Stili, +Printing,Yazdırma, +Priority cannot be lesser than 1.,Öncelik 1'den küçük olamaz., +Priority is mandatory,Öncelik zorunludur, +Process Loss Percentage cannot be greater than 100,Proses Kaybı Yüzdesi 100'den büyük olamaz, +Process Loss Qty,Kayıp Proses Miktarı, +Process Loss Report,İşlem Kaybı Raporu, +Process Loss Value,Proses Kaybı Değeri, +Process Payment Reconciliation,Ödeme Mutabakatını İşle, +Process Payment Reconciliation Log,Ödeme Mutabakat Günlüğünü İşle, +Process Payment Reconciliation Log Allocations,Ödeme Mutabakat Günlüğü Tahsislerini İşle, +Processed BOMs,İşlenmiş Ürün Ağaçları, +Processing Sales! Please Wait...,Satışlar İşleniyor! Lütfen Bekleyin..., +Produced / Received Qty,Üretilen / Alınan Miktar, +Product Price ID,Ürün Fiyat Kimliği, +Production Plan Already Submitted,Üretim Planı Zaten Gönderildi, +Production Plan Qty,Planlanan Üretim Miktarı, +Production Plan Sub Assembly Item,Üretim Planı Alt Montaj Ürünü, +Production Plan Sub-assembly Item,Üretim Planı Alt Montaj Öğesi, +Production Plan Summary,Üretim Planı Özeti, +Profit and Loss Summary,Kâr ve Zarar Özeti, +Progress,İlerleme, +Progress (%),İlerleme (%), +Project Progress:,Proje İlerlemesi:, +Prospect Lead,Potansiyel Müşteri Adayı, +Prospect Opportunity,Portnasiyel Müşteri Fırsatı, +Prospect {0} already exists,Potansiyel Müşteri {0} zaten mevcut, +Provisional Account,Geçici Hesap, +Publisher,Yayınlayan, +Publisher ID,Yayıncı Kimliği, +Purchase Order Item reference is missing in Subcontracting Receipt {0},Alt Yüklenici İrsaliyesi {0} için Satın Alma Siparişi Ürün referansı eksik, +Purchase Orders {0} are un-linked,Satın Alma Siparişleri {0} bağlantısı kaldırıldı, +Purchase Receipt {0} created.,{0} Alış İrsaliyesi oluşturuldu., +Purchases,Alımlar, +Purposes Required,Amaçlar Gerekiyor, +Putaway Rule,Yerleştirme Kuralı, +Putaway Rule already exists for Item {0} in Warehouse {1}.,{1} Deposundaki {0} Ürünü için zaten bir Paketten Çıkarma Kuralı mevcuttur., +Qty ,Miktar , +Qty (Company),Miktar (Şirket), +Qty (Warehouse),Miktar (Depo), +Qty After Transaction,İşlem Sonrası Miktar, +Qty Change,Miktar Değişimi, +Qty In Stock,Stok Miktarı, +Qty Per Unit,Birim Başına Miktar, +"Qty To Manufacture ({0}) cannot be a fraction for the UOM {2}. To allow this, disable '{1}' in the UOM {2}.","Üretim Miktarı ({0}), {2} için kesirli olamaz. Bunu sağlamak için, {2} içindeki '{1}' seçeneğini devre dışı bırakın.", +Qty To Produce,Üretilecek Miktar, +Qty Wise Chart,Miktar Bazlı Grafik, +Qty and Rate,Miktar ve Oran, +Qty as Per Stock UOM,Stok Birimine Göre Miktar, +Qty for which recursion isn't applicable.,Yinelemenin uygulanamadığı miktar., +Qty of Finished Goods Item should be greater than 0.,Bitmiş Ürün Miktarı 0'dan büyük olmalıdır., +Qty to Fetch,Getirilecek Miktar, +Qty to Produce,Üretilecek Miktar, +Quality Inspection Parameter,Kalite Kontrol Parametresi, +Quality Inspection Parameter Group,Kalite Kontrol Parametre Grubu, +Quantity (A - B),Miktar (A - B), +Quantity is required,Miktar gereklidir, +"Quantity must be greater than zero, and less or equal to {0}",Miktar sıfırdan büyük ve {0} değerine eşit veya daha az olmalıdır, +Quantity to Produce should be greater than zero.,Üretilecek Miktar sıfırdan büyük olmalıdır., +Quantity to Scan,Taranacak Miktar, +Quarter {0} {1},{0}. Çeyrek {1}, +Queue Size should be between 5 and 100,Kuyruk Boyutu 5 ile 100 arasında olmalıdır, +Quoted Amount,Teklif Verilen Tutar, +Rate Section,Oran Bölümü, +Rate of Depreciation (%),Amortisman Oranı (%), +Ratios,Oranlar, +Raw Material Cost Per Qty,Birim Başına Hammadde Maliyeti, +Raw Material Item,Hammadde Ürünü, +Raw Material Value,Hammadde Ürünü Değeri, +Raw Materials Actions,Hammadde Aksiyonları, +Reached Root,Köke Ulaştı, +Reason for hold:,Bekletme nedeni:, +Rebuild Tree,Ağaç Yapısını Tekrar Oluştur, +Rebuilding BTree for period ...,Dönem için BTree yeniden oluşturuluyor…, +Recalculate Incoming/Outgoing Rate,Gelen/Giden Oranını Yeniden Hesapla, +Recalculating Purchase Cost against this Project...,Bu Projeye Göre Satın Alma Maliyeti Yeniden Hesaplanıyor..., +Receivable/Payable Account,Alacak / Borç Hesabı, +Receivable/Payable Account: {0} doesn't belong to company {1},Alacak/Borç Hesabı: {0} {1} şirketine ait değildir, +Received Amount After Tax,Vergi Sonrası Alınan Tutar, +Received Amount After Tax (Company Currency),Vergi Sonrası Ödenen Tutar (Şirket Para Birimi), +Received Amount cannot be greater than Paid Amount,Alınan Tutar Ödenen Tutardan büyük olamaz, +Recent Orders,Son Siparişler, +Recent Transactions,Son İşlemler, +Reconcile All Serial Nos / Batches,Tüm Seri No ve Partileri Doğrula, +Reconcile Effect On,Mutabakat Etkisi Açık, +Reconcile on Advance Payment Date,Avans Ödeme Tarihinde Mutabakat Sağla, +Reconcile the Bank Transaction,Banka İşlemlerinin Mutabakatını Yapın, +Reconciled Entries,Mutabakat Girişleri, +Reconciliation Date,Mutabakat Tarihi, +Reconciliation Error Log,Mutabakat Hata Günlüğü, +Reconciliation Logs,Denkleştirme Kayıtları, +Reconciliation Progress,Mutabakat İlerlemesi, +Reconciliation Queue Size,Mutabakat Kuyruğu Boyutu, +Reconciliation Takes Effect On,Mutabakat Şu Tarihlerde Yürürlüğe Girer, +Recoverable Standard Rated expenses should not be set when Reverse Charge Applicable is Y,"İade Edilebilir Standart Oranlı Giderler, Ters Yükleme Uygulanıyorken (Y) ayarlanmamalıdır.", +Recurse Every (As Per Transaction UOM),Her Tekrar (İşlem Ölçü Birimine Göre), +Recurse Over Qty cannot be less than 0,Yineleme Miktarı 0'dan küçük olamaz., +Recursive Discounts with Mixed condition is not supported by the system,Karışık koşullarla yapılan yinelemeli indirimler sistem tarafından desteklenmemektedir., +Reference Date for Early Payment Discount,Erken Ödeme İndirimi için Referans Tarihi, +Reference Detail,Referans Detayı, +Reference DocType,Referans DocType, +Reference Exchange Rate,Referans Döviz Kuru, +Reference number of the invoice from the previous system,Önceki Sistemde Kayıtlı Fatura Numarası, +References to Sales Invoices are Incomplete,Satış Faturalarına İlişkin Referanslar Eksik, +References to Sales Orders are Incomplete,Satış Siparişlerine Yapılan Referanslar Eksik, +References {0} of type {1} had no outstanding amount left before submitting the Payment Entry. Now they have a negative outstanding amount.,{1} türündeki {0} referanslarının Ödeme Girişini göndermeden önce ödenmemiş tutarı yoktu. Şimdi ise negatif ödenmemiş tutarları var., +Refresh Google Sheet,Google E-Tablosunu Yenile, +Refresh Plaid Link,Plaid Bağlantısını Yenile, +"Regards,","Saygılarımla,", +Rejected ,Reddedildi , +Rejected Serial and Batch Bundle,Reddedilen Seri ve Parti, +Rejected Warehouse and Accepted Warehouse cannot be same.,Red Deposu ile Kabul Deposu aynı olamaz., +Remove Parent Row No in Items Table,Ürünler Tablosunda Üst Satır Numarasını Kaldır, +Removing rows without exchange gain or loss,Satırlar Değişim kazancı veya kaybı olmadan kaldırılıyor, +Repair,Onar, +Repair Asset,Varlık Onarımı, +Repair Details,Tamir Detayları, +"Replace a particular BOM in all other BOMs where it is used. It will replace the old BOM link, update cost and regenerate ""BOM Explosion Item"" table as per new BOM. +It also updates latest price in all the BOMs.","Bu talimat, bir Ürün Ağacını başka Ürün Ağaçlarında kullanıldığında otomatik olarak günceller. Eski Ürün Ağacı bağlantısı değiştirilir, güncellenmiş maliyetler yeniden hesaplanır ve yeni Ürün Ağacı üzerinden tüm bileşenlerin listesi yeniden oluşturulur. Bu süreç, üretim ve maliyet hesaplamalarında tutarlılığı sağlar.", +Report Error,Hatayı Rapor Et, +Report Filters,Rapor Filtreleri, +Repost Accounting Ledger,Muhasebe Defterini Yeniden Gönder, +Repost Accounting Ledger Items,Muhasebe Defteri Kalemlerini Yeniden Gönder, +Repost Accounting Ledger Settings,Muhasebe Defteri Ayarlarını Yeniden Gönder, +Repost Allowed Types,Yeniden Göndermeye İzin Verilen Türler, +Repost Error Log,Hata Günlüğünü Yeniden Gönder, +Repost Item Valuation,Yeniden Değerleme, +Repost Payment Ledger,Ödeme Defterini Yeniden Gönder, +Repost Payment Ledger Items,Ödeme Defteri Kalemlerini Yeniden Gönder, +Repost Status,Yeniden Gönderme Durumu, +Repost has started in the background,Yeniden gönderme arka planda başlatıldı, +Repost in background,Arka Planda Yeniden Gönder, +Repost started in the background,Yeniden gönderme arka planda başlatıldı, +Reposting Completed {0}%,Yeniden Gönderme Tamamlandı %{0}, +Reposting Data File,Veri Dosyasını Yeniden Gönderme, +Reposting Info,Yeniden Gönderilen Bilgiler, +Reposting Progress,Yeniden Gönderme İlerlemesi, +Reposting entries created: {0},Oluşturulan girişler yeniden gönderiliyor: {0}, +Reposting has been started in the background.,Yeniden gönderme arka planda başlatıldı., +Reposting in the background.,Yeniden gönderme işlemleri arka planda tamamlanıyor., +Represents a Financial Year. All accounting entries and other major transactions are tracked against the Fiscal Year.,Mali Yılı temsil eder. Tüm muhasebe kayıtları ve diğer önemli işlemler Mali Yıla göre takip edilir., +Request Parameters,İstek Parametreleri, +Request Timeout,İstek Zaman Aşımı, +Reservation Based On,Rezervasyona Göre, +Reserve,Rezerve Et, +Reserve Stock,Stok Rezervi, +"Reserved Qty ({0}) cannot be a fraction. To allow this, disable '{1}' in UOM {3}.","Ayrılan Miktar ({0}) kesirli olamaz. Bunu sağlamak için, {3} Biriminde '{1}' özelliğini devre dışı bırakın.", +Reserved Qty for Production Plan,Üretim Planı İçin Ayrılan Miktar, +Reserved Qty for Subcontract,Alt Yüklenici İçin Ayrılan Miktar, +Reserved Qty should be greater than Delivered Qty.,"Ayrılan Miktar, Teslim Edilen Miktardan büyük olmalıdır.", +Reserved Serial No.,Ayrılmış Seri No., +Reserved Stock,Ayrılmış Stok, +Reserved Stock for Batch,Parti için Ayrılmış Stok, +Reserved for POS Transactions,POS İşlemleri İçin Ayrılmıştır, +Reserved for Production,Üretim İçin Ayrılan, +Reserved for Production Plan,Üretim Planı İçin Ayrılan, +Reserved for Sub Contracting,Alt Yüklenici İçin Ayrılan, +Reserving Stock...,Stok Ayırılıyor..., +Reset Company Default Values,Şirket Varsayılan Değerlerini Sıfırla, +Reset Plaid Link,Plaid Bağlantısını Yenile, +Reset Raw Materials Table,Hammadde Tablosunu Sıfırla, +Resolution Due,Çözüm Tarihi, +Restart,Yeniden Başlat, +Restore Asset,Varlığı Geri Yükle, +Restrict,Kısıtlama, +Restrict Items Based On,Ürünleri Şuna Göre Kısıtla, +Result Key,Sonuç Anahtarı, +Resume Job,İşi Devam Ettir, +Resume Timer,Zamanlayıcıya Devam Et, +Retried,Yeniden Denendi, +Retry,Yeniden Dene, +Retry Failed Transactions,Başarısız İşlemleri Tekrar Deneyin, +Return Against,Karşılık Gelen Fatura, +Return Components,Bileşenleri İade Et, +Return Qty,İade Miktarı, +Return Qty from Rejected Warehouse,Reddedilen Depodan İade Miktarı, +Return of Components,Bileşenlerin İadesi, +Returned,İade Edildi, +Returned Against,Gelen İade, +Returned Qty in Stock UOM,Stok Biriminde İade Edilen Miktar, +Returned exchange rate is neither integer not float.,Geri dönen döviz kuru ne tam sayı ne de ondalıklı sayı., +Revaluation Journals,Yeniden Değerleme Kayıtları, +Revaluation Surplus,Yeniden Değerleme Fazlası, +Revenue,Gelir, +Reversal Of,Ters Kayıt, +Right Child,Sağ Alt, +Root,Kök, +"Root Type for {0} must be one of the Asset, Liability, Income, Expense and Equity","{0} için Kök Tipi Varlık, Borç, Gelir, Gider ve Özkaynaklardan biri olmalıdır", +Round Free Qty,Bedelsiz Miktarı Yuvarla, +Round Off Tax Amount,Yuvarlama Vergi Tutarı, +Round Off for Opening,Açılış İçin Yuvarlama, +Rounding Loss Allowance,Yuvarlama Kaybı Karşılığı, +Rounding Loss Allowance should be between 0 and 1,Yuvarlama Kaybı Karşılığı 0 ile 1 arasında olmalıdır., +Rounding gain/loss Entry for Stock Transfer,Stok Transferi için Yuvarlama Kazanç/Kayıp Girişi, +Row #,Satır #, +Row # {0}:,Satır # {0}:, +Row # {0}: Please add Serial and Batch Bundle for Item {1},Satır # {0}: Lütfen {1} ürünü için Seri ve Parti Paketi ekleyin, +Row #{0}: A reorder entry already exists for warehouse {1} with reorder type {2}.,Satır #{0}: {1} deposu için {2} yeniden sipariş türüyle zaten yeniden bir sipariş girişi mevcut., +Row #{0}: Acceptance Criteria Formula is incorrect.,Satır #{0}: Kabul Kriteri Formülü hatalı., +Row #{0}: Acceptance Criteria Formula is required.,Satır #{0}: Kabul Kriteri Formülü gereklidir., +Row #{0}: Accepted Warehouse and Rejected Warehouse cannot be same,Satır #{0}: Kabul Deposu ve Red Deposu aynı olamaz, +Row #{0}: Accepted Warehouse is mandatory for the accepted Item {1},"Satır #{0}: Kabul Deposu, kabul edilen {1} Ürünü için zorunludur", +Row #{0}: Allocated Amount cannot be greater than Outstanding Amount of Payment Request {1},"Satır #{0}: Tahsis Edilen Tutar, Ödeme Talebi {1} için Kalan Tutarı aşamaz.", +Row #{0}: Allocated amount:{1} is greater than outstanding amount:{2} for Payment Term {3},"Satır #{0}: {3} Ödeme Dönemi için Tahsis edilen tutar: {1}, ödenmemiş tutardan büyük: {2}", +Row #{0}: Amount must be a positive number,Satır #{0}: Tutar pozitif bir sayı olmalıdır, +Row #{0}: BOM is not specified for subcontracting item {0},Satır #{0}: {0} alt yüklenici kalemi için ürün ağacı belirtilmemiş, +Row #{0}: Batch No {1} is already selected.,Satır #{0}: Parti No {1} zaten seçili., +Row #{0}: Cannot allocate more than {1} against payment term {2},Satır #{0}: Ödeme süresi {2} için {1} değerinden daha fazla tahsis edilemez, +Row #{0}: Cannot transfer more than Required Qty {1} for Item {2} against Job Card {3},Satır #{0}: İş Kartı {3} için {2} Ürünü için Gerekli Olan {1} Miktardan fazlasını aktaramazsınız., +Row #{0}: Consumed Asset {1} cannot be Draft,Satır #{0}: Tüketilen Varlık {1} Taslak olamaz, +Row #{0}: Consumed Asset {1} cannot be cancelled,Satır #{0}: Tüketilen Varlık {1} iptal edilemez, +Row #{0}: Consumed Asset {1} cannot be the same as the Target Asset,Satır #{0}: Tüketilen Varlık {1} Hedef Varlık ile aynı olamaz, +Row #{0}: Consumed Asset {1} cannot be {2},"Satır #{0}: Tüketilen Varlık {1}, {2} olamaz.", +Row #{0}: Consumed Asset {1} does not belong to company {2},Satır #{0}: Tüketilen Varlık {1} {2} şirketine ait değil, +Row #{0}: Cumulative threshold cannot be less than Single Transaction threshold,"Satır #{0}: Kümülatif eşik, Tek İşlem eşiğinden az olamaz", +Row #{0}: Dates overlapping with other row,Satır #{0}: Diğer satırla çakışan tarihler var, +Row #{0}: Default BOM not found for FG Item {1},Satır #{0}: Bitmiş Ürün için varsayılan {1} Ürün Ağacı bulunamadı, +Row #{0}: Expense Account not set for the Item {1}. {2},Satır #{0}: Gider Hesabı {1} Öğesi için ayarlanmadı. {2}, +Row #{0}: Finished Good Item Qty can not be zero,Satır #{0}: Bitmiş Ürün Miktarı sıfır olamaz., +Row #{0}: Finished Good Item is not specified for service item {1},Satır #{0}: Hizmet ürünü {1} için Bitmiş Ürün belirtilmemiş., +Row #{0}: Finished Good Item {1} must be a sub-contracted item,Satır #{0}: Bitmiş Ürün {1} bir alt yüklenici ürünü olmalıdır, +Row #{0}: Finished Good reference is mandatory for Scrap Item {1}.,Satır #{0}: Hurda Ürün {1} için Bitmiş Ürün referansı zorunludur., +Row #{0}: For {1} Clearance date {2} cannot be before Cheque Date {3},"Satır #{0}: {1} için Tahsilat Tarihi {2}, Çek Tarihi {3} olan tarihten önce olamaz.", +"Row #{0}: For {1}, you can select reference document only if account gets credited","Satır #{0}: {1} için, yalnızca hesap alacaklandırılırsa referans belgesini seçebilirsiniz", +"Row #{0}: For {1}, you can select reference document only if account gets debited","Satır #{0}: {1} için, yalnızca hesap alacaklandırılırsa referans belgesini seçebilirsiniz", +Row #{0}: From Date cannot be before To Date,Satır #{0}: Başlangıç Tarihi Bitiş Tarihinden önce olamaz, +Row #{0}: Item {1} does not exist,Satır #{0}: {1} öğesi mevcut değil, +"Row #{0}: Item {1} has been picked, please reserve stock from the Pick List.","Satır #{0}: Ürün {1} toplandı, lütfen Toplama Listesinden stok ayırın.", +Row #{0}: Item {1} is not a service item,Satır #{0}: {1} öğesi bir hizmet kalemi değildir, +Row #{0}: Item {1} is not a stock item,Satır #{0}: {1} bir stok kalemi değildir, +Row #{0}: Only {1} available to reserve for the Item {2},Satır #{0}: Yalnızca {1} Öğesi {2} için rezerve edilebilir, +Row #{0}: Please select Item Code in Assembly Items,Satır #{0}: Lütfen Montaj Öğelerinde Ürün Kodunu seçin, +Row #{0}: Please select the BOM No in Assembly Items,Satır #{0}: Lütfen Montaj Kalemleri için Ürün Ağacı No'yu seçin, +Row #{0}: Please select the Sub Assembly Warehouse,Satır #{0}: Lütfen Alt Montaj Deposunu seçin, +Row #{0}: Please update deferred revenue/expense account in item row or default account in company master,Satır #{0}: Lütfen kalem satırındaki ertelenmiş gelir/gider hesabını veya şirket ana sayfasındaki varsayılan hesabı güncelleyin, +Row #{0}: Qty increased by {1},Satır #{0}: Miktar {1} oranında artırıldı, +Row #{0}: Qty must be a positive number,Satır #{0}: Miktar pozitif bir sayı olmalıdır, +Row #{0}: Qty should be less than or equal to Available Qty to Reserve (Actual Qty - Reserved Qty) {1} for Iem {2} against Batch {3} in Warehouse {4}.,"Satır #{0}: Miktar, {4} deposunda {3} Partisi için {2} ürününe karşı Rezerve Edilebilir Miktar'dan (Gerçek Miktar - Rezerve Edilen Miktar) {1} küçük veya eşit olmalıdır.", +Row #{0}: Quality Inspection is required for Item {1},Satır #{0}: {1} ürünü için Kalite Kontrol gereklidir, +Row #{0}: Quality Inspection {1} is not submitted for the item: {2},Satır #{0}: {1} Kalite Kontrol {2} Ürünü için gönderilmemiş, +Row #{0}: Quality Inspection {1} was rejected for item {2},Satır #{0}: {1} Kalite Kontrolü {2} Ürünü için reddedildi, +Row #{0}: Quantity to reserve for the Item {1} should be greater than 0.,Satır #{0}: {1} Kalemi için rezerve edilecek miktar 0'dan büyük olmalıdır., +Row #{0}: Rate must be same as {1}: {2} ({3} / {4}),Satır #{0}: {1} işlemindeki fiyat ile aynı olmalıdır: {2} ({3} / {4}), +Row #{0}: Received Qty must be equal to Accepted + Rejected Qty for Item {1},"Satır #{0}: Alınan Miktar, {1} Kalemi için Kabul Edilen + Reddedilen Miktara eşit olmalıdır", +Row #{0}: Rejected Qty cannot be set for Scrap Item {1}.,Satır #{0}: Hurda Ürün {1} için Reddedilen Miktar ayarlanamaz., +Row #{0}: Rejected Warehouse is mandatory for the rejected Item {1},"Satır #{0}: Red Deposu, reddedilen {1} Ürünü için zorunludur.", +Row #{0}: Scrap Item Qty cannot be zero,Satır #{0}: Hurda Ürün Miktarı sıfır olamaz, +"Row #{0}: Selling rate for item {1} is lower than its {2}. + Selling {3} should be atleast {4}.

Alternatively, + you can disable selling price validation in {5} to bypass + this validation.","Satır #{0}: {1} öğesi için satış oranı {2} değerinden daha düşük. + Satış {3} en az {4} olmalıdır.

Alternatif olarak, + bu doğrulamayı + atlamak için {5} içinde satış fiyatı doğrulamasını devre dışı bırakabilirsiniz.", +Row #{0}: Serial No {1} for Item {2} is not available in {3} {4} or might be reserved in another {5}.,"Satır #{0}: {2} ürünü için Seri No {1}, {3} {4} için mevcut değil veya başka bir {5} içinde rezerve edilmiş olabilir.", +Row #{0}: Serial No {1} is already selected.,Satır #{0}: Seri No {1} zaten seçilidir., +Row #{0}: Start Time and End Time are required,Satır #{0}: Başlangıç Saati ve Bitiş Saati gereklidir, +Row #{0}: Start Time must be before End Time,Satır #{0}: Başlangıç Zamanı Bitiş Zamanından önce olmalıdır, +Row #{0}: Status is mandatory,Satır #{0}: Durum zorunludur, +Row #{0}: Stock cannot be reserved for Item {1} against a disabled Batch {2}.,"Satır #{0}: Stok, devre dışı bırakılmış bir Parti {2} karşılığında {1} Kalemi için ayrılamaz.", +Row #{0}: Stock cannot be reserved for a non-stock Item {1},"Satır #{0}: Stok, stokta olmayan bir Ürün için rezerve edilemez {1}", +Row #{0}: Stock cannot be reserved in group warehouse {1}.,"Satır #{0}: {1} deposu bir Grup Deposu olduğundan, stok rezerve edilemez.", +Row #{0}: Stock is already reserved for the Item {1}.,Satır #{0}: Stok zaten {1} kalemi için ayrılmıştır., +Row #{0}: Stock is reserved for item {1} in warehouse {2}.,"Satır #{0}: Stok, {2} Deposunda bulunan {1} Ürünü için ayrılmıştır.", +Row #{0}: Stock not available to reserve for Item {1} against Batch {2} in Warehouse {3}.,"Satır #{0}: {3} Deposunda, {2} Partisi için {1} ürününe ayrılacak stok bulunmamaktadır.", +Row #{0}: Stock not available to reserve for the Item {1} in Warehouse {2}.,Satır #{0}: {2} Deposundaki {1} Ürünü için rezerve edilecek stok mevcut değil., +Row #{0}: The warehouse {1} is not a child warehouse of a group warehouse {2},"Satır #{0}: {1} deposu, {2} grup deposunun alt deposu değildir.", +Row #{0}: You cannot use the inventory dimension '{1}' in Stock Reconciliation to modify the quantity or valuation rate. Stock reconciliation with inventory dimensions is intended solely for performing opening entries.,Satır #{0}: Envanter boyutu ‘{1}’ Stok Sayımı miktarı veya değerleme oranını değiştirmek için kullanılamaz. Envanter boyutlarıyla yapılan stok doğrulaması yalnızca açılış kayıtları için kullanılmalıdır., +Row #{0}: You must select an Asset for Item {1}.,Satır #{0}: {1} Öğesi için bir Varlık seçmelisiniz., +Row #{0}: {1} is not a valid reading field. Please refer to the field description.,Satır #{0}: {1} geçerli bir okuma alanı değil. Lütfen alan açıklamasına bakın., +Row #{0}: {1} of {2} should be {3}. Please update the {1} or select a different account.,Satır #{0}: {1}/{2} değeri {3} olmalıdır. Lütfen {1} alanını güncelleyin veya farklı bir hesap seçin., +Row #{1}: Warehouse is mandatory for stock Item {0},Satır #{1}: {0} Stok Ürünü için Depo zorunludur, +Row #{}: Finance Book should not be empty since you're using multiple.,Satır #{}: Birden fazla kullandığınız için Finans Defteri boş olmamalıdır., +Row #{}: Please use a different Finance Book.,Satır #{}: Lütfen farklı bir Finans Defteri kullanın., +Row #{}: The original Invoice {} of return invoice {} is not consolidated.,Satır #{}: İade faturasının {} orijinal Faturası {} birleştirilmemiştir., +Row #{}: item {} has been picked already.,Satır #{}: {} öğesi zaten seçildi., +Row #{}: {} {} doesn't belong to Company {}. Please select valid {}.,"Satır #{}: {} {}, {} Şirketine ait değil. Lütfen geçerli {} seçin.", +Row No {0}: Warehouse is required. Please set a Default Warehouse for Item {1} and Company {2},Satır No {0}: Depo gereklidir. Lütfen {1} ürünü ve {2} Şirketi için Varsayılan Depoyu ayarlayın., +Row Number,Satır Numarası, +Row {0},Satır {0}, +"Row {0} picked quantity is less than the required quantity, additional {1} {2} required.","Satır {0}: Seçilen miktar gereken miktardan daha az, ek olarak {1} {2} gerekli.", +Row {0}# Item {1} cannot be transferred more than {2} against {3} {4},"Satır {0}#: Ürün {1}, {3} {4} kapsamında {2} değerinden fazla aktarılamaz.", +Row {0}# Item {1} not found in 'Raw Materials Supplied' table in {2} {3},"Satır {0}#: Ürün {1}, {2} {3} içindeki ‘Tedarik Edilen Ham Maddeler’ tablosunda bulunamadı.", +Row {0}: Accepted Qty and Rejected Qty can't be zero at the same time.,Satır {0}: Kabul Edilen Miktar ve Reddedilen Miktar aynı anda sıfır olamaz., +Row {0}: Account {1} and Party Type {2} have different account types,Satır {0}: Hesap {1} ve Cari Türü {2} farklı hesap türlerine sahiptir, +Row {0}: Allocated amount {1} must be less than or equal to invoice outstanding amount {2},"Satır {0}: Tahsis edilen tutar {1}, fatura kalan tutarı {2}’den az veya ona eşit olmalıdır", +Row {0}: Allocated amount {1} must be less than or equal to remaining payment amount {2},"Satır {0}: Tahsis edilen tutar {1}, kalan ödeme tutarı {2} değerinden az veya ona eşit olmalıdır.", +"Row {0}: As {1} is enabled, raw materials cannot be added to {2} entry. Use {3} entry to consume raw materials.","Satır {0}: {1} etkin olduğu için, ham maddeler {2} girişine eklenemez. Ham maddeleri tüketmek için {3} girişini kullanın.", +Row {0}: Both Debit and Credit values cannot be zero,Satır {0}: Hem Borç hem de Alacak değerleri sıfır olamaz, +Row {0}: Cost Center {1} does not belong to Company {2},Satır {0}: Maliyet Merkezi {1} {2} şirketine ait değil, +Row {0}: Either Delivery Note Item or Packed Item reference is mandatory.,Satır {0}: Ya İrsaliye Kalemi ya da Paketlenmiş Kalem referansı zorunludur., +Row {0}: Expense Head changed to {1} as no Purchase Receipt is created against Item {2}.,Satır {0}: Ürün {2} için Satın Alma İrsaliyesi oluşturulmadığından Gider Başlığı {1} olarak değiştirildi, +Row {0}: Expense Head changed to {1} because account {2} is not linked to warehouse {3} or it is not the default inventory account,"Satır {0}: {2} hesabı {3} deposu ile bağlantılı değil veya varsayılan stok hesabı değil, bu yüzden Gider Hesabı {1} olarak değiştirildi.", +Row {0}: Expense Head changed to {1} because expense is booked against this account in Purchase Receipt {2},Satır {0}: Gider Başlığı {1} olarak değiştirildi çünkü bu hesaba Satın Alma İrsaliyesi {2} kapsamında gider kaydedildi, +Row {0}: From Warehouse is mandatory for internal transfers,Satır {0}: İç transferler için Gönderen Depo zorunludur., +Row {0}: Item Tax template updated as per validity and rate applied,Satır {0}: Ürün Vergi şablonu geçerliliğe ve uygulanan orana göre güncellendi, +Row {0}: Item rate has been updated as per valuation rate since its an internal stock transfer,"Satır {0}: Ürün oranı, dahili bir stok transferi olduğu için değerleme oranına göre güncellenmiştir", +Row {0}: Item {1} must be a stock item.,Satır {0}: {1} öğesi bir Stok Ürünü olmalıdır., +Row {0}: Item {1} must be a subcontracted item.,Satır {0}: Ürün {1} bir alt yüklenici kalemi olmalıdır., +Row {0}: Item {1}'s quantity cannot be higher than the available quantity.,Satır {0}: Öğe {1} miktarı mevcut miktardan daha fazla olamaz., +Row {0}: Packed Qty must be equal to {1} Qty.,Satır {0}: Paketlenen Miktar {1} Miktarına eşit olmalıdır., +Row {0}: Packing Slip is already created for Item {1}.,Satır {0}: {1} Kalemi için Paketleme Fişi zaten oluşturulmuştur., +Row {0}: Payment Term is mandatory,Satır {0}: Ödeme Vadesi zorunludur, +Row {0}: Please provide a valid Delivery Note Item or Packed Item reference.,Satır {0}: Lütfen geçerli bir İrsaliye Kalemi veya Paketlenmiş Ürün referansı sağlayın., +Row {0}: Please select a BOM for Item {1}.,Satır {0}: Lütfen {1} Ürünü için bir Ürün Ağacı seçin., +Row {0}: Please select an active BOM for Item {1}.,Satır {0}: Lütfen {1} Ürünü için bir Aktif Ürün Ağacı seçin., +Row {0}: Please select an valid BOM for Item {1}.,Satır {0}: Lütfen {1} Ürünü için bir Aktif Ürün Ağacı seçin., +Row {0}: Project must be same as the one set in the Timesheet: {1}.,"Satır {0}: Proje, Zaman Çizelgesi'nde ayarlanan proje ile aynı olmalıdır: {1}.", +Row {0}: Purchase Invoice {1} has no stock impact.,Satır {0}: {1} Alış Faturasının stok etkisi yoktur., +Row {0}: Qty cannot be greater than {1} for the Item {2}.,"Satır {0}: Miktar, {2} Kalemi için {1} değerinden büyük olamaz.", +Row {0}: Qty in Stock UOM can not be zero.,Satır {0}: Stoktaki Miktar Ölçü Birimi sıfır olamaz., +Row {0}: Qty must be greater than 0.,Satır {0}: Miktar Sıfırdan büyük olmalıdır., +Row {0}: Quantity cannot be negative.,Satır {0}: Miktar negatif olamaz., +Row {0}: Shift cannot be changed since the depreciation has already been processed,Satır {0}: Amortisman zaten işlenmiş olduğundan vardiya değiştirilemez, +Row {0}: Target Warehouse is mandatory for internal transfers,Satır {0}: İç transferler için Hedef Depo zorunludur., +"Row {0}: To set {1} periodicity, difference between from and to date must be greater than or equal to {2}",Satır {0}: {1} periyodunu ayarlamak için başlangıç ve bitiş tarihleri arasındaki fark {2} değerinden büyük veya eşit olmalıdır., +Row {0}: Total Number of Depreciations cannot be less than or equal to Opening Number of Booked Depreciations,"Satır {0}: Toplam Amortisman Sayısı, Kayıtlı Amortismanların Açılış Sayısından az veya eşit olamaz", +Row {0}: Workstation or Workstation Type is mandatory for an operation {1},Satır {0}: Bir Operasyon için İş İstasyonu veya İş İstasyonu Türü zorunludur {1}, +Row {0}: {1} account already applied for Accounting Dimension {2},Satır {0}: {1} hesabı zaten Muhasebe Boyutu {2} için başvurdu, +Row {0}: {2} Item {1} does not exist in {2} {3},Satır {0}: {2} Öğe {1} {2} {3} içinde mevcut değil, +Rows: {0} have 'Payment Entry' as reference_type. This should not be set manually.,Satırlar: {0} referans_türü olarak 'Ödeme Girişi'ne sahiptir. Bu manuel olarak ayarlanmamalıdır., +Rows: {0} in {1} section are Invalid. Reference Name should point to a valid Payment Entry or Journal Entry.,Satırlar: {0} {1} bölümünde Geçersiz. Referans Adı geçerli bir Ödeme Kaydına veya Yevmiye Kaydına işaret etmelidir., +Run parallel job cards in a workstation,Bir iş istasyonunda aynı anda yürütülecek iş kartı sayısı, +Running,Çalışıyor, +SLA Fulfilled On Status,SLA Gerçekleştirildi Durumu, +SLA will be applied if {1} is set as {2}{3},"{1} , {2}{3} olarak ayarlanırsa SLA uygulanacaktır.", +SLA will be applied on every {0},SLA her {0} adresinde uygulanacaktır., +SMS Settings,SMS Ayarları, +SO Total Qty,Sipariş Toplam Miktar, +Sales Incoming Rate,Satış Gelen Oranı, +Sales Invoice {0} must be deleted before cancelling this Sales Order,Bu Satış Siparişini iptal etmeden önce Satış Faturası {0} iptal edilmeli veya silinmelidir, +Sales Order Packed Item,Satış Siparişi Paketlenmiş Ürün, +"Sales Order {0} already exists against Customer's Purchase Order {1}. To allow multiple Sales Orders, Enable {2} in {3}",Satış Siparişi {0} Müşterinin Satın Alma Siparişi {1} ile zaten mevcut. Birden fazla Satış Siparişine izin vermek için {2} adresini {3} adresinde etkinleştirin, +Sales Partner ,Satış Partneri , +Sales Partner Item,Satış Siparişi Ürünü, +Sales Person {0} is disabled.,Satış Personeli {0} devre dışı bırakıldı., +Salvage Value Percentage,Hurda Değeri Yüzdesi, +Same item and warehouse combination already entered.,Aynı Ürün ve Depo kombinasyonu zaten girilmiş., +Savings,Tasarruflar, +Scan Batch No,Parti Numarasını Tara, +Scan Serial No,Seri Numarasını Tara, +Scan barcode for item {0},Ürün için barkod tarama {0}, +"Scan mode enabled, existing quantity will not be fetched.","Tarama modu etkin, mevcut miktar getirilmeyecek.", +Scanned Quantity,Taranan Miktar, +Scheduled Time Logs,Planlanmış Zaman Kayıtları, +Scheduler is Inactive. Can't trigger job now.,Zamanlayıcı Etkin Değil. İş şu anda tetiklenemiyor., +Scheduler is Inactive. Can't trigger jobs now.,Zamanlayıcı Etkin Değil. Şimdi işler tetiklenemiyor., +Scheduler is inactive. Cannot enqueue job.,Zamanlayıcı etkin değil. İşi sıraya alamaz., +Scheduler is inactive. Cannot merge accounts.,Zamanlayıcı etkin değil. Hesaplar birleştirilemiyor., +Scheduling,Zamanlama, +"Scorecard variables can be used, as well as: +{total_score} (the total score from that period), +{period_number} (the number of periods to present day) +","Puan kartı değişkenleri şu şekilde de kullanılabilir: +{total_score} (o dönemdeki toplam puan), +{period_number} (bugüne kadarki dönem sayısı) +", +Scrap Asset,Varlığı Hurdaya Ayır, +Scrap Cost Per Qty,Miktar Başına Hurda Maliyeti, +"Search by item code, serial number or barcode","Ürün kodu, seri numarası veya barkoda göre arama", +Secondary Party,İkincil Parti, +Secondary Role,İkincil Rol, +Section,Bölüm, +Segregate Serial / Batch Bundle,Seri / Parti Paketini Ayır, +Select Accounting Dimension.,Muhasebe Boyutunu seçin., +Select Alternative Items for Sales Order,Satış Siparişi için Alternatif Ürünleri Seçin, +Select Batch No,Parti No Seçin, +Select Columns and Filters,Sütunları ve Filtreleri Seçin, +Select Corrective Operation,Düzeltici Faaliyet Seçimi, +Select Date of Birth. This will validate Employees age and prevent hiring of under-age staff.,"Doğum Tarihini Seçin. Bu, Çalışanların yaşını doğrulayacak ve reşit olmayan personelin işe alınmasını önleyecektir.", +"Select Date of joining. It will have impact on the first salary calculation, Leave allocation on pro-rata bases.","İşe başlama tarihini seçin. Bu, ilk maaş hesaplaması ve izin tahsisi üzerinde orantılı bir etkiye sahip olacaktır.", +Select Dimension,Boyut Seçin, +Select Finished Good,Bitmiş Ürünü Seçin, +Select Items for Quality Inspection,Kalite Kontrolü için Ürün Seçimi, +Select Serial No,Seri No Seçin, +Select Serial and Batch,Seri ve Parti Seçin, +Select Time,Zaman Seçin, +Select Vouchers to Match,Eşleşecek Kuponları Seçin, +Select Warehouses to get Stock for Materials Planning,Malzeme Planlaması için Stok Alınacak Depoları Seçin, +Select a Company this Employee belongs to.,Bu Personelin ait olduğu bir Şirket seçin., +Select a Customer,Müşteri Seçin, +Select an Item Group.,Bir Ürün Grubu seçin., +Select an invoice to load summary data,Özet verileri yüklemek için bir fatura seçin, +Select an item from each set to be used in the Sales Order.,Satış Siparişinde kullanılmak üzere her setten bir ürün seçin., +Select the Default Workstation where the Operation will be performed. This will be fetched in BOMs and Work Orders.,İşlemin gerçekleştirileceği Varsayılan İş İstasyonunu seçin. Ürün Ağaçları ve İş Emirlerinde geçerli olacaktır., +Select the Item to be manufactured.,Üretilecek Ürünleri Seçin., +"Select the Item to be manufactured. The Item name, UoM, Company, and Currency will be fetched automatically.","Üretilecek Ürünü seçin. Ürün adı, Ölçü Birimi, Şirket ve Para Birimi otomatik olarak alınacaktır.", +Select the Warehouse,Depoyu Seçin, +Select the date and your timezone,Tarihi ve saat diliminizi seçin, +Select the raw materials (Items) required to manufacture the Item,Ürünü üretmek için gerekli ham maddeleri seçin, +"Select whether to get items from a Sales Order or a Material Request. For now select Sales Order. + A Production Plan can also be created manually where you can select the Items to manufacture.","Ürünlerin Satış Siparişinden mi yoksa Malzeme Talebinden mi alınacağını seçin. Şimdilik Satış Siparişi'ni seçin. + Üretilecek Ürünleri seçebileceğiniz bir Üretim Planını kendiniz de oluşturulabilirsiniz.", +Select your weekly off day,Haftalık izin gününüzü seçin, +Selected Vouchers,Seçilmiş Faturalar, +Selected date is,Seçilen Tarih, +Selected document must be in submitted state,Seçilen belgenin gönderilmiş durumda olması gerekir, +Self delivery,Kendi kendine teslimat, +Sell Asset,Varlığı Sat, +Send Attached Files,Ekli Dosyaları Gönder, +Send Document Print,Belgeyi Yazıcıya Gönder, +Send Emails,E-Posta Gönder, +Sending...,Gönderiyor..., +Sequential,Ardışık Sıralı, +Serial / Batch Bundle,Seri ve Parti Paketi, +Serial / Batch Bundle Missing,Seri / Toplu Paket Eksik, +Serial / Batch No,Seri / Parti No, +Serial / Batch Nos,Seri ve Parti Numaraları, +Serial No Ledger,Seri No Kayıtları, +Serial No Range,Seri No Aralığı, +Serial No and Batch Selector cannot be use when Use Serial / Batch Fields is enabled.,Seri / Parti Alanlarını Kullan etkinleştirildiğinde Seri No ve Parti Seçici kullanılamaz., +Serial No and Batch for Finished Good,Bitmiş Ürün İçin Seri No ve Parti No, +Serial No is mandatory,Seri No zorunludur, +Serial No {0} already exists,Seri No {0} zaten mevcut, +Serial No {0} already scanned,Seri No {0} zaten tarandı, +Serial No {0} does not exists,Seri No {0} mevcut değil, +Serial No {0} is already added,Seri No {0} zaten eklendi, +"Serial No {0} is not present in the {1} {2}, hence you can't return it against the {1} {2}","Seri No {0} {1} {2} içinde mevcut değildir, bu nedenle {1} {2} adına iade edemezsiniz", +Serial Nos,Seri Numaraları, +Serial Nos / Batch Nos,Seri / Parti Numaraları, +Serial Nos are created successfully,Seri Numaraları başarıyla oluşturuldu, +"Serial Nos are reserved in Stock Reservation Entries, you need to unreserve them before proceeding.","Seri Numaraları Stok Rezervasyon Girişlerinde rezerve edilmiştir, devam etmeden önce rezervasyonlarını kaldırmanız gerekmektedir.", +Serial and Batch,Seri No ve Parti, +Serial and Batch Bundle created,Seri ve Toplu Paket oluşturuldu, +Serial and Batch Bundle updated,Seri ve Toplu Paket güncellendi, +Serial and Batch Bundle {0} is already used in {1} {2}.,Seri ve Toplu Paket {0} zaten {1} {2} adresinde kullanılmaktadır., +Serial and Batch Details,Seri ve Parti Detayları, +Serial and Batch Entry,Seri ve Parti Girişi, +Serial and Batch No,Seri ve Parti No, +Serial and Batch Nos,Seri ve Parti Numaraları, +Serial and Batch Nos will be auto-reserved based on Pick Serial / Batch Based On,"Seri ve Parti Numaraları, Seri/Parti Seçimine Göre otomatik olarak rezerve edilecektir", +Serial and Batch Reservation,Seri No ve Parti Rezervasyonu, +Serial and Batch Summary,Seri ve Parti Özeti, +Service Cost Per Qty,Adet Başına Hizmet Maliyeti, +Service Expense Total Amount,Hizmet Giderleri Toplam Tutar, +Service Expenses,Hizmet Giderleri, +Service Item,Hizmet Kalemi, +Service Item Qty,Hizmet Kalemi Miktarı, +Service Item Qty / Finished Good Qty,Hizmet Ürünü / Bitmiş Ürün Miktarı, +Service Item UOM,Hizmet Kalemi Ölçü Birimi, +Service Item {0} is disabled.,Hizmet Ürünü {0} devre dışı bırakıldı., +Service Item {0} must be a non-stock item.,Hizmet Kalemi {0} stok olarak işaretlenmemiş bir kalem olmalıdır., +Service Items,Hizmet Kalemleri, +Service Level Agreement for {0} {1} already exists.,{0} {1} için Hizmet Seviyesi Anlaşması zaten mevcut., +Service Provider,Hizmet Sağlayıcı, +Set Default Supplier,Varsayılan Tedarikçi, +Set From Warehouse,Kaynak Depo, +Set Landed Cost Based on Purchase Invoice Rate,Alış Faturası Fiyatına Göre İndirgenmiş Maliyeti Belirle, +Set Loyalty Program,Sadakat Programı Ayarla, +Set Operating Cost / Scrap Items From Sub-assemblies,Alt Montajlardan Üretim Maliyetini / Hurda Ürünlerini Ayarla, +Set Parent Row No in Items Table,Ürünler Tablosunda Üst Satır Numarasını Ayarla, +Set Process Loss Item Quantity,Süreç Kaybı Kalem Miktarını Ayarla, +Set Project Status,Proje Durumunu Ayarla, +Set Quantity,Miktarı Ayarla, +Set Response Time for Priority {0} in row {1}.,{1} satırında {0} Önceliği için Yanıt Süresini ayarlayın., +Set Valuation Rate Based on Source Warehouse,Değerleme Oranını Kaynak Depoya Göre Ayarla, +Set Warehouse,Hedef Depo, +Set default {0} account for non stock items,Stokta olmayan ürünler için varsayılan {0} hesabını ayarlayın, +Set fieldname from which you want to fetch the data from the parent form.,Üst formdan veri almak istediğiniz alanı ayarlayın., +Set quantity of process loss item:,İşlem kaybı kaleminin miktarını ayarlayın:, +Set the Planned Start Date (an Estimated Date at which you want the Production to begin),Planlanan Başlangıç Tarihini belirleyin, +Set the status manually.,Durumu manuel olarak ayarlayın., +Set {0} in asset category {1} for company {2},Şirket {2} için {1} varlık kategorisinde {0} değerini ayarlayın, +Sets 'Accepted Warehouse' in each row of the Items table.,Ürünler tablosunun her satırında Hedef Depoyu ayarlar., +Sets 'Rejected Warehouse' in each row of the Items table.,Ürünler tablosunun her satırında Red Deposunu ayarlar., +Sets 'Reserve Warehouse' in each row of the Supplied Items table.,Ürünler tablosunun her satırında Rezerv Deposunu ayarlar., +Setting Item Locations...,Ürün Konumları Ayarlanıyor..., +Setting {} is required,{} Ayarı Gerekli, +Setup your organization,Kuruluşunuzu Ayarlayın, +Shelf Life in Days,Raf Ömrü, +Shift Factor,Vardiya Faktörü, +Shift Name,Vardiya Adı, +Shipment,Sevkiyat, +Shipment Amount,Nakliye Tutarı, +Shipment Delivery Note,Sevkiyat Teslimat Notu, +Shipment ID,Gönderi Kimliği, +Shipment Information,Sevkiyat Bilgileri, +Shipment Parcel,Sevkiyat Paketi, +Shipment Parcel Template,Sevkiyat Parsel Şablonu, +Shipment Type,Sevkiyat Türü, +Shipment details,Sevkiyat detayları, +Shipping Address Details,Gönderim Adresi Ayrıntıları, +Show Aggregate Value from Subsidiary Companies,Bağlı Şirketlerden Gelen Toplam Değeri Göster, +Show Dimension Wise Stock,Ölçüsel Bazda Stoklar, +Show Disabled Warehouses,Kapalı Depolarını Göster, +Show Failed Logs,Başarısız Kayıtları Göster, +Show GL Balance,Genel Muhasebe Bakiyesini Göster, +Show Item Name,Ürün Adını Göster, +Show Ledger View,Defter Görünümü, +Show Pay Button in Purchase Order Portal,Satın Alma Siparişi Portalında Ödeme Butonunu Göster, +Show Preview,Önizlemeyi Göster, +Show only the Immediate Upcoming Term,Yalnızca Hemen Yaklaşan Dönemi Göster, +Show pending entries,Bekleyen girişleri göster, +Show with upcoming revenue/expense,Yaklaşan gelir/gider ile göster, +"Simple Python Expression, Example: doc.status == 'Open' and doc.issue_type == 'Bug'","Basit Python İfadesi, Örnek: doc.status == 'Open' ve doc.issue_type == 'Bug'", +"Simple Python formula applied on Reading fields.
Numeric eg. 1: reading_1 > 0.2 and reading_1 < 0.5
+Numeric eg. 2: mean > 3.5 (mean of populated fields)
+Value based eg.: reading_value in (""A"", ""B"", ""C"")","Okuma alanlarına uygulanan basit Python formülü.
Sayısal örn. 1: reading_1 > 0.2 ve reading_1 < 0.5
+Sayısal örn. 2: mean > 3.5 (doldurulan alanların ortalaması)
+Değer tabanlı örn.: reading_value in (""A"", ""B"", ""C"")", +Simultaneous,Eşzamanlı, +Skipped,Atlandı, +Skipping Tax Withholding Category {0} as there is no associated account set for Company {1} in it.,Şirket {1} için ayarlanmış ilişkili bir hesap olmadığından Vergi Stopajı Kategorisi {0} atlanıyor., +"Skipping {0} of {1}, {2}","Atlanıyor {0}/{1}, {2}", +Sold by,Tarafından satılan, +Something went wrong please try again,Bir şeyler ters gitti lütfen tekrar deneyin, +Source Exchange Rate,Referans Döviz Kuru, +Source Fieldname,Kaynak Alanı Adı, +Source Warehouse Address Link,Kaynak Depo Adres Bağlantısı, +South Africa VAT Account,Güney Afrika KDV Hesabı, +South Africa VAT Settings,Güney Afrika KDV Ayarları, +Spacer,Boşluk, +Split Asset,Varlığı Böl, +Split From,Bölünmüş, +Split Qty,Bölünmüş Miktar, +Split qty cannot be grater than or equal to asset qty,"Bölünen miktar, varlık miktarından büyük veya eşit olamaz", +Splitting {0} {1} into {2} rows as per Payment Terms,Ödeme Koşullarına göre {0} {1} satırlarını {2} satırlarına bölme, +Stale Days should start from 1.,Eski Günler 1’den başlamalıdır., +Standard Description,Standart Açıklama, +Standard Rated Expenses,Standart Oranlı Giderler, +"Standard Terms and Conditions that can be added to Sales and Purchases. Examples: Validity of the offer, Payment Terms, Safety and Usage, etc.","Satış ve Satın Almalara eklenebilecek Standart Şartlar ve Koşullar. Örnekler: Teklifin geçerliliği, Ödeme Koşulları, Müşteri İstekleri ve Kullanım vb.", +Standard rated supplies in {0},{0}'da standart dereceli tedarikler, +"Standard tax template that can be applied to all Purchase Transactions. This template can contain a list of tax heads and also other expense heads like ""Shipping"", ""Insurance"", ""Handling"", etc.","Tüm Satın Alma İşlemlerine uygulanabilen standart vergi şablonu. Bu şablon, vergi başlıklarının bir listesini ve ayrıca ""Nakliye"", ""Sigorta"", ""Taşıma"" vb. gibi diğer gider başlıklarını içerebilir.", +"Standard tax template that can be applied to all Sales Transactions. This template can contain a list of tax heads and also other expense/income heads like ""Shipping"", ""Insurance"", ""Handling"" etc.","Tüm Satış İşlemlerine uygulanabilen standart vergi şablonu. Bu şablon, vergi başlıklarının bir listesini ve ayrıca ""Nakliye"", ""Sigorta"", ""Taşıma"" vb. gibi diğer gider/gelir başlıklarını içerebilir.", +Start / Resume,Başlat / Durdur, +Start Date should be lower than End Date,Başlangıç Tarihi Bitiş Tarihinden düşük olmalıdır, +Start Deletion,Silme İşlemini Başlat, +Start Import,İçe Aktarmayı Başlat, +Start Job,İşi Başlat, +Start Merge,Birleştirmeyi Başlat, +Start Reposting,Yeniden Göndermeye Başla, +Start Time can't be greater than or equal to End Time for {0}.,{0} için Başlangıç Saati Bitiş Saatinden büyük veya eşit olamaz., +Started a background job to create {1} {0},{1} {0} oluşturmak için bir arka plan işi başlatıldı, +Status Illustration,Durum Görseli, +Status set to rejected as there are one or more rejected readings.,Bir veya daha fazla reddedilen okuma olduğundan durum reddedildi olarak ayarlandı., +Stock Consumed During Repair,Onarım Sırasında Tüketilen Stok, +Stock Consumption Details,Stok Tüketim Detayları, +Stock Entries already created for Work Order {0}: {1},Stok Girişleri İş Emri için zaten oluşturuldu {0}: {1}, +Stock Ledger Invariant Check,Stok Defteri Değişmez Kontrolü, +Stock Ledger Variance,Stok Defteri Varyansı, +Stock Reposting Settings,Stok Yeniden Gönderim Ayarları, +Stock Reservation,Stok Rezervasyonu, +Stock Reservation Entries Cancelled,Stok Rezervasyon Girişleri İptal Edildi, +Stock Reservation Entries Created,Stok Rezervasyon Girişleri Oluşturuldu, +Stock Reservation Entry cannot be updated as it has been delivered.,Stok Rezervasyon Girişi teslim edildiği için güncellenemiyor., +"Stock Reservation Entry created against a Pick List cannot be updated. If you need to make changes, we recommend canceling the existing entry and creating a new one.","Bir Seçim Listesi için oluşturulan Stok Rezervi Girişi güncellenemez. Değişiklik yapmanız gerekiyorsa, mevcut girişi iptal etmenizi ve yeni bir giriş oluşturmanızı öneririz. +", +Stock Reservation Warehouse Mismatch,Rezerv Stok Depo Uyuşmazlığı, +Stock Reservation can only be created against {0}.,Stok Rezervasyonu yalnızca {0} karşılığında oluşturulabilir., +Stock Reserved Qty (in Stock UOM),Stok Rezerv Miktarı (Stok Ölçü Birimi), +Stock UOM Quantity,Stok Birimi Miktarı, +Stock and Manufacturing,Stok ve Üretim, +Stock cannot be reserved in group warehouse {0}.,{0} Grup Deposunda Stok Rezerve edilemez., +Stock cannot be reserved in the group warehouse {0}.,{0} Grup Deposunda Stok Rezerve edilemez., +Stock not available for Item {0} in Warehouse {1}.,{1} Deposunda {0} Ürünü için stok mevcut değil., +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2} {3}.,{0} koduna sahip Ürün için {1} Deposundaki stok miktarı yetersiz. Mevcut miktar {2} {3}., +Stock will be reserved on submission of Purchase Receipt created against Material Request for Sales Order.,Satış Siparişi için oluşturulan Malzeme Talebine karşı oluşturulan Satın Alma İrsaliyesi onaylandığında stok rezerve edilecektir., +Stock/Accounts can not be frozen as processing of backdated entries is going on. Please try again later.,Stok/Hesaplar dondurulamaz çünkü geriye dönük girişlerin işlenmesi devam ediyor. Lütfen daha sonra tekrar deneyin., +Sub Assemblies & Raw Materials,Alt Montajlar ve Hammaddeler, +Sub Assembly Item,Alt Montaj Öğesi, +Sub Operation,Alt Operasyon, +Subcontract BOM,Alt Yüklenici Ürün Ağacı, +Subcontract Order,Alt Yüklenici Siparişi, +Subcontract Order Summary,Alt Yüklenici Sipariş Özeti, +Subcontract Return,Alt Yüklenici İadesi, +Subcontracted Quantity,Alt Yükleniciye Gönderilen Miktar, +Subcontracting BOM,Alt Yüklenici Ürün Ağacı, +Subcontracting Order Item,Alt Yüklenici Sipariş Kalemi, +Subcontracting Order Service Item,Alt Yüklenici Sipariş Kalemi, +Subcontracting Order Supplied Item,Alt Yüklenici Siparişi Tedarik Edilen Ürün, +Subcontracting Order {0} created.,Alt Sözleşme Siparişi {0} oluşturuldu., +Subcontracting Purchase Order,Alt Yüklenici Siparişi, +Subcontracting Receipt Item,Alt Yüklenici İrsaliye Kalemi, +Subcontracting Receipt Supplied Item,Alt Yüklenici Tedarik Edilen Ürün İrsaliyesi, +Subdivision,Alt Bölüm, +Submit Action Failed,Gönderim Eylemi Başarısız Oldu, +Submit After Import,İçe Aktardıktan Sonra Gönder, +Submit Generated Invoices,Oluşturulan Faturaları Gönder, +Subscription for Future dates cannot be processed.,İleri tarihler için abonelik işlemi yapılamaz., +Succeeded,Başarılı, +Succeeded Entries,Girişler Başarılı, +"Successfully changed Stock UOM, please redefine conversion factors for new UOM.","Stok Ölçü Birimi başarıyla değiştirildi, lütfen yeni Ölçü Birimi için dönüşüm faktörlerini yeniden tanımlayın.", +Successfully imported {0},{0} başarıyla içe aktarıldı, +"Successfully imported {0} record out of {1}. Click on Export Errored Rows, fix the errors and import again.","Toplam {1} kayıttan {0} tanesi başarıyla içe aktarıldı. Hatalı Satırları Dışa Aktar'a tıklayın, hataları düzeltin ve tekrar içe aktarın.", +Successfully imported {0} record.,{0} kayıt başarıyla içe aktarıldı., +"Successfully imported {0} records out of {1}. Click on Export Errored Rows, fix the errors and import again.","Toplam {1} kayıttan {0} tanesi başarıyla içe aktarıldı. Hatalı Satırları Dışa Aktar'a tıklayın, hataları düzeltin ve tekrar içe aktarın.", +Successfully imported {0} records.,{0} kayıtları başarıyla içe aktarıldı., +Successfully linked to Customer,Müşteriye başarıyla bağlandı, +Successfully linked to Supplier,Tedarikçiye başarıyla bağlandı, +Successfully merged {0} out of {1}.,{0} ile {1} başarılı bir şekilde birleştirildi., +Successfully updated {0},{0} Başarıyla Güncellendi, +"Successfully updated {0} record out of {1}. Click on Export Errored Rows, fix the errors and import again.","{1} kaydından {0} kayıt başarıyla güncellendi. Hatalı Satırları Dışa Aktar'a tıklayın, hataları düzeltin ve tekrar içe aktarın.", +Successfully updated {0} record.,{0} kaydı başarıyla güncellendi., +"Successfully updated {0} records out of {1}. Click on Export Errored Rows, fix the errors and import again.","Toplam {1} kayıttan {0} tanesi başarıyla içe aktarıldı. Hatalı Satırları Dışa Aktar'a tıklayın, hataları düzeltin ve tekrar içe aktarın.", +Successfully updated {0} records.,{0} kayıt başarıyla güncellendi., +Sum of Repair Cost and Value of Consumed Stock Items.,Onarım Maliyeti ve Tüketilen Stokların Değeri Toplamı., +Supplied Item,Tedarik Edilen Ürün, +Supplier Address Details,Adres, +Supplier Group Item,Tedarikçi Grup Öğesi, +Supplier Info,Tedarikçi Bilgileri, +Supplier Item,Tedarikçi Ürünü, +Supplier Portal Users,Tedarikçi Portal Kullanıcıları, +Supplier Warehouse mandatory for sub-contracted {0},Alt Yüklecini firmalar için Tedarikçi Deposu zorunludur {0}, +Supplies subject to the reverse charge provision,Ters tahsilat hükmüne tabi tedarikler, +Sync Now,Şimdi Senkronize Et, +Sync Started,Senkronizasyon Başladı, +System Settings,Sistem Ayarları, +System will not check over billing since amount for Item {0} in {1} is zero,"{1} içinde {0} ürünü için tutar sıfır olduğundan, sistem fazla faturalandırmayı kontrol etmeyecek.", +TCS Amount,Kaynakta Tahsil Edilen Vergi Tutarı, +TCS Rate %,Vergi Oranı %, +TDS Amount,Stopaj Vergisi Tutarı, +TDS Deducted,Kesilen Stopaj Vergisi, +TDS Payable,Ödenecek Stopaj Vergisi, +Target Asset,Hedef Varlık, +Target Asset Location,Varlık Hedef Konumu, +Target Asset {0} cannot be cancelled,Hedef Varlık {0} iptal edilemez, +Target Asset {0} cannot be submitted,Hedef Varlık {0} kaydedilemiyor, +Target Asset {0} cannot be {1},Hedef Varlık {0} için {1} işlemi gerçekleştirilemez, +Target Asset {0} does not belong to company {1},Hedef Varlık {0} {1} şirketine ait değil, +Target Asset {0} needs to be composite asset,Hedef Varlık {0} bileşik varlık olmalıdır, +Target Batch No,Hedef Parti No, +Target Exchange Rate,Hedef Döviz Kuru, +Target Fieldname (Stock Ledger Entry),Hedef Alan Adı (Stok Defteri Girişi), +Target Fixed Asset Account,Hedef Sabit Varlık Hesabı, +Target Has Batch No,Hedef Parti No'ya Sahip, +Target Has Serial No,Hedef Seri No, +Target Incoming Rate,Satış Hedef Oranı, +Target Is Fixed Asset,Hedef Bir Sabit Varlıktır, +Target Item Code,Hedef Ürün Kodu, +Target Item Name,Hedef Ürün Adı, +Target Item {0} must be a Fixed Asset item,Hedef {0} bir Sabit Varlık kalemi olmalıdır, +Target Qty must be a positive number,Hedef Miktar pozitif bir sayı olmalıdır, +Target Serial No,Hedef Seri No, +Target Warehouse Address Link,Hedef Depo Adres Bağlantısı, +Target Warehouse is set for some items but the customer is not an internal customer.,Bazı ürünler için Hedef Depo ayarlanmış ancak Müşteri İç Müşteri değil., +Task Assignee Email,Görev Atanan Kişinin E-postası, +Task {0} depends on Task {1}. Please add Task {1} to the Tasks list.,{0} görevi {1} görevine bağlıdır. Lütfen Görev {1} 'u Görevler listesine ekleyin., +Tax Amount,Vergi Tutarı, +Tax Refunds provided to Tourists under the Tax Refunds for Tourists Scheme,Turistler için Vergi İadesi Programı kapsamında Turistlere sağlanan Vergi İadeleri, +Tax Withheld Vouchers,Tevkifatlı Vergi Makbuzları, +Tax Withholding,Vergi Stopajı, +Tax Withholding Category {} against Company {} for Customer {} should have Cumulative Threshold value.,Vergi Stopajı Kategorisi {0} için Müşteri {2} adına Şirket {1} ile ilişkili olarak Kümülatif Eşik değeri bulunmalıdır., +Tax Withholding Details,Vergi Stopajı Detayları, +Tax Withholding Net Total,Vergi Stopajı Net Toplam, +"Tax detail table fetched from item master as a string and stored in this field. +Used for Taxes and Charges","Vergi ayrıntı tablosu, öğe ana verisinden bir dize olarak alınır ve bu alanda saklanır. +Vergiler ve Ücretler için kullanılır", +Tax will be withheld only for amount exceeding the cumulative threshold,Vergi sadece kümülatif eşiği aşan tutar için kesilecektir, +Taxes row #{0}: {1} cannot be smaller than {2},Vergi Satırı #{0}: {1} değeri {2} değerinden küçük olamaz, +Telephony Call Type,Telefon Çağrı Türü, +Template Item Selected,Şablon Öğesi Seçildi, +Template Options,Şablon Seçenekleri, +Template Task,Şablon Görevi, +Template Warnings,Şablon Uyarıları, +Territory Item,Bölge Öğesi, +The Condition '{0}' is invalid,'{0}' Koşulu geçersizdir, +The Document Type {0} must have a Status field to configure Service Level Agreement,Hizmet Seviyesi Anlaşmasını (SLA) yapılandırmak için {0} Belge Türünün bir Durum alanına sahip olması gerekir., +"The GL Entries and closing balances will be processed in the background, it can take a few minutes.","Genel Muhasebe Girişleri ve kapanış bakiyeleri arka planda işlenecek, bu işlem birkaç dakika sürebilir.", +"The GL Entries will be cancelled in the background, it can take a few minutes.","Genel Muhasebe Girişleri arka planda iptal edilecektir, bu işlem birkaç dakika sürebilir.", +"The Payment Request {0} is already paid, cannot process payment twice","Ödeme Talebi {0} zaten tamamlandı, ödemeyi iki kez işleme koyamazsınız.", +"The Pick List having Stock Reservation Entries cannot be updated. If you need to make changes, we recommend canceling the existing Stock Reservation Entries before updating the Pick List.","Stok Rezervasyon Girişleri olan Seçim Listesi güncellenemez. Değişiklik yapmanız gerekiyorsa, Seçim Listesini güncellemeden önce mevcut Stok Rezervasyon Girişlerini iptal etmenizi öneririz.", +The Process Loss Qty has reset as per job cards Process Loss Qty,"Proses Kaybı Miktarı, iş kartlarındaki Proses Kaybı Miktarına göre sıfırlandı.", +The Serial No at Row #{0}: {1} is not available in warehouse {2}.,"Satır #{0}: {1} Seri Numarası, {2} deposunda mevcut değil.", +The Serial and Batch Bundle {0} is not valid for this transaction. The 'Type of Transaction' should be 'Outward' instead of 'Inward' in Serial and Batch Bundle {0},"Seri ve Parti Paketi {0}, bu işlem için geçerli değil. Seri ve Parti Paketi {0} içinde ‘İşlem Türü’ ‘Giriş’ yerine ‘Çıkış’ olmalıdır.", +The Work Order is mandatory for Disassembly Order,Sökme Emri için İş Emri zorunludur, +The allocated amount is greater than the outstanding amount of Payment Request {0},"Tahsis edilen tutar, Ödeme Talebi {0} kalan tutarından büyük.", +The currency of invoice {} ({}) is different from the currency of this dunning ({}).,Faturanın para birimi {} ({}) bu ihtarnamenin para biriminden ({}) farklıdır., +The default BOM for that item will be fetched by the system. You can also change the BOM.,Bu kalem için varsayılan Ürün Ağacı sistem tarafından getirilecektir. Ürün Ağacını da değiştirebilirsiniz., +The field {0} in row {1} is not set,{1} satırındaki {0} alanı ayarlanmamış, +The following assets have failed to automatically post depreciation entries: {0},Aşağıdaki varlıklar amortisman girişlerini otomatik olarak kaydedemedi: {0}, +The following invalid Pricing Rules are deleted:,Aşağıdaki geçersiz Fiyatlandırma Kuralları silindi:, +The items {0} and {1} are present in the following {2} :,"Ürünler {0} ve {1}, aşağıdaki {2} içinde bulunmaktadır:", +The operation {0} can not add multiple times,{0} işlemi birden fazla eklenemez, +The operation {0} can not be the sub operation,{0} işlemi alt işlem olamaz, +The original invoice should be consolidated before or along with the return invoice.,"Orijinal fatura, iade faturasından önce veya iade faturasıyla birlikte birleştirilmelidir.", +The percentage you are allowed to pick more items in the pick list than the ordered quantity.,Sipariş edilen miktardan daha fazla ürünü toplama listesinden seçmenize izin verilen yüzde., +The reserved stock will be released when you update items. Are you certain you wish to proceed?,"Rezerv stok, öğeleri güncellediğinizde serbest bırakılacaktır. Devam etmek istediğinizden emin misiniz?", +The reserved stock will be released. Are you certain you wish to proceed?,"Rezerv stok, öğeleri güncellediğinizde serbest bırakılacaktır. Devam etmek istediğinizden emin misiniz?", +"The stock has been reserved for the following Items and Warehouses, un-reserve the same to {0} the Stock Reconciliation:

{1}","Stok aşağıdaki Ürünler ve Depolar için rezerve edilmiştir, Stok Sayımı {0} için rezerve edilmeyen hale getirin:

{1}", +"The sync has started in the background, please check the {0} list for new records.","Senkronizasyon arka planda başladı, lütfen yeni kayıtlar için {0} listesini kontrol edin.", +The task has been enqueued as a background job.,Görev arka plan işi olarak kuyruğa alındı., +"The task has been enqueued as a background job. In case there is any issue on processing in background, the system will add a comment about the error on this Stock Reconciliation and revert to the Submitted stage",Görev arka plan işi olarak kuyruğa alındı. Arka planda işlem yapılmasında herhangi bir sorun olması durumunda sistem bu Stok Sayımı hata hakkında yorum ekleyecek ve Gönderildi aşamasına geri dönecektir., +The uploaded file does not match the selected Code List.,Yüklenen dosya seçilen Kod Listesi ile uyuşmuyor., +"The users with this Role are allowed to create/modify a stock transaction, even though the transaction is frozen.","Bu Role sahip kullanıcıların, işlem dondurulmuş olsa bile bir stok işlemi oluşturmasına/değiştirmesine izin verilir.", +The warehouse where you store finished Items before they are shipped.,Ürünler sevk edilmeden önce bitmiş ürünlerin saklandığı depo., +"The warehouse where you store your raw materials. Each required item can have a separate source warehouse. Group warehouse also can be selected as source warehouse. On submission of the Work Order, the raw materials will be reserved in these warehouses for production usage.","Hammaddeleri depoladığınız depo. Gereken her bir ürün için ayrı bir kaynak depo belirlenebilir. Grup deposu da kaynak depo olarak seçilebilir. İş Emri gönderildiğinde, hammadde üretim kullanımı için bu depolarda rezerve edilecektir.", +The warehouse where your Items will be transferred when you begin production. Group Warehouse can also be selected as a Work in Progress warehouse.,Üretim başladığında ürünlerinizin aktarılacağı depo. Grup Deposu aynı zamanda Devam Eden İşler Deposu olarak da seçilebilir., +The {0} {1} is used to calculate the valuation cost for the finished good {2}.,"{0} {1} , bitmiş ürün {2} adına değerleme maliyetini hesaplamak için kullanılır.", +There are ledger entries against this account. Changing {0} to non-{1} in live system will cause incorrect output in 'Accounts {2}' report,Bu hesaba karşı defter kayıtları vardır. Canlı sistemde {0} adresinin {1} olmayan bir adresle değiştirilmesi 'Hesaplar {2}' raporunda yanlış çıktıya neden olacaktır, +There are no Failed transactions,Başarısız işlem yok, +There are no active Fiscal Years for which Demo Data can be generated.,Demo Verilerinin oluşturulabileceği aktif bir Mali Yıl bulunamadı., +There are no slots available on this date,Bu tarihte boş yer bulunmamaktadır, +"There are two options to maintain valuation of stock. FIFO (first in - first out) and Moving Average. To understand this topic in detail please visit Item Valuation, FIFO and Moving Average.","Stok değerlemesini sürdürmek için iki seçenek vardır. FIFO (ilk giren ilk çıkar) ve Hareketli Ortalama. Bu konuyu ayrıntılı olarak anlamak için lütfen Öğe Değerleme, FIFO ve Hareketli Ortalama bölümünü ziyaret edin.", +There aren't any item variants for the selected item,Seçili kalem için herhangi bir varyant yok, +There is already a valid Lower Deduction Certificate {0} for Supplier {1} against category {2} for this time period.,Bu zaman dilimi için Tedarikçi {1} için {2} kategorisine karşı geçerli bir Alt Kesinti Sertifikası {0} zaten mevcut., +There is already an active Subcontracting BOM {0} for the Finished Good {1}.,{1} isimli Bitmiş Ürün için aktif bir Alt Yüklenici {0} Ürün Ağacı bulunmaktadır., +There must be atleast 1 Finished Good in this Stock Entry,Bu Stok Girişinde en az 1 Bitmiş Ürün bulunmalıdır, +There was an error creating Bank Account while linking with Plaid.,Plaid ile bağlantı sırasında Banka Hesabı oluşturulurken bir hata oluştu., +There was an error syncing transactions.,İşlemler senkronize edilirken bir hata oluştu., +There was an error updating Bank Account {} while linking with Plaid.,Plaid ile bağlantı kurulurken Banka Hesabı {} güncellenirken bir hata oluştu., +There was an issue connecting to Plaid's authentication server. Check browser console for more information,Plaid'in kimlik doğrulama sunucusuna bağlanırken bir sorun oluştu. Daha fazla bilgi için tarayıcı konsolunu kontrol edin, +There were issues unlinking payment entry {0}.,Ödeme girişinin bağlantısının kaldırılmasında sorunlar oluştu {0}., +This Account has '0' balance in either Base Currency or Account Currency,"Bu Hesap, Ana Para Birimi veya Hesap Para Biriminde ‘0’ bakiyeye sahiptir", +This PO has been fully subcontracted.,Bu Satın Alma Emri tamamen alt yükleniciye bağlanmıştır., +This field is used to set the 'Customer'.,Bu alan 'Müşteri'yi ayarlamak için kullanılır., +This filter will be applied to Journal Entry.,Bu filtre Muhasebe Defterine uygulanacaktır., +This is a Template BOM and will be used to make the work order for {0} of the item {1},Bu bir Şablon Ürün Ağacıdır ve {0} miktarındaki {1} Ürünü için İş Emri oluşturmak amacıyla kullanılacaktır, +This is considered dangerous from accounting point of view.,Bu durum muhasebe açısından tehlikeli kabul edilmektedir., +"This is enabled by default. If you want to plan materials for sub-assemblies of the Item you're manufacturing leave this enabled. If you plan and manufacture the sub-assemblies separately, you can disable this checkbox.","Bu varsayılan olarak aktiftir. Ürettiğiniz Ürünün alt montajları için malzemeler planlamak istiyorsanız bunu aktif bırakın. Alt montajları ayrı ayrı planlıyor ve üretiyorsanız, bu onay kutusunu devre dışı bırakabilirsiniz.", +"This is for raw material Items that'll be used to create finished goods. If the Item is an additional service like 'washing' that'll be used in the BOM, keep this unchecked.","Bu, bitmiş ürünlerin üretiminde kullanılacak ham madde ürünleri içindir. Eğer ürün, Ürün Ağacında kullanılacak bir ek hizmet (örneğin, ‘boyama’) ise, bu seçeneği işaretli bırakmayın.", +This item filter has already been applied for the {0},Bu ürün filtresi {0} için zaten uygulandı, +This option can be checked to edit the 'Posting Date' and 'Posting Time' fields.,"Bu seçenek, 'Gönderi Tarihi' ve 'Gönderi Saati' alanlarını düzenlemek için işaretlenebilir.", +This schedule was created when Asset {0} was adjusted through Asset Value Adjustment {1}.,"Bu çizelge, Varlık {0} Varlık Değeri Ayarlaması {1} aracılığıyla ayarlandığında oluşturulmuştur.", +This schedule was created when Asset {0} was repaired through Asset Repair {1}.,"Bu plan, Varlık {0} için Varlık Onarımı {1} ile onarıldığı zaman oluşturuldu.", +This schedule was created when Asset {0} was restored.,"Bu program, Varlık {0} geri yüklendiğinde oluşturulmuştur.", +This schedule was created when Asset {0} was returned through Sales Invoice {1}.,"Bu çizelge, Varlık {0} 'ın Satış Faturası {1} aracılığıyla iade edilmesiyle oluşturuldu.", +This schedule was created when Asset {0} was scrapped.,"Bu program, Varlık {0} hurdaya çıkarıldığında oluşturuldu.", +"This table is used to set details about the 'Item', 'Qty', 'Basic Rate', etc.","Bu tablo, 'Ürün', 'Miktar', 'Birim Fiyat' vb. ile ilgili ayrıntıları ayarlamak için kullanılır.", +This {} will be treated as material transfer.,Bu {} hammadde transferi olarak değerlendirilecektir., +Threshold for Suggestion (In Percentage),Öneri Eşiği (Yüzde Olarak), +Time Taken to Deliver,Teslimat için Geçen Süre, +Time in mins,Dakika, +Time slot is not available,Zaman aralığı müsait değil, +To Date is mandatory,Bitiş Tarihi zorunludur, +To Doctype,Doctype'a, +To Due Date,Termin Tarihi, +To Payment Date,Bitiş Ödeme Tarihi, +To Reference Date,Referans Tarihine Kadar, +To add Operations tick the 'With Operations' checkbox.,Operasyonları Yönetmek için 'Operasyonlar' kutusunu işaretleyin., +To add subcontracted Item's raw materials if include exploded items is disabled.,"Alt yüklenici ürünü için ham maddeleri eklemek, “Patlatılmış Ürünleri Dahil Et” seçeneği devre dışı bırakıldığında mümkündür.", +To apply condition on parent field use parent.field_name and to apply condition on child table use doc.field_name. Here field_name could be based on the actual column name of the respective field.,"Üst alana koşul uygulamak için parent.field_name'i kullanın ve alt tabloya koşul uygulamak için doc.field_name'i kullanın. Burada field_name, ilgili alanın gerçek sütun adına dayalı olabilir.", +To be Delivered to Customer,Müşteriye Teslim Edilecek, +To cancel a {} you need to cancel the POS Closing Entry {}.,{} iptal etmek için POS Kapanış Girişini {} iptal etmeniz gerekir., +"To enable Capital Work in Progress Accounting,","Devam Eden Sermaye Çalışması Muhasebesini Etkinleştirmek için,", +To include non-stock items in the material request planning. i.e. Items for which 'Maintain Stock' checkbox is unticked.,Malzeme talebi planlamasına stokta olmayan kalemleri dahil etmek için. yani 'Stoku Koru' onay kutusunun işaretli olmadığı kalemler., +"To include sub-assembly costs and scrap items in Finished Goods on a work order without using a job card, when the 'Use Multi-Level BOM' option is enabled.","Bir İş Emrinde İş Kartı kullanmadan, 'Çok Seviyeli Ürün Ağacı' seçeneği etkinleştirildiğinde, alt montaj maliyetleri ve hurda ürünler iş emrinde bitmiş ürün maliyetine dahil edilir. + +", +To submit the invoice without purchase receipt please set {0} as {1} in {2},Satın alma irsaliyesi olmadan faturayı göndermek için {0} değerini {1} olarak {2} içinde ayarlayın, +"To use a different finance book, please uncheck 'Include Default FB Assets'",Farklı bir finans defteri kullanmak için lütfen 'Varsayılan FD Varlıklarını Dahil Et' seçeneğinin işaretini kaldırın, +Total Allocations,Toplam Tahsisler, +Total Asset Cost,Toplam Varlık Maliyeti, +Total Billing Hours,Toplam Çalışma Saati, +Total Contribution Amount Against Invoices: {0},Faturalar Karşılığı Toplam Katkı Tutarı: {0}, +Total Contribution Amount Against Orders: {0},Siparişlere Karşı Toplam Katkı Tutarı: {0}, +Total Incoming Value (Receipt),Toplam Gelen Değer (Alım), +Total Interest,Toplam Faiz, +Total Issues,Toplam Sorunlar, +Total Items,Toplam Ürünler, +Total Number of Booked Depreciations ,Toplam Amortisman Sayısı , +Total Other Charges,Toplam Diğer Masraflar, +Total Outgoing Value (Consumption),Toplam Çıkan Değer (Tüketim), +Total Picked Quantity {0} is more than ordered qty {1}. You can set the Over Picking Allowance in Stock Settings.,Toplam Toplanan Miktar {0} sipariş edilen {1} miktardan fazladır. Fazla Toplama Ödeneğini Stok Ayarlarında ayarlayabilirsiniz., +Total Purchase Amount,Toplam Satın Alma Tutarı, +Total Purchase Cost has been updated,Toplam Satın Alma Maliyeti güncellendi, +Total Repair Cost,Toplam Onarım Maliyeti, +Total Reposting Count,Toplam Yeniden Gönderim Sayısı, +Total Sales Amount,Toplam Satış Tutarı, +Total Supplied Qty,Toplam Tedarik Edilen Miktar, +Total Time (in Mins),Toplam Süre (Dakika), +Total Value,Toplam Değer, +Total Value Difference (Incoming - Outgoing),Toplam Değer Farkı (Giriş - Çıkış), +Total Views,Toplam Görüntüleme, +Total percentage against cost centers should be 100,Maliyet merkezlerine karşı toplam yüzde 100 olmalıdır, +Tracking Status,Takip Durumu, +Tracking Status Info,İzleme Durum Bilgisi, +Tracking URL,İzleme Bağlantısı, +Transaction Deletion Document: {0} is running for this Company. {1},İşlem Silme Belgesi: {0} bu Şirket için çalışıyor. {1}, +Transaction Deletion Record,İşlem Silme Kaydı, +Transaction Deletion Record Details,İşlem Silme Kaydı Detayları, +Transaction Deletion Record Item,İşlem Silme Kayıt Öğesi, +Transaction Exchange Rate,İşlem Döviz Kuru, +Transaction currency: {0} cannot be different from Bank Account({1}) currency: {2},İşlem para birimi: {0} Banka Hesabı ({1}) para biriminden farklı olamaz: {2}, +Transfer Asset,Varlığı Transfer Et, +Transfer From Warehouses,Transfer Edilecek Depo, +Transferring cannot be done to an Employee. Please enter location where Asset {0} has to be transferred,Bir Personele transfer yapılamaz. Lütfen Varlığın {0} transfer edilmesi gereken yeri girin, +Transit,Taşıma, +Type of Transaction,İşlem Türü, +UAE VAT Account,BAE KDV Hesabı, +UAE VAT Accounts,BAE KDV Hesapları, +UAE VAT Settings,BAE KDV Ayarları, +UOM conversion factor required for UOM: {0} in Item: {1},Ürünü içinde: {1} ölçü birimi için: {0} dönüştürme faktörü gereklidir, +Unable to find the time slot in the next {0} days for the operation {1}. Please increase the 'Capacity Planning For (Days)' in the {2}.,Önümüzdeki {0} gün içinde {1} operasyonu için zaman aralığı bulunamıyor. Lütfen {2} sayfasındaki 'Kapasite Planlama' alanının değerini artırın., +Unable to find variable:,Değişken bulunamadı:, +Unassigned Qty,Atanmamış Miktar, +"Under Working Hours table, you can add start and end times for a Workstation. For example, a Workstation may be active from 9 am to 1 pm, then 2 pm to 5 pm. You can also specify the working hours based on shifts. While scheduling a Work Order, the system will check for the availability of the Workstation based on the working hours specified.","Çalışma Saatleri tablosunda, bir Çalışma İstasyonu için başlangıç ve bitiş saatlerini ekleyebilirsiniz. Örneğin, bir Çalışma İstasyonu sabah 9’dan öğlen 1’e, ardından öğleden sonra 2’den akşam 5’e kadar aktif olabilir. Ayrıca, vardiyalara göre çalışma saatlerini belirtebilirsiniz. Bir İş Emri planlanırken, sistem belirtilen çalışma saatlerine göre Çalışma İstasyonunun uygunluğunu kontrol eder.", +Unlinked,Bağlı Değil, +Unrealized Profit / Loss account for intra-company transfers,Şirket içi transferler için Gerçekleşmemiş Kâr / Zarar Hesabı, +Unrealized Profit/Loss account for intra-company transfers,Şirket içi transferler için Gerçekleşmemiş Kâr / Zarar Hesabı, +Unreconcile Transaction,Uzlaştırılmamış İşlem, +Unreconciled Amount,Mutabık Olunmayan Tutar, +Unreconciled Entries,Mutabık Olunmayan Girişler, +Unreserve,Stok Rezervini Kaldır, +Unreserve Stock,Stok Rezevlerini Kaldır, +Unreserving Stock...,Stok Rezevleri Kaldırılıyor..., +Unset Matched Payment Request,Eşleşen Ödeme Talebini Ayarla, +Up,Yukarı, +Update Billed Amount in Delivery Note,İrsaliyedeki Fatura Tutarını Güncelle, +Update Billed Amount in Purchase Order,Satış Siparişindeki Fatura Tutarını Güncelle, +Update Billed Amount in Purchase Receipt,Satın Alma Emrindeki Fatura Tutarını Güncelle, +Update Existing Records,Mevcut Kayıtları Güncelle, +Update Outstanding for Self,Kendi Açık Bakiyesini Güncelle, +Update Total Purchase Cost,Toplam Satın Almaları Güncelle, +Update stock must be enabled for the purchase invoice {0},Satın Alma faturası için stok güncelleme etkinleştirilmelidir {0}, +Update the modified timestamp on new communications received in Lead & Opportunity.,Yeni iletişimlerde Potansiyel Müşteri ve Fırsat kayıtlarının değiştirilme zaman damgasını güncelle., +Update timestamp on new communication,Yeni İletişimde Zaman Damgasını Güncelle, +Updated via 'Time Log' (In Minutes),'Zaman Kaydı' ile güncellendi. (Dakika), +Updating Work Order status,İş Emri durumu güncelleniyor, +"Updating {0} of {1}, {2}",{0} Güncelleniyor {0}/{1}, +Upload Bank Statement,Banka Hesap Özeti Yükle, +Use 'Repost in background' button to trigger background job. Job can only be triggered when document is in Queued or Failed status.,Arka plan işini başlatmak için 'Arka planda yeniden gönder' düğmesini kullanın. İş yalnızca belge Kuyrukta veya Başarısız durumda olduğunda başlatılabilir., +Use Batch-wise Valuation,Parti Bazında Değerleme Kullan, +Use Company Default Round Off Cost Center,Varsayılan Yuvarlama Maliyet Merkezini Kullan, +Use Company default Cost Center for Round off,Yuvarlamak İçin Varsayılan Maliyet Merkezini Kullan, +Use HTTP Protocol,HTTP Protokolünü Kullan, +Use Item based reposting,Ürün Bazlı Yeniden Kayıt Kullan, +Use Serial / Batch Fields,Seri / Parti Alanları Kullan, +Use Serial No / Batch Fields,Seri No / Parti Alanlarını Kullanın, +User {0}: Removed Employee Self Service role as there is no mapped employee.,Kullanıcı {0}: Eşlenen bir çalışan olmadığı için Çalışan Self Servis rolü kaldırıldı., +User {0}: Removed Employee role as there is no mapped employee.,Kullanıcı {0}: Eşlenen bir çalışan olmadığı için Çalışan rolü kaldırıldı., +Users can enable the checkbox If they want to adjust the incoming rate (set using purchase receipt) based on the purchase invoice rate.,"Kullanıcılar, satın alma faturasındaki fiyatı (satın alma irsaliyesi ile ayarlanan) ayarlamak istiyorlarsa, onay kutusunu etkinleştirebilirler.", +Using negative stock disables FIFO/Moving average valuation when inventory is negative.,"Negatif stok kullanımı, envanter negatif olduğunda FIFO/Hareketli ortalama değerlemesini devre dışı bırakır.", +VAT Accounts,KDV Hesapları, +VAT Amount (AED),KDV Tutarı (AED), +VAT Audit Report,KDV Denetim Raporu, +VAT on Expenses and All Other Inputs,Giderler ve Diğer Tüm Girdi Üzerindeki KDV, +VAT on Sales and All Other Outputs,Satışlarda ve Diğer Tüm Çıktılarda KDV, +Valid From must be after {0} as last GL Entry against the cost center {1} posted on this date,"Geçerli Başlangıç Tarihi, maliyet merkezi {1} için yapılan son Genel Muhasebe Girişi {0} tarihinden sonra olmalıdır", +Validate Components and Quantities Per BOM,Ürün Ağacı Başına Bileşen Miktarlarını Doğrula, +Validate Negative Stock,Negatif Stoku Doğrula, +Validate Pricing Rule,Fiyatlandırma Kuralını Doğrula, +Validate Stock on Save,Stokları Kaydederken Doğrula, +Valuation (I - K),Değerleme (I - K), +Valuation Field Type,Değerleme Alan Türü, +Valuation Rate (In / Out),Değerleme Fiyatı (Giriş / Çıkış), +Valuation rate for customer provided items has been set to zero.,Müşteri tarafından sağlanan ürünler için değerleme oranı sıfır olarak ayarlandı., +Valuation rate for the item as per Sales Invoice (Only for Internal Transfers),Satış Faturasına göre ürün için değerleme oranı (Sadece Dahili Transferler için), +Value (G - D),Değer (G - D), +Value ({0}),Değer ({0}), +Value Based Inspection,Değere Göre Kontrol, +Value Change,Değer Değişimi, +Value Details,Değerler, +Value as on,Değer Tarihi Olarak, +Value of Goods,Malların Değeri, +Value of New Capitalized Asset,Yeni Sermayelendirilmiş Varlığın Maliyeti, +Value of New Purchase,Yeni Satın Alma Değeri, +Value of Scrapped Asset,Hurdaya Çıkarılan Varlığın Değeri, +Value of Sold Asset,Satılan Varlığın Değeri, +Value of goods cannot be 0,Ürünlerin değeri 0 olamaz, +Verification failed please check the link,Doğrulama başarısız oldu lütfen bağlantıyı kontrol edin, +Version,Versiyon, +Via Landed Cost Voucher,Ek Maliyeti Fişi, +View BOM Update Log,Ürün Ağacı Güncelleme Kayıtları, +View Exchange Gain/Loss Journals,Döviz Kazanç/Kayıp Günlüklerini Görüntüle, +View General Ledger,Genel Muhasebeyi Görüntüle, +View Ledgers,Defterleri Görüntüle, +Visits,Ziyaretler, +Voice Call Settings,Sesli Arama Ayarları, +Voucher,Belge, +Voucher Name,Belge Adı, +Voucher No is mandatory,Belge No Zorunludur, +Voucher-wise Balance,Fatura Bazında Bakiye, +"WARNING: Exotel app has been separated from ERPNext, please install the app to continue using Exotel integration.","UYARI: Exotel uygulaması ERPNext'ten ayrıldı, Exotel entegrasyonunu kullanmaya devam etmek için lütfen uygulamayı yükleyin.", +WIP Composite Asset,Devam Eden Bileşik Varlık, +Waiting for payment...,Ödeme bekleniyor..., +Warehouse Capacity for Item '{0}' must be greater than the existing stock level of {1} {2}.,'{0}' Ürünü için Depo Kapasitesi mevcut stok seviyesi olan {1} {2}'den büyük olmalıdır., +Warehouse Details,Depo Detayları, +Warehouse Disabled?,Depo Kapalı, +Warehouse Settings,Depo Ayarları, +Warehouse {0} does not belong to Company {1}.,"{0} Deposu, {1} şirketine ait değil.", +"Warehouse {0} is not linked to any account, please mention the account in the warehouse record or set default inventory account in company {1}.","{0} Deposu herhangi bir hesaba bağlı değil, lütfen depo kaydında hesabı belirtin veya {1} Şirketinde varsayılan stok hesabını ayarlayın.", +Warehouse's Stock Value has already been booked in the following accounts:,Deponun Stok Değeri zaten aşağıdaki hesaplara kaydedilmiş:, +Warning - Row {0}: Billing Hours are more than Actual Hours,Uyarı - Satır {0}: Faturalama Saatleri Gerçek Saatlerden Fazla, +Warning on Negative Stock,Eksi Stokta Uyar, +Warning!,Uyarı!, +Watch Video,Video İzle, +Website Script,Komut Dosyası, +Website Theme,Tema, +Week {0} {1},Hafta {0} {1}, +Weekly Time to send,Haftalık Gönderim Zamanı, +Weight (kg),Ağırlık (kg), +"When creating an Item, entering a value for this field will automatically create an Item Price at the backend.","Bir Ürün oluştururken bu alana bir değer girilmesi, arka planda otomatik olarak bir Ürün Fiyatı oluşturacaktır.", +Width (cm),Genişlik (cm), +Withdrawal,Para Çekme, +Work Order / Subcontract PO,İş Emri, +Workflow Action,İş Akışı Eylemi, +Workflow State,İş Akışı Durumu, +Workstation Dashboard,İş İstasyonu Panosu, +Workstation Status,İş İstasyonu Durumu, +Workstations,İş İstasyonları, +Write Off Limit,Kapatma Limiti, +Wrong Company,Yanlış Şirket, +Wrong Template,Yanlış Şablon, +You are importing data for the code list:,Kod listesi için veri aktarıyorsunuz:, +You are not authorized to make/edit Stock Transactions for Item {0} under warehouse {1} before this time.,"Bu zamandan önce, {1} deposu altında {0} ürünü için Stok İşlemleri yapmaya/yapılanı düzenlemeye yetkiniz yok.", +You are picking more than required quantity for the item {0}. Check if there is any other pick list created for the sales order {1}.,Ürün için gereken miktardan fazlasını topluyorsunuz {0}. Satış siparişi için başka bir toplama listesi oluşturulup oluşturulmadığını kontrol edin {1}., +You can add the original invoice {} manually to proceed.,Devam etmek için asıl faturayı {} manuel olarak ekleyebilirsiniz., +"You can set it as a machine name or operation type. For example, stiching machine 12","Bunu bir makine adı veya işlem türü olarak ayarlayabilirsiniz. Örneğin, kesme makinesi 12", +You can't make any changes to Job Card since Work Order is closed.,İş Emri kapalı olduğundan İş Kartında herhangi bir değişiklik yapamazsınız., +You can't redeem Loyalty Points having more value than the Rounded Total.,Yuvarlatılmış Toplam değerinden daha fazla değere sahip Sadakat Puanlarını kullanamazsınız., +You cannot change the rate if BOM is mentioned against any Item.,Herhangi bir Ürün için Ürün Ağacı belirtilmişse fiyatı değiştiremezsiniz., +You cannot create a {0} within the closed Accounting Period {1},Kapatılan Hesap Dönemi {1} içinde bir {0} oluşturamazsınız, +You cannot create/amend any accounting entries till this date.,Bu tarihe kadar herhangi bir muhasebe kaydı oluşturamaz/değiştiremezsiniz., +You cannot repost item valuation before {},{} tarihinden önce ürün değerlemesini yeniden gönderemezsiniz, +You cannot {0} this document because another Period Closing Entry {1} exists after {2},Bu belgeyi {0} yapamazsınız çünkü {2} tarihinden sonra sonra başka bir Dönem Kapanış Girişi {1} mevcuttur, +You have entered a duplicate Delivery Note on Row,Satırda tekrarlayan bir İrsaliye girdiniz, +You haven't created a {0} yet,Henüz bir {0} oluşturmadınız., +You need to cancel POS Closing Entry {} to be able to cancel this document.,Bu belgeyi iptal edebilmek için POS Kapanış Girişini {} iptal etmeniz gerekmektedir., +Your Name (required),Adınız (gerekli), +Your email has been verified and your appointment has been scheduled,E-postanız doğrulandı ve randevunuz planlandı, +Zero Balance,Sıfır Bakiye, +Zero Rated,Sıfır Değerinde, +Zero quantity,Sıfır Adet, +`Allow Negative rates for Items`,`Ürünler için Negatif değerlere izin ver`, +as Code,Kod olarak, +as Description,Açıklama olarak, +as Title,Başlık olarak, +as a percentage of finished item quantity,bitmiş ürün miktarının yüzdesi olarak, +at,tarihinde, +by {},{} ile, +dated {0},{0} tarihli, +description,Açıklama, +discount applied,indirim uygulandı, +doctype,docType, +fieldname,alan, +is already,zaten, +must be between 0 and 100,0 ile 100 arasında olmalıdır, +out of 5,5 üzerinden, +payments app is not installed. Please install it from {0} or {1},ödeme uygulaması yüklü değil. Lütfen {0} veya {1} adresinden yükleyin, +payments app is not installed. Please install it from {} or {},ödeme uygulaması yüklü değil. Lütfen {} veya {} adresinden yükleyin, +performing either one below:,aşağıdakilerden birini gerçekleştirin:, +product bundle item row's name in sales order. Also indicates that picked item is to be used for a product bundle,"satış siparişindeki ürün paketi öğesi satırının adı. Ayrıca, toplanan öğenin bir ürün paketi için kullanılacağını belirtir", +ratings,değerlendirme, +subscription is already cancelled.,abonelik zaten iptal edildi., +temporary name,geçici isim, +to unallocate the amount of this Return Invoice before cancelling it.,bu İade Faturası tutarını iptal etmeden önce tahsisini kaldırmak için., +variance,sapma, +via BOM Update Tool,Ürün Ağacı Güncelleme Aracı ile, +will be,olacak, +{0} {1} has submitted Assets. Remove Item {2} from table to continue.,{0} {1} Varlıklar gönderdi. Devam etmek için tablodan {2} Kalemini kaldırın., +{0} Account not found against Customer {1}.,{1} Müşterisine ait {0} hesabı bulunamadı., +{0} Account: {1} ({2}) must be in either customer billing currency: {3} or Company default currency: {4},"{0} Hesabı: {1} ({2}), ya müşteri fatura para biriminde ({3}) ya da şirket varsayılan para biriminde ({4}) olmalıdır.", +{0} Budget for Account {1} against {2} {3} is {4}. It {5} exceed by {6},"{0} Hesabı için {2} {3} karşılığı bütçe {1} tutarında. Bu, {4} tarafından {6} {5} aşılabilir.", +{0} Transaction(s) Reconciled,{0} İşlem Uzlaştırıldı, +{0} account is not of type {1},{0} hesabı {1} türünde değil, +{0} account not found while submitting purchase receipt,{0} Satın Alma İrsaliyesi gönderilirken hesap bulunamadı, +{0} and {1},{0} ve {1}, +{0} cannot be used as a Main Cost Center because it has been used as child in Cost Center Allocation {1},{0} Maliyet Merkezi Tahsisinde alt maliyet merkezi olarak kullanıldığından Ana Maliyet Merkezi olarak kullanılamaz {1}, +{0} cannot be zero,{0} sıfır olamaz, +{0} currency must be same as company's default currency. Please select another account.,{0} para birimi şirketin varsayılan para birimi ile aynı olmalıdır. Lütfen başka bir hesap seçin., +{0} entered twice {1} in Item Taxes,{1} Ürün Vergilerinde iki kez {0} olarak girildi, +{0} is a mandatory Accounting Dimension.
Please set a value for {0} in Accounting Dimensions section.,{0} zorunlu bir Muhasebe Boyutudur.
Lütfen Muhasebe Boyutları bölümünde {0} için bir değer ayarlayın., +{0} is added multiple times on rows: {1},{0} satırlara birden çok kez eklendi: {1}, +{0} is already running for {1},{0} zaten {1} için çalışıyor, +{0} is mandatory for account {1},{0} {1} hesabı için zorunludur, +{0} is not running. Cannot trigger events for this Document,{0} çalışmıyor. Bu Belge için olaylar tetiklenemiyor, +{0} qty of Item {1} is being received into Warehouse {2} with capacity {3}.,"{1} ürününden {0} miktarı, {3} kapasiteli {2} deposuna alınmaktadır.", +"{0} units are reserved for Item {1} in Warehouse {2}, please un-reserve the same to {3} the Stock Reconciliation.","{0} birim {1} Ürünü için {2} Deposunda rezerve edilmiştir, lütfen Stok Doğrulamasını {3} yapabilmek için stok rezevini kaldırın.", +{0} units of Item {1} is not available in any of the warehouses.,{1} Ürünü için gerekli olan {0} birim herhangi bir depoda bulunamadı., +{0} will be given as discount.,{0} indirim olarak verilecektir., +{0} {1} Manually,{0} {1} Manuel olarak, +{0} {1} Partially Reconciled,{0} {1} Kısmen Matubakat Sağlandı, +"{0} {1} cannot be updated. If you need to make changes, we recommend canceling the existing entry and creating a new one.","{0} {1} güncellenemez. Değişiklik yapmanız gerekiyorsa, mevcut girişi iptal etmenizi ve yeni bir giriş oluşturmanızı öneririz.", +{0} {1} has already been fully paid.,{0} {1} zaten tamamen ödendi., +{0} {1} has already been partly paid. Please use the 'Get Outstanding Invoice' or the 'Get Outstanding Orders' button to get the latest outstanding amounts.,{0} {1} zaten kısmen ödenmiştir. Ödenmemiş en son tutarları almak için lütfen 'Ödenmemiş Faturayı Al' veya 'Ödenmemiş Siparişleri Al' düğmesini kullanın., +{0} {1} is not in any active Fiscal Year,{0} {1} herhangi bir aktif Mali Yılda değil., +{0} {1} is on hold,{0} {1} beklemede, +{0} {1} not allowed to be reposted. Modify {2} to enable reposting.,{0} {1} yeniden yayınlanmasına izin verilmiyor. Yeniden yayınlamayı etkinleştirmek için {2} öğesini değiştirin., +{0} {1} via CSV File,{0} {1} CSV Dosyası ile, +{0} {1}: Account {2} is a Group Account and group accounts cannot be used in transactions,{0} {1}: Hesap {2} bir Grup Hesabıdır ve grup hesapları işlemlerde kullanılamaz, +{0} {1}: Cost Center is required for 'Profit and Loss' account {2}.,{0} {1}: 'Kâr ve Zarar' {2} hesabı için Maliyet Merkezi gereklidir., +{0} {1}: Cost Center {2} is a group cost center and group cost centers cannot be used in transactions,{0} {1}: Maliyet Merkezi {2} bir grup maliyet merkezidir ve grup maliyet merkezleri işlemlerde kullanılamaz, +{0}% of total invoice value will be given as discount.,Toplam fatura bedelinin %{0} oranında indirim yapılacaktır., +{0}'s {1} cannot be after {2}'s Expected End Date.,{0} için {1} alanı {2} için Beklenen Bitiş Tarihinden sonra olamaz., +{item_name}'s Sample Size ({sample_size}) cannot be greater than the Accepted Quantity ({accepted_quantity}),{item_name} için Numune Boyutu ({sample_size}) Kabul Edilen Miktardan ({accepted_quantity}) büyük olamaz, +{} is a child company.,{} bir alt şirkettir., +{} {} is already linked with another {},{} {} zaten başka bir {} ile bağlantılı, +{} {} is already linked with {} {},{} {} zaten {} {} ile bağlantılı, +Disable auto setting Grand Total to default Payment Mode,Genel Toplamın varsayılan Ödeme Yönteminin otomatik ayarlanmasını devre dışı bırak, +Do you still want to enable immutable ledger?,Hala değiştirilemez defteri etkinleştirmek istiyor musunuz?, +Exit Full Screen,Tam Ekrandan Çık, +Full Screen,Tam Ekran, +Has Corrective Cost,Düzeltici Maliyet, +Ignore Is Opening check for reporting,Raporlama için Açılış kontrolünü yoksay, +Ignores legacy Is Opening field in GL Entry that allows adding opening balance post the system is in use while generating reports,Raporlar oluşturulurken sistemin kullanımda olduğu açılış bakiyesi sonrası eklemeye izin veren Defter Girişindeki eski Açılış mı alanını yok sayar, +Incorrect Serial and Batch Bundle,Geçersiz Seri ve Parti, +Mobile: ,Cep Telefonu: , +Negative Batch Quantity,Negatif Parti Miktarı, +Only applies for Normal Payments,Sadece Normal Ödemeler için geçerlidir, +Payment Reconciliation Settings,Ödeme Mutabakat Ayarları, +Pickup to,Teslim Edilecek Yer, +Please set {0} first.,Lütfen önce {0} değerini ayarlayın., +Please specify a {0} first.,Lütfen önce bir {0} belirtin., +Posting Date Inheritance for Exchange Gain / Loss,Kur Farkı Karı / Zararı İçin Muhasebe Tarihi Devralımı, +Printed on {0},{0} tarihinde yazdırıldı, +Process Statement Of Accounts CC,Hesap Özeti İşlemi, +Process Subscription,Aboneliği İşle, +Process in Single Transaction,Tek Bir İşlemde İşle, +Qty to Build,Üretilecek Miktar, +Recording HTML,Kayıt HTML, +Remove SABB Entry,Hatalı Seri ve Parti Kayıtlarını Kaldır, +Return Against Subcontracting Receipt,Alt Yüklenici İade İrsaliyesi, +Row {0}: {1} {2} cannot be same as {3} (Party Account) {4},"Satır {0}: {1} {2} , {3} (Cari Hesabı) {4} ile aynı olamaz", +Row({0}): Outstanding Amount cannot be greater than actual Outstanding Amount {1} in {2},"Satır ({0}): Ödenmemiş Tutar, {2} içindeki gerçek Ödenmemiş Tutar {1} olan değerden büyük olamaz", +SCO Supplied Item,Alt Yüklenici Tarafından Tedarik Edilen Ürün, +Select Job Worker Address,Alt Yüklenici Adresini Seçin, +Selected Serial and Batch Bundle entries have been removed.,Seçilen Seri No ve Parti girişleri kaldırıldı., +Stock Unreservation,Stok Rezervasyonu Kaldır, +The Batch {0} has negative quantity {1} in warehouse {2}. Please correct the quantity.,{0} Partisinin {2} deposunda negatif {1} değer var. Lütfen miktarı düzeltin., +The Sales Person is linked with {0},Satış Personeli {0} ile bağlantılıdır, +"The following Items, having Putaway Rules, could not be accomodated:","Aşağıdaki ürünler, Raf Yerleştirme Kurallarına (Putaway Rules) sahip olduğundan yerleştirilemedi:", +The serial and batch bundle {0} not linked to {1} {2},"Seri ve parti paketi {0}, {1} {2} ile bağlantılı değil", +"The stock for the item {0} in the {1} warehouse was negative on the {2}. You should create a positive entry {3} before the date {4} and time {5} to post the correct valuation rate. For more details, please read the documentation.","{1} deposundaki {0} ürünü için stok, {2} tarihinde negatife düştü. Bu durumu düzeltmek için {4} tarihi ve {5} saatinden önce {3} işlemiyle pozitif bir stok girişi oluşturmalısınız. Aksi takdirde, sistem doğru değerleme oranını hesaplayamaz.", +The total Issue / Transfer quantity {0} in Material Request {1} cannot be greater than allowed requested quantity {2} for Item {3},"Malzeme Talebi {1} içindeki toplam Çıkış / Transfer miktarı {0}, {3} ürünü için izin verilen talep miktarı {2} değerinden fazla olamaz.", +The total Issue / Transfer quantity {0} in Material Request {1} cannot be greater than requested quantity {2} for Item {3},"Malzeme Talebi {1} içindeki toplam Çıkış / Transfer miktarı {0}, {3} ürünü için talep edilen miktar {2} değerinden fazla olamaz.", +The user cannot submit the Serial and Batch Bundle manually,"Kullanıcı, Seri ve Parti Paketini manuel olarak gönderemez", +There are only {0} asset created or linked to {1}. Please create or link {2} Assets with respective document.,{1} için yalnızca {0} varlık oluşturuldu veya bağlandı. Lütfen {2} Varlığı ilgili belgeyle oluşturun veya bağlayın., +This is a preview of the email to be sent. A PDF of the document will automatically be attached with the email.,"Bu, gönderilecek e-postanın bir önizlemesidir. Belgenin bir PDF'i otomatik olarak e-postaya eklenecektir.", +This schedule was created when Asset {0} was consumed through Asset Capitalization {1}.,"Bu plan, Varlık {0}, Varlık Sermayeleştirme {1} işlemiyle tüketildiğinde oluşturuldu.", +This schedule was created when Asset {0} was restored on Asset Capitalization {1}'s cancellation.,"Bu çizelge, Varlık Kapitalizasyonu {1}'un iptali üzerine Varlık {0} geri yüklendiğinde oluşturulmuştur.", +This schedule was created when Asset {0} was sold through Sales Invoice {1}.,"Bu çizelge, Varlık {0} 'ın Satış Faturası {1} için iade edilmesiyle oluşturuldu.", +This schedule was created when Asset {0} was updated after being split into new Asset {1}.,"Bu program, Varlık {0} yeni Varlık {1} olarak bölündükten sonra güncellendiğinde oluşturulmuştur.", +This schedule was created when Asset {0}'s Asset Repair {1} was cancelled.,"Bu program, Varlık {0}'ın Varlık Onarımı {1} iptal edildiğinde oluşturuldu.", +This schedule was created when Asset {0}'s Asset Value Adjustment {1} was cancelled.,"Bu program, Varlık {0}'ın Varlık Onarımı {1} iptal edildiğinde oluşturuldu.", +This schedule was created when Asset {0}'s shifts were adjusted through Asset Shift Allocation {1}.,"Bu çizelge, Varlık {0} Varlık Değeri Ayarlaması {1} aracılığıyla ayarlandığında oluşturulmuştur.", +This schedule was created when new Asset {0} was split from Asset {1}.,"Bu plan, Varlık {0} için Varlık Onarımı {1} ile onarıldığı zaman oluşturuldu.", +This value shall be used when no matching Common Code for a record is found.,"Bu değer, bir kayıt için eşleşen Ortak Kod bulunmadığında kullanılacaktır.", +To submit the invoice without purchase order please set {0} as {1} in {2},Alış irsaliyesi olmadan faturayı göndermek için {0} değerini {1} olarak {2} içinde ayarlayın, +"To use a different finance book, please uncheck 'Include Default FB Entries'",Farklı bir finans defteri kullanmak için lütfen 'Varsayılan FD Girişlerini Dahil Et' seçeneğinin işaretini kaldırın, +Type Of Call,Çağrı Türü, +Voucher Qty,Belge Miktarı, +Voucher {0} is over-allocated by {1},"Fatura {0}, {1} kadar fazla tahsis edilmiş", +You can't process the serial number {0} as it has already been used in the SABB {1}. {2} if you want to inward same serial number multiple times then enabled 'Allow existing Serial No to be Manufactured/Received again' in the {3},"Seri ve Parti Paketi {1} içinde zaten kullanılmış olduğu için seri numarası {0} işlenemez. {2} Eğer aynı seri numarasını birden fazla kez almak veya üretmek istiyorsanız, {3} içinde ‘Mevcut Seri Numarasının Yeniden Üretilmesine/Alınmasına İzin Ver’ seçeneğini etkinleştirin.", +or its descendants,veya onunla grubundan gelen, +quotation_item,teklif_kalemi, +{0} has Payment Term based allocation enabled. Select a Payment Term for Row #{1} in Payment References section,{0} için ödeme vadesine dayalı tahsis etkinleştirilmiş. Ödeme Referansları bölümünde Satır #{1} için bir ödeme vadesi seçin, +{0} is a mandatory field.,{0} zorunlu bir alandır., +{0} items lost during process.,İşlem sırasında {0} ürün kayboldu., +{0} units of Item {1} is picked in another Pick List.,{0} adet {1} ürünü başka bir Çekme Listesinde işaretlenmiş., +{0} units of {1} are required in {2} with the inventory dimension: {3} ({4}) on {5} {6} for {7} to complete the transaction.,{2} içinde {3} ({4}) envanter boyutuyla {0} adet {1} ürünü gereklidir. İşlemi tamamlamak için {5} {6} tarihinde {7} için bu miktarın sağlanması gerekir., +{0} units of {1} needed in {2} on {3} {4} to complete this transaction.,Bu işlemi tamamlamak için {3} {4} tarihinde {2} içinde {0} adet {1} gereklidir., +{0} {1} is allocated twice in this Bank Transaction,{0} {1} bu Banka İşleminde iki kez tahsis edilmiştir, +{0} {1} is already linked to Common Code {2}.,{0} {1} zaten Ortak Kod {2} ile bağlantılıdır., +{0}: {1} does not belong to the Company: {2},{0}: {1} Şirketine ait değildir: {2}, diff --git a/erpnext/translations/vi.csv b/erpnext/translations/vi.csv index 4b036c7c7c0..76280f1a93c 100644 --- a/erpnext/translations/vi.csv +++ b/erpnext/translations/vi.csv @@ -8743,3 +8743,5 @@ WhatsApp,WhatsApp, Make a call,Thực hiện cuộc gọi, Approve,Tán thành, Reject,Từ chối, +Convert to Group,Chuyển đổi cho Tập đoàn,Warehouse +General Ledger,Sổ cái tổng hợp,Warehouse diff --git a/erpnext/translations/zh-TW.csv b/erpnext/translations/zh-TW.csv index 699d802206e..8bfb2985728 100644 --- a/erpnext/translations/zh-TW.csv +++ b/erpnext/translations/zh-TW.csv @@ -5972,3 +5972,1867 @@ Payment Gateway,支付網關 Address and Contacts,地址和聯絡方式 Plan Name,計劃名稱 Reject,拒絕 +"""Is Fixed Asset"" cannot be unchecked, as Asset record exists against the item",“是固定的資產”不能選中,作為資產記錄存在對項目, +'Based On' and 'Group By' can not be same,“根據”和“分組依據”不能相同, +'Days Since Last Order' must be greater than or equal to zero,“自從最後訂購日”必須大於或等於零, +'Entries' cannot be empty,“分錄”不能是空的, +'From Date' must be after 'To Date',“起始日期”必須經過'終止日期', +'Has Serial No' can not be 'Yes' for non-stock item,非庫存項目不能有序號, +'Opening',“開放”, +'To Date' is required,“至日期”是必需填寫的, +'Update Stock' can not be checked because items are not delivered via {0},不能勾選`更新庫存',因為項目未交付{0}, +'Update Stock' cannot be checked for fixed asset sale,"""更新庫存"" 無法檢查固定資產銷售", +A Customer Group exists with same name please change the Customer name or rename the Customer Group,客戶群組存在相同名稱,請更改客戶名稱或重新命名客戶群組, +Abbreviation already used for another company,另一家公司已使用此縮寫, +Abbreviation is mandatory,縮寫是強制性的, +Academics User,學術界用戶, +Accepted Quantity,允收數量, +Account,帳戶, +Account Balance,帳戶餘額, +Account Number,帳號, +Account Number {0} already used in account {1},已在科目{1}中使用的帳號{0}, +Account Pay Only,科目只需支付, +Account Type,科目類型, +"Account balance already in Credit, you are not allowed to set 'Balance Must Be' as 'Debit'",科目餘額已歸為貸方,不允許設為借方, +"Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'",科目餘額已歸為借方科目,不允許設為貸方, +Account with child nodes cannot be converted to ledger,有子節點的帳不能轉換到總帳, +Account with child nodes cannot be set as ledger,科目與子節點不能被設置為分類帳, +Account with existing transaction can not be converted to group.,科目與現有的交易不能被轉換到群組。, +Account with existing transaction can not be deleted,科目與現有的交易不能被刪除, +Account with existing transaction cannot be converted to ledger,帳戶與現有的交易不能被轉換為總賬, +Account {0} does not belong to company: {1},科目{0}不屬於公司:{1}, +Account {0} does not belongs to company {1},科目{0}不屬於公司{1}, +Account {0} does not exist,科目{0}不存在, +Account {0} does not exists,科目{0}不存在, +Account {0} does not match with Company {1} in Mode of Account: {2},帳戶{0}與帳戶模式{2}中的公司{1}不符, +Account {0} has been entered multiple times,帳戶{0}已多次輸入, +Account {0} is frozen,帳戶{0}被凍結, +Account {0} is invalid. Account Currency must be {1},科目{0}是無效的。科目貨幣必須是{1}, +Account {0}: Parent account {1} can not be a ledger,科目{0}:上層科目{1}不能是總帳, +Account {0}: Parent account {1} does not belong to company: {2},科目{0}:上層科目{1}不屬於公司:{2}, +Account {0}: Parent account {1} does not exist,科目{0}:上層科目{1}不存在, +Account {0}: You can not assign itself as parent account,科目{0}:你不能指定自己為上層科目, +Account: {0} can only be updated via Stock Transactions,帳號:{0}只能通過庫存的交易進行更新, +Account: {0} with currency: {1} can not be selected,帳號:{0}幣種:{1}不能選擇, +Accounting,會計, +Accounting Entry for Asset,資產會計分錄, +Accounting Entry for Stock,存貨的會計分錄, +Accounting Entry for {0}: {1} can only be made in currency: {2},會計分錄為{0}:{1}只能在貨幣做:{2}, +Accounting Ledger,會計總帳, +Accounting Period,會計期間, +Accounts,會計, +Accounts Payable,應付帳款, +Accounts Payable Summary,應付帳款摘要, +Accounts Receivable,應收帳款, +Accounts Receivable Summary,應收帳款匯總, +Accounts Settings,會計設定, +Accounts table cannot be blank.,賬表不能為空。, +Accumulated Depreciation,累計折舊, +Accumulated Depreciation Amount,累計折舊額, +Accumulated Depreciation as on,作為累計折舊, +Accumulated Monthly,每月累計, +Accumulated Values,累積值, +Accumulated Values in Group Company,集團公司累計價值, +Activity Cost,項目成本, +Activity Cost exists for Employee {0} against Activity Type - {1},存在活動費用為員工{0}對活動類型 - {1}, +Activity Cost per Employee,每個員工活動費用, +Activity Type,活動類型, +Actual,實際, +Actual End Date,實際結束日期, +Actual Qty,實際數量, +Actual Qty is mandatory,實際數量是強制性, +Actual Quantity,實際數量, +Actual Start Date,實際開始日期, +Actual qty in stock,實際庫存數量, +Actual type tax cannot be included in Item rate in row {0},實際類型稅不能被包含在商品率排{0}, +Add / Edit Prices,新增 / 編輯價格, +Add Customers,添加客戶, +Add Employees,添加員工, +Add Item,新增項目, +Add Items,添加項目, +Add Leads,添加潛在客戶, +Add Multiple Tasks,添加多個任務, +Add Sales Partners,添加銷售合作夥伴, +Add Suppliers,添加供應商, +Add Timesheets,添加時間表, +Add the rest of your organization as your users. You can also add invite Customers to your portal by adding them from Contacts,添加您的組織的其餘部分用戶。您還可以添加邀請客戶到您的門戶網站通過從聯繫人中添加它們, +Administrative Expenses,行政開支, +Advance Amount,提前量, +Advance Payments,預付款, +Advance amount cannot be greater than {0} {1},提前量不能大於{0} {1}, +Against Account,針對帳戶, +Against Journal Entry {0} does not have any unmatched {1} entry,對日記條目{0}沒有任何無與倫比{1}進入, +Against Journal Entry {0} is already adjusted against some other voucher,對日記條目{0}已經調整一些其他的優惠券, +Against Voucher,對傳票, +Against Voucher Type,對憑證類型, +Age,年齡, +Age (Days),時間(天), +Ageing Based On,老齡化基於, +Agriculture Manager,農業經理, +Agriculture User,農業用戶, +All Accounts,所有科目, +All BOMs,所有的材料明細表, +All Customer Groups,所有客戶群組, +All Departments,所有部門, +All Item Groups,所有項目群組, +All Supplier Groups,所有供應商組織, +All Territories,所有的領土, +All Warehouses,所有倉庫, +All communications including and above this shall be moved into the new Issue,包括及以上的所有通信均應移至新發行中, +All items have already been transferred for this Work Order.,所有項目已經為此工作單轉移。, +Allocate Payment Amount,分配付款金額, +Allow Multiple Material Consumption,允許多種材料消耗, +Allowed To Transact With,允許與, +Already record exists for the item {0},已有記錄存在項目{0}, +"Already set default in pos profile {0} for user {1}, kindly disabled default",已經在用戶{1}的pos配置文件{0}中設置了默認值,請禁用默認值, +Alternate Item,替代項目, +Alternative item must not be same as item code,替代項目不能與項目代碼相同, +Amount {0} {1} against {2} {3},量{0} {1}對{2} {3}, +Amount {0} {1} deducted against {2},金額{0} {1}抵扣{2}, +Amount {0} {1} transferred from {2} to {3},金額{0} {1}從轉移{2}到{3}, +Amount {0} {1} {2} {3},金額{0} {1} {2} {3}, +An error occurred during the update process,更新過程中發生錯誤, +Another Budget record '{0}' already exists against {1} '{2}' and account '{3}' for fiscal year {4},對於財務年度{4},{1}'{2}'和科目“{3}”已存在另一個預算記錄“{0}”, +Application of Funds (Assets),基金中的應用(資產), +Appointment,約定, +Appointment Confirmation,預約確認, +Approving Role cannot be same as role the rule is Applicable To,審批角色作為角色的規則適用於不能相同, +Approving User cannot be same as user the rule is Applicable To,批准用戶作為用戶的規則適用於不能相同, +As on Date,隨著對日, +Asset,財富, +Asset Category,資產類別, +Asset Category Account,資產類別的科目, +Asset Category is mandatory for Fixed Asset item,資產類別是強制性的固定資產項目, +Asset Depreciation Ledger,資產減值總帳, +Asset Depreciations and Balances,資產折舊和平衡, +Asset Finance Book,資產融資書, +Asset Maintenance,資產維護, +Asset Maintenance Log,資產維護日誌, +Asset Maintenance Task,資產維護任務, +Asset Maintenance Team,資產維護團隊, +Asset Movement,資產運動, +Asset Movement record {0} created,資產運動記錄{0}創建, +Asset Name,資產名稱, +Asset Received But Not Billed,已收到但未收費的資產, +Asset Repair,資產修復, +Asset Value Adjustment,資產價值調整, +"Asset cannot be cancelled, as it is already {0}",資產不能被取消,因為它已經是{0}, +Asset scrapped via Journal Entry {0},通過資產日記帳分錄報廢{0}, +"Asset {0} cannot be scrapped, as it is already {1}",資產{0}不能被廢棄,因為它已經是{1}, +Asset {0} does not belong to company {1},資產{0}不屬於公司{1}, +Asset {0} must be submitted,資產{0}必須提交, +Assets,資產, +At least one mode of payment is required for POS invoice.,付款中的至少一個模式需要POS發票。, +Atleast one item should be entered with negative quantity in return document,ATLEAST一個項目應該負數量回報文檔中輸入, +Atleast one of the Selling or Buying must be selected,至少需選擇銷售或購買, +Atleast one warehouse is mandatory,至少要有一間倉庫, +Attribute table is mandatory,屬性表是強制性的, +Attribute {0} selected multiple times in Attributes Table,屬性{0}多次選擇在屬性表, +Attributes,屬性, +Auditor,核數師, +Authorization Control,授權控制, +Authorization Rule,授權規則, +Authorized Signatory,授權簽字人, +Auto Material Requests Generated,汽車材料的要求生成, +Auto repeat document updated,自動重複文件更新, +Available Qty,可用數量, +Available Stock for Packing Items,可用庫存包裝項目, +Available-for-use Date should be after purchase date,可供使用的日期應在購買日期之後, +Average Age,平均年齡, +Avg Daily Outgoing,平均每日傳出, +Avg. Buying Price List Rate,平均。買價格表價格, +Avg. Selling Price List Rate,平均。出售價目表率, +Avg. Selling Rate,平均。賣出價, +BOM Explosion Item,BOM展開項目, +BOM Item,BOM項目, +BOM No,BOM No., +BOM Operation,BOM的操作, +BOM Rate,BOM率, +BOM Scrap Item,BOM項目廢料, +BOM Search,BOM搜索, +BOM Stock Calculated,BOM庫存計算, +BOM Stock Report,BOM庫存報告, +BOM Update Tool,BOM更新工具, +BOM Variance Report,BOM差異報告, +BOM Website Item,BOM網站項目, +BOM Website Operation,BOM網站運營, +BOM and Manufacturing Quantity are required,BOM和生產量是必需的, +BOM does not contain any stock item,BOM不包含任何庫存項目, +BOM {0} does not belong to Item {1},BOM {0}不屬於項目{1}, +BOM {0} must be active,BOM {0}必須是積極的, +BOM {0} must be submitted,BOM {0}必須提交, +Balance,餘額, +Balance (Dr - Cr),平衡(Dr - Cr), +Balance ({0}),餘額({0}), +Balance Qty,餘額數量, +Balance Sheet,資產負債表, +Balance Value,餘額, +Balance for Account {0} must always be {1},科目{0}的餘額必須始終為{1}, +Bank,銀行, +Bank Account,銀行帳戶, +Bank Accounts,銀行帳戶, +Bank Clearance Summary,銀行結算摘要, +Bank Draft,銀行匯票, +Bank Guarantee,銀行擔保, +Bank Overdraft Account,銀行透支戶口, +Bank Reconciliation Statement,銀行對帳表, +Bank Statement balance as per General Ledger,銀行對賬單餘額按總帳, +Bank account cannot be named as {0},銀行科目不能命名為{0}, +Banking,銀行業, +Barcode {0} already used in Item {1},條碼{0}已經用在項目{1}, +Barcode {0} is not a valid {1} code,條形碼{0}不是有效的{1}代碼, +Batch,批量, +Batch ID is mandatory,批號是必需的, +Batch Item Expiry Status,批處理項到期狀態, +Batch No,批號, +Batch {0} of Item {1} has expired.,一批項目的{0} {1}已過期。, +Batch {0} of Item {1} is disabled.,項目{1}的批處理{0}已禁用。, +Batch-Wise Balance History,間歇式平衡歷史, +Bill Date,帳單日期, +Bill No,帳單號碼, +Bill of Materials,材料清單, +Billed,計費, +Billed Amount,帳單金額, +Billing Amount,開票金額, +Billing Hours,結算時間, +Billing Status,計費狀態, +Billing currency must be equal to either default company's currency or party account currency,帳單貨幣必須等於默認公司的貨幣或科目幣種, +Bin,箱子, +Blanket Order,總訂單, +Blanket Order Item,一攬子訂單項目, +Block Invoice,阻止發票, +Booked,預訂, +Both Trial Period Start Date and Trial Period End Date must be set,必須設置試用期開始日期和試用期結束日期, +Branch,分支機構, +Budget,預算, +Budget Account,預算科目, +Budget Against,反對財政預算案, +Budget List,預算清單, +Budget Variance Report,預算差異報告, +Budget cannot be assigned against Group Account {0},不能指定預算給群組帳目{0}, +"Budget cannot be assigned against {0}, as it's not an Income or Expense account",財政預算案不能對{0}指定的,因為它不是一個收入或支出科目, +Buy,購買, +Buying,採購, +Buying Amount,購買金額, +Buying Price List,買價格表, +Buying Rate,購買率, +Buying Settings,採購設定, +"Buying must be checked, if Applicable For is selected as {0}",採購必須進行檢查,如果適用於被選擇為{0}, +CWIP Account,CWIP科目, +Calculated Bank Statement balance,計算的銀行對賬單餘額, +Campaign,競賽, +Campaign Efficiency,運動效率, +Can be approved by {0},可以通過{0}的批准, +"Can not filter based on Voucher No, if grouped by Voucher",是凍結的帳戶。要禁止該帳戶創建/編輯事務,你需要有指定的身份, +Can only make payment against unbilled {0},只能使支付對未付款的{0}, +Can refer row only if the charge type is 'On Previous Row Amount' or 'Previous Row Total',可以參考的行只有在充電類型是“在上一行量'或'前行總計”, +Cancel Material Visit {0} before cancelling this Warranty Claim,材質訪問{0}之前取消此保修索賠取消, +Cancel Material Visits {0} before cancelling this Maintenance Visit,取消取消此保養訪問之前,材質訪問{0}, +Cancel Subscription,取消訂閱, +Cannot be a fixed asset item as Stock Ledger is created.,不能成為庫存分類賬創建的固定資產項目。, +Cannot cancel because submitted Stock Entry {0} exists,不能取消,因為提交庫存輸入{0}存在, +Cannot cancel transaction for Completed Work Order.,無法取消已完成工單的交易。, +Cannot change Attributes after stock transaction. Make a new Item and transfer stock to the new Item,庫存交易後不能更改屬性。創建一個新項目並將庫存轉移到新項目, +Cannot change Fiscal Year Start Date and Fiscal Year End Date once the Fiscal Year is saved.,不能更改財政年度開始日期和財政年度結束日期,一旦會計年度被保存。, +Cannot change Service Stop Date for item in row {0},無法更改行{0}中項目的服務停止日期, +Cannot change Variant properties after stock transaction. You will have to make a new Item to do this.,庫存交易後不能更改Variant屬性。你將不得不做一個新的項目來做到這一點。, +"Cannot change company's default currency, because there are existing transactions. Transactions must be cancelled to change the default currency.",不能改變公司的預設貨幣,因為有存在的交易。交易必須取消更改預設貨幣。, +Cannot convert Cost Center to ledger as it has child nodes,不能成本中心轉換為總賬,因為它有子節點, +Cannot covert to Group because Account Type is selected.,不能轉換到群組科目,因為科目類型選擇的。, +Cannot deactivate or cancel BOM as it is linked with other BOMs,無法關閉或取消BOM,因為它是與其他材料明細表鏈接, +"Cannot declare as lost, because Quotation has been made.",不能聲明為丟失,因為報價已經取得進展。, +Cannot deduct when category is for 'Valuation' or 'Valuation and Total',不能抵扣當類別為“估值”或“估值及總', +"Cannot delete Serial No {0}, as it is used in stock transactions",無法刪除序列號{0},因為它採用的是現貨交易, +Cannot produce more Item {0} than Sales Order quantity {1},無法產生更多的項目{0}不是銷售訂單數量{1}, +Cannot refer row number greater than or equal to current row number for this Charge type,不能引用的行號大於或等於當前行號碼提供給充電式, +Cannot select charge type as 'On Previous Row Amount' or 'On Previous Row Total' for first row,不能選擇充電式為'在上一行量'或'在上一行總'的第一行, +Cannot set as Lost as Sales Order is made.,不能設置為失落的銷售訂單而成。, +Cannot set authorization on basis of Discount for {0},不能在折扣的基礎上設置授權{0}, +Cannot set multiple Item Defaults for a company.,無法為公司設置多個項目默認值。, +Capital Equipments,資本設備, +Capital Work in Progress,資本工作正在進行中, +Cash,現金, +Cash Flow,現金周轉, +Cash Flow Statement,現金流量表, +Cash Flow from Financing,從融資現金流, +Cash Flow from Investing,從投資現金流, +Cash Flow from Operations,運營現金流, +Cash In Hand,手頭現金, +Cash or Bank Account is mandatory for making payment entry,製作付款分錄時,現金或銀行科目是強制性輸入的欄位。, +Cashier,出納員, +Cashier Closing,收銀員關閉, +Cashier Closing Payments,收銀員結算付款, +Change Release Date,更改發布日期, +Changing Customer Group for the selected Customer is not allowed.,不允許更改所選客戶的客戶組。, +Chart,圖表, +Chart of Cost Centers,成本中心的圖, +Cheque/Reference Date,支票/參考日期, +Cheque/Reference No,支票/參考編號, +Cheques Required,需要檢查, +Cheques and Deposits incorrectly cleared,支票及存款不正確清除, +Child Task exists for this Task. You can not delete this Task.,子任務存在這個任務。你不能刪除這個任務。, +Child nodes can be only created under 'Group' type nodes,子節點可以在'集團'類型的節點上創建, +Child warehouse exists for this warehouse. You can not delete this warehouse.,兒童倉庫存在這個倉庫。您不能刪除這個倉庫。, +Circular Reference Error,循環引用錯誤, +Clearance Date,清拆日期, +Clearance Date not mentioned,清拆日期未提及, +Clearance Date updated,間隙更新日期, +Closed Document,關閉文件, +Closed order cannot be cancelled. Unclose to cancel.,關閉的定單不能被取消。 Unclose取消。, +Closing (Cr),關閉(Cr), +Closing (Dr),關閉(Dr), +Closing (Opening + Total),閉幕(開幕+總計), +Closing Account {0} must be of type Liability / Equity,關閉科目{0}的類型必須是負債/權益, +Collapse All,全部收縮, +Colour,顏色, +Commercial,商業, +Commission on Sales,銷售佣金, +Company Abbreviation,公司縮寫, +Company Abbreviation cannot have more than 5 characters,公司縮寫不能超過5個字符, +Company Name,公司名稱, +Company Name cannot be Company,公司名稱不能為公司, +Company currencies of both the companies should match for Inter Company Transactions.,兩家公司的公司貨幣應該符合Inter公司交易。, +Company is manadatory for company account,公司是公司科目的管理者, +Company name not same,公司名稱不一樣, +Completed Work Orders,完成的工作訂單, +Consolidated Financial Statement,合併財務報表, +Consumed,消費, +Consumed Qty,消耗的數量, +Contract Fulfilment Checklist,合同履行清單, +Contract Template Fulfilment Terms,合同模板履行條款, +Contribution Amount,貢獻金額, +Conversion Factor,轉換因子, +Conversion Rate,兌換率, +Conversion factor for default Unit of Measure must be 1 in row {0},預設計量單位的轉換因子必須是1在行{0}, +Convert to Group,轉換為集團, +Convert to Group,轉換為集團,Warehouse +Converted,轉換, +Cost Center Number,成本中心編號, +Cost Center is required in row {0} in Taxes table for type {1},成本中心是必需的行{0}稅表型{1}, +Cost Center with existing transactions can not be converted to group,與現有的交易成本中心,不能轉化為組, +Cost Center with existing transactions can not be converted to ledger,與現有的交易成本中心,不能轉換為總賬, +Cost of Delivered Items,交付項目成本, +Cost of Goods Sold,銷貨成本, +Cost of Issued Items,發布項目成本, +Cost of Purchased Items,購買的物品成本, +Cost of various activities,各種活動的費用, +"Could not create Credit Note automatically, please uncheck 'Issue Credit Note' and submit again",無法自動創建Credit Note,請取消選中'Issue Credit Note'並再次提交, +Could not find path for ,找不到路徑, +Could not retrieve information for {0}.,無法檢索{0}的信息。, +Could not solve criteria score function for {0}. Make sure the formula is valid.,無法解決{0}的標準分數函數。確保公式有效。, +Could not solve weighted score function. Make sure the formula is valid.,無法解決加權分數函數。確保公式有效。, +"Could not update stock, invoice contains drop shipping item.",無法更新庫存,發票包含下降航運項目。, +Cr,鉻, +Create Employee Records,建立員工檔案, +Create Leads,建立潛在客戶, +Create Print Format,創建打印格式, +Create Purchase Order,創建採購訂單, +Create Purchase Orders,創建採購訂單, +Create Sales Order,創建銷售訂單, +Create User,創建用戶, +Create Users,創建用戶, +Create Variant,創建變體, +Create customer quotes,創建客戶報價, +Credit,信用, +Credit Account,信用科目, +Credit Balance,貸方餘額, +Credit Limit,信用額度, +Credit Note,信用票據, +Credit Note Amount,信用額度, +Credit Note Issued,信用票據發行, +Credit Note {0} has been created automatically,信用票據{0}已自動創建, +Credit limit has been crossed for customer {0} ({1}/{2}),客戶{0}({1} / {2})的信用額度已超過, +Creditors,債權人, +Currency Exchange,外幣兌換, +Currency Exchange Settings,貨幣兌換設置, +Currency Exchange must be applicable for Buying or for Selling.,貨幣兌換必須適用於買入或賣出。, +Currency can not be changed after making entries using some other currency,貨幣不能使用其他貨幣進行輸入後更改, +Currency for {0} must be {1},貨幣{0}必須{1}, +Currency of the Closing Account must be {0},關閉科目的貨幣必須是{0}, +Currency of the price list {0} must be {1} or {2},價目表{0}的貨幣必須是{1}或{2}, +Currency should be same as Price List Currency: {0},貨幣應與價目表貨幣相同:{0}, +Current Assets,流動資產, +Current BOM and New BOM can not be same,當前BOM和新BOM不能相同, +Current Liabilities,流動負債, +Current Qty,目前數量, +Current Stock,當前庫存, +Customer,客戶, +Customer Acquisition and Loyalty,客戶取得和忠誠度, +Customer Addresses And Contacts,客戶的地址和聯絡方式, +Customer Contact,客戶聯絡, +Customer Credit Balance,客戶信用平衡, +Customer Group,客戶群組, +Customer LPO No.,客戶LPO號, +Customer Name,客戶名稱, +Customer Service,顧客服務, +Customer is required,客戶是必需的, +Customer isn't enrolled in any Loyalty Program,客戶未加入任何忠誠度計劃, +Customer required for 'Customerwise Discount',需要' Customerwise折扣“客戶, +Customer {0} does not belong to project {1},客戶{0}不屬於項目{1}, +Customers Without Any Sales Transactions,沒有任何銷售交易的客戶, +Customs Tariff Number,海關稅則號, +Daily Timesheet Summary,每日時間表摘要, +Date of Birth cannot be greater than today.,出生日期不能大於今天。, +Date of Commencement should be greater than Date of Incorporation,開始日期應大於公司註冊日期, +Days Since Last Order,天自上次訂購, +Debit ({0}),借記卡({0}), +Debit Note,繳費單, +Debit Note Amount,借方票據金額, +Debit To is required,借方是必填項, +Debit and Credit not equal for {0} #{1}. Difference is {2}.,借貸{0}#不等於{1}。區別是{2}。, +Debtors,債務人, +Default Activity Cost exists for Activity Type - {0},默認情況下存在作業成本的活動類型 - {0}, +Default BOM ({0}) must be active for this item or its template,預設BOM({0})必須是活動的這個項目或者其模板, +Default BOM for {0} not found,默認BOM {0}未找到, +Default Unit of Measure for Item {0} cannot be changed directly because you have already made some transaction(s) with another UOM. You will need to create a new Item to use a different Default UOM.,測度項目的默認單位{0}不能直接改變,因為你已經做了一些交易(S)與其他計量單位。您將需要創建一個新的項目,以使用不同的默認計量單位。, +Default Unit of Measure for Variant '{0}' must be same as in Template '{1}',測度變異的默認單位“{0}”必須是相同模板“{1}”, +Define Project type.,定義項目類型。, +Delay in payment (Days),延遲支付(天), +Delete all the Transactions for this Company,刪除所有交易本公司, +Deletion is not permitted for country {0},國家{0}不允許刪除, +Delivered,交付, +Delivered Amount,交付金額, +Delivered Items To Be Billed,交付項目要被收取, +Delivered Qty,交付數量, +Delivered: {0},交貨:{0}, +Delivery,交貨, +Delivery Date,交貨日期, +Delivery Note,送貨單, +Delivery Note Item,送貨單項目, +Delivery Note Trends,送貨單趨勢, +Delivery Note {0} is not submitted,送貨單{0}未提交, +Delivery Notes {0} updated,已更新交貨單{0}, +Delivery Settings,交貨設置, +Delivery Stop,交貨停止, +Delivery Trip,送貨之旅, +Delivery warehouse required for stock item {0},需要的庫存項目交割倉庫{0}, +Dependent Task,相關任務, +Depreciation,折舊, +Depreciation Amount,折舊額, +Depreciation Amount during the period,期間折舊額, +Depreciation Date,折舊日期, +Depreciation Eliminated due to disposal of assets,折舊淘汰因處置資產, +Depreciation Entry,折舊分錄, +Depreciation Row {0}: Expected value after useful life must be greater than or equal to {1},折舊行{0}:使用壽命後的預期值必須大於或等於{1}, +Depreciation Row {0}: Next Depreciation Date cannot be before Available-for-use Date,折舊行{0}:下一個折舊日期不能在可供使用的日期之前, +Depreciation Row {0}: Next Depreciation Date cannot be before Purchase Date,折舊行{0}:下一個折舊日期不能在購買日期之前, +Depreciation Schedule,折舊計劃, +Difference,區別, +Difference Account,差異科目, +"Difference Account must be a Asset/Liability type account, since this Stock Reconciliation is an Opening Entry",差異科目必須是資產/負債類型的科目,因為此庫存調整是一個開帳分錄, +Difference Amount,差額, +Difference Amount must be zero,差量必須是零, +Different UOM for items will lead to incorrect (Total) Net Weight value. Make sure that Net Weight of each item is in the same UOM.,不同計量單位的項目會導致不正確的(總)淨重值。確保每個項目的淨重是在同一個計量單位。, +Direct Expenses,直接費用, +Direct Income,直接收入, +Disabled template must not be default template,殘疾人模板必須不能默認模板, +Dispatch,調度, +Dispatch Notification,發貨通知, +Distributor,經銷商, +Do Not Contact,不要聯絡, +Do you really want to restore this scrapped asset?,難道你真的想恢復這個報廢的資產?, +Do you really want to scrap this asset?,難道你真的想放棄這項資產?, +Do you want to notify all the customers by email?,你想通過電子郵件通知所有的客戶?, +Docs Search,Google文檔搜索, +Dr,博士, +Driver,司機, +Driving License Category,駕駛執照類別, +Due / Reference Date cannot be after {0},由於/參考日期不能後{0}, +Due Date is mandatory,截止日期是強制性的, +Duplicate Entry. Please check Authorization Rule {0},重複的條目。請檢查授權規則{0}, +Duplicate customer group found in the cutomer group table,在CUTOMER組表中找到重複的客戶群, +Duplicate item group found in the item group table,在項目組表中找到重複的項目組, +Duplicate row {0} with same {1},重複的行{0}同{1}, +Duration,持續時間, +Duration in Days,持續時間天數, +Duties and Taxes,關稅和稅款, +Earnest Money,保證金, +Edit Posting Date and Time,編輯投稿時間, +Either location or employee must be required,必須要求地點或員工, +Either target qty or target amount is mandatory,無論是數量目標或目標量是必需的, +Either target qty or target amount is mandatory.,無論是數量目標或目標量是強制性的。, +Electrical,電子的, +Electronic Equipments,電子設備, +Email Digest,電子郵件摘要, +Email sent to {0},電子郵件發送到{0}, +Employee,僱員, +Employee Advances,員工發展, +Employee Education,員工教育, +Employee External Work History,員工對外工作歷史, +Employee Internal Work History,員工內部工作經歷, +Employee Name,員工姓名, +Employee cannot report to himself.,員工不能報告自己。, +End Date cannot be before Start Date.,結束日期不能在開始日期之前。, +End Year,結束年份, +End Year cannot be before Start Year,結束年份不能啟動年前, +Enough Parts to Build,足夠的配件組裝, +Enter depreciation details,輸入折舊明細, +Enter the Bank Guarantee Number before submittting.,在提交之前輸入銀行保證號碼。, +Enter the name of the Beneficiary before submittting.,在提交之前輸入受益人的姓名。, +Enter the name of the bank or lending institution before submittting.,在提交之前輸入銀行或貸款機構的名稱。, +Entertainment Expenses,娛樂費用, +Equity,公平, +Error evaluating the criteria formula,評估標準公式時出錯, +Estimated Cost,估計成本, +Exchange Gain/Loss,兌換收益/損失, +Exchange Rate Revaluation,匯率重估, +Exchange Rate Revaluation Account,匯率重估科目, +Exchange Rate must be same as {0} {1} ({2}),匯率必須一致{0} {1}({2}), +Excise Invoice,消費稅發票, +Execution,執行, +Expected Delivery Date,預計交貨日期, +Expected Delivery Date should be after Sales Order Date,預計交貨日期應在銷售訂單日期之後, +Expected End Date,預計結束日期, +Expected Hrs,預計的小時數, +Expected Start Date,預計開始日期, +Expense,費用, +Expense / Difference account ({0}) must be a 'Profit or Loss' account,費用/差異科目({0})必須是一個'收益或損失'的科目, +Expense Account,費用科目, +Expense account is mandatory for item {0},交際費是強制性的項目{0}, +Expenses,開支, +Expenses Included In Asset Valuation,資產評估中包含的費用, +Expenses Included In Valuation,支出計入估值, +Expired Batches,過期批次, +Expiry (In Days),到期(天數), +Extra Large,特大號, +Failed to install presets,無法安裝預設, +Failed to login,登錄失敗, +Failed to setup company,未能成立公司, +Fetch Subscription Updates,獲取訂閱更新, +Fetch exploded BOM (including sub-assemblies),取得爆炸BOM(包括子組件), +Filter Total Zero Qty,過濾器總計零數量, +Finance Book,金融書, +Financial Statements,財務報表, +Finish,完, +Fiscal Year,財政年度, +Fiscal Year Company,會計年度公司, +Fiscal Year Start Date and Fiscal Year End Date are already set in Fiscal Year {0},會計年度開始日期和財政年度結束日期已經在財政年度設置{0}, +Fiscal Year {0} does not exist,會計年度{0}不存在, +Fiscal Year {0} is required,會計年度{0}是必需的, +Fixed Asset,固定資產, +Fixed Asset Item must be a non-stock item.,固定資產項目必須是一個非庫存項目。, +Fixed Assets,固定資產, +Fleet Manager,車隊經理, +Following Material Requests have been raised automatically based on Item's re-order level,下列資料的要求已自動根據項目的重新排序水平的提高, +Following item {0} is not marked as {1} item. You can enable them as {1} item from its Item master,項目{0}之後未標記為{1}項目。您可以從項目主文件中將它們作為{1}項啟用, +Following items {0} are not marked as {1} item. You can enable them as {1} item from its Item master,以下項{0}未標記為{1}項。您可以從項目主文件中將它們作為{1}項啟用, +For,對於, +"For 'Product Bundle' items, Warehouse, Serial No and Batch No will be considered from the 'Packing List' table. If Warehouse and Batch No are same for all packing items for any 'Product Bundle' item, those values can be entered in the main Item table, values will be copied to 'Packing List' table.",對於“產品包”的物品,倉庫,序列號和批號將被從“裝箱單”表考慮。如果倉庫和批次號是相同的任何“產品包”項目的所有包裝物品,這些值可以在主項表中輸入,值將被複製到“裝箱單”表。, +For Quantity (Manufactured Qty) is mandatory,對於數量(製造數量)是強制性的, +For Supplier,對供應商, +For Warehouse,對於倉庫, +For Warehouse is required before Submit,對於倉庫之前,需要提交, +"For an item {0}, quantity must be negative number",對於商品{0},數量必須是負數, +"For an item {0}, quantity must be positive number",對於商品{0},數量必須是正數, +"For row {0} in {1}. To include {2} in Item rate, rows {3} must also be included",對於行{0} {1}。以包括{2}中的檔案速率,行{3}也必須包括, +Forum Activity,論壇活動, +Freight and Forwarding Charges,貨運代理費, +From Currency and To Currency cannot be same,原始貨幣和目標貨幣不能相同, +From Date and To Date lie in different Fiscal Year,從日期和到期日位於不同的財政年度, +From Date cannot be greater than To Date,起始日期不能大於結束日期, +From Date must be before To Date,起始日期必須早於終點日期, +From Date should be within the Fiscal Year. Assuming From Date = {0},從日期應該是在財政年度內。假設起始日期={0}, +From Datetime,從日期時間, +From Delivery Note,從送貨單, +From Fiscal Year,從財政年度開始, +From Range has to be less than To Range,從範圍必須小於要範圍, +From Time,從時間, +From Time Should Be Less Than To Time,從時間應該少於時間, +From value must be less than to value in row {0},來源值必須小於列{0}的值, +Fulfillment,履行, +Fulfillment User,履行用戶, +Fully Depreciated,已提足折舊, +Furnitures and Fixtures,家具及固定裝置, +"Further accounts can be made under Groups, but entries can be made against non-Groups",進一步帳戶可以根據組進行,但條目可針對非組進行, +Further cost centers can be made under Groups but entries can be made against non-Groups,進一步的成本中心可以根據組進行,但項可以對非組進行, +GL Entry,GL報名, +Gain/Loss on Asset Disposal,在資產處置收益/損失, +Gantt Chart,甘特圖, +Gantt chart of all tasks.,所有任務的甘特圖。, +General Ledger,總帳, +General Ledger,總帳,Warehouse +Get Items from BOM,從物料清單取得項目, +Get Items from Product Bundle,從產品包取得項目, +Get Payment Entries,獲取付款項, +Get Suppliers,獲取供應商, +Get Suppliers By,獲得供應商, +Get Unreconciled Entries,獲取未調節項, +Get Updates,獲取更新, +Global Defaults,全域預設值, +Grand Total,累計, +Gross Profit / Loss,總利潤/虧損, +Gross Purchase Amount,總購買金額, +Gross Purchase Amount is mandatory,總消費金額是強制性, +Group By,集團通過, +Group by Account,以科目分群組, +Group by Voucher,集團透過券, +Group node warehouse is not allowed to select for transactions,組節點倉庫不允許選擇用於交易, +Groups,組, +HR Manager,人力資源經理, +HR User,HR用戶, +Help Results for,幫助結果, +Hold,持有, +Hold Invoice,保留發票, +Holiday,節日, +Holiday List,假日列表, +Homepage,主頁, +Hours,小時, +Human Resources,人力資源, +Identifying Decision Makers,確定決策者, +Import in Bulk,進口散裝, +In Maintenance,在維護中, +In Production,在生產中, +In Qty,在數量, +In Stock Qty,庫存數量, +In Value,在數值, +Inactive Customers,不活躍的客戶, +Incentives,獎勵, +Include Exploded Items,包含爆炸物品, +Income,收入, +Income Account,收入科目, +Incoming,來, +Incoming Rate,傳入速率, +Incorrect number of General Ledger Entries found. You might have selected a wrong Account in the transaction.,不正確的數字總帳條目中找到。你可能會在交易中選擇了錯誤的科目。, +Indirect Expenses,間接費用, +Indirect Income,間接收入, +Individual,個人, +Industry Type,行業類型, +Initiated,啟動, +Inspected By,檢查, +Inspection Required,需要檢驗, +Inspection Type,檢驗類型, +Installation Note,安裝注意事項, +Installation Note Item,安裝注意項, +Installation Note {0} has already been submitted,安裝注意{0}已提交, +Installation date cannot be before delivery date for Item {0},品項{0}的安裝日期不能早於交貨日期, +Installing presets,安裝預置, +Insufficient Stock,庫存不足, +Insurance Start date should be less than Insurance End date,保險開始日期應小於保險終止日期, +Interested,有興趣, +Internal Transfer,內部轉賬, +Invalid Attribute,無效屬性, +Invalid Blanket Order for the selected Customer and Item,所選客戶和物料的無效總訂單, +Invalid Posting Time,發佈時間無效, +Invalid reference {0} {1},無效的參考{0} {1}, +Invalid {0},無效的{0}, +Invalid {0}: {1},無效的{0}:{1}, +Investments,投資, +Invoice,發票, +Invoice Portion,發票部分, +Invoice Posting Date,發票發布日期, +Invoice Type,發票類型, +Invoice already created for all billing hours,發票已在所有結算時間創建, +Invoice can't be made for zero billing hour,在零計費時間內無法開具發票, +Invoiced Amount,發票金額, +Invoices,發票, +Is Frozen,就是冰凍, +Is Group,是集團, +Is Return,退貨, +Issue,問題, +Issue Material,發行材料, +Issue Type,發行類型, +Issued,發行, +Issued Items Against Work Order,針對工單發布物品, +Issues,問題, +It is needed to fetch Item Details.,需要獲取項目細節。, +Item,項目, +Item Alternative,項目選擇, +Item Attribute,項目屬性, +Item Attribute Value,項目屬性值, +Item Balance (Simple),物品餘額(簡單), +Item Barcode,商品條碼, +Item Code,產品編號, +Item Code cannot be changed for Serial No.,產品編號不能為序列號改變, +Item Code required at Row No {0},於列{0}需要產品編號, +Item Customer Detail,項目客戶詳細, +Item Default,項目默認值, +Item Group,項目群組, +Item Group Tree,項目群組的樹狀結構, +Item Group not mentioned in item master for item {0},項目{0}之項目主檔未提及之項目群組, +Item Manager,項目經理, +Item Name,項目名稱, +Item Price,商品價格, +Item Price Stock,項目價格庫存, +Item Price added for {0} in Price List {1},加入項目價格為{0}價格表{1}, +Item Price updated for {0} in Price List {1},項目價格更新{0}價格表{1}, +Item Prices,產品價格, +Item Quality Inspection Parameter,產品質量檢驗參數, +Item Reorder,項目重新排序, +Item Row {0}: {1} {2} does not exist in above '{1}' table,項目行{0}:{1} {2}在上面的“{1}”表格中不存在, +Item Shortage Report,商品短缺報告, +Item Supplier,產品供應商, +Item Tax,產品稅, +Item Tax Row {0} must have account of type Tax or Income or Expense or Chargeable,"商品稅行{0}必須有科目類型為""稅"" 或 ""收入"" 或 ""支出"" 或 ""課稅的""", +Item Variant,項目變, +Item Variant Attribute,產品規格屬性, +Item Variant Details,項目變體的詳細信息, +Item Variant Settings,項目變式設置, +Item Variant {0} already exists with same attributes,項目變種{0}已經具有相同屬性的存在, +Item Website Specification,項目網站規格, +Item has variants.,項目已變種。, +Item must be added using 'Get Items from Purchase Receipts' button,項目必須使用'從採購入庫“按鈕進行新增, +Item variant {0} exists with same attributes,項目變種{0}存在具有相同屬性, +Item {0} does not exist,項目{0}不存在, +Item {0} does not exist in the system or has expired,項目{0}不存在於系統中或已過期, +Item {0} has already been returned,項{0}已被退回, +Item {0} has been disabled,項{0}已被禁用, +Item {0} has reached its end of life on {1},項{0}已達到其壽命結束於{1}, +Item {0} ignored since it is not a stock item,項目{0}被忽略,因為它不是一個庫存項目, +Item {0} is cancelled,項{0}將被取消, +Item {0} is disabled,項目{0}無效, +Item {0} is not a serialized Item,項{0}不是一個序列化的項目, +Item {0} is not a stock Item,項{0}不是缺貨登記, +Item {0} is not active or end of life has been reached,項目{0}不活躍或生命的盡頭已經達到, +Item {0} must be a Fixed Asset Item,項{0}必須是固定資產項目, +Item {0} must be a Sub-contracted Item,項{0}必須是一個小項目簽約, +Item {0} must be a non-stock item,項{0}必須是一個非庫存項目, +Item {0}: Ordered qty {1} cannot be less than minimum order qty {2} (defined in Item).,項目{0}:有序數量{1}不能低於最低訂貨量{2}(項中定義)。, +Item-wise Price List Rate,全部項目的價格表, +Item-wise Purchase History,全部項目的購買歷史, +Item-wise Purchase Register,項目明智的購買登記, +Item-wise Sales History,項目明智的銷售歷史, +Item-wise Sales Register,項目明智的銷售登記, +Item: {0} does not exist in the system,項:{0}不存在於系統中, +Items,項目, +Items Filter,物品過濾, +Items To Be Requested,需求項目, +Items and Pricing,項目和定價, +Itemwise Recommended Reorder Level,Itemwise推薦級別重新排序, +Job Card Item,工作卡項目, +Job card {0} created,已創建作業卡{0}, +Journal Entries {0} are un-linked,日記條目{0}都是非聯, +Journal Entry,日記帳分錄, +Journal Entry Account,日記帳分錄帳號, +Journal Entry {0} does not have account {1} or already matched against other voucher,日記條目{0}沒有帳號{1}或已經匹配其他憑證, +Landed Cost Item,到岸成本項目, +Landed Cost Purchase Receipt,到岸成本採購入庫單, +Landed Cost Taxes and Charges,到岸成本稅費, +Landed Cost Voucher,到岸成本憑證, +Last Communication,最後溝通, +Last Communication Date,最後通訊日期, +Last Order Amount,最後訂單金額, +Last Order Date,最後訂購日期, +Last Purchase Rate,最後預訂價, +Lead,潛在客戶, +Lead Count,鉛計數, +Lead Details,潛在客戶詳情, +Lead Name,主導者名稱, +Lead Owner,主導擁有者, +Lead Owner Efficiency,主導效率, +Lead Source,主導來源, +Lead Time Days,交貨期天, +"Leads help you get business, add all your contacts and more as your leads",信息幫助你的業務,你所有的聯繫人和更添加為您的線索, +Ledger,分類帳, +Legal Expenses,法律費用, +Liability,責任, +Link to Material Request,鏈接到材料請求, +Linked Location,鏈接位置, +Loans (Liabilities),借款(負債), +Loans and Advances (Assets),貸款及墊款(資產), +Local,當地, +Lost,丟失, +Lost Quotation,遺失報價, +Lost Reason,失落的原因, +Lower Income,較低的收入, +Loyalty Point Entry,忠誠度積分, +Loyalty Point Entry Redemption,忠誠度積分兌換, +Loyalty Points,忠誠度積分, +Loyalty Program,忠誠計劃, +Loyalty Program Collection,忠誠度計劃集, +Main,主頁, +Maintenance,維護, +Maintenance Log,維護日誌, +Maintenance Schedule,維護計劃, +Maintenance Schedule Detail,維護計劃細節, +Maintenance Schedule Item,維護計劃項目, +Maintenance Schedule is not generated for all the items. Please click on 'Generate Schedule',維護計畫不會為全部品項生成。請點擊“生成表”, +Maintenance Schedule {0} exists against {1},針對{1}存在維護計劃{0}, +Maintenance Schedules,保養時間表, +Maintenance Status has to be Cancelled or Completed to Submit,維護狀態必須取消或完成提交, +Maintenance Team Member,維護團隊成員, +Maintenance Visit,維護訪問, +Maintenance Visit Purpose,維護訪問目的, +Maintenance start date can not be before delivery date for Serial No {0},序號{0}的維護開始日期不能早於交貨日期, +Make ,使, +Make Quotation,請報價, +Manage your orders,管理您的訂單, +Management,管理, +Manufacture,製造, +Manufactured Qty,生產數量, +Manufacturer,生產廠家, +Manufacturer Part Number,製造商零件編號, +Manufacturing,製造, +Manufacturing Manager,生產經理, +Manufacturing Quantity is mandatory,生產數量是必填的, +Manufacturing Settings,製造設定, +Manufacturing User,製造業用戶, +Market Segment,市場分類, +Marketing,市場營銷, +Marketing Expenses,市場推廣開支, +Master,主, +Masters,資料主檔, +Material Consumption is not set in Manufacturing Settings.,材料消耗未在生產設置中設置。, +Material Receipt,收料, +Material Request,物料需求, +Material Request Date,材料申請日期, +Material Request Item,物料需求項目, +Material Request Plan Item,材料申請計劃項目, +Material Request of maximum {0} can be made for Item {1} against Sales Order {2},針對銷售訂單{2}的項目{1},最多可以有 {0} 被完成。, +Material Request {0} is cancelled or stopped,材料需求{0}被取消或停止, +Material Requests for which Supplier Quotations are not created,尚未建立供應商報價的材料需求, +Material Transfer,物料轉倉, +Material to Supplier,材料到供應商, +Max: {0},最大數量:{0}, +Maximum Samples - {0} can be retained for Batch {1} and Item {2}.,可以為批次{1}和項目{2}保留最大樣本數量{0}。, +Maximum Samples - {0} have already been retained for Batch {1} and Item {2} in Batch {3}.,批次{1}和批次{3}中的項目{2}已保留最大樣本數量{0}。, +Merge,合併, +Merge Account,合併科目, +Merge with Existing Account,與現有科目合併, +Message Sent,發送訊息, +Min Qty can not be greater than Max Qty,最小數量不能大於最大數量, +Minimum Lead Age (Days),最低鉛年齡(天), +Miscellaneous Expenses,雜項開支, +Missing email template for dispatch. Please set one in Delivery Settings.,缺少發送的電子郵件模板。請在“傳遞設置”中設置一個。, +Mobile,移動, +Mobile Number,手機號碼, +Mode of Payment Account,支付帳戶模式, +Monthly Distribution,月度分佈, +Monthly Distribution Percentage,每月分配比例, +Move Item,移動項目, +Multi Currency,多幣種, +"Multiple Price Rules exists with same criteria, please resolve conflict by assigning priority. Price Rules: {0}",海報價格規則,同樣的標準存在,請通過分配優先解決衝突。價格規則:{0}, +Multiple Variants,多種變體, +Multiple fiscal years exist for the date {0}. Please set company in Fiscal Year,多個會計年度的日期{0}存在。請設置公司財年, +Must be Whole Number,必須是整數, +Name of new Account. Note: Please don't create accounts for Customers and Suppliers,新帳戶的名稱。注:請不要創建帳戶的客戶和供應商, +Negative Quantity is not allowed,負數量是不允許, +Negative Valuation Rate is not allowed,負面評價率是不允許的, +Negotiation/Review,談判/評論, +Net Asset value as on,淨資產值作為, +Net Cash from Financing,從融資淨現金, +Net Cash from Investing,從投資淨現金, +Net Cash from Operations,從運營的淨現金, +Net Change in Accounts Payable,應付帳款淨額變化, +Net Change in Accounts Receivable,應收帳款淨額變化, +Net Change in Cash,現金淨變動, +Net Change in Equity,在淨資產收益變化, +Net Change in Fixed Asset,在固定資產淨變動, +Net Change in Inventory,在庫存淨變動, +Net Total,總淨值, +New Account Name,新帳號名稱, +New BOM,新的物料清單, +New Batch ID (Optional),新批號(可選), +New Company,新公司, +New Cost Center Name,新的成本中心名稱, +New Customer Revenue,新客戶收入, +New Customers,新客戶, +New Department,新部門, +New Employee,新員工, +New Sales Person Name,新銷售人員的姓名, +New Serial No cannot have Warehouse. Warehouse must be set by Stock Entry or Purchase Receipt,新的序列號不能有倉庫。倉庫必須由存貨分錄或採購入庫單進行設定, +New Warehouse Name,新倉庫名稱, +New credit limit is less than current outstanding amount for the customer. Credit limit has to be atleast {0},新的信用額度小於當前餘額為客戶著想。信用額度是ATLEAST {0}, +New task,新任務, +No Delivery Note selected for Customer {},沒有為客戶{}選擇送貨單, +No Item with Barcode {0},沒有條碼{0}的品項, +No Item with Serial No {0},沒有序號{0}的品項, +No Items with Bill of Materials to Manufacture,不與物料清單的項目,以製造, +No Permission,無權限, +No Remarks,暫無產品說明, +No accounting entries for the following warehouses,沒有以下的倉庫會計分錄, +No contacts with email IDs found.,找不到與電子郵件ID的聯繫人。, +No data for this period,此期間沒有數據, +No items to be received are overdue,沒有收到的物品已逾期, +No material request created,沒有創建重要請求, +No of Interactions,沒有相互作用, +No of Shares,股份數目, +No pending Material Requests found to link for the given items.,找不到針對給定項目鏈接的待處理物料請求。, +No products found.,找不到產品。, +No record found,沒有資料, +No {0} found for Inter Company Transactions.,Inter公司沒有找到{0}。, +Non Profit,非營利, +None of the items have any change in quantity or value.,沒有一個項目無論在數量或價值的任何變化。, +Not Started,未啟動, +Not allow to set alternative item for the item {0},不允許為項目{0}設置替代項目, +Not allowed to update stock transactions older than {0},不允許更新比{0}舊的庫存交易, +Not authorized to edit frozen Account {0},無權修改凍結帳戶{0}, +Not authroized since {0} exceeds limits,不允許因為{0}超出範圍, +Note: Due / Reference Date exceeds allowed customer credit days by {0} day(s),註:由於/參考日期由{0}天超過了允許客戶的信用天數(S), +Note: Payment Entry will not be created since 'Cash or Bank Account' was not specified,注:付款項將不會被創建因為“現金或銀行科目”未指定, +Note: This Cost Center is a Group. Cannot make accounting entries against groups.,注:該成本中心是一個集團。不能讓反對團體的會計分錄。, +Notes,筆記, +Nothing more to show.,沒有更多的表現。, +Notify Customers via Email,通過電子郵件通知客戶, +Number of Interaction,交互次數, +Number of Order,訂購數量, +"Number of new Account, it will be included in the account name as a prefix",新帳號的數量,將作為前綴包含在帳號名稱中, +"Number of new Cost Center, it will be included in the cost center name as a prefix",新成本中心的數量,它將作為前綴包含在成本中心名稱中, +Office Equipments,辦公設備, +Office Maintenance Expenses,Office維護費用, +Office Rent,辦公室租金, +On Hold,等候接聽, +Open Notifications,打開通知, +Open Projects,打開項目, +Open Work Orders,打開工作訂單, +Open a new ticket,打開一張新票, +Opening,開盤, +Opening (Cr),開啟(Cr ), +Opening (Dr),開啟(Dr), +Opening Accumulated Depreciation,打開累計折舊, +Opening Balance Equity,期初餘額權益, +Opening Invoice Creation Tool,打開發票創建工具, +Opening Invoice Creation Tool Item,打開發票創建工具項目, +Opening Invoice Item,打開發票項目, +Opening Invoices Summary,打開發票摘要, +Opening Qty,開放數量, +Opening Stock,打開庫存, +Opening Value,開度值, +Operating Cost,營業成本, +Operation Time must be greater than 0 for Operation {0},運行時間必須大於0的操作{0}, +"Operation {0} longer than any available working hours in workstation {1}, break down the operation into multiple operations",操作{0}比任何可用的工作時間更長工作站{1},分解成運行多個操作, +Operations,操作, +Opportunities,機會, +Opportunities by lead source,鉛來源的機會, +Opportunity,機會, +Opportunity Amount,機會金額, +Opportunity From,機會從, +Opportunity Item,項目的機會, +Opportunity Type,機會型, +"Optional. Sets company's default currency, if not specified.",可選。設置公司的默認貨幣,如果沒有指定。, +Optional. This setting will be used to filter in various transactions.,可選。此設置將被應用於過濾各種交易進行。, +Order Count,訂單數量, +Order Type,訂單類型, +Order Value,訂單價值, +Ordered,已訂購, +Ordered Qty,訂購數量, +Ordered Quantity,訂購數量, +Orders,訂單, +Organization,組織, +Other Reports,其他報告, +Out Qty,輸出數量, +Out Value,輸出值, +Out of Order,亂序, +Outgoing,發送, +Outstanding Amount,未償還的金額, +Outstanding Amt,優秀的金額, +Outstanding Cheques and Deposits to clear,傑出的支票及存款清除, +Outstanding for {0} cannot be less than zero ({1}),傑出的{0}不能小於零( {1} ), +Overdue,過期的, +Overlap in scoring between {0} and {1},{0}和{1}之間的得分重疊, +Overlapping conditions found between:,存在重疊的條件:, +POS Customer Group,POS客戶群, +POS Item Group,POS項目組, +POS Profile,POS簡介, +POS Profile User,POS配置文件用戶, +POS Profile required to make POS Entry,所需的POS資料,使POS進入, +POS Settings,POS設置, +Packed Item,盒裝產品, +Packing Slip,包裝單, +Packing Slip Item,包裝單項目, +Packing Slip(s) cancelled,包裝單( S)已取消, +Paid,付費, +Paid Amount,支付的金額, +Paid Amount cannot be greater than total negative outstanding amount {0},支付的金額不能超過總負餘額大於{0}, +Paid amount + Write Off Amount can not be greater than Grand Total,支付的金額+寫的抵銷金額不能大於總計, +Parent Item {0} must not be a Stock Item,父項{0}不能是庫存產品, +Parent Warehouse,家長倉庫, +Partially Depreciated,部分貶抑, +Party,黨, +Party Account,參與者科目, +Party Name,方名稱, +Party Type,黨的類型, +Party Type and Party is mandatory for {0} account,{0}科目的參與方以及類型為必填, +Party Type is mandatory,黨的類型是強制性, +Party is mandatory,黨是強制性, +Past Due Date,過去的截止日期, +Payable,支付, +Payable Account,應付帳款, +Payment Amount,付款金額, +Payment Document,付款單據, +Payment Entries {0} are un-linked,付款項{0}是聯合國聯, +Payment Entry,付款輸入, +Payment Entry Deduction,輸入付款扣除, +Payment Entry Reference,付款輸入參考, +Payment Entry already exists,付款項目已存在, +Payment Entry has been modified after you pulled it. Please pull it again.,付款項被修改,你把它之後。請重新拉。, +Payment Entry is already created,已創建付款輸入, +Payment Failed,支付失敗, +Payment Gateway Account,網路支付閘道科目, +"Payment Gateway Account not created, please create one manually.",支付閘道科目沒有創建,請手動創建一個。, +Payment Order,付款單, +Payment Order Reference,付款訂單參考, +Payment Period Based On Invoice Date,基於發票日的付款期, +Payment Receipt Note,付款收貨注意事項, +Payment Reconciliation,付款對帳, +Payment Reconciliation Invoice,付款發票對帳, +Payment Reconciliation Payment,付款方式付款對賬, +Payment Request,付錢請求, +Payment Request for {0},付款申請{0}, +Payment Schedule,付款時間表, +Payment Terms,付款條件, +Payment Terms Template,付款條款模板, +Payment Terms Template Detail,付款條款模板細節, +Payment Type,付款類型, +"Payment Type must be one of Receive, Pay and Internal Transfer",付款方式必須是接收之一,收費和內部轉賬, +Payment against {0} {1} cannot be greater than Outstanding Amount {2},對支付{0} {1}不能大於未償還{2}, +Payroll Payable,應付職工薪酬, +Payslip,工資單, +Pending Activities,待活動, +Pending Amount,待審核金額, +Pending Qty,待定數量, +Pending SO Items For Purchase Request,待處理的SO項目對於採購申請, +Pending activities for today,今天待定活動, +Period,期間, +Period Closing Voucher,期末券, +Periodicity,週期性, +Pharmaceutical,製藥, +Planned End Date,計劃的結束日期, +Planned Qty,計劃數量, +Planned Quantity,計劃數量, +Planned Start Date,計劃開始日期, +Planning,規劃, +Plants and Machineries,廠房和機械設備, +Please Set Supplier Group in Buying Settings.,請設置供應商組購買設置。, +Please add a Temporary Opening account in Chart of Accounts,請在會計科目表中添加一個臨時開戶科目, +Please check Multi Currency option to allow accounts with other currency,請檢查多幣種選項,允許帳戶與其他貨幣, +Please click on 'Generate Schedule',請點擊“生成表”, +Please click on 'Generate Schedule' to fetch Serial No added for Item {0},請點擊“生成表”來獲取序列號增加了對項目{0}, +Please click on 'Generate Schedule' to get schedule,請在“產生排程”點擊以得到排程表, +Please create purchase receipt or purchase invoice for the item {0},請為項目{0}創建購買收據或購買發票, +Please enable Applicable on Booking Actual Expenses,請啟用適用於預訂實際費用, +Please enable Applicable on Purchase Order and Applicable on Booking Actual Expenses,請啟用適用於採購訂單並適用於預訂實際費用, +Please enter Account for Change Amount,對於漲跌額請輸入帳號, +Please enter Approving Role or Approving User,請輸入核准角色或審批用戶, +Please enter Cost Center,請輸入成本中心, +Please enter Delivery Date,請輸入交貨日期, +Please enter Employee Id of this sales person,請輸入這個銷售人員的員工標識, +Please enter Expense Account,請輸入您的費用科目, +Please enter Item Code to get Batch Number,請輸入產品代碼來獲得批號, +Please enter Item Code to get batch no,請輸入產品編號,以取得批號, +Please enter Item first,請先輸入品項, +Please enter Maintaince Details first,請先輸入維護細節, +Please enter Planned Qty for Item {0} at row {1},請輸入列{1}的品項{0}的計劃數量, +Please enter Preferred Contact Email,請輸入首選電子郵件聯繫, +Please enter Production Item first,請先輸入生產項目, +Please enter Purchase Receipt first,請先輸入採購入庫單, +Please enter Receipt Document,請輸入收據憑證, +Please enter Reference date,參考日期請輸入, +Please enter Reqd by Date,請輸入按日期請求, +Please enter Write Off Account,請輸入核銷科目, +Please enter company first,請先輸入公司, +Please enter company name first,請先輸入公司名稱, +Please enter default currency in Company Master,請在公司主檔輸入預設貨幣, +Please enter message before sending,在發送前,請填寫留言, +Please enter parent cost center,請輸入父成本中心, +Please enter relieving date.,請輸入解除日期。, +Please enter valid Financial Year Start and End Dates,請輸入有效的財政年度開始和結束日期, +Please enter {0} first,請輸入{0}第一, +Please make sure you really want to delete all the transactions for this company. Your master data will remain as it is. This action cannot be undone.,請確保你真的要刪除這家公司的所有交易。主數據將保持原樣。這個動作不能撤消。, +Please mention no of visits required,請註明無需訪問, +Please pull items from Delivery Note,請送貨單拉項目, +Please select Apply Discount On,請選擇適用的折扣, +Please select BOM against item {0},請選擇物料{0}的物料清單, +Please select BOM for Item in Row {0},請行選擇BOM為項目{0}, +Please select BOM in BOM field for Item {0},請BOM字段中選擇BOM的項目{0}, +Please select Category first,請先選擇分類, +Please select Charge Type first,請先選擇付款類別, +Please select Company,請選擇公司, +Please select Company and Posting Date to getting entries,請選擇公司和發布日期以獲取條目, +Please select Company first,請首先選擇公司, +Please select Completion Date for Completed Asset Maintenance Log,請選擇已完成資產維護日誌的完成日期, +Please select Existing Company for creating Chart of Accounts,請選擇現有的公司創建會計科目表, +Please select Maintenance Status as Completed or remove Completion Date,請選擇維護狀態為已完成或刪除完成日期, +Please select Party Type first,請選擇黨第一型, +Please select Posting Date before selecting Party,在選擇之前,甲方請選擇發布日期, +Please select Posting Date first,請選擇發布日期第一, +Please select Price List,請選擇價格表, +Please select Qty against item {0},請選擇項目{0}的數量, +Please select Sample Retention Warehouse in Stock Settings first,請先在庫存設置中選擇樣品保留倉庫, +Please select Start Date and End Date for Item {0},請選擇項目{0}的開始日期和結束日期, +Please select a BOM,請選擇一個物料清單, +Please select a Company,請選擇一個公司, +Please select a field to edit from numpad,請選擇要從數字鍵盤編輯的字段, +Please select a value for {0} quotation_to {1},請選擇一個值{0} quotation_to {1}, +Please select correct account,請選擇正確的科目, +Please select date,請選擇日期, +Please select item code,請選擇商品代碼, +Please select the Company,請選擇公司, +Please select the Multiple Tier Program type for more than one collection rules.,請為多個收集規則選擇多層程序類型。, +Please select the document type first,請先選擇文檔類型, +Please select weekly off day,請選擇每週休息日, +Please select {0},請選擇{0}, +Please select {0} first,請先選擇{0}, +Please set 'Apply Additional Discount On',請設置“收取額外折扣”, +Please set 'Asset Depreciation Cost Center' in Company {0},請設置在公司的資產折舊成本中心“{0}, +Please set 'Gain/Loss Account on Asset Disposal' in Company {0},請公司制定“關於資產處置收益/損失科目”{0}, +Please set Account in Warehouse {0} or Default Inventory Account in Company {1},請在倉庫{0}中設科目或在公司{1}中設置默認庫存科目, +Please set Company,請設公司, +Please set Depreciation related Accounts in Asset Category {0} or Company {1},請設置在資產類別{0}或公司折舊相關科目{1}, +Please set Unrealized Exchange Gain/Loss Account in Company {0},請在公司{0}中設置未實現的匯兌收益/損失科目, +Please set a default Holiday List for Employee {0} or Company {1},請設置一個默認的假日列表為員工{0}或公司{1}, +Please set account in Warehouse {0},請在倉庫{0}中設置會計科目, +Please set default Cash or Bank account in Mode of Payment {0},請設定現金或銀行帳戶的預設付款方式{0}, +Please set default {0} in Company {1},請設置在默認情況下公司{0} {1}, +Please set filter based on Item or Warehouse,根據項目或倉庫請設置過濾器, +Please set recurring after saving,請設置保存後復發, +Please set the Default Cost Center in {0} company.,請在{0}公司中設置默認成本中心。, +Please set the Item Code first,請先設定商品代碼, +Please set {0},請設置{0}, +Please specify Company,請註明公司, +Please specify Company to proceed,請註明公司以處理, +Please specify a valid Row ID for row {0} in table {1},請指定行{0}在表中的有效行ID {1}, +Please specify at least one attribute in the Attributes table,請指定屬性表中的至少一個屬性, +Please specify either Quantity or Valuation Rate or both,請註明無論是數量或估價率或兩者, +Please specify from/to range,請從指定/至範圍, +Please supply the specified items at the best possible rates,請在提供最好的利率規定的項目, +Point of Sale,銷售點, +Possible Supplier,可能的供應商, +Postal Expenses,郵政費用, +Posting Date,發布日期, +Posting Date cannot be future date,發布日期不能是未來的日期, +Posting Time,登錄時間, +Posting date and posting time is mandatory,登錄日期和登錄時間是必需的, +Posting timestamp must be after {0},登錄時間戳記必須晚於{0}, +Preference,偏愛, +Previous Financial Year is not closed,上一財政年度未關閉, +Price,價格, +Price List,價格表, +Price List Country,價目表國家, +Price List Currency not selected,尚未選擇價格表之貨幣, +Price List must be applicable for Buying or Selling,價格表必須適用於購買或出售, +Price List {0} is disabled or does not exist,價格表{0}禁用或不存在, +Pricing,價錢, +Pricing Rule,定價規則, +Primary Address Details,主要地址詳情, +Primary Contact Details,主要聯繫方式, +Print Heading,列印標題, +Print settings updated in respective print format,打印設置在相應的打印格式更新, +Procurement,採購, +Produced Qty,生產數量, +Produced Quantity,生產的產品數量, +Product Bundle,產品包, +Product Bundle Item,產品包項目, +Production,生產, +Production Analytics,生產Analytics(分析), +Production Item,生產項目, +Production Plan,生產計劃, +Production Plan Item,生產計劃項目, +Production Plan Material Request,生產計劃申請材料, +Production Plan Sales Order,生產計劃銷售訂單, +Products,產品, +Profit and Loss,損益, +Profit and Loss Statement,損益表, +Profit for the year,年度利潤, +Project Collaboration Invitation,項目合作邀請, +Project Id,項目編號, +Project Name,專案名稱, +Project Start Date,專案開始日期, +Project Status,項目狀態, +Project Type,專案類型, +Project Update,項目更新, +Project Update.,項目更新。, +Project User,項目用戶, +Project Value,專案值, +Project activity / task.,專案活動/任務。, +Project master.,專案主持。, +Project wise Stock Tracking,項目明智的庫存跟踪, +Project-wise data is not available for Quotation,項目明智的數據不適用於報價, +Projected Qty,預計數量, +Projects,專案, +Projects Manager,項目經理, +Projects Settings,項目設置, +Projects User,項目用戶, +Proposal Writing,提案寫作, +Proposal/Price Quote,提案/報價, +Prospects Engaged But Not Converted,展望未成熟, +Provisional Profit / Loss (Credit),臨時溢利/(虧損)(信用), +Purchase,採購, +Purchase Amount,購買金額, +Purchase Analytics,採購分析, +Purchase Date,購買日期, +Purchase Invoice,採購發票, +Purchase Invoice Advance,購買發票提前, +Purchase Invoice Item,採購發票項目, +Purchase Invoice Trends,購買發票趨勢, +Purchase Invoice {0} is already submitted,採購發票{0}已經提交, +Purchase Order,採購訂單, +Purchase Order Item,採購訂單項目, +Purchase Order Item Supplied,採購訂單項目供應商, +Purchase Order Items not received on time,未按時收到採購訂單項目, +Purchase Order Required,採購訂單為必要項, +Purchase Order Trends,採購訂單趨勢, +Purchase Order number required for Item {0},所需物品{0}的採購訂單號, +Purchase Order {0} is not submitted,採購訂單{0}未提交, +Purchase Orders are not allowed for {0} due to a scorecard standing of {1}.,由於{1}的記分卡,{0}不允許採購訂單。, +Purchase Price List,採購價格表, +Purchase Receipt,採購入庫單, +Purchase Receipt Item,採購入庫項目, +Purchase Receipt Item Supplied,採購入庫項目供應商, +Purchase Receipt Required,需要採購入庫單, +Purchase Receipt Trends,採購入庫趨勢, +Purchase Receipt {0} is not submitted,採購入庫單{0}未提交, +Purchase Register,購買註冊, +Purchase Tax Template,購置稅模板, +Purchase Taxes and Charges,購置稅和費, +Purchase Taxes and Charges Template,採購稅負和費用模板, +Purchase orders help you plan and follow up on your purchases,採購訂單幫助您規劃和跟進您的購買, +Purchasing,購買, +Purpose must be one of {0},目的必須是一個{0}, +Qty,數量, +Qty To Manufacture,製造數量, +Qty for {0},數量為{0}, +Qty to Deliver,數量交付, +Qty to Order,訂購數量, +Qty to Receive,未到貨量, +Qualification,合格, +Quality Inspection,品質檢驗, +Quality Inspection Reading,質量檢驗閱讀, +Quality Inspection Template,質量檢驗模板, +Quality Management,品質管理, +Quality Manager,質量經理, +Quantity,數量, +Quantity in row {0} ({1}) must be same as manufactured quantity {2},列{0}的數量({1})必須與生產量{2}相同, +Quantity must not be more than {0},數量必須不超過{0}, +Quantity required for Item {0} in row {1},列{1}項目{0}必須有數量, +Quantity to Make,數量, +Quantity to Manufacture must be greater than 0.,量生產必須大於0。, +Quick Journal Entry,快速日記帳分錄, +Quot Count,報價計數, +Quotation,報價, +Quotation Item,產品報價, +Quotation Lost Reason,報價遺失原因, +Quotation Trends,報價趨勢, +Quotation {0} is cancelled,{0}報價被取消, +Quotation {0} not of type {1},報價{0}非為{1}類型, +Quotations,語錄, +"Quotations are proposals, bids you have sent to your customers",語錄是建議,你已經發送到你的客戶提高出價, +Quotations: ,語錄:, +Range,範圍, +Rate,單價, +Raw Material,原料, +Raw Materials,原料, +Raw Materials cannot be blank.,原材料不能為空。, +Re-open,重新打開, +Reason For Putting On Hold,擱置的理由, +Receipt,收據, +Receivable,應收帳款, +Receivable Account,應收帳款, +Received From,從......收到, +Received Items To Be Billed,待付款的收受品項, +Received Qty,到貨數量, +Receiver List is empty. Please create Receiver List,收受方列表為空。請創建收受方列表, +Reconcile,調和, +Redeem Loyalty Points,兌換忠誠度積分, +Ref Date,參考日期, +Reference #{0} dated {1},參考# {0}於{1}, +Reference Doctype must be one of {0},參考文檔類型必須是一個{0}, +Reference Document Type,參考文檔類型, +Reference No & Reference Date is required for {0},參考號與參考日期須為{0}, +Reference No and Reference Date is mandatory for Bank transaction,參考編號和參考日期是強制性的銀行交易, +Reference No is mandatory if you entered Reference Date,如果你輸入的參考日期,參考編號是強制性的, +Reference No.,參考編號。, +Reference Number,參考號碼, +"Reference: {0}, Item Code: {1} and Customer: {2}",參考:{0},商品編號:{1}和顧客:{2}, +References,參考, +Regional,區域性, +Related,有關, +Release Date,發布日期, +Remaining,剩餘, +Remaining Balance,保持平衡, +Remark,備註, +Remarks,備註, +Removed items with no change in quantity or value.,刪除的項目在數量或價值沒有變化。, +Reorder Level,重新排序級別, +Reorder Qty,再訂購數量, +Repeat Customer Revenue,重複客戶收入, +Repeat Customers,回頭客, +Report Date,報告日期, +Report Type is mandatory,報告類型是強制性的, +Request for Quotation,詢價, +Request for Quotation Item,詢價項目, +Request for Quotation Supplier,詢價供應商, +Requested Items To Be Transferred,將要轉倉的需求項目, +Requested Qty,要求數量, +Required By,需求來自, +Required Qty,所需數量, +Research & Development,研究與發展, +Resend Payment Email,重新發送付款電子郵件, +Reserved Qty,保留數量, +Reserved Quantity,保留數量, +Reserved for manufacturing,預留製造, +Reserved for sale,保留出售, +Rest Of The World,世界其他地區, +Restart,重新開始, +Restart Subscription,重新啟動訂閱, +Retention Stock Entry,保留庫存入場, +Retention Stock Entry already created or Sample Quantity not provided,已創建保留庫存條目或未提供“樣本數量”, +Return,退貨, +Return / Credit Note,返回/信用票據, +Return / Debit Note,返回/借記注, +Returned Qty,返回的數量, +Returns,返回, +Reverse Journal Entry,反向日記帳分錄, +Root Type,root類型, +Root Type is mandatory,root類型是強制性的, +Root cannot be edited.,root不能被編輯。, +Root cannot have a parent cost center,root不能有一個父成本中心, +Round Off,四捨五入, +Rounded Total,整數總計, +Row # {0}: Cannot return more than {1} for Item {2},行#{0}:無法返回超過{1}項{2}, +Row # {0}: Rate cannot be greater than the rate used in {1} {2},行#{0}:速率不能大於{1} {2}中使用的速率, +Row #{0} (Payment Table): Amount must be negative,行#{0}(付款表):金額必須為負數, +Row #{0} (Payment Table): Amount must be positive,行#{0}(付款表):金額必須為正值, +Row #{0}: Account {1} does not belong to company {2},行#{0}:科目{1}不屬於公司{2}, +Row #{0}: Allocated Amount cannot be greater than outstanding amount.,行#{0}:分配金額不能大於未結算金額。, +"Row #{0}: Asset {1} cannot be submitted, it is already {2}",行#{0}:資產{1}無法提交,這已經是{2}, +Row #{0}: Cannot set Rate if amount is greater than billed amount for Item {1}.,行#{0}:如果金額大於項目{1}的開帳單金額,則無法設置費率。, +Row #{0}: Duplicate entry in References {1} {2},行#{0}:引用{1} {2}中的重複條目, +Row #{0}: Expected Delivery Date cannot be before Purchase Order Date,行#{0}:預計交貨日期不能在採購訂單日期之前, +Row #{0}: Journal Entry {1} does not have account {2} or already matched against another voucher,行#{0}:日記條目{1}沒有帳戶{2}或已經對另一憑證匹配, +Row #{0}: Not allowed to change Supplier as Purchase Order already exists,行#{0}:不能更改供應商的採購訂單已經存在, +Row #{0}: Please set reorder quantity,行#{0}:請設置再訂購數量, +"Row #{0}: Reference Document Type must be one of Purchase Order, Purchase Invoice or Journal Entry",行#{0}:參考文件類型必須是採購訂單之一,購買發票或日記帳分錄, +Row #{0}: Rejected Qty can not be entered in Purchase Return,行#{0}:駁回採購退貨數量不能進入, +Row #{0}: Reqd by Date cannot be before Transaction Date,行號{0}:按日期請求不能在交易日期之前, +Row #{0}: Set Supplier for item {1},行#{0}:設置供應商項目{1}, +Row #{0}: Timings conflicts with row {1},行#{0}:與排時序衝突{1}, +Row #{0}: {1} can not be negative for item {2},行#{0}:{1}不能為負值對項{2}, +Row {0} : Operation is required against the raw material item {1},行{0}:對原材料項{1}需要操作, +Row {0}: Activity Type is mandatory.,行{0}:活動類型是強制性的。, +Row {0}: Advance against Customer must be credit,行{0}:提前對客戶必須是信用, +Row {0}: Advance against Supplier must be debit,行{0}:提前對供應商必須扣除, +Row {0}: Bill of Materials not found for the Item {1},行{0}:材料清單未找到項目{1}, +Row {0}: Conversion Factor is mandatory,列#{0}:轉換係數是強制性的, +Row {0}: Cost center is required for an item {1},行{0}:項目{1}需要費用中心, +Row {0}: Credit entry can not be linked with a {1},行{0}:信用記錄無法被鏈接的{1}, +Row {0}: Currency of the BOM #{1} should be equal to the selected currency {2},行{0}:BOM#的貨幣{1}應等於所選貨幣{2}, +Row {0}: Debit entry can not be linked with a {1},行{0}:借方條目不能與{1}連接, +Row {0}: Depreciation Start Date is required,行{0}:折舊開始日期是必需的, +Row {0}: Enter location for the asset item {1},行{0}:輸入資產項目{1}的位置, +Row {0}: Exchange Rate is mandatory,行{0}:匯率是必須的, +Row {0}: Expected Value After Useful Life must be less than Gross Purchase Amount,行{0}:使用壽命後的預期值必須小於總採購額, +Row {0}: From Time and To Time is mandatory.,行{0}:從時間和時間是強制性的。, +Row {0}: From Time and To Time of {1} is overlapping with {2},行{0}:從時間和結束時間{1}是具有重疊{2}, +Row {0}: Hours value must be greater than zero.,行{0}:小時值必須大於零。, +Row {0}: Invalid reference {1},行{0}:無效參考{1}, +Row {0}: Party / Account does not match with {1} / {2} in {3} {4},行{0}:甲方/客戶不與匹配{1} / {2} {3} {4}, +Row {0}: Party Type and Party is required for Receivable / Payable account {1},行{0}:參與方類型和參與方需要應收/應付科目{1}, +Row {0}: Payment against Sales/Purchase Order should always be marked as advance,行{0}:付款方式對銷售/採購訂單應始終被標記為提前, +Row {0}: Please check 'Is Advance' against Account {1} if this is an advance entry.,行{0}:請檢查'是進階'對科目{1},如果這是一個進階條目。, +Row {0}: UOM Conversion Factor is mandatory,行{0}:計量單位轉換係數是必需的, +Rows with duplicate due dates in other rows were found: {0},發現其他行中具有重複截止日期的行:{0}, +S.O. No.,SO號, +SO Qty,SO數量, +Safety Stock,安全庫存, +Salary,薪水, +Sales,銷售, +Sales Account,銷售科目, +Sales Analytics,銷售分析, +Sales Expenses,銷售費用, +Sales Funnel,銷售漏斗, +Sales Invoice,銷售發票, +Sales Invoice Advance,銷售發票提前, +Sales Invoice Item,銷售發票項目, +Sales Invoice Payment,銷售發票付款, +Sales Invoice Timesheet,銷售發票時間表, +Sales Invoice Trends,銷售發票趨勢, +Sales Invoice {0} has already been submitted,銷售發票{0}已提交, +Sales Order,銷售訂單, +Sales Order Item,銷售訂單項目, +Sales Order Trends,銷售訂單趨勢, +Sales Order required for Item {0},所需的{0}項目銷售訂單, +Sales Order {0} is not submitted,銷售訂單{0}未提交, +Sales Order {0} is not valid,銷售訂單{0}無效, +Sales Order {0} is {1},銷售訂單{0} {1}, +Sales Orders,銷售訂單, +Sales Partner,銷售合作夥伴, +Sales Partner Type,銷售夥伴類型, +Sales Partners Commission,銷售合作夥伴佣金, +Sales Payment Summary,銷售付款摘要, +Sales Person,銷售人員, +Sales Person Commission Summary,銷售人員委員會摘要, +Sales Person-wise Transaction Summary,銷售人員相關的交易匯總, +Sales Pipeline,銷售渠道, +Sales Price List,銷售價格表, +Sales Register,銷售登記, +Sales Return,銷貨退回, +Sales Stage,銷售階段, +Sales Summary,銷售摘要, +Sales Tax Template,銷售稅模板, +Sales Taxes and Charges,銷售稅金及費用, +Sales Taxes and Charges Template,營業稅金及費用套版, +Sales Team,銷售團隊, +Sales and Returns,銷售和退貨, +Sales orders are not available for production,銷售訂單不可用於生產, +Same Company is entered more than once,同一家公司進入不止一次, +Same item cannot be entered multiple times.,同一項目不能輸入多次。, +Same supplier has been entered multiple times,同一個供應商已多次輸入, +Sample Size,樣本大小, +Sample quantity {0} cannot be more than received quantity {1},採樣數量{0}不能超過接收數量{1}, +Sanctioned,制裁, +Schedule Date,排定日期, +Scheduled Date,預定日期, +Scorecards,記分卡, +Scrapped,報廢, +Search Sub Assemblies,搜索子組件, +Section Code,部分代碼, +Secured Loans,抵押貸款, +Securities and Deposits,證券及存款, +See all open tickets,查看所有打開的門票, +Select Alternate Item,選擇備用項目, +Select Attribute Values,選擇屬性值, +Select BOM and Qty for Production,選擇BOM和數量生產, +Select Batch No,選擇批號, +Select Brand...,選擇品牌..., +Select Company,選擇公司, +Select Default Supplier,選擇默認供應商, +Select Employees,選擇僱員, +Select Items,選擇項目, +Select Items based on Delivery Date,根據交付日期選擇項目, +Select Items to Manufacture,選擇項目,以製造, +Select Loyalty Program,選擇忠誠度計劃, +Select Possible Supplier,選擇潛在供應商, +Select Quantity,選擇數量, +Select Serial No,選擇序列號, +Select Target Warehouse,選擇目標倉庫, +Select Warehouse...,選擇倉庫..., +Select an account to print in account currency,選擇一個科目以科目貨幣進行打印, +Select change amount account,選擇變化量科目, +Select company first,首先選擇公司, +Select the customer or supplier.,選擇客戶或供應商。, +Selected Price List should have buying and selling fields checked.,選定價目表應該有買入和賣出的字段。, +Sell,賣, +Selling,銷售, +Selling Amount,銷售金額, +Selling Price List,賣價格表, +Selling Rate,賣出率, +Selling Settings,銷售設置, +"Selling must be checked, if Applicable For is selected as {0}",銷售必須進行檢查,如果適用於被選擇為{0}, +Send SMS,發送短信, +Serial No,序列號, +Serial No Service Contract Expiry,序號服務合同到期, +Serial No Status,序列號狀態, +Serial No Warranty Expiry,序列號保修到期, +Serial No and Batch,序列號和批次, +Serial No is mandatory for Item {0},項目{0}的序列號是強制性的, +Serial No {0} does not belong to Delivery Note {1},序列號{0}不屬於送貨單{1}, +Serial No {0} does not belong to Item {1},序列號{0}不屬於項目{1}, +Serial No {0} does not exist,序列號{0}不存在, +Serial No {0} is under maintenance contract upto {1},序列號{0}在維護合約期間內直到{1}, +Serial No {0} is under warranty upto {1},序列號{0}在保修期內直到{1}, +Serial No {0} not found,序列號{0}未找到, +Serial number {0} entered more than once,序號{0}多次輸入, +Series is mandatory,系列是強制性的, +Service Stop Date cannot be after Service End Date,服務停止日期不能在服務結束日期之後, +Service Stop Date cannot be before Service Start Date,服務停止日期不能早於服務開始日期, +Services,服務, +Set New Release Date,設置新的發布日期, +Set as Closed,設置為關閉, +Set as Lost,設為失落, +Set as Open,設置為打開, +Set default inventory account for perpetual inventory,設置永久庫存的默認庫存科目, +Set {0} in asset category {1} or company {2},在資產類別{1}或公司{2}中設置{0}, +"Setting Events to {0}, since the Employee attached to the below Sales Persons does not have a User ID{1}",設置活動為{0},因為附連到下面的銷售者的僱員不具有用戶ID {1}, +Setting defaults,設置默認值, +Setting up Taxes,建立稅, +Share Balance,份額平衡, +Share Transfer,股份轉讓, +Share Type,分享類型, +Shareholder,股東, +Shipments,發貨, +Shipping Address,送貨地址, +"Shipping Address does not have country, which is required for this Shipping Rule",送貨地址沒有國家,這是此送貨規則所必需的, +Shipping Rule,送貨規則, +Shipping Rule Condition,送貨規則條件, +Shipping Rule Country,航運規則國家, +Shipping rule only applicable for Buying,運費規則只適用於購買, +Shipping rule only applicable for Selling,運費規則僅適用於銷售, +Shortage Qty,短缺數量, +Show Cumulative Amount,顯示累計金額, +Show Payment Details,顯示付款詳情, +Show Return Entries,顯示返回條目, +Show Variant Attributes,顯示變體屬性, +Show Variants,顯示變體, +Show exploded view,顯示爆炸視圖, +Show unclosed fiscal year's P&L balances,顯示未關閉的會計年度的盈虧平衡, +Show zero values,顯示零值, +Single Variant,單一變種, +Softwares,軟件, +Source Warehouse,來源倉庫, +Source and Target Location cannot be same,源和目標位置不能相同, +Source and target warehouse cannot be same for row {0},列{0}的來源和目標倉庫不可相同, +Source and target warehouse must be different,源和目標倉庫必須是不同的, +Source of Funds (Liabilities),資金來源(負債), +Source warehouse is mandatory for row {0},列{0}的來源倉是必要的, +Split Issue,拆分問題, +Standard Buying,標準採購, +Standard Selling,標準銷售, +Start Job,開始工作, +Start Year,開始年份, +Start date should be less than end date for Item {0},項目{0}的開始日期必須小於結束日期, +Start date should be less than end date for task {0},開始日期應該小於任務{0}的結束日期, +Status must be one of {0},狀態必須是一個{0}, +Stock,庫存, +Stock Adjustment,庫存調整, +Stock Ageing,存貨帳齡分析表, +Stock Analytics,庫存分析, +Stock Assets,庫存資產, +Stock Available,現貨供應, +Stock Balance,庫存餘額, +Stock Entry,存貨分錄, +Stock Entry Detail,存貨分錄明細, +Stock Entry {0} created,庫存輸入{0}創建, +Stock Entry {0} is not submitted,庫存輸入{0}不提交, +Stock Expenses,庫存費用, +Stock In Hand,庫存在手, +Stock Ledger,庫存總帳, +Stock Ledger Entry,庫存總帳條目, +Stock Levels,庫存水平, +Stock Liabilities,現貨負債, +Stock Manager,庫存管理, +Stock Projected Qty,存貨預計數量, +Stock Qty,庫存數量, +Stock Received But Not Billed,庫存接收,但不付款, +Stock Reconciliation,庫存調整, +Stock Reconciliation Item,庫存調整項目, +Stock Reports,庫存報告, +Stock Settings,庫存設定, +Stock Summary,庫存摘要, +Stock Transactions,庫存交易明細, +Stock UOM,庫存計量單位, +Stock User,庫存用戶, +Stock Value,庫存價值, +Stock cannot be updated against Delivery Note {0},送貨單{0}不能更新庫存, +Stock cannot be updated against Purchase Receipt {0},庫存不能對外購入庫單進行更新{0}, +Stock transactions before {0} are frozen,{0}前的庫存交易被凍結, +"Stopped Work Order cannot be cancelled, Unstop it first to cancel",停止的工作訂單不能取消,先取消它, +Stores,商店, +Sub Assemblies,子組件, +Subcontract,轉包, +Subcontracted Item,轉包項目, +Submit this Work Order for further processing.,提交此工單以進一步處理。, +Subscription,訂閱, +Subscription Invoice,訂閱發票, +Subscription Management,訂閱管理, +Subscription Plan,訂閱計劃, +Subscription Plan Detail,訂閱計劃詳情, +Subscription Settings,訂閱設置, +Subscriptions,訂閱, +Successfully Reconciled,不甘心成功, +Successfully Set Supplier,成功設置供應商, +Summary for this month and pending activities,本月和待活動總結, +Summary for this week and pending activities,本週和待活動總結, +Supplied Qty,附送數量, +Supplier,供應商, +Supplier Group,供應商集團, +Supplier Invoice Date,供應商發票日期, +Supplier Invoice Date cannot be greater than Posting Date,供應商發票的日期不能超過過帳日期更大, +Supplier Invoice No,供應商發票號碼, +Supplier Invoice No exists in Purchase Invoice {0},供應商發票不存在採購發票{0}, +Supplier Name,供應商名稱, +Supplier Part No,供應商部件號, +Supplier Quotation,供應商報價, +Supplier Quotation Item,供應商報價項目, +Supplier Scorecard,供應商記分卡, +Supplier Scorecard Criteria,供應商記分卡標準, +Supplier Scorecard Period,供應商記分卡期, +Supplier Scorecard Scoring Criteria,供應商記分卡評分標準, +Supplier Scorecard Scoring Standing,供應商記分卡, +Supplier Scorecard Scoring Variable,供應商記分卡評分變量, +Supplier Scorecard Standing,供應商記分卡站立, +Supplier Scorecard Variable,供應商記分卡變數, +Supplier {0} not found in {1},在{1}中找不到供應商{0}, +Supplier(s),供應商(S), +Supplier-Wise Sales Analytics,供應商相關的銷售分析, +Support Hour Distribution,支持小時分配, +Support Settings,支持設置, +Support Team,支持團隊, +Support Tickets,支持門票, +TDS Computation Summary,TDS計算摘要, +Target Detail,目標詳細資訊, +Target On,目標在, +Target Warehouse,目標倉庫, +Target warehouse is mandatory for row {0},目標倉庫是強制性的行{0}, +Task,任務, +Task Depends On,任務取決於, +Tasks,任務, +Tax,稅, +Tax Assets,所得稅資產, +"Tax Category has been changed to ""Total"" because all the Items are non-stock items",稅項類別已更改為“合計”,因為所有物品均為非庫存物品, +Tax ID,稅號, +Tax Id: ,稅號:, +Tax Rate,稅率, +Tax Rule,稅務規則, +Tax Rule Conflicts with {0},稅收規範衝突{0}, +Tax Template is mandatory.,稅務模板是強制性的。, +Tax Withholding Account,扣繳稅款科目, +Tax Withholding Category,預扣稅類別, +Tax Withholding Rate,稅收預扣稅率, +Taxable Amount,應稅金額, +Taxes,稅, +Telephone Expenses,電話費, +Temporarily on Hold,暫時擱置, +Temporary,臨時, +Temporary Accounts,臨時科目, +Temporary Opening,臨時開通, +Terms and Conditions,條款和條件, +Territory,領土, +The 'From Package No.' field must neither be empty nor it's value less than 1.,“From Package No.”字段不能為空,也不能小於1。, +The Loyalty Program isn't valid for the selected company,忠誠度計劃對所選公司無效, +The Payment Term at row {0} is possibly a duplicate.,第{0}行的支付條款可能是重複的。, +The amount of {0} set in this payment request is different from the calculated amount of all payment plans: {1}. Make sure this is correct before submitting the document.,此付款申請中設置的{0}金額與所有付款計劃的計算金額不同:{1}。在提交文檔之前確保這是正確的。, +The field From Shareholder cannot be blank,來自股東的字段不能為空, +The field To Shareholder cannot be blank,“股東”字段不能為空, +The fields From Shareholder and To Shareholder cannot be blank,來自股東和股東的字段不能為空, +The folio numbers are not matching,作品集編號不匹配, +The holiday on {0} is not between From Date and To Date,在{0}這個節日之間沒有從日期和結束日期, +The number of shares and the share numbers are inconsistent,股份數量和庫存數量不一致, +The payment gateway account in plan {0} is different from the payment gateway account in this payment request,計劃{0}中的支付閘道科目與此付款請求中的支付閘道科目不同, +The selected BOMs are not for the same item,所選的材料清單並不同樣項目, +The selected item cannot have Batch,所選項目不能批, +The seller and the buyer cannot be the same,賣方和買方不能相同, +The shareholder does not belong to this company,股東不屬於這家公司, +The shares already exist,股份已經存在, +The shares don't exist with the {0},這些份額不存在於{0}, +"There are inconsistencies between the rate, no of shares and the amount calculated",費率,股份數量和計算的金額之間不一致, +There can only be 1 Account per Company in {0} {1},只能有每公司1科目{0} {1}, +"There can only be one Shipping Rule Condition with 0 or blank value for ""To Value""",只能有一個運輸規則條件為0或空值“ To值”, +There is nothing to edit.,無內容可供編輯, +This Item is a Template and cannot be used in transactions. Item attributes will be copied over into the variants unless 'No Copy' is set,這個項目是一個模板,並且可以在交易不能使用。項目的屬性將被複製到變型,除非“不複製”設置, +This Item is a Variant of {0} (Template).,此項目是{0}(模板)的變體。, +This Week's Summary,本週的總結, +This action will stop future billing. Are you sure you want to cancel this subscription?,此操作將停止未來的結算。您確定要取消此訂閱嗎?, +This covers all scorecards tied to this Setup,這涵蓋了與此安裝程序相關的所有記分卡, +This document is over limit by {0} {1} for item {4}. Are you making another {3} against the same {2}?,這份文件是超過限制,通過{0} {1}項{4}。你在做另一個{3}對同一{2}?, +This is a root account and cannot be edited.,這是一個 root 科目,不能被編輯。, +This is a root customer group and cannot be edited.,ERPNext是一個開源的基於Web的ERP系統,通過網路技術,向私人有限公司提供整合的工具,在一個小的組織管理大多數流程。有關Web註釋,或購買託管,想得到更多資訊,請連結, +This is a root department and cannot be edited.,這是根部門,無法編輯。, +This is a root item group and cannot be edited.,這是個根項目群組,且無法被編輯。, +This is a root sales person and cannot be edited.,您可以通過選擇備份頻率啟動和\, +This is a root supplier group and cannot be edited.,這是一個根源供應商組,無法編輯。, +This is a root territory and cannot be edited.,集團或Ledger ,借方或貸方,是特等科目, +This is an example website auto-generated from ERPNext,這是一個由 ERPNext 自動產生的範例網站, +This is based on stock movement. See {0} for details,這是基於庫存移動。見{0}詳情, +This is based on the Time Sheets created against this project,這是基於對這個項目產生的考勤表, +This is based on transactions against this Sales Person. See timeline below for details,這是基於針對此銷售人員的交易。請參閱下面的時間表了解詳情, +Time Tracking,時間跟踪, +Time(in mins),時間(分鐘), +Timer,計時器, +Timer exceeded the given hours.,計時器超出了指定的小時數, +Timesheet,時間表, +Timesheet Detail,詳細時間表, +Timesheet for tasks.,時間表的任務。, +Timesheet {0} is already completed or cancelled,時間表{0}已完成或取消, +Timesheets,時間表, +To Bill,發票待輸入, +To Date cannot be less than From Date,迄今不能少於起始日期, +To Date should be within the Fiscal Year. Assuming To Date = {0},日期應該是在財政年度內。假設終止日期= {0}, +To Datetime,以日期時間, +To Deliver,為了提供, +To Deliver and Bill,準備交貨及開立發票, +To Fiscal Year,到財政年度, +To Receive,接受, +To Receive and Bill,準備收料及接收發票, +To Time,要時間, +To Warehouse,到倉庫, +To create a Payment Request reference document is required,要創建付款請求參考文檔是必需的, +To date cannot be before from date,無效的主名稱, +"To include tax in row {0} in Item rate, taxes in rows {1} must also be included",要包括稅款,行{0}項率,稅收行{1}也必須包括在內, +"To merge, following properties must be same for both items",若要合併,以下屬性必須為這兩個項目是相同的, +Total (Credit),總(信用), +Total (Without Tax),總計(不含稅), +Total Achieved,實現總計, +Total Actual,實際總計, +Total Amount,總金額, +Total Applicable Charges in Purchase Receipt Items table must be same as Total Taxes and Charges,在外購入庫單項目表總的相關費用必須是相同的總稅費, +Total Budget,預算總額, +Total Commission,佣金總計, +Total Credit/ Debit Amount should be same as linked Journal Entry,總信用/借方金額應與鏈接的日記帳分錄相同, +Total Debit must be equal to Total Credit. The difference is {0},借方總額必須等於貸方總額。差額為{0}, +Total Invoiced Amount,發票總金額, +Total Order Considered,總訂貨考慮, +Total Order Value,總訂單價值, +Total Outgoing,出貨總計, +Total Outstanding,總計傑出, +Total Outstanding Amount,未償還總額, +Total Paid Amount,總支付金額, +Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total,支付計劃中的總付款金額必須等於大/圓, +Total Qty,總數量, +Total Quantity,總數(量, +Total Revenue,總收入, +Total Stock Summary,總庫存總結, +Total Target,總目標, +Total Tax,總稅收, +Total Variance,總方差, +Total advance ({0}) against Order {1} cannot be greater than the Grand Total ({2}),總的超前({0})對二階{1}不能大於總計({2}), +Total {0} ({1}),總{0}({1}), +"Total {0} for all items is zero, may be you should change 'Distribute Charges Based On'",共有{0}所有項目為零,可能是你應該“基於分佈式費用”改變, +Total(Qty),總計(數量), +Transaction Type,交易類型, +Transaction currency must be same as Payment Gateway currency,交易貨幣必須與支付網關貨幣, +Transaction not allowed against stopped Work Order {0},不允許對停止的工單{0}進行交易, +Transaction reference no {0} dated {1},交易參考編號{0}日{1}, +Transfer,轉讓, +Transfer Asset,轉讓資產, +Transfer Type,轉移類型, +Transfered,轉移, +Transferred Qty,轉讓數量, +Travel Expenses,差旅費, +Tree Type,樹類型, +Trial Balance,試算表, +Trial Balance for Party,試算表的派對, +Trial Period End Date Cannot be before Trial Period Start Date,試用期結束日期不能在試用期開始日期之前, +Trialling,試用, +Types of activities for Time Logs,活動類型的時間記錄, +UOM Category,UOM類別, +UOM Conversion Detail,計量單位換算詳細, +UOM Conversion Factor,計量單位換算係數, +UOM Conversion factor is required in row {0},計量單位換算係數是必需的行{0}, +Unable to find exchange rate for {0} to {1} for key date {2}. Please create a Currency Exchange record manually,無法為關鍵日期{2}查找{0}到{1}的匯率。請手動創建貨幣兌換記錄, +Unable to find score starting at {0}. You need to have standing scores covering 0 to 100,無法從{0}開始獲得分數。你需要有0到100的常規分數, +Unallocated Amount,未分配金額, +Unblock Invoice,取消屏蔽發票, +Unclosed Fiscal Years Profit / Loss (Credit),未關閉的財年利潤/損失(信用), +Unit of Measure,計量單位, +Unit of Measure {0} has been entered more than once in Conversion Factor Table,計量單位{0}已經進入不止一次在轉換係數表, +Unsecured Loans,無抵押貸款, +Unsubscribe from this Email Digest,從該電子郵件摘要退訂, +Unverified Webhook Data,未經驗證的Webhook數據, +Update Account Name / Number,更新帳戶名稱/號碼, +Update Account Number / Name,更新帳號/名稱, +Update BOM Cost Automatically,自動更新BOM成本, +Update Clearance Date,更新日期間隙, +Update Items,更新項目, +User ID not set for Employee {0},用戶ID不為員工設置{0}, +User Remark,用戶備註, +User {0} does not exist,用戶{0}不存在, +User {0} doesn't have any default POS Profile. Check Default at Row {1} for this User.,用戶{0}沒有任何默認的POS配置文件。檢查此用戶的行{1}處的默認值。, +User {0} is already assigned to Employee {1},用戶{0}已經被分配給員工{1}, +Utility Expenses,公用事業費用, +Validity period of this quotation has ended.,此報價的有效期已經結束。, +Valuation Rate,估值率, +Valuation Rate is mandatory if Opening Stock entered,估價費用是強制性的,如果打開庫存進入, +Valuation type charges can not marked as Inclusive,估值類型罪名不能標記為包容性, +Value After Depreciation,折舊後, +Value Proposition,價值主張, +Value for Attribute {0} must be within the range of {1} to {2} in the increments of {3} for Item {4},為屬性{0}值必須的範圍內{1}到{2}中的增量{3}為項目{4}, +Value or Qty,價值或數量, +Variant,變種, +Variant Details Report,變體詳細信息報告, +Variant Field,變種場, +Variant creation has been queued.,變體創建已經排隊。, +Vehicle,車輛, +View Chart of Accounts,查看會計科目表, +View Leads,查看訊息, +View Ledger,查看總帳, +View Now,立即觀看, +Visit the forums,訪問論壇, +Voucher #,憑證#, +Voucher No,憑證編號, +Voucher Type,憑證類型, +WIP Warehouse,WIP倉庫, +Warehouse can not be deleted as stock ledger entry exists for this warehouse.,這個倉庫不能被刪除,因為庫存分錄帳尚存在。, +Warehouse cannot be changed for Serial No.,倉庫不能改變序列號, +Warehouse is mandatory,倉庫是強制性的, +Warehouse not found in the system,倉庫系統中未找到, +Warehouse required for stock Item {0},倉庫需要現貨產品{0}, +Warehouse wise Item Balance Age and Value,倉庫明智的項目平衡年齡和價值, +Warehouse {0} can not be deleted as quantity exists for Item {1},倉庫{0} 不能被刪除因為項目{1}還有庫存, +Warehouse {0} does not belong to company {1},倉庫{0}不屬於公司{1}, +Warehouses,倉庫, +Warehouses with child nodes cannot be converted to ledger,與子節點倉庫不能轉換為分類賬, +Warehouses with existing transaction can not be converted to group.,與現有的交易倉庫不能轉換為組。, +Warehouses with existing transaction can not be converted to ledger.,與現有的交易倉庫不能轉換到總帳。, +Warning: Another {0} # {1} exists against stock entry {2},警告:另一個{0}#{1}存在對庫存分錄{2}, +Warning: Material Requested Qty is less than Minimum Order Qty,警告:物料需求的數量低於最少訂購量, +Warning: Sales Order {0} already exists against Customer's Purchase Order {1},警告:銷售訂單{0}已經存在針對客戶的採購訂單{1}, +Warranty,保證, +Warranty Claim,保修索賠, +Website Item Group,網站項目群組, +What do you need help with?,你有什麼需要幫助的?, +Wire Transfer,電匯, +Work In Progress,在製品, +Work Order,工作指示, +Work Order Item,工作訂單項目, +Work Order Operation,工作訂單操作, +Work Order Stock Report,工單庫存報表, +Work Order cannot be raised against a Item Template,工作訂單不能針對項目模板產生, +Work Order has been {0},工單已{0}, +Work Order not created,工作訂單未創建, +Work Orders Created: {0},創建的工單:{0}, +Work Orders in Progress,工作訂單正在進行中, +Work-in-Progress Warehouse is required before Submit,提交之前,需要填入在製品倉庫, +Working Hours,工作時間, +Workstation Working Hour,工作站工作時間, +Workstation is closed on the following dates as per Holiday List: {0},工作站在以下日期關閉按假日列表:{0}, +Wrapping up,包起來, +Write Off,註銷項款, +Wrong Password,密碼錯誤, +Year start date or end date is overlapping with {0}. To avoid please set company,新年的開始日期或結束日期與{0}重疊。為了避免請將公司, +You are not authorized to add or update entries before {0},你無權添加或更新{0}之前的條目, +You are not authorized to set Frozen value,您無權設定值凍結, +You can also copy-paste this link in your browser,您也可以複製粘貼此鏈接到瀏覽器, +You can not enter current voucher in 'Against Journal Entry' column,在您不能輸入電流券“對日記帳分錄”專欄, +You can only have Plans with the same billing cycle in a Subscription,您只能在訂閱中擁有相同結算週期的計劃, +You can only redeem max {0} points in this order.,您只能按此順序兌換最多{0}個積分。, +You cannot credit and debit same account at the same time,你無法將貸方與借方在同一時間記在同一科目, +You cannot delete Project Type 'External',您不能刪除項目類型“外部”, +You cannot edit root node.,您不能編輯根節點。, +You cannot restart a Subscription that is not cancelled.,您無法重新啟動未取消的訂閱。, +You don't have enough Loyalty Points to redeem,您沒有獲得忠誠度積分兌換, +You have already selected items from {0} {1},您已經選擇從項目{0} {1}, +You have been invited to collaborate on the project: {0},您已被邀請在項目上進行合作:{0}, +Your order is out for delivery!,您的訂單已發貨!, +ZIP Code,郵政編碼, +{0} '{1}' not in Fiscal Year {2},{0}“ {1}”不在財政年度{2}, +{0} ({1}) cannot be greater than planned quantity ({2}) in Work Order {3},{0}({1})不能大於計畫數量 {3} 在工作訂單中({2}), +{0} against Bill {1} dated {2},{0}針對帳單{1}日期{2}, +{0} against Purchase Order {1},{0}針對採購訂單{1}, +{0} against Sales Invoice {1},{0}針對銷售發票{1}, +{0} against Sales Order {1},{0}針對銷售訂單{1}, +{0} asset cannot be transferred,{0}資產不得轉讓, +{0} can not be negative,{0}不能為負數, +{0} created,{0}已新增, +"{0} currently has a {1} Supplier Scorecard standing, and Purchase Orders to this supplier should be issued with caution.",{0}目前擁有{1}供應商記分卡,而採購訂單應謹慎提供給供應商。, +"{0} currently has a {1} Supplier Scorecard standing, and RFQs to this supplier should be issued with caution.",{0}目前擁有{1}供應商記分卡,並且謹慎地向該供應商發出詢價。, +{0} does not belong to Company {1},{0}不屬於公司{1}, +{0} entered twice in Item Tax,{0}輸入兩次項目稅, +{0} for {1},{0}for {1}, +{0} is blocked so this transaction cannot proceed,{0}被阻止,所以此事務無法繼續, +{0} is mandatory for Item {1},{0}是強制性的項目{1}, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2},{0}是強制性的。可能沒有為{1}到{2}創建貨幣兌換記錄, +{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}.,{0}是強制性的。也許外幣兌換記錄為{1}到{2}尚未建立。, +{0} is not a stock Item,{0}不是庫存項目, +{0} is on hold till {1},{0}一直保持到{1}, +{0} items in progress,正在進行{0}項目, +{0} items produced,生產{0}項目, +{0} must be negative in return document,{0}必須返回文檔中負, +{0} not allowed to transact with {1}. Please change the Company.,不允許{0}與{1}進行交易。請更改公司。, +{0} payment entries can not be filtered by {1},{0}付款分錄不能由{1}過濾, +{0} units of {1} needed in {2} on {3} {4} for {5} to complete this transaction.,{0} {1}在需要{2}在{3} {4}:{5}來完成這一交易單位。, +{0} units of {1} needed in {2} to complete this transaction.,{0}單位{1}在{2}完成此交易所需。, +{0} valid serial nos for Item {1},{0}項目{1}的有效的序號, +{0} variants created.,創建了{0}個變體。, +{0} {1} created,已創建{0} {1}, +{0} {1} has been modified. Please refresh.,{0} {1} 已修改。請更新。, +{0} {1} has not been submitted so the action cannot be completed,"{0} {1} 尚未提交, 因此無法完成操作", +"{0} {1} is associated with {2}, but Party Account is {3}","{0} {1} 與 {2} 關聯, 但當事方科目為 {3}", +{0} {1} is cancelled or closed,{0} {1} 被取消或結案, +{0} {1} is cancelled so the action cannot be completed,{0} {1} 被取消,因此無法完成操作, +{0} {1} is closed,{0} {1}關閉, +{0} {1} is disabled,{0} {1}被禁用, +{0} {1} is frozen,{0} {1}被凍結, +{0} {1} is fully billed,{0} {1}}已開票, +{0} {1} is not active,{0} {1}是不活動, +{0} {1} is not associated with {2} {3},{0} {1} 未與 {2} {3} 關聯, +{0} {1} must be submitted,{0} {1}必須提交, +{0} {1} status is {2},{0} {1}的狀態為{2}, +{0} {1}: 'Profit and Loss' type account {2} not allowed in Opening Entry,{0} {1}:“損益”科目類型{2}不允許進入開, +{0} {1}: Account {2} does not belong to Company {3},{0} {1}科目{2}不屬於公司{3}, +{0} {1}: Account {2} is inactive,{0} {1}科目{2}無效, +{0} {1}: Accounting Entry for {2} can only be made in currency: {3},{0} {1}在{2}會計分錄只能在貨幣言:{3}, +{0} {1}: Cost Center is mandatory for Item {2},{0} {1}:成本中心是強制性的項目{2}, +{0} {1}: Cost Center {2} does not belong to Company {3},{0} {1}:成本中心{2}不屬於公司{3}, +{0} {1}: Customer is required against Receivable account {2},{0} {1}:需要客戶對應收帳款{2}, +{0} {1}: Either debit or credit amount is required for {2},{0} {1}:無論是借方或貸方金額需要{2}, +{0} {1}: Supplier is required against Payable account {2},{0} {1}:需要對供應商應付帳款{2}, diff --git a/erpnext/translations/zh.csv b/erpnext/translations/zh.csv index b5cadad9ff7..a7ce0786afa 100644 --- a/erpnext/translations/zh.csv +++ b/erpnext/translations/zh.csv @@ -8743,3 +8743,3257 @@ WhatsApp,WhatsApp的, Make a call,打个电话, Approve,同意, Reject,拒绝, + Address, 地址, + Amount, 数额, + Is Child Table, 是否为子表, + Name, 名称, + Rate, 单价, + Summary, 概要, +"""SN-01::10"" for ""SN-01"" to ""SN-10""",SN-01::10 代表 SN-01 到 SN-10, +# In Stock,# 库存数量, +# Req'd Items,# 所需物料, +% Finished Item Quantity,% 成品数量, +% Occupied,% 已使用, +% Picked,% 已拣货, +% Process Loss,% 工艺损耗, +% Returned,% 已退货, +'Account' in the Accounting section of Customer {0},客户 {0} 的会计部分中的“账目”, +'Allow Multiple Sales Orders Against a Customer's Purchase Order',“允许针对指定客户的采购订单创建多个销售订单”, +'Default {0} Account' in Company {1},公司 {1} 的“默认 {0} 账目”, +'To Package No.' cannot be less than 'From Package No.',“结束包装编号”不能小于“起始包装编号”, +(C) Total Qty in Queue,(C) 队列中的总数量, +(C) Total qty in queue,(C) 队列中的总数量, +0-30 Days,0-30 天, +30-60 Days,30-60 天, +60-90 Days,60-90 天, +90 Above,90 以上, +"
Other Details
","
其他详细信息
", +"
No Matching Bank Transactions Found
","
未找到匹配的银行交易
", +"Masters & Reports","雇主 & 报告", +Allow,允许, +CC,抄送, +Cannot {0} from {1} without any negative outstanding invoice,无法从 {1} 中 {0} 而没有任何负的未付发票, +Convert to Group,转换为组,Warehouse +Count,计数, +Custom,自定义, +Discount cannot be greater than 100%.,折扣不能超过 100%., +DocField,文档字段, +Event,事件, +Filter,过滤, +General Ledger,总帐,Warehouse +Goals,绩效指标, +Half-yearly,每半年, +Item {0} does not exist.,物料{0}不存在., +Links,链接, +Rate of Depreciation (%),折旧率 (%), +Rejected ,已拒绝 , +Version,版本, +"'Inspection Required before Delivery' has disabled for the item {0}, no need to create the QI",物料{0}已禁用'发货前需质检',无需创建质量检验单, +"'Inspection Required before Purchase' has disabled for the item {0}, no need to create the QI",物料{0}已禁用'采购前需质检',无需创建质量检验单, +'{0}' account is already used by {1}. Use another account.,科目'{0}'已被{1}使用,请选择其他科目, +'{0}' should be in company currency {1}.,'{0}'必须使用公司货币{1}, +(A) Qty After Transaction,(A) 交易后数量, +(B) Expected Qty After Transaction,(B) 预期交易后数量, +(D) Balance Stock Value,(D) 结存库存价值, +(E) Balance Stock Value in Queue,(E) 队列结存价值, +(F) Change in Stock Value,(F) 库存价值变动, +(G) Sum of Change in Stock Value,(G) 库存价值变动总和, +(H) Change in Stock Value (FIFO Queue),(H) 库存价值变动(先进先出队列), +(H) Valuation Rate,(H) 计价率, +(I) Valuation Rate,(I) 计价率, +(J) Valuation Rate as per FIFO,(J) 按先进先出法计价率, +(K) Valuation = Value (D) ÷ Qty (A),(K) 计价=价值(D) ÷ 数量(A), +3 Yearly,3年周期, +"
+

Note

+
    +
  • +You can use Jinja tags in Subject and Body fields for dynamic values. +
  • + All fields in this doctype are available under the doc object and all fields for the customer to whom the mail will go to is available under the customer object. +
+

Examples

+ +
    +
  • Subject:

    Statement Of Accounts for {{ customer.customer_name }}

  • +
  • Body:

    +
    Hello {{ customer.customer_name }},
    PFA your Statement Of Accounts from {{ doc.from_date }} to {{ doc.to_date }}.
  • +
+","
+

注意事项

+
    +
  • +您可以在 ""主题 """"正文""字段中使用 ""Jinja ""标记来获取动态值。 +
  • + 该类型中的所有字段均可在doc对象下使用,而邮件将发送给的客户的所有字段均可在客户对象下使用。 +
+

示例

+ +
    +
  • 主题

     {{ customer.customer_name }}的账目报表 

  • +
  • 正文

    +
    您好 {{ customer.customer_name }},
    PFA 您的会计报表从 {{ doc.from_date }} 转到 {{ doc.to_date }}。
  • +
+", +"
+

All dimensions in centimeter only

+
","
+

所有尺寸均以厘米为单位

+
", +"

About Product Bundle

+ +

Aggregate group of Items into another Item. This is useful if you are bundling a certain Items into a package and you maintain stock of the packed Items and not the aggregate Item.

+

The package Item will have Is Stock Item as No and Is Sales Item as Yes.

+

Example:

+

If you are selling Laptops and Backpacks separately and have a special price if the customer buys both, then the Laptop + Backpack will be a new Product Bundle Item.

","

关于产品捆绑包

+ +

将一组货品汇总到另一个货品中。如果您要将某个项目捆绑到一个包中,而您只保留打包项目的库存,而不保留汇总项目的库存,这将非常有用。

+

打包项目Is Stock Item (库存项目)NoIs Sales Item (销售项目)为Yes

+

举例说明:

+

如果您分别销售笔记本电脑和背包,并且如果客户同时购买这两件商品,您可以享受优惠价格,那么笔记本电脑+背包将成为一个新的产品组合项目。

", +"

Currency Exchange Settings Help

+

There are 3 variables that could be used within the endpoint, result key and in values of the parameter.

+

Exchange rate between {from_currency} and {to_currency} on {transaction_date} is fetched by the API.

+

Example: If your endpoint is exchange.com/2021-08-01, then, you will have to input exchange.com/{transaction_date}

","

货币兑换设置帮助

+

在端点、结果键和参数值中可以使用 3 个变量。

+

API 将获取 {transaction_date} 上 {from_currency} 和 {to_currency} 之间的汇率。

+

举例说明:如果您的端点是 exchange.com/2021-08-01,则必须输入 exchange.com/{transaction_date}。

", +"

Body Text and Closing Text Example

+ +
We have noticed that you have not yet paid invoice {{sales_invoice}} for {{frappe.db.get_value(""Currency"", currency, ""symbol"")}} {{outstanding_amount}}. This is a friendly reminder that the invoice was due on {{due_date}}. Please pay the amount due immediately to avoid any further dunning cost.
+ +

How to get fieldnames

+ +

The fieldnames you can use in your template are the fields in the document. You can find out the fields of any documents via Setup > Customize Form View and selecting the document type (e.g. Sales Invoice)

+ +

Templating

+ +

Templates are compiled using the Jinja Templating Language. To learn more about Jinja, read this documentation.

","

正文和结尾文本示例

+ +
我们注意到您尚未支付 {{sales_invoice}} 的发票 {{frappe.db.get_value(""Currency"", currency, ""symbol"")}} {{outstanding_amount}}。特此友情提醒,发票到期日为 {{due_date}}。请立即支付应付金额,以免产生更多扣款费用。
+ +

如何获取字段名

+ +

您可以在模板中使用的字段名是文档中的字段。您可以通过设置 > 自定义表单视图并选择文档类型(如销售发票)来查找任何文档的字段。

+ +

模板

+ +

模板使用 Jinja 模板语言编译。要了解有关 Jinja 的更多信息,请阅读此文档。

", +"

Contract Template Example

+ +
Contract for Customer {{ party_name }}
+
+-Valid From : {{ start_date }} 
+-Valid To : {{ end_date }}
+
+ +

How to get fieldnames

+ +

The field names you can use in your Contract Template are the fields in the Contract for which you are creating the template. You can find out the fields of any documents via Setup > Customize Form View and selecting the document type (e.g. Contract)

+ +

Templating

+ +

Templates are compiled using the Jinja Templating Language. To learn more about Jinja, read this documentation.

","

合同模板示例

+ +
客户合同 {{ party_name }}
+
+-Valid From : {{ start_date }} 
+-Valid To : {{ end_date }}
+
+ +

如何获取字段名

+ +

您可以在合同模板中使用的字段名称是您创建模板的合同中的字段。您可以通过设置 > 自定义表单视图并选择文档类型(如合同)来查找任何文档的字段。

+ +

模板制作

+ +

模板使用 Jinja 模板语言编译。要了解有关 Jinja 的更多信息,请阅读此文档。

", +"

Standard Terms and Conditions Example

+ +
Delivery Terms for Order number {{ name }}
+
+-Order Date : {{ transaction_date }} 
+-Expected Delivery Date : {{ delivery_date }}
+
+ +

How to get fieldnames

+ +

The fieldnames you can use in your email template are the fields in the document from which you are sending the email. You can find out the fields of any documents via Setup > Customize Form View and selecting the document type (e.g. Sales Invoice)

+ +

Templating

+ +

Templates are compiled using the Jinja Templating Language. To learn more about Jinja, read this documentation.

","

合同模板示例

+ +
客户合同 {{ party_name }}
+
+-Valid From : {{ start_date }} 
+-Valid To : {{ end_date }}
+
+ +

如何获取字段名

+ +

您可以在合同模板中使用的字段名称是您创建模板的合同中的字段。您可以通过设置 > 自定义表单视图并选择文档类型(如合同)来查找任何文档的字段。

+ +

模板制作

+ +

模板使用 Jinja 模板语言编译。要了解有关 Jinja 的更多信息,请阅读此文档。

", +"
Or
","
或者
", +"","", +"","", +"","", +"

In your Email Template, you can use the following special variables: +

+
    +
  • + {{ update_password_link }}: A link where your supplier can set a new password to log into your portal. +
  • +
  • + {{ portal_link }}: A link to this RFQ in your supplier portal. +
  • +
  • + {{ supplier_name }}: The company name of your supplier. +
  • +
  • + {{ contact.salutation }} {{ contact.last_name }}: The contact person of your supplier. +
  • + {{ user_fullname }}: Your full name. +
  • +
+

+

Apart from these, you can access all values in this RFQ, like {{ message_for_supplier }} or {{ terms }}.

","

电子邮件模板中,您可以使用以下特殊变量: +

+
    +
  • + {{ update_password_link }}:供应商可以设置新密码登录门户网站的链接。 +
  • +
  • + {{ portal_link }}:供应商门户网站中该询价单的链接。 +
  • +
  • + {{ supplier_name }}:供应商的公司名称。 +
  • +
  • + {{ contact.salutation }} {{ contact.last_name }}:供应商的联系人。 +
  • + {{ user_fullname }}:您的全名。 +
  • +
+

+

除此之外,您还可以访问此 RFQ 中的所有值,如 {{ message_for_supplier }}{{ terms }}.

", +"
Message Example
+ +<p> Thank You for being a part of {{ doc.company }}! We hope you are enjoying the service.</p> + +<p> Please find enclosed the E Bill statement. The outstanding amount is {{ doc.grand_total }}.</p> + +<p> We don't want you to be spending time running around in order to pay for your Bill.
After all, life is beautiful and the time you have in hand should be spent to enjoy it!
So here are our little ways to help you get more time for life! </p> + +<a href=""{{ payment_url }}""> click here to pay </a> + +
+","
信息示例
+ +<p> 感谢您成为 {{ doc.company }}的一员!希望您能享受我们的服务。</p> + +<p> 随信附上电子账单。未付金额为 {{ doc.grand_total }}。</p> + +<p> 我们不希望您为了支付账单而花费时间四处奔波。
毕竟,生活是美好的,您手中的时间应该用来享受生活!
因此,我们有一些小方法来帮助您获得更多的生活时间! </p> + +<a href=""{{ payment_url }}""> 点击此处付款 </a> + +
+", +"
Message Example
+ +<p>Dear {{ doc.contact_person }},</p> + +<p>Requesting payment for {{ doc.doctype }}, {{ doc.name }} for {{ doc.grand_total }}.</p> + +<a href=""{{ payment_url }}""> click here to pay </a> + +
+","
消息示例
+ +<p>亲爱的 {{ doc.contact_person }},</p> + +<p>请求支付 {{ doc.doctype }}、 {{ doc.name }} 和 {{ doc.grand_total }}的费用。</p> + +<a href=""{{ payment_url }}""> 点击此处支付 </a> + +
+", +"Quick Access","快速访问", +"Reports & Masters","报表与主数据", +"Reports & Masters","报表 & 主数据", +"Settings","设置", +"Shortcuts","快捷方式", +"Your Shortcuts + + + + + + ","快速访问 + + + + + + ", +"Your Shortcuts","快速访问", +Grand Total: {0},总计: {0}, +Outstanding Amount: {0},未清金额: {0}, +" + + + + + + + + + + + + + + + + + +
Child DocumentNon Child Document
+

To access parent document field use parent.fieldname and to access child table document field use doc.fieldname

+ +
+

To access document field use doc.fieldname

+
+

Example: parent.doctype == ""Stock Entry"" and doc.item_code == ""Test""

+ +
+

Example: doc.doctype == ""Stock Entry"" and doc.purpose == ""Manufacture""

+
+ + + + + + +"," + + + + + + + + + + + + + + + + + +
子文档非子文档
+

要访问父文档字段,请使用 parent.字段名;要访问子表文档字段,请使用doc.字段名

+ +
+

要访问文档字段,请使用 doc.字段名

+
+

示例: parent.doctype == ""入库单"" 和 doc.item_code == ""测试物料""

+ +
+

示例: doc.doctype == “入库单” 和 doc.purpose == “生产用途”

+
+ + + + + + +", +A Holiday List can be added to exclude counting these days for the Workstation.,可添加假日清单以排除工作站的特定日期计算, +A Packing Slip can only be created for Draft Delivery Note.,装箱单仅可为草稿状态的交货单创建, +"A Price List is a collection of Item Prices either Selling, Buying, or both",价格清单是物料销售价、采购价或两者的集合, +A Reconciliation Job {0} is running for the same filters. Cannot reconcile now,对账任务{0}正在使用相同筛选条件运行,当前无法对账, +A Transaction Deletion Document: {0} is triggered for {0},已触发交易删除凭证:{0}(针对{0}), +A customer must have primary contact email.,客户必须设置主联系邮箱, +A driver must be set to submit.,必须设置驾驶员才能提交, +A template with tax category {0} already exists. Only one template is allowed with each tax category,税种{0}的模板已存在,每个税种仅允许一个模板, +API Details,接口详情, +AWB Number,空运提单号, +Abbreviation: {0} must appear only once,简称{0}必须唯一, +About Us Settings,公司信息设置, +About {0} minute remaining,剩余约{0}分钟, +About {0} minutes remaining,剩余约{0}分钟, +About {0} seconds remaining,剩余约{0}秒, +Acceptance Criteria Formula,验收条件公式, +Acceptance Criteria Value,验收条件值, +Accepted Qty in Stock UOM,已验收数量(库存单位), +Access Key,访问密钥, +Access Key is required for Service Provider: {0},服务商{0}必须提供访问密钥, +"According to the BOM {0}, the Item '{1}' is missing in the stock entry.",根据物料清单{0},库存交易缺少物料'{1}', +Account Closing Balance,账户期末余额, +Account Currency (From),账户货币(源), +Account Currency (To),账户货币(目标), +Account Opening Balance,账户期初余额, +Account not Found,未找到科目, +Account {0} added multiple times,科目{0}被重复添加, +Accounting Dimension Filter,核算维度筛选器, +Accounting Dimensions Filter,核算维度筛选, +Accounting Entry for {0},{0}会计凭证, +Accounts Closing,账务结账, +Accounts Missing Error,科目缺失错误, +Accounts Receivable/Payable,应收/应付账款, +Accounts to Merge,待合并账户, +Action If Quality Inspection Is Rejected,质检驳回时的处理方式, +Action If Same Rate is Not Maintained,未保持相同费率的处理方式, +Action if Same Rate is Not Maintained Throughout Sales Cycle,销售周期内未保持相同费率的处理方式, +Active Status,启用状态, +Actual Balance Qty,实际结存数量, +Actual Expense,实际费用, +Actual Posting,实际过账, +Actual Qty in Warehouse,仓库实际数量, +Actual Time,实际时间, +Add Columns in Transaction Currency,添加交易货币列, +Add Corrective Operation Cost in Finished Good Valuation,在产成品估价中添加纠正作业成本, +Add Discount,添加折扣, +Add Items in the Purpose Table,在用途表中添加物料, +Add Lead to Prospect,将线索转为潜在客户, +Add Local Holidays,添加当地假日, +Add Manually,手动添加, +Add Or Deduct,添加或扣减, +Add Serial / Batch Bundle,添加序列/批次组合, +Add Serial / Batch No,添加序列/批次号, +Add Serial / Batch No (Rejected Qty),添加序列/批次号(拒收数量), +Add Stock,添加库存, +Add Sub Assembly,添加子装配件, +Add Template,添加模板, +Add a Note,添加备注, +Add details,添加明细, +Add to Prospect,转为潜在客户, +Added By,添加人, +Added On,添加日期, +Added Supplier Role to User {0}.,已为用户{0}添加供应商角色, +Added {1} Role to User {0}.,已为用户{0}添加{1}角色, +Adding Lead to Prospect...,正在将线索转为潜在客户..., +Additional,附加项, +Additional Asset Cost,资产附加成本, +Additional Cost Per Qty,每单位额外成本, +Additional Data,附加数据, +Additional Info,附加信息, +Address And Contacts,地址及联系信息, +Adjust Asset Value,调整资产价值, +Adjustment Against,调整对应项, +Adjustment based on Purchase Invoice rate,基于采购发票汇率的调整, +Advance Account: {0} must be in either customer billing currency: {1} or Company default currency: {2},预付款科目:{0}必须使用客户账单货币:{1}或公司默认货币:{2}, +Advance Payment,预付款, +Advance Payment Date,预付款日期, +Advance Payment Ledger Entry,预付款分类账条目, +Advance Reconciliation Takes Effect On,预付款对账生效日期, +Advance Tax,预付税款, +Advance Taxes and Charges,预付税费, +Advance paid against {0} {1} cannot be greater than Grand Total {2},{0}{1}对应的预付款金额不可超过总计{2}, +Advance payments allocated against orders will only be fetched,仅获取分配至订单的预付款项, +Affected Transactions,受影响交易, +Against Customer Order {0},对应客户订单{0}, +Against Supplier Invoice {0},对应供应商发票{0}, +Against Voucher No,对应凭证编号, +Age ({0}),账龄({0}), +Ageing Range,账龄区间, +Agent Busy Message,代理忙线提示, +Agent Group,代理组, +Agent Unavailable Message,代理不可用提示, +Aggregate a group of Items into another Item. This is useful if you are maintaining the stock of the packed items and not the bundled item,将物料组聚合至另一物料(适用于维护包装件而非组合件的库存), +Algorithm,算法, +All Activities,所有活动, +All Activities HTML,所有活动HTML, +All Items,所有物料, +All Sales Transactions can be tagged against multiple Sales Persons so that you can set and monitor targets.,所有销售交易可标记多个销售人员以便设定和监控目标, +All allocations have been successfully reconciled,所有分配项已成功对账, +All items have already been received,所有物料已收货, +All items in this document already have a linked Quality Inspection.,本单据所有物料均已关联质检单, +All the Comments and Emails will be copied from one document to another newly created document(Lead -> Opportunity -> Quotation) throughout the CRM documents.,在CRM文档流转(线索->商机->报价)过程中,所有评论和邮件将被复制到新创建文档, +"All the required items (raw materials) will be fetched from BOM and populated in this table. Here you can also change the Source Warehouse for any item. And during the production, you can track transferred raw materials from this table.",所需物料(原材料)将从BOM提取并填充本表,可修改物料的源仓库,生产过程中可在此追踪原材料转移, +Allocate Payment Request,分配付款请求, +Allocated Entries,已分配分录, +Allocated To:,分配至:, +Allocations,分配记录, +Allow Alternative Item must be checked on Item {},必须在物料{}上勾选'允许替代物料', +Allow Continuous Material Consumption,允许持续物料消耗, +Allow Excess Material Transfer,允许超额物料转移, +Allow Internal Transfers at Arm's Length Price,允许按公允价格进行内部调拨, +Allow Item to be Added Multiple Times in a Transaction,允许在交易中多次添加同一物料, +Allow Lead Duplication based on Emails,允许基于邮箱重复创建线索, +Allow Negative rates for Items,允许物料负单价, +Allow Or Restrict Dimension,允许或限制维度, +Allow Partial Reservation,允许部分预留, +Allow Purchase,允许采购, +Allow Sales,允许销售, +Allow Sales Order Creation For Expired Quotation,允许为过期报价创建销售订单, +Allow User to Edit Discount,允许用户编辑折扣, +Allow User to Edit Rate,允许用户编辑单价, +Allow Zero Rate,允许零费率, +Allow existing Serial No to be Manufactured/Received again,允许现有序列号重复生产/接收, +Allow material consumptions without immediately manufacturing finished goods against a Work Order,允许工单未完成时进行物料消耗, +Allow multi-currency invoices against single party account ,允许单方账户开具多币种发票, +Allow to Edit Stock UOM Qty for Purchase Documents,允许在采购单据中编辑库存单位数量, +Allow to Edit Stock UOM Qty for Sales Documents,允许在销售单据中编辑库存单位数量, +Allow transferring raw materials even after the Required Quantity is fulfilled,允许在所需数量满足后继续转移原材料, +Allowed,已允许, +Allowed Dimension,允许维度, +Allowed Doctypes,允许单据类型, +Allowed Items,允许物料, +Allowed primary roles are 'Customer' and 'Supplier'. Please select one of these roles only.,主角色仅限'客户'与'供应商',请选择其中一种, +Allows to keep aside a specific quantity of inventory for a particular order.,允许为特定订单预留指定数量库存, +Already Picked,已拣货, +Alternative Items,替代物料清单, +"Alternatively, you can download the template and fill your data in.",您也可以下载模板并填写数据, +Amount (AED),金额(阿联酋迪拉姆), +Amount Difference with Purchase Invoice,与采购发票的金额差异, +Amount Eligible for Commission,佣金计算基数, +Amount in Account Currency,账户货币金额, +Amount in Words,金额大写, +Amount in party's bank account currency,对方银行账户货币金额, +Amount in transaction currency,交易货币金额, +Amounts,金额列表, +An Item Group is a way to classify items based on types.,物料组是基于类型分类物料的层级结构, +An error has been appeared while reposting item valuation via {0},通过{0}重估物料价值时出现错误, +Annual Revenue,年度营收, +"Another Cost Center Allocation record {0} applicable from {1}, hence this allocation will be applicable upto {2}",成本中心分配记录{0}自{1}生效,当前分配有效期至{2}, +Another Payment Request is already processed,已有其他付款请求正在处理, +"Any one of following filters required: warehouse, Item Code, Item Group",必须至少选择一个筛选条件:仓库/物料编码/物料组, +Applicable Dimension,适用维度, +Applicable On Account,适用账户, +Applied on each reading.,每次读数时应用, +Applied putaway rules.,已应用上架规则, +Applies To,应用于, +Apply Putaway Rule,应用上架规则, +Apply Recursion Over (As Per Transaction UOM),按交易单位递归应用, +Apply SLA for Resolution Time,应用解决时间的服务级别协议, +Apply TDS,应用源头减税, +Apply Tax Withholding Amount ,应用预扣税额 , +Apply restriction on dimension values,对维度值应用限制, +Apply to All Inventory Documents,应用于所有库存单据, +Apply to Document,应用至单据, +Appointment Created Successfully,预约创建成功, +Appointment Scheduling Disabled,预约排程已禁用, +Appointment Scheduling has been disabled for this site,本站点已禁用预约排程, +Appointment was created. But no lead was found. Please check the email to confirm,已创建预约但未发现线索,请检查邮件确认, +Approximately match the description/party name against parties,近似匹配交易方名称/描述, +Are you sure you want to clear all demo data?,确认清除所有演示数据?, +Are you sure you want to delete this Item?,确认删除此物料?, +Are you sure you want to delete {0}?

This action will also delete all associated Common Code documents.

,确认删除{0}?

此操作将同时删除所有关联通用编码文档

, +Are you sure you want to restart this subscription?,确认重启此订阅?, +As on Date,截至日期, +"As there are existing submitted transactions against item {0}, you can not change the value of {1}.",由于存在针对物料{0}的已提交交易,不可修改{1}的值, +"As there are negative stock, you can not enable {0}.",存在负库存时不可启用{0}, +"As there are reserved stock, you cannot disable {0}.",存在预留库存时不可禁用{0}, +"As there are sufficient Sub Assembly Items, Work Order is not required for Warehouse {0}.",由于子装配件充足,仓库{0}无需工单, +"As {0} is enabled, you can not enable {1}.",{0}已启用时不可启用{1}, +Assembly Items,装配物料, +Asset Activity,资产活动, +Asset Capitalization,资产资本化, +Asset Capitalization Asset Item,资产资本化资产项目, +Asset Capitalization Service Item,资产资本化服务项目, +Asset Capitalization Stock Item,资产资本化库存项目, +Asset Depreciation Details,资产折旧明细, +Asset Depreciation Schedule,资产折旧计划, +Asset Depreciation Schedule for Asset {0} and Finance Book {1} is not using shift based depreciation,资产{0}与财务账簿{1}的折旧计划未采用班次折旧法, +Asset Depreciation Schedule not found for Asset {0} and Finance Book {1},未找到资产{0}与财务账簿{1}的折旧计划, +Asset Depreciation Schedule {0} for Asset {1} already exists.,资产{1}的折旧计划{0}已存在, +Asset Depreciation Schedule {0} for Asset {1} and Finance Book {2} already exists.,资产{1}与财务账簿{2}的折旧计划{0}已存在, +"Asset Depreciation Schedules created:
{0}

Please check, edit if needed, and submit the Asset.",已创建资产折旧计划:
{0}

请检查并根据需要编辑后提交资产, +Asset ID,资产编号, +Asset Quantity,资产数量, +Asset Repair Consumed Item,资产维修耗用物料, +Asset Settings,资产设置, +Asset Shift Allocation,资产班次分配, +Asset Shift Factor,资产班次系数, +Asset Shift Factor {0} is set as default currently. Please change it first.,资产班次系数{0}当前设为默认值,请先修改, +Asset cancelled,资产已取消, +Asset capitalized after Asset Capitalization {0} was submitted,资产通过资本化{0}完成资本化, +Asset created,资产已创建, +Asset created after Asset Capitalization {0} was submitted,资产通过资本化{0}创建, +Asset created after being split from Asset {0},资产通过拆分自资产{0}创建, +Asset deleted,资产已删除, +Asset issued to Employee {0},资产已发放给员工{0}, +Asset out of order due to Asset Repair {0},资产因维修{0}处于停用状态, +Asset received at Location {0} and issued to Employee {1},资产在位置{0}接收并发放给员工{1}, +Asset restored,资产已恢复, +Asset restored after Asset Capitalization {0} was cancelled,因资本化{0}取消而恢复资产, +Asset returned,资产已归还, +Asset scrapped,资产已报废, +Asset sold,资产已出售, +Asset submitted,资产已提交, +Asset transferred to Location {0},资产已转移至位置{0}, +Asset updated after being split into Asset {0},资产拆分更新为资产{0}, +Asset updated after cancellation of Asset Repair {0},因维修{0}取消更新资产, +Asset updated after completion of Asset Repair {0},因维修{0}完成更新资产, +Asset {0} cannot be received at a location and given to an employee in a single movement,资产{0}无法在同一移动中完成位置接收和员工发放, +Asset {0} does not belong to Item {1},资产{0}不属于物料{1}, +Asset {0} does not exist,资产{0}不存在, +Asset {0} has been created. Please set the depreciation details if any and submit it.,资产{0}已创建,请设置折旧明细并提交, +Asset {0} has been updated. Please set the depreciation details if any and submit it.,资产{0}已更新,请设置折旧明细并提交, +Asset's depreciation schedule updated after Asset Shift Allocation {0},资产班次分配{0}后更新折旧计划, +Asset's value adjusted after cancellation of Asset Value Adjustment {0},取消资产价值调整{0}后更新资产价值, +Asset's value adjusted after submission of Asset Value Adjustment {0},提交资产价值调整{0}后更新资产价值, +Assign Job to Employee,分配任务给员工, +Assignment,任务分配, +Assignment Conditions,分配条件, +At Row #{0}: The picked quantity {1} for the item {2} is greater than available stock {3} for the batch {4} in the warehouse {5}. Please restock the item.,行{0}:物料{2}的拣货数量{1}超过仓库{5}批次{4}的可用库存{3},请补货, +At Row #{0}: The picked quantity {1} for the item {2} is greater than available stock {3} in the warehouse {4}.,行{0}:物料{2}的拣货数量{1}超过仓库{4}的可用库存{3}, +At least one account with exchange gain or loss is required,必须设置至少一个汇兑损益科目, +At row {0}: Batch No is mandatory for Item {1},行{0}:物料{1}必须填写批次号, +At row {0}: Parent Row No cannot be set for item {1},行{0}:物料{1}不能设置父行号, +At row {0}: Qty is mandatory for the batch {1},行{0}:批次{1}的数量为必填项, +At row {0}: Serial No is mandatory for Item {1},行{0}:物料{1}必须填写序列号, +At row {0}: Serial and Batch Bundle {1} has already created. Please remove the values from the serial no or batch no fields.,行{0}:序列/批次组合{1}已存在,请清除序列号或批次号字段, +At row {0}: set Parent Row No for item {1},行{0}:请为物料{1}设置父行号, +Attach CSV File,附加CSV文件, +Attendance & Leaves,考勤与休假, +Attribute value: {0} must appear only once,属性值{0}必须唯一, +Auto Create Exchange Rate Revaluation,自动创建汇率重估, +Auto Create Purchase Receipt,自动创建采购收据, +Auto Create Serial and Batch Bundle For Outward,自动创建出库序列/批次组合, +Auto Create Subcontracting Order,自动创建委外订单, +Auto Created Serial and Batch Bundle,自动创建序列/批次组合, +Auto Creation of Contact,自动创建联系人, +Auto Email Report,自动邮件报告, +Auto Fetch Serial Numbers,自动获取序列号, +Auto Insert Item Price If Missing,缺失时自动插入物料价格, +Auto Name,自动命名, +Auto Reconcile,自动对账, +Auto Reconcile Payments,自动对账付款, +Auto Reconciliation,自动对账, +Auto Reconciliation Job Trigger,自动对账任务触发, +Auto Reconciliation has started in the background,后台已启动自动对账, +Auto Reconciliation of Payments has been disabled. Enable it through {0},付款自动对账已禁用,请通过{0}启用, +Auto Reserve Serial and Batch Nos,自动预留序列/批次号, +Auto Reserve Stock for Sales Order on Purchase,采购时自动为销售订单预留库存, +Auto close Opportunity Replied after the no. of days mentioned above,商机回复后自动关闭(基于上述天数), +Auto match and set the Party in Bank Transactions,自动匹配并设置银行交易的交易方, +Auto write off precision loss while consolidation,合并时自动核销精度差异, +Automatically Add Filtered Item To Cart,自动添加筛选物料至购物车, +Automatically Fetch Payment Terms from Order,自动从订单获取付款条件, +Automatically post balancing accounting entry,自动过账平衡会计凭证, +Available Batch Report,可用批次报告, +Available Qty For Consumption,可消耗数量, +Available Qty at Company,公司级可用数量, +Available Qty at Target Warehouse,目标仓库可用数量, +Available Qty to Reserve,可预留数量, +Average Completion,平均完成度, +Avg Rate,平均汇率, +Avg Rate (Balance Stock),平均汇率(结存库存), +BFS,广度优先搜索, +BIN Qty,库位数量, +BOM Created,物料清单已创建, +BOM Creator,物料清单创建工具, +BOM Creator Item,物料清单创建项, +BOM Info,物料清单信息, +BOM Level,物料清单层级, +BOM Tree,物料清单树形图, +BOM UoM,物料清单单位, +BOM Update Batch,物料清单批量更新, +BOM Update Initiated,物料清单更新已启动, +BOM Update Log,物料清单更新日志, +BOM Update Tool Log with job status maintained,带任务状态的物料清单更新工具日志, +BOM Updation already in progress. Please wait until {0} is complete.,物料清单更新正在进行中,请等待{0}完成, +BOM Updation is queued and may take a few minutes. Check {0} for progress.,物料清单更新已排队,可能需要几分钟,查看{0}了解进度, +BOM and Production,物料清单与生产, +BOM recursion: {1} cannot be parent or child of {0},物料清单递归错误:{1}不能作为{0}的父项或子项, +BOMs Updated,物料清单已更新, +BOMs created successfully,物料清单创建成功, +BOMs creation failed,物料清单创建失败, +"BOMs creation has been enqueued, kindly check the status after some time",物料清单创建已加入队列,请稍后查看状态, +Balance Qty (Stock),库存结存数量, +Balance Sheet Summary,资产负债表汇总, +Balance Stock Value,库存结存价值, +Bank Reconciliation Tool,银行对账工具, +Bank Statement Import,银行对账单导入, +Bank Transaction {0} Matched,银行交易{0}已匹配, +Bank Transaction {0} added as Journal Entry,银行交易{0}已添加为日记账分录, +Bank Transaction {0} added as Payment Entry,银行交易{0}已添加为付款凭证, +Bank Transaction {0} is already fully reconciled,银行交易{0}已完全对账, +Bank Transaction {0} updated,银行交易{0}已更新, +Bank/Cash Account,银行/现金账户, +Bank/Cash Account {0} doesn't belong to company {1},银行/现金账户{0}不属于公司{1}, +Base Amount,基本金额, +Base Cost Per Unit,单位基准成本, +Base Rate,基准汇率, +Base Tax Withholding Net Total,代扣税基准净总额, +Base Total,基准总额, +Base Total Billable Amount,基准可计费总额, +Base Total Billed Amount,基准已开票总额, +Base Total Costing Amount,基准成本总额, +Based On Value,基于价值, +"Based on your HR Policy, select your leave allocation period's end date",根据人力资源政策选择假期分配周期结束日期, +"Based on your HR Policy, select your leave allocation period's start date",根据人力资源政策选择假期分配周期开始日期, +Batch Expiry Date,批次有效期, +Batch No is mandatory,批次号为必填项, +Batch No {0} does not exists,批次号{0}不存在, +Batch No {0} is linked with Item {1} which has serial no. Please scan serial no instead.,批次号{0}关联的物料{1}需使用序列号,请扫描序列号, +"Batch No {0} is not present in the original {1} {2}, hence you can't return it against the {1} {2}",批次号{0}在原{1}{2}中不存在,因此不能针对{1}{2}退回, +Batch No.,批次号, +Batch Nos,批次号列表, +Batch Nos are created successfully,批次号创建成功, +Batch Not Available for Return,批次不可退回, +Batch Qty,批次数量, +Batch and Serial No,批次和序列号, +Batch not created for item {} since it does not have a batch series.,未为物料{}创建批次,因其无批次编号规则, +Batch {0} and Warehouse,批次{0}与仓库, +Batch {0} is not available in warehouse {1},批次{0}在仓库{1}中不可用, +Batchwise Valuation,按批次计价, +Beginning of the current subscription period,当前订阅周期开始, +Below Subscription Plans are of different currency to the party default billing currency/Company currency: {0},以下订阅计划货币与交易方默认账单货币/公司货币不同:{0}, +Bill for Rejected Quantity in Purchase Invoice,采购发票中拒收数量计费, +Billed Items To Be Received,已开票待收货项, +"Billed, Received & Returned",已开票、已收货和已退回, +Billing Address Details,账单地址详情, +Billing Address does not belong to the {0},账单地址不属于{0}, +Billing Interval in Subscription Plan must be Month to follow calendar months,订阅计划中的计费周期必须为月以遵循日历月份, +Bisect Accounting Statements,会计凭证分割, +Bisect Left,左分割, +Bisect Nodes,分割节点, +Bisect Right,右分割, +Bisecting From,分割起始, +Bisecting Left ...,正在左分割..., +Bisecting Right ...,正在右分割..., +Bisecting To,分割结束, +Blanket Order Allowance (%),总括订单限额(%), +Bom No,物料清单编号, +Book Advance Payments as Liability option is chosen. Paid From account changed from {0} to {1}.,已选择将预付款记为负债,付款账户从{0}更改为{1}, +Book Advance Payments in Separate Party Account,在单独交易方账户记录预付款, +Book Tax Loss on Early Payment Discount,记录提前付款折扣的税务损失, +Book an appointment,预约登记, +Booking stock value across multiple accounts will make it harder to track stock and account value.,跨多个账户记录库存价值会使跟踪库存和账户价值更困难, +Books have been closed till the period ending on {0},账册已结账至{0}结束的期间, +Both Payable Account: {0} and Advance Account: {1} must be of same currency for company: {2},应付账户{0}和预付款账户{1}对公司{2}必须使用相同货币, +Both Receivable Account: {0} and Advance Account: {1} must be of same currency for company: {2},应收账户{0}和预付款账户{1}对公司{2}必须使用相同货币, +Both {0} Account: {1} and Advance Account: {2} must be of same currency for company: {3},{0}账户{1}和预付款账户{2}对公司{3}必须使用相同货币, +Budget Exceeded,预算超支, +Build All?,全部构建?, +Build Tree,构建树形结构, +Buildable Qty,可构建数量, +Bulk Transaction Log,批量交易日志, +Bulk Transaction Log Detail,批量交易日志明细, +Bulk Update,批量更新, +Bundle Items,组合物料, +Buying & Selling Settings,采购与销售设置, +Buying and Selling,采购与销售, +"By default, the Supplier Name is set as per the Supplier Name entered. If you want Suppliers to be named by a Naming Series choose the 'Naming Series' option.",默认供应商名称按输入显示。若要通过编号规则命名供应商,请选择'编号规则'选项, +Bypass credit check at Sales Order,销售订单跳过信用检查, +CANCELLED,已取消, +CODE-39,CODE-39条码, +COGS By Item Group,按物料组统计销售成本, +COGS Debit,销售成本借方, +CRM Note,CRM备注, +CRM Settings,CRM设置, +Calculate Product Bundle Price based on Child Items' Rates,根据子项单价计算产品组合价格, +Calculate daily depreciation using total days in depreciation period,按折旧期总天数计算日折旧额, +Call Again,再次呼叫, +Call Ended,通话结束, +Call Handling Schedule,通话处理安排, +Call Received By,接听人, +Call Receiving Device,接听设备, +Call Routing,呼叫路由, +Call Schedule Row {0}: To time slot should always be ahead of From time slot.,排程行{0}:结束时段应在开始时段之后, +Call Type,通话类型, +Callback,回拨, +Campaign Item,活动项, +Can not close Work Order. Since {0} Job Cards are in Work In Progress state.,无法关闭工单,因{0}张作业卡处于进行中状态, +"Can not filter based on Child Account, if grouped by Account",若按科目分组,则无法按子科目筛选, +"Can't change the valuation method, as there are transactions against some items which do not have its own valuation method",存在未设置计价方法的物料交易,无法修改计价方法, +Cannot Merge,无法合并, +Cannot Resubmit Ledger entries for vouchers in Closed fiscal year.,已关闭会计年度的凭证不可重新提交分类账分录, +"Cannot amend {0} {1}, please create a new one instead.",无法修改{0}{1},请新建凭证, +Cannot apply TDS against multiple parties in one entry,单笔凭证不能为多方应用源头减税, +Cannot cancel as processing of cancelled documents is pending.,存在待处理的已取消单据,无法取消, +Cannot cancel the transaction. Reposting of item valuation on submission is not completed yet.,物料价值重估未完成,无法取消交易, +Cannot change Reference Document Type.,不可修改参考单据类型, +Cannot complete task {0} as its dependant task {1} are not completed / cancelled.,依赖任务{1}未完成/取消,无法完成任务{0}, +Cannot convert Task to non-group because the following child Tasks exist: {0}.,存在子任务{0},无法转换为非组任务, +Cannot convert to Group because Account Type is selected.,已选择科目类型,不可转为科目组, +Cannot create Stock Reservation Entries for future dated Purchase Receipts.,无法为未来日期的采购收据创建库存预留, +Cannot create a pick list for Sales Order {0} because it has reserved stock. Please unreserve the stock in order to create a pick list.,销售订单{0}已预留库存,无法创建拣货单,请取消预留, +Cannot create accounting entries against disabled accounts: {0},无法为已禁用科目{0}创建会计凭证, +Cannot delete Exchange Gain/Loss row,无法删除汇兑损益行, +Cannot enqueue multi docs for one company. {0} is already queued/running for company: {1},同一公司{1}无法排队多个任务,{0}已在队列/运行中, +Cannot find a default warehouse for item {0}. Please set one in the Item Master or in Stock Settings.,找不到物料{0}的默认仓库,请在物料主数据或库存设置中设置, +Cannot make any transactions until the deletion job is completed,删除任务完成前不可进行任何交易, +Cannot produce more item for {0},无法为{0}生产更多物料, +Cannot produce more than {0} items for {1},无法为{1}生产超过{0}件物料, +Cannot receive from customer against negative outstanding,存在负未清金额时不可从客户收货, +Cannot retrieve link token for update. Check Error Log for more information,无法获取更新链接令牌,查看错误日志, +Cannot retrieve link token. Check Error Log for more information,无法获取链接令牌,查看错误日志, +Canonical URI,规范URI, +Capacity (Stock UOM),产能(库存单位), +Capacity in Stock UOM,产能(库存单位), +Capacity must be greater than 0,产能必须大于0, +Capitalization Method,资本化方法, +Capitalize Asset,资产资本化, +Capitalize Repair Cost,资本化维修成本, +Capitalized,已资本化, +Carrier,承运商, +Carrier Service,承运服务, +Carry Forward Communication and Comments,结转沟通记录与注释, +Category Details,类别明细, +Caution: This might alter frozen accounts.,注意:可能修改冻结账户, +Change in Stock Value,库存价值变动, +Changed customer name to '{}' as '{}' already exists.,客户名称已存在,已更改为'{}', +Changes,变更记录, +Charge of type 'Actual' in row {0} cannot be included in Item Rate or Paid Amount,行{0}的'实际'类型费用不可包含在物料单价或实付金额中, +Chart Of Accounts,会计科目表, +Checked On,检查时间, +Checking this will round off the tax amount to the nearest integer,勾选后将四舍五入税额至整数, +Cheques and Deposits Incorrectly cleared,支票与存款错误核销, +Child Row Reference,子行引用, +Choose a WIP composite asset,选择在制品复合资产, +Clear Demo Data,清除演示数据, +Clear Notifications,清空通知, +Clearing Demo Data...,正在清除演示数据..., +Click on 'Get Finished Goods for Manufacture' to fetch the items from the above Sales Orders. Items only for which a BOM is present will be fetched.,点击'获取待生产成品'从上述销售订单提取物料,仅获取存在物料清单的物料, +Click on Add to Holidays. This will populate the holidays table with all the dates that fall on the selected weekly off. Repeat the process for populating the dates for all your weekly holidays,点击'添加至假期',系统将填充所选周休日期的假期表,重复操作可填充所有周休日期, +Click on Get Sales Orders to fetch sales orders based on the above filters.,点击'获取销售订单'根据上述筛选条件提取销售订单, +Click to add email / phone,点击添加邮箱/电话, +Close Replied Opportunity After Days,商机回复后关闭天数, +Closed Work Order can not be stopped or Re-opened,已关闭工单不可停止或重新打开, +Closing,正在关闭, +Closing Balance as per Bank Statement,银行对账单期末余额, +Closing Balance as per ERP,系统期末余额, +Code List,编码列表, +Columns are not according to template. Please compare the uploaded file with standard template,列不符合模板要求,请对比上传文件与标准模板, +Common Code,通用编码, +Communication Channel,沟通渠道, +Company Address Display,公司地址显示格式, +Company Billing Address,公司账单地址, +Company Contact Person,公司联系人, +Company Details,公司详情, +Company Shipping Address,公司发货地址, +Company Tax ID,公司税号, +Company and Posting Date is mandatory,必须填写公司和过账日期, +Company is mandatory,公司为必填项, +Company is mandatory for generating an invoice. Please set a default company in Global Defaults.,生成发票必须指定公司,请在全局设置中设置默认公司, +Company which internal customer represents,内部客户所属公司, +Company which internal customer represents.,内部客户所属公司, +Company which internal supplier represents,内部供应商所属公司, +Company {0} added multiple times,公司{0}被重复添加, +Company {0} is added more than once,公司{0}被多次添加, +Company {} does not exist yet. Taxes setup aborted.,公司{}尚未存在,税务设置已中止, +Company {} does not match with POS Profile Company {},公司{}与POS配置公司{}不匹配, +Competitor,竞争对手, +Competitor Detail,竞争对手详情, +Competitor Name,竞争对手名称, +Competitors,竞争对手列表, +Complete Job,完成作业, +Complete Order,完成订单, +Completed On,完成日期, +Completed On cannot be greater than Today,完成日期不能晚于今日, +Completed Tasks,已完成任务, +Completed Time,完成时间, +Completion Date can not be before Failure Date. Please adjust the dates accordingly.,完成日期不能在故障日期之前,请调整日期, +Conditional Rule,条件规则, +Conditional Rule Examples,条件规则示例, +Configure Product Assembly,配置产品组装, +Configure the action to stop the transaction or just warn if the same rate is not maintained.,配置当费率不一致时的操作:终止交易或仅警告, +Connections,连接, +Consider Entire Party Ledger Amount,考虑交易方总账金额, +Consider Minimum Order Qty,考虑最小订单量, +Consider Rejected Warehouses,考虑拒收仓库, +Considered In Paid Amount,计入实付金额, +Consolidate Sales Order Items,合并销售订单项, +Consolidate Sub Assembly Items,合并子装配项, +Consumed Asset Total Value,消耗资产总值, +Consumed Assets,消耗资产, +Consumed Quantity,消耗数量, +Consumed Stock Items,消耗库存物料, +Consumed Stock Items or Consumed Asset Items are mandatory for creating new composite asset,创建复合资产需填写消耗库存或资产物料, +"Consumed Stock Items, Consumed Asset Items or Consumed Service Items is mandatory for Capitalization",资本化需填写消耗库存/资产/服务项, +Consumed Stock Total Value,消耗库存总价值, +Consumption Rate,消耗率, +Contact Details,联系人详情, +Contact Mobile,联系人手机, +Contact Person does not belong to the {0},联系人不属于{0}, +Contact Us Settings,联系我们设置, +Contacts,联系人, +Contract Template Help,合同模板帮助, +Contribution Qty,贡献数量, +Control Historical Stock Transactions,控制历史库存交易, +Conversion factor for item {0} has been reset to 1.0 as the uom {1} is same as stock uom {2}.,物料{0}的换算系数已重置为1.0,因其单位{1}与库存单位{2}相同, +Conversion rate cannot be 0,汇率不能为 0, +"Conversion rate is 1.00, but document currency is different from company currency",汇率设置为1.00,但单据货币与公司货币不同, +Conversion rate must be 1.00 if document currency is same as company currency,单据货币与公司本位币相同时,汇率必须为1.00, +Convert Item Description to Clean HTML in Transactions,在交易中将物料描述转换为纯净HTML, +Convert to Item Based Reposting,转换为基于物料的重新过账, +Convert to Ledger,转换为分类账,Warehouse +Core,核心, +Corrective Job Card,纠正性作业卡, +Corrective Operation,纠正性工序, +Corrective Operation Cost,纠正性工序成本, +Cost Center Allocation,成本中心分配, +Cost Center Allocation Percentage,成本中心分配百分比, +Cost Center Allocation Percentages,成本中心分配比例, +Cost Center for Item rows has been updated to {0},物料行的成本中心已更新为{0}, +"Cost Center is a part of Cost Center Allocation, hence cannot be converted to a group",成本中心参与分配,不可转换为组, +Cost Center with Allocation records can not be converted to a group,存在分配记录的成本中心不可转换为组, +Cost Center {0} cannot be used for allocation as it is used as main cost center in other allocation record.,成本中心{0}已在其他分配中作为主成本中心使用,不可分配, +Cost Center {} doesn't belong to Company {},成本中心{}不属于公司{}, +Cost Center {} is a group cost center and group cost centers cannot be used in transactions,成本中心{}为组成本中心,不可用于交易, +Cost Configuration,成本配置, +Cost Per Unit,单位成本, +Cost of Poor Quality Report,劣质成本报告, +Cost to Company (CTC),公司成本(CTC), +Costing Details,成本核算明细, +Could Not Delete Demo Data,无法删除演示数据, +Could not auto update shifts. Shift with shift factor {0} needed.,无法自动更新班次,需要班次系数{0}, +Could not detect the Company for updating Bank Accounts,无法识别更新银行账户的公司, +Could not find path for ,无法找到路径:, +Create Depreciation Entry,创建折旧凭证, +Create Employee records.,创建员工记录, +Create Grouped Asset,创建组合资产, +Create Job Card based on Batch Size,按批次大小创建作业卡, +Create Journal Entries,创建日记账分录, +Create Ledger Entries for Change Amount,创建差额总账分录, +Create Link,创建链接, +Create Multi-level BOM,创建多层级物料清单, +Create New Customer,新建客户, +Create Opportunity,创建商机, +Create Prospect,创建潜在客户, +Create Reposting Entries,创建重过账分录, +Create Reposting Entry,创建重过账分录, +Create Stock Entry,创建库存凭证, +Create Workstation,创建工作中心, +Create a new composite asset,新建组合资产, +Create a variant with the template image.,使用模板图像创建变型, +Create in Draft Status,以草稿状态创建, +Create {0} {1} ?,是否创建{0}{1}?, +Created On,创建时间, +Created {0} scorecards for {1} between:,已为{1}创建{0}张计分卡,时间范围:, +Creating Delivery Note ...,正在创建交货单..., +Creating Journal Entries...,正在创建日记账分录..., +Creating Packing Slip ...,正在创建装箱单..., +Creating Purchase Invoices ...,正在创建采购发票..., +Creating Purchase Receipt ...,正在创建采购收货单..., +Creating Sales Invoices ...,正在创建销售发票..., +Creating Stock Entry,正在创建库存凭证, +Creating Subcontracting Order ...,正在创建外协订单..., +Creating Subcontracting Receipt ...,正在创建外协收货单..., +Creating User...,正在创建用户..., +Creation,创建, +Creation of {1}(s) successful,成功创建{1}, +"Creation of {0} failed. + Check Bulk Transaction Log","创建 {0} 失败。 + 检查 批量事务日志", +"Creation of {0} partially successful. + Check Bulk Transaction Log","创建 {0} 部分成功。 + 检查 批量事务日志", +Credit (Transaction),贷方(交易), +Credit Amount in Transaction Currency,交易货币贷方金额, +Credit Limit Crossed,超出信用额度, +Credit Limit Settings,信用额度设置, +"Credit Note will update it's own outstanding amount, even if 'Return Against' is specified.",即使指定'退货依据',贷项凭证仍将更新自身未清金额, +Cron Interval should be between 1 and 59 Min,定时任务间隔应设置为1至59分钟, +Currency Exchange Settings Details,货币兑换设置明细, +Currency Exchange Settings Result,货币兑换设置结果, +Current Asset,流动资产, +Current Index,当前索引, +Current Level,当前层级, +Current Liability,流动负债, +Current Node,当前节点, +Current Serial / Batch Bundle,当前序列/批次包, +Custom delimiters,自定义分隔符, +Customer ,客户 , +Customer / Item / Item Group,客户/物料/物料组, +Customer Defaults,客户默认值, +Customer Group Item,客户组物料, +Customer Group: {0} does not exist,客户组:{0}不存在, +Customer Item,客户物料, +Customer Name: ,客户名称:, +Customer Portal Users,客户门户用户, +Customer: ,客户:, +Daily Time to send,每日发送时间, +Dashboard,仪表板, +Data Based On,数据依据, +Date ,日期 , +Date must be between {0} and {1},日期必须在{0}至{1}之间, +Dates,日期, +Days before the current subscription period,当前订阅周期前天数, +DeLinked,解除关联, +Deal Owner,交易负责人, +Debit (Transaction),借方(交易), +Debit Amount in Transaction Currency,交易货币借方金额, +"Debit Note will update it's own outstanding amount, even if 'Return Against' is specified.",即使指定'退货依据',借项凭证仍将更新自身未清金额, +Debit-Credit Mismatch,借贷不平, +Debit-Credit mismatch,借贷不平, +Default Advance Account,默认预付款科目, +Default Advance Paid Account,默认预付账款科目, +Default Advance Received Account,默认预收账款科目, +Default BOM not found for FG Item {0},未找到产成品{0}的默认物料清单, +Default Common Code,默认通用代码, +Default Discount Account,默认折扣科目, +Default In-Transit Warehouse,默认在途仓库, +Default Operating Cost Account,默认运营成本科目, +Default Payment Discount Account,默认付款折扣科目, +Default Provisional Account,默认暂记科目, +Default Service Level Agreement for {0} already exists.,{0}的默认服务级别协议已存在, +Default Unit of Measure for Item {0} cannot be changed directly because you have already made some transaction(s) with another UOM. You need to either cancel the linked documents or create a new Item.,物料{0}的默认计量单位不可直接更改,因已存在其他计量单位的交易。需取消关联单据或创建新物料, +Default settings for your stock-related transactions,库存相关交易的默认设置, +"Default tax templates for sales, purchase and items are created.",已创建销售、采购和物料的默认税务模板, +Deferred Accounting,递延会计, +Deferred Accounting Defaults,递延会计默认值, +Deferred Revenue and Expense,递延收入与费用, +Deferred accounting failed for some invoices:,以下发票递延会计处理失败:, +Delay (In Days),延迟(天数), +Delayed,已延迟, +Delayed Tasks Summary,延迟任务汇总, +Delete Accounting and Stock Ledger Entries on deletion of Transaction,删除交易时同步删除会计与库存分类账分录, +Delete Bins,删除库位, +Delete Cancelled Ledger Entries,删除已取消的分类账分录, +Delete Dimension,删除维度, +Delete Leads and Addresses,删除销售线索与地址, +Delete Transactions,删除交易, +Deleted Documents,已删除单据, +Deleting {0} and all associated Common Code documents...,正在删除{0}及其所有关联通用代码单据..., +Deletion in Progress!,删除进行中!, +Delimiter options,分隔符选项, +Delivery Manager,交付经理, +Delivery Note Packed Item,交货单打包物料, +Delivery User,交付用户, +Delivery to,交付至, +Demand,需求, +Demo Company,演示公司, +Demo data cleared,演示数据已清除, +Dependant SLE Voucher Detail No,依赖库存分类账凭证明细编号, +Dependent Task {0} is not a Template Task,依赖任务{0}不是模板任务, +Deposit,保证金, +Depreciate based on daily pro-rata,按日比例计提折旧, +Depreciate based on shifts,按班次计提折旧, +Depreciation Details,折旧明细, +Depreciation Entry Posting Status,折旧分录过账状态, +Depreciation Expense Account should be an Income or Expense Account.,折旧费用科目应为收入或费用类科目, +Depreciation Posting Date cannot be before Available-for-use Date,折旧过账日期不可早于可用日期, +Depreciation Row {0}: Depreciation Posting Date cannot be before Available-for-use Date,折旧行{0}:折旧过账日期不可早于可用日期, +Depreciation Schedule View,折旧计划表视图, +Depreciation cannot be calculated for fully depreciated assets,已全额折旧资产无法计算折旧, +Depreciation eliminated via reversal,通过冲销消除折旧, +Description of Content,内容描述, +Desk User,桌面用户, +Difference In,差额在, +Difference Posting Date,差额过账日期, +Difference Qty,差额数量, +Different 'Source Warehouse' and 'Target Warehouse' can be set for each row.,每行可设置不同的'来源仓库'与'目标仓库', +Dimension Details,维度明细, +Dimension Filter Help,维度筛选帮助, +Dimension-wise Accounts Balance Report,分维度科目余额表, +Dimensions,维度, +Direct Expense,直接费用, +Disable Last Purchase Rate,禁用上次采购价, +Disable Serial No And Batch Selector,禁用序列号与批次选择器, +Disable auto setting Grand Total to default Payment Mode,禁用自动将总计设为默认付款方式, +Disabled Account Selected,选中了禁用账户, +Disabled Warehouse {0} cannot be used for this transaction.,已禁用仓库{0}不可用于此交易, +Disabled pricing rules since this {} is an internal transfer,因{}为内部调拨,已禁用定价规则, +Disabled tax included prices since this {} is an internal transfer,因{}为内部调拨,已禁用含税价格, +Disables auto-fetching of existing quantity,禁用自动获取现有数量, +Disassemble,拆解, +Disassemble Order,拆解订单, +Discount Account,折扣科目, +Discount Date,折扣日期, +Discount Settings,折扣设置, +Discount Validity,折扣有效期, +Discount Validity Based On,折扣有效期依据, +Discount of {} applied as per Payment Term,根据付款条款应用{}折扣, +Discounted Amount,折后金额, +"Discounts to be applied in sequential ranges like buy 1 get 1, buy 2 get 2, buy 3 get 3 and so on",按顺序范围应用折扣,如买1送1、买2送2等, +Discrepancy between General and Payment Ledger,总账与付款分类账差异, +Dispatch Address,派送地址, +Dispatch Address Name,派送地址名称, +Distinct Item and Warehouse,唯一物料与仓库, +Distribute Additional Costs Based On ,附加费用分摊依据, +Distribute Manually,手动分配, +Do Not Explode,不展开, +Do Not Update Serial / Batch on Creation of Auto Bundle,创建自动捆绑时不更新序列/批次, +Do Not Use Batch-wise Valuation,不启用分批次计价, +Do reposting for each Stock Transaction,对每笔库存交易执行重过账, +Do you still want to enable immutable ledger?,确认要启用不可变分类账?, +Do you still want to enable negative inventory?,确认要启用负库存?, +DocTypes should not be added manually to the 'Excluded DocTypes' table. You are only allowed to remove entries from it.,'排除文档类型'表不可手动添加条目,仅允许删除现有条目, +Document Type already used as a dimension,文档类型已作为维度使用, +Documents,文档, +Documents Processed on each trigger. Queue Size should be between 5 and 100,每次触发处理的文档数。队列大小应为5至100, +Documents: {0} have deferred revenue/expense enabled for them. Cannot repost.,文档{0}启用了递延收入/费用,无法重过账, +Domain Settings,域名设置, +Don't Enforce Free Item Qty,不强制赠品数量, +Don't Reserve Sales Order Qty on Sales Return,销售退货时不预留销售订单数量, +Don't Send Emails,不发送邮件, +Dont Recompute tax,不重新计算税款, +Download Backups,下载备份, +Download CSV Template,下载CSV模板, +Download PDF for Supplier,为供应商下载PDF, +Dunning Amount (Company Currency),催款金额(公司货币), +Dunning Level,催款级别, +Duplicate Customer Group,重复客户组, +Duplicate Finance Book,重复财务账簿, +Duplicate Item Group,重复物料组, +Duplicate POS Invoices found,发现重复POS发票, +Dynamic Condition,动态条件, +Edit Capacity,编辑产能, +Edit Cart,编辑购物车, +Edit Full Form,编辑全称, +Edit Note,编辑备注, +Editing {0} is not allowed as per POS Profile settings,根据POS配置设置,不允许编辑{0}, +Either 'Selling' or 'Buying' must be selected,必须选择'销售'或'采购', +Email / Notifications,邮件/通知, +Email Address (required),电子邮件地址(必填), +"Email Address must be unique, it is already used in {0}",电子邮件地址必须唯一,已在{0}中使用, +Email Digest Recipient,邮件摘要接收人, +Email Digest: {0},邮件摘要:{0}, +Email Domain,邮件域名, +Email Receipt,邮件回执, +Email or Phone/Mobile of the Contact are mandatory to continue.,必须填写联系人的邮箱或电话/手机才能继续, +Email verification failed.,邮件验证失败, +Employee User Id,员工用户ID, +Employee {0} is currently working on another workstation. Please assign another employee.,员工{0}正在其他工作中心工作,请指派其他员工, +Enable Allow Partial Reservation in the Stock Settings to reserve partial stock.,在库存设置中启用允许部分预留以保留部分库存, +Enable Automatic Party Matching,启用自动交易方匹配, +Enable Common Party Accounting,启用共同交易方核算, +Enable Discount Accounting for Selling,启用销售折扣核算, +Enable Fuzzy Matching,启用模糊匹配, +Enable Health Monitor,启用健康监控, +Enable Immutable Ledger,启用不可变分类账, +Enable Provisional Accounting For Non Stock Items,对非库存物料启用暂记核算, +Enable Stock Reservation,启用库存预留, +Enable it if users want to consider rejected materials to dispatch.,若需考虑拒收物料进行派送,请启用此选项, +Enable this checkbox even if you want to set the zero priority,即使设置零优先级也需勾选此复选框, +"Enable this option to calculate daily depreciation by considering the total number of days in the entire depreciation period, (including leap years) while using daily pro-rata based depreciation",启用此选项将通过考虑整个折旧期间总天数(含闰年)来计算每日折旧,基于按日比例折旧法, +Enable to apply SLA on every {0},启用后将在每个{0}应用SLA, +Enabling this ensures each Purchase Invoice has a unique value in Supplier Invoice No. field within a particular fiscal year,启用此选项确保每个会计年度内供应商发票号的唯一性, +Enabling this option will allow you to record -

1. Advances Received in a Liability Account instead of the Asset Account

2. Advances Paid in an Asset Account instead of the Liability Account,启用此选项将允许:

1. 将预收款记入负债账户而非资产账户

2. 将预付款记入资产账户而非负债账户, +Enabling this will allow creation of multi-currency invoices against single party account in company currency,启用后允许以公司货币为单一交易方创建多币种发票, +Enabling this will change the way how cancelled transactions are handled.,启用后将改变已取消交易的处理方式, +End Transit,结束运输, +End of the current subscription period,当前订阅周期结束, +"Enter First and Last name of Employee, based on Which Full Name will be updated. IN transactions, it will be Full Name which will be fetched.",输入员工姓和名,全称将自动更新。交易中将使用全称, +Enter Manually,手动输入, +Enter Serial Nos,输入序列号, +Enter Visit Details,输入访问明细, +Enter a name for Routing.,输入工艺路线名称, +"Enter a name for the Operation, for example, Cutting.",输入工序名称,如切割, +Enter a name for this Holiday List.,输入节假日列表名称, +"Enter an Item Code, the name will be auto-filled the same as Item Code on clicking inside the Item Name field.",输入物料代码,点击物料名称字段将自动填充相同名称, +Enter each serial no in a new line,每行输入一个序列号, +"Enter the Operation, the table will fetch the Operation details like Hourly Rate, Workstation automatically. + + After that, set the Operation Time in minutes and the table will calculate the Operation Costs based on the Hourly Rate and Operation Time.","输入操作后,表格将自动获取操作详细信息,如小时费率、工作站。 + + 之后,以分钟为单位设置操作时间,表格将根据小时费率和操作时间计算操作成本。", +Enter the opening stock units.,输入期初库存数量, +Enter the quantity of the Item that will be manufactured from this Bill of Materials.,输入基于此物料清单生产的物料数量, +Enter the quantity to manufacture. Raw material Items will be fetched only when this is set.,输入生产数量。仅当设置此值时才会获取原材料, +Error during caller information update,更新来电信息时出错, +Error in party matching for Bank Transaction {0},银行交易{0}交易方匹配错误, +Error while posting depreciation entries,过账折旧分录时出错, +Error while processing deferred accounting for {0},处理{0}递延会计时出错, +Error while reposting item valuation,重过账物料计价时出错, +"Error: This asset already has {0} depreciation periods booked. + The `depreciation start` date must be at least {1} periods after the `available for use` date. + Please correct the dates accordingly.","错误:此资产已登记 {0} 个折旧期。 + `折旧开始`日期必须至少在 `可供使用`日期之后 {1} 个期。 + 请相应地更正日期。", +Errors Notification,错误通知, +Even invoices with apply tax withholding unchecked will be considered for checking cumulative threshold breach,未勾选应用预扣税的发票也将用于检查累计阈值突破, +Example URL,示例URL, +Example of a linked document: {0},关联文档示例:{0}, +"Example: ABCD.##### +If series is set and Serial No is not mentioned in transactions, then automatic serial number will be created based on this series. If you always want to explicitly mention Serial Nos for this item. leave this blank.","例如:ABCD.##### +如果设置了系列,但交易中未提及序列号,则将根据此系列自动创建序列号。如果您始终想明确提及此项目的序列号,请将此处留空。", +Example: Serial No {0} reserved in {1}.,示例:序列号{0}在{1}中预留, +Excess Materials Consumed,超量消耗物料, +Excess Transfer,超额调拨, +Exchange Gain / Loss,汇兑损益, +Exchange Gain Or Loss,汇兑损益, +Exchange Gain/Loss amount has been booked through {0},已通过{0}登记汇兑损益金额, +Exchange Rate Revaluation Settings,汇率重估设置, +Excluded DocTypes,排除文档类型, +Exempt Supplies,免税供应, +Exit Full Screen,退出全屏, +Expected,预期, +Expected Balance Qty,预期结余数量, +Expected End Date should be less than or equal to parent task's Expected End Date {0}.,预计结束日期应小于或等于父任务预计结束日期{0}, +Expected Stock Value,预期库存价值, +Expected Time Required (In Mins),所需预计时间(分钟), +Expiry,有效期, +Export Data,导出数据, +Export Errored Rows,导出错误行, +Export Import Log,导出导入日志, +Extra Consumed Qty,额外消耗数量, +Extra Job Card Quantity,额外作业卡数量, +FIFO Queue vs Qty After Transaction Comparison,先进先出队列与交易后数量对比, +"FIFO Stock Queue (qty, rate)",先进先出库存队列(数量,单价), +FIFO/LIFO Queue,先进先出/后进先出队列, +Failed Entries,失败条目, +"Failed to erase demo data, please delete the demo company manually.",清除演示数据失败,请手动删除演示公司, +Failed to post depreciation entries,折旧分录过账失败, +Failed to setup defaults for country {0}. Please contact support.,国家{0}默认设置失败,请联系支持, +Failure,故障, +Failure Description,故障描述, +Fetch Based On,获取依据, +Fetch Overdue Payments,获取逾期付款, +Fetch Timesheet,获取工时表, +Fetch Timesheet in Sales Invoice,在销售发票中获取工时表, +Fetch Value From,取值来源, +Fetching Error,获取错误, +Fetching exchange rates ...,正在获取汇率..., +Filter by Reference Date,按参考日期筛选, +Filter on Invoice,按发票筛选, +Filter on Payment,按付款筛选, +Filters missing,缺少筛选条件, +Final Product,最终产品, +Financial Ratios,财务比率, +Financial Reports,财务报表, +Financial Year Begins On,财年开始日期, +Financial reports will be generated using GL Entry doctypes (should be enabled if Period Closing Voucher is not posted for all years sequentially or missing) ,财务报表将使用总账分录生成(若未按顺序过账所有年度的期间结算凭证,需启用), +Finished Good BOM,产成品物料清单, +Finished Good Item,产成品物料, +Finished Good Item Qty,产成品物料数量, +Finished Good Item Quantity,产成品物料数量, +Finished Good Item is not specified for service item {0},服务物料{0}未指定产成品物料, +Finished Good Item {0} Qty can not be zero,产成品物料{0}数量不可为零, +Finished Good Item {0} must be a sub-contracted item,产成品物料{0}必须为外协物料, +Finished Good Qty,产成品数量, +Finished Good Quantity ,产成品数量, +Finished Good UOM,产成品计量单位, +Finished Good {0} does not have a default BOM.,产成品{0}无默认物料清单, +Finished Good {0} is disabled.,产成品{0}已停用, +Finished Good {0} must be a stock item.,产成品{0}必须为库存物料, +Finished Good {0} must be a sub-contracted item.,产成品{0}必须为外协物料, +Finished Goods Based Operating Cost,基于产成品的运营成本, +Finished Goods Item,产成品物料, +Finished Goods Reference,产成品参考, +Finished Goods Value,产成品价值, +Finished Goods based Operating Cost,基于产成品的运营成本, +Finished Item {0} does not match with Work Order {1},产成品{0}与工单{1}不匹配, +First Response Due,首次响应截止, +First Response SLA Failed by {},首次响应SLA未达标 {}, +Fixed Asset Defaults,固定资产默认值, +Fixed Time,固定时间, +Floor,楼层, +Floor Name,楼层名称, +For Item,物料, +For Item {0} cannot be received more than {1} qty against the {2} {3},物料{0}针对{2}{3}的收货数量不得超过{1}, +For Job Card,作业卡, +For Operation,工序, +"For Return Invoices with Stock effect, '0' qty Items are not allowed. Following rows are affected: {0}",库存影响的退货发票中不允许零数量物料,受影响行:{0}, +For Work Order,工单, +For dunning fee and interest,催收费及利息, +"For item {0}, rate must be a positive number. To Allow negative rates, enable {1} in {2}",物料{0}的税率必须为正数。允许负数需在{2}启用{1}, +For quantity {0} should not be greater than allowed quantity {1},数量{0}不得超过允许数量{1}, +"For the item {0}, the quantity should be {1} according to the BOM {2}.",物料{0}的数量根据BOM{2}应为{1}, +"For the {0}, no stock is available for the return in the warehouse {1}.",{0}在仓库{1}中无可用退货库存, +"For the {0}, the quantity is required to make the return entry",{0}需要数量才能创建退货分录, +Force-Fetch Subscription Updates,强制获取订阅更新, +Forecast,预测, +Forecasting,预测, +Formula Based Criteria,公式条件, +Free Item Rate,赠品单价, +From Corrective Job Card,来自纠正作业卡, +From Date and To Date are mandatory,起始和截止日期必填, +From Date is mandatory,起始日期必填, +From Date: {0} cannot be greater than To date: {1},起始日期:{0}不能晚于截止日期:{1}, +From Delivery Date,发货日期起, +From Doctype,来源单据类型, +From Due Date,到期日起, +From Opportunity,来自商机, +From Payment Date,付款日期起, +From Prospect,来自潜在客户, +From Reference Date,参考日期起, +From Voucher Detail No,起始凭证明细编号, +From Voucher No,起始凭证编号, +From Voucher Type,起始凭证类型, +From and To dates are required,必须填写起始和截止日期, +Full Screen,全屏, +Full and Final Statement,全款结清声明, +GL Balance,总账余额, +GL Entry Processing Status,总账分录处理状态, +GL reposting index,总账重过账索引, +GS1,GS1标准, +GTIN,全球贸易项目代码, +Gain/Loss accumulated in foreign currency account. Accounts with '0' balance in either Base or Account currency,外币账户累计损益。本币或外币余额为零的账户, +Gain/Loss already booked,损益已登记, +Gain/Loss from Revaluation,重估损益, +General and Payment Ledger Comparison,总账与付款账对比, +General and Payment Ledger mismatch,总账与付款账不一致, +Generate Demo Data for Exploration,生成演示数据用于探索, +Generate E-Invoice,生成电子发票, +Generate Invoice At,生成发票时间, +Generated,已生成, +Generating Preview,生成预览, +Get Allocations,获取分配, +Get Customer Group Details,获取客户组详情, +Get Finished Goods for Manufacture,获取待生产产成品, +Get Outstanding Orders,获取未清订单, +Get Raw Materials Cost from Consumption Entry,从消耗分录获取原材料成本, +Get Raw Materials for Purchase,获取待采购原材料, +Get Raw Materials for Transfer,获取待调拨原材料, +Get Scrap Items,获取废品物料, +Get Stock,获取库存, +Get Sub Assembly Items,获取子装配件, +Get Supplier Group Details,获取供应商组详情, +Get Timesheets,获取工时表, +Get stops from,获取站点来源, +Getting Scrap Items,获取废品物料, +Give free item for every N quantity,每满N数量赠送赠品, +Go back,返回, +Go to {0} List,跳转至{0}列表, +Goods,货物, +Grant Commission,授予佣金, +Greeting Message,问候语, +Gross Profit Percent,毛利率, +Gross Purchase Amount Too Low: {0} cannot be depreciated over {1} cycles with a frequency of {2} depreciations.,购置总金额过低:{0}无法在{1}个周期内按{2}次折旧频率进行折旧, +Gross Purchase Amount should be equal to purchase amount of one single Asset.,购置总金额应等于单个资产的购置金额, +Group Same Items,合并相同物料, +Growth View,增长视图, +Handle Employee Advances,处理员工预支款, +Has Alternative Item,存在替代物料, +Has Corrective Cost,存在纠正成本, +Has Item Scanned,已扫描物料, +Has Priority,存在优先级, +Have Default Naming Series for Batch ID?,是否设置批次ID默认命名序列?, +Heatmap,热力图, +Height (cm),身高(厘米), +"Hello,",您好:, +Helps you distribute the Budget/Target across months if you have seasonality in your business.,若业务存在季节性波动,可帮助您将预算/目标分摊至各月, +Here are the error logs for the aforementioned failed depreciation entries: {0},上述失败折旧分录的错误日志如下:{0}, +Here are the options to proceed:,以下是可执行的操作选项:, +"Here, you can select a senior of this Employee. Based on this, Organization Chart will be populated.",此处可选择该员工的上级,组织架构图将基于此生成, +"Here, your weekly offs are pre-populated based on the previous selections. You can add more rows to also add public and national holidays individually.",此处每周休息日已根据先前选择预填充,您可新增行单独添加公共及国家节假日, +"Hi,",您好:, +Hide Images,隐藏图片, +Hide timesheets,隐藏工时表, +Holiday Date {0} added multiple times,节假日日期{0}被重复添加, +Hours Spent,耗时, +How often should Project be updated of Total Purchase Cost ?,应以何频率更新项目的总采购成本?, +ISBN,国际标准书号, +ISSN,国际标准刊号, +Idle,闲置, +"If Enabled - Reconciliation happens on the Advance Payment posting date
+If Disabled - Reconciliation happens on oldest of 2 Dates: Invoice Date or the Advance Payment posting date
+","如果 启用 - 对账发生在 预付款过账日期
+如果 禁用 - 对账发生在 2 个日期中最早的日期: 发票日期预付款过账日期
+", +"If an operation is divided into sub operations, they can be added here.",若工序被拆分为子工序,可在此处添加, +"If checked, Rejected Quantity will be included while making Purchase Invoice from Purchase Receipt.",勾选后,从采购收货单生成采购发票时将包含拒收数量, +"If checked, Stock will be reserved on Submit",勾选后,库存将在提交时预留, +"If checked, picked qty won't automatically be fulfilled on submit of pick list.",勾选后,提交拣货清单时不会自动履行已拣数量, +"If checked, the tax amount will be considered as already included in the Paid Amount in Payment Entry",勾选后,税款金额将被视为已包含在付款凭证的已付金额中, +"If checked, we will create demo data for you to explore the system. This demo data can be erased later.",勾选后,系统将创建演示数据供您探索。此数据后续可清除, +If enabled then system won't apply the pricing rule on the delivery note which will be create from the pick list,启用后,系统不会对从拣货清单创建的交货单应用定价规则, +If enabled then system won't override the picked qty / batches / serial numbers.,启用后,系统不会覆盖已拣数量/批次/序列号, +"If enabled, a print of this document will be attached to each email",启用后,每封邮件将附带此单据的打印件, +"If enabled, additional ledger entries will be made for discounts in a separate Discount Account",启用后,折扣将在单独折扣科目中生成额外分类账分录, +"If enabled, all files attached to this document will be attached to each email",启用后,每封邮件将附带此单据的所有附件, +"If enabled, do not update serial / batch values in the stock transactions on creation of auto Serial + / Batch Bundle. ","如果启用,则在创建自动序列 + /批次捆绑时不要更新库存交易中的序列/批次值。 ", +"If enabled, ledger entries will be posted for change amount in POS transactions",启用后,POS交易中的找零金额将生成分类账分录, +"If enabled, the consolidated invoices will have rounded total disabled",启用后,合并发票将禁用四舍五入总额, +"If enabled, the item rate won't adjust to the valuation rate during internal transfers, but accounting will still use the valuation rate.",启用后,内部调拨时物料单价不会调整为计价汇率,但会计仍使用计价汇率, +"If enabled, the system will create material requests even if the stock exists in the 'Raw Materials Warehouse'.",启用后,即使'原材料仓库'有库存,系统仍会创建物料请求, +"If enabled, the system will use the moving average valuation method to calculate the valuation rate for the batched items and will not consider the individual batch-wise incoming rate.",启用后,系统将采用移动平均计价法计算批次物料计价汇率,不考虑单个批次入库汇率, +"If enabled, then system will only validate the pricing rule and not apply automatically. User has to manually set the discount percentage / margin / free items to validate the pricing rule",启用后,系统仅验证定价规则而不自动应用。用户需手动设置折扣率/利润率/赠品以验证规则, +"If mentioned, the system will allow only the users with this Role to create or modify any stock transaction earlier than the latest stock transaction for a specific item and warehouse. If set as blank, it allows all users to create/edit back-dated transactions.",若设置,仅允许具有此角色的用户创建或修改早于特定物料及仓库最新库存交易的记录。留空则允许所有用户创建/编辑倒填日期交易, +"If not, you can Cancel / Submit this entry",若否,可取消/提交此分录, +"If rate is zero then item will be treated as ""Free Item""","如果比率为零,则该项将被视为""免费项目""", +"If the BOM results in Scrap material, the Scrap Warehouse needs to be selected.",若物料清单产生废料,需选择废品仓库, +"If the selected BOM has Operations mentioned in it, the system will fetch all Operations from BOM, these values can be changed.",若所选物料清单包含工序,系统将从中获取所有工序,这些值可修改, +"If there is no title column, use the code column for the title.",若无标题列,使用代码列作为标题, +"If this checkbox is enabled, then the system won’t run the MRP for the available sub-assembly items.",启用后,系统将不会为可用子装配件运行MRP, +If this is undesirable please cancel the corresponding Payment Entry.,若需取消,请撤销对应付款凭证, +"If yes, then this warehouse will be used to store rejected materials",若选择是,此仓库将用于存储拒收物料, +"If you are maintaining stock of this Item in your Inventory, ERPNext will make a stock ledger entry for each transaction of this item.",若在库存中维护此物料,ERPNext将为每笔交易创建库存分类账分录, +"If you need to reconcile particular transactions against each other, then please select accordingly. If not, all the transactions will be allocated in FIFO order.",若需对特定交易相互对账,请相应选择。否则所有交易将按先进先出顺序分配, +"If you still want to proceed, please disable 'Skip Available Sub Assembly Items' checkbox.",若仍要继续,请取消勾选'跳过可用子装配件'复选框, +"If you still want to proceed, please enable {0}.",若仍要继续,请启用{0}, +"If your CSV uses a different delimiter, add that character here, ensuring no spaces or additional characters are included.",若CSV使用不同分隔符,在此添加该字符,确保不含空格或其他字符, +Ignore Account Closing Balance,忽略账户期末余额, +Ignore Available Stock,忽略可用库存, +Ignore Closing Balance,忽略期末余额, +Ignore Default Payment Terms Template,忽略默认付款条款模板, +Ignore Empty Stock,忽略零库存, +Ignore Exchange Rate Revaluation Journals,忽略汇率重估日记账, +Ignore Is Opening check for reporting,忽略期初检查用于报表, +Ignore Pricing Rule is enabled. Cannot apply coupon code.,已启用忽略定价规则,无法应用优惠券, +Ignore System Generated Credit / Debit Notes,忽略系统生成的贷项/借项凭证, +Ignore Voucher Type filter and Select Vouchers Manually,忽略凭证类型筛选并手动选择凭证, +Ignores legacy Is Opening field in GL Entry that allows adding opening balance post the system is in use while generating reports,忽略总账分录中的遗留期初字段,允许在系统使用后添加期初余额生成报表, +Impairment,减值, +Import File,导入文件, +Import File Errors and Warnings,导入文件错误与警告, +Import Genericode File,导入通用代码文件, +Import Log Preview,导入日志预览, +Import Preview,导入预览, +Import Progress,导入进度, +Import Type,导入类型, +Import Using CSV file,使用CSV文件导入, +Import Warnings,导入警告, +Import completed. {0} common codes created.,导入完成,已创建{0}个通用代码, +Import from Google Sheets,从Google表格导入, +Importing Common Codes,正在导入通用代码, +"Importing {0} of {1}, {2}",正在导入{1}中的{0},{2}, +In House,内部, +In Minutes,分钟数, +In Party Currency,交易方货币, +In Transit Transfer,在途调拨, +In Transit Warehouse,在途仓库, +In mins,分钟, +"In row {0} of Appointment Booking Slots: ""To Time"" must be later than ""From Time"".",在预约预订时段的 {0} 行中:“结束时间”必须晚于“开始时间”。, +"In this section, you can define Company-wide transaction-related defaults for this Item. Eg. Default Warehouse, Default Price List, Supplier, etc.",此处可定义此物料在公司范围内的交易默认值,如默认仓库、价格表、供应商等, +Inactive Status,停用状态, +Include Account Currency,包含账户货币, +Include Closed Orders,包含已关闭订单, +Include Default FB Assets,包含默认财务账簿资产, +Include Disabled,包含停用项, +Include Expired Batches,包含过期批次, +Include Safety Stock in Required Qty Calculation,计算需求数量时包含安全库存, +Include Timesheets in Draft Status,包含草稿状态工时表, +Include Zero Stock Items,包含零库存物料, +Incoming Call Handling Schedule,来电处理排程, +Incoming Call Settings,来电设置, +Incoming Rate (Costing),入库汇率(成本核算), +Incorrect Balance Qty After Transaction,交易后结余数量错误, +Incorrect Batch Consumed,消耗批次错误, +Incorrect Check in (group) Warehouse for Reorder,再订购(组)仓库检查错误, +Incorrect Component Quantity,组件数量错误, +Incorrect Invoice,发票错误, +Incorrect Movement Purpose,移动目的错误, +Incorrect Payment Type,付款类型错误, +Incorrect Reference Document (Purchase Receipt Item),参考单据错误(采购收货单物料), +Incorrect Serial No Valuation,序列号计价错误, +Incorrect Serial Number Consumed,消耗序列号错误, +Incorrect Serial and Batch Bundle,序列及批次包错误, +Incorrect Stock Value Report,库存价值报告错误, +Incorrect Type of Transaction,交易类型错误, +Incoterm,国际贸易术语, +Increase In Asset Life(Months),资产寿命延长(月数), +Indent,缩进, +Indirect Expense,间接费用, +Individual GL Entry cannot be cancelled.,单个总账分录无法取消, +Individual Stock Ledger Entry cannot be cancelled.,单个库存分类账分录无法取消, +Initialize Summary Table,初始化汇总表, +Insert New Records,插入新记录, +Inspection Rejected,检验拒收, +Inspection Submission,检验提交, +Instruction,说明, +Insufficient Capacity,产能不足, +Insufficient Stock for Batch,批次库存不足, +Inter Transfer Reference,内部调拨参考, +Interest and/or dunning fee,利息及/或催收费, +Internal Customer,内部客户, +Internal Customer for company {0} already exists,公司{0}的内部客户已存在, +Internal Sale or Delivery Reference missing.,缺少内部销售或交付参考, +Internal Sales Reference Missing,缺少内部销售参考, +Internal Supplier,内部供应商, +Internal Supplier for company {0} already exists,公司{0}的内部供应商已存在, +Internal Transfer Reference Missing,缺少内部调拨参考, +Internal Transfers,内部调拨, +Internal transfers can only be done in company's default currency,内部调拨仅能使用公司本位币, +Interval should be between 1 to 59 MInutes,间隔应设置为1至59分钟, +Invalid,无效, +Invalid Allocated Amount,无效分配金额, +Invalid Amount,无效金额, +Invalid Auto Repeat Date,无效自动重复日期, +Invalid Cost Center,无效成本中心, +Invalid Delivery Date,无效交付日期, +Invalid Discount,无效折扣, +Invalid Document,无效单据, +Invalid Document Type,无效单据类型, +Invalid Formula,无效公式, +Invalid Group By,无效分组依据, +Invalid Item Defaults,无效物料默认值, +Invalid Ledger Entries,无效的分类账分录, +Invalid Primary Role,无效的主要角色, +Invalid Priority,无效的优先级, +Invalid Process Loss Configuration,无效的工艺损耗配置, +Invalid Purchase Invoice,无效的采购发票, +Invalid Qty,无效的数量, +Invalid Schedule,无效的排程计划, +Invalid Serial and Batch Bundle,无效的序列号和批次组合, +Invalid Warehouse,无效的仓库, +Invalid result key. Response:,无效的结果键值。响应:, +Invalid value {0} for {1} against account {2},科目{2}的字段{1}存在无效值{0}, +Inventory Dimension,库存维度, +Inventory Dimension Negative Stock,库存维度负库存, +Inventory Settings,库存参数设置, +Invoice Cancellation,发票作废, +Invoice ID,发票编号, +Invoice Limit,发票限额, +Invoice Portion (%),发票比例(%), +Invoice and Billing,发票与计费, +Invoiced Qty,已开票数量, +Invoices and Payments have been Fetched and Allocated,发票与付款已获取并核销, +Invoicing Features,开票功能模块, +Is Adjustment Entry,是否调整分录, +Is Alternative,是否替代物料, +Is Cash or Non Trade Discount,是否现金/非贸易折扣, +Is Composite Asset,是否组合资产, +Is Corrective Job Card,是否纠正性作业卡, +Is Corrective Operation,是否纠正性工序, +Is Exchange Gain / Loss?,是否汇兑损益?, +Is Expandable,是否可展开, +Is Finished Item,是否完成品, +Is Fully Depreciated,是否已提足折旧, +Is Group Warehouse,是否组仓库, +Is Old Subcontracting Flow,是否旧外协流程, +Is Outward,是否出库, +Is Period Closing Voucher Entry,是否期间结账凭证分录, +Is Rate Adjustment Entry (Debit Note),是否单价调整分录(借项通知单), +Is Recursive,是否递归, +Is Rejected,是否拒收, +Is Rejected Warehouse,是否拒收仓库, +Is Scrap Item,是否废品, +Is Short/Long Year,是否短/长会计年度, +Is Standard,是否标准, +Is Stock Item,是否库存物料, +Is System Generated,是否系统生成, +Is Tax Withholding Account,是否代扣税科目, +Is Template,是否模板, +Issue Analytics,问题分析报表, +Issue Summary,问题摘要, +Issue a debit note with 0 qty against an existing Sales Invoice,针对现有销售发票开具零数量的借项通知单, +Issuing cannot be done to a location. Please enter employee to issue the Asset {0} to,资产{0}不能发放至库位,请输入领用员工, +It can take upto few hours for accurate stock values to be visible after merging items.,物料合并后需等待数小时才能查看准确的库存值。, +"It's not possible to distribute charges equally when total amount is zero, please set 'Distribute Charges Based On' as 'Quantity'",总金额为零时无法按金额分摊费用,请将'费用分摊基准'设为'数量', +Item Code (Final Product),物料编码(最终产品), +Item Group wise Discount,按物料组的折扣, +Item Price Settings,物料价格参数设置, +"Item Price appears multiple times based on Price List, Supplier/Customer, Currency, Item, Batch, UOM, Qty, and Dates.",物料价格可能基于价格表、供应商/客户、币种、物料、批次、单位、数量及日期重复出现, +Item Reference,物料引用, +Item Warehouse based reposting has been enabled.,已启用基于物料仓库的重过账, +Item and Warehouse,物料与仓库, +Item is removed since no serial / batch no selected.,因未选择序列/批次号,物料已被移除, +Item qty can not be updated as raw materials are already processed.,因原材料已处理,物料数量不可更新, +Item rate has been updated to zero as Allow Zero Valuation Rate is checked for item {0},因物料{0}允许零估价率,物料单价已更新为零, +Item valuation reposting in progress. Report might show incorrect item valuation.,正在进行物料估价重过账,报表可能显示错误估价, +Item {0} cannot be added as a sub-assembly of itself,物料{0}不能作为自身的子装配件添加, +Item {0} cannot be ordered more than {1} against Blanket Order {2}.,物料{0}在总括订单{2}下不可订购超过{1}, +Item {0} entered multiple times.,物料{0}重复输入, +Item {0} is already reserved/delivered against Sales Order {1}.,物料{0}已针对销售订单{1}预留/交货, +Item {0} must be a Non-Stock Item,物料{0}必须为非库存物料, +Item {0} not found in 'Raw Materials Supplied' table in {1} {2},在{1} {2}的'供应的原材料'表中未找到物料{0}, +Item {0} not found.,未找到物料{0}, +Item {} does not exist.,物料{}不存在, +Items & Pricing,物料与定价, +Items Catalogue,物料目录, +Items cannot be updated as Subcontracting Order is created against the Purchase Order {0}.,因已针对采购订单{0}创建外协订单,物料不可更新, +Items rate has been updated to zero as Allow Zero Valuation Rate is checked for the following items: {0},因以下物料{0}允许零估价率,其单价已更新为零, +Items to Be Repost,待重过账物料, +Items to Order and Receive,待订购与接收物料, +Items to Reserve,待预留物料, +Items {0} do not exist in the Item master.,物料主数据中不存在{0}, +JAN,一月, +Job Capacity,作业产能, +Job Card Operation,作业卡工序, +Job Card Scheduled Time,作业卡计划时间, +Job Card Scrap Item,作业卡废品, +Job Card and Capacity Planning,作业卡与产能计划, +Job Cards,作业卡列表, +Job Paused,作业已暂停, +Job Worker,作业人员, +Job Worker Address,作业人员地址, +Job Worker Address Details,作业人员地址明细, +Job Worker Contact,作业人员联系方式, +Job Worker Delivery Note,作业人员交货单, +Job Worker Name,作业人员姓名, +Job Worker Warehouse,作业人员仓库, +Job: {0} has been triggered for processing failed transactions,作业:{0}已触发处理失败事务, +Joining,入职, +Journal Entries,日记账分录, +Journal Entry for Asset scrapping cannot be cancelled. Please restore the Asset.,资产报废的日记账分录不可取消,请恢复资产, +Journal Entry type should be set as Depreciation Entry for asset depreciation,资产折旧的日记账类型应设为折旧分录, +Journal entries have been created,已创建日记账分录, +Journals,日记账, +Key,键值, +Kindly cancel the Manufacturing Entries first against the work order {0}.,请先取消工单{0}相关的生产分录, +LIFO,后进先出法, +Last GL Entry update was done {}. This operation is not allowed while system is actively being used. Please wait for 5 minutes before retrying.,总账分录最后更新于{}。系统使用期间不允许此操作,请5分钟后重试, +"Last Name, Email or Phone/Mobile of the user are mandatory to continue.",必须填写用户的姓氏、邮箱或电话/手机号才能继续, +Last transacted,最后交易时间, +Lead -> Prospect,线索->潜在客户, +Lead Conversion Time,线索转化时间, +Lead Owner cannot be same as the Lead Email Address,线索负责人不能与线索邮箱地址相同, +Lead {0} has been added to prospect {1}.,线索{0}已添加至潜在客户{1}, +Leaderboard,排行榜, +Leads,线索列表, +Learn Accounting,学习会计, +Learn Inventory Management,学习库存管理, +Learn Manufacturing,学习生产管理, +Learn Procurement,学习采购管理, +Learn Project Management,学习项目管理, +Learn Sales Management,学习销售管理, +"Learn about Common Party","学习 共同方", +"Leave blank for home. +This is relative to site URL, for example ""about"" will redirect to ""https://yoursitename.com/about""","主页留空。 +这是相对于网站 URL 而言的,例如 ""about ""将重定向到 ""https://yoursitename.com/about""", +Ledger Health,账本健康状态, +Ledger Health Monitor,账本健康监控器, +Ledger Health Monitor Company,账本健康监控公司, +Ledger Merge,分类账合并, +Ledger Merge Accounts,分类账合并账户, +Ledgers,分类账集, +Left Child,左子节点, +Legend,图例, +Length,长度, +Length (cm),长度(厘米), +Level (BOM),层级(物料清单), +Limit timeslot for Stock Reposting,库存重过账时间窗口限制, +Limits don't apply on,限制不适用于, +Link a new bank account,关联新银行账户, +Link with Customer,关联客户, +Link with Supplier,关联供应商, +Linked with submitted documents,与已提交单据关联, +Linking Failed,关联失败, +Linking to Customer Failed. Please try again.,客户关联失败,请重试, +Linking to Supplier Failed. Please try again.,供应商关联失败,请重试, +Loading Invoices! Please Wait...,正在加载发票,请稍候..., +Loading import file...,正在加载导入文件..., +Locked,已锁定, +Log Entries,日志条目, +Log the selling and buying rate of an Item,记录物料的买卖汇率, +Lost Quotations,丢失报价单集, +Lost Quotations %,丢失报价率%, +Lost Reasons are required in case opportunity is Lost.,商机丢失时必须填写原因, +Lost Value,损失金额, +Lost Value %,损失金额占比%, +Machine Type,设备类型, +Main Cost Center,主成本中心, +Main Cost Center {0} cannot be entered in the child table,主成本中心{0}不能输入子表, +Maintain Asset,维护资产, +Maintenance Details,维护详情, +Make ,创建, +Make Asset Movement,创建资产转移, +Make Quotation,创建报价单, +Make Return Entry,创建退货分录, +Make Serial No / Batch from Work Order,从工单生成序列号/批次, +Make {0} Variant,创建{0}变体, +Make {0} Variants,创建{0}变体集, +Making Journal Entries against advance accounts: {0} is not recommended. These Journals won't be available for Reconciliation.,不建议针对预支账户{0}创建日记账,这些日记账不可用于对账, +Manage,管理, +Mandatory Accounting Dimension,必填会计维度, +Mandatory Depends On,必填依赖项, +Mandatory Field,必填字段, +Mandatory Section,必填部分, +Manual Inspection,人工检验, +Manufacturing Type,生产类型, +Mapping Purchase Receipt ...,正在映射采购收货单..., +Mapping Subcontracting Order ...,正在映射外协订单..., +Mapping {0} ...,正在映射{0}..., +Margin View,边际视图, +Mark As Closed,标记为已关闭, +Material Returned from WIP,从在制品退回物料, +Material Transfer (In Transit),物料转移(在途), +Materials are already received against the {0} {1},已根据{0}{1}接收物料, +Materials needs to be transferred to the work in progress warehouse for the job card {0},需要将物料转移到工单{0}的在制品仓库, +Max Qty (As Per Stock UOM),最大数量(按库存单位), +Maximum Net Rate,最高净费率, +Maximum Payment Amount,最大付款金额, +Maximum Value,最大值, +Maximum quantity scanned for item {0}.,已扫描物料{0}的最大数量, +Meeting,会议, +Mention if non-standard Receivable account,若使用非标准应收账户需注明, +Merge Invoices Based On,合并发票依据, +Merge Progress,合并进度, +Merge Similar Account Heads,合并相似账户科目, +Merge taxes from multiple documents,合并多单据的税款, +Merged,已合并, +"Merging is only possible if following properties are same in both records. Is Group, Root Type, Company and Account Currency",合并要求两条记录的以下属性相同:是否组、根类型、公司和账户货币, +Merging {0} of {1},正在合并{1}的{0}, +Min Qty (As Per Stock UOM),最小数量(按库存单位), +Min Qty should be greater than Recurse Over Qty,最小数量应大于递归数量, +Minimum Net Rate,最低净费率, +Minimum Payment Amount,最小付款金额, +Minimum Value,最小值, +Mismatch,不匹配, +Missing,缺失, +Missing Asset,缺少资产, +Missing Cost Center,缺少成本中心, +Missing Default in Company,公司缺少默认值, +Missing Finance Book,缺少财务账簿, +Missing Finished Good,缺少成品, +Missing Formula,缺少公式, +Missing Item,缺少物料, +Missing Items,缺少物料项, +Missing Payments App,缺少支付应用, +Missing Serial No Bundle,缺少序列号包, +Missing value,缺失值, +Mobile: ,手机:, +Modified By,修改人, +Modified On,修改日期, +Module Settings,模块设置, +Monitor for Last 'X' days,监控最近'X'天, +More/Less than 12 months.,超过/不足12个月, +Move Stock,库存调拨, +Move to Cart,加入购物车, +Movement,库存移动, +Moving up in tree ...,在树状结构中上移..., +Multi-level BOM Creator,多层物料清单生成器, +Multiple Loyalty Programs found for Customer {}. Please select manually.,发现客户{}存在多个忠诚度计划,请手动选择, +Multiple Warehouse Accounts,多仓库科目, +Multiple items cannot be marked as finished item,多个物料不能同时标记为成品, +Must be a publicly accessible Google Sheets URL and adding Bank Account column is necessary for importing via Google Sheets,必须是可公开访问的Google表格URL,且需添加银行账户列以便通过Google表格导入, +Named Place,指定地点, +Naming Series and Price Defaults,命名规则与价格默认值, +Naming Series is mandatory,命名规则为必填项, +Negative Batch Quantity,负批次数量, +Net Purchase Amount,采购净额, +Net total calculation precision loss,净总计计算精度损失, +New Balance In Account Currency,账户币种新余额, +New Event,新建事件, +New Note,新建备注, +New Task,新建任务, +New Version,新版本, +Newsletter,新闻简报, +No Answer,未答复, +No Customers found with selected options.,按所选条件未找到客户, +No Items selected for transfer.,未选择待转移物料, +No Matching Bank Transactions Found,未找到匹配的银行交易, +No Notes,无备注, +No Outstanding Invoices found for this party,未找到该交易方的未结发票, +No POS Profile found. Please create a New POS Profile first,未找到POS配置,请先创建新POS配置, +No Records for these settings.,此设置下无记录, +No Serial / Batches are available for return,无可用退换货的序列号/批次, +No Stock Available Currently,当前无可用库存, +No Summary,无摘要, +No Tax Withholding data found for the current posting date.,当前过账日期未找到代扣税数据, +No Terms,无条款, +No Unreconciled Invoices and Payments found for this party and account,未找到该交易方和账户的未对账发票及付款, +No Unreconciled Payments found for this party,未找到该交易方的未对账付款, +No Work Orders were created,未创建工单, +No additional fields available,无额外字段可用, +No billing email found for customer: {0},未找到客户{0}的账单邮箱, +No data found. Seems like you uploaded a blank file,未找到数据,可能上传了空白文件, +No employee was scheduled for call popup,未安排员工进行来电弹窗, +No failed logs,无失败日志, +No item available for transfer.,无可用转移物料, +No items are available in sales orders {0} for production,销售订单{0}中无可用生产物料, +No items are available in the sales order {0} for production,销售订单{0}中无可用生产物料, +No items in cart,购物车中无物料, +No matches occurred via auto reconciliation,自动对账未匹配到记录, +No more children on Left,左侧无更多子节点, +No more children on Right,右侧无更多子节点, +No of Docs,单据数量, +No of Employees,员工数量, +No of Months (Expense),月数(费用), +No of Months (Revenue),月数(收入), +No open event,无进行中事件, +No open task,无进行中任务, +No outstanding {0} found for the {1} {2} which qualify the filters you have specified.,根据指定筛选条件,未找到符合的{1}{2}的未结{0}, +No primary email found for customer: {0},未找到客户{0}的主邮箱, +No recent transactions found,未找到近期交易, +No records found in Allocation table,分配表中无记录, +No records found in the Invoices table,发票表中无记录, +No records found in the Payments table,付款表中无记录, +No stock transactions can be created or modified before this date.,此日期前不可创建或修改库存交易, +No {0} Accounts found for this company.,本公司未找到{0}科目, +No.,编号, +No. of Employees,员工人数, +No. of parallel job cards which can be allowed on this workstation. Example: 2 would mean this workstation can process production for two Work Orders at a time.,本工作站允许的并行作业卡数量。例如:2表示该工作站可同时处理两个工单的生产, +Note: Automatic log deletion only applies to logs of type Update Cost,注:自动日志删除仅适用于更新成本类型的日志, +"Note: To merge the items, create a separate Stock Reconciliation for the old item {0}",注:要合并物料,请为旧物料{0}创建单独的库存对账, +Notes HTML,备注HTML, +Notification,通知, +Notification Settings,通知设置, +Notify Reposting Error to Role,向角色通知重新过账错误, +Number of Days,天数, +Numeric,数值型, +Numeric Inspection,数值检测, +Off,关闭, +Offsetting Account,抵销科目, +Offsetting for Accounting Dimension,会计维度抵销, +Oldest Of Invoice Or Advance,最早发票或预付款, +On Paid Amount,基于已付金额, +On This Date,在此日期, +On Track,正常进行, +On enabling this cancellation entries will be posted on the actual cancellation date and reports will consider cancelled entries as well,启用后,取消分录将在实际取消日期过账,报表将包含已取消分录, +"On expanding a row in the Items to Manufacture table, you'll see an option to 'Include Exploded Items'. Ticking this includes raw materials of the sub-assembly items in the production process.",展开待生产物料表格行时,将显示'包含展开项'选项。勾选后将在生产过程中包含子装配件的原材料, +"On submission of the stock transaction, system will auto create the Serial and Batch Bundle based on the Serial No / Batch fields.",提交库存交易时,系统将根据序列号/批次字段自动创建序列号和批次组合, +Once the Work Order is Closed. It can't be resumed.,工单关闭后将无法恢复, +Only 'Payment Entries' made against this advance account are supported.,仅支持针对本预支账户的付款凭证, +Only CSV and Excel files can be used to for importing data. Please check the file format you are trying to upload,仅支持CSV和Excel文件格式导入数据,请检查上传文件格式, +Only Deduct Tax On Excess Amount ,仅对超额部分扣税, +Only Include Allocated Payments,仅包含已分配付款, +Only Parent can be of type {0},只有上级可以是{0}类型, +Only applies for Normal Payments,仅适用于正常付款, +Only existing assets,仅现有资产, +Only one {0} entry can be created against the Work Order {1},每个工单{1}仅能创建一个{0}条目, +"Only values between [0,1) are allowed. Like {0.00, 0.04, 0.09, ...} +Ex: If allowance is set at 0.07, accounts that have balance of 0.07 in either of the currencies will be considered as zero balance account","仅允许 [0,1) 之间的值。例如 {0.00, 0.04, 0.09, ...} +例如:如果限额设置为 0.07,则任一货币余额为 0.07 的账户将被视为零余额账户", +Only {0} are supported,仅支持{0}, +Open Activities HTML,打开活动HTML, +Open Call Log,打开通话记录, +Open Event,打开事件, +Open Events,打开事件, +Open Sales Orders,打开销售订单, +Open Task,打开任务, +Open Tasks,打开任务, +Open Work Order {0},打开工单{0}, +Opening & Closing,期初与期末, +Opening Accumulated Depreciation must be less than or equal to {0},期初累计折旧必须小于等于{0}, +Opening Entry can not be created after Period Closing Voucher is created.,创建期间结账凭证后不可创建期初凭证, +"Opening Invoice has rounding adjustment of {0}.

'{1}' account is required to post these values. Please set it in Company: {2}.

Or, '{3}' can be enabled to not post any rounding adjustment.",期初发票存在{0}的舍入调整。

需设置'{1}'科目以过账这些值,请在公司{2}中设置。

或启用'{3}'以不过账任何舍入调整, +Opening Number of Booked Depreciations,期初已计提折旧次数, +Opening Purchase Invoices have been created.,已创建期初采购发票, +Opening Sales Invoices have been created.,已创建期初销售发票, +Operating Cost Per BOM Quantity,单位BOM数量运营成本, +Operation time does not depend on quantity to produce,工序时间与生产数量无关, +Opportunity Amount (Company Currency),商机金额(公司货币), +Opportunity Owner,商机负责人, +Opportunity Source,商机来源, +Opportunity Summary by Sales Stage,按销售阶段汇总商机, +Opportunity Summary by Sales Stage ,按销售阶段汇总商机, +Opportunity Value,商机价值, +Order Date,订单日期, +Order No,订单编号, +Order Status,订单状态, +Other Info,其他信息, +Out of stock,缺货, +Outstanding (Company Currency),未清金额(公司货币), +Over Picking Allowance,超领料容差, +Over Receipt,超收, +Over Receipt/Delivery of {0} {1} ignored for item {2} because you have {3} role.,因您具有{3}角色,物料{2}的{0} {1}超收/交付已被忽略, +Over Transfer Allowance,超调拨容差, +Overbilling of {0} {1} ignored for item {2} because you have {3} role.,因您具有{3}角色,物料{2}的{0} {1}超计费已被忽略, +Overbilling of {} ignored because you have {} role.,因您具有{}角色,{}超计费已被忽略, +Overdue Payment,逾期付款, +Overdue Payments,逾期付款项, +Overdue Tasks,逾期任务, +Overview,概览, +PDF Name,PDF名称, +POS Closing Failed,销售点结算失败, +POS Closing failed while running in a background process. You can resolve the {0} and retry the process again.,后台进程运行期间销售点结算失败。请解决{0}后重试, +POS Invoice is already consolidated,销售点发票已合并, +POS Invoice is not submitted,销售点发票未提交, +POS Invoice should have the field {0} checked.,销售点发票应勾选字段{0}, +POS Invoices will be consolidated in a background process,销售点发票将在后台进程合并, +POS Invoices will be unconsolidated in a background process,销售点发票将在后台进程解除合并, +POS Profile doesn't match {},销售点配置不匹配{}, +POS Profile {} contains Mode of Payment {}. Please remove them to disable this mode.,销售点配置{}包含付款方式{}。请移除以禁用该方式, +POS Search Fields,销售点搜索字段, +POS Setting,销售点设置, +PZN,药品中央编号, +Package No(s) already in use. Try from Package No {0},包裹号已被使用。请从包裹号{0}开始尝试, +Packaging Slip From Delivery Note,交货单生成装箱单, +Packed Items cannot be transferred internally,已打包物料不可内部调拨, +Packed Qty,已打包数量, +Page Break After Each SoA,每份对账单后分页, +Paid Amount After Tax,税后已付金额, +Paid Amount After Tax (Company Currency),税后已付金额(公司货币), +Paid From Account Type,付款来源账户类型, +Paid To Account Type,付款目标账户类型, +Pallets,托盘, +Parameter Group,参数组, +Parameter Group Name,参数组名称, +Parcel Template,包裹模板, +Parcel Template Name,包裹模板名称, +Parcel weight cannot be 0,包裹重量不可为0, +Parcels,包裹, +Parent Account Missing,上级科目缺失, +Parent Document,上级单据, +Parent Item {0} must not be a Fixed Asset,上级物料{0}不能为固定资产, +Parent Row No,上级行号, +Parent Row No not found for {0},未找到{0}的上级行号, +Parent Task {0} is not a Template Task,上级任务{0}非模板任务, +Parsing Error,解析错误, +Partial Material Transferred,部分物料已转移, +Partial Payment in POS Invoice is not allowed.,销售点发票不允许部分付款, +Partial Stock Reservation,部分库存保留, +Partial Success,部分成功, +"Partial stock can be reserved. For example, If you have a Sales Order of 100 units and the Available Stock is 90 units then a Stock Reservation Entry will be created for 90 units. ",可保留部分库存。例如:若销售订单为100单位,可用库存90单位,则将创建90单位的库存保留记录, +Partially Delivered,部分交付, +Partially Reconciled,部分对账, +Partially Reserved,部分保留, +Partly Paid,部分支付, +Partly Paid and Discounted,部分支付并折让, +Partnership,合伙企业, +Party Account No. (Bank Statement),交易方账号(银行对账单), +Party Account {0} currency ({1}) and document currency ({2}) should be same,交易方账户{0}币种({1})应与单据币种({2})一致, +Party IBAN (Bank Statement),交易方国际银行账号(银行对账单), +Party Item Code,交易方物料编码, +Party Link,交易方链接, +Party Name/Account Holder (Bank Statement),交易方名称/账户持有人(银行对账单), +Party Specific Item,交易方特定物料, +Party Type and Party can only be set for Receivable / Payable account

{0},交易方类型和交易方仅可设置应收/应付账户

{0}, +Party Type and Party is required for Receivable / Payable account {0},应收/应付账户{0}必须设置交易方类型和交易方, +Party can only be one of {0},交易方只能是{0}之一, +Passport Details,护照详情, +Pause Job,暂停任务, +Paused,已暂停, +Pay,支付,Amount +Payment Amount (Company Currency),付款金额(公司货币), +"Payment Entry {0} is linked against Order {1}, check if it should be pulled as advance in this invoice.",付款分录{0}关联订单{1},请检查是否应作为预付款拉入本发票, +Payment Ledger,付款分类账, +Payment Ledger Balance,付款分类账余额, +Payment Ledger Entry,付款分类账分录, +Payment Limit,付款限额, +Payment Reconciliation Allocation,付款对账分配, +Payment Reconciliation Job: {0} is running for this party. Can't reconcile now.,付款对账任务:{0}正在运行,无法对账, +Payment Reconciliation Settings,付款对账设置, +Payment Request Outstanding,未结付款请求, +Payment Request created from Sales Order or Purchase Order will be in Draft status. When disabled document will be in unsaved state.,销售订单或采购订单生成的付款请求将处于草稿状态。禁用后单据将处于未保存状态, +Payment Request is already created,付款请求已创建, +Payment Request took too long to respond. Please try requesting for payment again.,付款请求响应超时,请重试, +Payment Requests cannot be created against: {0},无法针对以下类型创建付款请求:{0}, +Payment Status,付款状态, +Payment Term Outstanding,未结付款条款, +Payment Terms Status for Sales Order,销售订单付款条款状态, +Payment Terms from orders will be fetched into the invoices as is,订单中的付款条款将原样带入发票, +Payment Unlink Error,付款解除关联错误, +Payment of {0} received successfully.,成功接收{0}付款, +Payment of {0} received successfully. Waiting for other requests to complete...,成功接收{0}付款,等待其他请求完成..., +Payment request failed,付款请求失败, +Payment term {0} not used in {1},付款条款{0}未在{1}中使用, +Pending processing,待处理, +Per Received,每接收, +Percentage (%),百分比(%), +Percentage you are allowed to order beyond the Blanket Order quantity.,允许超出总括订单数量的订购百分比, +Percentage you are allowed to sell beyond the Blanket Order quantity.,允许超出总括订单数量的销售百分比, +Period Closed,期间已关闭, +Period Closing Entry For Current Period,本期关账分录, +Period Closing Settings,期间关账设置, +Period Details,期间明细, +Period End Date cannot be greater than Fiscal Year End Date,期间结束日期不可超过财年结束日期, +Period Start Date cannot be greater than Period End Date,期间开始日期不可超过结束日期, +Period Start Date must be {0},期间开始日期必须为{0}, +Period To Date,当期至今, +Period_from_date,期间起始日期, +Phone Ext.,分机号, +Pick List Incomplete,领料单未完成, +Pick Manually,手动拣选, +Pick Serial / Batch Based On,按序列号/批次拣选, +Pick Serial / Batch No,拣选序列/批次号, +Picked Qty (in Stock UOM),已拣数量(库存单位), +Pickup,提货, +Pickup Contact Person,提货联系人, +Pickup Date,提货日期, +Pickup Date cannot be before this day,提货日期不能早于当日, +Pickup From,提货自, +Pickup To time should be greater than Pickup From time,提货截止时间应晚于起始时间, +Pickup Type,提货类型, +Pickup from,提货起始时间, +Pickup to,提货截止时间, +Pipeline By,管道分类, +Plaid Link Failed,Plaid链接失败, +Plaid Link Refresh Required,需刷新Plaid链接, +Plaid Link Updated,Plaid链接已更新, +Plan to Request Qty,计划申请数量, +Plant Dashboard,工厂看板, +Plant Floor,车间现场, +Please Set Priority,请设置优先级, +Please Specify Account,请指定账户, +Please add 'Supplier' role to user {0}.,请为用户{0}添加'供应商'角色, +Please add Request for Quotation to the sidebar in Portal Settings.,请在门户设置中将报价请求添加到侧边栏, +Please add Root Account for - {0},请为-{0}添加根账户, +Please add atleast one Serial No / Batch No,请至少添加一个序列号/批次号, +Please add the Bank Account column,请添加银行账户列, +Please add the account to root level Company - {0},请将账户添加至根级公司-{0}, +Please add {1} role to user {0}.,请为用户{0}添加{1}角色, +Please adjust the qty or edit {0} to proceed.,请调整数量或编辑{0}以继续, +Please attach CSV file,请附加CSV文件, +Please cancel and amend the Payment Entry,请取消并修改付款分录, +Please cancel payment entry manually first,请先手动取消付款分录, +Please cancel related transaction.,请取消相关交易。, +Please check Process Deferred Accounting {0} and submit manually after resolving errors.,请检查处理递延会计{0},解决错误后手动提交, +Please check either with operations or FG Based Operating Cost.,请检查工序或基于成品的运营成本, +Please check the error message and take necessary actions to fix the error and then restart the reposting again.,请检查错误信息并采取必要措施修复错误,然后重新启动重新过账, +Please check your email to confirm the appointment,请检查您的电子邮件以确认预约, +Please contact any of the following users to extend the credit limits for {0}: {1},请联系以下用户以延长{0}的信用额度:{1}, +Please contact any of the following users to {} this transaction.,请联系以下用户以{}此交易, +Please contact your administrator to extend the credit limits for {0}.,请联系管理员延长{0}的信用额度, +Please create Landed Cost Vouchers against Invoices that have 'Update Stock' enabled.,请对启用'更新库存'的发票创建到岸成本凭证, +Please create a new Accounting Dimension if required.,如需,请新建会计维度, +Please create purchase from internal sale or delivery document itself,请通过内部销售或交货单据创建采购, +"Please delete Product Bundle {0}, before merging {1} into {2}",在合并{1}到{2}前,请先删除产品套装{0}, +Please do not book expense of multiple assets against one single Asset.,请勿将多个资产的费用记入单一资产, +Please enable Use Old Serial / Batch Fields to make_bundle,请启用'使用旧序列/批次字段'以生成套装, +Please enable only if the understand the effects of enabling this.,仅在理解启用此功能的影响后启用, +Please enable {0} in the {1}.,请在{1}中启用{0}, +Please enable {} in {} to allow same item in multiple rows,请在{}中启用{}以允许同一物料多行显示, +Please ensure that the {0} account is a Balance Sheet account. You can change the parent account to a Balance Sheet account or select a different account.,请确保{0}账户为资产负债表账户。您可将上级账户改为资产负债表账户或选择其他账户, +Please ensure that the {0} account {1} is a Payable account. You can change the account type to Payable or select a different account.,请确保{0}账户{1}为应付账户。您可更改账户类型为应付或选择其他账户, +Please ensure {} account is a Balance Sheet account.,请确保{}账户为资产负债表账户, +Please ensure {} account {} is a Receivable account.,请确保{}账户{}为应收账户, +Please enter Root Type for account- {0},请输入账户-{0}的根类型, +Please enter Serial Nos,请输入序列号, +Please enter Shipment Parcel information,请输入运输包裹信息, +Please enter Stock Items consumed during the Repair.,请输入维修期间消耗的库存物料, +Please enter mobile number first.,请先输入手机号码, +Please enter quantity for item {0},请输入物料{0}的数量, +Please enter serial nos,请输入序列号, +"Please first set Last Name, Email and Phone for the user",请先设置用户的姓氏、电子邮件和电话, +Please fix overlapping time slots for {0},请修复{0}的时间段重叠, +Please fix overlapping time slots for {0}.,请修复{0}的时间段重叠, +Please import accounts against parent company or enable {} in company master.,请根据母公司导入账户或在主公司中启用{}, +"Please keep one Applicable Charges, when 'Distribute Charges Based On' is 'Distribute Manually'. For more charges, please create another Landed Cost Voucher.",当'费用分配依据'为'手动分配'时,请保留一个适用费用。更多费用请新建到岸成本凭证, +Please make sure the file you are using has 'Parent Account' column present in the header.,请确保文件标题包含'上级账户'列, +Please mention 'Weight UOM' along with Weight.,请同时注明'重量单位'和重量, +Please mention '{0}' in Company: {1},请在公司{1}中注明'{0}', +Please mention the Current and New BOM for replacement.,请注明要替换的当前和新的物料清单, +Please rectify and try again.,请更正后重试, +Please refresh or reset the Plaid linking of the Bank {}.,请刷新或重置银行{}的Plaid链接, +Please save before proceeding.,请先保存再继续, +Please select Bank Account,请选择银行账户, +Please select Finished Good Item for Service Item {0},请为服务项{0}选择产成品, +Please select Serial/Batch Nos to reserve or change Reservation Based On to Qty.,请选择要保留的序列/批次号或将保留依据改为数量, +Please select Subcontracting Order instead of Purchase Order {0},请选择委外订单而非采购订单{0}, +Please select Unrealized Profit / Loss account or add default Unrealized Profit / Loss account account for company {0},请选择未实现损益账户或为公司{0}添加默认未实现损益账户, +Please select a Subcontracting Purchase Order.,请选择委外采购订单, +Please select a Warehouse,请选择仓库, +Please select a Work Order first.,请先选择工单, +Please select a country,请选择国家, +Please select a customer for fetching payments.,请选择客户以获取付款, +Please select a date,请选择日期, +Please select a date and time,请选择日期和时间, +Please select a row to create a Reposting Entry,请选择行以创建重新过账分录, +Please select a supplier for fetching payments.,请选择供应商以获取付款, +Please select a valid Purchase Order that has Service Items.,请选择包含服务项目的有效采购订单, +Please select a valid Purchase Order that is configured for Subcontracting.,请选择配置为委外的有效采购订单, +Please select an item code before setting the warehouse.,请先设置物料编码再设置仓库, +Please select either the Item or Warehouse or Warehouse Type filter to generate the report.,请选择物料、仓库或仓库类型筛选条件以生成报表, +Please select items,请选择物料, +Please select items to reserve.,请选择要保留的物料, +Please select items to unreserve.,请选择要取消保留的物料, +Please select only one row to create a Reposting Entry,请选择单行创建重新过账分录, +Please select rows to create Reposting Entries,请选择行以创建重新过账分录, +Please select the required filters,请选择必要筛选条件, +Please select valid document type.,请选择有效单据类型, +Please set '{0}' in Company: {1},请在公司{1}设置'{0}', +Please set Account,请设置账户, +Please set Accounting Dimension {} in {},请在{}设置会计维度{}, +Please set Email/Phone for the contact,请为联系人设置电子邮件/电话, +Please set Fiscal Code for the customer '%s',请为客户'%s'设置税号, +Please set Fiscal Code for the public administration '%s',请为公共机构'%s'设置税号, +Please set Fixed Asset Account in {} against {}.,请在{}中为{}设置固定资产账户, +Please set Opening Number of Booked Depreciations,请设置已入账折旧的期初数, +Please set Parent Row No for item {0},请设置物料{0}的上级行号, +Please set Root Type,请设置根类型, +Please set Tax ID for the customer '%s',请为客户'%s'设置税号, +Please set VAT Accounts in {0},请在{0}设置增值税账户, +"Please set Vat Accounts for Company: ""{0}"" in UAE VAT Settings","请在 UAE 增值税设置中设置公司的增值税账户: ""{0}""", +Please set a Cost Center for the Asset or set an Asset Depreciation Cost Center for the Company {},请为资产设置成本中心或为公司{}设置资产折旧成本中心, +Please set a default Holiday List for Company {0},请为公司{0}设置默认假期列表, +Please set an Address on the Company '%s',请为公司'%s'设置地址, +Please set an Expense Account in the Items table,请在物料表中设置费用账户, +Please set both the Tax ID and Fiscal Code on Company {0},请为公司{0}同时设置税号和财政代码, +Please set default Exchange Gain/Loss Account in Company {},请在公司{}设置默认汇兑损益账户, +Please set default Expense Account in Company {0},请在公司{0}设置默认费用账户, +Please set default cost of goods sold account in company {0} for booking rounding gain and loss during stock transfer,请在公司{0}设置默认销售成本账户以记录库存转移中的四舍五入损益, +Please set filters,请设置筛选条件, +Please set one of the following:,请设置以下其中一项:, +Please set the cost center field in {0} or setup a default Cost Center for the Company.,请在{0}设置成本中心字段或为公司设置默认成本中心, +Please set {0} first.,请先设置{0}, +Please set {0} in BOM Creator {1},请在物料清单创建器{1}中设置{0}, +Please set {0} in Company {1} to account for Exchange Gain / Loss,请在公司{1}设置{0}以核算汇兑损益, +"Please set {0} to {1}, the same account that was used in the original invoice {2}.",请将{0}设为{1},与原发票{2}使用的账户相同, +Please setup and enable a group account with the Account Type - {0} for the company {1},请为公司{1}设置并启用账户类型为{0}的组账户, +Please share this email with your support team so that they can find and fix the issue.,请将此邮件转发给支持团队以便排查和解决问题, +Please specify a {0} first.,请先指定{0}, +Please try again in an hour.,请一小时后重试, +Please update Repair Status.,请更新维修状态, +Portal User,门户用户, +Portal Users,门户用户, +Posting Date Inheritance for Exchange Gain / Loss,汇兑损益的过账日期继承, +Posting Datetime,过账时间, +Powered by {0},由{0}驱动, +Preview Required Materials,预览所需物料, +"Previous Year is not closed, please close it first",上年度未结账,请先结账, +Price ({0}),价格({0}), +Price List Defaults,价格表默认值, +Price Per Unit ({0}),单价({0}), +Price is not set for the item.,未设置物料价格, +Primary Address and Contact,主要地址和联系方式, +Primary Contact,主要联系人, +Primary Party,主要政党, +Primary Role,主要角色, +Print Format Builder,打印格式生成器, +Print Receipt on Order Complete,订单完成时打印收据, +Print Style,打印样式, +Printed on {0},打印于{0}, +Printing,打印, +Priority cannot be lesser than 1.,优先级不能小于1, +Priority is mandatory,优先级为必填项, +Probability,可能性, +Process Loss,加工损耗, +Process Loss Percentage cannot be greater than 100,加工损耗百分比不能超过100, +Process Loss Qty,加工损耗数量, +Process Loss Report,加工损耗报告, +Process Loss Value,加工损耗价值, +Process Payment Reconciliation,处理付款对账, +Process Payment Reconciliation Log,处理付款对账日志, +Process Payment Reconciliation Log Allocations,处理付款对账日志分配, +Process Statement Of Accounts CC,处理抄送账户对账单, +Process Subscription,处理订阅, +Process in Single Transaction,在单事务中处理, +Processed BOMs,已处理物料清单, +Processing Sales! Please Wait...,正在处理销售!请稍候..., +Produced / Received Qty,已生产/已接收数量, +Product Price ID,产品价格ID, +Production Plan Already Submitted,生产计划已提交, +Production Plan Item Reference,生产计划项引用, +Production Plan Qty,生产计划数量, +Production Plan Sub Assembly Item,生产计划子装配项, +Production Plan Sub-assembly Item,生产计划子装配项, +Production Plan Summary,生产计划摘要, +Profile,配置文件, +Profit and Loss Summary,损益汇总, +Progress,进度, +Progress (%),进度(%), +Project Progress:,项目进度:, +Prompt Qty,即时数量, +Prospect,潜在客户, +Prospect Lead,潜在客户线索, +Prospect Opportunity,潜在商机, +Prospect Owner,潜在客户负责人, +Prospect {0} already exists,潜在客户{0}已存在, +Provisional Account,暂记账户, +Provisional Expense Account,暂记费用科目, +Publisher,发布者, +Publisher ID,发布者ID, +Purchase Order Item reference is missing in Subcontracting Receipt {0},分包收货单{0}中缺少采购订单项引用, +Purchase Orders {0} are un-linked,采购订单{0}已取消关联, +Purchase Receipt (Draft) will be auto-created on submission of Subcontracting Receipt.,提交分包收货单时将自动创建采购收货单(草稿), +Purchase Receipt {0} created.,采购收货单{0}已创建, +Purchase Value,采购价值, +Purchases,采购, +Purposes Required,需指定用途, +Putaway Rule,上架规则, +Putaway Rule already exists for Item {0} in Warehouse {1}.,仓库{1}中物料{0}的上架规则已存在, +Qty ,数量, +Qty (Company),数量(公司), +Qty (Warehouse),数量(仓库), +Qty After Transaction,交易后数量, +Qty As Per BOM,按物料清单数量, +Qty Change,数量变更, +Qty In Stock,库存数量, +Qty Per Unit,每单位数量, +"Qty To Manufacture ({0}) cannot be a fraction for the UOM {2}. To allow this, disable '{1}' in the UOM {2}.",待生产数量({0})不能是计量单位{2}的分数。若要允许,请在计量单位{2}中禁用'{1}', +Qty To Produce,待生产数量, +Qty Wise Chart,数量趋势图, +Qty and Rate,数量与费率, +Qty as Per Stock UOM,按库存计量单位的数量, +Qty for which recursion isn't applicable.,不适用递归的数量, +Qty in Stock UOM,库存计量单位数量, +Qty of Finished Goods Item should be greater than 0.,成品项数量应大于0, +Qty to Be Consumed,待消耗数量, +Qty to Build,待构建数量, +Qty to Fetch,待获取数量, +Qty to Produce,待生产数量, +Qualification Status,资质状态, +Qualified,已认证, +Qualified By,认证人, +Qualified on,认证日期, +Quality Inspection Parameter,质量检验参数, +Quality Inspection Parameter Group,质量检验参数组, +Quality Inspection Settings,质量检验设置, +Quality Inspection(s),质量检验, +Quantity (A - B),数量(A - B), +Quantity is required,数量为必填项, +"Quantity must be greater than zero, and less or equal to {0}",数量必须大于零且小于等于{0}, +Quantity to Produce should be greater than zero.,待生产数量应大于零, +Quantity to Scan,待扫描数量, +Quarter {0} {1},第{0}季度 {1}, +Queue Size should be between 5 and 100,队列大小应介于5至100之间, +Quotation Number,报价单编号, +Quoted Amount,报价金额, +Rate Section,费率部分, +Rate of Stock UOM,库存计量单位费率, +Ratios,比率, +Raw Material Cost Per Qty,单位数量原材料成本, +Raw Material Item,原材料项, +Raw Material Value,原材料价值, +Raw Materials Actions,原材料操作, +Raw Materials Warehouse,原材料仓库, +Reached Root,已到达根节点, +Reading Value,读数值, +Reason for hold:,保留原因:, +Rebuild Tree,重建树形结构, +Rebuilding BTree for period ...,正在重建期间B树结构..., +Recalculate Incoming/Outgoing Rate,重新计算进出汇率, +Recalculating Purchase Cost against this Project...,正在重新计算项目采购成本..., +Receivable/Payable Account,应收/应付账户, +Receivable/Payable Account: {0} doesn't belong to company {1},应收/应付账户:{0}不属于公司{1}, +Received Amount After Tax,税后已收金额, +Received Amount After Tax (Company Currency),税后已收金额(公司货币), +Received Amount cannot be greater than Paid Amount,已收金额不能超过已付金额, +Received Qty in Stock UOM,以库存单位计的已收数量, +Recent Orders,近期订单, +Recent Transactions,近期交易, +Reconcile All Serial Nos / Batches,对账所有序列号/批次, +Reconcile Effect On,对账生效时间, +Reconcile on Advance Payment Date,按预付款日期对账, +Reconcile the Bank Transaction,对银行交易进行对账, +Reconciled Entries,已对账分录, +Reconciliation Date,对账日期, +Reconciliation Error Log,对账错误日志, +Reconciliation Logs,对账日志集, +Reconciliation Progress,对账进度, +Reconciliation Queue Size,对账队列大小, +Reconciliation Takes Effect On,对账生效于, +Recording HTML,记录HTML, +Recoverable Standard Rated expenses should not be set when Reverse Charge Applicable is Y,当适用反向征税为'是'时,不可设置可回收标准税率费用, +Recurse Every (As Per Transaction UOM),递归周期(按交易单位), +Recurse Over Qty cannot be less than 0,递归数量不能小于0, +Recursive Discounts with Mixed condition is not supported by the system,系统不支持混合条件的递归折扣, +Reference Date for Early Payment Discount,提前付款折扣的参考日期, +Reference Detail,参考明细, +Reference DocType,参考单据类型, +Reference Exchange Rate,参考汇率, +Reference No,参考号, +Reference number of the invoice from the previous system,旧系统的发票参考号, +References to Sales Invoices are Incomplete,销售发票参考不完整, +References to Sales Orders are Incomplete,销售订单参考不完整, +References {0} of type {1} had no outstanding amount left before submitting the Payment Entry. Now they have a negative outstanding amount.,提交付款前,类型{1}的参考{0}无未清金额,现在其未清金额为负数, +Refresh Google Sheet,刷新Google表格, +Refresh Plaid Link,刷新Plaid链接, +Rejected Serial and Batch Bundle,拒收序列号和批次包, +Rejected Warehouse and Accepted Warehouse cannot be same.,拒收仓库与验收仓库不能相同, +Remarks Column Length,备注栏长度, +Remove Parent Row No in Items Table,移除物料表中的父行号, +Remove SABB Entry,移除SABB条目, +Removing rows without exchange gain or loss,移除无汇兑损益的行, +Repair,维修, +Repair Asset,维修资产, +Repair Details,维修详情, +"Replace a particular BOM in all other BOMs where it is used. It will replace the old BOM link, update cost and regenerate ""BOM Explosion Item"" table as per new BOM. +It also updates latest price in all the BOMs.","在使用BOM的所有其他BOM中替换BOM。 它将替换旧的 BOM 链接,更新成本,并按照新建BOM 重新生成“BOM Explosion item”表。 +它也更新了所有BOMM的最新价格。", +Report Error,报告错误, +Report Filters,报表筛选条件, +Report View,报表视图, +Repost Accounting Ledger,重新过账会计分类账, +Repost Accounting Ledger Items,重新过账会计分类账项目, +Repost Accounting Ledger Settings,重新过账会计分类账设置, +Repost Allowed Types,允许重新过账的类型, +Repost Error Log,重新过账错误日志, +Repost Item Valuation,重新过账物料估值, +Repost Payment Ledger,重新过账付款分类账, +Repost Payment Ledger Items,重新过账付款分类账项目, +Repost Status,重新过账状态, +Repost has started in the background,后台已开始重新过账, +Repost in background,后台重新过账, +Repost started in the background,后台已启动重新过账, +Reposting Completed {0}%,重新过账已完成{0}%, +Reposting Data File,重新过账数据文件, +Reposting Info,重新过账信息, +Reposting Progress,重新过账进度, +Reposting entries created: {0},已创建重新过账条目:{0}, +Reposting has been started in the background.,后台已启动重新过账, +Reposting in the background.,正在后台重新过账, +Represents a Financial Year. All accounting entries and other major transactions are tracked against the Fiscal Year.,表示一个财年。所有会计分录和主要交易均按财年跟踪, +Request Parameters,请求参数, +Request Timeout,请求超时, +Reservation Based On,预留依据, +Reserve,预留, +Reserve Stock,预留库存, +"Reserved Qty ({0}) cannot be a fraction. To allow this, disable '{1}' in UOM {3}.",预留数量({0})不能为小数。如需允许,请在单位{3}中禁用'{1}', +Reserved Qty for Production Plan,生产计划预留数量, +Reserved Qty for Subcontract,外协预留数量, +Reserved Qty should be greater than Delivered Qty.,预留数量应大于交付数量, +Reserved Serial No.,预留序列号, +Reserved Stock,预留库存, +Reserved Stock for Batch,批次预留库存, +Reserved for POS Transactions,为POS交易预留, +Reserved for Production,为生产预留, +Reserved for Production Plan,为生产计划预留, +Reserved for Sub Contracting,为外协预留, +Reserving Stock...,正在预留库存..., +Reset Company Default Values,重置公司默认值, +Reset Plaid Link,重置Plaid链接, +Reset Raw Materials Table,重置原材料表, +Resolution Due,解决到期日, +Response and Resolution,响应与解决, +Restart,重启, +Restore Asset,恢复资产, +Restrict,限制, +Restrict Items Based On,基于以下限制物料, +Result Key,结果键, +Resume Job,恢复作业, +Resume Timer,恢复计时器, +Retried,已重试, +Retry,重试, +Retry Failed Transactions,重试失败交易, +Return Against,退货依据, +Return Against Subcontracting Receipt,依据外协收货单退货, +Return Components,退货组件, +Return Issued,已发出退货, +Return Qty,退货数量, +Return Qty from Rejected Warehouse,从拒收仓库退货数量, +Return of Components,组件退货, +Returned,已退货, +Returned Against,退货依据, +Returned Qty ,退货数量 , +Returned Qty in Stock UOM,以库存单位计的退货数量, +Returned exchange rate is neither integer not float.,退货汇率既非整型也非浮点型, +Revaluation Journals,重估日记账, +Revaluation Surplus,重估盈余, +Revenue,收入, +Reversal Of,冲销依据, +Right Child,右子节点, +Role Allowed to Create/Edit Back-dated Transactions,允许创建/编辑倒签交易的角色, +Role Allowed to Over Bill ,允许超额开票的角色, +Role Allowed to Over Deliver/Receive,允许超额交付/接收的角色, +Role Allowed to Override Stop Action,允许覆盖停止操作的角色, +Role allowed to bypass Credit Limit,允许绕过信用额度的角色, +Root,根, +"Root Type for {0} must be one of the Asset, Liability, Income, Expense and Equity",{0}的根类型必须是资产、负债、收入、费用或权益, +Round Free Qty,四舍五入免费数量, +Round Off Tax Amount,四舍五入税额, +Round Off for Opening,期初四舍五入, +Round Tax Amount Row-wise,按行四舍五入税额, +Rounding Loss Allowance,四舍五入损失允许值, +Rounding Loss Allowance should be between 0 and 1,四舍五入损失允许值应在0到1之间, +Rounding gain/loss Entry for Stock Transfer,库存转移的四舍五入损益分录, +Row #,行号#, +Row # {0}:,行号{0}:, +Row # {0}: Please add Serial and Batch Bundle for Item {1},行号{0}:请为物料{1}添加序列号和批次包, +Row #{0}: A reorder entry already exists for warehouse {1} with reorder type {2}.,行号{0}:仓库{1}已存在类型为{2}的再订货条目, +Row #{0}: Acceptance Criteria Formula is incorrect.,行号{0}:验收标准公式错误, +Row #{0}: Acceptance Criteria Formula is required.,行号{0}:必须填写验收标准公式, +Row #{0}: Accepted Warehouse and Rejected Warehouse cannot be same,行号{0}:验收仓库与拒收仓库不能相同, +Row #{0}: Accepted Warehouse is mandatory for the accepted Item {1},行号{0}:验收物料{1}必须指定验收仓库, +Row #{0}: Allocated Amount cannot be greater than Outstanding Amount of Payment Request {1},行号{0}:分配金额不能超过付款请求{1}的未清金额, +Row #{0}: Allocated amount:{1} is greater than outstanding amount:{2} for Payment Term {3},行号{0}:付款条款{3}的分配金额{1}超过未清金额{2}, +Row #{0}: Amount must be a positive number,行号#{0}:金额必须为正数, +Row #{0}: BOM is not specified for subcontracting item {0},行号#{0}:外协物料{0}未指定物料清单(BOM), +Row #{0}: Batch No {1} is already selected.,行号#{0}:批次号{1}已被选择, +Row #{0}: Cannot allocate more than {1} against payment term {2},行号#{0}:支付条款{2}的分配金额不能超过{1}, +Row #{0}: Cannot transfer more than Required Qty {1} for Item {2} against Job Card {3},行号#{0}:针对作业卡{3}的物料{2},转移数量不能超过需求数量{1}, +Row #{0}: Consumed Asset {1} cannot be Draft,行号#{0}:消耗资产{1}不能为草稿状态, +Row #{0}: Consumed Asset {1} cannot be cancelled,行号#{0}:消耗资产{1}无法取消, +Row #{0}: Consumed Asset {1} cannot be the same as the Target Asset,行号#{0}:消耗资产{1}不能与目标资产相同, +Row #{0}: Consumed Asset {1} cannot be {2},行号#{0}:消耗资产{1}不能为{2}, +Row #{0}: Consumed Asset {1} does not belong to company {2},行号#{0}:消耗资产{1}不属于公司{2}, +Row #{0}: Cumulative threshold cannot be less than Single Transaction threshold,行号#{0}:累计阈值不能小于单笔交易阈值, +Row #{0}: Dates overlapping with other row,行号#{0}:日期与其他行重叠, +Row #{0}: Default BOM not found for FG Item {1},行号#{0}:产成品{1}未找到默认物料清单(BOM), +Row #{0}: Expense Account not set for the Item {1}. {2},行号#{0}:未为物料{1}设置费用科目。{2}, +Row #{0}: Finished Good Item Qty can not be zero,行号#{0}:产成品数量不能为零, +Row #{0}: Finished Good Item is not specified for service item {1},行号#{0}:服务项{1}未指定产成品, +Row #{0}: Finished Good Item {1} must be a sub-contracted item,行号#{0}:产成品{1}必须为外协物料, +Row #{0}: Finished Good reference is mandatory for Scrap Item {1}.,行号#{0}:废品{1}必须关联产成品, +Row #{0}: For {1} Clearance date {2} cannot be before Cheque Date {3},行号#{0}:{1}的清算日期{2}不能早于支票日期{3}, +"Row #{0}: For {1}, you can select reference document only if account gets credited",行号#{0}:对于{1},仅当科目贷记时才能选择参考单据, +"Row #{0}: For {1}, you can select reference document only if account gets debited",行号#{0}:对于{1},仅当科目借记时才能选择参考单据, +Row #{0}: From Date cannot be before To Date,行号#{0}:起始日期不能早于截止日期, +Row #{0}: Item {1} does not exist,行号#{0}:物料{1}不存在, +"Row #{0}: Item {1} has been picked, please reserve stock from the Pick List.",行号#{0}:物料{1}已拣配,请通过拣配单预留库存, +Row #{0}: Item {1} is not a service item,行号#{0}:物料{1}非服务项, +Row #{0}: Item {1} is not a stock item,行号#{0}:物料{1}非库存物料, +Row #{0}: Only {1} available to reserve for the Item {2},行号#{0}:物料{2}仅可预留{1}, +Row #{0}: Please select Item Code in Assembly Items,行号#{0}:请在组装物料中选择物料编码, +Row #{0}: Please select the BOM No in Assembly Items,行号#{0}:请在组装物料中选择物料清单编号, +Row #{0}: Please select the Sub Assembly Warehouse,行号#{0}:请选择子装配仓库, +Row #{0}: Please update deferred revenue/expense account in item row or default account in company master,行号#{0}:请更新物料行的递延收入/费用科目或公司主数据的默认科目, +Row #{0}: Qty increased by {1},行号#{0}:数量增加了{1}, +Row #{0}: Qty must be a positive number,行号#{0}:数量必须为正数, +Row #{0}: Qty should be less than or equal to Available Qty to Reserve (Actual Qty - Reserved Qty) {1} for Iem {2} against Batch {3} in Warehouse {4}.,行号#{0}:仓库{4}批次{3}物料{2}的预留数量不得超过可预留数量(实际数量-已预留数量){1}, +Row #{0}: Quality Inspection is required for Item {1},行号#{0}:物料{1}需进行质量检验, +Row #{0}: Quality Inspection {1} is not submitted for the item: {2},行号#{0}:物料{2}的质量检验{1}未提交, +Row #{0}: Quality Inspection {1} was rejected for item {2},行号#{0}:物料{2}的质量检验{1}被拒收, +Row #{0}: Quantity to reserve for the Item {1} should be greater than 0.,行号#{0}:物料{1}的预留数量必须大于0, +Row #{0}: Rate must be same as {1}: {2} ({3} / {4}),行号#{0}:汇率必须与{1}一致:{2}({3} / {4}), +Row #{0}: Rejected Qty cannot be set for Scrap Item {1}.,行号#{0}:废品{1}不可设置拒收数量, +Row #{0}: Rejected Warehouse is mandatory for the rejected Item {1},行号#{0}:拒收物料{1}必须指定拒收仓库, +Row #{0}: Scrap Item Qty cannot be zero,行号#{0}:废品数量不能为零, +"Row #{0}: Selling rate for item {1} is lower than its {2}. + Selling {3} should be atleast {4}.

Alternatively, + you can disable selling price validation in {5} to bypass + this validation.","行 #{0}:项目 {1} 的销售率低于它的 {2}。 + 出售 {3} 应至少是 {4}。

或者, + 您可以禁用 {5} 中的售价验证,绕过 + 此验证。", +Row #{0}: Serial No {1} for Item {2} is not available in {3} {4} or might be reserved in another {5}.,行号#{0}:物料{2}的序列号{1}在{3} {4}中不可用,或可能已被其他{5}预留, +Row #{0}: Serial No {1} is already selected.,行号#{0}:序列号{1}已被选择, +Row #{0}: Start Time and End Time are required,行号#{0}:需填写开始时间和结束时间, +Row #{0}: Start Time must be before End Time,行号#{0}:开始时间必须早于结束时间, +Row #{0}: Status is mandatory,行号#{0}:状态为必填项, +Row #{0}: Stock cannot be reserved for Item {1} against a disabled Batch {2}.,行号#{0}:不可为停用批次{2}的物料{1}预留库存, +Row #{0}: Stock cannot be reserved for a non-stock Item {1},行号#{0}:非库存物料{1}不可预留库存, +Row #{0}: Stock cannot be reserved in group warehouse {1}.,行号#{0}:不可在组仓库{1}预留库存, +Row #{0}: Stock is already reserved for the Item {1}.,行号#{0}:物料{1}已预留库存, +Row #{0}: Stock is reserved for item {1} in warehouse {2}.,行号#{0}:仓库{2}中物料{1}的库存已预留, +Row #{0}: Stock not available to reserve for Item {1} against Batch {2} in Warehouse {3}.,行号#{0}:仓库{3}批次{2}的物料{1}无可用库存可预留, +Row #{0}: Stock not available to reserve for the Item {1} in Warehouse {2}.,行号#{0}:仓库{2}中物料{1}无可用库存可预留, +Row #{0}: The warehouse {1} is not a child warehouse of a group warehouse {2},行号#{0}:仓库{1}不是组仓库{2}的子仓库, +Row #{0}: You cannot use the inventory dimension '{1}' in Stock Reconciliation to modify the quantity or valuation rate. Stock reconciliation with inventory dimensions is intended solely for performing opening entries.,行号#{0}:库存对账中不可使用库存维度'{1}'修改数量或估价率,带维度的库存对账仅用于期初录入, +Row #{0}: You must select an Asset for Item {1}.,行号#{0}:必须为物料{1}选择资产, +Row #{0}: {1} is not a valid reading field. Please refer to the field description.,行号#{0}:{1}不是有效读数字段,请参考字段说明, +Row #{0}: {1} of {2} should be {3}. Please update the {1} or select a different account.,行号#{0}:{2}的{1}应为{3},请更新{1}或选择其他科目, +Row #{1}: Warehouse is mandatory for stock Item {0},行号#{1}:库存物料{0}必须指定仓库, +Row #{}: Finance Book should not be empty since you're using multiple.,行号#{}:使用多财务账簿时不可为空, +Row #{}: Please use a different Finance Book.,行号#{}:请使用其他财务账簿, +Row #{}: The original Invoice {} of return invoice {} is not consolidated.,行号#{}:退货发票{}的原始发票{}未合并, +Row #{}: item {} has been picked already.,行号#{}:物料{}已拣配, +Row #{}: {} {} doesn't belong to Company {}. Please select valid {}.,行号#{}:{} {}不属于公司{},请选择有效的{}, +Row No {0}: Warehouse is required. Please set a Default Warehouse for Item {1} and Company {2},行号{0}:必须指定仓库,请为物料{1}和公司{2}设置默认仓库, +Row Number,行号, +Row {0},行号{0}, +"Row {0} picked quantity is less than the required quantity, additional {1} {2} required.",行号{0}拣配数量不足,需额外{1} {2}, +Row {0}# Item {1} cannot be transferred more than {2} against {3} {4},行号{0}# 物料{1}针对{3} {4}的转移数量不可超过{2}, +Row {0}# Item {1} not found in 'Raw Materials Supplied' table in {2} {3},行号{0}# 在{2} {3}的'供应原材料'表中未找到物料{1}, +Row {0}: Accepted Qty and Rejected Qty can't be zero at the same time.,行号{0}:接受数量和拒收数量不能同时为零, +Row {0}: Account {1} and Party Type {2} have different account types,行号{0}:科目{1}与交易方类型{2}的科目类型不一致, +Row {0}: Allocated amount {1} must be less than or equal to invoice outstanding amount {2},行号{0}:分配金额{1}不能超过发票未结金额{2}, +Row {0}: Allocated amount {1} must be less than or equal to remaining payment amount {2},行号{0}:分配金额{1}不能超过剩余付款金额{2}, +"Row {0}: As {1} is enabled, raw materials cannot be added to {2} entry. Use {3} entry to consume raw materials.",行号{0}:启用{1}后不可在{2}分录添加原材料,请使用{3}分录消耗原材料, +Row {0}: Both Debit and Credit values cannot be zero,行号{0}:借贷方金额不能同时为零, +Row {0}: Cost Center {1} does not belong to Company {2},行号{0}:成本中心{1}不属于公司{2}, +Row {0}: Either Delivery Note Item or Packed Item reference is mandatory.,行号{0}:必须关联交货单物料或包装物料, +Row {0}: Expense Head changed to {1} as no Purchase Receipt is created against Item {2}.,行号{0}:因未创建物料{2}的采购收货单,费用科目更改为{1}, +Row {0}: Expense Head changed to {1} because account {2} is not linked to warehouse {3} or it is not the default inventory account,行号{0}:因科目{2}未关联仓库{3}或非默认库存科目,费用科目更改为{1}, +Row {0}: Expense Head changed to {1} because expense is booked against this account in Purchase Receipt {2},行号{0}:因采购收货单{2}已使用科目{1}记账费用,费用科目更改为{1}, +Row {0}: From Warehouse is mandatory for internal transfers,行号{0}:内部调拨必须指定来源仓库, +Row {0}: Item Tax template updated as per validity and rate applied,行号{0}:物料税模板已按有效税率更新, +Row {0}: Item rate has been updated as per valuation rate since its an internal stock transfer,行号{0}:内部调拨时物料单价已按估价率更新, +Row {0}: Item {1} must be a stock item.,行号{0}:物料{1}必须为库存物料, +Row {0}: Item {1} must be a subcontracted item.,行号{0}:物料{1}必须为外协物料, +Row {0}: Item {1}'s quantity cannot be higher than the available quantity.,行号{0}:物料{1}数量不可超过可用数量, +Row {0}: Packed Qty must be equal to {1} Qty.,行号{0}:包装数量必须等于{1}数量, +Row {0}: Packing Slip is already created for Item {1}.,行号{0}:已为物料{1}创建装箱单, +Row {0}: Payment Term is mandatory,行号{0}:支付条款为必填项, +Row {0}: Please provide a valid Delivery Note Item or Packed Item reference.,行号{0}:请提供有效的交货单物料或包装物料引用, +Row {0}: Please select a BOM for Item {1}.,行号{0}:请为物料{1}选择物料清单(BOM), +Row {0}: Please select an active BOM for Item {1}.,行号{0}:请为物料{1}选择有效的物料清单(BOM), +Row {0}: Please select an valid BOM for Item {1}.,行号{0}:请为物料{1}选择有效的物料清单(BOM), +Row {0}: Project must be same as the one set in the Timesheet: {1}.,行号{0}:项目必须与工时表{1}中设置的一致, +Row {0}: Purchase Invoice {1} has no stock impact.,行号{0}:采购发票{1}无库存影响, +Row {0}: Qty cannot be greater than {1} for the Item {2}.,行号{0}:物料{2}数量不可超过{1}, +Row {0}: Qty in Stock UOM can not be zero.,行号{0}:库存单位的数量不可为零, +Row {0}: Qty must be greater than 0.,行号{0}:数量必须大于0, +Row {0}: Quantity cannot be negative.,行号{0}:数量不能为负数, +Row {0}: Shift cannot be changed since the depreciation has already been processed,行号{0}:折旧已处理后不可变更班次, +Row {0}: Target Warehouse is mandatory for internal transfers,行号{0}:内部调拨必须指定目标仓库, +"Row {0}: To set {1} periodicity, difference between from and to date must be greater than or equal to {2}",行号{0}:设置{1}周期时,起止日期差值必须大于等于{2}, +Row {0}: Total Number of Depreciations cannot be less than or equal to Opening Number of Booked Depreciations,行号{0}:总折旧次数不可小于等于已记账折旧的期初次数, +Row {0}: Workstation or Workstation Type is mandatory for an operation {1},行号{0}:工序{1}必须指定工作站或工作站类型, +Row {0}: {1} account already applied for Accounting Dimension {2},行 {0}: {1} 帐户已经应用于会计尺寸 {2}, +Row {0}: {1} {2} cannot be same as {3} (Party Account) {4},行 {0}: {1} {2} 不能与 {3} (组队帐户) {4}, +Row {0}: {2} Item {1} does not exist in {2} {3},行 {0}: {2} 项目 {1} 在 {2} {3} 中不存在, +Row({0}): Outstanding Amount cannot be greater than actual Outstanding Amount {1} in {2},行({0}):未付金额不能大于实际未付金额 {1} 在 {2}, +Rows with Same Account heads will be merged on Ledger,具有相同帐户头的行将在分类帐上合并, +Rows: {0} have 'Payment Entry' as reference_type. This should not be set manually.,行: {0} 具有“付款条目”作为参考类型。不应手动设置。, +Rows: {0} in {1} section are Invalid. Reference Name should point to a valid Payment Entry or Journal Entry.,行数: {0} {1} 部分无效。参考名称应指向有效的付款条目或日记条目。, +Run parallel job cards in a workstation,在工作站中运行并行作业卡, +Running,运行中, +SCO Supplied Item,SCO 提供的物品, +SLA Fulfilled On,SLA 完成于, +SLA Fulfilled On Status,SLA 已完成状态, +SLA Paused On,SLA 暂停于, +SLA will be applied if {1} is set as {2}{3},如果 {1} 被设置为 {2}{3} ,SLA 将会被应用, +SLA will be applied on every {0},SLA 将应用于每一个 {0}, +SMS Settings,短信设置, +SO Total Qty,SO 总数量, +Salary Currency,薪资货币, +Sales Incoming Rate,销售收入率, +Sales Invoice {0} must be deleted before cancelling this Sales Order,在取消此销售订单之前必须删除销售发票 {0}, +Sales Order Packed Item,销售订单打包的物品, +Sales Order Reference,相关销售订单, +Sales Order Status,销售订单状态, +"Sales Order {0} already exists against Customer's Purchase Order {1}. To allow multiple Sales Orders, Enable {2} in {3}",销售订单 {0} 已存在于客户的采购订单 {1}。若要允许多张销售订单,请在 {3} 中启用 {2}, +Sales Partner ,销售合作伙伴 , +Sales Partner Item,销售合作伙伴项目, +Sales Partner Target Variance Based On Item Group,基于物料组的销售伙伴目标变化量, +Sales Person {0} is disabled.,销售员{0}已被停用。, +Sales Pipeline Analytics,销售管道分析, +Sales Update Frequency in Company and Project,公司和项目的销售更新频率, +Sales Value,销售值, +Salvage Value Percentage,残值百分比, +Same item and warehouse combination already entered.,已输入相同的商品和仓库组合。, +Savings,储蓄, +Scan Batch No,扫描批次号, +Scan Mode,扫描模式, +Scan Serial No,扫描序列号, +Scan barcode for item {0},扫描条形码用于项目 {0}, +"Scan mode enabled, existing quantity will not be fetched.",扫描模式已启用,将不会获取现有数量。, +Scanned Quantity,已扫描数量, +Scheduled Time Logs,计划时间日志, +Scheduler is Inactive. Can't trigger job now.,调度程序未激活。现在无法触发作业。, +Scheduler is Inactive. Can't trigger jobs now.,调度程序处于非活动状态。现在无法触发作业。, +Scheduler is inactive. Cannot enqueue job.,调度器处于非活动状态。无法在队列工作。, +Scheduler is inactive. Cannot merge accounts.,调度器处于未激活状态。无法合并帐户。, +Scheduling,计划调度, +"Scorecard variables can be used, as well as: +{total_score} (the total score from that period), +{period_number} (the number of periods to present day) +","可以使用记分卡变量,以及: +{total_score} (该期间的总分), +{period_number} (截至今天的期间数) +", +Scrap & Process Loss,废料和工艺损失, +Scrap Asset,废弃资产, +Scrap Cost Per Qty,每个数量的废料成本, +Scrap Item Code,废品项目代码, +Scrap Item Name,废件项目名称, +"Search by item code, serial number or barcode",按项目代码、序列号或条形码搜索, +Secondary Party,二级方, +Secondary Role,次要角色, +Section,节, +Segregate Serial / Batch Bundle,分离序列/批次捆绑, +Select Accounting Dimension.,选择会计维度。, +Select Alternative Items for Sales Order,选择供销售订单使用的替代项目, +Select Batch No,选择批次号, +Select Columns and Filters,选择列与筛选条件, +Select Corrective Operation,选择纠正性工序, +Select Date of Birth. This will validate Employees age and prevent hiring of under-age staff.,选择出生日期。此操作将验证员工年龄并防止雇用未成年人员。, +"Select Date of joining. It will have impact on the first salary calculation, Leave allocation on pro-rata bases.",选择入职日期。这将影响首次薪资计算及按比例分配的年假额度。, +Select Dimension,选择维度, +Select Finished Good,选择产成品, +Select Items for Quality Inspection,选择待质检物料, +Select Job Worker Address,选择外协加工方地址, +Select Serial No,选择序列号, +Select Serial and Batch,选择序列号与批次, +Select Time,选择时间, +Select View,选择视图, +Select Vouchers to Match,选择匹配凭证, +Select Warehouses to get Stock for Materials Planning,选择用于物料计划库存的仓库, +Select a Company this Employee belongs to.,选择该员工所属的公司。, +Select a Customer,选择客户, +Select an Item Group.,选择物料组。, +Select an invoice to load summary data,选择发票以加载汇总数据, +Select an item from each set to be used in the Sales Order.,从每组中选择一个物料用于销售订单。, +Select the Default Workstation where the Operation will be performed. This will be fetched in BOMs and Work Orders.,选择执行工序的默认工作站。此信息将用于物料清单和工单。, +Select the Item to be manufactured.,选择待生产的物料。, +"Select the Item to be manufactured. The Item name, UoM, Company, and Currency will be fetched automatically.",选择待生产的物料。物料名称、计量单位、公司和币种将自动获取。, +Select the Warehouse,选择仓库, +Select the date and your timezone,选择日期和时区, +Select the raw materials (Items) required to manufacture the Item,选择生产该物料所需的原材料, +"Select whether to get items from a Sales Order or a Material Request. For now select Sales Order. + A Production Plan can also be created manually where you can select the Items to manufacture.","选择是否从销售订单或物料请求中获取物品。现在选择 销售订单。 + 也可以手动创建生产计划,您可以在其中选择要制造的物品。", +Select your weekly off day,选择每周休息日, +Selected Serial and Batch Bundle entries have been removed.,选定的序列号批次组合条目已被移除。, +Selected Vouchers,已选凭证, +Selected date is,选定日期为, +Selected document must be in submitted state,所选单据必须处于已提交状态, +Self delivery,自提, +Sell Asset,出售资产, +Send Attached Files,发送附件, +Send Document Print,发送单据打印, +Send Emails,发送邮件, +Sending...,发送中..., +Sequential,顺序, +Serial & Batch Item,序列号与批次物料, +Serial & Batch Item Settings,序列号批次物料设置, +Serial / Batch Bundle,序列号/批次组合, +Serial / Batch Bundle Missing,缺少序列号/批次组合, +Serial / Batch No,序列号/批次号, +Serial / Batch Nos,序列号/批次号, +Serial No Ledger,序列号台账, +Serial No Range,序列号范围, +Serial No and Batch Selector cannot be use when Use Serial / Batch Fields is enabled.,启用序列号/批次字段时不可使用序列号批次选择器, +Serial No and Batch for Finished Good,产成品序列号与批次, +Serial No is mandatory,序列号为必填项, +Serial No {0} already exists,序列号{0}已存在, +Serial No {0} already scanned,序列号{0}已扫描, +Serial No {0} does not exists,序列号{0}不存在, +Serial No {0} is already added,序列号{0}已添加, +"Serial No {0} is not present in the {1} {2}, hence you can't return it against the {1} {2}",序列号{0}未存在于{1}{2}中,因此不能针对该{1}{2}进行退回, +Serial Nos,序列号, +Serial Nos / Batch Nos,序列号/批次号, +Serial Nos are created successfully,序列号创建成功, +"Serial Nos are reserved in Stock Reservation Entries, you need to unreserve them before proceeding.",序列号已在库存预留条目中预留,继续操作前需取消预留。, +Serial and Batch,序列号与批次, +Serial and Batch Bundle,序列号批次组合, +Serial and Batch Bundle created,序列号批次组合已创建, +Serial and Batch Bundle updated,序列号批次组合已更新, +Serial and Batch Bundle {0} is already used in {1} {2}.,序列号批次组合{0}已用于{1}{2}。, +Serial and Batch Details,序列号批次明细, +Serial and Batch Entry,序列号批次条目, +Serial and Batch No,序列号批次号, +Serial and Batch Nos,序列号批次号, +Serial and Batch Nos will be auto-reserved based on Pick Serial / Batch Based On,序列号批次号将根据拣配依据自动预留, +Serial and Batch Reservation,序列号批次预留, +Serial and Batch Summary,序列号批次汇总, +Service Cost Per Qty,单位服务成本, +Service Expense Total Amount,服务费用总额, +Service Expenses,服务费用, +Service Item,服务物料, +Service Item Qty,服务物料数量, +Service Item Qty / Finished Good Qty,服务物料数量/产成品数量, +Service Item UOM,服务物料单位, +Service Item {0} is disabled.,服务物料{0}已停用, +Service Item {0} must be a non-stock item.,服务物料{0}必须为非库存物料, +Service Items,服务物料, +Service Level Agreement for {0} {1} already exists.,{0}{1}的服务级别协议已存在。, +Service Level Name,服务级别名称, +Service Provider,服务提供商, +Set Default Supplier,设置默认供应商, +Set From Warehouse,设置来源仓库, +Set Landed Cost Based on Purchase Invoice Rate,按采购发票汇率设置到岸成本, +Set Loyalty Program,设置忠诚度计划, +Set Operating Cost / Scrap Items From Sub-assemblies,设置来自子件的运营成本/废品物料, +Set Operating Cost Based On BOM Quantity,根据物料清单数量设置运营成本, +Set Parent Row No in Items Table,在物料表中设置父行号, +Set Process Loss Item Quantity,设置加工损耗物料数量, +Set Project Status,设置项目状态, +Set Quantity,设置数量, +Set Response Time for Priority {0} in row {1}.,为第{1}行的优先级{0}设置响应时间。, +Set Serial and Batch Bundle Naming Based on Naming Series,根据命名规则设置序列号批次组合名称, +Set Valuation Rate Based on Source Warehouse,根据来源仓库设置计价汇率, +Set Warehouse,设置仓库, +Set default {0} account for non stock items,设置非库存物料的默认{0}科目, +Set fieldname from which you want to fetch the data from the parent form.,设置从父表单获取数据的字段名称。, +Set quantity of process loss item:,设置加工损耗物料数量:, +Set the Planned Start Date (an Estimated Date at which you want the Production to begin),设置计划开始日期(预计开始生产的日期), +Set the status manually.,手动设置状态。, +Set {0} in asset category {1} for company {2},为{2}公司设置资产类别{1}的{0}, +Sets 'Accepted Warehouse' in each row of the Items table.,在物料表的每一行设置'验收仓库'。, +Sets 'Rejected Warehouse' in each row of the Items table.,在物料表的每一行设置'拒收仓库'。, +Sets 'Reserve Warehouse' in each row of the Supplied Items table.,在供应物料表的每一行设置'预留仓库'。, +Setting Item Locations...,设置物料位置..., +Setting the account as a Company Account is necessary for Bank Reconciliation,将科目设为公司账户是银行对账的必要条件, +Setting {} is required,必须设置{}, +Setup your organization,组织架构设置, +Shelf Life in Days,保质期(天), +Shift,班次, +Shift Factor,班次系数, +Shift Name,班次名称, +Shipment,装运, +Shipment Amount,装运金额, +Shipment Delivery Note,装运交货单, +Shipment ID,装运ID, +Shipment Information,装运信息, +Shipment Parcel,装运包裹, +Shipment Parcel Template,装运包裹模板, +Shipment Type,装运类型, +Shipment details,装运明细, +Shipping Address Details,发货地址明细, +Shipping Address Template,发货地址模板, +Shipping Address does not belong to the {0},发货地址不属于{0}, +Show Aggregate Value from Subsidiary Companies,显示子公司汇总值, +Show Balances in Chart Of Accounts,在科目表中显示余额, +Show Barcode Field in Stock Transactions,在库存事务中显示条码字段, +Show Dimension Wise Stock,按维度显示库存, +Show Disabled Warehouses,显示停用仓库, +Show Failed Logs,显示失败日志, +Show GL Balance,显示总账余额, +Show Item Name,显示物料名称, +Show Ledger View,显示分类账视图, +Show Net Values in Party Account,在往来账户显示净值, +Show Pay Button in Purchase Order Portal,在采购订单门户显示支付按钮, +Show Preview,显示预览, +Show Remarks,显示备注, +Show Taxes as Table in Print,打印时以表格形式显示税费, +Show net values in opening and closing columns,在期初期末列显示净值, +Show only the Immediate Upcoming Term,仅显示即将到期的条款, +Show pending entries,显示待处理条目, +Show with upcoming revenue/expense,显示即将发生的收入/费用, +"Simple Python Expression, Example: doc.status == 'Open' and doc.issue_type == 'Bug'",简单Python表达式,示例:doc.status == 'Open' and doc.issue_type == 'Bug', +"Simple Python formula applied on Reading fields.
Numeric eg. 1: reading_1 > 0.2 and reading_1 < 0.5
+Numeric eg. 2: mean > 3.5 (mean of populated fields)
+Value based eg.: reading_value in (""A"", ""B"", ""C"")","简单的 Python 公式应用于阅读字段。
数字例如 1: reading_1 > 0.2 和 reading_1 < 0.5
+数字例如 2: 平均值 > 3.5 (填充字段的平均值)
+基于值例如: reading_value in (""A"", ""B"", ""C"")", +Simultaneous,并行, +Skip Available Sub Assembly Items,跳过可用子装配物料, +Skipped,已跳过, +Skipping Tax Withholding Category {0} as there is no associated account set for Company {1} in it.,跳过代扣税类别{0},因其中未设置公司{1}的关联账户。, +"Skipping {0} of {1}, {2}",跳过{1}的{0},{2}, +Sold by,销售方, +Something went wrong please try again,发生错误,请重试, +Source Exchange Rate,来源汇率, +Source Fieldname,来源字段名, +Source Warehouse Address Link,来源仓库地址链接, +South Africa VAT Account,南非增值税科目, +South Africa VAT Settings,南非增值税设置, +Spacer,间隔符, +Split Asset,拆分资产, +Split Early Payment Discount Loss into Income and Tax Loss,将提前付款折扣损失拆分为收入和税费损失, +Split From,拆分自, +Split Qty,拆分数量, +Split qty cannot be grater than or equal to asset qty,拆分数量不得大于或等于资产数量, +Splitting {0} {1} into {2} rows as per Payment Terms,根据付款条款将{0}{1}拆分为{2}行, +Stage,阶段, +Stale Days should start from 1.,陈旧天数应从1开始, +Standard Description,标准描述, +Standard Rated Expenses,标准税率费用, +"Standard Terms and Conditions that can be added to Sales and Purchases. Examples: Validity of the offer, Payment Terms, Safety and Usage, etc.",可添加到销售和采购中的标准条款和条件。示例:报价有效期、付款条款、安全和使用等。, +Standard rated supplies in {0},{0}中的标准税率供应品, +"Standard tax template that can be applied to all Purchase Transactions. This template can contain a list of tax heads and also other expense heads like ""Shipping"", ""Insurance"", ""Handling"", etc.",可适用于所有购买交易的标准税模板。 此模板可以包含税头列表和其他支出项,如“发货”、“保险”、“处理”等等。, +"Standard tax template that can be applied to all Sales Transactions. This template can contain a list of tax heads and also other expense/income heads like ""Shipping"", ""Insurance"", ""Handling"" etc.",可应用于所有销售交易的标准税模板。 此模板可以包含税金列表和其他开支/收入项,如“发货”、“保险”、“处理”等。, +Start / Resume,启动/恢复, +Start Date should be lower than End Date,开始日期应早于结束日期, +Start Deletion,开始删除, +Start Import,开始导入, +Start Job,启动作业, +Start Merge,开始合并, +Start Reposting,开始重新过账, +Start Time can't be greater than or equal to End Time for {0}.,{0}的开始时间不能大于或等于结束时间, +Start Timer,启动计时器, +Started a background job to create {1} {0},已启动后台作业创建{1}{0}, +Status Details,状态详情, +Status Illustration,状态图示, +Status set to rejected as there are one or more rejected readings.,因存在一个或多个被拒绝读数,状态设为已拒绝, +Stock Closing,库存结转, +Stock Consumed During Repair,维修消耗库存, +Stock Consumption Details,库存消耗明细, +Stock Entries already created for Work Order {0}: {1},已为工单{0}创建库存分录:{1}, +Stock Ledger Invariant Check,库存分类账不变性检查, +Stock Ledger Variance,库存分类账差异, +Stock Movement,库存移动, +Stock Planning,库存计划, +Stock Reposting Settings,库存重新过账设置, +Stock Reservation,库存预留, +Stock Reservation Entries Cancelled,库存预留分录已取消, +Stock Reservation Entries Created,库存预留分录已创建, +Stock Reservation Entry,库存预留分录, +Stock Reservation Entry cannot be updated as it has been delivered.,库存预留分录已交货,无法更新, +"Stock Reservation Entry created against a Pick List cannot be updated. If you need to make changes, we recommend canceling the existing entry and creating a new one.",针对领料单创建的库存预留分录不可更新。如需修改,建议取消现有分录并创建新分录, +Stock Reservation Warehouse Mismatch,库存预留仓库不匹配, +Stock Reservation can only be created against {0}.,库存预留只能针对{0}创建, +Stock Reserved Qty (in Stock UOM),已预留数量(库存单位), +Stock Transactions Settings,库存交易设置, +Stock UOM Quantity,库存单位数量, +Stock Unreservation,取消库存预留, +Stock Validations,库存验证, +Stock and Manufacturing,库存与生产, +Stock cannot be reserved in group warehouse {0}.,无法在组仓库{0}中预留库存, +Stock cannot be reserved in the group warehouse {0}.,无法在组仓库{0}中预留库存, +Stock not available for Item {0} in Warehouse {1}.,物料编码{0}在仓库{1}中无可用库存, +Stock quantity not enough for Item Code: {0} under warehouse {1}. Available quantity {2} {3}.,物料编码{0}在仓库{1}中库存不足。可用数量为{2}{3}, +Stock transactions that are older than the mentioned days cannot be modified.,超过指定天数的库存交易不可修改, +Stock will be reserved on submission of Purchase Receipt created against Material Request for Sales Order.,针对销售订单的物料申请创建采购收据并提交时,将预留库存, +Stock/Accounts can not be frozen as processing of backdated entries is going on. Please try again later.,因正在处理倒填日期的分录,无法冻结库存/科目。请稍后重试, +Sub Assemblies & Raw Materials,子装配件与原材料, +Sub Assembly Item,子装配件物料, +Sub Assembly Item Code,子装配件物料编码, +Sub Assembly Items,子装配件物料, +Sub Assembly Warehouse,子装配件仓库, +Sub Operation,子工序, +Sub Operations,子工序, +Sub Total,小计, +Subcontract BOM,外协物料清单, +Subcontract Order,外协订单, +Subcontract Order Summary,外协订单汇总, +Subcontract Return,外协退货, +Subcontracted Quantity,外协数量, +Subcontracting BOM,外协物料清单, +Subcontracting Conversion Factor,外协转换系数, +Subcontracting Order,外协订单, +Subcontracting Order (Draft) will be auto-created on submission of Purchase Order.,提交采购订单时将自动创建外协订单(草稿), +Subcontracting Order Item,外协订单项, +Subcontracting Order Service Item,外协订单服务项, +Subcontracting Order Supplied Item,外协订单供应项, +Subcontracting Order {0} created.,外协订单{0}已创建, +Subcontracting Purchase Order,外协采购订单, +Subcontracting Receipt,外协收据, +Subcontracting Receipt Item,外协收据项, +Subcontracting Receipt Supplied Item,外协收据供应项, +Subcontracting Settings,外协设置, +Subdivision,细分, +Submit Action Failed,提交操作失败, +Submit After Import,导入后提交, +Submit ERR Journals?,提交错误日记账?, +Submit Generated Invoices,提交生成的发票, +Subscription for Future dates cannot be processed.,无法处理未来日期的订阅, +Succeeded,成功, +Succeeded Entries,成功条目, +"Successfully changed Stock UOM, please redefine conversion factors for new UOM.",已成功更改库存单位,请重新定义新单位的换算系数, +Successfully imported {0},成功导入{0}, +"Successfully imported {0} record out of {1}. Click on Export Errored Rows, fix the errors and import again.",成功导入{1}条记录中的{0}条。单击“导出错误行”,修复错误后重新导入, +Successfully imported {0} record.,成功导入{0}条记录, +"Successfully imported {0} records out of {1}. Click on Export Errored Rows, fix the errors and import again.",成功导入{1}条记录中的{0}条。单击“导出错误行”,修复错误后重新导入, +Successfully imported {0} records.,成功导入{0}条记录, +Successfully linked to Customer,成功关联客户, +Successfully linked to Supplier,成功关联供应商, +Successfully merged {0} out of {1}.,成功合并{1}中的{0}条记录, +Successfully updated {0},成功更新{0}, +"Successfully updated {0} record out of {1}. Click on Export Errored Rows, fix the errors and import again.",成功更新{1}条记录中的{0}条。单击“导出错误行”,修复错误后重新导入, +Successfully updated {0} record.,成功更新{0}条记录, +"Successfully updated {0} records out of {1}. Click on Export Errored Rows, fix the errors and import again.",成功更新{1}条记录中的{0}条。单击“导出错误行”,修复错误后重新导入, +Successfully updated {0} records.,成功更新{0}条记录, +Sum of Repair Cost and Value of Consumed Stock Items.,维修成本与消耗库存价值之和, +Supplied Item,供应物料, +Supplier Address Details,供应商地址明细, +Supplier Contact,供应商联系人, +Supplier Group Item,供应商组项, +Supplier Info,供应商信息, +Supplier Invoice,供应商发票, +Supplier Item,供应商物料, +Supplier Portal Users,供应商门户用户, +Supplier Primary Address,供应商主要地址, +Supplier Primary Contact,供应商主要联系人, +Supplies subject to the reverse charge provision,适用反向征税条款的供应品, +Sync Now,立即同步, +Sync Started,同步已启动, +System In Use,使用中的系统, +System Settings,系统设置, +System will automatically create the serial numbers / batch for the Finished Good on submission of work order,提交工单时系统将自动创建成品的序列号/批次, +System will not check over billing since amount for Item {0} in {1} is zero,因{1}中物料{0}的金额为零,系统不检查超额开票, +TCS Amount,TCS金额, +TCS Rate %,TCS税率%, +TDS Amount,TDS金额, +TDS Deducted,已扣除TDS, +TDS Payable,应付TDS, +Target Asset,目标资产, +Target Asset Location,目标资产位置, +Target Asset {0} cannot be cancelled,目标资产{0}无法取消, +Target Asset {0} cannot be submitted,目标资产{0}无法提交, +Target Asset {0} cannot be {1},目标资产{0}无法{1}, +Target Asset {0} does not belong to company {1},目标资产{0}不属于公司{1}, +Target Asset {0} needs to be composite asset,目标资产{0}需为组合资产, +Target Batch No,目标批号, +Target Exchange Rate,目标汇率, +Target Fieldname (Stock Ledger Entry),目标字段名(库存分类账分录), +Target Fixed Asset Account,目标固定资产科目, +Target Has Batch No,目标有批号, +Target Has Serial No,目标有序列号, +Target Incoming Rate,目标入库汇率, +Target Is Fixed Asset,目标为固定资产, +Target Item Code,目标物料编码, +Target Item Name,目标物料名称, +Target Item {0} must be a Fixed Asset item,目标物料{0}必须为固定资产物料, +Target Qty must be a positive number,目标数量必须为正数, +Target Serial No,目标序列号, +Target Warehouse Address Link,目标仓库地址链接, +Target Warehouse is set for some items but the customer is not an internal customer.,部分物料设置了目标仓库,但客户不是内部客户, +Task Assignee Email,任务分配人邮箱, +Task {0} depends on Task {1}. Please add Task {1} to the Tasks list.,任务{0}依赖任务{1}。请将任务{1}添加到任务列表, +Tax Amount,税额, +Tax Amount will be rounded on a row(items) level,税额将在行项目层级进行四舍五入, +Tax Masters,税务主数据, +Tax Refunds provided to Tourists under the Tax Refunds for Tourists Scheme,根据游客退税计划向游客提供的税款退还, +Tax Settings,税务设置, +Tax Withheld Vouchers,代扣税款凭证, +Tax Withholding,税款代扣代缴, +Tax Withholding Category {} against Company {} for Customer {} should have Cumulative Threshold value.,针对公司{1}客户{2}的代扣代缴类别{0}应设置累计起征点值, +Tax Withholding Details,代扣代缴明细, +Tax Withholding Net Total,代扣代缴净额, +"Tax detail table fetched from item master as a string and stored in this field. +Used for Taxes and Charges","税务细节表已作为字符串从项目主中获取并存储在此字段。 +用于税收和费用", +Tax will be withheld only for amount exceeding the cumulative threshold,仅对超过累计起征点的金额进行税款代扣, +Taxes row #{0}: {1} cannot be smaller than {2},第{0}行税项:{1}不能小于{2}, +Team,团队, +Telephony Call Type,通话类型, +Template Item Selected,已选模板物料, +Template Options,模板选项, +Template Task,模板任务, +Template Warnings,模板警告, +Terms & Conditions,条款与条件, +Terms Template,条款模板, +Territory Item,区域物料, +Territory Wise Sales,分区域销售, +The Batch {0} has negative quantity {1} in warehouse {2}. Please correct the quantity.,批次{0}在仓库{2}中存在负数量{1}。请更正数量, +The Condition '{0}' is invalid,条件'{0}'无效, +The Document Type {0} must have a Status field to configure Service Level Agreement,单据类型{0}必须具有状态字段以配置服务级别协议, +"The GL Entries and closing balances will be processed in the background, it can take a few minutes.",总账分录和期末余额将在后台处理,可能需要几分钟, +"The GL Entries will be cancelled in the background, it can take a few minutes.",总账分录将在后台取消,可能需要几分钟, +"The Payment Request {0} is already paid, cannot process payment twice",付款申请{0}已支付,不能重复处理, +"The Pick List having Stock Reservation Entries cannot be updated. If you need to make changes, we recommend canceling the existing Stock Reservation Entries before updating the Pick List.",存在库存预留记录的拣货清单无法更新。如需修改,建议在更新前取消现有库存预留, +The Process Loss Qty has reset as per job cards Process Loss Qty,根据工序卡的工艺损耗量重置生产损耗量, +The Sales Person is linked with {0},该销售员与{0}相关联, +The Serial No at Row #{0}: {1} is not available in warehouse {2}.,第{0}行的序列号{1}在仓库{2}中不可用, +The Serial and Batch Bundle {0} is not valid for this transaction. The 'Type of Transaction' should be 'Outward' instead of 'Inward' in Serial and Batch Bundle {0},序列号批次组合{0}对此交易无效。在序列号批次组合{0}中,'交易类型'应为'出库'而非'入库', +The Work Order is mandatory for Disassembly Order,拆卸订单必须关联工单, +The allocated amount is greater than the outstanding amount of Payment Request {0},分配金额超过付款申请{0}的未清金额, +The currency of invoice {} ({}) is different from the currency of this dunning ({}).,发票{}({})的币种与本催款单({})币种不一致, +The default BOM for that item will be fetched by the system. You can also change the BOM.,系统将获取该物料的默认BOM,也可手动修改, +The field {0} in row {1} is not set,第{1}行的字段{0}未设置, +"The following Items, having Putaway Rules, could not be accomodated:",以下存在上架规则的物料无法安置:, +The following assets have failed to automatically post depreciation entries: {0},以下资产自动计提折旧失败:{0}, +"The following batches are expired, please restock them:
{0}",以下批次已过期,请补货:
{0}, +The following invalid Pricing Rules are deleted:,以下无效定价规则已被删除:, +The items {0} and {1} are present in the following {2} :,物料{0}和{1}存在于以下{2}中:, +The operation {0} can not add multiple times,操作{0}不能重复添加, +The operation {0} can not be the sub operation,操作{0}不能作为子工序, +The original invoice should be consolidated before or along with the return invoice.,原始发票应在退货发票前或同时合并, +The percentage you are allowed to pick more items in the pick list than the ordered quantity.,允许拣货数量超出订单数量的百分比, +"The percentage you are allowed to transfer more against the quantity ordered. For example, if you have ordered 100 units, and your Allowance is 10%, then you are allowed transfer 110 units.",允许转移数量超出订单数量的百分比。例如:订单100件,容差10%,最多可转移110件, +The reserved stock will be released when you update items. Are you certain you wish to proceed?,更新物料时将释放预留库存。确定继续?, +The reserved stock will be released. Are you certain you wish to proceed?,将释放预留库存。确定继续?, +The serial and batch bundle {0} not linked to {1} {2},序列号批次组合{0}未链接到{1}{2}, +"The stock for the item {0} in the {1} warehouse was negative on the {2}. You should create a positive entry {3} before the date {4} and time {5} to post the correct valuation rate. For more details, please read the documentation.",物料{0}在仓库{1}的库存于{2}出现负数。应在{4} {5}前创建正数分录{3}以记录正确计价。详情参阅文档, +"The stock has been reserved for the following Items and Warehouses, un-reserve the same to {0} the Stock Reconciliation:

{1}",以下物料和仓库的库存已被预留,请取消预留以{0}库存对账:

{1}, +"The sync has started in the background, please check the {0} list for new records.",同步已在后台启动,请查看{0}列表获取新记录, +The task has been enqueued as a background job.,任务已加入后台队列, +"The task has been enqueued as a background job. In case there is any issue on processing in background, the system will add a comment about the error on this Stock Reconciliation and revert to the Submitted stage",任务已加入后台队列。若后台处理出错,系统将在库存对账添加错误注释并恢复为已提交状态, +The total Issue / Transfer quantity {0} in Material Request {1} cannot be greater than allowed requested quantity {2} for Item {3},物料申请{1}中物料{3}的发放/转移数量{0}不能超过允许申请量{2}, +The total Issue / Transfer quantity {0} in Material Request {1} cannot be greater than requested quantity {2} for Item {3},物料申请{1}中物料{3}的发放/转移数量{0}不能超过申请量{2}, +The uploaded file does not match the selected Code List.,上传文件与所选代码表不匹配, +The user cannot submit the Serial and Batch Bundle manually,用户不能手动提交序列号批次组合, +"The users with this Role are allowed to create/modify a stock transaction, even though the transaction is frozen.",具有此角色的用户可在交易冻结时创建/修改库存交易, +The warehouse where you store finished Items before they are shipped.,成品发货前存储的仓库, +"The warehouse where you store your raw materials. Each required item can have a separate source warehouse. Group warehouse also can be selected as source warehouse. On submission of the Work Order, the raw materials will be reserved in these warehouses for production usage.",原材料存储仓库。每个物料可指定不同源仓库,也可选择组仓库。提交工单时将预留原材料, +The warehouse where your Items will be transferred when you begin production. Group Warehouse can also be selected as a Work in Progress warehouse.,生产开始时物料转移的目标仓库,可选择组仓库作为在制品仓库, +The {0} {1} is used to calculate the valuation cost for the finished good {2}.,{0}{1}用于计算成品{2}的计价成本, +There are ledger entries against this account. Changing {0} to non-{1} in live system will cause incorrect output in 'Accounts {2}' report,存在关联总账分录。在生产系统将{0}改为非{1}将导致'{2}'报表错误, +There are no Failed transactions,无失败交易, +There are no active Fiscal Years for which Demo Data can be generated.,没有可生成演示数据的有效会计年度, +There are no slots available on this date,该日期无可用时段, +There are only {0} asset created or linked to {1}. Please create or link {2} Assets with respective document.,仅创建或链接了{0}个资产到{1}。请创建或链接{2}个对应单据的资产, +"There are two options to maintain valuation of stock. FIFO (first in - first out) and Moving Average. To understand this topic in detail please visit Item Valuation, FIFO and Moving Average.",库存计价有两种方法:先进先出(FIFO)和移动平均。详情请参阅物料计价方法, +There aren't any item variants for the selected item,所选物料无变体, +There is already a valid Lower Deduction Certificate {0} for Supplier {1} against category {2} for this time period.,供应商{1}在本期间已存在有效的{2}类别低税率证明{0}, +There is already an active Subcontracting BOM {0} for the Finished Good {1}.,成品{1}已存在有效委外BOM{0}, +There must be atleast 1 Finished Good in this Stock Entry,本库存转移单必须至少包含一个成品, +There was an error creating Bank Account while linking with Plaid.,链接Plaid时创建银行账户出错, +There was an error syncing transactions.,同步交易时出错, +There was an error updating Bank Account {} while linking with Plaid.,链接Plaid时更新银行账户{}出错, +There was an issue connecting to Plaid's authentication server. Check browser console for more information,连接Plaid认证服务器异常。查看浏览器控制台获取详细信息, +There were issues unlinking payment entry {0}.,解关联付款条目{0}时发生问题, +This Account has '0' balance in either Base Currency or Account Currency,该科目在本位币或科目币种下余额为0, +This PO has been fully subcontracted.,该采购订单已全部委外, +This field is used to set the 'Customer'.,用于设置'客户', +This filter will be applied to Journal Entry.,此筛选器将应用于日记账分录, +This is a Template BOM and will be used to make the work order for {0} of the item {1},此为模板BOM,将用于生成物料{1}{0}数量的工单, +This is a preview of the email to be sent. A PDF of the document will automatically be attached with the email.,邮件预览。单据PDF将自动作为附件, +This is considered dangerous from accounting point of view.,从会计角度看此操作存在风险, +"This is enabled by default. If you want to plan materials for sub-assemblies of the Item you're manufacturing leave this enabled. If you plan and manufacture the sub-assemblies separately, you can disable this checkbox.",默认启用。如需为子装配件计划物料请保持启用。若单独计划生产子装配件,可取消勾选, +"This is for raw material Items that'll be used to create finished goods. If the Item is an additional service like 'washing' that'll be used in the BOM, keep this unchecked.",适用于用于生产成品的原材料。若物料是BOM中的附加服务(如'清洗'),请勿勾选, +This item filter has already been applied for the {0},该物料筛选器已应用于{0}, +This option can be checked to edit the 'Posting Date' and 'Posting Time' fields.,勾选此选项可编辑'过账日期'和'过账时间'字段, +This schedule was created when Asset {0} was adjusted through Asset Value Adjustment {1}.,此计划在资产{0}通过资产价值调整{1}调整时创建, +This schedule was created when Asset {0} was consumed through Asset Capitalization {1}.,此计划在资产{0}通过资产资本化{1}消耗时创建, +This schedule was created when Asset {0} was repaired through Asset Repair {1}.,此计划在资产{0}通过资产维修{1}修复时创建, +This schedule was created when Asset {0} was restored on Asset Capitalization {1}'s cancellation.,此计划在资产资本化{1}取消时恢复资产{0}时创建, +This schedule was created when Asset {0} was restored.,此计划在资产{0}恢复时创建, +This schedule was created when Asset {0} was returned through Sales Invoice {1}.,此计划在资产{0}通过销售发票{1}退回时创建, +This schedule was created when Asset {0} was scrapped.,此计划在资产{0}报废时创建, +This schedule was created when Asset {0} was sold through Sales Invoice {1}.,此计划在资产{0}通过销售发票{1}售出时创建, +This schedule was created when Asset {0} was updated after being split into new Asset {1}.,此计划在资产{0}拆分为新资产{1}后更新时创建, +This schedule was created when Asset {0}'s Asset Repair {1} was cancelled.,此计划在资产维修{1}取消时创建, +This schedule was created when Asset {0}'s Asset Value Adjustment {1} was cancelled.,此计划在资产价值调整{1}取消时创建, +This schedule was created when Asset {0}'s shifts were adjusted through Asset Shift Allocation {1}.,此计划在通过班次分配{1}调整资产{0}班次时创建, +This schedule was created when new Asset {0} was split from Asset {1}.,此计划在从资产{1}拆分出新资产{0}时创建, +"This table is used to set details about the 'Item', 'Qty', 'Basic Rate', etc.",用于设置'物料'、'数量'、'基本汇率'等详细信息, +This value shall be used when no matching Common Code for a record is found.,无匹配通用代码时使用此值, +This {} will be treated as material transfer.,此{}将被视为物料转移, +Threshold for Suggestion (In Percentage),建议阈值(百分比), +Time Taken to Deliver,交付耗时, +Time in mins,分钟内的时间, +Time in mins.,分钟内的时间。, +Time slot is not available,时间段不可用, +To Date is mandatory,截止日期是必填项, +To Delivery Date,至交货日期, +To Doctype,到文档类型, +To Due Date,到截止日期, +To Payment Date,至付款日期, +To Reference Date,到参考日期, +To add Operations tick the 'With Operations' checkbox.,要添加操作,请勾选“包含操作”复选框。, +To add subcontracted Item's raw materials if include exploded items is disabled.,如果禁用包含爆炸项,则添加分包项的原材料。, +To apply condition on parent field use parent.field_name and to apply condition on child table use doc.field_name. Here field_name could be based on the actual column name of the respective field.,要对父级字段设置条件,可以使用 parent.field_name,要对子表字段设置条件,可以使用 doc.field_name。 这里的 field_name 应该根据实际字段名称来填写。, +To be Delivered to Customer,交付给客户, +To cancel a {} you need to cancel the POS Closing Entry {}.,要取消 {},您需要先取消 POS 结账条目 {}。, +"To enable Capital Work in Progress Accounting,",要启用在建工程会计功能,, +To include non-stock items in the material request planning. i.e. Items for which 'Maintain Stock' checkbox is unticked.,将非库存物料纳入物料需求计划(即取消勾选'维护库存'的物料)。, +"To include sub-assembly costs and scrap items in Finished Goods on a work order without using a job card, when the 'Use Multi-Level BOM' option is enabled.",启用'多层级BOM'选项时,允许工单直接归集子装配件成本和废品到产成品,无需作业卡。, +To submit the invoice without purchase order please set {0} as {1} in {2},若要提交没有采购订单的发票,请在 {2}中将 {0} 设置为 {1}, +To submit the invoice without purchase receipt please set {0} as {1} in {2},若要提交没有购买收据的发票,请在 {2}中将 {0} 设置为 {1}, +"To use a different finance book, please uncheck 'Include Default FB Assets'",要使用不同的财务账簿,请取消选中“包括默认 FB 资产”, +"To use a different finance book, please uncheck 'Include Default FB Entries'",要使用不同的财务账簿,请取消选中“包括默认 FB 条目”, +Total Active Items,总活动物料数, +Total Allocations,分配总额, +Total Asset,总资产, +Total Asset Cost,总资产成本, +Total Billing Hours,总计费小时数, +Total Contribution Amount Against Invoices: {0},发票关联总贡献金额:{0}, +Total Contribution Amount Against Orders: {0},订单关联总贡献金额:{0}, +Total Equity,所有者权益合计, +Total Incoming Bills,应收票据总额, +Total Incoming Payment,应收付款总额, +Total Incoming Value (Receipt),入库总值(收据), +Total Interest,总利息, +Total Issues,问题总数, +Total Items,物料总数, +Total Liability,总负债, +Total Number of Booked Depreciations ,已计提折旧总数, +Total Operation Time,总作业时间, +Total Other Charges,其他费用合计, +Total Outgoing Bills,应付票据总额, +Total Outgoing Payment,应付付款总额, +Total Outgoing Value (Consumption),出库总值(消耗), +Total Picked Quantity {0} is more than ordered qty {1}. You can set the Over Picking Allowance in Stock Settings.,已拣货数量{0}超过订单数量{1}。可在库存设置中设置超拣许可量, +Total Purchase Amount,采购总金额, +Total Purchase Cost has been updated,采购总成本已更新, +Total Repair Cost,维修总成本, +Total Reposting Count,重新过账总次数, +Total Sales Amount,销售总金额, +Total Stock Value,库存总价值, +Total Supplied Qty,已供应总量, +Total Time (in Mins),总时间(分钟), +Total Value,总价值, +Total Value Difference (Incoming - Outgoing),价值差额合计(入库-出库), +Total Views,总浏览次数, +Total Warehouses,仓库总数, +Total Weight (kg),总重量(千克), +Total percentage against cost centers should be 100,成本中心分配比例总和应为100%, +Tracking Status,跟踪状态, +Tracking Status Info,跟踪状态信息, +Tracking URL,跟踪链接, +Transaction Deletion Document: {0} is running for this Company. {1},正在为该公司执行交易删除文档:{0}。{1}, +Transaction Deletion Record,交易删除记录, +Transaction Deletion Record Details,交易删除记录明细, +Transaction Deletion Record Item,交易删除记录项, +Transaction Exchange Rate,交易汇率, +Transaction Settings,交易设置, +Transaction currency: {0} cannot be different from Bank Account({1}) currency: {2},交易货币{0}必须与银行账户{1}的货币{2}一致, +Transactions against the Company already exist! Chart of Accounts can only be imported for a Company with no transactions.,公司已有交易记录!仅允许无交易记录的公司导入会计科目表, +Transfer Asset,资产调拨, +Transfer From Warehouses,调出仓库, +Transferring cannot be done to an Employee. Please enter location where Asset {0} has to be transferred,无法调拨至员工。请输入资产{0}的调拨位置, +Transit,在途, +Transit Entry,在途分录, +Truncates 'Remarks' column to set character length,截断'备注'列以设置字符长度, +Type Of Call,通话类型, +Type of Transaction,交易类型, +UAE VAT 201,阿联酋增值税201, +UAE VAT Account,阿联酋增值税科目, +UAE VAT Accounts,阿联酋增值税科目, +UAE VAT Settings,阿联酋增值税设置, +UOM conversion factor required for UOM: {0} in Item: {1},物料{1}的计量单位{0}需要换算系数, +UPC,通用产品代码, +UnReconcile,取消对账, +Unable to find the time slot in the next {0} days for the operation {1}. Please increase the 'Capacity Planning For (Days)' in the {2}.,未来{0}天内未找到工序{1}的可用时段,请在{2}中增加'产能计划周期(天)', +Unable to find variable:,未找到变量:, +Unassigned Qty,未分配数量, +"Under Working Hours table, you can add start and end times for a Workstation. For example, a Workstation may be active from 9 am to 1 pm, then 2 pm to 5 pm. You can also specify the working hours based on shifts. While scheduling a Work Order, the system will check for the availability of the Workstation based on the working hours specified.",在工作时间表中,可为工作站设置起止时间。例如,某工作站可能从上午9点到下午1点,下午2点到5点运行。也可按班次设置工作时间。系统在排产工单时会根据设置的工作时间检查工作站可用性, +Unit of Measure (UOM),计量单位(UOM), +Unlinked,已解除关联, +Unqualified,不合格, +Unrealized Profit / Loss Account,未实现损益科目, +Unrealized Profit / Loss account for intra-company transfers,公司内部调拨未实现损益科目, +Unrealized Profit/Loss account for intra-company transfers,公司内部调拨未实现损益科目, +Unreconcile Payment,取消付款对账, +Unreconcile Payment Entries,取消付款分录对账, +Unreconcile Transaction,取消交易对账, +Unreconciled Amount,未对账金额, +Unreconciled Entries,未对账分录, +Unreserve,取消预留, +Unreserve Stock,取消库存预留, +Unreserving Stock...,正在取消库存预留..., +Unset Matched Payment Request,取消匹配付款申请, +Up,上, +Update Billed Amount in Delivery Note,更新送货单中的已计费金额, +Update Billed Amount in Purchase Order,更新采购订单中的已计费金额, +Update Billed Amount in Purchase Receipt,更新采购收据中的已计费金额, +Update Existing Price List Rate,更新现有价目表价格, +Update Existing Records,更新现有记录, +Update Outstanding for Self,更新自身未清金额, +Update Rate as per Last Purchase,按最后采购价更新价格, +Update Total Purchase Cost,更新采购总成本, +Update frequency of Project,更新项目频率, +Update stock must be enabled for the purchase invoice {0},采购发票{0}必须启用库存更新, +Update the modified timestamp on new communications received in Lead & Opportunity.,更新线索与商机中收到新沟通的修改时间戳, +Update timestamp on new communication,新沟通时更新时间戳, +Updated via 'Time Log' (In Minutes),通过'工时记录'更新(分钟), +Updating Work Order status,正在更新工单状态, +"Updating {0} of {1}, {2}",正在更新{1}的{0},{2}, +Upload Bank Statement,上传银行对账单, +Use 'Repost in background' button to trigger background job. Job can only be triggered when document is in Queued or Failed status.,使用'后台重新过账'按钮触发后台任务。仅当单据处于排队或失败状态时可触发, +Use Batch-wise Valuation,使用批次计价, +Use Company Default Round Off Cost Center,使用公司默认的舍入成本中心, +Use Company default Cost Center for Round off,使用公司默认的成本中心进行舍入, +Use HTTP Protocol,使用HTTP协议, +Use Item based reposting,使用基于物料的重新过账, +Use Serial / Batch Fields,使用序列号/批次字段, +Use Serial No / Batch Fields,使用序列号/批次字段, +Use Transaction Date Exchange Rate,使用交易日汇率, +User {0}: Removed Employee Self Service role as there is no mapped employee.,用户{0}:移除员工自助服务角色,因无对应员工, +User {0}: Removed Employee role as there is no mapped employee.,用户{0}:移除员工角色,因无对应员工, +Users can enable the checkbox If they want to adjust the incoming rate (set using purchase receipt) based on the purchase invoice rate.,用户可勾选此复选框以根据采购发票价格调整入库价格(通过采购收据设置), +Users with this role are allowed to over bill above the allowance percentage,此角色用户允许超规定比例开票, +Users with this role are allowed to over deliver/receive against orders above the allowance percentage,此角色用户允许超规定比例交付/接收订单, +Using negative stock disables FIFO/Moving average valuation when inventory is negative.,启用负库存时,若库存为负将禁用先进先出/移动平均计价法, +VAT Accounts,增值税科目, +VAT Amount (AED),增值税金额(迪拉姆), +VAT Audit Report,增值税审计报告, +VAT on Expenses and All Other Inputs,费用及所有其他投入的增值税, +VAT on Sales and All Other Outputs,销售及所有其他产出的增值税, +Valid From must be after {0} as last GL Entry against the cost center {1} posted on this date,生效日期必须在{0}之后,因成本中心{1}的最后总账分录发布于该日期, +Validate Components and Quantities Per BOM,验证BOM组件及数量, +Validate Negative Stock,验证负库存, +Validate Pricing Rule,验证定价规则, +Validate Stock on Save,保存时验证库存, +Valuation (I - K),计价(I-K), +Valuation Field Type,计价字段类型, +Valuation Rate (In / Out),计价单价(进/出), +Valuation rate for customer provided items has been set to zero.,客户提供物料的计价单价已设为零, +Valuation rate for the item as per Sales Invoice (Only for Internal Transfers),按销售发票的物料计价单价(仅限内部调拨), +Value (G - D),价值(G-D), +Value ({0}),值({0}), +Value Based Inspection,基于价值的检验, +Value Change,价值变动, +Value Details,价值明细, +Value as on,截至价值, +Value of Goods,货物价值, +Value of New Capitalized Asset,新增资本化资产价值, +Value of New Purchase,新购价值, +Value of Scrapped Asset,报废资产价值, +Value of Sold Asset,已售资产价值, +Value of goods cannot be 0,货物价值不可为0, +Verification failed please check the link,验证失败,请检查链接, +Via Landed Cost Voucher,通过到岸成本凭证, +View BOM Update Log,查看物料清单更新日志, +View Exchange Gain/Loss Journals,查看汇兑损益日记账, +View General Ledger,查看总分类账, +View Ledgers,查看分类账列表, +Visits,访问次数, +Voice Call Settings,语音通话设置, +Voucher,凭证, +Voucher Name,凭证名称, +Voucher No is mandatory,凭证编号必填, +Voucher Qty,凭证数量, +Voucher Subtype,凭证子类型, +Voucher {0} is over-allocated by {1},凭证{0}超额分配{1}, +Voucher-wise Balance,按凭证余额, +"WARNING: Exotel app has been separated from ERPNext, please install the app to continue using Exotel integration.",警告:Exotel应用已从ERPNext分离,请安装该应用以继续使用Exotel集成, +WIP Composite Asset,在制组合资产, +Waiting for payment...,等待付款中..., +Warehouse Capacity for Item '{0}' must be greater than the existing stock level of {1} {2}.,物料“{0}”的仓库容量必须大于现有库存量{1}{2}, +Warehouse Details,仓库详细信息, +Warehouse Disabled?,仓库是否禁用?, +Warehouse Settings,仓库设置, +Warehouse Wise Stock Balance,分仓库库存余额, +Warehouse wise Stock Value,分仓库库存价值, +Warehouse {0} does not belong to Company {1}.,仓库{0}不属于公司{1}, +"Warehouse {0} is not linked to any account, please mention the account in the warehouse record or set default inventory account in company {1}.",仓库{0}未关联会计科目,请在仓库记录中指定科目或为公司{1}设置默认库存科目, +Warehouse's Stock Value has already been booked in the following accounts:,仓库库存价值已计入以下科目:, +Warning - Row {0}: Billing Hours are more than Actual Hours,警告 - 第{0}行:计费工时超过实际工时, +Warning on Negative Stock,负库存预警, +Warning!,警告!, +Watch Video,观看视频, +Website Script,网站脚本, +Website Theme,网站主题, +Week {0} {1},第{0}周 {1}, +Weekly Time to send,每周发送时间, +Weight (kg),重量(公斤), +"When a parent warehouse is chosen, the system conducts stock checks against the associated child warehouses",选择父仓库时,系统会检查关联子仓库的库存, +"When creating an Item, entering a value for this field will automatically create an Item Price at the backend.",创建物料时填写此字段值,将自动在后台创建物料价格, +"While making Purchase Invoice from Purchase Order, use Exchange Rate on Invoice's transaction date rather than inheriting it from Purchase Order. Only applies for Purchase Invoice.",根据采购订单生成采购发票时,使用发票交易日的汇率而非继承采购订单汇率(仅适用于采购发票), +Width (cm),宽度(厘米), +With Period Closing Entry For Opening Balances,含期初余额的期间结账分录, +Withdrawal,提款, +Work Order / Subcontract PO,生产工单/委外采购订单, +Work Order Consumed Materials,生产工单耗用物料, +Workflow,工作流, +Workflow Action,工作流操作, +Workflow State,工作流状态, +Workstation Dashboard,工作站看板, +Workstation Status,工作站状态, +Workstation Type,工作站类型, +Workstations,工作站列表, +Write Off Limit,冲销限额, +Wrong Company,错误公司, +Wrong Template,错误模板, +You are importing data for the code list:,您正在导入代码列表的数据:, +You are not authorized to make/edit Stock Transactions for Item {0} under warehouse {1} before this time.,您此时无权在仓库{1}下为物料{0}创建/编辑库存交易, +You are picking more than required quantity for the item {0}. Check if there is any other pick list created for the sales order {1}.,您正在为物料{0}提货超过所需数量,请检查销售订单{1}是否已创建其他拣货单, +You can add the original invoice {} manually to proceed.,您可以手动添加原始发票{}以继续, +"You can set it as a machine name or operation type. For example, stiching machine 12",可设置为机器名称或工序类型,例如:缝纫机12号, +You can't make any changes to Job Card since Work Order is closed.,生产工单已关闭,无法修改作业卡, +You can't process the serial number {0} as it has already been used in the SABB {1}. {2} if you want to inward same serial number multiple times then enabled 'Allow existing Serial No to be Manufactured/Received again' in the {3},无法处理序列号{0},因其已在序列和批次凭证{1}中使用。如需多次入库相同序列号,请在{3}启用'允许重复生产/接收现有序列号', +You can't redeem Loyalty Points having more value than the Rounded Total.,不能兑换超过四舍五入总金额的忠诚度积分, +You cannot change the rate if BOM is mentioned against any Item.,若物料关联了物料清单,则不可修改价格, +You cannot create a {0} within the closed Accounting Period {1},在已关闭的会计期间{1}内无法创建{0}, +You cannot create/amend any accounting entries till this date.,在此日期之前无法创建/修改会计分录, +You cannot repost item valuation before {},在{}之前无法重新过账物料计价, +You cannot {0} this document because another Period Closing Entry {1} exists after {2},无法{0}此单据,因为存在后续的期间结账分录{1}在{2}之后, +You have entered a duplicate Delivery Note on Row,您在第行输入了重复的送货单, +You haven't created a {0} yet,您尚未创建{0}, +You need to cancel POS Closing Entry {} to be able to cancel this document.,需先取消POS结算单{}才能取消此单据, +Your Name (required),您的姓名(必填), +Your email has been verified and your appointment has been scheduled,您的邮箱已验证,预约已安排, +Zero Balance,零余额, +Zero Rated,零税率, +Zero quantity,零数量, +`Allow Negative rates for Items`,`允许物料负单价`, +as Code,作为代码, +as Description,作为描述, +as Title,作为标题, +as a percentage of finished item quantity,按完工数量百分比, +at,于, +by {},由{}, +dated {0},日期为{0}, +description,描述, +discount applied,已应用折扣, +doc_type,文档类型, +doctype,文档类型, +exchangerate.host,汇率服务商, +fieldname,字段名称, +frankfurter.app,法兰克福应用, +is already,已被, +must be between 0 and 100,必须在0到100之间, +or its descendants,或其子节点, +out of 5,满分5分, +payments app is not installed. Please install it from {0} or {1},未安装支付应用,请从{0}或{1}安装, +payments app is not installed. Please install it from {} or {},未安装支付应用,请从{}或{}安装, +performing either one below:,执行以下任一操作:, +product bundle item row's name in sales order. Also indicates that picked item is to be used for a product bundle,销售订单中产品套件行的名称,表示拣选的物料将用于产品套件, +quotation_item,报价单条目, +ratings,评分, +subscription is already cancelled.,订阅已取消, +target_ref_field,目标参考字段, +temporary name,临时名称, +to unallocate the amount of this Return Invoice before cancelling it.,在取消前需先解除此退货发票的金额分配, +variance,差异, +via BOM Update Tool,通过物料清单更新工具, +will be,将会, +{0} {1} has submitted Assets. Remove Item {2} from table to continue.,{0}{1}已提交资产,请从表中移除物料{2}以继续, +{0} Account not found against Customer {1}.,客户{1}未找到{0}科目, +{0} Account: {1} ({2}) must be in either customer billing currency: {3} or Company default currency: {4},{0}科目:{1}({2})必须使用客户结算货币{3}或公司默认货币{4}, +{0} Budget for Account {1} against {2} {3} is {4}. It {5} exceed by {6},{0}预算:科目{1}针对{2}{3}的预算为{4},{5}超出{6}, +{0} Transaction(s) Reconciled,{0}笔交易已对账, +{0} account is not of type {1},{0}科目类型不是{1}, +{0} account not found while submitting purchase receipt,提交采购收据时未找到{0}科目, +{0} and {1},{0}和{1}, +{0} cannot be used as a Main Cost Center because it has been used as child in Cost Center Allocation {1},{0}不能作为主成本中心,因其已被用作成本中心分配{1}的子项, +{0} cannot be zero,{0}不能为零, +{0} currency must be same as company's default currency. Please select another account.,{0}货币必须与公司默认货币一致,请选择其他账户, +{0} entered twice {1} in Item Taxes,{0}在物料税{1}中重复输入, +{0} has Payment Term based allocation enabled. Select a Payment Term for Row #{1} in Payment References section,{0}已启用基于付款条件的分配,请在付款参考部分为第#{1}行选择付款条件, +{0} is a mandatory Accounting Dimension.
Please set a value for {0} in Accounting Dimensions section.,{0}是必填会计维度,请在会计维度部分设置{0}的值, +{0} is a mandatory field.,{0}是必填字段, +{0} is added multiple times on rows: {1},{0}在以下行被多次添加:{1}, +{0} is already running for {1},{0}已在{1}运行, +{0} is mandatory for account {1},科目{1}的{0}必填, +{0} is not running. Cannot trigger events for this Document,{0} 未运行。无法触发该文档的事件, +{0} items lost during process.,流程中丢失{0}件物料。, +{0} qty of Item {1} is being received into Warehouse {2} with capacity {3}.,正在将物料{1}的{0}数量接收到容量为{3}的仓库{2}, +"{0} units are reserved for Item {1} in Warehouse {2}, please un-reserve the same to {3} the Stock Reconciliation.",仓库{2}中物料{1}已预留{0}单位,请取消预留以{3}库存对账, +{0} units of Item {1} is not available in any of the warehouses.,物料{1}在任何仓库中均无{0}单位的可用库存, +{0} units of Item {1} is picked in another Pick List.,物料{1}的{0}单位已在其他拣货单中被拣选, +{0} units of {1} are required in {2} with the inventory dimension: {3} ({4}) on {5} {6} for {7} to complete the transaction.,需在{2}中准备{1}的{0}单位,库存维度:{3}({4}),日期{5}{6},用于{7}以完成交易, +{0} units of {1} needed in {2} on {3} {4} to complete this transaction.,需在{2}的{3}{4}准备{1}的{0}单位以完成本交易, +{0} will be given as discount.,{0}将作为折扣发放, +{0} {1},{0}{1}, +{0} {1} Manually,手动{0}{1}, +{0} {1} Partially Reconciled,{0}{1}部分对账, +"{0} {1} cannot be updated. If you need to make changes, we recommend canceling the existing entry and creating a new one.",无法更新{0}{1}。如需修改,建议取消现有凭证并新建, +{0} {1} has already been fully paid.,{0}{1}已全额支付, +{0} {1} has already been partly paid. Please use the 'Get Outstanding Invoice' or the 'Get Outstanding Orders' button to get the latest outstanding amounts.,{0}{1}已部分支付。请使用'获取未清发票'或'获取未清订单'按钮查看最新未结金额, +{0} {1} is allocated twice in this Bank Transaction,银行交易中重复分配了{0}{1}, +{0} {1} is already linked to Common Code {2}.,{0}{1}已关联至通用代码{2}, +{0} {1} is not in any active Fiscal Year,{0}{1}不在任何有效会计年度内, +{0} {1} is on hold,{0}{1}已暂挂, +{0} {1} not allowed to be reposted. Modify {2} to enable reposting.,不允许重新过账{0}{1}。请修改{2}以启用重过账功能, +{0} {1} via CSV File,通过CSV文件{0}{1}, +{0} {1}: Account {2} is a Group Account and group accounts cannot be used in transactions,{0}{1}: 科目{2}为组科目,不可用于交易凭证, +{0} {1}: Cost Center is required for 'Profit and Loss' account {2}.,{0}{1}: 损益类科目{2}必须指定成本中心, +{0} {1}: Cost Center {2} is a group cost center and group cost centers cannot be used in transactions,{0}{1}: 成本中心{2}为组成本中心,不可用于交易凭证, +{0}% of total invoice value will be given as discount.,将按发票总额的{0}%作为折扣发放, +{0}'s {1} cannot be after {2}'s Expected End Date.,{0}的{1}不得晚于{2}的预计结束日期, +{0}: {1} does not belong to the Company: {2},{0}: {1}不属于公司{2}, +{item_name}'s Sample Size ({sample_size}) cannot be greater than the Accepted Quantity ({accepted_quantity}),{item_name}的样本量({sample_size})不得超过验收数量({accepted_quantity}), +{} Available,{} 可用, +{} To Deliver,{} 待交付, +{} To Receive,{} 待接收, +{} Assigned,{} 已分配, +{} Available,{} 可用, +{} Open,{} 未结, +{} Pending,{} 待处理, +{} To Bill,{} 待开票, +{} is a child company.,{}是子公司, +{} {} is already linked with another {},{} {}已关联其他{}, +{} {} is already linked with {} {},{} {}已关联{} {}, diff --git a/erpnext/utilities/bulk_transaction.py b/erpnext/utilities/bulk_transaction.py index 4319fa7d6ea..51447e0591b 100644 --- a/erpnext/utilities/bulk_transaction.py +++ b/erpnext/utilities/bulk_transaction.py @@ -8,6 +8,9 @@ from frappe.utils import get_link_to_form, today @frappe.whitelist() def transaction_processing(data, from_doctype, to_doctype): + frappe.has_permission(from_doctype, "read", throw=True) + frappe.has_permission(to_doctype, "create", throw=True) + if isinstance(data, str): deserialized_data = json.loads(data) else: @@ -137,6 +140,11 @@ def task(doc_name, from_doctype, to_doctype): }, "Purchase Receipt": {"Purchase Invoice": purchase_receipt.make_purchase_invoice}, } + + hooks = frappe.get_hooks("bulk_transaction_task_mapper") + for hook in hooks: + mapper.update(frappe.get_attr(hook)()) + frappe.flags.bulk_transaction = True if to_doctype in ["Payment Entry"]: obj = mapper[from_doctype][to_doctype](from_doctype, doc_name) diff --git a/erpnext/utilities/transaction_base.py b/erpnext/utilities/transaction_base.py index 6fab5380c38..2e4bdac6aab 100644 --- a/erpnext/utilities/transaction_base.py +++ b/erpnext/utilities/transaction_base.py @@ -257,11 +257,11 @@ def validate_uom_is_integer(doc, uom_field, qty_fields, child_dt=None): if isinstance(qty_fields, str): qty_fields = [qty_fields] - distinct_uoms = list(set(d.get(uom_field) for d in doc.get_all_children())) - integer_uoms = list( - filter( - lambda uom: frappe.db.get_value("UOM", uom, "must_be_whole_number", cache=True) or None, - distinct_uoms, + distinct_uoms = tuple(set(uom for uom in (d.get(uom_field) for d in doc.get_all_children()) if uom)) + integer_uoms = set( + d[0] + for d in frappe.db.get_values( + "UOM", (("name", "in", distinct_uoms), ("must_be_whole_number", "=", 1)), cache=True ) ) diff --git a/erpnext/utilities/web_form/addresses/addresses.json b/erpnext/utilities/web_form/addresses/addresses.json index 4e2d8e36c2c..38b73926985 100644 --- a/erpnext/utilities/web_form/addresses/addresses.json +++ b/erpnext/utilities/web_form/addresses/addresses.json @@ -84,6 +84,18 @@ "reqd": 0, "show_in_filter": 0 }, + { + "allow_read_on_all_link_options": 0, + "fieldname": "pincode", + "fieldtype": "Data", + "hidden": 0, + "label": "Postal Code", + "max_length": 0, + "max_value": 0, + "read_only": 0, + "reqd": 0, + "show_in_filter": 0 + }, { "allow_read_on_all_link_options": 0, "fieldname": "city", @@ -108,18 +120,7 @@ "reqd": 0, "show_in_filter": 0 }, - { - "allow_read_on_all_link_options": 0, - "fieldname": "pincode", - "fieldtype": "Data", - "hidden": 0, - "label": "Postal Code", - "max_length": 0, - "max_value": 0, - "read_only": 0, - "reqd": 0, - "show_in_filter": 0 - }, + { "allow_read_on_all_link_options": 1, "fieldname": "country", diff --git a/package.json b/package.json index 4e686f7ca74..509fe275e05 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "type": "git", "url": "git+https://github.com/frappe/erpnext.git" }, - "homepage": "https://erpnext.com", + "homepage": "https://frappe.io/erpnext", "author": "Frappe Technologies Pvt. Ltd.", "license": "GPL-3.0", "bugs": { diff --git a/pyproject.toml b/pyproject.toml index aaac05d7ed0..e122b2d176c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,7 +29,7 @@ requires = ["flit_core >=3.4,<4"] build-backend = "flit_core.buildapi" [tool.bench.frappe-dependencies] -frappe = ">=15.10.0,<16.0.0" +frappe = ">=15.40.4,<16.0.0" [tool.ruff] line-length = 110 @@ -70,6 +70,6 @@ docstring-code-format = true [project.urls] -Homepage = "https://erpnext.com/" +Homepage = "https://frappe.io/erpnext" Repository = "https://github.com/frappe/erpnext.git" "Bug Reports" = "https://github.com/frappe/erpnext/issues"