提交 7392050b authored 作者: 伍姿英's avatar 伍姿英

Merge branch 'release/3.4.0'

...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
'wizard/associate_pallet_wizard_views.xml', 'wizard/associate_pallet_wizard_views.xml',
'wizard/add_exception_info_wizard_views.xml', 'wizard/add_exception_info_wizard_views.xml',
'wizard/email_template.xml', 'wizard/email_template.xml',
'wizard/bl_done_wizard_views.xml',
'data/data.xml', 'data/data.xml',
'data/timer.xml', 'data/timer.xml',
'data/sequence.xml', 'data/sequence.xml',
......
...@@ -6,8 +6,8 @@ msgid "" ...@@ -6,8 +6,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Odoo Server 16.0\n" "Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-23 09:28+0000\n" "POT-Creation-Date: 2025-10-11 07:55+0000\n"
"PO-Revision-Date: 2025-09-23 17:30+0800\n" "PO-Revision-Date: 2025-10-11 15:59+0800\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"Language: zh\n" "Language: zh\n"
...@@ -698,6 +698,15 @@ msgstr "提单重量" ...@@ -698,6 +698,15 @@ msgstr "提单重量"
msgid "Bl" msgid "Bl"
msgstr "提单" msgstr "提单"
#. module: ccs_base
#. odoo-python
#: code:addons/ccs_base/models/cc_bill_loading.py:0
#: model:ir.model,name:ccs_base.model_bl_done_wizard
#: model_terms:ir.ui.view,arch_db:ccs_base.view_bl_done_wizard
#, python-format
msgid "Bl Done Wizard"
msgstr "提单完成向导"
#. module: ccs_base #. module: ccs_base
#: model:ir.model.fields.selection,name:ccs_base.selection__cc_progress__handover_type__broker_delivery #: model:ir.model.fields.selection,name:ccs_base.selection__cc_progress__handover_type__broker_delivery
msgid "Broker Delivery" msgid "Broker Delivery"
...@@ -938,6 +947,7 @@ msgstr "清关文件" ...@@ -938,6 +947,7 @@ msgstr "清关文件"
#: model_terms:ir.ui.view,arch_db:ccs_base.view_associate_pallet_wizard #: model_terms:ir.ui.view,arch_db:ccs_base.view_associate_pallet_wizard
#: model_terms:ir.ui.view,arch_db:ccs_base.view_batch_input_ship_package_wizard #: model_terms:ir.ui.view,arch_db:ccs_base.view_batch_input_ship_package_wizard
#: model_terms:ir.ui.view,arch_db:ccs_base.view_batch_update_transfer_bl_no_wizard #: model_terms:ir.ui.view,arch_db:ccs_base.view_batch_update_transfer_bl_no_wizard
#: model_terms:ir.ui.view,arch_db:ccs_base.view_bl_done_wizard
#: model_terms:ir.ui.view,arch_db:ccs_base.view_export_bl_big_package_xlsx_wizard #: model_terms:ir.ui.view,arch_db:ccs_base.view_export_bl_big_package_xlsx_wizard
#: model_terms:ir.ui.view,arch_db:ccs_base.view_update_bl_status_wizard #: model_terms:ir.ui.view,arch_db:ccs_base.view_update_bl_status_wizard
msgid "Close" msgid "Close"
...@@ -973,6 +983,7 @@ msgstr "配置设置" ...@@ -973,6 +983,7 @@ msgstr "配置设置"
#. module: ccs_base #. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.view_add_exception_info_wizard #: model_terms:ir.ui.view,arch_db:ccs_base.view_add_exception_info_wizard
#: model_terms:ir.ui.view,arch_db:ccs_base.view_associate_pallet_wizard #: model_terms:ir.ui.view,arch_db:ccs_base.view_associate_pallet_wizard
#: model_terms:ir.ui.view,arch_db:ccs_base.view_bl_done_wizard
msgid "Confirm" msgid "Confirm"
msgstr "确认" msgstr "确认"
...@@ -1021,6 +1032,7 @@ msgstr "快递名称" ...@@ -1021,6 +1032,7 @@ msgstr "快递名称"
#: model:ir.model.fields,field_description:ccs_base.field_associate_pallet_wizard__create_uid #: model:ir.model.fields,field_description:ccs_base.field_associate_pallet_wizard__create_uid
#: model:ir.model.fields,field_description:ccs_base.field_batch_input_ship_package_status_wizard__create_uid #: model:ir.model.fields,field_description:ccs_base.field_batch_input_ship_package_status_wizard__create_uid
#: model:ir.model.fields,field_description:ccs_base.field_batch_update_transfer_bl_no_wizard__create_uid #: model:ir.model.fields,field_description:ccs_base.field_batch_update_transfer_bl_no_wizard__create_uid
#: model:ir.model.fields,field_description:ccs_base.field_bl_done_wizard__create_uid
#: model:ir.model.fields,field_description:ccs_base.field_cc_big_package__create_uid #: model:ir.model.fields,field_description:ccs_base.field_cc_big_package__create_uid
#: model:ir.model.fields,field_description:ccs_base.field_cc_bl__create_uid #: model:ir.model.fields,field_description:ccs_base.field_cc_bl__create_uid
#: model:ir.model.fields,field_description:ccs_base.field_cc_clearance_file__create_uid #: model:ir.model.fields,field_description:ccs_base.field_cc_clearance_file__create_uid
...@@ -1050,6 +1062,7 @@ msgstr "创建人" ...@@ -1050,6 +1062,7 @@ msgstr "创建人"
#: model:ir.model.fields,field_description:ccs_base.field_associate_pallet_wizard__create_date #: model:ir.model.fields,field_description:ccs_base.field_associate_pallet_wizard__create_date
#: model:ir.model.fields,field_description:ccs_base.field_batch_input_ship_package_status_wizard__create_date #: model:ir.model.fields,field_description:ccs_base.field_batch_input_ship_package_status_wizard__create_date
#: model:ir.model.fields,field_description:ccs_base.field_batch_update_transfer_bl_no_wizard__create_date #: model:ir.model.fields,field_description:ccs_base.field_batch_update_transfer_bl_no_wizard__create_date
#: model:ir.model.fields,field_description:ccs_base.field_bl_done_wizard__create_date
#: model:ir.model.fields,field_description:ccs_base.field_cc_big_package__create_date #: model:ir.model.fields,field_description:ccs_base.field_cc_big_package__create_date
#: model:ir.model.fields,field_description:ccs_base.field_cc_bl__create_date #: model:ir.model.fields,field_description:ccs_base.field_cc_bl__create_date
#: model:ir.model.fields,field_description:ccs_base.field_cc_clearance_file__create_date #: model:ir.model.fields,field_description:ccs_base.field_cc_clearance_file__create_date
...@@ -1239,6 +1252,7 @@ msgstr "消费者地址" ...@@ -1239,6 +1252,7 @@ msgstr "消费者地址"
#: model:ir.model.fields,field_description:ccs_base.field_associate_pallet_wizard__display_name #: model:ir.model.fields,field_description:ccs_base.field_associate_pallet_wizard__display_name
#: model:ir.model.fields,field_description:ccs_base.field_batch_input_ship_package_status_wizard__display_name #: model:ir.model.fields,field_description:ccs_base.field_batch_input_ship_package_status_wizard__display_name
#: model:ir.model.fields,field_description:ccs_base.field_batch_update_transfer_bl_no_wizard__display_name #: model:ir.model.fields,field_description:ccs_base.field_batch_update_transfer_bl_no_wizard__display_name
#: model:ir.model.fields,field_description:ccs_base.field_bl_done_wizard__display_name
#: model:ir.model.fields,field_description:ccs_base.field_cc_big_package__display_name #: model:ir.model.fields,field_description:ccs_base.field_cc_big_package__display_name
#: model:ir.model.fields,field_description:ccs_base.field_cc_bl__display_name #: model:ir.model.fields,field_description:ccs_base.field_cc_bl__display_name
#: model:ir.model.fields,field_description:ccs_base.field_cc_clearance_file__display_name #: model:ir.model.fields,field_description:ccs_base.field_cc_clearance_file__display_name
...@@ -1352,7 +1366,7 @@ msgstr "异常数据" ...@@ -1352,7 +1366,7 @@ msgstr "异常数据"
#: code:addons/ccs_base/wizard/batch_update_transfer_bl_no_wizard.py:0 #: code:addons/ccs_base/wizard/batch_update_transfer_bl_no_wizard.py:0
#, python-format #, python-format
msgid "Error Reason" msgid "Error Reason"
msgstr "" msgstr "异常原因"
#. module: ccs_base #. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_cc_exception_info__exception_code #: model:ir.model.fields,field_description:ccs_base.field_cc_exception_info__exception_code
...@@ -1380,6 +1394,7 @@ msgstr "异常邮件通知" ...@@ -1380,6 +1394,7 @@ msgstr "异常邮件通知"
#. module: ccs_base #. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_batch_input_ship_package_status_wizard__node_exception_reason_id #: model:ir.model.fields,field_description:ccs_base.field_batch_input_ship_package_status_wizard__node_exception_reason_id
#: model:ir.model.fields,field_description:ccs_base.field_bl_done_wizard__exception_reason
#: model:ir.model.fields,field_description:ccs_base.field_cc_exception_info__reason #: model:ir.model.fields,field_description:ccs_base.field_cc_exception_info__reason
#: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__node_exception_reason_id #: model:ir.model.fields,field_description:ccs_base.field_cc_history_ship_package__node_exception_reason_id
#: model:ir.model.fields,field_description:ccs_base.field_cc_ship_package__node_exception_reason_id #: model:ir.model.fields,field_description:ccs_base.field_cc_ship_package__node_exception_reason_id
...@@ -1647,6 +1662,7 @@ msgstr "历史小包" ...@@ -1647,6 +1662,7 @@ msgstr "历史小包"
#: model:ir.model.fields,field_description:ccs_base.field_associate_pallet_wizard__id #: model:ir.model.fields,field_description:ccs_base.field_associate_pallet_wizard__id
#: model:ir.model.fields,field_description:ccs_base.field_batch_input_ship_package_status_wizard__id #: model:ir.model.fields,field_description:ccs_base.field_batch_input_ship_package_status_wizard__id
#: model:ir.model.fields,field_description:ccs_base.field_batch_update_transfer_bl_no_wizard__id #: model:ir.model.fields,field_description:ccs_base.field_batch_update_transfer_bl_no_wizard__id
#: model:ir.model.fields,field_description:ccs_base.field_bl_done_wizard__id
#: model:ir.model.fields,field_description:ccs_base.field_cc_big_package__id #: model:ir.model.fields,field_description:ccs_base.field_cc_big_package__id
#: model:ir.model.fields,field_description:ccs_base.field_cc_bl__id #: model:ir.model.fields,field_description:ccs_base.field_cc_bl__id
#: model:ir.model.fields,field_description:ccs_base.field_cc_clearance_file__id #: model:ir.model.fields,field_description:ccs_base.field_cc_clearance_file__id
...@@ -1724,6 +1740,11 @@ msgstr "" ...@@ -1724,6 +1740,11 @@ msgstr ""
msgid "If checked, some messages have a delivery error." msgid "If checked, some messages have a delivery error."
msgstr "" msgstr ""
#. module: ccs_base
#: model:ir.model.fields,field_description:ccs_base.field_bl_done_wizard__ignore_node_exception
msgid "Ignore Node Exception"
msgstr "忽略节点异常"
#. module: ccs_base #. module: ccs_base
#: model_terms:ir.ui.view,arch_db:ccs_base.view_batch_update_transfer_bl_no_wizard #: model_terms:ir.ui.view,arch_db:ccs_base.view_batch_update_transfer_bl_no_wizard
msgid "Import" msgid "Import"
...@@ -1966,6 +1987,7 @@ msgstr "尾程服务商" ...@@ -1966,6 +1987,7 @@ msgstr "尾程服务商"
#: model:ir.model.fields,field_description:ccs_base.field_associate_pallet_wizard____last_update #: model:ir.model.fields,field_description:ccs_base.field_associate_pallet_wizard____last_update
#: model:ir.model.fields,field_description:ccs_base.field_batch_input_ship_package_status_wizard____last_update #: model:ir.model.fields,field_description:ccs_base.field_batch_input_ship_package_status_wizard____last_update
#: model:ir.model.fields,field_description:ccs_base.field_batch_update_transfer_bl_no_wizard____last_update #: model:ir.model.fields,field_description:ccs_base.field_batch_update_transfer_bl_no_wizard____last_update
#: model:ir.model.fields,field_description:ccs_base.field_bl_done_wizard____last_update
#: model:ir.model.fields,field_description:ccs_base.field_cc_big_package____last_update #: model:ir.model.fields,field_description:ccs_base.field_cc_big_package____last_update
#: model:ir.model.fields,field_description:ccs_base.field_cc_bl____last_update #: model:ir.model.fields,field_description:ccs_base.field_cc_bl____last_update
#: model:ir.model.fields,field_description:ccs_base.field_cc_clearance_file____last_update #: model:ir.model.fields,field_description:ccs_base.field_cc_clearance_file____last_update
...@@ -2001,6 +2023,7 @@ msgstr "最近操作时间" ...@@ -2001,6 +2023,7 @@ msgstr "最近操作时间"
#: model:ir.model.fields,field_description:ccs_base.field_associate_pallet_wizard__write_uid #: model:ir.model.fields,field_description:ccs_base.field_associate_pallet_wizard__write_uid
#: model:ir.model.fields,field_description:ccs_base.field_batch_input_ship_package_status_wizard__write_uid #: model:ir.model.fields,field_description:ccs_base.field_batch_input_ship_package_status_wizard__write_uid
#: model:ir.model.fields,field_description:ccs_base.field_batch_update_transfer_bl_no_wizard__write_uid #: model:ir.model.fields,field_description:ccs_base.field_batch_update_transfer_bl_no_wizard__write_uid
#: model:ir.model.fields,field_description:ccs_base.field_bl_done_wizard__write_uid
#: model:ir.model.fields,field_description:ccs_base.field_cc_big_package__write_uid #: model:ir.model.fields,field_description:ccs_base.field_cc_big_package__write_uid
#: model:ir.model.fields,field_description:ccs_base.field_cc_bl__write_uid #: model:ir.model.fields,field_description:ccs_base.field_cc_bl__write_uid
#: model:ir.model.fields,field_description:ccs_base.field_cc_clearance_file__write_uid #: model:ir.model.fields,field_description:ccs_base.field_cc_clearance_file__write_uid
...@@ -2030,6 +2053,7 @@ msgstr "最后更新人" ...@@ -2030,6 +2053,7 @@ msgstr "最后更新人"
#: model:ir.model.fields,field_description:ccs_base.field_associate_pallet_wizard__write_date #: model:ir.model.fields,field_description:ccs_base.field_associate_pallet_wizard__write_date
#: model:ir.model.fields,field_description:ccs_base.field_batch_input_ship_package_status_wizard__write_date #: model:ir.model.fields,field_description:ccs_base.field_batch_input_ship_package_status_wizard__write_date
#: model:ir.model.fields,field_description:ccs_base.field_batch_update_transfer_bl_no_wizard__write_date #: model:ir.model.fields,field_description:ccs_base.field_batch_update_transfer_bl_no_wizard__write_date
#: model:ir.model.fields,field_description:ccs_base.field_bl_done_wizard__write_date
#: model:ir.model.fields,field_description:ccs_base.field_cc_big_package__write_date #: model:ir.model.fields,field_description:ccs_base.field_cc_big_package__write_date
#: model:ir.model.fields,field_description:ccs_base.field_cc_bl__write_date #: model:ir.model.fields,field_description:ccs_base.field_cc_bl__write_date
#: model:ir.model.fields,field_description:ccs_base.field_cc_clearance_file__write_date #: model:ir.model.fields,field_description:ccs_base.field_cc_clearance_file__write_date
...@@ -3390,6 +3414,13 @@ msgstr "物流订单号必须唯一。" ...@@ -3390,6 +3414,13 @@ msgstr "物流订单号必须唯一。"
msgid "The Transfer B/L No. must be unique." msgid "The Transfer B/L No. must be unique."
msgstr "转单号必填" msgstr "转单号必填"
#. module: ccs_base
#. odoo-python
#: code:addons/ccs_base/models/cc_bill_loading.py:0
#, python-format
msgid "The bill of loading is completed, but the node exception reason is %s!"
msgstr "提单已完成,但是节点异常,原因是:%s!"
#. module: ccs_base #. module: ccs_base
#. odoo-python #. odoo-python
#: code:addons/ccs_base/models/cc_bill_loading.py:0 #: code:addons/ccs_base/models/cc_bill_loading.py:0
......
...@@ -799,6 +799,27 @@ class CcBL(models.Model): ...@@ -799,6 +799,27 @@ class CcBL(models.Model):
wizard_obj = wizard_obj.with_context(dict(self._context, active_id=self.id)) wizard_obj = wizard_obj.with_context(dict(self._context, active_id=self.id))
wizard_obj.submit() wizard_obj.submit()
def check_push_clear_customs_start(self, utc_time):
"""检查清关开始"""
push_node_obj = self.env['cc.node'].sudo().search(
[('node_type', '=', 'package'), ('tk_code', '=', 'cb_imcustoms_start')], limit=1)
node_obj = self.env['cc.node'].sudo().search([('node_type', '=', 'package'), ('seq', '<', push_node_obj.seq)],
order='seq desc',
limit=1)
vals = {
'bl_id': self.id,
'bl_count': 1,
'current_status': node_obj.id,
'update_status': push_node_obj.id,
'process_time': utc_time,
'is_ok': True
}
wizard_obj = self.env['batch.input.ship.package.status.wizard'].sudo().create(vals)
wizard_obj.change_ship_package_ids()
wizard_obj = wizard_obj.with_context(dict(self._context, active_id=self.id))
parcels = wizard_obj.get_process_package()
return parcels
def push_clear_customs_end(self, utc_time): def push_clear_customs_end(self, utc_time):
# 创建向导 # 创建向导
push_node_obj = self.env['cc.node'].sudo().search( push_node_obj = self.env['cc.node'].sudo().search(
...@@ -828,31 +849,53 @@ class CcBL(models.Model): ...@@ -828,31 +849,53 @@ class CcBL(models.Model):
if item.state == 'draft': if item.state == 'draft':
item.state = 'ccing' item.state = 'ccing'
def complete_func(self): def action_done(self):
"""点完成按钮,状态变为已完成""" """
跳转完成向导
:return:
"""
for item in self: for item in self:
if item.state != 'ccing': if item.state != 'ccing':
raise ValidationError( raise ValidationError(
_('Only the status of the bill of loading is ccing can be completed!')) # 只有清关中状态的提单可以完成 _('Only the status of the bill of loading is ccing can be completed!')) # 只有清关中状态的提单可以完成
item.check_is_done() return {
'name': _('Bl Done Wizard'),
'type': 'ir.actions.act_window',
'res_model': 'bl.done.wizard',
'view_mode': 'form',
'target': 'new',
'context': {
'active_id': self.ids,
'active_name': self[0]._name,
}
}
def check_is_done(self, is_email=False): def check_is_done(self, is_email=False,**kwargs):
# 如果提单所有小包的清关节点变成"是完成节点",则该提单状态变成已完成.tk模块有继承 # 如果提单所有小包的清关节点变成"是完成节点",则该提单状态变成已完成.tk模块有继承
if all(line.state.is_done for line in if all(line.state.is_done for line in
self.ship_package_ids) and self.customs_clearance_status.is_done and self.is_bl_sync: self.ship_package_ids) and self.customs_clearance_status.is_done and self.is_bl_sync:
self.done_func(is_email) self.done_func(is_email,**kwargs)
else: else:
if not is_email: if not is_email:
raise ValidationError( raise ValidationError(
_('The small package node or bill of lading node is not in the completed node, and the bill of lading cannot be changed to completed!')) # 小包节点或提单节点不在已完成节点,提单不能变为已完成! _('The small package node or bill of lading node is not in the completed node, and the bill of lading cannot be changed to completed!')) # 小包节点或提单节点不在已完成节点,提单不能变为已完成!
def done_func(self, is_email=False): def done_func(self, is_email=False,**kwargs):
""" """
变为已完成 变为已完成
""" """
for item in self: for item in self:
if item.state == 'ccing': if item.state == 'ccing':
item.state = 'done' item.state = 'done'
# 如果选择了忽略节点异常,则记录异常原因
if kwargs.get('exception_reason'):
exception_reason = kwargs['exception_reason']
#输出当前用户是什么语言
if self.env.user.lang == 'zh_CN':
message = '提单已完成,但存在节点异常,原因是:%s!' % exception_reason
else:
message = 'The bill of loading is completed, but the node exception reason is %s!' % exception_reason
item.message_post(body=message)
def action_recall(self): def action_recall(self):
"""追回操作,将状态从已完成改为清关中""" """追回操作,将状态从已完成改为清关中"""
......
...@@ -179,6 +179,7 @@ class OrderStateChangeRule(models.Model): ...@@ -179,6 +179,7 @@ class OrderStateChangeRule(models.Model):
def fetch_mail_dlv_attachment(self, **kwargs): def fetch_mail_dlv_attachment(self, **kwargs):
attachment_arr = kwargs['attachment_arr'] attachment_arr = kwargs['attachment_arr']
mail_arr = []
for attachment_tuple in attachment_arr: for attachment_tuple in attachment_arr:
try: try:
attachment_name, attachment_data = attachment_tuple attachment_name, attachment_data = attachment_tuple
...@@ -205,11 +206,38 @@ class OrderStateChangeRule(models.Model): ...@@ -205,11 +206,38 @@ class OrderStateChangeRule(models.Model):
if redis_conn == 'no': if redis_conn == 'no':
raise ValidationError('未连接redis') raise ValidationError('未连接redis')
else: else:
if bl_obj.check_push_clear_customs_start(utc_time.strftime("%Y-%m-%d %H:%M:%S")):
redis_conn.lpush('mail_push_package_list', json.dumps( redis_conn.lpush('mail_push_package_list', json.dumps(
{'id': bl_obj.id, 'user_login': users_obj.login, {'id': bl_obj.id, 'user_login': users_obj.login,
'utc_time': utc_time.strftime("%Y-%m-%d %H:%M:%S")})) 'utc_time': utc_time.strftime("%Y-%m-%d %H:%M:%S")}))
else:
mail_arr.append(bl_obj)
except Exception as err: except Exception as err:
logging.error('fetch_mail_dlv_attachment--error:%s' % str(err)) logging.error('fetch_mail_dlv_attachment--error:%s' % str(err))
if mail_arr:
# order_no_arr = [i.bl_no for i in mail_arr]
order_no = ''.join([f"<p>{item.bl_no}</p>" for item in mail_arr])
content = f"""
<p>您好:
以下提单接收到清关邮件,但未触发清关结束或清关开始节点的变动,请查看原因,并手动处理</p>
{order_no}
<p>请立即处理,避免推送超时!</p>"""
# 给客户配置的每个邮箱都发送邮件
patrol_sender_email = self.env["ir.config_parameter"].sudo().get_param('patrol_sender_email') or ''
patrol_receiver_emails = self.env["ir.config_parameter"].sudo().get_param('patrol_receiver_emails') or ''
mail = self.env['mail.mail'].sudo().create({
"email_from": patrol_sender_email,
'subject': '清关节点邮件未触发提醒',
'body_html': content,
'email_to': patrol_receiver_emails
# 'email_to': "1663490807@qq.com,820656583@qq.com"
})
mail.send()
for i in range(2):
if mail.failure_reason:
logging.info('邮件发送失败原因:%s' % mail.failure_reason)
mail.write({'state': 'outgoing'})
mail.send()
def find_final_email_text(self, email_body): def find_final_email_text(self, email_body):
"""匹配尾程pod邮件内容""" """匹配尾程pod邮件内容"""
......
...@@ -5,6 +5,7 @@ associate_pallet_wizard_group_user,associate_pallet_wizard_group_user,model_asso ...@@ -5,6 +5,7 @@ associate_pallet_wizard_group_user,associate_pallet_wizard_group_user,model_asso
add_exception_info_wizard_group_user,add_exception_info_wizard_group_user,ccs_base.model_add_exception_info_wizard,base.group_user,1,1,1,1 add_exception_info_wizard_group_user,add_exception_info_wizard_group_user,ccs_base.model_add_exception_info_wizard,base.group_user,1,1,1,1
update_bl_status_wizard_group_user,update_bl_status_wizard_group_user,ccs_base.model_update_bl_status_wizard,base.group_user,1,1,1,1 update_bl_status_wizard_group_user,update_bl_status_wizard_group_user,ccs_base.model_update_bl_status_wizard,base.group_user,1,1,1,1
batch_update_transfer_bl_no_wizard_group_user,batch_update_transfer_bl_no_wizard_group_user,ccs_base.model_batch_update_transfer_bl_no_wizard,base.group_user,1,1,1,1 batch_update_transfer_bl_no_wizard_group_user,batch_update_transfer_bl_no_wizard_group_user,ccs_base.model_batch_update_transfer_bl_no_wizard,base.group_user,1,1,1,1
bl_done_wizard_group_user,bl_done_wizard_group_user,ccs_base.model_bl_done_wizard,base.group_user,1,1,1,1
access_group_user_common_common,access_group_user_common_common,model_common_common,base.group_user,1,1,1,1 access_group_user_common_common,access_group_user_common_common,model_common_common,base.group_user,1,1,1,1
......
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
'default_last_process_time':process_time,'default_current_status':customs_clearance_status}"/> 'default_last_process_time':process_time,'default_current_status':customs_clearance_status}"/>
<!-- 完成按钮 - 仅在清关中状态显示,仅清关员和清关经理可操作 --> <!-- 完成按钮 - 仅在清关中状态显示,仅清关员和清关经理可操作 -->
<button name="complete_func" type="object" class="oe_highlight" <button name="action_done" type="object" class="oe_highlight"
string="Complete" attrs="{'invisible': [('state', '!=', 'ccing')]}" string="Complete" attrs="{'invisible': [('state', '!=', 'ccing')]}"
groups="ccs_base.group_clearance_of_customs_user,ccs_base.group_clearance_of_customs_manager"/> groups="ccs_base.group_clearance_of_customs_user,ccs_base.group_clearance_of_customs_manager"/>
...@@ -461,7 +461,7 @@ ...@@ -461,7 +461,7 @@
<field name="groups_id" eval="[(4, ref('ccs_base.group_clearance_of_customs_user'))]"/> <field name="groups_id" eval="[(4, ref('ccs_base.group_clearance_of_customs_user'))]"/>
<field name="code"> <field name="code">
if records: if records:
action = records.complete_func() action = records.action_done()
</field> </field>
</record> </record>
......
...@@ -6,4 +6,5 @@ from . import associate_pallet_wizard ...@@ -6,4 +6,5 @@ from . import associate_pallet_wizard
from . import add_exception_info_wizard from . import add_exception_info_wizard
from . import update_bl_status_wizard from . import update_bl_status_wizard
from . import batch_update_transfer_bl_no_wizard from . import batch_update_transfer_bl_no_wizard
from . import bl_done_wizard
# -*- coding: utf-8 -*-
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import logging
from odoo import models, fields, api, _
from odoo.exceptions import UserError
class BlDoneWizard(models.TransientModel):
_name = 'bl.done.wizard'
_description = 'Bl Done Wizard'
def get_order(self):
order_id = self._context.get('active_id')
if type(order_id) != list:
order_id = [self._context.get('active_id')]
return self.env[self._context.get('active_name')].browse(order_id)
#忽略节点异常:☑️【默认不勾选】
ignore_node_exception = fields.Boolean(string='Ignore Node Exception', default=False)
# 节点异常原因*:【必填,勾选了忽略节点异常才必填,该字段记录在sns日志里】
exception_reason = fields.Text(string='Exception Reason') # 异常原因
def confirm(self):
bl_obj = self.get_order()
#若选择了忽略节点异常,不用管提单关务节点状态是否完成,若有预警,也需发送邮件,并且将该提单置为已完成;
if self.ignore_node_exception:
bl_obj.done_func(is_email=True, exception_reason=self.exception_reason)
else:
bl_obj.check_is_done(is_email=False)
<odoo>
<record id="view_bl_done_wizard" model="ir.ui.view">
<field name="name">bl.done.wizard.form</field>
<field name="model">bl.done.wizard</field>
<field name="arch" type="xml">
<form string="Bl Done Wizard">
<sheet>
<group>
<field name="ignore_node_exception"/>
<!-- 勾选了忽略节点异常才必填 -->
<field name="exception_reason" attrs="{'required': [('ignore_node_exception', '=', True)],'invisible': [('ignore_node_exception', '=', False)]}"/> <!-- 异常原因 -->
</group>
<footer>
<button string="Confirm" type="object" name="confirm" class="btn-primary"/>
<button string="Close" special="cancel"/>
</footer>
</sheet>
</form>
</field>
</record>
</odoo>
\ No newline at end of file
...@@ -457,7 +457,7 @@ class CcBl(models.Model): ...@@ -457,7 +457,7 @@ class CcBl(models.Model):
raise ValidationError( raise ValidationError(
_('The small package node or bill of lading node is not in the completed node, and the bill of lading cannot be changed to completed!')) # 小包节点或提单节点不在已完成节点,提单不能变为已完成! _('The small package node or bill of lading node is not in the completed node, and the bill of lading cannot be changed to completed!')) # 小包节点或提单节点不在已完成节点,提单不能变为已完成!
def done_func(self, is_email=False): def done_func(self, is_email=False,**kwargs):
""" """
变为已完成.先进行提单巡查,再进行提单状态变更 变为已完成.先进行提单巡查,再进行提单状态变更
""" """
...@@ -474,8 +474,8 @@ class CcBl(models.Model): ...@@ -474,8 +474,8 @@ class CcBl(models.Model):
# 把错误的进行提示 # 把错误的进行提示
content = self.get_patrol_email_content(result) content = self.get_patrol_email_content(result)
raise ValidationError(content) raise ValidationError(content)
if is_success: if is_success or kwargs.get('exception_reason'):
super(CcBl, self).done_func(is_email=is_email) super(CcBl, self).done_func(is_email=is_email,**kwargs)
def check_bl_patrol(self): def check_bl_patrol(self):
""" """
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论