Browse Source

divers

dev-rcn
root 3 years ago
parent
commit
9d847ec1c0
11 changed files with 151 additions and 57 deletions
  1. +7
    -1
      controllers/booking.py
  2. +13
    -13
      controllers/kalachakra.py
  3. +56
    -27
      models/donation.py
  4. +23
    -2
      models/membership.py
  5. +8
    -2
      models/payment_transaction.py
  6. +25
    -5
      static/js/booking.js
  7. +4
    -1
      views/booking_website_registration.xml
  8. +6
    -1
      views/donation.xml
  9. +1
    -1
      views/individual_booking_event.xml
  10. +4
    -4
      views/mediatheque.xml
  11. +4
    -0
      views/membership.xml

+ 7
- 1
controllers/booking.py View File

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


+ 13
- 13
controllers/kalachakra.py View File

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


+ 56
- 27
models/donation.py View File

@ -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')])


+ 23
- 2
models/membership.py View File

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


+ 8
- 2
models/payment_transaction.py View File

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

+ 25
- 5
static/js/booking.js View File

@ -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<start_date_p1month)
{
mod_days=days%21
let coef_price=1+mod_days/21
price_not_member=Math.round(parseInt($("#individual_3weeks_price").val(),10)*coef_price)
price_member=Math.round(parseInt($("#individual_member_3weeks_price").val(),10)*coef_price)
price_super_member=Math.round(parseInt($("#individual_super_member_3weeks_price").val(),10)*coef_price)
@ -396,7 +401,22 @@ odoo.define('booking.main', function (require) {
//si coche adhésion alors le statut devient membre
if (this.value==$("#id_opt_individual_room").val() && this.checked)
{
alert('toto')
//console.log('fff'+"#o["+$("#i_opt_reduction1200").val()+"]")
//console.log('ggg'+$("#o1").val())
if ($("#o"+$("#i_opt_reduction1200").val()).prop('checked')== true)
{
alert('Selection non autorisée')
this.checked=false
}
}
if (this.value==$("#id_opt_reduction1200").val() && this.checked)
{
if ($("#o"+$("#i_opt_individual_room").val()).prop('checked')== true)
{
alert('Selection non autorisée')
this.checked=false
}
}
if(this.value==$("#membership_product").val() && this.checked)
{


+ 4
- 1
views/booking_website_registration.xml View File

@ -191,6 +191,9 @@
<input type="hidden" id="id_opt_individual_room" t-att-value="int(id_opt_individual_room)"/>
<input type="hidden" id="id_opt_reduction1200" t-att-value="int(id_opt_reduction1200)"/>
<input type="hidden" id="i_opt_individual_room" t-att-value="int(i_opt_individual_room)"/>
<input type="hidden" id="i_opt_reduction1200" t-att-value="int(i_opt_reduction1200)"/>
<t t-if="options">
<table class='table' width='50%'>
@ -206,7 +209,7 @@
<t t-set="i" t-value="1"/>
<t t-foreach="options" t-as="option">
<tr>
<td><input type="checkbox" t-att-name="'o['+str(i)+']'" t-att-value="int(option.booking_option_id)" t-att-id="'o['+str(i)+']'" /></td>
<td><input type="checkbox" t-att-name="'o['+str(i)+']'" t-att-value="int(option.booking_option_id)" t-att-id="'o'+str(i)" /></td>
<td><span t-field="option.name"/></td>
<td><span t-esc="str(int(option.booking_option_price))+' €'"/></td>
<td><span t-esc="str(int(option.booking_option_member_price))+' €'"/></td>


+ 6
- 1
views/donation.xml View File

@ -5,9 +5,14 @@
<field name="model">donation.donation</field>
<field name="inherit_id" ref="donation.donation_form" />
<field name="arch" type="xml">
<xpath expr="//header" position="inside">
<button name="email_confirmation" type="object" string="Send email confirmation for donation to partner"/>
</xpath>
<xpath expr="//field[@name='payment_mode_id']" position="after">
<field name="invoice_id"/>
<field name="transaction_id"/>
<!-- <field name="state"/> -->
<!-- <field name="state_done"/> -->
</xpath>


+ 1
- 1
views/individual_booking_event.xml View File

@ -40,7 +40,7 @@
<field name="view_mode">tree,form</field>
</record>
<menuitem id="booking_email_manager_menu" action="location_action"
<menuitem id="booking_email_manager_menu" action="individual_booking_event_email_action"
parent="booking_title_menu" groups="event.group_event_user" sequence="1"/>


+ 4
- 4
views/mediatheque.xml View File

@ -3,8 +3,8 @@
<t t-call="website.layout">
<div id="wrap" class="o_wevent_index">
<!-- Options -->
<!-- <t t-set="opt_events_list_cards" t-value="is_view_active('website_event.opt_events_list_cards')"/>
<t t-set="opt_events_list_columns" t-value="is_view_active('website_event.opt_events_list_columns')"/> -->
<t t-set="opt_events_list_cards" t-value="is_view_active('website_event.opt_events_list_cards')"/>
<t t-set="opt_events_list_columns" t-value="is_view_active('website_event.opt_events_list_columns')"/>
<!-- Topbar -->
<t t-call="kalachakra.mediatheque_index_topbar"/>
<!-- Drag/Drop Area -->
@ -93,13 +93,13 @@
</main>
</div>
<!-- Footer -->
<footer t-if="not event.event_registrations_open or event.event_registrations_sold_out"
<!-- <footer t-if="not event.event_registrations_open or event.event_registrations_sold_out"
t-att-class="'small align-self-end w-100 %s %s' % (
opt_events_list_cards and 'card-footer' or (not opt_events_list_columns and 'mx-4 mt-auto pt-2') or 'py-2',
opt_events_list_cards and 'border-top' or '',
)">
</footer>
</footer> -->
</div>
</article>
</a>


+ 4
- 0
views/membership.xml View File

@ -23,6 +23,9 @@
<field name="model">kalachakra.membership</field>
<field name="arch" type="xml">
<form>
<header>
<button name="email_confirmation" type="object" string="Send email confirmation"/>
</header>
<sheet>
<group>
<field name="partner_id" widget="res_partner_many2one" context="{'show_address': 1}"/>
@ -36,6 +39,7 @@
</group>
<group>
<field name="invoice_id"/>
<field name="transaction_id"/>
<field name="payment_state"/>
</group>


Loading…
Cancel
Save