fix(api-entreprise): save libelle_commune_etranger and libelle_pays_etranger in db

This commit is contained in:
Paul Chavard 2024-09-13 17:35:27 +02:00
parent 58037f21cd
commit f5fdef0600
No known key found for this signature in database
8 changed files with 135 additions and 6 deletions

View file

@ -25,7 +25,12 @@ class APIEntreprise::EtablissementAdapter < APIEntreprise::Adapter
params.merge!(params[:adresse].slice(*address_attr_to_fetch)) params.merge!(params[:adresse].slice(*address_attr_to_fetch))
params[:nom_voie] = raw_data[:adresse][:libelle_voie] params[:nom_voie] = raw_data[:adresse][:libelle_voie]
params[:code_insee_localite] = raw_data[:adresse][:code_commune] params[:code_insee_localite] = raw_data[:adresse][:code_commune]
params[:localite] = raw_data[:adresse][:libelle_commune] if raw_data[:adresse][:libelle_pays_etranger].present?
params[:localite] = raw_data[:adresse][:libelle_commune_etranger]
params[:nom_pays] = raw_data[:adresse][:libelle_pays_etranger]
else
params[:localite] = raw_data[:adresse][:libelle_commune]
end
params[:adresse] = adresse_line params[:adresse] = adresse_line
params params
else else

View file

@ -52,7 +52,8 @@ class Etablissement < ApplicationRecord
adresse, adresse,
code_postal, code_postal,
localite, localite,
code_insee_localite code_insee_localite,
nom_pays
] ]
end end

View file

@ -0,0 +1,7 @@
# frozen_string_literal: true
class AddNomPaysToEtablissements < ActiveRecord::Migration[7.0]
def change
add_column :etablissements, :nom_pays, :string
end
end

View file

@ -10,7 +10,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.0].define(version: 2024_08_30_125438) do ActiveRecord::Schema[7.0].define(version: 2024_09_13_150318) do
# These are extensions that must be enabled in order to support this database # These are extensions that must be enabled in order to support this database
enable_extension "pg_buffercache" enable_extension "pg_buffercache"
enable_extension "pg_stat_statements" enable_extension "pg_stat_statements"
@ -570,6 +570,7 @@ ActiveRecord::Schema[7.0].define(version: 2024_08_30_125438) do
t.string "libelle_naf" t.string "libelle_naf"
t.string "localite" t.string "localite"
t.string "naf" t.string "naf"
t.string "nom_pays"
t.string "nom_voie" t.string "nom_voie"
t.string "numero_voie" t.string "numero_voie"
t.boolean "siege_social" t.boolean "siege_social"

View file

@ -0,0 +1,99 @@
{
"data": {
"siret": "30613890001294",
"siege_social": true,
"etat_administratif": "A",
"date_fermeture": 1634133818,
"activite_principale": {
"code": "8411Z",
"libelle": "Administration publique générale",
"nomenclature": "NAFRev2"
},
"tranche_effectif_salarie": {
"code": "51",
"intitule": "2 000 à 4 999 salariés",
"date_reference": "2016",
"de": 2000,
"a": 4999
},
"status_diffusion": "diffusible",
"diffusable_commercialement": true,
"enseigne": "Coiff Land, CoiffureLand",
"unite_legale": {
"siren": "130025265",
"siret_siege_social": "13002526500013",
"type": "personne_morale",
"personne_morale_attributs": {
"raison_sociale": "DIRECTION INTERMINISTERIELLE DU NUMERIQUE",
"sigle": "DINUM"
},
"personne_physique_attributs": {
"pseudonyme": "DJ Falcon",
"prenom_usuel": "Jean",
"prenom_1": "Jean",
"prenom_2": "Jacques",
"prenom_3": "Pierre",
"prenom_4": "Paul",
"nom_usage": "Dupont",
"nom_naissance": "Martin",
"sexe": "M"
},
"categorie_entreprise": "GE",
"status_diffusion": "diffusible",
"diffusable_commercialement": true,
"forme_juridique": {
"code": "7120",
"libelle": "Service central d'un ministère"
},
"activite_principale": {
"code": "8411Z",
"libelle": "Administration publique générale",
"nomenclature": "NAFRev2"
},
"tranche_effectif_salarie": {
"code": "51",
"intitule": "2 000 à 4 999 salariés",
"date_reference": "2016",
"de": 2000,
"a": 4999
},
"etat_administratif": "A",
"economie_sociale_et_solidaire": true,
"date_creation": 1634103818
},
"adresse": {
"numero_voie": "22",
"indice_repetition_voie": "bis",
"type_voie": "RUE",
"libelle_voie": "DE LA PAIX",
"complement_adresse": "ZAE SAINT GUENAULT",
"code_commune": "75112",
"code_postal": "75016",
"distribution_speciale": "string",
"code_cedex": "75590",
"libelle_cedex": "PARIS CEDEX 12",
"libelle_commune": null,
"libelle_commune_etranger": "LONDRES",
"code_pays_etranger": "99132",
"libelle_pays_etranger": "ROYAUME-UNI",
"status_diffusion": "diffusible",
"acheminement_postal": {
"l1": "DIRECTION INTERMINISTERIELLE DU NUMERIQUE",
"l2": "JEAN MARIE DURAND",
"l3": "ZAE SAINT GUENAULT",
"l4": "51 BIS RUE DE LA PAIX",
"l5": "CS 72809",
"l6": "75256 PARIX CEDEX 12",
"l7": "FRANCE"
}
},
"date_creation": 1634103818
},
"links": {
"unite_legale": "https://entreprise.api.gouv.fr/api/v3/insee/unites_legales/130025265"
},
"meta": {
"date_derniere_mise_a_jour": 1618396818,
"redirect_from_siret": "30613890000010"
}
}

View file

@ -73,9 +73,9 @@
"code_cedex": "75590", "code_cedex": "75590",
"libelle_cedex": "PARIS CEDEX 12", "libelle_cedex": "PARIS CEDEX 12",
"libelle_commune": "PARIS 12", "libelle_commune": "PARIS 12",
"libelle_commune_etranger": "string", "libelle_commune_etranger": null,
"code_pays_etranger": "99132", "code_pays_etranger": "99132",
"libelle_pays_etranger": "ROYAUME-UNI", "libelle_pays_etranger": null,
"status_diffusion": "diffusible", "status_diffusion": "diffusible",
"acheminement_postal": { "acheminement_postal": {
"l1": "DIRECTION INTERMINISTERIELLE DU NUMERIQUE", "l1": "DIRECTION INTERMINISTERIELLE DU NUMERIQUE",

View file

@ -74,10 +74,26 @@ describe APIEntreprise::EtablissementAdapter do
expect(subject[:localite]).to eq('PARIS 12') expect(subject[:localite]).to eq('PARIS 12')
end end
it 'L\'entreprise ne contient pas de nom de pays' do
expect(subject[:nom_pays]).to be_nil
end
it 'L\'entreprise contient bien un code_insee_localite' do it 'L\'entreprise contient bien un code_insee_localite' do
expect(subject[:code_insee_localite]).to eq('75112') expect(subject[:code_insee_localite]).to eq('75112')
end end
end end
context 'Détails adresse étranger' do
let(:fixture) { 'spec/fixtures/files/api_entreprise/etablissements-uk.json' }
it 'L\'entreprise contient bien une localite' do
expect(subject[:localite]).to eq('LONDRES')
end
it 'L\'entreprise contient bien un nom de pays' do
expect(subject[:nom_pays]).to eq('ROYAUME-UNI')
end
end
end end
context 'Attributs Etablissements pour etablissement non siege' do context 'Attributs Etablissements pour etablissement non siege' do

View file

@ -443,7 +443,7 @@ describe Champ do
end end
let(:champ) { Champs::SiretChamp.new(value: etablissement.siret, etablissement:) } let(:champ) { Champs::SiretChamp.new(value: etablissement.siret, etablissement:) }
it { is_expected.to eq([etablissement.entreprise_siren, etablissement.entreprise_numero_tva_intracommunautaire, etablissement.entreprise_forme_juridique, etablissement.entreprise_forme_juridique_code, etablissement.entreprise_nom_commercial, etablissement.entreprise_raison_sociale, etablissement.entreprise_siret_siege_social, etablissement.entreprise_nom, etablissement.entreprise_prenom, etablissement.association_rna, etablissement.association_titre, etablissement.association_objet, etablissement.siret, etablissement.enseigne, etablissement.naf, etablissement.libelle_naf, etablissement.adresse, etablissement.code_postal, etablissement.localite, etablissement.code_insee_localite]) } it { is_expected.to eq([etablissement.entreprise_siren, etablissement.entreprise_numero_tva_intracommunautaire, etablissement.entreprise_forme_juridique, etablissement.entreprise_forme_juridique_code, etablissement.entreprise_nom_commercial, etablissement.entreprise_raison_sociale, etablissement.entreprise_siret_siege_social, etablissement.entreprise_nom, etablissement.entreprise_prenom, etablissement.association_rna, etablissement.association_titre, etablissement.association_objet, etablissement.siret, etablissement.enseigne, etablissement.naf, etablissement.libelle_naf, etablissement.adresse, etablissement.code_postal, etablissement.localite, etablissement.code_insee_localite, nil]) }
end end
context 'when there is no etablissement' do context 'when there is no etablissement' do