summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiqdad <ahmadmiqdad27@gmail.com>2025-11-08 19:27:23 +0700
committerMiqdad <ahmadmiqdad27@gmail.com>2025-11-08 19:27:23 +0700
commit7efc5a1a9b0f8a8479a9fed03577a76bdba8af22 (patch)
tree9683b081270fd22865d87ff050f31eda4e62159d
parent2cc12f95a1fbc0de8018446cd5e23a35ac892494 (diff)
<Miqdad> sync real deliv and deliv addr to stock picking (pick & out)
-rwxr-xr-xindoteknik_custom/models/sale_order.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index ef6318da..bc33e8e6 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -400,6 +400,44 @@ class SaleOrder(models.Model):
internal_notes_contact = fields.Text(related='partner_id.comment', string="Internal Notes", readonly=True, help="Internal Notes dari contact utama customer.")
is_so_fiktif = fields.Boolean('SO Fiktif?')
+ def action_set_shipping_id(self):
+ for rec in self:
+ bu_pick = self.env['stock.picking'].search([
+ ('state', 'not in', ['cancel']),
+ ('picking_type_id', '=', 30),
+ ('sale_id', '=', rec.id),
+ ('linked_manual_bu_out', '=', False)
+ ])
+ # bu_out = bu_pick_has_out.mapped('linked_manual_bu_out')
+ bu_out = self.env['stock.picking'].search([
+ ('sale_id', '=', rec.id),
+ ('picking_type_id', '=', 29),
+ ('state', 'not in', ['cancel', 'done'])
+ ])
+ bu_pick_has_out = self.env['stock.picking'].search([
+ ('state', 'not in', ['cancel']),
+ ('picking_type_id', '=', 30),
+ ('sale_id', '=', rec.id),
+ ('linked_manual_bu_out.id', '=', bu_out.id),
+ ('linked_manual_bu_out.state', 'not in', ['done', 'cancel'])
+ ])
+ for pick in bu_pick_has_out:
+ linked_out = pick.linked_manual_bu_out
+ if pick.real_shipping_id != rec.real_shipping_id or linked_out.partner_id != rec.partner_shipping_id:
+ pick.real_shipping_id = rec.real_shipping_id
+ pick.partner_id = rec.partner_shipping_id
+ linked_out.partner_id = rec.partner_shipping_id
+ linked_out.real_shipping_id = rec.real_shipping_id
+ _logger.info('Updated bu_pick [%s] and bu_out [%s]', pick.name, linked_out.name)
+
+ for pick in bu_pick:
+ if pick.real_shipping_id != rec.real_shipping_id:
+ pick.real_shipping_id = rec.real_shipping_id
+ pick.partner_id = rec.partner_shipping_id
+ bu_out.partner_id = rec.partner_shipping_id
+ bu_out.real_shipping_id = rec.real_shipping_id
+ _logger.info('Updated bu_pick [%s] without bu_out', pick.name)
+
def action_open_partial_delivery_wizard(self):
# raise UserError("Fitur ini sedang dalam pengembangan")
self.ensure_one()
@@ -3377,6 +3415,9 @@ class SaleOrder(models.Model):
# if updated_vals:
# line.write(updated_vals)
+
+ if 'real_shipping_id' in vals:
+ self.action_set_shipping_id()
return res
def button_refund(self):