mirror of
https://github.com/OCA/stock-logistics-warehouse.git
synced 2025-01-21 14:27:28 +02:00
48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
# Copyright 2024 ForgeFlow S.L.
|
|
# (http://www.forgeflow.com)
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html)
|
|
from odoo import models
|
|
|
|
|
|
class StockQuant(models.Model):
|
|
_inherit = "stock.quant"
|
|
|
|
def _apply_inventory(self):
|
|
accuracy_dict = {}
|
|
theoretical_dict = {}
|
|
counted_dict = {}
|
|
for rec in self:
|
|
if rec.discrepancy_percent > 100:
|
|
line_accuracy = 0
|
|
else:
|
|
line_accuracy = 1 - (rec.discrepancy_percent / 100)
|
|
accuracy_dict[rec.id] = line_accuracy
|
|
theoretical_dict[rec.id] = rec.quantity
|
|
counted_dict[rec.id] = rec.inventory_quantity
|
|
res = super()._apply_inventory()
|
|
for rec in self:
|
|
record_moves = self.env["stock.move.line"]
|
|
moves = record_moves.search(
|
|
[
|
|
("product_id", "=", rec.product_id.id),
|
|
("lot_id", "=", rec.lot_id.id),
|
|
"|",
|
|
("location_id", "=", rec.location_id.id),
|
|
("location_dest_id", "=", rec.location_id.id),
|
|
],
|
|
order="create_date asc",
|
|
).filtered(
|
|
lambda x: not x.company_id.id
|
|
or not rec.company_id.id
|
|
or rec.company_id.id == x.company_id.id
|
|
)
|
|
move = moves[len(moves) - 1]
|
|
move.write(
|
|
{
|
|
"line_accuracy": accuracy_dict[rec.id],
|
|
"theoretical_qty": theoretical_dict[rec.id],
|
|
"counted_qty": counted_dict[rec.id],
|
|
}
|
|
)
|
|
return res
|