summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMqdd <ahmadmiqdad27@gmail.com>2025-12-22 11:29:33 +0700
committerMqdd <ahmadmiqdad27@gmail.com>2025-12-22 11:29:33 +0700
commit1f784b46500d347c6db76ef47161eac959243b1d (patch)
tree4ee1cd5152f7a3de3587413a0e5008588a4ca56b
parentb03b5e7d3ab83db6f26610490fc2a4e7dc4d3d9c (diff)
<MIqdad> onchange SGR
-rw-r--r--fixco_custom/models/shipment_group.py46
1 files changed, 22 insertions, 24 deletions
diff --git a/fixco_custom/models/shipment_group.py b/fixco_custom/models/shipment_group.py
index 546251a..aba77f5 100644
--- a/fixco_custom/models/shipment_group.py
+++ b/fixco_custom/models/shipment_group.py
@@ -51,9 +51,9 @@ class ShipmentGroup(models.Model):
('invoice_marketplace', '=', picking_line.invoice_marketplace),
('picking_id', '=', picking_line.picking_id.id)
])
-
+
picking_line.product_shipment_lines.unlink()
-
+
for sl in shipment_lines:
self.env['product.shipment.line'].create({
'picking_line_id': picking_line.id,
@@ -87,22 +87,22 @@ class ShipmentGroup(models.Model):
'target': 'current',
'domain': [('id', 'in', list(all_bu.ids))],
}
-
+
@api.constrains('picking_lines')
def _check_picking_lines(self):
for record in self:
-
+
for picking_line in record.picking_lines:
if not picking_line.picking_id:
continue
-
+
for move in picking_line.picking_id.move_ids_without_package:
existing_line = record.shipment_line.filtered(
lambda l: l.product_id == move.product_id and
l.picking_id.tracking_number == picking_line.scan_receipt and
l.carrier == picking_line.carrier
)
-
+
if not existing_line:
self.env['shipment.group.line'].create({
'shipment_id': record.id,
@@ -112,12 +112,12 @@ class ShipmentGroup(models.Model):
'order_reference': picking_line.order_reference,
'picking_id': picking_line.picking_id.id
})
-
+
def get_status(self):
for picking_line in self.picking_lines:
try:
order_id = picking_line.invoice_marketplace
-
+
authorization = self.sign_request()
headers = {
'Content-Type': 'application/json',
@@ -128,21 +128,21 @@ class ShipmentGroup(models.Model):
"orderNumbers": [order_id],
}
url = "https://api.ginee.com/openapi/order/v2/list-order"
-
+
response = requests.post(
url,
headers=headers,
data=json.dumps(payload)
)
-
+
if response.status_code == 200:
data = response.json()
if data.get('code') == 'SUCCESS' and data.get('message') == 'OK':
content = data.get('data', {}).get('content', [])
-
+
if not content:
raise UserError(_("No List Order information found in response"))
-
+
content_info = content[0]
if content_info.get('orderStatus') == 'CANCELLED':
picking_line.status = content_info.get('orderStatus')
@@ -152,10 +152,10 @@ class ShipmentGroup(models.Model):
raise UserError(_("API Error: %s - %s") % (data.get('code', 'UNKNOWN'), data.get('message', 'No error message')))
else:
raise UserError(_("API request failed with status code: %s") % response.status_code)
-
+
except Exception as e:
raise UserError(_("Error: %s") % str(e))
-
+
def sign_request(self):
signData = '$'.join(['POST', Request_URI]) + '$'
authorization = ACCESS_KEY + ':' + base64.b64encode(
@@ -169,7 +169,7 @@ class ShipmentGroup(models.Model):
vals['number'] = self.env['ir.sequence'].next_by_code('shipment.group') or '0'
result = super(ShipmentGroup, self).create(vals)
return result
-
+
class ShipmentGroupLine(models.Model):
_name = 'shipment.group.line'
_description = 'Shipment Group Line'
@@ -197,7 +197,7 @@ class PickingLine(models.Model):
order_reference = fields.Char(string='Order Reference')
status = fields.Char(string='Status')
- @api.constrains('scan_receipt')
+ @api.onchange('scan_receipt')
def _check_duplicate_scan(self):
for line in self:
if not line.scan_receipt:
@@ -206,18 +206,18 @@ class PickingLine(models.Model):
# Cari duplikat selain dirinya
dup = self.search([
('scan_receipt', '=', line.scan_receipt),
- ('id', '!=', line.id)
+ # ('id', '!=', line.id)
], limit=1)
if not dup:
continue
# 1. Dup di shipment yang sama (lagi create / edit)
- if dup.shipment_id.id == line.shipment_id.id:
- raise ValidationError(
- "Receipt '%s' sudah ada di Shipment ini." %
- line.scan_receipt
- )
+ # if dup.shipment_id.id == line.shipment_id.id:
+ # raise ValidationError(
+ # "Receipt '%s' sudah ada di Shipment ini." %
+ # line.scan_receipt
+ # )
# 2. Dup di shipment lain (data lama)
raise ValidationError(
@@ -226,7 +226,6 @@ class PickingLine(models.Model):
)
-
@api.onchange('scan_receipt')
def _onchange_scan_receipt(self):
for line in self:
@@ -259,4 +258,3 @@ class ProductShipmentLine(models.Model):
invoice_marketplace = fields.Char(string='Invoice Marketplace')
picking_id = fields.Many2one('stock.picking', string='Picking')
order_reference = fields.Char(string='Order Reference')
-