summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/stock_picking.py
diff options
context:
space:
mode:
authorHafidBuroiroh <hafidburoiroh09@gmail.com>2025-09-23 11:31:14 +0700
committerHafidBuroiroh <hafidburoiroh09@gmail.com>2025-09-23 11:31:14 +0700
commite1678372f8af653d30d49f38abe8ca3129e29a03 (patch)
tree2375aac399c56d917d0ed6d419b182fdaa50897e /indoteknik_custom/models/stock_picking.py
parent6d50b35724592c4f8c302204adcfbc0f5db3727f (diff)
parentf58e6e2fa013789bfa8ac8456cd29735a83a56d0 (diff)
Merge branch 'odoo-backup' of https://bitbucket.org/altafixco/indoteknik-addons into refund_system
Diffstat (limited to 'indoteknik_custom/models/stock_picking.py')
-rw-r--r--indoteknik_custom/models/stock_picking.py64
1 files changed, 44 insertions, 20 deletions
diff --git a/indoteknik_custom/models/stock_picking.py b/indoteknik_custom/models/stock_picking.py
index a48e0ed1..67106073 100644
--- a/indoteknik_custom/models/stock_picking.py
+++ b/indoteknik_custom/models/stock_picking.py
@@ -307,6 +307,7 @@ class StockPicking(models.Model):
('delay', 'Delay By Vendor'),
('urgent', 'Urgent Delivery'),
], string='Reason Change Date Planned', tracking=True)
+ delivery_date = fields.Datetime(string='Delivery Date', copy=False)
def _get_kgx_awb_number(self):
"""Menggabungkan name dan origin untuk membuat AWB Number"""
@@ -1351,6 +1352,19 @@ class StockPicking(models.Model):
if self.picking_type_code == 'outgoing' and 'BU/OUT/' in self.name:
self.check_koli()
res = super(StockPicking, self).button_validate()
+
+ # Penambahan link PO di Stock Journal untuk Picking BD
+ for picking in self:
+ if picking.name and 'BD/' in picking.name and picking.purchase_id:
+ stock_journal = self.env['account.move'].search([
+ ('ref', 'ilike', picking.name + '%'),
+ ('journal_id', '=', 3) # Stock Journal ID
+ ], limit = 1)
+ if stock_journal:
+ stock_journal.write({
+ 'purchase_order_id': picking.purchase_id.id
+ })
+
self.date_done = datetime.datetime.utcnow()
self.state_reserve = 'done'
self.final_seq = 0
@@ -1743,27 +1757,37 @@ class StockPicking(models.Model):
}
if self.biteship_id:
- histori = self.get_manifest_biteship()
- day_start = order.estimated_arrival_days_start
- day_end = order.estimated_arrival_days
- if sale_order_delay:
- if sale_order_delay.status == 'delayed':
- day_start = day_start + sale_order_delay.days_delayed
- day_end = day_end + sale_order_delay.days_delayed
- elif sale_order_delay.status == 'early':
- day_start = day_start - sale_order_delay.days_delayed
- day_end = day_end - sale_order_delay.days_delayed
-
- eta_start = order.date_order + timedelta(days=day_start)
- eta_end = order.date_order + timedelta(days=day_end)
- formatted_eta = f"{eta_start.strftime('%d %b')} - {eta_end.strftime('%d %b %Y')}"
- response['eta'] = formatted_eta
- response['manifests'] = histori.get("manifests", [])
- response['delivered'] = histori.get("delivered",
- False) or self.sj_return_date != False or self.driver_arrival_date != False
- response['status'] = self._map_status_biteship(histori.get("delivered"))
+ try:
+ histori = self.get_manifest_biteship()
+ day_start = order.estimated_arrival_days_start
+ day_end = order.estimated_arrival_days
+ if sale_order_delay:
+ if sale_order_delay.status == 'delayed':
+ day_start += sale_order_delay.days_delayed
+ day_end += sale_order_delay.days_delayed
+ elif sale_order_delay.status == 'early':
+ day_start -= sale_order_delay.days_delayed
+ day_end -= sale_order_delay.days_delayed
+
+ eta_start = order.date_order + timedelta(days=day_start)
+ eta_end = order.date_order + timedelta(days=day_end)
+ formatted_eta = f"{eta_start.strftime('%d %b')} - {eta_end.strftime('%d %b %Y')}"
+
+ response['eta'] = formatted_eta
+ response['manifests'] = histori.get("manifests", [])
+ response['delivered'] = (
+ histori.get("delivered", False)
+ or self.sj_return_date != False
+ or self.driver_arrival_date != False
+ )
+ response['status'] = self._map_status_biteship(histori.get("delivered"))
- return response
+ return response
+
+ except Exception as e:
+ # Kalau ada error di biteship, log dan fallback ke Odoo
+ _logger.warning("Biteship error pada DO %s: %s", self.name, str(e))
+ # biarkan lanjut ke kondisi di bawah (pakai Odoo waybill_id)
if not self.waybill_id or len(self.waybill_id.manifest_ids) == 0:
response['delivered'] = self.sj_return_date != False or self.driver_arrival_date != False