Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
H
hh_ccs
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
贺阳
hh_ccs
Commits
2fe1df61
提交
2fe1df61
authored
8月 26, 2024
作者:
贺阳
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新状态的时候判断上一个状态是否推送过以及更新的状态是否已推送过,回写到排除的字段
如果根据单号 每个单号的状态不一样,提示必须要状态一样 增加是否跳过检查的标准,勾上,不做检查上一个状态是否推送过或更改的状态已推送过
上级
d5f56c8e
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
83 行增加
和
26 行删除
+83
-26
batch_input_ship_package_statu_wizard.xml
ccs_base/wizard/batch_input_ship_package_statu_wizard.xml
+2
-2
batch_input_ship_package_statu_wizard.py
...ct_tiktok/wizard/batch_input_ship_package_statu_wizard.py
+74
-21
batch_input_ship_package_statu_wizard.xml
...t_tiktok/wizard/batch_input_ship_package_statu_wizard.xml
+7
-3
没有找到文件。
ccs_base/wizard/batch_input_ship_package_statu_wizard.xml
浏览文件 @
2fe1df61
...
...
@@ -18,9 +18,9 @@
attrs=
"{'invisible':[('select_type','=','tracking_no')],'required':[('select_type','=','node')]}"
domain=
"[('node_type','=','package')]"
/>
<field
name=
"next_code_ids"
invisible=
"1"
/>
<field
name=
"exclude_tracking_no"
<field
name=
"exclude_tracking_no"
placeholder=
"多个单号 换行隔开"
attrs=
"{'invisible':[('select_type','=','tracking_no')]}"
/>
<field
name=
"select_tracking_no"
<field
name=
"select_tracking_no"
placeholder=
"多个单号用‘,’符隔开"
attrs=
"{'invisible':[('select_type','=','node')],'required':[('select_type','=','tracking_no')]}"
/>
<field
name=
"update_package_count"
/>
<separator/>
...
...
ccs_connect_tiktok/wizard/batch_input_ship_package_statu_wizard.py
浏览文件 @
2fe1df61
...
...
@@ -11,41 +11,94 @@ class BatchInputShipPackageStatusWizard(models.TransientModel):
_inherit
=
'batch.input.ship.package.status.wizard'
_description
=
'批量更新小包状态向导'
@api.depends
(
'select_type'
,
'update_status'
,
'current_status'
)
is_skip_check
=
fields
.
Boolean
(
'Skip Check'
,
default
=
False
)
@api.depends
(
'select_type'
,
'select_tracking_no'
,
'update_status'
,
'current_status'
,
'is_skip_check'
)
def
cal_ship_package_ids
(
self
):
"""
比如 已提货 --- 清关开始,选择了清关开始之后 把已提货状态的小包且更新日志明细包含了 清关开始 的编码的 小包显示出来
比如有10个小包 有3个是推过的,7个没推过的 要把3个推送给的放到排除里
已提货的判断是否推送过
如果根据单号 每个单号的状态不一样,提示必须要状态一样
"""
for
item
in
self
:
package_ids
=
[]
package_obj
=
False
package_model
=
self
.
env
[
'cc.ship.package'
]
if
item
.
select_type
==
'tracking_no'
:
if
item
.
select_tracking_no
:
tracking_no_list
=
item
.
select_tracking_no
.
split
(
','
)
tracking_no_list
=
[
i
.
strip
()
for
i
in
tracking_no_list
if
i
.
strip
()]
package_obj
=
package_model
.
search
(
[(
'bl_id'
,
'='
,
item
.
bl_id
.
id
),
(
'tracking_no'
,
'in'
,
tracking_no_list
)])
else
:
# 获取所有的小包
if
item
.
current_status
:
package_obj
=
package_model
.
search
(
[(
'bl_id'
,
'='
,
item
.
bl_id
.
id
),
(
'state'
,
'='
,
item
.
current_status
.
id
)])
if
package_obj
:
# 更新日志明细包含了 清关开始 的 小包
log_obj
=
self
.
env
[
'cc.ship.package.sync.log'
]
.
search
(
[(
'package_id'
,
'in'
,
package_obj
.
ids
),
(
'process_code'
,
'='
,
item
.
update_status
.
tk_code
)])
package_ids
=
log_obj
.
mapped
(
'package_id'
)
.
ids
package_ids
=
item
.
get_exception_ship_package
()
item
.
ship_package_ids
=
[(
6
,
0
,
package_ids
)]
@api.onchange
(
'ship_package_ids'
)
def
change_ship_package_ids
(
self
):
"""
给排除单号的字段赋值
"""
for
item
in
self
:
exclude_tracking_no
=
''
if
item
.
ship_package_ids
:
exclude_tracking_no
=
','
.
join
([
line
.
tracking_no
for
line
in
item
.
ship_package_ids
])
item
.
exclude_tracking_no
=
exclude_tracking_no
ship_package_ids
=
fields
.
Many2many
(
'cc.ship.package'
,
'_update_state_package_wizard_rel'
,
'wizard_id'
,
'package_id'
,
'Have Node Package'
,
compute
=
'cal_ship_package_ids'
)
def
get_exception_ship_package
(
self
):
"""
比如 已提货 --- 清关开始,选择了清关开始之后 把已提货状态的小包且更新日志明细包含了 清关开始 的编码的 小包显示出来
比如有10个小包 有3个是推过的,7个没推过的 要把3个推送给的放到排除里
已提货的判断是否推送过
如果根据单号 每个单号的状态不一样,提示必须要状态一样
"""
item
=
self
package_ids
=
[]
package_obj
=
False
package_model
=
self
.
env
[
'cc.ship.package'
]
if
item
.
select_type
==
'tracking_no'
:
if
item
.
select_tracking_no
:
tracking_no_list
=
item
.
select_tracking_no
.
split
(
','
)
tracking_no_list
=
[
i
.
strip
()
for
i
in
tracking_no_list
if
i
.
strip
()]
package_obj
=
package_model
.
search
(
[(
'bl_id'
,
'='
,
item
.
bl_id
.
id
),
(
'tracking_no'
,
'in'
,
tracking_no_list
)])
# 如果不是同一个状态 进行提示
state_arr
=
[
package
.
state
.
id
for
package
in
package_obj
]
if
len
(
state_arr
)
>
0
:
state_arr
=
set
(
state_arr
)
if
len
(
state_arr
)
>
1
:
raise
ValidationError
(
'填写的小包单号状态必须一致!'
)
else
:
# 获取所有的小包
if
item
.
current_status
:
package_obj
=
package_model
.
search
(
[(
'bl_id'
,
'='
,
item
.
bl_id
.
id
),
(
'state'
,
'='
,
item
.
current_status
.
id
)])
if
package_obj
and
not
item
.
is_skip_check
:
# 更新日志里没有已提货的小包
for
package_item
in
package_obj
:
current_state_log_obj
=
self
.
env
[
'cc.ship.package.sync.log'
]
.
search
(
[(
'package_id'
,
'='
,
package_item
.
id
),
(
'process_code'
,
'='
,
item
.
current_status
.
tk_code
)])
if
not
current_state_log_obj
:
package_ids
+=
package_item
.
ids
# 更新日志明细包含了 清关开始 的 小包
update_state_log_obj
=
self
.
env
[
'cc.ship.package.sync.log'
]
.
search
(
[(
'package_id'
,
'in'
,
package_obj
.
ids
),
(
'process_code'
,
'='
,
item
.
update_status
.
tk_code
)])
package_ids
+=
update_state_log_obj
.
mapped
(
'package_id'
)
.
ids
return
package_ids
def
submit
(
self
):
# 判断排除的面单号是否都存在 异常小包中
if
not
self
.
is_skip_check
:
if
self
.
select_type
==
'node'
:
exclude_waybill_no_list
=
[]
if
self
.
exclude_tracking_no
:
exclude_waybill_no_list
=
self
.
exclude_tracking_no
.
split
(
'
\n
'
)
exclude_waybill_no_list
=
[
i
.
strip
()
for
i
in
exclude_waybill_no_list
if
i
.
strip
()]
package_obj
=
self
.
ship_package_ids
.
filtered
(
lambda
r
:
r
.
tracking_no
not
in
exclude_waybill_no_list
)
if
len
(
package_obj
)
>
0
:
raise
ValidationError
(
'单号[
%
s]需填写在排除单号中'
%
'
\n
'
.
join
([
package
.
tracking_no
for
package
in
package_obj
]))
else
:
if
len
(
self
.
ship_package_ids
)
>
0
:
raise
ValidationError
(
'单号[
%
s]不能更新'
%
','
.
join
([
package
.
tracking_no
for
package
in
self
.
ship_package_ids
]))
obj
=
super
(
BatchInputShipPackageStatusWizard
,
self
)
.
submit
()
# 生成sns日志
self
.
bl_id
.
message_post
(
body
=
'[
%
s]
%
s更新为[
%
s]
%
s'
%
(
self
.
current_status
.
tk_code
or
''
,
self
.
current_status
.
name
or
''
,
self
.
update_status
.
tk_code
or
''
,
self
.
update_status
.
name
or
''
))
# 跳转显示本次更新状态的小包
return
obj
ccs_connect_tiktok/wizard/batch_input_ship_package_statu_wizard.xml
浏览文件 @
2fe1df61
...
...
@@ -10,12 +10,16 @@
<field
name=
"model"
>
batch.input.ship.package.status.wizard
</field>
<field
name=
"inherit_id"
ref=
"ccs_base.view_batch_input_ship_package_wizard"
/>
<field
name=
"arch"
type=
"xml"
>
<field
name=
"bl_id"
position=
"after"
>
<field
name=
"is_skip_check"
/>
</field>
<field
name=
"update_status"
position=
"after"
>
<field
name=
"ship_package_ids"
widget=
"one2many"
readonly=
"1"
>
<field
name=
"ship_package_ids"
widget=
"one2many"
readonly=
"1"
invisible=
"1"
>
<tree>
<field
name=
"logistic_order_no"
/>
<field
name=
"tracking_no"
/>
<field
name=
"state"
/>
<field
name=
"tracking_no"
/>
<field
name=
"state"
/>
</tree>
</field>
</field>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论