Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • 006439652bedaa7f959233b3f9e7ea3949598b58
  • 12.0 par défaut protégée
  • 18.0
  • 10.0
4 résultats

wizard_siren.py

Blame
  • 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