diff --git a/wizard/scop_cotisation_cg_wizard.py b/wizard/scop_cotisation_cg_wizard.py index bef19b43687a4e8f58f35279ac9ae9781a11efbb..1e51575514a404bf848a6c82cc78706341a0e80b 100644 --- a/wizard/scop_cotisation_cg_wizard.py +++ b/wizard/scop_cotisation_cg_wizard.py @@ -12,12 +12,24 @@ class ScopCotisationWizard(models.TransientModel): _name = 'scop.cotisation.cg.wizard' _description = "Wizard: Génération des cotisations nouveaux adhérents" + @api.model + def _default_cotisation_cg_id(self): + return self.env.context.get("active_id") + + @api.model + def _default_year(self): + return self.env["scop.cotisation.cg"].browse(self.env.context.get("active_id")).year + year = fields.Char( string='Année', - required=True) + required=True, + default=_default_year + ) cotisation_cg_id = fields.Many2one( comodel_name='scop.cotisation.cg', - string='Base de cotisation') + string='Base de cotisation', + default=_default_cotisation_cg_id + ) nb_quarter = fields.Selection( string='Nombre de trimestres de cotisation', selection=[(1, '1'), @@ -36,24 +48,32 @@ class ScopCotisationWizard(models.TransientModel): comodel_name='res.partner', string='Coopératives' ) - date = fields.Date('Date de cotisation', default=fields.Date.today()) + date = fields.Date('Date du bordereau', default=fields.Date.today()) + date_start = fields.Date('Adhésion après le') + date_limit = fields.Date('Adhésion avant le') # ------------------------------------------------------ # Button function # ------------------------------------------------------ - @api.onchange('type') + @api.onchange("type", "date_start", "date_limit") def onchange_domain_partner_ids(self): if self.type == 'selected': - id_cotisation_cg = self.env.context['id_cotisation_cg'] - invoiced_members = self.cotisation_cg_id.browse( - id_cotisation_cg).invoice_ids.mapped('partner_id') - - res = {'domain': { - 'partner_ids': [ - ('is_company', '=', True), - ('type', '!=', 'facility'), - ('id', 'not in', invoiced_members.mapped('id'))] - }} + invoiced_members = self.cotisation_cg_id.bordereau_ids.mapped('partner_id') + domain = [ + ("is_cooperative", "=", True), + ("type", "!=", "facility"), + ("id", "not in", invoiced_members.mapped("id")), + ] + if self.date_limit: + domain.append(("member_start", "<=", self.date_limit)) + if self.date_start: + domain.append(("member_start", ">=", self.date_start)) + + res = { + "domain": { + "partner_ids": domain + } + } return res # ------------------------------------------------------ @@ -68,10 +88,18 @@ class ScopCotisationWizard(models.TransientModel): if self.type == 'selected': members = self.partner_ids else: - members = self.cotisation_cg_id.get_new_members(self.date) - - invoiced_members = self.cotisation_cg_id. \ - invoice_ids.mapped('partner_id') + domain = [ + ("is_cooperative", "=", True), + ("membership_status", "=", "member"), + ("type", "!=", "facility"), + ] + if self.date_limit: + domain.append(("member_start", "<=", self.date_limit)) + if self.date_start: + domain.append(("member_start", ">=", self.date_start)) + members = self.env["res.partner"].search(domain) + + invoiced_members = self.cotisation_cg_id.bordereau_ids.mapped('partner_id') members_to_invoice = members - invoiced_members diff --git a/wizard/scop_cotisation_cg_wizard.xml b/wizard/scop_cotisation_cg_wizard.xml index 5429634653ea2769d705fc8b053977480f1ed1fd..8ba3117cf2600c108324128f8edf39e2737b5f8c 100644 --- a/wizard/scop_cotisation_cg_wizard.xml +++ b/wizard/scop_cotisation_cg_wizard.xml @@ -14,9 +14,27 @@ <field name="year" required="1" invisible="1"/> <field name="date" required="1"/> <field name="nb_quarter" required="1"/> + <field name="date_start"/> + <field name="date_limit"/> + <separator /> <field name="type" widget="radio"/> - <field name="partner_ids" attrs="{'invisible': [('type', '=', 'all')]}" widget="many2many_tags" options="{'no_create': True, 'no_open': True}"/> </group> + <label for="partner_ids" attrs="{'invisible': [('type', '=', 'all')]}" /> + <field + name="partner_ids" + attrs="{'invisible': [('type', '=', 'all')]}" + options="{'no_create': True, 'no_open': True}" + widget="many2many" + mode="tree" + > + <tree> + <field name="member_number" string="N° Adhérent" /> + <field name="name"/> + <field name="ur_id"/> + <field name="member_start"/> + <field name="member_start_stat"/> + </tree> + </field> <footer> <button name="cotiz_generate_new_adherents" type="object" string="Générer les cotisations" class="oe_highlight"/>