diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2025-10-14 14:11:18 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2025-10-14 14:11:18 +0700 |
| commit | 724d7ed6d85ecc3acadbcf56a98aead0512af01d (patch) | |
| tree | a0587a1d528a1654a1114e298f27a576df275340 | |
| parent | 67691bbda67b4362728a8bd99a7be1478a15e5b1 (diff) | |
push
| -rw-r--r-- | indoteknik_custom/models/partial_delivery.py | 21 |
1 files changed, 2 insertions, 19 deletions
diff --git a/indoteknik_custom/models/partial_delivery.py b/indoteknik_custom/models/partial_delivery.py index 83fe9981..977cceed 100644 --- a/indoteknik_custom/models/partial_delivery.py +++ b/indoteknik_custom/models/partial_delivery.py @@ -46,7 +46,6 @@ class PartialDeliveryWizard(models.TransientModel): raise UserError(_("Tidak ada produk yang dipilih.")) for line in self.line_ids: line.selected = True - # return action supaya wizard gak nutup return { 'type': 'ir.actions.act_window', 'res_model': self._name, @@ -60,7 +59,6 @@ class PartialDeliveryWizard(models.TransientModel): raise UserError(_("Tidak ada produk yang dipilih.")) for line in self.line_ids: line.selected = False - # juga reload biar tetap di wizard return { 'type': 'ir.actions.act_window', 'res_model': self._name, @@ -76,7 +74,6 @@ class PartialDeliveryWizard(models.TransientModel): self.line_ids = [(5, 0, 0)] return - # ๐งน hapus line lama dulu if self.line_ids: self.line_ids.unlink() @@ -95,7 +92,7 @@ class PartialDeliveryWizard(models.TransientModel): 'wizard_id': self.id, 'product_id': move.product_id.id, 'reserved_qty': reserved_qty, - 'selected_qty': reserved_qty, # biar langsung keisi default + # 'selected_qty': reserved_qty, 'move_id': move.id, 'sale_line_id': move.sale_line_id.id if move.sale_line_id else False, }) @@ -119,12 +116,11 @@ class PartialDeliveryWizard(models.TransientModel): lines_by_qty = self.line_ids.filtered(lambda l: l.selected_qty > 0) lines_by_selected = self.line_ids.filtered(lambda l: l.selected and not l.selected_qty) - selected_lines = lines_by_qty | lines_by_selected # gabung dua domain hasil filter + selected_lines = lines_by_qty | lines_by_selected if not selected_lines: raise UserError(_("Tidak ada produk yang dipilih atau diisi jumlahnya.")) - # ๐ง Tambahan: kalau semua line dipilih (full delivery) all_selected = len(selected_lines) == len(self.line_ids) full_selected = all_selected and all( (line.selected_qty or line.reserved_qty) >= line.reserved_qty @@ -132,10 +128,8 @@ class PartialDeliveryWizard(models.TransientModel): ) if full_selected: - # ๐ก Gak perlu bikin picking baru, langsung ubah state_reserve picking.write({'state_reserve': 'partial'}) - # Tambahin log aja biar ada jejak picking.message_post( body=f"<b>Full Picking Confirmed</b> dari wizard partial delivery oleh {self.env.user.name}", message_type="comment", @@ -171,11 +165,9 @@ class PartialDeliveryWizard(models.TransientModel): move = line.move_id move._do_unreserve() - # kalau cuma selected tanpa isi qty, otomatis set selected_qty = reserved_qty if line.selected and not line.selected_qty: line.selected_qty = line.reserved_qty - # MODE 1 โ Prioritas kalau ada selected_qty if line.selected_qty > 0: if line.selected_qty > move.product_uom_qty: raise UserError(_( @@ -184,7 +176,6 @@ class PartialDeliveryWizard(models.TransientModel): if line.selected_qty < move.product_uom_qty: qty_to_keep = move.product_uom_qty - line.selected_qty - # split move new_move = move.copy(default={ 'product_uom_qty': line.selected_qty, 'picking_id': new_picking.id, @@ -192,19 +183,13 @@ class PartialDeliveryWizard(models.TransientModel): }) move.write({'product_uom_qty': qty_to_keep}) else: - # full pindah move.write({'picking_id': new_picking.id, 'partial': True}) - - - # Confirm & assign DO baru new_picking.action_confirm() new_picking.action_assign() - # Reassign DO lama biar sisa qty ke-update picking.action_assign() - # --- ๐ข Rename picking baru dengan format "/(Nomor urut)" --- existing_partials = self.env['stock.picking'].search([ ('origin', '=', picking.origin), ('state_reserve', '=', 'partial'), @@ -220,7 +205,6 @@ class PartialDeliveryWizard(models.TransientModel): new_name = f"{picking.name}/{suffix_number}" new_picking.name = new_name - # --- ๐ฌ Post message ke SO --- if picking.origin: sale_order = self.env['sale.order'].search([('name', '=', picking.origin)], limit=1) if sale_order: @@ -231,7 +215,6 @@ class PartialDeliveryWizard(models.TransientModel): subtype_xmlid="mail.mt_note", ) - # --- ๐ Log di DO baru --- new_picking.message_post( body=f"<b>Partial Picking created</b> dari {picking.name} oleh {self.env.user.name}", message_type="comment", |
