From 25682d74d2f47a0775c27114b8f77071da5e104a Mon Sep 17 00:00:00 2001 From: root Date: Sun, 22 May 2022 18:49:35 +0000 Subject: [PATCH] donation payment --- __manifest__.py | 2 +- controllers/kalachakra.py | 83 +++++++++++++------ static/js/kalachakra.js | 52 ++++++++++++ ...donation.xml => website_participation.xml} | 36 +++++--- 4 files changed, 134 insertions(+), 39 deletions(-) create mode 100644 static/js/kalachakra.js rename views/{website_makedonation.xml => website_participation.xml} (81%) diff --git a/__manifest__.py b/__manifest__.py index fc168c6..03ff9b5 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -33,7 +33,7 @@ # 'views/partnerimport.xml', 'report/report_donationtax.xml', 'report/report.xml', - 'views/website_makedonation.xml' + 'views/website_participation.xml' #'report/report_donationtax.xml', #'report/report.xml' diff --git a/controllers/kalachakra.py b/controllers/kalachakra.py index 715b163..2fb9a07 100644 --- a/controllers/kalachakra.py +++ b/controllers/kalachakra.py @@ -85,34 +85,42 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing): return http.request.render('kalachakra.makedonation_form',data) - @http.route(['/kalachakra/makedonation'], type='http', auth='public', website=True, sitemap=False,csrf=False) - def makedonation(self,**post): + @http.route(['/kalachakra/participation'], type='http', auth='public', website=True, sitemap=False,csrf=False) + def participation(self,type=None,**post): data={} - + if type=='donation': + request.session['donation_transaction']=True + data['title']='make donation' + data['amount']=10 + #donation product + data['products']=request.env['product.product'].search([('donation','=',True)]) + + userid=request.env.context.get('uid') #title options title=request.env['res.partner.title'].sudo().search([]) data['titles']=title - title_male=request.env['res.partner.title'].sudo().search([('name','=','Monsieur')]) - #country options - country=request.env['res.country'].sudo().search([]) - data['countries']=country - country_france=request.env['res.country'].sudo().search([('name','=','France')]) - #donation product - donation_products=request.env['product.product'].search([('donation','=',True)]) - data['donation_products']=donation_products + + + if userid: user=request.env['res.users'].search([('id','=',int(userid))]) partner=request.env['res.partner'].sudo().search([('id','=',int(user.partner_id))]) request.session['partner_id']=int(partner.id) data['partner']=partner - - - - + data['registred']=True + else: + data['registred']=False + title_male=request.env['res.partner.title'].sudo().search([('name','=','Monsieur')]) + #country options + country=request.env['res.country'].sudo().search([]) + data['countries']=country + country_france=request.env['res.country'].sudo().search([('name','=','France')]) + + partner=request.env['res.partner'] partner.email='' partner.title=title_male.id @@ -126,12 +134,12 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing): data['partner']=partner - data['amount']=10 + - return http.request.render('kalachakra.makedonation_form',data) + return http.request.render('kalachakra.participation_form',data) @http.route(['/kalachakra/payment_choice'], type='http', auth='public', website=True, sitemap=False,csrf=False) def payment_choice(self,**post): @@ -141,17 +149,42 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing): partner=request.env['res.partner'].sudo().search([('id','=',int(user.partner_id))]) request.session['partner_id']=int(partner.id) else: - a=1 + #si pas connecté on chercher le contact indiqué par l'email + partner=request.env['res.partner'].sudo().search([('email','=',post.get('email'))],limit=1) #si pas de contact on le créé dans la base + if not partner: + vals={} + vals['email']=post.get('email') + vals['name']=post.get('name') + vals['firstname']=post.get('firstname') + vals['title']=int(post.get('title_id')) + vals['street']=post.get('street') + vals['street2']=post.get('street2') + vals['zip']=post.get('zip') + vals['country_id']=int(post.get('country_id')) + vals['phone']=post.get('phone') + partner=request.env['res.partner'].sudo().create(vals) + data={} + data['submit_txt']='Donate now' data['success_url']='/kalachakra/payment/success' data['error_url']='/kalachakra/payment/error' - data['acquirers'] = list(request.env['payment.acquirer'].search([ - ('state', 'in', ['enabled', 'test']),('company_id', '=', request.env.company.id) - ])) + if request.session.get('donation_transaction')==True: + data['acquirers'] = list(request.env['payment.acquirer'].search([ + ('state', 'in', ['enabled', 'test']), + ('company_id', '=', request.env.company.id), + ('provider', '!=', 'transfer') + + ])) + else: + data['acquirers'] = list(request.env['payment.acquirer'].search([ + ('state', 'in', ['enabled', 'test']), + ('company_id', '=', request.env.company.id) + ])) + payment_tokens = partner.payment_token_ids @@ -163,20 +196,20 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing): vals={} vals['partner_id']=partner.id - order_draft=request.env['sale.order'].create(vals) + order_draft=request.env['sale.order'].sudo().create(vals) data['order_id']=order_draft.id #création des lignes de devis vals={} vals['order_id']=order_draft.id #ajout du produit - vals['product_id']=int(post.get('donation_product_id')) + vals['product_id']=int(post.get('product_id')) vals['product_uom_qty']=1 vals['price_unit']=post.get('amount') - product=request.env['product.product'].search([('id','=',int(post.get('donation_product_id')))]) + product=request.env['product.product'].search([('id','=',int(post.get('product_id')))]) vals['name']=product.name - order_line=request.env['sale.order.line'].create(vals) + order_line=request.env['sale.order.line'].sudo().create(vals) diff --git a/static/js/kalachakra.js b/static/js/kalachakra.js new file mode 100644 index 0000000..79719a7 --- /dev/null +++ b/static/js/kalachakra.js @@ -0,0 +1,52 @@ +odoo.define('kalachakra.main', function (require) { + + + $(document).ready(function() { + + + + }); + + $( "#btn_payment_choice" ).click(function() { + + //validation de l'adresse mail + if (ValidateEmail($("#email").val())) + { + //vérification montant + if ($("#amount_id").val()==0) + { + alert('please enter an amount') + } + else + { + $( "#form" ).submit(); + } + + + } + else + { + alert("You have entered an invalid email address!") + } + + + + + + + }); + + function ValidateEmail(mail) +{ + if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(mail)) + { + return (true) + } + + return (false) +} + + + + +}); \ No newline at end of file diff --git a/views/website_makedonation.xml b/views/website_participation.xml similarity index 81% rename from views/website_makedonation.xml rename to views/website_participation.xml index a1161a2..dbf4525 100644 --- a/views/website_makedonation.xml +++ b/views/website_participation.xml @@ -1,24 +1,33 @@ -