Commit Graph
111461 Commits
Author SHA1 Message Date
Christophe Matthieu ffa4646af7 [FIX] web: calendar don't return to month mode in US
When click on the mini calendar, the calendar does not return to month
mode.
2017-10-26 09:12:11 +02:00
Christophe Matthieu 0c0fb63b0d [FIX] web: Calendar view of project tasks are displaying on the wrong day
Tasks are showing up on Wednesday when they are Thursday. Checked the dates
on the tasks and my timezone preferences are set to Americas-New York.

fix: Do not apply timezone for all day mode.
2017-10-26 09:12:11 +02:00
Aaron Bohy 6fa63eb15c [FIX] web: default value for o2m inside o2m
A traceback was raised when opening a new record for a model with a
one2many displayed inside a one2many (e.g. simply displaying the
number of records in the relation), and with an onchange setting a
default value to the inner one2many (for example, linking it to
existing records).

As the inner o2m has no subviews, it has no fieldsInfo, and the
code assumed that fieldsInfo was always set.

This was for example reproducible from v11 as follows:
  - create a product (with MTO/Buy and call for tender (need
    purchase agreement module))
  - create an SO with this product and confirm it
  - go to purchase order form view and add a move_dest_ids field in
    the tree definition of field order_line
  - go to menu purchase agreement and choose the PA generated by
    your SO
  - add a vendor, confirm the PA and click on 'New Quotation'.
2017-10-26 08:19:43 +02:00
Aaron Bohy 7b8001a847 [FIX] hr_expense,web: explicit link_to command for o2m
The ORM doesn't automatically link subrecords when it receives an
update command for a one2many. However, it may be necessary when
the default_get returns existing records for a one2many field. It
only worked before this rev. for the hr_expense model because of an
hack from 2016 (to reproduce: go to Expenses, check some expenses
from the list view, in Actions, click on 'Submit to Manager', the
new hr_expense_sheet contains the checked expenses (one2many), and
the webclient only sent an update command by linked subrecord).

This rev. fixes the problem properly: when the default_get returns
existing subrecords for a one2many field, a link_to command (4) is
generated alongside the update (1) command.
2017-10-26 08:19:43 +02:00
Géry Debongnie 0b41f21c16 [FIX] web: buttons with confirm attribute works properly
Before this commit, buttons in form view with the confirm attributes had
a peculiar behaviour:
- < saas-16: they saved the record as soon as you clicked on them, so
  the warning was basically ignored
- in saas-16+ (the new views): the button did not save the record before
  calling the method, at all.

This can be a problem, obviously.  Also, it does not seem consistent to
have a different behaviour when the user clicks on OK in the confirm
dialog, compared to a button without the confirm attribute.

So, with this commit, we just make sure that such buttons save the
record before calling the method, just like other buttons.
2017-10-25 21:51:36 +02:00
Lucas Perais (lpe) f45edfbe6d [FIX] web: image widget is dependent on its record's last_update
As a way to optimize loading, images are not necessarily fetched in db.
They have, in their url a "unique" parameter, which is the last_update date on **the record** and controls on the python-side whether it should get the image from a cache or from the db.

Before this commit, this __last_update field wasn't present in the view, so it wasn't fetched, and writes on a model's image worked but did not refresh.
The image displayed was the old one.

After this commit, when the image field widget is present, we force the loading of the __last_update field of the record.
Upon update, the image displayed is the new one.

OPW 777552

closes #20457
2017-10-25 16:39:52 +02:00
Lucas Perais (lpe) 6fc0793c30 [FIX] web: column aggregates should recompute when no records
1- When viewing for example journal items.
2- Now activate a filter that would display no record

Before this commit, the column aggregates of case 2 were the same as case 1.
After this commit, we recompute the aggregate, which ever case we are in.

OPW 777660

closes #20452
2017-10-25 15:02:13 +02:00
Christophe Simonis 7bfde6e05d [MERGE] forward port branch saas-15 up to d516d39948 2017-10-25 14:20:51 +02:00
Géry Debongnie c739bcf0d1 [FIX] web: update column aggregate when field changes (list)
A list view can display the sum of all values for one field, using the
'sum' attribute.  Before this commit, this sum was not updated whenever
a field was changed (but it worked when adding a line).
2017-10-25 14:13:14 +02:00
Christophe Simonis d516d39948 [MERGE] forward port branch saas-14 up to f86141aac2 2017-10-25 13:41:16 +02:00
Christophe Simonis f86141aac2 [MERGE] forward port branch 10.0 up to 598ac60a77 2017-10-25 12:52:00 +02:00
Richard Mathot 598ac60a77 [FIX] account_voucher: fix SyntaxError introduced by e69fb3f82d 2017-10-25 12:15:53 +02:00
qdp-odoo e69fb3f82d [FIX] account_voucher: fix missing payment_id in "Pay Directly" voucher
Create an accout.voucher with "Pay Directly" as payment.
    You get something like:

                D  |  C
    --------------------
    Expenses:   x  |
    Cash:          |  x

    However, the expense line doesn't appear in the reconciliation widget
    because the payment_id is missing in the account.move.line and then, doesn't match
    the search domain for the reconciliation.

    To solve it, a payment_id is created for this line in case of "Pay Directly" payment.

    -opw: 775167
2017-10-25 12:04:38 +02:00
Christophe Simonis ea9b574ac6 [MERGE] forward port branch 9.0 up to 6366150484 2017-10-25 11:28:25 +02:00
Nicolas Martinelli afccad3578 [FIX] stock: consumable in inventory valuation
Hide consumable products from the inventory valuation view since they
are skipped when generating accounting entries.
2017-10-25 10:52:09 +02:00
Denis Vermylen 33a04354eb [FIX] product,sale: allow negative discounts in pricelist advanced formula
Between v9.0 and v10.0 a pricelist refactoring made it so negative
discounts no longer worked correctly. They should always be
included in the unit price of the product (not to be displayed as a
negative discount even if the option to display the discount is
enabled).

This commit also corrects currency conversion issues when basing the
price on another pricelist with a differnt currency, and when making
the sales order in a company with a different currency than the
pricelists currency.
2017-10-25 10:35:12 +02:00
amoyaux b7d2bb3a8b [FIX] sale: impossible to validate SO
This reverts commit a5c82b0c57.
Since can_be_expense is only available when hr_expense
2017-10-25 10:31:39 +02:00
Nicolas Martinelli 6366150484 [FIX] point_of_sale: apply fiscal position
Commit https://github.com/odoo/odoo/commit/5afb5ecd04cf49be6bedb655b187b19a65e1e02d#diff-1c14accbe350f7a177b3e81e5846861bL1363
removed the call to `_map_tax_fiscal_position`. Fiscal positions are not
applied anymore...

Instead of applying the fiscal position in the `compute_all` method as
it used to be, we apply it just before the call. This mimics the
behavior of SO/PO/Invoices, where the taxes are changed directly on the
order line.
2017-10-25 09:37:32 +02:00
Christophe Matthieu 9d7f9cc38c [FIX] calendar: don't display the created or updated record
If the user change a filtered field, the record is not always displayed.
Wrong domain construction. The automatic filter must be use to filter and
remove items from the view for the unselected and not display the selected.
2017-10-24 17:26:48 +02:00
Géry Debongnie 616eedb7e4 [FIX] web: allow onchange to modify origin field
With this commit, we allow an onchange coming from a field to modify the
same field.  This was not working for field widgets derived from an
input field.
2017-10-24 15:39:14 +02:00
Géry Debongnie d58d6e270f [FIX] web: propagate view context in all x2m operations
It could happen in some cases that a rpc coming from a view was not made
with the context of the view (and from the action).  For example,

- enable "Lots & Serial Numbers" in the inventory settings
- create a stockable product tracked by lot
- go to the inventory dashboard, on the "receipts" card click on the
  three dots and then on "planned transfer"
this link forces the context key "planned_transfer" in the action
https://github.com/odoo/odoo/blob/11.0/addons/stock/views/stock_picking_views.xml#L725
- now add a stock move to move some quantity of the product you just
  created
- see that no button appears on the one2many list
- save
- see that a button appears on the one2many list

This is an issue because the read on the o2m at the end is made with the
wrong context.  The reason is that when we fetch x2m, we create a new
datapoint of type 'list' which did not reuse the context of its parent.
2017-10-24 15:38:55 +02:00
Goffin Simon d6d901c7bc [FIX] stock: updating quantity on hand changes the source name of a product
When a stock.inventory.line was created, it changed the src translation of the
product if the user was not in english US.

opw:776528
2017-10-24 15:30:01 +02:00
amoyaux a5c82b0c57 [FIX] sale_stock: delivered quantity blocked by expense policy
Use case to reproduce
- Set a product to be expensed
- set the expense_policy to something else than no
- Do a delivery order with a picking
- Validate the picking
-> Delivered quantity to 0 and impossible to create an invoice
if the invoice_policy is delivered_quantity

It happens due to this commit 48ea59d46e
What does it do:
- The move could be generated by an expense.
- If the move has 'no' as expense policy thus we won't add it in the invoice
Problem we can't guess if the move come from an expense or not (limitation).

This commit increments the delivered quanity if the product can
not be expense anymore

opw-777139
2017-10-24 14:34:36 +02:00
Khoi Nguyen a0fad8ba6d [FIX] web: show tooltips on status bar widgets
The 'new views' refactoring introduced the usage of the "disabled"
attribute in addition to the associated bootstrap class. As a
side-effect, tooltips are never rendered when the mouse is on a disabled
button, since disabled elements do not fire mouse events.

In particular, no tooltip is shown when hovering over a disabled button
of the statusbar in debug mode. This can be observed when opening the
form view of a Manufacturing Order.

We fix this issue by requiring that disabled buttons in a status bar
never be the target of mouse events, triggering them on their
respective parent elements instead.
2017-10-24 14:03:12 +02:00
Christophe Simonis 2130478cda [MERGE] forward port branch saas-15 up to 71f6e9c6ab 2017-10-24 14:01:58 +02:00
Adrian Torres 38f1875e0b [FIX] base_action_rule: ignore uninstalled models
Before this commit, creating a base_action_rule with model X from module
A and then uninstalling module A would make the database crash because
the algorithm would look for an uninstalled model during the Registry
reinitialization.

i.e. Install project and base_action_rule, create a base_action_rule
depending on model project.task, try to uninstall Project -> BOOM!

This is fixed by checking if the model obtained is None, in which case
we log a warning (for cleanup) and skip to the next iteration (continue)

opw-777301
2017-10-24 13:36:41 +02:00
Leonardo Donelli 37003c89ef [FIX] sql_db: typo in exception message
Closes #20315
2017-10-24 13:31:29 +02:00
Christophe Simonis 71f6e9c6ab [MERGE] forward port branch saas-14 up to 9aa5f7e3d9 2017-10-24 12:38:42 +02:00
Odoo Translation Bot b26e0b9292 [I18N] Update translation terms from Transifex 2017-10-24 12:38:17 +02:00
Christophe Simonis 9aa5f7e3d9 [MERGE] forward port branch 10.0 up to 82f00af29c 2017-10-24 11:58:33 +02:00
Christophe Simonis 82f00af29c [MERGE] forward port branch 9.0 up to 7bd8f9a5b2 2017-10-24 11:13:46 +02:00
qsm-odoo 7bd8f9a5b2 [FIX] web_editor: replacing selected text in a hierarchy on Firefox
When following these steps on Firefox:
- Select all text in a bold link (triple click)
- Type some text

The typed text did not replace the selected text but was instead put
at the front of it.
2017-10-24 10:50:18 +02:00
Laurent Smet 9bf4b70287 [FIX] account: fix price included taxes in reconciliation widget
Suppose a bank statement of 11$ and a tax 10% price_included.
The result shown by the reconciliation widget is

 D | C
11 |
   | 10
   | 1

that is correct. However, after clicking on validate, the result is

 D | C
10 |
   | 9.09
   | 0.91

because the taxes are recomputed python-side and the values of the account.move.line are
amount = 10, tax_id = 10% incl. Then, the tax is recomputed on 10 instead of 11$.

-opw: 776644
2017-10-24 09:14:48 +02:00
Joren Van Onder 33d20a2241 [FIX] point_of_sale: allow negative prices again
5afb5ecd04 rewrote the tax computation
in both account and point_of_sale to fix complex tax computations but
it no longer allowed negative prices in the point of sale.

opw-778013
2017-10-23 14:57:17 -07:00
Joren Van Onder 47c0cfc6e7 [FIX] point_of_sale: don't redeclare sign
var is function-scope (not block-scope) so this happens to work, but
it's confusing.
2017-10-23 14:57:08 -07:00
Aaron Bohy 58ed404a32 [FIX] web: editable lists: partial backport of 3b70961 2017-10-23 16:49:19 +02:00
Aaron Bohy c3a7037afd [FIX] web: restore scroll position when leaving form views
For instance, open a list view with enough records so that there is
a scrollbar, scroll, open a record of the bottom of the list and go
back using the breadcrumbs: the scroll position should be restored.

Before this rev., it wasn't the case: the scroll position was reset
to the top of the list (i.e. to 0).

This was due to the form renderer which manually triggered the event
DOM_updated on the main bus to ensure that textareas were correctly
autoresized. However, this wasn't done at the right place, and it
impacted the way scroll positions of views were saved/restored.
Indeed, this was only necessary when switching from readonly to edit
mode, i.e. when the form view was actually already in the DOM, but
not at each rendering as they may be performed outside the DOM (and
in this case, the DOM_updated event is triggered by the view_manager
when the view is really appended to the DOM).

Note that this whole scroll mechanism relying on the DOM_updated
event will probably change soon in master, with the refactoring of
the upper part of the webclient.
2017-10-23 16:49:19 +02:00
Lucas Perais (lpe) 9e3c723c19 [FIX] account: fix rounding of taxes in invoices
Set the round_globally method on the company.
Have an invoice with several lines and some of them having two (or more) taxes.
See the OPW 775501 for exact numbers.
It is a practical example case where
round(0.003 + 0.004) = 0.007 ~ 0.01
BUT
round(0.003) + round(0.004) ~ 0.00 + 0.00 = 0.00

Before this commit there could be a difference between amount_residual and amount_total on invoices.
This was because the two amounts are based on something different:
AMOUNT RESIDUAL
It computed in function of account_move_lines of the invoice.
For such an invoice the structure of those lines would be 1 line per tax + 1 line in the receivable account
Here the amount tax of each line is rounded before the addition.
In summary, the total amount of each tax are rounded and then added to each other

AMOUNT TOTAL
It is computed in function of the on-the-fly computation of the taxes with two cases:
- round per line: obviously each invoice_line gets its taxes rounded before addition, which isn't problematic as regards to the previous paragraph
- round globally: Here lied the problem. the rounding of the tax_line_ids was made **after** each tax amount was added to each other, which contradicts the above argument

After this commit, we round tax_line_ids before their addition, it is rather logical and matches the expectation one can have reading the tooltip of the rounding method field
>> If you select 'Round per Line' : for each tax, the tax amount will first be computed and rounded for each PO/SO/invoice line and then these rounded amounts will be summed, leading to the total amount for that tax.
If you select 'Round Globally': for *****each tax*****, the tax amount will be computed for each PO/SO/invoice line, then these amounts will be summed and eventually ***this total tax amount*** will be rounded <<

OPW 775501

After this commit, it is expected that the behavior of sale.order and purchase.order won't be the same as the invoice in the same conditions.
See PR #20349 for an explanation
2017-10-23 16:08:15 +02:00
Ayman Nedjmeddine 5f0b7942d5 [FIX] base: Add filter names
To be able to use xpath on it

Closes #20305
2017-10-23 13:44:14 +02:00
Ayman Nedjmeddine d0e71fccf8 [CLA] IOAyman's signature
Done at #20305
2017-10-23 13:43:33 +02:00
Christophe Matthieu b2327b8bf0 [FIX] web: reduce the number of changes when use handle widgets 2017-10-23 12:18:29 +02:00
Christophe Matthieu 512113b78a [FIX] web: reordering lines using the handle widget triggers onchange
issue: When reorder each line trigger an onchange on the line (if they are an
onchange linked to the field) and one onchange per line on the parent.

Adding an option doNotNotifyChange to avoid the trigger on the parent.
2017-10-23 12:18:28 +02:00
Géry Debongnie 6182053c5a [FIX] mail: prevent pos tour from sometimes failing
Here is what could (sometimes) happen in community:
- the point of sale tour is started by the runbot
- it loads the '/web' url
- this instantiate the mail client action (init)
- the tour sees that the POS link is in the dom and clicks on it
- the action manager destroys the discuss client action (before its
  start method is called)
- the destroy method from the client action is called, this.$buttons
  is not set, the destroy method causes a traceback
2017-10-23 11:12:55 +02:00
Goffin Simon f3691b5354 [FIX] website_sale: Pay Now Button is Clickable even without clicking policies and conditions
The button "Pay Now" is clickable by default. So each time a new delivery carrier is selected,
the button "Pay Now" will be cickable when the delivery carrier is updated.

Before the fix, the button "Pay now" was available even the checkbox "Policies and conditions"
were not checked because the deleted code was applied after the one checking the policies and conditions.

opw:771418
2017-10-23 11:05:28 +02:00
Josse Colpaert d62b307597 [FIX] mrp: unlink temp stock move lots when updating quantity to done qty
You start with an MO with a quantity of 2 with routing and we
produce just 1.  At least one of the components is tracked by lots.
When we update the MO to a quantity of 1 again, the temporary
stock.move.lots continued to exist which led to processing a the consume
d move of e.g. 1 piece with 2 pieces of the quants processed when
posting inventory.

A test is added in order to avoid this case

opw-767526 and opw-772786
2017-10-23 10:15:47 +02:00
Josse Colpaert 0038bf43f2 [FIX] mrp: avoid inactive move lots validation as a safety
We try to avoid to take the inactive move lots.  While they are normally
already filtered through the split, we had a case when you update the
quantity of the mo, that the split would not separate them.
2017-10-23 10:15:47 +02:00
Olivier Dony dc2a6c6cd2 [FIX] mail: shorten bounce message for sender 2017-10-20 18:40:46 +02:00
Christophe Simonis 5ea0f55d65 [MERGE] forward port branch saas-15 up to bee0c11ef7 2017-10-20 17:57:21 +02:00
Christophe Simonis bee0c11ef7 [MERGE] forward port branch saas-14 up to f3ac68ed29 2017-10-20 17:24:15 +02:00
Géry Debongnie 635572b49d [FIX] web: properly handle failures in onchanges
With the new views, we mainly focused on making them work.  But we also
need to be able to handle unusual cases, such as some RPC failing.  An
example of such a problem was the following:

- a form view with a one2many with an onchange
- edit mode, change a field in the one2many, click elsewhere
- the onchange triggers, calls the server
- it may happen that the server fails with a ValidationError
- the onchange deferred fails, the line in the one2many is restored to
  the value known by the list renderer, which is the previous value (but
  the new value was applied to the model)
- we now have a 'corrupted' state: clicking on save will send the
  invalid value, even though the UI displays the previous one.

We solve this problem in this commit by making sure that the onchange
deferred returned by the _performOnchange always succeed (or stays
pending).  If the rpc fails, the deferred will succeed with an empty
dictionary.  This means that the list renderer will be updated with the
value from the model.

Note that it may not be intuitive that a failure in the onchange is not
seen as an error from the perspective of the _performOnChange, but I
think that it still makes sense:
- the validation/network errors are not really a concern of the UI. The
  UI just display the values entered by the user.
- if an onchange fails (for example, because of a coding error), we do
  not really want to prevent the user from working.

Also, when the onchange is performed, the initial change was already
applied to the local data.  Rollbacking them would be a more difficult
task.

Note that we also improve the mock server in this commit, to allow
mocking failures.
2017-10-20 17:14:10 +02:00