Commit Graph
159 Commits
Author SHA1 Message Date
tbe-odoo 378f4cdfec [IMP] payment: Supported payment options
- Added the ability to specify which payment option each payment acquirer supports and,
    displays those payment option on e-commerce footer.
2017-08-24 11:20:14 +02:00
tbe-odoo 2df9c22d80 [IMP] Payments & subscriptions: Improved Payments
- When registering a payment token, validating it using a payment of a small amount (~1.50€) followed by a refund allows ensuring
    that the payment method is valid (i.e. checksumming the card number simple ensure the number is valid but not that the card exists).
    This commit introduces a generic approach that must be implemented for each acquirer that has tokenization support.
    This commit also introduces a generic payment token registration/usage template that can be adapted according to one's need.
- Introducing a new payment form that handles payment, deletion and adding payment method (only for server2server for the moment).
- On /my/payment_method, changed strings 'Payment Acquirers' to 'Payment Methods' which is more clear.
- Stripe can now be used to pay subscriptions.
2017-08-14 08:30:59 +02:00
tbe-odoo 7d428c871b [IMP] payment, website_payment: generic mechanism to verify payment tokens on registration
When registering a payment token, validating it using a payment of a small amount followed by a refund
allows ensuring that the method is valid (i.e. checksumming the card number simple ensure the number
is valid but not that the card exists). This commit introduces a generic approach that must be implemented
for each acquirer that has tokenization support. This commit also introduces a generic payment token registration/usage template that can be adapted according to one's need.

payment_ogone: add support for tokens validation
2017-07-14 11:57:19 +02:00
Elkasitu 0e39cc9345 [IMP] payment: Add search for token_implemented
Since subscriptions only accept tokenizable (credit-cards and such)
payment options, we must use the token_implemented field to filter out
non-tokenizable payment options (such as wire transfer) and because
token_implemented is a computed field, a search function had to be
created
2017-07-07 20:06:41 +02:00
Christophe Simonis dd43071638 [MERGE] forward port branch saas-16 up to 278e478d55 2017-06-27 14:19:31 +02:00
Christophe Simonis 34b432d528 [MERGE] forward port branch saas-15 up to 4d79a1ff58 2017-06-26 19:19:39 +02:00
Christophe Matthieu 4d79a1ff58 [FIX] payment: prevent access error for manual payments
Rev. cf1df16aea introduced new callback
fields with restricted access. The lazy hash generation in create() was
however causing access errors for manual transactions created by users
who are not administrators (e.g. Accountants).

Those manual transactions do not typically need a callback, but checking
the presence of the callback requires a limited sudo() context.

Similarly, the execute_callback() method may be called for a manual,
non-admin transaction, and should not do anything if there is no
callback, instead of crashing with an AccessError.

The generation of the hash and execution of the callback should be done
with a normal environment, though, as these must only be used for
transactions run by the system.

opw-747536
2017-06-26 15:09:13 +02:00
Yannick Tivisse e4152792ff [IMP] payment: Set automatically a default value for journal_id if not set
Purpose
=======

The field journal_id on a payment.acquired is required on the view. The only issue is that the journals cannot be created before having installed a localization. When the payment acquire module is installed before the localization, the journal id is not set on the payment acquire and it's impossible to make a call to `write` (For example publish the acquire)

Specification
=============

When making a write or a create on a payment acquire, udpate the journal_id with a default value if not set.
2017-06-02 15:53:09 +02:00
Yannick Tivisse 4aa2fad313 [IMP] payment: Remove auto_confirm field and simplify views.
PURPOSE
=======

The field auto_confirm is complicated to understand for common users. Furthermore, on of its options is only useful for authorize module.

SPECIFICATION
=============

Remove the auto_confirm field. The destinies of its options are the following:
- none: Simply disappear.
- authorize: Become capture_manually. It has nothing to do with the auto_confirm field has it's related to the autorize module (And could be extended to other payment acquirers too).
- confirm_so: Remove it. Will be automatic, and we will always validate the sales order and generate the accounting entries on acquirer validation.
- generate_and_pay_invoice: Is linked to the journal_id. The field journal_id is always set and we will use it to validate the sales order and generate the accounting entries on acquirer validation.

Bonus: website_sale: Allow to create/validate invoice automatically on `Mark as Paid`
2017-06-02 15:31:47 +02:00
Olivier Dony 5d2869cbc8 [MERGE] Forward-port saas-16 up to ba15df47cb 2017-06-01 01:46:13 +02:00
Olivier Dony ba15df47cb [MERGE] Forward-port saas-15 up to 17b847c0f6 2017-06-01 01:10:29 +02:00
Olivier Dony 5dd2cc8e63 [MERGE] Forward-port saas-14 up to b9e2207267 2017-06-01 00:37:30 +02:00
Olivier Dony b9e2207267 [MERGE] Forward-port 10.0 up to 7e44444878 2017-06-01 00:15:27 +02:00
Yenthe V.G 717002c2da [FIX] payment: untranslated string
Closes #17256
2017-05-29 10:57:14 +02:00
Yenthe V.G c80a32f9df [FIX] payment: untranslated message
Without this the error message will always be in English, no matter the language
of the end-user.

Closes #17141
2017-05-22 10:16:30 +02:00
Jitendra Prajapati b6d636617c [FIX] payment: perform small code improvements
* add a constraints about authorized state for tx and authorize feature
   available on acquirer;
 * order acquirers first by publish, then sequence then name;
 * add a sequence on some provider data and use a default to have some
   popular acquirers first;
 * use update instead of write in an onchange;
2017-05-17 14:41:00 +02:00
Jitendra Prajapati de5433f415 [IMP] payment: improve usability of tx views
* add provider, related on acquirer_id.provider, in order to display
   certain piece of information on tx depending on their provider;
 * better tx form view and partner address display;
 * remove unnecessary notebook on tx form view as it is not used;
 * rename Payment Acquirers menu into Payment Methods, easier to
   understand;
 * acquirer kanban view improved to install / activate / configure them
   depending on their state;
 * be able to publish / unpublish acquirers without having to wait for
   website_payment to add a button;
2017-05-17 14:40:35 +02:00
Jitendra Prajapati 327be89d0b [IMP] payment: improve labelling and description of various acquirers
Be less ecommerce centric and try to explain a bit better the various
payment options. Purpose is to ease user understanding.
2017-05-17 13:14:54 +02:00
Olivier Dony 5f4db9df66 [MERGE] Forward-port saas-16 up to 5afe894f44 2017-05-16 18:23:15 +02:00
Olivier Dony 5afe894f44 [MERGE] Forward-port saas-15 up to 878fbc75ff 2017-05-16 17:09:45 +02:00
Thibault Delavallée a995e28554 [FIX] payment: set enviroment back in its own environment 2017-05-16 15:35:11 +02:00
Olivier Dony 61c2b8efd5 [MERGE] Forward-port of saas-14 up to 9b3ca1af23 2017-05-16 12:47:44 +02:00
xmo-odoo fffaf735f5 [FIX] P3: list -> iterable builtins (#16811)
In Python 3:

* various builtins and dict methods were changed to return
  view/iterable objects rather than lists
* and the separate Python 2 view/iterable builtins and methods were
  removed altogether

This is problematic when using these items as list (which the happens
repeatedly in Odoo), but more viciously when iterating *multiple times*
over them (which also happens, which I've messed up multiple times while
writing this, and which is a pain to debug even when you've just created
the issue).

Convert all code using these to semantics-matching cross-version
helper functions to get the LCD behaviour between P2 and P3, and
forbid the builtins via lint.

issue #8530
2017-05-10 09:39:55 +02:00
xmo-odoo b4429c2a91 [FIX] Various P3-related import changes
* LDAP import: python-ldap is not python3-compatible, pyldap is

  Warning: only supported from debian Stretch (current testing)?
  https://packages.debian.org/search?searchon=names&keywords=pyldap

* implicitly relative imports
* imports of moved or removed stdlib modules

issue #8530
2017-04-28 09:06:53 +02:00
Christophe Simonis 39ab200cd3 [MERGE] forward port branch saas-15 up to 780064ea89 2017-04-18 18:37:24 +02:00
Christophe Simonis 6c02d0de41 [MERGE] forward port branch saas-14 up to 2b3a5c8ec8 2017-04-18 18:16:13 +02:00
Christophe Simonis 2b3a5c8ec8 [MERGE] forward port branch 10.0 up to 72b7eb7e6e 2017-04-18 17:59:08 +02:00
Nicolas Martinelli 31dc6b888e [FIX] payment, website_sale: SIPS adaptation
SIPS payment has two limitations:
- A payment reference can only be used once, even if the payment was not
  proceeded
- A payment reference can only contain alphanumerical characters

These limitations do not fit the payment process which:
- Reuses existing transactions
- Introduces a `-` character when creating a new transaction for the
  same order.

First issue is solved by an ugly hack since there is no link module
between `website_sale` and `payment_sips` in order to override the
behavior of `sale_get_transaction`.

Second issue is solved by modifying the character to `x`. In this case,
we could consider overriding the method `get_next_reference` in
`payment_sips`. However, this method is called before the creation of
the transaction, and we should do a crappy workaround using the context
to get the `acquier_id`.

opw-728209
2017-04-13 16:18:09 +02:00
Fabien Pinckaers 525d094ef6 [IMP] account: misc UX improvements
Allow to configure the bank statement import mode from kanban
    When doing a manual journal entry, don't show the maturity date
    Removing Issued total, using credit instead (less code, more
    useful to have due amounts, instead of overdue)
    Creating a bank, set a name 'BofA Current' and an
    account number (that way, the account.account is based
    on name)
    Settings Wizard & menus: better sentences
    Statement CSV Import: installed by default (it
    does not add any menu)
    remove use_in_payment: complex field, only
    used for a default value
    Small code cleanup
[IMP] sale: moving order date to secondary tab (strange on a quotation)
2017-04-08 16:52:05 +02:00
Thibault Delavallée cf1df16aea [IMP] payment_*, website_quote: change callback_eval string to parameters
callback_eval is currently a code string that is evaluated directly
at payment confirmation. This commit changes it to have parameters
on the record and method to call on it. Moreover a hash done once at
transaction creation ensure that a modified transaction does not allow
to execute code on other records.
2017-02-13 16:58:47 +01:00
Christophe Simonis 6a942a9e96 [MERGE] forward port branch 10.0 up to 8a0151b4bc 2017-02-02 12:42:51 +01:00
Nicolas Martinelli a63ea592d4 [FIX] payment: payment reference length
The payment reference of a S2S transaction has the given format:
'PAYMENT-9-170110_200204'. However, the reference is too long for some
providers such as Authorize (limited to 20 characters).

We make the reference less verbose as a first step to solve the issue.
However, case-by-case solutions will need to be found since the
reference depends on the id, which will ultimately grow.

opw-704615
2017-01-26 15:00:36 +01:00
Christophe Simonis 6c4389df41 [MERGE] forward port branch 10.0 up to 6804085b8c 2017-01-23 14:33:53 +01:00
Nicolas Martinelli d4a4d440f5 [FIX] payment: token domain
The token domain should be extended to the commercial partner and its
siblings.

opw-705441
2017-01-23 13:12:40 +01:00
Nicolas Martinelli f96bbfd956 [IMP] payment: token order
Sort the payment tokens by descending id, so that the default token
selected for a partner is the last one.

opw-705441
2017-01-23 13:12:40 +01:00
George Daramouskas 5a992857b8 [FIX] payment: do not rely on English as default language
If the database is create in monolangue and `en_US` is not present, the default
value computation crashes as tries to assign a value not present in the
selection (all installed languages).

Use the environment language as default (same as the default of res.partner).
It may be empty but not a value not existant in the database.

Fixes #15165 
Closes #15176
2017-01-23 12:07:14 +01:00
Jérome Maes b9f4a98774 [IMP] account,payment: account journal visibility
Remove field 'display_on_footer' to stop displaying
account journal on report documents.
As the field is removed but also used in payment to
generate default 'Thanks Message', put a new field
on account.journal in payment module, to keep the
role 'display_on_footer' had in payment.
2017-01-04 18:51:00 +01:00
Christophe Simonis 4d9f5bbf5b [MERGE] forward port branch 10.0 up to ab98523 2016-11-02 18:02:11 +01:00
Nicolas Martinelli 92d2916a67 [FIX] payment: incorrect method name
opw-692341
2016-10-28 11:19:00 +02:00
Christophe Simonis ea479ce6f3 [MERGE] forward port branch 10.0 up to 3bb022d 2016-10-27 18:23:44 +02:00
Nicolas Martinelli bbe9bc4026 [FIX] payment: traceback
Boom boom if `clean_vals` not defined.

opw-691706
2016-10-20 15:14:03 +02:00
rmu-odoo 542201eed3 [IMP] payment: support defining payment providers for specific countries. 2016-10-20 11:59:17 +02:00
qdp-odoo 4e0053fe86 [FIX] payment: clear the mess about electronical payment.
It is already defined as a payment method (subtype=inbound) and that's what we want. No need of adding 'electronic' in 'payment_type' selection (that crashes if we select that, btw) and 'payment_method_id_code' is a duplicate of 'payment_method_code'.
2016-09-27 12:52:50 +02:00
Fabrice Henrion 743743db28 [IMP] payment: wording for auto_confirm selections 2016-09-02 11:11:29 +02:00
Damien Bouvy ffd527d027 [IMP] payment, payment_*: add/improve tokenization support
This commit improves the tokenization process, allowing users
to set the acquirer to save payment data never, always or letting
the customer decide (only implemented in ecommerce for now).

Support for tokenization is improved for Ogone and Authorize.net

This commits also factorizes advanced payment features support
(authorization, tokenization, fees computation) in a generic method
overriden by every provider to specifiy which features are supported.
This process can be used in views to hide/show fields depending on
feature support or in constraint checks.
2016-09-01 15:58:41 +02:00
Damien Bouvy cd98731284 [IMP] payment: prevent 'authorize-only' transaction to settle invoice 2016-09-01 15:58:41 +02:00
Shivam Dudhat ba87ff438d [IMP] payment: avoid warning on payment.token creation
Since the creates overrides needs some information that do not end up
in the final record, let's avoid warning by removing all non-model
fields from the call to super.
2016-09-01 15:58:41 +02:00
Damien Bouvy a2d249f1a4 [IMP] website_(portal_sale|sale|quote), payment: add authorization payment flow steps
This allows using a modern e-commerce flow where amounts are first
authorized at checkout then captured when the picking is in fact
shipped instead of immediately capturing the amount.

To access this flow, a new selection value is available on the payment
acquirer: "Authorize the amount and confirm the SO on acquirer
confirmation". If this value is selected, s2s/form transactions should
only require authorization to the acquirer; the user can then
capture/void the payment manually from the Odoo backend transaction
form view by simply using buttons.
2016-09-01 15:58:41 +02:00
Damien Bouvy 406611967b [FIX] payment: use standard odoo exceptions
An old hack simple overrode the standard python ValueError instead
of except_orm, which explains how it survived for so long.
2016-09-01 15:58:41 +02:00
Denis Vermylen (dve) 782c4b5665 [IMP] payment: hide fields on acquirer form view
Fields are hidden when needed, some moved to debug mode.
2016-08-31 17:17:38 +02:00