robin.keunen
5 years ago
10 changed files with 0 additions and 348 deletions
-
2easy_my_coop_online_payment/__init__.py
-
40easy_my_coop_online_payment/__openerp__.py
-
1easy_my_coop_online_payment/controllers/__init__.py
-
112easy_my_coop_online_payment/controllers/main.py
-
65easy_my_coop_online_payment/i18n/fr.po
-
2easy_my_coop_online_payment/models/__init__.py
-
26easy_my_coop_online_payment/models/coop.py
-
47easy_my_coop_online_payment/models/payment_transaction.py
-
25easy_my_coop_online_payment/views/online_payment_template.xml
-
28easy_my_coop_online_payment/views/subscription_request_view.xml
@ -1,2 +0,0 @@ |
|||
from . import models |
|||
from . import controllers |
@ -1,40 +0,0 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# Copyright (C) 2013-2017 Open Architects Consulting SPRL. |
|||
# Copyright (C) 2018- Coop IT Easy SCRLfs. |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU Affero General Public License as |
|||
# published by the Free Software Foundation, either version 3 of the |
|||
# License, or (at your option) any later version. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU Affero General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU Affero General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################## |
|||
{ |
|||
"name": "Easy My Coop Online Payment", |
|||
"version": "1.0", |
|||
"depends": ["easy_my_coop", |
|||
"website_payment", |
|||
"payment_paypal"], |
|||
"author": "Houssine BAKKALI <houssine@coopiteasy.be>", |
|||
"category": "Cooperative management", |
|||
'website': "www.coopiteasy.be", |
|||
"description": """ |
|||
This module allows the cooperator to pay the subscribed shares online |
|||
during the subscription process |
|||
""", |
|||
'data': [ |
|||
"views/online_payment_template.xml", |
|||
"views/subscription_request_view.xml", |
|||
], |
|||
'installable': False, |
|||
'application': False, |
|||
} |
@ -1 +0,0 @@ |
|||
from . import main |
@ -1,112 +0,0 @@ |
|||
# -*- coding: utf-8 -*- |
|||
|
|||
from openerp import http |
|||
from openerp.http import request |
|||
from openerp.tools.translate import _ |
|||
|
|||
from openerp.addons.easy_my_coop.controllers.main import WebsiteSubscription |
|||
from openerp.addons.website_payment.controllers.main import website_payment |
|||
|
|||
|
|||
class SubscriptionOnlinePayment(WebsiteSubscription): |
|||
|
|||
def fill_values(self, values, is_company, load_from_user=False): |
|||
values = super(SubscriptionOnlinePayment, self).fill_values(values, is_company, load_from_user) |
|||
fields_desc = request.env['subscription.request'].sudo().fields_get(['payment_type']) |
|||
values['payment_types'] = fields_desc['payment_type']['selection'] |
|||
|
|||
return values |
|||
|
|||
def get_subscription_response(self, values, kwargs): |
|||
subscription = values.get('subscription_id', False) |
|||
if kwargs.get('payment_type') == 'online': |
|||
invoice = subscription.validate_subscription_request()[0] |
|||
acquirer = request.env['payment.acquirer'].search([('website_published', '=', True)])[0] |
|||
return website_payment().pay(reference=invoice.number, amount=invoice.residual, currency_id=invoice.currency_id.id, acquirer_id=acquirer.id) |
|||
else: |
|||
values = self.preRenderThanks(values, kwargs) |
|||
return request.website.render(kwargs.get("view_callback", "easy_my_coop.cooperator_thanks"), values) |
|||
|
|||
return True |
|||
|
|||
|
|||
class SubscriptionWebsitePayment(website_payment): |
|||
|
|||
@http.route(['/website_payment/transaction'], |
|||
type='json', |
|||
auth="public", website=True) |
|||
def transaction(self, reference, amount, currency_id, acquirer_id): |
|||
inv_obj = request.env['account.invoice'] |
|||
partner_id = request.env.user.partner_id.id if request.env.user.partner_id != request.website.partner_id else False |
|||
capital_release_request = inv_obj.sudo().search([('release_capital_request', '=', True), |
|||
('number', '=', reference)]) |
|||
|
|||
values = { |
|||
'acquirer_id': int(acquirer_id), |
|||
'reference': reference, |
|||
'amount': float(amount), |
|||
'currency_id': int(currency_id), |
|||
'partner_id': partner_id, |
|||
'release_capital_request': capital_release_request.id, |
|||
} |
|||
|
|||
if len(capital_release_request) > 0: |
|||
values['partner_id'] = capital_release_request.partner_id.id |
|||
values['release_capital_request'] = capital_release_request.id |
|||
|
|||
tx = request.env['payment.transaction'].sudo().create(values) |
|||
request.session['website_payment_tx_id'] = tx.id |
|||
return tx.id |
|||
|
|||
@http.route(['/website_payment/confirm'], |
|||
type='http', |
|||
auth='public', website=True) |
|||
def confirm(self, **kw): |
|||
tx_id = request.session.pop('website_payment_tx_id', False) |
|||
if tx_id: |
|||
tx = request.env['payment.transaction'].sudo().browse(tx_id) |
|||
status = (tx.state == 'done' and 'success') or 'danger' |
|||
message = (tx.state == 'done' and 'Your payment was successful! It may take some time to be validated on our end.') or 'OOps! There was a problem with your payment.' |
|||
return request.website.render('website_payment.confirm', {'tx': tx, 'status': status, 'message': message}) |
|||
else: |
|||
return request.redirect('/my/home') |
|||
|
|||
@http.route(['/website_payment/pay'], |
|||
type='http', |
|||
auth='public', website=True) |
|||
def pay(self, reference='', amount=False, currency_id=None, |
|||
acquirer_id=None, **kw): |
|||
env = request.env |
|||
user = env.user.sudo() |
|||
|
|||
currency_id = currency_id and int(currency_id) or user.company_id.currency_id.id |
|||
currency = env['res.currency'].browse(currency_id) |
|||
|
|||
# Try default one then fallback on first |
|||
acquirer_id = acquirer_id and int(acquirer_id) or \ |
|||
env['ir.values'].get_default('payment.transaction', 'acquirer_id', company_id=user.company_id.id) or \ |
|||
env['payment.acquirer'].search([('website_published', '=', True), ('company_id', '=', user.company_id.id)])[0].id |
|||
|
|||
acquirer = env['payment.acquirer'].with_context(submit_class='btn btn-primary pull-right', |
|||
submit_txt=_('Pay Now')).browse(acquirer_id) |
|||
# auto-increment reference with a number suffix if the reference already exists |
|||
reference = request.env['payment.transaction'].get_next_reference(reference) |
|||
|
|||
partner_id = user.partner_id.id if user.partner_id.id != request.website.partner_id.id else False |
|||
capital_release_request = request.env['account.invoice'].sudo().search( |
|||
[('release_capital_request', '=', True), |
|||
('number', '=', reference)] |
|||
) |
|||
|
|||
if len(capital_release_request) > 0: |
|||
partner_id = capital_release_request.partner_id.id |
|||
|
|||
payment_form = acquirer.sudo().render(reference, float(amount), currency.id, values={'return_url': '/website_payment/confirm', 'partner_id': partner_id})[0] |
|||
values = { |
|||
'reference': reference, |
|||
'acquirer': acquirer, |
|||
'currency': currency, |
|||
'amount': float(amount), |
|||
'payment_form': payment_form, |
|||
} |
|||
return request.website.render('website_payment.pay', values) |
@ -1,65 +0,0 @@ |
|||
# Translation of Odoo Server. |
|||
# This file contains the translation of the following modules: |
|||
# * easy_my_coop_online_payment |
|||
# |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: Odoo Server 9.0c\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2017-01-18 21:56+0000\n" |
|||
"PO-Revision-Date: 2017-01-18 23:19+0100\n" |
|||
"Last-Translator: <>\n" |
|||
"Language-Team: \n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=UTF-8\n" |
|||
"Content-Transfer-Encoding: 8bit\n" |
|||
"Plural-Forms: nplurals=2; plural=(n > 1);\n" |
|||
"X-Generator: Poedit 1.6.5\n" |
|||
"Language: fr\n" |
|||
|
|||
#. module: easy_my_coop_online_payment |
|||
#: model:ir.ui.view,arch_db:easy_my_coop_online_payment.SubscriptionOnlinePayment |
|||
msgid "<i class=\"fa fa-arrow-circle-right\"/> Pay Now" |
|||
msgstr "<i class=\"fa fa-arrow-circle-right\"/> Pay Now" |
|||
|
|||
#. module: easy_my_coop_online_payment |
|||
#: selection:subscription.request,payment_type:0 |
|||
msgid "Deferred" |
|||
msgstr "Différé" |
|||
|
|||
#. module: easy_my_coop_online_payment |
|||
#: selection:subscription.request,payment_type:0 |
|||
msgid "Online" |
|||
msgstr "En ligne" |
|||
|
|||
#. module: easy_my_coop_online_payment |
|||
#: code:addons/easy_my_coop_online_payment/controllers/main.py:86 |
|||
#: model:ir.ui.view,arch_db:easy_my_coop_online_payment.SubscriptionOnlinePayment |
|||
#, python-format |
|||
msgid "Pay Now" |
|||
msgstr "Payer Maintenant" |
|||
|
|||
#. module: easy_my_coop_online_payment |
|||
#: model:ir.model,name:easy_my_coop_online_payment.model_payment_transaction |
|||
msgid "Payment Transaction" |
|||
msgstr "Transaction" |
|||
|
|||
#. module: easy_my_coop_online_payment |
|||
#: model:ir.model.fields,field_description:easy_my_coop_online_payment.field_subscription_request_payment_type |
|||
msgid "Payment Type" |
|||
msgstr "Type de paiement" |
|||
|
|||
#. module: easy_my_coop_online_payment |
|||
#: model:ir.ui.view,arch_db:easy_my_coop_online_payment.subscription_payment_type |
|||
msgid "Payment type" |
|||
msgstr "Type de paiement" |
|||
|
|||
#. module: easy_my_coop_online_payment |
|||
#: model:ir.model.fields,field_description:easy_my_coop_online_payment.field_payment_transaction_release_capital_request |
|||
msgid "Release Capital request" |
|||
msgstr "Demande de libération de capital" |
|||
|
|||
#. module: easy_my_coop_online_payment |
|||
#: model:ir.model,name:easy_my_coop_online_payment.model_subscription_request |
|||
msgid "Subscription Request" |
|||
msgstr "Demande de souscription" |
@ -1,2 +0,0 @@ |
|||
from . import payment_transaction |
|||
from . import coop |
@ -1,26 +0,0 @@ |
|||
# -*- coding: utf-8 -*- |
|||
from openerp import fields, models |
|||
|
|||
|
|||
class SubscriptionRequest(models.Model): |
|||
_inherit = 'subscription.request' |
|||
|
|||
payment_type = fields.Selection([('online', 'Online'), |
|||
('deferred', 'Deferred')], |
|||
string='Payment Type', |
|||
default="deferred") |
|||
|
|||
def send_capital_release_request(self, inv): |
|||
if self.payment_type == 'deferred': |
|||
super(SubscriptionRequest, self).send_capital_release_request(inv) |
|||
return True |
|||
|
|||
|
|||
class AccountInvoice(models.Model): |
|||
_inherit = 'account.invoice' |
|||
|
|||
def post_process_confirm_paid(self, effective_date): |
|||
if self.subscription_request.payment_type == 'deferred': |
|||
self.set_cooperator_effective(effective_date) |
|||
|
|||
return True |
@ -1,47 +0,0 @@ |
|||
# -*- coding: utf-8 -*- |
|||
from datetime import datetime |
|||
import logging |
|||
|
|||
from openerp import api, fields, models |
|||
|
|||
_logger = logging.getLogger(__name__) |
|||
|
|||
|
|||
class PaymentTransaction(models.Model): |
|||
|
|||
_inherit = 'payment.transaction' |
|||
|
|||
release_capital_request = fields.Many2one('account.invoice', |
|||
string="Release Capital request") |
|||
|
|||
@api.model |
|||
def process_online_payment_reception(self, tx): |
|||
release_capital_request = tx.release_capital_request |
|||
release_capital_request.subscription_request[0].state = 'paid' |
|||
effective_date = datetime.now().strftime("%d/%m/%Y") |
|||
release_capital_request.sudo().set_cooperator_effective(effective_date) |
|||
|
|||
return True |
|||
|
|||
@api.v7 |
|||
def _paypal_form_validate(self, cr, uid, tx, data, context=None): |
|||
status = data.get('payment_status') |
|||
res = { |
|||
'acquirer_reference': data.get('txn_id'), |
|||
'paypal_txn_type': data.get('payment_type'), |
|||
} |
|||
if status in ['Completed', 'Processed']: |
|||
_logger.info('Validated Paypal payment for tx %s: set as done' % (tx.reference)) |
|||
res.update(state='done', date_validate=fields.Datetime.now()) |
|||
result = tx.write(res) |
|||
self.process_online_payment_reception(cr, uid, tx) |
|||
return result |
|||
elif status in ['Pending', 'Expired']: |
|||
_logger.info('Received notification for Paypal payment %s: set as pending' % (tx.reference)) |
|||
res.update(state='pending', state_message=data.get('pending_reason', '')) |
|||
return tx.write(res) |
|||
else: |
|||
error = 'Received unrecognized status for Paypal payment %s: %s, set as error' % (tx.reference, status) |
|||
_logger.info(error) |
|||
res.update(state='error', state_message=error) |
|||
return tx.write(res) |
@ -1,25 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<odoo> |
|||
<data> |
|||
<template id="subscription_payment_type" inherit_id="easy_my_coop.becomecooperator" name="Removing fields"> |
|||
<xpath expr="//div[@name='share_div']" position="after"> |
|||
<div t-attf-class="form-group #{error and 'payment_type' in error and 'has-error' or ''}"> |
|||
<label class="col-md-3 col-sm-4 control-label" for="company_type">Payment type</label> |
|||
<select name="payment_type" class="col-md-7 col-sm-8 form-control" required="True" style="width:54%;margin-left:15px"> |
|||
<option value=""></option> |
|||
<t t-foreach="payment_types or []" t-as="pay_type"> |
|||
<option t-att-value="pay_type[0]" t-att-selected="pay_type[0] == payment_type"><t t-esc="pay_type[1]"/></option> |
|||
</t> |
|||
</select> |
|||
</div> |
|||
</xpath> |
|||
</template> |
|||
|
|||
<template id="easy_my_coop_online_payment.SubscriptionOnlinePayment" name="Subscription Online Payment" page="True"> |
|||
<a t-if="invoice.state == 'open'" t-attf-href="/website_payment/pay?reference=#{invoice.number}&amount=#{invoice.residual}&currency_id=#{invoice.currency_id.id}&acquirer_id=#{acquirer_id}&country_id=#{invoice.partner_id.country_id.id}" alt="Pay Now" class="btn btn-xs btn-primary"><i class="fa fa-arrow-circle-right"/> Pay Now</a> |
|||
</template> |
|||
</data> |
|||
</odoo> |
|||
|
|||
|
|||
|
@ -1,28 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<odoo> |
|||
<data> |
|||
|
|||
<record id="online_payment_subreq__tree" model="ir.ui.view"> |
|||
<field name="name">subscription.request.tree</field> |
|||
<field name="model">subscription.request</field> |
|||
<field name="inherit_id" ref="easy_my_coop.subscription_request_tree"/> |
|||
<field name="arch" type="xml"> |
|||
<field name="type" position="after"> |
|||
<field name="payment_type"/> |
|||
</field> |
|||
</field> |
|||
</record> |
|||
|
|||
<record id="online_payment_subreq_form" model="ir.ui.view"> |
|||
<field name="name">subscription.request.tree</field> |
|||
<field name="model">subscription.request</field> |
|||
<field name="inherit_id" ref="easy_my_coop.subscription_request_form"/> |
|||
<field name="arch" type="xml"> |
|||
<field name="date" position="after"> |
|||
<field name="payment_type"/> |
|||
</field> |
|||
</field> |
|||
</record> |
|||
|
|||
</data> |
|||
</odoo> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue