Browse Source

adhesion

dev-rcn
root 3 years ago
parent
commit
738395d5dc
17 changed files with 631 additions and 239 deletions
  1. +4
    -2
      __manifest__.py
  2. +157
    -125
      controllers/kalachakra.py
  3. +138
    -21
      i18n/fr.po
  4. +4
    -1
      models/__init__.py
  5. +1
    -24
      models/donation.py
  6. +19
    -15
      models/event.py
  7. +140
    -0
      models/membership.py
  8. +22
    -2
      models/partner.py
  9. +48
    -0
      models/payment_transaction.py
  10. +13
    -0
      models/product.py
  11. +3
    -0
      security/ir.model.access.csv
  12. BIN
      static/description/membership.png
  13. +3
    -2
      views/event.xml
  14. +52
    -0
      views/membership.xml
  15. +5
    -47
      views/partner.xml
  16. +17
    -0
      views/product.xml
  17. +5
    -0
      views/website_participation.xml

+ 4
- 2
__manifest__.py View File

@ -29,15 +29,17 @@
'views/templates.xml',
'views/calendar.xml',
'views/contactus.xml',
# 'views/partner.xml',
'views/partner.xml',
# 'views/partnerimport.xml',
'report/report_donationtax.xml',
'report/report.xml',
'views/website_participation.xml',
'views/product.xml',
#'report/report_donationtax.xml',
#'report/report.xml'
'views/event.xml',
'views/event_templates_list.xml'
'views/event_templates_list.xml',
'views/membership.xml'
],
# only loaded in demonstration mode


+ 157
- 125
controllers/kalachakra.py View File

@ -4,6 +4,7 @@ from odoo.http import request
import werkzeug
from datetime import datetime
from odoo.tools import format_datetime, format_date, is_html_empty
from dateutil.relativedelta import relativedelta
from odoo.exceptions import UserError
from odoo.addons.website_event.controllers.main import WebsiteEventController
from odoo.addons.payment.controllers.portal import PaymentProcessing
@ -89,13 +90,24 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
@http.route(['/kalachakra/participation'], type='http', auth='public', website=True, sitemap=False,csrf=False)
def participation(self,type=None,**post):
data={}
request.session['kalachakra_transaction']=''
if type=='donation':
request.session['donation_transaction']=True
request.session['kalachakra_transaction']='donation'
data['kalachakra_transaction']='donation'
data['title']='make donation'
data['amount']=10
#donation product
data['products']=request.env['product.product'].search([('donation','=',True)])
if type=='membership':
request.session['kalachakra_transaction']='membership'
data['kalachakra_transaction']='membership'
data['title']='Become a member'
p=request.env['product.template'].search([('membership_product','=',True)])
if not p: raise UserError(_('No membership product, please add one'))
data['amount']=p.list_price
#membership product
data['products']=p
userid=request.env.context.get('uid')
@ -137,14 +149,21 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
data['partner']=partner
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):
#gestion du retour page précédente depuis page de paiement
if not post.get('product_id'):
if request.session['kalachakra_transaction']=='donation':
request.env['donation.donation'].search(['id','=',int(request.session['donation_id'])]).unlink()
if request.session['kalachakra_transaction']=='membership':
request.env['kalachakra.membership'].search(['id','=',int(request.session['membership_id'])]).unlink()
return request.redirect('/kalachakra/participation?type='+request.session['kalachakra_transaction'])
userid=request.env.context.get('uid')
if userid:
user=request.env['res.users'].search([('id','=',int(userid))])
@ -170,11 +189,15 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
data={}
data['submit_txt']='Donate now'
if request.session['kalachakra_transaction']=='donation':
data['submit_txt']='Donate now'
if request.session['kalachakra_transaction'] in ['membership'] :
data['submit_txt']='Pay now'
data['success_url']='/kalachakra/payment/success'
data['error_url']='/kalachakra/payment/error'
if request.session.get('donation_transaction')==True:
if request.session['kalachakra_transaction'] in ['donation','membership']:
data['acquirers'] = list(request.env['payment.acquirer'].search([
('state', 'in', ['enabled', 'test']),
('company_id', '=', request.env.company.id),
@ -195,57 +218,48 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
data['payment_tokens']=payment_tokens
#create donation
vals={}
vals['partner_id']=partner.id
vals['donation_date']=datetime.now()
vals['tax_receipt_option']='annual'
#mode de paiement CB
electronic_method=request.env['account.payment.method'].search([('code','=','electronic')],limit=1)
if electronic_method:
cb_mode=request.env['account.payment.mode'].search([('payment_method_id','=',int(electronic_method.id))],limit=1)
if cb_mode:
vals['payment_mode_id']=cb_mode.id
else:
raise Warning('please configure credit card mode')
vals['state']='draft'
vals['payment_ref']='internet'
donation_draft=request.env['donation.donation'].sudo().create(vals)
vals={}
#create line donation
vals['donation_id']=donation_draft.id
product=request.env['product.product'].search([('id','=',int(post.get('product_id')))])
vals['product_id']=int(post.get('product_id'))
vals['display_name']=product.name
vals['quantity']=1
vals['unit_price']=post.get('amount')
vals['tax_receipt_ok']=product.tax_receipt_ok
donation_line=request.env['donation.line'].sudo().create(vals)
#create sale order
# vals={}
# vals['partner_id']=partner.id
# 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('product_id'))
# vals['product_uom_qty']=1
# vals['price_unit']=post.get('amount')
# product=request.env['product.product'].search([('id','=',int(post.get('product_id')))])
# vals['name']=product.name
# order_line=request.env['sale.order.line'].sudo().create(vals)
if request.session['kalachakra_transaction'] in ['donation']:
vals={}
vals['partner_id']=partner.id
vals['donation_date']=datetime.now()
vals['tax_receipt_option']='annual'
#mode de paiement CB
electronic_method=request.env['account.payment.method'].search([('code','=','electronic')],limit=1)
if electronic_method:
cb_mode=request.env['account.payment.mode'].search([('payment_method_id','=',int(electronic_method.id))],limit=1)
if cb_mode:
vals['payment_mode_id']=cb_mode.id
else:
raise Warning('please configure credit card mode')
vals['state']='draft'
vals['payment_ref']='internet'
donation_draft=request.env['donation.donation'].sudo().create(vals)
vals={}
#create line donation
vals['donation_id']=donation_draft.id
product=request.env['product.product'].search([('id','=',int(post.get('product_id')))])
vals['product_id']=int(post.get('product_id'))
vals['display_name']=product.name
vals['quantity']=1
vals['unit_price']=post.get('amount')
vals['tax_receipt_ok']=product.tax_receipt_ok
donation_line=request.env['donation.line'].sudo().create(vals)
data['order_id']=donation_draft.id
request.session['donation_id'] = donation_draft.id
data['order_id']=donation_draft.id
request.session['donation_id'] = donation_draft.id
#create membership
if request.session['kalachakra_transaction'] in ['membership']:
vals={}
vals['partner_id']=partner.id
vals['product_id']=int(post.get('product_id'))
vals['start_date']=datetime.now()
vals['end_date']=datetime.now()+relativedelta(years=1)
membership=request.env['kalachakra.membership'].sudo().create(vals)
data['order_id']=membership.id
request.session['membership_id'] = membership.id
return http.request.render('kalachakra.payment_choice_form',data)
@ -263,7 +277,10 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
user is redirected to the checkout page
"""
# Ensure a payment acquirer is selected
donation_id=order_id
if not acquirer_id:
return False
@ -272,37 +289,71 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
except:
return False
if request.session['kalachakra_transaction'] in ['donation']:
# Retrieve the donation
donation_id=order_id
donation=request.env['donation.donation'].search([('id','=',int(donation_id))], limit=1)
# Retrieve the donation
donation=request.env['donation.donation'].search([('id','=',int(donation_id))], limit=1)
# Ensure there is something to proceed
if not donation or (donation and not donation.line_ids):
return False
# Ensure there is something to proceed
if not donation or (donation and not donation.line_ids):
return False
assert donation.partner_id.id != request.website.partner_id.id
# Create transaction
vals = {'acquirer_id': acquirer_id,
'return_url': '/kalachakra/payment/validate'}
if save_token:
vals['type'] = 'form_save'
if token:
vals['payment_token_id'] = int(token)
transaction = donation._create_payment_transaction(vals)
# 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')
last_tx = request.env['payment.transaction'].browse(last_tx_id).sudo().exists()
if last_tx:
PaymentProcessing.remove_payment_transaction(last_tx)
PaymentProcessing.add_payment_transaction(transaction)
request.session['__website_sale_last_tx_id'] = transaction.id
return transaction.render_donation_button(donation)
if request.session['kalachakra_transaction'] in ['membership']:
# Retrieve the donation
membership_id=order_id
membership=request.env['kalachakra.membership'].search([('id','=',int(membership_id))], limit=1)
assert donation.partner_id.id != request.website.partner_id.id
# Create transaction
vals = {'acquirer_id': acquirer_id,
'return_url': '/kalachakra/payment/validate'}
if save_token:
vals['type'] = 'form_save'
if token:
vals['payment_token_id'] = int(token)
transaction = donation._create_payment_transaction(vals)
# 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')
last_tx = request.env['payment.transaction'].browse(last_tx_id).sudo().exists()
if last_tx:
PaymentProcessing.remove_payment_transaction(last_tx)
PaymentProcessing.add_payment_transaction(transaction)
request.session['__website_sale_last_tx_id'] = transaction.id
return transaction.render_donation_button(donation)
# Ensure there is something to proceed
if not membership :
return False
assert membership.partner_id.id != request.website.partner_id.id
# Create transaction
vals = {'acquirer_id': acquirer_id,
'return_url': '/kalachakra/payment/validate'}
if save_token:
vals['type'] = 'form_save'
if token:
vals['payment_token_id'] = int(token)
transaction = membership._create_payment_transaction(vals)
# 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')
last_tx = request.env['payment.transaction'].browse(last_tx_id).sudo().exists()
if last_tx:
PaymentProcessing.remove_payment_transaction(last_tx)
PaymentProcessing.add_payment_transaction(transaction)
request.session['__website_sale_last_tx_id'] = transaction.id
return transaction.render_membership_button(membership)
http.route('/kalachakra/payment/token', type='http', auth='public', website=True, sitemap=False)
def kalachakra_payment_token(self, pm_id=None, **kwargs):
@ -323,7 +374,12 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
# Create transaction
vals = {'payment_token_id': pm_id, 'return_url': '/kalachakra/payment/validate'}
tx = donation._create_payment_transaction(vals)
if request.session['kalachakra_transaction'] in ['donation']:
tx = donation._create_payment_transaction(vals)
if request.session['kalachakra_transaction'] in ['membership']:
tx = membership._create_payment_transaction(vals)
request.session['transaction_id']=tx.id
PaymentProcessing.add_payment_transaction(tx)
return request.redirect('kalachakra/payment/process')
@ -347,11 +403,20 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
- UDPATE ME
"""
donation_id=int(request.session['donation_id'])
#validation du don car la tranasction est ok
donation=request.env['donation.donation'].search([('id','=',donation_id)])
donation.state='done'
request.session['donation_id']=None
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'].search([('id','=',donation_id)])
donation.state='done'
request.session['donation_id']=None
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'].search([('id','=',membership_id)])
membership.state='done'
request.session['membership_id']=None
transaction_id=int(request.session['__website_sale_last_tx_id'] )
tx = request.env['payment.transaction'].sudo().browse(transaction_id)
@ -362,43 +427,10 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
PaymentProcessing.remove_payment_transaction(tx)
return request.redirect('/kalachakra/payment/confirmation')
# if sale_order_id is None:
# order = request.website.sale_get_order()
# else:
# order = request.env['sale.order'].sudo().browse(sale_order_id)
# assert order.id == request.session.get('sale_last_order_id')
# if transaction_id:
# tx = request.env['payment.transaction'].sudo().browse(transaction_id)
# assert tx in order.transaction_ids()
# elif order:
# tx = order.get_portal_last_transaction()
# else:
# tx = None
# if not order or (order.amount_total and not tx):
# return request.redirect('/kalachakra/ma')
# if order and not order.amount_total and not tx:
# order.with_context(send_email=True).action_confirm()
# return request.redirect(order.get_portal_url())
# # clean context and session, then redirect to the confirmation page
# request.website.sale_reset()
# if tx and tx.state == 'draft':
# return request.redirect('/kalachakra/')
# PaymentProcessing.remove_payment_transaction(tx)
# return request.redirect('/kalachakra/payment/confirmation')
@http.route(['/kalachakra/payment/confirmation'], type='http', auth="public", website=True, sitemap=False)
def kalachakra_payment_confirmation(self, **post):
return request.render("kalachakra.thankyou")
# sale_order_id = request.session.get('sale_last_order_id')
# if sale_order_id:
# order = request.env['sale.order'].sudo().browse(sale_order_id)
# return request.render("website_sale.confirmation", {'order': order})
# else:
# return request.redirect('/shop')

+ 138
- 21
i18n/fr.po View File

@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0-20210413\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-05-30 12:54+0000\n"
"PO-Revision-Date: 2022-05-30 12:54+0000\n"
"POT-Creation-Date: 2022-05-31 13:07+0000\n"
"PO-Revision-Date: 2022-05-31 13:07+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@ -18,7 +18,7 @@ msgstr ""
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt
msgid "5 Passage Delessert – 75010 PARIS"
msgstr "5 Passage Delessert – 75010 PARIS""
msgstr ""
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt
@ -30,6 +30,13 @@ msgstr ""
msgid "<b>Paris, le</b> {{DATE}}"
msgstr ""
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.event_category_tag
msgid ""
"<i class=\"fa fa-folder-open\"/>\n"
" tags"
msgstr ""
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt
msgid ""
@ -39,18 +46,21 @@ msgstr ""
#. module: kalachakra
#: code:addons/kalachakra/models/donation.py:0
#: code:addons/kalachakra/models/membership.py:0
#, python-format
msgid "A journal must be specified for the acquirer %s."
msgstr ""
#. module: kalachakra
#: code:addons/kalachakra/models/donation.py:0
#: code:addons/kalachakra/models/membership.py:0
#, python-format
msgid "A payment acquirer is required to create a transaction."
msgstr ""
#. module: kalachakra
#: code:addons/kalachakra/models/donation.py:0
#: code:addons/kalachakra/models/membership.py:0
#, python-format
msgid ""
"A transaction can't be linked to sales orders having different partners."
@ -66,6 +76,11 @@ msgstr "Ajouter l'événement au calendrier google"
msgid "Affectation<span class=\"s_website_form_mark\"> *</span>"
msgstr ""
#. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_membership__amount
msgid "Amount"
msgstr "Montant"
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.participation_form
msgid "Amount (€)"
@ -89,7 +104,7 @@ msgstr ""
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt
msgid "Associationnn Cultuelle Kalachakra – Roue de la Vie"
msgstr "Association Cultuelle Kalachakra – Roue de la Vie"
msgstr ""
#. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile__file
@ -104,9 +119,10 @@ msgstr ""
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.participation_form
msgid "Country<span class=\"s_website_form_mark\"> *</span>"
msgstr "Pays<span class=\"s_website_form_mark\"> *</span>"
msgstr ""
#. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_membership__create_uid
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraft__create_uid
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile__create_uid
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile_mapping__create_uid
@ -114,11 +130,17 @@ msgid "Created by"
msgstr ""
#. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_membership__create_date
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraft__create_date
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile__create_date
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile_mapping__create_date
msgid "Created on"
msgstr ""
msgstr "Créé le"
#. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_membership__currency_id
msgid "Currency"
msgstr "devise"
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt
@ -129,10 +151,12 @@ msgstr ""
#: model:ir.model.fields,field_description:kalachakra.field_donation_donation__display_name
#: model:ir.model.fields,field_description:kalachakra.field_event_event__display_name
#: model:ir.model.fields,field_description:kalachakra.field_event_tag_category__display_name
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_membership__display_name
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraft__display_name
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile__display_name
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile_mapping__display_name
#: model:ir.model.fields,field_description:kalachakra.field_payment_transaction__display_name
#: model:ir.model.fields,field_description:kalachakra.field_product_template__display_name
msgid "Display Name"
msgstr "Nom affiché"
@ -169,28 +193,30 @@ msgid ""
"Firstname\n"
" <span class=\"s_website_form_mark\"> *</span>"
msgstr ""
"Prénom\n"
" <span class=\"s_website_form_mark\"> *</span>"
#. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_donation_donation__id
#: model:ir.model.fields,field_description:kalachakra.field_event_event__id
#: model:ir.model.fields,field_description:kalachakra.field_event_tag_category__id
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_membership__id
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraft__id
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile__id
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile_mapping__id
#: model:ir.model.fields,field_description:kalachakra.field_payment_transaction__id
#: model:ir.model.fields,field_description:kalachakra.field_product_template__id
msgid "ID"
msgstr ""
#. module: kalachakra
#: code:addons/kalachakra/models/donation.py:0
#: code:addons/kalachakra/models/membership.py:0
#, python-format
msgid "Invalid token found! Token acquirer %s != %s"
msgstr ""
#. module: kalachakra
#: code:addons/kalachakra/models/donation.py:0
#: code:addons/kalachakra/models/membership.py:0
#, python-format
msgid "Invalid token found! Token partner %s != %s"
msgstr ""
@ -199,14 +225,17 @@ msgstr ""
#: model:ir.model.fields,field_description:kalachakra.field_donation_donation____last_update
#: model:ir.model.fields,field_description:kalachakra.field_event_event____last_update
#: model:ir.model.fields,field_description:kalachakra.field_event_tag_category____last_update
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_membership____last_update
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraft____last_update
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile____last_update
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile_mapping____last_update
#: model:ir.model.fields,field_description:kalachakra.field_payment_transaction____last_update
#: model:ir.model.fields,field_description:kalachakra.field_product_template____last_update
msgid "Last Modified on"
msgstr "Last Updated on"
#. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_membership__write_uid
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraft__write_uid
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile__write_uid
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile_mapping__write_uid
@ -214,6 +243,7 @@ msgid "Last Updated by"
msgstr ""
#. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_membership__write_date
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraft__write_date
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile__write_date
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile_mapping__write_date
@ -237,6 +267,19 @@ msgstr ""
msgid "Madame, Monsieur,"
msgstr ""
#. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_payment_transaction__membership_ids
msgid "Membership"
msgstr "Adhésion"
#. module: kalachakra
#: model:ir.actions.act_window,name:kalachakra.membership_action
#: model:ir.ui.menu,name:kalachakra.membership_menu
#: model:ir.ui.menu,name:kalachakra.membership_title_menu
#: model:ir.ui.menu,name:kalachakra.membership_top_menu
msgid "Memberships"
msgstr "Adhésions"
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt
msgid "Mode de versement : Chèque, prélèvement ou espèces"
@ -249,6 +292,12 @@ msgid ""
" <span class=\"s_website_form_mark\"> *</span>"
msgstr ""
#. module: kalachakra
#: code:addons/kalachakra/controllers/kalachakra.py:0
#, python-format
msgid "No membership product, please add one"
msgstr ""
#. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile__file_name
msgid "Nom du fichier"
@ -289,6 +338,8 @@ msgstr ""
#. module: kalachakra
#: code:addons/kalachakra/models/donation.py:0
#: code:addons/kalachakra/models/payment_transaction.py:0
#: code:addons/kalachakra/models/payment_transaction.py:0
#, python-format
msgid "Pay Now"
msgstr ""
@ -305,24 +356,34 @@ msgstr "Transaction"
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.participation_form
msgid "Choix du paiement"
msgid "Payment choice"
msgstr ""
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.participation_form
msgid "Phone"
msgstr "Téléphone"
msgstr ""
#. module: kalachakra
#: model:ir.model,name:kalachakra.model_product_template
msgid "Product Template"
msgstr "Modèle d'article"
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.event_view_form
msgid "Remove event from google agenda"
msgstr "Suppriemr l'événement du calendrier google"
msgstr "Supprimer l'événement du calendrier google"
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt
msgid "Reçu de dons aux Œuvres"
msgstr ""
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.view_membership_search
msgid "Search"
msgstr ""
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt
msgid "Signature<br/>"
@ -339,28 +400,26 @@ msgid ""
"Street 1\n"
" <span class=\"s_website_form_mark\"> *</span>"
msgstr ""
"Rue 1\n"
" <span class=\"s_website_form_mark\"> *</span>"
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.participation_form
msgid "Street 2"
msgstr "Rue 2"
msgstr ""
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.thankyou
msgid "Thank you for your generosity !"
msgstr "Merci pour votre générosité!"
msgstr ""
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.participation_form
msgid "Title<span class=\"s_website_form_mark\"> *</span>"
msgstr "Titre<span class=\"s_website_form_mark\"> *</span>"
msgstr ""
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.event_calendartui
msgid "Today"
msgstr "Ajourd'hui"
msgstr ""
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt
@ -370,7 +429,7 @@ msgstr ""
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.participation_form
msgid "Zip"
msgstr "Code postal"
msgstr ""
#. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile__active
@ -380,7 +439,7 @@ msgstr ""
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.thankyou
msgid "back Home"
msgstr "Page d'accueil"
msgstr ""
#. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_event_event__calendar_id
@ -392,11 +451,26 @@ msgstr ""
msgid "coucou"
msgstr ""
#. module: kalachakra
#: model:ir.model.fields.selection,name:kalachakra.selection__kalachakra_membership__state__done
msgid "done"
msgstr "payé"
#. module: kalachakra
#: model:ir.model.fields.selection,name:kalachakra.selection__kalachakra_membership__state__draft
msgid "draft"
msgstr "brouillon"
#. module: kalachakra
#: model:ir.model,name:kalachakra.model_kalachakra_partnerdraftfile
msgid "draft partner file"
msgstr ""
#. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_membership__end_date
msgid "end date"
msgstr "date de fin"
#. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_event_event__event_id
msgid "event id"
@ -422,20 +496,58 @@ msgstr ""
msgid "import draft partner"
msgstr ""
#. module: kalachakra
#: model:ir.model,name:kalachakra.model_kalachakra_membership
msgid "manage membership"
msgstr "gérer les adhésions"
#. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_membership__product_id
#: model:ir.model.fields,field_description:kalachakra.field_product_product__membership_product
#: model:ir.model.fields,field_description:kalachakra.field_product_template__membership_product
msgid "membership product"
msgstr "produit d'adhésion"
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.view_membership_search
msgid "memberships of the current year"
msgstr "adhésions de l'année civile en cours"
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.event_calendartui
msgid "next"
msgstr "suite"
msgstr ""
#. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile_mapping__odoo_field
msgid "odoo field"
msgstr ""
#. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_membership__partner_id
msgid "partner"
msgstr "Contact"
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.event_calendartui
msgid "prev"
msgstr "précédent"
msgstr ""
#. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_membership__start_date
msgid "start date"
msgstr "Date début"
#. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_membership__state
msgid "state"
msgstr "état"
#. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_product_product__super_membership_product
#: model:ir.model.fields,field_description:kalachakra.field_product_template__super_membership_product
msgid "super membership product"
msgstr "produit membre de soutien"
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt
@ -454,3 +566,8 @@ msgstr ""
#: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt
msgid "{{SIGNATORY}} / {{SIGNATORYJOB}}"
msgstr ""
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.view_membership_search
msgid "valid memberships"
msgstr "adhésions valides"

+ 4
- 1
models/__init__.py View File

@ -4,4 +4,7 @@ from . import models
from . import partnerimport
from . import donation
from . import event
#from . import partner
from . import product
from . import membership
from . import payment_transaction
from . import partner

+ 1
- 24
models/donation.py View File

@ -31,30 +31,7 @@ class PaymentTransaction(models.Model):
class DonationDonation(models.Model):
_inherit = 'donation.donation'
# payment_transaction_id = fields.Many2one('payment.transaction', string='Payment Transaction', readonly=True)
# payment_token_id = fields.Many2one(
# 'payment.token', string="Saved payment token",
# domain="""[
# (payment_method_code == 'electronic', '=', 1),
# ('company_id', '=', company_id),
# ('acquirer_id.capture_manually', '=', False),
# ('acquirer_id.journal_id', '=', journal_id),
# ('partner_id', 'in', related_partner_ids),
# ]""",
# help="Note that tokens from acquirers set to only authorize transactions (instead of capturing the amount) are not available.")
# def _prepare_payment_transaction_vals(self):
# self.ensure_one()
# return {
# 'amount': self.amount,
# 'reference': self.ref,
# 'currency_id': self.currency_id.id,
# 'partner_id': self.partner_id.id,
# 'partner_country_id': self.partner_id.country_id.id,
# 'payment_token_id': self.payment_token_id.id,
# 'acquirer_id': self.payment_token_id.acquirer_id.id,
# 'payment_id': self.id,
# 'type': 'server2server',
# }
def _get_payment_type(self, tokenize=False):
self.ensure_one()


+ 19
- 15
models/event.py View File

@ -12,7 +12,7 @@ import os.path
from google.oauth2 import service_account
from googleapiclient.discovery import build
from datetime import datetime, timedelta
import json
# IF YOU MODIFY THE SCOPE DELETE THE TOKEN.TXT FILE
SCOPES = ['https://www.googleapis.com/auth/calendar']
@ -31,9 +31,11 @@ class EventEvent(models.Model):
_description = 'Event'
calendar_id=fields.Char('calendar id')
event_id=fields.Char('event id')
calendar_event_id=fields.Char('event id')
def add_event_to_google_agenda(self):
credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
delegated_credentials = credentials.with_subject(SUBJECT)
service = build('calendar', 'v3', credentials=delegated_credentials)
@ -47,7 +49,7 @@ class EventEvent(models.Model):
end=self.date_end.isoformat()
diff_date=self.date_end-self.date_begin
if diff_date.days>0:
date_param=self.date_begin.strftime('%Y-%m-%d')+'-'+self.date_end.strftime('%Y-%m-%d')
date_param=self.date_begin.strftime('%Y-%m-%d')+'-'+self.date_end.strftime('%Y-%m-%d')+'-'+str(self.id)
else:
date_param=self.date_begin.strftime('%Y-%m-%d')+'-'+str(self.id)
@ -58,8 +60,8 @@ class EventEvent(models.Model):
body={"summary": self.name,
"description": description,
"start": {"dateTime": start, "timeZone": 'Asia/Karachi'},
"end": {"dateTime": end, "timeZone": 'Asia/Karachi'},
"start": {"dateTime": start, "timeZone": 'Europe/Paris'},
"end": {"dateTime": end, "timeZone": 'Europe/Paris'},
}
#recherche de l'id calendar lié à l'étiquette de l'événément
@ -67,7 +69,8 @@ class EventEvent(models.Model):
if calendar_id:
event = service.events().insert(calendarId=calendar_id, body=body).execute()
self.event_id=event['id']
self.calendar_event_id=event['id']
self.calendar_id=calendar_id
else:
raise Warning('no calendar id, please check configuration tags')
@ -76,13 +79,14 @@ class EventEvent(models.Model):
delegated_credentials = credentials.with_subject(SUBJECT)
service = build('calendar', 'v3', credentials=delegated_credentials)
#recherche de l'id calendar lié à l'étiquette de l'événément
calendar_id=self.tag_ids.category_id.calendar_id
if calendar_id:
service.events().delete(calendarId=calendar_id, eventId=self.event_id).execute()
self.event_id=False
else:
raise Warning('no calendar id, please check configuration tags')
event = service.events().get(calendarId=self.calendar_id, eventId=self.calendar_event_id).execute()
#raise Warning(json.dumps(event, indent = 4) )
if event['status'] != "cancelled" :
service.events().delete(calendarId=self.calendar_id, eventId=self.calendar_event_id).execute()
self.calendar_event_id=False
self.calendar_id=False

+ 140
- 0
models/membership.py View File

@ -0,0 +1,140 @@
from odoo import models, fields, api
from dateutil.relativedelta import relativedelta
from datetime import datetime
class kalachakra_membership(models.Model):
_name = 'kalachakra.membership'
_description = 'manage membership'
partner_id = fields.Many2one(
'res.partner',
string='partner',
required=True,
index=True,
track_visibility='onchange',
ondelete='restrict'
)
product_id=fields.Many2one('product.product',required=True,string='membership product',domain="[('membership_product','=',True)]")
start_date=fields.Date('start date',required=True,default=lambda self: fields.Date.today())
def _default_end_date(self):
return datetime.now()+relativedelta(years=1)
end_date=fields.Date('end date',required=True,default=_default_end_date)
state=fields.Selection(string='state',selection=[('draft', 'draft'), ('done', 'done')],default='draft')
currency_id = fields.Many2one(
"res.currency",
string="Currency",
required=True,
tracking=True,
ondelete="restrict",
default=lambda self: self.env.company.currency_id,
)
amount = fields.Monetary(
string="Amount",
currency_field="currency_id",
readonly=True,
tracking=True,
)
@api.onchange('product_id')
def onchange_product_id(self):
if self.product_id:
self.amount = self.product_id.list_price
def _get_payment_type(self, tokenize=False):
self.ensure_one()
return 'form_save' if tokenize else 'form'
def _create_payment_transaction(self, vals):
'''Similar to self.env['payment.transaction'].create(vals) but the values are filled with the
current membership fields (e.g. the partner or the currency).
:param vals: The values to create a new payment.transaction.
:return: The newly created payment.transaction record.
'''
# Ensure the currencies are the same.
currency = self[0].currency_id
# if any(so.pricelist_id.currency_id != currency for so in self):
# raise ValidationError(_('A transaction can\'t be linked to sales orders having different currencies.'))
# Ensure the partner are the same.
partner = self[0].partner_id
if any(so.partner_id != partner for so in self):
raise ValidationError(_('A transaction can\'t be linked to sales orders having different partners.'))
# Try to retrieve the acquirer. However, fallback to the token's acquirer.
acquirer_id = vals.get('acquirer_id')
acquirer = False
payment_token_id = vals.get('payment_token_id')
if payment_token_id:
payment_token = self.env['payment.token'].sudo().browse(payment_token_id)
# Check payment_token/acquirer matching or take the acquirer from token
if acquirer_id:
acquirer = self.env['payment.acquirer'].browse(acquirer_id)
if payment_token and payment_token.acquirer_id != acquirer:
raise ValidationError(_('Invalid token found! Token acquirer %s != %s') % (
payment_token.acquirer_id.name, acquirer.name))
if payment_token and payment_token.partner_id != partner:
raise ValidationError(_('Invalid token found! Token partner %s != %s') % (
payment_token.partner.name, partner.name))
else:
acquirer = payment_token.acquirer_id
# Check an acquirer is there.
if not acquirer_id and not acquirer:
raise ValidationError(_('A payment acquirer is required to create a transaction.'))
if not acquirer:
acquirer = self.env['payment.acquirer'].browse(acquirer_id)
# Check a journal is set on acquirer.
if not acquirer.journal_id:
raise ValidationError(_('A journal must be specified for the acquirer %s.', acquirer.name))
if not acquirer_id and acquirer:
vals['acquirer_id'] = acquirer.id
vals.update({
'amount': sum(self.mapped('amount')),
'currency_id': currency.id,
'partner_id': partner.id,
'membership_ids': [(6, 0, self.ids)],
'type': self[0]._get_payment_type(vals.get('type')=='form_save'),
})
transaction = self.env['payment.transaction'].create(vals)
# Process directly if payment_token
if transaction.payment_token_id:
transaction.s2s_do_transaction()
return transaction
# @api.model
# def create(self,vals):
# res=super(kalachakra_membership, self).create(vals)
# #on ajoute l'étiquette membre au contact
# #si l'étiquette membre n'existe pas on l'a créé !
# label_member=self.env['res.partner.category'].search([('name','=','member')])
# id_label_member=label_member.id
# if not label_member:
# vals={}
# vals['name']='member'
# res=self.env['res.partner.category'].create(vals)
# id_label_member=res.id
# partner=self.env['res.partner'].search([('id','=',int(self.partner_id))])
# if partner:
# if id_label_member not in partner.category_id:
# partner.write({category_id:(4, id_label_member)})

+ 22
- 2
models/partner.py View File

@ -1,7 +1,7 @@
from odoo import models, fields, api
from odoo.exceptions import UserError, ValidationError, Warning
from psycopg2 import sql, DatabaseError
from datetime import datetime
from werkzeug import utils
@ -58,5 +58,25 @@ class partner(models.Model):
('refuge','Refuge'),
('zoom','zoom'),
],'Origine', index=True)
date_adhesion=fields.Char(string='Date adhesion', readonly=True)
def _compute_member_status(self):
for rec in self:
member=rec.env['kalachakra.membership'].search([('partner_id','=',rec.id),('end_date','<=',datetime.now())])
if member : rec.member_status='member'
else :rec.member_status='not member'
if rec.super_member: rec.member_status='super member'
member_status=fields.Selection(string='member status',selection=[('not member','Not member'),('member','Member'),('super member','Super member')]
,compute="_compute_member_status", sotre=True)
super_member=fields.Boolean("Super member")
@api.onchange('super_member')
def onchange_super_member(self):
self._compute_member_status()
date_adhesion=fields.Char(string='Date adhesion', readonly=True)

+ 48
- 0
models/payment_transaction.py View File

@ -0,0 +1,48 @@
from odoo import models, fields, api,_
from odoo.exceptions import UserError, ValidationError,Warning
from psycopg2 import sql, DatabaseError
from datetime import datetime
from werkzeug import utils
import base64
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)
membership_ids = fields.Many2many('kalachakra.membership', 'membership_transaction_rel', 'transaction_id', 'membership_id',
string='Membership', 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,
)
def render_membership_button(self, membership, submit_txt=None, render_values=None):
values = {
'partner_id': membership.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,
)

+ 13
- 0
models/product.py View File

@ -0,0 +1,13 @@
from odoo import models, fields, api
from odoo.exceptions import UserError, ValidationError
from psycopg2 import sql, DatabaseError
from werkzeug import utils
class ProductTemplate(models.Model):
_inherit = "product.template"
membership_product = fields.Boolean(string="membership product", tracking=True)
super_membership_product = fields.Boolean(string="super membership product", tracking=True)

+ 3
- 0
security/ir.model.access.csv View File

@ -1 +1,4 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_kalachakra_membership,kalachakra.membership,model_kalachakra_membership,base.group_user,1,1,1,1

BIN
static/description/membership.png View File

Before After
Width: 300  |  Height: 300  |  Size: 26 KiB

+ 3
- 2
views/event.xml View File

@ -21,8 +21,9 @@
<field name="inherit_id" ref="event.view_event_form" />
<field name="arch" type="xml">
<xpath expr="//field[@name='stage_id']" position="before">
<button name="add_event_to_google_agenda" type="object" string="Add event to google agenda" class="btn btn-warning"/>
<button name="remove_event_to_google_agenda" type="object" string="Remove event from google agenda" class="btn btn-danger"/>
<button name="add_event_to_google_agenda" type="object" attrs="{'invisible':[('calendar_event_id','!=',False)]}" string="Add event to google agenda" class="btn btn-warning"/>
<button name="remove_event_to_google_agenda" attrs="{'invisible':[('calendar_event_id','=',False)]}" type="object" string="Remove event from google agenda" class="btn btn-danger"/>
<field name="calendar_event_id" invisible="1"/>
</xpath>
</field>
</record>


+ 52
- 0
views/membership.xml View File

@ -0,0 +1,52 @@
<odoo>
<data>
<record model="ir.ui.view" id="kalachakra.membership_list">
<field name="name">kalachakra_member list</field>
<field name="model">kalachakra.membership</field>
<field name="arch" type="xml">
<tree>
<field name="create_date"/>
<field name="partner_id"/>
<field name="product_id"/>
<field name="amount"/>
<field name="state"/>
<field name="start_date"/>
<field name="end_date"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="membership_action">
<field name="name">Memberships</field>
<field name="res_model">kalachakra.membership</field>
<field name="view_mode">tree,form,pivot</field>
</record>
<record id="view_membership_search" model="ir.ui.view">
<field name="name">kalachakra.membership.search</field>
<field name="model">kalachakra.membership</field>
<field name="arch" type="xml">
<search string="Search">
<field name="partner_id"></field>
<filter string="valid memberships" domain="[('end_date','&gt;=',datetime.datetime.now())]" name="valid_membership"></filter>
<filter string="memberships of the current year" domain="[('start_date','&lt;=', time.strftime('%%Y-12-31')),('start_date','&gt;=',time.strftime('%%Y-01-01'))]" name="current_year"></filter>
</search>
</field>
</record>
<menuitem id="membership_top_menu" sequence="16"
name="Memberships" web_icon="kalachakra,static/description/membership.png"/>
<menuitem id="membership_title_menu" parent="membership_top_menu"
sequence="15" name="Memberships"/>
<menuitem id="membership_menu" action="membership_action"
parent="membership_title_menu" sequence="10"/>
</data>
</odoo>

+ 5
- 47
views/partner.xml View File

@ -21,62 +21,20 @@
</xpath>
<xpath expr="//field[@name='name']" position="after">
<field name="member_status" widget='label_selection'/>
<field name="super_member"/>
</xpath>
</field>
</record>
<record id="kalachakra_partnerdraft_action" model="ir.actions.act_window">
<field name="name">Partners draft</field>
<field name="res_model">kalachakra.partnerdraft</field>
<field name="view_mode">tree,form</field>
<field name="context"></field>
</record>
<record id="kalachakra_partnerdraftfile_action" model="ir.actions.act_window">
<field name="name">Partners draft file</field>
<field name="res_model">kalachakra.partnerdraftfile</field>
<field name="view_mode">tree,form</field>
<field name="context"></field>
</record>
<record id="kalachakra_partnerdraft_file_mapping_action" model="ir.actions.act_window">
<field name="name">file mapping</field>
<field name="res_model">kalachakra.partnerdraftfile_mapping</field>
<field name="view_mode">tree,form</field>
<field name="context"></field>
</record>
<menuitem id="kalachakra_partnerdraft_title_menu" name ="Partners import"
parent="contacts.menu_contacts" sequence="4"/>
<menuitem id="kalachakra_partnerdraft_menu" action="kalachakra_partnerdraft_action" name ="Partners imported"
parent="kalachakra_partnerdraft_title_menu" sequence="1"/>
<menuitem id="kalachakra_partnerdraftfile_menu" action="kalachakra_partnerdraftfile_action" name ="Partners files"
parent="kalachakra_partnerdraft_title_menu" sequence="2"/>
<menuitem id="kalachakra_partnerdraft_file_mapping_menu" action="kalachakra_partnerdraft_file_mapping_action" name ="mapping fields"
parent="kalachakra_partnerdraft_title_menu" sequence="3"/>
<menuitem id="kalachakra_partnerdraftfileimport_menu" action="ir_action_partnerdraft_import" name ="Import files"
parent="kalachakra_partnerdraft_title_menu" sequence="4"/>
<menuitem id="kalachakra_partnerdraftfiletransfert_menu" action="ir_action_partnerdraft_transfert" name ="Draft Partners transfert"
parent="kalachakra_partnerdraft_title_menu" sequence="5"/>
<!-- <menuitem id="kalachakra_doublonfield_menu" action="kalachakra_doublonfield_action" name ="Doublons fields"
parent="kalachakra_partnerdraft_title_menu" sequence="2"/>
<menuitem id="kalachakra_doublonfield_menu" action="kalachakra_doublonfield_action" name ="Doublons fields"
parent="kalachakra_partnerdraft_title_menu" sequence="2"/>
<menuitem id="kalachakra_find_duplicated_partner_menu" action="ir_action_find_duplicated_partner"
name="find duplicated partners" parent="kalachakra_partnerdraft_title_menu" sequence="3"/> -->
</odoo>

+ 17
- 0
views/product.xml View File

@ -0,0 +1,17 @@
<odoo>
<record id="product_template_form_view" model="ir.ui.view">
<field name="name">kalachakra.product.template.form</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_form_view" />
<field name="arch" type="xml">
<div name="options" position="inside">
<br></br>
<field name="membership_product" />
<label for="membership_product" />
<br></br>
<field name="super_membership_product" />
<label for="super_membership_product" />
</div>
</field>
</record>
</odoo>

+ 5
- 0
views/website_participation.xml View File

@ -101,7 +101,12 @@
<label class="col-form-label font-weight-bold" for="amount">Amount (€)
</label>
<t t-if="kalachakra_transaction=='donation'">
<input type="number" id="amount_id" name="amount" class="form-control " t-att-value="amount"/>
</t>
<t t-if="kalachakra_transaction=='membership'">
<input type="number" id="amount_id" name="amount" readonly="readonly" class="form-control " t-att-value="amount"/>
</t>
</div>


Loading…
Cancel
Save