Add on information entreprise :
- SIRET Siège social - Code naf - Code effectif - Numéro TVA intracommunautaire - Exercices
This commit is contained in:
parent
803ca14f72
commit
dd8bafab49
18 changed files with 233 additions and 21 deletions
|
@ -19,6 +19,17 @@ class Users::DossiersController < UsersController
|
||||||
procedure = Procedure.find(params['procedure_id'])
|
procedure = Procedure.find(params['procedure_id'])
|
||||||
@etablissement = Etablissement.new(SIADE::EtablissementAdapter.new(siret).to_params)
|
@etablissement = Etablissement.new(SIADE::EtablissementAdapter.new(siret).to_params)
|
||||||
@entreprise = Entreprise.new(SIADE::EntrepriseAdapter.new(siren).to_params)
|
@entreprise = Entreprise.new(SIADE::EntrepriseAdapter.new(siren).to_params)
|
||||||
|
|
||||||
|
exercices = SIADE::ExercicesAdapter.new(siret).to_params
|
||||||
|
|
||||||
|
unless exercices.nil?
|
||||||
|
exercices.each_value do |exercice|
|
||||||
|
exercice = Exercice.new(exercice)
|
||||||
|
exercice.etablissement = @etablissement
|
||||||
|
exercice.save
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
@dossier = Dossier.create(user: current_user)
|
@dossier = Dossier.create(user: current_user)
|
||||||
@dossier.draft!
|
@dossier.draft!
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
class Etablissement < ActiveRecord::Base
|
class Etablissement < ActiveRecord::Base
|
||||||
belongs_to :dossier
|
belongs_to :dossier
|
||||||
belongs_to :entreprise
|
belongs_to :entreprise
|
||||||
|
|
||||||
|
has_many :exercices
|
||||||
end
|
end
|
||||||
|
|
3
app/models/exercice.rb
Normal file
3
app/models/exercice.rb
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
class Exercice < ActiveRecord::Base
|
||||||
|
belongs_to :etablissement
|
||||||
|
end
|
|
@ -5,24 +5,34 @@
|
||||||
.row#infos_entreprise
|
.row#infos_entreprise
|
||||||
.col-lg-6.col-md-6
|
.col-lg-6.col-md-6
|
||||||
%dl.dl-horizontal
|
%dl.dl-horizontal
|
||||||
|
|
||||||
%dt Siret :
|
%dt Siret :
|
||||||
%dd.text-success= @etablissement.siret
|
%dd.text-success= @etablissement.siret
|
||||||
|
|
||||||
|
- if @etablissement.siret != @entreprise.siret_siege_social
|
||||||
|
%dt SIRET siège social :
|
||||||
|
%dd= @entreprise.siret_siege_social
|
||||||
|
|
||||||
%dt Forme juridique :
|
%dt Forme juridique :
|
||||||
%dd= @entreprise.forme_juridique
|
%dd= @entreprise.forme_juridique
|
||||||
|
|
||||||
%dt libelle naf :
|
%dt Libellé naf :
|
||||||
%dd= @etablissement.libelle_naf
|
%dd= @etablissement.libelle_naf
|
||||||
|
|
||||||
|
%dt Code naf :
|
||||||
|
%dd= @etablissement.naf
|
||||||
|
|
||||||
%dt Date de création :
|
%dt Date de création :
|
||||||
%dd= Time.at(@entreprise.date_creation).strftime "%d-%m-%Y"
|
%dd= Time.at(@entreprise.date_creation).strftime "%d-%m-%Y"
|
||||||
|
|
||||||
%dt Effectife entreprise :
|
%dt Effectif entreprise :
|
||||||
%dd= @entreprise.effectif
|
%dd= @entreprise.effectif
|
||||||
|
|
||||||
%dt Capital social :
|
%dt Code effectif :
|
||||||
%dd= @entreprise.pretty_capital_social
|
%dd= @entreprise.code_effectif_entreprise
|
||||||
|
|
||||||
|
%dt Numéro TVA intracommunautaire :
|
||||||
|
%dd= @entreprise.numero_tva_intracommunautaire
|
||||||
|
|
||||||
|
|
||||||
.col-lg-6.col-md-6
|
.col-lg-6.col-md-6
|
||||||
%dl.dl-horizontal
|
%dl.dl-horizontal
|
||||||
|
@ -33,3 +43,14 @@
|
||||||
= line
|
= line
|
||||||
%br
|
%br
|
||||||
|
|
||||||
|
%dt Capital social :
|
||||||
|
%dd= @entreprise.pretty_capital_social
|
||||||
|
|
||||||
|
%dt Exercices :
|
||||||
|
%dd
|
||||||
|
%address
|
||||||
|
- @etablissement.exercices.each_with_index do |exercice, index|
|
||||||
|
%strong
|
||||||
|
= "#{exercice.dateFinExercice.year} : "
|
||||||
|
= number_to_currency(exercice.ca)
|
||||||
|
%br
|
||||||
|
|
|
@ -20,6 +20,14 @@
|
||||||
# available at http://guides.rubyonrails.org/i18n.html.
|
# available at http://guides.rubyonrails.org/i18n.html.
|
||||||
|
|
||||||
fr:
|
fr:
|
||||||
|
number:
|
||||||
|
currency:
|
||||||
|
format:
|
||||||
|
unit: '€'
|
||||||
|
delimiter: ' '
|
||||||
|
separator: ','
|
||||||
|
precision: 2
|
||||||
|
format: '%n %u'
|
||||||
devise:
|
devise:
|
||||||
confirmations:
|
confirmations:
|
||||||
confirmed: 'Votre compte a été confirmé avec succès.'
|
confirmed: 'Votre compte a été confirmé avec succès.'
|
||||||
|
|
11
db/migrate/20151113171605_create_exercice_table.rb
Normal file
11
db/migrate/20151113171605_create_exercice_table.rb
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
class CreateExerciceTable < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
create_table :exercices do |t|
|
||||||
|
t.string :ca
|
||||||
|
t.datetime :dateFinExercice
|
||||||
|
t.integer :date_fin_exercice_timestamp
|
||||||
|
end
|
||||||
|
|
||||||
|
add_reference :exercices, :etablissement, references: :etablissements
|
||||||
|
end
|
||||||
|
end
|
10
db/schema.rb
10
db/schema.rb
|
@ -11,7 +11,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.define(version: 20151110091451) do
|
ActiveRecord::Schema.define(version: 20151113171605) 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 "plpgsql"
|
enable_extension "plpgsql"
|
||||||
|
@ -66,6 +66,7 @@ ActiveRecord::Schema.define(version: 20151110091451) do
|
||||||
t.datetime "updated_at", default: '2015-09-22 09:25:29'
|
t.datetime "updated_at", default: '2015-09-22 09:25:29'
|
||||||
t.string "state"
|
t.string "state"
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
|
t.text "json_latlngs"
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "dossiers", ["procedure_id"], name: "index_dossiers_on_procedure_id", using: :btree
|
add_index "dossiers", ["procedure_id"], name: "index_dossiers_on_procedure_id", using: :btree
|
||||||
|
@ -104,6 +105,13 @@ ActiveRecord::Schema.define(version: 20151110091451) do
|
||||||
t.integer "entreprise_id"
|
t.integer "entreprise_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "exercices", force: :cascade do |t|
|
||||||
|
t.string "ca"
|
||||||
|
t.datetime "dateFinExercice"
|
||||||
|
t.integer "date_fin_exercice_timestamp"
|
||||||
|
t.integer "etablissement_id"
|
||||||
|
end
|
||||||
|
|
||||||
create_table "gestionnaires", force: :cascade do |t|
|
create_table "gestionnaires", force: :cascade do |t|
|
||||||
t.string "email", default: "", null: false
|
t.string "email", default: "", null: false
|
||||||
t.string "encrypted_password", default: "", null: false
|
t.string "encrypted_password", default: "", null: false
|
||||||
|
|
|
@ -16,13 +16,20 @@ class SIADE::API
|
||||||
call(base_url + endpoint)
|
call(base_url + endpoint)
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.call(url)
|
def self.exercices(siret)
|
||||||
|
endpoint = "/api/v1/etablissements/exercices/#{siret}"
|
||||||
|
call(base_url + endpoint)
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.call(url, params = {})
|
||||||
|
params.merge!(token: SIADETOKEN)
|
||||||
|
|
||||||
verify_ssl_mode = OpenSSL::SSL::VERIFY_NONE
|
verify_ssl_mode = OpenSSL::SSL::VERIFY_NONE
|
||||||
|
|
||||||
RestClient::Resource.new(
|
RestClient::Resource.new(
|
||||||
url,
|
url,
|
||||||
verify_ssl: verify_ssl_mode
|
verify_ssl: verify_ssl_mode
|
||||||
).get(params: { token: SIADETOKEN })
|
).get(params: params)
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.base_url
|
def self.base_url
|
||||||
|
|
32
lib/siade/exercices_adapter.rb
Normal file
32
lib/siade/exercices_adapter.rb
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
class SIADE::ExercicesAdapter
|
||||||
|
def initialize(siret)
|
||||||
|
@siret = siret
|
||||||
|
end
|
||||||
|
|
||||||
|
def data_source
|
||||||
|
@data_source ||= JSON.parse(SIADE::API.exercices(@siret), symbolize_names: true)
|
||||||
|
rescue
|
||||||
|
@data_source = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_params
|
||||||
|
params = {}
|
||||||
|
|
||||||
|
data_source[:exercices].each_with_index do |values, i|
|
||||||
|
params[i] = {}
|
||||||
|
|
||||||
|
values.each do |index, value|
|
||||||
|
params[i][index] = value if attr_to_fetch.include?(index)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
params
|
||||||
|
rescue
|
||||||
|
nil
|
||||||
|
end
|
||||||
|
|
||||||
|
def attr_to_fetch
|
||||||
|
[:ca,
|
||||||
|
:dateFinExercice,
|
||||||
|
:date_fin_exercice_timestamp]
|
||||||
|
end
|
||||||
|
end
|
|
@ -53,6 +53,9 @@ describe Users::DossiersController, type: :controller do
|
||||||
|
|
||||||
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/entreprises/#{siren}?token=#{SIADETOKEN}")
|
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/entreprises/#{siren}?token=#{SIADETOKEN}")
|
||||||
.to_return(status: 200, body: File.read('spec/support/files/entreprise.json'))
|
.to_return(status: 200, body: File.read('spec/support/files/entreprise.json'))
|
||||||
|
|
||||||
|
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/etablissements/exercices/#{siret}?token=#{SIADETOKEN}")
|
||||||
|
.to_return(status: 200, body: File.read('spec/support/files/exercices.json'))
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'professionnel fills form' do
|
describe 'professionnel fills form' do
|
||||||
|
@ -98,6 +101,10 @@ describe Users::DossiersController, type: :controller do
|
||||||
expect(Etablissement.last.entreprise).to eq(Entreprise.last)
|
expect(Etablissement.last.entreprise).to eq(Entreprise.last)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'creates exercices for dossier' do
|
||||||
|
expect { subject }.to change { Exercice.count }.by(3)
|
||||||
|
end
|
||||||
|
|
||||||
it 'links procedure to dossier' do
|
it 'links procedure to dossier' do
|
||||||
subject
|
subject
|
||||||
expect(Dossier.last.procedure).to eq(Procedure.last)
|
expect(Dossier.last.procedure).to eq(Procedure.last)
|
||||||
|
|
|
@ -47,7 +47,7 @@ describe EntrepriseDecorator do
|
||||||
|
|
||||||
describe '#pretty_capital_social' do
|
describe '#pretty_capital_social' do
|
||||||
it 'pretty display capital_social' do
|
it 'pretty display capital_social' do
|
||||||
expect(subject.pretty_capital_social).to eq('123 000.00 €')
|
expect(subject.pretty_capital_social).to eq('123 000,00 €')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,9 @@ feature 'user path for dossier creation' do
|
||||||
.to_return(body: File.read('spec/support/files/etablissement.json', status: 200))
|
.to_return(body: File.read('spec/support/files/etablissement.json', status: 200))
|
||||||
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/entreprises/#{siren}?token=#{SIADETOKEN}")
|
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/entreprises/#{siren}?token=#{SIADETOKEN}")
|
||||||
.to_return(status: 200, body: File.read('spec/support/files/entreprise.json'))
|
.to_return(status: 200, body: File.read('spec/support/files/entreprise.json'))
|
||||||
|
|
||||||
|
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/etablissements/exercices/#{siret}?token=#{SIADETOKEN}")
|
||||||
|
.to_return(status: 200, body: File.read('spec/support/files/exercices.json'))
|
||||||
page.find_by_id('siret').set siret
|
page.find_by_id('siret').set siret
|
||||||
page.click_on 'Commencer'
|
page.click_on 'Commencer'
|
||||||
end
|
end
|
||||||
|
|
|
@ -29,6 +29,8 @@ feature 'user arrive on siret page' do
|
||||||
.to_return(status: 200, body: File.read('spec/support/files/etablissement.json'))
|
.to_return(status: 200, body: File.read('spec/support/files/etablissement.json'))
|
||||||
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/entreprises/#{siren}?token=#{SIADETOKEN}")
|
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/entreprises/#{siren}?token=#{SIADETOKEN}")
|
||||||
.to_return(status: 200, body: File.read('spec/support/files/entreprise.json'))
|
.to_return(status: 200, body: File.read('spec/support/files/entreprise.json'))
|
||||||
|
stub_request(:get, "https://api-dev.apientreprise.fr/api/v1/etablissements/exercices/#{siret}?token=#{SIADETOKEN}")
|
||||||
|
.to_return(status: 200, body: File.read('spec/support/files/exercices.json'))
|
||||||
page.find_by_id('siret').set siret
|
page.find_by_id('siret').set siret
|
||||||
page.click_on 'Commencer'
|
page.click_on 'Commencer'
|
||||||
end
|
end
|
||||||
|
|
|
@ -54,4 +54,35 @@ describe SIADE::API do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '.exercices' do
|
||||||
|
before do
|
||||||
|
stub_request(:get, /https:\/\/api-dev.apientreprise.fr\/api\/v1\/etablissements\/exercices\/.*token=/)
|
||||||
|
.to_return(status: status, body: body)
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when siret does not exist' do
|
||||||
|
subject { described_class.exercices(siret) }
|
||||||
|
|
||||||
|
let(:siret) { '11111111111111' }
|
||||||
|
let(:status) { 404 }
|
||||||
|
let(:body) { '' }
|
||||||
|
|
||||||
|
it 'raises RestClient::ResourceNotFound' do
|
||||||
|
expect { subject }.to raise_error(RestClient::ResourceNotFound)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when siret exists' do
|
||||||
|
subject { described_class.exercices(siret) }
|
||||||
|
|
||||||
|
let(:siret) { '41816609600051' }
|
||||||
|
let(:status) { 200 }
|
||||||
|
let(:body) { File.read('spec/support/files/exercices.json') }
|
||||||
|
|
||||||
|
it 'raises RestClient::Unauthorized' do
|
||||||
|
expect(subject).to eq(body)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
33
spec/lib/siade/exercices_adapter_spec.rb
Normal file
33
spec/lib/siade/exercices_adapter_spec.rb
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe SIADE::ExercicesAdapter do
|
||||||
|
let(:siret) { '41816609600051' }
|
||||||
|
subject { described_class.new(siret).to_params }
|
||||||
|
|
||||||
|
before do
|
||||||
|
stub_request(:get, /https:\/\/api-dev.apientreprise.fr\/api\/v1\/etablissements\/exercices\/.*token=/)
|
||||||
|
.to_return(body: File.read('spec/support/files/exercices.json', status: 200))
|
||||||
|
end
|
||||||
|
|
||||||
|
it '#to_params class est une Hash ?' do
|
||||||
|
expect(subject).to be_an_instance_of(Hash)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'have 3 exercices' do
|
||||||
|
expect(subject.size).to eq(3)
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'Attributs Exercices' do
|
||||||
|
it 'L\'exercice contient bien un ca' do
|
||||||
|
expect(subject[0][:ca]).to eq('21009417')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'L\'exercice contient bien une date de fin d\'exercice' do
|
||||||
|
expect(subject[0][:dateFinExercice]).to eq("2013-12-31T00:00:00+01:00")
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'L\'exercice contient bien une date_fin_exercice_timestamp' do
|
||||||
|
expect(subject[0][:date_fin_exercice_timestamp]).to eq(1388444400)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -19,5 +19,6 @@ describe Etablissement do
|
||||||
describe 'associations' do
|
describe 'associations' do
|
||||||
it { is_expected.to belong_to(:dossier) }
|
it { is_expected.to belong_to(:dossier) }
|
||||||
it { is_expected.to belong_to(:entreprise) }
|
it { is_expected.to belong_to(:entreprise) }
|
||||||
|
it { is_expected.to have_many(:exercices) }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
13
spec/models/exercice_spec.rb
Normal file
13
spec/models/exercice_spec.rb
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe Exercice do
|
||||||
|
describe 'database columns' do
|
||||||
|
it { is_expected.to have_db_column(:ca) }
|
||||||
|
it { is_expected.to have_db_column(:dateFinExercice) }
|
||||||
|
it { is_expected.to have_db_column(:date_fin_exercice_timestamp) }
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'associations' do
|
||||||
|
it { is_expected.to belong_to(:etablissement) }
|
||||||
|
end
|
||||||
|
end
|
19
spec/support/files/exercices.json
Normal file
19
spec/support/files/exercices.json
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
"exercices":[
|
||||||
|
{
|
||||||
|
"ca":"21009417",
|
||||||
|
"dateFinExercice":"2013-12-31T00:00:00+01:00",
|
||||||
|
"date_fin_exercice_timestamp": 1388444400
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ca":"18968298",
|
||||||
|
"dateFinExercice":"2012-12-31T00:00:00+01:00",
|
||||||
|
"date_fin_exercice_timestamp": 1356908400
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ca":"17768838",
|
||||||
|
"dateFinExercice":"2011-12-31T00:00:00+01:00",
|
||||||
|
"date_fin_exercice_timestamp": 1325286000
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
Loading…
Reference in a new issue