Commit Graph
135 Commits
Author SHA1 Message Date
Rémy Voet (ryv) 8a1a825d57 [FIX] stock_account: fix valuate empty stock.
To reproduce, product A in AVCO:
- Buy 2 product A at 1.00 $
- Buy 1 product A at 1.01 $
- Sell 3 product A.
- The stock valuation won't be correct: still remain 0.01 in
stock without quantity and the svl related to the sell
have a value of 3.00 (instead of 3.01)

To fix:
In case of AVCO, add the rounding error value to the out
stock move layer.

closes odoo/odoo#65117

X-original-commit: f6b019fcfdd35a693e8af43ae38d10e31e96284a
Signed-off-by: William Henrotin <Whenrow@users.noreply.github.com>
2021-01-27 12:56:08 +00:00
William Henrotin 7fa9ec2638 [IMP] stock_account: create account moves in batch
This commit groups creation and posting of account moves related to
stock valuation in case of automatic valuation product.

Previously, the account move were created one by one and posted right at
the creation. Which can really slow (for instance running
_run_fifo_vaccum with a large amount of remaining quantity layer)

closes odoo/odoo#62700

Signed-off-by: Arnold Moyaux <amoyaux@users.noreply.github.com>
2020-12-08 13:40:54 +00:00
Martin Trigaux 2683184aa6 [FIX] *: fix all the typos
And other reported English mistakes in source string
Courtesy of Transifex translators

And remove leftover from gengo

closes odoo/odoo#59022

X-original-commit: 26efc84c5cac47a2cc83d7b084f8b71528fec6c7
Related: odoo/enterprise#13781
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2020-10-05 09:36:34 +00:00
william 82dc0cb7b9 [IMP] account: soft post entries in the future
Add an easy way to not post the entries in the future when calling
post() on it, but rather set it to be auto-posted at accounting date.
This is useful when we are creating a lot of entries in batch and some
might be in the future, some in the past, and we don't want to separate
that in two batch every time. (asset, accrual, transfer,... )
2020-08-05 11:57:10 +00:00
Jigar Vaghela 12b4a24b97 [FIX] stock_account/sale_stock: correctly valuate the product in below use case
Below is the case of product with automated valuation:
- You bought 8 units @ 10$.
- Then you deliver 10 units of the product.
- You assumed the missing 2 should go out at a value of 10$
  but you are not sure yet as it hasn't been bought in Odoo yet.
- Afterwards, you buy missing 2 units of the same product at 12$.

In this case the product has been undervalued when delivered without stock,
the vacuum entry is the following one (this entry already takes place):

Account                         | Debit   | Credit
===================================================
Stock Valuation                 | 0.00     | 4.00
Stock Interim (Delivered)       | 4.00     | 0.00

So, on delivering product with different price,
We should create additional journal items like:
Account                         | Debit    | Credit
===================================================
Stock Interim (Delivered)       | 0.00     | 4.00
Expenses Revaluation            | 4.00     | 0.00

closes odoo/odoo#52396

Task: 2224025
Closes: #52396
Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
2020-07-03 11:24:55 +00:00
Martin Trigaux 80e97e98ce [IMP] *: use named placeholders in translated message
When more than one parameter is present in a message, it helps the
translation to use named placeholder. This way, the order can be
changed. It also helps the comprehension of the message.
2020-06-18 13:03:34 +02:00
Goffin Simon 5b80a301db [FIX] stock_account: User not allowed to update product cost
Steps to reproduce the bug:

- Login with demo user (no accounting app access)
- Go to any product with Update Cost button and try to update it

Bug:

Error message "You don't have the access rights to post an invoice" even if
the inventory valuation was manual.

opw:2240513

closes odoo/odoo#49950

X-original-commit: edc54cdf6d39d7689902903fa637df2a709b4396
Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
2020-04-22 10:06:12 +00:00
Andrea Grazioso (agr-odoo) c1c3764ec3 [FIX] stock_account: avoid traceback on quantity zero
1. Install PoS and Accounting
2. In a product category activate the Inventory Valuation automated
3. Sell a quantity 0 of such product via POS

Traceback will occur when confirming the sale because the inventory
valuation do not handle zero quantity

opw-2206625

closes odoo/odoo#49417

X-original-commit: d501ddd1e80bc4e3ff90cd9b34eb43c27e55ff97
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2020-04-10 12:54:00 +00:00
Tiffany Chang (tic) 99252f3d93 [IMP] stock/mrp: Update UX
This commit updates product, stock and manufacturing views for improved
usability. Handles view only changes of overall usability improvement
task. Specifically spec numbers:

1. Add "Run Scheduler" (from stock) to the manufacturing app under operations
5. Make "detailed operations" wizard modal have more intitutive footer
   buttons (i.e. don't say "Confirm"/"Cancel" when changes aren't
   possible.
8. Rearranging of vendor pricelist view
9. Updating of tooltip content for "property_stock_account_input_categ_id"

Task: 2041853
2020-03-05 13:04:10 +00:00
Rémy Voet (ryv) 7c55c20fce [IMP] stock_account: add button to create manual stock valuation layers
Add a way to create a munual stock valuation layer, create
a stock valuation layers implies :
- Change the stardard price with the new valuation by product unit in case of AVCO.
- Create a manual stock valuation layer with the added value.
- Update the remaining value of current valuation layer.
- If the Inventory Valuation of the product category is automated, create
related account move.

task-2123752
2020-03-04 16:07:40 +00:00
Rémy Voet (ryv) 8093b658cf [REF] stock_account: modify _change_standard_price to be batchable
The private method _change_standard_price was incorrect in batch
and didn't contain a ensure_one check.
Fix to be batched and used this new version in the write method
of product.product model.

task-2123752
2020-03-04 15:44:53 +00:00
Rémy Voet (ryv) c4d71d7d24 [REM] stock_account: clean import/condition/dead-code
For the stock_account module:
- Remove unused import
- Remove deadcode, unused _anglo_saxon_sale_move_lines method
and useless 'continue' keyword
- Fix duplicate name test (test_average_perpetual_8 defines twice)
- Make comments flake8 compliant

task-2123752
2020-03-04 15:44:53 +00:00
Victor Feyens 2556d5a024 [FIX] stock(_*): ensure properties are read with the correct company. 2020-02-27 12:19:24 +00:00
Ankita Raval d675dbaa4c [IMP] account,* : Change type field to move_type in account.move
task-id: 2028z813
2020-02-19 09:09:20 +00:00
Simon Lejeune de26f4a4e8 [FIX] stock_account: anglo saxon and corrections
Don't ignore correction layers when computing the anglo saxon price
unit. We use the `stock_valuation_layer_id` field on the layer to point
the correction layer to the corrected layer. When computing the average
price of the delivered things, ignore correction entry but take them
into account when choosing a corrected entry.

opw-2179900

closes odoo/odoo#44774

X-original-commit: 3831649b81c1271977730cdf46100f814687af61
Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
2020-02-06 17:15:18 +00:00
jbm-odoo dc1402c79b [FIX] stock_account: Avoid divide by 0
closes odoo/odoo#43188

Related: odoo/enterprise#7676
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-02-03 13:11:58 +00:00
Maulik Raval 97a7cce164 [FIX]Fixed the singleton error when updating multiple category records value.
closes odoo/odoo#44320

X-original-commit: b08f658770d97be73da540eae1b439c551784310
Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
2020-01-30 14:33:40 +00:00
Simon Lejeune 7ad5dd4d7d [FIX] stock_account: _run_fifo_vacuum
If the oldest problematic layer cannot be fixed, no need to try to fix
later one.

X-original-commit: f7ccf2b16803f05584fb094471b08f6836d892a1
2020-01-24 11:48:13 +00:00
Sylvain LE GAL 1e1e511cea [FIX] call _get_product_accounts() everywhere
closes odoo/odoo#41632

Signed-off-by: Laurent Smet <smetl@users.noreply.github.com>
2020-01-23 14:29:45 +00:00
Ujas Dubal a5c4855a6b [FIX] stock_account: Added default type for 'account.move' line.
This commit will fixed the error when product has some stock quants
and product category with 'Automated' valuation method, is set to that product.

==============================

Steps to product the above mentioned error:
1. Create product with any category which has 'Manual' valuation method.
2. Update 'On Hand' quantity for the same product.
3. Create product category with valuation method set to 'Automated'.
4. Now set the above product category to the same product which you created in step 1.
5. And Click on the save button.

==============================

Also edit the test case.

closes odoo/odoo#43755

Task: 2155804
X-original-commit: c62dea6a7ce6b63f708831707811e922cd6bddd0
Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
2020-01-22 12:47:21 +00:00
Nicolas Martinelli 5afe4f8853 [FIX] stock_account: no analytic info on COGS
- Create a FIFO product, Automated
- Make some stock
- Create a SO, add the product
- On the SO, add an analytic account
- Validate the picking, create the invoice
  => the analytic info are propagated to the invoice, as expected
- Validate the invoice

The analytic info is propagated on the COGS entries, in particular the
the output account, which is incorrect.

opw-2008567

closes odoo/odoo#43690

X-original-commit: e831868fe648d3a3a4981a1cf9c135e4e4102279
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2020-01-21 17:07:56 +00:00
yhu-odoo c87275a69f [FIX]stock_account: stock manager group not inherit account bill group
The inheritance of account billing group gives stock managers the access
to account module.
This commit is to remove this inheritance. When we need to access
account.move model, check if the user is a stock manager. If so, use
sudo() to get the access.

PR #43186
Task 2062611
2020-01-15 09:01:45 +00:00
Simon Lejeune 28a3430de1 [REF] stock_account, mrp_account: valuation layer and not admin user
missing bit from rev[0] and [1]

[0] 7ef11e3
[1] d6c8c34ef6539dad110f1e502eaee2c03d968797

closes odoo/odoo#42621

X-original-commit: 5096e724643ca77568ce2f09a40b138561f4c20f
Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
2020-01-02 15:48:56 +00:00
Simon Lejeune b08585e071 [FIX] stock_account: negative stock and vacuum
Running the vacuum in avco indeed fixed the estimated value on the
delivery but it did not update the standard price afterwards, making it
possible to have an inconsistent standard price with the actual value in
stock, as described in [0] and in the task [1].

A test was added (and validated) in the layers test file and an two old
one were fixed. test_average_perpetual_2 displayed also a different
missing bit: the vacuum should run when the user unlock and increments a
receipt.

[0] https://github.com/odoo/odoo/pull/41669
[1] 2154638

closes odoo/odoo#42292

X-original-commit: 6e4c9b8219db0c94c29f5ee145998e6f1597bb55
Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
2019-12-30 09:01:17 +00:00
William Henrotin 9503f463e3 [FIX] mrp: always show post inventory button
The inventory button was shown or hide depending of the product valuation.
As the valuation was previously stored on the stock moves and posting
split the stock moves. Fifo and Avco valuation was not well computed.
The migration to stock valuation layer fixed this behavior. This
commit shows the post inventory button as soon as there are some
finished move to be posted.

task : 54665

closes odoo/odoo#41781

X-original-commit: 5dfa3f817d3a9f47a863a587569a862a40c7d159
Signed-off-by: William Henrotin <Whenrow@users.noreply.github.com>
2019-12-10 12:41:06 +00:00
Debauche Stéphane 39872c9324 [IMP] stock_account: change the standard price calculation for FIFO products
Before
======
If a product is FIFO, the standard price is the unit cost of the last released.
```
+ 1 product @ 10€
+ 1 product @ 15€
- 1 product
-> Actual standard price is 10€

```

After
=====
If a product is FIFO, the standard price of the ``product.product`` is the
unit cost of the next product which will  be released
```
+ 1 product @ 10€
+ 1 product @ 15€
- 1 product
-> Actual standard price is 15€

```

Task #2038418
2019-12-10 16:13:28 +00:00
Debauche Stéphane 42d3a82a80 [IMP] stock_account: remove the wizard which change the `standard_price`
Overwrite the method ``write`` of the model ``product.product``.

When we write on ``standard_price``, if
- the context key ``disable_auto_svl`` is not set
- the ``cost_method`` is not "fifo"
We automatically compute ``stock.valuation.layer``

(before we needed to manually call ``_change_standard_price``)

Task #2031422

closes odoo/odoo#41265

Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
2019-12-06 10:58:03 +00:00
Victor Feyens 9215e73fa2 [IMP] * : replace with_context(force_company=c) by with_company(c) 2019-11-18 12:25:05 +00:00
Simon Lejeune eea62c09c9 [FIX] stock_account: standard price update upon delivery
Make sure to update the standard price with the computed unit cost of
the candidate and not its `unit_cost` field, as the computed could
contain an extra value from a landed cost.

closes odoo/odoo#40208

X-original-commit: 9234ea1e32609ee7b5c22b836c33eefa20220d37
Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
2019-11-13 14:38:02 +00:00
William Henrotin cf6e8e412c [FIX] stock_account: remove useless descriptions
closes odoo/odoo#39067

X-original-commit: e398db8783c2c88ffbb571b14758281ba6f382d1
Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
2019-10-19 07:33:19 +00:00
Simon Lejeune d43d25020e [REF] stock_account: multi company
Ensure proper domains are applied and enforced on relation fields thanks
to the `check_company` attributes.

Adapt `_compute_value_svl` to return the valuation for a specific
company.

Every time a property is read, make sure `force_company` is properly in
the context.

Fixed the ir.rule.

task-1985992
2019-09-03 15:05:03 +00:00
Simon Lejeune 15245a4f1f [REF] stock_account: fifo rounding
Reintroduce remaining_value on the valuation layer. We thought we could
get rid of it and only use unit_cost but with tricky receipt value such
as 10 for three units it works indeed better.

Increment remaining_value when applying a landed cost, don't use this
field anywhere else than _run_fifo. It's a shame we have to edit in
place the value of a layer while we were able to keep them as they were
everywhere else...

There still an imprecision sometimes due to the representation of float
and their way through currency.round (see test_rounding_2) so we also
call currency.round on the computed field value_svl to get a real 0
value.

task-2057877

closes odoo/odoo#36013

Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
2019-08-23 09:20:40 +00:00
Raphael Collet 9920f20e4c [IMP] models: ORM speedup
This branch is the combination of several optimizations in the ORM:

* store field values once in the cache: the cache reflects more
faithfully the database, only fields that explicitly depend on the
context have an extra indirection in the cache;

* delay recomputations by default: use method `recompute` to explicitly
flush out pending recomputations;

* delay updates in method `write`: updates are stored in a data
structure that can be flushed efficiently to the database with method
`flush` (which also flush out recomputations);

* make method `modified` take advantage of inverse fields to inverse
dependencies;

* filter records by evaluating a domain on records in Python;

* a computed field with `readonly=False` behaves like a normal field
with an onchange method;

* computed fields are computed in superuser mode by default.

Work done by Toufik Ben Jaa, Raphael Collet, Denis Ledoux and Fabien
Pinckaers.

closes odoo/odoo#35659

Signed-off-by: Denis Ledoux <beledouxdenis@users.noreply.github.com>
2019-08-20 12:43:59 +00:00
Hetashree Chauhan c0d3d7e994 [IMP] stock,_account: usability changes
This commit will change,
1. tooltip for stock valuation accounts and costing method
2. change message when on-hand quantity is zero.
task-2006467

closes : https://github.com/odoo/odoo/pull/35328

closes odoo/odoo#35328

Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
2019-08-20 08:06:32 +00:00
Christophe Simonis 886eca0131 [IMP] *: remove usage of oldname attribute
This attribute is misleading as it is insufficient to correctly upgrade
the database. It only renames the column in the database, but other
operations are needed, like updating the corresponding `ir.model.fields`
record (and its xmlid). The default values and the translations are also
lost during the upgrade.

Moreover, this feature was misused. It was:
 - left on fields during multiple versions.
 - used on reports (SQL views). This would be ok if the feature was
   complete, but, as is, it was useless.
 - kept unchanged after a second renaming of the field (which can happen
   versions later the first rename).
 - used, even when the meaning of the field changed. i.e. the field
   `archived` has been renamed to the classic `active`, but the value
   in the database should be switched.
2019-08-05 09:36:41 +00:00
Pierre Masereel 2ef96ee8cc [FIX] stock_account: valuation layer access rights
When we try to validate a pos session without beinig administrator, we
don't have access rights on the valuation layer.

So we've extended this rev: 7ef11e3c96
2019-08-02 09:33:05 +00:00
Simon Lejeune 0fc9a97d20 [REF] stock_account: _compute_average_price unit price rounding
Since the introduction of the stock valuation layer, unit_cost is
rounded in the company currency (actually it is NOT because of an ORM
bug that will be fixed later). With the test introduced at [0], fixing
that ORM bug shows we have a rounding issue (27.02 instead of 27) due to
the company currency rounding on the unit_cost. Since the logic of the
anglo saxon will probably always give some rounding issue (we always
return a price unit that will be multiply by the invoiced quantity)
recomputing a not rounded price unit by using the not rounded value with
the not rounded quantity seems a good enough compromise.

[0] 13a535a091

closes odoo/odoo#35384

Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
2019-08-01 13:16:58 +00:00
Simon Lejeune 7ef11e3c96 [REF] stock_account: valuation layer and not admin user
Carefully sudo when necessary.

task-2034044

closes odoo/odoo#34802

Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
2019-07-23 08:36:31 +00:00
Simon Lejeune 69276607cc [FIX] stock_account: valuation layer description on valuation change
The layer created to handle the valuation and costing change share the
same code but they should not share the same description.

closes odoo/odoo#34952

Signed-off-by: Arnold Moyaux <amoyaux@users.noreply.github.com>
2019-07-17 14:28:30 +00:00
Adrian Torres 4b38cc6590 [REM] *: calls to @api.multi
Multi is the default api for methods, it is not necessary to explicitly
decorate methods with it, adds clutter and most people use it because
they see that the rest of the code uses it.

Done with `find . -type f -name '*.py' | xargs sed -i '/@api.multi/d'`
2019-07-17 14:13:12 +02:00
Simon Lejeune 14812f4171 [REF] sale_stock: invoice_policy shouldn't impact valuation
The invoice status of a sale order line depends on its product's
`invoice_policy` and `qty_delivered` fields.

`invoice_policy` is also used to compute the "anglo saxon price
unit" which is, once multipled by the invoiced quantity, the
amount we will take from the stock delivered account to put into
the cost of goods sold account if we are in anglo saxon mode.

The default `invoice_policy` is set as "ordered". In this mode and in
anglosaxon, the "anglo saxon price unit" will always be standard price
of the product, resulting in unbalanced accounts.

In this task, we chose to use the real delivered price if something was
delivered, whatever the value of `invoice_policy`. We fallback on the
standard price if nothing or not enough things were delivered.

test_dropship_fifo_perpetual_anglosaxon_ordered and
test_dropship_fifo_perpetual_anglosaxon_delivered do have the same
result now.

task-2003196

closes odoo/odoo#34644

Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
2019-07-09 14:56:43 +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
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
Simon Lejeune f12a616c29 [REF] stock_account: cost method change with valuation layers
The examples are implemented at TestStockValuationChangeCostMethod.

The idea is that we want to keep some trace of cost method change and
keep the consistency of the data (eg what about a fifo stack when
changing to standard, that sort of things). We thus implement a simple
logic: when changing the cost method, empty the current valued stock
with the old cost method and refill the stock with the new one.

Some cost method changes are neutral accounting wise, others not.

The rationale is that cost method changes are a hard configuration changes
and databases where users changed cost method are undebuggable because
it is not possible to understand the resulting accounting entries.

The change of valuation (auto to manual and conversely) is not well
defined at the moment.

task-1875873
2019-06-10 20:43:27 +00:00
Simon Lejeune 68d8e49f2f [REF] stock_landed_costs: adapt to valuation layers
We need to increment the value of another layer. We don't  want to write
on this layer in place as we used to do for multiple reasons:
- valuation at date: before the application of an lc, the value should
  not change
- if the layer was consumed, we would need to adapt the consumers and
  if one day we would have needed to understand what happened in the
  fifo stack it would be hell

So we allow to create a valuation layer linked to another valuation
layer through a simple M2O O2M. At the time it is only used on the
landed costs to add value and no quantity so the code expects it would
be the case and it is not enforced. We adapt `_run_fifo` to use the full
value.

We also add a stat button on the landed cost to access the valuation
layers, like what is done for the picking and manufacturing orders.

task-1875873
2019-06-10 20:43:00 +00:00
Simon Lejeune 4c47061326 [REF] stock_dropshipping: adapt to stock valuation layers
The tests of this module showed multiple issues with the anglos axon
accounting entries creation so we fix them by getting the value on the
valuation layer and not directly on the stock moves.

About the changes in
test_crossdock.py
> To change a standard price, we need to open the wizard
test_lifo_price.py
> To change a standard price, we need to open the wizard + read the
  valuation on the layers.
test_stockvaluation.py
> Now that we create a layer in and out for a dropshipped move, the
accounting entries are similar to an in followed by an out, thus we need
to increment the number of generated AML. Not that the balance of the
accounts stay the same.

There's a slight change in fifo_perpetual_anglosaxon_ordered though.
Let's say for a start that this config doesn't make sense. Ordered means
we don't read the value on the stock move to create the accounting
entries but only the standard price. We had to change 8 by 10 in this
test because, before this task, the standard price was updated when
running fifo, even in dropshipped. As the PO line was valued at 8, the
anglos axon in stock out was at 8 because the standard price was changed
to 8 after the delivery.

task-1875873
2019-06-10 20:43:00 +00:00
Simon Lejeune 7c12322802 [REF] stock_account: journal entry creation
No more hijacking _account_entry_move with context keys.

_get_accounting_data_for_valuation
> no changes
_prepare_account_move_line
> only use the cost, not the value in context
> take description as arg to pass it to _generate_valuation_lines_data
_generate_valuation_lines_data
> use the description received in arg
> remove forced ref in context
_create_account_move_line
> add a qty, descritpion, cost, svl_id as arguments
> remove forced_quantity fron context
_account_entry_move
> add a qty, descritpion, cost, svl_id as arguments

task-1875873
2019-06-10 20:43:00 +00:00
Simon Lejeune 6fd05759e7 [REF] stock_account: remove old valuation code
The new code was sitting next to the old one, now that everything is
adapted (minus the cost method changes), we can remove the old one.

We also adapt the valuation wizard to use the stock valuation layer
action, now that the others are removed.

task-1875873
2019-06-10 20:42:59 +00:00
Simon Lejeune 54d1adf31a [REF] stock_account: fifo "negative" cost method with valuation layers
Re-implement _run_fifo_vacuum on the product this time with
float_is_zero and without remaining_value.

Trigger the vacuum at each receipt. Before it was done in the scheduler
each night, meaning the valuation on the move was not really
understandable nor consistent (the estimated value could be fixed by
some other move than the next receipt).

task-1875873
2019-06-10 20:42:59 +00:00
Simon Lejeune 8d21d0f888 [REF] stock_account: fifo "normal" cost method with valuation layers
We don't implement fifo negative handling in this commit.
We make sure we run fifo in average mode to get a proper remaining_qty
field.
`_run_fifo` is now a method on product (since it could be user outside
of a stock move context). It is really similar to its ancestor on the
stock move, with a few float_is_zero and compare more and a missing
remaing_value.

We move the valuation sanity check into a proper helper,
_sanity_check_for_valuation.

We complete the _create_correction_svl method with accounting entries.

task-1875873
2019-06-10 20:42:56 +00:00