diff options
| author | Mqdd <ahmadmiqdad27@gmail.com> | 2025-12-22 11:29:33 +0700 |
|---|---|---|
| committer | Mqdd <ahmadmiqdad27@gmail.com> | 2025-12-22 11:29:33 +0700 |
| commit | 1f784b46500d347c6db76ef47161eac959243b1d (patch) | |
| tree | 4ee1cd5152f7a3de3587413a0e5008588a4ca56b | |
| parent | b03b5e7d3ab83db6f26610490fc2a4e7dc4d3d9c (diff) | |
<MIqdad> onchange SGR
| -rw-r--r-- | fixco_custom/models/shipment_group.py | 46 |
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') - |
