Commit Graph
127612 Commits
Author SHA1 Message Date
Aaron Bohy 034c075e7e [FIX] web: default_get returning unknown field
Before this rev., it crashed when trying to create records of the
res.users model. This is due to commit ad1cceb.

The 'default_get' of 'res.users' always returns a value for field
'groups_id', whereas the docstring of 'default_get' states that it
only returns default values for fields given in arguments.

Rev. ad1cceb changed a bit the way the result of 'default_get' was
processed, by iterating over the values instead of over the fields
in the view. So, before ad1cceb, 'groups_id' was simply ignored,
and after, the BasicModel tried to process it and it crashed when it
attempted to retrieve its fieldsInfo, as this field isn't in the
view.

This rev. restores the previous behavior.

Fixes #23303
Fixes #23305
2018-02-26 12:45:10 +01:00
Thibault Delavallée 74d4b3902d [REF] mail: consider body in message_post is always html
Purpose of this commit is to simplify a bit message_post API. It has
a content_subtype parameter allowing to receive plaintext content.
It is then automatically converted into html.

This commit removes the parameter and consider the content is always
html. Code calling message_post should handle the conversion. In Odoo
the only use was in the chat_post controller that now perform the
plaintext to html conversion before calling message_post.

This commit is purely technical and does not hold any functional change.
Purpose is to clean code in order to prepare future changes in mail
application.
2018-02-26 12:15:31 +01:00
Thibault Delavallée a6c187a01c [REM] mail, hr: remove old redirection when posting on users
Posting on users is not supported anymore. It was implemented in a time
we thought having a twitter-like behavior in Odoo was a good idea.
Posting on users was redirected on its related partner in mail. It was
redirected on its related employee in hr. It does not make sense anymore
as employee are records with limited access and partners used for other
purpose than discussing notably in accounting.

Now that we have chat channels it makes no sense to have this kind of
behavior still implemented. Let us remove it. No functional change
should occur with this commit.
2018-02-26 12:15:30 +01:00
Thibault Delavallée 1b5b2b9dd0 [FIX] mail: correctly propagate message_post parameters to redirection
Propagation was not correctly done at 8a026e26c6 . This commit
ensures all parameters are passed to sub-calls when redirection is done
in message_post.
2018-02-26 12:15:01 +01:00
Thibault Delavallée f6dd602530 [DOC] mail: update test performance counters
A test_mail only counter was not updated correctly after changes done
in user assignation notification (see a6e1324873).
2018-02-26 12:14:45 +01:00
jao-odoo 5d2c63bf49 [IMP] purchase_requisition : Remove field account_analytic_id from purchase requisition (#22910)
This field was already on the product lines.
2018-02-26 11:52:10 +01:00
Laurent Smet 5450c5c3f7 [IMP] account: allow partial reconciliation with write-off
Suppose you have an invoice of 3000. You want to pay with paypal
    3 x 1000 but having of fee of 10 in each transaction. So, you attempt
    to reconcile 3000 with 3 x (990 + 10) that is not possible with the
    reconciliation widget.

Was PR #17489. Was task: https://www.odoo.com/web#id=23384&view_type=form&model=project.task&action=333&active_id=967&menu_id=4720
opw-815421
2018-02-26 10:37:39 +01:00
Olivier Dony 12b15cb554 [FIX] website_mail_channel: fix P3 compatibility of comparison
`msg_more_count` can be undefined, and therefore evaluates to None, which
makes the comparison with 0 invalid in Python 3.
2018-02-26 09:23:44 +01:00
Alexandre Kühn 742ac28a44 [FIX] web: doAction always resolved with the action
Before this commit, doAction returns a deferred that is
resolved when the action is performed (the exact moment
depends of the type of the action).

However, the deferred was not resolved with the action.

This is misleading, hence a traceback in the web_client
when clicking on 'Run JS Tests' in debug mode (enterprise):
after doAction, the web_client should hide the home_menu
depending on the type of the action.

With this commit, any doAction returns a deferred that is
resolved with the performed action.
2018-02-26 09:16:00 +01:00
Nicolas Martinelli e2c2a2fc69 [FIX] mail: rotate image in preview
When uploading an image as attachment, the document viewer doesn't
support the EXIF data. Therefore, a picture taken with a non-zero angle
will not appear with the right orientation (preview or full-size image).

Unfortunately, supporting EXIF data is not trivial in Python or
JavaScript without external libraries. Therefore, we add a rotate button
which allows the user to rotate the image by 90°. Moreover, we add the
`image-orientation: from-image` CSS property, which is only supported by
Firefox.

opw-1814407
2018-02-26 08:24:08 +01:00
Aaron Bohy a16013be66 [FIX] web: multi pages ordered o2m with onchange
Let's assume a one2many displayed over several pages with a default
order such that a record, say R, that would normally be on page 1
is actually on another page. Moreover, there is an onchange on that
one2many which converts all commands 4 (LINK_TO) into commands 1
(UPDATE), which is standard in the ORM.

When the first line of the one2many was edited, the record R was
fully loaded, whereas it shouldn't have been (as it is not on the
current page). So basically, a useless read was performed.
Moreover, if there was an x2many field in the one2many list, a
crash occurred because relational data of R that shouldn't have
been read wasn't postprocessed by the BasicModel.

The useless read occurred because the one2many subrecords weren't
correctly sorted before checking if some of them/some of their
fields should be read. This is not the case anymore.

OPW-1816800
2018-02-26 08:14:08 +01:00
Joren Van Onder 5b769650d6 [FIX] point_of_sale: allow refunds on non-cash journals
A customer can pay an order with a non-cash journal (e.g. a credit
card through a stand-alone terminal).

When this order has to be refunded later it should be possible to do
so on that same journal.

Some code prevented this from happening, notably a check in
order_is_valid which explicitly prevented this for an unknown
reason. There is no explanation in the
commit (4647f896a4) introducing that.

This commit allows the following:

1. input what you want to refund with a negative qty
2. click 'Payment'
3. click the Credit Card (type Bank) journal
4. (amount is auto-populated)
5. click 'Validate'

opw-805302
2018-02-25 19:35:11 -08:00
Odoo Translation Bot 141a2acdd8 [I18N] Update translation terms from Transifex 2018-02-25 04:54:25 +01:00
Odoo Translation Bot 3535904bce [I18N] Update translation terms from Transifex 2018-02-25 01:38:10 +01:00
Romain Derie bc75ec7c14 [IMP] sale_coupon, website_sale_coupon: add tests
Commit a42c27f99e0061b7c4f recently fixed some bugs on sale_coupon.
This commit add some tests to be sure theses bugs are fixed and won't appear
again.

This closes #1744
2018-02-23 18:37:20 +01:00
Romain Derie 5db5f8e981 [IMP] sale_coupon, website_sale_coupon: add tests
Commit a42c27f99e0061b7c4f recently fixed some bugs on sale_coupon.
This commit add some tests to be sure theses bugs are fixed and won't appear
again.

This closes #1744
2018-02-23 18:37:20 +01:00
Romain Derie c69778fe6f [IMP] sale_coupon, website_sale_coupon: add tests
Commit a42c27f99e0061b7c4f recently fixed some bugs on sale_coupon.
This commit add some tests to be sure theses bugs are fixed and won't appear
again.

This closes #1744
2018-02-23 18:37:20 +01:00
Romain Derie d8ea1d04d5 [FIX] sale_coupon: fix some use cases
Some use cases were wrong, this commit attempt to fix those.
Here is the most important ones:

1. Discount was offered on free product 'value' aswell

Cart: 4 iPad Mini + one free offered + 10% discount

                      |    qty | unit value |   line total |
	----------------------------------------------------
	iPad Mini     |      4 |        320 |         1280 |
	- 10% discount|      1 |        128 |          128 |
	= 1152
	- free product|      1 |        320 |          320 |
	= 832

Should be

	              |    qty | unit value |   line total |
	----------------------------------------------------
	iPad Mini     |      4 |        320 |         1280 |
	- free product|      1 |        320 |          320 |
	= 960
	- 10% discount|      1 |         96 |           96 |
	= 864

The error result is $32 which is the 10% discount applied on the free iPad.

2. Decreasing product quantity below the minimum threshold to be elligible for
the promotion doesn't remove the product

  - (With a promotion offering a free iPad when you buy 3 (fourth is free))
  - Create a quotation with 3 iPads Mini, save and update promotions, you don't
    have a free one, which is 'correct'
  - Edit, change the quantity to 4 iPads, save, update promotions, you have a
    free iPad (reduced from total), still correct
  - Edit, change the quantity back to 3 ipad, update ptomotions, you still have
    a free iPad even if you only bought 3 of them (the way it is designed, the
    free iPad should only appears when you order your fourth).

The error result in a 'loss' of $320 since at the end we are offering a free
iPad and the user only pays 2 instead of 3.

3. Free product will be considered as regular product when updating quantity
of regular product afterward

This error is kind of exponential: the more you play with the flow explained
bellow, the more incorrect it becomes.

Buy 100 iPads, get 25 free iPads.
Then set quantity (on regular iPad) to 50, it will recalculate the amount of
free iPad thinking the 25 previous free iPads are regular iPad.
(50 + 25) = 75 regular iPads = 18 free iPads (25 previous free iPads were
wrongly used for the calculation but they are simply gone at this point).
Cart is now 50 regular iPads and 18 free one, total: $10240 (50×320 - 18×320).
It should be 12 free iPads, not 18, so $12160 (50×320 − 12×320)

The error result in a loss of $1920: ~ 20% of the total amount of the order.

This error will also appear the other way around if you add quantity instead of
removing some.
Playing with this error multiple times, you can arrive to a negative total
(more free than paid products), 0 total or very low total ($320 for 100 iPads).

4. Free product are wrongly calculated, user get too many of them

  - Create a quotation with 10 iPads, you get 3 free iPads instead of 2
  - Indeed, your first 4 iPads should give you a free one
  - Your next 4 iPads should give you a second one (you got 8)
  - The last 2 (to reach 10) are not enough to give you a third free iPad

The error result in a loss of $320 out of a total of 2560$ which is ~ 15%

5. Paid/regular products related to a promotion won't be taken into account
 when checking if you have the minimum amount threshold to apply the promotion

Promotion: 3 Computer Case(25$) = 1 Free Little Server (40.000$), auto applied
  -Have a cart with 3 'Computer Case' and 2 'Little Server'
  -One little server of the 2 is free (because you have 3 computer cases)
  -You so pay 3x25 + 1x40000 which is 40075$
  -Create a promo code that will give you 10% discount if you bought over $2000
  -You won't get the reduction even if you bought over $40.000 because the
   little server you pay is considered as the product of the reward product
   even if you dont have it free. It doesn't check how many regular product
   should be substracted according to the number of free product you have

6. Wrong product is checked for the required quantity to apply the promotion

Promotion: 3 iPads Mini ($320) = 1 free Bose Mini Bluetooth Speaker ($247)

  - Add 8 iPads Mini and a Bose Mini Bluetooth Speaker to your cart
  - The system should give you a free Bose Mini Bluetooth Speaker since you
    only have one regular Bose
  - But the system is giving you 2 free Bose Mini Bluetooth Speaker

Cart is: 8 iPad ($2560), 1 Bose ($247), 2 free Bose (-$496)
The system think that it should give you 2 free Bose because you are eligible
to, since you have 8 iPad, but it doesn't check that you have enough regular
Bose.

The error result in a loss of $247 out of a total of $2311

7. Auto applying promotion are not applied if there is already a promotion code
Promotion:
  - Free iPad Mini if you buy 3 (so the fourth become free), auto applied
  - 10% discount with code '10pc'

  - Add 4 iPads Mini, you got a free one
  - Set quantity back to 1 iPad, free one is gone
  - Add code 10pc, you got a 10% reduction line
  - Set quantity to 4 iPads again, you dont have the free iPad since there is
    already a promo code

This could make sense but it is not coherent since the 2 promotions would be
applied if they were both on auto apply mode.
Note:
  - If both promotions are on auto apply, you will get both
  - If 10% discount becomes auto applied and iPad promotion now has a code
    (reverse situation) it will work

8. Discount is only applied on untaxed amount, not on tax

Discount will ONLY be calculated on the untaxed amount and then reduced from
the sale order/cart total.
The taxes would be unchanged and charged like the product was full price.

Let's illustrate with a $100 product, a 15% tax and a 20% discount:

1. Tax included:
$100   : Product with 15% included taxes
$86.96 : Untaxed product
$13.04 : Taxes

After aplying 20% discount, result should be:
$80    : Product with 15% included taxes
$69.57 : Untaxed product
$10.43 : Taxes

Instead we have:
$82.61 : Product with 15% included taxes
$69.57 : Untaxed product
$13.04 : Taxes

There is a difference of $2.61 which is the result of the taxes not being
discounted: 13.04-10.43 = 2.61

2. Tax excluded:
$115 : Product with 15% excluded taxes
$100 : Untaxed product
$15  : Taxes

After aplying 20% discount, result should be:
$92  : Product with 15% included taxes
$80  : Untaxed product
$12  : Taxes

Instead we have:
$95  : Product with 15% included taxes
$80  : Untaxed product
$15  : Taxes

There is a difference of $3 which is the result of the taxes not being
discounted: 15-12 = 3

9. Taxes of the free shipping reward would be considered as paid value when
checking if required threshold is met.

------------------------------------------

Not really a bug, more an improvement:

1. The way it was designed, the rule_minimum_amount would check if your order
amount was over the required threshold to be eligible for the reward.
'Problem' is that it your order has already a discount (eg: 10%), it would
check if the price without discount is above the required amount.
I don't think it is coherent, let's illustrate:
  - First pomotion (auto applied): 1 iPad Mini for free if you buy over $2000
  - Second promotion (auto applied): 50% on order

If an user is buying for $2000, he is actually paying $1000 thanks to the 50%
discount.
Should we give him the free iPad?
The current implementation is giving it, which is not convenient IMHO.
Now, we use the amount the user really pay to check if he is elligible.

2. Since new promotions have the same sequence by default, they will be sorted
and applied by their creation order. This will result in inconsistent behavior:
  - Promotion 1 : 10% discount
  - Promotion 2 : free shipping
  - Both promotion are auto applied and need a minimum of $872.73 tax excluded

Let's illustrate with a $873 order:
If the promotions were created in the order above, you won't get both rewards
since the 10% discount will be applied first and will lower the SO total.
The order will then fall below the $872.73 required amount and won't be
eligible for the free shipping.
But if you created the free shipping promotion before the discount one, you
will be eligible for both since the free shipping will be applied first and
won't change the SO total.

To keep the same behavior independently of the promotion creation order, we now
sort by reward_type ('discount' > 'free_shipping' > 'product' to apply
discounts first.
This is better IMHO, since you want to give promotions with a minimum threshold
ONLY if the user really pays that amount. It wouldn't be the case if the total
is checked before the discount is applied.
2018-02-23 18:36:19 +01:00
Romain Derie ef5d056403 [FIX] sale_coupon: fix some use cases
Some use cases were wrong, this commit attempt to fix those.
Here is the most important ones:

1. Discount was offered on free product 'value' aswell

Cart: 4 iPad Mini + one free offered + 10% discount

                      |    qty | unit value |   line total |
	----------------------------------------------------
	iPad Mini     |      4 |        320 |         1280 |
	- 10% discount|      1 |        128 |          128 |
	= 1152
	- free product|      1 |        320 |          320 |
	= 832

Should be

	              |    qty | unit value |   line total |
	----------------------------------------------------
	iPad Mini     |      4 |        320 |         1280 |
	- free product|      1 |        320 |          320 |
	= 960
	- 10% discount|      1 |         96 |           96 |
	= 864

The error result is $32 which is the 10% discount applied on the free iPad.

2. Decreasing product quantity below the minimum threshold to be elligible for
the promotion doesn't remove the product

  - (With a promotion offering a free iPad when you buy 3 (fourth is free))
  - Create a quotation with 3 iPads Mini, save and update promotions, you don't
    have a free one, which is 'correct'
  - Edit, change the quantity to 4 iPads, save, update promotions, you have a
    free iPad (reduced from total), still correct
  - Edit, change the quantity back to 3 ipad, update ptomotions, you still have
    a free iPad even if you only bought 3 of them (the way it is designed, the
    free iPad should only appears when you order your fourth).

The error result in a 'loss' of $320 since at the end we are offering a free
iPad and the user only pays 2 instead of 3.

3. Free product will be considered as regular product when updating quantity
of regular product afterward

This error is kind of exponential: the more you play with the flow explained
bellow, the more incorrect it becomes.

Buy 100 iPads, get 25 free iPads.
Then set quantity (on regular iPad) to 50, it will recalculate the amount of
free iPad thinking the 25 previous free iPads are regular iPad.
(50 + 25) = 75 regular iPads = 18 free iPads (25 previous free iPads were
wrongly used for the calculation but they are simply gone at this point).
Cart is now 50 regular iPads and 18 free one, total: $10240 (50×320 - 18×320).
It should be 12 free iPads, not 18, so $12160 (50×320 − 12×320)

The error result in a loss of $1920: ~ 20% of the total amount of the order.

This error will also appear the other way around if you add quantity instead of
removing some.
Playing with this error multiple times, you can arrive to a negative total
(more free than paid products), 0 total or very low total ($320 for 100 iPads).

4. Free product are wrongly calculated, user get too many of them

  - Create a quotation with 10 iPads, you get 3 free iPads instead of 2
  - Indeed, your first 4 iPads should give you a free one
  - Your next 4 iPads should give you a second one (you got 8)
  - The last 2 (to reach 10) are not enough to give you a third free iPad

The error result in a loss of $320 out of a total of 2560$ which is ~ 15%

5. Paid/regular products related to a promotion won't be taken into account
 when checking if you have the minimum amount threshold to apply the promotion

Promotion: 3 Computer Case(25$) = 1 Free Little Server (40.000$), auto applied
  -Have a cart with 3 'Computer Case' and 2 'Little Server'
  -One little server of the 2 is free (because you have 3 computer cases)
  -You so pay 3x25 + 1x40000 which is 40075$
  -Create a promo code that will give you 10% discount if you bought over $2000
  -You won't get the reduction even if you bought over $40.000 because the
   little server you pay is considered as the product of the reward product
   even if you dont have it free. It doesn't check how many regular product
   should be substracted according to the number of free product you have

6. Wrong product is checked for the required quantity to apply the promotion

Promotion: 3 iPads Mini ($320) = 1 free Bose Mini Bluetooth Speaker ($247)

  - Add 8 iPads Mini and a Bose Mini Bluetooth Speaker to your cart
  - The system should give you a free Bose Mini Bluetooth Speaker since you
    only have one regular Bose
  - But the system is giving you 2 free Bose Mini Bluetooth Speaker

Cart is: 8 iPad ($2560), 1 Bose ($247), 2 free Bose (-$496)
The system think that it should give you 2 free Bose because you are eligible
to, since you have 8 iPad, but it doesn't check that you have enough regular
Bose.

The error result in a loss of $247 out of a total of $2311

7. Auto applying promotion are not applied if there is already a promotion code
Promotion:
  - Free iPad Mini if you buy 3 (so the fourth become free), auto applied
  - 10% discount with code '10pc'

  - Add 4 iPads Mini, you got a free one
  - Set quantity back to 1 iPad, free one is gone
  - Add code 10pc, you got a 10% reduction line
  - Set quantity to 4 iPads again, you dont have the free iPad since there is
    already a promo code

This could make sense but it is not coherent since the 2 promotions would be
applied if they were both on auto apply mode.
Note:
  - If both promotions are on auto apply, you will get both
  - If 10% discount becomes auto applied and iPad promotion now has a code
    (reverse situation) it will work

8. Discount is only applied on untaxed amount, not on tax

Discount will ONLY be calculated on the untaxed amount and then reduced from
the sale order/cart total.
The taxes would be unchanged and charged like the product was full price.

Let's illustrate with a $100 product, a 15% tax and a 20% discount:

1. Tax included:
$100   : Product with 15% included taxes
$86.96 : Untaxed product
$13.04 : Taxes

After aplying 20% discount, result should be:
$80    : Product with 15% included taxes
$69.57 : Untaxed product
$10.43 : Taxes

Instead we have:
$82.61 : Product with 15% included taxes
$69.57 : Untaxed product
$13.04 : Taxes

There is a difference of $2.61 which is the result of the taxes not being
discounted: 13.04-10.43 = 2.61

2. Tax excluded:
$115 : Product with 15% excluded taxes
$100 : Untaxed product
$15  : Taxes

After aplying 20% discount, result should be:
$92  : Product with 15% included taxes
$80  : Untaxed product
$12  : Taxes

Instead we have:
$95  : Product with 15% included taxes
$80  : Untaxed product
$15  : Taxes

There is a difference of $3 which is the result of the taxes not being
discounted: 15-12 = 3

9. Taxes of the free shipping reward would be considered as paid value when
checking if required threshold is met.

------------------------------------------

Not really a bug, more an improvement:

1. The way it was designed, the rule_minimum_amount would check if your order
amount was over the required threshold to be eligible for the reward.
'Problem' is that it your order has already a discount (eg: 10%), it would
check if the price without discount is above the required amount.
I don't think it is coherent, let's illustrate:
  - First pomotion (auto applied): 1 iPad Mini for free if you buy over $2000
  - Second promotion (auto applied): 50% on order

If an user is buying for $2000, he is actually paying $1000 thanks to the 50%
discount.
Should we give him the free iPad?
The current implementation is giving it, which is not convenient IMHO.
Now, we use the amount the user really pay to check if he is elligible.

2. Since new promotions have the same sequence by default, they will be sorted
and applied by their creation order. This will result in inconsistent behavior:
  - Promotion 1 : 10% discount
  - Promotion 2 : free shipping
  - Both promotion are auto applied and need a minimum of $872.73 tax excluded

Let's illustrate with a $873 order:
If the promotions were created in the order above, you won't get both rewards
since the 10% discount will be applied first and will lower the SO total.
The order will then fall below the $872.73 required amount and won't be
eligible for the free shipping.
But if you created the free shipping promotion before the discount one, you
will be eligible for both since the free shipping will be applied first and
won't change the SO total.

To keep the same behavior independently of the promotion creation order, we now
sort by reward_type ('discount' > 'free_shipping' > 'product' to apply
discounts first.
This is better IMHO, since you want to give promotions with a minimum threshold
ONLY if the user really pays that amount. It wouldn't be the case if the total
is checked before the discount is applied.
2018-02-23 18:36:19 +01:00
Romain Derie 6d25671bb3 [FIX] website_sale_coupon: new class for product results
For the tests on coupon on enterprise, there is a need of a new class to wait
search results to be loaded, or it would click on the /shop product instead of
waiting, resulting in a conccurent update error.

This closes #22263
2018-02-23 18:35:20 +01:00
Christophe Simonis 9a1d71ce95 [MERGE] forward port branch saas-14 up to d8e45489cd 2018-02-23 18:25:03 +01:00
Christophe Simonis d8e45489cd [MERGE] forward port branch 10.0 up to ab60d773eb 2018-02-23 18:24:26 +01:00
Christophe Simonis a0d7763e09 [MERGE] forward port branch saas-11.2 up to 932e641be1 2018-02-23 17:20:52 +01:00
Christophe Simonis 932e641be1 [FIX] web: remove tests related to removed feature
`Archive` feature has been removed with e5330857b7
2018-02-23 16:26:18 +01:00
RomainLibert 12b580c953 [IMP] rating: Parent document name update
For objects inherting from rating.mixin, when their parent model change
(e.i.: task from a project to another), the "Parent document name" does
not change. The rating is still considered belonging to the old parent
object (rating stat of project is not correct).

Change the rating API. In rating mixin, instead of having 2 methods
returning parent id and parent model (rating_get_parent_id and
rating_get_parent_model_name), we should have one method returning the
'parent relation field' (inevitably m2o field). Then we can deduce its
parent_res_id/parent_res_model, and check this parent field is in values
of write to trigger the recompute of parent_res_name.

Also, add "ondelete=cascade" on parent_res_model_id

Impacted modules: project, rating, helpdesk, livechat
2018-02-23 16:13:03 +01:00
RomainLibert ffbee8882e [FIX] rating: Fix minor bug in write method
It shouldn't happen, but if we change the name of multiple rating_mixin
inheriting models, we can run into an error, because write doesn't
support multiple values.
2018-02-23 16:13:03 +01:00
Adrian Torres 517b1d1faf [FIX] sale: re-init account.invoice.report view (#23286)
* Install sale_management, contacts
* Uninstall sale (not sale_management)
* Try to access any partner via contacts
    -> BOOM, traceback: relation account_invoice_report does not exist

For some reason, uninstalling `sale` drops the SQL view for
account.invoice.report which in turn means that anything that requires
the view will break, this was the case for accessing the res_partner
form view.

Fixes #23270 by forcing account.invoice.report.init() upon
uninstallation of the `sale` module.
2018-02-23 16:06:03 +01:00
Yannick Tivisse 3ac58d44c7 [FIX] l10n_be_hr_payroll: Use the warrant costs on wage_with_holidays
Purpose
=======

The warrant cost formulae has been modified at 5d22170.

Instead of using the (remaining) warrant costs formulae, use the corresponding field instead.
2018-02-23 15:23:07 +01:00
qdp-odoo 7b322d08de [IMP] base: set partner_id as required on res.partner.bank 2018-02-23 14:56:12 +01:00
qsm-odoo 216d73d727 [FIX] website_slides: fix slide loading (function call with wrong this)
Strangelly, this worked in 9.0 as the `this` element refers to the
`window` which also contains the `$` function. This may still be
wrong in some cases though, so it is fixed here (even if reported for
10.0).

opw-(1)817789
2018-02-23 13:37:00 +01:00
William Henrotin a4e05fb185 [FIX] point_of_sale: create picking at pos payment registering
previously, it was not possible to complete a payment on return in POS because of a stock move function that does not exist. The commit https://github.com/odoo/odoo/commit/6aebc800538b6fabd79c6cd1e819ef6d961e7589 changed some function names in stock.move model to make them private but the forward-port https://github.com/odoo/odoo/commit/aea68e4730d6c06a111504dacb3357e208971288 was not compatible with these new names.
2018-02-23 11:53:13 +01:00
Pierre Masereel 57f6c12834 [FIX] point_of_sale: add menu taxes to POS
When only point_of sale module is installed, it is impossible to modify
existing taxes because the One2many tags widget doesn't allow to open the
taxes and edit them. So we add a menu item allowing to modify them.

It is needed if we want to set a tax included in the price.
2018-02-23 11:19:48 +01:00
Christophe Simonis d6f5b7e2e6 [FIX] payment_ogone: correctly decode 3DS html form 2018-02-23 11:15:46 +01:00
Lucas Perais (lpe) 801b02f0ce [FIX] account: reconciliation widget: avoid created lines proposition may be empty
Before this commit, when stroking "Enter" in the filter, a JS traceback popped, because no created lines where found

After this commit, we control that we have created lines

OPW 1814309
2018-02-23 11:10:57 +01:00
Simon Lejeune 001b360458 [FIX] stock_account: fifo vacuum
If the vacuum finds that there is nothing to do regarding the accounting
entries, do not call `_account_entry_move`, else an accounting entry
will be created for the entire cost of the compensated move.

opw-1817372
2018-02-23 11:07:45 +01:00
Jeremy Kersten 708ad186d5 [FIX] website: sitemap is not translatable
Disable the multilang on the route sitemap to avoid the user to be redirected
from /sitemap.xml to /<lang>/sitemap.xml
2018-02-23 10:37:09 +01:00
Jeremy Kersten 7179008ffa [FIX] doc: fix link to our website
Remove wrong slash trailing

Now, in V11, matching of page are done on the exact name.

Previously, the error was transparent because we was using a
dedicated controller that allow trailing slash.
https://github.com/odoo/odoo/blob/11.0/odoo/http.py#L936

https://webmasters.googleblog.com/2010/04/to-slash-or-not-to-slash.html

    http://example.com/foo/ (with trailing slash, conventionally a directory)
    http://example.com/foo (without trailing slash, conventionally a file)

    Google treats each URL above separately     (and equally) regardless of
    whether it’s a file or a directory, or it contains a trailing slash or
    it doesn’t contain a trailing slash.

    Different content on / and no-/ URLs okay for Google, often less ideal for users

   Special case for homepage
       Rest assured that for your root URL specifically,
       http://example.com is equivalent to
       http://example.com/ and can’t be redirected even if you’re Chuck Norris.
2018-02-23 10:36:15 +01:00
Jeremy Kersten dee3b87ae4 [FIX] website_customer: fix sitemap when customer had no country
Before this commit, the sitemap will crash if you have some res.partner
without country that are publish and with an assigned_partner_id.

Now, we only search for customer with country that are set and avoid to have
a traceback:
  File "/home/odoo/src/odoo/11.0/addons/website_customer/controllers/main.py", line 31, in sitemap_industry
    loc = '/customers/country/%s' % slug(country['country_id'])
  File "/home/odoo/src/odoo/11.0/addons/http_routing/models/ir_http.py", line 91, in slug
    identifier, name = value
  TypeError: 'bool' object is not iterable
2018-02-23 10:36:15 +01:00
Adrian Torres ff7efbb1e8 [FIX] website,sale,auth_signup: prevent shared field deletion
The field `auth_signup_uninvited` is defined in the 3 aforementioned
modules, yet they are independant modules in respects to one another.

This means that whichever module is installed first will create an XMLID
for the field, if this module is uninstalled before the other two: boom!
crash when changing general settings because the res.config.settings
field set by the other two modules no longer exists.

To solve this, we simply ignore the field during ir_model_field.unlink()

Fixes #23171
2018-02-23 10:28:10 +01:00
Aaron Bohy ad1cceb4fb [FIX] web: one2many and onchange corner case issue
Let's assume a one2many list view inside a form view, displaying
a single char field A. There is an onchange on the form view
returning a command 0 (CREATE) for the one2many. The command 0 only
specifies a value for field A. The one2many list isn't editable, so
when a sub-record is clicked, it is open in a form view (in a
dialog). In this form view, an x2many field B is displayed in a sub
list or kanban view.

Before this rev., it crashed when the user tried to open the
created one2many sub-record (returned by the onchange) in the form
view, because of the presence of the x2many field B, which wasn't
correctly processed by the BasicModel (its value was undefined,
whereas it must be a valid, empty, dataPoint).

Moreover, the limit of the x2many field B wasn't set, so a pager
was displayed as soon as it contained at least one record.

Fixes #22050
2018-02-23 10:01:39 +01:00
Nicolas Martinelli 8a29e37dda [FIX] sale_timesheet: format amount
Due to the representation of floats, it may happen that the amounts in
the project overview appear with much more decimals than expected.

We use the usual `monetary` widget to render the amounts.

opw-1814843
2018-02-23 08:59:28 +01:00
Martin Trigaux 370c944c2f [IMP] pos_mercury: do not translate technical error messages
Error messages are given by vendor and have specific meaning
Translating it does not specifally help to find out more about the problem
pos_mecury is intended for US market anyway
2018-02-23 08:45:40 +01:00
Akim Juillerat ab60d773eb [FIX] hr_timesheet_sheet: set default company on the company instead of department
Code is explicit enough ...

Closes #23120
2018-02-23 08:42:50 +01:00
Monica Diaz Pena 088d00f2a7 [FIX] mail: Don't duplicate uuid of mail channels.
If you duplicate a channel the UUID should not
be copied, otherwise it might introduce security
issues and the method 'channel_minimize' will
fail with an "expected singleton error".

Closes #23102
2018-02-23 08:42:43 +01:00
jem-odoo 7b29f410a5 [CLA] Add Monica to Merchise's CLA 2018-02-23 08:42:34 +01:00
Christophe Simonis 69ef302aa0 [FIX] website_quote: call existing method 2018-02-22 19:45:42 +01:00
Christophe Simonis e5987434c6 [MERGE] forward port branch saas-15 up to 9cfd4a5c07 2018-02-22 19:06:31 +01:00
Christophe Simonis 9cfd4a5c07 [MERGE] forward port branch saas-14 up to caea203ba6 2018-02-22 18:59:43 +01:00
Christophe Simonis caea203ba6 [MERGE] forward port branch 10.0 up to f492c73080 2018-02-22 18:57:02 +01:00
Christophe Simonis f492c73080 [MERGE] forward port branch 9.0 up to cd21ea414e 2018-02-22 18:56:22 +01:00