Commit Graph
126133 Commits
Author SHA1 Message Date
jem-odoo abfa921009 [IMP] sale_timesheet: tasks linked to SOL of project
When selling a project from a sale order, the SO line
creates the project. When we create a task in that
kind of project, by default, the task will be linked
to the SO line of its project.
However, for the SO line field to be visible on the
task form view, the customer must be set. This commit
set the customer from the SO line when changing
the project (billable project only).
2018-04-06 14:30:47 +02:00
jem-odoo 460f57f510 [IMP] sale_timesheet: selling project based on template
Selling product creating project can now be based
on project template. When setting a project template
on product, this will copy the project (like a duplicate)
and replace its customer, ... with information from the
SO line, on SO confirmation.

There is only one project without template per SO, and
one project per template per SO (so 2 SO lines with the
same project template on their product will only create
one project with this template).
2018-04-06 14:30:47 +02:00
jem-odoo eb5cb1359b [IMP] sale_timesheet: improve tests 2018-04-06 14:30:47 +02:00
jem-odoo 236a7011b8 [REF] sale_timesheet: project/task generation from SO
When confirming a SO, only one project will be created, even if
some so lines would create a project. Only the first line will
create the project, the other will not be linked to its.
`project_id` field is added on so line, to keep track of the
generated project, as already done for the task.

The '_timesheet_service_generation' method has been rewritten
to be execute in batch and improve performance and prefetching.

On SO confirmation, no message are now post in chatter to avoid
having one message per so line that should have created a task.
A message is only posted when user manually add SO lines on
confirmed SO.
2018-04-06 14:30:47 +02:00
jem-odoo 9774b78852 [IMP] sale: analytic_account field edition
Now that an analytic account can be linked
to several projects, you might want to change
the analytic on the SO.
Before this commit, the user was allow to create
an analytic account on a confirmed SO but not
modify it. This was usefull when you wanted to
reinvoice an expense on a SO without AA set.
This is now solved (AA is automatically created
when validated expense).
Now, we want to allow set manually the AA before
confirming SO to match the one of potential
projects.
2018-04-06 14:30:47 +02:00
jem-odoo 3dd3e26483 [IMP] project: a project is not an analytic account anymore !
This commit removes the inheritS between account.analytic.account and
project.project. This means :
- When a project is created, an analytic account is not necessarily
genareted
- project has now its own name, company_id and partner_id fields
- an analytic account can be linked to several project
- project module does not depend anymore of analytic, but hr_timesheet
does.

This change implied
- an analytic account is required on project to timesheet on
its tasks. So, when checking 'allow_timsheets', if an AA is not
provided at project creation, an AA will be generated.
- to timesheet on project, an active AA is required. We don't want
timesheeting on project linked to unused AA to avoid bad analytic
entries.

This prepare the fact a sale order can create multiple project, sharing
the same analytic account (the one from the SO).
2018-04-06 14:30:47 +02:00
jem-odoo 60a8b88cc9 [IMP] sale_timesheet: revamp project overview
The project overview is kind of badly design. This
commit does not solve all the issue but tries to make
it simpler and more efficient:
- Does not depends on AAL anymore: the overview search
is now about projects. You can see the overview of multiple
projects. Even when no timesheet are encoded, the plan will
not be empty.
- "Time by people" displays each employee assigned to task,
even if no timesheet are recorded.
- Code now use reporting view to keep consistency and simple
code in overview controller.
2018-04-06 14:30:46 +02:00
jem-odoo 7782265a8a [IMP] sale_timesheet: add wizard to link multiple task to SO lines
Adding a wizard to assign multiple task to the same
sale order line. This will allow user to invoice
timesheet created before SO confirmation.
2018-04-06 14:30:46 +02:00
jem-odoo 8f3f1827cb [IMP] hr_timesheet: ability to track cost without selling time
The cost of an employee should be in hr_timesheet for a long time, to
allow user to track time on project/task: hours spent and their cost.
This commit simply moves fields and related views. It also moves the
'postprocess' method from sale_timesheet to hr_timesheet since this
method is responsible to set the amount (cost) on AAL.

User can now track their time and cost, without having sale_timesheet
installed.
2018-04-06 14:30:46 +02:00
jem-odoo ca36c22c54 [IMP] sale_timesheet: remove project of a Sales Order
The project of a SO will not be used anymore, as we planned
to have a sale order creating multiple projects.
The concept of 'only project from SO' does not make sense.
2018-04-06 14:30:46 +02:00
jem-odoo 89055c167e [IMP] sale_timesheet: add profitability report analysis
This commit provide a real reporting tool
for project profitability: graph and pivot
views.
You can now have a look at cost and revenues
per project, so line, product, see which
project manager brings the more money, which
project costs many human time, ...

The project overview is based on this report
analysis to be consistent.

However, a change of computation for 'amount
invoiced' is introduced: we now based the amount
on the price_reduce of the SO line, and not from
the invoice lines. Also, once a draft invoice is
generated, the quantity is considered as invoiced
at the price of the SO line (no matter is extra
discount happens when validating invoices).
2018-04-06 14:30:46 +02:00
stefanorigano a5a788981a [IMP] web, mail: mimetype icons design
- Redesign all mimetype icons
- use SVG to reduce file size and improve rendering quality.
- Add a data attribute to attachments to detect the file extension (in somes
  cases just mimetype is not accurate)
2018-04-06 14:14:32 +02:00
stefanorigano 6e12372f95 [IMP] mail: attachments list design
With this commit, the attachments displayed in a thread (typically a
chatter) are properly styled.
2018-04-06 14:14:32 +02:00
Christophe Simonis 97a70c2d8e [MERGE] forward port branch saas-14 up to 5eb6e14e85 2018-04-06 13:43:57 +02:00
Christophe Simonis 5eb6e14e85 [MERGE] forward port branch 10.0 up to e5fd52d28c 2018-04-06 13:40:40 +02:00
Jeremy Kersten 3820b56c07 [IMP] website_sale: multi image by default
Remove the option to switch from simple image to multi mode.
If only 1 image, multi image show it without carousel
2018-04-06 11:54:39 +02:00
Jeremy Kersten 704755515a [FIX] website_sale: fix zoom wich was not always computed
In some case, (many JS like runbot with all modules), the onload event was
binded after that the image was loaded. So the JS code that make the zoom
conditionnal was not executed.

Now we apply the function on all images already loaded, or that will is loading

Courtesy of @ged-odoo for help and review
2018-04-06 11:54:39 +02:00
Denis Roussel e5fd52d28c [FIX] purchase: button_approve in a multi recordset fails
Closes #24079
2018-04-06 11:36:04 +02:00
tfo 990b7356b6 [CLA] Wink signs CCLA
Done at #24083
2018-04-06 11:23:13 +02:00
Siddarth Gajjar b90b8f3d5d [IMP] account, hr_expense: add section for attachment preview
An empty div `o_attachment_preview` is added in expense and vendor bills form
views. It will be used as a container to preview the attachment.

The actual behaviour will be implemented in another commit.

Task 40663
2018-04-06 11:18:45 +02:00
Raphael Collet 0eb8518786 [IMP] fields: describe group_operator when given on all field types 2018-04-06 10:57:02 +02:00
Valentin Löfberg 8e567f819d [IMP] project: Place every links on relative position on kanbans cards
Purpose
========

The links on the project kanban cards are not always at the same place : https://drive.google.com/file/d/1aONUYkZerqqD7fSVmgozRScgLKR-QHtA/view

============
Specification
============

I get rid of the flex element to allow the placing of links using width
attribute. Create the .o_project_timesheet_box class to assure that the
timesheet/overview link is always placed in the middle.
I also deleted the needaction_count button to avoid breaking the display.

Task: 1817850
2018-04-06 10:49:31 +02:00
Christophe Simonis 76131b7970 [MERGE] forward port branch 10.0 up to ea42f6c176 2018-04-06 10:35:25 +02:00
Nicolas Martinelli ea42f6c176 [FIX] account: missing decorator 2018-04-06 09:44:47 +02:00
Alexis de Lattre c41f7297d3 [FIX] report: create a new environment
self is a rml_parse instance, not a BaseModel
create new environment to call ORM methods
prevent crash when calling formatLang on a RML report

Closes #24068
2018-04-06 09:27:35 +02:00
Olivier Dony 3f975f9769 [FIX] account_payment: make partner_id required only when draft
When not draft, the partner_id field is readonly and cannot be modified
anyway, but it makes the form invalid, so form buttons cannot be used,
e.g. to access the journal items, etc.
2018-04-06 08:51:54 +02:00
Olivier Dony f5b00c11dd [FIX] account_payment: properly compute destination account without partner
When the `partner_id` is not set (it is not required at the model
level), we can still compute the default destination account based on
the company chart of account configuration.

This is necessary to allow creating "customer" or "supplier" payments without
selecting a specific partner.
2018-04-06 08:44:34 +02:00
Adrian Torres 2875b94e03 [FIX] osv.expression: normalize domains in combine
Before this rev:

* Take 2 domains that contain at least two leaves, and at least one of
them must use the implicit `&` operator

e.g.:
    d1 = [('so_line', 'in', [91]), ('amount', '<=', 0.0)]
    d2 = ['&', ('so_line', 'in', []), ('project_id', '!=', False)]

* Perform osv.expression.OR() between both domains

Expected result:
    d3 = ['|', d1, d2]

Actual result (after normalization):
    d3 = ['&', '|', d1, d2]

This is because, since the `&` is implicit for the first domain, when we
OR it, we give it an explicit `|` operator, so when we pass this domain
through the normalize_domain function, d1 no longer contains an implicit
`&` operator but instead the implicit operator is the one between d1 and
d2, therefore giving us a completely wrong domain.

The `combine` function states that it only accepts normalized domains,
however neither the OR nor AND functions do, this leads to a lot of
developers putting non-normalized domains into these functions, and
there's no error checking or anything that obviously indicates that the
domain is incorrect, so we might as well normalize all domains being
passed since it's already pretty optimized.
2018-04-06 07:45:25 +02:00
Christophe Simonis 91ea17af5f [MERGE] forward port branch 10.0 up to a93a5c6824 2018-04-05 19:40:54 +02:00
Christophe Simonis a93a5c6824 [MERGE] forward port branch 9.0 up to 27162b0e73 2018-04-05 19:35:27 +02:00
Raphael Collet 5f06926093 [FIX] models: in _read_group_raw, do not aggregate grouped fields 2018-04-05 18:44:40 +02:00
Christophe Simonis 82f45063c0 [FIX] account_cash_basis_base_account: use correct inherited view
Oversight of previous oversight of previous forward-port.
2018-04-05 17:45:12 +02:00
Romain Derie 27162b0e73 [FIX] website_blog: optimize crawler prevention
Commit d39856db prevents crawler to crawl and index blog tag URL which could
lead to possibly millions of URLs combinaison.

Still, it would crawl (but not index) second level of tags combinaison.

This commit ensure that crawling is prevented when already one tag on the URL.
2018-04-05 17:40:30 +02:00
Christophe Simonis ef3ad219de [FIX] account_cash_basis_base_account: correct dependency
Module `account_tax_cash_basis` has been merged into `account` in
saas~14.

Oversight of previous forward-port.
2018-04-05 17:21:06 +02:00
Alexandre Kühn 9a9da5763b [FIX] web: no record abandon on discard from default_get/onchange
Before this commit, when some records were created from an `onchange`,
we have the following weird behaviour:

    Suppose that this record has some required fields that are empty.
    When we click on this record, then somewhere else, the record
    disappears from the list.

This is because the records contains invalid fields, and it is wrongfully
assuming that the record to be discarded comes from "Add an item".

A previous commit [1] fixed a bit this issue with `default_get`, but since
it relied on a fragile heuristic, we decide to apply the correct fix with
this commit.

[1] https://github.com/odoo/odoo/commit/b09f0c99be2b13d33986414485556d87da186d65
2018-04-05 17:14:57 +02:00
Romain Derie d39856dbe8 [FIX] website_blog: prevent crawler on multiple blog tags page
Before this commit:
If a blog had multiple tags on the page, the crawler would click on every one
of them one after another until every tags combination got crawled.
With a lot of tags, this could result in million of URLs.

Now, we prevent URLs with more than one tag to be crawled.

Eg: With tags 'A', 'B', C':
/A
/A/B
/A/C
/A/B/C
/A/C/B

/B
/B/A
/B/C
/B/A/C
/B/C/A

/C
/C/A
/C/B
/C/A/B
/C/B/A
2018-04-05 16:55:58 +02:00
Parth Gajjar 1d08e12a94 [FIX] mail: not able to see attachment preview in mobile
Chat window having higher z-index value then attachment preview model and in the
mobile chat windows are covers whole screen so attachment preview is hidden behind
chat window. so increasing preview model's z-index by 1 will fix the issue.

(PR #24065)
2018-04-05 16:40:03 +02:00
Christophe Simonis ff46163bca [MERGE] forward port branch 10.0 up to f4326b4dab 2018-04-05 16:21:23 +02:00
Martin Trigaux 282605a8fc [FIX] website_blog: cut teaser after 150 chars
Space as word separator does not work in some non-latin languages like Japanese.
Cut arbitrarily after 150 chars

Closes #23219
2018-04-05 16:17:29 +02:00
Mathieu Duckerts-Antoine 5144414a3a [IMP] web: graph views can now aggregate many2ones
The read_group method was recently modified to allow more flexibility.
With this commit, we add the possibility of aggregating many2one fields.
These fields can be aggregating by counting the number of distinct IDs,
directly in postgres.

Also, note that we had to modify the mock server to implement the
corresponding functionality.
2018-04-05 15:59:40 +02:00
Dharmraj Jhala b67331fc18 [IMP] web: Allow user to set custom 'create_text' for x2m fields
For x2many relational fields(of type kanban), we shoud be able to set custom label for
'Create / Add' button by adding 'create_text' node option on particual field from xml.

Right now, 'create_text' is only handled for many2many fields, preventing users to set
custom label for one2many fields.

This commit allows users to set Create Button label for both m2m and o2m fields.
2018-04-05 15:15:07 +02:00
Alexandre Kühn fef6d7967f [FIX] mail: various discuss test fixes
This commit fixes two issues with discuss tests (JS):

    1. Improved mocked `message_fetch` rpc

        Some tests were incorrectly mocking the `message_fetch` rpc.

        With this commit, the mock server correctly mock this route,
        so that tests should simply pass the records as data, and the
        mock server correctly handles this rpc.

    2. Patch `_.debounce` and `_.throttle`

        The test "older messages are loaded on scroll" failed with
        Google Chrome right after destroying the widget discuss.
        This is due to a debounced function that called its inner
        function at this moment.

        With this commit, any discuss test patch `_.debounce` and
        `_.throttle` so that the inner functions are executed
        immediately and synchronously.
2018-04-05 14:57:49 +02:00
Florent de Labarre f8ade1c96d [FIX] stock: To avoid singleton error
Execute on a single record is used when calling the function
_update_line_quantity and avoid singleton error

Closes #23860
2018-04-05 14:48:53 +02:00
Andreas Perhab 115b9616c1 [FIX] doc: remove not existent attribute
color is not accepted by rng on gantt views
copy-paste the code would not work

Closes #24055
2018-04-05 14:42:54 +02:00
Christophe Simonis f4326b4dab [MERGE] forward port branch 9.0 up to eaf54656fc 2018-04-05 14:39:37 +02:00
Fabien Meghazi fd4939dc78 [FIX] base: honor registry/cache signaling for multiple threaded servers
Before this patch the registry and cache signaling was only activated
for PreforkServer. In case Odoo was deployed in a multi process/multi
threaded architecture the signaling was not ensured, causing registry
de-synchronisation amongst threaded servers.

This fix will be backported in v10.0 and v11.0 as soon as it has been
battle tested.
2018-04-05 14:22:32 +02:00
Lucas Perais (lpe) e05b2d01d1 [FIX] hr_recruitment: email from in template should be safe
Create a hr.attendant in a stage where a mail template is present.
Fill the email field as: Name Surname <name@surname.com>

Before this commit:
- the created partner's email has been rendered as name@surname.com&gt;
- the email failed to be sended because of this

This was because Jinja rendered that snippet escaping the special characters
Putting a 'pipe' safe in the snippet does the trick

After this commit:
both the partner and the email are created successfuly

OPW 1830739
closes #24059
2018-04-05 13:35:30 +02:00
Xavier Morel 4e784adbf7 [FIX] doc: non-module JS autodocumenters
Also when there is both a docstring and directive-level content put
the docstring first. That seems to match what Sphinx's autodoc does
and looks less odd.

Possible future improvement: a parameter to suppress the docstring?
Possibly a way to reorder the non-docstring content (e.g. members
documentation)?
2018-04-05 12:31:27 +02:00
Xavier Morel 944755dd1d [FIX] doc: non-module JS autodocumenters
Also when there is both a docstring and directive-level content put
the docstring first. That seems to match what Sphinx's autodoc does
and looks less odd.

Possible future improvement: a parameter to suppress the docstring?
Possibly a way to reorder the non-docstring content (e.g. members
documentation)?
2018-04-05 12:28:56 +02:00
stefanorigano c99177bcf5 [IMP] mail: document_viewer, add reset zoom button 2018-04-05 11:12:58 +02:00