Commit Graph
117975 Commits
Author SHA1 Message Date
Aaron Bohy 99b1f79f50 [FIX] report: Array.prototype.includes is ES6
This feature is in the ECMAScript-2016 specification, which is not
yet fully supported by all browsers (and phantomjs).
2017-03-08 20:45:17 +01:00
Denis Ledoux a8efeffbf2 [FIX] pos_mercury: support for Inernet Explorer / Edge
In the method `xml_node_to_string` in `qweb2.js`,
which is used when extending XML templates,
such as this extend of the template `PaymentScreen-Paymentlines`

the method `(new XMLSerializer()).serializeToString(node)`
magically escapes the double quotes `"` in Internet Explorer and Edge,
while this is not the case in other browsers,
therefore converting, for instance,
`this.removeAttr("class");`
to
`this.removeAttr(&quote;class&quote;);`
whhich made the rendering of the template fails.

As this method is quite critical, we do not dare
editing it to use an alternative to `XMLSerializer.serializeToString`
in a stable release

Instead, as a workaround, we just avoid the use of the double
quotes.

opw-708296
2017-03-08 18:07:07 +01:00
Odoo Translation Bot a4e88793ea [I18N] Update translation terms from Transifex 2017-03-08 16:37:08 +01:00
Christophe Simonis f9fa39a8c0 [FIX] board: correctly handle invalid actions
This may happen when a dashboard contain references to deleted actions.
2017-03-08 16:31:03 +01:00
Nicolas Martinelli 6bb63edb98 [FIX] base: save ir.values
- Install accounting module
- Create new tax, keep note of its ID
- Go to Settings > Technical > User-Defined Defaults
- Change the value of 'taxes_id' to the ID of the tax created
- Create a new product => crash

The issue is that the value of 'taxes_id' is saved as a string, not as a
list. Therefore, once retrieved, it crashes.

opw-709906
2017-03-08 15:28:33 +01:00
Nicolas Martinelli bfef35774d [FIX] sale, purchase: currency in subtotal
The "Subtotal" field of a SO/PO line is not rounding following the
currency rules.

opw-710701
2017-03-08 15:26:25 +01:00
Florent de Labarre 681625ea56 [FIX] account: correct domain evaluation
'is set' filter is the equivalent to != False
A many2one has not the value True but an ID

Closes #15749
2017-03-08 13:46:46 +01:00
Martin Trigaux 9732c3049a [FIX] hr_timesheet_sheet: keep timesheets linked to a task
When deleting an hr_timesheet_sheet.sheet, the linked analytic lines are
dropped too.
This was introduced in 8.0 at 5f45e7ca

The initial bug, reported at #5326, was targeting the analytic lines created
independantly, directly from the timesheet encoding.

In version 8, the timesheets were encoded via project.task.work and the unlink
on the hr_timesheet_sheet.sheet had no effect on the works.

In version 10, this model no longer exists and it needs to be filtered to avoid
removing independant timesheets.

Fixes #15741
2017-03-08 13:38:55 +01:00
Denis Ledoux 4d440caafd [FIX] mass_mailing: mailing users requires write on utm.source
Since revision
731356a155

and the fact `mail.mass_mailing.campaign` inherits (with s)
from `utm.source`, and the name of the mass mailing
is took from this `utm.source` linked to the mass mailing,
a mass mailing user requires the write access on the model `utm.source`
to be able to change the subject of a mass mailing.

As a side node, I notice there is no group applied on the
base `access_utm_source` access rule of the module UTM,
meaning a portal user can create `utm.source`.
I am not sure if this is wanted or not.

opw-710525
2017-03-08 12:52:10 +01:00
Denis Ledoux 8428910a74 [FIX] mail: format_date with falsy date
If the date passed is falsy, return
an empty string instead of crashing.

opw-704260
2017-03-08 12:52:10 +01:00
Olivier Dony 48473cbee2 [FIX] ir.mail_server: pretend to connect while in test mode
During installation of demo data and while running tests, the
system should not actually connect to a real SMTP server.

This allows installing new demo/test databases on a system
with no working SMTP server.
2017-03-08 12:30:02 +01:00
Olivier Dony adf3052024 [FIX] ir.mail_server: make SMTP test consistent with the rest
Simplifies the code and makes sure we are calling the connect()
method in the same way we do for normal deliveries, and that
all parameters are processed in the same fashion.
2017-03-08 12:19:03 +01:00
Olivier Dony 4c1cbbc108 Revert "[IMP] account: Don't raise errors if account currency = base currency"
This reverts commit 6e01dd43ca.

This change was strictly unnecessary and breaks any multi-currency
entry, a perfectly valid use case.

Fixes OPW-715870
2017-03-08 12:14:58 +01:00
Nicolas Martinelli b0321b1474 [FIX] sale: do not run procurement twice
When procurements are created, they are automatically run. Avoid this
behavior, to run all procurements at the end of the process and used the
optimized JIT behavior.

opw-710007
2017-03-08 11:44:56 +01:00
Nicolas Martinelli 218a21a37e [FIX] sale: do not run procurement twice
When procurements are created, they are automatically run. Avoid this
behavior, to run all procurements at the end of the process and used the
optimized JIT behavior.

opw-710007
2017-03-08 10:47:19 +01:00
Nicolas Martinelli fb1b9baeb1 [FIX] stock: prevent location creation
Prevent location creation in pack operation view to avoid location
inconsistencies.

opw-707439
2017-03-08 09:28:24 +01:00
Goffin Simon 8c2db9a9a2 [FIX] account: Duplicates a customer invoice
Fine tuning of this commit: a7cd820
When clicking on button "Duplicates" it printed "Duplicate + number". Now it prints
" Duplicate invoice + number" if the customer invoice is of type out_invoice.

opw:708440
2017-03-07 23:45:33 +01:00
Olivier Dony 2d3a4a5d0c [FIX] tools: generate message IDs with unique prefix
For the purpose of fighting spam, many abuse/spam-fighting
services provide redacted message IDs. Because we use a UNIX
timestamp as the prefix for all message IDs, a redacted
message ID of the form 1234XXXXX@domain.com is generally
useless to find a `flagged` message's origin, because it
matches most of the messages sent that day.

Narrowing it down with the help of the approximate time
of delivery does not help much, as there will still be
dozens/hundreds of possible matches on a busy server.

By swapping around the random token and the timestamp in
the message ID, we should improve the uniqueness and
"greppability" of our message IDs, once redacted.
2017-03-07 19:53:06 +01:00
Olivier Dony 31e81e7b8f [FIX] mass_mailing: use consistent types for unsub token check
Passlib's consteq() function only works when both values are
of the same type.
`_unsubscribe_token` uses hmac.hexdigest() which always returns
byte-strings, so we need to ensure that the token passed in GET
parameters is cast to byte-string too.

In addition, _unsubscribe_token() is expected to always derive
the same token for the same list, res_id and email. It already
takes care of ID passed as strings/int, but failed to make sure
that the email can be passed as a byte-string or unicode-string.
Forcing it to unicode before deriving the token takes care of that.
2017-03-07 19:25:02 +01:00
Olivier Dony 4729632275 [FIX] mail.mail: propagate smtp_session
Make sure the _send() method propagates the provided smtp_session
to benefit from the speedup obtained by avoiding multiple SMTP
sessions.

Cfr 00bd7274c4
2017-03-07 18:50:52 +01:00
Nicolas Lempereur 629d80c3c2 [FIX] mail: fix typo in attachment managment
Fix some dead code. This is a fallback for linking mail attachment with
its data. The issue was not reported since a long time since this just
disable a fallback which in my tests was not used anyway.

opw-710502
2017-03-07 18:05:53 +01:00
Christophe Simonis 0a2b99f985 [FIX] product_visible_discount: use defined variable
Oversight of a previous forward-port
2017-03-07 16:55:05 +01:00
Olivier Dony 7b59ce18be [FIX] ir.mail_server: server TLS setting overrides connect() parameter
Cfr 00bd7274c4
2017-03-07 16:47:23 +01:00
Olivier Dony 00bd7274c4 [FIX] mail: batch and speed up email queue processing
Work around performance issue when sending large mass-mailing:

1. Processing a large email queue would crash with MemoryError.
-> The queue agent will now browsing the emails 1 by 1 during
delivery to avoid filling the memory.
-> The agent will not select more than 10k emails per delivery.
The delivery rate can be increased by waking it more often.

2. Reopening a connection to the SMTP server every time is slow.
-> ir.mail_server.send_email() now accepts an extra `smtp_session`
optional parameter. When passed, that session will be used and will
not be disconnected after the delivery. The queue processing agent
prepares batches of emails to be sent to the same outgoing mail
server, and uses a persistent smtp_session to avoid the multiple
reconnection.
To account for MTA that would refuse to process a large number
of emails in the same session (that should be rare), a system
parameter can be used to set the batch size (default: 1000).

3. As a bonus, the ir.mail_server.connect() method is now
responsible for resolving the actual mail server parameters,
rather than having half of the logic in the send_email() method.

Warning: this commit drops support for "maildir:/" format in
outgoing mail servers hostnames. This feature is deprecated,
unused, untested, and was meant for debugging only.
2017-03-07 16:12:31 +01:00
Olivier Dony a7ff8364ea [FIX] mail sanitize: allow extra common style attributes
Without allowing these harmless style attributes, sending
mass mailing emails with the new snippets produced an ugly
dumbed-down version.
2017-03-07 16:04:33 +01:00
Jigar Patel 8c6b19d605 [IMP] note: Add activity widget on kanban view 2017-03-07 16:04:02 +01:00
Martin Trigaux 76b724294a [FIX] calendar: correct search in recurrent event
Add a 3 use cases with tests that were failing before.

datetime filters were not working correctly on stop filters
The `_get_recurrent_date_by_event` was only computing recurrency on the start
field of an event which can make a difference. A recurring event
  start=2017-01-01 09:00:00; stop=2017-01-01 10:00:0
was not matched in a search ('stop', '>', '2017-01-01 09:30:00')

The filter != was not handled in the recurring use cases.
e.g. making the search 'start is set' in the web client is equal to
  ('start', '!=', False)

Searching with only a start filter matching recurring events but not the
first ("real") occurence, was returning no result if no stop filter was present.
  start=2017-01-01 09:00:00; count=5
had no result in a search ('start', '>', '2017-01-02')
2017-03-07 15:57:37 +01:00
Pratima Gupta 4a28c103fe [IMP] crm: filter usability improvements
- Switch order of 'Unread Messages' and 'Won' filters
to group them by relevance
- 'Won' filter does not depend on the state property of
stage, since the 'Won' stage is not folded by default.
2017-03-07 14:34:01 +01:00
Goffin Simon 8eb759dcff [FIX] hr_expense: Multi company rule for hr.expense.sheet
To apply to multi company rule on hr.expense.sheet
Inspired from Expense multi company rule

opw:709834
2017-03-07 13:51:02 +01:00
Olivier Dony 58593c2755 [FIX] mass_mailing: correct unsubscribe token check
The mailing._unsubscribe_token() method expected the record ID
as an integer, but accepted strings and generated a different
token for the string representation of an integer (!)
The unsubscribe controller was passing a string by mistake.

mailing._unsubscribe_token will still expect integers but if
the string representation of an integer is passed it will be
silently cast to an integer, and will generate the same token.
2017-03-07 13:27:59 +01:00
Denis Ledoux 04bb06fcb3 [FIX] mrp: Do not ask for to provide a lot if there is no finished product.
If `product_move` is an empty browse record
`produce_move.product_id.tracking` is `False`, not `none`,
and therefore
`produce_move.product_id.tracking != 'none'` returns True,
and it therefore asked to provide a lot for no reason.

opw-710748
2017-03-07 12:50:34 +01:00
Nicolas Martinelli c0f1f27dbd [FIX] crm: translation in merge message
- Install a language different from English, set it to your user
- Merge two opportunities

The merge message which summarizes the operation contains the name of
the fields in English.

opw-708381
2017-03-07 12:09:45 +01:00
Goffin Simon a7cd820fc1 [FIX] account: Duplicates a refund customer invoice
When clicking on button "Invoices"(below "Print") on a refund
customer invoice, it prints "Refund  + number". But when clicking
on button "Duplicates" it printed "Duplicate + number". Now it prints
" Duplicate refund + number" if the customer invoice is of type out_refund.

opw:708440
2017-03-07 12:06:06 +01:00
Nicolas Martinelli 4ce309dfab [FIX] web: deactivate buttons
To reproduce:
- Get a slow connection, e.g. activate throttling in debug mode of the
  browser.
- Create an invoice with at least one tax.
- Change a price unit.
- Click on 'Save' then repeatedly on 'Validate'

The tax lines are duplicated.

The issue comes from two identical `write` calls whose purpose is to
delete the existing tax line and create a new tax line.

The two calls are issued by the click on 'Save' and the click on
'Validate', which triggers a 'Save' since it doesn't consider the form
as being saved yet.

There were several issues:
- The buttons from the statusbar were not disabled
- The buttons were enabled too soon. They should be enabled again when
  the form is reloaded, otherwise the call to 'Validate' doesn't
  consider the form saved.

This is an extension of commit
https://github.com/odoo/odoo/commit/bbbf3db581b5cf883

opw-710642
2017-03-07 11:57:14 +01:00
Martin Trigaux ee78aa7d6a [FIX] web: avoid undefined options
options is not mandatory, crashed when navigating with tabs
Complete 2bf6e69e
2017-03-07 11:24:23 +01:00
Thibault Delavallée cb5ddc8ecf [FIX] website_sale: fix heuristic of abandoned carts
Abandoned carts are those with lines, not linked to public user, still
in draft mode and having more than one hour of lifetime.

By the way imp typo, abandonned abandoned one n.
2017-03-07 10:50:42 +01:00
Jeremy Kersten 7c5271140b [REL] 10.saas~15 2017-03-10 17:39:06 +01:00
Goffin Simon 69d6c37456 [FIX] web: prepare_dropdown_selection
Steps to reproduce the bug:
1.Create a new company
2.Set a user in this company
3.Go to Helpdesk > All tickets > Create

It raised a traceback because stage_id was not defined

opw:710084
2017-03-07 00:35:58 +01:00
Denis Ledoux cde8668034 [FIX] web: IE <= 11.0 doesn't support ChildNode.remove
IE 11.0 doesn't support `Childnode.remove`:
http://caniuse.com/#feat=childnode-remove

As a workaround, we use `Node.removeChild`,
which is more widely supported.

opw-710617
2017-03-06 18:21:06 +01:00
Nicolas Lempereur 65ac6b8ae3 [FIX] website: use public user for sitemap making
The current user was used to generate the sitemap. So if a user with
more permissions than `public user` goes on the sitemap, he could
generate it (if he is the first to see it or the last generation was
more than 12 hours ago (by default)) and have pages unavailables for
a user with lower permission in the sitemap (until the sitemap is
generated again).

The issue was solved in 8.0 with d08facdcb but was introduced back in
10.0 with fd09ddb6f because the `uid` argument was dropped from
`generate` method on `ModelConverter`.

Ths fix add the `uid` parameter back.

opw-708456
2017-03-06 16:52:45 +01:00
Olivier Colson 5169b50efe [IMP] l10n_ch
Add a new button to generate the ISR and remove the "double generation" of reports on 'Print invoice' button. This modification brings the code back to its original version and hence fixes the javascript bugs that occured with less than 3 workers running on the server and with Google Chrome when triggering multiple downloads simultaneously.

[ADD] account

Add a identifier to the 'register payment' button in order to reference it more easily and add the 'Print ISR' next to it.

[FIX] l10n_ch

The module did not install itself anymore, an import was missing.

Report generation was crashing due to a function's suppression.
2017-03-06 16:43:26 +01:00
Atte Isopuro 6458210250 [FIX] sale_stock: don't link groupless backorders to all sales
When a backorder is created from an outgoing picking, a message is posted,
linking to the related sale orders as source of the original picking.

If the initial picking was not created from a sale, the resulting backorder
group was `False`.
The domain ('procurement_group_id', '=', False) matches many unrelated
(e.g. unconfirmed) sale orders.

Avoid trying to find the origin SO for pickings with no SO

Closes #15693
2017-03-06 16:41:14 +01:00
Denis Ledoux a14cf34327 [FIX] im_livechat: Add the livechat on an external site
The file
`/web/static/src/js/services/session.js`
is not required for the livechat to works,
and with it it fails on external websites because it makes
RPC calls to the relative URLs:
`/web/webclient/bootstrap_translations`
`/web/webclient/qweb`

opw-710049
Closes #15518
2017-03-06 16:37:35 +01:00
Nicolas Martinelli 6b7012086f [FIX] mail: add followers
- Create a SO with a new product configured as service, Track Service
  "Create task and create hours" and link to "Internal - GAP Analysis".
- Confirm the SO
- Add a new line for the same product in the SO and save

A Odoo Server Error (Validation Error) appears "Error, a partner cannot
follow twice the same object"

It seems that the value of the related field `res_model` is not
correctly computed in the cache. As a workaround, we can use the
`res_model_id`.

Courtesy of @mart-e

opw-709790
Fixes #15589
2017-03-06 16:24:23 +01:00
Olivier Dony 4f40c9da7b [FIX] account: prevent loops when unreconciling entries
7544c22de9 refactored the handling of
exchange rate entries when unreconciling entries.

However it did not preserve the piece of code that prevented loops
during this operation (`full_rec_lookup` context key).

This could cause the unreconciliation of entries with an exchange rate
difference to fail with a confusing error claiming that the user is
trying "to reconcile some entries that are already reconciled!".
The double reconciliation was caused by a recursive attempt to reverse
the exchange rate entry.
2017-03-06 16:17:10 +01:00
Julien Legros ee5241a2f3 [FIX] mass_mailing: use correct model in the recipients widget 2017-03-06 16:12:39 +01:00
Nicolas Lempereur 2d10c5eb43 [FIX] website: use public user for sitemap making (up to s14)
The current user was used to generate the sitemap. So if a user with
more permissions than `public user` goes on the sitemap, he could
generate it (if he is the first to see it or the last generation was
more than 12 hours ago (by default)) and have pages unavailables for
a user with lower permission in the sitemap (until the sitemap is
generated again).

The issue was solved in 8.0 with d08facdcb but was introduced back in
10.0 with fd09ddb6f because the `uid` argument was dropped from
`generate` method on `ModelConverter`.

From 10.0 up to saas-14 the fix introduced is to use a `use_public_user`
key in `request.context` but in master we will keep the fd09ddb6f fix
by adding uid to the `generate` method.

opw-708456

note: to forward-port only up to saas-14
2017-03-06 16:11:19 +01:00
Denis Ledoux 3d2841aac0 [FIX] crm: New / opportunity in the dashboard opens an opp form
Up to now, it opened the lead form view instead
of the opportunity form view.

Most-likely, a new / lead should be added to
the dashboard in addition to the new opp,
as this is the case with the view lead/opportunity
but it doesn't seem it was expected up to now
so I leave it like it is.

opw-710583
2017-03-06 16:03:54 +01:00
Christophe Simonis cb00be643a [MERGE] forward port branch saas-14 up to a4d5e64a4c 2017-03-06 15:46:24 +01:00
Denis Ledoux a4d5e64a4c [FIX] report: Edit Header button in General Settings
opw-710501
Closes #15661
2017-03-06 15:39:27 +01:00