Add support for filter by location on inventory report and inventory valuation

Refund option enabled by default on Return wizard
This commit is contained in:
Alexis de Lattre
2019-08-12 00:25:20 +02:00
parent 3052d7c905
commit cadbd840d9
15 changed files with 201 additions and 28 deletions

View File

@@ -16,13 +16,16 @@ Stock Account Usability
The usability enhancements include:
* TODO update the list
* activate the refund option by default in return wizard on pickings
* add ability to select a stock location on the inventory valuation report
This module has been written by Alexis de Lattre from Akretion <alexis.delattre@akretion.com>.
""",
'author': 'Akretion',
'website': 'http://www.akretion.com',
'depends': ['stock_account'],
'data': [],
'data': ['wizard/stock_quantity_history_view.xml'],
'installable': True,
}

View File

@@ -0,0 +1,22 @@
diff --git a/addons/stock_account/models/product.py b/addons/stock_account/models/product.py
index 0622c16d2b5..c078ac54324 100644
--- a/addons/stock_account/models/product.py
+++ b/addons/stock_account/models/product.py
@@ -239,7 +239,7 @@ class ProductProduct(models.Model):
for product in self:
if product.cost_method in ['standard', 'average']:
- qty_available = product.with_context(company_owned=True, owner_id=False).qty_available
+ qty_available = product.with_context(owner_id=False).qty_available
price_used = product.standard_price
if to_date:
price_used = product.get_history_price(
@@ -252,7 +252,7 @@ class ProductProduct(models.Model):
if to_date:
if product.product_tmpl_id.valuation == 'manual_periodic':
product.stock_value = product_values[product.id]
- product.qty_at_date = product.with_context(company_owned=True, owner_id=False).qty_available
+ product.qty_at_date = product.with_context(owner_id=False).qty_available
product.stock_fifo_manual_move_ids = StockMove.browse(product_move_ids[product.id])
elif product.product_tmpl_id.valuation == 'real_time':
valuation_account_id = product.categ_id.property_stock_valuation_account_id.id

View File

@@ -0,0 +1,2 @@
from . import stock_return_picking
from . import stock_quantity_history

View File

@@ -0,0 +1,35 @@
# Copyright 2019 Akretion France (http://www.akretion.com/)
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import models
class StockQuantityHistory(models.TransientModel):
_inherit = 'stock.quantity.history'
def open_table(self):
action = super(StockQuantityHistory, self).open_table()
if self.location_id and self.env.context.get('valuation'):
# When we have 'valuation' in context
# in both cases ('current inventory' and 'at specific date')
# it returns an action on product.product,
# the only difference is the context.
# We have to make the same modifications, but
# when self.compute_at_date, action['context'] is a dict
# otherwize, action['context'] is a string
if self.compute_at_date:
# insert "location" in context for qty computation
action['context']['location'] = self.location_id.id
# When company_owned=True, the 'location' given in the
# context is not taken into account
# IMPORTANT: also requires a patch on the stock_account
# module. Patch provided in this module.
action['context']['company_owned'] = False
else:
action['context'] = {
'location': self.location_id.id,
'create': False,
'edit': False,
}
return action

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2019 Akretion France (http://www.akretion.com/)
@author: Alexis de Lattre <alexis.delattre@akretion.com>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-->
<odoo>
<record id="view_stock_quantity_history" model="ir.ui.view">
<field name="name">stock_account_usability.stock.quantity.history.form</field>
<field name="model">stock.quantity.history</field>
<field name="inherit_id" ref="stock_account.view_stock_quantity_history"/>
<field name="arch" type="xml">
<field name="date" position="after">
<field name="location_id"/>
</field>
</field>
</record>
</odoo>

View File

@@ -1,12 +1,19 @@
# -*- coding: utf-8 -*-
# Copyright 2019 Akretion France (https://akretion.com/)
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import models, fields
from odoo import api, models
class StockReturnPickingLine(models.TransientModel):
_inherit = 'stock.return.picking.line'
class StockReturnPicking(models.TransientModel):
_inherit = 'stock.return.picking'
to_refund = fields.Boolean(default=True)
# Set to_refund to True by default
@api.model
def default_get(self, fields_list):
res = super(StockReturnPicking, self).default_get(fields_list)
if isinstance(res.get('product_return_moves'), list):
for l in res['product_return_moves']:
if len(l) == 3 and isinstance(l[2], dict):
l[2]['to_refund'] = True
return res