diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/fr_plan2025_comptable_general_avec_code.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/fr_plan2025_comptable_general_avec_code.json new file mode 100644 index 00000000000..4d7f879ddc7 --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/fr_plan2025_comptable_general_avec_code.json @@ -0,0 +1,2473 @@ +{ + "country_code": "fr", + "name": "France - Plan Comptable General 2025 avec code", + "tree": { + "1-Comptes de capitaux": { + "root_type": "Equity", + "10-Capital et r\u00e9serves": { + "101-Capital": { + "Capital souscrit - non appel\u00e9": { + "account_number": "1011" + }, + "Capital souscrit - appel\u00e9, non vers\u00e9": { + "account_number": "1012" + }, + "1013-Capital souscrit - appel\u00e9, vers\u00e9": { + "Capital non amorti": { + "account_number": "10131" + }, + "Capital amorti": { + "account_number": "10132" + } + }, + "Capital souscrit soumis \u00e0 des r\u00e9glementations particuli\u00e8res": { + "account_number": "1018" + } + }, + "Fonds fiduciaires": { + "account_number": "102" + }, + "104-Primes li\u00e9es au capital": { + "Primes d'\u00e9mission": { + "account_number": "1041" + }, + "Primes de fusion": { + "account_number": "1042" + }, + "Primes d'apport": { + "account_number": "1043" + }, + "Primes de conversion d'obligations en actions": { + "account_number": "1044" + }, + "Bons de souscription d'actions": { + "account_number": "1045" + } + }, + "\u00c9carts de r\u00e9\u00e9valuation": { + "account_number": "105" + }, + "106-R\u00e9serves": { + "R\u00e9serve l\u00e9gale": { + "account_number": "1061" + }, + "R\u00e9serves indisponibles": { + "account_number": "1062" + }, + "R\u00e9serves statutaires ou contractuelles": { + "account_number": "1063" + }, + "R\u00e9serves r\u00e9glement\u00e9es": { + "account_number": "1064" + }, + "Autres r\u00e9serves": { + "account_number": "1068" + } + }, + "\u00c9cart d'\u00e9quivalence": { + "account_number": "107" + }, + "Compte de l'exploitant": { + "account_number": "108" + }, + "Actionnaires : capital souscrit - non appel\u00e9": { + "account_number": "109" + } + }, + "11-Report \u00e0 nouveau": { + "Report \u00e0 nouveau - solde cr\u00e9diteur": { + "account_number": "110" + }, + "Report \u00e0 nouveau - solde d\u00e9biteur": { + "account_number": "119" + } + }, + "12-R\u00e9sultat de l'exercice": { + "120-R\u00e9sultat de l'exercice - b\u00e9n\u00e9fice": { + "Acomptes sur dividendes": { + "account_number": "1209" + } + }, + "R\u00e9sultat de l'exercice - perte": { + "account_number": "129" + } + + }, + "13-Subventions d'investissement": { + "Subventions d'investissement octroy\u00e9es": { + "account_number": "131" + }, + "Subventions d'investissement inscrites au compte de r\u00e9sultat": { + "account_number": "139" + } + }, + "14-Provisions r\u00e9glement\u00e9es": { + "Provisions r\u00e9glement\u00e9es pour hausse de prix": { + "account_number": "143" + }, + "Amortissements d\u00e9rogatoires": { + "account_number": "145" + }, + "Autres provisions r\u00e9glement\u00e9es": { + "account_number": "148" + } + }, + "15-Provisions": { + "151-Provisions pour risques": { + "Provisions pour litiges": { + "account_number": "1511" + }, + "Provisions pour garanties donn\u00e9es aux clients": { + "account_number": "1512" + }, + "Provisions pour amendes et p\u00e9nalit\u00e9s": { + "account_number": "1514" + }, + "Provisions pour pertes de change": { + "account_number": "1515" + }, + "Provisions pour pertes sur contrats": { + "account_number": "1516" + }, + "Autres provisions pour risques": { + "account_number": "1518" + } + }, + "152-Provisions pour charges": { + "Provisions pour pensions et obligations similaires": { + "account_number": "1521" + }, + "Provisions pour restructurations": { + "account_number": "1522" + }, + "Provisions pour imp\u00f4ts": { + "account_number": "1523" + }, + "Provisions pour renouvellement des immobilisations - entreprises concessionnaires": { + "account_number": "1524" + }, + "Provisions pour gros entretien ou grandes r\u00e9visions": { + "account_number": "1525" + }, + "Provisions pour remise en \u00e9tat": { + "account_number": "1526" + }, + "Autres provisions pour charges": { + "account_number": "1527" + } + } + }, + "16-Emprunts et dettes assimil\u00e9es": { + "161-Emprunts obligataires convertibles": { + "Int\u00e9r\u00eats courus sur emprunts obligataires convertibles": { + "account_number": "1618" + } + }, + "Obligations repr\u00e9sentatives de passifs nets remis en fiducie": { + "account_number": "162" + }, + "163-Autres emprunts obligataires": { + "Int\u00e9r\u00eats courus sur autres emprunts obligataires": { + "account_number": "1638" + } + }, + "164-Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "Int\u00e9r\u00eats courus sur emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "account_number": "1648" + } + }, + "165-D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "D\u00e9p\u00f4ts": { + "account_number": "1651" + }, + "Cautionnements": { + "account_number": "1655" + }, + "Int\u00e9r\u00eats courus sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "account_number": "1658" + } + }, + "166-Participation des salari\u00e9s aux r\u00e9sultats": { + "Comptes bloqu\u00e9s": { + "account_number": "1661" + }, + "Fonds de participation": { + "account_number": "1662" + }, + "Int\u00e9r\u00eats courus sur participation des salari\u00e9s aux r\u00e9sultats": { + "account_number": "1668" + } + }, + "167-Emprunts et dettes assortis de conditions particuli\u00e8res": { + "1671-\u00c9missions de titres participatifs": { + "Int\u00e9r\u00eats courus sur titres participatifs": { + "account_number": "16718" + } + }, + "1674-Avances conditionn\u00e9es de l'\u00c9tat": { + "Int\u00e9r\u00eats courus sur avances conditionn\u00e9es": { + "account_number": "16748" + } + }, + "1675-Emprunts participatifs": { + "Int\u00e9r\u00eats courus sur emprunts participatifs": { + "account_number": "16758" + } + } + }, + "168-Autres emprunts et dettes assimil\u00e9es": { + "Autres emprunts": { + "account_number": "1681" + }, + "Rentes viag\u00e8res capitalis\u00e9es": { + "account_number": "1685" + }, + "Autres dettes": { + "account_number": "1687" + }, + "Int\u00e9r\u00eats courus sur autres emprunts et dettes assimil\u00e9es": { + "account_number": "1688" + } + }, + "Primes de remboursement des emprunts": { + "account_number": "169" + } + }, + "17-Dettes rattach\u00e9es \u00e0 des participations": { + "Dettes rattach\u00e9es \u00e0 des participations - groupe": { + "account_number": "171" + }, + "Dettes rattach\u00e9es \u00e0 des participations - hors groupe": { + "account_number": "174" + }, + "Dettes rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "178" + } + }, + "18-Comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "Comptes de liaison des \u00e9tablissements": { + "account_number": "181" + }, + "Biens et prestations de services \u00e9chang\u00e9s entre \u00e9tablissements - charges": { + "account_number": "186" + }, + "Biens et prestations de services \u00e9chang\u00e9s entre \u00e9tablissements - produits": { + "account_number": "187" + }, + "Comptes de liaison des soci\u00e9t\u00e9s en participation": { + "account_number": "188" + } + } + }, + "2-Comptes d'immobilisations": { + "root_type": "Asset", + "20-Immobilisations incorporelles et frais d'\u00e9tablissement": { + "201-Frais d'\u00e9tablissement": { + "Frais de constitution": { + "account_number": "2011" + }, + "2012-Frais de premier \u00e9tablissement": { + "Frais de prospection": { + "account_number": "20121" + }, + "Frais de publicit\u00e9": { + "account_number": "20122" + } + }, + "Frais d'augmentation de capital et d'op\u00e9rations diverses - fusions, scissions, transformations": { + "account_number": "2013" + } + }, + "Frais de d\u00e9veloppement": { + "account_number": "203" + }, + "Concessions et droits similaires, brevets, licences, marques, proc\u00e9d\u00e9s, solutions informatiques, droits et valeurs similaires": { + "account_number": "205" + }, + "Droit au bail": { + "account_number": "206" + }, + "Fonds commercial": { + "account_number": "207" + }, + "208-Autres immobilisations incorporelles": { + "Mali de fusion sur actifs incorporels": { + "account_number": "2081" + } + } + }, + "21-Immobilisations corporelles": { + "account_type": "Fixed Asset", + "211-Terrains": { + "account_type": "Fixed Asset", + "Terrains nus": { + "account_type": "Fixed Asset", + "account_number": "2111" + }, + "Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "account_number": "2112" + }, + "Sous-sols et sur-sols": { + "account_type": "Fixed Asset", + "account_number": "2113" + }, + "Terrains de carri\u00e8res (Tr\u00e9fonds)": { + "account_type": "Fixed Asset", + "account_number": "2114" + }, + "Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "account_number": "2115" + } + }, + "Agencements et am\u00e9nagements de terrains (m\u00eame ventilation que celle du compte 211)": { + "account_type": "Fixed Asset", + "account_number": "212" + }, + "213-Constructions": { + "account_type": "Fixed Asset", + "B\u00e2timents": { + "account_type": "Fixed Asset", + "account_number": "2131" + }, + "Installations g\u00e9n\u00e9rales - agencements - am\u00e9nagements des constructions": { + "account_type": "Fixed Asset", + "account_number": "2135" + }, + "Ouvrages d'infrastructure": { + "account_type": "Fixed Asset", + "account_number": "2138" + } + }, + "Constructions sur sol d'autrui (m\u00eame ventilation que celle du compte 213)": { + "account_type": "Fixed Asset", + "account_number": "214" + }, + "215-Installations techniques, mat\u00e9riels et outillages industriels": { + "account_type": "Fixed Asset", + "2151-Installations complexes sp\u00e9cialis\u00e9es": { + "account_type": "Fixed Asset", + "Installations complexes sp\u00e9cialis\u00e9es sur sol propre": { + "account_type": "Fixed Asset", + "account_number": "21511" + }, + "Installations complexes sp\u00e9cialis\u00e9es sur sol d'autrui": { + "account_type": "Fixed Asset", + "account_number": "21514" + } + }, + "2153-Installations \u00e0 caract\u00e8re sp\u00e9cifique": { + "account_type": "Fixed Asset", + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol propre": { + "account_type": "Fixed Asset", + "account_number": "21531" + }, + "Installations \u00e0 caract\u00e8re sp\u00e9cifique sur sol d'autrui": { + "account_type": "Fixed Asset", + "account_number": "21534" + } + }, + "Mat\u00e9riels industriels": { + "account_type": "Fixed Asset", + "account_number": "2154" + }, + "Outillages industriels": { + "account_type": "Fixed Asset", + "account_number": "2155" + }, + "Agencements et am\u00e9nagements des mat\u00e9riels et outillages industriels": { + "account_type": "Fixed Asset", + "account_number": "2157" + } + }, + "218-Autres immobilisations corporelles": { + "account_type": "Fixed Asset", + "Installations g\u00e9n\u00e9rales, agencements, am\u00e9nagements divers": { + "account_type": "Fixed Asset", + "account_number": "2181" + }, + "Mat\u00e9riel de transport": { + "account_type": "Fixed Asset", + "account_number": "2182" + }, + "Mat\u00e9riel de bureau et mat\u00e9riel informatique": { + "account_type": "Fixed Asset", + "account_number": "2183" + }, + "Mobilier": { + "account_type": "Fixed Asset", + "account_number": "2184" + }, + "Cheptel": { + "account_type": "Fixed Asset", + "account_number": "2185" + }, + "Emballages r\u00e9cup\u00e9rables": { + "account_type": "Fixed Asset", + "account_number": "2186" + }, + "Mali de fusion sur actifs corporels": { + "account_type": "Fixed Asset", + "account_number": "2187" + } + } + }, + "22-Immobilisations mises en concession": { + "Droits du conc\u00e9dant": { + "account_number": "229" + } + }, + "23-Immobilisations en cours, avances et acomptes": { + "Immobilisations corporelles en cours": { + "account_number": "231" + }, + "Immobilisations incorporelles en cours": { + "account_number": "232" + }, + "Avances et acomptes vers\u00e9s sur commandes d'immobilisations incorporelles": { + "account_number": "237" + }, + "Avances et acomptes vers\u00e9s sur commandes d'immobilisations corporelles": { + "account_number": "238" + } + }, + "26-Participations et cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "261-Titres de participation": { + "Actions": { + "account_number": "2611" + }, + "Autres titres": { + "account_number": "2618" + } + }, + "Titres \u00e9valu\u00e9s par \u00e9quivalence": { + "account_number": "262" + }, + "266-Autres formes de participation": { + "Droits repr\u00e9sentatifs d'actifs nets remis en fiducie": { + "account_number": "2661" + } + }, + "267-Cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations - groupe": { + "account_number": "2671" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations - hors groupe": { + "account_number": "2674" + }, + "Versements repr\u00e9sentatifs d'apports non capitalis\u00e9s - appel de fonds": { + "account_number": "2675" + }, + "Avances consolidables": { + "account_number": "2676" + }, + "Autres cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "account_number": "2677" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "2678" + } + }, + "268-Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "Principal": { + "account_number": "2681" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "2688" + } + }, + "Versements restant \u00e0 effectuer sur titres de participation non lib\u00e9r\u00e9s": { + "account_number": "269" + } + }, + "27-Autres immobilisations financi\u00e8res": { + "271-Titres immobilis\u00e9s autres que les titres immobilis\u00e9s de l'activit\u00e9 de portefeuille (droit de propri\u00e9t\u00e9)": { + "Actions": { + "account_number": "2711" + }, + "Autres titres": { + "account_number": "2718" + } + }, + "272-Titres immobilis\u00e9s (droit de cr\u00e9ance)": { + "Obligations": { + "account_number": "2721" + }, + "Bons": { + "account_number": "2722" + } + }, + "Titres immobilis\u00e9s de l'activit\u00e9 de portefeuille": { + "account_number": "273" + }, + "274-Pr\u00eats": { + "Pr\u00eats participatifs": { + "account_number": "2741" + }, + "Pr\u00eats aux associ\u00e9s": { + "account_number": "2742" + }, + "Pr\u00eats au personnel": { + "account_number": "2743" + }, + "Autres pr\u00eats": { + "account_number": "2748" + } + }, + "275-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "D\u00e9p\u00f4ts": { + "account_number": "2751" + }, + "Cautionnements": { + "account_number": "2755" + } + }, + "276-Autres cr\u00e9ances immobilis\u00e9es": { + "Cr\u00e9ances diverses": { + "account_number": "2761" + }, + "2768-Int\u00e9r\u00eats courus": { + "Int\u00e9r\u00eats courus sur titres immobilis\u00e9s (droit de cr\u00e9ance)": { + "account_number": "27682" + }, + "Int\u00e9r\u00eats courus sur pr\u00eats": { + "account_number": "27684" + }, + "Int\u00e9r\u00eats courus sur d\u00e9p\u00f4ts et cautionnements": { + "account_number": "27685" + }, + "Int\u00e9r\u00eats courus sur cr\u00e9ances diverses": { + "account_number": "27688" + } + } + }, + "277-(Actions propres ou parts propres)": { + "Actions propres ou parts propres": { + "account_number": "2771" + }, + "Actions propres ou parts propres en voie d'annulation": { + "account_number": "2772" + } + }, + "Mali de fusion sur actifs financiers": { + "account_number": "278" + }, + "Versements restant \u00e0 effectuer sur titres immobilis\u00e9s non lib\u00e9r\u00e9s": { + "account_number": "279" + } + }, + "28-Amortissements des immobilisations": { + "account_type": "Accumulated Depreciation", + "280-Amortissements des immobilisations incorporelles et des frais d'\u00e9tablissement (m\u00eame ventilation que celle du compte 20)": { + "account_type": "Accumulated Depreciation", + "Frais d'\u00e9tablissement (m\u00eame ventilation que celle du compte 201)": { + "account_type": "Accumulated Depreciation", + "account_number": "2801" + }, + "Frais de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation", + "account_number": "2803" + }, + "Concessions et droits similaires, brevets, licences, solutions informatiques, droits et valeurs similaires": { + "account_type": "Accumulated Depreciation", + "account_number": "2805" + }, + "Droit au bail": { + "account_type": "Accumulated Depreciation", + "account_number": "2806" + }, + "Fonds commercial": { + "account_type": "Accumulated Depreciation", + "account_number": "2807" + }, + "Autres immobilisations incorporelles": { + "account_type": "Accumulated Depreciation", + "account_number": "2808" + } + }, + "281-Amortissements des immobilisations corporelles (m\u00eame ventilation que celle du compte 21)": { + "account_type": "Accumulated Depreciation", + "Agencements, am\u00e9nagements de terrains (m\u00eame ventilation que celle du compte 212)": { + "account_type": "Accumulated Depreciation", + "account_number": "2812" + }, + "Constructions (m\u00eame ventilation que celle du compte 213)": { + "account_type": "Accumulated Depreciation", + "account_number": "2813" + }, + "Constructions sur sol d'autrui (m\u00eame ventilation que celle du compte 214)": { + "account_type": "Accumulated Depreciation", + "account_number": "2814" + }, + "Installations, mat\u00e9riel et outillage industriels (m\u00eame ventilation que celle du compte 215)": { + "account_type": "Accumulated Depreciation", + "account_number": "2815" + }, + "2818-Autres immobilisations corporelles (m\u00eame ventilation que celle du compte 218)": { + "account_type": "Accumulated Depreciation", + "Amortissement du mali de fusion sur actifs corporels": { + "account_type": "Accumulated Depreciation", + "account_number": "28187" + } + } + }, + "Amortissements des immobilisations mises en concession": { + "account_type": "Accumulated Depreciation", + "account_number": "282" + } + }, + "29-D\u00e9pr\u00e9ciations des immobilisations": { + "290-D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "Frais d'\u00e9tablissement": { + "account_number": "2901" + }, + "Frais de d\u00e9veloppement": { + "account_number": "2903" + }, + "Marques, proc\u00e9d\u00e9s, droits et valeurs similaires": { + "account_number": "2905" + }, + "Droit au bail": { + "account_number": "2906" + }, + "Fonds commercial": { + "account_number": "2907" + }, + "2908-Autres immobilisations incorporelles": { + "D\u00e9pr\u00e9ciation du mali de fusion sur actifs incorporels": { + "account_number": "29081" + } + } + }, + "291-D\u00e9pr\u00e9ciations des immobilisations corporelles": { + "Terrains": { + "account_number": "2911" + }, + "Agencements et am\u00e9nagements de terrains": { + "account_number": "2912" + }, + "Constructions": { + "account_number": "2913" + }, + "Constructions sur sol d'autrui": { + "account_number": "2914" + }, + "Installations techniques, mat\u00e9riels et outillages industriels": { + "account_number": "2915" + }, + "2918-Autres immobilisations corporelles": { + "D\u00e9pr\u00e9ciation du mali de fusion sur actifs corporels": { + "account_number": "29187" + } + } + }, + "D\u00e9pr\u00e9ciations des immobilisations mises en concession": { + "account_number": "292" + }, + "293-D\u00e9pr\u00e9ciations des immobilisations en cours": { + "Immobilisations corporelles en cours": { + "account_number": "2931" + }, + "Immobilisations incorporelles en cours": { + "account_number": "2932" + } + }, + "296-D\u00e9pr\u00e9ciations des participations et cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "Titres de participation": { + "account_number": "2961" + }, + "Titres \u00e9valu\u00e9s par \u00e9quivalence": { + "account_number": "2962" + }, + "Autres formes de participation": { + "account_number": "2966" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (m\u00eame ventilation que celle du compte 267)": { + "account_number": "2967" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation (m\u00eame ventilation que celle du compte 268)": { + "account_number": "2968" + } + }, + "297-D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "Titres immobilis\u00e9s autres que les titres immobilis\u00e9s de l'activit\u00e9 de portefeuille (droit de propri\u00e9t\u00e9)": { + "account_number": "2971" + }, + "Titres immobilis\u00e9s (droit de cr\u00e9ance)": { + "account_number": "2972" + }, + "Titres immobilis\u00e9s de l'activit\u00e9 de portefeuille": { + "account_number": "2973" + }, + "Pr\u00eats": { + "account_number": "2974" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2975" + }, + "Autres cr\u00e9ances immobilis\u00e9es": { + "account_number": "2976" + } + } + } + }, + "3-Comptes de stocks et en-cours": { + "root_type": "Asset", + "Mati\u00e8res premi\u00e8res et fournitures": { + "account_number": "31" + }, + "32-Autres approvisionnements": { + "Mati\u00e8res consommables": { + "account_number": "321" + }, + "322-Fournitures consommables": { + "Combustibles": { + "account_number": "3221" + }, + "Produits d'entretien": { + "account_number": "3222" + }, + "Fournitures d'atelier et d'usine": { + "account_number": "3223" + }, + "Fournitures de magasin": { + "account_number": "3224" + }, + "Fournitures de bureau": { + "account_number": "3225" + } + }, + "326-Emballages": { + "Emballages perdus": { + "account_number": "3261" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "3265" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "3267" + } + } + }, + "33-En-cours de production de biens": { + "Produits en cours": { + "account_number": "331" + }, + "Travaux en cours": { + "account_number": "335" + } + }, + "34-En-cours de production de services": { + "\u00c9tudes en cours": { + "account_number": "341" + }, + "Prestations de services en cours": { + "account_number": "345" + } + }, + "35-Stocks de produits": { + "Produits interm\u00e9diaires": { + "account_number": "351" + }, + "Produits finis": { + "account_number": "355" + }, + "358-Produits r\u00e9siduels ou mati\u00e8res de r\u00e9cup\u00e9ration": { + "D\u00e9chets": { + "account_number": "3581" + }, + "Rebuts": { + "account_number": "3585" + }, + "Mati\u00e8res de r\u00e9cup\u00e9ration": { + "account_number": "3586" + } + } + }, + "Compte \u00e0 ouvrir, le cas \u00e9ch\u00e9ant, sous l'intitul\u00e9 \u00ab Stocks provenant d'immobilisations \u00bb": { + "account_number": "36" + }, + "Stocks de marchandises": { + "account_type": "Stock", + "account_number": "37" + }, + "Le compte 38 peut \u00eatre utilis\u00e9 pour comptabiliser les stocks en voie d'acheminement, mis en d\u00e9p\u00f4t ou donn\u00e9s en consignation": { + "account_number": "38" + }, + "39-D\u00e9pr\u00e9ciations des stocks et en-cours": { + "D\u00e9pr\u00e9ciations des mati\u00e8res premi\u00e8res et fournitures": { + "account_number": "391" + }, + "D\u00e9pr\u00e9ciations des autres approvisionnements": { + "account_number": "392" + }, + "D\u00e9pr\u00e9ciations des en-cours de production de biens": { + "account_number": "393" + }, + "D\u00e9pr\u00e9ciations des en-cours de production de services": { + "account_number": "394" + }, + "D\u00e9pr\u00e9ciations des stocks de produits": { + "account_number": "395" + }, + "D\u00e9pr\u00e9ciations des stocks de marchandises": { + "account_number": "397" + } + } + }, + "4-Comptes de tiers (ACTIF)": { + "root_type": "Asset", + "Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "409-Fournisseurs d\u00e9biteurs": { + "Fournisseurs - Avances et acomptes vers\u00e9s sur commandes": { + "account_number": "4091" + }, + "Fournisseurs - Cr\u00e9ances pour emballages et mat\u00e9riel \u00e0 rendre": { + "account_number": "4096" + }, + "4097-Fournisseurs - Autres avoirs": { + "Fournisseurs d'exploitation": { + "account_number": "40971" + }, + "Fournisseurs d'immobilisations": { + "account_number": "40974" + } + }, + "Rabais, remises, ristournes \u00e0 obtenir et autres avoirs non encore re\u00e7us": { + "account_number": "4098" + } + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "account_type": "Receivable", + "411-Clients": { + "account_type": "Receivable", + "Clients - Ventes de biens ou de prestations de services": { + "account_type": "Receivable", + "account_number": "4111" + }, + "Clients - Retenues de garantie": { + "account_type": "Receivable", + "account_number": "4117" + } + }, + "Clients - Effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "413" + }, + "Clients douteux ou litigieux": { + "account_type": "Receivable", + "account_number": "416" + }, + "418-Clients - Produits non encore factur\u00e9s": { + "account_type": "Receivable", + "Clients - Factures \u00e0 \u00e9tablir": { + "account_type": "Receivable", + "account_number": "4181" + }, + "Clients - Int\u00e9r\u00eats courus": { + "account_type": "Receivable", + "account_number": "4188" + } + } + }, + "42-Personnel et comptes rattach\u00e9s (ACTIF)": { + "Personnel - Avances et acomptes et autres comptes d\u00e9biteurs": { + "account_number": "425" + } + }, + "44-\u00c9tat et autres collectivit\u00e9s publiques (ACTIF)": { + "\u00c9tat - Subventions et aides \u00e0 recevoir": { + "account_number": "441" + }, + "445-\u00c9tat - Taxes sur le chiffre d'affaires": { + "TVA due intracommunautaire": { + "account_number": "4452", + "account_type": "Tax", + "tax_rate": -20 + }, + "TVA à décaisser": { + "account_number": "44551" + }, + "4456-Taxes sur le chiffre d'affaires d\u00e9ductibles": { + "TVA sur immobilisations": { + "account_number": "44562", + "account_type": "Tax" + }, + "TVA transf\u00e9r\u00e9e par d'autres entit\u00e9s": { + "account_number": "44563", + "account_type": "Tax" + }, + "TVA sur autres biens et services": { + "account_number": "44566", + "account_type": "Tax", + "tax_rate": 20 + }, + "Cr\u00e9dit de TVA \u00e0 reporter": { + "account_number": "44567", + "account_type": "Tax" + }, + "Taxes assimil\u00e9es \u00e0 la TVA": { + "account_number": "44568", + "account_type": "Tax" + }, + "TVA 20% Déductible": { + "account_number": "445620", + "account_type": "Tax", + "tax_rate": 20 + }, + "TVA 10% Déductible": { + "account_number": "445610", + "account_type": "Tax", + "tax_rate": 10 + }, + "TVA 5.5% Déductible": { + "account_number": "445655", + "account_type": "Tax", + "tax_rate": 5.5 + }, + "TVA 2.1% Déductible": { + "account_number": "445621", + "account_type": "Tax", + "tax_rate": 2.1 + } + }, + "4458-Taxes sur le chiffre d'affaires \u00e0 r\u00e9gulariser ou en attente": { + "Acomptes - R\u00e9gime simplifi\u00e9 d'imposition": { + "account_number": "44581" + }, + "Remboursement de taxes sur le chiffre d'affaires demand\u00e9": { + "account_number": "44583" + }, + "Taxes sur le chiffre d'affaires sur factures non parvenues": { + "account_number": "44586" + } + } + }, + "448-\u00c9tat - Charges \u00e0 payer et produits \u00e0 recevoir": { + "\u00c9tat - Produits \u00e0 recevoir": { + "account_number": "4482" + } + } + }, + "45-Groupe et associ\u00e9s (ACTIF)": { + "456-Associ\u00e9s - Op\u00e9rations sur le capital": { + "4562-Apporteurs - Capital appel\u00e9, non vers\u00e9": { + "Actionnaires - Capital souscrit et appel\u00e9, non vers\u00e9": { + "account_number": "45621" + }, + "Associ\u00e9s - Capital appel\u00e9, non vers\u00e9": { + "account_number": "45625" + } + } + } + }, + "46-D\u00e9biteurs divers et cr\u00e9diteurs divers (ACTIF)": { + "Cr\u00e9ances sur cessions d'immobilisations": { + "account_number": "462" + }, + "Cr\u00e9ances sur cessions de valeurs mobili\u00e8res de placement": { + "account_number": "465" + }, + "Divers comptes d\u00e9biteurs et produits \u00e0 recevoir": { + "account_number": "467" + } + }, + "47-Comptes transitoires ou d'attente (ACTIF)": { + "476-Diff\u00e9rence de conversion - Actif": { + "Diminution des cr\u00e9ances": { + "account_number": "4761" + }, + "Augmentation des dettes": { + "account_number": "4762" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4768" + } + }, + "478-Autres comptes transitoires": { + "Mali de fusion sur actif circulant": { + "account_number": "4781" + } + } + }, + "48-Comptes de r\u00e9gularisation (ACTIF)": { + "Frais d'\u00e9mission des emprunts": { + "account_number": "481" + }, + "Charges constat\u00e9es d'avance": { + "account_number": "486" + }, + "488-Comptes de r\u00e9partition p\u00e9riodique des charges et des produits": { + "Charges": { + "account_number": "4886" + } + } + }, + "49-D\u00e9pr\u00e9ciations des comptes de tiers (ACTIF)": { + "495-D\u00e9pr\u00e9ciations des comptes du groupe et des associ\u00e9s": { + "Comptes du groupe": { + "account_number": "4951" + }, + "Comptes courants des associ\u00e9s": { + "account_number": "4955" + }, + "Op\u00e9rations faites en commun et en GIE": { + "account_number": "4958" + } + }, + "496-D\u00e9pr\u00e9ciations des comptes de d\u00e9biteurs divers": { + "Cr\u00e9ances sur cessions d'immobilisations": { + "account_number": "4962" + }, + "Cr\u00e9ances sur cessions de valeurs mobili\u00e8res de placement": { + "account_number": "4965" + }, + "Autres comptes d\u00e9biteurs": { + "account_number": "4967" + } + } + } + }, + "4-Comptes de tiers (PASSIF)": { + "root_type": "Liability", + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "account_type": "Payable", + "401-Fournisseurs": { + "Fournisseurs - Achats de biens et prestations de services": { + "account_type": "Payable", + "account_number": "4011" + }, + "Fournisseurs - Retenues de garantie": { + "account_type": "Payable", + "account_number": "4017" + } + }, + "Fournisseurs - Effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "403" + }, + "404-Fournisseurs d'immobilisations": { + "account_type": "Payable", + "Fournisseurs - Achats d'immobilisations": { + "account_type": "Payable", + "account_number": "4041" + }, + "Fournisseurs d'immobilisations - Retenues de garantie": { + "account_type": "Payable", + "account_number": "4047" + } + }, + "Fournisseurs d'immobilisations - Effets \u00e0 payer": { + "account_number": "405" + }, + "408-Fournisseurs - Factures non parvenues": { + "account_type": "Stock Received But Not Billed", + "Fournisseurs": { + "account_type": "Stock Received But Not Billed", + "account_number": "4081" + }, + "Fournisseurs d'immobilisations": { + "account_type": "Asset Received But Not Billed", + "account_number": "4084" + }, + "Fournisseurs - Int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed", + "account_number": "4088" + } + } + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "419-Clients cr\u00e9diteurs": { + "Clients - Avances et acomptes re\u00e7us sur commandes": { + "account_number": "4191", + "account_type": "Income Account" + }, + "Clients - Dettes sur emballages et mat\u00e9riels consign\u00e9s": { + "account_number": "4196" + }, + "Clients - Autres avoirs": { + "account_number": "4197" + }, + "Rabais, remises, ristournes \u00e0 accorder et autres avoirs \u00e0 \u00e9tablir": { + "account_number": "4198" + } + } + }, + "42-Personnel et comptes rattach\u00e9s (PASSIF)": { + "Personnel - R\u00e9mun\u00e9rations dues": { + "account_number": "421" + }, + "Comit\u00e9 social et \u00e9conomique": { + "account_number": "422" + }, + "424-Participation des salari\u00e9s aux r\u00e9sultats": { + "R\u00e9serve sp\u00e9ciale": { + "account_number": "4246" + }, + "Comptes courants": { + "account_number": "4248" + } + }, + "Personnel - D\u00e9p\u00f4ts": { + "account_number": "426" + }, + "Personnel - Oppositions": { + "account_number": "427" + }, + "428-Personnel - Charges \u00e0 payer": { + "Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": { + "account_number": "4282" + }, + "Dettes provisionn\u00e9es pour participation des salari\u00e9s aux r\u00e9sultats": { + "account_number": "4284" + }, + "Autres charges \u00e0 payer": { + "account_number": "4286" + } + } + }, + "43-S\u00e9curit\u00e9 sociale et autres organismes sociaux (PASSIF)": { + "S\u00e9curit\u00e9 sociale": { + "account_number": "431" + }, + "Autres organismes sociaux": { + "account_number": "437" + }, + "438-Organismes sociaux - Charges \u00e0 payer": { + "Charges sociales sur cong\u00e9s \u00e0 payer": { + "account_number": "4382" + }, + "Autres charges \u00e0 payer": { + "account_number": "4386" + } + } + }, + "44-\u00c9tat et autres collectivit\u00e9s publiques (PASSIF)": { + "Contributions, imp\u00f4ts et taxes recouvr\u00e9s pour le compte de l'\u00c9tat": { + "account_number": "442" + }, + "\u00c9tat - Imp\u00f4ts sur les b\u00e9n\u00e9fices": { + "account_number": "444" + }, + "445-\u00c9tat - Taxes sur le chiffre d'affaires": { + "4455-Taxes sur le chiffre d'affaires \u00e0 d\u00e9caisser": { + "Taxes assimil\u00e9es \u00e0 la TVA": { + "account_number": "44558" + } + }, + "4457-Taxes sur le chiffre d'affaires collect\u00e9es": { + "44571-TVA collect\u00e9e": { + "account_type": "Tax", + "TVA 20% Collectée": { + "account_type": "Tax", + "account_number": "445720", + "tax_rate": 20 + }, + "TVA 10% Collectée": { + "account_type": "Tax", + "account_number": "445710", + "tax_rate": 10 + }, + "TVA 5.5% Collectée": { + "account_type": "Tax", + "account_number": "445755", + "tax_rate": 5.5 + }, + "TVA 2.1% Collectée": { + "account_type": "Tax", + "account_number": "445721", + "tax_rate": 2.1 + } + }, + "Taxes assimil\u00e9es \u00e0 la TVA": { + "account_number": "44578" + } + }, + "4458-Taxes sur le chiffre d'affaires \u00e0 r\u00e9gulariser ou en attente": { + "TVA r\u00e9cup\u00e9r\u00e9e d'avance": { + "account_number": "44584" + }, + "Taxes sur le chiffre d'affaires sur factures \u00e0 \u00e9tablir": { + "account_number": "44587" + } + } + }, + "Obligations cautionn\u00e9es": { + "account_number": "446" + }, + "Autres imp\u00f4ts, taxes et versements assimil\u00e9s": { + "account_number": "447" + }, + "Quotas d'\u00e9mission \u00e0 acqu\u00e9rir": { + "account_number": "449" + } + }, + "45-Groupe et associ\u00e9s (PASSIF)": { + "Groupe": { + "account_number": "451" + }, + "455-Associ\u00e9s - Comptes courants": { + "Principal": { + "account_number": "4551" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4558" + } + }, + "456-Associ\u00e9s - Op\u00e9rations sur le capital": { + "4561-Associ\u00e9s - Comptes d'apport en soci\u00e9t\u00e9": { + "Apports en nature": { + "account_number": "45611" + }, + "Apports en num\u00e9raire": { + "account_number": "45615" + } + }, + "Associ\u00e9s - Versements re\u00e7us sur augmentation de capital": { + "account_number": "4563" + }, + "Associ\u00e9s - Versements anticip\u00e9s": { + "account_number": "4564" + }, + "Actionnaires d\u00e9faillants": { + "account_number": "4566" + }, + "Associ\u00e9s - Capital \u00e0 rembourser": { + "account_number": "4567" + } + }, + "Associ\u00e9s - Dividendes \u00e0 payer": { + "account_number": "457" + }, + "458-Associ\u00e9s - Op\u00e9rations faites en commun et en GIE": { + "Op\u00e9rations courantes": { + "account_number": "4581" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4588" + } + } + }, + "46-D\u00e9biteurs divers et cr\u00e9diteurs divers (PASSIF)": { + "Dettes sur acquisitions de valeurs mobili\u00e8res de placement": { + "account_number": "464" + }, + "Divers comptes cr\u00e9diteurs et charges \u00e0 payer": { + "account_number": "468" + } + }, + "47-Comptes transitoires ou d'attente (PASSIF)": { + "Comptes d'attente": { + "account_type": "Temporary", + "account_number": "471" + }, + "477-Diff\u00e9rences de conversion - Passif": { + "Augmentation des cr\u00e9ances": { + "account_number": "4771" + }, + "Diminution des dettes": { + "account_number": "4772" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4778" + } + }, + "Autres comptes transitoires": { + "account_number": "478" + } + }, + "48-Comptes de r\u00e9gularisation (PASSIF)": { + "Produits constat\u00e9s d'avance": { + "account_number": "487" + }, + "488-Comptes de r\u00e9partition p\u00e9riodique des charges et des produits": { + "Produits": { + "account_number": "4887" + } + } + }, + "D\u00e9pr\u00e9ciations des comptes de tiers (PASSIF)": { + "account_number": "49" + } + }, + "5-Comptes financiers": { + "root_type": "Asset", + "50-Valeurs mobili\u00e8res de placement": { + "502-Actions propres": { + "Actions destin\u00e9es \u00e0 \u00eatre attribu\u00e9es aux employ\u00e9s et affect\u00e9es \u00e0 des plans d\u00e9termin\u00e9s": { + "account_number": "5021" + }, + "Actions disponibles pour \u00eatre attribu\u00e9es aux employ\u00e9s ou pour la r\u00e9gularisation des cours de bourse": { + "account_number": "5022" + } + }, + "503-Actions": { + "Titres cot\u00e9s": { + "account_number": "5031" + }, + "Titres non cot\u00e9s": { + "account_number": "5035" + } + }, + "Autres titres conf\u00e9rant un droit de propri\u00e9t\u00e9": { + "account_number": "504" + }, + "Obligations et bons \u00e9mis par la soci\u00e9t\u00e9 et rachet\u00e9s par elle": { + "account_number": "505" + }, + "506-Obligations": { + "Titres cot\u00e9s": { + "account_number": "5061" + }, + "Titres non cot\u00e9s": { + "account_number": "5065" + } + }, + "Bons du Tr\u00e9sor et bons de caisse \u00e0 court terme": { + "account_number": "507" + }, + "508-Autres valeurs mobili\u00e8res de placement et autres cr\u00e9ances assimil\u00e9es": { + "Autres valeurs mobili\u00e8res": { + "account_number": "5081" + }, + "Bons de souscription": { + "account_number": "5082" + }, + "Int\u00e9r\u00eats courus sur obligations, bons et valeurs assimil\u00e9s": { + "account_number": "5088" + } + }, + "Versements restant \u00e0 effectuer sur valeurs mobili\u00e8res de placement non lib\u00e9r\u00e9es": { + "account_number": "509" + } + }, + "51-Banques, \u00e9tablissements financiers et assimil\u00e9s": { + "511-Valeurs \u00e0 l'encaissement": { + "Coupons \u00e9chus \u00e0 l'encaissement": { + "account_number": "5111" + }, + "Ch\u00e8ques \u00e0 encaisser": { + "account_number": "5112" + }, + "Effets \u00e0 l'encaissement": { + "account_number": "5113" + }, + "Effets \u00e0 l'escompte": { + "account_number": "5114" + } + }, + "512-Banques": { + "account_type": "Bank", + "Comptes en euros": { + "account_type": "Bank", + "account_number": "5121" + }, + "Comptes en devises": { + "account_type": "Bank", + "account_number": "5124" + } + }, + "Autres organismes financiers": { + "account_number": "517" + }, + "518-Int\u00e9r\u00eats courus": { + "Int\u00e9r\u00eats courus \u00e0 payer": { + "account_number": "5181" + }, + "Int\u00e9r\u00eats courus \u00e0 recevoir": { + "account_number": "5188" + } + }, + "519-Concours bancaires courants": { + "Cr\u00e9dit de mobilisation de cr\u00e9ances commerciales": { + "account_number": "5191" + }, + "Mobilisation de cr\u00e9ances n\u00e9es \u00e0 l'\u00e9tranger": { + "account_number": "5193" + }, + "Int\u00e9r\u00eats courus sur concours bancaires courants": { + "account_number": "5198" + } + } + }, + "52-Instruments financiers \u00e0 terme et jetons d\u00e9tenus": { + "Instruments financiers \u00e0 terme": { + "account_number": "521" + }, + "Jetons d\u00e9tenus": { + "account_number": "522" + }, + "Jetons auto-d\u00e9tenus": { + "account_number": "523" + }, + "Jetons emprunt\u00e9s": { + "account_number": "524" + } + }, + "53-Caisse": { + "account_type": "Cash", + "Caisse": { + "account_type": "Cash", + "account_number": "530" + } + }, + "Virements internes": { + "account_number": "58" + }, + "59-D\u00e9pr\u00e9ciations des comptes financiers": { + "590-D\u00e9pr\u00e9ciations des valeurs mobili\u00e8res de placement": { + "Actions": { + "account_number": "5903" + }, + "Autres titres conf\u00e9rant un droit de propri\u00e9t\u00e9": { + "account_number": "5904" + }, + "Obligations": { + "account_number": "5906" + }, + "Autres valeurs mobili\u00e8res de placement et cr\u00e9ances assimil\u00e9es": { + "account_number": "5908" + } + } + } + }, + "6-Comptes de charges": { + "root_type": "Expense", + "60-Achats (sauf 603)": { + "Achats stock\u00e9s - Mati\u00e8res premi\u00e8res et fournitures": { + "account_type": "Cost of Goods Sold", + "account_number": "601" + }, + "602-Achats stock\u00e9s - Autres approvisionnements": { + "Mati\u00e8res consommables": { + "account_type": "Cost of Goods Sold", + "account_number": "6021" + }, + "6022-Fournitures consommables": { + "account_type": "Cost of Goods Sold", + "Combustibles": { + "account_type": "Cost of Goods Sold", + "account_number": "60221" + }, + "Produits d'entretien": { + "account_type": "Cost of Goods Sold", + "account_number": "60222" + }, + "Fournitures d'atelier et d'usine": { + "account_type": "Cost of Goods Sold", + "account_number": "60223" + }, + "Fournitures de magasin": { + "account_type": "Cost of Goods Sold", + "account_number": "60224" + }, + "Fourniture de bureau": { + "account_type": "Cost of Goods Sold", + "account_number": "60225" + } + }, + "6026-Emballages": { + "account_type": "Cost of Goods Sold", + "Emballages perdus": { + "account_type": "Cost of Goods Sold", + "account_number": "60261" + }, + "Malis sur emballage": { + "account_type": "Cost of Goods Sold", + "account_number": "60262" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_type": "Cost of Goods Sold", + "account_number": "60265" + }, + "Emballages \u00e0 usage mixte": { + "account_type": "Cost of Goods Sold", + "account_number": "60267" + } + } + }, + "Achats d'\u00e9tudes et prestations de services": { + "account_number": "604" + }, + "Achats de mat\u00e9riel, \u00e9quipements et travaux": { + "account_number": "605" + }, + "606-Achats non stock\u00e9s de mati\u00e8re et fournitures": { + "account_type": "Cost of Goods Sold", + "Fournitures non stockables (eau, \u00e9nergie, etc.)": { + "account_type": "Cost of Goods Sold", + "account_number": "6061" + }, + "Fournitures d'entretien et de petit \u00e9quipement": { + "account_type": "Cost of Goods Sold", + "account_number": "6063" + }, + "Fournitures administratives": { + "account_type": "Cost of Goods Sold", + "account_number": "6064" + }, + "Autres mati\u00e8res et fournitures": { + "account_type": "Cost of Goods Sold", + "account_number": "6068" + } + }, + "Achats de marchandises": { + "account_type": "Cost of Goods Sold", + "account_number": "607" + }, + "Compte r\u00e9serv\u00e9, le cas \u00e9ch\u00e9ant, au regroupement des frais accessoires incorpor\u00e9s aux achats": { + "account_number": "608", + "account_type": "Expenses Included In Valuation" + }, + "609-Rabais, remises et ristournes obtenus sur achats (m\u00eame ventilation que celle du compte 60)": { + "Rabais, remises et ristournes non affect\u00e9s": { + "account_number": "6098" + } + } + }, + "603-Variation des stocks d'approvisionnements et de marchandises": { + "account_type": "Stock Adjustment", + "Variation des stocks de mati\u00e8res premi\u00e8res et fournitures": { + "account_type": "Stock Adjustment", + "account_number": "6031" + }, + "Variation des stocks des autres approvisionnements": { + "account_type": "Stock Adjustment", + "account_number": "6032" + }, + "Variation des stocks de marchandises": { + "account_type": "Stock Adjustment", + "account_number": "6037" + } + }, + "61-Services ext\u00e9rieurs": { + "Sous-traitance g\u00e9n\u00e9rale": { + "account_number": "611" + }, + "612-Redevances de cr\u00e9dit-bail": { + "Cr\u00e9dit-bail mobilier": { + "account_number": "6122" + }, + "Cr\u00e9dit-bail immobilier": { + "account_number": "6125" + } + }, + "613-Locations": { + "Locations immobili\u00e8res": { + "account_number": "6132" + }, + "Locations mobili\u00e8res": { + "account_number": "6135" + } + }, + "Charges locatives et de copropri\u00e9t\u00e9": { + "account_number": "614" + }, + "615-Entretien et r\u00e9paration": { + "Entretien et r\u00e9paration sur biens immobiliers": { + "account_number": "6152" + }, + "Entretien et r\u00e9paration sur biens mobiliers": { + "account_number": "6155" + }, + "Maintenance": { + "account_number": "6156" + } + }, + "616-Primes d'assurances": { + "Multirisques": { + "account_number": "6161" + }, + "Assurance obligatoire dommage construction": { + "account_number": "6162" + }, + "6163-Assurance - transport": { + "sur achats": { + "account_number": "61636" + }, + "sur ventes": { + "account_number": "61637" + }, + "sur autres biens": { + "account_number": "61638" + } + }, + "Risques d'exploitation": { + "account_number": "6164" + }, + "Insolvabilit\u00e9 clients": { + "account_number": "6165" + } + }, + "\u00c9tudes et recherches": { + "account_number": "617" + }, + "618-Divers": { + "Documentation g\u00e9n\u00e9rale": { + "account_number": "6181" + }, + "Documentation technique": { + "account_number": "6183" + }, + "Frais de colloques, s\u00e9minaires, conf\u00e9rences": { + "account_number": "6185" + } + }, + "Rabais, remises et ristournes obtenus sur services ext\u00e9rieurs": { + "account_number": "619" + } + }, + "62-Autres services ext\u00e9rieurs": { + "621-Personnel ext\u00e9rieur \u00e0 l'entit\u00e9": { + "Personnel int\u00e9rimaire": { + "account_number": "6211" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l'entit\u00e9": { + "account_number": "6214" + } + }, + "622-R\u00e9mun\u00e9rations d'interm\u00e9diaires et honoraires": { + "Commissions et courtages sur achats": { + "account_number": "6221" + }, + "Commissions et courtages sur ventes": { + "account_number": "6222" + }, + "R\u00e9mun\u00e9rations des transitaires": { + "account_number": "6224" + }, + "R\u00e9mun\u00e9rations d'affacturage": { + "account_number": "6225" + }, + "Honoraires": { + "account_number": "6226" + }, + "Frais d'actes et de contentieux": { + "account_number": "6227" + }, + "Divers": { + "account_number": "6228" + } + }, + "623-Publicit\u00e9, publications, relations publiques": { + "Annonces et insertions": { + "account_number": "6231" + }, + "\u00c9chantillons": { + "account_number": "6232" + }, + "Foires et expositions": { + "account_number": "6233" + }, + "Cadeaux \u00e0 la client\u00e8le": { + "account_number": "6234" + }, + "Primes": { + "account_number": "6235" + }, + "Catalogues et imprim\u00e9s": { + "account_number": "6236" + }, + "Publications": { + "account_number": "6237" + }, + "Divers (pourboires, dons courants)": { + "account_number": "6238" + } + }, + "624-Transports de biens et transports collectifs du personnel": { + "Transports sur achats": { + "account_number": "6241", + "account_type": "Chargeable" + }, + "Transports sur ventes": { + "account_type": "Chargeable", + "account_number": "6242" + }, + "Transports entre \u00e9tablissements ou chantiers": { + "account_number": "6243" + }, + "Transports administratifs": { + "account_number": "6244" + }, + "Transports collectifs du personnel": { + "account_number": "6247" + }, + "Divers": { + "account_number": "6248" + } + }, + "625-D\u00e9placements, missions et r\u00e9ceptions": { + "Voyages et d\u00e9placements": { + "account_number": "6251" + }, + "Frais de d\u00e9m\u00e9nagement": { + "account_number": "6255" + }, + "Missions": { + "account_number": "6256" + }, + "R\u00e9ceptions": { + "account_number": "6257" + } + }, + "Frais postaux et de t\u00e9l\u00e9communications": { + "account_number": "626" + }, + "627-Services bancaires et assimil\u00e9s": { + "Frais sur titres (achat, vente, garde)": { + "account_number": "6271" + }, + "Commissions et frais sur \u00e9mission d'emprunts": { + "account_number": "6272" + }, + "Frais sur effets": { + "account_number": "6275" + }, + "Location de coffres": { + "account_number": "6276" + }, + "Autres frais et commissions sur prestations de services": { + "account_number": "6278" + } + }, + "628-Divers": { + "Concours divers (cotisations)": { + "account_number": "6281" + }, + "Frais de recrutement de personnel": { + "account_number": "6284" + } + }, + "Rabais, remises et ristournes obtenus sur autres services ext\u00e9rieurs": { + "account_number": "629" + } + }, + "63-Imp\u00f4ts, taxes et versements assimil\u00e9s": { + "631-Imp\u00f4ts, taxes et versements assimil\u00e9s sur r\u00e9mun\u00e9rations (administrations des imp\u00f4ts)": { + "Taxe sur les salaires": { + "account_number": "6311" + }, + "Cotisation pour d\u00e9faut d'investissement obligatoire dans la construction": { + "account_number": "6314" + }, + "Autres": { + "account_number": "6318" + } + }, + "633-Imp\u00f4ts, taxes et versements assimil\u00e9s sur r\u00e9mun\u00e9rations (autres organismes)": { + "Versement de transport": { + "account_number": "6331" + }, + "Allocations logement": { + "account_number": "6332" + }, + "Contribution unique des employeurs \u00e0 la formation professionnelle": { + "account_number": "6333" + }, + "Participation des employeurs \u00e0 l'effort de construction": { + "account_number": "6334" + }, + "Versements lib\u00e9ratoires ouvrant droit \u00e0 l'exon\u00e9ration de la taxe d'apprentissage": { + "account_number": "6335" + }, + "Autres": { + "account_number": "6338" + } + }, + "635-Autres imp\u00f4ts, taxes et versements assimil\u00e9s (administrations des imp\u00f4ts)": { + "6351-Imp\u00f4ts directs (sauf imp\u00f4ts sur les b\u00e9n\u00e9fices)": { + "Contribution \u00e9conomique territoriale": { + "account_number": "63511" + }, + "Taxes fonci\u00e8res": { + "account_number": "63512" + }, + "Autres imp\u00f4ts locaux": { + "account_number": "63513" + }, + "Taxe sur les v\u00e9hicules des soci\u00e9t\u00e9s": { + "account_number": "63514" + } + }, + "Taxe sur le chiffre d'affaires non r\u00e9cup\u00e9rables": { + "account_number": "6352" + }, + "Imp\u00f4ts indirects": { + "account_number": "6353" + }, + "6354-Droits d'enregistrement et de timbre": { + "Droits de mutation": { + "account_number": "63541" + } + }, + "Autres droits": { + "account_number": "6358" + } + }, + "637-Autres imp\u00f4ts, taxes et versements assimil\u00e9s (autres organismes)": { + "Contribution sociale de solidarit\u00e9 \u00e0 la charge des soci\u00e9t\u00e9s": { + "account_number": "6371" + }, + "Taxes per\u00e7ues par les organismes publics internationaux": { + "account_number": "6372" + }, + "Imp\u00f4ts et taxes exigibles \u00e0 l'\u00e9tranger": { + "account_number": "6374" + }, + "Taxes diverses": { + "account_number": "6378" + } + }, + "Rappel d'imp\u00f4ts (autres qu'imp\u00f4ts sur les b\u00e9n\u00e9fices)": { + "account_number": "638" + } + }, + "64-Charges de personnel": { + "641-R\u00e9mun\u00e9rations du personnel": { + "Salaires, appointements": { + "account_number": "6411" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6412" + }, + "Primes et gratifications": { + "account_number": "6413" + }, + "Indemnit\u00e9s et avantages divers": { + "account_number": "6414" + }, + "Suppl\u00e9ment familial": { + "account_number": "6415" + } + }, + "R\u00e9mun\u00e9ration du travail de l'exploitant": { + "account_number": "644" + }, + "645-Cotisations de s\u00e9curit\u00e9 sociale et de pr\u00e9voyance": { + "Cotisations \u00e0 l'Urssaf": { + "account_number": "6451" + }, + "Cotisations aux mutuelles": { + "account_number": "6452" + }, + "Cotisations aux caisses de retraites": { + "account_number": "6453" + }, + "Cotisations \u00e0 P\u00f4le emploi": { + "account_number": "6454" + }, + "Cotisations aux autres organismes sociaux": { + "account_number": "6458" + } + }, + "Cotisations sociales personnelles de l'exploitant": { + "account_number": "646" + }, + "647-Autres cotisations sociales": { + "Prestations directes": { + "account_number": "6471" + }, + "Versements au comit\u00e9 social et \u00e9conomique": { + "account_number": "6472" + }, + "Versements aux autres \u0153uvres sociales": { + "account_number": "6474" + }, + "M\u00e9decine du travail, pharmacie": { + "account_number": "6475" + } + }, + "Autres charges de personnel": { + "account_number": "648" + }, + "Remboursements de charges de personnel": { + "account_number": "649" + } + }, + "65-Autres charges de gestion courante": { + "651-Redevances pour concessions, brevets, licences, marques, proc\u00e9d\u00e9s, solutions informatiques, droits et valeurs similaires": { + "Redevances pour concessions, brevets, licences, marques, proc\u00e9d\u00e9s, solutions informatiques": { + "account_number": "6511" + }, + "Droits d'auteur et de reproduction": { + "account_number": "6516" + }, + "Autres droits et valeurs similaires": { + "account_number": "6518" + } + }, + "R\u00e9mun\u00e9rations de l'activit\u00e9 des administrateurs et des g\u00e9rants": { + "account_number": "653" + }, + "654-Pertes sur cr\u00e9ances irr\u00e9couvrables": { + "Cr\u00e9ances de l'exercice": { + "account_number": "6541" + }, + "Cr\u00e9ances des exercices ant\u00e9rieurs": { + "account_number": "6544" + } + }, + "655-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part de b\u00e9n\u00e9fice transf\u00e9r\u00e9e - comptabilit\u00e9 du g\u00e9rant": { + "account_number": "6551" + }, + "Quote-part de perte support\u00e9e - comptabilit\u00e9 des associ\u00e9s non g\u00e9rants": { + "account_number": "6555" + } + }, + "Pertes de change sur cr\u00e9ances et dettes commerciales": { + "account_number": "656" + }, + "Valeurs comptables des immobilisations incorporelles et corporelles c\u00e9d\u00e9es": { + "account_number": "657" + }, + "658-P\u00e9nalit\u00e9s et autres charges": { + "P\u00e9nalit\u00e9s sur march\u00e9s (et d\u00e9dits pay\u00e9s sur achats et ventes)": { + "account_number": "6581" + }, + "P\u00e9nalit\u00e9s, amendes fiscales et p\u00e9nales": { + "account_number": "6582" + }, + "Malis provenant de clauses d'indexation": { + "account_number": "6583" + }, + "Lots": { + "account_number": "6584" + }, + "Op\u00e9rations de constitution ou liquidation des fiducies": { + "account_number": "6588" + } + } + }, + "66-Charges financi\u00e8res": { + "661-Charges d'int\u00e9r\u00eats": { + "6611-Int\u00e9r\u00eats des emprunts et dettes": { + "Int\u00e9r\u00eats des emprunts et dettes assimil\u00e9es": { + "account_number": "66116" + }, + "Int\u00e9r\u00eats des dettes rattach\u00e9es \u00e0 des participations": { + "account_number": "66117" + } + }, + "Charges de la fiducie, r\u00e9sultat de la p\u00e9riode": { + "account_number": "6612" + }, + "Int\u00e9r\u00eats des comptes courants et des d\u00e9p\u00f4ts cr\u00e9diteurs": { + "account_number": "6615" + }, + "Int\u00e9r\u00eats bancaires et sur op\u00e9rations de financement (escompte\u2026)": { + "account_number": "6616" + }, + "Int\u00e9r\u00eats des obligations cautionn\u00e9es": { + "account_number": "6617" + }, + "6618-Int\u00e9r\u00eats des autres dettes": { + "Int\u00e9r\u00eats des dettes commerciales": { + "account_number": "66181" + }, + "Int\u00e9r\u00eats des dettes diverses": { + "account_number": "66188" + } + } + }, + "Pertes sur cr\u00e9ances li\u00e9es \u00e0 des participations": { + "account_number": "664" + }, + "Escomptes accord\u00e9s": { + "account_number": "665" + }, + "Pertes de change financi\u00e8res": { + "account_type": "Round Off", + "account_number": "666" + }, + "667-Charges sur cession d'\u00e9l\u00e9ments financiers": { + "Valeurs comptables des immobilisations financi\u00e8res c\u00e9d\u00e9es": { + "account_number": "6671" + }, + "Charges nettes sur cessions de titres immobilis\u00e9s de l'activit\u00e9 de portefeuille": { + "account_number": "6672" + }, + "Charges nettes sur cessions de valeurs mobili\u00e8res de placement": { + "account_number": "6673" + }, + "Charges nettes sur cessions de jetons": { + "account_number": "6674" + } + }, + "668-Autres charges financi\u00e8res": { + "Mali provenant du rachat par l'entit\u00e9 d'actions et obligations \u00e9mises par elle-m\u00eame": { + "account_number": "6683" + } + } + }, + "67-Charges exceptionnelles": { + "(Compte \u00e0 la disposition des entit\u00e9s pour enregistrer, en cours d'exercice, les charges sur exercices ant\u00e9rieurs)": { + "account_number": "672" + }, + "Autres charges exceptionnelles": { + "account_number": "678" + } + }, + "68-Dotations aux amortissements, aux d\u00e9pr\u00e9ciations et aux provisions": { + "account_type": "Depreciation", + "681-Dotations aux amortissements, aux d\u00e9pr\u00e9ciations et aux provisions (\u00e0 inscrire dans les charges d'exploitation)": { + "account_type": "Depreciation", + "6811-Dotations aux amortissements sur immobilisations incorporelles et corporelles": { + "account_type": "Depreciation", + "Immobilisations incorporelles et frais d'\u00e9tablissement": { + "account_type": "Depreciation", + "account_number": "68111" + }, + "Immobilisations corporelles": { + "account_type": "Depreciation", + "account_number": "68112" + } + }, + "Dotations aux provisions d'exploitation": { + "account_type": "Depreciation", + "account_number": "6815" + }, + "6816-Dotations pour d\u00e9pr\u00e9ciations des immobilisations incorporelles et corporelles": { + "account_type": "Depreciation", + "Immobilisations incorporelles": { + "account_type": "Depreciation", + "account_number": "68161" + }, + "Immobilisations corporelles": { + "account_type": "Depreciation", + "account_number": "68162" + } + }, + "6817-Dotations pour d\u00e9pr\u00e9ciations des actifs circulants": { + "account_type": "Depreciation", + "Stocks et en-cours": { + "account_type": "Depreciation", + "account_number": "68173" + }, + "Cr\u00e9ances": { + "account_type": "Depreciation", + "account_number": "68174" + } + } + }, + "686-Dotations aux amortissements, aux d\u00e9pr\u00e9ciations et aux provisions (\u00e0 inscrire dans les charges financi\u00e8res)": { + "account_type": "Depreciation", + "Dotations aux amortissements des primes de remboursement des emprunts": { + "account_type": "Depreciation", + "account_number": "6861" + }, + "Dotations aux amortissements des frais d'\u00e9mission des emprunts": { + "account_type": "Depreciation", + "account_number": "6862" + }, + "Dotations aux provisions financi\u00e8res": { + "account_type": "Depreciation", + "account_number": "6865" + }, + "6866-Dotations pour d\u00e9pr\u00e9ciation des \u00e9l\u00e9ments financiers": { + "account_type": "Depreciation", + "Immobilisations financi\u00e8res": { + "account_type": "Depreciation", + "account_number": "68662" + }, + "Valeurs mobili\u00e8res de placement": { + "account_type": "Depreciation", + "account_number": "68665" + } + } + }, + "687-Dotations aux amortissements, aux d\u00e9pr\u00e9ciations et aux provisions (\u00e0 inscrire dans les charges exceptionnelles)": { + "account_type": "Depreciation", + "Dotations aux amortissements exceptionnels des immobilisations": { + "account_type": "Depreciation", + "account_number": "6871" + }, + "Dotations aux provisions r\u00e9glement\u00e9es (immobilisations)": { + "account_type": "Depreciation", + "Amortissements d\u00e9rogatoires": { + "account_type": "Depreciation", + "account_number": "68725" + } + }, + "Dotations aux provisions r\u00e9glement\u00e9es (stocks)": { + "account_type": "Depreciation", + "account_number": "6873" + }, + "Dotations aux autres provisions r\u00e9glement\u00e9es": { + "account_type": "Depreciation", + "account_number": "6874" + }, + "Dotations aux provisions exceptionnelles": { + "account_type": "Depreciation", + "account_number": "6875" + }, + "Dotations pour d\u00e9pr\u00e9ciations exceptionnelles": { + "account_type": "Depreciation", + "account_number": "6876" + } + } + }, + "69-Participation des salari\u00e9s - Imp\u00f4ts sur les b\u00e9n\u00e9fices et assimil\u00e9s": { + "Participation des salari\u00e9s aux r\u00e9sultats": { + "account_number": "691" + }, + "695-Imp\u00f4ts sur les b\u00e9n\u00e9fices": { + "Imp\u00f4ts dus en France": { + "account_number": "6951" + }, + "Contribution additionnelle \u00e0 l'imp\u00f4t sur les b\u00e9n\u00e9fices": { + "account_number": "6952" + }, + "Imp\u00f4ts dus \u00e0 l'\u00e9tranger": { + "account_number": "6954" + } + }, + "Suppl\u00e9ments d'imp\u00f4t sur les soci\u00e9t\u00e9s li\u00e9s aux distributions": { + "account_number": "696" + }, + "698-Int\u00e9gration fiscale": { + "Int\u00e9gration fiscale - Charges": { + "account_number": "6981" + }, + "Int\u00e9gration fiscale - Produits": { + "account_number": "6989" + } + }, + "Produits - Reports en arri\u00e8re des d\u00e9ficits": { + "account_number": "699" + } + } + }, + "7-Comptes de produits": { + "root_type": "Income", + "70-Ventes de produits fabriqu\u00e9s, prestations de services, marchandises": { + "Ventes de produits finis": { + "account_number": "701" + }, + "Ventes de produits interm\u00e9diaires": { + "account_number": "702" + }, + "Ventes de produits r\u00e9siduels": { + "account_number": "703" + }, + "Travaux": { + "account_number": "704" + }, + "\u00c9tudes": { + "account_number": "705" + }, + "Prestations de services": { + "account_number": "706" + }, + "707-Ventes de marchandises": { + "Marchandises": { + "account_number": "7071" + }, + "Éco-participation": { + "account_type": "Income Account", + "account_number": "7079" + } + }, + "708-Produits des activit\u00e9s annexes": { + "Produits des services exploit\u00e9s dans l'int\u00e9r\u00eat du personnel": { + "account_number": "7081" + }, + "Commissions et courtages": { + "account_number": "7082" + }, + "Locations diverses": { + "account_number": "7083" + }, + "Mise \u00e0 disposition de personnel factur\u00e9e": { + "account_number": "7084" + }, + "Ports et frais accessoires factur\u00e9s": { + "account_number": "7085" + }, + "Bonis sur reprises d'emballages consign\u00e9s": { + "account_number": "7086" + }, + "Bonifications obtenues des clients et primes sur ventes": { + "account_number": "7087" + }, + "Autres produits d'activit\u00e9s annexes (cessions d'approvisionnements)": { + "account_number": "7088" + } + }, + "709-Rabais, remises et ristournes accord\u00e9s": { + "Rabais, remises et ristournes accord\u00e9s sur ventes de produits finis": { + "account_number": "7091" + }, + "Rabais, remises et ristournes accord\u00e9s sur ventes de produits interm\u00e9diaires": { + "account_number": "7092" + }, + "Rabais, remises et ristournes accord\u00e9s sur travaux": { + "account_number": "7094" + }, + "Rabais, remises et ristournes accord\u00e9s sur \u00e9tudes": { + "account_number": "7095" + }, + "Rabais, remises et ristournes accord\u00e9s sur prestations de services": { + "account_number": "7096" + }, + "Rabais, remises et ristournes accord\u00e9s sur ventes de marchandises": { + "account_number": "7097" + }, + "Rabais, remises et ristournes accord\u00e9s sur produits des activit\u00e9s annexes": { + "account_number": "7098" + } + } + }, + "71-Production stock\u00e9e (ou d\u00e9stockage)": { + "713-Variation des stocks des en-cours de production et de produits": { + "7133-Variation des en-cours de production de biens": { + "Produits en cours": { + "account_number": "71331" + }, + "Travaux en cours": { + "account_number": "71335" + } + }, + "7134-Variation des en-cours de production de services": { + "\u00c9tudes en cours": { + "account_number": "71341" + }, + "Prestations de services en cours": { + "account_number": "71345" + } + }, + "7135-Variation des stocks de produits": { + "Produits interm\u00e9diaires": { + "account_number": "71351" + }, + "Produits finis": { + "account_number": "71355" + }, + "Produits r\u00e9siduels": { + "account_number": "71358" + } + } + } + }, + "72-Production immobilis\u00e9e": { + "Immobilisations incorporelles": { + "account_number": "721" + }, + "Immobilisations corporelles": { + "account_number": "722" + } + }, + "74-Subventions": { + "Subventions d'exploitation": { + "account_number": "741" + }, + "Subventions d'\u00e9quilibre": { + "account_number": "742" + }, + "Quote-part des subventions d'investissement vir\u00e9e au r\u00e9sultat de l'exercice": { + "account_number": "747" + } + }, + "75-Autres produits de gestion courante": { + "751-Redevances pour concessions, brevets, licences, marques, proc\u00e9d\u00e9s, solutions informatiques, droits et valeurs similaires": { + "Redevances pour concessions, brevets, licences, marques, proc\u00e9d\u00e9s, solutions informatiques": { + "account_number": "7511" + }, + "Droits d'auteur et de reproduction": { + "account_number": "7516" + }, + "Autres droits et valeurs similaires": { + "account_number": "7518" + } + }, + "Revenus des immeubles non affect\u00e9s \u00e0 des activit\u00e9s professionnelles": { + "account_number": "752" + }, + "R\u00e9mun\u00e9rations de l'activit\u00e9 des administrateurs et des g\u00e9rants": { + "account_number": "753" + }, + "Ristournes per\u00e7ues des coop\u00e9ratives provenant des exc\u00e9dents": { + "account_number": "754" + }, + "755-Quote-part de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part de perte transf\u00e9r\u00e9e - comptabilit\u00e9 du g\u00e9rant": { + "account_number": "7551" + }, + "Quote-part de b\u00e9n\u00e9fice attribu\u00e9e - comptabilit\u00e9 des associ\u00e9s non-g\u00e9rants": { + "account_number": "7555" + } + }, + "Gains de change sur cr\u00e9ances et dettes commerciales": { + "account_number": "756" + }, + "Produits des cessions d'immobilisations incorporelles et corporelles": { + "account_number": "757" + }, + "758-Indemnit\u00e9s et autres produits": { + "D\u00e9dits et p\u00e9nalit\u00e9s per\u00e7us sur achats et ventes": { + "account_number": "7581" + }, + "Lib\u00e9ralit\u00e9s re\u00e7ues": { + "account_number": "7582" + }, + "Rentr\u00e9es sur cr\u00e9ances amorties": { + "account_number": "7583" + }, + "D\u00e9gr\u00e8vements d'imp\u00f4ts autres qu'imp\u00f4ts sur les b\u00e9n\u00e9fices": { + "account_number": "7584" + }, + "Bonis provenant de clauses d'indexation": { + "account_number": "7585" + }, + "Lots": { + "account_number": "7586" + }, + "Indemnit\u00e9s d'assurance": { + "account_number": "7587" + }, + "Op\u00e9rations de constitution ou liquidation des fiducies": { + "account_number": "7588" + } + } + }, + "76-Produits financiers": { + "761-Produits de participations": { + "Revenus des titres de participation": { + "account_number": "7611" + }, + "Produits de la fiducie, r\u00e9sultat de la p\u00e9riode": { + "account_number": "7612" + }, + "Revenus sur autres formes de participation": { + "account_number": "7616" + }, + "Revenus des cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "account_number": "7617" + } + }, + "762-Produits des autres immobilisations financi\u00e8res": { + "Revenus des titres immobilis\u00e9s": { + "account_number": "7621" + }, + "Revenus des pr\u00eats": { + "account_number": "7626" + }, + "Revenus des cr\u00e9ances immobilis\u00e9es": { + "account_number": "7627" + } + }, + "763-Revenus des autres cr\u00e9ances": { + "Revenus des cr\u00e9ances commerciales": { + "account_number": "7631" + }, + "Revenus des cr\u00e9ances diverses": { + "account_number": "7638" + } + }, + "Revenus des valeurs mobili\u00e8res de placement": { + "account_number": "764" + }, + "Escomptes obtenus": { + "account_number": "765" + }, + "Gains de change financiers": { + "account_type": "Round Off", + "account_number": "766" + }, + "767-Produits sur cession d'\u00e9l\u00e9ments financiers": { + "Produits des cessions d'immobilisations financi\u00e8res": { + "account_number": "7671" + }, + "Produits nets sur cessions de titres immobilis\u00e9s de l'activit\u00e9 de portefeuille": { + "account_number": "7672" + }, + "Produits nets sur cessions de valeurs mobili\u00e8res de placement": { + "account_number": "7673" + }, + "Produits nets sur cessions de jetons": { + "account_number": "7674" + } + }, + "768-Autres produits financiers": { + "Bonis provenant du rachat par l'entreprise d'actions et d'obligations \u00e9mises par elle-m\u00eame": { + "account_number": "7683" + } + } + }, + "77-Produits exceptionnels": { + "(Compte \u00e0 la disposition des entit\u00e9s pour enregistrer, en cours d'exercice, les produits sur exercices ant\u00e9rieurs)": { + "account_number": "772" + }, + "Autres produits exceptionnels": { + "account_number": "778" + } + }, + "78-Reprises sur amortissements, d\u00e9pr\u00e9ciations et provisions": { + "781-Reprises sur amortissements, d\u00e9pr\u00e9ciations et provisions (\u00e0 inscrire dans les produits d'exploitation)": { + "7811-Reprises sur amortissements des immobilisations incorporelles et corporelles": { + "Immobilisations incorporelles": { + "account_number": "78111" + }, + "Immobilisations corporelles": { + "account_number": "78112" + } + }, + "Reprises sur provisions d'exploitation": { + "account_number": "7815" + }, + "7816-Reprises sur d\u00e9pr\u00e9ciations des immobilisations incorporelles et corporelles": { + "Immobilisations incorporelles": { + "account_number": "78161" + }, + "Immobilisations corporelles": { + "account_number": "78162" + } + }, + "7817-Reprises sur d\u00e9pr\u00e9ciations des actifs circulants": { + "Stocks et en-cours": { + "account_number": "78173" + }, + "Cr\u00e9ances": { + "account_number": "78174" + } + } + }, + "786-Reprises sur d\u00e9pr\u00e9ciations et provisions (\u00e0 inscrire dans les produits financiers)": { + "Reprises sur provisions financi\u00e8res": { + "account_number": "7865" + }, + "7866-Reprises sur d\u00e9pr\u00e9ciations des \u00e9l\u00e9ments financiers": { + "Immobilisations financi\u00e8res": { + "account_number": "78662" + }, + "Valeurs mobili\u00e8res de placement": { + "account_number": "78665" + } + } + }, + "787-Reprises sur d\u00e9pr\u00e9ciations et provisions (\u00e0 inscrire dans les produits exceptionnels)": { + "7872-Reprises sur provisions r\u00e9glement\u00e9es (immobilisations)": { + "Amortissements d\u00e9rogatoires": { + "account_number": "78725" + } + }, + "Reprises sur provisions r\u00e9glement\u00e9es (stocks)": { + "account_number": "7873" + }, + "Reprises sur autres provisions r\u00e9glement\u00e9es": { + "account_number": "7874" + }, + "Reprises sur provisions exceptionnelles": { + "account_number": "7875" + }, + "Reprises sur d\u00e9pr\u00e9ciations exceptionnelles": { + "account_number": "7876" + } + } + } + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/fr_plan2025_comptable_general_ex_agricole.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/fr_plan2025_comptable_general_ex_agricole.json new file mode 100644 index 00000000000..6d8d2b14302 --- /dev/null +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/fr_plan2025_comptable_general_ex_agricole.json @@ -0,0 +1,3260 @@ + +{ + "country_code": "fr", + "name": "France - Plan Comptable General Agricole 2025 avec code", + "tree": { + "1-Comptes de capitaux": { + "root_type": "Equity", + "10-Capital et r\u00e9serves": { + "101-Capital": { + "Capital individuel initial (au ..\/..\/..\/)": { + "account_number": "1011" + }, + "Variations capital individuel initial": { + "account_number": "1012" + }, + "Capital souscrit - non appel\u00e9": { + "account_number": "1013" + }, + "Capital souscrit - appel\u00e9, vers\u00e9": { + "account_number": "1014" + }, + "1015-Capital souscrit - appel\u00e9, non vers\u00e9": { + "Capital non amorti": { + "account_number": "10151" + }, + "Capital amorti": { + "account_number": "10152" + } + }, + "Capital souscrit soumis \u00e0 des r\u00e9glementations particuli\u00e8res": { + "account_number": "1018" + } + }, + "104-Primes li\u00e9es au capital social": { + "Primes d'\u00e9mission": { + "account_number": "1041" + }, + "Primes de fusion": { + "account_number": "1042" + }, + "Primes d'apport": { + "account_number": "1043" + }, + "Primes de conversion d'obligations en actions": { + "account_number": "1044" + }, + "Bons de souscription d'actions": { + "account_number": "1045" + } + }, + "105-Ecarts de r\u00e9\u00e9valuation": { + "R\u00e9serve sp\u00e9ciale de r\u00e9\u00e9valuation": { + "account_number": "1051" + }, + "Ecart de r\u00e9\u00e9valuation libre": { + "account_number": "1052" + }, + "R\u00e9serve de r\u00e9\u00e9valuation": { + "account_number": "1053" + }, + "Ecarts de r\u00e9\u00e9valuation (autres op\u00e9rations l\u00e9gales)": { + "account_number": "1055" + }, + "Autres \u00e9carts de r\u00e9\u00e9valuation en France": { + "account_number": "1057" + }, + "Autres \u00e9carts de r\u00e9\u00e9valuation \u00e0 l'Etranger": { + "account_number": "1058" + } + }, + "106-R\u00e9serves": { + "1061-R\u00e9serve l\u00e9gale": { + "R\u00e9serve l\u00e9gale proprement dite": { + "account_number": "10611" + }, + "Plus-values nettes \u00e0 long terme": { + "account_number": "10612" + } + }, + "R\u00e9serves indisponibles": { + "account_number": "1062" + }, + "R\u00e9serves statutaires ou contractuelles": { + "account_number": "1063" + }, + "1064-R\u00e9serves r\u00e9glement\u00e9es": { + "Plus-values nettes \u00e0 long terme": { + "account_number": "10641" + }, + "R\u00e9serves cons\u00e9cutives \u00e0 l'octroi de subventions d'investissement": { + "account_number": "10643" + }, + "Autres r\u00e9serves r\u00e9glement\u00e9es": { + "account_number": "10648" + } + }, + "1068-Autres r\u00e9serves": { + "R\u00e9serve de propre assureur": { + "account_number": "10681" + }, + "R\u00e9serves diverses": { + "account_number": "10688" + } + } + }, + "Ecart d'\u00e9quivalence": { + "account_number": "107" + }, + "Compte de l'exploitant": { + "account_number": "108" + }, + "109-Actionnaires et associ\u00e9s : Capital souscrit - non appel\u00e9": { + "Actionnaires : Capital souscrit - non appel\u00e9": { + "account_number": "1091" + }, + "Associ\u00e9s : Capital souscrit - non appel\u00e9": { + "account_number": "1092" + } + } + }, + "11-Report \u00e0 nouveau (solde cr\u00e9diteur ou d\u00e9biteur)": { + "Report \u00e0 nouveau (solde cr\u00e9diteur)": { + "account_number": "110" + }, + "Report \u00e0 nouveau (solde d\u00e9biteur)": { + "account_number": "119" + } + }, + "12-R\u00e9sultat de l'exercice (b\u00e9n\u00e9fice ou perte)": { + "R\u00e9sultat de l'exercice (b\u00e9n\u00e9fice)": { + "account_number": "120" + }, + "R\u00e9sultat de l'exercice (perte)": { + "account_number": "129" + } + }, + "13-Subventions d'investissement": { + "131-Subventions d'\u00e9quipement": { + "Etat": { + "account_number": "1311" + }, + "R\u00e9gions": { + "account_number": "1312" + }, + "D\u00e9partements": { + "account_number": "1313" + }, + "Communes": { + "account_number": "1314" + }, + "Collectivit\u00e9s publiques": { + "account_number": "1315" + }, + "Entreprises publiques": { + "account_number": "1316" + }, + "Entreprises et organismes priv\u00e9s": { + "account_number": "1317" + }, + "Autres": { + "account_number": "1318" + } + }, + "Autres subventions d'investissement": { + "account_number": "138" + }, + "139-Subventions d'investissement inscrites au compte de r\u00e9sultat": { + "1391-Subventions d'\u00e9quipement inscrites au compte de r\u00e9sultat": { + "Etat": { + "account_number": "13911" + }, + "R\u00e9gions": { + "account_number": "13912" + }, + "D\u00e9partements": { + "account_number": "13913" + }, + "Communes": { + "account_number": "13914" + }, + "Collectivit\u00e9s publiques": { + "account_number": "13915" + }, + "Entreprises publiques": { + "account_number": "13916" + }, + "Entreprises et organismes priv\u00e9s": { + "account_number": "13917" + }, + "Autres": { + "account_number": "13918" + } + }, + "Autres subventions d'investissement inscrites au compte de r\u00e9sultat": { + "account_number": "1398" + } + } + }, + "14-Provisions r\u00e9glement\u00e9es": { + "142-Provisions r\u00e9glement\u00e9es relatives aux immobilisations": { + "Provisions pour investissement (participation des salari\u00e9s)": { + "account_number": "1424" + } + }, + "143-Provisions r\u00e9glement\u00e9es relatives aux stocks": { + "Hausse des prix": { + "account_number": "1431" + }, + "Fluctuation des cours": { + "account_number": "1432" + } + }, + "Provisions r\u00e9glement\u00e9es relatives aux autres \u00e9l\u00e9ments de l'actif": { + "account_number": "144" + }, + "Amortissements d\u00e9rogatoires": { + "account_number": "145" + }, + "Provision sp\u00e9ciale de r\u00e9\u00e9valuation": { + "account_number": "146" + }, + "Plus-values r\u00e9investies": { + "account_number": "147" + }, + "Autres provisions r\u00e9glement\u00e9es": { + "account_number": "148" + } + }, + "15-Provisions": { + "151-Provisions pour risques": { + "Provisions pour litiges": { + "account_number": "1511" + }, + "Provisions pour garanties donn\u00e9es aux clients": { + "account_number": "1512" + }, + "Provisions pour pertes sur march\u00e9s \u00e0 terme": { + "account_number": "1513" + }, + "Provisions pour amendes et p\u00e9nalit\u00e9s": { + "account_number": "1514" + }, + "Provisions pour pertes de change": { + "account_number": "1515" + }, + "Provisions pour pertes sur contrats": { + "account_number": "1516" + }, + "Autres provisions pour risques": { + "account_number": "1518" + } + }, + "Provisions pour pensions et obligations similaires": { + "account_number": "153" + }, + "Provisions pour restructurations": { + "account_number": "154" + }, + "Provisions pour imp\u00f4ts": { + "account_number": "155" + }, + "Provisions pour renouvellement des immobilisations": { + "account_number": "156" + }, + "157-Provisions pour charges \u00e0 r\u00e9partir sur plusieurs exercices": { + "Provisions pour gros entretien ou grandes r\u00e9visions": { + "account_number": "1572" + } + }, + "158-Autres provisions pour charges": { + "Provisions pour remises en \u00e9tat": { + "account_number": "1581" + } + } + }, + "16-Emprunts et dettes assimil\u00e9es": { + "Emprunts obligataires convertibles": { + "account_number": "161" + }, + "Autres emprunts obligataires": { + "account_number": "163" + }, + "164-Emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "Emprunts fonciers": { + "account_number": "1641" + }, + "Autres emprunts \u00e0 moyen et long terme": { + "account_number": "1642" + }, + "Emprunts \u00e0 court terme": { + "account_number": "1643" + } + }, + "165-D\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "D\u00e9p\u00f4ts": { + "account_number": "1651" + }, + "Cautionnements": { + "account_number": "1655" + } + }, + "166-Participation des salari\u00e9s aux r\u00e9sultats": { + "Comptes bloqu\u00e9s": { + "account_number": "1661" + }, + "Fonds de participation": { + "account_number": "1662" + } + }, + "167-Emprunts et dettes assortis de conditions particuli\u00e8res": { + "Emissions de titres participatifs": { + "account_number": "1671" + }, + "Avances conditionn\u00e9es": { + "account_number": "1674" + }, + "Emprunts participatifs": { + "account_number": "1675" + } + }, + "168-Autres emprunts et dettes assimil\u00e9es": { + "Autres emprunts": { + "account_number": "1681" + }, + "Rentes viag\u00e8res capitalis\u00e9es": { + "account_number": "1685" + }, + "Autres dettes": { + "account_number": "1687" + }, + "1688-Int\u00e9r\u00eats courus": { + "sur emprunts obligataires convertibles": { + "account_number": "16881" + }, + "sur autres emprunts obligataires": { + "account_number": "16883" + }, + "16884-sur emprunts aupr\u00e8s des \u00e9tablissements de cr\u00e9dit": { + "Int\u00e9r\u00eats courus sur emprunts fonciers": { + "account_number": "168841" + }, + "Int\u00e9r\u00eats courus sur autres emprunts MLT": { + "account_number": "168842" + }, + "Int\u00e9r\u00eats courus sur emprunts court terme": { + "account_number": "168843" + } + }, + "sur d\u00e9p\u00f4ts et cautionnements re\u00e7us": { + "account_number": "16885" + }, + "sur participation des salari\u00e9s aux r\u00e9sultats": { + "account_number": "16886" + }, + "sur emprunts et dettes assortis de conditions particuli\u00e8res": { + "account_number": "16887" + }, + "sur autres emprunts et dettes assimil\u00e9es": { + "account_number": "16888" + } + } + }, + "Primes de remboursement des obligations": { + "account_number": "169" + } + }, + "17-Dettes rattach\u00e9es \u00e0 des participations": { + "171-Dettes rattach\u00e9es \u00e0 des participations (groupe)": { + "Principal": { + "account_number": "1711" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "1712" + } + }, + "172-Dettes rattach\u00e9es \u00e0 des participations \u00e0 des organismes professionnels agricoles (autres que les \u00e9tablissements de cr\u00e9dit)": { + "Principal": { + "account_number": "1721" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "1728" + } + }, + "174-Dettes rattach\u00e9es \u00e0 des participations (hors groupe)": { + "Principal": { + "account_number": "1741" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "1748" + } + }, + "178-Dettes rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "Principal": { + "account_number": "1781" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "1788" + } + } + }, + "18-Comptes de liaison des \u00e9tablissements et soci\u00e9t\u00e9s en participation": { + "Comptes de liaison des \u00e9tablissements": { + "account_number": "181" + }, + "Biens et prestations de services \u00e9chang\u00e9s entre \u00e9tablissements (charges)": { + "account_number": "186" + }, + "Biens et prestations de services \u00e9chang\u00e9s entre \u00e9tablissements (produits)": { + "account_number": "187" + }, + "Comptes de liaison des soci\u00e9t\u00e9s en participation": { + "account_number": "188" + } + } + }, + "2-Comptes d'immobilisations": { + "root_type": "Asset", + "20-Immobilisations incorporelles": { + "201-Frais d'\u00e9tablissement": { + "Frais de constitution": { + "account_number": "2011" + }, + "2012-Frais de premier \u00e9tablissement": { + "Frais de prospection": { + "account_number": "20121" + }, + "Frais de publicit\u00e9": { + "account_number": "20122" + } + }, + "Frais d'augmentation de capital et d'op\u00e9rations diverses (fusions, scissions, transformations)": { + "account_number": "2013" + } + }, + "Frais de recherche et de d\u00e9veloppement": { + "account_number": "203" + }, + "Concessions et droits similaires, brevets, licences, marques, proc\u00e9d\u00e9s, logiciels, droits et valeurs similaires": { + "account_number": "205" + }, + "Droit au bail": { + "account_number": "206" + }, + "207-Fonds rural et commercial": { + "Fonds agricole": { + "account_number": "2071" + }, + "Fonds commercial": { + "account_number": "2072" + } + }, + "208-Autres immobilisations incorporelles": { + "Usufruit temporaire": { + "account_number": "2082" + } + } + }, + "21-Immobilisations corporelles": { + "account_type": "Fixed Asset", + "211-Terrains": { + "account_type": "Fixed Asset", + "2111-Terrains nus": { + "account_type": "Fixed Asset", + "Terrains nus exploit\u00e9s en faire valoir direct": { + "account_type": "Fixed Asset", + "account_number": "21111" + }, + "Autres terrains nus": { + "account_type": "Fixed Asset", + "account_number": "21112" + } + }, + "Terrains am\u00e9nag\u00e9s": { + "account_type": "Fixed Asset", + "account_number": "2112" + }, + "Sous-sols et sur-sols": { + "account_type": "Fixed Asset", + "account_number": "2113" + }, + "2114-Terrains de gisement": { + "account_type": "Fixed Asset", + "Carri\u00e8res": { + "account_type": "Fixed Asset", + "account_number": "21141" + } + }, + "2115-Terrains b\u00e2tis": { + "account_type": "Fixed Asset", + "affect\u00e9s \u00e0 la production agricole": { + "account_type": "Fixed Asset", + "account_number": "21151" + }, + "affect\u00e9s \u00e0 une autre activit\u00e9 professionnelle": { + "account_type": "Fixed Asset", + "account_number": "21155" + }, + "affect\u00e9s \u00e0 des op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset", + "account_number": "21158" + } + }, + "Compte d'ordre sur immobilisations (art. 6 du d\u00e9cret 78.737 du 11-07-1978)": { + "account_type": "Fixed Asset", + "account_number": "2116" + } + }, + "Agencements et am\u00e9nagements de terrains": { + "account_type": "Fixed Asset", + "account_number": "212" + }, + "213-Constructions sur sol propre": { + "account_type": "Fixed Asset", + "2131-B\u00e2timents": { + "account_type": "Fixed Asset", + "affect\u00e9s \u00e0 la production agricole": { + "account_type": "Fixed Asset", + "account_number": "21311" + }, + "affect\u00e9s \u00e0 une autre activit\u00e9 professionnelle": { + "account_type": "Fixed Asset", + "account_number": "21315" + }, + "affect\u00e9s \u00e0 des op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset", + "account_number": "21318" + } + }, + "2135-Installations g\u00e9n\u00e9rales - agencements - am\u00e9nagements des constructions": { + "account_type": "Fixed Asset", + "affect\u00e9s \u00e0 la production agricole": { + "account_type": "Fixed Asset", + "account_number": "21351" + }, + "affect\u00e9s \u00e0 une autre activit\u00e9 professionnelle": { + "account_type": "Fixed Asset", + "account_number": "21355" + }, + "affect\u00e9s \u00e0 des op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset", + "account_number": "21358" + } + }, + "Ouvrages d'infrastructure": { + "account_type": "Fixed Asset", + "account_number": "2138" + } + }, + "214-Constructions sur sol d'autrui": { + "account_type": "Fixed Asset", + "2141-B\u00e2timents": { + "account_type": "Fixed Asset", + "affect\u00e9s \u00e0 la production agricole": { + "account_type": "Fixed Asset", + "account_number": "21411" + }, + "affect\u00e9s \u00e0 une autre activit\u00e9 professionnelle": { + "account_type": "Fixed Asset", + "account_number": "21415" + }, + "affect\u00e9s \u00e0 des op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset", + "account_number": "21418" + } + }, + "2145-Installations g\u00e9n\u00e9rales - agencements - am\u00e9nagements des constructions": { + "account_type": "Fixed Asset", + "affect\u00e9s \u00e0 la production agricole": { + "account_type": "Fixed Asset", + "account_number": "21451" + }, + "affect\u00e9s \u00e0 une autre activit\u00e9 professionnelle": { + "account_type": "Fixed Asset", + "account_number": "21455" + }, + "affect\u00e9s \u00e0 des op\u00e9rations non professionnelles": { + "account_type": "Fixed Asset", + "account_number": "21458" + } + }, + "Ouvrages d'infrastructure": { + "account_type": "Fixed Asset", + "account_number": "2148" + } + }, + "215-Installations techniques, mat\u00e9riels et outillage": { + "account_type": "Fixed Asset", + "Installations techniques sur sol propre": { + "account_type": "Fixed Asset", + "account_number": "2151" + }, + "Installations techniques sur sol d'autrui": { + "account_type": "Fixed Asset", + "account_number": "2153" + }, + "Mat\u00e9riel": { + "account_type": "Fixed Asset", + "account_number": "2154" + }, + "Outillage": { + "account_type": "Fixed Asset", + "account_number": "2155" + }, + "Agencements et am\u00e9nagements du mat\u00e9riel et outillage industriels": { + "account_type": "Fixed Asset", + "account_number": "2157" + } + }, + "Am\u00e9liorations du fonds": { + "account_type": "Fixed Asset", + "account_number": "217" + }, + "218-Autres immobilisations corporelles (hors biens vivants)": { + "account_type": "Fixed Asset", + "Installations g\u00e9n\u00e9rales, agencements, am\u00e9nagements divers": { + "account_type": "Fixed Asset", + "account_number": "2181" + }, + "Mat\u00e9riel de transport": { + "account_type": "Fixed Asset", + "account_number": "2182" + }, + "Mat\u00e9riel de bureau et mat\u00e9riel informatique": { + "account_type": "Fixed Asset", + "account_number": "2183" + }, + "Mobilier": { + "account_type": "Fixed Asset", + "account_number": "2184" + }, + "Emballages r\u00e9cup\u00e9rables": { + "account_type": "Fixed Asset", + "account_number": "2186" + }, + "Autres": { + "account_type": "Fixed Asset", + "account_number": "2188" + } + } + }, + "Immobilisations mises en concession": { + "account_number": "22" + }, + "23-Immobilisations en cours": { + "231-Immobilisations corporelles en cours (hors biens vivants)": { + "Terrains (en cours)": { + "account_number": "2311" + }, + "Agencements et am\u00e9nagements de terrains (en cours)": { + "account_number": "2312" + }, + "Constructions sur sol propre (en cours)": { + "account_number": "2313" + }, + "Constructions sur sol d'autrui (en cours)": { + "account_number": "2314" + }, + "Installations techniques, mat\u00e9riel et outillage (en cours)": { + "account_number": "2315" + }, + "Autres immobilisations corporelles - hors biens vivants (en cours)": { + "account_number": "2318" + } + }, + "Immobilisations incorporelles en cours": { + "account_number": "232" + }, + "234-Immobilisations corporelles en cours (biens vivants)": { + "Animaux reproducteurs (jeunes de renouvellement)": { + "account_number": "2341" + }, + "Animaux de services (en cours)": { + "account_number": "2343" + }, + "Plantations p\u00e9rennes (en cours)": { + "account_number": "2346" + }, + "Autres v\u00e9g\u00e9taux immobilis\u00e9s (en cours)": { + "account_number": "2347" + } + }, + "Avances et acomptes vers\u00e9s sur immobilisations incorporelles": { + "account_number": "237" + }, + "238-Avances et acomptes vers\u00e9s sur commandes d'immobilisations corporelles": { + "Immobilisations corporelles (hors biens vivants)": { + "account_number": "2381" + }, + "Immobilisations corporelles (biens vivants)": { + "account_number": "2384" + } + } + }, + "24-Immobilisations en cours (biens vivants)": { + "Animaux reproducteurs (adultes)": { + "account_number": "241" + }, + "Animaux reproducteurs (jeunes de renouvellement)": { + "account_number": "242" + }, + "Animaux de services": { + "account_number": "243" + }, + "246-Plantations p\u00e9rennes": { + "Plantations p\u00e9rennes sur sol propre": { + "account_number": "2461" + }, + "Plantations p\u00e9rennes sur sol d'autrui": { + "account_number": "2465" + }, + "Am\u00e9nagements des plantations p\u00e9rennes": { + "account_number": "2467" + } + }, + "247-Autres v\u00e9g\u00e9taux immobilis\u00e9s": { + "Autres v\u00e9g\u00e9taux immobilis\u00e9s sur sol propre": { + "account_number": "2471" + }, + "Autres v\u00e9g\u00e9taux immobilis\u00e9s sur sol d'autrui": { + "account_number": "2475" + }, + "Am\u00e9nagements des autres v\u00e9g\u00e9taux immobilis\u00e9s": { + "account_number": "2477" + } + } + }, + "Entreprises li\u00e9es - parts et cr\u00e9ances": { + "account_number": "25" + }, + "26-Participations et cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "261-Titres de participation": { + "Actions": { + "account_number": "2611" + }, + "Autres titres": { + "account_number": "2618" + } + }, + "262-Participations \u00e0 des organismes professionnels agricoles": { + "Soci\u00e9t\u00e9s coop\u00e9ratives agricoles (sauf CUMA)": { + "account_number": "2621" + }, + "CUMA": { + "account_number": "2622" + }, + "SICA": { + "account_number": "2624" + }, + "Autres": { + "account_number": "2628" + } + }, + "Autres formes de participation": { + "account_number": "266" + }, + "267-Cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations (groupe)": { + "account_number": "2671" + }, + "2672-Cr\u00e9ances rattach\u00e9es \u00e0 des participations \u00e0 des organismes professionnels agricoles": { + "Soci\u00e9t\u00e9s coop\u00e9ratives agricoles (sauf CUMA)": { + "account_number": "26721" + }, + "CUMA": { + "account_number": "26722" + }, + "SICA": { + "account_number": "26724" + }, + "Autres": { + "account_number": "26728" + } + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 d'autres participations": { + "account_number": "2674" + }, + "Versements repr\u00e9sentatifs d'apports non capitalis\u00e9s (appel de fonds)": { + "account_number": "2675" + }, + "Avances consolidables": { + "account_number": "2676" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "2678" + } + }, + "268-Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "Principal": { + "account_number": "2681" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "2688" + } + }, + "269-Versements restant \u00e0 effectuer sur titres de participation non lib\u00e9r\u00e9s": { + "sur titres de participation": { + "account_number": "2691" + }, + "sur participations \u00e0 des organismes professionnels agricoles": { + "account_number": "2692" + }, + "sur autres formes de participation": { + "account_number": "2696" + } + } + }, + "27-Autres immobilisations financi\u00e8res": { + "271-Titres immobilis\u00e9s (droit de propri\u00e9t\u00e9)": { + "Actions": { + "account_number": "2711" + }, + "Parts dans les \u00e9tablissements de cr\u00e9dit": { + "account_number": "2715" + }, + "Autres titres": { + "account_number": "2718" + } + }, + "272-Titres immobilis\u00e9s (droit de cr\u00e9ance)": { + "Obligations": { + "account_number": "2721" + }, + "Bons": { + "account_number": "2722" + }, + "Certificats de fonds de d\u00e9veloppement coop\u00e9ratifs": { + "account_number": "2723" + } + }, + "Titres immobilis\u00e9s de l'activit\u00e9 de portefeuille": { + "account_number": "273" + }, + "274-Pr\u00eats": { + "Pr\u00eats participatifs": { + "account_number": "2741" + }, + "Pr\u00eats aux associ\u00e9s": { + "account_number": "2742" + }, + "Pr\u00eats au personnel": { + "account_number": "2743" + }, + "Autres pr\u00eats": { + "account_number": "2748" + } + }, + "275-D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "D\u00e9p\u00f4ts": { + "account_number": "2751" + }, + "Cautionnements": { + "account_number": "2755" + } + }, + "276-Autres cr\u00e9ances immobilis\u00e9es": { + "Cr\u00e9ances diverses": { + "account_number": "2761" + }, + "2768-Int\u00e9r\u00eats courus": { + "sur titres immobilis\u00e9s (droit de cr\u00e9ance)": { + "account_number": "27682" + }, + "sur pr\u00eats": { + "account_number": "27684" + }, + "sur d\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "27685" + }, + "sur cr\u00e9ances diverses": { + "account_number": "27688" + } + } + }, + "Actions propres ou parts propres": { + "account_number": "277" + }, + "Versements restant \u00e0 effectuer sur titres immobilis\u00e9s non lib\u00e9r\u00e9s": { + "account_number": "279" + } + }, + "28-Amortissements des immobilisations": { + "account_type": "Accumulated Depreciation", + "280-Amortissements des immobilisations incorporelles": { + "account_type": "Accumulated Depreciation", + "Frais d'\u00e9tablissement": { + "account_type": "Accumulated Depreciation", + "account_number": "2801" + }, + "Frais de recherche et de d\u00e9veloppement": { + "account_type": "Accumulated Depreciation", + "account_number": "2803" + }, + "Concessions et droits similaires, brevets, licences, logiciels, droits et valeurs similaires": { + "account_type": "Accumulated Depreciation", + "account_number": "2805" + }, + "Fonds commercial": { + "account_type": "Accumulated Depreciation", + "account_number": "2807" + }, + "2808-Autres immobilisations incorporelles": { + "account_type": "Accumulated Depreciation", + "Usufruit temporaire": { + "account_type": "Accumulated Depreciation", + "account_number": "28082" + } + } + }, + "281-Amortissements des immobilisations corporelles (hors biens vivants)": { + "account_type": "Accumulated Depreciation", + "Terrains de gisement": { + "account_type": "Accumulated Depreciation", + "account_number": "2811" + }, + "Agencements, am\u00e9nagements de terrains amortissables": { + "account_type": "Accumulated Depreciation", + "account_number": "2812" + }, + "Constructions sur sol propre": { + "account_type": "Accumulated Depreciation", + "account_number": "2813" + }, + "Constructions sur sol d'autrui": { + "account_type": "Accumulated Depreciation", + "account_number": "2814" + }, + "Installations, mat\u00e9riel et outillage": { + "account_type": "Accumulated Depreciation", + "account_number": "2815" + }, + "Autres immobilisations corporelles (hors biens vivants)": { + "account_type": "Accumulated Depreciation", + "account_number": "2818" + } + }, + "Amortissement des immobilisations mises en concession": { + "account_type": "Accumulated Depreciation", + "account_number": "282" + }, + "284-Amortissement des immobilisations corporelles (biens vivants)": { + "Animaux reproducteurs (adultes)": { + "account_number": "2841" + }, + "Animaux de service": { + "account_number": "2843" + }, + "Plantation p\u00e9rennes": { + "account_number": "2846" + }, + "Autres v\u00e9g\u00e9taux immobilis\u00e9s": { + "account_number": "2847" + } + } + }, + "29-D\u00e9pr\u00e9ciations des immobilisations": { + "290-D\u00e9pr\u00e9ciations des immobilisations incorporelles": { + "Marques, proc\u00e9d\u00e9s, droits et valeurs similaires": { + "account_number": "2905" + }, + "Droit au bail": { + "account_number": "2906" + }, + "Fonds rural et commercial": { + "account_number": "2907" + }, + "Autres immobilisations incorporelles": { + "account_number": "2908" + } + }, + "291-D\u00e9pr\u00e9ciations des immobilisations corporelles (hors biens vivants)": { + "Terrains": { + "account_number": "2911" + }, + "Agencements et am\u00e9nagements de terrains": { + "account_number": "2912" + }, + "Constructions sur sol propre": { + "account_number": "2913" + }, + "Constructions sur sol d'autrui": { + "account_number": "2914" + }, + "Installations techniques, mat\u00e9riel et outillage": { + "account_number": "2915" + }, + "Am\u00e9liorations du fonds": { + "account_number": "2917" + }, + "Autres immobilisations corporelles (hors biens vivants)": { + "account_number": "2918" + } + }, + "D\u00e9pr\u00e9ciations des immobilisations mises en concession": { + "account_number": "292" + }, + "293-D\u00e9pr\u00e9ciations des immobilisations en cours": { + "Immobilisations corporelles en cours (hors biens vivants)": { + "account_number": "2931" + }, + "Immobilisations incorporelles en cours": { + "account_number": "2932" + }, + "Immobilisations corporelles en cours (biens vivants)": { + "account_number": "2934" + } + }, + "294-Autres immobilisations corporelles (biens vivants)": { + "Animaux reproducteurs (adultes)": { + "account_number": "2941" + }, + "Animaux reproducteurs (jeunes de renouvellement)": { + "account_number": "2942" + }, + "Animaux de service": { + "account_number": "2943" + }, + "Plantation p\u00e9rennes": { + "account_number": "2946" + }, + "Autres v\u00e9g\u00e9taux immobilis\u00e9s": { + "account_number": "2947" + } + }, + "296-D\u00e9pr\u00e9ciations des participations et cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "Titres de participation": { + "account_number": "2961" + }, + "Participations \u00e0 des organismes professionnels agricoles": { + "account_number": "2962" + }, + "Autres formes de participation": { + "account_number": "2966" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "account_number": "2967" + }, + "Cr\u00e9ances rattach\u00e9es \u00e0 des soci\u00e9t\u00e9s en participation": { + "account_number": "2968" + } + }, + "297-D\u00e9pr\u00e9ciations des autres immobilisations financi\u00e8res": { + "Titres immobilis\u00e9s - droit de propri\u00e9t\u00e9": { + "account_number": "2971" + }, + "Titres immobilis\u00e9s - droit de cr\u00e9ances": { + "account_number": "2972" + }, + "Titres immobilis\u00e9s de l'activit\u00e9 de portefeuille": { + "account_number": "2973" + }, + "Pr\u00eats": { + "account_number": "2974" + }, + "D\u00e9p\u00f4ts et cautionnements vers\u00e9s": { + "account_number": "2975" + }, + "Autres cr\u00e9ances immobilis\u00e9es": { + "account_number": "2976" + } + } + } + }, + "3-Comptes de stocks et en-cours": { + "root_type": "Asset", + "30-Stocks et en-cours": { + "301-Approvisionnements": { + "Engrais et amendements": { + "account_number": "3011" + }, + "Semences et plants": { + "account_number": "3012" + }, + "Produits de d\u00e9fense des v\u00e9g\u00e9taux": { + "account_number": "3013" + }, + "Aliments du b\u00e9tail": { + "account_number": "3014" + }, + "Produits de d\u00e9fense des animaux": { + "account_number": "3015" + }, + "Produits de reproduction animale": { + "account_number": "3016" + }, + "3017-Emballages": { + "Emballages perdus": { + "account_number": "30171" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_number": "30175" + }, + "Emballages \u00e0 usage mixte": { + "account_number": "30177" + } + }, + "Combustibles": { + "account_number": "3018" + } + }, + "302-Autres approvisionnements": { + "Carburants et lubrifiants": { + "account_number": "3021" + }, + "Produits d'entretien": { + "account_number": "3022" + }, + "Fournitures d'atelier et de magasin": { + "account_number": "3023" + }, + "Fournitures de bureau": { + "account_number": "3024" + }, + "Denr\u00e9es et fournitures pour le personnel": { + "account_number": "3025" + }, + "Mat\u00e9riaux divers": { + "account_number": "3026" + }, + "Autres fournitures consommables": { + "account_number": "3027" + }, + "Mati\u00e8res premi\u00e8res": { + "account_number": "3028" + } + }, + "Marchandises": { + "account_number": "307" + } + }, + "31-Animaux (cycle long)": { + "Stocks d'animaux (cycle long)": { + "account_number": "311" + } + }, + "32-Animaux (cycle court)": { + "Stocks d'animaux (cycle court)": { + "account_number": "321" + } + }, + "33-V\u00e9g\u00e9taux en terre (cycle long)": { + "331-Avances aux cultures (cycle long)": { + "Engrais et amendements en terre": { + "account_number": "3311" + }, + "Semences et plants en terre": { + "account_number": "3312" + }, + "Produit de d\u00e9fense des v\u00e9g\u00e9taux en terre": { + "account_number": "3313" + }, + "Autres approvisionnements en terre": { + "account_number": "3314" + }, + "Fa\u00e7ons culturales": { + "account_number": "3315" + }, + "Autres": { + "account_number": "3318" + } + } + }, + "34-V\u00e9g\u00e9taux en terre (cycle court)": { + "341-Avances aux cultures (cycle court)": { + "Engrais et amendements en terre": { + "account_number": "3411" + }, + "Semences et plants en terre": { + "account_number": "3412" + }, + "Produit de d\u00e9fense des v\u00e9g\u00e9taux en terre": { + "account_number": "3413" + }, + "Autres approvisionnements en terre": { + "account_number": "3414" + }, + "Fa\u00e7ons culturales": { + "account_number": "3415" + }, + "Autres": { + "account_number": "3418" + } + }, + "Autres v\u00e9g\u00e9taux en terre (cycle court)": { + "account_number": "348" + } + }, + "35-En-cours de production de biens et services (cycle long)": { + "Biens (cycle long)": { + "account_number": "355" + }, + "Autres biens (cycle long)": { + "account_number": "356" + }, + "Travaux \u00e0 fa\u00e7on (cycle long)": { + "account_number": "357" + }, + "Autres services (cycle long)": { + "account_number": "358" + } + }, + "36-En-cours de production de biens et services (cycle court)": { + "Biens (cycle court) - Produits v\u00e9g\u00e9taux": { + "account_number": "361" + }, + "Biens (cycle court) - Produits animaux": { + "account_number": "362" + }, + "Biens (cycle court) - Vins": { + "account_number": "363" + }, + "Biens (cycle court) - Alcools": { + "account_number": "364" + }, + "Biens (cycle court) - Autres produits transform\u00e9s": { + "account_number": "365" + }, + "Autres biens (activit\u00e9s annexes)": { + "account_number": "366" + }, + "Travaux \u00e0 fa\u00e7on (cycle court)": { + "account_number": "367" + }, + "Autres services (cycle court)": { + "account_number": "368" + } + }, + "37-Stocks de Produits": { + "account_type": "Stock", + "Produits interm\u00e9diaires v\u00e9g\u00e9taux": { + "account_type": "Stock", + "account_number": "371" + }, + "Produits interm\u00e9diaires animaux": { + "account_type": "Stock", + "account_number": "372" + }, + "Produits interm\u00e9diaires transform\u00e9s": { + "account_type": "Stock", + "account_number": "373" + }, + "Produits finis v\u00e9g\u00e9taux": { + "account_type": "Stock", + "account_number": "374" + }, + "Produits finis animaux": { + "account_type": "Stock", + "account_number": "375" + }, + "Produits finis transform\u00e9s": { + "account_type": "Stock", + "account_number": "376" + }, + "Produits r\u00e9siduels": { + "account_type": "Stock", + "account_number": "377" + }, + "Produits (activit\u00e9s annexes)": { + "account_type": "Stock", + "account_number": "378" + } + }, + "Inventaire permanent": { + "account_number": "38" + }, + "39-D\u00e9pr\u00e9ciations des stocks et en-cours": { + "D\u00e9pr\u00e9ciations des approvisionnements et marchandises": { + "account_number": "390" + }, + "D\u00e9pr\u00e9ciations des animaux (cycle long)": { + "account_number": "391" + }, + "D\u00e9pr\u00e9ciations des animaux (cycle court)": { + "account_number": "392" + }, + "D\u00e9pr\u00e9ciations des v\u00e9g\u00e9taux en terre (cycle long)": { + "account_number": "393" + }, + "D\u00e9pr\u00e9ciations des v\u00e9g\u00e9taux en terre (cycle court)": { + "account_number": "394" + }, + "D\u00e9pr\u00e9ciations des en-cours de production de biens et services (cycle long)": { + "account_number": "395" + }, + "D\u00e9pr\u00e9ciations des en-cours de production de biens et services (cycle court)": { + "account_number": "396" + }, + "D\u00e9pr\u00e9ciations des produits": { + "account_number": "397" + } + } + }, + "4-Comptes de tiers (ACTIF)": { + "root_type": "Asset", + "40-Fournisseurs et comptes rattach\u00e9s (ACTIF)": { + "409-Fournisseurs d\u00e9biteurs": { + "Fournisseurs - Avances et acomptes vers\u00e9s sur commandes": { + "account_number": "4091" + }, + "Fournisseurs - Cr\u00e9ances pour emballages et mat\u00e9riel \u00e0 rendre": { + "account_number": "4096" + }, + "4097-Fournisseurs - Autres avoirs": { + "Fournisseurs d'exploitation": { + "account_number": "40971" + }, + "Fournisseurs d'immobilisations": { + "account_number": "40974" + } + }, + "Rabais, remises, ristournes \u00e0 obtenir et autres avoirs non encore re\u00e7us": { + "account_number": "4098" + } + } + }, + "41-Clients et comptes rattach\u00e9s (ACTIF)": { + "account_type": "Receivable", + "411-Clients": { + "account_type": "Receivable", + "Clients - Ventes de biens ou de prestations de services": { + "account_type": "Receivable", + "account_number": "4111" + }, + "Clients - Retenues de garantie": { + "account_type": "Receivable", + "account_number": "4117" + } + }, + "Clients - Effets \u00e0 recevoir": { + "account_type": "Receivable", + "account_number": "413" + }, + "Clients douteux ou litigieux": { + "account_type": "Receivable", + "account_number": "416" + }, + "418-Clients - Produits non encore factur\u00e9s": { + "account_type": "Receivable", + "Clients - Factures \u00e0 \u00e9tablir": { + "account_type": "Receivable", + "account_number": "4181" + }, + "Clients - Int\u00e9r\u00eats courus": { + "account_type": "Receivable", + "account_number": "4188" + } + } + }, + "42-Personnel et comptes rattach\u00e9s (ACTIF)": { + "Personnel - Avances et acomptes": { + "account_number": "425" + } + }, + "43-Mutualit\u00e9 Sociale Agricole et autres organismes sociaux (ACTIF)": { + "Mutualit\u00e9 Sociale Agricole": { + "account_number": "431" + }, + "Autres organismes sociaux": { + "account_number": "437" + }, + "438-Organismes sociaux - Charges \u00e0 payer et produits \u00e0 recevoir": { + "Produits \u00e0 recevoir": { + "account_number": "4387" + } + } + }, + "44-Etat et autres collectivit\u00e9s publiques (ACTIF)": { + "441-Etat - Subventions \u00e0 recevoir": { + "Subventions d'investissement": { + "account_number": "4411" + }, + "Subventions d'exploitation": { + "account_number": "4417" + }, + "Subventions d'\u00e9quilibre": { + "account_number": "4418" + }, + "Avances sur subventions": { + "account_number": "4419" + } + }, + "Op\u00e9rations particuli\u00e8res avec l'Etat, les collectivit\u00e9s publiques, les organismes internationaux": { + "account_number": "443" + }, + "445-Etat - Taxes sur le chiffre d'affaires": { + "TVA due intracommunautaire": { + "account_number": "4452", + "account_type": "Tax", + "tax_rate": -20 + }, + "44551-TVA à décaisser": { + "TVA 20% Déductible": { + "account_number": "445511", + "account_type": "Tax", + "tax_rate": 20 + }, + "TVA 10% Déductible": { + "account_number": "445512", + "account_type": "Tax", + "tax_rate": 10 + }, + "TVA 5.5% Déductible": { + "account_number": "445513", + "account_type": "Tax", + "tax_rate": 5.5 + }, + "TVA 2.1% Déductible": { + "account_number": "445514", + "account_type": "Tax", + "tax_rate": 2.1 + } + }, + "4456-Taxes sur le chiffre d'affaires d\u00e9ductibles": { + "TVA sur immobilisations": { + "account_number": "44562" + }, + "TVA transf\u00e9r\u00e9e par d'autres entreprises": { + "account_number": "44563" + }, + "44566-TVA sur autres biens et services": { + "TVA sur intracommunautaire sur biens et services": { + "account_number": "445662", + "account_type": "Tax", + "tax_rate": 20 + } + }, + "Cr\u00e9dit de TVA \u00e0 reporter": { + "account_number": "44567" + }, + "Taxes assimil\u00e9es \u00e0 la TVA": { + "account_number": "44568" + } + }, + "4458-Taxes sur le chiffre d'affaires \u00e0 r\u00e9gulariser ou en attente": { + "Acomptes - R\u00e9gime simplifi\u00e9 d'imposition": { + "account_number": "44581" + }, + "Acomptes - R\u00e9gime du forfait": { + "account_number": "44582" + }, + "Remboursement de taxes sur le chiffre d'affaires demand\u00e9": { + "account_number": "44583" + }, + "Taxes sur le chiffre d'affaires sur factures non parvenues": { + "account_number": "44586" + } + } + }, + "448-Etat - Charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges fiscales sur cong\u00e9s \u00e0 payer": { + "account_number": "4482" + }, + "Autres charges \u00e0 payer": { + "account_number": "4486" + }, + "Produits \u00e0 recevoir": { + "account_number": "4487" + } + } + }, + "45-Groupe, communaut\u00e9s d'exploitation et associ\u00e9s (ACTIF)": { + "456-Associ\u00e9s - Op\u00e9rations sur le capital": { + "4562-Apporteurs - Capital appel\u00e9, non vers\u00e9": { + "Actionnaires - Capital souscrit et appel\u00e9, non vers\u00e9": { + "account_number": "45621" + }, + "Associ\u00e9s - Capital appel\u00e9, non vers\u00e9": { + "account_number": "45625" + } + } + } + }, + "46-D\u00e9biteurs divers et cr\u00e9diteurs divers (ACTIF)": { + "Cr\u00e9ances sur cessions d'immobilisations": { + "account_number": "462" + }, + "Cr\u00e9ances sur cessions de valeurs mobili\u00e8res de placement": { + "account_number": "465" + }, + "Autres comptes d\u00e9biteurs ou cr\u00e9diteurs": { + "account_number": "467" + }, + "468-Divers - Charges \u00e0 payer et produits \u00e0 recevoir": { + "Produits \u00e0 recevoir": { + "account_number": "4687" + } + } + }, + "47-Comptes transitoires ou d'attente (ACTIF)": { + "471-Comptes d'attente (ACTIF)": { + "account_type": "Temporary" + }, + "476-Diff\u00e9rence de conversion - Actif": { + "Diminution des cr\u00e9ances": { + "account_number": "4761" + }, + "Augmentation des dettes": { + "account_number": "4762" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4768" + } + }, + "478-Autres comptes transitoires (ACTIF)": {} + }, + "48-Comptes de r\u00e9gularisation (ACTIF)": { + "481-Charges \u00e0 r\u00e9partir sur plusieurs exercices": { + "Frais d'\u00e9mission des emprunts": { + "account_number": "4816" + } + }, + "Charges constat\u00e9es d'avance": { + "account_number": "486" + }, + "488-Comptes de r\u00e9partition p\u00e9riodique des charges et des produits": { + "Charges": { + "account_number": "4886" + } + } + }, + "49-D\u00e9pr\u00e9ciations des comptes de tiers (ACTIF)": { + "495-D\u00e9pr\u00e9ciations des comptes du groupe, des communaut\u00e9s d'exploitation et des associ\u00e9s": { + "Comptes du groupe": { + "account_number": "4951" + }, + "Comptes courants des associ\u00e9s": { + "account_number": "4955" + }, + "Op\u00e9rations faites en commun et en GIE": { + "account_number": "4958" + } + }, + "496-D\u00e9pr\u00e9ciations des comptes de d\u00e9biteurs divers": { + "Cr\u00e9ances sur cessions d'immobilisations": { + "account_number": "4962" + }, + "Cr\u00e9ances sur cessions de valeurs mobili\u00e8res de placement": { + "account_number": "4965" + }, + "Autres comptes d\u00e9biteurs": { + "account_number": "4967" + } + } + } + }, + "4-Comptes de tiers (PASSIF)": { + "root_type": "Liability", + "40-Fournisseurs et comptes rattach\u00e9s (PASSIF)": { + "account_type": "Payable", + "401-Fournisseurs d'exploitation": { + "Fournisseurs - Achats de biens et de prestations de services": { + "account_type": "Payable", + "account_number": "4011" + }, + "Fournisseurs - Retenues de garantie": { + "account_type": "Payable", + "account_number": "4017" + } + }, + "Fournisseurs - Effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "403" + }, + "404-Fournisseurs d'immobilisations": { + "account_type": "Payable", + "Fournisseurs - Achats d'immobilisations": { + "account_type": "Payable", + "account_number": "4041" + }, + "Fournisseurs d'immobilisations - Retenues de garantie": { + "account_type": "Payable", + "account_number": "4047" + } + }, + "Fournisseurs d'immobilisations - Effets \u00e0 payer": { + "account_type": "Payable", + "account_number": "405" + }, + "408-Fournisseurs - Factures non parvenues": { + "account_type": "Stock Received But Not Billed", + "Fournisseurs d'exploitation": { + "account_type": "Stock Received But Not Billed", + "account_number": "4081" + }, + "Fournisseurs d'immobilisations": { + "account_type": "Asset Received But Not Billed", + "account_number": "4084" + }, + "Fournisseurs - Int\u00e9r\u00eats courus": { + "account_type": "Stock Received But Not Billed", + "account_number": "4088" + } + } + }, + "41-Clients et comptes rattach\u00e9s (PASSIF)": { + "419-Clients cr\u00e9diteurs": { + "Clients - Avances et acomptes re\u00e7us sur commandes": { + "account_number": "4191", + "account_type": "Payable" + }, + "Clients - Dettes sur emballages et mat\u00e9riels consign\u00e9s": { + "account_number": "4196" + }, + "Clients - Autres avoirs": { + "account_number": "4197" + }, + "Rabais, remises, ristournes \u00e0 accorder et autres avoirs \u00e0 \u00e9tablir": { + "account_number": "4198" + } + } + }, + "42-Personnel et comptes rattach\u00e9s (PASSIF)": { + "Personnel - R\u00e9mun\u00e9rations dues": { + "account_number": "421" + }, + "Comit\u00e9s d'entreprises, d'\u00e9tablissement": { + "account_number": "422" + }, + "424-Participation des salari\u00e9s aux r\u00e9sultats": { + "R\u00e9serve sp\u00e9ciale (art. L. 442-2 du Code du travail)": { + "account_number": "4246" + }, + "Comptes courants": { + "account_number": "4248" + } + }, + "Personnel - D\u00e9p\u00f4ts": { + "account_number": "426" + }, + "Personnel - Oppositions": { + "account_number": "427" + }, + "428-Personnel - Charges \u00e0 payer et produits \u00e0 recevoir": { + "Dettes provisionn\u00e9es pour cong\u00e9s \u00e0 payer": { + "account_number": "4282" + }, + "Dettes provisionn\u00e9es pour participation des salari\u00e9s aux r\u00e9sultats": { + "account_number": "4284" + }, + "Autres charges \u00e0 payer": { + "account_number": "4286" + }, + "Produits \u00e0 recevoir": { + "account_number": "4287" + } + } + }, + "43-Mutualit\u00e9 Sociale Agricole et autres organismes sociaux (PASSIF)": { + "438-Organismes sociaux - Charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges sociales sur cong\u00e9s \u00e0 payer": { + "account_number": "4382" + }, + "Autres charges \u00e0 payer": { + "account_number": "4386" + } + } + }, + "44-Etat et autres collectivit\u00e9s publiques (PASSIF)": { + "442-Etat - Imp\u00f4ts et taxes recouvrables sur des tiers": { + "Obligataires": { + "account_number": "4424" + }, + "Associ\u00e9s": { + "account_number": "4425" + } + }, + "Etat - Imp\u00f4ts sur les b\u00e9n\u00e9fices": { + "account_number": "444" + }, + "445-Etat - Taxes sur le chiffre d'affaires": { + "4455-Taxes sur le chiffre d'affaires \u00e0 d\u00e9caisser": { + "TVA \u00e0 d\u00e9caisser": { + "account_number": "44551" + }, + "Taxes assimil\u00e9es \u00e0 la TVA": { + "account_number": "44558" + } + }, + "4457-Taxes sur le chiffre d'affaires collect\u00e9es par l'entreprise": { + "44571-TVA collect\u00e9e": { + "account_type": "Tax", + "TVA 20% Collectée": { + "account_type": "Tax", + "account_number": "4457101", + "tax_rate": 20 + }, + "TVA 10% Collectée": { + "account_type": "Tax", + "account_number": "4457102", + "tax_rate": 10 + }, + "TVA 5.5% Collectée": { + "account_type": "Tax", + "account_number": "4457103", + "tax_rate": 5.5 + }, + "TVA 2.1% Collectée": { + "account_type": "Tax", + "account_number": "4457104", + "tax_rate": 2.1 + } + }, + "Taxes assimil\u00e9es \u00e0 la TVA": { + "account_number": "44578" + } + }, + "4458-Taxes sur le chiffre d'affaires \u00e0 r\u00e9gulariser ou en attente": { + "TVA r\u00e9cup\u00e9r\u00e9e d'avance": { + "account_number": "44584" + }, + "Taxes sur le chiffre d'affaires sur factures \u00e0 \u00e9tablir": { + "account_number": "44587" + } + } + }, + "Obligations cautionn\u00e9es": { + "account_number": "446" + }, + "Autres imp\u00f4ts, taxes et versements assimil\u00e9s": { + "account_number": "447" + } + }, + "45-Groupe, communaut\u00e9s d'exploitation et associ\u00e9s (PASSIF)": { + "Groupe": { + "account_number": "451" + }, + "455-Associ\u00e9s - Comptes courants": { + "Associ\u00e9s - Comptes courants (principal)": { + "account_number": "4551" + }, + "Associ\u00e9s - Comptes courants (int\u00e9r\u00eats courus)": { + "account_number": "4558" + } + }, + "456-Associ\u00e9s - Op\u00e9rations sur le capital": { + "4561-Associ\u00e9s - Comptes d'apport en soci\u00e9t\u00e9": { + "Apports en nature": { + "account_number": "45611" + }, + "Apports en num\u00e9raire": { + "account_number": "45615" + } + }, + "Associ\u00e9s - Versements re\u00e7us sur augmentation de capital": { + "account_number": "4563" + }, + "Associ\u00e9s - Versements anticip\u00e9s": { + "account_number": "4564" + }, + "Associ\u00e9s d\u00e9faillants": { + "account_number": "4566" + }, + "Associ\u00e9s - Capital \u00e0 rembourser": { + "account_number": "4567" + } + }, + "Associ\u00e9s - Dividendes \u00e0 payer": { + "account_number": "457" + }, + "458-Associ\u00e9s - Op\u00e9rations faites en commun et en GIE": { + "Op\u00e9rations courantes": { + "account_number": "4581" + }, + "Int\u00e9r\u00eats courus": { + "account_number": "4588" + } + } + }, + "46-D\u00e9biteurs divers et cr\u00e9diteurs divers (PASSIF)": { + "Dettes sur acquisitions de valeurs mobili\u00e8res de placement": { + "account_number": "464" + }, + "467-Autres comptes d\u00e9biteurs ou cr\u00e9diteurs": { + "Autres comptes d\u00e9biteurs": { + "account_number": "4671" + }, + "Autres comptes cr\u00e9diteurs": { + "account_number": "4672" + } + }, + "468-Divers - Charges \u00e0 payer et produits \u00e0 recevoir": { + "Charges \u00e0 payer": { + "account_number": "4686" + } + } + }, + "47-Comptes transitoires ou d'attente (PASSIF)": { + "471-Comptes d'attente (PASSIF)": { + "account_type": "Temporary" + }, + "477-Diff\u00e9rences de conversion - Passif": { + "Augmentation des cr\u00e9ances": { + "account_number": "4771" + }, + "Diminution des dettes": { + "account_number": "4772" + }, + "Diff\u00e9rences compens\u00e9es par couverture de change": { + "account_number": "4778" + } + }, + "478-Autres comptes transitoires (PASSIF)": {} + }, + "48-Comptes de r\u00e9gularisation (PASSIF)": { + "Produits constat\u00e9s d'avance": { + "account_number": "487" + }, + "488-Comptes de r\u00e9partition p\u00e9riodique des charges et des produits": { + "Produits": { + "account_number": "4887" + } + } + }, + "D\u00e9pr\u00e9ciations des comptes de tiers (PASSIF)": { + "account_number": "49" + } + }, + "5-Comptes financiers": { + "root_type": "Asset", + "50-Valeurs mobili\u00e8res de placement": { + "Parts dans des entreprises li\u00e9es": { + "account_number": "501" + }, + "Actions propres": { + "account_number": "502" + }, + "503-Actions": { + "Titres cot\u00e9s": { + "account_number": "5031" + }, + "Titres non cot\u00e9s": { + "account_number": "5035" + } + }, + "Autres titres conf\u00e9rant un droit de propri\u00e9t\u00e9": { + "account_number": "504" + }, + "Obligations et bons \u00e9mis par la soci\u00e9t\u00e9 et rachet\u00e9s par elle": { + "account_number": "505" + }, + "506-Obligations": { + "Titres cot\u00e9s": { + "account_number": "5061" + }, + "Titres non cot\u00e9s": { + "account_number": "5065" + } + }, + "Bons du Tr\u00e9sor et bons de caisse \u00e0 court terme": { + "account_number": "507" + }, + "508-Autres valeurs mobili\u00e8res de placement et autres cr\u00e9ances assimil\u00e9es": { + "Autres valeurs mobili\u00e8res": { + "account_number": "5081" + }, + "Bons de souscription": { + "account_number": "5082" + }, + "Int\u00e9r\u00eats courus sur obligations, bons et valeurs assimil\u00e9s": { + "account_number": "5088" + } + }, + "Versements restant \u00e0 effectuer sur valeurs mobili\u00e8res de placement non lib\u00e9r\u00e9es": { + "account_number": "509" + } + }, + "51-Banques, \u00e9tablissements financiers et assimil\u00e9s": { + "511-Valeurs \u00e0 l'encaissement": { + "Coupons \u00e9chus \u00e0 l'encaissement": { + "account_number": "5111" + }, + "Ch\u00e8ques \u00e0 encaisser": { + "account_number": "5112" + }, + "Effets \u00e0 l'encaissement": { + "account_number": "5113" + }, + "Effets \u00e0 l'escompte": { + "account_number": "5114" + } + }, + "512-Banques": { + "account_type": "Bank", + "Comptes en euros": { + "account_type": "Bank", + "account_number": "5121" + }, + "Comptes en devises": { + "account_type": "Bank", + "account_number": "5124" + } + }, + "Ch\u00e8ques postaux": { + "account_number": "514" + }, + "Caisses du Tr\u00e9sor et des \u00e9tablissements publics": { + "account_number": "515" + }, + "Soci\u00e9t\u00e9s de Bourse": { + "account_number": "516" + }, + "Autres organismes financiers": { + "account_number": "517" + }, + "518-Int\u00e9r\u00eats courus": { + "Int\u00e9r\u00eats courus \u00e0 payer": { + "account_number": "5181" + }, + "Int\u00e9r\u00eats courus \u00e0 recevoir": { + "account_number": "5188" + } + }, + "519-Concours bancaires courants": { + "Cr\u00e9dit bancaires de campagne": { + "account_number": "5191" + }, + "Mobilisation de cr\u00e9ances n\u00e9es \u00e0 l'\u00e9tranger": { + "account_number": "5193" + }, + "Cr\u00e9dits de mobilisation de cr\u00e9ances": { + "account_number": "5197" + }, + "Int\u00e9r\u00eats courus sur concours bancaires courants": { + "account_number": "5198" + } + } + }, + "Instruments de tr\u00e9sorerie": { + "account_number": "52" + }, + "53-Caisse": { + "account_type": "Cash", + "Caisse": { + "account_type": "Cash", + "account_number": "530" + } + }, + "R\u00e9gies d'avance et accr\u00e9ditifs": { + "account_number": "54" + }, + "Virements internes": { + "account_number": "58" + }, + "59-D\u00e9pr\u00e9ciations des comptes financiers": { + "590-D\u00e9pr\u00e9ciations des valeurs mobili\u00e8res de placement": { + "Actions": { + "account_number": "5903" + }, + "Autres titres conf\u00e9rant un droit de propri\u00e9t\u00e9": { + "account_number": "5904" + }, + "Obligations": { + "account_number": "5906" + }, + "Autres valeurs mobili\u00e8res de placement et cr\u00e9ances assimil\u00e9es": { + "account_number": "5908" + } + } + } + }, + "6-Comptes de charges": { + "root_type": "Expense", + "60-Achats (sauf 603)": { + "601-Achats stock\u00e9s - approvisionnements": { + "account_type": "Cost of Goods Sold", + "Engrais et amendements": { + "account_number": "6011" + }, + "Semences et plants": { + "account_number": "6012" + }, + "Produits de d\u00e9fense des v\u00e9g\u00e9taux": { + "account_number": "6013" + }, + "Aliments du b\u00e9tail": { + "account_number": "6014" + }, + "Produits de d\u00e9fense des animaux": { + "account_number": "6015" + }, + "Produits de reproduction animale": { + "account_number": "6016" + }, + "6017-Emballages": { + "account_type": "Cost of Goods Sold", + "Emballages perdus": { + "account_type": "Cost of Goods Sold", + "account_number": "60171" + }, + "Emballages r\u00e9cup\u00e9rables non identifiables": { + "account_type": "Cost of Goods Sold", + "account_number": "60172" + }, + "Emballages \u00e0 usage mixte": { + "account_type": "Cost of Goods Sold", + "account_number": "60173" + } + }, + "Combustibles": { + "account_number": "6018" + } + }, + "602-Achats stock\u00e9s - Autres approvisionnements": { + "Carburants et lubrifiants": { + "account_type": "Cost of Goods Sold", + "account_number": "6021" + }, + "Produits d'entretien": { + "account_type": "Cost of Goods Sold", + "account_number": "6022" + }, + "Fournitures d'atelier et de magasin": { + "account_type": "Cost of Goods Sold", + "account_number": "6023" + }, + "Fournitures de bureau": { + "account_type": "Cost of Goods Sold", + "account_number": "6024" + }, + "Denr\u00e9es et fournitures pour le personnel": { + "account_type": "Cost of Goods Sold", + "account_number": "6025" + }, + "Mat\u00e9riaux divers": { + "account_type": "Cost of Goods Sold", + "account_number": "6026" + }, + "Autres fournitures consommables": { + "account_type": "Cost of Goods Sold", + "account_number": "6027" + }, + "Mati\u00e8res premi\u00e8res": { + "account_type": "Cost of Goods Sold", + "account_number": "6028" + } + }, + "603-Variations des stocks (approvisionnements et marchandises)": { + "account_type": "Stock Adjustment", + "Variation des stocks d'approvisionnements": { + "account_type": "Stock Adjustment", + "account_number": "6031" + }, + "Variation des stocks d'autres approvisionnements": { + "account_type": "Stock Adjustment", + "account_number": "6032" + }, + "Variation des stocks de marchandises": { + "account_type": "Stock Adjustment", + "account_number": "6037" + } + }, + "604-Achats d'animaux": { + "Animaux reproducteurs (adultes)": { + "account_number": "6041" + }, + "Animaux reproducteurs (jeunes de renouvellement)": { + "account_number": "6042" + }, + "Autres animaux": { + "account_number": "6045" + } + }, + "605-Achats de travaux et services incorpor\u00e9s aux produits": { + "Achats de travaux et services incorpor\u00e9s pour productions v\u00e9g\u00e9tales": { + "account_number": "6051" + }, + "Achats de travaux et services incorpor\u00e9s pour productions animales": { + "account_number": "6054" + }, + "Autres achats de travaux et services": { + "account_number": "6058" + } + }, + "606-Achats non stock\u00e9s et fournitures": { + "account_type": "Cost of Goods Sold", + "Eau": { + "account_type": "Cost of Goods Sold", + "account_number": "6061" + }, + "Gaz": { + "account_type": "Cost of Goods Sold", + "account_number": "6062" + }, + "Electricit\u00e9s": { + "account_type": "Cost of Goods Sold", + "account_number": "6063" + }, + "Carburants et lubrifiants": { + "account_type": "Cost of Goods Sold", + "account_number": "6064" + }, + "Eau d'irrigation": { + "account_type": "Cost of Goods Sold", + "account_number": "6065" + }, + "Fournitures d'entretien et de petit \u00e9quipement": { + "account_type": "Cost of Goods Sold", + "account_number": "6066" + }, + "Fournitures pour productions immobilis\u00e9es": { + "account_type": "Cost of Goods Sold", + "account_number": "6067" + }, + "Autres fournitures non stock\u00e9s": { + "account_type": "Cost of Goods Sold", + "account_number": "6068" + } + }, + "607-Achats de marchandises": { + "account_type": "Cost of Goods Sold", + "Marchandises": { + "account_type": "Cost of Goods Sold", + "account_number": "6071" + }, + "Éco-contribution": { + "account_type": "Expense Account", + "account_number": "6079" + } + }, + "Frais accessoires sur achats": { + "account_number": "608", + "account_type": "Expenses Included In Valuation" + }, + "609-Rabais, remises et ristournes obtenus sur achats": { + "RRR sur achats d'autres approvisionnements": { + "account_number": "6091" + }, + "RRR sur achats d'approvisionnements": { + "account_number": "6092" + }, + "RRR sur achats d'animaux": { + "account_number": "6094" + }, + "RRR sur achats de travaux et services incorpor\u00e9s aux produits": { + "account_number": "6095" + }, + "RRR sur achats de fournitures non stock\u00e9s": { + "account_number": "6096" + }, + "RRR sur achats de marchandises": { + "account_number": "6097" + }, + "Rabais, remises et ristournes non affect\u00e9s": { + "account_number": "6098" + } + } + }, + "61-Services ext\u00e9rieurs": { + "Sous-traitance g\u00e9n\u00e9rale": { + "account_number": "611" + }, + "612-Redevances de cr\u00e9dit-bail": { + "Redevances de cr\u00e9dit-bail mobilier": { + "account_number": "6122" + }, + "Redevances de cr\u00e9dit-bail immobilier": { + "account_number": "6125" + } + }, + "613-Locations": { + "Fermages et loyers du foncier": { + "account_number": "6131" + }, + "Locations de mat\u00e9riel": { + "account_number": "6132" + }, + "Locations d'animaux": { + "account_number": "6134" + }, + "Malis sur emballages": { + "account_number": "6136" + }, + "Autres locations": { + "account_number": "6138" + } + }, + "614-Charges locatives et de copropri\u00e9t\u00e9": { + "Charges locatives du foncier": { + "account_number": "6141" + }, + "Charges locatives du mat\u00e9riel": { + "account_number": "6142" + }, + "Charges locatives des animaux": { + "account_number": "6144" + }, + "Autres charges locatives et de copropri\u00e9t\u00e9": { + "account_number": "6148" + } + }, + "615-Entretien et r\u00e9parations": { + "Terrains": { + "account_number": "6151" + }, + "Agencements et am\u00e9nagements de terrains": { + "account_number": "6152" + }, + "Constructions (sur sol propre)": { + "account_number": "6153" + }, + "Constructions (sur sol d'autrui)": { + "account_number": "6154" + }, + "Installations techniques, mat\u00e9riel et outillage": { + "account_number": "6155" + }, + "Plantations p\u00e9rennes": { + "account_number": "6156" + }, + "Autres v\u00e9g\u00e9taux immobilis\u00e9s": { + "account_number": "6157" + }, + "Autres immobilisations corporelles (hors biens vivants)": { + "account_number": "6158" + } + }, + "616-Primes d'assurances": { + "Multirisques": { + "account_number": "6161" + }, + "Assurance obligatoire dommage construction": { + "account_number": "6162" + }, + "Assurance - transport (sur achats)": { + "account_number": "6163" + }, + "Assurance - transport (sur ventes)": { + "account_number": "6164" + }, + "Assurance - transport (sur autres biens)": { + "account_number": "6165" + }, + "Risques d'exploitation": { + "account_number": "6166" + }, + "Insolvabilit\u00e9 clients": { + "account_number": "6167" + }, + "Autres": { + "account_number": "6168" + } + }, + "Etudes et recherches": { + "account_number": "617" + }, + "618-Divers": { + "Documentation g\u00e9n\u00e9rale": { + "account_number": "6181" + }, + "Documentation technique": { + "account_number": "6183" + }, + "Frais de colloques, s\u00e9minaires, conf\u00e9rences": { + "account_number": "6185" + } + }, + "Rabais, remises et ristournes obtenus sur services ext\u00e9rieurs": { + "account_number": "619" + } + }, + "62-Autres services ext\u00e9rieurs": { + "621-Personnel ext\u00e9rieur \u00e0 l'entreprise": { + "Personnel int\u00e9rimaire": { + "account_number": "6211" + }, + "Personnel d\u00e9tach\u00e9 ou pr\u00eat\u00e9 \u00e0 l'entreprise": { + "account_number": "6214" + } + }, + "622-R\u00e9mun\u00e9rations d'interm\u00e9diaires et honoraires": { + "Commissions et courtages sur achats": { + "account_number": "6221" + }, + "Commissions et courtages sur ventes": { + "account_number": "6222" + }, + "R\u00e9mun\u00e9rations des transitaires": { + "account_number": "6223" + }, + "R\u00e9mun\u00e9rations d'affacturage": { + "account_number": "6224" + }, + "Honoraires v\u00e9t\u00e9rinaires": { + "account_number": "6225" + }, + "Autres honoraires": { + "account_number": "6226" + }, + "Frais d'actes et de contentieux": { + "account_number": "6227" + }, + "Divers": { + "account_number": "6228" + } + }, + "623-Publicit\u00e9, publications, relations publiques": { + "Annonces et insertions": { + "account_number": "6231" + }, + "Echantillons": { + "account_number": "6232" + }, + "Emplacements foires et expositions": { + "account_number": "6233" + }, + "Cadeaux \u00e0 la client\u00e8le": { + "account_number": "6234" + }, + "Primes": { + "account_number": "6235" + }, + "Catalogues et imprim\u00e9s": { + "account_number": "6236" + }, + "Publications": { + "account_number": "6237" + }, + "Divers (pourboire, dons courants, etc)": { + "account_number": "6238" + } + }, + "624-Transports de biens et transports collectifs du personnel": { + "Transports sur achats": { + "account_number": "6241", + "account_type": "Chargeable" + }, + "Transports sur ventes": { + "account_type": "Chargeable", + "account_number": "6242" + }, + "Transports entre \u00e9tablissements ou chantiers": { + "account_number": "6243" + }, + "Transports administratifs": { + "account_number": "6244" + }, + "Transports collectifs du personnel": { + "account_number": "6247" + }, + "Autres transports": { + "account_number": "6248" + } + }, + "625-D\u00e9placements, missions et r\u00e9ceptions": { + "Voyages et d\u00e9placements": { + "account_number": "6251" + }, + "Frais de d\u00e9m\u00e9nagement": { + "account_number": "6255" + }, + "Missions": { + "account_number": "6256" + }, + "R\u00e9ceptions": { + "account_number": "6257" + } + }, + "Frais postaux et de t\u00e9l\u00e9communications": { + "account_number": "626" + }, + "627-Services bancaires et assimil\u00e9s": { + "Frais sur titres (achat, vente, garde)": { + "account_number": "6271" + }, + "Commissions et frais sur \u00e9mission d'emprunts": { + "account_number": "6272" + }, + "Frais sur effets (commissions d'endos\u2026)": { + "account_number": "6275" + }, + "Location de coffres": { + "account_number": "6276" + }, + "Autres frais et commissions sur prestations de services": { + "account_number": "6278" + } + }, + "628-Divers": { + "Cotisations professionnelles (productions animales)": { + "account_number": "6281" + }, + "Cotisations professionnelles (productions v\u00e9g\u00e9tales)": { + "account_number": "6284" + }, + "Autres cotisations professionnelles": { + "account_number": "6286" + }, + "Frais de recrutement de personnel": { + "account_number": "6287" + }, + "Autres services ext\u00e9rieurs divers": { + "account_number": "6288" + } + }, + "Rabais, remises et ristournes obtenus sur autres services ext\u00e9rieurs": { + "account_number": "629" + } + }, + "63-Imp\u00f4ts, taxes et versements assimil\u00e9s": { + "631-Imp\u00f4ts, taxes et versements assimil\u00e9s sur r\u00e9mun\u00e9rations (administrations des imp\u00f4ts)": { + "Taxe sur les salaires": { + "account_number": "6311" + }, + "Taxe d'apprentissage": { + "account_number": "6312" + }, + "Participation des employeurs \u00e0 la formation professionnelle continue": { + "account_number": "6313" + }, + "Cotisation pour d\u00e9faut d'investissement obligatoire dans la construction": { + "account_number": "6314" + }, + "Autres": { + "account_number": "6318" + } + }, + "633-Imp\u00f4ts, taxes et versements assimil\u00e9s sur r\u00e9mun\u00e9rations (autres organismes)": { + "Versement de transport": { + "account_number": "6331" + }, + "Allocations logement": { + "account_number": "6332" + }, + "Participation des employeurs \u00e0 la formation professionnelle continue": { + "account_number": "6333" + }, + "Participation des employeurs \u00e0 l'effort de construction": { + "account_number": "6334" + }, + "Versements lib\u00e9ratoires ouvrant droit \u00e0 l'exon\u00e9ration de la taxe d'apprentissage": { + "account_number": "6335" + }, + "Autres": { + "account_number": "6338" + } + }, + "634-Taxes sp\u00e9cifiques sur les produits de l'exploitation": { + "Taxes sp\u00e9cifiques sur les produits v\u00e9g\u00e9taux": { + "account_number": "6341" + }, + "Taxes sp\u00e9cifiques sur les produits animaux": { + "account_number": "6342" + }, + "Taxes sp\u00e9cifiques sur les produits transform\u00e9s": { + "account_number": "6343" + }, + "Taxes sp\u00e9cifiques sur les animaux": { + "account_number": "6344" + }, + "P\u00e9nalit\u00e9s sur productions": { + "account_number": "6345" + }, + "Taxes sp\u00e9cifiques sur autres produits": { + "account_number": "6348" + } + }, + "635-Autres imp\u00f4ts, taxes et versements assimil\u00e9s (administrations des imp\u00f4ts)": { + "Taxe professionnelle": { + "account_number": "6351" + }, + "Taxes fonci\u00e8res": { + "account_number": "6352" + }, + "Autres imp\u00f4ts locaux": { + "account_number": "6353" + }, + "Autres imp\u00f4ts directs (sauf imp\u00f4ts sur les soci\u00e9t\u00e9s)": { + "account_number": "6354" + }, + "Taxe sur le chiffre d'affaires non r\u00e9cup\u00e9rables": { + "account_number": "6355" + }, + "Imp\u00f4ts indirects": { + "account_number": "6356" + }, + "Droits d'enregistrement et de timbre": { + "account_number": "6357" + }, + "Autres droits": { + "account_number": "6358" + } + }, + "637-Autres imp\u00f4ts, taxes et versements assimil\u00e9s (autres organismes)": { + "Contribution sociale de solidarit\u00e9 \u00e0 la charge des soci\u00e9t\u00e9s": { + "account_number": "6371" + }, + "Taxes per\u00e7ues par les organismes publics internationaux": { + "account_number": "6372" + }, + "Imp\u00f4ts et taxes exigibles \u00e0 l'\u00e9tranger": { + "account_number": "6374" + }, + "Taxes diverses": { + "account_number": "6378" + } + } + }, + "64-Charges de personnel": { + "641-R\u00e9mun\u00e9rations du personnel": { + "6411-Salaires (personnel salari\u00e9)": { + "Personnel permanent ou r\u00e9gulier": { + "account_number": "64111" + }, + "Personnel temporaire ou occasionnel": { + "account_number": "64115" + } + }, + "R\u00e9mun\u00e9rations (associ\u00e9s d'exploitation)": { + "account_number": "6412" + }, + "R\u00e9mun\u00e9rations (administrateurs, g\u00e9rants, associ\u00e9s)": { + "account_number": "6413" + }, + "Cong\u00e9s pay\u00e9s": { + "account_number": "6415" + }, + "Primes et gratifications": { + "account_number": "6416" + }, + "Indemnit\u00e9s et avantages en esp\u00e8ces divers": { + "account_number": "6417" + }, + "Avantages en nature": { + "account_number": "6418" + } + }, + "R\u00e9mun\u00e9ration du travail de l'exploitant": { + "account_number": "644" + }, + "645-Charges de s\u00e9curit\u00e9 sociale et de pr\u00e9voyance": { + "Cotisations \u00e0 la Mutualit\u00e9 Sociale Agricole": { + "account_number": "6451" + }, + "Cotisations aux mutuelles": { + "account_number": "6452" + }, + "Cotisations aux caisses de retraites": { + "account_number": "6453" + }, + "Cotisations aux caisses de ch\u00f4mages": { + "account_number": "6454" + }, + "Cotisations aux autres organismes sociaux": { + "account_number": "6458" + } + }, + "Cotisations sociales personnelles de l'exploitant": { + "account_number": "646" + }, + "647-Autres charges sociales": { + "Versements aux comit\u00e9s d'entreprise et d'\u00e9tablissement": { + "account_number": "6472" + }, + "Versements aux autres \u0153uvres sociales": { + "account_number": "6474" + }, + "M\u00e9decine du travail, pharmacie": { + "account_number": "6475" + }, + "Autres charges sociales diverses": { + "account_number": "6478" + } + }, + "Autres charges de personnel": { + "account_number": "648" + } + }, + "65-Autres charges de gestion courante": { + "Redevances pour concessions, brevets, licences, marques, proc\u00e9d\u00e9s, logiciels, droits et valeurs similaires": { + "account_number": "651" + }, + "Jetons de pr\u00e9sence": { + "account_number": "653" + }, + "654-Pertes sur cr\u00e9ances irr\u00e9couvrables": { + "Cr\u00e9ances de l'exercice": { + "account_number": "6541" + }, + "Cr\u00e9ances des exercices ant\u00e9rieurs": { + "account_number": "6544" + } + }, + "655-Quotes-parts de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part de b\u00e9n\u00e9fice transf\u00e9r\u00e9e (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "6551" + }, + "Quote-part de perte support\u00e9e (comptabilit\u00e9 des associ\u00e9s non g\u00e9rants)": { + "account_number": "6555" + } + }, + "656-Valeurs comptables des \u00e9l\u00e9ments d'actif c\u00e9d\u00e9s (cessions courantes)": { + "Animaux reproducteurs adultes": { + "account_number": "6561" + }, + "Animaux reproducteurs (jeunes de renouvellement)": { + "account_number": "6562" + } + }, + "Charges diverses de gestion courante": { + "account_number": "658" + } + }, + "66-Charges financi\u00e8res": { + "661-Charges d'int\u00e9r\u00eats": { + "Int\u00e9r\u00eats des emprunts fonciers": { + "account_number": "6611" + }, + "Int\u00e9r\u00eats des autres emprunts \u00e0 moyen et long terme": { + "account_number": "6612" + }, + "Int\u00e9r\u00eats des emprunts \u00e0 court terme": { + "account_number": "6613" + }, + "Int\u00e9r\u00eats des cr\u00e9dits bancaires de campagne": { + "account_number": "6614" + }, + "Int\u00e9r\u00eats des dettes rattach\u00e9es \u00e0 des participations \u00e0 des organismes professionnels agricoles": { + "account_number": "6615" + }, + "Int\u00e9r\u00eats des dettes rattach\u00e9es \u00e0 d'autres participations": { + "account_number": "6616" + }, + "Int\u00e9r\u00eats du cr\u00e9dit fournisseur": { + "account_number": "6617" + }, + "6618-Autres charges d'int\u00e9r\u00eat": { + "Autres int\u00e9r\u00eats bancaires": { + "account_number": "66181" + }, + "Int\u00e9r\u00eats des comptes courants et d\u00e9p\u00f4ts cr\u00e9diteurs": { + "account_number": "66182" + }, + "Int\u00e9r\u00eats des obligations cautionn\u00e9es": { + "account_number": "66183" + }, + "Int\u00e9r\u00eats des autres dettes": { + "account_number": "66188" + } + } + }, + "Pertes sur cr\u00e9ances li\u00e9es \u00e0 des participations": { + "account_number": "664" + }, + "Escomptes accord\u00e9s": { + "account_number": "665" + }, + "Pertes de change": { + "account_type": "Round Off", + "account_number": "666" + }, + "Charges nettes sur cessions de valeurs mobili\u00e8res de placement": { + "account_number": "667" + }, + "Autres charges financi\u00e8res": { + "account_number": "668" + } + }, + "67-Charges exceptionnelles": { + "671-Charges exceptionnelles sur op\u00e9rations de gestion": { + "P\u00e9nalit\u00e9s sur march\u00e9s (et d\u00e9dits pay\u00e9s sur achats et ventes)": { + "account_number": "6711" + }, + "P\u00e9nalit\u00e9s, amendes fiscales et p\u00e9nales": { + "account_number": "6712" + }, + "Dons, lib\u00e9ralit\u00e9s": { + "account_number": "6713" + }, + "Cr\u00e9ances devenues irr\u00e9couvrables dans l'exercice": { + "account_number": "6714" + }, + "Subventions accord\u00e9es": { + "account_number": "6715" + }, + "Rappel d'imp\u00f4ts (autres qu'imp\u00f4ts sur les b\u00e9n\u00e9fices)": { + "account_number": "6717" + }, + "Autres charges exceptionnelles sur op\u00e9rations de gestion": { + "account_number": "6718" + } + }, + "Charges sur exercices ant\u00e9rieurs": { + "account_number": "672" + }, + "673-Charges exeptionnelles relatives aux p\u00e9nalit\u00e9s statutaires": { + "Indemnit\u00e9s compensatrices": { + "account_number": "6731" + }, + "P\u00e9nalit\u00e9s subies en tant qu'associ\u00e9 d\u00e9faillant": { + "account_number": "6733" + }, + "Frais de poursuite": { + "account_number": "6735" + } + }, + "675-Valeurs comptables des \u00e9l\u00e9ments d'actif c\u00e9d\u00e9s": { + "Immobilisations incorporelles": { + "account_number": "6751" + }, + "Immobilisations corporelles (hors biens vivants)": { + "account_number": "6752" + }, + "Immobilisations corporelles (biens vivants)": { + "account_number": "6754" + }, + "Immobilisations financi\u00e8res": { + "account_number": "6756" + } + }, + "678-Autres charges exceptionnelles": { + "Malis provenant de clauses d'indexation": { + "account_number": "6781" + }, + "Lots": { + "account_number": "6782" + }, + "Malis provenant du rachat par l'entreprise d'actions et obligations \u00e9mises par elle-m\u00eame": { + "account_number": "6783" + }, + "Charges exceptionnelles diverses": { + "account_number": "6788" + } + } + }, + "68-Dotations aux amortissements, aux d\u00e9pr\u00e9ciations et aux provisions": { + "account_type": "Depreciation", + "681-Dotations aux amortissements, aux d\u00e9pr\u00e9ciations et aux provisions - Charges d'exploitation": { + "account_type": "Depreciation", + "6811-Dotations aux amortissements sur immobilisations incorporelles et corporelles": { + "account_type": "Depreciation", + "Immobilisations incorporelles": { + "account_type": "Depreciation", + "account_number": "68111" + }, + "Immobilisations corporelles (hors biens vivants)": { + "account_type": "Depreciation", + "account_number": "68112" + }, + "Immobilisations corporelles (biens vivants)": { + "account_type": "Depreciation", + "account_number": "68114" + } + }, + "Dotations aux amortissements des charges d'exploitation \u00e0 r\u00e9partir": { + "account_type": "Depreciation", + "account_number": "6812" + }, + "Dotations aux provisions d'exploitation": { + "account_type": "Depreciation", + "account_number": "6815" + }, + "6816-Dotations pour d\u00e9pr\u00e9ciations des immobilisations incorporelles et corporelles": { + "account_type": "Depreciation", + "Immobilisations incorporelles": { + "account_type": "Depreciation", + "account_number": "68161" + }, + "Immobilisations corporelles (hors biens vivants)": { + "account_type": "Depreciation", + "account_number": "68162" + }, + "Immobilisations corporelles (biens vivants)": { + "account_type": "Depreciation", + "account_number": "68164" + } + }, + "6817-Dotations pour d\u00e9pr\u00e9ciations des actifs circulants": { + "account_type": "Depreciation", + "Stocks et en-cours": { + "account_type": "Depreciation", + "account_number": "68173" + }, + "Cr\u00e9ances": { + "account_type": "Depreciation", + "account_number": "68174" + } + } + }, + "686-Dotations aux amortissements, aux d\u00e9pr\u00e9ciations et aux provisions - Charges financi\u00e8res": { + "account_type": "Depreciation", + "Dotations aux amortissements des primes de remboursement des obligations": { + "account_type": "Depreciation", + "account_number": "6861" + }, + "Dotations aux provisions financi\u00e8res": { + "account_type": "Depreciation", + "account_number": "6865" + }, + "6866-Dotations pour d\u00e9pr\u00e9ciations des \u00e9l\u00e9ments financiers": { + "account_type": "Depreciation", + "Immobilisations financi\u00e8res": { + "account_type": "Depreciation", + "account_number": "68662" + }, + "Valeurs mobili\u00e8res de placement": { + "account_type": "Depreciation", + "account_number": "68665" + } + }, + "Autres dotations": { + "account_type": "Depreciation", + "account_number": "6868" + } + }, + "687-Dotations aux amortissements, aux d\u00e9pr\u00e9ciations et aux provisions - Charges exceptionnelles": { + "account_type": "Depreciation", + "Dotations aux amortissements exceptionnels des immobilisations": { + "account_type": "Depreciation", + "account_number": "6871" + }, + "Dotations aux provisions r\u00e9glement\u00e9es (immobilisations)": { + "account_type": "Depreciation", + "Amortissements d\u00e9rogatoires": { + "account_type": "Depreciation", + "account_number": "68725" + } + }, + "Dotations aux provisions r\u00e9glement\u00e9es (stocks)": { + "account_type": "Depreciation", + "account_number": "6873" + }, + "Dotations aux autres provisions r\u00e9glement\u00e9es": { + "account_type": "Depreciation", + "account_number": "6874" + }, + "Dotations aux provisions exceptionnelles": { + "account_type": "Depreciation", + "account_number": "6875" + }, + "Dotations pour d\u00e9pr\u00e9ciations exceptionnelles": { + "account_type": "Depreciation", + "account_number": "6876" + } + } + }, + "69-Participation des salari\u00e9s - Imp\u00f4ts sur les b\u00e9n\u00e9fices et assimil\u00e9s": { + "Participation des salari\u00e9s aux r\u00e9sultats": { + "account_number": "691" + }, + "695-Imp\u00f4ts sur les b\u00e9n\u00e9fices": { + "Imp\u00f4ts dus en France": { + "account_number": "6951" + }, + "Imp\u00f4ts dus \u00e0 l'\u00e9tranger": { + "account_number": "6954" + } + }, + "Imposition forfaitaire annuelle des soci\u00e9t\u00e9s": { + "account_number": "697" + }, + "698-Int\u00e9gration fiscale": { + "Int\u00e9gration fiscale - Charges": { + "account_number": "6981" + }, + "Int\u00e9gration fiscale - Produits": { + "account_number": "6982" + } + }, + "Produits - Reports en arri\u00e8re des d\u00e9ficits": { + "account_number": "699" + } + } + }, + "7-Comptes de produits": { + "root_type": "Income", + "70-Ventes": { + "Ventes de produits v\u00e9g\u00e9taux": { + "account_number": "701" + }, + "Ventes de produits animaux": { + "account_number": "702" + }, + "Ventes de produits transform\u00e9s": { + "account_number": "703" + }, + "704-Ventes d'animaux": { + "Animaux reproducteurs (adultes)": { + "account_number": "7041" + }, + "Animaux reproducteurs (jeunes de renouvellement)": { + "account_number": "7042" + }, + "Autres animaux": { + "account_number": "7045" + } + }, + "Ventes de produits r\u00e9siduels": { + "account_number": "705" + }, + "Travaux \u00e0 fa\u00e7on": { + "account_number": "706" + }, + "707-Ventes de marchandises": { + "Marchandises": { + "account_number": "7071" + }, + "Éco-participation": { + "account_type": "Income Account", + "account_number": "7079" + } + }, + "708-Produits des activit\u00e9s annexes": { + "Produits des services exploit\u00e9s dans l'int\u00e9r\u00eat du personnel": { + "account_number": "7081" + }, + "Commissions et courtages": { + "account_number": "7082" + }, + "Locations diverses": { + "account_number": "7083" + }, + "Prestations de services \u00e0 caract\u00e8re accessoire": { + "account_number": "7084" + }, + "Ports et frais accessoires factur\u00e9s": { + "account_number": "7085" + }, + "Bonis sur reprises d'emballages consign\u00e9s": { + "account_number": "7086" + }, + "Bonifications obtenues des clients et primes sur ventes": { + "account_number": "7087" + }, + "Autres produits d'activit\u00e9s annexes": { + "account_number": "7088" + } + }, + "709-Rabais, remises et ristournes accord\u00e9s par l'entreprise": { + "RRR sur ventes de produits v\u00e9g\u00e9taux": { + "account_number": "7091" + }, + "RRR sur ventes de produits animaux": { + "account_number": "7092" + }, + "RRR sur ventes de produits transform\u00e9s": { + "account_number": "7093" + }, + "RRR sur ventes d'animaux": { + "account_number": "7094" + }, + "RRR sur ventes de produits r\u00e9siduels": { + "account_number": "7095" + }, + "RRR sur travaux \u00e0 fa\u00e7on": { + "account_number": "7096" + }, + "RRR sur ventes de marchandises": { + "account_number": "7097" + }, + "RRR sur produits des activit\u00e9s annexes": { + "account_number": "7098" + } + } + }, + "71-Variation d'inventaire (biens vivants, en-cours de production de biens et services, produits)": { + "712-Variation d'inventaire : animaux reproducteurs immobilis\u00e9s": { + "Animaux reproducteurs (adultes)": { + "account_number": "7121" + }, + "Animaux reproducteurs (jeunes de renouvellement)": { + "account_number": "7122" + } + }, + "713-Variation d'inventaire : biens vivants non immobilis\u00e9s, en-cours de production de biens et services, produits": { + "Animaux (cycle long)": { + "account_number": "7131" + }, + "Animaux (cycle court)": { + "account_number": "7132" + }, + "V\u00e9g\u00e9taux en terre (cycle long)": { + "account_number": "7133" + }, + "V\u00e9g\u00e9taux en terre (cycle court)": { + "account_number": "7134" + }, + "En-cours de production de biens et services (cycle long)": { + "account_number": "7135" + }, + "En-cours de production de biens et services (cycle court)": { + "account_number": "7136" + }, + "Produits": { + "account_number": "7137" + } + } + }, + "72-Production immobilis\u00e9e et autoconsomm\u00e9e": { + "Production immobilis\u00e9e - Immobilisations incorporelles": { + "account_number": "721" + }, + "Production immobilis\u00e9e - Immobilisations corporelles (hors biens vivants)": { + "account_number": "722" + }, + "Production immobilis\u00e9e - Immobilisations corporelles (biens vivants)": { + "account_number": "724" + }, + "Production autoconsomm\u00e9e": { + "account_number": "726" + } + }, + "74-Indemnit\u00e9s et Subventions d'exploitation": { + "Remboursement forfaitaire de TVA": { + "account_number": "741" + }, + "Indemnit\u00e9s d'assurance (exploitation)": { + "account_number": "742" + }, + "Indemnit\u00e9s du Fond national de garantie des calamit\u00e9s agricoles": { + "account_number": "743" + }, + "Autres indemnit\u00e9s d'exploitation": { + "account_number": "744" + }, + "745-Subventions d'exploitation": { + "Subventions aux produits v\u00e9g\u00e9taux": { + "account_number": "7451" + }, + "Subventions aux structures (et jach\u00e8res)": { + "account_number": "7452" + }, + "Subventions au revenu": { + "account_number": "7453" + }, + "Subventions aux animaux": { + "account_number": "7454" + }, + "Autres subventions d'exploitation": { + "account_number": "7458" + } + } + }, + "75-Autres produits de gestion courante": { + "Redevances pour concessions, brevets, licences, marques, proc\u00e9d\u00e9s, logiciels, droits et valeurs similaires": { + "account_number": "751" + }, + "Revenus des immeubles non affect\u00e9s \u00e0 des activit\u00e9s professionnelles": { + "account_number": "752" + }, + "Jetons de pr\u00e9sence, r\u00e9mun\u00e9rations et indemnit\u00e9s d'administrateurs, etc": { + "account_number": "753" + }, + "Ristournes per\u00e7ues des coop\u00e9ratives agricoles (provenant des exc\u00e9dents)": { + "account_number": "754" + }, + "755-Quote-parts de r\u00e9sultat sur op\u00e9rations faites en commun": { + "Quote-part de perte transf\u00e9r\u00e9e (comptabilit\u00e9 du g\u00e9rant)": { + "account_number": "7551" + }, + "Quote-part de b\u00e9n\u00e9fice attribu\u00e9e (comptabilit\u00e9 des associ\u00e9s non - g\u00e9rants)": { + "account_number": "7555" + } + }, + "756-Produits des cessions courantes d'\u00e9l\u00e9ments d'actif": { + "Animaux reproducteurs adultes": { + "account_number": "7561" + }, + "Animaux reproducteurs (jeunes de renouvellement)": { + "account_number": "7562" + } + }, + "Produits divers de gestion courante": { + "account_number": "758" + } + }, + "76-Produits financiers": { + "761-Produits de participations": { + "Revenus des titres de participation": { + "account_number": "7611" + }, + "Revenus des participations \u00e0 des organismes professionnels agricoles": { + "account_number": "7612" + }, + "Revenus sur autres formes de participation": { + "account_number": "7616" + }, + "Revenus des cr\u00e9ances rattach\u00e9es \u00e0 des participations": { + "account_number": "7617" + } + }, + "762-Produits des autres immobilisations financi\u00e8res": { + "Revenus des titres immobilis\u00e9s": { + "account_number": "7621" + }, + "Revenus des pr\u00eats": { + "account_number": "7626" + }, + "Revenus des cr\u00e9ances immobilis\u00e9es": { + "account_number": "7627" + } + }, + "763-Revenus des autres cr\u00e9ances": { + "Revenus des cr\u00e9ances commerciales": { + "account_number": "7631" + }, + "Revenus des cr\u00e9ances diverses": { + "account_number": "7638" + } + }, + "Revenus des valeurs mobili\u00e8res de placement": { + "account_number": "764" + }, + "Escomptes obtenus": { + "account_number": "765" + }, + "Gains de change": { + "account_type": "Round Off", + "account_number": "766" + }, + "Produits nets sur cessions de valeurs mobili\u00e8res de placement": { + "account_number": "767" + }, + "Autres produits financiers": { + "account_number": "768" + } + }, + "77-Produits exceptionnels": { + "771-Produits exceptionnels sur op\u00e9rations de gestion": { + "D\u00e9dits et p\u00e9nalit\u00e9s per\u00e7us sur achats et sur ventes": { + "account_number": "7711" + }, + "Lib\u00e9ralit\u00e9s re\u00e7ues": { + "account_number": "7713" + }, + "Rentr\u00e9es sur cr\u00e9ances amorties": { + "account_number": "7714" + }, + "Subventions d'\u00e9quilibre": { + "account_number": "7715" + }, + "D\u00e9gr\u00e8vements d'imp\u00f4ts (autres qu'imp\u00f4ts sur les b\u00e9n\u00e9fices)": { + "account_number": "7717" + }, + "Autres produits exceptionnels sur op\u00e9rations de gestion": { + "account_number": "7718" + } + }, + "Produits sur exercices ant\u00e9rieurs": { + "account_number": "772" + }, + "775-Produits des cessions d'\u00e9l\u00e9ments d'actif": { + "Immobilisations incorporelles": { + "account_number": "7751" + }, + "Immobilisations corporelles (hors biens vivants)": { + "account_number": "7752" + }, + "Immobilisations corporelles (biens vivants)": { + "account_number": "7754" + }, + "Immobilisations financi\u00e8res": { + "account_number": "7756" + } + }, + "Quote-part des subventions d'investissement vir\u00e9e au r\u00e9sultat de l'exercice": { + "account_number": "777" + }, + "778-Autres produits exceptionnels": { + "Bonis provenant de clauses d'indexation": { + "account_number": "7781" + }, + "Lots": { + "account_number": "7782" + }, + "Bonis provenant du rachat par l'entreprise de titres \u00e9mis par elle - m\u00eame": { + "account_number": "7783" + }, + "Produits exceptionnels divers": { + "account_number": "7788" + } + } + }, + "78-Reprises sur amortissements, d\u00e9pr\u00e9ciations et provisions": { + "781-Reprises sur amortissements, d\u00e9pr\u00e9ciations et provisions (\u00e0 inscrire dans les produits d'exploitation)": { + "7811-Reprises sur amortissements des immobilisations incorporelles et corporelles": { + "Immobilisations incorporelles": { + "account_number": "78111" + }, + "Immobilisations corporelles (hors biens vivants)": { + "account_number": "78112" + }, + "Immobilisations corporelles (biens vivants)": { + "account_number": "78114" + } + }, + "Reprises sur provisions d'exploitation": { + "account_number": "7815" + }, + "7816-Reprises sur d\u00e9pr\u00e9ciations des immobilisations incorporelles et corporelles": { + "Immobilisations incorporelles": { + "account_number": "78161" + }, + "Immobilisations corporelles (hors biens vivants)": { + "account_number": "78162" + }, + "Immobilisations corporelles (biens vivants)": { + "account_number": "78164" + } + }, + "7817-Reprises sur d\u00e9pr\u00e9ciations des actifs circulants": { + "Stocks et en-cours": { + "account_number": "78173" + }, + "Cr\u00e9ances": { + "account_number": "78174" + } + } + }, + "786-Reprises sur d\u00e9pr\u00e9ciations et sur provisions (\u00e0 inscrire dans les produits financiers)": { + "Reprises sur provisions financi\u00e8res": { + "account_number": "7865" + }, + "7866-Reprises sur d\u00e9pr\u00e9ciations des \u00e9l\u00e9ments financiers": { + "Immobilisations financi\u00e8res": { + "account_number": "78662" + }, + "Valeurs mobili\u00e8res de placements": { + "account_number": "78665" + } + } + }, + "787-Reprises sur d\u00e9pr\u00e9ciations et sur provisions (\u00e0 inscrire dans les produits exceptionnels)": { + "7872-Reprises sur provisions r\u00e9glement\u00e9es (immobilisations)": { + "Amortissements d\u00e9rogatoires": { + "account_number": "78725" + }, + "Provision sp\u00e9ciale de r\u00e9\u00e9valuation": { + "account_number": "78726" + }, + "Plus-values r\u00e9investies": { + "account_number": "78727" + } + }, + "Reprises sur provisions r\u00e9glement\u00e9es (stocks)": { + "account_number": "7873" + }, + "Reprises sur autres provisions r\u00e9glement\u00e9es": { + "account_number": "7874" + }, + "Reprises sur provisions exceptionnelles": { + "account_number": "7875" + }, + "Reprises sur d\u00e9pr\u00e9ciations exceptionnelles": { + "account_number": "7876" + } + } + }, + "79-Transferts de charges": { + "Transferts de charges d'exploitation": { + "account_number": "791" + }, + "Transferts de charges financi\u00e8res": { + "account_number": "796" + }, + "Transferts de charges exceptionnelles": { + "account_number": "797" + } + } + } + } +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json index 02f7eeb7095..15badf105f8 100644 --- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json +++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json @@ -307,7 +307,7 @@ }, { "default": "0", - "description": "Learn about Common Party", + "description": "Learn about Common Party", "fieldname": "enable_common_party_accounting", "fieldtype": "Check", "label": "Enable Common Party Accounting" diff --git a/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html b/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html index 81ebf9744c4..cd1e357e3bc 100644 --- a/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html +++ b/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html @@ -13,7 +13,7 @@ {% endif %} -

{{ _("STATEMENTS OF ACCOUNTS") }}

+

{{ _("GENERAL LEDGER") }}

{% if filters.party[0] == filters.party_name[0] %}
{{ _("Customer: ") }} {{ filters.party_name[0] }}
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 0b3095d84ab..5c451dc55c2 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 @@ -1,5 +1,6 @@ { "actions": [], + "allow_rename": 1, "autoname": "Prompt", "creation": "2020-05-22 16:46:18.712954", "doctype": "DocType", @@ -67,7 +68,7 @@ "fieldname": "frequency", "fieldtype": "Select", "label": "Frequency", - "options": "Weekly\nMonthly\nQuarterly" + "options": "Daily\nWeekly\nBiweekly\nMonthly\nQuarterly" }, { "fieldname": "company", @@ -401,7 +402,7 @@ } ], "links": [], - "modified": "2025-08-04 18:21:12.603623", + "modified": "2025-10-07 12:19:20.719898", "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 76f1e573c41..273aa6c03de 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 @@ -8,7 +8,7 @@ import frappe from frappe import _ from frappe.desk.reportview import get_match_cond from frappe.model.document import Document -from frappe.utils import add_days, add_months, format_date, getdate, today +from frappe.utils import add_days, add_months, add_to_date, format_date, getdate, today from frappe.utils.jinja import validate_template from frappe.utils.pdf import get_pdf from frappe.www.printview import get_print_style @@ -55,7 +55,7 @@ class ProcessStatementOfAccounts(Document): enable_auto_email: DF.Check filter_duration: DF.Int finance_book: DF.Link | None - frequency: DF.Literal["Weekly", "Monthly", "Quarterly"] + frequency: DF.Literal["Daily", "Weekly", "Biweekly", "Monthly", "Quarterly"] from_date: DF.Date | None ignore_cr_dr_notes: DF.Check ignore_exchange_rate_revaluation_journals: DF.Check @@ -529,8 +529,9 @@ def send_emails(document_name, from_scheduler=False, posting_date=None): if doc.enable_auto_email and from_scheduler: new_to_date = getdate(posting_date or today()) - if doc.frequency == "Weekly": - new_to_date = add_days(new_to_date, 7) + if doc.frequency in ("Daily", "Weekly", "Biweekly"): + frequency = {"Daily": 1, "Weekly": 7, "Biweekly": 14} + new_to_date = add_days(new_to_date, frequency[doc.frequency]) else: new_to_date = add_months(new_to_date, 1 if doc.frequency == "Monthly" else 3) new_from_date = add_months(new_to_date, -1 * doc.filter_duration) diff --git a/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html b/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html index 526c5b01437..89ea90f6eb7 100644 --- a/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html +++ b/erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html @@ -6,228 +6,304 @@ .print-format td { vertical-align:middle !important; } - + -
- {% if letter_head.content %} -
{{ letter_head.content }}
-
- {% endif %} -
- - -

{{ _(report.report_name) }}

-

- {{ filters.customer_name }} -

-
- {% if (filters.tax_id) %} - {{ _("Tax Id: ") }}{{ filters.tax_id }} - {% endif %} -
-
- {{ _(filters.ageing_based_on) }} - {{ _("Until") }} - {{ frappe.format(filters.report_date, 'Date') }} -
- -
-
- {% if(filters.payment_terms) %} - {{ _("Payment Terms") }}: {{ filters.payment_terms }} - {% endif %} -
-
- {% if(filters.credit_limit) %} - {{ _("Credit Limit") }}: {{ frappe.utils.fmt_money(filters.credit_limit) }} - {% endif %} -
-
- - {% if(filters.show_future_payments) %} - {% set balance_row = data.slice(-1).pop() %} - {% for i in report.columns %} - {% if i.fieldname == 'age' %} - {% set elem = i %} - {% endif %} - {% endfor %} - {% set start = report.columns.findIndex(elem) %} - {% set range1 = report.columns[start].label %} - {% set range2 = report.columns[start+1].label %} - {% set range3 = report.columns[start+2].label %} - {% set range4 = report.columns[start+3].label %} - {% set range5 = report.columns[start+4].label %} - {% set range6 = report.columns[start+5].label %} - - {% if(balance_row) %} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Amount in {{ data[0]["currency"] ~ "" }})
{{ _(" ") }}{{ _(range1) }}{{ _(range2) }}{{ _(range3) }}{{ _(range4) }}{{ _(range5) }}{{ _(range6) }}{{ _("Total") }}
{{ _("Total Outstanding") }} - {{ format_number(balance_row["age"], null, 2) }} - - {{ frappe.utils.fmt_money(balance_row["range1"], data[data.length-1]["currency"]) }} - - {{ frappe.utils.fmt_money(balance_row["range2"], data[data.length-1]["currency"]) }} - - {{ frappe.utils.fmt_money(balance_row["range3"], data[data.length-1]["currency"]) }} - - {{ frappe.utils.fmt_money(balance_row["range4"], data[data.length-1]["currency"]) }} - - {{ frappe.utils.fmt_money(balance_row["range5"], data[data.length-1]["currency"]) }} - - {{ frappe.utils.fmt_money(flt(balance_row["outstanding"]), data[data.length-1]["currency"]) }} -
{{ _("Future Payments") }} - {{ frappe.utils.fmt_money(flt(balance_row[("future_amount")]), data[data.length-1]["currency"]) }} -
- {% endif %} +
+ {% if letter_head.content %} +
{{ letter_head.content }}
+
{% endif %} - + + + +

{{ _("STATEMENT OF ACCOUNTS") }}

+

+ {{ filters.customer_name }} +

+
+ {% if (filters.tax_id) %} + {{ _("Tax Id: {0}").format(filters.tax_id) }} + {% endif %} +
+
+ {{ _("{0} until {1}").format( + _(filters.ageing_based_on), + frappe.format(filters.report_date, 'Date') + ) }} +
+ +
+
+ {% if(filters.payment_terms) %} + {{ _("Payment Terms:") }} {{ filters.payment_terms }} + {% endif %} +
+
+ {% if(filters.credit_limit) %} + {{ _("Credit Limit:") }} {{ frappe.utils.fmt_money(filters.credit_limit) }} + {% endif %} +
+
+ +{% if(filters.show_future_payments)%} + {% set balance_row = data[-1] %} + + {% set ns = namespace(idx=None) %} + {% for i in report.columns %} + {% if i.fieldname == "age" and ns.idx is none %} + {% set ns.idx = loop.index0 %} + {% endif %} + {% endfor %} + + {% set age = report.columns[ns.idx].label %} + {% set range1 = report.columns[ns.idx+1].label %} + {% set range2 = report.columns[ns.idx+2].label %} + {% set range3 = report.columns[ns.idx+3].label %} + {% set range4 = report.columns[ns.idx+4].label %} + {% set range5 = report.columns[ns.idx+5].label %} + + {% if(balance_row) %} +
+ + + + + + + + + + + + - {% if(report.report_name == "Accounts Receivable" or report.report_name == "Accounts Payable") %} - - - - {% if(report.report_name == "Accounts Receivable" and filters.show_sales_person) %} - - - {% else %} - - {% endif %} - {% if not(filters.show_future_payments) %} - - {% endif %} - - {% if not(filters.show_future_payments) %} - - - {% endif %} - - {% if(filters.show_future_payments) %} - {% if(report.report_name == "Accounts Receivable") %} - - {% endif %} - - - - {% endif %} - {% else %} - - - - - - {% endif %} + + + + + + + + - {% for i in range(data|length) %} - - {% if(report.report_name == "Accounts Receivable" or report.report_name == "Accounts Payable") %} - {% if(data[i]["party"]) %} - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - {% if(report.report_name == "Accounts Receivable" and filters.show_sales_person) %} - +
{{ _("Amount in {0}").format(data[0]["currency"] ~ "") }}
{{ _("Date") }}{{ _("Age (Days)") }}{{ _("Reference") }}{{ _("Sales Person") }}{{ _("Reference") }} - {% if (filters.customer or filters.supplier or filters.customer_name) %} - {{ _("Remarks") }} - {% else %} - {{ _("Party") }} - {% endif %} - {{ _("Invoiced Amount") }}{{ _("Paid Amount") }} - {% if report.report_name == "Accounts Receivable" %} - {{ _('Credit Note') }} - {% else %} - {{ _('Debit Note') }} - {% endif %} - {{ _("Outstanding Amount") }}{{ _("Customer LPO No.") }}{{ _("Future Payment Ref") }}{{ _("Future Payment Amount") }}{{ _("Remaining Balance") }} - {% if (filters.customer or filters.supplier or filters.customer_name) %} - {{ _("Remarks")}} - {% else %} - {{ _("Party") }} - {% endif %} - {{ _("Total Invoiced Amount") }}{{ _("Total Paid Amount") }} - {% if report.report_name == "Accounts Receivable Summary" %} - {{ _('Credit Note Amount') }} - {% else %} - {{ _('Debit Note Amount') }} - {% endif %} - {{ _("Total Outstanding Amount") }}{{ _(" ") }}{{ _(age) }}{{ _(range1) }}{{ _(range2) }}{{ _(range3) }}{{ _(range4) }}{{ _(range5) }}{{ _("Total") }}
{{ frappe.format((data[i]["posting_date"]), 'Date') }}{{ data[i]["age"] }} - {% if not(filters.show_future_payments) %} - {{ data[i]["voucher_type"] }} -
- {% endif %} - {{ data[i]["voucher_no"] }} -
{{ _("Total Outstanding") }} + {{ frappe.utils.flt(balance_row["age"], 2) }} + + {{ frappe.utils.fmt_money(balance_row["range1"], currency=balance_row["currency"]) }} + + {{ frappe.utils.fmt_money(balance_row["range2"], currency=balance_row["currency"]) }} + + {{ frappe.utils.fmt_money(balance_row["range3"], currency=balance_row["currency"]) }} + + {{ frappe.utils.fmt_money(balance_row["range4"], currency=balance_row["currency"]) }} + + {{ frappe.utils.fmt_money(balance_row["range5"], currency=balance_row["currency"]) }} + + {{ frappe.utils.fmt_money(frappe.utils.flt(balance_row["outstanding"]), currency=balance_row["currency"]) }} +
{{ _("Future Payments") }} + {{ frappe.utils.fmt_money(frappe.utils.flt(balance_row["future_amount"]), currency=balance_row["currency"]) }} +
{{ data[i]["sales_person"] }}
+ {% endif %} +{% endif %} + + + + {% if(report.report_name == "Accounts Receivable" or report.report_name == "Accounts Payable") %} + + + + {% if(report.report_name == "Accounts Receivable" and filters.show_sales_person) %} + + + {% else %} + + {% endif %} + {% if not(filters.show_future_payments) and filters.show_remarks %} + + {% endif %} + + {% if not(filters.show_future_payments) %} + + + {% endif %} + + {% if(filters.show_future_payments) %} + {% if(report.report_name == "Accounts Receivable") %} + + {% endif %} + + + + {% endif %} + {% else %} + + + + + + {% endif %} + + + + {% for i in range(data|length) %} + + {% if(report.report_name == "Accounts Receivable" or report.report_name == "Accounts Payable") %} + {% if(data[i]["party"]) %} + + + - {% if not (filters.show_future_payments) %} + {% if(report.report_name == "Accounts Receivable" and filters.show_sales_person) %} + + {% endif %} + + {% if not (filters.show_future_payments) and filters.show_remarks %} + + {% endif %} + + + + {% if not(filters.show_future_payments) %} + + + {% endif %} + + + {% if(filters.show_future_payments) %} + {% if(report.report_name == "Accounts Receivable") %} + + {% endif %} + + + + {% endif %} + {% else %} + + {% if not(filters.show_future_payments) %} + + {% endif %} + {% if(report.report_name == "Accounts Receivable" and filters.show_sales_person) %} + + {% endif %} + + + + + {% if not(filters.show_future_payments) %} + + + {% endif %} + + + {% if(filters.show_future_payments) %} + {% if(report.report_name == "Accounts Receivable") %} + + {% endif %} + + + + {% endif %} + {% endif %} + {% else %} + {% if(data[i]["party"] or " ") %} + {% if not(data[i]["is_total_row"]) %} - {% endif %} - - - - {% if not(filters.show_future_payments) %} - - - {% endif %} - - - {% if(filters.show_future_payments) %} - {% if(report.report_name == "Accounts Receivable") %} - - {% endif %} - - - - {% endif %} {% else %} - - {% if not(filters.show_future_payments) %} - - {% endif %} - {% if(report.report_name == "Accounts Receivable" and filters.show_sales_person) %} - - {% endif %} - - - - - {% if not(filters.show_future_payments) %} - - - {% endif %} - - - {% if(filters.show_future_payments) %} - {% if(report.report_name == "Accounts Receivable") %} - - {% endif %} - - - - {% endif %} - {% endif %} - {% else %} - {% if(data[i]["party"] or " ") %} - {% if not(data[i]["is_total_row"]) %} - - {% else %} - - {% endif %} - - - - + {% endif %} + + + + {% endif %} - - {% endfor %} - - + {% endif %} + + {% endfor %} + + + {% if (filters.show_future_payments) or filters.show_remarks %} + {% endif %} + {% if not(filters.show_future_payments) %} - -
{{ _("Date") }}{{ _("Age (Days)") }}{{ _("Reference") }}{{ _("Sales Person") }}{{ _("Reference") }} + {% if (filters.customer or filters.supplier or filters.customer_name) %} + {{ _("Remarks") }} + {% else %} + {{ _("Party") }} + {% endif %} + {{ _("Invoiced Amount") }}{{ _("Paid Amount") }} + {% if report.report_name == "Accounts Receivable" %} + {{ _("Credit Note") }} + {% else %} + {{ _("Debit Note") }} {% endif %} + {{ _("Outstanding Amount") }}{{ _("Customer LPO No.") }}{{ _("Future Payment Ref") }}{{ _("Future Payment Amount") }}{{ _("Remaining Balance") }} + {% if (filters.customer or filters.supplier or filters.customer_name) %} + {{ _("Remarks")}} + {% else %} + {{ _("Party") }} + {% endif %} + {{ _("Total Invoiced Amount") }}{{ _("Total Paid Amount") }} + {% if report.report_name == "Accounts Receivable Summary" %} + {{ _("Credit Note Amount") }} + {% else %} + {{ _("Debit Note Amount") }} + {% endif %} + {{ _("Total Outstanding Amount") }}
{{ frappe.format(data[i]["posting_date"], 'Date') }}{{ data[i]["age"] }} + {% if not(filters.show_future_payments) %} + {{ data[i]["voucher_type"] }} +
+ {% endif %} + {{ data[i]["voucher_no"] }} +
{{ data[i]["sales_person"] }} + {% if(not(filters.customer or filters.supplier or filters.customer_name)) %} + {{ data[i]["party"] }} + {% if(data[i]["customer_name"] and data[i]["customer_name"] != data[i]["party"]) %} +
{{ data[i]["customer_name"] }} + {% elif(data[i]["supplier_name"] != data[i]["party"]) %} +
{{ data[i]["supplier_name"] }} + {% endif %} + {% endif %} +
+ {% if data[i]["remarks"] %} + {{ _("Remarks") }}: + {{ data[i]["remarks"] }} + {% endif %} +
+
+ {{ frappe.utils.fmt_money(data[i]["invoiced"], currency=data[i]["currency"]) }} + {{ frappe.utils.fmt_money(data[i]["paid"], currency=data[i]["currency"]) }} + {{ frappe.utils.fmt_money(data[i]["credit_note"], currency=data[i]["currency"]) }} + {{ frappe.utils.fmt_money(data[i]["outstanding"], currency=data[i]["currency"]) }} + {{ data[i]["po_no"] }}{{ data[i]["future_ref"] }}{{ frappe.utils.fmt_money(data[i]["future_amount"], currency=data[i]["currency"]) }}{{ frappe.utils.fmt_money(data[i]["remaining_balance"], currency=data[i]["currency"]) }}{{ _("Total") }} + {{ frappe.utils.fmt_money(data[i]["invoiced"], data[i]["currency"]) }} + {{ frappe.utils.fmt_money(data[i]["paid"], currency=data[i]["currency"]) }}{{ frappe.utils.fmt_money(data[i]["credit_note"], currency=data[i]["currency"]) }} + {{ frappe.utils.fmt_money(data[i]["outstanding"], currency=data[i]["currency"]) }} + {{ data[i]["po_no"] }}{{ data[i]["future_ref"] }}{{ frappe.utils.fmt_money(data[i]["future_amount"], currency=data[i]["currency"]) }}{{ frappe.utils.fmt_money(data[i]["remaining_balance"], currency=data[i]["currency"]) }} - {% if(not(filters.customer or filters.supplier or filters.customer_name)) %} + {% if(not(filters.customer | filters.supplier)) %} {{ data[i]["party"] }} {% if(data[i]["customer_name"] and data[i]["customer_name"] != data[i]["party"]) %}
{{ data[i]["customer_name"] }} @@ -235,132 +311,73 @@
{{ data[i]["supplier_name"] }} {% endif %} {% endif %} -
- {% if data[i]["remarks"] %} - {{ _("Remarks") }}: - {{ data[i]["remarks"] }} - {% endif %} -
+
{{ _("Remarks") }}: + {{ data[i]["remarks"] }}
- {{ frappe.utils.fmt_money(data[i]["invoiced"], currency=data[i]["currency"]) }} - {{ frappe.utils.fmt_money(data[i]["paid"], currency=data[i]["currency"]) }} - {{ frappe.utils.fmt_money(data[i]["credit_note"], currency=data[i]["currency"]) }} - {{ frappe.utils.fmt_money(data[i]["outstanding"], currency=data[i]["currency"]) }} - {{ data[i]["po_no"] }}{{ data[i]["future_ref"] }}{{ frappe.utils.fmt_money(data[i]["future_amount"], currency=data[i]["currency"]) }}{{ frappe.utils.fmt_money(data[i]["remaining_balance"], currency=data[i]["currency"]) }}{{ _("Total") }} - {{ frappe.utils.fmt_money(data[i]["invoiced"], data[i]["currency"]) }} - {{ frappe.utils.fmt_money(data[i]["paid"], currency=data[i]["currency"]) }}{{ frappe.utils.fmt_money(data[i]["credit_note"], currency=data[i]["currency"]) }} - {{ frappe.utils.fmt_money(data[i]["outstanding"], currency=data[i]["currency"]) }} - {{ data[i]["po_no"] }}{{ data[i]["future_ref"] }}{{ frappe.utils.fmt_money(data[i]["future_amount"], currency=data[i]["currency"]) }}{{ frappe.utils.fmt_money(data[i]["remaining_balance"], currency=data[i]["currency"]) }} - {% if(not(filters.customer | filters.supplier)) %} - {{ data[i]["party"] }} - {% if(data[i]["customer_name"] and data[i]["customer_name"] != data[i]["party"]) %} -
{{ data[i]["customer_name"] }} - {% elif(data[i]["supplier_name"] != data[i]["party"]) %} -
{{ data[i]["supplier_name"] }} - {% endif %} - {% endif %} -
{{ _("Remarks") }}: - {{ data[i]["remarks"] }} -
{{ _("Total") }}{{ frappe.utils.fmt_money(data[i]["invoiced"], currency=data[i]["currency"]) }}{{ frappe.utils.fmt_money(data[i]["paid"], currency=data[i]["currency"]) }}{{ frappe.utils.fmt_money(data[i]["credit_note"], currency=data[i]["currency"]) }}{{ frappe.utils.fmt_money(data[i]["outstanding"], currency=data[i]["currency"]) }}{{ _("Total") }}{{ frappe.utils.fmt_money(data[i]["invoiced"], currency=data[i]["currency"]) }}{{ frappe.utils.fmt_money(data[i]["paid"], currency=data[i]["currency"]) }}{{ frappe.utils.fmt_money(data[i]["credit_note"], currency=data[i]["currency"]) }}{{ frappe.utils.fmt_money(data[i]["outstanding"], currency=data[i]["currency"]) }}
{{ frappe.utils.fmt_money(data|sum(attribute="invoiced"), currency=data[0]["currency"]) }} {{ frappe.utils.fmt_money(data|sum(attribute="paid"), currency=data[0]["currency"]) }} {{ frappe.utils.fmt_money(data|sum(attribute="credit_note"), currency=data[0]["currency"]) }} {{ frappe.utils.fmt_money(data|sum(attribute="outstanding"), currency=data[0]["currency"]) }}
-
- {% if ageing %} -

{{ _("Ageing Report based on ") }} {{ ageing.ageing_based_on }} - {{ _("up to " ) }} {{ frappe.format(filters.report_date, 'Date')}} -

- - - - - - - - - - - - - - - - - - - -
0 - 30 Days30 - 60 Days60 - 90 Days90 - 120 DaysAbove 120 Days
{{ frappe.utils.fmt_money(ageing.range1, currency=data[0]["currency"]) }}{{ frappe.utils.fmt_money(ageing.range2, currency=data[0]["currency"]) }}{{ frappe.utils.fmt_money(ageing.range3, currency=data[0]["currency"]) }}{{ frappe.utils.fmt_money(ageing.range4, currency=data[0]["currency"]) }}{{ frappe.utils.fmt_money(ageing.range5, currency=filters.presentation_currency) }}
- {% endif %} - {% if terms_and_conditions %} -
- {{ terms_and_conditions }} -
- {% endif %} -

{{ _("Printed On ") }}{{ frappe.utils.now() }}

+ {% else %} + {{ frappe.utils.fmt_money(data|sum(attribute="invoiced"), currency=data[0]["currency"]) }} + {{ frappe.utils.fmt_money(data|sum(attribute="outstanding"), currency=data[0]["currency"]) }} + + + {{ frappe.utils.fmt_money(data|sum(attribute="future_amount"), currency=data[0]["currency"]) }} + {{ frappe.utils.fmt_money(data|sum(attribute="remaining_balance"), currency=data[0]["currency"]) }} + {% endif %} + + +
+{% if ageing %} +

+ {{ _("Ageing Report based on {0} up to {1}").format( + ageing.ageing_based_on, + frappe.format(filters.report_date, "Date") + ) }} +

+ + + + + + + + + + + + + + + + + + + +
{{ _("0 - 30 Days") }}{{ _("30 - 60 Days") }}{{ _("60 - 90 Days") }}{{ _("90 - 120 Days") }}{{ _("Above 120 Days") }}
{{ frappe.utils.fmt_money(ageing.range1, currency=data[0]["currency"]) }}{{ frappe.utils.fmt_money(ageing.range2, currency=data[0]["currency"]) }}{{ frappe.utils.fmt_money(ageing.range3, currency=data[0]["currency"]) }}{{ frappe.utils.fmt_money(ageing.range4, currency=data[0]["currency"]) }}{{ frappe.utils.fmt_money(ageing.range5, currency=filters.presentation_currency) }}
+{% endif %} +{% if terms_and_conditions %} +
+ {{ terms_and_conditions }} +
+{% endif %} +

{{ _("Printed on {0}").format(frappe.utils.now()) }}

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 0aeec6905eb..a8e468415c1 100644 --- a/erpnext/accounts/doctype/repost_accounting_ledger/repost_accounting_ledger.py +++ b/erpnext/accounts/doctype/repost_accounting_ledger/repost_accounting_ledger.py @@ -215,16 +215,22 @@ def start_repost(account_repost_doc=str) -> None: def get_allowed_types_from_settings(child_doc: bool = False): - repost_docs = [ - x.document_type - for x in frappe.db.get_all( - "Repost Allowed Types", filters={"allowed": True}, fields=["distinct(document_type)"] - ) - ] + # Avoid DISTINCT(...) here: Frappe applies a default ORDER BY which breaks on Postgres + # when used with SELECT DISTINCT. + repost_docs = frappe.db.get_all( + "Repost Allowed Types", + filters={"allowed": True}, + pluck="document_type", + ) + + # De-dupe while preserving order (first occurrence wins) + repost_docs = list(dict.fromkeys(repost_docs)) result = repost_docs if repost_docs and child_doc: result.extend(get_child_docs(repost_docs)) + # Keep uniqueness after extending + result = list(dict.fromkeys(result)) return result @@ -291,8 +297,11 @@ def get_repost_allowed_types(doctype, txt, searchfield, start, page_len, filters if txt: filters.update({"document_type": ("like", f"%{txt}%")}) - if allowed_types := frappe.db.get_all( - "Repost Allowed Types", filters=filters, fields=["distinct(document_type)"], as_list=1 - ): - return allowed_types - return [] + allowed_types = frappe.db.get_all( + "Repost Allowed Types", + filters=filters, + pluck="document_type", + ) + + allowed_types = list(dict.fromkeys(allowed_types)) + return [[dt] for dt in allowed_types] diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py index aeb266b6d87..bd8af98b16f 100644 --- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py @@ -2974,6 +2974,60 @@ class TestSalesInvoice(FrappeTestCase): 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) + def test_item_tax_template_change_with_grand_total_discount(self): + """ + Test that when item tax template changes due to discount on Grand Total, + the tax calculations are consistent. + """ + item = create_item("Test Item With Multiple Tax Templates") + + item.set("taxes", []) + item.append( + "taxes", + { + "item_tax_template": "_Test Account Excise Duty @ 10 - _TC", + "minimum_net_rate": 0, + "maximum_net_rate": 500, + }, + ) + + item.append( + "taxes", + { + "item_tax_template": "_Test Account Excise Duty @ 12 - _TC", + "minimum_net_rate": 501, + "maximum_net_rate": 1000, + }, + ) + + item.save() + + si = create_sales_invoice(item=item.name, rate=700, do_not_save=True) + si.append( + "taxes", + { + "charge_type": "On Net Total", + "account_head": "_Test Account Excise Duty - _TC", + "cost_center": "_Test Cost Center - _TC", + "description": "Excise Duty", + "rate": 0, + }, + ) + si.insert() + + self.assertEqual(si.items[0].item_tax_template, "_Test Account Excise Duty @ 12 - _TC") + + si.apply_discount_on = "Grand Total" + si.discount_amount = 300 + si.save() + + # Verify template changed to 10% + self.assertEqual(si.items[0].item_tax_template, "_Test Account Excise Duty @ 10 - _TC") + self.assertEqual(si.taxes[0].tax_amount, 70) # 10% of 700 + self.assertEqual(si.grand_total, 470) # 700 + 70 - 300 + + si.submit() + @change_settings("Selling Settings", {"enable_discount_accounting": 1}) def test_sales_invoice_with_discount_accounting_enabled(self): discount_account = create_account( diff --git a/erpnext/accounts/report/gross_and_net_profit_report/gross_and_net_profit_report.py b/erpnext/accounts/report/gross_and_net_profit_report/gross_and_net_profit_report.py index b90e2e44bf3..f5a2cc406c0 100644 --- a/erpnext/accounts/report/gross_and_net_profit_report/gross_and_net_profit_report.py +++ b/erpnext/accounts/report/gross_and_net_profit_report/gross_and_net_profit_report.py @@ -219,13 +219,18 @@ def get_net_profit( has_value = False + gross_income_roots = [row for row in (gross_income or []) if not flt(row.get("indent"))] + non_gross_income_roots = [row for row in (non_gross_income or []) if not flt(row.get("indent"))] + gross_expense_roots = [row for row in (gross_expense or []) if not flt(row.get("indent"))] + non_gross_expense_roots = [row for row in (non_gross_expense or []) if not flt(row.get("indent"))] + for period in period_list: key = period if consolidated else period.key - gross_income_for_period = flt(gross_income[0].get(key, 0)) if gross_income else 0 - non_gross_income_for_period = flt(non_gross_income[0].get(key, 0)) if non_gross_income else 0 - gross_expense_for_period = flt(gross_expense[0].get(key, 0)) if gross_expense else 0 - non_gross_expense_for_period = flt(non_gross_expense[0].get(key, 0)) if non_gross_expense else 0 + gross_income_for_period = sum(flt(row.get(key, 0)) for row in gross_income_roots) + non_gross_income_for_period = sum(flt(row.get(key, 0)) for row in non_gross_income_roots) + gross_expense_for_period = sum(flt(row.get(key, 0)) for row in gross_expense_roots) + non_gross_expense_for_period = sum(flt(row.get(key, 0)) for row in non_gross_expense_roots) total_income = gross_income_for_period + non_gross_income_for_period total_expense = gross_expense_for_period + non_gross_expense_for_period 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 d326541631a..78aa90ab947 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 @@ -105,7 +105,7 @@ def _execute(filters=None, additional_table_columns=None, additional_conditions= { "total_tax": total_tax, "total_other_charges": total_other_charges, - "total": d.base_net_amount + total_tax, + "total": d.base_net_amount + total_tax + total_other_charges, "currency": company_currency, } ) diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py index 06685845b58..5a7c6ca9055 100644 --- a/erpnext/accounts/utils.py +++ b/erpnext/accounts/utils.py @@ -511,6 +511,7 @@ def reconcile_against_document( doc.make_advance_gl_entries(entry=row) else: _delete_pl_entries(voucher_type, voucher_no) + _delete_adv_pl_entries(voucher_type, voucher_no) gl_map = doc.build_gl_map() # Make sure there is no overallocation from erpnext.accounts.general_ledger import process_debit_credit_difference diff --git a/erpnext/buying/doctype/purchase_order/test_purchase_order.py b/erpnext/buying/doctype/purchase_order/test_purchase_order.py index 895df37253f..26ace63872f 100644 --- a/erpnext/buying/doctype/purchase_order/test_purchase_order.py +++ b/erpnext/buying/doctype/purchase_order/test_purchase_order.py @@ -1297,6 +1297,55 @@ class TestPurchaseOrder(FrappeTestCase): pi = make_pi_from_po(po.name) self.assertEqual(pi.items[0].qty, 50) + def test_multiple_advances_against_purchase_order_are_allocated_across_partial_purchase_invoices(self): + # step - 1: create PO + po = create_purchase_order(qty=10, rate=10) + + # step - 2: create first partial advance payment + pe1 = get_payment_entry("Purchase Order", po.name, bank_account="_Test Bank - _TC") + pe1.reference_no = "1" + pe1.reference_date = nowdate() + pe1.paid_amount = 50 + pe1.references[0].allocated_amount = 50 + pe1.save(ignore_permissions=True).submit() + + # check first advance paid against PO + po.reload() + self.assertEqual(po.advance_paid, 50) + + # step - 3: create first PI for partial qty and allocate first advance + pi_1 = make_pi_from_po(po.name) + pi_1.update_stock = 1 + pi_1.allocate_advances_automatically = 1 + pi_1.items[0].qty = 5 + pi_1.save(ignore_permissions=True).submit() + + # step - 4: create second advance payment for remaining + pe2 = get_payment_entry("Purchase Order", po.name, bank_account="_Test Bank - _TC") + pe2.reference_no = "2" + pe2.reference_date = nowdate() + pe2.paid_amount = 50 + pe2.references[0].allocated_amount = 50 + pe2.save(ignore_permissions=True).submit() + + # check second advance paid against PO + po.reload() + self.assertEqual(po.advance_paid, 100) + + # step - 5: create second PI for remaining qty and allocate second advance + pi_2 = make_pi_from_po(po.name) + pi_2.update_stock = 1 + pi_2.allocate_advances_automatically = 1 + pi_2.save(ignore_permissions=True).submit() + + # check PO and PI status + po.reload() + pi_1.reload() + pi_2.reload() + self.assertEqual(pi_1.status, "Paid") + self.assertEqual(pi_2.status, "Paid") + self.assertEqual(po.status, "Completed") + def create_po_for_sc_testing(): from erpnext.controllers.tests.test_subcontracting_controller import ( 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 6ab5048082e..6420f034df7 100644 --- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js +++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js @@ -34,15 +34,6 @@ frappe.ui.form.on("Request for Quotation", { }); }, - onload: function (frm) { - if (!frm.doc.message_for_supplier) { - frm.set_value( - "message_for_supplier", - __("Please supply the specified items at the best possible rates") - ); - } - }, - refresh: function (frm, cdt, cdn) { if (frm.doc.docstatus === 1) { frm.add_custom_button( @@ -248,6 +239,25 @@ frappe.ui.form.on("Request for Quotation", { } refresh_field("items"); }, + + email_template(frm) { + if (frm.doc.email_template) { + frappe.db + .get_value("Email Template", frm.doc.email_template, [ + "use_html", + "response", + "response_html", + "subject", + ]) + .then((r) => { + frm.set_value( + "message_for_supplier", + r.message.use_html ? r.message.response_html : r.message.response + ); + frm.set_value("subject", r.message.subject); + }); + } + }, preview: (frm) => { let dialog = new frappe.ui.Dialog({ title: __("Preview Email"), diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json index 824484f9c20..c5e72fb8e20 100644 --- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json +++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json @@ -30,6 +30,7 @@ "send_attached_files", "send_document_print", "sec_break_email_2", + "subject", "message_for_supplier", "terms_section_break", "incoterm", @@ -126,6 +127,7 @@ "reqd": 1 }, { + "depends_on": "eval:doc.suppliers.some((item) => item.send_email) && !(doc.docstatus == 1 && !doc.email_template)", "fieldname": "supplier_response_section", "fieldtype": "Section Break", "label": "Email Details" @@ -139,8 +141,7 @@ }, { "allow_on_submit": 1, - "fetch_from": "email_template.response", - "fetch_if_empty": 1, + "default": "Please supply the specified items at the best possible rates", "fieldname": "message_for_supplier", "fieldtype": "Text Editor", "in_list_view": 1, @@ -251,7 +252,7 @@ "label": "Preview Email" }, { - "depends_on": "eval:!doc.__islocal", + "depends_on": "eval:doc.suppliers.some((item) => item.send_email)", "fieldname": "sec_break_email_2", "fieldtype": "Section Break", "hide_border": 1 @@ -315,6 +316,14 @@ "hidden": 1, "label": "Has Unit Price Items", "no_copy": 1 + }, + { + "default": "Request for Quotation", + "fieldname": "subject", + "fieldtype": "Data", + "label": "Subject", + "not_nullable": 1, + "reqd": 1 } ], "grid_page_length": 50, @@ -322,7 +331,7 @@ "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2025-03-03 16:48:39.856779", + "modified": "2026-01-05 14:27:33.329810", "modified_by": "Administrator", "module": "Buying", "name": "Request for Quotation", @@ -393,4 +402,4 @@ "sort_field": "modified", "sort_order": "DESC", "states": [] -} \ No newline at end of file +} 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 e8c5690cf6f..b66cb09e082 100644 --- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py @@ -56,6 +56,7 @@ class RequestforQuotation(BuyingController): send_attached_files: DF.Check send_document_print: DF.Check status: DF.Literal["", "Draft", "Submitted", "Cancelled"] + subject: DF.Data suppliers: DF.Table[RequestforQuotationSupplier] tc_name: DF.Link | None terms: DF.TextEditor | None @@ -66,6 +67,7 @@ class RequestforQuotation(BuyingController): def before_validate(self): self.set_has_unit_price_items() self.flags.allow_zero_qty = self.has_unit_price_items + self.set_data_for_supplier() def validate(self): self.validate_duplicate_supplier() @@ -90,6 +92,19 @@ class RequestforQuotation(BuyingController): not row.qty for row in self.get("items") if (row.item_code and not row.qty) ) + def set_data_for_supplier(self): + if self.email_template: + data = frappe.get_value( + "Email Template", + self.email_template, + ["use_html", "response", "response_html", "subject"], + as_dict=True, + ) + if not self.message_for_supplier: + self.message_for_supplier = data.response_html if data.use_html else data.response + if not self.subject: + self.subject = data.subject + def validate_duplicate_supplier(self): supplier_list = [d.supplier for d in self.suppliers] if len(supplier_list) != len(set(supplier_list)): @@ -283,12 +298,6 @@ class RequestforQuotation(BuyingController): } ) - if not self.email_template: - return - - email_template = frappe.get_doc("Email Template", self.email_template) - message = frappe.render_template(email_template.response_, doc_args) - subject = frappe.render_template(email_template.subject, doc_args) fixed_procurement_email = frappe.db.get_single_value("Buying Settings", "fixed_email") if fixed_procurement_email: sender = frappe.db.get_value("Email Account", fixed_procurement_email, "email_id") @@ -296,7 +305,12 @@ class RequestforQuotation(BuyingController): sender = frappe.session.user not in STANDARD_USERS and frappe.session.user or None if preview: - return {"message": message, "subject": subject} + return { + "message": self.message_for_supplier, + "subject": self.subject + or frappe.get_value("Email Template", self.email_template, "subject") + or _("Request for Quotation"), + } attachments = [] if self.send_attached_files: @@ -316,7 +330,15 @@ class RequestforQuotation(BuyingController): ) ) - self.send_email(data, sender, subject, message, attachments) + self.send_email( + data, + sender, + self.subject + or frappe.get_value("Email Template", self.email_template, "subject") + or _("Request for Quotation"), + self.message_for_supplier, + attachments, + ) def send_email(self, data, sender, subject, message, attachments): make( diff --git a/erpnext/buying/doctype/request_for_quotation_supplier/request_for_quotation_supplier.json b/erpnext/buying/doctype/request_for_quotation_supplier/request_for_quotation_supplier.json index 534cd90cc65..69d530da7ee 100644 --- a/erpnext/buying/doctype/request_for_quotation_supplier/request_for_quotation_supplier.json +++ b/erpnext/buying/doctype/request_for_quotation_supplier/request_for_quotation_supplier.json @@ -80,20 +80,21 @@ "fieldname": "email_id", "fieldtype": "Data", "in_list_view": 1, - "label": "Email Id", + "label": "Email ID", "no_copy": 1 } ], "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2020-11-04 22:01:43.832942", + "modified": "2026-01-05 14:08:27.274538", "modified_by": "Administrator", "module": "Buying", "name": "Request for Quotation Supplier", "owner": "Administrator", "permissions": [], - "sort_field": "modified", + "row_format": "Dynamic", + "sort_field": "creation", "sort_order": "DESC", "track_changes": 1 -} \ No newline at end of file +} diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py index 172c63bebf6..f6195e6e09e 100644 --- a/erpnext/controllers/accounts_controller.py +++ b/erpnext/controllers/accounts_controller.py @@ -184,9 +184,8 @@ class AccountsController(TransactionBase): 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" + msg = _( + "We can see {0} is made against {1}. If you want {1}'s outstanding to be updated, uncheck the '{2}' checkbox." ).format( frappe.bold(document_type), get_link_to_form(self.doctype, self.get("return_against")), @@ -197,8 +196,8 @@ class AccountsController(TransactionBase): 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" + msg = _( + "The outstanding amount {0} in {1} is lesser than {2}. Updating the outstanding to this invoice." ).format( against_voucher_outstanding, get_link_to_form(self.doctype, self.get("return_against")), @@ -206,11 +205,11 @@ class AccountsController(TransactionBase): ) if msg: - msg += " you can use {} tool to reconcile against {} later.".format( + msg += "

" + _("You can use {0} to reconcile against {1} later.").format( get_link_to_form("Payment Reconciliation", "Payment Reconciliation"), get_link_to_form(self.doctype, self.get("return_against")), ) - frappe.msgprint(_(msg)) + frappe.msgprint(msg) def validate(self): if not self.get("is_return") and not self.get("is_debit_note"): diff --git a/erpnext/controllers/taxes_and_totals.py b/erpnext/controllers/taxes_and_totals.py index 571f9ad4b14..1bd55786f1f 100644 --- a/erpnext/controllers/taxes_and_totals.py +++ b/erpnext/controllers/taxes_and_totals.py @@ -46,17 +46,23 @@ class calculate_taxes_and_totals: items = list(filter(lambda item: not item.get("is_alternative"), self.doc.get("items"))) return items - def calculate(self): + def calculate(self, ignore_tax_template_validation=False): if not len(self.doc.items): return self.discount_amount_applied = False + self.need_recomputation = False + self.ignore_tax_template_validation = ignore_tax_template_validation + self._calculate() if self.doc.meta.get_field("discount_amount"): self.set_discount_amount() self.apply_discount_amount() + if not ignore_tax_template_validation and self.need_recomputation: + return self.calculate(ignore_tax_template_validation=True) + # Update grand total as per cash and non trade discount if self.doc.apply_discount_on == "Grand Total" and self.doc.get("is_cash_or_non_trade_discount"): self.doc.grand_total -= self.doc.discount_amount @@ -100,6 +106,9 @@ class calculate_taxes_and_totals: self.doc.base_tax_withholding_net_total = sum_base_net_amount def validate_item_tax_template(self): + if self.ignore_tax_template_validation: + return + if self.doc.get("is_return") and self.doc.get("return_against"): return @@ -141,6 +150,10 @@ class calculate_taxes_and_totals: ) ) + # For correct tax_amount calculation re-computation is required + if self.discount_amount_applied and self.doc.apply_discount_on == "Grand Total": + self.need_recomputation = True + def update_item_tax_map(self): for item in self.doc.items: item.item_tax_rate = get_item_tax_map( diff --git a/erpnext/hooks.py b/erpnext/hooks.py index 4451fc9a601..aaea9e712d4 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -559,6 +559,7 @@ accounting_dimension_doctypes = [ "Payment Request", "Asset Movement Item", "Asset Depreciation Schedule", + "Advance Taxes and Charges", ] get_matching_queries = ( diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py index b904d2f13f4..c26af9a74af 100644 --- a/erpnext/manufacturing/doctype/work_order/work_order.py +++ b/erpnext/manufacturing/doctype/work_order/work_order.py @@ -315,7 +315,7 @@ class WorkOrder(Document): def validate_work_order_against_so(self): # already ordered qty ordered_qty_against_so = frappe.db.sql( - """select sum(qty) from `tabWork Order` + """select sum(qty - process_loss_qty) from `tabWork Order` where production_item = %s and sales_order = %s and docstatus < 2 and status != 'Closed' and name != %s""", (self.production_item, self.sales_order, self.name), )[0][0] diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 1574c540100..0fdfbef279b 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -427,3 +427,4 @@ erpnext.patches.v15_0.toggle_legacy_controller_for_period_closing execute:frappe.db.set_single_value("Accounts Settings", "show_party_balance", 1) execute:frappe.db.set_single_value("Accounts Settings", "show_account_balance", 1) erpnext.patches.v16_0.update_currency_exchange_settings_for_frankfurter #2025-12-11 +erpnext.patches.v15_0.create_accounting_dimensions_in_advance_taxes_and_charges diff --git a/erpnext/patches/v15_0/create_accounting_dimensions_in_advance_taxes_and_charges.py b/erpnext/patches/v15_0/create_accounting_dimensions_in_advance_taxes_and_charges.py new file mode 100644 index 00000000000..201b16b1e00 --- /dev/null +++ b/erpnext/patches/v15_0/create_accounting_dimensions_in_advance_taxes_and_charges.py @@ -0,0 +1,7 @@ +from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import ( + create_accounting_dimensions_for_doctype, +) + + +def execute(): + create_accounting_dimensions_for_doctype(doctype="Advance Taxes and Charges") diff --git a/erpnext/patches/v15_0/update_pick_list_fields.py b/erpnext/patches/v15_0/update_pick_list_fields.py index 9a7a1f5f463..de5116a22be 100644 --- a/erpnext/patches/v15_0/update_pick_list_fields.py +++ b/erpnext/patches/v15_0/update_pick_list_fields.py @@ -8,12 +8,24 @@ def execute(): def update_delivery_note(): - DN = frappe.qb.DocType("Delivery Note") - DNI = frappe.qb.DocType("Delivery Note Item") - - frappe.qb.update(DNI).join(DN).on(DN.name == DNI.parent).set(DNI.against_pick_list, DN.pick_list).where( - IfNull(DN.pick_list, "") != "" - ).run() + # Postgres doesn't support UPDATE ... JOIN. Use UPDATE ... FROM instead. + frappe.db.multisql( + { + "mariadb": """ + UPDATE `tabDelivery Note Item` dni + JOIN `tabDelivery Note` dn ON dn.`name` = dni.`parent` + SET dni.`against_pick_list` = dn.`pick_list` + WHERE COALESCE(dn.`pick_list`, '') <> '' + """, + "postgres": """ + UPDATE "tabDelivery Note Item" dni + SET against_pick_list = dn.pick_list + FROM "tabDelivery Note" dn + WHERE dn.name = dni.parent + AND COALESCE(dn.pick_list, '') <> '' + """, + } + ) def update_pick_list_items(): diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js index 898e8347292..0ae1828ee0d 100644 --- a/erpnext/public/js/controllers/transaction.js +++ b/erpnext/public/js/controllers/transaction.js @@ -479,7 +479,7 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe barcode(doc, cdt, cdn) { let row = locals[cdt][cdn]; - if (row.barcode) { + if (row.barcode && !frappe.flags.trigger_from_barcode_scanner) { erpnext.stock.utils.set_item_details_using_barcode(this.frm, row, (r) => { frappe.model.set_value(cdt, cdn, { "item_code": r.message.item_code, diff --git a/erpnext/public/js/utils/barcode_scanner.js b/erpnext/public/js/utils/barcode_scanner.js index 9f83f04b53f..0d93fd21382 100644 --- a/erpnext/public/js/utils/barcode_scanner.js +++ b/erpnext/public/js/utils/barcode_scanner.js @@ -138,7 +138,6 @@ erpnext.utils.BarcodeScanner = class BarcodeScanner { frappe.run_serially([ () => this.set_selector_trigger_flag(data), - () => this.set_barcode_uom(row, uom), () => this.set_serial_no(row, serial_no), () => this.set_batch_no(row, batch_no), () => this.set_barcode(row, barcode), @@ -148,6 +147,7 @@ erpnext.utils.BarcodeScanner = class BarcodeScanner { this.show_scan_message(row.idx, !is_new_row, qty); }), () => this.clean_up(), + () => this.set_barcode_uom(row, uom), () => this.revert_selector_flag(), () => resolve(row), ]); diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index 0079db289a5..a757efffa4e 100755 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -1869,7 +1869,7 @@ def get_work_order_items(sales_order, for_raw_material_request=0): if not for_raw_material_request: total_work_order_qty = flt( qb.from_(wo) - .select(Sum(wo.qty)) + .select(Sum(wo.qty - wo.process_loss_qty)) .where( (wo.production_item == i.item_code) & (wo.sales_order == so.name) diff --git a/erpnext/selling/page/point_of_sale/pos_controller.js b/erpnext/selling/page/point_of_sale/pos_controller.js index 6506ba047d0..d7ef86da872 100644 --- a/erpnext/selling/page/point_of_sale/pos_controller.js +++ b/erpnext/selling/page/point_of_sale/pos_controller.js @@ -606,6 +606,9 @@ erpnext.PointOfSale.Controller = class { async on_cart_update(args) { frappe.dom.freeze(); + if (this.frm.doc.set_warehouse !== this.settings.warehouse) { + this.frm.set_value("set_warehouse", this.settings.warehouse); + } let item_row = undefined; try { let { field, value, item } = args; diff --git a/erpnext/selling/report/sales_analytics/sales_analytics.js b/erpnext/selling/report/sales_analytics/sales_analytics.js index 7c5d5436877..96d91374c61 100644 --- a/erpnext/selling/report/sales_analytics/sales_analytics.js +++ b/erpnext/selling/report/sales_analytics/sales_analytics.js @@ -73,6 +73,18 @@ frappe.query_reports["Sales Analytics"] = { default: "Monthly", reqd: 1, }, + { + fieldname: "curves", + label: __("Curves"), + fieldtype: "Select", + options: [ + { value: "all", label: __("All") }, + { value: "non-zeros", label: __("Non-Zeros") }, + { value: "total", label: __("Total Only") }, + ], + default: "all", + reqd: 1, + }, { fieldname: "show_aggregate_value_from_subsidiary_companies", label: __("Show Aggregate Value from Subsidiary Companies"), diff --git a/erpnext/selling/report/sales_analytics/sales_analytics.py b/erpnext/selling/report/sales_analytics/sales_analytics.py index 96b018c6c5b..d4f7ad42b43 100644 --- a/erpnext/selling/report/sales_analytics/sales_analytics.py +++ b/erpnext/selling/report/sales_analytics/sales_analytics.py @@ -460,7 +460,31 @@ class Analytics: labels = [d.get("label") for d in self.columns[3 : length - 1]] else: labels = [d.get("label") for d in self.columns[1 : length - 1]] - self.chart = {"data": {"labels": labels, "datasets": []}, "type": "line"} + + datasets = [] + for curve in self.data: + data = { + "name": curve.get("entity_name", curve["entity"]), + "values": [curve.get(scrub(label), 0) for label in labels], + } + if self.filters.curves == "non-zeros" and not sum(data["values"]): + continue + elif self.filters.curves == "total" and "indent" in curve: + if curve["indent"] == 0: + datasets.append(data) + elif self.filters.curves == "total": + if datasets: + a = [ + data["values"][idx] + datasets[0]["values"][idx] for idx in range(len(data["values"])) + ] + datasets[0]["values"] = a + else: + datasets.append(data) + datasets[0]["name"] = _("Total") + else: + datasets.append(data) + + self.chart = {"data": {"labels": labels, "datasets": datasets}, "type": "line"} if self.filters["value_quantity"] == "Value": self.chart["fieldtype"] = "Currency" diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py index c4544b4e26b..299ae82cb69 100644 --- a/erpnext/setup/doctype/company/company.py +++ b/erpnext/setup/doctype/company/company.py @@ -11,7 +11,16 @@ from frappe.cache_manager import clear_defaults_cache from frappe.contacts.address_and_contact import load_address_and_contact from frappe.custom.doctype.property_setter.property_setter import make_property_setter from frappe.desk.page.setup_wizard.setup_wizard import make_records -from frappe.utils import add_months, cint, formatdate, get_first_day, get_link_to_form, get_timestamp, today +from frappe.utils import ( + add_months, + cint, + formatdate, + get_first_day, + get_last_day, + get_link_to_form, + get_timestamp, + today, +) from frappe.utils.nestedset import NestedSet, rebuild_tree from erpnext.accounts.doctype.account.account import get_account_currency @@ -762,31 +771,41 @@ def install_country_fixtures(company, country): def update_company_current_month_sales(company): - from_date = get_first_day(today()) - to_date = get_first_day(add_months(from_date, 1)) + """Update Company's Total Monthly Sales. - results = frappe.db.sql( - """ - SELECT - SUM(base_grand_total) AS total, - DATE_FORMAT(posting_date, '%%m-%%Y') AS month_year - FROM - `tabSales Invoice` - WHERE - posting_date >= %s - AND posting_date < %s - AND docstatus = 1 - AND company = %s - GROUP BY - month_year - """, - (from_date, to_date, company), - as_dict=True, + Postgres compatibility: + - Avoid MariaDB-only DATE_FORMAT(). + - Use a date range for the current month instead (portable + index-friendly). + """ + + # Local imports so you don't have to touch file-level imports + from frappe.query_builder.functions import Sum + + start_date = get_first_day(today()) + end_date = get_last_day(today()) + + si = frappe.qb.DocType("Sales Invoice") + + total_monthly_sales = ( + frappe.qb.from_(si) + .select(Sum(si.base_grand_total)) + .where( + (si.docstatus == 1) + & (si.company == company) + & (si.posting_date >= start_date) + & (si.posting_date <= end_date) + ) + ).run(pluck=True)[0] or 0 + + # Fieldname in standard ERPNext is `total_monthly_sales` + frappe.db.set_value( + "Company", + company, + "total_monthly_sales", + total_monthly_sales, + update_modified=False, ) - monthly_total = results[0]["total"] if len(results) > 0 else 0 - frappe.db.set_value("Company", company, "total_monthly_sales", monthly_total) - def update_company_monthly_sales(company): """Cache past year monthly sales of every company based on sales invoices""" diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js index 6ec2f4957d9..a1f0fe2aab8 100644 --- a/erpnext/stock/doctype/item/item.js +++ b/erpnext/stock/doctype/item/item.js @@ -977,7 +977,7 @@ frappe.tour["Item"] = [ fieldname: "valuation_rate", title: "Valuation Rate", description: __( - "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." + "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." ), }, { diff --git a/erpnext/stock/doctype/material_request/test_material_request.py b/erpnext/stock/doctype/material_request/test_material_request.py index ce5affdfdbe..fff0db2f93d 100644 --- a/erpnext/stock/doctype/material_request/test_material_request.py +++ b/erpnext/stock/doctype/material_request/test_material_request.py @@ -1004,7 +1004,8 @@ def make_material_request(**args): mr = frappe.new_doc("Material Request") mr.material_request_type = args.material_request_type or "Purchase" mr.company = args.company or "_Test Company" - mr.customer = args.customer or "_Test Customer" + if mr.material_request_type == "Customer Provided": + mr.customer = args.customer or "_Test Customer" mr.append( "items", { @@ -1013,6 +1014,7 @@ def make_material_request(**args): "uom": args.uom or "_Test UOM", "conversion_factor": args.conversion_factor or 1, "schedule_date": args.schedule_date or today(), + "from_warehouse": args.from_warehouse, "warehouse": args.warehouse or "_Test Warehouse - _TC", "cost_center": args.cost_center or "_Test Cost Center - _TC", }, diff --git a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py index 14d6ee7700d..5570fc265b0 100644 --- a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py @@ -4529,6 +4529,154 @@ class TestPurchaseReceipt(FrappeTestCase): self.assertEqual(sles, [1500.0, 1500.0]) + def test_do_not_use_batchwise_valuation_with_fifo(self): + from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry + + item_code = make_item( + "Test Item Do Not Use Batchwise Valuation with FIFO", + { + "is_stock_item": 1, + "has_batch_no": 1, + "batch_number_series": "BN-TESTDNUBVWF-.#####", + "valuation_method": "FIFO", + }, + ).name + + doc = frappe.new_doc("Batch") + doc.update( + { + "batch_id": "BN-TESTDNUBVWF-00001", + "item": item_code, + } + ).insert() + + doc.db_set("use_batchwise_valuation", 0) + doc.reload() + + self.assertTrue(doc.use_batchwise_valuation == 0) + + doc = frappe.new_doc("Batch") + doc.update( + { + "batch_id": "BN-TESTDNUBVWF-00002", + "item": item_code, + } + ).insert() + + self.assertTrue(doc.use_batchwise_valuation == 1) + + warehouse = "_Test Warehouse - _TC" + make_stock_entry( + item_code=item_code, + qty=10, + rate=100, + target=warehouse, + batch_no="BN-TESTDNUBVWF-00001", + use_serial_batch_fields=1, + ) + + se1 = make_stock_entry( + item_code=item_code, + qty=10, + rate=200, + target=warehouse, + batch_no="BN-TESTDNUBVWF-00001", + use_serial_batch_fields=1, + ) + + stock_queue = frappe.db.get_value( + "Stock Ledger Entry", + { + "item_code": item_code, + "warehouse": warehouse, + "is_cancelled": 0, + "voucher_type": "Stock Entry", + "voucher_no": se1.name, + }, + "stock_queue", + ) + + stock_queue = frappe.parse_json(stock_queue) + + self.assertEqual(stock_queue, [[10, 100.0], [10, 200.0]]) + + se2 = make_stock_entry( + item_code=item_code, + qty=10, + rate=2, + target=warehouse, + batch_no="BN-TESTDNUBVWF-00002", + use_serial_batch_fields=1, + ) + + stock_queue = frappe.db.get_value( + "Stock Ledger Entry", + { + "item_code": item_code, + "warehouse": warehouse, + "is_cancelled": 0, + "voucher_type": "Stock Entry", + "voucher_no": se2.name, + }, + "stock_queue", + ) + + stock_queue = frappe.parse_json(stock_queue) + self.assertEqual(stock_queue, [[10, 100.0], [10, 200.0]]) + + se3 = make_stock_entry( + item_code=item_code, + qty=20, + source=warehouse, + batch_no="BN-TESTDNUBVWF-00001", + use_serial_batch_fields=1, + ) + + ste_details = frappe.db.get_value( + "Stock Ledger Entry", + { + "item_code": item_code, + "warehouse": warehouse, + "is_cancelled": 0, + "voucher_type": "Stock Entry", + "voucher_no": se3.name, + }, + ["stock_queue", "stock_value_difference"], + as_dict=1, + ) + + stock_queue = frappe.parse_json(ste_details.stock_queue) + self.assertEqual(stock_queue, []) + self.assertEqual(ste_details.stock_value_difference, 3000 * -1) + + se4 = make_stock_entry( + item_code=item_code, + qty=20, + rate=0, + target=warehouse, + batch_no="BN-TESTDNUBVWF-00001", + use_serial_batch_fields=1, + do_not_submit=1, + ) + + se4.items[0].basic_rate = 0.0 + se4.items[0].allow_zero_valuation_rate = 1 + se4.submit() + + stock_queue = frappe.db.get_value( + "Stock Ledger Entry", + { + "item_code": item_code, + "warehouse": warehouse, + "is_cancelled": 0, + "voucher_type": "Stock Entry", + "voucher_no": se4.name, + }, + "stock_queue", + ) + + self.assertEqual(frappe.parse_json(stock_queue), [[20, 0.0]]) + 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/serial_and_batch_bundle/serial_and_batch_bundle.py b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py index ad88b571a91..b6caf53e470 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 @@ -713,17 +713,16 @@ class SerialandBatchBundle(Document): is_packed_item = True stock_queue = [] - batches = [] - if prev_sle and prev_sle.stock_queue: - batches = frappe.get_all( - "Batch", - filters={ - "name": ("in", [d.batch_no for d in self.entries if d.batch_no]), - "use_batchwise_valuation": 0, - }, - pluck="name", - ) + batches = frappe.get_all( + "Batch", + filters={ + "name": ("in", [d.batch_no for d in self.entries if d.batch_no]), + "use_batchwise_valuation": 0, + }, + pluck="name", + ) + if prev_sle and prev_sle.stock_queue and parse_json(prev_sle.stock_queue): if batches and valuation_method == "FIFO": stock_queue = parse_json(prev_sle.stock_queue) @@ -750,7 +749,7 @@ class SerialandBatchBundle(Document): if d.qty: d.stock_value_difference = flt(d.qty) * d.incoming_rate - if stock_queue and valuation_method == "FIFO" and d.batch_no in batches: + if valuation_method == "FIFO" and d.batch_no in batches and d.incoming_rate is not None: stock_queue.append([d.qty, d.incoming_rate]) d.stock_queue = json.dumps(stock_queue) diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index e06e3819e09..21f3245bbc4 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -646,7 +646,7 @@ class StockEntry(StockController): "Material Transfer for Manufacture", ] - validate_for_manufacture = any([d.bom_no for d in self.get("items")]) + has_bom = any([d.bom_no for d in self.get("items")]) if self.purpose in source_mandatory and self.purpose not in target_mandatory: self.to_warehouse = None @@ -675,7 +675,7 @@ class StockEntry(StockController): frappe.throw(_("Target warehouse is mandatory for row {0}").format(d.idx)) if self.purpose == "Manufacture": - if validate_for_manufacture: + if has_bom: if d.is_finished_item or d.is_scrap_item: d.s_warehouse = None if not d.t_warehouse: @@ -685,6 +685,17 @@ class StockEntry(StockController): if not d.s_warehouse: frappe.throw(_("Source warehouse is mandatory for row {0}").format(d.idx)) + if self.purpose == "Disassemble": + if has_bom: + if d.is_finished_item: + d.t_warehouse = None + if not d.s_warehouse: + frappe.throw(_("Source warehouse is mandatory for row {0}").format(d.idx)) + else: + d.s_warehouse = None + if not d.t_warehouse: + frappe.throw(_("Target warehouse is mandatory for row {0}").format(d.idx)) + if cstr(d.s_warehouse) == cstr(d.t_warehouse) and self.purpose not in [ "Material Transfer for Manufacture", "Material Transfer", @@ -1907,9 +1918,12 @@ class StockEntry(StockController): def get_items_for_disassembly(self): """Get items for Disassembly Order""" - if not self.work_order: - frappe.throw(_("The Work Order is mandatory for Disassembly Order")) + if self.work_order: + return self._add_items_for_disassembly_from_work_order() + return self._add_items_for_disassembly_from_bom() + + def _add_items_for_disassembly_from_work_order(self): items = self.get_items_from_manufacture_entry() s_warehouse = frappe.db.get_value("Work Order", self.work_order, "fg_warehouse") @@ -1941,6 +1955,23 @@ class StockEntry(StockController): child_row.t_warehouse = row.s_warehouse child_row.is_finished_item = 0 if row.is_finished_item else 1 + def _add_items_for_disassembly_from_bom(self): + if not self.bom_no or not self.fg_completed_qty: + frappe.throw(_("BOM and Finished Good Quantity is mandatory for Disassembly")) + + # Raw Materials + item_dict = self.get_bom_raw_materials(self.fg_completed_qty) + + for item_row in item_dict.values(): + item_row["to_warehouse"] = self.to_warehouse + item_row["from_warehouse"] = "" + item_row["is_finished_item"] = 0 + + self.add_to_stock_entry_detail(item_dict) + + # Finished goods + self.load_items_from_bom() + def get_items_from_manufacture_entry(self): return frappe.get_all( "Stock Entry", @@ -2164,6 +2195,7 @@ class StockEntry(StockController): expense_account = item.get("expense_account") if not expense_account: expense_account = frappe.get_cached_value("Company", self.company, "stock_adjustment_account") + args = { "to_warehouse": to_warehouse, "from_warehouse": "", @@ -2176,6 +2208,15 @@ class StockEntry(StockController): "is_finished_item": 1, } + if self.purpose == "Disassemble": + args.update( + { + "from_warehouse": self.from_warehouse, + "to_warehouse": "", + "qty": flt(self.fg_completed_qty), + } + ) + if ( self.work_order and self.pro_doc.has_batch_no @@ -2807,7 +2848,7 @@ class StockEntry(StockController): stock_entries_child_list.append(d.ste_detail) transferred_qty = frappe.get_all( "Stock Entry Detail", - fields=["sum(qty) as qty"], + fields=["sum(transfer_qty) as qty"], filters={ "against_stock_entry": d.against_stock_entry, "ste_detail": d.ste_detail, diff --git a/erpnext/stock/doctype/stock_entry/test_stock_entry.py b/erpnext/stock/doctype/stock_entry/test_stock_entry.py index e12e816db7d..0be02756207 100644 --- a/erpnext/stock/doctype/stock_entry/test_stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/test_stock_entry.py @@ -14,6 +14,13 @@ from erpnext.stock.doctype.item.test_item import ( make_item_variant, set_item_variant_settings, ) +from erpnext.stock.doctype.material_request.material_request import ( + make_in_transit_stock_entry, +) +from erpnext.stock.doctype.material_request.test_material_request import ( + get_in_transit_warehouse, + make_material_request, +) from erpnext.stock.doctype.serial_and_batch_bundle.test_serial_and_batch_bundle import ( get_batch_from_bundle, get_serial_nos_from_bundle, @@ -2127,6 +2134,104 @@ class TestStockEntry(FrappeTestCase): self.assertEqual(se.purpose, "Repack") self.assertRaises(frappe.ValidationError, se.submit) + def test_transferred_qty_in_material_transfer(self): + item_code = "_Test Item" + source_warehouse = "_Test Warehouse - _TC" + target_warehouse = "_Test Warehouse 1 - _TC" + + if not frappe.db.get_value("UOM Conversion Detail", {"parent": item_code, "uom": "Box"}): + item_doc = frappe.get_doc("Item", item_code) + item_doc.append("uoms", {"uom": "Box", "conversion_factor": 12}) + item_doc.save(ignore_permissions=True) + + make_stock_entry(item_code=item_code, target=source_warehouse, qty=12, rate=100) + + # Create a Material Request for Material Transfer + material_request = make_material_request( + material_request_type="Material Transfer", + qty=1, + item_code=item_code, + uom="Box", + conversion_factor=12, + from_warehouse=source_warehouse, + warehouse=target_warehouse, + ) + in_transit_wh = get_in_transit_warehouse(material_request.company) + + # Create first Stock Entry (Source -> In-Transit) + stock_entry_1 = make_in_transit_stock_entry(material_request.name, in_transit_wh) + stock_entry_1.items[0].update( + { + "qty": 1, + "s_warehouse": source_warehouse, + } + ) + stock_entry_1.save().submit() + + # Validate transfer status after first transfer + material_request.reload() + self.assertEqual(material_request.transfer_status, "In Transit") + + # Create final Stock Entry (In-Transit -> Target) + end_transit_1 = make_stock_in_entry(stock_entry_1.name) + end_transit_1.save().submit() + end_transit_1.reload() + + # Validate quantities + stock_entry_1.reload() + self.assertEqual(stock_entry_1.items[0].qty, 1) + self.assertEqual(stock_entry_1.items[0].transfer_qty, 12) + self.assertEqual(stock_entry_1.items[0].transferred_qty, 12) + + # Validate transfer status after final transfer + material_request.reload() + self.assertEqual(material_request.transfer_status, "Completed") + + def test_disassemble_entry_without_wo(self): + from erpnext.manufacturing.doctype.production_plan.test_production_plan import make_bom + + fg_item = make_item("_Disassemble Mobile", properties={"is_stock_item": 1}).name + rm_item1 = make_item("_Disassemble Temper Glass", properties={"is_stock_item": 1}).name + rm_item2 = make_item("_Disassemble Battery", properties={"is_stock_item": 1}).name + warehouse = "_Test Warehouse - _TC" + + # Stock up the FG item (what we'll disassemble) + make_stock_entry(item_code=fg_item, target=warehouse, qty=5, purpose="Material Receipt") + + bom_no = make_bom(item=fg_item, raw_materials=[rm_item1, rm_item2]).name + + se = make_stock_entry(item_code=fg_item, qty=1, purpose="Disassemble", do_not_save=True) + se.from_bom = 1 + se.use_multi_level_bom = 1 + se.bom_no = bom_no + se.fg_completed_qty = 1 + se.from_warehouse = warehouse + se.to_warehouse = warehouse + + se.get_items() + + # Verify FG as source (being consumed) + fg_items = [d for d in se.items if d.is_finished_item] + self.assertEqual(len(fg_items), 1) + self.assertEqual(fg_items[0].item_code, fg_item) + self.assertEqual(fg_items[0].qty, 1) + self.assertEqual(fg_items[0].s_warehouse, warehouse) + self.assertFalse(fg_items[0].t_warehouse) + + # Verify RM as target (being received) + rm_items = {d.item_code: d for d in se.items if not d.is_finished_item} + self.assertEqual(len(rm_items), 2) + self.assertIn(rm_item1, rm_items) + self.assertIn(rm_item2, rm_items) + self.assertEqual(rm_items[rm_item1].qty, 1) + self.assertEqual(rm_items[rm_item2].qty, 1) + self.assertEqual(rm_items[rm_item1].t_warehouse, warehouse) + self.assertFalse(rm_items[rm_item1].s_warehouse) + + se.calculate_rate_and_amount() + se.save() + se.submit() + def make_serialized_item(**args): args = frappe._dict(args) diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py index 629a50e1c28..5359995ea9c 100644 --- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py @@ -74,6 +74,7 @@ class StockReconciliation(StockController): self.validate_duplicate_serial_and_batch_bundle("items") self.remove_items_with_no_change() self.validate_data() + self.change_row_indexes() self.validate_expense_account() self.validate_customer_provided_item() self.set_zero_value_for_customer_provided_items() @@ -557,8 +558,7 @@ class StockReconciliation(StockController): elif len(items) != len(self.items): self.items = items - for i, item in enumerate(self.items): - item.idx = i + 1 + self.change_idx = True frappe.msgprint(_("Removed items with no change in quantity or value.")) def calculate_difference_amount(self, item, item_dict): @@ -575,14 +575,14 @@ class StockReconciliation(StockController): def validate_data(self): def _get_msg(row_num, msg): - return _("Row # {0}:").format(row_num + 1) + " " + msg + return _("Row #{0}:").format(row_num) + " " + msg self.validation_messages = [] item_warehouse_combinations = [] default_currency = frappe.db.get_default("currency") - for row_num, row in enumerate(self.items): + for row in self.items: # find duplicates key = [row.item_code, row.warehouse] for field in ["serial_no", "batch_no"]: @@ -595,7 +595,7 @@ class StockReconciliation(StockController): if key in item_warehouse_combinations: self.validation_messages.append( - _get_msg(row_num, _("Same item and warehouse combination already entered.")) + _get_msg(row.idx, _("Same item and warehouse combination already entered.")) ) else: item_warehouse_combinations.append(key) @@ -605,29 +605,29 @@ class StockReconciliation(StockController): if row.serial_no and not row.qty: self.validation_messages.append( _get_msg( - row_num, + row.idx, f"Quantity should not be zero for the {bold(row.item_code)} since serial nos are specified", ) ) # validate warehouse if not frappe.db.get_value("Warehouse", row.warehouse): - self.validation_messages.append(_get_msg(row_num, _("Warehouse not found in the system"))) + self.validation_messages.append(_get_msg(row.idx, _("Warehouse not found in the system"))) # if both not specified if row.qty in ["", None] and row.valuation_rate in ["", None]: self.validation_messages.append( - _get_msg(row_num, _("Please specify either Quantity or Valuation Rate or both")) + _get_msg(row.idx, _("Please specify either Quantity or Valuation Rate or both")) ) # do not allow negative quantity if flt(row.qty) < 0: - self.validation_messages.append(_get_msg(row_num, _("Negative Quantity is not allowed"))) + self.validation_messages.append(_get_msg(row.idx, _("Negative Quantity is not allowed"))) # do not allow negative valuation if flt(row.valuation_rate) < 0: self.validation_messages.append( - _get_msg(row_num, _("Negative Valuation Rate is not allowed")) + _get_msg(row.idx, _("Negative Valuation Rate is not allowed")) ) if row.qty and row.valuation_rate in ["", None]: @@ -659,6 +659,11 @@ class StockReconciliation(StockController): raise frappe.ValidationError(self.validation_messages) + def change_row_indexes(self): + if getattr(self, "change_idx", False): + for i, item in enumerate(self.items): + item.idx = i + 1 + def validate_item(self, item_code, row): from erpnext.stock.doctype.item.item import ( validate_cancelled_item, diff --git a/erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py b/erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py index 0db7e40b77f..b83e46012cc 100644 --- a/erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py +++ b/erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py @@ -42,9 +42,37 @@ def get_data(report_filters): gl_data = voucher_wise_gl_data.get(key) or {} d.account_value = gl_data.get("account_value", 0) d.difference_value = d.stock_value - d.account_value + d.ledger_type = "Stock Ledger Entry" if abs(d.difference_value) > 0.1: data.append(d) + if key in voucher_wise_gl_data: + del voucher_wise_gl_data[key] + + if voucher_wise_gl_data: + data += get_gl_ledgers_with_no_stock_ledger_entries(voucher_wise_gl_data) + + return data + + +def get_gl_ledgers_with_no_stock_ledger_entries(voucher_wise_gl_data): + data = [] + + for key in voucher_wise_gl_data: + gl_data = voucher_wise_gl_data.get(key) or {} + data.append( + { + "name": gl_data.get("name"), + "ledger_type": "GL Entry", + "voucher_type": gl_data.get("voucher_type"), + "voucher_no": gl_data.get("voucher_no"), + "posting_date": gl_data.get("posting_date"), + "stock_value": 0, + "account_value": gl_data.get("account_value", 0), + "difference_value": gl_data.get("account_value", 0) * -1, + } + ) + return data @@ -89,6 +117,7 @@ def get_gl_data(report_filters, filters): "voucher_type", "voucher_no", "sum(debit_in_account_currency) - sum(credit_in_account_currency) as account_value", + "posting_date", ], group_by="voucher_type, voucher_no", ) @@ -106,10 +135,15 @@ def get_columns(filters): { "label": _("Stock Ledger ID"), "fieldname": "name", - "fieldtype": "Link", - "options": "Stock Ledger Entry", + "fieldtype": "Dynamic Link", + "options": "ledger_type", "width": "80", }, + { + "label": _("Ledger Type"), + "fieldname": "ledger_type", + "fieldtype": "Data", + }, {"label": _("Posting Date"), "fieldname": "posting_date", "fieldtype": "Date"}, {"label": _("Posting Time"), "fieldname": "posting_time", "fieldtype": "Time"}, {"label": _("Voucher Type"), "fieldname": "voucher_type", "width": "110"},