summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/sale_order.py
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2025-01-31 16:45:07 +0700
committerit-fixcomart <it@fixcomart.co.id>2025-01-31 16:45:07 +0700
commit74796f3390ad90e2ae981351cd0491aca6dccc9c (patch)
treeafb3765a8878067e9f587664034b2a24de525588 /indoteknik_custom/models/sale_order.py
parent346b6dc89cbde3640413714175cdc438544a664c (diff)
<iman> add ready to ship date
Diffstat (limited to 'indoteknik_custom/models/sale_order.py')
-rwxr-xr-xindoteknik_custom/models/sale_order.py57
1 files changed, 55 insertions, 2 deletions
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index 48195b77..32e6f11f 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -144,6 +144,16 @@ class SaleOrder(models.Model):
('PNR', 'Pareto Non Repeating'),
('NP', 'Non Pareto')
])
+ estimated_ready_ship_date = fields.Datetime(
+ string='ET Ready to Ship',
+ copy=False,
+ store=True
+ )
+ expected_ready_ship_date = fields.Datetime(
+ string='ET Ready to Ship FIX',
+ copy=False,
+ store=True
+ )
@api.onchange('payment_status')
def _is_continue_transaction(self):
@@ -377,6 +387,45 @@ class SaleOrder(models.Model):
else:
rec.eta_date = False
+ def _compute_etrts_date(self):
+ max_slatime = 100
+
+ # untuk setiap produk dalam so di ambil sla nya sla paling kecil itulah yang dipakai untuk tambah ke
+ max_leadtime = 0
+
+ for line in self.order_line:
+ product_sla = self.env['product.sla'].search([('product_variant_id', '=', line.product_id.id)])
+ slatime = int(product_sla.sla) or 1
+ max_slatime = max(max_slatime, slatime)
+
+ for rec in self:
+ if rec.date_order:
+ eta_date = datetime.now() + timedelta(days=max_slatime)
+ rec.estimated_ready_ship_date = eta_date
+ if not rec.expected_ready_ship_date:
+ rec.expected_ready_ship_date = eta_date
+ # else:
+ # rec.estimated_ready_ship_date = False
+
+ def _set_etrts_date(self):
+ for order in self:
+ if order.state in ('done', 'cancel', 'sale'):
+ raise UserError(_("You cannot change the Estimated Ready To Ship Date on a done, sale or cancelled order."))
+ # order.move_lines.write({'estimated_ready_ship_date': order.estimated_ready_ship_date})
+
+ @api.onchange('estimated_ready_ship_date')
+ def _onchange_estimated_ready_ship_date(self):
+ for record in self:
+ if (record.estimated_ready_ship_date and record.expected_ready_ship_date):
+ if(record.estimated_ready_ship_date < record.expected_ready_ship_date):
+ return {
+ 'warning': {
+ 'title': _('Requested date is too soon.'),
+ 'message': _("The delivery date is sooner than the expected date."
+ "You may be unable to honor the delivery date.")
+ }
+ }
+
def _prepare_invoice(self):
"""
Prepare the dict of values to create the new invoice for a sales order. This method may be
@@ -573,7 +622,7 @@ class SaleOrder(models.Model):
def write(self, vals):
res = super(SaleOrder, self).write(vals)
-
+ # self._compute_etrts_date()
if 'carrier_id' in vals:
for picking in self.picking_ids:
if picking.state == 'assigned':
@@ -1009,6 +1058,7 @@ class SaleOrder(models.Model):
order._set_sppkp_npwp_contact()
order.calculate_line_no()
order.send_notif_to_salesperson()
+ order._compute_etrts_date()
# order.order_line.get_reserved_from()
res = super(SaleOrder, self).action_confirm()
@@ -1383,13 +1433,14 @@ class SaleOrder(models.Model):
def create(self, vals):
# Ensure partner details are updated when a sale order is created
order = super(SaleOrder, self).create(vals)
+ order._compute_etrts_date()
# order._update_partner_details()
return order
def write(self, vals):
# Call the super method to handle the write operation
res = super(SaleOrder, self).write(vals)
-
+ # self._compute_etrts_date()
# Check if the update is coming from a save operation
# if any(field in vals for field in ['sppkp', 'npwp', 'email', 'customer_type']):
# self._update_partner_details()
@@ -1424,4 +1475,6 @@ class SaleOrder(models.Model):
raise UserError(
"SO tidak dapat ditambahkan produk baru karena SO sudah menjadi sale order.")
res = super(SaleOrder, self).write(vals)
+ if 'order_line' in vals:
+ self._compute_etrts_date()
return res \ No newline at end of file