diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2024-09-24 15:47:47 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2024-09-24 15:47:47 +0700 |
| commit | be5ae68ee9c9d55611cfbb8243feeee886bc95fd (patch) | |
| tree | f91dd72ece0c67b1d799afd472f84b3dce187200 | |
| parent | cc4be72fc2f0d98f8bc2190ea5c404536bb3c56d (diff) | |
push
| -rw-r--r-- | indoteknik_custom/models/approval_unreserve.py | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/indoteknik_custom/models/approval_unreserve.py b/indoteknik_custom/models/approval_unreserve.py index 00fd1555..e617e11a 100644 --- a/indoteknik_custom/models/approval_unreserve.py +++ b/indoteknik_custom/models/approval_unreserve.py @@ -50,8 +50,28 @@ class ApprovalUnreserve(models.Model): return super(ApprovalUnreserve, self).create(vals) def action_submit_for_approval(self): + self._check_product_and_qty() self.write({'state': 'waiting_approval'}) + + def _check_product_and_qty(self): + stock_move = self.env['stock.move'] + for line in self.approval_line: + if line.dest_picking_id: + move = stock_move.search([ + ('picking_id', '=', line.dest_picking_id.id), + ('product_id', '=', line.product_id.id), + ('state', 'not in', ['done', 'cancel']) + ]) + + if not move: + raise UserError("Product tidak ada di destination picking") + + qty_unreserve = line.unreserve_qty + move.forecast_availability + + if move.product_uom_qty < qty_unreserve: + raise UserError("Quantity yang di unreserve melebihi quantity yang ada") + def action_approve(self): if self.env.user.id != self.user_id.id: raise UserError("Hanya Sales nya yang bisa approve.") @@ -59,7 +79,6 @@ class ApprovalUnreserve(models.Model): if self.state != 'waiting_approval': raise UserError("Approval can only be done in 'Waiting for Approval' state") - self.write({ 'state': 'approved', 'approved_by': self.env.user.id @@ -86,7 +105,8 @@ class ApprovalUnreserve(models.Model): move = stock_move_obj.browse(line.move_id.id) move._do_unreserve(product=line.product_id, quantity=line.unreserve_qty) - line.dest_picking_id.action_assign() + if line.dest_picking_id: + line.dest_picking_id.action_assign() # Step 2: Update existing stock move in dest_picking_id # if line.dest_picking_id: |
