The form view product.template.common.form is common for product.product
and product.template Then the active_id could not be used by default for
the field product_tmpl_id.
opw:670779
Adding an attribute with only one value does not recreate the product,
but write this attribute on every product instead. However, the current
filter is not correct: it checks if the given attribute value is not
already in the list of attribute values of the product.
The appropriate check is to verify that the attribute itself is not
already in the list of attributes of the product. Indeed, there is a
constraint to prevent the same attribute to have two different values on
the same product.
BTW, it's a new api function (`mapped`) inside an old api module. Not
the cleanest way to do it, but simpler to write.
opw-671114
Commit cf62fdb4 introduces a default pricelist item for any new
pricelist. Therefore, this default data is not necessary anymore, and
leads to two identical pricelist items created by default for the
"Public Pricelist".
Pass the fields parameter in the call to the `read` method,
so it fetches only the needed fields:
- Better performances,
- Avoid possible access rights issues.
In this case, it wasn't possible for a user
having no access rights to the purchase module
to print this report.
opw-670449
With a high number of pricelist items
(8.000.000 in the observed case),
the SQL request performed in `_price_rule_get_multi`
took a significant time (>3000ms)
to be executed without an index on the `pricelist_id`.
opw-670153
When a product has no company set, it assumed it use the main company
currency. Read the main company currency as SUPERUSER as current user
may not have access to it.
Followup of 3622c0d12a.
On deletion of a pricelist,
the pricelist items were not deleted.
Meaning, if you deleted a pricelist,
and this pricelist was used in the product pricing,
the line with the pricing remained, but without any
pricelist set. Besides, as the field is required
in the view, this prevented to edit anything without
correcting the pricing line first.
opw-669652
By default, a pricelist can be created without pricelist item. However,
if a user does not have the rights to manage the pricelist items (or
simply does not want to manage them), the feature is unusable. Indeed,
the user will create a new pricelist (for example, in a new currency),
but this pricelist will not have any item. Therefore, the pricelist will
not apply to anything.
The fix creates a pricelist item by default. The pricelist item is the
most generic possible: it applies to all products and uses the list
price as a base price.
opw-667607
When a product template has several variants, the fields volume, weight and
standard price don't have be displayed in the prodcut template form view.
opw:669240
Before this revision, with a configuration setup
like this:
- Company A - Currency EUR
- Company B - Currency USD
- Public Pricelist- Currency EUR
- Product A - Company A - Price 100 (EUR)
- Product B - No company - Price 100
When a user set in Company B browses the `/shop`,
the pricelist applied is the public pricelist,
and, therefore, the prices are shown in EUR
(nothing wrong so far),
but the currency of the price set on the products
were assumed in USD, the user company currency, and,
therefore, the rate conversion from USD to EUR
was applied.
The product A, configured with a sale price of 100€
in the company A, was therefore displayed to 92€
(100€ * the USD-EUR rate).
The product B, without any company set, as well.
Meaning, two users from two different companies using the same
pricelist see two different prices in the same currency,
because their companies do not use the same currency.
This doesn't make any sense.
With this revision,
when setuping a sale price on a product, the currency
of this price is assumed in the currency of the company
set on the product.
If there is no company set on the product (the company
is not required), the currency assumed is then the currency
of the main company.
opw-666059
This is related to revision 2ebbcba33a
The above revision introduces a regression: the ability
to configure pricelist items applied on product categories.
If you configured a pricelist with items applied
on products categories, then the first item with a product
category matched all products, even if the products were
not in the according category.
This is because the condition checking that the product
is within the pricelist item product category has been
completely removed, by the above commit.
opw-666059