python-creditagricole-particuliers icon indicating copy to clipboard operation
python-creditagricole-particuliers copied to clipboard

[Question] Est-on sûr qu'1 département = 1 caisse régionale ?

Open Royalphax opened this issue 6 months ago • 1 comments

Hello, nous sommes quelques-uns à utiliser cette API pour récupérer nos transactions et les envoyer vers nos instances firefly3 grâce à ce projet.

Initialement, j'indiquais à la classe Authenticator le nom de la caisse régionale et depuis la contribution de @Elektriman, cela a été simplifié via l'argument du numéro de département.

Au départ, je pensais qu'une personne domiciliée dans un département avait forcément ses comptes dans une seule caisse régionale, mais après quelques recherches, ce n'est pas forcément le cas partout.

Par exemple, pour l'Ardèche (07), on peut le voir :

  • sur l'application "Crédit Agricole" : Capture d’écran du 2024-01-03 22-40-36
  • sur le site du Credit Agricole : Capture d’écran du 2024-01-03 22-40-36

Ce qui... au final... est assez paradoxal, car l'annuaire en ligne des caisses régionales nous dit que le département de l'Ardèche est dans la caisse régionale Sud Rhône Alpes.

Étant donné que python-creditagricole-particuliers s'appuie sur des requêtes utilisées par le site ou l'application (qui reconnaissent que certains départements peuvent avoir 2 caisses régionales), j'ai trouvé pertinent de le prendre en compte.

Voici la liste statique des départements ainsi que leur(s) région(s) correspondantes que nous utilisons dans notre projet :

DEPARTMENTS_TO_CA_REGIONS = {
    ('20', '2A', '2B'): ['corse'],
    ('1', '71'): ['centrest'],
    ('2', '8', '51'): ['nord-est'],
    ('4', '6', '83'): ['pca'],
    ('5', '13', '84'): ['alpesprovence'],
    ('10', '21', '52', '89'): ['cb'],
    ('11', '30', '34', '48'): ['languedoc'],
    ('12', '46', '81', '82'): ['nmp'],
    ('14', '50'): ['normandie'],
    ('53', '61'): ['normandie', 'anjou-maine'],
    ('15', '23', '63', '03', '19'): ['centrefrance'],
    ('16', '24'): ['charente-perigord'],
    ('17', '79'): ['cmds'],
    ('18', '58'): ['centreloire'],
    ('56',): ['morbihan'],
    ('45',): ['briepicardie', 'centreloire'],
    ('22',): ['cotesdarmor'],
    ('25', '39', '70', '90'): ['franchecomte'],
    ('26', '38', '69', '7'): ['centrest', 'sudrhonealpes'],
    ('27', '76'): ['normandie-seine'],
    ('28', '41'): ['valdefrance'],
    ('29',): ['finistere'],
    ('31',): ['toulouse31'],
    ('32',): ['aquitaine', 'pyrenees-gascogne'],
    ('33', '40', '47'): ['aquitaine'],
    ('35',): ['illeetvilaine'],
    ('36', '87'): ['centreouest'],
    ('37', '86'): ['tourainepoitou'],
    ('54', '55', '57'): ['lorraine'],
    ('67', '68', '88'): ['alsace-vosges'],
    ('42', '43'): ['loirehauteloire'],
    ('44', '85'): ['atlantique-vendee'],
    ('11', '30', '34', '48',): ['languedoc'],
    ('49', '72'): ['anjou-maine'],
    ('59', '62'): ['norddefrance'],
    ('64', '65'): ['pyrenees-gascogne'],
    ('66', '9'): ['sudmed'],
    ('73', '74'): ['des-savoie'],
    ('75', '91', '92', '93', '94', '95', '78'): ['paris'],
    ('60',): ['briepicardie', 'paris'],
    ('80', '77'): ['briepicardie'],
    ('971',): ['guadeloupe'],
    ('972', '973'): ['martinique'],
    ('974',): ['reunion']
}

Et la méthode pour passer du numéro de département à la caisse régionale (ou aux caisses...) :

def get_ca_region(department_id: str):
    department_id = str(int(department_id)) if department_id.isdigit() else department_id
    for key, value in DEPARTMENTS_TO_CA_REGIONS.items():
        if department_id in key:
            return value
    return None

Enfin, en cas d'ambiguïté (plusieurs caisses pour 1 département), nous demandons à l'utilisateur de clairement indiquer sa caisse.

Exemple :

Exception: Unfortunately your department number is not enough to know what is your CA region. Please replace your department number by one of the following CA region :
-> bank-department = sudrhonealpes (if your accounts are managed by Credit Agricole Sud Rhône Alpes)
-> bank-department = centrest (if your accounts are managed by Credit Agricole Centre Est)

Je vous laisse me donner votre avis afin de savoir si cette subtilité devrait être intégrée à l'API. De notre côté, nous assignons directement la variable self.regional_bank_url.

Royalphax avatar Jan 03 '24 22:01 Royalphax