Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • 488ec2357b70baee52d89a255c2246073bbbfb96
  • 12.0-evo-202003 par défaut
  • 14-RV-20250324
  • 14-RV-20240830
  • 14-RV-20231222
  • 12-RV-Bug_ecrasement_date_radiation
  • 12-RV-revision-staff
  • 12-RV-copadev
  • 12-RV-Correctif-open-instagram
  • 12-RV-Tree-Coop-Ajout-effectif
  • 12.0-RV-Instagram
  • 12.0-RV-segment_visibility
  • 12.0 protégée
  • 12.0-RV-Abonnements
14 résultats

scop_membership_period_wizard.py

Blame
  • Bifurcation depuis Le Filament / Confédération Générale des SCOP / cgscop_partner
    Le projet source a une visibilité limitée.
    res_partner.py 2,65 Kio
    # © 2022 Le Filament (<http://www.le-filament.com>)
    # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
    
    from datetime import date
    from dateutil.relativedelta import relativedelta
    
    from odoo import models, fields, api
    
    
    class ScopPartner(models.Model):
        _inherit = "res.partner"
    
        is_a_jour_bool = fields.Boolean(
            'A jour de ses cotisations', compute='_compute_is_a_jour_bool')
    
        # ------------------------------------------------------
        # Compute
        # ------------------------------------------------------
        @api.multi
        def _compute_is_a_jour_bool(self):
            today = fields.Date.today()
            quarter_start = date(today.year, 3 * ((today.month - 1) // 3 + 1) - 2, 1)
            end_date = quarter_start - relativedelta(months=3, days=1)
            start_date = quarter_start - relativedelta(months=27)
            for r in self:
                if r.type == 'facility' and r.parent_id:
                    r.is_a_jour_bool = r.parent_id.is_a_jour_bool
                else:
                    query_a_jour = ("""
                        SELECT 
                            CASE
                                WHEN sum(q.amount_residual) > 0 THEN 0
                                ELSE 1
                            END AS a_jour
                        FROM
                        (
                            (
                            SELECT
                                aml.amount_residual
                            FROM account_move_line aml
                            WHERE aml.partner_id = %s
                            AND aml.account_id = 8871
                            AND aml.journal_id = 141
                            AND aml.debit > 0
                            AND aml.date_maturity >= '%s' AND aml.date_maturity <= '%s'
                            AND aml.invoice_id IN
                                (SELECT id 
                                FROM account_invoice 
                                WHERE is_contribution IS TRUE)
                            )
                        UNION ALL (
                            SELECT r.amount_due AS amount_residual
                            FROM scop_contribution_riga r
                            WHERE r.partner_id = %s
                            AND r.type_contribution_id = %s
                            AND r.date_maturity >= '%s' AND r.date_maturity <= '%s'
                            )
                        ) q
                    """ % (
                        r.id, start_date, end_date,
                        r.id,
                        self.env.ref('cgscop_partner.riga_14397').id,
                        start_date, end_date))
    
                    self.env.cr.execute(query_a_jour)
                    is_a_jour_bool = self.env.cr.fetchall()[0][0]
                    r.is_a_jour_bool = True if is_a_jour_bool == 1 else False