Browse Source

transfert draft partner into partner base

dev-rcn
root 3 years ago
parent
commit
be4af9f5b4
5 changed files with 203 additions and 55 deletions
  1. +45
    -45
      models/partner.py
  2. +105
    -5
      models/partnerimport.py
  3. +1
    -0
      security/ir.model.access.csv
  4. +22
    -5
      views/partner.xml
  5. +30
    -0
      views/partnerimport.xml

+ 45
- 45
models/partner.py View File

@ -7,56 +7,56 @@ from werkzeug import utils
class partner(models.Model):
_inherit = 'res.partner'
statut=fields.Selection([('adherent', 'Adhérent'), ('bienfaiteur', 'Bienfaiteur'),('contact', 'Contact'), ('soutien','Soutien') ],'Statut', required=True, index=True)
date_contact_joomla=fields.Date(string='Date joomla de création du contact', readonly=True)
external_id=fields.Char('id')
statut_contact=fields.Selection([('adherent', 'Adhérent'), ('bienfaiteur', 'Bienfaiteur'),('contact', 'Contact'), ('soutien','Soutien') ],'Statut', required=True, index=True)
date_creation_contact=fields.Char(string='Date de création du contact', readonly=True)
origine=fields.Selection([
('Boutique','Boutique'),
('Visiteur','Visiteur'),
('Vincennes','Vincennes'),
('Bercy','Bercy'),
('Salon Zen','Salon Zen'),
('Autre','Autre'),
('Internet Boutique','Internet Boutique'),
('Conf M Ricard','Conf M Ricard'),
('Visite lzr 09','Visite lzr 09'),
('Retraite','Retraite'),
('Amis','Amis'),
('Centre FPMT','Centre FPMT'),
('Site réservations','Site réservations'),
('Réservations','Réservations'),
('Voyage inde','Voyage inde'),
('Internet','Internet'),
('Librairie','Librairie'),
('Site internet boutique','Site internet boutique'),
('Portes ouvertes st cosme','Portes ouvertes st cosme'),
('T','T'),
('boutique','Boutique'),
('visiteur','Visiteur'),
('vincennes','Vincennes'),
('bercy','Bercy'),
('salon zen','Salon Zen'),
('autre','Autre'),
('internet boutique','Internet Boutique'),
('conf M ricard','Conf M Ricard'),
('visite lzr 09','Visite lzr 09'),
('retraite','Retraite'),
('amis','Amis'),
('centre FPMT','Centre FPMT'),
('site réservations','Site réservations'),
('réservations','Réservations'),
('voyage inde','Voyage inde'),
('internet','Internet'),
('librairie','Librairie'),
('site internet boutique','Site internet boutique'),
('portes ouvertes st cosme','Portes ouvertes st cosme'),
('t','T'),
('maitreya','maitreya'),
('Zen','Zen'),
('zen','Zen'),
('Lille','Lille'),
('Alan wallace','Alan wallace'),
('Salon Rouen','Salon Rouen'),
('Stage','Stage'),
('B.Actualit','B.Actualit'),
('B. Actualit','B. Actualit'),
('R','R'),
('Institut vy','Institut vy'),
('Initiation kalachakr','Initiation kalachakr'),
('Yoga','Yoga'),
('Samsara','Samsara'),
('alan wallace','Alan wallace'),
('salon Rouen','Salon Rouen'),
('stage','Stage'),
('b.Actualit','B.Actualit'),
('b. Actualit','B. Actualit'),
('r','R'),
('institut vy','Institut vy'),
('initiation kalachakr','Initiation kalachakr'),
('yoga','Yoga'),
('samsara','Samsara'),
('missun@gmail.com','missun@gmail.com'),
('Reliques','Reliques'),
('Journal m','Journal m'),
('Nantes','Nantes'),
('reliques','Reliques'),
('journal m','Journal m'),
('nantes','Nantes'),
('retraite vipassana','retraite vipassana'),
('Presse bouddhiste','Presse bouddhiste'),
('Réservtions','Réservtions'),
('Réservation','Réservation'),
('Site','Site'),
('Question mail','Question mail'),
('presse bouddhiste','Presse bouddhiste'),
('réservtions','Réservtions'),
('réservation','Réservation'),
('site','Site'),
('question mail','Question mail'),
('interreligieux','interreligieux'),
('Refuge','Refuge'),
('refuge','Refuge'),
('zoom','zoom'),
],'Origine', required=True, index=True)
],'Origine', index=True)
date_adhesion=fields.Date(string='Date adhesion', readonly=True)
date_adhesion=fields.Char(string='Date adhesion', readonly=True)

+ 105
- 5
models/partnerimport.py View File

@ -1,9 +1,13 @@
from odoo import models, fields, api
from odoo.exceptions import UserError, ValidationError
from odoo.exceptions import UserError, ValidationError, Warning
from psycopg2 import sql, DatabaseError
from odoo.tools.safe_eval import safe_eval, datetime
from werkzeug import utils
from werkzeug import utils
import csv
import base64
import io
import json
@ -11,15 +15,110 @@ class kalachakra_partnerdraftfile(models.Model):
_name = 'kalachakra.partnerdraftfile'
_description = 'draft partner file'
file= fields.Binary("Téléverser le fichier des contacts")
#file= fields.Binary("Téléverser le fichier des contacts")
file = fields.Binary("Attachment")
file_name = fields.Char("Nom du fichier")
active = fields.Boolean("actif")
source_name=fields.Char("Source")
def import_csv_files(self):
self.env["kalachakra.partnerdraft"].search([]).unlink()
files= self.env["kalachakra.partnerdraftfile"].search([('active','=',True)])
#raise Warning('fff')
for f in files:
decrypted = base64.b64decode(f.file).decode('utf-8-sig')
source_name=f.source_name
with io.StringIO(decrypted) as fp:
reader = csv.DictReader(fp, delimiter=";", quotechar='"')
for row in reader:
vals={}
vals['source_name']=source_name
for key, value in row.items():
field_map=self.env['kalachakra.partnerdraftfile_mapping'].search([('external_field','=',key)])
if field_map:
odoo_field=field_map.odoo_field
vals[odoo_field]=str(value)
else: raise Warning('champ '+key+' non trouvé')
self.env['kalachakra.partnerdraft'].create(vals)
#raise Warning(json.dumps(row))
action = self.env.ref("kalachakra.kalachakra_partnerdraft_action").sudo().read([])[0]
return action
def transfert_draftpartner(self):
#transfert des contacts importés, dans la base des contact odoo
partners=self.env['kalachakra.partnerdraft'].search([])
if partners:
for p in partners:
vals={}
vals['name']=p.name
vals['company_type']='person'
vals['firstname']=p.firstname
vals['source']=p.source_name
vals['street']=p.street
vals['street2']=p.street2
vals['city']=p.city
vals['zip']=p.zip
vals['phone']=p.phone
vals['email']=p.email
vals['statut_contact']=p.statut_contact.lower()
vals['date_creation_contact']=p.date_creation_contact
vals['origine']=p.origine.lower()
vals['date_adhesion']=p.date_member
if p.country!='':
country=self.env['res.country'].search([('name','=',p.name)])
if country:vals['country_id']=country.id
else:vals['country_id']=False
else:
vals['country_id']=False
if p.title!='':
title=self.env['res.partner.title'].search([('name','=',p.title)])
if title:vals['title']=title.id
else:vals['title']=False
else:
vals['title']=False
self.env['res.partner'].create(vals)
partners=self.env['kalachakra.partnerdraft'].search([]).unlink()
class kalachakra_partnerdraftfile_mapping(models.Model):
_name = 'kalachakra.partnerdraftfile_mapping'
_description = 'file mapping'
external_field=fields.Char('external field')
odoo_field=fields.Selection('odoo_field_selection', string='odoo field')
@api.model
def odoo_field_selection(self):
field_list=self.env['kalachakra.partnerdraft'].fields_get()
result=[]
for key in field_list:
result.append((key,key))
result.sort()
return result
class kalachakra_partnerdraft(models.Model):
_name = 'kalachakra.partnerdraft'
_description = 'import draft partner'
_order = "id asc"
external_id=fields.Integer(string='external id')
external_id=fields.Char(string='external id')
name=fields.Char(string='nom')
firstname=fields.Char(string='prenom')
title=fields.Char(string='civilité')
@ -31,7 +130,8 @@ class kalachakra_partnerdraft(models.Model):
phone = fields.Char(string='tel')
email = fields.Char(string='Email')
statut_contact=fields.Char('Statut')
date_creation_contact=fields.Date(string='Date contact')
date_creation_contact=fields.Char(string='Date contact')
origine=fields.Char(string='Origine')
date_member=fields.Char(string='Date adhesion')
doublon=fields.Boolean(string='Doublon')
source_name=fields.Char(string='Source')

+ 1
- 0
security/ir.model.access.csv View File

@ -1,3 +1,4 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_kalachakra_partnerdraft,kalachakra_partnerdraft,model_kalachakra_partnerdraft,donation.group_donation_manager,1,1,1,1
access_kalachakra_partnerdraftfile,kalachakra_partnerdraftfile,model_kalachakra_partnerdraftfile,donation.group_donation_manager,1,1,1,1
access_kalachakra_partnerdraft_file_mapping,kalachakra_partnerdraft_file_mapping,model_kalachakra_partnerdraftfile_mapping,donation.group_donation_manager,1,1,1,1

+ 22
- 5
views/partner.xml View File

@ -9,10 +9,11 @@
<field name="arch" type="xml">
<xpath expr="//page[@name='internal_notes']" position="before">
<page name="Kalachakra" string="Kalachakra">
<group name="kalachakra" string="kalachakra" col="6">
<field name="statut"/>
<field name="date_contact_joomla"/>
<page name="Sources info" string="Sources info">
<group name="Sources info" string="Sources info" col="6">
<field name="external_id"/>
<field name="statut_contact"/>
<field name="date_creation_contact"/>
<field name="origine"/>
<field name="date_adhesion"/>
</group>
@ -40,6 +41,13 @@
<field name="context"></field>
</record>
<record id="kalachakra_partnerdraft_file_mapping_action" model="ir.actions.act_window">
<field name="name">file mapping</field>
<field name="res_model">kalachakra.partnerdraftfile_mapping</field>
<field name="view_mode">tree,form</field>
<field name="context"></field>
</record>
@ -49,9 +57,18 @@
<menuitem id="kalachakra_partnerdraft_menu" action="kalachakra_partnerdraft_action" name ="Partners imported"
parent="kalachakra_partnerdraft_title_menu" sequence="1"/>
<menuitem id="kalachakra_partnerdraftfile_menu" action="kalachakra_partnerdraftfile_action" name ="Partners import file"
<menuitem id="kalachakra_partnerdraftfile_menu" action="kalachakra_partnerdraftfile_action" name ="Partners files"
parent="kalachakra_partnerdraft_title_menu" sequence="2"/>
<menuitem id="kalachakra_partnerdraft_file_mapping_menu" action="kalachakra_partnerdraft_file_mapping_action" name ="mapping fields"
parent="kalachakra_partnerdraft_title_menu" sequence="3"/>
<menuitem id="kalachakra_partnerdraftfileimport_menu" action="ir_action_partnerdraft_import" name ="Import files"
parent="kalachakra_partnerdraft_title_menu" sequence="4"/>
<menuitem id="kalachakra_partnerdraftfiletransfert_menu" action="ir_action_partnerdraft_transfert" name ="Draft Partners transfert"
parent="kalachakra_partnerdraft_title_menu" sequence="5"/>
<!-- <menuitem id="kalachakra_doublonfield_menu" action="kalachakra_doublonfield_action" name ="Doublons fields"
parent="kalachakra_partnerdraft_title_menu" sequence="2"/>


+ 30
- 0
views/partnerimport.xml View File

@ -7,6 +7,7 @@
<field name="arch" type="xml">
<tree default_order="name,firstname">
<field name="external_id"/>
<field name="source_name"/>
<field name="name"/>
<field name="firstname"/>
<field name="title"/>
@ -16,6 +17,7 @@
<field name="country"/>
<field name="zip"/>
<field name="phone"/>
<field name="email"/>
<field name="statut_contact"/>
<field name="date_creation_contact"/>
<field name="origine"/>
@ -31,6 +33,7 @@
<field name="arch" type="xml">
<tree>
<field name="active"/>
<field name="source_name"/>
<field name="file_name"/>
<field name="write_date"/>
<field name="create_date"/>
@ -44,15 +47,42 @@
<field name="model">kalachakra.partnerdraftfile</field>
<field name="arch" type="xml">
<form>
<group>
<field name="active"/>
<field name="source_name"/>
<field name="file" filename="file_name"/>
<field name="file_name" invisible="1"/>
</group>
</form>
</field>
</record>
<record model="ir.actions.server" id="ir_action_partnerdraft_import">
<field name="name">import file draft partner</field>
<field name="model_id" ref="kalachakra.model_kalachakra_partnerdraftfile"/>
<field name="state">code</field>
<field name="code">action=model.import_csv_files()</field>
</record>
<record model="ir.actions.server" id="ir_action_partnerdraft_transfert">
<field name="name">transfert draft partners</field>
<field name="model_id" ref="kalachakra.model_kalachakra_partnerdraftfile"/>
<field name="state">code</field>
<field name="code">action=model.transfert_draftpartner()</field>
</record>
<record model="ir.ui.view" id="kalachakra.partner_draftfile_mapping_list">
<field name="name">_partner_draft file ampping list</field>
<field name="model">kalachakra.partnerdraftfile_mapping</field>
<field name="arch" type="xml">
<tree>
<field name="external_field"/>
<field name="odoo_field"/>
</tree>
</field>
</record>
</odoo>

Loading…
Cancel
Save