summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/stock_picking.py
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2025-04-23 14:29:06 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2025-04-23 14:29:06 +0700
commit1981b2d576d916374c181c8089655ab59a3f7f20 (patch)
treef95f60f600c76a3cba03cfbc8156075cb3e8266f /indoteknik_custom/models/stock_picking.py
parent962f12358b0b1689d02a2716b792dae526920edf (diff)
barcode box
Diffstat (limited to 'indoteknik_custom/models/stock_picking.py')
-rw-r--r--indoteknik_custom/models/stock_picking.py49
1 files changed, 36 insertions, 13 deletions
diff --git a/indoteknik_custom/models/stock_picking.py b/indoteknik_custom/models/stock_picking.py
index cd038f44..6168d3b2 100644
--- a/indoteknik_custom/models/stock_picking.py
+++ b/indoteknik_custom/models/stock_picking.py
@@ -1621,21 +1621,44 @@ class CheckProduct(models.Model):
copy=False,
)
product_id = fields.Many2one('product.product', string='Product')
- quantity = fields.Float(string='Quantity', default=1.0)
+ quantity = fields.Float(string='Quantity')
status = fields.Char(string='Status', compute='_compute_status')
code_product = fields.Char(string='Code Product')
@api.onchange('code_product')
def _onchange_code_product(self):
- if self.code_product:
- product = self.env['product.product'].search([('default_code', '=', self.code_product)], limit=1)
- if not product:
- product = self.env['product.product'].search([('barcode', '=', self.code_product)], limit=1)
-
- if product:
- self.product_id = product.id
- else:
- raise UserError("Product tidak ditemukan")
+ if not self.code_product:
+ return
+
+ # Cari product berdasarkan default_code, barcode, atau barcode_box
+ product = self.env['product.product'].search([
+ '|',
+ ('default_code', '=', self.code_product),
+ '|',
+ ('barcode', '=', self.code_product),
+ ('barcode_box', '=', self.code_product)
+ ], limit=1)
+
+ if not product:
+ raise UserError("Product tidak ditemukan")
+
+ # Jika scan barcode_box, set quantity sesuai qty_pcs_box
+ if product.barcode_box == self.code_product:
+ self.product_id = product.id
+ self.quantity = product.qty_pcs_box
+ self.code_product = product.default_code or product.barcode
+ # return {
+ # 'warning': {
+ # 'title': 'Info',8994175025871
+
+ # 'message': f'Product box terdeteksi. Quantity di-set ke {product.qty_pcs_box}'
+ # }
+ # }
+ else:
+ # Jika scan biasa
+ self.product_id = product.id
+ self.code_product = product.default_code or product.barcode
+ self.quantity = 1
def unlink(self):
# Get all affected pickings before deletion
@@ -1763,7 +1786,7 @@ class CheckProduct(models.Model):
# Find existing lines for the same product, excluding the current line
existing_lines = record.picking_id.check_product_lines.filtered(
- lambda line: line.product_id == record.product_id and line.id != record.id
+ lambda line: line.product_id == record.product_id
)
if existing_lines:
@@ -1771,9 +1794,9 @@ class CheckProduct(models.Model):
first_line = existing_lines[0]
# Calculate the total quantity after addition
- total_quantity = sum(existing_lines.mapped('quantity')) - record.quantity
+ total_quantity = sum(existing_lines.mapped('quantity'))
- if total_quantity == total_qty_in_moves:
+ if total_quantity > total_qty_in_moves:
raise UserError((
"Quantity Product '%s' sudah melebihi quantity demand."
) % (record.product_id.display_name))