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)
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


+ 1
- 1
models/__init__.py View File

@ -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

+ 35
- 1
models/donation.py View File

@ -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

+ 72
- 18
models/membership.py View File

@ -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()

Loading…
Cancel
Save