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)
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.
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.
The rev. https://github.com/odoo/odoo/commit/99ae418bf24171fbc6bb27584059c27efb857e77
introduced a trigger_up `mutexify` when quick creating a record in a many2one ;
this broke the behaviour when the many2one was standalone (because it has no
BasicController and mutexify is handled in the latter).
An attempt to fix this issue has been made in the rev. https://github.com/odoo/odoo/commit/e83c3e2678500c9bf2c17b4d23ae9a294ebafaa7
by adding an option `standalone` in the field widget options. In this case,
the action was directly executed instead of the trigger_up. While this correctly
works, this implies that the option needs to be added in every standalone
many2one (and only many2one as the others won't use the option), which is not
very convenient.
An other attempt is made in this rev. by moving the mutexify handler from the
BasicController to the FieldManagerMixin ; as a widget that instantiates a field
widget needs to extend this mixin, both cases will work and we won't need to
specify the option anymore.
This commit thus partially reverts the rev. https://github.com/odoo/odoo/commit/e83c3e2678500c9bf2c17b4d23ae9a294ebafaa7
When creating a customer invoice with description/reference with more than
64 characters, the description was cut to generate the name of the account move
lines. But it's possible to create an entry with more than 64 characters as name
by the interface. The limitation is deprecated.
opw:760316
The tested use case is the following:
- Create a SO with 5 units of a product (invoiced on delivered quantity)
- Ship 5 units
- Create an invoice with 5 units, validate
- Return 2 units from delivery
The current state:
- Ordered : 5
- Delivered : 3
- Invoiced : 5
In that case you have invoiced more than the delivered quantity and the sales order should be marked as fully invoiced following the commit c854de4
The salesman will transfer the credit note to the accountant and everybody's happy.
As it is the intended behavior, this commit modifies the test.