Commit Graph
124700 Commits
Author SHA1 Message Date
Nicolas Martinelli e1aee2aac2 [FIX] base: QR code validation
The QR code validation does not require the payment account to be in EUR
(e.g. CHF or GBP).

From [1]:

> Though the transaction must be made in euros, the payment accounts
> held at operating in SEPA do not have to be denominated in euros.

[1] https://www.europeanpaymentscouncil.eu/what-we-do/sepa-instant-credit-transfer

opw-2052315

closes odoo/odoo#35824

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-08-20 06:36:35 +00:00
Christophe Simonis 32039b2ab4 [FIX] test_access_rights: add _description to new test model
Oversight of previous forward-port.
2019-08-19 17:08:08 +02:00
Christophe Simonis aac8e0c960 [MERGE] forward port branch saas-11.3 up to 121034f79a 2019-08-19 16:38:30 +02:00
Christophe Simonis 121034f79a [MERGE] forward port branch 11.0 up to 1e4de19cd4 2019-08-19 14:43:31 +02:00
Christophe Simonis 1e4de19cd4 [MERGE] forward port branch saas-15 up to c43de33643 2019-08-19 13:54:40 +02:00
Christophe Simonis c43de33643 [MERGE] forward port branch saas-14 up to fa26279014 2019-08-19 12:51:26 +02:00
Christophe Simonis fa26279014 [MERGE] forward port branch 10.0 up to 59c59cd8a0 2019-08-19 12:47:56 +02:00
Julien CastiauxandHugo Adan 855447fc77 [FIX] ir_rule: invalid user context propagation
Create two models, `object` and `category`. The object have a Many2One
to the category. Override the `search` on the category so it returns a
subset of the records if a context key is present. Create an IR Rule on
object with the following pseudo-domain: `categ_id in category.search([])`.
Search on object with the context key present. Even if the context
should only be applied to category, it is applied to object too thus
there are some object missing.

When evaluating the domain of IR Rules, the current user is propagated
with the current environment context. API calls triggered by the domain
are called with the given context, possibly populating the cache with
different records than it would normally does without the context (i.e.
at `addons/point_of_sale/models/account_journal.py#L19-L23`). Following
requests do use that invalid cache thus return invalid results.

Forcing an empty context on the user used during the evaluation of the
context ensures the IR Rules are working as they should and is
future-proof (cf `load_company` v13 context key)

opw-2041667

closes #35123
closes #35125

closes odoo/odoo#35667

Signed-off-by: Julien Castiaux <Julien00859@users.noreply.github.com>


Co-authored-by: Hugo Adan <hugo@vauxoo.com>
2019-08-19 09:04:09 +00:00
Christophe Simonis b6deb72747 [MERGE] forward port branch 10.0 up to 2fc46a064d 2019-08-19 10:24:42 +02:00
Fanny He f9f288cd47 [FIX] sale_timesheet: correct the context when viewing a contact's SO's tasks
When accessing a SO's tasks from Contacts (the partner_id's page), and
calling action_view_task, the active_id first corresponds to the contact's id.
Therefore, if a project.project exists with the contact's id, one can access
the SO's tasks, but otherwise, we get the error

Record does not exist or has been deleted.

(Records: [partner_id], User: ...)

Thus, if there is one corresponding project, we first update the context:
active_ids is set to project_id,
allowing access to the SO's corresponding project's tasks.
Note that the same thing is done lower:

eval_context.update({'active_id': task_projects.id})

which is too late to avoid trying to access the wrong record.

In the case where there are more than 1 corresponding projects (or if
there are no corresponding tasks), we don't have the issue.

OPW 2052559

closes odoo/odoo#35792

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-08-19 06:20:00 +00:00
Holger Brunn 024d7ebaa0 [FIX] tests: wait for chrome's cookie to be set
In some cases, the first request of a test is made before the
proper setting of the cookie. In that case, Odoo picks a new session,
leaving the request unauthenticated.

closes odoo/odoo#35780

Signed-off-by: Christophe Monniez (moc) <moc@odoo.com>
2019-08-19 07:29:44 +00:00
Odoo Translation Bot 0458337bc3 [I18N] Update translation terms from Transifex 2019-08-18 03:08:13 +02:00
Swapnesh Shah d5072c2ec6 [FIX] calendar: Add force_save to send values to server
- Create Event (Where All Day is Set to False)
- Edit Event > Check 'All Day', make it 'Recurrent'

An error occurs because a mandatory field is not set (`stop_date`).

It is possible to work around the issue by doing:
- Check 'All Day'
- Save
- Make it 'Recurrent'

However, the result should not depend on the order we perform the
action. To solve this we send data to server with `force_save`.

Fixes #27269
Closes #33068

closes odoo/odoo#35758

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-08-16 10:35:18 +00:00
Odoo Translation Bot ab38242cbd [I18N] Update translation terms from Transifex 2019-08-18 01:18:20 +02:00
Andrea Grazioso (agr-odoo) 9a362dda4f [FIX] maintenance: Wrong alias set up on category creation
From the Maintenance app go to "Settings">"Equipment Categories".
Create a new category, insert a name and save. An alias get
automatically created with the same name as the new category.

The new alias point to "Maintenance Equipment" model, so when
an email is matched with the alias a new equipment under the new category
is created. This is indeed the default behavior but the help message
is deceiving the user. Changing it.

opw-2049830

closes odoo/odoo#35728

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-08-16 11:58:33 +00:00
Nans Lefebvre 6a1e272ccd [FIX] stock: do not raise if writing the same value
Rewrite the product associated to a serial number.
There is a check to forbid this if some move lines already exist.
This check does not actually care what value is written,
so it can raise uselessly (and forbid a legitimate write).

opw 2049717

closes odoo/odoo#35736

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-08-14 15:24:06 +00:00
Sébastien Theys c2271c8740 [IMP] doc: add t-name t-extend to QWeb JS
task-2040835

closes odoo/odoo#35116

Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
2019-08-14 12:49:56 +00:00
Alex Tuyls c28a466069 [FIX] hr_expense: Allow Expense Responsible to validate expenses
In case a User is defined as Expense Responsible for another
user, and if he has Officer Expenses Rights, he cannot validate
an expense while it should be the case.

opw-2043985

closes odoo/odoo#35711

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-08-14 08:43:56 +00:00
Andrea Grazioso (agr-odoo) 364f01b447 [FIX] stock_picking_batch: blurry barcode in report
From the Inventory (stock) application go to Operations>"Batch Pickings"
Create or open an existing Batch Picking and click on "Print".

A report will be generated containing the barcode associated with the
operations. The barcode cannot be read from a barcode scanner because
it's too blurry (probably because of the low quality it contains
an unnatural greyscale).

When this report is generated from the template, a request to generate
the barcode is sent to the controller, which invoke the procedure to
create the png image on the fly with a set of parameters embedded into
the request.
If the width and height parameters are too low the result is a low
quality image, so the solution is to pass higher parameters and then
resize the image via "style" attributes.

Note that the same solution is applied in multiple templates.

opw-2045949

closes odoo/odoo#35752

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-08-16 09:23:00 +00:00
Nicolas Martinelli 6b6d290a5b [FIX] account: no candidate in reconciliation model
Make sure we don't execute the method with an empty list of candidates
to avoid a zero division.

opw-2049881

closes odoo/odoo#35723

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-08-14 12:10:31 +00:00
Goffin Simon 9e6f342e06 [FIX] {purchase,sale}_stock: Not possible to see a SN on an other company
Steps to reproduce the bug:
- Let's consider two company C1 and C2 and a user U allowed for this two companies
- Create a storable product P tracked by serial number
- Create a PO in C1 with P and deliver it with a serial number SN
- Go to Inventory>Master data>Lots/Serial Numbers
- Change your current company to C2
- Click on SN

Bug:

An access rights error was raised because the system tried to compute SO and PO linked to SN
with the moves of all the companies. So the record rule "stock_move multi-company" was
raised.

opw-2049093
closes #35694

Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
2019-08-14 11:49:15 +00:00
Andrea Grazioso (agr-odoo) f8978fc235 [FIX] odoo: zlib error in PyPDF2
Pdf files created with third party tools could trigger an exception in
several modules that attempt to manipulate them (see example below).

```
File "/usr/lib/python3/dist-packages/PyPDF2/pdf.py", line 2239, in mergePage
self._mergePage(page2)
File "/usr/lib/python3/dist-packages/PyPDF2/pdf.py", line 2277, in _mergePage
originalContent, self.pdf))
File "/usr/lib/python3/dist-packages/PyPDF2/pdf.py", line 2199, in _pushPopGS
stream = ContentStream(contents, pdf)
File "/usr/lib/python3/dist-packages/PyPDF2/pdf.py", line 2673, in __init__
stream = BytesIO(b_(stream.getData()))
File "/usr/lib/python3/dist-packages/PyPDF2/generic.py", line 845, in getData
decoded._data = filters.decodeStreamData(self)
File "/usr/lib/python3/dist-packages/PyPDF2/filters.py", line 346, in decodeStreamData
data = FlateDecode.decode(data, stream.get("/DecodeParms"))
File "/usr/lib/python3/dist-packages/PyPDF2/filters.py", line 111, in decode
data = decompress(data)
File "/usr/lib/python3/dist-packages/PyPDF2/filters.py", line 49, in decompress
return zlib.decompress(data)
zlib.error: Error -5 while decompressing data: incomplete or truncated stream
```

This is caused by the decompression function used by default in PyPDF2
which uses a limited buffer, unable to store all the data.

The solution, as per
[zlib documentation](https://docs.python.org/3/library/zlib.html#zlib.decompressobj),
is to use an intermediate ```decompressobj``` object to handle
the decompression.
However we do not directly control the library, which is also used
multiple times in the codebase so we decided to apply a fix directly into
the core module instead of patching every call.

opw-2048029

closes odoo/odoo#35646

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-08-14 11:55:53 +00:00
Andrea Grazioso (agr-odoo) 85e1d8e67f [FIX] mass_mailing, website_mass_mailing: empty section in settings
Install Email Marketing (mass_mailing) without Website.

From Email Marketing app, under Configuration -> Settings
the section "Mailing List" is empty.

This is not the expected behavior: any empty section should not be
visible.

To avoid breaking some third-party app which could rely on the element
'<div id="mailing_list" class="row mt16 o_settings_container"/>'
we choose to hide the title of the affected section, re-enabling it when
the appropriate app is installed.

opw-2045481
--
I confirm I have signed the CLA and read the PR guidelines at
www.odoo.com/submit-pr

closes odoo/odoo#35491

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-08-14 11:57:46 +00:00
Laurent Smet 50774af70d [FIX] account: assert_balanced in multi-company/multi-currency
The decimal precision must not be dependent of the current company's decimal places. E.g:
Create a move Z in the company A where decimale precision is 5.
Switch into the company B having a decimale precision of 8.
Edit the move Z, an error can appear because the decimale precision is now 8 instead of 5.

closes odoo/odoo#35572

Signed-off-by: Quentin De Paoli (qdp) <qdp@openerp.com>
2019-08-14 09:42:44 +00:00
Abridbus 2fc46a064d [FIX] mail: removing whitespace on message_id from incoming mail
Because of a whitespace character present at the beginning of the message_id of some mails,
they were fetched twice.

From the SQL side, we see that Outlook is formatting the header following the RFC822
by allowing the header to look like:

Header:<CRLF>
<whitespace><hash_of_msg_id>

From RFC822:
"Each header field can be viewed as a single, logical line of ASCII characters.
For convenience, the field-body portion of this conceptual entity can be split
into a multiple-line representation" (abr.)

It was also possible to find out by checking the logs.
One or two whitespace(s) can be seen before the hash of the msg_id.

The following commit is making sure we use and save the message_id without the whitespace
by stripping them off on the coming mail.

OPW-2006806

Applying CHS solution to avoid crash on empty header.

closes odoo/odoo#35682

Signed-off-by: bve-odoo <Abridbus@users.noreply.github.com>
2019-08-14 07:47:04 +00:00
Nicolas Martinelli 07da48216f [FIX] stock_account: coherent field type
In case `move_line_ids.location_id.company_id` or
`move_line_ids.location_dest_id.company_id` is not set, the fallback
value is `False`. Indeed:

```
>>> True and False or True
True
```

This makes `company_from.id` or `company_to.id` crash.

We keep the logic but change the condition:

```
>>> False if True else True
False
```

opw-2045628

closes odoo/odoo#35695

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-08-13 13:05:01 +00:00
Patrick Tombez a2b98e94be [FIX] website_sale_comparison: Fix category order
Use category sequence to order them instead of their order of appearance in
the list of sequence ordered attributes

closes odoo/odoo#35610

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2019-08-13 11:31:10 +00:00
Romain Derie 2f361bec36 [FIX] website(_*): better ondelete management on website_id
Before this commit, every model having website_id would have the default
`set null` as ondelete value for that field. Exception for `ir.ui.view` and
`website.redirect` which are set to `cascade`.

This meant that deleting a website would basically transform all its specific
records into generic ones.
That would lead to unwanted behavior, such as multiple `ir.attachment` with
same URL, when 2 websites had been theme-customized. Deleting one of the
website would result in later crashes when trying to open theme customization
in the remaining website(s), since those website would find their specific scss
custom attachment as well as the generic one from the deleted website.

Probably more behavior might be problematic when deleting a website before this
commit.

To summarize the choice of this commit implementation, every model not existing
outside website module are set to `cascade` (website.redirect, website.menu,
product.wishlist..).
The rest should be in restrict, as we don't want to delete a whole forum, blog
or job, which should probably be managed case by case to decide what to do.
Thus, restrict is a good choice to notify user of what should be handled.

Some exception remains, ir.ui.view should be delete on cascade while sale.order
should be set to null.

opw-2038414
opw-2035249

closes odoo/odoo#35398

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2019-08-13 10:02:32 +00:00
Nans Lefebvre 119ca24d60 [FIX] account: fix invoice line default taxes at account onchange
If there is no product on an invoice line, there is an onchange to ease tax
input that prefills the line with the account default taxes.
Because this is a relational field (a many2many), field = recordset
is as valid as field = recordset.ids, but the semantics is different.
In the second case, the id list is added with 4 commands, not a 6.
So the default taxes are only added, and none are ever removed.
Note that the ORM behaviour changed; this .ids was historical,
but before (v10) it did remove other taxes.

opw 2046112

closes odoo/odoo#35657

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-08-12 13:49:08 +00:00
Christophe Simonis 76a52bdbfb [MERGE] forward port branch 11.0 up to b59369d1e6 2019-08-12 15:00:28 +02:00
Raphael Collet 59c59cd8a0 [FIX] field: compute transitive dependencies over non-stored fields
In other words, when a field F depends on a non-stored field G, it also depends
on G's dependencies.  This guarantees that whenever a dependency of G is
modified, F will be invalidated and marked to recompute (if necessary).

The transitive closure of dependencies is not computed over stored fields.
Anyway stored fields already trigger the recomputation of their dependent
fields during their recomputation.  The performance impact on the loading of a
registry is negligible (less than 1%), and the increase of recomputation
triggers is small (less than 10%).

(cherry picked from commit 3fbd86bcbe)

opw-2033493

closes odoo/odoo#35636

Signed-off-by: Raphael Collet (rco) <rco@openerp.com>
2019-08-12 09:18:31 +00:00
Jorge Pinna Puissant cb3c2e64c3 [FIX] partner_autocomplete, web: autocomplete error when suggested company has a country
- Change the company's country to Finland;
- Go to Contacts and click on Create;
- Tick the Company box above the Name field;
- Start typing into the Name field;
- Click on a company with a VAT number under its name.

Before this commit, a Traceback appears. This occurs because the
response of the request with the suggested company has the fields
'company_name' and 'company_code' and these fields are not in
res_partner.

Now, the suggested company is parsed to correctly field the country
field.

opw-2049636

closes odoo/odoo#35631

Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
2019-08-12 08:39:07 +00:00
Goffin Simon a53ca4f949 [FIX] sale_timesheet: Sales user not allowed to create invoice linked to timesheets
Steps to reproduce:
- Create a service product P with invoicing policy = Timesheets on tasks,
Service Tracking = Create a task in a new project and Re-Invoice Policy = No.
- Create a SO with P and confirm it
- Go to the task created for the SO and assign an employee on it.
- Valide the related analytic line in the timesheet module
- Create a user U with the following rights: Sales: 'User: all documents',
Project: 'Manager' and no right in Employee.
- Log as U and try to invoice the SO

Bug:

An access rights error was raised

opw:2044659

closes odoo/odoo#35656

Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
2019-08-12 13:50:43 +00:00
Odoo Translation Bot b59369d1e6 [I18N] Update translation terms from Transifex 2019-08-11 03:07:39 +02:00
Nicolas Martinelli 392f6f2b2b [FIX] purchase: default user_id on bill
- Create a PO, change the Purchase Representative (`user_id`)
- Create the corresponding vendor bill

The `user_id` of the PO is not transferred to the invoice.

There is no reason to not keep the value.

opw-2046963

closes odoo/odoo#35611

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-08-09 14:31:18 +00:00
Igor Ishchenko 829adf7234 [IMP] base_iban: add support of IBAN code for Ukraine
closes odoo/odoo#35643

Signed-off-by: Quentin De Paoli (qdp) <qdp@openerp.com>
2019-08-12 10:27:38 +00:00
Igor Ishchenko ed106f5dcc [CLA] Signature for igoris 2019-08-12 10:22:32 +00:00
Christophe Simonis 0a0b4829d2 [MERGE] forward port branch saas-11.3 up to 76a52bdbfb 2019-08-12 15:59:04 +02:00
Reinaldo Ramos 0d4feadef8 [ADD] base: Add Angolan language
Add Angolan code in order to use Angolan specific translations in Odoo.
The main terms are the same but the technical terms are different

Closes odoo/odoo#35592

closes odoo/odoo#35600

Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2019-08-12 07:24:37 +00:00
Reinaldo Ramos e301d4de2b [CLA] Reinaldo Ramos signs personal CLA 2019-08-12 07:24:22 +00:00
qsm-odoo f7e83b69c6 [FIX] website_event: clean local events snippet before save
The local events snippets is an empty HTMLElement which is filled by
JavaScript on page loading. Before this commit, the filled content was
saved in database. This does not create a real problem as the content
is reloaded as soon as the page loads but you can see old events
flickering before the new events are actually loaded.

Now the snippet is cleaned before saving. This also allows to add
default content with a custo so that it is shown during the events
loading (as we are currently doing on odoo.com...).

closes odoo/odoo#35597

Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
2019-08-09 11:34:21 +00:00
Christophe Simonis 7321c8e260 [MERGE] forward port branch 11.0 up to dff2e242a5 2019-08-08 15:00:43 +02:00
Nicolas Martinelli dff2e242a5 [FIX] document: PDF indexing
Backport from 12.0, commit : 1b753b0d53
note: there was also report of PDF content blocking that when indexed
blocked an instance worker indefinitely

Since PyPDF2 gives bad results for PDF indexing, stop using it since it
raises more issues than it helps users.

opw-2044679

closes odoo/odoo#35310

closes odoo/odoo#35525

Signed-off-by: Jorge Pinna Puissant (jpp) <jpp@odoo.com>
2019-08-07 11:30:51 +00:00
Alexandre Kühn 964efa3026 [FIX] mail: keep notification on receiving new messages from document
Revision on https://github.com/odoo/odoo/commit/17bb0ca443f54bc231b03794e776bbc6992ffdfa

closes odoo/odoo#35497

Signed-off-by: Martin Geubelle (mge) <mge@openerp.com>
2019-08-06 13:06:42 +00:00
Goffin Simon f93fcaffb5 [FIX] stock_dropshipping: Updating dropship product
Steps to reproduce the bug:
- Install stock_dropshipping module and enable Routes on SO lines
- Create a storable product P with a supplier S
- Create a SO with P and set this line with the route dropship
- Confirm the SO ( a PO has been created to S with P)
- Change P on the SO with an other product

Bug:

The product P stayed on the PO.
So a product linked to a PO line cannot be changed on a SO.

Do not forward-port in 12.0 and upper

opw:2040249

closes odoo/odoo#35454

Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
2019-08-06 08:23:44 +00:00
Lucas Perais (lpe) d91b1e5bd5 [FIX] account: payment cancel resets name
Make a transfer payment from bank to cash
validate, check the journal entries
You see that there are two moves, each with the name
given by their journal's sequence (one in bank, one in cash)

Now, unreconcile, and cancel the payment
set it to draft, re-confirm it

Before this commit, the entries created had the same name which was
the name of the previous journal entry
This was because, at cancel time, the move_name of the payment was not reset

After this commit, the move name is reset on cancel, and both
journal entries have a new sequence based name when
confirming the payment the second time

OPW 2046412

closes odoo/odoo#35478

Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
2019-08-06 08:01:29 +00:00
Christophe Simonis 97d81f1220 [MERGE] forward port branch 11.0 up to b8be821058 2019-08-05 17:12:30 +02:00
Christophe Simonis b8be821058 [MERGE] forward port branch saas-15 up to 6668f69822 2019-08-05 16:15:38 +02:00
Christophe Simonis 6668f69822 [MERGE] forward port branch saas-14 up to 14547f847c 2019-08-05 14:58:14 +02:00
Christophe Simonis 14547f847c [MERGE] forward port branch 10.0 up to af3f6e596d 2019-08-05 14:50:37 +02:00