diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2024-01-09 14:11:04 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2024-01-09 14:11:04 +0700 |
| commit | 3615748eafd2d2cfd81f6ddc95d50a7bc347798d (patch) | |
| tree | 774208714a7239c74e2133872fba43917218141a /indoteknik_custom/models/sale_order.py | |
| parent | 8be31f0f44c2fde870c7c85e27379f88e1b38d7c (diff) | |
ETA on sales dan purchase order
Diffstat (limited to 'indoteknik_custom/models/sale_order.py')
| -rwxr-xr-x | indoteknik_custom/models/sale_order.py | 25 |
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): """ |
