97 lines
4.2 KiB
Python
97 lines
4.2 KiB
Python
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'
|
|
|
|
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='物流面单备注', 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')
|
|
bill = fields.Char(string='快递面单')
|
|
|
|
@api.depends('origin')
|
|
def _truck_info(self):
|
|
sale_order_id = self.env['sale.order'].search([('name', '=', self.origin)])
|
|
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,
|
|
},
|
|
}
|
|
_logger.info('准备调接口1')
|
|
url1 = 'https://bfm.cs.jikimo.com/api/create/jd/order'
|
|
requests.post(url1, json=json1, data=None)
|
|
_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:
|
|
# raise UserError("选择京东物流才能下单呦")
|
|
|
|
def get_bill(self):
|
|
|
|
json1 = {
|
|
'params': {
|
|
'no': self.origin,
|
|
},
|
|
}
|
|
url1 = 'https://bfm.cs.jikimo.com/api/api/create/jd/bill'
|
|
requests.post(url1, json=json1, data=None)
|