diff --git a/__init__.py b/__init__.py index 957992f377d7ce8942a87238397684babc5eb305..efa820e24eadb6b5eb7e510888bb92b32d573f83 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 e9ae6ced694f70e0ed22f95177fe0945a8416f27..4c8d6f5bbb8e122c6d92d38f94662db4f6b894c2 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 0000000000000000000000000000000000000000..7cdeb9b9474cd6416331a057e7f20ec74ef79669 --- /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 0000000000000000000000000000000000000000..b2a2dbc0e76bee5516693657dfb2ace8e3f7f7a4 --- /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 0000000000000000000000000000000000000000..b8a4181750f07b1c290acae64f715d030c4990fb --- /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 0000000000000000000000000000000000000000..d5df5a6547a9f72dbbaaf51abcda40d09caea60a --- /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