From 40990653b87ff4ed0e0edfeda3e5bddf6479f6ca Mon Sep 17 00:00:00 2001 From: root Date: Sun, 18 Sep 2022 19:59:41 +0200 Subject: [PATCH] afficher sur place uniquement afficher sur zoom et sur place resolution bug validation don et adhesion si facture paye --- __manifest__.py | 3 ++- controllers/kalachakra.py | 4 +++- models/__init__.py | 1 + models/account_move.py | 28 +++++++++++++++++++++++++++ models/booking_event_registration.py | 10 +++++----- models/donation.py | 23 +++++++++++++++++++++- models/membership.py | 29 +++++++++++++++------------- models/online_payment.py | 7 +++++++ models/payment_transaction.py | 18 +++++++++++++++++ views/donation.xml | 16 +++++++++++++++ views/event_templates_list.xml | 8 ++++++-- 11 files changed, 124 insertions(+), 23 deletions(-) create mode 100644 models/account_move.py create mode 100644 models/online_payment.py create mode 100644 views/donation.xml diff --git a/__manifest__.py b/__manifest__.py index cfe54cc..b059c7f 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -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' diff --git a/controllers/kalachakra.py b/controllers/kalachakra.py index a1eca1f..3e2281c 100644 --- a/controllers/kalachakra.py +++ b/controllers/kalachakra.py @@ -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/'], 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/', diff --git a/models/__init__.py b/models/__init__.py index 0cc810d..d4bd4e8 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -22,4 +22,5 @@ from . import mailing_list #from . import account_move from . import res_users from . import membership_import +from . import online_payment diff --git a/models/account_move.py b/models/account_move.py new file mode 100644 index 0000000..4e734f0 --- /dev/null +++ b/models/account_move.py @@ -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 + + diff --git a/models/booking_event_registration.py b/models/booking_event_registration.py index 89205e8..51392d5 100644 --- a/models/booking_event_registration.py +++ b/models/booking_event_registration.py @@ -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 diff --git a/models/donation.py b/models/donation.py index c76cb45..f3c9953 100644 --- a/models/donation.py +++ b/models/donation.py @@ -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: diff --git a/models/membership.py b/models/membership.py index 47e65dc..b3b6159 100644 --- a/models/membership.py +++ b/models/membership.py @@ -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: diff --git a/models/online_payment.py b/models/online_payment.py new file mode 100644 index 0000000..5bb20c4 --- /dev/null +++ b/models/online_payment.py @@ -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' \ No newline at end of file diff --git a/models/payment_transaction.py b/models/payment_transaction.py index 7365b3f..96771ef 100644 --- a/models/payment_transaction.py +++ b/models/payment_transaction.py @@ -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'): diff --git a/views/donation.xml b/views/donation.xml new file mode 100644 index 0000000..503aa13 --- /dev/null +++ b/views/donation.xml @@ -0,0 +1,16 @@ + + + + kalachakra.donation.form + donation.donation + + + + + + + + + + + \ No newline at end of file diff --git a/views/event_templates_list.xml b/views/event_templates_list.xml index c4fc689..b02e8eb 100644 --- a/views/event_templates_list.xml +++ b/views/event_templates_list.xml @@ -213,10 +213,14 @@

sur zoom uniquement

+ + +

sur place uniquement

+
-
+

sur place ou sur zoom

- +