Seen that:
- a unicity constraint on a translated field may lead to unexpected results
- declaring records with xmlids of other modules (aka 'base') raises a warning
- some titles may be translated and are highly local
=> we let people manage titles of their countries, even if it may lead
to a few duplicates in case where more than 1 localization is installed
We also:
- reorder a bit the form view for quote templates
- change the way default templates are selected for sales order
(inactive quote templates are not selected) while keeping
customizability through ir.values
* [IMP] product: Clean product form view
* [IMP] website_sale: Remove old availability functionality
* [IMP] website_sale: Fix to get attributes details
* [IMP] website_sale_stock: Add inventory availability
- Warning messages:
- Don't show anything
- Show inventory
- Only show below a Threshold
- Show a custom message
- Add Default Inventory availability option in website admin under product catalog setting
- Show inventory availability message based on variant
- Block add to cart if product not available in stock (Block if Show inventory or Only show below a Threshold option is selected)
* [IMP] website_sale_options: Prevent user to buy optional product if stock is not available
* [FIX] product,website_sale_stock: details
- Corrects the display of the image on the product form when selecting a pre-existing image.
It was displaying a template and not the pre-existing one.
[FIX] website_sale_stock: sale_order
Condition was set on linked_line_id which is pointless as we iterate on each line of the order.
[FIX] website_sale_stock: fix import
Change import to proper form: from . import
* [ADD] website_sale_stock: default threshold
- Add available_threshold in website_config_setting view.
- Fix availability and threshold values to be directly
linked to product template instead of website config settings.
- Change custom_message to non-required.
* [ADD] Website_sale: Install checkbox for wbs_stock
-Add checkbox to install website sale stock as 'Inventory' in Website Settings
-Change 'Inventory Availability' to 'Inventory'
-Add help and tooltip for 'Inventory'
* [IMP] website_sale_stock: website product view
- Add Unit of measure in the stock information on the product page.
- rework get_attribute_value_ids method.
* [IMP] website_sale: Stock and Options
- bridge module to allow stock and options to interract together
- changes on the field names (follow pad), modifications.
* [FIX] product: revert on product_views and cleaning
Revert changes suggested on the task as it it scheduled on another one for a big clean-up.
Clean comments on code.
* [IMP] website_sale_stock: website product view
+[FIX] sale_stock: dependency
- changed strings and views for website and backend product view.
- change dependency of 'sale_management' to 'sale' in 'sale_stock'.
We don't actually need the sale menu when managing our stock. Sale if sufficient thix way.
* [FIX] website_sale_stock: triggers on js and ajax
The function inserting the avalability template in the web page was triggered by too much events,
this was triggering a problem with the deferred calls. This was raising an error in the website_sale_tour_buy test.
Now only change on data-attribute_value_ids will trigger the function. The test should run smoothly.
[FIX] website_sale, website_sale_stock: route tour_buy
- The improvements on the branch prevent a user to buy a product when there is no stock.
Adapted the route test to the new behaviour in order to add_cart/buy/pay a product.
--> now buying iPod (16Gb) instead of iPod (32 Gb)
- ajax.loadXML was called to often (each trigger of the function) and was making the runbot crash.
Only one call of the loadXML right now.
The world changes and some country names too :
- Anguilla is not a part of Saint Kitts and Nevis anymore (1980)
- East Timor is now called Timor-Leste and has a new ISO code (2002)
- Netherlands Antilles have been split in CW, SX, BQ (2010)
- Neutral Zone between Irak and Saudi Arabia does not exist anymore
(1991)
- The U.N. now use "State of Palestine" for West Bank and Gaza (2012)
- Yugoslavia has been split (1992) then some remaining parts renamed as
"Serbia and Montenegro" (2003)
- Zaire is now called Democratic Republic of the Congo (1997)
We also fixed/simplified names of other countries/territories when
there is a more vernacular name that is not ambiguous or simply a typo
source: https://www.iso.org/obp/ui/en/#search
(We also fix a test that count countries beginning by Z, and there is
no Zaire anymore)
Before this commit, it was impossible to load the x2many fields subviews when
they were not defined inline.
Now it is possible to call the method "_loadSubviews" to do so.
Used mainly in studio, to be able to display the x2many fields without inline
views.
The Odoo Dialog API already had the "confirm" helper to open a dialog
which shows two buttons: one to confirm and one to cancel. This commit
introduces the "safeConfirm" helper which requires two clicks to
effectively confirm.
Note: this will be used by the upcoming website update.
Odoo checkboxes have a special style which requires a special DOM
structure. Instead of having to build this structure each time we need
a checkbox to be rendered, it is better to have a function that does
that. It is also better to have a JS function for this instead of a qweb
template so that this has not to be lazy loaded by the frontend for
something as simple as a checkbox.
Before this revision, editing a many2one inside an x2many field did not
cause an update of the x2many field upon saving. This is due to the fact
that a field on a screen was deemed affected by a record change only if
its value or a directly related record has been updated.
This present revision looks for changes recursively, thereby including
the case where an x2many field contains a many2one.
The bug appeared for example in Manufacturing, when editing the product
name of a BOM line.
Use case:
- 2 invoices in foreign currencies, made at different times (and different exchange rates)
- 2 payments (same characteristics as invoices)
- allocate the 1st payment to inv A
- allocate the 2nd payment to inv A and then B so that A is fully paid, but B is not
- try to make the final payment on B to fully reconcile everything
Results (all in the payable account)
- let CB be the credit line of B
- let D2 be the debit line of 2nd payment
- let D3 be the debit line of the 3rd and final payment
Before this commit, the exchange difference computation dailed because:
- There were 2 amls that had an amount_residual and needed to be reconciled (CB and D2)
- Also, there was a structural flaw in the code that did not allow for multiple lines to have a residual
After this commit, we still make 1 move to log the exchange difference,
but we make exchange difference lines for each line that need to be reconciled: CB and D2
OPW 751710
Commit in master c36f70f6726e0c7ccca1002f78e4d402e27cae3d (2017-07-20)
Closes#18347
[FIX] account: testing partial and full reconciliation
To reproduce:
- Go Website Admin > Configuration > Settings
- Change the Website Name
- Click on 'Cancel'
The name is saved.
When the "Cancel" button is clicked, we automatically save the record
(which is a transient model). Since the field is a related to the
company, the name is changed even if we canceled.
opw-760749
The goal of the commit https://github.com/odoo/odoo/commit/c5bd509 is to update the etherpad content if the description field is updated.
However, if the pad is not initialized yet, we shouldn't try to do this obviously.
In case `--db-filter` is not provided and `--database` is passed,
Odoo will not fetch the list of databases available in the postgres
server anymore because it does not have anything to match against this
list. Instead, `list_dbs()` will use the value of `--database` as a
comma separated list of exposed databases.
This allows better security hardening in postgres access rights.
Basically, that means that those commands
$ odoo-bin -d foobar
$ odoo-bin -d foo,bar,baz
are now respectively equivalent to those commands
$ odoo-bin -d foobar --db-filter='^foobar$'
$ odoo-bin -d foo,bar,baz --db-filter='^(foo|bar|baz)$'
The old behaviour can still be used with this command:
$ odoo-bin -d foobar --db-filter='.*'
Opening a modal in Odoo should be done thanks to the 'Dialog' class. In
the frontend, there can also be modals which are meant to be shown to
the unconnected frontend visitors and those should then get the style of
the website (bootstrap) and not the one of odoo. To manage this, the
website JS code was extending the Dialog class so that it adds the
'o_website_modal' class on modals which are opened thanks to the class.
The LESS code was then in charge of forcing the Odoo style on those.
This behavior is not the right one. "Visitors" modals should also be
able to be opened with the Dialog class. This commit is a first step
towards to the right behavior:
- The standard 'Dialog' adds the 'o_technical_modal' class on its root
element by default and allows to not put it thanks to 'technical'
options.
- 'o_website_modal' is then replaced by 'o_technical_modal'.
What should be done next is:
- Use the Dialog class when it is possible
- Move modal.less in the common assets and make it style only technical
modals -> remove some forcing of the style on 'o_technical_modal' in
the frontend
This behavior also allows future improvements, like building a
completely different structure for technical modals which would allow
better designing and the end of visitor/technical bootstrap conflicts
(and so LESS efficiency).
* web_editor
Odoo extends jQuery to add some utility functions. The 'prependEvent'
one add the possibility to add an event handler on an element (like
the jQuery built-in 'on' function) but to be executed before the
already binded ones.
This function was however incomplete and did not allow to use jQuery
namespaced events.
* web_editor, web_tour
jQuery has the built-in ':visible' selector. This is however not enough
as this only checks if the element and its parents have a visible
'display' property. Ironically, if the element has the 'visibility'
property set to 'hidden', it will be considered ':visible' by jQuery.
This commit creates the ':hasVisibility' and ':hasOpacity' selectors
which respectively check if the element and its parents have a visible
'visibility' property and a visible 'opacity' property.
This patch modifies Root#dispatch() in order to keep the httprequest url
in the current thread's attribute and use if for dumpstacks and the
phantomjs tests remaining requests handling.
Also added a counter in order to avoid looping forever when trying to join unclosed http requests
in phantomjs test suite after a phantomjs failure + added a log.warning in such a case so it's easier to troubleshoot runbot's ir.logging.
Use case: click on "reconcile X items" on a journal which doesn't have its default credit or debit account set.
Result: Before this commit, a useless traceback popped to the user.
After this commit, move lines are searched without taking into account the journal's default accounts for debit or credit
OPW 760305
Closes#18485
Before this commit, the view selected to be edited by the html editor was the wrong one
This was caused by the simplification brought about by commit a2ae219d4e
which transfered from python to js the decision to make a view a header for the [customize] menu (on the website
In this case, the first view in the return list of python was the header, and the second the actual view
Now that python just sends a list of unique views without any distinction whatsoever, the right view to pick when entering the html editor is the first one, at index 0
opw 760279
Closes#18603
In anglosaxon accounting's stock valuation, the case where invoice and company currencies are different was not managed properly, because of a syntactic error in the condition checking this case.
(this has already been merged on saas-14, but the PR should have initially been made for 10.0 ... my mistake ! See https://github.com/odoo/odoo/pull/17259 )
Before this commit the key default_type in the context was messing with ir_attachment's own key of the same name
We change the key's name to avoid misreadings
OPW 757039
Closes#18515
Before this commit, the iframe tags were sanitized as the should, but never spawn back from JS.
Now, the iframe is actually created
opw 750830
Closes#18643
* [FIX] Gamification: email template
- realized that the pictures of users were not public by default,
which means src with an url won't work if not connected to the database.
This is fixed by embedding the pictures directly in the mail.
* [FIX] Gamification: challenge template
- fixed layout problems with what works in the renderer.
When a unique variant was created from a product template with function create_variant_ids,
two product price history were created:
-One was created from function create on product.product
-The other one was created from function _set_standard_price on
product.template
The first product.price.history created in this situation was all the time
set to 0 and it lead to some problems in the report inventory date.
This first product.price.history doesn't have to be created.
opw:747857
Since the switch to the new views, clicking on a 12am cell in a week
view of calendar triggers a traceback. A similar issue happens when
creating an event at 11.30pm. This is due to the fact that events
starting or ending at 12am are suspected to be incorrect and are thus
checked against the database.
This commit fixes both issues, by requiring that database checks be
carried out only if the records actually exist in the database.
- Activate multi-company
- Company B is parent of Company A
- Admin is in Company A
- Demo is in Company B
- Create a rate with Demo
The rate is recorded on Company A, not Company B as expected.
This is because we call: `self.env.user._get_company()` which would be
equivalent to `self.env.user.env.user.company_id`. Since the user is
browsed as `sudo`, it returns the company of the Admin.
opw-753139
Bug introduced in https://github.com/odoo/odoo/commit/c8601f4384e0c95abc92d1f0b3092cfe2cb2a79d
Purpose
=======
If a module installation is supposed to load an action (example: a wizard like in l10n_eu_service) and if the related action is defined in this module (example: l10n_eu_service.wizard), currently we're using the environment defined on self, which is not updated after the module install, and the key is not defined in the registry.
Specification
=============
Instead of using the environment on self, let's use the new environment created after the cursor commit.