Commit Graph
127787 Commits
Author SHA1 Message Date
Parth Choksi 2bdff6783d [IMP] base: do not stretch partner image to a square
Before this commit when you set a partner image whose height was greater
than it's width, it used to get squeezed into a square. After this commit
we prevented partner image from being squeezed into a square.

Task ID: #1982082

closes odoo/odoo#33134

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2019-07-03 09:04:07 +00:00
Robot Odoo 1e69bacd46 [MERGE] integrate decimal_precision feature to base
The decimal precision feature makes sense to be an ORM feature, no need to be
in a specific module.
The limitation was also that models like res.currency were not able to use a
decimal precision as this was raised at #19668

Keep a backward-compatible signature with a warning.

Task id: 48198
Closes odoo/odoo#25467

Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2019-07-03 15:11:53 +02:00
Martin Trigaux 573ccf098f [FIX] fields: implement _description_digits
Otherwise, fields_get returns the string, not the digits
Add test
2019-07-03 11:16:24 +00:00
Martin Trigaux e2bd3e328a [IMP] odoo: remove LazyCursor
Was specifically created for decimal.precision at f0646cb51b
Should no longer be needed
2019-07-03 11:16:24 +00:00
Martin Trigaux dd2fae2ead [IMP] base: remove decimal.precision.test model
It should not be a standard model but a test model
2019-07-03 11:16:24 +00:00
Martin Trigaux a1eb000c93 [IMP] base: remove read access to decimal.precision
There is no reason to interact directly with it.
The method precision_get is done in SQL and ormcached, it is better to use it
2019-07-03 11:16:24 +00:00
Mitali Patel 9d710df076 [REF] *: use the new decimal precision syntax
Since previous commit moved decimal_precision module's feature into base,
use the new syntax for fields declaration
Remove the imports to the removed module
Remove the module from dependency in manifest

sed -i "s|digits=dp.get_precision('\([A-Z a-z]*\)')|digits='\1'|" **.py
sed -i "/from odoo.tools import decimal_precision as dp/d" **py
2019-07-03 11:16:24 +00:00
Martin TrigauxandOlivier Dony 82be146954 [IMP] base: keep backward compatibility for decimal_precision
As the decimal_precision module was removed, allow code like

    from odoo.addons import decimal_precision as dp
    fields.Float(digits=dp.get_precision('Foo')

to keep working

Co-authored-by: Olivier Dony <odo@odoo.com>
2019-07-03 11:15:48 +00:00
Mitali Patel e453af0a8f [REM] decimal_precision: remove module
Remove leftover files, everything is now in base
2019-07-03 11:15:48 +00:00
Mitali Patel 0c5121a979 [IMP] decimal_precision: integrate into base
The decimal precision feature makes sense to be an ORM feature, no need to be
in a specific module

Previous syntax was
    from odoo.addons import decimal_precision as dp
    fields.Float(digits=dp.get_precision('Foo'))

and now is:
    fields.Float(digits='Foo')

Remove the possibility to have a callable method on the digits attribute (it
was only used for precision anyway) and directly retrieve the digits on the
decimal.precision model

Rename the method digits to get_digits to avoid confusion between the field
attribute when declaring a field and the method to retrieve the precision

Task id: 48198
2019-07-03 11:15:48 +00:00
Martin Trigaux 93b370c1f1 [REN] formatLang: remove ununsed special case
The formatLang method used to accept a value that has a _field parameter
This was introduced in 2010, at 6b19c64976 and is no longer used
Removed it to make the decimal_precision migration easier
2019-07-03 11:15:48 +00:00
Aaron Bohy a798daa4e7 [DOC] qweb: t-foreach: deprecate x_(all|parity|even|odd)
These variables aren't used in Odoo and can be easily computed
anyway.

Also deprecate the support of integer values for t-foreach, for the
same reason.

closes odoo/odoo#33981

Signed-off-by: VincentSchippefilt <VincentSchippefilt@users.noreply.github.com>
2019-06-26 10:50:26 +00:00
Florent de Labarre 02e6a8bdb8 [REF] stock: unlink of inventory adjustment allow deletion of draft and cancelled inventory adjustment
closes odoo/odoo#34469

Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
2019-07-01 07:54:48 +00:00
Sébastien Theys b540040ba2 [IMP] product: create product.template.attribute.line in batch
For 3000 lines (3 for 1000 products):
- 35s before this commit
- 22s after this commit

Gain around 30%

closes odoo/odoo#34295

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2019-06-24 09:19:59 +00:00
Priyanka Kakadiya 7194168457 [FIX] web: fixed default order issue
In a list/kanban view when applying a default_order on the view, it does not
work with favourite filter

Before this commit,
1) The default_order was not applied to the view when favourite filter is
applied
2) when default_order applied, Click on an element of the list/kanban and
then go back to the list/kanban with the breadcrumbs, default_order has been
changed.

This is because the ```_getOrderedBy ``` returns [] when favourite filter is
applied and it does not have sort value, added check if favourite has orderedBy
and has length then and only then pass orderedBy else pass undefined

After this commit,
1) default_order will be applied to the view
2) default_order will not be changed when going back through breadcrumbs

task-1922576

closes odoo/odoo#34001

Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2019-07-02 06:55:34 +00:00
svs-odoo 1993488831 [IMP] stock: onchange on inv. line serial number
On Inventory Adjustment lines view, when you set serial number for a
tracked product, its quantity is automatically set on 1.

Task #2025397

closes odoo/odoo#34301

Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
2019-07-02 11:55:03 +00:00
svs-odoo d33b4a9a1d [IMP] stock: onchange on quant serial number
On quant view, when you set serial number for a tracked product, its
quantity is automatically set on 1.

Task #2025397
2019-07-02 11:15:18 +00:00
Aurélien Warnon 0b1b8f13e1 [IMP] survey: add attempt number on answer views
Purpose
=======

This commit adds the attempt number on the answer (= survey.user_input)
form & tree views.

The attempt number is always relative to its "pool" of attempts and
depends on the "invite_token" if specified.

ex: Attempt n° 2 / 4 (where "4" is the attempts_limit of the related survey).

closes odoo/odoo#31771

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2019-04-24 11:56:13 +00:00
Martin Trigaux 2e3b9f726c [IMP] base: partially revert d65969d572
As the source is not displayed, it makes sense to prefill the values with the
source. Also, English translations are now created (English should not really
be different than other languages) so it is prefilled with the src value.

closes odoo/odoo#33623

Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2019-07-02 09:53:08 +00:00
Martin Trigaux 73a7534bfc [IMP] base: display field translation in a popup
The goal of this change is to allow the user to stay in the form view and edit
the translations in one go.

Generate also English translations to make the source=English a bit less true.
It was already the case for callable translations method

Adapt the test that was ambigious (verified no French translation was duplicated
but an English translation is created)
2019-07-02 09:53:08 +00:00
Robot Odoo 3910b2b293 [MERGE] mail, sms, test_mail(_full): prepare SMS refactoring
Purpose of this merge is to prepare upcoming SMS refactoring by
already pushing some tools, cleaning and tests in master.

Contained in this merge

* improvement of phonenumbers library tools and usage in SMS;
* addition of SMS test classes with tools and mocks;
* addition of SMS tests;

See sub commits for more details. Related to task 1922163.

closes odoo/odoo#34516

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2019-07-02 14:07:56 +02:00
Thibault Delavallée 20c10fcd19 [ADD] sms, test_mail(_full): add basic SMS tests and improve test tools
Purpose of this commit is to improve and add tools, methods and data to test
mail and SMS features. We also add tests for current implementation of SMS
feature, allowing to better understand future changes.

[ADD] test_mail_full

  * have a module depending on mail sub-applications like sms or snailmail.
    Its purpose is to check that standard mail features work effectively with
    all overrides and extra behaviors activated;
  * add a new model specific for SMS gateway, with default recipient
    computation;
  * add SMS tests for SMS module adding SMS capabilities linked to mail
    feature. This commit tests SMS feature before the upcoming refactoring
    and improvement of SMS module in community: posting with SMS and sms
    composer usage;

In test_mail

  * add necessary mobile information on test partners;
  * improve assertBusNotification that was not correctly asserting all items
    in message of bus notifications;

In sms

  * add mock for SMS sending. Purpose is to mock the connection to IAP
    services by mocking the call to IAP server. It allows to perform SMS
    tests without having to contact (and pay) for this service;
  * allow some customization when calling the SMS gateway mock to simulate
    errors and test corner cases;

Related to task 1922163
Linked to PR #34516
2019-07-02 10:44:56 +00:00
Thibault DelavalléeandPierre Rousseau db17763654 [IMP] phone_validation, sms: improve phone validation and SMS sending API
Purpose of this commit is to support more formatting options in phone tools,
to provide new API methods for phone numbers validatio. It also introduces
a method on sms.api to send SMS in batch. This one uses a new route given
in IAP services that send a batch of SMS instead of sending them one by one.

Concerning phone validation, tools are updated to correctly handle all
format supported by phonenumbers library. Indeed in addition to national
and international formatting phonenumbers library also supports E164
(international without spaces) and RFC3966 (beautification of phone numbers).
Let us support them and ease the use of our small tool methods in various
addons, notably sms.

Cleaning / check tools methods are added in phone validation module. Various
methods allow to sanitize phone numbers according to a context record and/or
some parameters. Those tools will be used in upcoming sms refactoring.

Another purpose of this commit is to add phone_validation in dependencies
of SMS application. Phone_validation module adds tools to parse and format
phone numbers and allow to replace the manual check done currently. Adding
it in dependencies of SMS does not change anything functionally as

  * library is still optional. If phonenumbers library is not installed the
    features are skipped without crashing;
  * no model is modified as it introduces only tools and a mixin. Models are
    updated in crm_phone_validation that updates lead and partner models;

Related to task 1922163
Linked to PR #34516

Co-Authored-By: Thibault Delavallee <tde@odoo.com>
Co-Authored-By: Pierre Rousseau <pro@odoo.com>
2019-07-02 10:40:46 +00:00
Thibault DelavalléeandPierre Rousseau 566244b47b [REF] mail, sms: perform some guidelining (file move) and rename SMS composer model
Purpose is to prepare future improvements in mail and SMS module. In this
commit we apply some guidelines on XML Ids and file naming.

In mail cancel wizard code is separated from the resend one as they have
nothing in common.

More importantly ``sms.send_sms`` model is renamed to ``sms.composer`` to
avoid underscores (which is really really bad, take a look at
ir.config_parameter) and have a meaningful name.

Related to task 1922163
Linked to PR #34516

Co-Authored-By: Thibault Delavallee <tde@odoo.com>
Co-Authored-By: Pierre Rousseau <pro@odoo.com>
2019-07-02 10:39:25 +00:00
svs-odoo 657adbe482 [IMP] stock: get back Change Product Qty. wizard
Product "Update Quantity" button can open the "Change Product Quantity"
wizard if all advanced stock options (stock locations, assign owner,
tracking by SN/LN, packaging) are disabled.

Task #2006337

closes odoo/odoo#33873

Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
2019-06-27 09:49:31 +00:00
svs-odoo 69185ea5d8 [IMP] stock: get back Update Quantity button
Get back the "Update Quantity" button on product views.

Task #2006337
2019-06-27 09:00:21 +00:00
svs-odoo e6bdf3e0d0 [IMP] stock: change empty quant message
Rewrites the help message displayed when no quant to make it accurier.

Task #2006337
2019-06-27 09:00:21 +00:00
svs-odoo 5b9e58321b [IMP] stock: hide quant product_id when useless
On editable list quant view, when user come from a single product (one
specific product variant, or product template with no variants), the
`product_id` field is hidden.

Task #2006337
2019-06-27 09:00:21 +00:00
svs-odoo 9a7e66bc0e [IMP] stock: hide quant lot_id when no tracked
On the editable list quant view, when user come from a non tracked
product, the `lot_id` field is hidden.

Task #2006337
2019-06-27 09:00:21 +00:00
Sébastien Theys 344614b54a [IMP] base, product: optimize image compute when image is not set
All of those fields `__get__` and method calls have a cost, it is small but when
done for many records it adds up, so they are better not done.

When creating 1000 products without image, this compute takes:

47ms +/- 1ms before the commit
37ms +/- 1ms after the commit

That's around 20% less.

Part of task-1918881

closes odoo/odoo#34294

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2019-06-21 11:09:50 +00:00
Sébastien Theys 9150c3d2c9 [IMP] mail: improve performance of Followers _invalidate_documents
If `self` contains around 1000 records, this reduces the time of the method by
a factor of 10 when `read` is necessary, and by 200 when using the values from
`vals_list` and no additional query is needed at all.

This speeds up the creation of all models using `mail.thread`.

Part of task-1918881

closes odoo/odoo#34274

Signed-off-by: Xavier Dollé (xdo) <xdo@odoo.com>
2019-06-26 11:24:08 +00:00
Sébastien Theys 383bca994c [IMP] product: clean name_get of product attribute value
Add comment on both methods to clarify their goal.

Remove the unnecessary check. Indeed the `product.template.attribute.value` is
not displayed during the variant set up of the product template so there is no
point to check the context for it.

Update the view to apply the context change also for the search result. Indeed
the context change on the o2m itself didn't propagate so the attribute was
displayed unnecessarily on the search result.

closes odoo/odoo#34187

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2019-06-17 13:48:58 +00:00
Xavier Morel d11956517b [FIX] base: don't overwrite existing extensions
The point was to fix files attachments without an extension,
potentially appending to existing extensions was not a smart idea.

See #34299, 5eb15c01b5
2019-07-02 10:07:17 +02:00
Adrian Torres 1aa8663444 [IMP] base: unlink module data in batch
Before this commit, during a module uninstall, module data would be
unlinked in a record-by-record basis, this was done this way for two
elementary reasons:

- To guarantee an unlink order, as some module data being deleted
might only be deleted if some other module data has already been
deleted.
e.g. [a, b, c, a] -> we could batch unlink both `a` in the
list, however the second `a` could depend on the unlink
of either b or c, making the groupby erroneous.

- To create a savepoint before every module data unlink (record), so
that in case it fails, we can simply skip it and proceed with the
uninstall.

After this commit, batch unlink of module data is now possible without
losing the aforementioned key features.

- The first problem is fixed by using `itertools.groupby`, which
will group **adjacent** data of the same type and unlinks them all
in batch while guaranteeing correct unlink order.
e.g. [a, a, a, b, b, c, a, c, c, c] -> this will unlink in
batches of [a, a, a], [b, b], [c], [a], [c, c, c]

- The second problem is fixed by making a savepoint per batch, if
a single element of the batch fails and the recordset contains more
than one element, we split the recordset into two and we repeat the
unlink process recursively until we weed out the undeletable record

Real world example: l10n_mx_edi takes 20min to uninstall because it
contains a lot of master data (~55k records), with this patch the
uninstall takes a measly 20s.

It should generally reduce the uninstallation time for all modules, but
those with lots of master data will see greater benefits in terms of
time.

opw-2025895

closes odoo/odoo#34435

Signed-off-by: Raphael Collet (rco) <rco@openerp.com>
2019-07-01 14:24:39 +00:00
Hetal Dhanak d93fe5a0b8 [FIX] hr_recruitment_survey: fix a typo in thank you message
On survey fix the typo 'Thanks you' to 'Thank you'

Task-1973931
Closes: #34354

Signed-off-by: Jérome Maes (jem) <jem@openerp.com>
2019-06-25 12:30:10 +00:00
Romain Derie ea3a2ab678 [IMP] website: show website name in ir.ui.view name_get
Before this commit, it was impossible to know which view was the one searched
if there was COW views.

Indeed, since multiwebsite, views might get duplicated from one website to
another. Then, when searching for an ir.ui.view in a form view, every
duplicated view would be listed next to each other with the exact same name
without a way to identify which one comes from which website.

This commit will suffix the view name by its website_id if there is one.

To do so, we use the context key that has been introduced with 62d73253f3.

task-1920052

closes odoo/odoo#33307

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2019-07-01 09:48:57 +00:00
Lucas Lefèvre c33a347e6a [FIX] hr_contract: Move scss in correct folder
File `calendar_mismatch.scss` was wrongly in a `css` folder
while it should be in a `scss` folder according to the guidelines.

And set the correct `type="text/scss"` instead of `type="text/css"`
for a .scss file.

closes odoo/odoo#34478

Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2019-07-01 09:44:04 +00:00
Lucas Lefèvre bc08a2deaf [FIX] hr_contract: Load calendar mismatch style
Commit f17655d introduced a new file (`views/assets.xml`) in
the manifest to load a new scss file. But it also deleted from
the manifest an existing file (`views/hr_contract_templates.xml`)
without moving the content from removed file to the new file.
Hence, style defined in `calendar_mismatch.scss` was never loaded.
2019-07-01 09:34:59 +00:00
Lucas Lefèvre effcf0d13b [FIX] fleet: Add multi company ir.rule
Purpose
=======
Since the new company switcher, it's now easier
to manage records of different companies.

Specification
=============
Add a multi company `ir.rule` for `fleet.vehicle`.

closes odoo/odoo#34426

Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2019-07-01 07:34:15 +00:00
rhe b60b781e2e [IMP] point_of_sale: Add the uom to the order line
If we were using Units of Measure before, the pos order line didn't show what unit we were using. Now we display the Units of Measure in the order line if the option is active.
TASK-ID: 2001995

closes odoo/odoo#33915

Signed-off-by: pimodoo <pimodoo@users.noreply.github.com>
2019-07-01 12:06:22 +00:00
Sébastien Theys db7ea314ad [IMP] website_sale: allow drag & drop on extra product media
This makes the media easier to sort than manually manipulating their sequence.

task-2029597

closes odoo/odoo#34440

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2019-06-28 10:27:21 +00:00
qdp-odoo 7d19744f3e [MERGE] forward port branch saas-12.4 up to 3e3a244e1a 2019-07-01 13:55:24 +02:00
Laurent Smet bc131c0cfb [MERGE] manual forward port of accounting-pocalypse (beaa30a3d1)
This commit merges the following models
 * account.invoice and account.move
 * account.invoice.line and account.move.line
 * account.voucher and account.move
 * account.voucher.line and account.move.line

It was the opportunity for a big cleanup of the code, so it also restructures the whole account module, its different models/fields, the tests etc. for a better world and a better code readability.

==== Rationale ====
The rationale of this huge change is that we want journal entries / invoices to be easily edited, and changes reflected in the other model. It's a HUGE feature and very strategic for the fiduciary companies. For example, changing the account of a journal entry needs to be automatically reflected on the related invoice.

The same reasoning applies to sale/purchase vouchers.

==== Changes made in features =====
When creating an invoice, you are now creating a journal entry directly.
--> The object account.invoice no longer exists.
In the same fashion when creating an invoice line, you're now adding journal items directly in the journal entry representing the invoice. If this invoice line has some tax, it may create additional journal items as well.
--> The models account.invoice.line & account.invoice.tax no longer exist

Identically, when creating a sale/purchase receipt with its lines, you are now creating a journal entry directly and there's no more usability difference between encoding a receipt or an invoice.
--> The object account.voucher no longer exists.
--> The object account.voucher.line no longer exists.
--> The whole account_voucher module no longer exists.

Positive side-effects coming from these changes are
* draft invoices/bills/sale or purchase receipts now create a draft accounting entry. Validate these objects now simply post its journal entry. That means that draft invoices/bills/sale or purchase receipt can straightforwardly be included in reporting or budgets.
* opening a journal entry in form view will now always open the correct view: if it's a sale/purchase journal entry we will have a customer invoice/vendor bill view or a sale/purchase receipt view, whatever the menu we're coming from.
* code & business logic simplification. It is also condensed in a single place instead of being partially duplicated on invoices, vouchers and journal entries.

There should be no feature loss, except the one allowing to group multiple journal items together based on the same product during the invoice validation.

==== Changes made in models =====
* account.invoice: model removed. Instead, now use account.move with following mapping

field (account.invoice) 		field (account.move)
-----------------------			--------------------
name 					invoice_payment_ref
number 					name
reference 				ref
comment 				narration
user_id 				invoice_user_id
amount_					total_company_signed amount_total_signed
residual 				amount_residual
state 					state + invoice_payment_state 		/!\ selection changed
date_invoice 				invoice_date
date_due 				invoice_date_due
sent 					invoice_sent
origin 					invoice_origin
payment_term_id 			invoice_payment_term_id
partner_bank_id 			invoice_partner_bank_id
incoterm_id 				invoice_incoterm_id
vendor_bill_id 				invoice_vendor_bill_id
source_email 				invoice_source_email
vendor_display_name 			invoice_vendor_display_name
invoice_icon 				invoice_vendor_icon
cash_rounding_id 			invoice_cash_rounding_id
sequence_number_next 			invoice_sequence_number_next
sequence_number_next_prefix 		invoice_sequence_number_next_prefix

'invoices' subset of account.move can be accessed by using the selection field 'type' or one of the many helpers like is_invoice()

* account.move: now has a valid state 'cancel' that has to be excluded from all business logic
* account.move: field 'amount' renamed into 'amount_total'
* account.move: field 'reverse_entry_id' renamed into 'reversed_entry_id'
* account.move.line: now has a field 'display_type' that has to be excluded from all business logic, in order to support invoice layouting
* account.invoice.line: model removed. Instead, now use account.move.line with following mapping

field (account.invoice.line) 		field (account.move.line)
----------------------------		-------------------------
invoice_id 				move_id
uom_id 					product_uom_id
invoice_line_tax_ids 			tax_ids
account_analytic_id 			analytic_account_id

'invoice lines' subset of all account.move.line from a journal entry can be accessed by using the boolean field 'exclude_from_invoice_tab'

* account.invoice.tax: model removed. Instead, now use account.move.line with following mapping

field (account.invoice.tax) 		field (account.move.line)
---------------------------		-------------------------
invoice_id 				move_id
account_analytic_id 			analytic_account_id
amount 					price_unit
base 					tax_base_amount

'tax lines' subset of all account.move.line from a journal entry can be accessed by using the relational field 'tax_line_id'

* account.invoice.confirm: model removed. Instead, now use the 'post()' function of account.move
* account.invoice.refund: model removed. Instead, now use account.move.reversal to reverse the entries with the same options as we had for invoices
* account.voucher: model removed. Instead, now use account.move of type in ['out_receipt', 'in_receipt]
* account.voucher.line: model removed. Instead, now use account.move.line

==== Changes made in functions ====
* on account.move, method _run_post_draft_to_post() renamed into _autopost_draft_entries()
* on account.move, method action_account_invoice_payment() renamed into action_invoice_register_payment()
* on account.move, method action_invoice_reconcile_to_check() renamed into action_open_matching_suspense_moves()
* on account.move, method _get_domain_edition_mode_available() renamed into _get_domain_matching_supsense_moves()
* on account.move, method _get_intrastat_country_id() renamed into _get_invoice_intrastat_country_id()
* on account.move.line, method _get_domain_for_edition_mode() renamed into _get_suspense_moves_domain()
* in account.bank.statement, contextual key 'edition_mode' renamed into 'suspense_moves_mode'

Was task 1917430
2019-07-01 13:45:57 +02:00
Aaron Bohy 3e3a244e1a [FIX] web: BasicModel: don't update default one2many records
Let's assume a one2many field in a form view with a default value
with commands 4 (link to). Before this rev., when saving the record,
the BasicModel generated a command 4 and a command 1 (update) for
each record, with the values of the record (directly coming from DB).
This can cause an issue when the related record can't be edited
(e.g. a posted journal entry in accounting).

closes odoo/odoo#33797

Signed-off-by: Quentin De Paoli (qdp) <qdp@openerp.com>
2019-06-28 11:53:19 +00:00
Laurent Smet beaa30a3d1 [IMP/REF] accounting-pocalypse yeaaahh
This commit merges the following models
 * account.invoice and account.move
 * account.invoice.line and account.move.line
 * account.voucher and account.move
 * account.voucher.line and account.move.line

It was the opportunity for a big cleanup of the code, so it also restructures the whole account module, its different models/fields, the tests etc. for a better world and a better code readability.

==== Rationale ====
The rationale of this huge change is that we want journal entries / invoices to be easily edited, and changes reflected in the other model. It's a HUGE feature and very strategic for the fiduciary companies. For example, changing the account of a journal entry needs to be automatically reflected on the related invoice.

The same reasoning applies to sale/purchase vouchers.

==== Changes made in features =====
When creating an invoice, you are now creating a journal entry directly.
--> The object account.invoice no longer exists.
In the same fashion when creating an invoice line, you're now adding journal items directly in the journal entry representing the invoice. If this invoice line has some tax, it may create additional journal items as well.
--> The models account.invoice.line & account.invoice.tax no longer exist

Identically, when creating a sale/purchase receipt with its lines, you are now creating a journal entry directly and there's no more usability difference between encoding a receipt or an invoice.
--> The object account.voucher no longer exists.
--> The object account.voucher.line no longer exists.
--> The whole account_voucher module no longer exists.

Positive side-effects coming from these changes are
* draft invoices/bills/sale or purchase receipts now create a draft accounting entry. Validate these objects now simply post its journal entry. That means that draft invoices/bills/sale or purchase receipt can straightforwardly be included in reporting or budgets.
* opening a journal entry in form view will now always open the correct view: if it's a sale/purchase journal entry we will have a customer invoice/vendor bill view or a sale/purchase receipt view, whatever the menu we're coming from.
* code & business logic simplification. It is also condensed in a single place instead of being partially duplicated on invoices, vouchers and journal entries.

There should be no feature loss, except the one allowing to group multiple journal items together based on the same product during the invoice validation.

==== Changes made in models =====
* account.invoice: model removed. Instead, now use account.move with following mapping

field (account.invoice) 		field (account.move)
-----------------------			--------------------
name 					invoice_payment_ref
number 					name
reference 				ref
comment 				narration
user_id 				invoice_user_id
amount_					total_company_signed amount_total_signed
residual 				amount_residual
state 					state + invoice_payment_state 		/!\ selection changed
date_invoice 				invoice_date
date_due 				invoice_date_due
sent 					invoice_sent
origin 					invoice_origin
payment_term_id 			invoice_payment_term_id
partner_bank_id 			invoice_partner_bank_id
incoterm_id 				invoice_incoterm_id
vendor_bill_id 				invoice_vendor_bill_id
source_email 				invoice_source_email
vendor_display_name 			invoice_vendor_display_name
invoice_icon 				invoice_vendor_icon
cash_rounding_id 			invoice_cash_rounding_id
sequence_number_next 			invoice_sequence_number_next
sequence_number_next_prefix 		invoice_sequence_number_next_prefix

'invoices' subset of account.move can be accessed by using the selection field 'type' or one of the many helpers like is_invoice()

* account.move: now has a valid state 'cancel' that has to be excluded from all business logic
* account.move: field 'amount' renamed into 'amount_total'
* account.move: field 'reverse_entry_id' renamed into 'reversed_entry_id'
* account.move.line: now has a field 'display_type' that has to be excluded from all business logic, in order to support invoice layouting
* account.invoice.line: model removed. Instead, now use account.move.line with following mapping

field (account.invoice.line) 		field (account.move.line)
----------------------------		-------------------------
invoice_id 				move_id
uom_id 					product_uom_id
invoice_line_tax_ids 			tax_ids
account_analytic_id 			analytic_account_id

'invoice lines' subset of all account.move.line from a journal entry can be accessed by using the boolean field 'exclude_from_invoice_tab'

* account.invoice.tax: model removed. Instead, now use account.move.line with following mapping

field (account.invoice.tax) 		field (account.move.line)
---------------------------		-------------------------
invoice_id 				move_id
account_analytic_id 			analytic_account_id
amount 					price_unit
base 					tax_base_amount

'tax lines' subset of all account.move.line from a journal entry can be accessed by using the relational field 'tax_line_id'

* account.invoice.confirm: model removed. Instead, now use the 'post()' function of account.move
* account.invoice.refund: model removed. Instead, now use account.move.reversal to reverse the entries with the same options as we had for invoices
* account.voucher: model removed. Instead, now use account.move of type in ['out_receipt', 'in_receipt]
* account.voucher.line: model removed. Instead, now use account.move.line

==== Changes made in functions ====
* on account.move, method _run_post_draft_to_post() renamed into _autopost_draft_entries()
* on account.move, method action_account_invoice_payment() renamed into action_invoice_register_payment()
* on account.move, method action_invoice_reconcile_to_check() renamed into action_open_matching_suspense_moves()
* on account.move, method _get_domain_edition_mode_available() renamed into _get_domain_matching_supsense_moves()
* on account.move, method _get_intrastat_country_id() renamed into _get_invoice_intrastat_country_id()
* on account.move.line, method _get_domain_for_edition_mode() renamed into _get_suspense_moves_domain()
* in account.bank.statement, contextual key 'edition_mode' renamed into 'suspense_moves_mode'

Was task 1917430
2019-06-28 11:52:55 +00:00
Romain Derie 0bd61b5245 [FIX] website_sale: remove unnecessary code on test
559bdc976 was merged with an extra line of code to avoid a bug as the fix was
merged in lower version (9efc11c8da) and we could not wait for the forward
port.

Thus, we forced the redirect on `/my` after signup. This code should be removed
for the test to really test the behavior.

closes odoo/odoo#34406

Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
2019-06-28 09:34:36 +00:00
Yannick Tivisse 2eb374ea24 [FIX] hr: Correct implementation for 3be372c
This breaks the profile edition for non admin users
2019-06-28 08:48:49 +02:00
Christophe Simonis 5e81b18e24 [MERGE] forward port branch saas-12.3 up to 0247d2f35f 2019-06-27 20:45:52 +02:00
mgh-odoo c3a609eae4 [FIX] website_form_editor: retain selection field design while saving
In case of selection or many2one field, while saving the page, the field
is re-rendered and loses the applied design changes.

This commit fixes the behavior by re-applying those changes on a newly
rendered field.

task-1961733

closes odoo/enterprise#4657

Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>

X-port/Cherry-pick of odoo/enterprise@298a9b3a94
2019-06-27 19:59:16 +02:00
Goffin Simon 0247d2f35f [FIX] sale_coupon, sale_coupon_delivery: Wrong discount on promotion program
Let's consider a product P with a unit price = 100€
When a price list PL with a discount of 20% was applied, and
a coupon program CP with a discount of 10% was also applied,
system still calculated the rate based on unit price of the product
and not on the discounted price.

So in this example, the amount of the CP discount was 10€ instead of
8€ because the CP discount was computed on the unit price 100€
instead of the discounted price 80€ (with 20% discount of PL)

opw:2006829

X-port/Cherry-pick of odoo/enterprise@23739e8a71
2019-06-27 19:14:28 +02:00