Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
H
hh_ccs
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
贺阳
hh_ccs
Commits
a9d205ab
提交
a9d205ab
authored
3月 11, 2026
作者:
伍姿英
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'release/3.9.1'
上级
8af2ea18
66d35a2b
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
140 行增加
和
0 行删除
+140
-0
__manifest__.py
ccs_connect_tiktok/__manifest__.py
+1
-0
ir.model.access.csv
ccs_connect_tiktok/security/ir.model.access.csv
+2
-0
__init__.py
ccs_connect_tiktok/wizard/__init__.py
+1
-0
excel_wizard.py
ccs_connect_tiktok/wizard/excel_wizard.py
+96
-0
excel_wizard.xml
ccs_connect_tiktok/wizard/excel_wizard.xml
+40
-0
没有找到文件。
ccs_connect_tiktok/__manifest__.py
浏览文件 @
a9d205ab
...
@@ -20,6 +20,7 @@
...
@@ -20,6 +20,7 @@
# wizard
# wizard
'wizard/batch_input_ship_package_statu_wizard.xml'
,
'wizard/batch_input_ship_package_statu_wizard.xml'
,
'wizard/update_bl_status_wizard.xml'
,
'wizard/update_bl_status_wizard.xml'
,
'wizard/excel_wizard.xml'
,
# 'wizard/again_push_wizard.xml',
# 'wizard/again_push_wizard.xml',
# 'wizard/batch_push_tiktok.xml',
# 'wizard/batch_push_tiktok.xml',
# view
# view
...
...
ccs_connect_tiktok/security/ir.model.access.csv
浏览文件 @
a9d205ab
...
@@ -22,3 +22,4 @@ access_pda_scan_record_manager,pda.scan.record.manager,model_pda_scan_record,bas
...
@@ -22,3 +22,4 @@ access_pda_scan_record_manager,pda.scan.record.manager,model_pda_scan_record,bas
access_bl_patrol_user,bl.patrol.user,model_bl_patrol,base.group_user,1,0,0,0
access_bl_patrol_user,bl.patrol.user,model_bl_patrol,base.group_user,1,0,0,0
access_bl_patrol_manager,bl.patrol.manager,model_bl_patrol,base.group_system,1,1,1,1
access_bl_patrol_manager,bl.patrol.manager,model_bl_patrol,base.group_system,1,1,1,1
access_package_data_wizard_base.group_user,package_data_wizard base.group_user,ccs_connect_tiktok.model_package_data_wizard,base.group_user,1,1,1,1
\ No newline at end of file
ccs_connect_tiktok/wizard/__init__.py
浏览文件 @
a9d205ab
...
@@ -5,3 +5,4 @@ from . import batch_input_ship_package_statu_wizard
...
@@ -5,3 +5,4 @@ from . import batch_input_ship_package_statu_wizard
from
.
import
update_bl_status_wizard
from
.
import
update_bl_status_wizard
from
.
import
batch_get_pod_info_wizard
from
.
import
batch_get_pod_info_wizard
from
.
import
excel_wizard
ccs_connect_tiktok/wizard/excel_wizard.py
0 → 100644
浏览文件 @
a9d205ab
# 文件:wizards/collection_receive_wizard.py
import
xlrd
from
odoo
import
models
,
fields
,
api
,
_
from
odoo.exceptions
import
ValidationError
from
datetime
import
date
,
datetime
import
logging
_logger
=
logging
.
getLogger
(
__name__
)
class
PackageDataWizard
(
models
.
TransientModel
):
_name
=
'package.data.wizard'
_description
=
'包裹数据处理'
attachment_ids
=
fields
.
Many2many
(
'ir.attachment'
,
'ref_package_data_attachment'
,
string
=
'附件'
)
node_id
=
fields
.
Many2one
(
'cc.node'
,
string
=
'变更状态'
)
def
get_file_path
(
self
,
report_file_ids
):
"""
得到excel表格的内容
:return:
"""
report_path
=
report_file_ids
.
_full_path
(
report_file_ids
.
store_fname
)
if
report_file_ids
.
name
[
-
3
:]
==
'xls'
:
data
=
xlrd
.
open_workbook
(
report_path
,
formatting_info
=
True
)
else
:
data
=
xlrd
.
open_workbook
(
report_path
)
return
data
def
submit
(
self
):
for
attachment_obj
in
self
.
attachment_ids
:
data
=
self
.
get_file_path
(
attachment_obj
)
first_table
=
data
.
sheets
()[
0
]
try
:
if
self
.
node_id
.
name
==
'待尾程提货'
:
select_node_obj
=
self
.
env
[
'cc.node'
]
.
sudo
()
.
search
([(
'node_type'
,
'='
,
'package'
),
(
'name'
,
'='
,
'已提货'
)],
limit
=
1
)
else
:
select_node_obj
=
self
.
env
[
'cc.node'
]
.
sudo
()
.
search
([(
'node_type'
,
'='
,
'package'
),
(
'name'
,
'='
,
'待尾程提货'
)],
limit
=
1
)
# 新增:定义一个累加器,记录整个 Excel 总共更新了多少个小包
total_updated_count
=
0
for
i
in
range
(
1
,
first_table
.
nrows
):
line
=
first_table
.
row_values
(
i
)
big_no
=
str
(
line
[
0
])
.
strip
()
if
not
big_no
:
continue
lh_time
=
line
[
9
]
wj_time
=
line
[
4
]
# 尾程交货时间
# 大包数据
wj_user_name
=
line
[
3
]
# 尾程交货人
lh_user_name
=
line
[
8
]
# 理货人
pallet_date
=
line
[
5
]
# 托盘日期
pallet_no
=
str
(
line
[
6
])
.
replace
(
'.0'
,
''
)
.
replace
(
' '
,
''
)
# 托盘号
wj_user_obj
=
self
.
env
[
'res.users'
]
.
sudo
()
.
search
([(
'login'
,
'='
,
wj_user_name
)],
limit
=
1
)
lh_user_obj
=
self
.
env
[
'res.users'
]
.
sudo
()
.
search
([(
'login'
,
'='
,
lh_user_name
)],
limit
=
1
)
update_time
=
lh_time
if
self
.
node_id
.
name
==
'待尾程提货'
else
wj_time
ship_package_objs
=
self
.
env
[
'cc.ship.package'
]
.
sudo
()
.
search
([
(
'big_package_id.big_package_no'
,
'='
,
big_no
),
(
'state'
,
'='
,
select_node_obj
.
id
)
])
# 已提货
if
ship_package_objs
:
# 核心修改:计算当前大包查到的小包数量
current_count
=
len
(
ship_package_objs
)
total_updated_count
+=
current_count
# 累加到总数
# 日志记录:每个大包具体查到了多少个小包
_logger
.
info
(
f
"处理第 {i} 行: 大包号 [{big_no}] 查到 {current_count} 个小包准备更新。"
)
sql
=
"""
UPDATE cc_ship_package
SET state =
%
s, process_time =
%
s , is_sync=False
WHERE id IN
%
s
"""
self
.
env
.
cr
.
execute
(
sql
,
(
self
.
node_id
.
id
,
update_time
,
tuple
(
ship_package_objs
.
ids
)))
# 更新大包
big_package_obj
=
self
.
env
[
'cc.big.package'
]
.
sudo
()
.
search
([(
'big_package_no'
,
'='
,
big_no
)],
limit
=
1
)
sql
=
"""
UPDATE cc_big_package
SET pallet_number =
%
s, pallet_usage_date =
%
s , tally_user_id=
%
s,
tally_time =
%
s, delivery_user_id =
%
s , delivery_time=
%
s
WHERE id =
%
s
"""
self
.
env
.
cr
.
execute
(
sql
,
(
pallet_no
,
pallet_date
,
lh_user_obj
.
id
if
lh_user_obj
else
None
,
lh_time
,
wj_user_obj
.
id
if
wj_user_obj
else
None
,
wj_time
,
big_package_obj
.
id
))
pallet_obj
=
self
.
env
[
'cc.pallet'
]
.
sudo
()
.
search
([(
'name'
,
'='
,
pallet_no
)],
limit
=
1
)
pallet_obj
.
usage_state
=
'used'
else
:
# 选做:把没查到数据的大包也用 warning 级别记录下来,方便后期排查漏刷的数据
_logger
.
warning
(
f
"处理第 {i} 行: 大包号 [{big_no}] 未查到状态为'已提货'的小包,跳过更新。"
)
# 循环结束后,记录该文件的最终战果
_logger
.
info
(
f
"==== 附件处理完毕 ==== 整个表格共查到并更新了 {total_updated_count} 个小包!"
)
except
Exception
as
err
:
_logger
.
error
(
f
'package_data_xls error : {str(err)}'
)
ccs_connect_tiktok/wizard/excel_wizard.xml
0 → 100644
浏览文件 @
a9d205ab
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record
id=
"view_package_data_wizard_form"
model=
"ir.ui.view"
>
<field
name=
"name"
>
package.data.wizard.form
</field>
<field
name=
"model"
>
package.data.wizard
</field>
<field
name=
"arch"
type=
"xml"
>
<form
string=
"包裹数据处理向导"
>
<group>
<group>
<field
name=
"attachment_ids"
widget=
"many2many_binary"
string=
"上传Excel附件"
required=
"1"
/>
<field
name=
"node_id"
required=
"1"
domain=
"[('node_type', '=', 'package'), ('name', 'in', ['待尾程提货', '尾程交接'])]"
options=
"{'no_edit': True, 'no_create': True}"
/>
</group>
</group>
<footer>
<button
name=
"submit"
string=
"确认处理"
type=
"object"
class=
"btn-primary"
/>
<button
string=
"取消"
class=
"btn-secondary"
special=
"cancel"
/>
</footer>
</form>
</field>
</record>
<record
id=
"action_package_data_wizard"
model=
"ir.actions.act_window"
>
<field
name=
"name"
>
包裹数据导入处理
</field>
<field
name=
"type"
>
ir.actions.act_window
</field>
<field
name=
"res_model"
>
package.data.wizard
</field>
<field
name=
"view_mode"
>
form
</field>
<field
name=
"target"
>
new
</field>
</record>
<menuitem
id=
"menu_package_data_wizard"
name=
"导入包裹数据"
action=
"action_package_data_wizard"
groups=
"base.group_system"
sequence=
"50"
/>
</data>
</odoo>
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论