From 34a9960a366d94f284fec5a6133408f47f59aa6c Mon Sep 17 00:00:00 2001 From: houssine Date: Mon, 5 Aug 2019 18:06:48 +0200 Subject: [PATCH] [REFACT] for legal reason we remove the niss number to email instead --- easy_my_coop/__manifest__.py | 4 +- .../belgian_identification_id_generator.py | 35 --- easy_my_coop/models/company.py | 34 ++- easy_my_coop/models/coop.py | 92 ++++---- easy_my_coop/models/partner.py | 19 +- easy_my_coop/views/operation_request_view.xml | 2 - easy_my_coop/views/res_company_view.xml | 6 + easy_my_coop/views/res_partner_view.xml | 1 - .../views/subscription_request_view.xml | 1 - .../create_subscription_from_partner.py | 42 ++-- .../create_subscription_from_partner.xml | 2 +- easy_my_coop/wizard/update_partner_info.py | 2 +- easy_my_coop_be/__init__.py | 1 + easy_my_coop_be/models/__init__.py | 2 + easy_my_coop_be/models/coop.py | 10 + easy_my_coop_be/models/partner.py | 10 + easy_my_coop_ch/__init__.py | 2 +- easy_my_coop_ch/__manifest__.py | 2 +- easy_my_coop_ch/models/__init__.py | 3 +- easy_my_coop_ch/models/coop.py | 34 ++- easy_my_coop_ch/models/partner.py | 16 ++ .../views/subscription_request_view.xml | 13 -- .../views/subscription_template.xml | 18 +- .../wizard/export_global_wizard.py | 6 - easy_my_coop_fr/__manifest__.py | 3 +- easy_my_coop_fr/models/__init__.py | 1 + easy_my_coop_fr/models/coop.py | 13 +- easy_my_coop_fr/models/partner.py | 12 ++ .../views/subscription_template.xml | 2 - easy_my_coop_website/controllers/main.py | 66 +++--- .../views/subscription_template.xml | 204 +++++++++++++----- .../easy_my_coop_website_portal_templates.xml | 4 - 32 files changed, 387 insertions(+), 275 deletions(-) delete mode 100644 easy_my_coop/models/belgian_identification_id_generator.py create mode 100644 easy_my_coop_be/models/__init__.py create mode 100644 easy_my_coop_be/models/coop.py create mode 100644 easy_my_coop_be/models/partner.py create mode 100644 easy_my_coop_ch/models/partner.py delete mode 100644 easy_my_coop_ch/views/subscription_request_view.xml create mode 100644 easy_my_coop_fr/models/partner.py diff --git a/easy_my_coop/__manifest__.py b/easy_my_coop/__manifest__.py index 6985e24..7c6581b 100644 --- a/easy_my_coop/__manifest__.py +++ b/easy_my_coop/__manifest__.py @@ -1,11 +1,11 @@ # Copyright 2013-2018 Open Architects Consulting SPRL. -# Copyright 2018- Coop IT Easy SCRLfs () +# Copyright 2018 Coop IT Easy SCRLfs () # - Houssine BAKKALI - # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). { "name": "Easy My Coop", - "version": "12.0.1.0.1", + "version": "12.0.2.0.1", "depends": [ "base", "sale", diff --git a/easy_my_coop/models/belgian_identification_id_generator.py b/easy_my_coop/models/belgian_identification_id_generator.py deleted file mode 100644 index 6d5f96e..0000000 --- a/easy_my_coop/models/belgian_identification_id_generator.py +++ /dev/null @@ -1,35 +0,0 @@ -from random import randrange, randint -from datetime import date, timedelta - - -def random_date(start, end): - delta = end - start - return start + timedelta(seconds=randrange(delta.total_seconds())) - - -def generate_identification_id(start_date, end_date): - birthday = random_date(start_date, end_date) - year = str(birthday.year)[2:] - month = str(birthday.month).zfill(2) - day = str(birthday.day).zfill(2) - gender = str(randint(1, 998)).zfill(3) - millenium_baby = birthday.year > 2000 - - main_number = year + month + day + gender - control_number = '2' + main_number if millenium_baby else main_number - control_number = 97 - int(control_number) % 97 - control_number = str(control_number).zfill(2) - - return main_number + control_number - - -def identification_id_to_gender(identification_id): - if identification_id and len(identification_id) == 11: - gender = identification_id[6:9] - return int(gender) % 2 - - -INDENTITY_ID = generate_identification_id(date(1920, 1, 1), date(1995, 12, 31)) -GENDER = identification_id_to_gender(INDENTITY_ID) -print('Rijksregisternummer: ' + INDENTITY_ID) -print('Geslacht: ' + ('Man' if GENDER else 'Vrouw')) diff --git a/easy_my_coop/models/company.py b/easy_my_coop/models/company.py index c76df9b..81cc9fc 100644 --- a/easy_my_coop/models/company.py +++ b/easy_my_coop/models/company.py @@ -1,4 +1,4 @@ -from odoo import fields, models +from odoo import api, fields, models class ResCompany(models.Model): @@ -43,3 +43,35 @@ class ResCompany(models.Model): bottom_logo2 = fields.Binary(string="Bottom logo 2") logo_url = fields.Char(string="logo url", compute="_get_base_logo") + display_data_policy_approval = fields.Boolean( + help="Choose to display a data policy checkbox on the cooperator" + " website form." + ) + data_policy_approval_required = fields.Boolean( + string="Is data policy approval required?" + ) + data_policy_approval_text = fields.Html( + translate=True, + help="Text to display aside the checkbox to approve data policy." + ) + display_internal_rules_approval = fields.Boolean( + help="Choose to display an internal rules checkbox on the" + " cooperator website form." + ) + internal_rules_approval_required = fields.Boolean( + string="Is internal rules approval required?" + ) + internal_rules_approval_text = fields.Html( + translate=True, + help="Text to display aside the checkbox to approve internal rules." + ) + + @api.onchange('data_policy_approval_required') + def onchange_data_policy_approval_required(self): + if self.data_policy_approval_required: + self.display_data_policy_approval = True + + @api.onchange('internal_rules_approval_required') + def onchange_internal_rules_approval_required(self): + if self.internal_rules_approval_required: + self.display_internal_rules_approval = True diff --git a/easy_my_coop/models/coop.py b/easy_my_coop/models/coop.py index 19fb622..a5aee01 100644 --- a/easy_my_coop/models/coop.py +++ b/easy_my_coop/models/coop.py @@ -15,7 +15,7 @@ _REQUIRED = ['email', 'city', 'iban', 'no_registre', - 'gender'] # Could be improved including required from model + 'gender'] @api.model @@ -29,10 +29,16 @@ class SubscriptionRequest(models.Model): _description = 'Subscription Request' def get_required_field(self): - return _REQUIRED + required_fields = _REQUIRED + company = self.env['res.company']._company_default_get() + if company.data_policy_approval_required: + required_fields.append('data_policy_approved') + if company.internal_rules_approval_required: + required_fields.append('internal_rules_approved') + return required_fields def get_mail_template_notif(self): - return'easy_my_coop.email_template_confirmation' + return 'easy_my_coop.email_template_confirmation' def is_member(self, vals, cooperator): if cooperator.member: @@ -47,12 +53,12 @@ class SubscriptionRequest(models.Model): if not vals.get('partner_id'): cooperator = False - if vals.get('no_registre'): - cooperator = partner_obj.get_cooperator_from_nin( - vals.get('no_registre')) + if vals.get('email'): + cooperator = partner_obj.get_cooperator_from_email( + vals.get('email')) if cooperator: # TODO remove the following line of code once it has - # been found a way to avoid dubble encoding + # been found a way to avoid double encoding cooperator = cooperator[0] vals['type'] = 'subscription' @@ -90,22 +96,6 @@ class SubscriptionRequest(models.Model): return subscr_request - def check_belgian_identification_id(self, nat_register_num): - if not self.check_empty_string(nat_register_num): - return False - if len(nat_register_num) != 11: - return False - if not nat_register_num.isdigit(): - return False - birthday_number = nat_register_num[0:9] - controle = nat_register_num[9:11] - check_controle = 97 - (int(birthday_number) % 97) - if int(check_controle) != int(controle): - check_controle = 97 - ((2000000000 + int(birthday_number)) % 97) - if int(check_controle) != int(controle): - return False - return True - def check_empty_string(self, value): if value is None or value is False or value == '': return False @@ -120,17 +110,10 @@ class SubscriptionRequest(models.Model): return validated @api.multi - @api.depends('iban', 'no_registre', 'skip_control_ng', 'is_company') + @api.depends('iban', 'skip_control_ng', 'is_company') def _validated_lines(self): for sub_request in self: validated = self.check_iban(sub_request.iban) - - if validated and (sub_request.skip_control_ng or - self.check_belgian_identification_id( - sub_request.no_registre)): - validated = True - else: - validated = False sub_request.validated = validated @api.multi @@ -235,9 +218,6 @@ class SubscriptionRequest(models.Model): phone = fields.Char(string='Phone', readonly=True, states={'draft': [('readonly', False)]}) - no_registre = fields.Char(string='National Register Number', - readonly=True, - states={'draft': [('readonly', False)]}) user_id = fields.Many2one('res.users', string='Responsible', readonly=True) @@ -284,11 +264,7 @@ class SubscriptionRequest(models.Model): company_register_number = fields.Char(string='Company register number', readonly=True, states={'draft': [('readonly', False)]}) - company_type = fields.Selection([('scrl', 'SCRL'), - ('asbl', 'ASBL'), - ('sprl', 'SPRL'), - ('sa', 'SA'), - ('other', 'Other')], + company_type = fields.Selection([('', '')], string="Company type", readonly=True, states={'draft': [('readonly', False)]}) @@ -336,13 +312,20 @@ class SubscriptionRequest(models.Model): default="website", readonly=True, states={'draft': [('readonly', False)]}) + data_policy_approved = fields.Boolean( + string='Data Policy Approved', + default=False, + ) + internal_rules_approved = fields.Boolean( + string='Approved Internal Rules', + default=False, + ) _order = "id desc" def get_person_info(self, partner): self.firstname = partner.firstname self.name = partner.name self.lastname = partner.lastname - self.no_registre = partner.national_register_number self.email = partner.email self.birthdate = partner.birthdate_date self.gender = partner.gender @@ -401,11 +384,11 @@ class SubscriptionRequest(models.Model): return res def send_capital_release_request(self, invoice): - invoice_email_template = self.env['mail.template'].search([('name', '=', 'Request to Release Capital - Send by Email')])[0] + email_template = self.env.ref('email_template_release_capital', False) # we send the email with the capital release request in attachment # TODO remove sudo() and give necessary access right - invoice_email_template.sudo().send_mail(invoice.id, True) + email_template.sudo().send_mail(invoice.id, True) invoice.sent = True def get_journal(self): @@ -459,7 +442,10 @@ class SubscriptionRequest(models.Model): 'customer': self.share_product_id.customer, 'out_inv_comm_algorithm': 'random', 'country_id': self.country_id.id, - 'lang': self.lang} + 'lang': self.lang, + 'data_policy_approved': self.data_policy_approved, + 'internal_rules_approved': self.internal_rules_approved + } return partner_vals def get_partner_vals(self): @@ -468,12 +454,14 @@ class SubscriptionRequest(models.Model): 'zip': self.zip_code, 'email': self.email, 'gender': self.gender, 'cooperator': True, 'city': self.city, 'phone': self.phone, - 'national_register_number': self.no_registre, 'out_inv_comm_type': 'bba', 'out_inv_comm_algorithm': 'random', 'country_id': self.country_id.id, 'lang': self.lang, 'birthdate_date': self.birthdate, - 'customer': self.share_product_id.customer} + 'customer': self.share_product_id.customer, + 'data_policy_approved': self.data_policy_approved, + 'internal_rules_approved': self.internal_rules_approved + } return partner_vals def create_coop_partner(self): @@ -514,8 +502,8 @@ class SubscriptionRequest(models.Model): ' checked please select a cooperator.')) elif self.is_company and self.company_register_number: domain = [('company_register_number', '=', self.company_register_number)] #noqa - elif not self.is_company and self.no_registre: - domain = [('national_register_number', '=', self.no_registre)] + elif not self.is_company and self.email: + domain = [('email', '=', self.email)] if domain: partner = partner_obj.search(domain) @@ -527,8 +515,8 @@ class SubscriptionRequest(models.Model): if self.is_company and not partner.has_representative(): contact = False - if self.no_registre: - domain = [('national_register_number', '=', self.no_registre)] + if self.email: + domain = [('email', '=', self.email)] contact = partner_obj.search(domain) if contact: contact.type = 'representative' @@ -540,7 +528,6 @@ class SubscriptionRequest(models.Model): 'street': self.address, 'gender': self.gender, 'zip': self.zip_code, 'city': self.city, 'phone': self.phone, 'email': self.email, - 'national_register_number': self.no_registre, 'country_id': self.country_id.id, 'out_inv_comm_type': 'bba', 'out_inv_comm_algorithm': 'random', @@ -549,7 +536,10 @@ class SubscriptionRequest(models.Model): 'parent_id': partner.id, 'representative': True, 'function': self.contact_person_function, - 'type': 'representative'} + 'type': 'representative', + 'data_policy_approved': self.data_policy_approved, + 'internal_rules_approved': self.internal_rules_approved + } contact = partner_obj.create(contact_vals) else: if len(contact) > 1: diff --git a/easy_my_coop/models/partner.py b/easy_my_coop/models/partner.py index 1e5661a..85ba9f3 100644 --- a/easy_my_coop/models/partner.py +++ b/easy_my_coop/models/partner.py @@ -4,17 +4,6 @@ from odoo import api, fields, models class ResPartner(models.Model): _inherit = 'res.partner' -# def _auto_init(self, cr, context=None): -# """ -# Convert the column birthdate into date if it's not the case to avoid warning and data loss with orm conversion -# """ -# cr.execute("select data_type from information_schema.columns where table_name = 'res_partner' and column_name= 'birthdate';") -# res = cr.fetchone() -# if not 'date' in res: -# cr.execute("ALTER TABLE res_partner ALTER COLUMN birthdate TYPE date USING birthdate::date;") -# -# return super(ResPartner, self)._auto_init(cr, context=context) - @api.multi def _invoice_total(self): account_invoice_report = self.env['account.invoice.report'] @@ -138,6 +127,10 @@ class ResPartner(models.Model): subscription_request_ids = fields.One2many('subscription.request', 'partner_id', string="Subscription request") + legal_form = fields.Selection([('', '')], + string="Legal form") + data_policy_approved = fields.Boolean(string="Approved Data Policy") + internal_rules_approved = fields.Boolean(string="Approved Internal Rules") @api.multi @api.depends('subscription_request_ids.state') @@ -161,9 +154,9 @@ class ResPartner(models.Model): def get_representative(self): return self.child_ids.filtered('representative') - def get_cooperator_from_nin(self, national_id_number): + def get_cooperator_from_email(self, email): return self.search([('cooperator', '=', True), - ('national_register_number', '=', national_id_number)]) + ('email', '=', email)]) def get_cooperator_from_crn(self, company_register_number): return self.search([('cooperator', '=', True), diff --git a/easy_my_coop/views/operation_request_view.xml b/easy_my_coop/views/operation_request_view.xml index dcf68b9..2264c4f 100644 --- a/easy_my_coop/views/operation_request_view.xml +++ b/easy_my_coop/views/operation_request_view.xml @@ -53,7 +53,6 @@ - @@ -71,7 +70,6 @@ - diff --git a/easy_my_coop/views/res_company_view.xml b/easy_my_coop/views/res_company_view.xml index 0781e65..69eb547 100644 --- a/easy_my_coop/views/res_company_view.xml +++ b/easy_my_coop/views/res_company_view.xml @@ -20,6 +20,12 @@ + + + + + + diff --git a/easy_my_coop/views/res_partner_view.xml b/easy_my_coop/views/res_partner_view.xml index 5e2b41c..4609bd4 100644 --- a/easy_my_coop/views/res_partner_view.xml +++ b/easy_my_coop/views/res_partner_view.xml @@ -21,7 +21,6 @@ - diff --git a/easy_my_coop/views/subscription_request_view.xml b/easy_my_coop/views/subscription_request_view.xml index 7506d38..855d878 100644 --- a/easy_my_coop/views/subscription_request_view.xml +++ b/easy_my_coop/views/subscription_request_view.xml @@ -57,7 +57,6 @@ - diff --git a/easy_my_coop/wizard/create_subscription_from_partner.py b/easy_my_coop/wizard/create_subscription_from_partner.py index f0b9a34..ea45d3d 100644 --- a/easy_my_coop/wizard/create_subscription_from_partner.py +++ b/easy_my_coop/wizard/create_subscription_from_partner.py @@ -29,15 +29,15 @@ class PartnerCreateSubscription(models.TransientModel): def _get_representative(self): partner = self._get_partner() if partner.is_company: - return self.env['res.partner'].search([('parent_id', '=', partner.id), - ('representative', '=', True)]) + return partner.search([('parent_id', '=', partner.id), + ('representative', '=', True)]) return False @api.model - def _get_representative_number(self): + def _get_representative_email(self): representative = self._get_representative() if representative: - return representative.national_register_number + return representative.email return False @api.model @@ -58,16 +58,13 @@ class PartnerCreateSubscription(models.TransientModel): @api.model def _get_email(self): - partner = self._get_partner() - return partner.email + return self._get_partner().email @api.model def _get_register_number(self): partner = self._get_partner() if partner.is_company: return partner.company_register_number - else: - return partner.national_register_number @api.model def _get_bank_account(self): @@ -100,7 +97,7 @@ class PartnerCreateSubscription(models.TransientModel): cooperator = fields.Many2one('res.partner', string="Cooperator", default=_get_partner) - register_number = fields.Char(string="Register Number", + register_number = fields.Char(string="Register Company Number", required=True, default=_get_register_number) email = fields.Char(string="Email", @@ -125,16 +122,8 @@ class PartnerCreateSubscription(models.TransientModel): readonly=True) representative_name = fields.Char(string='Representative name', default=_get_representative_name) - representative_number = fields.Char(string='Representative national ' - 'register number', - default=_get_representative_number) - - def check_belgian_ident_id(self, register_number): - sub_req = self.env['subscription.request'] - if sub_req.check_belgian_identification_id(register_number): - return True - else: - raise UserError(_("The national register number is not valid.")) + representative_email = fields.Char(string='Representative email', + default=_get_representative_email) @api.multi def create_subscription(self): @@ -162,7 +151,6 @@ class PartnerCreateSubscription(models.TransientModel): vals['is_company'] = True else: vals['name'] = cooperator.name - vals['no_registre'] = self.register_number coop_vals = {} if not self._get_email(): @@ -171,15 +159,12 @@ class PartnerCreateSubscription(models.TransientModel): if not self._get_register_number(): if self.is_company: coop_vals['company_register_number'] = self.register_number - else: - if self.check_belgian_ident_id(self.register_number): - coop_vals['national_register_number'] = self.register_number if self.is_company and not self._get_representative(): representative = False - if self.representative_number: - representative_number = self.representative_number - representative = partner_obj.search([('national_register_number', '=', representative_number)]) + if self.representative_email: + representative = partner_obj.search( + [('email', '=', self.representative_email)]) if representative: if len(representative) > 1: @@ -192,10 +177,10 @@ class PartnerCreateSubscription(models.TransientModel): "two different companies.")) representative.parent_id = cooperator.id else: - if self.check_belgian_ident_id(representative_number): + if self.representative_email: represent_vals = {'name': self.representative_name, 'cooperator': True, - 'national_register_number': representative_number, + 'email': self.representative_email, 'parent_id': cooperator.id, 'representative': True} partner_obj.create(represent_vals) @@ -208,7 +193,6 @@ class PartnerCreateSubscription(models.TransientModel): if self.is_company: representative = self._get_representative() vals['name'] = representative.name - vals['no_registre'] = representative.national_register_number if coop_vals: cooperator.write(coop_vals) diff --git a/easy_my_coop/wizard/create_subscription_from_partner.xml b/easy_my_coop/wizard/create_subscription_from_partner.xml index 81b0b14..c59da3d 100644 --- a/easy_my_coop/wizard/create_subscription_from_partner.xml +++ b/easy_my_coop/wizard/create_subscription_from_partner.xml @@ -13,7 +13,7 @@ - + diff --git a/easy_my_coop/wizard/update_partner_info.py b/easy_my_coop/wizard/update_partner_info.py index 5afbce4..bb7c50b 100644 --- a/easy_my_coop/wizard/update_partner_info.py +++ b/easy_my_coop/wizard/update_partner_info.py @@ -16,7 +16,7 @@ class PartnerUpdateInfo(models.TransientModel): if partner.is_company: return partner.company_register_number - register_number = fields.Char(string="Register Number", + register_number = fields.Char(string="Register Company Number", required=True, default=_get_register_number) cooperator = fields.Many2one('res.partner', diff --git a/easy_my_coop_be/__init__.py b/easy_my_coop_be/__init__.py index e69de29..7f0969e 100644 --- a/easy_my_coop_be/__init__.py +++ b/easy_my_coop_be/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/easy_my_coop_be/models/__init__.py b/easy_my_coop_be/models/__init__.py new file mode 100644 index 0000000..35c42e8 --- /dev/null +++ b/easy_my_coop_be/models/__init__.py @@ -0,0 +1,2 @@ +from . import coop +from . import partner diff --git a/easy_my_coop_be/models/coop.py b/easy_my_coop_be/models/coop.py new file mode 100644 index 0000000..ad9108b --- /dev/null +++ b/easy_my_coop_be/models/coop.py @@ -0,0 +1,10 @@ +from odoo import fields, models + + +class SubscriptionRequest(models.Model): + _inherit = 'subscription.request' + + company_type = fields.Selection([('scrl', 'SCRL'), + ('asbl', 'ASBL'), + ('sprl', 'SPRL'), + ('sa', 'SA')]) diff --git a/easy_my_coop_be/models/partner.py b/easy_my_coop_be/models/partner.py new file mode 100644 index 0000000..d42a178 --- /dev/null +++ b/easy_my_coop_be/models/partner.py @@ -0,0 +1,10 @@ +from odoo import fields, models + + +class ResPartner(models.Model): + _inherit = 'res.partner' + + legal_form = fields.Selection(selection_add=[('scrl', 'SCRL'), + ('asbl', 'ASBL'), + ('sprl', 'SPRL'), + ('sa', 'SA')]) diff --git a/easy_my_coop_ch/__init__.py b/easy_my_coop_ch/__init__.py index 9a7e03e..7f0969e 100644 --- a/easy_my_coop_ch/__init__.py +++ b/easy_my_coop_ch/__init__.py @@ -1 +1 @@ -from . import models \ No newline at end of file +from . import models diff --git a/easy_my_coop_ch/__manifest__.py b/easy_my_coop_ch/__manifest__.py index 1fdf78c..0cb5f23 100644 --- a/easy_my_coop_ch/__manifest__.py +++ b/easy_my_coop_ch/__manifest__.py @@ -20,7 +20,7 @@ ############################################################################## { "name": "Easy My Coop CH", - "version": "1.0", + "version": "12.0.1.0.2", "depends": ["easy_my_coop", "l10n_ch"], "author": "Houssine BAKKALI ", diff --git a/easy_my_coop_ch/models/__init__.py b/easy_my_coop_ch/models/__init__.py index 0b75654..35c42e8 100644 --- a/easy_my_coop_ch/models/__init__.py +++ b/easy_my_coop_ch/models/__init__.py @@ -1 +1,2 @@ -from . import coop \ No newline at end of file +from . import coop +from . import partner diff --git a/easy_my_coop_ch/models/coop.py b/easy_my_coop_ch/models/coop.py index 9a86e78..c4a91f3 100644 --- a/easy_my_coop_ch/models/coop.py +++ b/easy_my_coop_ch/models/coop.py @@ -1,31 +1,27 @@ -# -*- coding: utf-8 -*- -from openerp import fields, models +from odoo import fields, models -class subscription_request(models.Model): +class SubscriptionRequest(models.Model): _inherit = 'subscription.request' - company_type = fields.Selection([('ei', 'Individual company'), - ('snc', 'Partnership'), - ('sa', 'Limited company (SA)'), - ('sarl', 'Limited liability company (Ltd)'), #noqa - ('sc', 'Cooperative'), - ('asso', 'Association'), - ('fond', 'Foundation'), - ('edp', 'Company under public law')]) + company_type = fields.Selection(selection_add=[ + ('ei', 'Individual company'), + ('snc', 'Partnership'), + ('sa', 'Limited company (SA)'), + ('sarl', 'Limited liability company (Ltd)'), #noqa + ('sc', 'Cooperative'), + ('asso', 'Association'), + ('fond', 'Foundation'), + ('edp', 'Company under public law')]) def get_required_field(self): - req_fields = super(subscription_request, self).get_required_field() - if 'no_registre' in req_fields: - req_fields.remove('no_registre') + req_fields = super(SubscriptionRequest, self).get_required_field() + if 'iban' in req_fields: + req_fields.remove('iban') return req_fields - def check_belgian_identification_id(self, nat_register_num): - # deactivate number validation for swiss localization - return True - def check_iban(self, iban): if iban: - return super(subscription_request, self).check_iban(iban) + return super(SubscriptionRequest, self).check_iban(iban) return True diff --git a/easy_my_coop_ch/models/partner.py b/easy_my_coop_ch/models/partner.py new file mode 100644 index 0000000..ec26713 --- /dev/null +++ b/easy_my_coop_ch/models/partner.py @@ -0,0 +1,16 @@ +from odoo import fields, models + + +class ResPartner(models.Model): + _inherit = 'res.partner' + + legal_form = fields.Selection(selection_add=[ + ('ei', 'Individual company'), + ('snc', 'Partnership'), + ('sa', 'Limited company (SA)'), + ('sarl', 'Limited liability company (Ltd)'), + ('sc', 'Cooperative'), + ('asso', 'Association'), + ('fond', 'Foundation'), + ('edp', 'Company under public law') + ]) diff --git a/easy_my_coop_ch/views/subscription_request_view.xml b/easy_my_coop_ch/views/subscription_request_view.xml deleted file mode 100644 index 6a0c614..0000000 --- a/easy_my_coop_ch/views/subscription_request_view.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - subscription.request.form - subscription.request - - - - - - - \ No newline at end of file diff --git a/easy_my_coop_ch/views/subscription_template.xml b/easy_my_coop_ch/views/subscription_template.xml index c14c41d..77b1c6f 100644 --- a/easy_my_coop_ch/views/subscription_template.xml +++ b/easy_my_coop_ch/views/subscription_template.xml @@ -2,11 +2,25 @@ \ No newline at end of file diff --git a/easy_my_coop_export_xlsx/wizard/export_global_wizard.py b/easy_my_coop_export_xlsx/wizard/export_global_wizard.py index 986d799..9a82498 100644 --- a/easy_my_coop_export_xlsx/wizard/export_global_wizard.py +++ b/easy_my_coop_export_xlsx/wizard/export_global_wizard.py @@ -10,7 +10,6 @@ import xlsxwriter HEADER = [ 'Num. Coop', - 'Numero de registre national', 'Nom', 'Email', 'Banque', @@ -36,7 +35,6 @@ HEADER2 = [ 'Nombre de part', 'Montant', 'Statut', - 'Numero de registre national', 'Email', 'Mobile', 'Adresse', @@ -77,8 +75,6 @@ class export_global_report(models.TransientModel): i = 0 worksheet1.write(j, i, coop.cooperator_register_number) i += 1 - worksheet1.write(j, i, coop.national_register_number) - i += 1 worksheet1.write(j, i, coop.name) i += 1 worksheet1.write(j, i, coop.email) @@ -161,8 +157,6 @@ class export_global_report(models.TransientModel): i = 0 worksheet1bis.write(j, i, coop.cooperator_register_number) i += 1 - worksheet1bis.write(j, i, coop.national_register_number) - i += 1 worksheet1bis.write(j, i, coop.name) i += 1 worksheet1bis.write(j, i, coop.email) diff --git a/easy_my_coop_fr/__manifest__.py b/easy_my_coop_fr/__manifest__.py index 4740c1c..de6ca6a 100644 --- a/easy_my_coop_fr/__manifest__.py +++ b/easy_my_coop_fr/__manifest__.py @@ -4,7 +4,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).# { "name": "Easy My Coop Fr", - "version": "12.0.1.0.0", + "version": "12.0.1.0.1", "depends": ["easy_my_coop", "l10n_fr"], "author": "Houssine BAKKALI ", @@ -16,7 +16,6 @@ """, 'data': [ 'views/subscription_template.xml', - # 'views/layout_template.xml', 'views/certificate_template.xml' ], 'installable': True, diff --git a/easy_my_coop_fr/models/__init__.py b/easy_my_coop_fr/models/__init__.py index bb5197b..35c42e8 100644 --- a/easy_my_coop_fr/models/__init__.py +++ b/easy_my_coop_fr/models/__init__.py @@ -1 +1,2 @@ from . import coop +from . import partner diff --git a/easy_my_coop_fr/models/coop.py b/easy_my_coop_fr/models/coop.py index 96d44af..99501fa 100644 --- a/easy_my_coop_fr/models/coop.py +++ b/easy_my_coop_fr/models/coop.py @@ -1,15 +1,15 @@ -# -*- coding: utf-8 -*- -from openerp import fields, models +from odoo import fields, models class SubscriptionRequest(models.Model): _inherit = 'subscription.request' - company_type = fields.Selection([ + company_type = fields.Selection(selection_add=[ ('asso', 'Association'), ('eurl', 'EURL / Entreprise individuelle'), ('sarl', 'SARL'), - ('sa', 'SA / SAS')]) + ('sa', 'SA / SAS') + ]) def get_required_field(self): req_fields = super(SubscriptionRequest, self).get_required_field() @@ -17,8 +17,3 @@ class SubscriptionRequest(models.Model): req_fields.remove('iban') return req_fields - - # override function to disable the check - def check_belgian_identification_id(self, nat_register_num): - # deactivate number validation for french localization - return True diff --git a/easy_my_coop_fr/models/partner.py b/easy_my_coop_fr/models/partner.py new file mode 100644 index 0000000..1a5970a --- /dev/null +++ b/easy_my_coop_fr/models/partner.py @@ -0,0 +1,12 @@ +from odoo import fields, models + + +class ResPartner(models.Model): + _inherit = 'res.partner' + + gal_form = fields.Selection(selection_add=[ + ('asso', 'Association'), + ('eurl', 'EURL / Entreprise individuelle'), + ('sarl', 'SARL'), + ('sa', 'SA / SAS') + ]) diff --git a/easy_my_coop_fr/views/subscription_template.xml b/easy_my_coop_fr/views/subscription_template.xml index 8dc57c0..426205d 100644 --- a/easy_my_coop_fr/views/subscription_template.xml +++ b/easy_my_coop_fr/views/subscription_template.xml @@ -2,8 +2,6 @@ diff --git a/easy_my_coop_website/controllers/main.py b/easy_my_coop_website/controllers/main.py index b5ca017..ae23839 100644 --- a/easy_my_coop_website/controllers/main.py +++ b/easy_my_coop_website/controllers/main.py @@ -12,17 +12,17 @@ _TECHNICAL = ['view_from', 'view_callback'] _BLACKLIST = ['id', 'create_uid', 'create_date', 'write_uid', 'write_date', 'user_id', 'active'] -_COOP_FORM_FIELD = ['email', 'firstname', 'lastname', 'birthdate', 'iban', - 'share_product_id', 'no_registre', 'address', 'city', - 'zip_code', 'country_id', 'phone', 'lang', 'nb_parts', - 'total_parts', 'error_msg'] +_COOP_FORM_FIELD = ['email', 'confirm_email', 'firstname', 'lastname', + 'birthdate', 'iban', 'share_product_id', 'no_registre', + 'address', 'city', 'zip_code', 'country_id', 'phone', + 'lang', 'nb_parts', 'total_parts', 'error_msg'] _COMPANY_FORM_FIELD = ['is_company', 'company_register_number', 'company_name', - 'company_email', 'company_type', 'email', 'firstname', + 'company_email', 'confirm_email', 'email', 'firstname', 'lastname', 'birthdate', 'iban', 'share_product_id', 'no_registre', 'address', 'city', 'zip_code', 'country_id', 'phone', 'lang', 'nb_parts', - 'total_parts', 'error_msg'] + 'total_parts', 'error_msg', 'company_type'] class WebsiteSubscription(http.Controller): @@ -37,7 +37,7 @@ class WebsiteSubscription(http.Controller): logged = True partner = request.env.user.partner_id if partner.is_company: - return request.render("easy_my_coop_website.becomecompanycooperator", values) + return self.display_become_company_cooperator_page() values = self.fill_values(values, False, logged, True) for field in _COOP_FORM_FIELD: @@ -52,8 +52,8 @@ class WebsiteSubscription(http.Controller): type='http', auth="public", website=True) def display_become_company_cooperator_page(self, **kwargs): values = {} - logged = False + if request.env.user.login != 'public': logged = True values = self.fill_values(values, True, logged, True) @@ -62,7 +62,8 @@ class WebsiteSubscription(http.Controller): if kwargs.get(field): values[field] = kwargs.pop(field) values.update(kwargs=kwargs.items()) - return request.render("easy_my_coop_website.becomecompanycooperator", values) + return request.render("easy_my_coop_website.becomecompanycooperator", + values) def preRenderThanks(self, values, kwargs): """ Allow to be overrided """ @@ -101,6 +102,7 @@ class WebsiteSubscription(http.Controller): values['company_register_number'] = partner.company_register_number values['company_name'] = partner.name values['company_email'] = partner.email + values['company_type'] = partner.legal_form # contact person values representative = partner.get_representative() values['firstname'] = representative.firstname @@ -108,7 +110,6 @@ class WebsiteSubscription(http.Controller): values['gender'] = representative.gender values['email'] = representative.email values['contact_person_function'] = representative.function - values['no_registre'] = representative.national_register_number values['birthdate'] = self.get_date_string(representative.birthdate) values['lang'] = representative.lang values['phone'] = representative.phone @@ -117,7 +118,6 @@ class WebsiteSubscription(http.Controller): values['lastname'] = partner.lastname values['email'] = partner.email values['gender'] = partner.gender - values['no_registre'] = partner.national_register_number values['birthdate'] = self.get_date_string(partner.birthdate_date) values['lang'] = partner.lang values['phone'] = partner.phone @@ -162,6 +162,16 @@ class WebsiteSubscription(http.Controller): if not values.get('lang'): if company.default_lang_id: values['lang'] = company.default_lang_id.code + + comp = request.env['res.company']._company_default_get() + values.update({ + 'display_data_policy': comp.display_data_policy_approval, + 'data_policy_required': comp.data_policy_approval_required, + 'data_policy_text': comp.data_policy_approval_text, + 'display_internal_rules': comp.display_internal_rules_approval, + 'internal_rules_required': comp.internal_rules_approval_required, + 'internal_rules_text': comp.internal_rules_approval_text, + }) return values def get_products_share(self, is_company): @@ -228,6 +238,15 @@ class WebsiteSubscription(http.Controller): "fill in the form") return request.render(redirect, values) + else: + confirm_email = kwargs.get('confirm_email') + if email != confirm_email: + values = self.fill_values(values, is_company, logged) + values.update(kwargs) + values["error_msg"] = _("The email and the confirmation " + "email doesn't match.Please check " + "the given mail addresses") + return request.render(redirect, values) company = request.website.company_id if company.allow_id_card_upload: @@ -247,17 +266,6 @@ class WebsiteSubscription(http.Controller): "is not valid") return request.render(redirect, values) - if not is_company and 'no_registre' in required_fields: - no_registre = re.sub('[^0-9a-zA-Z]+', '', - kwargs.get("no_registre")) - valid = sub_req_obj.check_belgian_identification_id(no_registre) - if not valid: - values = self.fill_values(values, is_company, logged) - values["error_msg"] = _("You national register number " - "is not valid") - return request.render(redirect, values) - values["no_registre"] = no_registre - # check the subscription's amount max_amount = company.subscription_maximum_amount if logged: @@ -339,6 +347,12 @@ class WebsiteSubscription(http.Controller): values["already_cooperator"] = already_coop values["is_company"] = is_company + if kwargs.get('data_policy_approved', 'off') == 'on': + values['data_policy_approved'] = True + + if kwargs.get('internal_rules_approved', 'off') == 'on': + values['internal_rules_approved'] = True + lastname = kwargs.get("lastname").upper() firstname = kwargs.get("firstname").title() @@ -358,14 +372,6 @@ class WebsiteSubscription(http.Controller): kwargs.get("company_register_number")) subscription_id = sub_req_obj.sudo().create_comp_sub_req(values) else: - no_registre = re.sub('[^0-9a-zA-Z]+', '', - kwargs.get("no_registre")) - values["no_registre"] = no_registre - if 'no_registre' in required_fields: - no_registre = re.sub('[^0-9a-zA-Z]+', '', - kwargs.get("no_registre")) - values["no_registre"] = no_registre - subscription_id = sub_req_obj.sudo().create(values) if subscription_id: diff --git a/easy_my_coop_website/views/subscription_template.xml b/easy_my_coop_website/views/subscription_template.xml index 5acfab4..76acb51 100644 --- a/easy_my_coop_website/views/subscription_template.xml +++ b/easy_my_coop_website/views/subscription_template.xml @@ -70,9 +70,9 @@ -
+
@@ -80,27 +80,43 @@
- + +
+
+ +
+ +
+
- +
- +
- @@ -111,27 +127,24 @@
- -
-
- -
- -
- +
- +
- @@ -144,7 +157,9 @@
- +
@@ -154,11 +169,15 @@
- + - +
@@ -167,7 +186,7 @@
- @@ -178,7 +197,8 @@
- +
@@ -239,7 +259,36 @@

- + +
+ +
+
+ +
+
+
+ +
+ +
+
+ +
+
+
@@ -297,20 +346,26 @@
- +
- +
- @@ -324,11 +379,20 @@
- +
+ +
+ +
+
- +
@@ -342,7 +406,9 @@
- +
@@ -352,11 +418,15 @@
- + - +
@@ -366,7 +436,8 @@
- @@ -383,20 +454,25 @@
- +
- +
- @@ -407,42 +483,44 @@
- +
- +
- +
-
- -
- -
-
-
- +
- @@ -501,11 +579,41 @@

- + +
+ +
+
+ +
+
+
+ +
+ +
+
+ +
+
+
+
-

+

diff --git a/easy_my_coop_website_portal/views/easy_my_coop_website_portal_templates.xml b/easy_my_coop_website_portal/views/easy_my_coop_website_portal_templates.xml index 63d4431..02fd5bf 100644 --- a/easy_my_coop_website_portal/views/easy_my_coop_website_portal_templates.xml +++ b/easy_my_coop_website_portal/views/easy_my_coop_website_portal_templates.xml @@ -73,10 +73,6 @@

-

- - -