Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ETQ instructeur, je souhaite acceder aux information liées à l'adresses des champs RNA/RNF/SIRET #10703

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions app/models/address_proxy.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# frozen_string_literal: true

class AddressProxy
mfo marked this conversation as resolved.
Show resolved Hide resolved
ADDRESS_PARTS = [
:street_address,
:city_name,
:postal_code,
:city_code,
:departement_name,
:departement_code,
:region_name,
:region_code
]

class ChampAddressPresenter
ADDRESS_PARTS.each do |address_part|
define_method(address_part) do
@data[address_part]

Check warning on line 18 in app/models/address_proxy.rb

View check run for this annotation

Codecov / codecov/patch

app/models/address_proxy.rb#L18

Added line #L18 was not covered by tests
end
end

def initialize(champ)
@data = champ.value_json.with_indifferent_access

Check warning on line 23 in app/models/address_proxy.rb

View check run for this annotation

Codecov / codecov/patch

app/models/address_proxy.rb#L23

Added line #L23 was not covered by tests
end
end

class EtablissementAddressPresenter
attr_reader(*ADDRESS_PARTS)

def initialize(etablissement)
@street_address = [etablissement.numero_voie, etablissement.type_voie, etablissement.nom_voie].compact.join(" ")
@city_name = etablissement.localite
@postal_code = etablissement.code_postal
@city_code = etablissement.code_insee_localite
@departement_name = APIGeoService.departement_name_by_postal_code(@postal_code)
@departement_code = APIGeoService.departement_code(@departement_name)
@region_code = APIGeoService.region_code_by_departement(@departement_code)
@region_name = APIGeoService.region_name(@region_code)
end
end

delegate(*ADDRESS_PARTS, to: :@presenter)

def initialize(champ_or_etablissement)
@presenter = make(champ_or_etablissement)
end

def make(champ_or_etablissement)
case champ_or_etablissement
when Champ then ChampAddressPresenter.new(champ_or_etablissement)
when Etablissement then EtablissementAddressPresenter.new(champ_or_etablissement)
else raise NotImplementedError("Unsupported address from #{champ_or_etablissement.class.name}")
end
end
end
4 changes: 4 additions & 0 deletions app/services/api_geo_service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,10 @@ def departement_name(code)
departements.find { _1[:code] == code }&.dig(:name)
end

def departement_name_by_postal_code(postal_code)
mfo marked this conversation as resolved.
Show resolved Hide resolved
APIGeoService.departement_name(postal_code[0..2]) || APIGeoService.departement_name(postal_code[0..1])
end

def departement_code(name)
return if name.nil?
departements.find { _1[:name] == name }&.dig(:code)
Expand Down
11 changes: 1 addition & 10 deletions app/views/shared/champs/rna/_show.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,4 @@
- c.with_value do
%p= l(champ.data[scope].to_date)

- if champ.data['address'].present?
= render Dossiers::RowShowComponent.new(label: t("activemodel.attributes.rna_champ.data.address")) do |c|
- c.with_value do
%p= champ.full_address

- ['code_insee', 'code_postal'].each do |scope|
- if champ.data['address'][scope].present?
= render Dossiers::RowShowComponent.new(label: t("activemodel.attributes.rna_champ.data.#{scope}")) do |c|
- c.with_value do
%p= champ.data['address'][scope]
= render partial: "shared/dossiers/normalized_address", locals: { address: AddressProxy.new(champ) }
10 changes: 1 addition & 9 deletions app/views/shared/champs/rnf/_show.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,4 @@
= render Dossiers::RowShowComponent.new(label: t("activemodel.attributes.rnf_champ.data.#{scope}")) do |c|
- c.with_value do
%p= l(champ.data[scope].to_date)

- if champ.data['address'].present?
- ['label', 'cityCode', 'postalCode'].each do |scope|
= render Dossiers::RowShowComponent.new(label: t("activemodel.attributes.rnf_champ.data.#{scope}")) do |c|
- c.with_value do
%p= champ.data['address'][scope]
= render Dossiers::RowShowComponent.new(label: t("activemodel.attributes.rnf_champ.data.department")) do |c|
- c.with_value do
%p= "#{champ.data['address']['departmentCode']}#{champ.data['address']['departmentName']}"
= render partial: "shared/dossiers/normalized_address", locals: { address: AddressProxy.new(champ) }
2 changes: 1 addition & 1 deletion app/views/shared/champs/siret/_show.html.haml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
- if champ.etablissement.present?
= render partial: "shared/dossiers/identite_entreprise", locals: { etablissement: champ.etablissement, profile: profile }
= render partial: "shared/dossiers/identite_entreprise", locals: { etablissement: champ.etablissement, profile: profile, champ: }
7 changes: 1 addition & 6 deletions app/views/shared/dossiers/_identite_entreprise.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -73,12 +73,7 @@
- c.with_value do
%p= etablissement.entreprise.numero_tva_intracommunautaire

= render Dossiers::RowShowComponent.new(label: "Adresse") do |c|
- c.with_value do
%p
- etablissement.adresse.split("\n").compact_blank.each do |line|
= line
%br
= render partial: "shared/dossiers/normalized_address", locals: { address: AddressProxy.new(defined?(champ) ? champ : etablissement)}

= render Dossiers::RowShowComponent.new(label: "Capital social") do |c|
- c.with_value do
Expand Down
23 changes: 23 additions & 0 deletions app/views/shared/dossiers/_normalized_address.html.haml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
= render Dossiers::RowShowComponent.new(label: t("activemodel.attributes.normalized_address.full_address")) do |c|
- c.with_value do
%p
= address.street_address
%br
= [address.city_name, address.postal_code].join(" ")


- ['city_code', 'postal_code'].each do |scope|
- if address.public_send(scope).present?
= render Dossiers::RowShowComponent.new(label: t("activemodel.attributes.normalized_address.#{scope}")) do |c|
- c.with_value do
%p= address.public_send(scope)

- if address.departement_name.present?
= render Dossiers::RowShowComponent.new(label: t("activemodel.attributes.normalized_address.department")) do |c|
- c.with_value do
%p= "#{address.departement_name}#{address.departement_code}"

- if address.region_name.present?
= render Dossiers::RowShowComponent.new(label: t("activemodel.attributes.normalized_address.region")) do |c|
- c.with_value do
%p= "#{address.region_name}#{address.region_code}"
9 changes: 9 additions & 0 deletions config/locales/models/champs/normalized_address/en.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
en:
activemodel:
attributes:
normalized_address:
full_address: Address
city_code: INSEE code
postal_code: Postal code
department: Department
region: Region & region code
9 changes: 9 additions & 0 deletions config/locales/models/champs/normalized_address/fr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
fr:
activemodel:
attributes:
normalized_address:
full_address: Adresse
city_code: Code INSEE
postal_code: Code postal
department: Département
region: Région & code région
3 changes: 0 additions & 3 deletions config/locales/models/champs/rna_champ/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,6 @@ en:
association_date_creation: Creation date
association_date_declaration: Declaration date
association_date_publication: Publication date
address: Address
code_insee: INSEE code
code_postal: Postal code
paste: Copy the RNA to the clipboard
paste_success: The RNA has been copied to the clipboard
activerecord:
Expand Down
3 changes: 0 additions & 3 deletions config/locales/models/champs/rna_champ/fr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,6 @@ fr:
association_date_creation: Date de création
association_date_declaration: Date de déclaration
association_date_publication: Date de publication
address: Adresse
code_insee: Code INSEE
code_postal: Code postal
paste: Copier le RNA dans le presse-papier
paste_success: Le RNA a été copié dans le presse-papier
activerecord:
Expand Down
4 changes: 0 additions & 4 deletions config/locales/models/champs/rnf_champ/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,6 @@ en:
dissolvedAt: Dissolved at
address: Address
status: Status
cityCode: City code
postalCode: Postal code
department: Department
label: Address
paste: Copy the RNF to the clipboard
paste_success: The RNF has been copied to the clipboard
activerecord:
Expand Down
4 changes: 0 additions & 4 deletions config/locales/models/champs/rnf_champ/fr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,6 @@ fr:
dissolvedAt: Dissoute le
address: Adresse
status: Statut
cityCode: Code INSEE
postalCode: Code postal
department: Département
label: Adresse
paste: Copier le RNF dans le presse-papier
paste_success: Le RNF a été copié dans le presse-papier
activerecord:
Expand Down
1 change: 1 addition & 0 deletions spec/factories/champ.rb
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,7 @@
factory :champ_do_not_use_siret, class: 'Champs::SiretChamp' do
association :etablissement, factory: [:etablissement]
value { '44011762001530' }
value_json { AddressProxy::ADDRESS_PARTS.index_by(&:itself) }
end

factory :champ_do_not_use_rna, class: 'Champs::RNAChamp' do
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ module Maintenance

it 'updates value_json' do
expect { subject }.to change { element.reload.value_json }
.from(nil)
.from(anything)
mfo marked this conversation as resolved.
Show resolved Hide resolved
.to({
"city_code" => "92009",
"city_name" => "Bois-Colombes",
Expand Down
31 changes: 31 additions & 0 deletions spec/views/shared/dossiers/_normalized_address.html.haml_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# frozen_string_literal: true

describe 'shared/dossiers/normalized_address', type: :view do
before { render 'shared/dossiers/normalized_address', address: }

context 'given an champ' do
let(:procedure) { create(:procedure, types_de_champ_public: [{ type: :siret }]) }
let(:dossier) { create(:dossier, :with_populated_champs, procedure:) }
let(:address) { AddressProxy.new(dossier.champs.first) }

it 'render address' do
AddressProxy::ADDRESS_PARTS.each do |address_part|
expect(rendered).to have_text(address_part)
end
end
end

context 'given an etablissement' do
let(:etablissement) { create(:etablissement) }
let(:address) { AddressProxy.new(etablissement) }

it 'render address' do
expect(rendered).to have_text("6 RUE RAOUL NORDLING")
expect(rendered).to have_text("BOIS COLOMBES 92270")
expect(rendered).to have_text("92009")
expect(rendered).to have_text("92270")
expect(rendered).to have_text("Hauts-de-Seine – 92")
expect(rendered).to have_text("Île-de-France – 11")
end
end
end
Loading