Browse Source

afficher sur place uniquement

afficher sur zoom et sur place

resolution bug validation don et adhesion si facture paye
dev-rcn
root 3 years ago
parent
commit
40990653b8
11 changed files with 124 additions and 23 deletions
  1. +2
    -1
      __manifest__.py
  2. +3
    -1
      controllers/kalachakra.py
  3. +1
    -0
      models/__init__.py
  4. +28
    -0
      models/account_move.py
  5. +5
    -5
      models/booking_event_registration.py
  6. +22
    -1
      models/donation.py
  7. +16
    -13
      models/membership.py
  8. +7
    -0
      models/online_payment.py
  9. +18
    -0
      models/payment_transaction.py
  10. +16
    -0
      views/donation.xml
  11. +6
    -2
      views/event_templates_list.xml

+ 2
- 1
__manifest__.py View File

@ -66,7 +66,8 @@
'views/website_templates.xml',
'views/media.xml',
'views/asset.xml',
'views/payment_transaction.xml'
'views/payment_transaction.xml',
'views/donation.xml'
#'views/payment_views.xml'


+ 3
- 1
controllers/kalachakra.py View File

@ -23,7 +23,8 @@ import json
from collections import OrderedDict
_logger = logging.getLogger(__name__)
def create_donation(self):
return True
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):
@ -802,6 +803,7 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
return http.request.render('kalachakra.kalachakra_payment_choice_form',data)
@http.route(['/kalachakra/payment/transaction/',
'/kalachakra/payment/transaction/<int:so_id>',


+ 1
- 0
models/__init__.py View File

@ -22,4 +22,5 @@ from . import mailing_list
#from . import account_move
from . import res_users
from . import membership_import
from . import online_payment

+ 28
- 0
models/account_move.py View File

@ -0,0 +1,28 @@
from odoo import models, fields, api
from odoo.exceptions import UserError, ValidationError, Warning
from psycopg2 import sql, DatabaseError
import logging
from werkzeug import utils
import re
_logger = logging.getLogger(__name__)
class AccountMove(models.Model):
_inherit = 'account.move'
def write(self,vals):
res=super(AccountMove, self).write(vals)
m=self.env['kalachakra.membership'].sudo().search([('invoice_id','=',int(self.id))])
if m:
if self.payment_state == 'not_paid':
m.payment_state='not paid'
m.state='draft'
else:
m.payment_state='paid'
m.state='done'
_logger.error("errK2"+str(m.payment_state))
return res

+ 5
- 5
models/booking_event_registration.py View File

@ -161,10 +161,10 @@ class EventRegistration(models.Model):
def action_event_registration_order(self):
return True
def create_donation(self,event_registration_id,partner_id,product_id,price_unit):
def create_donation(self,event_registration_id,partner_id,product_id,price_unit,invoice_id):
vals={}
vals['partner_id']=int(partner_id)
vals['invoice_id']=int(invoice_id)
vals['donation_date']=datetime.now()
vals['tax_receipt_option']='annual'
#mode de paiement CB par defaut
@ -197,7 +197,7 @@ class EventRegistration(models.Model):
donation_line=self.env['donation.line'].sudo().create(vals)
donation_draft.state='done'
donation_draft.state='draft'
@ -489,7 +489,7 @@ class EventRegistration(models.Model):
#si l'option est un produit de don on créé un don pour la personne
if prd.donation: self.sudo().create_donation(reg.id,reg.partner_id,vals['product_id'],vals['price_unit'])
if prd.donation: self.sudo().create_donation(reg.id,reg.partner_id,vals['product_id'],vals['price_unit'],invoice.id)
if not end_of_stay_invoice:
@ -699,7 +699,7 @@ class EventRegistration(models.Model):
#si l'option est un produit de don on créé un don pour la personne
if prd.donation: self.sudo().create_donation(reg.id,reg.partner_id,vals['product_id'],vals['price_unit'])
if prd.donation: self.sudo().create_donation(reg.id,reg.partner_id,vals['product_id'],vals['price_unit'],invoice.id)
reg.balance_invoice_id=invoice.id
return reg.down_payment_invoice_id


+ 22
- 1
models/donation.py View File

@ -29,12 +29,33 @@ class PaymentTransaction(models.Model):
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 DonationDonation(models.Model):
_inherit = 'donation.donation'
invoice_id=fields.Many2one('account.move','invoice')
state_done=fields.Boolean(compute='_compute_donation_state',store=True)
def remove_draft_donation(self):
@api.depends('invoice_id.payment_state')
def _compute_donation_state(self):
for d in self:
if d.invoice_id:
if d.invoice_id.payment_state=='paid':
d.state='done'
d.state_done=True
else:
d.state='draft'
d.state_done=False
def bulk_remove_draft_donation(self):
payment_transaction=self.env['payment.transaction'].search([('state','=','draft')])
if payment_transaction:
for p in payment_transaction:


+ 16
- 13
models/membership.py View File

@ -59,7 +59,7 @@ class kalachakra_membership(models.Model):
state=fields.Selection(string='state',selection=[('draft', 'draft'), ('done', 'done')],default='draft')
state=fields.Selection(string='state',selection=[('draft', 'draft'), ('done', 'done')],default='draft',compute='_compute_membership_state',store=True)
currency_id = fields.Many2one(
"res.currency",
string="Currency",
@ -79,7 +79,19 @@ class kalachakra_membership(models.Model):
@api.depends('invoice_id.payment_state')
def _compute_membership_state(self):
for m in self:
if m.invoice_id:
if m.invoice_id.payment_state=='paid':
m.payment_state='paid'
m.state='done'
else:
m.payment_state='not paid'
m.state='draft'
m.update_membership()
@api.onchange('product_id')
def onchange_product_id(self):
if self.product_id:
@ -167,15 +179,6 @@ class kalachakra_membership(models.Model):
else :self.partner_id.member_status='not member'
if self.partner_id.super_member: self.member_status='super member'
# if self.end_date>=datetime.now().date() and self.payment_state=='paid':
# member_status='member'
# else:
# member_status='not member'
# if self.partner_id.super_member==False:
# self.partner_id.member_status=member_status
return True
def write(self,vals):
@ -202,7 +205,7 @@ class kalachakra_membership(models.Model):
rec.partner_id.member_status='not member'
super(kalachakra_membership, rec).unlink()
def updatepayment_state(self):
def bulk_updatepayment_state(self):
memberships=self.env['kalachakra.membership'].search([])
for m in memberships:
@ -214,7 +217,7 @@ class kalachakra_membership(models.Model):
m.payment_state='not paid'
m.state='draft'
def remove_draft_membership(self):
def bulk_remove_draft_membership(self):
payment_transaction=self.env['payment.transaction'].search([('state','=','draft')])
if payment_transaction:
for p in payment_transaction:


+ 7
- 0
models/online_payment.py View File

@ -0,0 +1,7 @@
from odoo import models, fields, api
from odoo.exceptions import UserError, ValidationError,Warning
from datetime import date,datetime,timedelta
class kalachakra_online_payment(models.Model):
_name = 'kalachakra.online_payment'
_description = 'online payment'

+ 18
- 0
models/payment_transaction.py View File

@ -27,6 +27,9 @@ class PaymentTransaction(models.Model):
membership_ids = fields.Many2many('kalachakra.membership', 'membership_transaction_rel', 'transaction_id', 'membership_id',
string='Membership', copy=False, readonly=True)
online_payment_ids = fields.Many2many('kalachakra.online_payment', 'online_payment_transaction_rel', 'transaction_id', 'online_payment_id',
string='Online payment', copy=False, readonly=True)
reference2=fields.Char('type',compute='compute_reference')
def compute_reference(self):
@ -72,6 +75,21 @@ class PaymentTransaction(models.Model):
membership.currency_id.id,
values=values,
)
def render_online_payment_button(self, online_payment, submit_txt=None, render_values=None):
values = {
'partner_id': online_payment.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,
membership.amount,
membership.currency_id.id,
values=values,
)
@api.model
def _compute_reference_prefix(self, values):
if values and values.get('invoice_ids'):


+ 16
- 0
views/donation.xml View File

@ -0,0 +1,16 @@
<odoo>
<record id="view_kala_donation_form" model="ir.ui.view">
<field name="name">kalachakra.donation.form</field>
<field name="model">donation.donation</field>
<field name="inherit_id" ref="donation.donation_form" />
<field name="arch" type="xml">
<xpath expr="//field[@name='payment_mode_id']" position="after">
<field name="invoice_id"/>
<!-- <field name="state"/> -->
<!-- <field name="state_done"/> -->
</xpath>
</field>
</record>
</odoo>

+ 6
- 2
views/event_templates_list.xml View File

@ -213,10 +213,14 @@
<t t-if="event.online_only">
<br></br><span>sur zoom uniquement</span><br></br>
</t>
<t t-if="not event.online_event and not event.booking_event">
<br></br><span>sur place uniquement</span><br></br>
</t>
<t t-if="not event.online_only and event.online_event and not event.booking_event">
<div itemprop="location" t-field="event.city"/>
<br></br><span>sur place ou sur zoom</span><br></br>
</t>
<t t-if="not event.online_event or event.booking_event">
<t t-if="event.booking_event">
<div itemprop="location" t-field="event.city"/>
</t>


Loading…
Cancel
Save