Posting a message on a custom model (i.e. created with Studio) crashed.
If it's a custom model, its `_original_module` attribute is not correctly set so
trying to retrieve the icon based on this attribute does not work.
Before this rev., onchange specs where only computed up to level
2 (i.e. for fields inside x2many fields). So basically, if there
were a one2many list inside a one2many (e.g. which opens in a
form view), the fields of that inner one2many list weren't added
to the specs, and it could lead to unexpected responses from the
server (like erasing the changes made on the inner one2many
records).
Closes#19600
* set height for draw signature when user want to accept order to avoid
various display issues;
* fix name input not being displayed as error if trying to sign with a
void partner name;
* no more show 'Accept & Sign' button if customer signed document;
* update message string for success message after signature;
* add an option to specify the signature button label and use it in
sale customer portal;
* improve return of signature route to return more specific error
messages;
This commit contains squashed code from @rop-odoo .
* display canceled or done status of quotations on quotation page
view in order to ease user navigation;
* allow to filter on state;
* fix breadcrumb for canceled quotations, currently telling 'Sales
Orders' instead of 'Quotations';
* display order shipping address only if multi address group
is activated;
* display order expiration date on sale order customer portal;
* when signed, add help message on disabled 'Sign' button telling
when and by who the order has been signed;
* fix download button display and alignment in quote template
This commit contains squashed commits coming from @jpr-odoo and
@abh-odoo .
This implements a warning when the user tries to do any of the
following operations on a product that is not in stock:
- Scrapping
- Unbuilding
- Repairing
The warning displays the current stock of the product in question per
location which can be helpful in case the user selected the wrong
location.
Without this time_cycle is not computed in the tree view on new
workcenters created through 'Add an item'. This leads to the
time_cycle field being displayed as NaN:NaN. This forces computation
on the form view opened through 'Add an item' which solves the issue.
This simplifies the chart of accounts and taxes to only the common
ones used. It also updates some changes that took place (eg. the VAT
increase from 16% to 19%). Lastly it implements some additional fields
on res.partner: a document type and a verification code that is
calculated based on the VAT.
The o_row class mechanism is supposed to be used to put another
element next to a field, like a button for example. However,
in the case of phone and email field, the o_text_overflow hack
gets in the way.
The problem that o_text_overflow is trying to solve is when you
have a long email, the table used to display the form view fields
tends to use very long cells (td) so it can display the whole email
address. This behavior completely breaks the form view, even though
the email address is clearly set to wrap in css. The o_text_overflow
class is a hack that forces the table to think that the email is
small, then defaulting to the width 50% css rules. If the email is
too long, it is correctly wrapped inside the cell, without breaking
the form view layout.
However, when we need to add a button next to those fields, this
hack gets in the way of the o_row class css rules, completely
wrecking it. We looked for a fix with qsm-odoo for hours but were
unable to find one that did not require a complete rewrite of the
form view css rules. In the end, we decided to remove the hack from
the phone field and keep it on the email field, as we think it is
less common to have a very long phone number than to have a very
long email.
We have te remove self, because as it's an onchange working on a 0 orm
command, the onchange is executed on a recordset on a new id without
client ref but, when we go up and down in the relations to find our
siblings, the newid recordset with a client ref is present, meaning we
have our record duplicated.
Before this commit and since the huge JS refactoring, when you were editing
a blog post it wouldn't save your modifications if you touched the title or
subtitle of the blog.
This was due to title & subtitle getting considered as the cover itself
when saving (_saveElement) because they are inside the cover (in a HTML point
of view).
So if you had modified both the cover, the title and the subtiltle, it was:
1. Saving the cover
2. Saving the cover again
3. Saving the cover again
Now, _saveElement is called as it should, for the same case, it is:
1. Saving the cover
2. Saving the title
3. Saving the subtitle
Before this commit, website.page xml record were created in 2 steps:
1. Create an ir.ui.view record with <template> tag
2. Create a website.page record with <record model="website.page">
But this is useless since website.page inheritS ir.ui.view, you can create both
records just in one <record> tag.
Note: This is NOT TRUE in every case:
Odoo's ORM will suffix external_id of inherited records (in this case the
ir.ui.view created through the website.page record) with its model's name.
This can be a problem in some case (this is an example):
website_crm_template.xml create an ir.ui.view inheriting the
ir.ui.view 'website.contactus'.
But if we didn't keep website.page & ir.ui.view records split for that
specific case, the ir.ui.view would inherit a website.page record
causing an error. (website.contactus would be the id of the page record
while the ir.ui.view's id would be website.contactus_ir_ui_view)
In short: when migrating an ir.ui.view (<record> xml) to a website.page:
* If there is record inheriting the ir.ui.view ID, then split
website.page & ir.ui.view
* if not, you can create the website.page and its ir.ui.view both in one
record (<record model="website.page").
This commit also removed remaining page="True" from xml template since we
removed the 'page' attribute from ir.ui.view model overrided in website module.
Before this commit, website.page had a 'name' field which was useless because
website.page inheritS from ir.ui.view which has its own 'name field.
At the end, we were duplicating/synchronizing 'name' field between
website.page and its ir.ui.view for no reason because we were always using the
one from ir.ui.view.
Now, getting website.page's name will always retrieve the one from its
ir.ui.view and there is no redundant information.
There is a double-check (on client and on server) to prevent the user to
upload a >25 MB document. The client checks the actual file size while
the server guesses it from the total received payload. This server guess
is wrong as the extra payload is quite huge (5-10MB). Now the server
checks the real file size as it should have from the beginning.