summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2025-03-06 15:11:57 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2025-03-06 15:11:57 +0700
commitad19154ae49ec5bc1178006344baf104154167bf (patch)
tree4395cdeb359f20c8bef8e19737c72ebecdcf1601
parent006c1171970a3ade5033d8bb112b7f6094b35d11 (diff)
push
-rw-r--r--indoteknik_custom/models/stock_picking.py18
-rw-r--r--indoteknik_custom/models/stock_picking_return.py13
2 files changed, 30 insertions, 1 deletions
diff --git a/indoteknik_custom/models/stock_picking.py b/indoteknik_custom/models/stock_picking.py
index 0699295f..327389cd 100644
--- a/indoteknik_custom/models/stock_picking.py
+++ b/indoteknik_custom/models/stock_picking.py
@@ -852,6 +852,12 @@ class StockPicking(models.Model):
if len(self.scan_koli_lines) == 0 and 'BU/OUT/' in self.name and self.picking_type_code == 'outgoing':
raise UserError(_("Tidak ada scan koli! Harap periksa kembali."))
+ if self.driver_departure_date == False and 'BU/OUT/' in self.name and self.picking_type_code == 'outgoing':
+ raise UserError(_("Isi Driver Departure Date dulu sebelum validate"))
+
+ if len(self.check_koli_lines) == 0 and 'BU/PICK/' in self.name:
+ raise UserError(_("Tidak ada koli! Harap periksa kembali."))
+
if self.total_koli > self.total_so_koli:
raise UserError(_("Total Koli (%s) dan Total SO Koli (%s) tidak sama! Harap periksa kembali.")
% (self.total_koli, self.total_so_koli))
@@ -1405,6 +1411,18 @@ class ScanKoli(models.Model):
compute="_compute_scan_koli_progress"
)
+ @api.constrains('picking_id', 'koli_id')
+ def _check_duplicate_koli(self):
+ for record in self:
+ if record.koli_id:
+ existing_koli = self.search([
+ ('picking_id', '=', record.picking_id.id),
+ ('koli_id', '=', record.koli_id.id),
+ ('id', '!=', record.id) # Exclude current record
+ ])
+ if existing_koli:
+ raise ValidationError(f"⚠️ Koli '{record.koli_id.display_name}' sudah discan untuk picking ini!")
+
def unlink(self):
picking_ids = set(self.mapped('koli_id.picking_id.id')) # Ambil semua picking_id yang terpengaruh
for scan in self:
diff --git a/indoteknik_custom/models/stock_picking_return.py b/indoteknik_custom/models/stock_picking_return.py
index d4347235..a683d80e 100644
--- a/indoteknik_custom/models/stock_picking_return.py
+++ b/indoteknik_custom/models/stock_picking_return.py
@@ -24,4 +24,15 @@ class ReturnPicking(models.TransientModel):
# if not stock_picking.approval_return_status == 'approved' and purchase.invoice_ids:
# raise UserError('Harus Approval Accounting AP untuk melakukan Retur')
- return res \ No newline at end of file
+ return res
+
+class ReturnPickingLine(models.TransientModel):
+ _inherit = 'stock.return.picking.line'
+
+ @api.onchange('quantity')
+ def _onchange_quantity(self):
+ for rec in self:
+ qty_done = rec.move_id.quantity_done
+
+ if rec.quantity > qty_done:
+ raise UserError(f"Quantity yang Anda masukkan tidak boleh melebihi quantity done yaitu: {qty_done}") \ No newline at end of file