[IMP]import_chart_of_accounts:check for account starting with same digit

This commit is contained in:
2024-10-08 13:23:47 +02:00
parent 76203c5387
commit 8f0218c43f
3 changed files with 17 additions and 6 deletions

View File

@@ -14,12 +14,13 @@ Description
============= =============
Pendant l'import, chaque ligne est comparée aux comptes comptables présents dans Odoo Pendant l'import, chaque ligne est comparée aux comptes comptables présents dans Odoo
- Si le compte comptable à importer existe déjà dans la base de données, le nom (et éventuellement le code) du compte déjà dans Odoo est mis à jour avec les nouvelles données. Il n'y a pas de création de nouveau compte. - Si le compte comptable à importer existe déjà dans la base de données, le nom (et éventuellemnet le code) du compte déjà dans Odoo est mis à jour avec les nouvelles données. Il n'y a pas de création de nouveau compte.
- Un compte comptable de la base de données est considéré comme identique à celui qu'on souhaite importer, si les 2 comptes ont le même code une fois les zéros finaux supprimés. - Un compte comptable de la base de données est considéré comme identique à celui qu'on souhaite importer, si les 2 comptes ont le même code une fois les zéros finaux supprimés.
- Par ex: les comptes 120000 et 12000000 sont considérés identiques (12 = 12), mais les comptes 120000 et 12000001 ne sont pas considérés identiques (12 != 12000001) - Par ex: les comptes 120000 et 12000000 sont considérés identiques (12 = 12), mais les comptes 120000 et 12000001 ne sont pas considérés identiques (12 != 12000001)
- Si le compte comptable à importer n'existe pas dans la bdd, il est créé. - Si le compte comptable à importer n'existe pas dans la bdd, il est créé.
- Un compte similaire au compte nouvellement créé est recherché dans la bdd pour y ajouter les mêmes paramêtres. - Un compte similaire au compte nouvellement créé est recherché dans la bdd pour y ajouter les mêmes paramêtres.
- Pour ce faire, on recherche dans la bdd tous les comptes qui ont les 3 premiers chiffres de leur code en commun avec celui du compte nouvellement créé. - Pour ce faire, on recherche dans la bdd tous les comptes qui ont les 3 premiers chiffres de leur code en commun avec celui du compte nouvellement créé.
- S'il n'en existe pas, on recherche dans la bdd tous les comptes qui ont les 1 premier chiffre de leur code en commun avec celui du compte nouvellement créé.
- Parmi ces comptes, le compte qui sera concidéré comme 'similaire' et dont on va copié les paramètre sur le nouveau compte est celui au numéro de code le plus bas. - Parmi ces comptes, le compte qui sera concidéré comme 'similaire' et dont on va copié les paramètre sur le nouveau compte est celui au numéro de code le plus bas.
- On enregistre la valeur des variables 'type' et 'reconcilition' du compte 'similaire' dans le compte comptable nouvellement créé. - On enregistre la valeur des variables 'type' et 'reconcilition' du compte 'similaire' dans le compte comptable nouvellement créé.
- S'il n'existe 'compte similaire' pour le nouveau compte, aucun paramétrage n'est ajouté lors de l'import - S'il n'existe 'compte similaire' pour le nouveau compte, aucun paramétrage n'est ajouté lors de l'import
@@ -28,7 +29,7 @@ Exemple :
J'importe le compte comptable '607730 Epicerie divers' J'importe le compte comptable '607730 Epicerie divers'
Ce compte comptable n'existe pas déjà dans Odoo, il est créé. Ce compte comptable n'existe pas déjà dans Odoo, il est créé.
Pour le configurer automatiquement, on se fonde sur un compte similaire dans Odoo et avec le code le plus bas parmi les comptes similaires Pour le configurer automatiquement, on se fonde sur un compte similaire dans Odoo et avec le code le plus bas parmis les comptes similaires
Ici il s'agit de '607000 Achats de marchandise': Ici il s'agit de '607000 Achats de marchandise':
Il a pour Type Charges car c'est une compte de charges et Autoriser le lettrage est à False. Il a pour Type Charges car c'est une compte de charges et Autoriser le lettrage est à False.
Le compte '607730 Epicerie divers' sera donc enregistré dans Odoo avec le même paramétrage. Le compte '607730 Epicerie divers' sera donc enregistré dans Odoo avec le même paramétrage.
@@ -37,6 +38,10 @@ J'importe le compte comptable '70600000 Prestation de service'
Le compte '706000 Ventes de produits issus de prestation' existe en bdd Le compte '706000 Ventes de produits issus de prestation' existe en bdd
Le compte '706000 Ventes de produits issus de prestation' existant est mise à jour pour devenir '70600000 Prestation de service' Le compte '706000 Ventes de produits issus de prestation' existant est mise à jour pour devenir '70600000 Prestation de service'
J'importe le compte comptable '70000000 Vente de produits fabriqués'
Il n'existe pas déjà en bdd, il n'existe pas non plus de compte qui commence par '700'
Le compte '770000000 Vente de produits fabriqués' est créé avec pour type et l'autorisation de lettrage du plus petit compte 7 déjà existant en bdd
Usage Usage
===== =====

View File

@@ -1,6 +1,6 @@
{ {
'name': 'Import chart of accounts', 'name': 'Import chart of accounts',
'version': '16.0.1.2.0', 'version': '16.0.1.3.0',
'summary': 'while importing the accounts chart, only update account name of existing accounts and automatise settings for new accounts', 'summary': 'while importing the accounts chart, only update account name of existing accounts and automatise settings for new accounts',
'description': '', 'description': '',
'author': '', 'author': '',

View File

@@ -41,11 +41,17 @@ class ImportCoaWizard(models.TransientModel):
else: else:
# find the closest account already existing in Odoo, it has the same first tree digits # find the closest account already existing in Odoo, it has the same first tree digits
# Example : 706100 is the closest account of 706600 # Example : 706100 is the closest account of 706600
if self.find_account_with_same_firsts_digits(record_data['code'][:3]) :
closest_account = self.find_account_with_same_firsts_digits(record_data['code'][:3]) closest_account = self.find_account_with_same_firsts_digits(record_data['code'][:3])
if closest_account :
record_data['account_type'] = closest_account.account_type record_data['account_type'] = closest_account.account_type
record_data['reconcile'] = closest_account.reconcile record_data['reconcile'] = closest_account.reconcile
new_account = self.env['account.account'].create(record_data) # find the closest account already existing in Odoo, it has the same first digit
# Example : the smallest account beginning with 7 will be taken as the account closest to 700000 if no other account begins with 700
elif self.find_account_with_same_firsts_digits(record_data['code'][:1]):
closest_account = self.find_account_with_same_firsts_digits(record_data['code'][:1])
record_data['account_type'] = closest_account.account_type
record_data['reconcile'] = closest_account.reconcile
self.env['account.account'].create(record_data)
return { return {
"type": "ir.actions.act_window", "type": "ir.actions.act_window",