# -*- 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