Skip to content

Commit

Permalink
stock_reception_usability: support internal and outgoing type
Browse files Browse the repository at this point in the history
  • Loading branch information
sebastienbeau committed Feb 7, 2024
1 parent f2172a5 commit 6181843
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 17 deletions.
3 changes: 2 additions & 1 deletion stock_reception_usability/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
from . import stock_move

from . import stock_picking
from . import stock_picking_type
38 changes: 23 additions & 15 deletions stock_reception_usability/models/stock_move.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,35 +2,43 @@
# @author Kévin Roche <[email protected]>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from collections import defaultdict
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"
string="Dest. Locations", compute="_compute_locations_list"
)

location_src_list = fields.Text(
string="Src. Locations", compute="_compute_locations_list"
)

@api.depends(
"move_line_ids", "move_line_ids.location_dest_id", "move_line_ids.qty_done"
"move_line_ids.location_dest_id",
"move_line_ids.location_id",
"move_line_ids.qty_done",
)
def _compute_locations_dest_list(self):
def _compute_locations_list(self):
def format_loc(data):
return "\n ".join([
f"{int(qty) if qty.is_integer() else qty}: {location.name}"
for location, qty in data.items()
])
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)
dest = defaultdict(int)
src = defaultdict(int)
for line in move.move_line_ids:
dest[line.location_dest_id] += line.qty_done
src[line.location_id] += line.qty_done
move.location_src_list = format_loc(src)
move.location_dest_list = format_loc(dest)

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:
if len(move.move_line_ids) <= 1:
move.is_quantity_done_editable = True
26 changes: 26 additions & 0 deletions stock_reception_usability/models/stock_picking.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Copyright 2024 Akretion (https://www.akretion.com).
# @author Sébastien BEAU <[email protected]>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).


from odoo import _, api, fields, models



class StockPicking(models.Model):
_inherit = 'stock.picking'

show_src_location = fields.Boolean(compute="_compute_show_location")
show_dest_location = fields.Boolean(compute="_compute_show_location")

@api.depends("picking_type_id.code", "location_id", "location_dest_id")
def _compute_show_location(self):
for picking in self:
picking.show_src_location = (
picking.picking_type_id.code != "incoming"
and picking.location_id.child_ids
)
picking.show_dest_location = (
picking.picking_type_id.code != "outgoing"
and picking.location_dest_id.child_ids
)
17 changes: 17 additions & 0 deletions stock_reception_usability/models/stock_picking_type.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Copyright 2024 Akretion (https://www.akretion.com).
# @author Sébastien BEAU <[email protected]>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).


from odoo import _, api, fields, models


class StockPickingType(models.Model):
_inherit = 'stock.picking.type'

def _default_show_operations(self):
# super is not called as we want to always force the value to False
# super()._default_show_operations()
return False

show_operations = fields.Boolean(default=lambda s: s._default_show_operations())
7 changes: 6 additions & 1 deletion stock_reception_usability/views/stock_picking.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,13 @@
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_form" />
<field name="arch" type="xml">
<field name="picking_type_code" position="after">
<field name="show_src_location" invisible="1"/>
<field name="show_dest_location" invisible="1"/>
</field>
<xpath expr="//field[@name='product_uom']" position="after">
<field name="location_dest_list" />
<field name="location_src_list" attrs="{'column_invisible': [('parent.show_src_location', '=', False)]}"/>
<field name="location_dest_list" attrs="{'column_invisible': [('parent.show_dest_location', '=', False)]}"/>
</xpath>
<xpath expr="//field[@name='product_uom_qty']" position="attributes">
<attribute
Expand Down

0 comments on commit 6181843

Please sign in to comment.