Browse Source

make donation suite

dev-rcn
root 3 years ago
parent
commit
244a1bf61a
11 changed files with 268 additions and 202 deletions
  1. +4
    -2
      __manifest__.py
  2. +1
    -1
      controllers/__init__.py
  3. +0
    -0
      controllers/kalachakra.py
  4. +1
    -1
      models/__init__.py
  5. +45
    -45
      models/partner.py
  6. +121
    -89
      models/partnerimport.py
  7. +2
    -2
      report/report_donationtax.xml
  8. +0
    -2
      security/ir.model.access.csv
  9. +4
    -2
      views/contactus.xml
  10. +30
    -16
      views/partner.xml
  11. +60
    -42
      views/partnerimport.xml

+ 4
- 2
__manifest__.py View File

@ -29,11 +29,13 @@
'views/templates.xml',
'views/calendar.xml',
'views/contactus.xml',
'views/partner.xml',
'views/partnerimport.xml',
# 'views/partner.xml',
# 'views/partnerimport.xml',
'report/report_donationtax.xml',
'report/report.xml',
'views/website_makedonation.xml'
#'report/report_donationtax.xml',
#'report/report.xml'
],
# only loaded in demonstration mode


+ 1
- 1
controllers/__init__.py View File

@ -1,3 +1,3 @@
# -*- coding: utf-8 -*-
from . import website_event
from . import kalachakra

controllers/website_event.py → controllers/kalachakra.py View File


+ 1
- 1
models/__init__.py View File

@ -2,4 +2,4 @@
from . import models
from . import partnerimport
from . import partner
#from . import partner

+ 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', 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)

+ 121
- 89
models/partnerimport.py View File

@ -1,105 +1,137 @@
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
class kalachakra_partnerdraft(models.Model):
_name = 'kalachakra.partnerdraft'
_description = 'import draft partner'
class kalachakra_partnerdraftfile(models.Model):
_name = 'kalachakra.partnerdraftfile'
_description = 'draft partner file'
external_id=fields.Char(string='external id')
source=fields.Char(String='source file',required=True)
name=fields.Char(string='name')
firstname=fields.Char(string='firstname')
title=fields.Char(string='civilité')
phone = fields.Char(string='phone')
mobile = fields.Char(string='mobile')
email = fields.Char(string='email')
complement_ident = fields.Char(string='N° appartment,floor')
complement_geo = fields.Char(string='entry,tower,bat')
street = fields.Char(string='street')
street2 = fields.Char(string='street2')
city = fields.Char(string='city')
zip = fields.Char(string='zip code')
country = fields.Char(string='country')
#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")
statut=fields.Selection([('adherent', 'Adhérent'), ('bienfaiteur', 'Bienfaiteur'),('contact', 'Contact'), ('soutien','Soutien') ],'Statut')
date_contact_joomla=fields.Date(string='Date joomla de création du contact')
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'),
('maitreya','maitreya'),
('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'),
('missun@gmail.com','missun@gmail.com'),
('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'),
('interreligieux','interreligieux'),
('Refuge','Refuge'),
('zoom','zoom')],'Origine', index=True)
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)
date_adhesion=fields.Date(string='Date adhesion')
doublon=fields.Boolean(string='Doublon')
#raise Warning(json.dumps(row))
action = self.env.ref("kalachakra.kalachakra_partnerdraft_action").sudo().read([])[0]
return action
def find_duplicated_partner(self):
def transfert_draftpartner(self):
#transfert des contacts importés, dans la base des contact odoo
partners=self.env['kalachakra.partnerdraft'].search([])
#affichage des doublons
action = self.env.ref("kalachakra.kalachakra_partnerdraft_action").sudo().read([])[0]
action.update(
{
"domain": [("doublon", "=", True)],
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
}
)
return action
class kalachakra_doublonfield(models.Model):
_name = 'kalachakra.doublonfield'
_description = 'doublons fields'
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
name=fields.Char('Doublon field name')
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.Char(string='external id')
# name=fields.Char(string='nom')
# firstname=fields.Char(string='prenom')
# title=fields.Char(string='civilité')
# street = fields.Char(string='adresse')
# street2 = fields.Char(string='adresse2')
# city = fields.Char(string='ville')
# country = fields.Char(string='pays')
# zip = fields.Char(string='code postal')
# phone = fields.Char(string='tel')
# email = fields.Char(string='Email')
# statut_contact=fields.Char('Statut')
# 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')

+ 2
- 2
report/report_donationtax.xml View File

@ -10,9 +10,9 @@
</xpath>
<!-- <xpath expr="//t[@t-call='web.internal_layout']" position="replace"> -->
<xpath expr="//t[@t-call='web.internal_layout']" position="replace">
<xpath expr="//div[@class='page']" position="replace">
<!-- <xpath expr="//div[@class='page']" position="replace"> -->
<div class="page" style="font-size: 15px !important;">


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

@ -1,3 +1 @@
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_doublonsfields,kalachakra_doublonsfields,model_kalachakra_doublonfield,donation.group_donation_manager,1,1,1,1

+ 4
- 2
views/contactus.xml View File

@ -5,12 +5,14 @@
<t t-call="website.layout">
<div class="oe_structure">
<div class="container">
<h1>coucou</h1>
</div>
</div>
<div style="overflow:hidden;width: 700px;position: relative;">
<iframe width="700" height="440" src="https://maps.google.com/maps?width=700&amp;height=440&amp;hl=en&amp;q=5%20passage%20delessert%2075010%20paris+(Titre)&amp;ie=UTF8&amp;t=&amp;z=13&amp;iwloc=B&amp;output=embed" frameborder="0" scrolling="no" marginheight="0" marginwidth="0"></iframe><div style="position: absolute;width: 80%;bottom: 10px;left: 0;right: 0;margin-left: auto;margin-right: auto;color: #000;text-align: center;">
</div><style>#gmap_canvas img{max-width:none!important;background:none!important}</style></div>
</div><style>#gmap_canvass img{max-width:none!important;background:none!important}</style></div>
</t>
</template>


+ 30
- 16
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>
@ -33,36 +34,49 @@
<field name="context"></field>
</record>
<record id="kalachakra_doublonfield_action" model="ir.actions.act_window">
<field name="name">Doublons fields</field>
<field name="res_model">kalachakra.doublonfield</field>
<record id="kalachakra_partnerdraftfile_action" model="ir.actions.act_window">
<field name="name">Partners draft file</field>
<field name="res_model">kalachakra.partnerdraftfile</field>
<field name="view_mode">tree,form</field>
<field name="context"></field>
</record>
<!--attention : ajouter mail comme dépendance pour que l'action server fonctionne-->
<record model="ir.actions.server" id="ir_action_find_duplicated_partner">
<field name="name">find_duplicated_partner</field>
<field name="model_id" ref="kalachakra.model_kalachakra_partnerdraft"/>
<field name="state">code</field>
<field name="code">action=model.find_duplicated_partner()</field>
<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>
<menuitem id="kalachakra_partnerdraft_title_menu" name ="Partners import"
parent="contacts.menu_contacts" sequence="4"/>
<menuitem id="kalachakra_partnerdraft_menu" action="kalachakra_partnerdraft_action" name ="Partners import"
<menuitem id="kalachakra_partnerdraft_menu" action="kalachakra_partnerdraft_action" name ="Partners imported"
parent="kalachakra_partnerdraft_title_menu" sequence="1"/>
<menuitem id="kalachakra_doublonfield_menu" action="kalachakra_doublonfield_action" name ="Doublons fields"
<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"/>
<menuitem id="kalachakra_doublonfield_menu" action="kalachakra_doublonfield_action" name ="Doublons fields"
parent="kalachakra_partnerdraft_title_menu" sequence="2"/>
<menuitem id="kalachakra_find_duplicated_partner_menu" action="ir_action_find_duplicated_partner"
name="find duplicated partners" parent="kalachakra_partnerdraft_title_menu" sequence="3"/>
name="find duplicated partners" parent="kalachakra_partnerdraft_title_menu" sequence="3"/> -->
</odoo>

+ 60
- 42
views/partnerimport.xml View File

@ -1,70 +1,88 @@
<?xml version="1.0"?>
<odoo>
<record model="ir.ui.view" id="kalachakra.partner_draft">
<record model="ir.ui.view" id="kalachakra.partner_draft">
<field name="name">_partner_draft list</field>
<field name="model">kalachakra.partnerdraft</field>
<field name="arch" type="xml">
<tree default_order="name,firstname">
<field name="doublon"/>
<field name="source"/>
<field name="external_id"/>
<field name="source_name"/>
<field name="name"/>
<field name="firstname"/>
<field name="phone"/>
<field name="mobile"/>
<field name="email"/>
<field name="complement_ident"/>
<field name="complement_geo"/>
<field name="title"/>
<field name="street"/>
<field name="street2"/>
<field name="city"/>
<field name="zip"/>
<field name="country"/>
<field name="zip"/>
<field name="phone"/>
<field name="email"/>
<field name="statut_contact"/>
<field name="date_creation_contact"/>
<field name="origine"/>
<field name="date_member"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="kalachakra.doublonsfield">
<field name="name">doublons fields list</field>
<field name="model">kalachakra.doublonfield</field>
<record model="ir.ui.view" id="kalachakra.partner_draftfilelist">
<field name="name">_partner_draft file list</field>
<field name="model">kalachakra.partnerdraftfile</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="active"/>
<field name="source_name"/>
<field name="file_name"/>
<field name="write_date"/>
<field name="create_date"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="kalachakra.partnerdraft_form" >
<field name="name">kalachakra_partnerdraft_form</field>
<field name="model">kalachakra.partnerdraft</field>
<record model="ir.ui.view" id="kalachakra.partner_draftfileform">
<field name="name">_partner_draft file form</field>
<field name="model">kalachakra.partnerdraftfile</field>
<field name="arch" type="xml">
<form string="Partner draft import">
<header>
<!-- <button name="compute_aggregate" type="object" string="Compute"/> -->
</header>
<sheet>
<group name="main">
<field name="doublon"/>
<field name="source"/>
<field name="external_id"/>
<field name="name"/>
<field name="firstname"/>
<field name="phone"/>
<field name="mobile"/>
<field name="email"/>
<field name="complement_ident"/>
<field name="complement_geo"/>
<field name="street"/>
<field name="street2"/>
<field name="city"/>
<field name="zip"/>
<field name="country"/>
</group>
</sheet>
</form>
<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>
<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