diff --git a/sf_stock/models/__init__.py b/sf_stock/models/__init__.py index c62a4dff..313cb109 100644 --- a/sf_stock/models/__init__.py +++ b/sf_stock/models/__init__.py @@ -1,3 +1,4 @@ # -*- coding: utf-8 -*- -from . import stock_picking \ No newline at end of file +from . import stock_picking +from . import stock_backorder_confirmation \ No newline at end of file diff --git a/sf_stock/models/stock_backorder_confirmation.py b/sf_stock/models/stock_backorder_confirmation.py new file mode 100644 index 00000000..4e894381 --- /dev/null +++ b/sf_stock/models/stock_backorder_confirmation.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +import json +import requests +from odoo import models, fields, api + +from odoo.exceptions import UserError +import logging +from odoo.tools import date_utils + +_logger = logging.getLogger(__name__) + + +class StockBackorderConfirmation(models.TransientModel): + _inherit = 'stock.backorder.confirmation' + + # 继承创建欠单 + def process(self): + info = super(StockBackorderConfirmation, self).process() + _logger.info("创建欠单") + # 下发创建欠单到bfm + + return info + + # 继承取消创建欠单 + def process_cancel_backorder(self): + info = super(StockBackorderConfirmation, self).process_cancel_backorder() + return info diff --git a/sf_stock/models/stock_picking.py b/sf_stock/models/stock_picking.py index a28fbb5b..fdb22c21 100644 --- a/sf_stock/models/stock_picking.py +++ b/sf_stock/models/stock_picking.py @@ -5,6 +5,7 @@ from odoo import models, fields, api from odoo.exceptions import UserError import logging +from odoo.tools import date_utils _logger = logging.getLogger(__name__) @@ -15,22 +16,64 @@ class StockPicking(models.Model): # 重写验证,下发发货到bfm def button_validate(self): info = super(StockPicking, self).button_validate() - if self.picking_type_id.code == 'outgoing': + if self.picking_type_code == 'outgoing': self.send_to_bfm() return info + def deal_move_ids(self, send_move_ids): + move_ids = [] # 本次发货单 + if send_move_ids: + for item in send_move_ids: + val = { + 'name': item.product_id.upload_model_file.display_name, + 'quantity_done': item.quantity_done, + 'date': date_utils.json_default(item.date) if item.date else None, + 'description_picking': item.description_picking, + 'date_deadline': date_utils.json_default(item.date_deadline) if item.date_deadline else None, + 'product_uom_qty': item.product_uom_qty, + 'sequence': item.sequence, + 'price_unit': item.price_unit, + 'priority': item.priority + } + move_ids.append(val) + return move_ids + + def deal_send_backorder_id(self, backorder_ids1): + backorder_ids = [] + if backorder_ids1: + for item in backorder_ids1: + val = { + 'receiverName': item.receiverName, + 'name': item.sale_id.default_code, + 'send_no': item.name, + '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), + } + backorder_ids.append(val) + return backorder_ids + def send_to_bfm(self): # 下发发货到bfm config = self.env['res.config.settings'].get_values() - json1 = { + + data = { 'params': { - 'name': self.origin, + 'receiverName': self.receiverName, + 'name': self.sale_id.default_code, 'send_no': self.name, - 'qty_done': self.move_line_ids.qty_done, + '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), + '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' - r = requests.post(url1, json=json1, data=None) + r = requests.post(url1, json=data, data=None) if r.status_code == 200: result = json.loads(r.json()['result']) if result['code'] != 200: