Browse Source

espace donateur: n afficher que les factures de retraites

suppression des dons et adhesion brouillon
dev-rcn
root 3 years ago
parent
commit
68b3bd96aa
4 changed files with 122 additions and 24 deletions
  1. +14
    -4
      controllers/kalachakra.py
  2. +1
    -1
      models/__init__.py
  3. +35
    -1
      models/donation.py
  4. +72
    -18
      models/membership.py

+ 14
- 4
controllers/kalachakra.py View File

@ -28,10 +28,15 @@ class Kalachakra_PortalAccount(CustomerPortal):
@http.route(['/my/invoices', '/my/invoices/page/<int:page>'], type='http', auth="user", website=True) @http.route(['/my/invoices', '/my/invoices/page/<int: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): 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() 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 = { searchbar_sortings = {
'date': {'label': _('Date'), 'order': 'invoice_date desc'}, 'date': {'label': _('Date'), 'order': 'invoice_date desc'},
@ -90,7 +95,12 @@ class Kalachakra_PortalAccount(CustomerPortal):
values = super()._prepare_home_portal_values(counters) values = super()._prepare_home_portal_values(counters)
if 'invoice_count' in counters: if 'invoice_count' in counters:
#KALACHAKRA : on compte que les factures de l'utilisateur ( idem pour les admins) #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')), ('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 ]) if request.env['account.move'].check_access_rights('read', raise_exception=False) else 0
values['invoice_count'] = invoice_count values['invoice_count'] = invoice_count


+ 1
- 1
models/__init__.py View File

@ -19,7 +19,7 @@ from . import booking_donation
#from . import booking_sale_order #from . import booking_sale_order
from . import event_media_link from . import event_media_link
from . import mailing_list from . import mailing_list
#from . import account
#from . import account_move
from . import res_users from . import res_users
from . import membership_import from . import membership_import

+ 35
- 1
models/donation.py View File

@ -1,10 +1,12 @@
from odoo import models, fields, api,_ from odoo import models, fields, api,_
from odoo.exceptions import UserError, ValidationError,Warning from odoo.exceptions import UserError, ValidationError,Warning
from psycopg2 import sql, DatabaseError from psycopg2 import sql, DatabaseError
from datetime import datetime
from datetime import date,datetime
from werkzeug import utils from werkzeug import utils
import base64 import base64
import logging
_logger = logging.getLogger(__name__)
class PaymentTransaction(models.Model): class PaymentTransaction(models.Model):
_inherit = 'payment.transaction' _inherit = 'payment.transaction'
@ -32,6 +34,36 @@ class DonationDonation(models.Model):
_inherit = 'donation.donation' _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): def _get_payment_type(self, tokenize=False):
self.ensure_one() self.ensure_one()
@ -104,3 +136,5 @@ class DonationDonation(models.Model):
transaction.s2s_do_transaction() transaction.s2s_do_transaction()
return transaction return transaction

+ 72
- 18
models/membership.py View File

@ -1,6 +1,8 @@
from odoo import models, fields, api from odoo import models, fields, api
from dateutil.relativedelta import relativedelta 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): class kalachakra_membership(models.Model):
_name = 'kalachakra.membership' _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)]") 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()) start_date=fields.Date('start date',required=True,default=lambda self: fields.Date.today())
invoice_id=fields.Many2one('account.move','invoice') 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') @api.onchange('product_id')
def onchange_product_id(self): def onchange_product_id(self):
if self.product_id: if self.product_id:
@ -183,10 +193,54 @@ class kalachakra_membership(models.Model):
def update_amount(self): def update_amount(self):
members=self.env['kalachakra.membership'].search([]) members=self.env['kalachakra.membership'].search([])
for m in members: for m in members:
m.amount=45
m.amount=45
m.state='done'
def unlink(self): def unlink(self):
for rec in self: for rec in self:
if rec.partner_id.super_member==False: if rec.partner_id.super_member==False:
rec.partner_id.member_status='not member' rec.partner_id.member_status='not member'
super(kalachakra_membership, rec).unlink() 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()

Loading…
Cancel
Save