Skip to content

Commit

Permalink
[IMP] stock_barcodes_gs1_secondary_unit: Use product secondary mixin
Browse files Browse the repository at this point in the history
  • Loading branch information
sergio-teruel committed Nov 24, 2023
1 parent c7ee59b commit d23c660
Show file tree
Hide file tree
Showing 6 changed files with 72 additions and 26 deletions.
1 change: 1 addition & 0 deletions stock_barcodes_gs1_secondary_unit/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import product_second_unit
from . import stock_barcodes_read_log
from . import stock_move_line
12 changes: 12 additions & 0 deletions stock_barcodes_gs1_secondary_unit/models/stock_move_line.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Copyright 2019 Sergio Teruel <sergio.teruel@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import models


class StockMoveLine(models.Model):
_inherit = "stock.move.line"

def _barcodes_process_line_to_unlink(self):
res = super()._barcodes_process_line_to_unlink()
self.secondary_uom_qty = 0.0
return res
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@ class WizStockBarcodesRead(models.AbstractModel):
secondary_single_qty = fields.Float(
string="Secondary single Qty", digits="Product Unit of Measure"
)
total_secondary_uom_qty = fields.Float(
string="Second. Demand", digits="Product Unit of Measure", store=False
)
total_secondary_uom_qty_done = fields.Float(
string="Second. Done", digits="Product Unit of Measure", store=False
)

@api.onchange("secondary_uom_id", "secondary_uom_qty", "secondary_single_qty")
def onchange_secondary_uom_qty(self):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,30 @@
# Copyright 2019 Sergio Teruel <sergio.teruel@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import models
from odoo import api, fields, models


class WizStockBarcodesReadPicking(models.TransientModel):
_inherit = "wiz.stock.barcodes.read.picking"

# Extended from stock_barcodes_read base model
total_secondary_uom_qty = fields.Float(compute="_compute_total_secondary_uom")
total_secondary_uom_qty_done = fields.Float(compute="_compute_total_secondary_uom")

@api.depends("picking_id.move_line_ids.secondary_uom_qty")
def _compute_total_secondary_uom(self):
self.total_secondary_uom_qty = 0.0
self.total_secondary_uom_qty_done = 0.0
for rec in self:
product_moves = rec.picking_id.move_lines.filtered(
lambda ln: ln.product_id.ids == self.product_id.ids
and ln.state != "cancel"
)
for sm in product_moves:
rec.total_secondary_uom_qty += sm.secondary_uom_qty
rec.total_secondary_uom_qty_done += sum(
sm.move_line_ids.mapped("secondary_uom_qty")
)

def _prepare_move_line_values(self, candidate_move, available_qty):
vals = super()._prepare_move_line_values(candidate_move, available_qty)
vals.update(
Expand All @@ -25,3 +44,10 @@ def _get_candidate_line_domain(self):
]
)
return domain

def _update_stock_move_line(self, line, sml_vals):
if self.secondary_uom_id:
sml_vals["secondary_uom_qty"] = (
line.secondary_uom_qty + self.secondary_uom_qty
)
return super()._update_stock_move_line(line, sml_vals)
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,23 @@
</div>
</div>
</div>
<xpath expr="//div[@name='total_qty_header']/div" position="before">
<div>
<span>
<field name="total_secondary_uom_qty_done" /> / <field
name="total_secondary_uom_qty"
/> <field
name="secondary_uom_id"
domain="['|', ('product_id', '=', product_id),
'&amp;', ('product_tmpl_id.product_variant_ids', 'in', [product_id]),
('product_id', '=', False)]"
force_save="1"
readonly="1"
options="{'no_open': True, 'no_create': True}"
/>
</span>
</div>
</xpath>
<div name="total_qty_field" position="before">
<div class="col text-center pr-0">
<field
Expand Down
Original file line number Diff line number Diff line change
@@ -1,42 +1,26 @@
# Copyright 2023 Tecnativa - Carlos Dauden
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import api, fields, models
from odoo import api, models


class WizStockBarcodesReadTodo(models.TransientModel):
_inherit = "wiz.stock.barcodes.read.todo"

secondary_uom_qty = fields.Float(
string="Secondary Qty",
digits="Product Unit of Measure",
readonly=True,
)
secondary_uom_id = fields.Many2one(
comodel_name="product.secondary.unit",
string="Second unit",
readonly=True,
)
_inherit = ["wiz.stock.barcodes.read.todo", "product.secondary.unit.mixin"]
_name = "wiz.stock.barcodes.read.todo"
_secondary_unit_fields = {
"qty_field": "product_uom_qty",
"uom_field": "uom_id",
}

def _prepare_fill_record_values(self, wiz_barcode, line, position):
vals = super()._prepare_fill_record_values(wiz_barcode, line, position)
vals.update(
{
"secondary_uom_qty": line.secondary_uom_qty,
"secondary_uom_id": line.secondary_uom_id.id,
}
)
return vals

def _update_fill_record_values(self, wiz_barcode, line, vals):
vals = super()._update_fill_record_values(wiz_barcode, line, vals)
vals["secondary_uom_qty"] += line.secondary_uom_qty
vals.update({"secondary_uom_id": line.secondary_uom_id.id})
return vals

@api.model
def fields_to_fill_from_pending_line(self):
res = super().fields_to_fill_from_pending_line()
res.extend(["secondary_uom_qty", "secondary_uom_id"])
res.append("secondary_uom_id")
return res

def _group_key(self, wiz, line):
Expand Down

0 comments on commit d23c660

Please sign in to comment.