Purpose: When a user print a report, for the first time, if there is
no default template choosen, the user should choose a
template AND should be able to update company information at
the same time.
The company form have to be simplified.
* The company report form now inherits from the company form
* Removing the Curency from the company view
* The choosen template is now highlighted
* Footer and website are moved to the other column to balance the view
base_vat: Removing the VIES VAT check from company form view
base_vat_autocomplete: Move VAT as the first field to fill on the
company form view
Purpose
=======
- Settings are too complex: too long + too many options that shouldn't be suggested with checkboxes
e.g. twitter roller is now suggested as a new snippet to install from website editor
google maps, slides, forum, etc. should show up in the apps store
- When saving the page I expect to stay in the settings -> no redirection to homepage anymore!
Specification
=============
See task 33620
This merge improve account and sale customer portal by
* adding quote confirmation and signature in sale portal;
* adding a signature widget replacing the one in website_quote;
* improving the payment form to support URLs and access token
propagation;
* adding payment support on orders in sale_payment portal with both
server2server and form-based payments;
* adding payment support on invoices in account_payment portal with
both server2server and form-based payments;
* globally improving navigation, display and access token use in
account and sale customer portal;
Please refer to subcommits for more details. Thanks to @jpr-odoo for
preliminary work on those features. Closes#19074.
This commit adds support of payment in the account customer portal. This
is done in the account_payment module. This way customers can now pay
invoices directly on the customer portal and have access to the status
of their invoices. It replaces the old website payment mechanism that
was only allowing to pay without generating payments and reconciliating
them.
Two routes are defined in this commit, one for form-based payments and
one for server2server-based payment. Please refer to commit 1fdb10f0ac
for more details about the new payment form.
Tools methods are added to handle transaction / invoice matching, the
check of invoice and the automatic payment and reconciliation.
Before this commit, the scroll was reset to the top of the calendar after
an event quick create.
This commit fixes this by defining the get/set localState for the calendar
renderer in order to keep the scroll and calling 'reinitView' from the
fullCalendar lib instead of always calling 'render'.
Purpose of this commit is to add a link between invoices and transactions
to store payment data like what is already done for sale orders.
* add payment_tx_id on account.invoice model that stores the last
transaction; also add the acquirer related on the tx;
* add a stat button on invoice with links to all transactions linked
to that invoice;
* add account_invoice_id on payment.transaction model that stores the
link to the invoice;
* add the inverse one2many from invoice to all its transactions so
that we can browse them if necessary;
* keep query on pdf link so that customers have access to the pdf when
using the access token instead of having an access rights error;
* add redirect to record override that allow to take into account
/mail/view links containing an access token for invoices like what
is already supported for sale orders;
* improve action buttons display;
* reduce headers and better display invoice name and customer address;
Purpose is to allow to display error, warning or success messages based
on some user action like payment. This is done using kwargs in the invoice
view route. Codes are added in URL and message display has to be managed
in the template itself. Inheriting modules and/or new features will have
to add their specific message according to the error, warning or success
messages they want to support.
The 'View', 'Accept and Sign', 'Pay Online' buttons are now correctly
computed based on the sales settings or the online quote settings.
Indeed it is now possible to sign and/or pay quotations without having
website_quote module installed.
This commit adds support of payment in the sale customer portal. This
is done in the sale_payment module and uses the settings introduced
previously about online confirmation and payment. This way customers can
now pay orders without having to rely on online quote mechanism.
Two routes are defined in this commit, one for form-based payments and
one for server2server-based payment. Please refer to commit 1fdb10f0ac
for more details about the new payment form.
Some small modifications are done SO confirmation and invoice generation
methods to return error codes that can be used in the customer portal.
As return values were not used in website_sale or website_quote this
should not impact those modules.
Purpose of this commit is to ease the use of the payment widget and
avoid having to perform too much custom code in the various routes used
when doing payments :
* when instantiating the widget give him its parent element data so
that parameters given when calling the payment form template are
automatically present in the widget options;
* support more parameters when calling the route for form-based acquirers
including access_token, URLs and callback method;
* when doing a form-based payment a call to a JSON route returning the
rendered form is done. Payment widget now uses all data from that
form including the URL of the acquirer website. This way form-based
acquirers are really dynamic and values update is easier;
* remove hidden display of form-based acquirers as all data come now
from the called JSON route that returns the form;
* add a warning about partner-id not being set as it is an issue some
people may encounter;
Online quote can now use the generic signature widget already used on
the standard sale customer portal. We therefore remove the custom
widget build in website_quote.
A route already exists to sign quotes; the old route is removed. The
existing route is overridden so that quotations with template requiring
payment cannot be signed. This is the expected behavior.
* website_quote should not override all sale links from the customer
portal to replace them by website_quote specific view. Indeed the
quote view should be used only if the order has an active template
defined on it;
* do not override existing columns of the order page view on portal
with same content;
* implement redirection at route level by overriding the
controller order route;
Customers can access orders using an access token. Order page view may
contain links to invoices linked to that order. However currently the link
does propagate the use of access token and therefore leads to a crash due
to access rights error. This is improved here by adding the invoice access
token in the embedded links.
Purpose is to allow customers to accept and confirm orders on the
customer portal without having to rely on advanced website_quote
(online quotation) features. Including :
* add quote confirmation route;
* add support in customer portal using the newly-introduced signature
widget;
* add action button on the order page view;
Purpose is to allow to display error, warning or success messages based
on some user action like signature or payment. This is done using kwargs
in the order view route. Codes are added in URL and message display has to
be managed in the template itself. Inheriting modules and/or new features
will have to add their specific message according to the error, warning
or success messages they want to support.
* separate signature and payment option from website_quote template
feature;
* add a settings to choose whether to display the confirmation or
pay buttons in customer portal;
* simplify settings about website_quote now talking only about
the module itself;
This commit only adds the settings and parameter. Future commits will
use those parameters to effectively trigger some features and hide or
display part of customer portal.
This generic widget allow to confirm and sign documents on the customer
portal. Purpose is to reuse it in sale customer portal and online quotes
notably. It is made generic to call a route using parameters given to the
widget. It also supports access token to ease its use in various customer
portal pages where the customer is not always connected but is granted
access through an access token.
It does not have any impact in current stable as the inherited
method does not use it. However if another addon inherit it
it will not receive access_token depending on call chain. Let
us fix it.
This is a manual forward-port of ce9ed600ca.
- Import a CSV file without header
- Untick the option 'The first row contains the label of the column'
An error is reported.
If no header, the method `_match_headers` should return consistent
object types.
opw-769117
Purpose
=======
As the method `channel_fetch_message` calls self.ensure_one(), we shouldn't load the channel history if no channel is already existing for the external user.
Specification
=============
Return a empty list if channel_id is False
Purpose
=======
It makes no sense to crop an image from a ration. We don't say "I don't know my image size, but divide it by 2"
Specification
=============
Pass a maximum size argument instead of a thumbnail ratio
Before this commit, we did not really handle gracefully editing a
one2many with many records. The main issue is that if the user was not
on the last page, creating a new record added it to the last page, which
is confusing and actually a bad idea for records with required fields.
This fix requires a way to track the current changes (because we do not
display the current state of the form view: the new record is displayed
in the first page, but is actually added at the end of the dataset).
Note that this probably does not solve all issues with pagination. This
is a quite delicate problem. We will add tests and fixes as needed.
We have a new runbot server which is quite slow. Because of this, it
takes too much time to run this unit test suite (for comparison, one of
the last build by the main runbot takes 126s).
This is necessary for now, until we use chrome headless or something...
Before this commit, only the routes which began by '/web/image' were
mocked (simply ignored). This forgot the case were it is a full URL
(http://www.test.com/web/image). Now, also mock the static images
routes (for .png and .jpg).