From 9d847ec1c07f59ec3a3ee49d6bef9be4cfd929b1 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 28 Oct 2022 09:24:48 +0200 Subject: [PATCH] divers --- controllers/booking.py | 8 ++- controllers/kalachakra.py | 26 ++++---- models/donation.py | 83 +++++++++++++++++--------- models/membership.py | 25 +++++++- models/payment_transaction.py | 10 +++- static/js/booking.js | 30 ++++++++-- views/booking_website_registration.xml | 5 +- views/donation.xml | 7 ++- views/individual_booking_event.xml | 2 +- views/mediatheque.xml | 8 +-- views/membership.xml | 4 ++ 11 files changed, 151 insertions(+), 57 deletions(-) diff --git a/controllers/booking.py b/controllers/booking.py index 74c9043..ae1aa84 100755 --- a/controllers/booking.py +++ b/controllers/booking.py @@ -68,20 +68,26 @@ class booking(WebsiteEventController,AuthSignupHome): data['id_opt_reduction1200']=False data['id_opt_individual_room']=False + data['i_opt_reduction1200']=False + data['i_opt_individual_room']=False + i=1 for opt in event.booking_option_ids: if opt.booking_option_id.individual_room: data['id_opt_individual_room']=opt.booking_option_id.id + data['i_opt_individual_room']=i if "1200" in opt.booking_option_id.name: data['id_opt_reduction1200']=opt.booking_option_id.id + data['i_opt_reduction1200']=i if opt.booking_option_id.membership_product: if partner.member_status!='member' and partner.member_status!='super member':data['options'].append(opt) + i=i-1 else: data['options'].append(opt) - + i=i+1 #questions diff --git a/controllers/kalachakra.py b/controllers/kalachakra.py index 1c4b6b2..4839af8 100755 --- a/controllers/kalachakra.py +++ b/controllers/kalachakra.py @@ -1035,7 +1035,7 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing): vals['payment_token_id'] = int(token) transaction = donation.sudo()._create_payment_transaction(vals) - + donation.transaction_id=transaction.id # store the new transaction into the transaction list and if there's an old one, we remove it # until the day the ecommerce supports multiple orders at the same time last_tx_id = request.session.get('__website_sale_last_tx_id') @@ -1069,7 +1069,7 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing): vals['payment_token_id'] = int(token) transaction = membership.sudo()._create_payment_transaction(vals) - + membership.transaction_id=transaction.id # store the new transaction into the transaction list and if there's an old one, we remove it # until the day the ecommerce supports multiple orders at the same time last_tx_id = request.session.get('__website_sale_last_tx_id') @@ -1130,20 +1130,20 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing): """ if request.session['kalachakra_transaction'] in ['donation']: - donation_id=int(request.session['donation_id']) - #validation du don car la tranasction est ok - donation=request.env['donation.donation'].sudo().search([('id','=',donation_id)]) - donation.state='done' - request.session['donation_id']=None - _logger.error("donor="+donation.partner_id.name+" donation_id="+str(donation_id)+" state="+donation.state) + # donation_id=int(request.session['donation_id']) + # #validation du don car la tranasction est ok + # donation=request.env['donation.donation'].sudo().search([('id','=',donation_id)]) + # donation.state='done' + request.session['donation_id']=None + #_logger.error("donor="+donation.partner_id.name+" donation_id="+str(donation_id)+" state="+donation.state) if request.session['kalachakra_transaction'] in ['membership']: - membership_id=int(request.session['membership_id']) - #validation du don car la tranasction est ok - membership=request.env['kalachakra.membership'].sudo().search([('id','=',membership_id)]) - membership.state='done' + # membership_id=int(request.session['membership_id']) + # #validation du don car la tranasction est ok + # membership=request.env['kalachakra.membership'].sudo().search([('id','=',membership_id)]) + # membership.state='done' request.session['membership_id']=None - _logger.error("membership partner="+membership.partner_id.name+" state="+membership.state) + # _logger.error("membership partner="+membership.partner_id.name+" state="+membership.state) transaction_id=int(request.session['__website_sale_last_tx_id'] ) tx = request.env['payment.transaction'].sudo().browse(transaction_id) diff --git a/models/donation.py b/models/donation.py index bc06622..31a3fd1 100755 --- a/models/donation.py +++ b/models/donation.py @@ -8,31 +8,28 @@ import base64 import logging _logger = logging.getLogger(__name__) -class PaymentTransaction(models.Model): - _inherit = 'payment.transaction' - - donation_ids = fields.Many2many('donation.donation', 'donation_transaction_rel', 'transaction_id', 'donation_id', - string='Donations', copy=False, readonly=True) - - def render_donation_button(self, donation, submit_txt=None, render_values=None): - values = { - 'partner_id': donation.partner_id.id, - 'type': self.type, - } - if render_values: - values.update(render_values) - # Not very elegant to do that here but no choice regarding the design. - self._log_payment_transaction_sent() - return self.acquirer_id.with_context(submit_class='btn btn-primary', submit_txt=submit_txt or _('Pay Now')).sudo().render( - self.reference, - donation.amount_total, - donation.currency_id.id, - values=values, - ) - # @api.onchange('state') - # def _onchange_state('state'): - # """Disable dashboard display for test acquirer journal.""" - # self.journal_id.update({'show_on_dashboard': self.state == 'enabled'}) +# class PaymentTransaction(models.Model): +# _inherit = 'payment.transaction' + +# donation_ids = fields.Many2many('donation.donation', 'donation_transaction_rel', 'transaction_id', 'donation_id', +# string='Donations', copy=False, readonly=True) + +# def render_donation_button(self, donation, submit_txt=None, render_values=None): +# values = { +# 'partner_id': donation.partner_id.id, +# 'type': self.type, +# } +# if render_values: +# values.update(render_values) +# # Not very elegant to do that here but no choice regarding the design. +# self._log_payment_transaction_sent() +# return self.acquirer_id.with_context(submit_class='btn btn-primary', submit_txt=submit_txt or _('Pay Now')).sudo().render( +# self.reference, +# donation.amount_total, +# donation.currency_id.id, +# values=values, +# ) + @@ -40,9 +37,25 @@ class DonationDonation(models.Model): _inherit = 'donation.donation' invoice_id=fields.Many2one('account.move','invoice') + transaction_id=fields.Many2one('payment.transaction','payment transaction') state_done=fields.Boolean(compute='_compute_donation_state',store=True) - @api.depends('invoice_id.payment_state') + # @api.depends('transaction_id.state') + # def transaction_state(self): + # _logger.error("onchange_transaction_state") + # if self.state=='done': + # if self.donation_ids: + # for donation_id in donation_ids: + # _logger.error("donation_id="+str(donation_id)) + # donation=request.env['donation.donation'].sudo().search([('id','=',int(donation_id))]) + # if donation:donation.state='done' + + # if self.membership_ids: + # for membership_id in membership_ids: + # membership=request.env['kalachakra.membership'].sudo().search([('id','=',int(membership_id))]) + # if membership:membership.state='done' + + @api.depends('invoice_id.payment_state','transaction_id.state') def _compute_donation_state(self): for d in self: if d.invoice_id: @@ -53,7 +66,23 @@ class DonationDonation(models.Model): else: d.state='draft' d.state_done=False - + if d.transaction_id: + if d.transaction_id.state=='done': + d.state='done' + d.state_done=True + d.email_confirmation() + + + def email_confirmation(self): + + mail_template = self.env['mail.template'].search([('name','=','confirmation_donation')]) + + mail_template.email_to = self.partner_id.email + + #mail_template.with_context({'end_date':self.end_date}).send_mail(self.id,False) + mail_template.send_mail(self.id,False) + + return True def bulk_remove_draft_donation(self): payment_transaction=self.env['payment.transaction'].search([('state','=','draft')]) diff --git a/models/membership.py b/models/membership.py index e864e1f..d1d141a 100755 --- a/models/membership.py +++ b/models/membership.py @@ -28,8 +28,11 @@ 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') + transaction_id=fields.Many2one('payment.transaction','payment transaction') 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: @@ -79,7 +82,7 @@ class kalachakra_membership(models.Model): - @api.depends('invoice_id.payment_state') + @api.depends('invoice_id.payment_state','transaction_id.state') def _compute_membership_state(self): for m in self: if m.invoice_id: @@ -90,8 +93,14 @@ class kalachakra_membership(models.Model): else: m.payment_state='not paid' m.state='draft' + + + if m.transaction_id: + if m.transaction_id.state=='done': + m.payment_state='paid' + m.state='done' m.update_membership() - + m.email_confirmation() def _inverse_membership_state(self): for m in self: @@ -187,6 +196,18 @@ class kalachakra_membership(models.Model): return True + def email_confirmation(self): + + mail_template = self.env['mail.template'].search([('name','=','confirmation_membership')]) + + mail_template.email_to = self.partner_id.email + + #mail_template.with_context({'end_date':self.end_date}).send_mail(self.id,False) + mail_template.send_mail(self.id,False) + + return True + + def write(self,vals): res=super(kalachakra_membership, self).write(vals) diff --git a/models/payment_transaction.py b/models/payment_transaction.py index 96771ef..720c1c7 100755 --- a/models/payment_transaction.py +++ b/models/payment_transaction.py @@ -10,7 +10,8 @@ from odoo.addons.payment_systempay.helpers import constants, tools from odoo.tools import float_round from odoo.tools.float_utils import float_compare from odoo.addons.payment_systempay.controllers.main import SystempayController - +import logging +_logger = logging.getLogger(__name__) try: @@ -118,6 +119,8 @@ class PaymentTransaction(models.Model): return None + + class AcquirerSystempay(models.Model): _inherit = 'payment.acquirer' @@ -229,4 +232,7 @@ class AcquirerSystempay(models.Model): systempay_tx_values[key] = tx_values[key].encode('utf-8') systempay_tx_values['systempay_signature'] = self._systempay_generate_sign(self, tx_values) - return systempay_tx_values \ No newline at end of file + return systempay_tx_values + + + \ No newline at end of file diff --git a/static/js/booking.js b/static/js/booking.js index 34c9a72..1606bbc 100755 --- a/static/js/booking.js +++ b/static/js/booking.js @@ -138,8 +138,7 @@ odoo.define('booking.main', function (require) { function compute_individual_booking_prices_without_option(days,start_day,end_day) { - mod_days=days%7 - let coef_price=1+mod_days/7 + var start_date = Date.parse($("#start_day").val()) @@ -159,7 +158,8 @@ odoo.define('booking.main', function (require) { } if (days<14 && days>6) { - + mod_days=days%7 + let coef_price=1+mod_days/7 price_not_member=Math.round(parseInt($("#individual_week_price").val(),10)*coef_price) price_member=Math.round(parseInt($("#individual_member_week_price").val(),10)*coef_price) @@ -172,6 +172,9 @@ odoo.define('booking.main', function (require) { } if (days<21 && days>13) { + mod_days=days%14 + let coef_price=1+mod_days/14 + price_not_member=Math.round(parseInt($("#individual_2weeks_price").val(),10)*coef_price) price_member=Math.round(parseInt($("#individual_member_2weeks_price").val(),10)*coef_price) price_super_member=Math.round(parseInt($("#individual_super_member_2weeks_price").val(),10)*coef_price) @@ -184,7 +187,9 @@ odoo.define('booking.main', function (require) { if (days>20 && end_date + + + @@ -206,7 +209,7 @@ - + diff --git a/views/donation.xml b/views/donation.xml index 503aa13..2088876 100755 --- a/views/donation.xml +++ b/views/donation.xml @@ -5,9 +5,14 @@ donation.donation - + +