Commit Graph
124700 Commits
Author SHA1 Message Date
Nans Lefebvre e02a9077b9 [FIX] payment_adyen: convert the paymentAmount respecting the Adyen API
Adyen requires the amount to be multiplied by 10^k,
where k depends on the currency code.
https://docs.adyen.com/developers/development-resources/currency-codes
Provides a map of codes to factors.

Before, k was assumed to be 2 (which is correct in most cases).

opw 1928918

closes odoo/odoo#31984

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-03-21 07:24:36 +00:00
Nicolas Martinelli 4218f3b5fb [FIX] account: Invoice Analysis
- Go to Accounting > Reports > Invoices
- Go to the pivot view
- Enable 'Total' and 'Untaxed Total' in the measures

The Total is wrong.

`amount_total` is retrieved on the invoice, unlike the subtotal which is
retreved on the invoice line. We apply the same logic than
`residual_company_signed`.

opw-1950663

closes odoo/odoo#31991

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-03-20 15:11:23 +00:00
Naglis Jonaitis 3aab70c5a6 [FIX] hr_timesheet: don't use dict.fromkeys() with a mutable default value
When used with a mutable default value, `dict.fromkeys()` builds a dict
where each key references the same value:

    >>> r = {}.fromkeys(['foo', 'bar'], {})
    >>> r
    {'foo': {}, 'bar': {}}
    >>> r['foo']['val'] = 1
    >>> r
    {'foo': {'val': 1}, 'bar': {'val': 1}}

Updating one key's value will change the value for all keys.

closes odoo/odoo#31659

Signed-off-by: Jérome Maes (jem) <jem@openerp.com>
2019-03-07 10:38:29 +00:00
Dipalee Bhalodia f451f90b9a [FIX] point_of_sale: use IoT Box instead of posbox in pos.config + explain better
TaskId: #1893479

closes odoo/odoo#31747

Signed-off-by: Olivier Dony (odo) <odo@openerp.com>
2019-03-11 08:26:29 +00:00
Nans Lefebvre 215c4a6b5d [FIX] base: check that the state matches the country at partner create
Import a list of partners with their addresses.
The state_id field is usually filled with the state codes.
E.g. 'CA' is used for California, but also for Cádiz (Spain), etc.
The import function (db_id_for) uses a name_search on the res.country.state,
and takes the first matching result.
It follows that the state does not necessarily match the country.

Therefore we add a _check_import_consistency in the create.
Here we check that the country matches the state's country,
try to find a correct match, and if we can't we put the state to False.
Note that if the country is not set both fields will end up set to False:
this is because only a state would mean using a code could give an abitrary
country.

opw 1943904

closes odoo/odoo#31599

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-03-13 14:27:56 +00:00
Lucas LefevreandIldar Nasyrov 4b8e0d82bb [FIX] web: backport of 70c6d3b04c to 12.0
make sidebar filter generic

Adding `res_model` and `res_fields` attributes on a field of
a calendar view adds a filter in the sidebar.
It saves the result as the defined model and should save it
in the defined field.
However `partner_id` has been hardcoded in the rpc call that creates
the record. This breaks genericity, it cannot be used with another
field than `partner_id`.

This commit makes this generic by correctly setting the field name
in the rpc call.

closes odoo/odoo#31858

Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>


Co-authored-by: Ildar Nasyrov <iledarn@gmail.com>
2019-03-15 13:28:12 +00:00
iledarn 7a7dbf97c6 [CLA] signature for Iledarn 2019-03-15 13:26:27 +00:00
Nicolas Lempereur f96791051d [FIX] stock: lot action => str to prevent traceback
In a report a lot could be opened with an action that was a number
instead of expected string or falsy value.

In web and web_studio, we sometime expect the action name to be a string
or falsy (calls to `bc.title.trim()` in breadcrumbs code).

opw-1951174
closes #31816

Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
2019-03-13 12:52:16 +00:00
Nicolas Martinelli 1d96787929 [FIX] purchase_requisition: PO date
When creating a new PO from a purchase requisition, the order date of
the PO is the last date of the contract. There is no reason for this,
and althoguh the date can be manually changed, it is error-prone.

opw-1937141

closes odoo/odoo#31969

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-03-20 10:04:57 +00:00
Alex Tuyls f7acbf6466 [FIX] website_event,website_event_sale: correction pricelist in event register
A recent fix c41d1d2 was made to select the related pricelist
to show the correct price of an event product.

This fix creates another bug in case of Ecommerce app
not installed, because the method get_current_pricelist
is defined in website_sale module.

We need to move the fix from website_event to website_event_sale module.

closes odoo/odoo#31953

Signed-off-by: Jorge Pinna Puissant (jpp) <jpp@odoo.com>
2019-03-19 15:57:46 +00:00
Jorge Pinna Puissant 577333f548 [FIX] account: invoice alias in multi company
Install accounting in a multi company environment.
Configure email server.
Configure an alias for the vendor bill journal per company.

Before this commit, all the invoices were created in the same company,
regardless of the alias used.

Now, the invoice is created in the company of the used alias.

opw-1939909

closes odoo/odoo#31948

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-03-19 14:33:07 +00:00
Nicolas Martinelli 68860fcc9d [FIX] stock_dropshipping: modify SO
- Create a SO with a dropship product, set a qty of 1.0
- Validate the SO
- Validate the corresponding PO
- Change the qty to the SO to 2.0

2 PO are created: the first one with a qty of 1.0, another with a qty of
3.0.

There is an overlap of functionality between:
- `_purchase_increase_ordered_qty` from `sale_purchase` (first PO)
- `_action_launch_stock_rule` from `sale_stock` (second PO)

The quantity is incorrectly computed since the quantity on the PO is
taken into account only if the no stock move exist.

We remove the latter condition, so the procurement quantity is computed
correctly.

opw-1950076

closes odoo/odoo#31963

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-03-19 11:50:46 +00:00
Julien Castiaux 716ff76d5e [FIX] sale: force maximum section/subtotal width
Step to reproduce:
- Install sale (sale_management) and studio (web_studio)
- Change the document template (settings > configuration > general
settings) to select the second one
- Go to an order form
- Enable studio, select "Reports" in the right tab
- Edit the "Quotation/Order" report, add a new colomn
- Back to the order form, enable dev mode and add a section to the order
lines.
- Print the report => the section is not using all the available place.

The section/subtotal are using a colspan to use all the place in the
table, this colspan is hardcoded to 5, the number of columns without
customization. Adding a new column doesn't change that value.

The fix has been to force the colspan at 99, the maximum value for
colspans. Using that value will always render the row to fill the table.

opw-1936088

closes odoo/odoo#31951

Signed-off-by: Julien Castiaux <Julien00859@users.noreply.github.com>
2019-03-19 15:28:24 +00:00
Nicolas Lempereur 8003289219 [FIX] mail: activity document name=>updated name
The activities "Document Name" (res_name) are computed and stored by
getting them on original document, so if we change name of original
model => the activity names are not updated.

Thus the document name we see we showing the "Activity" view is the one
that was used when activities were created with an odd heuristic (by
inverse order of activity type and max alphabetical value) and not
translated.

With this changeset we ignore "Document Name" and directly get names of
records when display "Activity" view.

note: the changeset also filter out activities on document we can reads:
this was done when a domain was set but not otherwise so access error
could be easily gotten.

opw-1949437
closes #31850

Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
2019-03-14 15:26:13 +00:00
Nicolas Lempereur de3ff2e533 [FIX] analytic: account search no partner=>work ok
The name_search of account.analytic.account do not find records that
have no partner set.

This is because some ORM search may breaks when it contains a
auto_join relational field. We will try to fix this (at least in master
version).

In this changeset, we avoid the issue by combining 2 searches instead.

opw-1941547
opw-1950010
closes #31881

Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
2019-03-15 15:29:08 +00:00
Julien (juc) Castiaux 82c4393fd0 [FIX] website: facebook page id regexp
Some valid facebook pages appear as broken by the preview although
they load perfectly fine afterward.

At facebook, an id is required to perform requests to their graphql
endpoints. The ID is part of the URL of the page, sometime (like Odoo)
the ID is the name of the page and sometime (like LACME France) it is
a generated 9-digits id shown in the URL after the name of the page.

Example of two valid page URL and their page ID:

    https://www.facebook.com/Odoo
                             ^^^^
                             ----

    https://www.facebook.com/LACME-France-910072559192969
                                          ^^^^^^^^^^^^^^^
                             ----------------------------

`^` denotes the page id and what odoo uses as page id after the commit
`-` denotes what odoo used as page id before the commit

opw-19494444

closes odoo/odoo#31922

Signed-off-by: Julien Castiaux <Julien00859@users.noreply.github.com>
2019-03-19 10:26:58 +00:00
Johan Demaret RivarolaandMarius Stedjan 36435b4ad7 [FIX] website_sale: fix authorized message
Field `auth_msg` never existed, this is an uncaught mistake. This commit
removes its usage and displays the fallback message to avoid runtime
error.

Closes #31903

Signed-off-by: Toufik Benjaa (tbe) <tbe@odoo.com>


Co-authored-by: Marius Stedjan <marius@stedjan.com>
2019-03-18 09:58:45 +00:00
Swapnesh Shah 0719559904 [FIX]website: Themes should be installed from website_theme_install only
closes odoo/odoo#31854

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2019-03-14 17:04:04 +00:00
Christophe Simonis 15a78da0c9 [FIX] account: avoid using non existant field in test
Oversight of previous forward-port.
2019-03-19 10:36:17 +01:00
Christophe Simonis bd63913326 [MERGE] forward port branch saas-11.3 up to 4e39328a76 2019-03-18 20:03:24 +01:00
Toufik Ben Jaa ec327d3f86 [FIX] project: Access to attachments with CDN
- The attachments in the tasks page on the portal can be accessed by
  clicking on them.
  They are delivered by the controllers at URL `/web/content/XXXXX`.

  By default when enabling the Content Delivery Network feature on the
  website module, the content delivered by the controller
  `/web/content/` is done through the CDN which has no user account,
  thus may not have access to the attachment.

  To fix the issue, we disable the CDN feature for the attachments in
  the tasks portal page.

  OPW-194571

closes odoo/odoo#31924

Signed-off-by: Toufik Benjaa (tbe) <tbe@odoo.com>
2019-03-18 15:33:14 +00:00
Nans Lefebvre eee6e26b37 [FIX] mail_enterprise: display all attachements in preview widget
If res_id is not defined, this method used to crash.
Made obvious by commit a26496b6e7,
which added a call to that function in the main controller of web.

opw 1950403

closes odoo/odoo#31923

Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
2019-03-18 15:27:20 +00:00
Thibault Delavallée 273fc4af6e [IMP] guidelines: remove actually wanted PEP8 options
Task-1817988

closes odoo/odoo#28714

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2019-03-05 08:43:31 +00:00
Thibault Delavallée d256350f34 [IMP] guidelines: improve xml ids naming section
* rewording of XML naming section
* remove the convention of suffixing inherited XML ids
  with `_inherit_my_module, as the information is in the
  complete XML id name (prefixed by module name). This will
  avoid too long XML ids.
* extend convention for the name of groups, views, ...

Task-1817988
2019-03-05 08:41:23 +00:00
Thibault Delavallée 64662cc2a9 [IMP] doc: add guidelines for window actions naming
Rewording of "action" naming section.

Task-1817988
2019-03-05 08:40:37 +00:00
jem-odoo dadec538bc [IMP] doc: rewrite part of module structure and js references guidelines
This commit
 * removes deprecated guidelines for static file and assets struture;
 * fixes some typo and mistakes;
 * correctly links JS guidelines section;
 * adds a running example to ease understanding;
 * adds missing section about security files;
 * adds text blocks for each directory to show directly the
   expected result of each section;
 * perform some rewording;

Thanks to @pedrobaeza for its review.

Task-1817988
2019-03-05 08:38:30 +00:00
Nans Lefebvre fc1389f8d8 [FIX] payment: provide missing return_url in values
Render from payment//payment_acquirer.py promises:
All templates will receive:
    'feedback_url', 'return_url', 'cancel_url', 'error_url'
However they are all in -> FIXME.
After 6 years in FIXME, this promise is still a lie.

It is unfortunate since the Adyen payment provider requires 'return_url' to work.
Before, this function was called by _get_shop_payment_values,
which provided a value for it.
We copy the value that was given there directly as a default in render,
so that it doesn't crash no matter what method calls it.

opw 1928918
opw 1944142

closes odoo/odoo#31814

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-03-15 14:56:19 +00:00
Nicolas Lempereur d7ca0357f3 [FIX] point_of_sale: numpad left-to-right in arabic
A numpad in right-to-left language is not right-to-left.

So with this change we keep numbers in the order:

1 2 3
4 5 6
7 8 9

and not how it was currently with RTL support:

3 2 1
6 5 4
9 8 7

We used the directive `/*rtl:ignore*/` that prevent rtlcss to mirror a
rule but this also could have done with eg.

  .o_rtl .pos .numpad button { direction: right; }
  .o_rtl .pos .popup-numpad { direction: rtl; }

so when the reversed is reversed (only in rtl) we get back the original.

opw-1950001
closes #31888

Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
2019-03-15 16:44:27 +00:00
Nicolas Martinelli 547e6e37f4 [FIX] purchase: canceled bill in suggestion
- Install `account_cancel`
- Create a vendor bill for Partner A, cancel it
- Create a new vendor bill for A

The 'Auto-Complete' suggest a bill with an empty name, and only an
amount. It corresponds to the canceled bill.

On a canceled bill, the `number` field is empty, and consequently the
`name` is empty as well.

Whatever is the state of the bill, displaying a bill is useless is only
the amount is shown. Therefore, we make sure to only display the bills
with a number set.

opw-1950846

closes odoo/odoo#31863

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-03-15 09:32:34 +00:00
Romain Derie f8efc9a957 [FIX] website_sale: fix _get_pl_partner_order
1. Encapsulate `show_visible` to avoid duplicate same code in filtered and to
   make it more easy to read.
2. When GEOIP is enabled, `_get_pl_partner_order` would retrive the available
   pricelists for that country group.
   We should also ensure the returned pricelists are also available on that
   website
3. Rewrite the `country_code` condition in one line thanks to 1.
4. !! Do not use `property_product_pricelist` in the method as it is not cached
   and now it depends website. Anyway it was useless as it was a duplicate of
   `partner_pl`.
5. Add `is_public` to the if condition as it was actually implicit as if not
   public it and no pricelists it would go in previous condition and set the
   pricelist from `property_product_pricelist`.
6. The last if condition (`not country_code`) has always been subject to fixes
   and always broke a flow to fix another one (see 60300fc2 and e11908d42, both
   were wrong).
   This condition refactoring should still preserves the beavior fixes
   mentionned in both commits and fix the flow where a logged in user would not
   get selectable pricelists if he has a partner_pl (property_product_pricelist)
   before entering the all_pl filtered.

closes odoo/odoo#28301

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2019-03-14 10:28:02 +00:00
Romain Derie 9608d4551d [FIX] website_sale: prevent compute search to be run in sudo
Before this commit, when accessing an user's pricelist, it would raise a 500
error in multi-company environment.
Indeed, when doing `self.env.user.partner_id.property_product_pricelist`, even
if self.env is not un sudo mode, the compute from `property_product_pricelist`
is executed as sudo. Since this method is then doing a `search()`, it won't use
the multi-company pricelist ir.rule. It will return all the pricelist,
including the ones from other companies.
Then, when trying to read that pricelist, it will raise an access error.

Now, we correctly execute the compute (and so the search) in the user env, it
won't get pricelists from other companies.
2019-03-14 10:28:02 +00:00
Romain Derie a5a5a57e48 [FIX] website(_sale): allow to use and access website pricelist
Before this commit, if the website's company was different than the user
company, the ecommerce would use the user's company instead of its own
pricelists.

Step to reproduce:
  - Set company2 to website1
  - Create a pricelist1 for company1 and a pricelist2 for company2
  - With an user from company1, visit the website1.
  - The pricelist used will be the one from the user, pricelist1 and not the
    pricelist2 from company2 which is the website1 company.
2019-03-14 10:28:02 +00:00
Romain Derie 2d970942ba [FIX] website_sale: limit pricelist to it's website if set
Before this commit:
1. Non Public User would get the main company pricelist returned when calling
   `get_current_pricelist`. As this is saved in an `ir.property`
   (`property_product_pricelist`) that is not website dependant, that pricelist
   would always be returned on every website.
   This is a problem if that pricelist is website limited, you should not be
   able to use it on other websites.
2. Public User would not have a valid pricelist on other website than the
   default one. Indeed, every pricelists are restricted that default website.
   It would result in prices shown as "0" (without currency symbol) on the shop
3. Pricelists set as selectable without a website_id set would not be
   selectable
4. Public User would not get a fallback pricelist when reading its
   `property_product_pricelist`. Indeed, the public user's partner is not
   active and since the refactoring of this field compute method to be a multi,
   it would end up doing a search() instead of a browse(). Thus, it would find
   a pricelist for the public user but it would not set it.

This commit:
1. We override and check that pricelists returnes by the `ir.property` are
   indeed available on the current website.
2. Remove the website restriction on `Public Pricelist` so other websites have
   at least one pricelist available.
3. `pricelist_ids` on `website` now return all available pricelists including
   the ones that are generic (no website set)
4. We search for inactive partners too.

Part of this commit fixes part of 27861
Github-25109
2019-03-14 10:28:02 +00:00
Romain Derie 08a17b6883 [FIX] product, website_sale: clean dead code
The `_get_pl()` method introduced with bcb395616 was replaced by
`_get_pl_partner_order()` in afe1d20dac.
After that, it looks like this method was never called again.

Plus, add a missing ensure_one() (not critical).
2019-03-14 10:28:02 +00:00
Romain Derie 25a8b507b1 [FIX] website, website_sale: create utility method to check if frontend
Before this commit, at multiple places to check if we were in a frontend
context we would check if `request and hasattr(request, 'website')` and
then access `request.website`.

Now, we call an utility method to get that website if we are in a frontend
context. If not the method will return False.

This method will be usefull for incoming pricelist fixes & tests.
Indeed, we will have more check of that kind and this will be easier to mock as
mocking this method will be enough, instead of mocking every method doing that
if condition to simulate a frontend context (to do website tests in python
wihout having to go frontend with a tour).
2019-03-14 10:28:02 +00:00
Odoo Translation Bot 29423872b1 [I18N] Update translation terms from Transifex 2019-03-17 01:22:27 +01:00
Nans Lefebvre 411603f4e3 [FIX] fields: safe check on ondelete cascade
In the case of attachment_ids, comodel._fields[inverse] can be res_id,
an integer field. Such fields do not have a default ondelete attribute.

opw 1945926

closes odoo/odoo#31864

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-03-15 09:49:13 +00:00
Nicolas Martinelli 72bc566ad8 [FIX] sale_timesheet: project template
- Create 2 companies A & B
- Set the superuser in A
- Create a product P:
  Product Type: 'Service'
  Service Tracking: 'Create a task in a new project'
  Project Template: set one for both companies
- Switch to company B
- Create a SO with P, validate
- Access the project through the stat button 'Project(s) Overview'

An `AccessError` is raised.

In case no 'Project Template' has been set for company A, the project is
created without the specified template.

This is because the new project is created as `sudo`, and the
`project_template_id` field is a company-dependant field. Therefore, a
project template from company A is used to create a project in company
B.

opw-1953011

closes odoo/odoo#31883

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-03-15 14:11:04 +00:00
Jeremy Kersten a710a86993 [FIX] website_blog: fix layouting bs4 in view grid
courtesy of @Moto017

closes odoo/odoo#31870

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2019-03-15 10:10:34 +00:00
Martin Trigaux 69159b27a8 [FIX] website_mass_mailing: remove 10.0 terms from 12.0 pot
Was forward-ported
This is problematic as it has the old translation syntax, trying to import a
model:ir.ui.view entry can crash (should be model_terms)

Export mass_mailing where the string "Update my subscriptions" is now present
(no longer in website_mass_mailing as in 10.0)

closes odoo/odoo#31868

Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2019-03-15 10:05:04 +00:00
Jorge Pinna Puissant c41d1d2ca8 [FIX] website_event: pricelist in event register
Create an event with a price.
Create a pricelist with a different price for the event.
Add the pricelist to the Public user.
On the website, open the event to register.

Before this commit, the shown price is the one of the event, and not the
one of the pricelist.

Now, the price is shown correctly and take into account the pricelist.

opw-1951252

closes odoo/odoo#31848

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-03-14 12:46:01 +00:00
Johan Demaret Rivarola 9d3fed6d3f [FIX] payment: wire transfer redirection
When sequentially paying multiple SO with wire transfer, the user was
always redirected to the first paid SO.

This commit fixes this issue by redirecting to the most recent one.

Technical choice:

payment_transaction rows are ordered by id desc so we can trust the
first one will be the most recent on the client side (in the scope of
this diff).

opw-1949629
Closes #31754

Signed-off-by: Toufik Benjaa (tbe) <tbe@odoo.com>
2019-03-12 15:17:29 +00:00
Nicolas Lempereur b8d4fe6d38 [FIX] web: keep col group by on 2nd reload+after 0 result
In 11.0 f8b38f64d improved the column group by managment when reloading
several times by having the same "groupbys" dictionaries between the
pivot model instance and the header menu.

This has been reverted in 12.0 (with c6e7adfb95) because the following
pivot tests failed with the change:
- 'rendering of pivot view with comparison'
- 'export data in excel with comparison'

The failure is because now that the "groupbys" dictionaries are the same
object, the truncated dictionary of a header truncate the one of the
model instance.

So if we search something that has no results, then something with
results, the groupbys could be lost.

This behavior has no reason to be and is changed in 11.0 with #31644,
this commit is the forward-port of f8b38f64d and #31644.

closes #31627

Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
2019-03-06 17:04:42 +00:00
Nans Lefebvre a26496b6e7 [FIX] mail: set message_main_attachment_id when the attachment is added via widget
Create a record.
Add an attachment, using the widget (aptly named 'add an attachment').
It is not set as message_main_attachment_id.
If you add the message through 'log note', then it is.

We add a hook to make sure that it is set as message_main_attachment_id
when added through the widget.

opw 1950403

closes odoo/odoo#31847

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-03-14 12:50:51 +00:00
Nans Lefebvre c68a97a255 [FIX] mail: set message_main_attachment_id to copy=False
Create a record.
Add an attachment set as message_main_attachment_id (e.g. through log note).
Duplicate that record.
The new record has the message_main_attachment_id of the old record,
while it has no attachments.

Since attachments security is linked to the record id, we shall not copy them.

opw 1950403

closes odoo/odoo#31846

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-03-14 09:40:11 +00:00
Christophe Simonis ac4ef455c4 [FIX] web: correct view definition in new test 2019-03-14 15:01:09 +01:00
Christophe Simonis 9a4e84ae66 [MERGE] forward port branch saas-11.3 up to f5ab04ce50 2019-03-14 14:13:47 +01:00
Nathan de Pryck 5625257991 [FIX] mrp: display quantities with UoM precision in wizard
Before this commit, the fields qty_reserved and
qty_done were displayed in the wizard with a
precision of two digits (for each case).

The problem is that the qty_to consume uses the
precision accuracy defined in 'Product Unit of Measure'.
It resulted that a quantity of 0.002 to consume
was translated to a qty_done of 0.0.

See opw-1949198

closes odoo/odoo#31822

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-03-14 09:40:38 +00:00
Nicolas Martinelli b5921fbfa8 [FIX] sale: exclude all attributes
With the demo data:
- Go to Sale > Products > Products, search for 'Customizable Desk'
- Click on 'Configure Variants'
- For variant 'Legs: Steel', add all attribute values for the
  'Conference Chair'
- Create a SO, add a line with 'Configure Product'
- Select the 'Customizable Desk' with 'Legs: Steel', add

Boom boom, traceback at template rendering at
`first_possible_combination[variant_id_index] == value_id`

This is because the `parent_combination` is not taken into account when
evaluating `_is_add_to_cart_possible`.

closes odoo/odoo#31496

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-03-14 08:08:45 +00:00
Nicolas Martinelli 35221a3243 [FIX] product: exclude without attribute values
With the demo data:
- Go to Sale > Products > Products, search for 'Customizable Desk'
- Click on 'Configure Variants'
- For variant 'Legs: Steel', remove the attribute values for the
  'Conference Chair'
- Create a SO, add a line with 'Configure Product'
- Select the 'Customizable Desk' with 'Legs: Steel', add

The 'Conference Chair' is displayed in the 'Available Options', while it
shouldn't.

The methods `_get_own_attribute_exclusions` and
`_get_parent_attribute_exclusions` compute the exclusions based on the
attribute values. Since there is no values in our case, the exclusion is
not taken into account.

We add a specific case to search for exclusions without values.

opw-1945460
2019-03-14 08:08:45 +00:00