add tva adapter and tva job
This commit is contained in:
parent
f04e121a6f
commit
76a8b721ce
8 changed files with 83 additions and 2 deletions
7
app/jobs/api_entreprise/tva_job.rb
Normal file
7
app/jobs/api_entreprise/tva_job.rb
Normal file
|
@ -0,0 +1,7 @@
|
|||
class APIEntreprise::TvaJob < APIEntreprise::Job
|
||||
def perform(etablissement_id, procedure_id)
|
||||
find_etablissement(etablissement_id)
|
||||
etablissement_params = APIEntreprise::TvaAdapter.new(etablissement.siret, procedure_id).to_params
|
||||
etablissement.update!(etablissement_params)
|
||||
end
|
||||
end
|
|
@ -2,6 +2,7 @@ class APIEntreprise::API
|
|||
ENTREPRISE_RESOURCE_NAME = "v3/insee/sirene/unites_legales/%{id}"
|
||||
ETABLISSEMENT_RESOURCE_NAME = "v2/etablissements/%{id}"
|
||||
EXTRAIT_KBIS_NAME = "v3/infogreffe/rcs/unites_legales/%{id}/extrait_kbis"
|
||||
TVA_NAME = "v3/european_commission/unites_legales/%{id}/numero_tva"
|
||||
EXERCICES_RESOURCE_NAME = "v2/exercices/%{id}"
|
||||
RNA_RESOURCE_NAME = "v2/associations/%{id}"
|
||||
EFFECTIFS_RESOURCE_NAME = "v2/effectifs_mensuels_acoss_covid"
|
||||
|
@ -37,6 +38,10 @@ class APIEntreprise::API
|
|||
call_with_siret(EXTRAIT_KBIS_NAME, siren)
|
||||
end
|
||||
|
||||
def tva(siren)
|
||||
call_with_siret(TVA_NAME, siren)
|
||||
end
|
||||
|
||||
def exercices(siret)
|
||||
call_with_siret(EXERCICES_RESOURCE_NAME, siret)
|
||||
end
|
||||
|
|
15
app/lib/api_entreprise/tva_adapter.rb
Normal file
15
app/lib/api_entreprise/tva_adapter.rb
Normal file
|
@ -0,0 +1,15 @@
|
|||
class APIEntreprise::TvaAdapter < APIEntreprise::Adapter
|
||||
private
|
||||
|
||||
def get_resource
|
||||
api(@procedure_id).tva(siren)
|
||||
end
|
||||
|
||||
def process_params
|
||||
result = {}
|
||||
if data_source[:data]
|
||||
result[:entreprise_numero_tva_intracommunautaire] = data_source[:data][:tva_number]
|
||||
end
|
||||
result
|
||||
end
|
||||
end
|
|
@ -47,7 +47,7 @@ class APIEntrepriseService
|
|||
|
||||
def perform_later_fetch_jobs(etablissement, procedure_id, user_id, wait: nil)
|
||||
[
|
||||
APIEntreprise::EntrepriseJob, APIEntreprise::ExtraitKbisJob,
|
||||
APIEntreprise::EntrepriseJob, APIEntreprise::ExtraitKbisJob, APIEntreprise::TvaJob,
|
||||
APIEntreprise::AssociationJob, APIEntreprise::ExercicesJob,
|
||||
APIEntreprise::EffectifsJob, APIEntreprise::EffectifsAnnuelsJob, APIEntreprise::AttestationSocialeJob,
|
||||
APIEntreprise::BilansBdfJob
|
||||
|
|
7
spec/fixtures/files/api_entreprise/tva.json
vendored
Normal file
7
spec/fixtures/files/api_entreprise/tva.json
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"data": {
|
||||
"tva_number": "FR48672039971"
|
||||
},
|
||||
"links": {},
|
||||
"meta": {}
|
||||
}
|
21
spec/jobs/api_entreprise/tva_job_spec.rb
Normal file
21
spec/jobs/api_entreprise/tva_job_spec.rb
Normal file
|
@ -0,0 +1,21 @@
|
|||
describe APIEntreprise::TvaJob, type: :job do
|
||||
let(:etablissement) { create(:etablissement, siret: siret) }
|
||||
let(:siret) { '41816609600069' }
|
||||
let(:siren) { '418166096' }
|
||||
let(:procedure) { create(:procedure) }
|
||||
let(:procedure_id) { procedure.id }
|
||||
let(:body) { File.read('spec/fixtures/files/api_entreprise/tva.json') }
|
||||
let(:status) { 200 }
|
||||
subject { APIEntreprise::TvaJob.new.perform(etablissement.id, procedure_id) }
|
||||
|
||||
before do
|
||||
stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v3\/european_commission\/unites_legales\/#{siren}\/numero_tva/)
|
||||
.to_return(body: body, status: status)
|
||||
allow_any_instance_of(APIEntrepriseToken).to receive(:expired?).and_return(false)
|
||||
end
|
||||
|
||||
it 'updates etablissement' do
|
||||
subject
|
||||
expect(Etablissement.find(etablissement.id).entreprise_numero_tva_intracommunautaire).to eq("FR48672039971")
|
||||
end
|
||||
end
|
26
spec/lib/api_entreprise/tva_adapter_spec.rb
Normal file
26
spec/lib/api_entreprise/tva_adapter_spec.rb
Normal file
|
@ -0,0 +1,26 @@
|
|||
describe APIEntreprise::TvaAdapter do
|
||||
let(:siren) { '418166096' }
|
||||
let(:procedure) { create(:procedure) }
|
||||
let(:procedure_id) { procedure.id }
|
||||
let(:adapter) { described_class.new(siren, procedure_id) }
|
||||
subject { adapter.to_params }
|
||||
|
||||
before do
|
||||
stub_request(:get, /https:\/\/entreprise.api.gouv.fr\/v3\/european_commission\/unites_legales\/#{siren}\/numero_tva/)
|
||||
.to_return(body: body, status: status)
|
||||
allow_any_instance_of(APIEntrepriseToken).to receive(:expired?).and_return(false)
|
||||
end
|
||||
|
||||
context "when the SIRET is valid" do
|
||||
let(:body) { File.read('spec/fixtures/files/api_entreprise/tva.json') }
|
||||
let(:status) { 200 }
|
||||
|
||||
it '#to_params class est une Hash ?' do
|
||||
expect(subject).to be_an_instance_of(Hash)
|
||||
end
|
||||
|
||||
it 'L\'entreprise contient bien un numero_tva_intracommunautaire' do
|
||||
expect(subject[:entreprise_numero_tva_intracommunautaire]).to eq("FR48672039971")
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,7 +1,7 @@
|
|||
describe APIEntrepriseService do
|
||||
shared_examples 'schedule fetch of all etablissement params' do
|
||||
[
|
||||
APIEntreprise::EntrepriseJob, APIEntreprise::ExtraitKbisJob,
|
||||
APIEntreprise::EntrepriseJob, APIEntreprise::ExtraitKbisJob, APIEntreprise::TvaJob,
|
||||
APIEntreprise::AssociationJob, APIEntreprise::ExercicesJob,
|
||||
APIEntreprise::EffectifsJob, APIEntreprise::EffectifsAnnuelsJob, APIEntreprise::AttestationSocialeJob,
|
||||
APIEntreprise::BilansBdfJob
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue