summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indoteknik_custom/models/account_payment.py2
-rw-r--r--indoteknik_custom/models/partial_delivery.py10
-rwxr-xr-xindoteknik_custom/models/sale_order.py30
3 files changed, 26 insertions, 16 deletions
diff --git a/indoteknik_custom/models/account_payment.py b/indoteknik_custom/models/account_payment.py
index 11c664eb..d2d3d175 100644
--- a/indoteknik_custom/models/account_payment.py
+++ b/indoteknik_custom/models/account_payment.py
@@ -42,7 +42,7 @@ class AccountPayment(models.Model):
def allocate_invoices(self):
for payment in self:
- if self.
+ # if self.
for line in payment.payment_line:
invoice = line.account_move_id
move_lines = payment.line_ids.filtered(lambda line: line.account_internal_type in ('receivable', 'payable'))
diff --git a/indoteknik_custom/models/partial_delivery.py b/indoteknik_custom/models/partial_delivery.py
index 4df7da1e..744db325 100644
--- a/indoteknik_custom/models/partial_delivery.py
+++ b/indoteknik_custom/models/partial_delivery.py
@@ -172,9 +172,11 @@ class PartialDeliveryWizard(models.TransientModel):
for line in selected_lines:
if line.selected_qty > line.reserved_qty:
raise UserError(_("Jumlah produk %s yang dipilih melebihi jumlah reserved.") % line.product_id.display_name)
+
move = line.move_id
move._do_unreserve()
+ # 🔹 Kalau cuma selected tanpa qty → anggap kirim semua reserved qty
if line.selected and not line.selected_qty:
line.selected_qty = line.reserved_qty
@@ -186,12 +188,20 @@ class PartialDeliveryWizard(models.TransientModel):
if line.selected_qty < move.product_uom_qty:
qty_to_keep = move.product_uom_qty - line.selected_qty
+
new_move = move.copy(default={
'product_uom_qty': line.selected_qty,
'picking_id': new_picking.id,
'partial': True,
})
+
+ if move.move_dest_ids:
+ for dest_move in move.move_dest_ids:
+ # dest_move.write({'move_orig_ids': [(4, new_move.id)]})
+ new_move.write({'move_dest_ids': [(4, dest_move.id)]})
+
move.write({'product_uom_qty': qty_to_keep})
+
else:
move.write({'picking_id': new_picking.id, 'partial': True})
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index 5c8f34c6..e254ef41 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -399,21 +399,21 @@ class SaleOrder(models.Model):
)
def action_open_partial_delivery_wizard(self):
- raise UserError("Fitur ini sedang dalam pengembangan")
- # self.ensure_one()
- # pickings = self.picking_ids.filtered(lambda p: p.state not in ['done', 'cancel'] and p.name and 'BU/PICK/' in p.name)
- # return {
- # 'type': 'ir.actions.act_window',
- # 'name': 'Partial Delivery',
- # 'res_model': 'partial.delivery.wizard',
- # 'view_mode': 'form',
- # 'target': 'new',
- # 'context': {
- # 'default_sale_id': self.id,
- # # kasih langsung list of int biar ga ribet di wizard
- # 'default_picking_ids': pickings.ids,
- # }
- # }
+ # raise UserError("Fitur ini sedang dalam pengembangan")
+ self.ensure_one()
+ pickings = self.picking_ids.filtered(lambda p: p.state not in ['done', 'cancel'] and p.name and 'BU/PICK/' in p.name)
+ return {
+ 'type': 'ir.actions.act_window',
+ 'name': 'Partial Delivery',
+ 'res_model': 'partial.delivery.wizard',
+ 'view_mode': 'form',
+ 'target': 'new',
+ 'context': {
+ 'default_sale_id': self.id,
+ # kasih langsung list of int biar ga ribet di wizard
+ 'default_picking_ids': pickings.ids,
+ }
+ }
@api.depends('partner_id.is_cbd_locked')