diff options
| author | Rafi Zadanly <zadanlyr@gmail.com> | 2023-08-24 11:28:05 +0700 |
|---|---|---|
| committer | Rafi Zadanly <zadanlyr@gmail.com> | 2023-08-24 11:28:05 +0700 |
| commit | c420bd4e418b2f646e1b3116bdb31e4ff07bf448 (patch) | |
| tree | d004c85cec5800c218fc1b39de3f6e2d842c63bb /indoteknik_custom/models/stock_picking.py | |
| parent | 9e4511c8d27665a53d296ee648150121a7f6cf84 (diff) | |
Add estimated arrival days field and estimated time arrival API response
Diffstat (limited to 'indoteknik_custom/models/stock_picking.py')
| -rw-r--r-- | indoteknik_custom/models/stock_picking.py | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/indoteknik_custom/models/stock_picking.py b/indoteknik_custom/models/stock_picking.py index 8d1a85ea..c094b74d 100644 --- a/indoteknik_custom/models/stock_picking.py +++ b/indoteknik_custom/models/stock_picking.py @@ -396,7 +396,8 @@ class StockPicking(models.Model): }, 'delivered': False, 'waybill_number': self.delivery_tracking_no or '', - 'delivery_status': None + 'delivery_status': None, + 'eta': self.generate_eta_delivery() } if not self.waybill_id or len(self.waybill_id.manifest_ids) == 0: @@ -411,3 +412,29 @@ class StockPicking(models.Model): response['manifests'] = [self.create_manifest_data(x.description, x.datetime) for x in self.waybill_id.manifest_ids] return response + + def generate_eta_delivery(self): + current_date = datetime.datetime.now() + prepare_days = 3 + start_date = self.driver_departure_date or self.create_date + + ead = self.sale_id.estimated_arrival_days or 0 + if not self.driver_departure_date: + ead += prepare_days + + ead_datetime = datetime.timedelta(days=ead) + fastest_eta = start_date + ead_datetime + if not self.driver_departure_date and fastest_eta < current_date: + fastest_eta = current_date + ead_datetime + + longest_days = 3 + longest_eta = fastest_eta + datetime.timedelta(days=longest_days) + + if fastest_eta.year == longest_eta.year: + formatted_fastest_eta = fastest_eta.strftime('%d %b') + formatted_longest_eta = longest_eta.strftime('%d %b %Y') + else: + formatted_fastest_eta = fastest_eta.strftime('%d %b %Y') + formatted_longest_eta = longest_eta.strftime('%d %b %Y') + + return f'{formatted_fastest_eta} - {formatted_longest_eta}' |
