Sélectionner une révision Git
operation_services.py
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