修改sf下发欠单,bfm接收下发欠单,及处理发货单的关系

This commit is contained in:
hujiaying
2024-08-31 21:09:56 +08:00
parent 1e172cb4e3
commit 0ca6d46a7b
3 changed files with 77 additions and 6 deletions

View File

@@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
from . import stock_picking
from . import stock_picking
from . import stock_backorder_confirmation

View File

@@ -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

View File

@@ -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: