[ADD] stock_reception_usability
This commit is contained in:
1
stock_reception_usability/__init__.py
Normal file
1
stock_reception_usability/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from . import models
|
||||
24
stock_reception_usability/__manifest__.py
Normal file
24
stock_reception_usability/__manifest__.py
Normal file
@@ -0,0 +1,24 @@
|
||||
# Copyright 2021 Akretion (https://www.akretion.com).
|
||||
# @author Kévin Roche <kevin.roche@akretion.com>
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
|
||||
{
|
||||
"name": "Stock relation usability",
|
||||
"summary": "SUMMARY",
|
||||
"version": "14.0.1.0.0",
|
||||
"category": "Inventory, Logistic, Storage",
|
||||
"website": "http://www.akretion.com",
|
||||
"author": "Akretion",
|
||||
"license": "AGPL-3",
|
||||
"application": False,
|
||||
"installable": True,
|
||||
"depends": [
|
||||
"stock",
|
||||
"purchase",
|
||||
],
|
||||
"data": [
|
||||
"views/stock_picking.xml",
|
||||
],
|
||||
"demo": [],
|
||||
"qweb": [],
|
||||
}
|
||||
2
stock_reception_usability/models/__init__.py
Normal file
2
stock_reception_usability/models/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
from . import stock_move
|
||||
from . import stock_picking
|
||||
36
stock_reception_usability/models/stock_move.py
Normal file
36
stock_reception_usability/models/stock_move.py
Normal file
@@ -0,0 +1,36 @@
|
||||
# Copyright (C) 2021 Akretion (<http://www.akretion.com>).
|
||||
# @author Kévin Roche <kevin.roche@akretion.com>
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class StockMove(models.Model):
|
||||
_inherit = "stock.move"
|
||||
|
||||
location_dest_list = fields.Text(
|
||||
string="Locations", compute="_compute_locations_dest_list"
|
||||
)
|
||||
|
||||
@api.depends(
|
||||
"move_line_ids", "move_line_ids.location_dest_id", "move_line_ids.qty_done"
|
||||
)
|
||||
def _compute_locations_dest_list(self):
|
||||
for move in self:
|
||||
data = []
|
||||
separator = ", "
|
||||
dest_list = move.move_line_ids.location_dest_id
|
||||
for dest in dest_list:
|
||||
lines_qty = move.move_line_ids.search(
|
||||
[("move_id", "=", move.id), ("location_dest_id", "=", dest.id)]
|
||||
).mapped("qty_done")
|
||||
quantity = int(sum(lines_qty))
|
||||
location = dest.name
|
||||
data.append("{}: {}".format(quantity, location))
|
||||
move.location_dest_list = separator.join(data)
|
||||
|
||||
def _compute_is_quantity_done_editable(self):
|
||||
super()._compute_is_quantity_done_editable()
|
||||
for move in self:
|
||||
if len(move.move_line_ids) == 1 and move.show_details_visible:
|
||||
move.is_quantity_done_editable = True
|
||||
38
stock_reception_usability/models/stock_picking.py
Normal file
38
stock_reception_usability/models/stock_picking.py
Normal file
@@ -0,0 +1,38 @@
|
||||
# Copyright (C) 2021 Akretion (<http://www.akretion.com>).
|
||||
# @author Kévin Roche <kevin.roche@akretion.com>
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class StockPicking(models.Model):
|
||||
_inherit = "stock.picking"
|
||||
|
||||
def action_fill_quantity_done(self):
|
||||
self.ensure_one()
|
||||
for move in self.move_ids_without_package:
|
||||
if move.move_line_ids:
|
||||
first_line = move.move_line_ids[0]
|
||||
else:
|
||||
first_line = False
|
||||
if move.quantity_done == 0 and first_line:
|
||||
qty = move.product_uom_qty
|
||||
if first_line.qty_done == 0:
|
||||
first_line.write(
|
||||
{
|
||||
"qty_done": qty,
|
||||
}
|
||||
)
|
||||
elif move.quantity_done < move.product_uom_qty or (
|
||||
move.quantity_done == 0 and not first_line
|
||||
):
|
||||
qty = move.product_uom_qty - move.quantity_done
|
||||
self.env["stock.move.line"].create(
|
||||
{
|
||||
"move_id": move.id,
|
||||
"location_dest_id": move.location_dest_id.id,
|
||||
"location_id": move.location_id.id,
|
||||
"product_uom_id": move.product_uom.id,
|
||||
"qty_done": qty,
|
||||
}
|
||||
)
|
||||
27
stock_reception_usability/views/stock_picking.xml
Normal file
27
stock_reception_usability/views/stock_picking.xml
Normal file
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<odoo>
|
||||
<record id="view_picking_form" model="ir.ui.view">
|
||||
<field name="model">stock.picking</field>
|
||||
<field name="inherit_id" ref="stock.view_picking_form" />
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='product_uom']" position="after">
|
||||
<field name="location_dest_list" />
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='product_uom_qty']" position="attributes">
|
||||
<attribute
|
||||
name="attrs"
|
||||
>{'column_invisible': [('parent.state', '=', 'done')]}</attribute>
|
||||
</xpath>
|
||||
|
||||
<xpath expr="//field[@name='move_ids_without_package']" position="before">
|
||||
<button
|
||||
name="action_fill_quantity_done"
|
||||
type="object"
|
||||
string="Fill Done Quantity"
|
||||
class="btn btn-primary"
|
||||
>
|
||||
</button>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user