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/templates.xml',
'views/calendar.xml', 'views/calendar.xml',
'views/contactus.xml', 'views/contactus.xml',
# 'views/partner.xml',
'views/partner.xml',
# 'views/partnerimport.xml', # 'views/partnerimport.xml',
'report/report_donationtax.xml', 'report/report_donationtax.xml',
'report/report.xml', 'report/report.xml',
'views/website_participation.xml', 'views/website_participation.xml',
'views/product.xml',
#'report/report_donationtax.xml', #'report/report_donationtax.xml',
#'report/report.xml' #'report/report.xml'
'views/event.xml', 'views/event.xml',
'views/event_templates_list.xml'
'views/event_templates_list.xml',
'views/membership.xml'
], ],
# only loaded in demonstration mode # only loaded in demonstration mode


+ 157
- 125
controllers/kalachakra.py View File

@ -4,6 +4,7 @@ from odoo.http import request
import werkzeug import werkzeug
from datetime import datetime from datetime import datetime
from odoo.tools import format_datetime, format_date, is_html_empty from odoo.tools import format_datetime, format_date, is_html_empty
from dateutil.relativedelta import relativedelta
from odoo.exceptions import UserError from odoo.exceptions import UserError
from odoo.addons.website_event.controllers.main import WebsiteEventController from odoo.addons.website_event.controllers.main import WebsiteEventController
from odoo.addons.payment.controllers.portal import PaymentProcessing 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) @http.route(['/kalachakra/participation'], type='http', auth='public', website=True, sitemap=False,csrf=False)
def participation(self,type=None,**post): def participation(self,type=None,**post):
data={} data={}
request.session['kalachakra_transaction']=''
if type=='donation': if type=='donation':
request.session['donation_transaction']=True
request.session['kalachakra_transaction']='donation'
data['kalachakra_transaction']='donation'
data['title']='make donation' data['title']='make donation'
data['amount']=10 data['amount']=10
#donation product #donation product
data['products']=request.env['product.product'].search([('donation','=',True)]) 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') userid=request.env.context.get('uid')
@ -137,14 +149,21 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
data['partner']=partner data['partner']=partner
return http.request.render('kalachakra.participation_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) @http.route(['/kalachakra/payment_choice'], type='http', auth='public', website=True, sitemap=False,csrf=False)
def payment_choice(self,**post): 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') userid=request.env.context.get('uid')
if userid: if userid:
user=request.env['res.users'].search([('id','=',int(userid))]) user=request.env['res.users'].search([('id','=',int(userid))])
@ -170,11 +189,15 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
data={} 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['success_url']='/kalachakra/payment/success'
data['error_url']='/kalachakra/payment/error' 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([ data['acquirers'] = list(request.env['payment.acquirer'].search([
('state', 'in', ['enabled', 'test']), ('state', 'in', ['enabled', 'test']),
('company_id', '=', request.env.company.id), ('company_id', '=', request.env.company.id),
@ -195,57 +218,48 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
data['payment_tokens']=payment_tokens data['payment_tokens']=payment_tokens
#create donation #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) 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 user is redirected to the checkout page
""" """
# Ensure a payment acquirer is selected # Ensure a payment acquirer is selected
donation_id=order_id
if not acquirer_id: if not acquirer_id:
return False return False
@ -272,37 +289,71 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
except: except:
return False 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) http.route('/kalachakra/payment/token', type='http', auth='public', website=True, sitemap=False)
def kalachakra_payment_token(self, pm_id=None, **kwargs): def kalachakra_payment_token(self, pm_id=None, **kwargs):
@ -323,7 +374,12 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
# Create transaction # Create transaction
vals = {'payment_token_id': pm_id, 'return_url': '/kalachakra/payment/validate'} 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 request.session['transaction_id']=tx.id
PaymentProcessing.add_payment_transaction(tx) PaymentProcessing.add_payment_transaction(tx)
return request.redirect('kalachakra/payment/process') return request.redirect('kalachakra/payment/process')
@ -347,11 +403,20 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
- UDPATE ME - 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'] ) transaction_id=int(request.session['__website_sale_last_tx_id'] )
tx = request.env['payment.transaction'].sudo().browse(transaction_id) tx = request.env['payment.transaction'].sudo().browse(transaction_id)
@ -362,43 +427,10 @@ class kalachakra_event(WebsiteEventController,PaymentProcessing):
PaymentProcessing.remove_payment_transaction(tx) PaymentProcessing.remove_payment_transaction(tx)
return request.redirect('/kalachakra/payment/confirmation') 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) @http.route(['/kalachakra/payment/confirmation'], type='http', auth="public", website=True, sitemap=False)
def kalachakra_payment_confirmation(self, **post): def kalachakra_payment_confirmation(self, **post):
return request.render("kalachakra.thankyou") 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 "" msgstr ""
"Project-Id-Version: Odoo Server 14.0-20210413\n" "Project-Id-Version: Odoo Server 14.0-20210413\n"
"Report-Msgid-Bugs-To: \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" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -18,7 +18,7 @@ msgstr ""
#. module: kalachakra #. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt #: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt
msgid "5 Passage Delessert – 75010 PARIS" msgid "5 Passage Delessert – 75010 PARIS"
msgstr "5 Passage Delessert – 75010 PARIS""
msgstr ""
#. module: kalachakra #. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt #: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt
@ -30,6 +30,13 @@ msgstr ""
msgid "<b>Paris, le</b> {{DATE}}" msgid "<b>Paris, le</b> {{DATE}}"
msgstr "" 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 #. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt #: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt
msgid "" msgid ""
@ -39,18 +46,21 @@ msgstr ""
#. module: kalachakra #. module: kalachakra
#: code:addons/kalachakra/models/donation.py:0 #: code:addons/kalachakra/models/donation.py:0
#: code:addons/kalachakra/models/membership.py:0
#, python-format #, python-format
msgid "A journal must be specified for the acquirer %s." msgid "A journal must be specified for the acquirer %s."
msgstr "" msgstr ""
#. module: kalachakra #. module: kalachakra
#: code:addons/kalachakra/models/donation.py:0 #: code:addons/kalachakra/models/donation.py:0
#: code:addons/kalachakra/models/membership.py:0
#, python-format #, python-format
msgid "A payment acquirer is required to create a transaction." msgid "A payment acquirer is required to create a transaction."
msgstr "" msgstr ""
#. module: kalachakra #. module: kalachakra
#: code:addons/kalachakra/models/donation.py:0 #: code:addons/kalachakra/models/donation.py:0
#: code:addons/kalachakra/models/membership.py:0
#, python-format #, python-format
msgid "" msgid ""
"A transaction can't be linked to sales orders having different partners." "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>" msgid "Affectation<span class=\"s_website_form_mark\"> *</span>"
msgstr "" msgstr ""
#. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_membership__amount
msgid "Amount"
msgstr "Montant"
#. module: kalachakra #. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.participation_form #: model_terms:ir.ui.view,arch_db:kalachakra.participation_form
msgid "Amount (€)" msgid "Amount (€)"
@ -89,7 +104,7 @@ msgstr ""
#. module: kalachakra #. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt #: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt
msgid "Associationnn Cultuelle Kalachakra – Roue de la Vie" msgid "Associationnn Cultuelle Kalachakra – Roue de la Vie"
msgstr "Association Cultuelle Kalachakra – Roue de la Vie"
msgstr ""
#. module: kalachakra #. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile__file #: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile__file
@ -104,9 +119,10 @@ msgstr ""
#. module: kalachakra #. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.participation_form #: model_terms:ir.ui.view,arch_db:kalachakra.participation_form
msgid "Country<span class=\"s_website_form_mark\"> *</span>" msgid "Country<span class=\"s_website_form_mark\"> *</span>"
msgstr "Pays<span class=\"s_website_form_mark\"> *</span>"
msgstr ""
#. module: kalachakra #. 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_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__create_uid
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile_mapping__create_uid #: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile_mapping__create_uid
@ -114,11 +130,17 @@ msgid "Created by"
msgstr "" msgstr ""
#. module: kalachakra #. 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_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__create_date
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile_mapping__create_date #: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile_mapping__create_date
msgid "Created on" 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 #. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt #: 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_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_event__display_name
#: model:ir.model.fields,field_description:kalachakra.field_event_tag_category__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_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__display_name
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile_mapping__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_payment_transaction__display_name
#: model:ir.model.fields,field_description:kalachakra.field_product_template__display_name
msgid "Display Name" msgid "Display Name"
msgstr "Nom affiché" msgstr "Nom affiché"
@ -169,28 +193,30 @@ msgid ""
"Firstname\n" "Firstname\n"
" <span class=\"s_website_form_mark\"> *</span>" " <span class=\"s_website_form_mark\"> *</span>"
msgstr "" msgstr ""
"Prénom\n"
" <span class=\"s_website_form_mark\"> *</span>"
#. module: kalachakra #. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_donation_donation__id #: 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_event__id
#: model:ir.model.fields,field_description:kalachakra.field_event_tag_category__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_partnerdraft__id
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile__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_kalachakra_partnerdraftfile_mapping__id
#: model:ir.model.fields,field_description:kalachakra.field_payment_transaction__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" msgid "ID"
msgstr "" msgstr ""
#. module: kalachakra #. module: kalachakra
#: code:addons/kalachakra/models/donation.py:0 #: code:addons/kalachakra/models/donation.py:0
#: code:addons/kalachakra/models/membership.py:0
#, python-format #, python-format
msgid "Invalid token found! Token acquirer %s != %s" msgid "Invalid token found! Token acquirer %s != %s"
msgstr "" msgstr ""
#. module: kalachakra #. module: kalachakra
#: code:addons/kalachakra/models/donation.py:0 #: code:addons/kalachakra/models/donation.py:0
#: code:addons/kalachakra/models/membership.py:0
#, python-format #, python-format
msgid "Invalid token found! Token partner %s != %s" msgid "Invalid token found! Token partner %s != %s"
msgstr "" 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_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_event____last_update
#: model:ir.model.fields,field_description:kalachakra.field_event_tag_category____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_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____last_update
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile_mapping____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_payment_transaction____last_update
#: model:ir.model.fields,field_description:kalachakra.field_product_template____last_update
msgid "Last Modified on" msgid "Last Modified on"
msgstr "Last Updated on" msgstr "Last Updated on"
#. module: kalachakra #. 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_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__write_uid
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile_mapping__write_uid #: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile_mapping__write_uid
@ -214,6 +243,7 @@ msgid "Last Updated by"
msgstr "" msgstr ""
#. module: kalachakra #. 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_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__write_date
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile_mapping__write_date #: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile_mapping__write_date
@ -237,6 +267,19 @@ msgstr ""
msgid "Madame, Monsieur," msgid "Madame, Monsieur,"
msgstr "" 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 #. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt #: 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" msgid "Mode de versement : Chèque, prélèvement ou espèces"
@ -249,6 +292,12 @@ msgid ""
" <span class=\"s_website_form_mark\"> *</span>" " <span class=\"s_website_form_mark\"> *</span>"
msgstr "" msgstr ""
#. module: kalachakra
#: code:addons/kalachakra/controllers/kalachakra.py:0
#, python-format
msgid "No membership product, please add one"
msgstr ""
#. module: kalachakra #. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile__file_name #: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile__file_name
msgid "Nom du fichier" msgid "Nom du fichier"
@ -289,6 +338,8 @@ msgstr ""
#. module: kalachakra #. module: kalachakra
#: code:addons/kalachakra/models/donation.py:0 #: 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 #, python-format
msgid "Pay Now" msgid "Pay Now"
msgstr "" msgstr ""
@ -305,24 +356,34 @@ msgstr "Transaction"
#. module: kalachakra #. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.participation_form #: model_terms:ir.ui.view,arch_db:kalachakra.participation_form
msgid "Choix du paiement"
msgid "Payment choice"
msgstr "" msgstr ""
#. module: kalachakra #. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.participation_form #: model_terms:ir.ui.view,arch_db:kalachakra.participation_form
msgid "Phone" 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 #. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.event_view_form #: model_terms:ir.ui.view,arch_db:kalachakra.event_view_form
msgid "Remove event from google agenda" msgid "Remove event from google agenda"
msgstr "Suppriemr l'événement du calendrier google"
msgstr "Supprimer l'événement du calendrier google"
#. module: kalachakra #. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt #: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt
msgid "Reçu de dons aux Œuvres" msgid "Reçu de dons aux Œuvres"
msgstr "" msgstr ""
#. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.view_membership_search
msgid "Search"
msgstr ""
#. module: kalachakra #. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt #: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt
msgid "Signature<br/>" msgid "Signature<br/>"
@ -339,28 +400,26 @@ msgid ""
"Street 1\n" "Street 1\n"
" <span class=\"s_website_form_mark\"> *</span>" " <span class=\"s_website_form_mark\"> *</span>"
msgstr "" msgstr ""
"Rue 1\n"
" <span class=\"s_website_form_mark\"> *</span>"
#. module: kalachakra #. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.participation_form #: model_terms:ir.ui.view,arch_db:kalachakra.participation_form
msgid "Street 2" msgid "Street 2"
msgstr "Rue 2"
msgstr ""
#. module: kalachakra #. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.thankyou #: model_terms:ir.ui.view,arch_db:kalachakra.thankyou
msgid "Thank you for your generosity !" msgid "Thank you for your generosity !"
msgstr "Merci pour votre générosité!"
msgstr ""
#. module: kalachakra #. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.participation_form #: model_terms:ir.ui.view,arch_db:kalachakra.participation_form
msgid "Title<span class=\"s_website_form_mark\"> *</span>" msgid "Title<span class=\"s_website_form_mark\"> *</span>"
msgstr "Titre<span class=\"s_website_form_mark\"> *</span>"
msgstr ""
#. module: kalachakra #. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.event_calendartui #: model_terms:ir.ui.view,arch_db:kalachakra.event_calendartui
msgid "Today" msgid "Today"
msgstr "Ajourd'hui"
msgstr ""
#. module: kalachakra #. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt #: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt
@ -370,7 +429,7 @@ msgstr ""
#. module: kalachakra #. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.participation_form #: model_terms:ir.ui.view,arch_db:kalachakra.participation_form
msgid "Zip" msgid "Zip"
msgstr "Code postal"
msgstr ""
#. module: kalachakra #. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile__active #: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile__active
@ -380,7 +439,7 @@ msgstr ""
#. module: kalachakra #. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.thankyou #: model_terms:ir.ui.view,arch_db:kalachakra.thankyou
msgid "back Home" msgid "back Home"
msgstr "Page d'accueil"
msgstr ""
#. module: kalachakra #. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_event_event__calendar_id #: model:ir.model.fields,field_description:kalachakra.field_event_event__calendar_id
@ -392,11 +451,26 @@ msgstr ""
msgid "coucou" msgid "coucou"
msgstr "" 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 #. module: kalachakra
#: model:ir.model,name:kalachakra.model_kalachakra_partnerdraftfile #: model:ir.model,name:kalachakra.model_kalachakra_partnerdraftfile
msgid "draft partner file" msgid "draft partner file"
msgstr "" msgstr ""
#. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_membership__end_date
msgid "end date"
msgstr "date de fin"
#. module: kalachakra #. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_event_event__event_id #: model:ir.model.fields,field_description:kalachakra.field_event_event__event_id
msgid "event id" msgid "event id"
@ -422,20 +496,58 @@ msgstr ""
msgid "import draft partner" msgid "import draft partner"
msgstr "" 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 #. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.event_calendartui #: model_terms:ir.ui.view,arch_db:kalachakra.event_calendartui
msgid "next" msgid "next"
msgstr "suite"
msgstr ""
#. module: kalachakra #. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile_mapping__odoo_field #: model:ir.model.fields,field_description:kalachakra.field_kalachakra_partnerdraftfile_mapping__odoo_field
msgid "odoo field" msgid "odoo field"
msgstr "" msgstr ""
#. module: kalachakra
#: model:ir.model.fields,field_description:kalachakra.field_kalachakra_membership__partner_id
msgid "partner"
msgstr "Contact"
#. module: kalachakra #. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.event_calendartui #: model_terms:ir.ui.view,arch_db:kalachakra.event_calendartui
msgid "prev" 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 #. module: kalachakra
#: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt #: 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 #: model_terms:ir.ui.view,arch_db:kalachakra.kalachakra_template_donation_tax_receipt
msgid "{{SIGNATORY}} / {{SIGNATORYJOB}}" msgid "{{SIGNATORY}} / {{SIGNATORYJOB}}"
msgstr "" 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 partnerimport
from . import donation from . import donation
from . import event 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): class DonationDonation(models.Model):
_inherit = 'donation.donation' _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): def _get_payment_type(self, tokenize=False):
self.ensure_one() self.ensure_one()


+ 19
- 15
models/event.py View File

@ -12,7 +12,7 @@ import os.path
from google.oauth2 import service_account from google.oauth2 import service_account
from googleapiclient.discovery import build from googleapiclient.discovery import build
from datetime import datetime, timedelta from datetime import datetime, timedelta
import json
# IF YOU MODIFY THE SCOPE DELETE THE TOKEN.TXT FILE # IF YOU MODIFY THE SCOPE DELETE THE TOKEN.TXT FILE
SCOPES = ['https://www.googleapis.com/auth/calendar'] SCOPES = ['https://www.googleapis.com/auth/calendar']
@ -31,9 +31,11 @@ class EventEvent(models.Model):
_description = 'Event' _description = 'Event'
calendar_id=fields.Char('calendar id') 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): def add_event_to_google_agenda(self):
credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES) credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
delegated_credentials = credentials.with_subject(SUBJECT) delegated_credentials = credentials.with_subject(SUBJECT)
service = build('calendar', 'v3', credentials=delegated_credentials) service = build('calendar', 'v3', credentials=delegated_credentials)
@ -47,7 +49,7 @@ class EventEvent(models.Model):
end=self.date_end.isoformat() end=self.date_end.isoformat()
diff_date=self.date_end-self.date_begin diff_date=self.date_end-self.date_begin
if diff_date.days>0: 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: else:
date_param=self.date_begin.strftime('%Y-%m-%d')+'-'+str(self.id) date_param=self.date_begin.strftime('%Y-%m-%d')+'-'+str(self.id)
@ -58,8 +60,8 @@ class EventEvent(models.Model):
body={"summary": self.name, body={"summary": self.name,
"description": description, "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 #recherche de l'id calendar lié à l'étiquette de l'événément
@ -67,7 +69,8 @@ class EventEvent(models.Model):
if calendar_id: if calendar_id:
event = service.events().insert(calendarId=calendar_id, body=body).execute() 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: else:
raise Warning('no calendar id, please check configuration tags') raise Warning('no calendar id, please check configuration tags')
@ -76,13 +79,14 @@ class EventEvent(models.Model):
delegated_credentials = credentials.with_subject(SUBJECT) delegated_credentials = credentials.with_subject(SUBJECT)
service = build('calendar', 'v3', credentials=delegated_credentials) 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 import models, fields, api
from odoo.exceptions import UserError, ValidationError, Warning from odoo.exceptions import UserError, ValidationError, Warning
from psycopg2 import sql, DatabaseError from psycopg2 import sql, DatabaseError
from datetime import datetime
from werkzeug import utils from werkzeug import utils
@ -58,5 +58,25 @@ class partner(models.Model):
('refuge','Refuge'), ('refuge','Refuge'),
('zoom','zoom'), ('zoom','zoom'),
],'Origine', index=True) ],'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 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="inherit_id" ref="event.view_event_form" />
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//field[@name='stage_id']" position="before"> <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> </xpath>
</field> </field>
</record> </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>
<xpath expr="//field[@name='name']" position="after">
<field name="member_status" widget='label_selection'/>
<field name="super_member"/>
</xpath>
</field> </field>
</record> </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> </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 class="col-form-label font-weight-bold" for="amount">Amount (€)
</label> </label>
<t t-if="kalachakra_transaction=='donation'">
<input type="number" id="amount_id" name="amount" class="form-control " t-att-value="amount"/> <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> </div>


Loading…
Cancel
Save