Sélectionner une révision Git
cgscop_timesheet_code.xml
Bifurcation depuis
Le Filament / Confédération Générale des SCOP / cgscop_timesheet
Le projet source a une visibilité limitée.
-
Benjamin - Le Filament a rédigéBenjamin - Le Filament a rédigé
wizard_siren.py 3,97 Kio
# -*- coding: utf-8 -*-
# © 2018 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import json
import urllib2
import requests
from odoo import api, fields, models
URL = "https://data.opendatasoft.com/api/records/1.0/search/?dataset=sirene%40public&q="
CHAMPS = "&rows=100"
class SirenWizard(models.TransientModel):
_name = 'siren.wizard'
_description = 'Get values from companies'
## Default functions
@api.model
def _default_name(self):
return self.env['res.partner'].browse(self.env.context.get('active_id')).name
@api.model
def _default_partner(self):
return self.env.context.get('active_id')
## Fields
name = fields.Char(string='Entreprise', default=_default_name)
company_lines = fields.One2many('siren.wizard.company', 'wizard_id', string="Résultats",)
partner_id = fields.Integer('Partner', default=_default_partner)
## Action
def get_company_lines(self):
# Get request
r = requests.get(URL + self.name + CHAMPS)
# Serialization request to JSON
companies = r.json()
# Unlink all company lines
self.company_lines.unlink()
# Fill new company lines
for company in companies['records']:
new_company = self.company_lines.create({
'wizard_id': self.id,
'name': company['fields']['l1_normalisee'],
})
if company['fields'].get('l4_normalisee'):
new_company.street = company['fields']['l4_normalisee']
if company['fields'].get('codpos'):
new_company.zip = company['fields']['codpos']
if company['fields'].get('libcom'):
new_company.city = company['fields']['libcom']
if company['fields'].get('siren'):
new_company.siren = company['fields']['siren']
if company['fields'].get('siret'):
new_company.siret = company['fields']['siret']
if company['fields'].get('categorie'):
new_company.categorie = company['fields']['categorie']
if company['fields'].get('dcret'):
new_company.date_creation = company['fields']['dcret']
if company['fields'].get('apen700'):
new_company.ape = company['fields']['apen700']
if company['fields'].get('libapet'):
new_company.lib_ape = company['fields']['libapet']
if company['fields'].get('dateess'):
new_company.date_ess = company['fields']['dateess']
if company['fields'].get('ess') == "O":
new_company.ess = True
if company['fields'].get('libessen'):
new_company.lib_ess = company['fields']['libessen']
if company['fields'].get('libnj'):
new_company.forme_juridique = company['fields']['libnj']
if company['fields']['efetcent'] in ["NN","0"]:
new_company.effectif = 0
else:
new_company.effectif = int(company['fields']['efetcent'])
return { "type": "ir.actions.do_nothing", }
class SirenWizardCompanies(models.TransientModel):
_name = 'siren.wizard.company'
_description = 'Companies Selection'
## Fields
wizard_id = fields.Many2one('siren.wizard', string='Wizard',)
name = fields.Char(string='Nom')
street = fields.Char(string='Rue')
zip = fields.Char(string='CP')
city = fields.Char(string='Ville')
forme_juridique = fields.Char("Forme Juridique")
siren = fields.Char("SIREN")
siret = fields.Char("SIRET")
ape = fields.Char("Code APE")
lib_ape = fields.Char("Libellé APE")
date_creation = fields.Date("Date de création")
effectif = fields.Char("Effectif")
lib_ess = fields.Char("Libellé ESS")
date_ess = fields.Date("Date ESS")
ess = fields.Boolean("ESS", default=False)
categorie = fields.Char("Catégorie")
## Action
@api.multi
def update_partner(self):
partner = self.env['res.partner'].browse(self.wizard_id.partner_id)
partner.write({
'name': self.name,
'street': self.street,
'zip': self.zip,
'city': self.city,
'forme_juridique': self.forme_juridique,
'siren': self.siren,
'siret': self.siret,
'ape': self.ape,
'lib_ape': self.lib_ape,
'date_creation': self.date_creation,
'effectif': self.effectif,
'lib_ess': self.lib_ess,
'date_ess': self.date_ess,
'ess': self.ess,
'categorie': self.categorie,
})
return True