diff --git a/controllers/kalachakra.py b/controllers/kalachakra.py index a9a2253..7fbe5b0 100644 --- a/controllers/kalachakra.py +++ b/controllers/kalachakra.py @@ -28,10 +28,15 @@ class Kalachakra_PortalAccount(CustomerPortal): @http.route(['/my/invoices', '/my/invoices/page/'], type='http', auth="user", website=True) def kalachakra_portal_my_invoices(self, page=1, date_begin=None, date_end=None, sortby=None, filterby=None, **kw): values = self._prepare_portal_layout_values() - #KALACHAKRA : on affiche que les factures de l'utilisateur ( idem pour les admins) - AccountInvoice = request.env['account.move'].search([('user_id','=',int(request.env.context.get('uid')))]) + user_id=int(request.env.context.get('uid')) + user=request.env['res.users'].search([('id','=',user_id)]) + #KALACHAKRA : on affiche que les factures de l'utilisateur liées à une retraite + booking_registrations=request.env['event.registration'].sudo().search([('booking_event','=',True),('partner_id','=',int(user.partner_id))]) + invoice_ids=booking_registrations.invoice_id.ids + + AccountInvoice = request.env['account.move'].search([('id','in',invoice_ids)]) - domain = [('move_type', 'in', ('out_invoice', 'out_refund', 'in_invoice', 'in_refund', 'out_receipt', 'in_receipt'))] + domain = [('id','in',invoice_ids),('move_type', 'in', ('out_invoice', 'out_refund', 'in_invoice', 'in_refund', 'out_receipt', 'in_receipt'))] searchbar_sortings = { 'date': {'label': _('Date'), 'order': 'invoice_date desc'}, @@ -90,7 +95,12 @@ class Kalachakra_PortalAccount(CustomerPortal): values = super()._prepare_home_portal_values(counters) if 'invoice_count' in counters: #KALACHAKRA : on compte que les factures de l'utilisateur ( idem pour les admins) - invoice_count = request.env['account.move'].search_count([('user_id','=',int(request.env.context.get('uid'))), + user_id=int(request.env.context.get('uid')) + user=request.env['res.users'].search([('id','=',user_id)]) + booking_registrations=request.env['event.registration'].sudo().search([('booking_event','=',True),('partner_id','=',int(user.partner_id))]) + invoice_ids=booking_registrations.invoice_id.ids + + invoice_count = request.env['account.move'].search_count([('id','in',invoice_ids), ('move_type', 'in', ('out_invoice', 'in_invoice', 'out_refund', 'in_refund', 'out_receipt', 'in_receipt')), ]) if request.env['account.move'].check_access_rights('read', raise_exception=False) else 0 values['invoice_count'] = invoice_count diff --git a/models/__init__.py b/models/__init__.py index c2e7429..0cc810d 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -19,7 +19,7 @@ from . import booking_donation #from . import booking_sale_order from . import event_media_link from . import mailing_list -#from . import account +#from . import account_move from . import res_users from . import membership_import diff --git a/models/donation.py b/models/donation.py index 2acce33..c76cb45 100644 --- a/models/donation.py +++ b/models/donation.py @@ -1,10 +1,12 @@ from odoo import models, fields, api,_ from odoo.exceptions import UserError, ValidationError,Warning from psycopg2 import sql, DatabaseError -from datetime import datetime +from datetime import date,datetime from werkzeug import utils import base64 +import logging +_logger = logging.getLogger(__name__) class PaymentTransaction(models.Model): _inherit = 'payment.transaction' @@ -32,6 +34,36 @@ class DonationDonation(models.Model): _inherit = 'donation.donation' + def remove_draft_donation(self): + payment_transaction=self.env['payment.transaction'].search([('state','=','draft')]) + if payment_transaction: + for p in payment_transaction: + if p.donation_ids: + for d in p.donation_ids: + #on ne supprime que les dons brouillons + if d.state=='draft': + today=date.today() + b_date = date(d.create_date.year,d.create_date.month, d.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['donation.donation'].search([('id','=',int(d.id))]).unlink() + + #on supprime également les dons brouillon de plus de 15 jours non lié à une retraite, donc sans facture + donation=self.env['donation.donation'].search([('state','=','draft')]) + if donation: + for d in donation: + if not d.invoice_id: + today=date.today() + b_date = date(d.create_date.year,d.create_date.month, d.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['donation.donation'].search([('id','=',int(d.id))]).unlink() + + def _get_payment_type(self, tokenize=False): self.ensure_one() @@ -104,3 +136,5 @@ class DonationDonation(models.Model): transaction.s2s_do_transaction() return transaction + + diff --git a/models/membership.py b/models/membership.py index 73076ae..47e65dc 100644 --- a/models/membership.py +++ b/models/membership.py @@ -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() + +