Skip to content
Snippets Groups Projects
Commit 46ff70d2 authored by Benjamin - Le Filament's avatar Benjamin - Le Filament
Browse files

[add] wizard for import

parent ec90abdd
No related branches found
No related tags found
No related merge requests found
...@@ -2,3 +2,4 @@ ...@@ -2,3 +2,4 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import models from . import models
from . import wizard
...@@ -9,8 +9,13 @@ ...@@ -9,8 +9,13 @@
'membership', 'membership',
], ],
'data': [ 'data': [
# security
'security/ir.model.access.csv',
# views # views
'views/membership_membership_line.xml', 'views/membership_membership_line.xml',
'views/res_partner.xml',
# wizard
'wizard/membership_import.xml',
], ],
'qweb': [], 'qweb': [],
'installable': True, 'installable': True,
......
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
access_afac_membership_import_wizard,access_afac_membership_import_wizard,model_afac_membership_import_wizard,base.group_erp_manager,1,1,1,1
\ No newline at end of file
# Copyright 2021 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import membership_import
# Copyright 2021 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import base64
import csv
import io
from odoo import fields, models, api
class MembershipImport(models.TransientModel):
_name = 'afac.membership.import.wizard'
_description = 'Wizard import adhésions'
file = fields.Binary('CSV File', required=True)
filename = fields.Char('Filename')
def import_data(self):
data = base64.b64decode(self.file).decode('utf-8')
reader = csv.DictReader(io.StringIO(data), delimiter=';')
contact = line = 0
for row in reader:
for year in range(2010, 2021, 1):
year = str(year)
print(row.get(year))
if row.get(year) and int(row.get(year)) > 0:
partner = self.env['res.partner'].search([('membership_number', '=', int(row.get('ADH')))])
product = self.env['product.product'].search([
('name', 'ilike', year),
'|',
('company_id', '=', int(row.get('adhésion'))),
('company_id', '=', None)
])
print(partner)
print(product)
begin = str(year) + '-01-01'
end = str(year) + '-12-31'
if year == 2021 and row.get('Date adhésion 2021'):
date_membership = row.get('Date adhésion 2021')
else:
date_membership = begin
req = """
INSERT INTO membership_membership_line(partner, date_from, date_to, date, member_price, state, company_id, membership_id)
VALUES (
%d, '%s', '%s', '%s', %d, '%s', %d, %d
)""" % (partner.id, begin, end, date_membership,
int(row.get(year)), 'paid', int(row.get('adhésion')), product.id)
print(req)
self.env.cr.execute(req)
line += 1
contact += 1
return
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="afac_membership_import_wizard_form_view" model="ir.ui.view">
<field name="name">afac.membership.import.wizard.form</field>
<field name="model">afac.membership.import.wizard</field>
<field name="arch" type="xml">
<form string="ModelTitle">
<sheet>
<group>
<group>
<field name="filename" invisible="1"/>
<field name="file" filename="filename" required="1"/>
</group>
</group>
</sheet>
<footer>
<button class="btn btn-sm btn-primary" name="import_data" string="Importer" type="object"/>
<button class="btn btn-sm btn-default" special="cancel" string="Fermer"/>
</footer>
</form>
</field>
</record>
<record id="afac_membership_import_wizard_act_window" model="ir.actions.act_window">
<field name="name">Import</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">afac.membership.import.wizard</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<menuitem
name="Import Données"
id="afac_membership_import_wizard_menu"
parent="membership.menu_marketing_config_association"
sequence="99"
groups="base.group_erp_manager"
action="afac_membership_import_wizard_act_window"
/>
</data>
</odoo>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment