提交 e9f1f2c7 authored 作者: 贺阳's avatar 贺阳

pda扫码判断提单是否已有扫码记录且是否超时间

上级 ef681cb0
# -*- coding: utf-8 -*-
import json
import logging
from datetime import datetime
from odoo import http, exceptions
# from odoo.addons.queue_job import job
from odoo.http import request
from odoo import fields
_logger = logging.getLogger(__name__)
......@@ -163,7 +163,7 @@ class OrderController(http.Controller):
res['state'] = 400
res['message'] = time_check_result['message']
return res
# 继续原有的处理逻辑...
ship_packages = []
......@@ -313,10 +313,11 @@ class OrderController(http.Controller):
}
res['message'] = null_msg_dic[pda_lang]
except Exception as e:
logging.info('update_big_package_tally_detail error:%s' % e)
error = str(e)
logging.info('update_big_package_tally_detail error:%s' % error)
exceptions_msg_dic = {
'en': 'System parsing error, the reason for the error is %s' % e,
'zh': '系统解析错误,错误原因是%s' % e
'en': 'System parsing error, the reason for the error is %s' % error,
'zh': '系统解析错误,错误原因是%s' % error
}
res['message'] = exceptions_msg_dic[pda_lang]
# 创建失败的pda扫码记录
......@@ -327,9 +328,10 @@ class OrderController(http.Controller):
bill_number=bl_obj.bl_no,
transfer_number=bl_obj.transfer_bl_no,
state='failed',
bl_id=bl_obj.id)
bl_id=bl_obj.id, failure_reason=error)
else:
request.env['pda.scan.record'].sudo().create_scan_record(operation, action_type, '', '', 'failed')
request.env['pda.scan.record'].sudo().create_scan_record(operation, action_type, '', '', 'failed',
failure_reason=error)
logging.info('res:%s' % res)
return res
......@@ -349,6 +351,31 @@ class OrderController(http.Controller):
try:
logging.info('update_pro_big_package_tally_detail kw:%s' % kwargs)
if action_type and (kwargs.get('big_package_arr') or kwargs.get('ship_package_arr')):
# 按尾程交货时,检查时间风险 大包或小包对应的提单是否已存在成功扫码记录
if action_type == 'handover':
all_bl_ids_in_request = set()
if kwargs.get('ship_package_arr'):
for pkg_item in kwargs['ship_package_arr']:
pkg_obj = request.env['cc.ship.package'].sudo().search(
[('logistic_order_no', '=', pkg_item.get('logistic_order_no'))], limit=1)
if pkg_obj and pkg_obj.bl_id:
all_bl_ids_in_request.add(pkg_obj.bl_id.id)
if kwargs.get('big_package_arr'):
for pkg_item in kwargs['big_package_arr']:
pkg_obj = request.env['cc.big.package'].sudo().search(
[('big_package_no', '=', pkg_item.get('big_package_no'))], limit=1)
if pkg_obj and pkg_obj.bl_id:
all_bl_ids_in_request.add(pkg_obj.bl_id.id)
if all_bl_ids_in_request:
for bl_id in all_bl_ids_in_request:
bl_obj = request.env['cc.bl'].sudo().browse(bl_id)
time_check_result = self._check_delivery_time_risk(bl_obj, pda_lang, 'tail_tally')
if time_check_result['has_risk']:
res['state'] = 400
res['message'] = time_check_result['message']
return res
logging.info(f"all_bl_ids_in_request: {all_bl_ids_in_request}")
# return res
big_package_exception_arr = {}
ship_package_exception_arr = {}
......@@ -408,20 +435,6 @@ class OrderController(http.Controller):
error_no_set.add(package_no)
return error_no_set
# 按尾程交货时,检查时间风险
if action_type == 'handover' and ship_packages:
# 获取所有相关的提单对象
bl_ids = list(set([ship_package.get('bl_id') for ship_package in ship_packages]))
bl_objs = request.env['cc.bl'].sudo().search([('id', 'in', bl_ids)])
# 对每个提单进行时间风险检查
for bl_obj in bl_objs:
time_check_result = self._check_delivery_time_risk(bl_obj, pda_lang)
if time_check_result['has_risk']:
res['state'] = 400
res['message'] = time_check_result['message']
return res
# 处理小包、大包
if kwargs.get('ship_package_arr'):
error_no_arr = process_packages(
......@@ -465,26 +478,23 @@ class OrderController(http.Controller):
email_language=lang)
ship_wizard_obj.confirm() # 发送邮件
res['state'] = 200
logging.info(
'update_big_package_tally_detail ship_packages:%s' % len(ship_packages))
logging.info('update_pro_big_package_tally_detail ship_packages:%s' % len(ship_packages))
# 有小包 就更新小包状态和同步
if ship_packages:
# 在这里创建成功的pda扫码记录
bl_obj = request.env['cc.bl'].sudo().search(
[('id', 'in', [ship_package.get('bl_id') for ship_package in ship_packages])], limit=1)
if bl_obj:
for bl in bl_obj:
request.env['pda.scan.record'].sudo().create_scan_record(
operation=operation,
record_type=action_type,
bill_number=bl.bl_no,
transfer_number=bl.transfer_bl_no,
state='success',
bl_id=bl.id)
[('id', 'in', [ship_package.get('bl_id') for ship_package in ship_packages])])
logging.info(f"bl_obj: {bl_obj}")
for bl in bl_obj:
request.env['pda.scan.record'].sudo().create_scan_record(
operation=operation,
record_type=action_type,
bill_number=bl.bl_no,
transfer_number=bl.transfer_bl_no,
state='success',
bl_id=bl.id)
redis_conn = request.env['common.common'].sudo().get_redis()
if redis_conn and redis_conn != 'no':
# redis_conn.lpush('push_ship_package_state', json.dumps(
# {'bl_id': bl_obj.id, 'ship_package_ids': ship_package_ids}))
bl_ids = [ship_package.get('bl_id') for ship_package in ship_packages]
logging.info('bl_ids:%s' % bl_ids)
redis_conn.lpush('mail_push_package_list', json.dumps(
......@@ -498,10 +508,11 @@ class OrderController(http.Controller):
}
res['message'] = null_msg_dic[pda_lang]
except Exception as e:
logging.info('update_pro_big_package_tally_detail error:%s' % e)
error = str(e)
logging.info('update_pro_big_package_tally_detail error:%s' % error)
exceptions_msg_dic = {
'en': 'System parsing error, the reason for the error is %s' % e,
'zh': '系统解析错误,错误原因是%s' % e
'en': 'System parsing error, the reason for the error is %s' % error,
'zh': '系统解析错误,错误原因是%s' % error
}
res['message'] = exceptions_msg_dic[pda_lang]
# 在这里创建失败的pda扫码记录
......@@ -516,9 +527,11 @@ class OrderController(http.Controller):
bill_number=bl.bl_no,
transfer_number=bl.transfer_bl_no,
state='failed',
bl_id=bl.id)
bl_id=bl.id,
failure_reason=error)
else:
request.env['pda.scan.record'].sudo().create_scan_record(operation, action_type, '', '', 'failed')
request.env['pda.scan.record'].sudo().create_scan_record(operation, action_type, '', '', 'failed',
failure_reason=error)
logging.info('res:%s' % res)
return res
......@@ -629,58 +642,51 @@ class OrderController(http.Controller):
provider_info_arr.sort(key=lambda x: x.get('name', ''))
return {'provider_info_arr': provider_info_arr, 'state': 200}
def _check_delivery_time_risk(self, bl_obj, pda_lang='zh'):
def _check_delivery_time_risk(self, bl_obj, pda_lang='zh', operation='bill_tally'):
"""
检查提单交货时间倒序风险
:param bl_obj: 提单对象
:param pda_lang: 语言设置
:return: 检查结果字典
"""
try:
# 获取配置的交货操作晚于提货操作的时间参数(分钟)
config_param = request.env['ir.config_parameter'].sudo().get_param(
'delivery_time', '80' # 使用现有的delivery_time参数,默认80分钟
)
allowed_minutes = int(config_param)
# 查找该提单的PDA扫码记录,类型为理货的
pda_records = request.env['pda.scan.record'].sudo().search([
('bl_id', '=', bl_obj.id),
('operation', '=', 'bill_tally'), # 理货类型
('state', '=', 'success') # 成功状态
], order='create_date desc', limit=1)
if pda_records:
latest_tally_record = pda_records[0]
current_time = fields.Datetime.now()
time_diff = (current_time - latest_tally_record.create_date).total_seconds() / 60
# 如果时间差小于等于配置的参数,则存在风险
if time_diff <= allowed_minutes:
if pda_lang == 'en':
message = f"The bill of lading has not reached the delivery time, and there is a risk of flashback. Please scan the code after {allowed_minutes} minutes."
else:
message = f"该提单未到交货时间,有风险产生倒叙,请间隔{allowed_minutes}分钟后再扫码;"
return {
'has_risk': True,
'message': message,
'time_diff': time_diff,
'allowed_minutes': allowed_minutes
}
return {
'has_risk': False,
'message': '',
'time_diff': 0,
'allowed_minutes': allowed_minutes
}
except Exception as e:
logging.error(f"检查交货时间风险时出错: {str(e)}")
return {
'has_risk': False,
'message': '',
'time_diff': 0,
'allowed_minutes': 0
}
# 获取配置的交货操作晚于提货操作的时间参数(分钟)
config_param = request.env['ir.config_parameter'].sudo().get_param(
'delivery_time', '80' # 使用现有的delivery_time参数,默认80分钟
)
allowed_minutes = int(config_param)
logging.info(f"allowed_minutes: {allowed_minutes}")
# 查找该提单的PDA扫码记录,类型为理货的
pda_records = request.env['pda.scan.record'].sudo().search([
('bl_id', '=', bl_obj.id),
('operation', '=', operation), # 理货类型
('state', '=', 'success') # 成功状态
], order='create_date desc', limit=1)
if pda_records:
latest_tally_record = pda_records[0]
current_time = request.env['common.common'].sudo().get_utc_time(datetime.now())
# Ensure create_date is also timezone-aware (UTC)
create_date = latest_tally_record.create_date
logging.info(f"current_time: {current_time}, latest_tally_record.create_date: {create_date}")
time_diff = (datetime.strptime(current_time, '%Y-%m-%d %H:%M:%S') - create_date).total_seconds() / 60
logging.info(f"time_diff: {time_diff}")
# 如果时间差小于等于配置的参数,则存在风险
if time_diff <= allowed_minutes:
if pda_lang == 'en':
message = f"The bill of lading has not reached the delivery time, and there is a risk of flashback. Please scan the code after {allowed_minutes} minutes."
else:
message = f"该提单未到交货时间,有风险产生倒叙,请间隔{allowed_minutes}分钟后再扫码;"
return {
'has_risk': True,
'message': message,
'time_diff': time_diff,
'allowed_minutes': allowed_minutes
}
return {
'has_risk': False,
'message': '',
'time_diff': 0,
'allowed_minutes': allowed_minutes
}
......@@ -6,11 +6,11 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-19 08:47+0000\n"
"PO-Revision-Date: 2025-03-19 16:51+0800\n"
"POT-Creation-Date: 2025-08-05 06:34+0000\n"
"PO-Revision-Date: 2025-08-05 14:38+0800\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: zh\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
......@@ -25,7 +25,7 @@ msgstr "<span class=\"o_stat_text\">小包</span>"
#. module: ccs_connect_tiktok
#: model_terms:ir.ui.view,arch_db:ccs_connect_tiktok.form_cc_bl_view_inherit
msgid "<span class=\"o_stat_text\">Ship Packages</span>"
msgstr "<span class=\"o_stat_text\">小包</span>"
msgstr "Ship Package"
#. module: ccs_connect_tiktok
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_cc_bl_sync_log__api_customer
......@@ -49,6 +49,11 @@ msgstr ""
msgid "AppSecret"
msgstr ""
#. module: ccs_connect_tiktok
#: model:ir.model,name:ccs_connect_tiktok.model_ir_attachment
msgid "Attachment"
msgstr "附件"
#. module: ccs_connect_tiktok
#: model:ir.actions.server,name:ccs_connect_tiktok.action_batch_sync_bl_status
msgid "Batch Sync Bill Of Loading Status"
......@@ -69,11 +74,43 @@ msgstr "批量更新小包状态向导"
msgid "Big Package"
msgstr "大包"
#. module: ccs_connect_tiktok
#. odoo-python
#: code:addons/ccs_connect_tiktok/models/pda_scan_record.py:0
#: model:ir.model.fields.selection,name:ccs_connect_tiktok.selection__pda_scan_record__operation__bill_handover
#, python-format
msgid "Bill Handover"
msgstr "按提单交货"
#. module: ccs_connect_tiktok
#. odoo-python
#: code:addons/ccs_connect_tiktok/models/pda_scan_record.py:0
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_pda_scan_record__bill_number
#, python-format
msgid "Bill Number"
msgstr "提单号"
#. module: ccs_connect_tiktok
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_cc_bl__bl_sync_log_ids
msgid "Bill Of Loading Sync Logs"
msgstr "关务提单状态同步日志"
#. module: ccs_connect_tiktok
#. odoo-python
#: code:addons/ccs_connect_tiktok/models/pda_scan_record.py:0
#: model:ir.model.fields.selection,name:ccs_connect_tiktok.selection__pda_scan_record__operation__bill_tally
#, python-format
msgid "Bill Tally"
msgstr "按提单理货"
#. module: ccs_connect_tiktok
#. odoo-python
#: code:addons/ccs_connect_tiktok/models/pda_scan_record.py:0
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_pda_scan_record__bl_id
#, python-format
msgid "Bill of Lading"
msgstr "提单"
#. module: ccs_connect_tiktok
#: model:ir.model,name:ccs_connect_tiktok.model_cc_bl
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_cc_bl_sync_log__bl_id
......@@ -134,21 +171,35 @@ msgstr "清关文件"
msgid "Config Settings"
msgstr "配置设置"
#. module: ccs_connect_tiktok
#: model_terms:ir.actions.act_window,help:ccs_connect_tiktok.action_pda_scan_record
msgid "Create your first PDA scan record"
msgstr "创建第一条PDA扫码记录"
#. module: ccs_connect_tiktok
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_ao_tt_api__create_uid
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_ao_tt_api_log__create_uid
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_cc_bl_sync_log__create_uid
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_cc_ship_package_sync_log__create_uid
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_pda_scan_record__create_uid
msgid "Created by"
msgstr ""
msgstr "创建人"
#. module: ccs_connect_tiktok
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_ao_tt_api__create_date
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_ao_tt_api_log__create_date
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_cc_bl_sync_log__create_date
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_cc_ship_package_sync_log__create_date
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_pda_scan_record__create_date
msgid "Created on"
msgstr ""
msgstr "创建时间"
#. module: ccs_connect_tiktok
#. odoo-python
#: code:addons/ccs_connect_tiktok/models/pda_scan_record.py:0
#, python-format
msgid "Creation failed: %s"
msgstr "创建失败: %s"
#. module: ccs_connect_tiktok
#: model:ir.model.fields,help:ccs_connect_tiktok.field_cc_node__interval_minutes
......@@ -160,15 +211,46 @@ msgstr "前置节点之间的默认间隔时间(分钟)。"
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_ao_tt_api_log__display_name
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_cc_bl_sync_log__display_name
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_cc_ship_package_sync_log__display_name
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_pda_scan_record__display_name
msgid "Display Name"
msgstr ""
#. module: ccs_connect_tiktok
#. odoo-python
#: code:addons/ccs_connect_tiktok/models/pda_scan_record.py:0
#: model:ir.model.fields.selection,name:ccs_connect_tiktok.selection__pda_scan_record__state__failed
#, python-format
msgid "Failed"
msgstr "失败"
#. module: ccs_connect_tiktok
#. odoo-python
#: code:addons/ccs_connect_tiktok/models/pda_scan_record.py:0
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_pda_scan_record__failure_reason
#, python-format
msgid "Failure Reason"
msgstr "失败原因"
#. module: ccs_connect_tiktok
#: model_terms:ir.ui.view,arch_db:ccs_connect_tiktok.search_cc_bl_sync_log_view
#: model_terms:ir.ui.view,arch_db:ccs_connect_tiktok.search_cc_ship_package_sync_log_view
msgid "Group By"
msgstr "分组"
#. module: ccs_connect_tiktok
#: model:ir.model,name:ccs_connect_tiktok.model_ir_http
msgid "HTTP Routing"
msgstr "HTTP 路由"
#. module: ccs_connect_tiktok
#. odoo-python
#: code:addons/ccs_connect_tiktok/models/pda_scan_record.py:0
#: model:ir.model.fields.selection,name:ccs_connect_tiktok.selection__pda_scan_record__record_type__handover
#: model_terms:ir.ui.view,arch_db:ccs_connect_tiktok.view_pda_scan_record_search
#, python-format
msgid "Handover"
msgstr "交货"
#. module: ccs_connect_tiktok
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_batch_input_ship_package_status_wizard__ship_package_ids
msgid "Have Node Package"
......@@ -179,6 +261,7 @@ msgstr "已更新节点"
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_ao_tt_api_log__id
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_cc_bl_sync_log__id
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_cc_ship_package_sync_log__id
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_pda_scan_record__id
msgid "ID"
msgstr ""
......@@ -198,6 +281,7 @@ msgstr "是否同步"
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_ao_tt_api_log____last_update
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_cc_bl_sync_log____last_update
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_cc_ship_package_sync_log____last_update
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_pda_scan_record____last_update
msgid "Last Modified on"
msgstr ""
......@@ -206,6 +290,7 @@ msgstr ""
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_ao_tt_api_log__write_uid
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_cc_bl_sync_log__write_uid
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_cc_ship_package_sync_log__write_uid
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_pda_scan_record__write_uid
msgid "Last Updated by"
msgstr ""
......@@ -214,6 +299,7 @@ msgstr ""
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_ao_tt_api_log__write_date
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_cc_bl_sync_log__write_date
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_cc_ship_package_sync_log__write_date
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_pda_scan_record__write_date
msgid "Last Updated on"
msgstr ""
......@@ -225,8 +311,6 @@ msgstr "未同步"
#. module: ccs_connect_tiktok
#. odoo-python
#: code:addons/ccs_connect_tiktok/models/cc_bill_loading.py:0
#: code:addons/ccs_connect_tiktok/models/cc_bill_loading_new.py:0
#: code:addons/ccs_connect_tiktok/models/cc_bill_loading_old.py:0
#, python-format
msgid "Not Sync Ship Packages"
msgstr "待同步小包"
......@@ -263,6 +347,27 @@ msgstr "操作时间"
msgid "Operate User"
msgstr "操作人"
#. module: ccs_connect_tiktok
#. odoo-python
#: code:addons/ccs_connect_tiktok/models/pda_scan_record.py:0
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_pda_scan_record__operation
#, python-format
msgid "Operation"
msgstr "操作"
#. module: ccs_connect_tiktok
#. odoo-python
#: code:addons/ccs_connect_tiktok/models/pda_scan_record.py:0
#: model:ir.actions.act_window,name:ccs_connect_tiktok.action_pda_scan_record
#: model:ir.model,name:ccs_connect_tiktok.model_pda_scan_record
#: model:ir.ui.menu,name:ccs_connect_tiktok.menu_pda_scan_record
#: model_terms:ir.ui.view,arch_db:ccs_connect_tiktok.view_pda_scan_record_form
#: model_terms:ir.ui.view,arch_db:ccs_connect_tiktok.view_pda_scan_record_search
#: model_terms:ir.ui.view,arch_db:ccs_connect_tiktok.view_pda_scan_record_tree
#, python-format
msgid "PDA Scan Record"
msgstr "PDA扫码记录"
#. module: ccs_connect_tiktok
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_cc_node__interval_minutes
msgid "Predecessor Node Interval (Minutes)"
......@@ -300,11 +405,34 @@ msgstr "小包"
msgid "Skip Check"
msgstr "跳过检查"
#. module: ccs_connect_tiktok
#. odoo-python
#: code:addons/ccs_connect_tiktok/models/ir_attachment.py:0
#, python-format
msgid "Sorry, you are not allowed to access this document."
msgstr ""
#. module: ccs_connect_tiktok
#. odoo-python
#: code:addons/ccs_connect_tiktok/models/pda_scan_record.py:0
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_pda_scan_record__state
#, python-format
msgid "State"
msgstr "状态"
#. module: ccs_connect_tiktok
#: model_terms:ir.ui.view,arch_db:ccs_connect_tiktok.form_cc_bl_view_inherit
msgid "State Explain"
msgstr "状态说明"
#. module: ccs_connect_tiktok
#. odoo-python
#: code:addons/ccs_connect_tiktok/models/pda_scan_record.py:0
#: model:ir.model.fields.selection,name:ccs_connect_tiktok.selection__pda_scan_record__state__success
#, python-format
msgid "Success"
msgstr "成功"
#. module: ccs_connect_tiktok
#: model_terms:ir.ui.view,arch_db:ccs_connect_tiktok.form_cc_bl_view_inherit
msgid "Sync Bill Of Loading Status"
......@@ -377,6 +505,31 @@ msgstr "编码"
msgid "TK Process Code"
msgstr "进度编码"
#. module: ccs_connect_tiktok
#. odoo-python
#: code:addons/ccs_connect_tiktok/models/pda_scan_record.py:0
#: model:ir.model.fields.selection,name:ccs_connect_tiktok.selection__pda_scan_record__operation__tail_handover
#, python-format
msgid "Tail Handover"
msgstr "按尾程交货"
#. module: ccs_connect_tiktok
#. odoo-python
#: code:addons/ccs_connect_tiktok/models/pda_scan_record.py:0
#: model:ir.model.fields.selection,name:ccs_connect_tiktok.selection__pda_scan_record__operation__tail_tally
#, python-format
msgid "Tail Tally"
msgstr "按尾程理货"
#. module: ccs_connect_tiktok
#. odoo-python
#: code:addons/ccs_connect_tiktok/models/pda_scan_record.py:0
#: model:ir.model.fields.selection,name:ccs_connect_tiktok.selection__pda_scan_record__record_type__tally
#: model_terms:ir.ui.view,arch_db:ccs_connect_tiktok.view_pda_scan_record_search
#, python-format
msgid "Tally"
msgstr "理货"
#. module: ccs_connect_tiktok
#. odoo-python
#: code:addons/ccs_connect_tiktok/wizard/batch_input_ship_package_statu_wizard.py:0
......@@ -403,6 +556,22 @@ msgid ""
"number!"
msgstr "单号【%s】需填写在排除单号中!"
#. module: ccs_connect_tiktok
#. odoo-python
#: code:addons/ccs_connect_tiktok/models/pda_scan_record.py:0
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_pda_scan_record__transfer_number
#, python-format
msgid "Transfer Number"
msgstr "转运单号"
#. module: ccs_connect_tiktok
#. odoo-python
#: code:addons/ccs_connect_tiktok/models/pda_scan_record.py:0
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_pda_scan_record__record_type
#, python-format
msgid "Type"
msgstr "类型"
#. module: ccs_connect_tiktok
#: model_terms:ir.ui.view,arch_db:ccs_connect_tiktok.tree_cc_bl_view_inherit
msgid "UnSync Package Count"
......@@ -477,6 +646,11 @@ msgstr ""
msgid "业务信息"
msgstr ""
#. module: ccs_connect_tiktok
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_res_config_settings__delivery_time
msgid "交货操作晚于提货操作X分钟"
msgstr ""
#. module: ccs_connect_tiktok
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_ao_tt_api_log__push_time
msgid "产生时间"
......@@ -507,6 +681,12 @@ msgstr ""
msgid "失败原因"
msgstr ""
#. module: ccs_connect_tiktok
#: model:ir.actions.server,name:ccs_connect_tiktok.cron_delete_log_ir_actions_server
#: model:ir.cron,cron_name:ccs_connect_tiktok.cron_delete_log
msgid "定时删除历史日志"
msgstr ""
#. module: ccs_connect_tiktok
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_res_config_settings__tt_customer_id
msgid "客户"
......@@ -542,6 +722,11 @@ msgstr ""
msgid "推出"
msgstr ""
#. module: ccs_connect_tiktok
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_pda_scan_record__operator_id
msgid "操作人"
msgstr ""
#. module: ccs_connect_tiktok
#: model_terms:ir.ui.view,arch_db:ccs_connect_tiktok.search_ao_tt_api_log_view
msgid "昨日日志"
......@@ -578,93 +763,3 @@ msgstr ""
#: model_terms:ir.ui.view,arch_db:ccs_connect_tiktok.search_ao_tt_api_log_view
msgid "近7日日志"
msgstr ""
#. module: ccs_connect_tiktok
#: model:ir.model,name:ccs_connect_tiktok.model_pda_scan_record
msgid "PDA Scan Record"
msgstr "PDA扫码记录"
#. module: ccs_connect_tiktok
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_pda_scan_record__operation
msgid "Operation"
msgstr "操作"
#. module: ccs_connect_tiktok
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_pda_scan_record__record_type
msgid "Type"
msgstr "类型"
#. module: ccs_connect_tiktok
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_pda_scan_record__bill_number
msgid "Bill Number"
msgstr "提单号"
#. module: ccs_connect_tiktok
#: model:ir.model.fields,field_description:ccs_connect_tiktok.field_pda_scan_record__transfer_number
msgid "Transfer Number"
msgstr "转运单号"
#. module: ccs_connect_tiktok
#: model:ir.model.fields.selection,name:ccs_connect_tiktok.selection__pda_scan_record__operation__bill_tally
msgid "Bill Tally"
msgstr "按提单理货"
#. module: ccs_connect_tiktok
#: model:ir.model.fields.selection,name:ccs_connect_tiktok.selection__pda_scan_record__operation__tail_tally
msgid "Tail Tally"
msgstr "按尾程理货"
#. module: ccs_connect_tiktok
#: model:ir.model.fields.selection,name:ccs_connect_tiktok.selection__pda_scan_record__operation__bill_handover
msgid "Bill Handover"
msgstr "按提单交货"
#. module: ccs_connect_tiktok
#: model:ir.model.fields.selection,name:ccs_connect_tiktok.selection__pda_scan_record__operation__tail_handover
msgid "Tail Handover"
msgstr "按尾程交货"
#. module: ccs_connect_tiktok
#: model:ir.model.fields.selection,name:ccs_connect_tiktok.selection__pda_scan_record__record_type__tally
msgid "Tally"
msgstr "理货"
#. module: ccs_connect_tiktok
#: model:ir.model.fields.selection,name:ccs_connect_tiktok.selection__pda_scan_record__record_type__handover
msgid "Handover"
msgstr "交货"
#. module: ccs_connect_tiktok
#: model:ir.actions.act_window,name:ccs_connect_tiktok.action_pda_scan_record
#: model:ir.ui.menu,name:ccs_connect_tiktok.menu_pda_scan_record
msgid "PDA Scan Record"
msgstr "PDA扫码记录"
#. module: ccs_connect_tiktok
#: model_terms:ir.ui.view,arch_db:ccs_connect_tiktok.view_pda_scan_record_search
msgid "Tally"
msgstr "理货"
#. module: ccs_connect_tiktok
#: model_terms:ir.ui.view,arch_db:ccs_connect_tiktok.view_pda_scan_record_search
msgid "Handover"
msgstr "交货"
#. module: ccs_connect_tiktok
#: model_terms:ir.actions.act_window,help:ccs_connect_tiktok.action_pda_scan_record
msgid "Create your first PDA scan record"
msgstr "创建第一条PDA扫码记录"
#. module: ccs_connect_tiktok
#. odoo-python
#: code:addons/ccs_connect_tiktok/models/pda_scan_record.py:0
#, python-format
msgid "Scan record created successfully"
msgstr "扫码记录创建成功"
#. module: ccs_connect_tiktok
#. odoo-python
#: code:addons/ccs_connect_tiktok/models/pda_scan_record.py:0
#, python-format
msgid "Creation failed: %s"
msgstr "创建失败: %s"
......@@ -8,6 +8,7 @@ class PDAScanRecord(models.Model):
_name = 'pda.scan.record'
_description = _('PDA Scan Record') # PDA扫码记录
_order = 'create_date desc'
_rec_name = 'bill_number'
@api.onchange('operation')
def _onchange_operation(self):
......@@ -39,9 +40,10 @@ class PDAScanRecord(models.Model):
('success', _('Success')),
('failed', _('Failed'))
], string=_('State'), required=True)
failure_reason = fields.Char(string=_('Failure Reason')) # 失败原因
@api.model
def create_scan_record(self, operation, record_type, bill_number, transfer_number, state, operator_id=False, bl_id=False):
def create_scan_record(self, operation, record_type, bill_number, transfer_number, state, operator_id=False, bl_id=False,failure_reason=False):
"""
创建扫码记录的方法,供接口调用
Create scan record method for API calls
......@@ -63,7 +65,8 @@ class PDAScanRecord(models.Model):
'bill_number': bill_number,
'transfer_number': transfer_number,
'bl_id': bl_id,
'state': state
'state': state,
'failure_reason': failure_reason
})
return {
'success': True,
......
......@@ -16,7 +16,7 @@ class ResConfigSettings(models.TransientModel):
tt_version = fields.Char('接口版本', default='3.0')
tt_customer_id = fields.Many2one('res.partner', string='客户')
#交货操作晚于提货操作X分钟【默认80分钟】
delivery_time = fields.Integer('交货操作晚于提货操作X分钟', default=80)
delivery_time = fields.Integer('交货操作晚于提货操作X分钟', default=80,config_parameter='delivery_time')
@api.model
def get_values(self):
......
......@@ -16,6 +16,7 @@
<field name="transfer_number"/>
<field name="bl_id" invisible="1"/>
<field name="state"/>
<field name="failure_reason" optional="hide"/>
</tree>
</field>
</record>
......@@ -45,6 +46,9 @@
<field name="transfer_number"/>
</group>
</group>
<group>
<field name="failure_reason" attrs="{'invisible': [('state', '=', 'success')]}" />
</group>
</sheet>
</form>
</field>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论