From 38f67d98f8c40b763311bf8ba6d53be395f9b0e7 Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Thu, 9 Feb 2023 08:50:48 +0800
Subject: [PATCH 1/7] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=8A=B6=E6=80=81?=
=?UTF-8?q?=E8=BF=94=E5=9B=9E=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=A2=9E=E5=8A=A0?=
=?UTF-8?q?=E8=B0=83=E7=94=A8=E4=BA=AC=E4=B8=9C=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_bf_connect/controllers/controllers.py | 6 ++
sf_bf_connect/models/__init__.py | 1 +
sf_bf_connect/models/jd_eclp.py | 42 +++++++++++
sf_bf_connect/models/process_status.py | 91 +++++++++++++++++++++---
sf_machine_connect/models/ftp_client.py | 13 +++-
sf_manufacturing/models/mrp_workorder.py | 44 ++++++++----
6 files changed, 174 insertions(+), 23 deletions(-)
create mode 100644 sf_bf_connect/models/jd_eclp.py
diff --git a/sf_bf_connect/controllers/controllers.py b/sf_bf_connect/controllers/controllers.py
index 41ef3bf3..6a6aedbc 100644
--- a/sf_bf_connect/controllers/controllers.py
+++ b/sf_bf_connect/controllers/controllers.py
@@ -34,6 +34,12 @@ class Sf_Bf_Connect(http.Controller):
logging.info('get_bfm_process_or===================================:%s' % order_id.name)
aa.default_code = kw['order_number']
logging.info('get_bfm_process_order_listaaaaaaaaaaaaaaaaaaaaaaaaaaaa================:%s' % aa.default_code)
+ # # 给stock.picking的default_code字段赋值
+ # bb = request.env['stock.picking'].sudo().search([('origin', '=', order_id.name)])
+ # logging.info('get_bfm_process_or===================================:%s' % order_id.name)
+ # bb.default_code = kw['order_number']
+ # logging.info('get_bfm_process_order_listbbbbbbbbbbbbbbbbbbbbbbbbbbbb================:%s' % bb.default_code)
+
for item in bfm_process_order_list:
product = request.env['product.template'].sudo().product_create(product_id, item, order_id,
kw['order_number'], i)
diff --git a/sf_bf_connect/models/__init__.py b/sf_bf_connect/models/__init__.py
index 5515b076..21f9d732 100644
--- a/sf_bf_connect/models/__init__.py
+++ b/sf_bf_connect/models/__init__.py
@@ -1,4 +1,5 @@
from . import http
from . import models
from . import process_status
+from . import jd_eclp
diff --git a/sf_bf_connect/models/jd_eclp.py b/sf_bf_connect/models/jd_eclp.py
new file mode 100644
index 00000000..2eb3d812
--- /dev/null
+++ b/sf_bf_connect/models/jd_eclp.py
@@ -0,0 +1,42 @@
+from odoo import api, fields, models, SUPERUSER_ID, _
+from odoo.exceptions import ValidationError
+from datetime import datetime
+import jionlp as jio
+import logging
+from odoo.exceptions import UserError
+import requests
+
+_logger = logging.getLogger(__name__)
+
+
+class JdEclp(models.Model):
+ _inherit = 'stock.picking'
+
+ def create_order(self):
+ sale_order_id = self.env['sale.order'].search([('name', '=', self.origin)])
+ raw_addres = self.address_of_delivery
+ json1 = {
+ 'params': {
+ 'orderNo': self.origin,
+ 'senderNickName': self.,
+ 'receiverName': self.person_of_delivery,
+ 'receiverMobile': self.telephone_of_delivery,
+ 'receiverProvinceName': jio.parse_location(raw_addres)['province'],
+ 'receiverCityName': jio.parse_location(raw_addres)['city'],
+ 'receiverCountyName': jio.parse_location(raw_addres)['county'],
+ 'receiverTownName': jio.parse_location(raw_addres)['detail'],
+ 'remark': self.,
+ 'grossWeight': self.,
+ 'grossVolume': self.,
+ 'createTime': self.,
+ 'createUser': self.,
+ 'expressItemName': self.,
+ 'pickupBeginTime': self.,
+ 'deliveryType': self.,
+ 'receiverCompany': self.,
+ },
+ }
+ url1 = 'https://bfm.cs.jikimo.com/api/create/jd/order'
+ requests.post(url1, json=json1, data=None)
+
+
diff --git a/sf_bf_connect/models/process_status.py b/sf_bf_connect/models/process_status.py
index c89755ec..34acc2b6 100644
--- a/sf_bf_connect/models/process_status.py
+++ b/sf_bf_connect/models/process_status.py
@@ -7,6 +7,7 @@ import requests
_logger = logging.getLogger(__name__)
+
class StatusChange(models.Model):
_inherit = 'sale.order'
@@ -40,16 +41,16 @@ class StatusChange(models.Model):
self.action_done()
process_start_time = str(datetime.now())
json1 = {
- 'params': {
- 'model_name': 'jikimo.process.order',
- 'field_name': 'name',
- # 'default_code': 'PO-2022-1214-0022',
- 'default_code': self.default_code,
- # 'default_code': self.name,
- 'state': '加工中',
- 'process_start_time': process_start_time,
- },
- }
+ 'params': {
+ 'model_name': 'jikimo.process.order',
+ 'field_name': 'name',
+ # 'default_code': 'PO-2022-1214-0022',
+ 'default_code': self.default_code,
+ # 'default_code': self.name,
+ 'state': '加工中',
+ 'process_start_time': process_start_time,
+ },
+ }
url1 = 'https://bfm.cs.jikimo.com/api/get/state/get_order'
requests.post(url1, json=json1, data=None)
logging.info('接口已经执行=============')
@@ -108,3 +109,73 @@ class StatusChange(models.Model):
else:
return self._action_cancel()
+
+class FinishStatusChange(models.Model):
+ _inherit = 'stock.picking'
+
+ # default_code = fields.Char(string='内部编码')
+
+ def button_validate(self):
+ # Clean-up the context key at validation to avoid forcing the creation of immediate
+ # transfers.
+ ctx = dict(self.env.context)
+ ctx.pop('default_immediate_transfer', None)
+ self = self.with_context(ctx)
+
+ # Sanity checks.
+ if not self.env.context.get('skip_sanity_check', False):
+ self._sanity_check()
+
+ self.message_subscribe([self.env.user.partner_id.id])
+
+ # Run the pre-validation wizards. Processing a pre-validation wizard should work on the
+ # moves and/or the context and never call `_action_done`.
+ if not self.env.context.get('button_validate_picking_ids'):
+ self = self.with_context(button_validate_picking_ids=self.ids)
+ res = self._pre_action_done_hook()
+ if res is not True:
+ return res
+
+ # Call `_action_done`.
+ pickings_not_to_backorder = self.filtered(lambda p: p.picking_type_id.create_backorder == 'never')
+ if self.env.context.get('picking_ids_not_to_backorder'):
+ pickings_not_to_backorder |= self.browse(self.env.context['picking_ids_not_to_backorder']).filtered(
+ lambda p: p.picking_type_id.create_backorder != 'always'
+ )
+ pickings_to_backorder = self - pickings_not_to_backorder
+ pickings_not_to_backorder.with_context(cancel_backorder=True)._action_done()
+ pickings_to_backorder.with_context(cancel_backorder=False)._action_done()
+
+ if self.user_has_groups('stock.group_reception_report') \
+ and self.picking_type_id.auto_show_reception_report:
+ lines = self.move_ids.filtered(lambda m: m.product_id.type == 'product' and m.state != 'cancel' and m.quantity_done and not m.move_dest_ids)
+ if lines:
+ # don't show reception report if all already assigned/nothing to assign
+ wh_location_ids = self.env['stock.location']._search([('id', 'child_of', self.picking_type_id.warehouse_id.view_location_id.id), ('usage', '!=', 'supplier')])
+ if self.env['stock.move'].search([
+ ('state', 'in', ['confirmed', 'partially_available', 'waiting', 'assigned']),
+ ('product_qty', '>', 0),
+ ('location_id', 'in', wh_location_ids),
+ ('move_orig_ids', '=', False),
+ ('picking_id', 'not in', self.ids),
+ ('product_id', 'in', lines.product_id.ids)], limit=1):
+ action = self.action_view_reception_report()
+ action['context'] = {'default_picking_ids': self.ids}
+ return action
+
+ out_start_time = str(datetime.now())
+ json2 = {
+ 'params': {
+ 'model_name': 'jikimo.process.order',
+ 'field_name': 'name',
+ # 'default_code': 'PO-2022-1214-0022',
+ 'default_code': self.default_code,
+ # 'default_code': self.name,
+ 'state': '已交付',
+ # 'process_start_time': out_start_time,
+ },
+ }
+ url1 = 'https://bfm.cs.jikimo.com/api/get/state/get_order'
+ requests.post(url1, json=json2, data=None)
+ logging.info('接口已经执行=============')
+ return True
diff --git a/sf_machine_connect/models/ftp_client.py b/sf_machine_connect/models/ftp_client.py
index 8492d123..3ef02905 100644
--- a/sf_machine_connect/models/ftp_client.py
+++ b/sf_machine_connect/models/ftp_client.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
import base64
import logging
-
+import os
import json
import hashlib
import time
@@ -261,6 +261,17 @@ class WorkCenterBarcode(models.Model):
此函数用于将NC代码全部下发到机床
:return:
"""
+ try:
+ filepath = '/nc2machine'
+ del_list = os.listdir(filepath)
+ _logger.info("=====================================", del_list)
+ for f in del_list:
+ file_path = os.path.join(filepath, f)
+ if os.path.isfile(file_path):
+ os.remove(file_path)
+ except Exception as e:
+ _logger.info("=====================================", e)
+ raise UserError('程序删除失败,请重试')
# host="192.168.2.158", port=8080, username="MITSUBISHI", password="CNC"
host = self.workcenter_id.machine_tool_id.ftp_host
port = self.workcenter_id.machine_tool_id.ftp_port
diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py
index c2c9b9ad..0f63ef25 100644
--- a/sf_manufacturing/models/mrp_workorder.py
+++ b/sf_manufacturing/models/mrp_workorder.py
@@ -212,20 +212,29 @@ class ResMrpWorkOrder(models.Model):
'production_id': self.production_id,
'state': '占用',
})
+ self.work_state = "已绑定"
+ orders = self.env['mrp.workorder'].search([('production_id', '=', self.production_id.id)])
+ for a in orders:
+ a.tray_id = values
+
+ return values
+
+ # return {
+ # 'name': _('New Maintenance Request'),
+ # 'view_mode': 'form',
+ # 'res_model': 'maintenance.request',
+ # 'type': 'ir.actions.act_window',
+ # 'context': {
+ # 'default_company_id': self.company_id.id,
+ # 'default_production_id': self.id,
+ # },
+ # 'domain': [('production_id', '=', self.id)],
+ # }
else:
raise UserError('该托盘编码已失效')
else:
- return {
- 'name': _('New Maintenance Request'),
- 'view_mode': 'form',
- 'res_model': 'maintenance.request',
- 'type': 'ir.actions.act_window',
- 'context': {
- 'default_company_id': self.company_id.id,
- 'default_production_id': self.id,
- },
- 'domain': [('production_id', '=', self.id)],
- }
+ raise UserError('托盘码不能为空')
+
# 解除托盘绑定
def unbindtray(self):
@@ -533,4 +542,15 @@ class SfWorkOrderBarcodes(models.Model):
tray_code = self.env['sf.tray'].search([('code', '=', barcode)])
self.tray_code = tray_code.code
workorder = self.env['mrp.workorder'].browse(self.ids)
- workorder.gettray_auto(barcode)
+ self.tray_id = workorder.gettray_auto(barcode)
+
+ # return {
+ # 'type': 'ir.actions.act_window',
+ # 'name': '工单',
+ # 'res_model': 'mrp.workorder',
+ # 'view_mode': 'form',
+ # 'context': {'active_id': self.id},
+ # # 'target': 'current',
+ # }
+
+
From c07803d3cfdc8b12fda3a2c781040618afdbfc90 Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Mon, 13 Feb 2023 08:50:37 +0800
Subject: [PATCH 2/7] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=AC=E4=B8=9C?=
=?UTF-8?q?=E7=89=A9=E6=B5=81=E7=9A=84=E9=85=8D=E7=BD=AE=E9=A1=B9=E7=9B=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_bf_connect/__manifest__.py | 3 +-
sf_bf_connect/models/jd_eclp.py | 82 ++++++++++++++++++-------
sf_bf_connect/views/view.xml | 43 +++++++++++++
sf_machine_connect/models/ftp_client.py | 2 +-
4 files changed, 107 insertions(+), 23 deletions(-)
create mode 100644 sf_bf_connect/views/view.xml
diff --git a/sf_bf_connect/__manifest__.py b/sf_bf_connect/__manifest__.py
index fe5a9559..6b893476 100644
--- a/sf_bf_connect/__manifest__.py
+++ b/sf_bf_connect/__manifest__.py
@@ -12,7 +12,8 @@
'website': 'https://www.sf.cs.jikimo.com',
'depends': ['sf_base', 'sf_sale', 'sf_dlm'],
'data': [
- 'views/res_partner_view.xml'
+ 'views/res_partner_view.xml',
+ 'views/view.xml',
],
'demo': [
],
diff --git a/sf_bf_connect/models/jd_eclp.py b/sf_bf_connect/models/jd_eclp.py
index 2eb3d812..e101df6d 100644
--- a/sf_bf_connect/models/jd_eclp.py
+++ b/sf_bf_connect/models/jd_eclp.py
@@ -12,31 +12,71 @@ _logger = logging.getLogger(__name__)
class JdEclp(models.Model):
_inherit = 'stock.picking'
- def create_order(self):
+ senderNickName = fields.Char(string='寄件工厂简称', required=True, default='MW')
+ receiverName = fields.Char(string='收件人姓名', compute='_truck_info')
+ receiverMobile = fields.Char(string='收件人电话', compute='_truck_info')
+ receiverProvinceName = fields.Char(string='收件人省', compute='_truck_info')
+ receiverCityName = fields.Char(string='收件人市', compute='_truck_info')
+ receiverCountyName = fields.Char(string='收件人县', compute='_truck_info')
+ receiverTownName = fields.Char(string='收件人详细地址', compute='_truck_info')
+ receiverCompany = fields.Char(string='收货人公司', required=True)
+ remark = fields.Char(string='物流面单备注')
+ grossWeight = fields.Char(string='总重量', required=True)
+ grossVolume = fields.Char(string='总体积')
+ expressItemName = fields.Char(string='货物名称', required=True, default='非标工件')
+ pickupBeginTime = fields.Char(string='期望取件时间')
+ deliveryType = fields.Selection([('6', '特快零担'), ('25', '特快重货')], string='运输类型', default='25')
+
+ @api.depends('origin')
+ def _truck_info(self):
sale_order_id = self.env['sale.order'].search([('name', '=', self.origin)])
- raw_addres = self.address_of_delivery
+ raw_addres = sale_order_id.address_of_delivery
+ self.receiverName = sale_order_id.person_of_delivery
+ self.receiverMobile = sale_order_id.telephone_of_delivery
+ self.receiverProvinceName = jio.parse_location(raw_addres)['province']
+ self.receiverCityName = jio.parse_location(raw_addres)['city']
+ self.receiverCountyName = jio.parse_location(raw_addres)['county']
+ self.receiverTownName = jio.parse_location(raw_addres)['detail']
+ # self.receiverMobile = sale_order_id.telephone_of_delivery
+
+ def create_order(self):
+ # sale_order_id = self.env['sale.order'].search([('name', '=', self.origin)])
+
+ if self.carrier_id == '京东物流':
+ createTime = str(datetime.now())
+ json1 = {
+ 'params': {
+ 'orderNo': self.origin,
+ 'senderNickName': self.senderNickName,
+ 'receiverName': self.receiverName,
+ 'receiverMobile': self.receiverMobile,
+ 'receiverProvinceName': self.receiverProvinceName,
+ 'receiverCityName': self.receiverCityName,
+ 'receiverCountyName': self.receiverCountyName,
+ 'receiverTownName': self.receiverTownName,
+ 'remark': self.remark,
+ 'grossWeight': self.grossWeight,
+ 'grossVolume': self.grossVolume,
+ 'createTime': createTime,
+ 'createUser': self.user_id,
+ 'expressItemName': self.expressItemName,
+ 'pickupBeginTime': self.pickupBeginTime,
+ 'deliveryType': self.deliveryType,
+ 'receiverCompany': self.receiverCompany,
+ },
+ }
+ url1 = 'https://bfm.cs.jikimo.com/api/create/jd/order'
+ requests.post(url1, json=json1, data=None)
+
+ else:
+ raise UserError("选择京东物流才能下单呦")
+
+ def get_bill(self):
+
json1 = {
'params': {
- 'orderNo': self.origin,
- 'senderNickName': self.,
- 'receiverName': self.person_of_delivery,
- 'receiverMobile': self.telephone_of_delivery,
- 'receiverProvinceName': jio.parse_location(raw_addres)['province'],
- 'receiverCityName': jio.parse_location(raw_addres)['city'],
- 'receiverCountyName': jio.parse_location(raw_addres)['county'],
- 'receiverTownName': jio.parse_location(raw_addres)['detail'],
- 'remark': self.,
- 'grossWeight': self.,
- 'grossVolume': self.,
- 'createTime': self.,
- 'createUser': self.,
- 'expressItemName': self.,
- 'pickupBeginTime': self.,
- 'deliveryType': self.,
- 'receiverCompany': self.,
+ 'no': self.origin,
},
}
url1 = 'https://bfm.cs.jikimo.com/api/create/jd/order'
requests.post(url1, json=json1, data=None)
-
-
diff --git a/sf_bf_connect/views/view.xml b/sf_bf_connect/views/view.xml
new file mode 100644
index 00000000..2661e972
--- /dev/null
+++ b/sf_bf_connect/views/view.xml
@@ -0,0 +1,43 @@
+
+
+
+ tracking
+ stock.picking
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sf_machine_connect/models/ftp_client.py b/sf_machine_connect/models/ftp_client.py
index 3ef02905..40c7ca3c 100644
--- a/sf_machine_connect/models/ftp_client.py
+++ b/sf_machine_connect/models/ftp_client.py
@@ -207,7 +207,7 @@ class WorkCenterBarcode(models.Model):
machine_tool_name = fields.Char(string='机床名称', default='未知机床', compute='_run_info', readonly=True)
machine_tool_type_id = fields.Char(string='机床型号', default='未知型号', compute='_run_info', readonly=True)
machine_tool_status = fields.Boolean(string='在线状态', compute='_run_info', readonly=True)
- machine_tool_run_status = fields.Selection([('0', '关机中'), ('1', '加工中'), ('2', '加工中'), ('3', '等待中')],
+ machine_tool_run_status = fields.Selection([('0', '关机中'), ('1', '加工中'), ('2', '加工中'), ('3', '加工中')],
string='运行状态', compute='_run_info', readonly=True, default='0')
machine_tool_timestamp = fields.Datetime('时间戳', compute='_run_info', readonly=True)
machine_tool_time_on = fields.Char('总在线时长', compute='_run_info', readonly=True)
From c1c39396f95dbe01b985d1962767d36ea3bbd25e Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Mon, 13 Feb 2023 21:51:06 +0800
Subject: [PATCH 3/7] =?UTF-8?q?=E5=A2=9E=E5=8A=A0bfm=E5=9B=9E=E8=B0=83?=
=?UTF-8?q?=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_bf_connect/controllers/controllers.py | 27 +++++++++++
sf_bf_connect/models/jd_eclp.py | 60 +++++++++++++-----------
sf_bf_connect/views/view.xml | 2 +
3 files changed, 61 insertions(+), 28 deletions(-)
diff --git a/sf_bf_connect/controllers/controllers.py b/sf_bf_connect/controllers/controllers.py
index 6a6aedbc..306f36f2 100644
--- a/sf_bf_connect/controllers/controllers.py
+++ b/sf_bf_connect/controllers/controllers.py
@@ -119,3 +119,30 @@ class Sf_Bf_Connect(http.Controller):
res['status'] = -1
res['message'] = '工厂创建销售订单和产品失败,请联系管理员'
return json.JSONEncoder().encode(res)
+
+
+class jdElcp(http.Controller):
+
+ @http.route('/api/jd_create/order', type='http', auth='none', methods=['GET', 'POST'], csrf=False,
+ cors="*")
+ def get_jd_order(self, **kw):
+ """
+ 回调函数:拿到京东返回的下单数据
+ """
+ logging.info('get_jd_bill================:%s', kw)
+ aa = request.env['stock.picking'].sudo().search([('origin', '=', kw['orderNo'])])
+ aa.carrier_tracking_ref = kw['wbNo']
+ logging.info('get_jd_order================:%s' %
+ aa.carrier_tracking_ref)
+
+ @http.route('/api/jd_create/bill', type='http', auth='none', methods=['GET', 'POST'], csrf=False,
+ cors="*")
+ def get_jd_bill(self, **kw):
+ """
+ 回调函数:拿到京东返回的快递面单
+ """
+ logging.info('get_jd_bill================:%s', kw)
+ aa = request.env['stock.picking'].sudo().search([('origin', '=', kw['orderNo'])])
+ aa.bill_url = kw['bill']
+ logging.info('get_jd_bill================:%s' %
+ aa.bill_url)
diff --git a/sf_bf_connect/models/jd_eclp.py b/sf_bf_connect/models/jd_eclp.py
index e101df6d..44679c3b 100644
--- a/sf_bf_connect/models/jd_eclp.py
+++ b/sf_bf_connect/models/jd_eclp.py
@@ -26,6 +26,7 @@ class JdEclp(models.Model):
expressItemName = fields.Char(string='货物名称', required=True, default='非标工件')
pickupBeginTime = fields.Char(string='期望取件时间')
deliveryType = fields.Selection([('6', '特快零担'), ('25', '特快重货')], string='运输类型', default='25')
+ bill = fields.Char(string='快递面单')
@api.depends('origin')
def _truck_info(self):
@@ -42,34 +43,37 @@ class JdEclp(models.Model):
def create_order(self):
# sale_order_id = self.env['sale.order'].search([('name', '=', self.origin)])
- if self.carrier_id == '京东物流':
- createTime = str(datetime.now())
- json1 = {
- 'params': {
- 'orderNo': self.origin,
- 'senderNickName': self.senderNickName,
- 'receiverName': self.receiverName,
- 'receiverMobile': self.receiverMobile,
- 'receiverProvinceName': self.receiverProvinceName,
- 'receiverCityName': self.receiverCityName,
- 'receiverCountyName': self.receiverCountyName,
- 'receiverTownName': self.receiverTownName,
- 'remark': self.remark,
- 'grossWeight': self.grossWeight,
- 'grossVolume': self.grossVolume,
- 'createTime': createTime,
- 'createUser': self.user_id,
- 'expressItemName': self.expressItemName,
- 'pickupBeginTime': self.pickupBeginTime,
- 'deliveryType': self.deliveryType,
- 'receiverCompany': self.receiverCompany,
- },
- }
- url1 = 'https://bfm.cs.jikimo.com/api/create/jd/order'
- requests.post(url1, json=json1, data=None)
+ # if self.carrier_id == '京东物流':
+ createTime = str(datetime.now())
+ json1 = {
+ 'params': {
+ 'orderNo': self.origin,
+ 'senderNickName': self.senderNickName,
+ 'receiverName': self.receiverName,
+ 'receiverMobile': self.receiverMobile,
+ 'receiverProvinceName': self.receiverProvinceName,
+ 'receiverCityName': self.receiverCityName,
+ 'receiverCountyName': self.receiverCountyName,
+ 'receiverTownName': self.receiverTownName,
+ 'remark': self.remark,
+ 'grossWeight': self.grossWeight,
+ 'grossVolume': self.grossVolume,
+ 'createTime': createTime,
+ 'createUser': self.user_id,
+ 'expressItemName': self.expressItemName,
+ 'pickupBeginTime': self.pickupBeginTime,
+ 'deliveryType': self.deliveryType,
+ 'receiverCompany': self.receiverCompany,
+ },
+ }
+ _logger.info('准备调接口')
+ url1 = 'https://bfm.cs.jikimo.com/api/create/jd/order'
+ requests.post(url1, json=json1, data=None)
+ _logger.info('调用成功')
- else:
- raise UserError("选择京东物流才能下单呦")
+
+ # else:
+ # raise UserError("选择京东物流才能下单呦")
def get_bill(self):
@@ -78,5 +82,5 @@ class JdEclp(models.Model):
'no': self.origin,
},
}
- url1 = 'https://bfm.cs.jikimo.com/api/create/jd/order'
+ url1 = 'https://bfm.cs.jikimo.com/api/api/create/jd/bill'
requests.post(url1, json=json1, data=None)
diff --git a/sf_bf_connect/views/view.xml b/sf_bf_connect/views/view.xml
index 2661e972..31bf9ffa 100644
--- a/sf_bf_connect/views/view.xml
+++ b/sf_bf_connect/views/view.xml
@@ -17,8 +17,10 @@
+
+
From d7d468a8b5469344cdfabbb2e19f2dc2da0c0fe2 Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Tue, 14 Feb 2023 12:39:02 +0800
Subject: [PATCH 4/7] =?UTF-8?q?=E4=B8=8B=E5=8D=95=E6=8E=A5=E5=8F=A3?=
=?UTF-8?q?=E5=B7=B2=E8=B7=91=E9=80=9A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_bf_connect/controllers/controllers.py | 10 +++++-----
sf_bf_connect/models/jd_eclp.py | 22 ++++++++++++++++------
2 files changed, 21 insertions(+), 11 deletions(-)
diff --git a/sf_bf_connect/controllers/controllers.py b/sf_bf_connect/controllers/controllers.py
index 306f36f2..cf027993 100644
--- a/sf_bf_connect/controllers/controllers.py
+++ b/sf_bf_connect/controllers/controllers.py
@@ -129,11 +129,11 @@ class jdElcp(http.Controller):
"""
回调函数:拿到京东返回的下单数据
"""
- logging.info('get_jd_bill================:%s', kw)
- aa = request.env['stock.picking'].sudo().search([('origin', '=', kw['orderNo'])])
- aa.carrier_tracking_ref = kw['wbNo']
- logging.info('get_jd_order================:%s' %
- aa.carrier_tracking_ref)
+ logging.info('get_jd_order================:%s', kw)
+ # aa = request.env['stock.picking'].sudo().search([('origin', '=', kw['orderNo'])])
+ # aa.carrier_tracking_ref = kw['wbNo']
+ # logging.info('get_jd_order================:%s' %
+ # aa.carrier_tracking_ref)
@http.route('/api/jd_create/bill', type='http', auth='none', methods=['GET', 'POST'], csrf=False,
cors="*")
diff --git a/sf_bf_connect/models/jd_eclp.py b/sf_bf_connect/models/jd_eclp.py
index 44679c3b..276ac14a 100644
--- a/sf_bf_connect/models/jd_eclp.py
+++ b/sf_bf_connect/models/jd_eclp.py
@@ -20,9 +20,9 @@ class JdEclp(models.Model):
receiverCountyName = fields.Char(string='收件人县', compute='_truck_info')
receiverTownName = fields.Char(string='收件人详细地址', compute='_truck_info')
receiverCompany = fields.Char(string='收货人公司', required=True)
- remark = fields.Char(string='物流面单备注')
- grossWeight = fields.Char(string='总重量', required=True)
- grossVolume = fields.Char(string='总体积')
+ remark = fields.Char(string='物流面单备注', default='无')
+ grossWeight = fields.Char(string='总重量', required=True, default=0)
+ grossVolume = fields.Char(string='总体积', default=0)
expressItemName = fields.Char(string='货物名称', required=True, default='非标工件')
pickupBeginTime = fields.Char(string='期望取件时间')
deliveryType = fields.Selection([('6', '特快零担'), ('25', '特快重货')], string='运输类型', default='25')
@@ -59,17 +59,27 @@ class JdEclp(models.Model):
'grossWeight': self.grossWeight,
'grossVolume': self.grossVolume,
'createTime': createTime,
- 'createUser': self.user_id,
+ # 'createUser': self.user_id,
'expressItemName': self.expressItemName,
'pickupBeginTime': self.pickupBeginTime,
'deliveryType': self.deliveryType,
'receiverCompany': self.receiverCompany,
},
}
- _logger.info('准备调接口')
+ _logger.info('准备调接口1')
url1 = 'https://bfm.cs.jikimo.com/api/create/jd/order'
requests.post(url1, json=json1, data=None)
- _logger.info('调用成功')
+ _logger.info('调用成功1')
+ _logger.info('准备调接口2')
+ json2 = {
+ 'params': {
+ 'orderNo': self.origin,
+ },
+ }
+ url2 = 'https://bfm.cs.jikimo.com/api/get/jd/no'
+ response = requests.post(url2, json=json2, data=None)
+ # _logger.info('调用成功2', response.json()['result']['wbNo'])
+ self.carrier_tracking_ref = response.json()['result']['wbNo']
# else:
From e05459b8425a0aa37a94221fee99193a1d91c911 Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Tue, 14 Feb 2023 22:48:38 +0800
Subject: [PATCH 5/7] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E9=9D=A2=E5=8D=95?=
=?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=B7=B2=E8=B7=91=E9=80=9A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_bf_connect/models/jd_eclp.py | 34 ++++++++++++++++++++++++++++++---
sf_bf_connect/views/view.xml | 1 +
2 files changed, 32 insertions(+), 3 deletions(-)
diff --git a/sf_bf_connect/models/jd_eclp.py b/sf_bf_connect/models/jd_eclp.py
index 276ac14a..b240c3a8 100644
--- a/sf_bf_connect/models/jd_eclp.py
+++ b/sf_bf_connect/models/jd_eclp.py
@@ -5,6 +5,7 @@ import jionlp as jio
import logging
from odoo.exceptions import UserError
import requests
+import base64
_logger = logging.getLogger(__name__)
@@ -26,7 +27,9 @@ class JdEclp(models.Model):
expressItemName = fields.Char(string='货物名称', required=True, default='非标工件')
pickupBeginTime = fields.Char(string='期望取件时间')
deliveryType = fields.Selection([('6', '特快零担'), ('25', '特快重货')], string='运输类型', default='25')
- bill = fields.Char(string='快递面单')
+ bill = fields.Char(string='物流面单')
+
+ # bill = fields.Many2one('ir.attachment', string='物流面单')
@api.depends('origin')
def _truck_info(self):
@@ -92,5 +95,30 @@ class JdEclp(models.Model):
'no': self.origin,
},
}
- url1 = 'https://bfm.cs.jikimo.com/api/api/create/jd/bill'
- requests.post(url1, json=json1, data=None)
+ url1 = 'https://bfm.cs.jikimo.com/api/create/jd/bill'
+ response = requests.post(url1, json=json1, data=None)
+ # _logger.info('调用成功2', response.json())
+
+ # _logger.info('调用成功2', response.text)
+ bill_url_str = response.json()['result']['jingdong_eclp_co_generateBdWayBillFile_responce']['result']['content']
+ bill_url = 'http:' + bill_url_str
+ data = base64.b64encode(requests.get(bill_url).content)
+ # self.bill = bill_url
+ _logger.info('调用成功2')
+ attachment = self.env['ir.attachment'].sudo().create({
+ 'datas': data,
+ 'type': 'binary',
+ 'description': '快递面单',
+ 'name': self.carrier_tracking_ref,
+ # 'res_id': invoice.id,
+ # 'res_model': 'stock.picking',
+ 'public': True,
+ 'mimetype': 'application/pdf',
+ # 'model_name': 'stock.picking',
+ })
+ _logger.info(attachment)
+ # _logger.info(attachment.datas)
+ # _logger.info(attachment.datas_fname)
+
+
+
diff --git a/sf_bf_connect/views/view.xml b/sf_bf_connect/views/view.xml
index 31bf9ffa..43d5ad3d 100644
--- a/sf_bf_connect/views/view.xml
+++ b/sf_bf_connect/views/view.xml
@@ -20,6 +20,7 @@
+
From 3423622a77f5c0c668d0c5b93e90c6c3d7d61244 Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Wed, 15 Feb 2023 12:07:05 +0800
Subject: [PATCH 6/7] =?UTF-8?q?=E7=89=A9=E6=B5=81=E9=9D=A2=E5=8D=95?=
=?UTF-8?q?=E5=8F=AF=E4=BD=9C=E4=B8=BA=E9=99=84=E4=BB=B6=E5=AD=98=E5=9C=A8?=
=?UTF-8?q?odoo=E4=B8=AD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_bf_connect/models/jd_eclp.py | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/sf_bf_connect/models/jd_eclp.py b/sf_bf_connect/models/jd_eclp.py
index b240c3a8..5c775a9b 100644
--- a/sf_bf_connect/models/jd_eclp.py
+++ b/sf_bf_connect/models/jd_eclp.py
@@ -27,9 +27,14 @@ class JdEclp(models.Model):
expressItemName = fields.Char(string='货物名称', required=True, default='非标工件')
pickupBeginTime = fields.Char(string='期望取件时间')
deliveryType = fields.Selection([('6', '特快零担'), ('25', '特快重货')], string='运输类型', default='25')
- bill = fields.Char(string='物流面单')
+ # bill = fields.Char(string='物流面单')
+
+ bill = fields.Many2one('ir.attachment', string='物流面单', compute='query_bill_pdf')
+
+ @api.depends('carrier_tracking_ref')
+ def query_bill_pdf(self):
+ self.bill = self.env['ir.attachment'].sudo().search([('name', '=', self.carrier_tracking_ref)])
- # bill = fields.Many2one('ir.attachment', string='物流面单')
@api.depends('origin')
def _truck_info(self):
@@ -103,7 +108,7 @@ class JdEclp(models.Model):
bill_url_str = response.json()['result']['jingdong_eclp_co_generateBdWayBillFile_responce']['result']['content']
bill_url = 'http:' + bill_url_str
data = base64.b64encode(requests.get(bill_url).content)
- # self.bill = bill_url
+ # self.bill = ''
_logger.info('调用成功2')
attachment = self.env['ir.attachment'].sudo().create({
'datas': data,
From f67c1fb71908c6061bd60be954efb293441d964f Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Fri, 17 Feb 2023 15:17:22 +0800
Subject: [PATCH 7/7] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=89=A9=E6=B5=81?=
=?UTF-8?q?=E9=9D=A2=E5=8D=95=E6=89=93=E5=8D=B0=E6=8A=A5=E5=91=8A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_bf_connect/__manifest__.py | 1 +
sf_bf_connect/models/jd_eclp.py | 3 +
sf_bf_connect/report/bill_report.xml | 84 ++++++++++++++++++++++++++++
sf_bf_connect/views/view.xml | 4 ++
4 files changed, 92 insertions(+)
create mode 100644 sf_bf_connect/report/bill_report.xml
diff --git a/sf_bf_connect/__manifest__.py b/sf_bf_connect/__manifest__.py
index 6b893476..bcec62fa 100644
--- a/sf_bf_connect/__manifest__.py
+++ b/sf_bf_connect/__manifest__.py
@@ -14,6 +14,7 @@
'data': [
'views/res_partner_view.xml',
'views/view.xml',
+ 'report/bill_report.xml',
],
'demo': [
],
diff --git a/sf_bf_connect/models/jd_eclp.py b/sf_bf_connect/models/jd_eclp.py
index 5c775a9b..4733f2a6 100644
--- a/sf_bf_connect/models/jd_eclp.py
+++ b/sf_bf_connect/models/jd_eclp.py
@@ -30,6 +30,8 @@ class JdEclp(models.Model):
# bill = fields.Char(string='物流面单')
bill = fields.Many2one('ir.attachment', string='物流面单', compute='query_bill_pdf')
+ # bill_show = fields.Binary(string='物流面单展示', readonly=True, related='self.bill.datas')
+ bill_show = fields.Binary(string='物流面单展示', readonly=True)
@api.depends('carrier_tracking_ref')
def query_bill_pdf(self):
@@ -109,6 +111,7 @@ class JdEclp(models.Model):
bill_url = 'http:' + bill_url_str
data = base64.b64encode(requests.get(bill_url).content)
# self.bill = ''
+ self.bill_show = data
_logger.info('调用成功2')
attachment = self.env['ir.attachment'].sudo().create({
'datas': data,
diff --git a/sf_bf_connect/report/bill_report.xml b/sf_bf_connect/report/bill_report.xml
new file mode 100644
index 00000000..6b7ce2dc
--- /dev/null
+++ b/sf_bf_connect/report/bill_report.xml
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 面单打印
+ stock.picking
+ qweb-pdf
+ sf_bf_connect.bill_report_template
+ (object.carrier_tracking_ref)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sf_bf_connect/views/view.xml b/sf_bf_connect/views/view.xml
index 43d5ad3d..2aec5078 100644
--- a/sf_bf_connect/views/view.xml
+++ b/sf_bf_connect/views/view.xml
@@ -22,6 +22,10 @@
+
+
+
+