summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/stock_backorder_confirmation.py
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2025-02-24 09:57:56 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2025-02-24 09:57:56 +0700
commitc1810b315d820a184db47d551b39700ce00d1440 (patch)
tree7f7e93fcacdda6d4b607a4efa795cca0cc21d905 /indoteknik_custom/models/stock_backorder_confirmation.py
parent99b252edaefc372fcd4ef59e065284d8feeb669c (diff)
push wms
Diffstat (limited to 'indoteknik_custom/models/stock_backorder_confirmation.py')
-rw-r--r--indoteknik_custom/models/stock_backorder_confirmation.py63
1 files changed, 23 insertions, 40 deletions
diff --git a/indoteknik_custom/models/stock_backorder_confirmation.py b/indoteknik_custom/models/stock_backorder_confirmation.py
index 0fd7c34e..f4da4cb5 100644
--- a/indoteknik_custom/models/stock_backorder_confirmation.py
+++ b/indoteknik_custom/models/stock_backorder_confirmation.py
@@ -5,46 +5,29 @@ class StockBackorderConfirmation(models.TransientModel):
_inherit = 'stock.backorder.confirmation'
def process(self):
- res = super(StockBackorderConfirmation, self).process()
-
pickings_to_do = self.env['stock.picking']
+ pickings_not_to_do = self.env['stock.picking']
for line in self.backorder_confirmation_line_ids:
- if line.to_backorder:
+ line.picking_id.send_mail_bills()
+ line.picking_id.send_koli_to_so()
+ if line.to_backorder is True:
pickings_to_do |= line.picking_id
-
- for pick in pickings_to_do:
- # Mencari backorder yang baru terbentuk
- backorder = self.env['stock.picking'].search([('backorder_id', '=', pick.id)], limit=1)
-
- if backorder:
- # Cari BU/OUT terbaru berdasarkan sale_id
- latest_out_picking = self.env['stock.picking'].search([
- ('sale_id', '=', pick.sale_id.id),
- ('picking_type_id.code', '=', 'outgoing')
- ], order='id desc', limit=1)
-
- # Update linked_out_picking_id pada backorder BU/PICK
- if latest_out_picking:
- backorder.linked_out_picking_id = latest_out_picking.id
- else:
- backorder.linked_out_picking_id = pick.linked_out_picking_id
-
- # 🚀 Cek apakah ada backorder baru dari BU/OUT
- for pick in self.env['stock.picking'].search([
- ('picking_type_id.code', '=', 'outgoing'),
- ('backorder_id', '!=', False)
- ]):
- # Backorder BU/OUT terbaru
- latest_out_backorder = self.env['stock.picking'].search([
- ('backorder_id', '=', pick.id)
- ], order='id desc', limit=1)
-
- if latest_out_backorder:
- # 🚀 Update semua BU/PICK yang belum `done` atau `cancel`
- self.env['stock.picking'].search([
- ('sale_id', '=', pick.sale_id.id),
- ('picking_type_id.code', '=', 'incoming'),
- ('state', 'not in', ['done', 'cancel'])
- ]).write({'linked_out_picking_id': latest_out_backorder.id})
-
- return res
+ else:
+ pickings_not_to_do |= line.picking_id
+
+ for pick_id in pickings_not_to_do:
+ moves_to_log = {}
+ for move in pick_id.move_lines:
+ if float_compare(move.product_uom_qty,
+ move.quantity_done,
+ precision_rounding=move.product_uom.rounding) > 0:
+ moves_to_log[move] = (move.quantity_done, move.product_uom_qty)
+ pick_id._log_less_quantities_than_expected(moves_to_log)
+
+ pickings_to_validate = self.env.context.get('button_validate_picking_ids')
+ if pickings_to_validate:
+ pickings_to_validate = self.env['stock.picking'].browse(pickings_to_validate).with_context(skip_backorder=True)
+ if pickings_not_to_do:
+ pickings_to_validate = pickings_to_validate.with_context(picking_ids_not_to_backorder=pickings_not_to_do.ids)
+ return pickings_to_validate.button_validate()
+ return True