From 46ff70d271bb6f2648798e96bc3b4b21c5af656b Mon Sep 17 00:00:00 2001 From: benjamin <benjamin@le-filament.com> Date: Fri, 5 Nov 2021 15:19:49 +0100 Subject: [PATCH] [add] wizard for import --- __init__.py | 1 + __manifest__.py | 5 ++++ security/ir.model.access.csv | 2 ++ wizard/__init__.py | 4 +++ wizard/membership_import.py | 53 ++++++++++++++++++++++++++++++++++++ wizard/membership_import.xml | 44 ++++++++++++++++++++++++++++++ 6 files changed, 109 insertions(+) create mode 100644 security/ir.model.access.csv create mode 100644 wizard/__init__.py create mode 100644 wizard/membership_import.py create mode 100644 wizard/membership_import.xml diff --git a/__init__.py b/__init__.py index 957992f..efa820e 100644 --- a/__init__.py +++ b/__init__.py @@ -2,3 +2,4 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from . import models +from . import wizard diff --git a/__manifest__.py b/__manifest__.py index e9ae6ce..4c8d6f5 100755 --- a/__manifest__.py +++ b/__manifest__.py @@ -9,8 +9,13 @@ 'membership', ], 'data': [ + # security + 'security/ir.model.access.csv', # views 'views/membership_membership_line.xml', + 'views/res_partner.xml', + # wizard + 'wizard/membership_import.xml', ], 'qweb': [], 'installable': True, diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv new file mode 100644 index 0000000..7cdeb9b --- /dev/null +++ b/security/ir.model.access.csv @@ -0,0 +1,2 @@ +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 diff --git a/wizard/__init__.py b/wizard/__init__.py new file mode 100644 index 0000000..b2a2dbc --- /dev/null +++ b/wizard/__init__.py @@ -0,0 +1,4 @@ +# 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 diff --git a/wizard/membership_import.py b/wizard/membership_import.py new file mode 100644 index 0000000..b8a4181 --- /dev/null +++ b/wizard/membership_import.py @@ -0,0 +1,53 @@ +# 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 + diff --git a/wizard/membership_import.xml b/wizard/membership_import.xml new file mode 100644 index 0000000..d5df5a6 --- /dev/null +++ b/wizard/membership_import.xml @@ -0,0 +1,44 @@ +<?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 -- GitLab