diff --git a/sf_stock/models/stock_picking.py b/sf_stock/models/stock_picking.py index fdb22c21..b995f812 100644 --- a/sf_stock/models/stock_picking.py +++ b/sf_stock/models/stock_picking.py @@ -20,8 +20,9 @@ class StockPicking(models.Model): self.send_to_bfm() return info - def deal_move_ids(self, send_move_ids): + def deal_move_ids(self, send_move_ids, send_move_line_ids): move_ids = [] # 本次发货单 + move_line_ids = [] # 本次发货单行 if send_move_ids: for item in send_move_ids: val = { @@ -33,15 +34,28 @@ class StockPicking(models.Model): 'product_uom_qty': item.product_uom_qty, 'sequence': item.sequence, 'price_unit': item.price_unit, - 'priority': item.priority + 'priority': item.priority, + 'state': item.state, } move_ids.append(val) - return move_ids + for item in send_move_line_ids: + val = { + 'qty_done': item.qty_done, + 'reserved_qty': item.reserved_qty, + 'reserved_uom_qty': item.reserved_uom_qty, + 'date': date_utils.json_default(item.date) if item.date else None, + 'description_picking': item.description_picking, + 'state': item.state, + } + move_line_ids.append(val) + return move_ids, move_line_ids def deal_send_backorder_id(self, backorder_ids1): backorder_ids = [] + if backorder_ids1: for item in backorder_ids1: + move_ids, move_line_ids = self.deal_move_ids(item.move_ids, item.move_line_ids) val = { 'receiverName': item.receiverName, 'name': item.sale_id.default_code, @@ -49,7 +63,9 @@ class StockPicking(models.Model): 'scheduled_date': date_utils.json_default(item.scheduled_date) if item.scheduled_date else None, 'date': date_utils.json_default(item.date) if item.date else None, 'date_deadline': date_utils.json_default(item.date_deadline) if item.date_deadline else None, - 'move_ids': self.deal_move_ids(item.move_ids), + 'move_ids': move_ids, + 'move_line_ids': move_line_ids, + 'state': item.state, } backorder_ids.append(val) return backorder_ids @@ -57,7 +73,7 @@ class StockPicking(models.Model): def send_to_bfm(self): # 下发发货到bfm config = self.env['res.config.settings'].get_values() - + move_ids, move_line_ids = self.deal_move_ids(self.move_ids, self.move_line_ids) data = { 'params': { 'receiverName': self.receiverName, @@ -66,13 +82,17 @@ class StockPicking(models.Model): 'scheduled_date': date_utils.json_default(self.scheduled_date) if self.scheduled_date else None, 'date': date_utils.json_default(self.date) if self.date else None, 'date_deadline': date_utils.json_default(self.date_deadline) if self.date_deadline else None, - 'move_ids': self.deal_move_ids(self.move_ids), + 'move_ids': move_ids, + 'move_line_ids': move_line_ids, + 'state': self.state, 'backorder_id': self.deal_send_backorder_id(self.backorder_id), 'backorder_ids': self.deal_send_backorder_id(self.backorder_ids) }, } url1 = config['bfm_url_new'] + '/api/stock/deliver_goods' + json_str = json.dumps(data) + print('json_str', json_str) r = requests.post(url1, json=data, data=None) if r.status_code == 200: result = json.loads(r.json()['result'])