summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/sale_order.py
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2024-01-09 14:11:04 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2024-01-09 14:11:04 +0700
commit3615748eafd2d2cfd81f6ddc95d50a7bc347798d (patch)
tree774208714a7239c74e2133872fba43917218141a /indoteknik_custom/models/sale_order.py
parent8be31f0f44c2fde870c7c85e27379f88e1b38d7c (diff)
ETA on sales dan purchase order
Diffstat (limited to 'indoteknik_custom/models/sale_order.py')
-rwxr-xr-xindoteknik_custom/models/sale_order.py25
1 files changed, 23 insertions, 2 deletions
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index 95cbf8ce..07fd60fc 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -1,6 +1,6 @@
from odoo import fields, models, api, _
from odoo.exceptions import UserError, ValidationError
-from datetime import datetime
+from datetime import datetime, timedelta
import logging, random, string, requests, math, json, re
_logger = logging.getLogger(__name__)
@@ -82,7 +82,28 @@ class SaleOrder(models.Model):
email = fields.Char(string='Email')
picking_iu_id = fields.Many2one('stock.picking', 'Picking IU')
helper_by_id = fields.Many2one('res.users', 'Helper By')
- # picking_ids = fields.Many2many('stock.picking', string='Pickings', compute='_get_pickings', readonly=True, copy=False, search="_search_picking_ids")
+ eta_date = fields.Datetime(string='ETA Date', tracking=3, copy=False, compute='_compute_eta_date')
+
+ def _compute_eta_date(self):
+ unique_partner_ids = set()
+ total_leadtime = 0
+ total_orders = 0
+
+ for line in self.order_line:
+ vendor_id = line.vendor_id.id
+ if vendor_id not in unique_partner_ids:
+ unique_partner_ids.add(vendor_id)
+ leadtime = line.vendor_id.leadtime
+ total_leadtime += leadtime
+ total_orders += 1
+
+ if total_orders > 0 and self.date_order and self.state not in ['cancel', 'draft']:
+ average_leadtime = total_leadtime / total_orders
+ rounded_average_leadtime = round(average_leadtime)
+ eta_date = self.date_order + timedelta(days=rounded_average_leadtime)
+ self.eta_date = eta_date
+ else:
+ self.eta_date = False
def _prepare_invoice(self):
"""