|
|
@ -1,6 +1,8 @@ |
|
|
|
from odoo import models, fields, api |
|
|
|
from dateutil.relativedelta import relativedelta |
|
|
|
from datetime import datetime,timedelta |
|
|
|
from datetime import date,datetime,timedelta |
|
|
|
import logging |
|
|
|
_logger = logging.getLogger(__name__) |
|
|
|
|
|
|
|
class kalachakra_membership(models.Model): |
|
|
|
_name = 'kalachakra.membership' |
|
|
@ -26,23 +28,23 @@ class kalachakra_membership(models.Model): |
|
|
|
product_id=fields.Many2one('product.product',required=True,string='membership product',default=_default_product_id,domain="[('membership_product','=',True)]") |
|
|
|
start_date=fields.Date('start date',required=True,default=lambda self: fields.Date.today()) |
|
|
|
invoice_id=fields.Many2one('account.move','invoice') |
|
|
|
payment_state=fields.Selection(string='payment_state',selection=[('paid', 'paid'), ('not paid', 'not paid')],compute='_compute_payment_state',store=True) |
|
|
|
|
|
|
|
@api.depends('state', 'invoice_id') |
|
|
|
def _compute_payment_state(self): |
|
|
|
for rec in self: |
|
|
|
rec.payment_state='not paid' |
|
|
|
#adhesion via page d'ahésion |
|
|
|
if rec.state=='done':rec.payment_state='paid' |
|
|
|
if rec.state=='draft':rec.payment_state='not paid' |
|
|
|
#adhésion via isncription à l'événement |
|
|
|
if rec.invoice_id: |
|
|
|
payment_state=fields.Selection(string='payment_state',selection=[('paid', 'paid'), ('not paid', 'not paid')]) |
|
|
|
|
|
|
|
# @api.depends('state', 'invoice_id') |
|
|
|
# def _compute_payment_state(self): |
|
|
|
# for rec in self: |
|
|
|
# rec.payment_state='not paid' |
|
|
|
# #adhesion via page d'ahésion |
|
|
|
# if rec.state=='done':rec.payment_state='paid' |
|
|
|
# if rec.state=='draft':rec.payment_state='not paid' |
|
|
|
# #adhésion via isncription à l'événement |
|
|
|
# if rec.invoice_id: |
|
|
|
|
|
|
|
if rec.invoice_id.payment_state=='paid': |
|
|
|
#raise Warning(rec.invoice_id.payment_state) |
|
|
|
rec.payment_state='paid' |
|
|
|
rec.state='done' |
|
|
|
else:rec.payment_state='not paid' |
|
|
|
# if rec.invoice_id.payment_state=='paid': |
|
|
|
# #raise Warning(rec.invoice_id.payment_state) |
|
|
|
# rec.payment_state='paid' |
|
|
|
# rec.state='done' |
|
|
|
# else:rec.payment_state='not paid' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -75,6 +77,14 @@ class kalachakra_membership(models.Model): |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@api.onchange('product_id') |
|
|
|
def onchange_product_id(self): |
|
|
|
if self.product_id: |
|
|
|
self.amount = self.product_id.list_price |
|
|
|
|
|
|
|
@api.onchange('product_id') |
|
|
|
def onchange_product_id(self): |
|
|
|
if self.product_id: |
|
|
@ -183,10 +193,54 @@ class kalachakra_membership(models.Model): |
|
|
|
def update_amount(self): |
|
|
|
members=self.env['kalachakra.membership'].search([]) |
|
|
|
for m in members: |
|
|
|
m.amount=45 |
|
|
|
m.amount=45 |
|
|
|
m.state='done' |
|
|
|
|
|
|
|
def unlink(self): |
|
|
|
for rec in self: |
|
|
|
if rec.partner_id.super_member==False: |
|
|
|
rec.partner_id.member_status='not member' |
|
|
|
super(kalachakra_membership, rec).unlink() |
|
|
|
|
|
|
|
def updatepayment_state(self): |
|
|
|
memberships=self.env['kalachakra.membership'].search([]) |
|
|
|
for m in memberships: |
|
|
|
|
|
|
|
if m.invoice_id.payment_state=='paid': |
|
|
|
|
|
|
|
m.payment_state='paid' |
|
|
|
m.state='done' |
|
|
|
else: |
|
|
|
m.payment_state='not paid' |
|
|
|
m.state='draft' |
|
|
|
|
|
|
|
def remove_draft_membership(self): |
|
|
|
payment_transaction=self.env['payment.transaction'].search([('state','=','draft')]) |
|
|
|
if payment_transaction: |
|
|
|
for p in payment_transaction: |
|
|
|
if p.membership_ids: |
|
|
|
for m in p.membership_ids: |
|
|
|
#on ne supprime que les adhesion brouillons |
|
|
|
if m.state=='draft': |
|
|
|
today=date.today() |
|
|
|
b_date = date(m.create_date.year,m.create_date.month, m.create_date.day) |
|
|
|
#b_date = date(2022,8, 12) |
|
|
|
e_date = date(today.year,today.month, today.day) |
|
|
|
diff=e_date-b_date |
|
|
|
|
|
|
|
_logger.error("errK2-diff days="+str(diff.days)) |
|
|
|
if diff.days>15:self.env['kalachakra.membership'].search([('id','=',int(d.id))]).unlink() |
|
|
|
|
|
|
|
#on supprime également les adhésions brouillon de plus de 15 jours non lié à une retraite, donc sans facture |
|
|
|
members=self.env['kalachakra.membership'].search([('state','=','draft')]) |
|
|
|
if members: |
|
|
|
for m in members: |
|
|
|
if not m.invoice_id: |
|
|
|
today=date.today() |
|
|
|
b_date = date(m.create_date.year,m.create_date.month, m.create_date.day) |
|
|
|
e_date = date(today.year,today.month, today.day) |
|
|
|
diff=e_date-b_date |
|
|
|
_logger.error("errK2-diff days m="+str(diff.days)) |
|
|
|
if diff.days>15:self.env['kalachakra.membership'].search([('id','=',int(m.id))]).unlink() |
|
|
|
|
|
|
|
|