Fix product_lot_sequence_per_product: Add missing action, cleanup .pyc files

This commit is contained in:
Suherdy Yacob 2026-01-21 09:08:34 +07:00
parent 38b3844e61
commit 0c8a19f7f4
17 changed files with 38 additions and 1 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
__pycache__/
*.pyc

Binary file not shown.

Binary file not shown.

View File

@ -2,4 +2,5 @@ from . import product_template
from . import stock_move
from . import stock_lot
from . import stock_move_line
from . import mrp_production
from . import mrp_production
from . import stock_picking

34
models/stock_picking.py Normal file
View File

@ -0,0 +1,34 @@
from odoo import models
class StockPicking(models.Model):
_inherit = 'stock.picking'
def action_auto_generate_lots_subcontract(self):
"""
Auto-generate lot names for move lines in this picking that:
1. Have a product with tracking enabled (serial or lot).
2. Have an empty 'lot_name' and no 'lot_id'.
3. Have a product template with a configured 'lot_sequence_id'.
"""
for picking in self:
# We iterate over move_line_ids (operations)
# Filter for lines that need a lot generated
lines_to_process = picking.move_line_ids.filtered(
lambda ml: (
ml.product_id
and ml.product_id.tracking in ('serial', 'lot')
and not ml.lot_name
and not ml.lot_id
and getattr(ml.product_id.product_tmpl_id, 'lot_sequence_id', False)
)
)
for line in lines_to_process:
# Get the sequence from the product template
seq = line.product_id.product_tmpl_id.lot_sequence_id
if seq:
# strict=True ensures we skip if next_by_id fails, though usually it returns None/False
new_lot_name = seq.next_by_id()
if new_lot_name:
line.lot_name = new_lot_name
return True