The code for page creation from menu edition dialog was there but
invisible to the user because of a wrong qweb template inheritance.
Indeed, the edit menu dialog relies on an extension of the link dialog
template. But this one is extended in-place in another location and
that extension is not considered when the second extension is made
because a t-extend always use the base template. The only solution to
achieve the same result is to copy the edit menu dialog qweb extension
in Javascript.
Note: the feature was still available from the link dialog in page
edition though because this was not concerned by the wrong qweb
extension.
However, adding a page by this way would create multiple pages because
one was created each time a page name was entered (and not only on
save !). So typing "test", then changing its mind and typing "hello",
then rechanging to "test", then hitting the save button created the
"test, "test-1", "test-2" and "hello" pages.
This fix takes advantage of an already present parameter which can
determine if a new page should be created or not. However, a code
refactoring should be done in master for these classes.
The error was only appearing in case 'writeoff_currency' != 'company_currency' which, here was achieved by having a secondary currency on the reconciled account. As the manual reconciliation wizard is doing a two-step reconciliation to make sure to balance all the secondary currencies, we must check the context to detect its special key and avoid giving an amount_currency that would interfer.
Since users cannot set it manually to readonly=False in the settings or in the view, thatt's the only way to allow them to import invoices and their corresponding accounting entries.
When website_quote is installed, the Terms and Conditions of the quote
template should replace the Terms and Conditions of the company.
But if T&C of the company is not filled, it will keep the note written.
opw:683543
We determine the mime types of the files we server
automatically + manually, and browsers should not
try to second-guess it.
Browser mime-guessing is there for the myriads of
badly configured web servers out there.
When an order with a fixed amount tax was returned the sign of the tax
was wrong because amount_base was negative and quantity was negative too,
then the tax was positive due to math.copysign(self.amount, base_amount) * abs(quantity)
The sign of the base amount already takes into account the the sign
of the quantity.
opw:682407
When making an advance payment in percent, the function onchange_advance_payment_method
set the Down Payment Product to False. Then each time an advanced payment in percent
was made, a new down payment product was created and set in sale.config.setting in the field
deposit_product_id_setting.
Now the function onchange_advance_payment_method let the Down Payment Product
even if the payment method is in percent.
opw:683167
inter_company_rules is an enterprise module and can not be installed in
community version.
Disable the installation and warn the users about it.
Fixes#12800
A string attribute value can be translated,
and therefore the inherit broken if the term is indeed
translated.
This was the case for this term "Tracked link" in the Dutch
language, the "Tracked link" term of the inherited view has
been translated, and the inherit was therefore broken as
it couldn't find the given node in the base view due to the
fact this term was translated.
opw-683128
When the schema of a view change (e.g. drop of column), the "CREATE OR REPLACE"
will not be enough and dropping the view is required.
Fixes#12754Closes#12756
Odoo S.A. invoices only 'non-share' (internal) users; the default
filter on the user list view does the same thing. It makes little
sense for the user counter to count all share users.
Return key events don't get redispatched and even if they did, it
wouldn't work because 'fake' keypress events don't trigger native HTML
event handlers.
This should be safe because Return cannot start a valid barcode.
We hide the quants_grp if the stock.move is in the draft state. In this
case normally the value of the string_availability_info will be empty
anyway, because the _get_string_qty_information function skips moves in
the draft state.
This is especially useful on small displays, because on there the string
attribute of the field won't be shown, so you just end up with a
Reserved heading with nothing underneath it.
If two addons path have a common part in the folder name (e.g. `/home/alice/dev`
and `/home/alice/devodoo`), the `get_module_from_path` method may match the
wrong folder.
A file `/home/alice/devodoo/bob/models.py` would wrongly match `/home/alice/dev`
path (due to the lack of separator) and the returned module would be `odoo`
(`"odoo/bob/models.py".split('/')[0]`).
In such scenario, the translations of files (code, static folder, report) would
not be included in the exported translation file.
Force the module path to ends with a folder separator to avoid wrong matching.
Closes#12757
When launching a server with two similar addons path, e.g.:
- /home/alice/dev
- /home/alice/devodoo
launching the server in dev mode may crash due to the poor matching using
`path.startswith(...)` method which may make `/home/alice/devodoo/bob/main.xml`
match in addons folder `/home/alice/dev` and with a non-exitant local path
`odoo/bob/main.xml`.
Instead of relying on the name, use the `os.path.commonprefix()` method to match
on real paths and avoid partial matching.
commonprefix will only work if the folder name ends with the appropriate
separator (which is not guarantee for a user provided addons-path) so force a
trailing `/` using os.path.join(..., '')`.
Closes#12359
Steps:
-Go into Slides (into Website Admin main menu)
-Find the Slide "Odoo Explained"
-Change the channel to "Employee Channel"
-Disconnect or open a private session
-Go to the menu "Presentations" on website
-Click on "Public channel"
Bug:
Error 403
Fix:
When changing the channel_id of a slide, the custom_slide_id of all
the channels using this slide as "Slide to Promote" has to change
in False to avoid access rights errors.
opw:682063
Steps to reproduce:
1. Activate the following options
** Settings > Warehouse > Products > Manage different units of measure for products
** Settings > Accounting > Accounting & Finance > Analytic accouting
2. Desactivate the following option
** Settings > Accounting > Analytic accouting > Sale > Use multiple analytic accounts on sales
3. Create a Sale order
** Add 2 qty of the product iMac
** Add in quote the delivery method "Normal Delivery Charges" and set 2 qty
** Set an analytic account under Contract/Analytic
** Set the field Create Invoice to "On delivery Order"
4. Deliver only 1 quantity of the iMac and then create the invoice
5. Deliver the last quantity of the iMac and then create the invoice
Behavior before the fix:
The first invoice contains 2 qty of the Transport
The second invoice contains 1 qty of the Transport, has no analytic account set, has no UOM set
Behavior after the fix:
The first invoice contains 2 qty of the Transport
The second invoice contains 0 qty of the Transport because it has already been invoiced
Closed#12644
opw:682284
When a procurement needs to create purchase order lines due to
reordering rules and if an empty PO exists for the vendor of the
product, the creation of the PO line will crash since there is
no scheduled date on the PO.
opw-675706
A mechanism already exists to select the appropriate currency and was
introduced in commit 1b04b1d. However, it requires a purchase journal in
the currency of the PO to work.
Note that this commit is likely to not work correctly since the method
`_onchange_journal_id` is triggered after `_default_currency`.
Therefore, even if the currency is correctly set in `_default_currency`,
it is changed to the journal currency right after.
This reverts commit 7f1d7c1cce.
Before the commit, the dt was forced to 160px of width by bootstrap.
Now we allow this size to be bigger, to avoid glitch in UI.
When you was inserted a long keyword, the 'delete' button was in the
overflow hidden part and so was undeletable.
We set min-width by default to 160px to keep the same behaviour by default.
And see 2 columns, but if a keyword it too long, we display it, and 'break'
the column style.
This commit closes#12703