Compare commits

..

909 Commits

Author SHA1 Message Date
马广威
d187bb2bba Accept Merge Request #1211: (release/release_2.2 -> master)
Merge Request: SPRINT-MES-F-2024-04、05版本更新

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1211
2024-08-01 21:58:11 +08:00
杨金灵
0a6cf74bc2 Accept Merge Request #1210: (feature/去掉工单输出 -> develop)
Merge Request: 去掉工单输出

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1210?initial=true
2024-08-01 16:41:49 +08:00
jinling.yang
c0202330f8 去掉工单输出 2024-08-01 16:40:46 +08:00
杨金灵
1dabdd157e Accept Merge Request #1209: (feature/注释及还原代码 -> develop)
Merge Request: 注释及还原代码

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1209
2024-08-01 15:20:54 +08:00
jinling.yang
36dc8070fa 注释及还原代码 2024-08-01 15:18:57 +08:00
杨金灵
d1656278ea Accept Merge Request #1208: (feature/优化制造订单列表 -> develop)
Merge Request: 优化制造订单列表

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1208?initial=true
2024-07-31 17:02:05 +08:00
jinling.yang
0675937588 优化制造订单列表 2024-07-31 17:00:14 +08:00
马广威
c0d006d139 Accept Merge Request #1207: (feature/优化工单状态 -> develop)
Merge Request: 调整代码

Created By: @禹翔辉
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1207
2024-07-31 15:07:51 +08:00
yuxianghui
2fa47eae27 1 2024-07-31 15:06:55 +08:00
yuxianghui
cb2e1ecabe 1 2024-07-31 15:06:14 +08:00
yuxianghui
9f1233d20e 1 2024-07-31 15:04:37 +08:00
禹翔辉
a783f7ec7b Accept Merge Request #1206: (feature/优化工单状态 -> develop)
Merge Request: 优化工单状态

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1206?initial=true
2024-07-31 15:02:31 +08:00
yuxianghui
db50253100 Merge branch 'feature/优化工单_6' into feature/优化工单状态 2024-07-31 15:00:48 +08:00
yuxianghui
5f7f905540 优化工单状态 2024-07-31 14:59:57 +08:00
杨金灵
1c86cc1421 Accept Merge Request #1205: (feature/优化ftp(pdf路径) -> develop)
Merge Request: 优化ftp(pdf路径)

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1205
2024-07-31 14:56:14 +08:00
jinling.yang
1ea6f649f0 优化ftp(pdf路径) 2024-07-31 14:54:15 +08:00
jinling.yang
f0421b873c Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-31 11:55:55 +08:00
jinling.yang
913feea2a9 Merge branch 'feature/优化三次元检测报告' into develop 2024-07-31 11:55:46 +08:00
杨金灵
5d36513e59 Accept Merge Request #1204: (feature/优化三次元检测报告 -> develop)
Merge Request: 优化三次元检测报告

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1204
2024-07-31 11:54:40 +08:00
jinling.yang
94d6085f92 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-31 11:51:31 +08:00
jinling.yang
f361106c40 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化三次元检测报告 2024-07-31 11:51:16 +08:00
jinling.yang
a46cd0f515 优化三次元检测报告 2024-07-31 11:51:04 +08:00
禹翔辉
2c6e1a40f5 Accept Merge Request #1203: (feature/优化工单_6 -> develop)
Merge Request: 1、刀具组装功能添加开始完成日志;2、库存概览看板按作业类型分组默认优化展示;3、优化工单状态。

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1203?initial=true
2024-07-31 11:49:10 +08:00
yuxianghui
ffb775abb7 1、优化工单状态 2024-07-31 11:45:59 +08:00
yuxianghui
2c15532c73 Merge branch 'feature/优化调拨单' into feature/优化工单_6 2024-07-31 11:02:24 +08:00
jinling.yang
1980ee2a9a 优化三次元检测报告 2024-07-31 10:59:35 +08:00
yuxianghui
bba4e55770 1、刀具组装功能添加开始完成日志;2、库存概览看板按作业类型分组默认优化展示。 2024-07-31 10:40:03 +08:00
jinling.yang
a9bbe98e8f Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-31 09:07:50 +08:00
马广威
11e3bbddd8 Accept Merge Request #1202: (feature/修复返工-功能刀具 -> develop)
Merge Request: 修复返工-功能刀具

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1202
2024-07-30 17:47:59 +08:00
jinling.yang
c01dfddfb4 修复返工-功能刀具 2024-07-30 17:45:41 +08:00
jinling.yang
50dcc9f7ba Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/new 2024-07-30 14:37:19 +08:00
jinling.yang
41a7aea01e Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-30 14:37:07 +08:00
马广威
066b256b0c Accept Merge Request #1201: (feature/优化制造功能 -> develop)
Merge Request: 同步修改引用位置

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1201
2024-07-30 11:09:20 +08:00
mgw
754047bf02 同步修改引用位置 2024-07-30 11:08:27 +08:00
禹翔辉
f5bf95ab6e Accept Merge Request #1200: (feature/优化调拨单 -> develop)
Merge Request: 修复当有功能刀具组装或拆解生成调拨单单据后,销售订单创建制造订单时报调拨单单号重复问题

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1200?initial=true
2024-07-30 10:55:53 +08:00
yuxianghui
5ea25fae73 Merge branch 'feature/修复工单bug' into feature/优化调拨单 2024-07-30 10:54:13 +08:00
yuxianghui
c367e39d5f 修复当有功能刀具组装或拆解生成调拨单单据后,销售订单创建制造订单时报调拨单单号重复问题 2024-07-30 10:53:25 +08:00
马广威
dfec70081b Accept Merge Request #1199: (feature/优化制造功能 -> develop)
Merge Request: 修改制造订单状态翻译、修改配置字段类型

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1199?initial=true
2024-07-30 10:34:03 +08:00
mgw
d0c35695d5 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化制造功能 2024-07-30 10:33:19 +08:00
mgw
95eb6bd18b 修改制造订单状态翻译、修改配置字段类型 2024-07-30 10:33:03 +08:00
jinling.yang
599d2280f5 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-30 10:19:16 +08:00
禹翔辉
e1397f4b93 Accept Merge Request #1198: (feature/修复工单bug -> develop)
Merge Request: 解决 制造订单提交返工-申请重新编程-第一张工单状态不对 bug

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1198
2024-07-30 09:25:48 +08:00
yuxianghui
71c606974c Merge branch 'feature/工单优化_2' into feature/修复工单bug 2024-07-30 09:23:24 +08:00
yuxianghui
a0ed14aed1 解决 制造订单提交返工-申请重新编程-第一张工单状态不对 bug 2024-07-30 09:21:08 +08:00
jinling.yang
be3d4979b7 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-29 17:16:46 +08:00
jinling.yang
373ce89a2c Merge branch 'feature/修复返工-cmm' into develop 2024-07-29 17:16:36 +08:00
禹翔辉
56317ab111 Accept Merge Request #1197: (feature/工单优化_2 -> develop)
Merge Request: 恢复制造订单的功能刀具备注字段自动计算方法代码

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1197
2024-07-29 17:05:01 +08:00
yuxianghui
683d79a4e3 恢复制造订单的功能刀具备注字段自动计算方法代码 2024-07-29 17:03:25 +08:00
杨金灵
362801f527 Accept Merge Request #1196: (feature/修复返工-cmm -> develop)
Merge Request: 修复返工-cmm

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1196?initial=true
2024-07-29 16:43:46 +08:00
jinling.yang
a81ad08740 修复功能刀具 2024-07-29 16:43:37 +08:00
jinling.yang
d2d5702125 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复返工-cmm 2024-07-29 16:42:13 +08:00
jinling.yang
9c47a6bdba 修复返工-cmm 2024-07-29 16:36:46 +08:00
禹翔辉
f0a887887e Accept Merge Request #1195: (feature/工单优化_1 -> develop)
Merge Request: 优化功能刀具组装·时生成的调拨单单号名称取值

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1195?initial=true
2024-07-29 16:05:41 +08:00
yuxianghui
fffe0a230b 1 2024-07-29 15:40:44 +08:00
禹翔辉
2600d15e2b Accept Merge Request #1194: (feature/工单优化_1 -> develop)
Merge Request: 1、处理大批量修改cnc编程单的工单状态时,导致工单状态的自动计算方法进行递归而产生的栈溢出问题

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1194?initial=true
2024-07-29 11:35:53 +08:00
yuxianghui
c60b91c315 Merge branch 'feature/优化工单_5' into feature/工单优化_1 2024-07-29 11:33:35 +08:00
yuxianghui
639dd4e78d 1、处理大批量修改cnc编程单的工单状态时,导致工单状态的自动计算方法进行递归而产生的栈溢出问题 2024-07-29 11:32:33 +08:00
马广威
3c4286319f Accept Merge Request #1193: (feature/优化工单_5 -> develop)
Merge Request: 1、添加工单状态自动计算方法的触发条件

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1193
2024-07-28 16:37:33 +08:00
yuxianghui
55016918eb 1、添加工单状态自动计算方法的触发条件 2024-07-28 16:35:17 +08:00
禹翔辉
4236600b39 Accept Merge Request #1192: (feature/优化工单_5 -> develop)
Merge Request: 1、功能刀具状态备注值自动计算方法优化

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1192
2024-07-28 16:24:18 +08:00
yuxianghui
e84842d0a3 1、功能刀具状态备注值自动计算方法优化 2024-07-28 16:23:17 +08:00
禹翔辉
60df55d71e Accept Merge Request #1191: (feature/优化工单_5 -> develop)
Merge Request: 1、优化工单状态;2、添加功能刀具位置字段自动计算方法触发条件

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1191?initial=true
2024-07-28 16:09:23 +08:00
yuxianghui
6643684e9b Merge branch 'feature/优化工单_4' into feature/优化工单_5 2024-07-28 16:06:20 +08:00
yuxianghui
f77a1f6167 1、优化工单状态;2、添加功能刀具位置字段自动计算方法触发条件 2024-07-28 16:05:09 +08:00
杨金灵
a467aef925 Accept Merge Request #1190: (feature/修复多次返工报依赖问题 -> develop)
Merge Request: 修复多次返工报依赖问题

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1190?initial=true
2024-07-28 15:21:12 +08:00
jinling.yang
b1b805959a 修复多次返工报依赖问题 2024-07-28 15:20:12 +08:00
jinling.yang
e602095b50 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-28 11:47:19 +08:00
禹翔辉
ba05827126 Accept Merge Request #1189: (feature/优化工单_4 -> develop)
Merge Request: 处理   无效刀触发返工-更新程序后-第一张工单的状态不对  bug

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1189
2024-07-28 10:26:42 +08:00
yuxianghui
89bd9533d7 Merge branch 'feature/优化工单_3' into feature/优化工单_4 2024-07-28 10:24:32 +08:00
jinling.yang
fd2228ba59 Merge branch 'feature/修复返工' into develop 2024-07-28 10:13:02 +08:00
jinling.yang
2758817048 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-28 10:12:45 +08:00
yuxianghui
2e916337e9 1 2024-07-26 17:25:01 +08:00
马广威
47b8a0051b Accept Merge Request #1188: (feature/优化制造功能 -> develop)
Merge Request: 设备oee界面优化;增加由dashboard调用的接口

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1188?initial=true
2024-07-26 17:24:10 +08:00
mgw
76e6502afe Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化制造功能 2024-07-26 17:22:59 +08:00
mgw
1b96f420ec 增加由dashboard调用的接口 2024-07-26 17:22:44 +08:00
jinling.yang
00645364b3 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复返工 2024-07-26 16:55:07 +08:00
杨金灵
fdad5100ae Accept Merge Request #1187: (feature/修复返工 -> develop)
Merge Request: 修复返工

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1187?initial=true
2024-07-26 16:54:32 +08:00
jinling.yang
8cd03a1040 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复返工 2024-07-26 16:53:05 +08:00
jinling.yang
41c2523201 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-26 16:52:55 +08:00
jinling.yang
22a1ae11a6 修复返工 2024-07-26 16:52:48 +08:00
禹翔辉
4939c6d6db Accept Merge Request #1186: (feature/优化工单_3 -> develop)
Merge Request: 优化工单状态方法

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1186?initial=true
2024-07-26 16:27:58 +08:00
yuxianghui
460670843f Merge branch 'feature/优化工单_2' into feature/优化工单_3 2024-07-26 16:25:54 +08:00
yuxianghui
66caeee1cd 1、优化工单状态方法 2024-07-26 16:25:16 +08:00
jinling.yang
28041cbef9 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-26 15:49:32 +08:00
黄焱
fddddf1649 Accept Merge Request #1185: (feature/前端样式修改 -> develop)
Merge Request: 修改刀具拆解时选择目标货位会出现重叠的现象

Created By: @黄焱
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @黄焱
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1185?initial=true
2024-07-26 15:49:22 +08:00
hy
3e61e31314 修改刀具拆解时选择目标货位会出现重叠的现象 2024-07-26 15:44:52 +08:00
禹翔辉
549a64b012 Accept Merge Request #1184: (feature/优化工单_2 -> develop)
Merge Request: 优化工单状态

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1184?initial=true
2024-07-26 14:53:37 +08:00
yuxianghui
dbaad85670 Merge branch 'feature/优化工单_1' into feature/优化工单_2 2024-07-26 14:52:08 +08:00
yuxianghui
b731ffba33 1、优化工单状态 2024-07-26 14:51:23 +08:00
禹翔辉
9048b32405 Accept Merge Request #1183: (feature/优化工单_1 -> develop)
Merge Request: 1、解决  功能刀具是无效刀时-制造订单提交返工【申请重新编程】要做成必选

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1183?initial=true
2024-07-26 11:50:59 +08:00
yuxianghui
98d2aa756a 1、解决 功能刀具是无效刀时-制造订单提交返工【申请重新编程】要做成必选 2024-07-26 11:49:33 +08:00
禹翔辉
3749872780 Accept Merge Request #1182: (feature/优化工单_1 -> develop)
Merge Request: 1、添加制造订单的刀具备注字段自动计算逻辑及方法;2、优化工单状态自动计算方法;

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1182?initial=true
2024-07-26 10:59:05 +08:00
yuxianghui
de8bebc1f9 1、添加制造订单的刀具备注字段自动计算逻辑及方法;2、优化工单状态自动计算方法; 2024-07-26 10:57:11 +08:00
jinling.yang
b468ac216c Merge branch 'feature/修复返工bug' into develop 2024-07-26 09:47:14 +08:00
杨金灵
05f5b10833 Accept Merge Request #1181: (feature/修复返工bug -> develop)
Merge Request: 修复返工bug

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1181
2024-07-26 09:46:15 +08:00
jinling.yang
8686d93651 还原注释代码 2024-07-26 09:43:28 +08:00
jinling.yang
258e24eb05 修复返工bug 2024-07-25 17:30:33 +08:00
jinling.yang
cc4b58b136 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-25 15:44:10 +08:00
jinling.yang
d36250aa48 Merge branch 'feature/修复工件配送目的生产线' into develop 2024-07-25 15:43:13 +08:00
杨金灵
ad43b43beb Accept Merge Request #1180: (feature/修复工件配送目的生产线 -> develop)
Merge Request: 修复工件配送目的生产线

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1180
2024-07-25 15:42:57 +08:00
jinling.yang
f9ace6da7c Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复工件配送目的生产线 2024-07-25 15:41:01 +08:00
jinling.yang
12b4b418ea Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-25 15:40:54 +08:00
jinling.yang
60b77e09d6 修复工件配送目的生产线 2024-07-25 15:40:44 +08:00
禹翔辉
891fe257e1 Accept Merge Request #1179: (feature/修复工单cnc校验bug_3 -> develop)
Merge Request: 1、解决 缺刀状态第一张工单状态不对 bug

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1179?initial=true
2024-07-25 15:31:18 +08:00
yuxianghui
6859458db2 Merge branch 'feature/修复工单cnc校验bug_2' into feature/修复工单cnc校验bug_3
# Conflicts:
#	sf_manufacturing/models/mrp_workorder.py
2024-07-25 15:29:39 +08:00
禹翔辉
ca7c3867cd Accept Merge Request #1178: (release/release_2.1 -> develop)
Merge Request: 1、货架、货位添加循环货位标签;2、功能刀具拆解选取法人货位添加只能选择循环货位的过滤条件

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1178
2024-07-25 15:26:45 +08:00
jinling.yang
4bcf8236ef Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-25 15:25:43 +08:00
jinling.yang
74d557a0fc Merge branch 'feature/修复返工-工件配送' into develop 2024-07-25 15:25:34 +08:00
禹翔辉
3686c0e070 Merge branch refs/heads/develop into refs/heads/release/release_2.1 2024-07-25 15:25:07 +08:00
杨金灵
536d7e9e79 Accept Merge Request #1177: (feature/修复返工-工件配送 -> develop)
Merge Request: 修复返工-工件配送

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1177?initial=true
2024-07-25 15:24:59 +08:00
jinling.yang
67e79c5fb8 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复返工-工件配送 2024-07-25 15:23:03 +08:00
jinling.yang
0c3217824e Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-25 15:22:55 +08:00
jinling.yang
9eddfe36d6 修复返工-工件配送 2024-07-25 15:22:48 +08:00
yuxianghui
9655281b67 1、解决 缺刀状态第一张工单状态不对 bug 2024-07-25 15:21:36 +08:00
mgw
18b584438a 设备oee界面优化 2024-07-25 15:08:26 +08:00
马广威
709f29185d Accept Merge Request #1175: (feature/优化制造功能 -> develop)
Merge Request: 设备日志、oee优化

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1175?initial=true
2024-07-25 14:06:38 +08:00
mgw
886de3195c Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化制造功能 2024-07-25 14:05:49 +08:00
mgw
d9e5ffa68d 设备日志、oee优化 2024-07-25 14:05:35 +08:00
jinling.yang
030a900580 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-25 10:39:10 +08:00
jinling.yang
4370236edf Merge branch 'feature/修复中控对接接口' into develop 2024-07-25 10:35:41 +08:00
杨金灵
e01209f343 Accept Merge Request #1174: (feature/修复中控对接接口 -> develop)
Merge Request: 修复中控对接接口

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1174?initial=true
2024-07-25 10:34:29 +08:00
jinling.yang
b4803f03fa 修复制造订单完成生产数量问题 2024-07-25 10:34:12 +08:00
jinling.yang
c9d4f0667a 修复中控对接接口 2024-07-25 10:27:07 +08:00
马广威
8840e9642d Accept Merge Request #1173: (release/release_2.1 -> master)
Merge Request: 1、货架、货位添加循环货位标签;2、功能刀具拆解时选择的货位添加只能为循环货位的过滤条件

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1173?initial=true
2024-07-24 20:23:31 +08:00
杨金灵
30c823189c Accept Merge Request #1172: (feature/修复更新程序 -> develop)
Merge Request: 修复更新程序

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1172?initial=true
2024-07-24 17:16:28 +08:00
jinling.yang
3ed503391e 修复更新程序 2024-07-24 17:10:35 +08:00
杨金灵
befe0c2b00 Accept Merge Request #1171: (feature/修复批量更新程序 -> develop)
Merge Request: 修复批量更新程序

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1171?initial=true
2024-07-24 16:40:48 +08:00
jinling.yang
44a9ad340b 修复批量更新程序 2024-07-24 16:39:38 +08:00
jinling.yang
55bac0020f Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-24 16:34:21 +08:00
禹翔辉
d3124bb9fe Accept Merge Request #1170: (feature/修复工单cnc校验bug_2 -> develop)
Merge Request: 根据制造订单功能刀具状态变更第一个装夹预调工单的工单状态

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1170
2024-07-24 16:24:13 +08:00
yuxianghui
64fd6ef5dc Merge branch 'feature/修复工单cnc校验bug_1' into feature/修复工单cnc校验bug_2 2024-07-24 16:21:40 +08:00
yuxianghui
001b2ead57 1、更具制造订单功能刀具状态变更第一个装夹预调工单的工单状态 2024-07-24 16:20:48 +08:00
mgw
d0be097a9b 设备加工参数等页面修改 2024-07-24 16:19:29 +08:00
jinling.yang
0be8d0fbb2 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-24 15:09:57 +08:00
jinling.yang
71faa8a835 Merge branch 'feature/修复工件配送按钮显示' into develop 2024-07-24 15:09:49 +08:00
杨金灵
12afc1ef83 Accept Merge Request #1169: (feature/修复工件配送按钮显示 -> develop)
Merge Request: 修复工件配送按钮显示

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1169?initial=true
2024-07-24 15:08:49 +08:00
jinling.yang
34624e6592 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复工件配送按钮显示 2024-07-24 15:07:05 +08:00
jinling.yang
a16effd8db Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-24 15:06:58 +08:00
jinling.yang
f59299d4d5 修复工件配送按钮显示 2024-07-24 15:06:50 +08:00
禹翔辉
c7cef27ad6 Accept Merge Request #1168: (feature/修复工单cnc校验bug_1 -> develop)
Merge Request: 工单开始时增加新校验

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1168?initial=true
2024-07-24 12:38:21 +08:00
yuxianghui
b88b0fc38a Merge branch 'feature/修复工单cnc校验bug' into feature/修复工单cnc校验bug_1
# Conflicts:
#	sf_tool_management/models/mrp_workorder.py
2024-07-24 12:35:31 +08:00
yuxianghui
4297d41dda 添加工单开始校验 2024-07-24 12:32:33 +08:00
马广威
3f85d058cc Accept Merge Request #1167: (feature/优化制造功能 -> develop)
Merge Request: 修复“同一个产品多个制造订单时-只有一张制造订单有组件”

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1167?initial=true
2024-07-24 12:18:54 +08:00
mgw
680bed9944 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化制造功能 2024-07-24 12:18:04 +08:00
mgw
d3e307d195 修复“同一个产品多个制造订单时-只有一张制造订单有组件” 2024-07-24 12:17:32 +08:00
jinling.yang
86a011343d Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-24 11:53:08 +08:00
jinling.yang
fe4bd3834e Merge branch 'feature/修复cnc工单按钮显示问题' into develop 2024-07-24 11:52:42 +08:00
杨金灵
d3992c2a2e Accept Merge Request #1166: (feature/修复cnc工单按钮显示问题 -> develop)
Merge Request: 修复cnc工单按钮显示问题

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1166
2024-07-24 11:52:12 +08:00
jinling.yang
e62ed636e7 还原注释代码 2024-07-24 11:42:34 +08:00
jinling.yang
f0fdeff699 修复cnc工单按钮显示问题 2024-07-24 11:40:16 +08:00
mgw
dec85dc92f Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化制造功能 2024-07-24 09:26:35 +08:00
mgw
f4f9591f35 设备机床信息tab调整,修复打印返回action问题 2024-07-24 09:26:19 +08:00
jinling.yang
efb7334486 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-23 17:20:59 +08:00
jinling.yang
b9c1224442 Merge branch 'feature/修复返工向导' into develop 2024-07-23 17:20:49 +08:00
杨金灵
ca1a3ff120 Accept Merge Request #1165: (feature/修复返工向导 -> develop)
Merge Request: 修复返工向导

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1165
2024-07-23 17:20:22 +08:00
jinling.yang
da8e543819 修复返工向导 2024-07-23 17:18:31 +08:00
禹翔辉
eb236fea11 Accept Merge Request #1164: (feature/修复工单cnc校验bug -> develop)
Merge Request: 1、修复feature/修复工单cnc校验bug

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1164?initial=true
2024-07-23 16:00:39 +08:00
yuxianghui
1d271d9167 1、修复feature/修复工单cnc校验bug 2024-07-23 15:46:15 +08:00
禹翔辉
c5cf614645 Accept Merge Request #1163: (feature/修复工单cnc校验bug -> develop)
Merge Request: 修复工单cnc校验bug

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1163?initial=true
2024-07-23 11:54:58 +08:00
yuxianghui
167c280fa4 修复工单cnc校验bug 2024-07-23 11:53:47 +08:00
杨金灵
69157a7b1f Accept Merge Request #1162: (feature/修复功能刀具 -> develop)
Merge Request: 修复功能刀具

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1162?initial=true
2024-07-23 11:48:47 +08:00
jinling.yang
2939e6bf82 修复功能刀具 2024-07-23 11:47:48 +08:00
杨金灵
96bbf3a677 Accept Merge Request #1161: (feature/修复返工(CNC加工) -> develop)
Merge Request: 修复返工(CNC加工)

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1161?initial=true
2024-07-23 10:48:29 +08:00
jinling.yang
e3580d9ac8 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复返工(CNC加工) 2024-07-23 10:33:37 +08:00
jinling.yang
ded1789813 修复返工(CNC加工) 2024-07-23 10:33:22 +08:00
禹翔辉
759f947fa7 Accept Merge Request #1160: (feature/NC程序和功能刀具校验_1 -> develop)
Merge Request: 完成  NC程序和功能刀具校验需求

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1160
2024-07-23 09:13:22 +08:00
yuxianghui
302aed16ec Merge branch 'feature/NC程序和功能刀具校验' into feature/NC程序和功能刀具校验_1 2024-07-23 09:08:33 +08:00
yuxianghui
7d1db793b1 Merge branch 'feature/NC程序和功能刀具校验' into feature/NC程序和功能刀具校验_1
# Conflicts:
#	sf_manufacturing/models/mrp_workorder.py
2024-07-23 09:06:57 +08:00
jinling.yang
83396f5434 修复返工(CNC加工) 2024-07-22 17:32:31 +08:00
禹翔辉
fe9baf08f0 Merge branch refs/heads/develop into refs/heads/feature/NC程序和功能刀具校验 2024-07-22 17:11:41 +08:00
杨金灵
b47cd0cdfe Accept Merge Request #1159: (feature/修复返工多面 -> develop)
Merge Request: 修复返工多面

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1159?initial=true
2024-07-22 15:10:13 +08:00
jinling.yang
251e289fd1 修复返工多面 2024-07-22 15:08:14 +08:00
jinling.yang
1d4ecb9895 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-22 14:47:12 +08:00
yuxianghui
f3a7dcc6a4 Merge branch 'feature/无效刀返工' into feature/NC程序和功能刀具校验
# Conflicts:
#	sf_manufacturing/models/mrp_workorder.py
2024-07-22 11:36:29 +08:00
jinling.yang
ebd56eb5e0 Merge branch 'feature/修复返工bug' into develop 2024-07-22 11:01:57 +08:00
杨金灵
4f99a162b5 Accept Merge Request #1157: (feature/修复返工bug -> develop)
Merge Request: 修复返工bug

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1157?initial=true
2024-07-22 11:01:41 +08:00
jinling.yang
28843b0733 修复返工bug 2024-07-22 10:57:43 +08:00
jinling.yang
8a0c968b10 修复返工bug 2024-07-19 17:25:51 +08:00
jinling.yang
9d3c4f8163 修复返工按钮 2024-07-19 09:17:35 +08:00
jinling.yang
08831812ae Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复返工bug
# Conflicts:
#	sf_manufacturing/models/mrp_production.py
2024-07-18 16:56:54 +08:00
jinling.yang
8b75658787 添加注释代码 2024-07-18 16:55:59 +08:00
yuxianghui
25ac346cb7 1、cnc编程单tree视图展示刀具状态字段;2、优化制造订单的功能刀具状态字段自动更新方法,同时当工单刀具状态变化时变更缺刀备注信息,添加状态为无效刀的备注字段;3、优化当功能刀具从【刀具房】到【制造前】时进行校验,校验是否为制造订单所缺的刀,如果是则修改cnc编程单刀具状态为正常;4、优化cnc用刀校验:添加对无效刀的处理(无效刀时触发返工流程,并生成检测结果数据),优化生成的待处理数据的数据结构; 2024-07-18 16:33:41 +08:00
jinling.yang
2d15782228 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-18 16:30:51 +08:00
jinling.yang
856237c4cb Merge branch 'feature/优化最新版报废' into develop 2024-07-18 16:30:41 +08:00
杨金灵
a47c751b04 Accept Merge Request #1155: (feature/优化最新版报废 -> develop)
Merge Request: 修复部分返工bug及优化部分报废

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1155
2024-07-18 16:29:58 +08:00
jinling.yang
9bec39f4e6 还原注释代码 2024-07-18 16:25:19 +08:00
jinling.yang
33bf88968c 修复返工bug 2024-07-18 16:17:19 +08:00
jinling.yang
7163e025d2 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化最新版报废
# Conflicts:
#	sf_manufacturing/security/ir.model.access.csv
2024-07-17 19:32:21 +08:00
杨金灵
11ec448e81 Accept Merge Request #1154: (feature/修复更新程序后制造订单状态 -> develop)
Merge Request: 修复更新程序后制造订单状态

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1154?initial=true
2024-07-17 19:30:45 +08:00
jinling.yang
6c2fb043c4 修复更新程序后制造订单状态 2024-07-17 19:29:21 +08:00
jinling.yang
1dcecea3d5 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-17 19:07:35 +08:00
jinling.yang
88f3ac3d4e Merge branch 'feature/修复多面返工工单状态变更错误' into develop 2024-07-17 19:06:58 +08:00
杨金灵
983618d798 Accept Merge Request #1153: (feature/修复多面返工工单状态变更错误 -> develop)
Merge Request: 修复多面返工工单状态变更错误

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1153?initial=true
2024-07-17 19:06:42 +08:00
jinling.yang
7a9c0ff163 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-17 19:03:14 +08:00
jinling.yang
77f7602b23 修复多面返工工单状态变更错误 2024-07-17 19:03:07 +08:00
yuxianghui
70b8521b90 Merge branch 'feature/销售订单、工单优化' into feature/无效刀返工
# Conflicts:
#	sf_manufacturing/models/mrp_production.py
#	sf_manufacturing/models/mrp_workorder.py
2024-07-17 16:57:11 +08:00
jinling.yang
1b89642dae Merge branch 'feature/修复检测报告添加权限' into develop 2024-07-17 15:39:00 +08:00
杨金灵
1968ee17cb Accept Merge Request #1152: (feature/修复检测报告添加权限 -> develop)
Merge Request: 修复检测报告添加权限

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1152
2024-07-17 15:37:57 +08:00
jinling.yang
5e83fb382f 还原rfid代码 2024-07-17 15:37:20 +08:00
jinling.yang
974671ee07 修复解除装夹 2024-07-17 15:33:49 +08:00
jinling.yang
d8b4797ffe 检测报告添加机床操作岗权限 2024-07-17 15:31:47 +08:00
jinling.yang
b07e7707c7 添加计划调度岗,机床操作岗 2024-07-17 15:30:38 +08:00
jinling.yang
8726f8cac3 添加报废向导;添加重新生成制造订单 2024-07-17 15:20:31 +08:00
杨金灵
cb7960387b Accept Merge Request #1151: (feature/修复返工向导 -> develop)
Merge Request: 修复返工向导

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1151?initial=true
2024-07-17 10:17:42 +08:00
jinling.yang
6eaf92b841 修复调用更新程序 2024-07-17 10:15:05 +08:00
jinling.yang
ec0b5e88b6 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-17 09:47:30 +08:00
jinling.yang
f1b8ee41bc Merge branch 'feature/优化最新版返工' into develop 2024-07-17 09:47:18 +08:00
杨金灵
97c0b95e2d Accept Merge Request #1150: (feature/优化最新版返工 -> develop)
Merge Request: 优化最新版返工

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1150
2024-07-17 09:47:03 +08:00
jinling.yang
7ac342bfd4 返工向导隐藏工序 2024-07-17 09:46:23 +08:00
jinling.yang
6c820ead44 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化最新版返工
# Conflicts:
#	sf_manufacturing/models/mrp_production.py
2024-07-16 17:25:24 +08:00
jinling.yang
c536dde2cc 去掉注释代码 2024-07-16 17:24:15 +08:00
马广威
801ff9e076 Accept Merge Request #1149: (feature/优化制造功能 -> develop)
Merge Request: 修复制造订单状态

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1149?initial=true
2024-07-16 16:32:11 +08:00
mgw
d0e049e881 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化制造功能 2024-07-16 16:31:33 +08:00
mgw
81158e2fb4 修复制造订单状态 2024-07-16 16:31:18 +08:00
yuxianghui
3404cccdc8 1、货架、货位添加循环货位标签;2、功能刀具拆解选取法人货位添加只能选择循环货位的过滤条件 2024-07-16 15:33:27 +08:00
禹翔辉
45bb78d7e9 Accept Merge Request #1148: (feature/表面工艺优化 -> develop)
Merge Request: 1、表面工艺及同步接口添加‘加工天数’、‘路途天数’字段;2、表面工艺可选参数及同步接口添加‘工艺描述’、‘加工天数’、‘路途天数’字段

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1148?initial=true
2024-07-16 14:11:57 +08:00
yuxianghui
83334e2915 1、表面工艺及同步接口添加‘加工天数’、‘路途天数’字段;2、表面工艺可选参数及同步接口添加‘工艺描述’、‘加工天数’、‘路途天数’字段 2024-07-16 14:10:14 +08:00
禹翔辉
d4c30f645b Accept Merge Request #1147: (feature/销售订单接口优化 -> develop)
Merge Request: 创建销售订单接口添加销售明细信息‘备注’字段

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1147?initial=true
2024-07-16 10:46:37 +08:00
yuxianghui
bd642812a9 创建销售订单接口添加销售明细信息‘备注’字段 2024-07-16 10:45:00 +08:00
yuxianghui
3eca74518a Merge branch 'feature/CNC功能刀具用刀校验' into feature/销售订单、工单优化 2024-07-16 10:41:56 +08:00
yuxianghui
37977be862 1、工单解绑时添加二次校验是否解绑成功;2、销售订单创建接口添加详情信息‘备注’字段; 2024-07-16 10:40:18 +08:00
jinling.yang
a0bd214118 修复返工操作时工单状态及制造订单更新程序 2024-07-15 17:34:18 +08:00
jinling.yang
7885794322 1.优化制造订单的检测结果:新增处理结果字段
2.优化制造订单的返工向导:加工面字段类型改为多对多,且该字段需根据处理结果为待处理的检测结果的加工面进行过滤
3.优化工单工件下产线接口:工单状态为待检测
4,.优化工单状态方法(_compute_state)
2024-07-12 17:32:53 +08:00
jinling.yang
7152b54017 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化最新版返工
# Conflicts:
#	sf_manufacturing/views/mrp_workorder_view.xml
2024-07-11 17:38:38 +08:00
jinling.yang
0fef714d61 1.注释mrp_workcenter.xml文件和res.config添加不要的字段:lost_agent_id
2.制造订单新增“重新编程次数”字段,新增更新程序方法及对应的接口,优化返工且编程中的制造订单定时获取Cloud编程单状态的方法
3.优化返工向导页面及新增“重复编程次数”和“编程状态”字段
2024-07-11 17:37:35 +08:00
禹翔辉
6a2ff72dce Accept Merge Request #1146: (feature/销售单优化 -> develop)
Merge Request: 1、在销售订单内产品列表内增加备注字段

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1146?initial=true
2024-07-11 16:40:39 +08:00
yuxianghui
3094379e86 1、在销售订单内产品列表内增加备注字段 2024-07-11 16:38:41 +08:00
yuxianghui
77815c45a0 1、当检测到缺刀工单需要的功能刀具从刀具房出库到线边刀架时,更改cnc编程单的功能刀具状态为正常; 2024-07-11 16:37:20 +08:00
马广威
dd7c69ce1b Accept Merge Request #1145: (feature/优化制造功能 -> develop)
Merge Request: 修改订单状态

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1145?initial=true
2024-07-11 11:23:05 +08:00
mgw
e02f792300 修改订单状态 2024-07-11 11:22:25 +08:00
jinling.yang
9aca786522 1.优化工单排序2.新增调取cloud编程单的状态方法3.制造订单添加状态为返工及编程状态为"已编程",“已编程未下发”的过滤条件4,新增返工且编程中的制造订单定时获取Cloud编程单状态的定时器 2024-07-10 17:36:26 +08:00
yuxianghui
134e23ea2f 1、重构工单工序的生成方法; 2024-07-10 16:25:18 +08:00
yuxianghui
129f8a4d7d 1、重构工单cnc编程用刀校验方法;制造订单、工单、cnc编程单添加刀具状态字段,并且根据cnc编程单刀具状态自动计算制造订单、工单刀具状态字段的值;制造订单form页新增展示功能刀具状态字段;2、功能刀具拆解单刀具物料选择目标货位添加过滤添加为只选择所属货区是刀具房的货位; 2024-07-10 16:23:24 +08:00
马广威
79e3006cdb Accept Merge Request #1144: (feature/优化制造功能 -> develop)
Merge Request: 优化工单模块,增加企微模块

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1144?initial=true
2024-07-10 16:05:49 +08:00
mgw
6b140fe6dd 优化工单模块,增加企微模块 2024-07-10 15:58:47 +08:00
jinling.yang
7533d23d3e 1.工单状态新增‘返工’,2,在制造订单上点击返工选择加工面确认后,新增加工面的对应工单及新增重置cloud的编程单的状态3.优化返工向导 2024-07-09 17:36:47 +08:00
马广威
e8512b23e4 Accept Merge Request #1143: (feature/优化制造功能 -> develop)
Merge Request: 增加工单模块

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1143?initial=true
2024-07-09 17:32:54 +08:00
mgw
b582bfbafa 增加工单模块 2024-07-09 17:32:03 +08:00
马广威
11907d4c5e Accept Merge Request #1142: (feature/优化制造功能 -> develop)
Merge Request: 解除装夹处打印成品二维码

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1142
2024-07-09 10:19:20 +08:00
mgw
ed4903b6f1 解除装夹处打印成品二维码 2024-07-09 10:18:13 +08:00
jinling.yang
b383a6d229 1.新增加工面模型2.制造订单详情页面的返工操作上的加工面根据产品的加工面板进行过滤 2024-07-08 17:33:04 +08:00
禹翔辉
27eb959a2a Accept Merge Request #1141: (feature/功能刀具拆解单库存优化 -> develop)
Merge Request: 1、功能刀具组装/拆解单库存优化;2、完成 SF材料材料型号缺陷优化 bug

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1141
2024-07-08 09:57:04 +08:00
yuxianghui
1672a3982e 1、完成 SF材料材料型号缺陷优化 bug 2024-07-05 17:09:32 +08:00
黄焱
40f8392bd3 Accept Merge Request #1140: (feature/前端样式修改 -> develop)
Merge Request: 去除 根据进度条设置水印 修复切换产品3D图bug 修改表格下拉框会被表格下面数据框覆盖的bug

Created By: @黄焱
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @黄焱
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1140?initial=true
2024-07-05 16:05:38 +08:00
hy
1c8644983b 去除 根据进度条设置水印
修复切换产品3D图bug
修改表格下拉框会被表格下面数据框覆盖的bug
2024-07-05 16:02:32 +08:00
马广威
566d9fce9c Accept Merge Request #1139: (feature/优化制造功能 -> develop)
Merge Request: 优化展示效果

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1139?initial=true
2024-07-05 11:37:24 +08:00
mgw
b071b14bbd 优化展示效果 2024-07-05 11:36:48 +08:00
马广威
9d95442720 Accept Merge Request #1138: (feature/优化制造功能 -> develop)
Merge Request: 工作中心的参数修改需增加sns模块("记录备注")

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1138?initial=true
2024-07-05 11:27:02 +08:00
mgw
fd225fa0e1 工作中心的参数修改需增加sns模块("记录备注") 2024-07-05 11:26:02 +08:00
jinling.yang
52fa229896 优化制造订单菜单 2024-07-04 17:31:03 +08:00
马广威
937efa5f0f Accept Merge Request #1137: (feature/优化制造功能 -> develop)
Merge Request: 前置检测文件命名增加加工面标识,避免检测文件覆盖

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1137?initial=true
2024-07-04 17:22:25 +08:00
mgw
87153fab3f 前置检测文件命名增加加工面标识,避免检测文件覆盖 2024-07-04 17:21:39 +08:00
马广威
21c33bb662 Accept Merge Request #1136: (feature/优化制造功能 -> develop)
Merge Request: 修复“已经排程的制造订单取消排程后状态没有回退”

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1136?initial=true
2024-07-04 16:19:46 +08:00
mgw
b0da7977f5 修复“已经排程的制造订单取消排程后状态没有回退” 2024-07-04 16:19:20 +08:00
马广威
ae6764495e Accept Merge Request #1135: (feature/优化制造功能 -> develop)
Merge Request: 修复”制造订单完工后对应的成品入库单还是等待状态-应该是就绪状态“

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1135?initial=true
2024-07-04 16:13:30 +08:00
mgw
869e3e4b4f 修复”制造订单完工后对应的成品入库单还是等待状态-应该是就绪状态“ 2024-07-04 16:12:27 +08:00
jinling.yang
050e82673a 优化cnc工单 2024-07-04 15:38:43 +08:00
杨金灵
1210625cfc Accept Merge Request #1134: (release/release_2.0 -> develop)
Merge Request: 修复工件多面工单上下产线状态

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1134?initial=true
2024-07-04 15:37:25 +08:00
马广威
804b401a87 Accept Merge Request #1133: (release/release_2.0 -> master)
Merge Request: 修复多面工单产线状态

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1133?initial=true
2024-07-03 21:33:49 +08:00
jinling.yang
a7a8e73616 新增返工向导 2024-07-03 17:35:29 +08:00
yuxianghui
d60fefb2ec 1 2024-07-03 17:33:29 +08:00
yuxianghui
4a86871039 1、功能刀具组装单添加对应调拨单跳转按钮;功能刀具拆解单添加调拨单跳转按钮和功能刀具移动跳转按钮;2、功能刀具拆解模型,form视图添加报废page页存放刀具物料报废单,优化拆解流程添加功能刀具拆解移动记录;3、功能刀具出入库列表视图添加拆解单跳转链接;4、功能刀具安全库存模型添加名称唯一验证,优化字段计算方法;5、优化功能刀具同步到cloud的同步接口,解决编码问题; 2024-07-03 17:17:48 +08:00
jinling.yang
93c3548b40 注释OCC代码 2024-07-03 11:05:55 +08:00
jinling.yang
6c6fe44d45 制造订单去掉上/下产线字段 2024-07-03 10:53:29 +08:00
jinling.yang
bb33a1d093 修复多面工单产线状态 2024-07-03 10:37:02 +08:00
杨金灵
396084a498 Accept Merge Request #1132: (feature/修复多面加工产线状态 -> develop)
Merge Request: 修复多面加工产线状态

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1132
2024-07-03 10:32:42 +08:00
jinling.yang
73cc244994 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复多面加工产线状态 2024-07-03 10:30:27 +08:00
jinling.yang
fa6303bbef 修复多面工单加工产线状态 2024-07-03 10:30:13 +08:00
杨金灵
5ca555c520 Accept Merge Request #1131: (feature/修复多面加工产线状态 -> develop)
Merge Request: 修复多面加工产线状态

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1131?initial=true
2024-07-03 10:00:29 +08:00
jinling.yang
487f6c2054 修复多面加工产线状态 2024-07-03 09:55:47 +08:00
jinling.yang
9ec37f5d5b 修复多面加工产线状态 2024-07-03 09:45:55 +08:00
yuxianghui
cbc8a41984 1、添加拆解的仓库管理地点;2、优化功能刀具拆解库存管理;3、代码迁移 2024-07-02 17:32:27 +08:00
yuxianghui
025ad213d6 Merge branch 'feature/功能刀具组装库存优化' into feature/功能刀具拆解单库存优化 2024-07-02 10:24:52 +08:00
yuxianghui
0b267cc88a 1 2024-07-02 09:32:50 +08:00
马广威
0bc4072a8f Accept Merge Request #1130: (release/release_1.9 -> master)
Merge Request: SPRINT-MES-2024-03迭代优化升级

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1130?initial=true
2024-07-01 22:35:53 +08:00
马广威
957c5583bd Accept Merge Request #1129: (feature/修复制造订单数量 -> develop)
Merge Request: 修复制造订单数量

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1129#mr-1129-review-164092
2024-07-01 20:13:10 +08:00
jinling.yang
9c4c2b85dd 修复制造订单数量 2024-07-01 20:08:46 +08:00
jinling.yang
56af286500 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-01 18:30:18 +08:00
jinling.yang
cc83029c72 Merge branch 'feature/修复工单完成接口' into develop 2024-07-01 18:30:06 +08:00
杨金灵
79ab1cc573 Accept Merge Request #1128: (feature/修复工单完成接口 -> develop)
Merge Request: 修复工单完成接口

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1128?initial=true
2024-07-01 18:29:29 +08:00
jinling.yang
bda3df7806 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-01 18:29:16 +08:00
马广威
150b684354 Accept Merge Request #1127: (feature/sf物流方面缺陷与优化 -> develop)
Merge Request: Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/sf物流方面缺陷与优化

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1127?initial=true
2024-07-01 18:28:37 +08:00
jinling.yang
d69dc20fd1 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复工单完成接口 2024-07-01 18:28:11 +08:00
jinling.yang
e9c9b77112 修复所有工单完成报库存问题 2024-07-01 18:27:59 +08:00
mgw
495f92bd80 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/sf物流方面缺陷与优化 2024-07-01 18:27:52 +08:00
马广威
8a97fd08e2 Accept Merge Request #1126: (feature/sf物流方面缺陷与优化 -> develop)
Merge Request: 状态补充条件

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1126?initial=true
2024-07-01 18:18:19 +08:00
mgw
1551ea4b12 状态补充条件 2024-07-01 18:17:48 +08:00
jinling.yang
75c5cca9a0 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-01 18:12:25 +08:00
jinling.yang
6b6be85057 去掉更改制造订单的状态等相关代码 2024-07-01 18:12:15 +08:00
jinling.yang
7fb3c32d07 修复工单完成接口 2024-07-01 17:48:45 +08:00
马广威
8203975142 Accept Merge Request #1125: (feature/sf物流方面缺陷与优化 -> develop)
Merge Request: 优化订单状态条件及物流的容错处理

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1125?initial=true
2024-07-01 17:28:45 +08:00
mgw
449cf5bfb1 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/sf物流方面缺陷与优化 2024-07-01 17:28:07 +08:00
mgw
d7d5ccc142 优化订单状态条件及物流的容错处理 2024-07-01 17:27:52 +08:00
jinling.yang
8710df6dc2 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-01 17:14:42 +08:00
jinling.yang
f5c1457707 Merge branch 'feature/优化解绑rfid' into develop 2024-07-01 17:13:57 +08:00
杨金灵
5155135cb4 Accept Merge Request #1124: (feature/优化解绑rfid -> develop)
Merge Request: 优化解绑rfid

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1124
2024-07-01 17:13:38 +08:00
jinling.yang
4421eed1d0 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-01 17:11:47 +08:00
yuxianghui
5be5e8b3ec 1、功能刀具组装完成时,自动生成内部调拨单以及所有的刀具物料的库存移动和移动历史记录,并自动完成该调拨单;优化功能刀具的刀具组装入库单的生成,简化入库步骤。 2024-07-01 17:11:44 +08:00
jinling.yang
46e3a23492 优化解绑rfid 2024-07-01 17:11:34 +08:00
马广威
675b09390b Accept Merge Request #1123: (feature/sf物流方面缺陷与优化 -> develop)
Merge Request: 优化订单状态

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1123?initial=true
2024-07-01 16:57:22 +08:00
mgw
34251b4027 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/sf物流方面缺陷与优化 2024-07-01 16:56:43 +08:00
mgw
c4621d36a3 优化订单状态 2024-07-01 16:56:19 +08:00
jinling.yang
7bdc4b463a Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-01 15:42:22 +08:00
jinling.yang
ea88b5418f Merge branch 'feature/优化cnc工单接口' into develop 2024-07-01 15:42:10 +08:00
杨金灵
f5a64caf81 Accept Merge Request #1122: (feature/优化cnc工单接口 -> develop)
Merge Request: 优化cnc工单接口

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1122?initial=true
2024-07-01 15:41:52 +08:00
jinling.yang
1e5f26d645 工单开始和结束接口增加rfid_code不为空的条件 2024-07-01 15:29:55 +08:00
jinling.yang
ace32d9490 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-01 14:03:23 +08:00
马广威
5db2f1fc70 Accept Merge Request #1121: (feature/sf物流方面缺陷与优化 -> develop)
Merge Request: 优化物流提示

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1121?initial=true
2024-07-01 11:51:37 +08:00
mgw
960c940505 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/sf物流方面缺陷与优化 2024-07-01 11:50:49 +08:00
mgw
ee1629b40a 优化物流提示 2024-07-01 11:47:51 +08:00
jinling.yang
06de5f6a2d Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-07-01 10:50:19 +08:00
jinling.yang
c1eff705c2 Merge branch 'feature/修复表面工艺' into develop 2024-07-01 10:49:57 +08:00
杨金灵
8e3c7f9732 Accept Merge Request #1120: (feature/修复表面工艺 -> develop)
Merge Request: 修复表面工艺

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1120?initial=true
2024-07-01 10:49:38 +08:00
jinling.yang
2591e627f0 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复表面工艺 2024-07-01 10:47:33 +08:00
jinling.yang
4c66d86ee6 修复表面工艺 2024-07-01 10:47:05 +08:00
禹翔辉
d4bc1c13ea Accept Merge Request #1119: (feature/工单优化-2 -> develop)
Merge Request: 优化工单扫描绑定托盘的提示信息

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1119
2024-07-01 09:55:21 +08:00
yuxianghui
4c845ee9fd Merge branch 'feature/工单优化-1' into feature/工单优化-2 2024-07-01 09:53:11 +08:00
yuxianghui
726c3aede1 1、优化工单扫描绑定托盘的提示信息 2024-07-01 09:52:16 +08:00
黄焱
871c406c09 Accept Merge Request #1118: (feature/前端样式修改 -> develop)
Merge Request: // 修复表格内容覆盖表头bug

Created By: @黄焱
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @黄焱
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1118?initial=true
2024-07-01 09:49:05 +08:00
hy
2ba9695c34 // 修复表格内容覆盖表头bug 2024-07-01 09:47:50 +08:00
杨金灵
e1db34f25d Accept Merge Request #1117: (feature/修复无外协单和程序单 -> develop)
Merge Request: 修复无外协单和程序单

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1117
2024-07-01 09:31:43 +08:00
jinling.yang
e496555ff3 去掉注释代码 2024-06-30 19:29:36 +08:00
jinling.yang
404a41294c 修复表面工艺外协单状态 2024-06-30 19:16:48 +08:00
jinling.yang
e124560089 修复无外协单和程序单 2024-06-30 17:52:02 +08:00
jinling.yang
fd3a363bf6 修复无外协单和程序单 2024-06-30 16:51:40 +08:00
杨金灵
9f6563186c Accept Merge Request #1116: (feature/优化工单页面 -> develop)
Merge Request: 优化工单页面

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1116
2024-06-30 14:47:44 +08:00
jinling.yang
1b174c5805 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-06-30 14:41:38 +08:00
jinling.yang
849b7be20d Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-06-30 14:09:34 +08:00
jinling.yang
9d32bf8363 Merge branch 'feature/修复制造订单状态和多个编程单问题' into develop 2024-06-30 12:46:48 +08:00
杨金灵
998daaa7f7 Accept Merge Request #1115: (feature/修复制造订单状态和多个编程单问题 -> develop)
Merge Request: 修复制造订单状态和多个编程单问题

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1115?initial=true
2024-06-30 12:45:54 +08:00
jinling.yang
b23cb9af6e 优化编程状态字段的样式 2024-06-30 12:09:09 +08:00
jinling.yang
56adaddefc 1.修复编程状态字段类型2.优化工单rfid排放位置 2024-06-30 12:01:48 +08:00
jinling.yang
4a648fbd7b 1,修复制造订单状态:第一张装夹工单未就绪是,状态需为:待加工;所有工单完成后,状态需为:完成;2.修复多个产品确认制造订单未生产多个编程单问题3.优化工单页面:去掉非必要的字段 2024-06-30 11:45:52 +08:00
mgw
a3bf451d83 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/sf物流方面缺陷与优化 2024-06-28 17:03:06 +08:00
mgw
2919a3c159 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/sf物流方面缺陷与优化 2024-06-28 17:02:47 +08:00
马广威
8f6e2bc13d Accept Merge Request #1114: (feature/sf物流方面缺陷与优化 -> develop)
Merge Request: 排程单甘特图界面订单的hover提示中订单交期字段没有翻译成日期格式

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1114?initial=true
2024-06-28 17:01:43 +08:00
mgw
909230c1cc 排程单甘特图界面订单的hover提示中订单交期字段没有翻译成日期格式 2024-06-28 17:00:50 +08:00
马广威
db8c338588 Accept Merge Request #1113: (feature/sf物流方面缺陷与优化 -> develop)
Merge Request: 工单增加默认产品分组,组内排序从小到大

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1113?initial=true
2024-06-28 16:02:09 +08:00
mgw
f319a9adf4 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/sf物流方面缺陷与优化 2024-06-28 16:01:05 +08:00
mgw
172e420939 增加分组内排序 2024-06-28 16:00:50 +08:00
mgw
0c3727540e 工单增加默认产品分组 2024-06-28 14:51:53 +08:00
禹翔辉
5668722109 Accept Merge Request #1112: (feature/工单优化-1 -> develop)
Merge Request: 工单优化

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1112
2024-06-28 14:25:01 +08:00
杨金灵
2d80355559 Accept Merge Request #1111: (feature/修复cmm程序接口 -> develop)
Merge Request: 修复cmm程序接口

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1111?initial=true
2024-06-28 14:24:23 +08:00
jinling.yang
d281026086 修复cmm程序接口 2024-06-28 14:23:03 +08:00
yuxianghui
5c35a8c38d Merge branch 'feature/添加权限、解决bug' into feature/工单优化-1 2024-06-28 14:22:35 +08:00
yuxianghui
3b24f90385 1、工单添加按Rfid搜索,隐藏多余的Rfid字段;2、优化程序创建日期; 2024-06-28 14:20:57 +08:00
杨金灵
14355606c7 Accept Merge Request #1110: (feature/优化ftp -> develop)
Merge Request: ftp优化

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1110
2024-06-28 12:03:05 +08:00
jinling.yang
5997cbcb0e download_program_file方法添加关闭ftp 2024-06-28 12:00:29 +08:00
jinling.yang
f07d7611d0 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-06-28 10:10:46 +08:00
马广威
b106d56f3f Accept Merge Request #1109: (feature/sf物流方面缺陷与优化 -> develop)
Merge Request: 修复隐藏项目

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1109?initial=true
2024-06-28 09:52:58 +08:00
mgw
3156052604 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/sf物流方面缺陷与优化 2024-06-28 09:51:50 +08:00
mgw
c8de75ceae 修复隐藏项目 2024-06-28 09:51:31 +08:00
马广威
d4b1f8f1a1 Accept Merge Request #1108: (feature/sf物流方面缺陷与优化 -> develop)
Merge Request: Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/sf物流方面缺陷与优化

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1108?initial=true
2024-06-28 09:45:59 +08:00
mgw
5378d62551 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/sf物流方面缺陷与优化 2024-06-28 09:44:24 +08:00
马广威
424f7196f8 Accept Merge Request #1107: (feature/sf物流方面缺陷与优化 -> develop)
Merge Request: 处理unlink传参问题2

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1107?initial=true
2024-06-28 09:19:58 +08:00
mgw
c2723d9d05 处理unlink传参问题2 2024-06-28 09:19:09 +08:00
jinling.yang
7bf001927a Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-06-28 09:17:56 +08:00
杨金灵
84d67d285e Accept Merge Request #1106: (feature/修复制造订单无采购单问题 -> develop)
Merge Request: 修复制造订单无采购单问题

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1106?initial=true
2024-06-28 09:16:32 +08:00
jinling.yang
a583b483e3 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复制造订单无采购单问题 2024-06-27 20:10:22 +08:00
jinling.yang
719a96f983 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-06-27 20:10:01 +08:00
jinling.yang
08fd0b01d3 去掉程序下发按钮 2024-06-27 20:09:45 +08:00
jinling.yang
db7fbed177 去掉重新编程下发相关代码,修复多制造订单无采购调拨单,去掉程序下发按钮 2024-06-27 20:09:28 +08:00
马广威
ad149a58ea Accept Merge Request #1105: (feature/sf物流方面缺陷与优化 -> develop)
Merge Request: 处理unlink()参数问题

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1105?initial=true
2024-06-27 17:32:18 +08:00
mgw
0d96cd070c Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/sf物流方面缺陷与优化 2024-06-27 17:31:21 +08:00
mgw
37f030c2db 处理unlink()参数问题 2024-06-27 17:31:03 +08:00
禹翔辉
e2a62325f8 Accept Merge Request #1104: (feature/添加权限、解决bug -> develop)
Merge Request: 添加权限、解决bug

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1104?initial=true
2024-06-27 17:26:20 +08:00
yuxianghui
0db103cfc7 Merge branch 'feature/调拨单优化1' into feature/添加权限、解决bug 2024-06-27 17:22:42 +08:00
yuxianghui
05f2cb553d 1、完成 采购/采购总监岗位权限增加 需求;2、完成 刀具出入库列表缺少单据跳转 需求;3、完成 设备详情的机内装刀时间比当前时间还晚 bug; 2024-06-27 17:21:37 +08:00
黄焱
c597471949 Accept Merge Request #1103: (feature/前端样式修改 -> develop)
Merge Request: 甘特修改背景颜色和不可拖拽模块

Created By: @黄焱
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @黄焱
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1103?initial=true
2024-06-27 10:14:10 +08:00
hy
70ffbafac4 甘特修改背景颜色和不可拖拽模块 2024-06-27 09:57:12 +08:00
jinling.yang
1cb7af072e 注释OCC代码 2024-06-27 09:52:20 +08:00
禹翔辉
4f6b1d0342 Accept Merge Request #1102: (feature/调拨单优化1 -> develop)
Merge Request: 1、完成 内部调拨单优化项 需求;2、解决 不同序列号调拨单选择同一个货位可以确认成功 bug;3、收货入库时扫描录入Rfid方法添加日志

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1102?initial=true
2024-06-26 17:10:25 +08:00
yuxianghui
9bdcf0dd92 Merge branch 'feature/调拨单优化' into feature/调拨单优化1 2024-06-26 17:08:39 +08:00
yuxianghui
bcb60425b2 1、完成 内部调拨单优化项 需求;2、解决 不同序列号调拨单选择同一个货位可以确认成功 bug;3、收货入库时扫描录入Rfid方法添加日志 2024-06-26 17:07:09 +08:00
jinling.yang
22643368fa Merge branch 'feature/修复工单完成报错库存问题' into develop 2024-06-26 16:41:23 +08:00
jinling.yang
aeb100923f Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复工单完成报错库存问题 2024-06-26 16:41:05 +08:00
杨金灵
53c6d6015e Accept Merge Request #1101: (feature/修复工单完成报错库存问题 -> develop)
Merge Request: 修复制造订单生成时没有采购单

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1101?initial=true
2024-06-26 16:40:40 +08:00
jinling.yang
131e9329de Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-06-26 16:37:05 +08:00
jinling.yang
dbd5c488f8 修复制造订单生成时没有采购单 2024-06-26 16:36:51 +08:00
马广威
f8ba414229 Accept Merge Request #1100: (feature/sf物流方面缺陷与优化 -> develop)
Merge Request: sf物流优化

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1100?initial=true
2024-06-26 16:34:52 +08:00
mgw
7fd3647afb sf物流优化 2024-06-26 16:34:04 +08:00
马广威
f5be9c6e65 Accept Merge Request #1099: (feature/制造订单列表页及详情页优化需求 -> develop)
Merge Request: 制造订单列表页及详情页优化需求

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1099?initial=true
2024-06-26 14:13:06 +08:00
mgw
c275a39a15 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造订单列表页及详情页优化需求 2024-06-26 14:11:45 +08:00
mgw
d07ab53aeb 制造订单列表页及详情页优化需求 2024-06-26 14:10:57 +08:00
jinling.yang
55accb714a Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-06-26 11:25:47 +08:00
jinling.yang
5bd3eddfd5 Merge branch 'feature/修复编程单下发ftp路径' into develop 2024-06-26 11:24:58 +08:00
杨金灵
c8bcd4d0f5 Accept Merge Request #1098: (feature/修复编程单下发ftp路径 -> develop)
Merge Request: 修复编程单下发ftp路径

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1098?initial=true
2024-06-26 11:24:40 +08:00
jinling.yang
2cbe5ed394 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复编程单下发ftp路径 2024-06-26 11:11:26 +08:00
jinling.yang
1f1cb17a40 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-06-26 11:11:08 +08:00
jinling.yang
2ff935f68d 修复编程单下发ftp路径 2024-06-26 11:10:54 +08:00
杨金灵
098745ec50 Accept Merge Request #1097: (feature/修复编程单下发ftp路径 -> develop)
Merge Request: 修复编程单下发ftp路径

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1097?initial=true
2024-06-26 10:21:25 +08:00
jinling.yang
94175f2039 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-06-26 10:17:27 +08:00
jinling.yang
1940116a35 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复编程单下发ftp路径 2024-06-26 10:17:14 +08:00
jinling.yang
f4eb378bea 修复制造订单:无工单时,工单page需隐藏 2024-06-26 10:17:00 +08:00
jinling.yang
dcbb60b088 修复编程单下发ftp路径:去掉注释 2024-06-25 18:11:45 +08:00
jinling.yang
88ef9c106d 修复编程单下发ftp路径 2024-06-25 17:54:08 +08:00
马广威
0f7f12008f Accept Merge Request #1096: (feature/【计划】模块的【排程单】页面优化需求 -> develop)
Merge Request: 处理"打印的二维码信息与界面的二维码信息不一致"等

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1096?initial=true
2024-06-25 16:51:47 +08:00
mgw
f44836705b 放出程序下载按钮 2024-06-25 16:50:09 +08:00
mgw
35ac51bc10 取消默认分组展示 2024-06-25 14:22:51 +08:00
mgw
eb2851391b 处理"打印的二维码信息与界面的二维码信息不一致" 2024-06-25 12:06:28 +08:00
jinling.yang
86f67556ce Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-06-25 11:07:41 +08:00
禹翔辉
e437875a92 Accept Merge Request #1095: (release/release_1.8 -> develop)
Merge Request: 功能刀具、工件状态优化

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1095
2024-06-25 09:53:14 +08:00
禹翔辉
f005a29beb Merge branch refs/heads/develop into refs/heads/release/release_1.8 2024-06-25 09:47:34 +08:00
马广威
6a24776701 Accept Merge Request #1094: (feature/【计划】模块的【排程单】页面优化需求 -> develop)
Merge Request: 计划模块后端优化

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1094?initial=true
2024-06-25 09:04:10 +08:00
mgw
09d06980b5 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/【计划】模块的【排程单】页面优化需求 2024-06-25 09:03:13 +08:00
mgw
8b492fc093 计划模块后端优化 2024-06-25 09:02:54 +08:00
马广威
9e56aeda67 Accept Merge Request #1093: (release/release_1.8 -> master)
Merge Request: 功能刀具、工件状态优化

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1093?initial=true
2024-06-24 21:38:15 +08:00
jinling.yang
b4535e88c9 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-06-24 17:31:08 +08:00
禹翔辉
ba03790832 Accept Merge Request #1092: (hotfix/优化工单工序 -> develop)
Merge Request: 1、重构工单工序的生成规则

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1092
2024-06-24 17:30:28 +08:00
jinling.yang
be94cd0d54 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-06-24 17:30:03 +08:00
禹翔辉
3148cd55b8 Accept Merge Request #1091: (feature/单据跳转2 -> develop)
Merge Request: 1、重新下发NC程序按键添加权限

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1091?initial=true
2024-06-24 17:29:17 +08:00
yuxianghui
665ebaab9e 1、重新下发NC程序按键添加权限 2024-06-24 17:28:06 +08:00
jinling.yang
65e209fe2a Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-06-24 17:20:18 +08:00
禹翔辉
40969adc2c Accept Merge Request #1090: (feature/单据跳转2 -> develop)
Merge Request: 1、功能刀具清单做编辑控制;2、刀具拆解——报废优化;3、功能刀具出入库添加刀具跳转;

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1090
2024-06-24 17:15:55 +08:00
yuxianghui
95e89d8979 1 2024-06-24 17:10:39 +08:00
yuxianghui
5b400b746e Merge branch 'feature/单据跳转' into feature/单据跳转2 2024-06-24 17:09:40 +08:00
jinling.yang
828b4b0f6b 修复功能刀具清单列表 2024-06-24 16:55:42 +08:00
jinling.yang
27ba002b51 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-06-24 16:54:28 +08:00
jinling.yang
2cd83c87e2 Merge branch 'feature/优化重新下发程序' into develop 2024-06-24 16:52:48 +08:00
jinling.yang
ba87d07af7 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-06-24 16:52:24 +08:00
杨金灵
7d2c705c35 Accept Merge Request #1089: (feature/优化重新下发程序 -> develop)
Merge Request: 优化重新下发程序

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1089?initial=true
2024-06-24 16:51:56 +08:00
jinling.yang
f3c2db7add Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化重新下发程序 2024-06-24 16:49:19 +08:00
jinling.yang
0af6d7f4cd 优化重新下发程序:装夹预调,cnc加工工单展示 2024-06-24 16:48:58 +08:00
yuxianghui
a82a54c464 1、功能刀具清单做编辑控制;2、刀具拆解——报废优化;3、功能刀具出入库添加刀具跳转; 2024-06-24 15:40:51 +08:00
马广威
d4253b21fe Accept Merge Request #1088: (feature/工单功能优化 -> develop)
Merge Request: 工件装夹预调工单页面优化需求-1

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1088
2024-06-24 15:05:53 +08:00
mgw
8356e898aa Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/工单功能优化
# Conflicts:
#	sf_manufacturing/views/mrp_workorder_view.xml
2024-06-24 15:04:09 +08:00
mgw
f67d08fc88 工件装夹预调工单页面优化需求-1 2024-06-24 15:00:54 +08:00
jinling.yang
0a40409c6c Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-06-24 14:56:31 +08:00
jinling.yang
927f74213e Merge branch 'feature/优化工单(cnc和cmc)涉及多个加工面' into develop 2024-06-24 14:56:14 +08:00
杨金灵
8b8570a901 Accept Merge Request #1087: (feature/优化工单(cnc和cmc)涉及多个加工面 -> develop)
Merge Request: 优化工单(cnc和cmc)涉及多个加工面

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1087
2024-06-24 14:55:49 +08:00
jinling.yang
ec30a07394 修复创建移动历史记录 2024-06-24 14:54:33 +08:00
jinling.yang
9110c81c73 还原OCC代码 2024-06-24 14:46:47 +08:00
jinling.yang
5f4ecf8ff9 修复生成制造订单 2024-06-24 14:46:02 +08:00
jinling.yang
e453508f17 修改功能刀具清单查询列表:部分字段不可更改 2024-06-24 14:18:42 +08:00
jinling.yang
733b554942 no message 2024-06-24 14:16:53 +08:00
jinling.yang
eff2032762 修改fetchCNC方法· 2024-06-24 14:16:42 +08:00
jinling.yang
16a00bdb10 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化工单(cnc和cmc)涉及多个加工面 2024-06-24 10:53:53 +08:00
jinling.yang
de6014d1dd 修复工件上下产线接口:当RFID不为空时,更改制造订单上下产线状态 2024-06-21 17:39:15 +08:00
jinling.yang
66b66a935f 优化工单页面和下发编程单接口 2024-06-21 17:15:05 +08:00
jinling.yang
612906e01d 修改根据多面生成工单逻辑 2024-06-21 16:00:04 +08:00
禹翔辉
21f94e5523 Accept Merge Request #1086: (feature/单据跳转 -> develop)
Merge Request: 完成 工件装夹预调工单页面优化需求-3

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1086?initial=true
2024-06-20 17:34:24 +08:00
yuxianghui
f8c1d75b63 1、刀具过滤优化 2024-06-20 17:30:23 +08:00
yuxianghui
fcba3b18b7 Merge branch 'feature/工件装夹预调工单页面优化' into feature/单据跳转 2024-06-20 09:46:15 +08:00
禹翔辉
c6a509c6f4 Accept Merge Request #1085: (release/release1.7 -> develop)
Merge Request: 迭代库存、制造逻辑

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1085
2024-06-20 09:31:50 +08:00
马广威
ecf265fee7 Accept Merge Request #1084: (release/release1.7 -> master)
Merge Request: 迭代库存、制造逻辑

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1084?initial=true
2024-06-19 20:24:20 +08:00
yuxianghui
60560fe195 1、优化工单解绑Rfid 2024-06-19 17:40:49 +08:00
jinling.yang
67b48814f6 优化制造订单和生成工单逻辑 2024-06-19 17:35:13 +08:00
yuxianghui
21f2a704db 1、对刀仪接口获取的功能刀具半径值乘二后再赋值 2024-06-19 17:03:44 +08:00
yuxianghui
1f32aafc9b 1、完成 工件装夹预调工单页面优化需求-3 2024-06-19 16:38:30 +08:00
jinling.yang
b390712308 优化编程单下发接口 2024-06-19 15:39:28 +08:00
jinling.yang
c035ab8156 注释OCC代码 2024-06-19 15:32:03 +08:00
yuxianghui
c0b673bfd0 添加注释 2024-06-19 11:23:25 +08:00
yuxianghui
6dae144d76 1、功能刀具拆解单优化;2、完成 需求坯料序列号生成规则优化2; 2024-06-19 11:19:47 +08:00
jinling.yang
25dddb5b3b 优化制造订单:生成制造订单的同时不生成工单 2024-06-18 17:35:41 +08:00
yuxianghui
4497fb04c1 1、优化 托盘绑定工单逻辑优化 ;2 完成 整体式刀具批次/序列号生成的优化需求; 3、完成 坯料序列号生成规则优化需求1。 2024-06-18 17:19:41 +08:00
杨金灵
bc4dc82beb Accept Merge Request #1083: (feature/优化预调装夹工单 -> develop)
Merge Request: 优化预调装夹工单

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1083?initial=true
2024-06-18 17:19:16 +08:00
jinling.yang
47305a2e61 添加'是否重新下发NC程序'字段 2024-06-18 17:17:09 +08:00
jinling.yang
9e58835082 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-06-18 11:41:24 +08:00
jinling.yang
63fa0e0c37 Merge branch 'feature/优化装夹预调工单' into develop 2024-06-18 11:41:12 +08:00
杨金灵
c6c9974326 Accept Merge Request #1082: (feature/优化装夹预调工单 -> develop)
Merge Request: 优化装夹预调工单

Created By: @杨金灵
Reviewed By: @马广威
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1082?initial=true
2024-06-18 11:40:49 +08:00
jinling.yang
d63c3b76bf Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化装夹预调工单 2024-06-18 11:36:01 +08:00
jinling.yang
3793d0a174 优化装夹预调工单 2024-06-18 11:35:50 +08:00
马广威
903fdee420 Accept Merge Request #1081: (release/release1.6 -> master)
Merge Request: 功能升级

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1081?initial=true
2024-06-17 21:34:41 +08:00
禹翔辉
ee17889fe8 Accept Merge Request #1080: (feature/预调仪接口 -> develop)
Merge Request: 1、添加日志

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1080?initial=true
2024-06-17 17:27:27 +08:00
yuxianghui
5bec3d6061 1 2024-06-17 17:24:23 +08:00
杨金灵
0fc5b12894 Accept Merge Request #1079: (feature/修复快速订单 -> develop)
Merge Request: 修复快速订单

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1079?initial=true
2024-06-17 16:39:55 +08:00
jinling.yang
3258b6cc75 修复快速订单 2024-06-17 16:38:14 +08:00
jinling.yang
017404fe45 Merge branch 'feature/优化工单结束接口' into develop 2024-06-17 16:17:54 +08:00
杨金灵
cde6c76f83 Accept Merge Request #1078: (feature/优化工单结束接口 -> develop)
Merge Request: 优化工单结束接口

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1078?initial=true
2024-06-17 16:16:39 +08:00
jinling.yang
7dea8c7c1e 去掉返工和报废的代码 2024-06-17 16:16:22 +08:00
jinling.yang
8ade3b43c4 中控新增是否完成字段,该接口根据该字段对cnc加工工单进行完成操作 2024-06-17 16:06:49 +08:00
禹翔辉
c2b7abaae1 Accept Merge Request #1077: (hotfix/功能刀具出入库处理 -> develop)
Merge Request: 新增功能刀具出入库线边刀库记录

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1077
2024-06-17 14:40:14 +08:00
禹翔辉
c1f33c5e14 Merge branch refs/heads/develop into refs/heads/hotfix/功能刀具出入库处理 2024-06-17 14:36:00 +08:00
杨金灵
01f55350e2 Accept Merge Request #1076: (feature/去掉返工报废的代码 -> develop)
Merge Request: 去掉返工报废的代码

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1076?initial=true
2024-06-17 11:56:45 +08:00
jinling.yang
9202409a89 去掉返工报废的代码 2024-06-17 11:53:38 +08:00
jinling.yang
2e779c4a68 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-06-17 11:50:25 +08:00
禹翔辉
5751837ddd Accept Merge Request #1075: (feature/刀具同步接口优化 -> develop)
Merge Request: 优化动态刀具按批次管理的数据同步接口

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1075?initial=true
2024-06-17 11:46:22 +08:00
yuxianghui
e2f86097a0 Merge branch 'feature/模型优化' into feature/刀具同步接口优化 2024-06-17 11:42:25 +08:00
yuxianghui
77ad0dd635 优化动态刀具按批次管理的数据同步接口 2024-06-17 11:40:12 +08:00
jinling.yang
73e03bd815 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-06-17 11:00:33 +08:00
jinling.yang
51cd156e75 Merge branch 'feature/去掉客户部分字段必填校验和返工报废代码' into develop 2024-06-17 11:00:02 +08:00
杨金灵
b447db1b13 Accept Merge Request #1074: (feature/去掉客户部分字段必填校验和返工报废代码 -> develop)
Merge Request: 去掉客户部分字段必填校验和返工报废代码

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1074?initial=true
2024-06-17 10:50:27 +08:00
jinling.yang
e3911c8f5a Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-06-17 09:52:43 +08:00
jinling.yang
2892cdd99f Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/去掉客户部分字段必填校验和返工报废代码 2024-06-17 09:52:30 +08:00
jinling.yang
2862c5a888 去掉客户部分字段必填校验和返工报废代码 2024-06-17 09:52:18 +08:00
禹翔辉
ad8927fb83 Accept Merge Request #1073: (feature/模型优化 -> develop)
Merge Request: 1、对模型的添加筛选和分组,优化界面

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1073?initial=true
2024-06-17 09:44:52 +08:00
yuxianghui
e1f4e1e701 Merge branch 'feature/刀具接口调整' into feature/模型优化 2024-06-17 09:43:00 +08:00
yuxianghui
1e90b9a18a 1、功能刀具位置计算方法添加触发条件 2024-06-14 17:01:02 +08:00
jinling.yang
24edef023f Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-06-14 16:53:26 +08:00
马广威
4894576d25 Accept Merge Request #1072: (release/release_1.5 -> develop)
Merge Request: 添加刀具按批次管理

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1072
2024-06-14 16:21:38 +08:00
yuxianghui
904c63bfcb 1、优化功能刀具安全库存数量计算方法;2、货位看板模型添加功能刀具Rfid、名称字段 2024-06-14 15:38:52 +08:00
yuxianghui
a86ceb951b 1、优化功能刀具安全库存数量计算方法;2、货位看板模型添加功能刀具Rfid、名称字段 2024-06-14 15:00:30 +08:00
jinling.yang
dd9015dff9 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-06-14 09:31:18 +08:00
yuxianghui
642877ff45 去除整体式刀产品的【粗/中/精】字段的必填 2024-06-13 17:28:44 +08:00
yuxianghui
c1935e62b9 1、重构工单工序的生成规则 2024-06-13 17:24:46 +08:00
yuxianghui
aa0b6a9b21 1、新增功能刀具移动到线边刀库的出入库记录 2024-06-13 16:01:27 +08:00
yuxianghui
9c6ca3758b 1 2024-06-13 14:59:49 +08:00
yuxianghui
42644d449f 1、新增功能刀具移动历史,新增功能刀具入库到线边刀库 2024-06-13 14:45:29 +08:00
马广威
519c534a89 Accept Merge Request #1071: (release/release_1.5 -> master)
Merge Request: 添加刀具物料整个生命周期按批次管理

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1071?initial=true
2024-06-13 10:49:36 +08:00
马广威
741c5cf3d6 Accept Merge Request #1070: (feature/增加批量调拨功能 -> develop)
Merge Request: 修改线边库位名称

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1070?initial=true
2024-06-12 16:54:00 +08:00
yuxianghui
0ad7e72b15 1、解决 刀具组装选择的批次号队友物料只剩下1个时-组装完该单据详情不显示批次信息 的bug;2、调整拆解单界面布局 2024-06-12 16:28:42 +08:00
mgw
fa7e023dd1 修改线边库位名称 2024-06-12 16:19:33 +08:00
yuxianghui
07c7ed6dba 1、优化组装时重复选取货位时,批次号消失的问题 2024-06-12 14:20:15 +08:00
yuxianghui
0f32b0acb1 1、新增功能刀具出入库 2024-06-12 14:08:21 +08:00
yuxianghui
42cded8c64 1、优化功能刀具序列号 2024-06-12 10:24:16 +08:00
yuxianghui
469839f38e 1、处理二维码问题 2024-06-12 10:02:15 +08:00
jinling.yang
6a7fa89b67 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-06-11 17:31:59 +08:00
jinling.yang
c13078291f Merge branch 'feature/工件配送添加sns' into develop 2024-06-11 17:25:23 +08:00
杨金灵
a3580411d6 Accept Merge Request #1069: (feature/工件配送添加sns -> develop)
Merge Request: 工件配送及工单添加sns

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1069
2024-06-11 17:23:45 +08:00
yuxianghui
7d7f0348d2 1、优化产品按批量采购入库时,没有生成二维码问题; 2024-06-11 17:00:25 +08:00
jinling.yang
d7779cdb58 修改生成制造订单时未生成编程单 2024-06-11 16:57:56 +08:00
jinling.yang
adafce85bd 1.工单,工件配送新增sns及给部分字段添加tracking(跟踪)及优化页面
2.优化agv:部分字段不可编辑
2024-06-11 16:56:20 +08:00
yuxianghui
bae947bdca 1、添加采购入库时对需要录入的Rfid进行重复校验; 2024-06-11 15:18:13 +08:00
yuxianghui
14d823ab6e 1、增加是否使用刀具预调仪的配置; 2024-06-11 11:58:58 +08:00
yuxianghui
ae953c7ad6 1、更新功能刀具编码生成规则; 2024-06-11 10:15:54 +08:00
jinling.yang
7be5b53767 工件配送添加sns 2024-06-07 17:29:49 +08:00
yuxianghui
2cc91eea75 1、对模型的添加筛选和分组,优化界面 2024-06-07 17:27:25 +08:00
yuxianghui
2065625cd6 1、组装单添加校验 2024-06-07 09:42:09 +08:00
马广威
8c285c0eb5 Accept Merge Request #1068: (feature/增加批量调拨功能 -> develop)
Merge Request: 库存处增加批量调拨功能

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1068
2024-06-06 15:45:51 +08:00
mgw
22e24c5ed3 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/增加批量调拨功能 2024-06-06 15:44:38 +08:00
mgw
4459ed2e81 库存处增加批量调拨功能 2024-06-06 15:44:20 +08:00
禹翔辉
52bf899a1f Accept Merge Request #1067: (feature/刀具接口调整 -> develop)
Merge Request: 1、产品的成品、制造订单、工单添加零件图号字段;

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1067?initial=true
2024-06-06 14:41:30 +08:00
yuxianghui
002727070d 1、产品的成品、制造订单、工单添加零件图号字段; 2024-06-06 14:38:10 +08:00
杨金灵
81327f04de Accept Merge Request #1065: (hotfix/优化多次编程单下发 -> develop)
Merge Request: 优化多次编程单下发

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1065
2024-06-06 09:40:06 +08:00
杨金灵
e8c86c6306 Accept Merge Request #1066: (hotfix/刀具预调仪 -> develop)
Merge Request: 刀具预调仪

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1066
2024-06-06 09:37:10 +08:00
杨金灵
fd6b579e2a Merge branch refs/heads/develop into refs/heads/hotfix/刀具预调仪 2024-06-06 09:30:50 +08:00
杨金灵
0b2b162d85 Merge branch refs/heads/develop into refs/heads/hotfix/优化多次编程单下发 2024-06-06 09:29:39 +08:00
yuxianghui
206fc7bb21 Merge branch 'hotfix/新增刀具按批次管理' into hotfix/新增刀具按批次管理_1.1
# Conflicts:
#	sf_tool_management/controllers/controllers.py
2024-06-06 09:17:32 +08:00
马广威
07b1c3cceb Accept Merge Request #1063: (release/release_1.4 -> master)
Merge Request: 流程优化,功能增加

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1063?initial=true
2024-06-05 21:43:21 +08:00
jinling.yang
f9c697d2a7 Merge branch 'hotfix/优化多次编程单下发' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into release/release_1.4 2024-06-05 18:04:10 +08:00
jinling.yang
2eaec4fa58 修复编程单下发时,删除容器内tmp目录下模型编码已有的文件 2024-06-05 18:03:08 +08:00
黄焱
e306d02ff2 Accept Merge Request #1062: (feature/前端样式修改 -> develop)
Merge Request: 设置表单页面label文本不换行

Created By: @黄焱
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @黄焱
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1062
2024-06-05 17:42:54 +08:00
黄焱
09c56b2c07 设置表单页面label文本不换行 2024-06-05 17:35:07 +08:00
jinling.yang
8a1a06c3ad Merge branch 'hotfix/刀具预调仪' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into release/release_1.4 2024-06-05 17:28:33 +08:00
yuxianghui
f4926820fe 1、清除刀具物料的自动调用同步方法; 2024-06-05 17:18:18 +08:00
jinling.yang
2055d70e27 Merge branch 'hotfix/优化多次编程单下发' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into release/release_1.4 2024-06-05 17:15:00 +08:00
jinling.yang
5361fa7678 修复create_cam_work_plan方法 2024-06-05 17:14:20 +08:00
jinling.yang
edf8e1004e 修改条件 2024-06-05 17:00:17 +08:00
jinling.yang
17e2a3ffc3 cnc程序的程序单更新 2024-06-05 16:26:34 +08:00
jinling.yang
7a539d7916 Merge branch 'hotfix/刀具预调仪' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into release/release_1.4 2024-06-05 16:11:24 +08:00
jinling.yang
e258e43b51 优化多次编程单下发 2024-06-05 16:09:56 +08:00
杨金灵
1af160542c Accept Merge Request #1061: (feature/优化制造订单报废流程 -> develop)
Merge Request: 优化部分制造订单报废流程

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1061
2024-06-05 15:53:56 +08:00
jinling.yang
71246af16a 还原注释代码 2024-06-05 15:52:50 +08:00
yuxianghui
d2f4e5495e 1、功能刀具拆解单优化,添加对功能刀具的当前位置校验,只有在刀具房的刀具才能进行拆解;2、中控机床刀库接口优化,清除刀位已经移除的功能刀具信息; 2024-06-05 15:20:00 +08:00
yuxianghui
ba2b833aa8 1 2024-06-05 11:00:21 +08:00
yuxianghui
cf0afd6c64 1、添加刀具预调仪功能 2024-06-05 10:54:58 +08:00
yuxianghui
b6acbb8357 1、功能刀具拆解单新增拆解单号,优化拆解单 2024-06-05 10:23:13 +08:00
杨金灵
e290760895 Accept Merge Request #1060: (hotfix/修复工件上下产线 -> develop)
Merge Request: 修复工件上下产线

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1060
2024-06-05 10:13:02 +08:00
杨金灵
fdfd01605d Merge branch refs/heads/develop into refs/heads/hotfix/修复工件上下产线 2024-06-05 09:30:30 +08:00
马广威
19799aefe4 Accept Merge Request #1059: (release/release_1.3 -> master)
Merge Request: 优化工件上下产线及配送、优化编程单下发

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1059?initial=true
2024-06-04 22:28:57 +08:00
yuxianghui
d47dcc7611 1、取消创建产品时,自动生成内部参考的值;2、优化功能刀具拆解单,修改由拆解单生成的移动历史单据编码生成规则;3、优化货位看板以及货位看板的货位变更功能; 2024-06-04 17:25:45 +08:00
jinling.yang
f33d7b79fc 优化工件上下产线 2024-06-04 16:13:42 +08:00
jinling.yang
8bd5841d7a 去掉重写state方法 2024-06-04 15:59:35 +08:00
yuxianghui
3882d3a3cb 1、功能刀具拆解单拆解流程优化;2、优化货位看板显示; 2024-06-04 11:26:00 +08:00
jinling.yang
e9ab57854e 修改生成外协出入库单时,查询条件排序修改为根据create_date或id排序 2024-06-04 10:48:50 +08:00
jinling.yang
6fc94042ee 中控调取cnc工单时,工单不完成,加工完成时间为当前时间 2024-06-04 10:42:34 +08:00
jinling.yang
b70ec36365 修改生成外协出入库单时,查询条件排序修改为根据id排序 2024-06-04 10:33:40 +08:00
yuxianghui
67c4f64d08 1、优化刀具组装单、刀具组装单弹窗、刀具拆解单,添加除刀柄外刀具物料按批次号进行管理;优化界面布局,优化组装流程; 2024-06-03 17:34:47 +08:00
jinling.yang
3738b8d72b 中控请求接口超时改为10秒 2024-06-03 17:21:42 +08:00
jinling.yang
5fb9326d8b 中控请求接口超时改为30秒 2024-06-03 17:09:35 +08:00
jinling.yang
2ab9f37062 1.修复工件配送2.优化运送空料架.3.cloud下发编程单至sf时,将程序单pdf同步至制造订单的装夹预调工单的加工图纸上4.修复工件上下产线接口 2024-06-03 16:59:14 +08:00
jinling.yang
711e0d1437 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化制造订单报废流程 2024-06-03 16:09:08 +08:00
杨金灵
49d55822cc Accept Merge Request #1058: (feature/优化工件上下产线及配送 -> develop)
Merge Request: 优化工件上下产线及配送

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1058
2024-06-03 15:53:19 +08:00
jinling.yang
ea6de0c248 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化制造订单报废流程
# Conflicts:
#	sf_manufacturing/models/mrp_production.py
2024-06-03 15:43:57 +08:00
jinling.yang
2db81ac2cc Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化工件上下产线及配送 2024-06-03 15:36:37 +08:00
jinling.yang
a673630fd3 1.优化工件配送超时提示2.优化工件上下线接口3.优化编程单下发至cnc工单时,将程序单pdf文件也传给装夹预调工单的加工图纸字段上 2024-06-03 15:36:19 +08:00
yuxianghui
a7102c81d4 1、新增货位批次数量模型,用来存储货位产品的批次及其数量;完成该模型根据货位产品的出入库记录自动新增或减少货位产品批次的数量。 2024-06-03 14:14:04 +08:00
yuxianghui
d213a2cf54 接口调整 2024-05-31 11:14:02 +08:00
禹翔辉
6c5b888bba Accept Merge Request #1057: (hotfix/新增中控接口-功能刀具查询 -> develop)
Merge Request: 优化功能刀具清单查询接口,新增功能刀具查询接口。

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1057
2024-05-31 09:52:45 +08:00
马广威
d527bc6899 Accept Merge Request #1056: (release/release_1.2 -> master)
Merge Request: 1、优化功能刀具清单查询接口,新增功能刀具查询接口。

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1056?initial=true
2024-05-30 21:34:14 +08:00
yuxianghui
7d6fb4f0e3 1、优化货位 2024-05-30 17:26:28 +08:00
jinling.yang
aa6b476e35 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-05-30 16:53:13 +08:00
jinling.yang
263253e79e Merge branch 'feature/修复报价选择已有产品确认问题' into develop 2024-05-30 16:52:42 +08:00
杨金灵
edda681940 Accept Merge Request #1054: (feature/修复报价选择已有产品确认问题 -> develop)
Merge Request: 修复报价选择已有产品确认问题

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1054?initial=true
2024-05-30 16:52:27 +08:00
jinling.yang
7043d2b8b7 添加日志 2024-05-30 16:52:06 +08:00
马广威
6d66872dee Accept Merge Request #1055: (feature/修复会计凭证借贷无法输入的问题 -> develop)
Merge Request: 修复会计凭证借贷无法输入的问题

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1055?initial=true
2024-05-30 16:48:56 +08:00
mgw
3ab378f3bd 修复会计凭证借贷无法输入的问题 2024-05-30 16:48:02 +08:00
jinling.yang
26c979ef1d 修复报价选择已有产品确认问题 2024-05-30 16:45:32 +08:00
yuxianghui
6405944cf1 1、优化功能刀具清单查询接口,新增功能刀具查询接口。 2024-05-30 15:22:30 +08:00
yuxianghui
1d4aaa40cd 1、优化刀具采购入库,入库时自动生成批次号;2、优化货位看板 2024-05-30 14:46:15 +08:00
jinling.yang
9aa4858774 Merge branch 'feature/空料架名称去重校验' into develop 2024-05-30 11:05:09 +08:00
jinling.yang
d883a7ff22 新增名称校验 2024-05-30 11:01:29 +08:00
yuxianghui
683e9631fa 刀具物料产品优化需求 2024-05-30 09:36:17 +08:00
jinling.yang
17678c53c9 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/空料架名称去重校验 2024-05-29 17:56:55 +08:00
jinling.yang
fb3cc095b2 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-05-29 17:56:36 +08:00
jinling.yang
c437c185a4 空料架名称去重校验 2024-05-29 17:56:22 +08:00
jinling.yang
b3eb3ee8fa Merge branch 'feature/优化配送空料架' into develop 2024-05-29 15:53:59 +08:00
杨金灵
b9ec821293 Accept Merge Request #1052: (feature/优化配送空料架 -> develop)
Merge Request: 优化配送空料架

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1052
2024-05-29 15:53:30 +08:00
jinling.yang
f8a9fcc0ce 工件配送去掉重复的起点接驳站 2024-05-29 15:26:47 +08:00
jinling.yang
d12714dd65 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化配送空料架 2024-05-29 15:23:32 +08:00
jinling.yang
a1bea537bb Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-05-29 15:23:12 +08:00
jinling.yang
5350675355 释放occ注释代码 2024-05-29 15:22:57 +08:00
jinling.yang
65d2593db9 配送空料架开放新建 2024-05-29 15:03:08 +08:00
禹翔辉
a529c5513e Accept Merge Request #1051: (hotfix/制造订单的工单顺序错误bug -> develop)
Merge Request: 修复 【制造订单的工单顺序错误,需排查处理bug】 问题

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1051
2024-05-29 14:37:58 +08:00
禹翔辉
f5f881f256 Merge branch refs/heads/develop into refs/heads/hotfix/制造订单的工单顺序错误bug 2024-05-29 14:22:15 +08:00
jinling.yang
caf7aaa560 Merge branch 'master' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf 2024-05-29 12:50:44 +08:00
jinling.yang
d2babec1aa Merge tag '修复编程单下发接口' into develop 2024-05-29 12:50:05 +08:00
jinling.yang
ab2978b4ab Merge branch 'hotfix/修复编程单下发接口' 2024-05-29 12:50:04 +08:00
马广威
0b9c856d56 Accept Merge Request #1050: (release/release_1_1 -> master)
Merge Request: hotfix工厂环境问题,详见描述

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1050?initial=true
2024-05-29 12:47:10 +08:00
jinling.yang
66dc7b540c Merge branch 'hotfix/修复编程单下发接口' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into release/release_1_1 2024-05-29 12:44:06 +08:00
jinling.yang
decfd27401 1.修复cnc工单没有程序文件路径
2.修复编程单已下发,在工件配送时,提示未下发nc程序
2024-05-29 12:41:55 +08:00
yuxianghui
f71d62dad1 优化工单工序 2024-05-29 11:26:17 +08:00
jinling.yang
a1d8b88db2 修复工单排序 2024-05-29 10:25:23 +08:00
yuxianghui
b7a11f0abe 修复 【制造订单的工单顺序错误,需排查处理bug】 问题 2024-05-29 09:34:41 +08:00
jinling.yang
7ab954ebbc Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化制造订单报废流程 2024-05-29 09:30:41 +08:00
jinling.yang
f7723f1b9c Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-05-29 09:30:20 +08:00
jinling.yang
fe88a416a7 制造订单合并一张编程单下发时,工件配送记录的未下发nc程序为未下发及cnc程序没有对应ftp文件路径问题 2024-05-28 17:57:27 +08:00
禹翔辉
ef80848e9b Accept Merge Request #1048: (feature/优化工单工序 -> develop)
Merge Request: 1、优化生成工单工序的方法

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1048?initial=true
2024-05-28 16:39:52 +08:00
yuxianghui
138dd40a9e Merge branch 'feature/组装单弹窗优化' into feature/优化工单工序 2024-05-28 16:37:51 +08:00
yuxianghui
dc210f7263 1 2024-05-28 16:36:49 +08:00
yuxianghui
9055e7ed8b 1、优化生成工单工序的方法 2024-05-28 16:35:06 +08:00
黄焱
6890ddf615 Accept Merge Request #1047: (feature/前端样式修改 -> develop)
Merge Request: 设置表格横向滚动

Created By: @黄焱
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @黄焱
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1047
2024-05-27 17:53:23 +08:00
黄焱
6dc29fb50a Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/前端样式修改 2024-05-27 17:48:06 +08:00
jinling.yang
412bf4b9be 优化返工和报废 2024-05-24 17:00:44 +08:00
黄焱
c7df18ace6 设置表格横向滚动 2024-05-24 14:35:22 +08:00
马广威
053eba5887 Accept Merge Request #1046: (feature/组装单弹窗优化 -> develop)
Merge Request: 1、优化功能刀具定时同步接口,增加刀柄长度数据同步

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1046#mr-1046-review-152801
2024-05-23 16:25:16 +08:00
yuxianghui
e935b2fa11 1、优化功能刀具定时同步接口,增加刀柄长度数据同步 2024-05-23 16:18:48 +08:00
禹翔辉
d5bc610214 Accept Merge Request #1045: (feature/组装单弹窗优化 -> develop)
Merge Request: 1、将刀具名称字段获取由onchange改为depends

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1045
2024-05-23 15:46:34 +08:00
yuxianghui
2ca67eb8ad 1、将刀具名称字段获取由onchange改为depends 2024-05-23 15:43:32 +08:00
禹翔辉
b6a69debd8 Accept Merge Request #1044: (feature/组装单弹窗优化 -> develop)
Merge Request: 1、打开组装弹窗方法添加清除旧数据功能;2、组装弹窗界面,刷新按键名称改为获取测量值,添加是否获取测量值字段等,调整字段只读和界面布局;

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1044?initial=true
2024-05-23 15:24:38 +08:00
yuxianghui
147ac35239 Merge branch 'feature/组装单优化' into feature/组装单弹窗优化 2024-05-23 15:22:35 +08:00
yuxianghui
3c3f375120 1、打开组装弹窗方法添加清除旧数据功能;2、组装弹窗界面,刷新按键名称改为获取测量值,添加是否获取测量值字段等,调整字段只读和界面布局; 2024-05-23 15:19:41 +08:00
jinling.yang
c87f310bb3 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-05-23 14:34:39 +08:00
禹翔辉
f53eecbb57 Accept Merge Request #1043: (feature/组装单优化 -> develop)
Merge Request: 1、组装单弹窗界面调整,优化按刷新后最大寿命值归0的问题;

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1043?initial=true
2024-05-23 14:33:51 +08:00
jinling.yang
1743fa45b5 Merge branch 'feature/优化返工和重新制造订单' into develop 2024-05-23 14:33:09 +08:00
yuxianghui
75f30922e6 1、组装单弹窗界面调整,优化按刷新后最大寿命值归0的问题; 2024-05-23 14:32:13 +08:00
jinling.yang
3a0db05c33 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化返工和重新制造订单 2024-05-23 11:46:26 +08:00
jinling.yang
5f42b5d056 优化制造订单报废流程,返工流程暂停(需求需重新设计) 2024-05-23 11:46:09 +08:00
禹翔辉
c698b50853 Accept Merge Request #1041: (feature/组装单优化 -> develop)
Merge Request: 1、优化刀具预调仪接口的数据处理方式、更改搜索组装单条件;2、优化功能刀具、组装单、组装单弹窗的字段和界面展示的字段内容;3、更改组装单编码生成规则

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1041?initial=true
2024-05-23 11:18:40 +08:00
yuxianghui
251786f6be Merge branch 'feature/刀具预调仪接口优化' into feature/组装单优化 2024-05-23 11:16:13 +08:00
yuxianghui
66b4df5193 1、优化刀具预调仪接口的数据处理方式、更改搜索组装单条件;2、优化功能刀具、组装单、组装单弹窗的字段和界面展示的字段内容;3、更改组装单编码生成规则 2024-05-23 11:15:13 +08:00
jinling.yang
57b264b84d Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化返工和重新制造订单 2024-05-22 17:36:17 +08:00
jinling.yang
ff12a86406 优化cnc工单返工:在原有的cnc工单后新增返工标志的cnc工单,且工序累加,状态为就绪,解除装夹工单的状态为等待其他工单 2024-05-22 17:35:57 +08:00
禹翔辉
b0b3ce7d99 Accept Merge Request #1040: (feature/刀具预调仪接口优化 -> develop)
Merge Request: 新增刀具预调仪接口,优化组装按键

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1040?initial=true
2024-05-22 15:09:22 +08:00
yuxianghui
8d02a94f78 Merge branch 'feature/物料同步接口优化' into feature/刀具预调仪接口优化 2024-05-22 15:05:55 +08:00
yuxianghui
4f6e4a8ed3 1、优化刀具预调仪接口及其写入到弹窗的流程,更改刀具总长度(高度)、直径和R角字段的精确度为小数点后三位; 2024-05-22 15:04:37 +08:00
黄焱
b524e385a1 Accept Merge Request #1039: (feature/前端样式修改 -> develop)
Merge Request: // 功能刀具组装单 弹窗样式

Created By: @黄焱
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @黄焱
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1039
2024-05-22 09:39:24 +08:00
yuxianghui
d22f08d187 1、添加刀具预调仪接口;2、刀具组装单添加开始预调字段,优化组装按键;3、优化组装单组装时的必填校验,添加刷新按钮用来获取刀具预调仪的参数信息; 2024-05-21 21:41:17 +08:00
黄焱
2ba53bbb02 // 功能刀具组装单 弹窗样式 2024-05-21 17:38:54 +08:00
禹翔辉
38e0a62130 Accept Merge Request #1038: (feature/物料同步接口优化 -> develop)
Merge Request: 动态物料同步接口优化

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1038?initial=true
2024-05-21 09:27:33 +08:00
yuxianghui
bf1b14290e Merge branch 'feature/解决刀具组装时搜不到功能刀具产品问题' into feature/物料同步接口优化 2024-05-21 09:25:13 +08:00
yuxianghui
1b6ca90bd4 1、优化刀具、夹具同步接口;关闭刀具同步接口的实时调用; 2024-05-21 09:23:47 +08:00
马广威
8ced717b1c Accept Merge Request #1037: (release/release1.0 -> master)
Merge Request: master_sf_2.0

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1037?initial=true
2024-05-18 22:44:11 +08:00
mgw
187495eb67 Merge branch 'master' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into release/release1.0
# Conflicts:
#	sf_base/__init__.py
#	sf_base/__manifest__.py
#	sf_base/commons/__init__.py
#	sf_base/commons/common.py
#	sf_base/models/__init__.py
#	sf_base/models/base.py
#	sf_base/models/common.py
#	sf_base/security/group_security.xml
#	sf_base/security/ir.model.access.csv
#	sf_base/views/base_view.xml
#	sf_base/views/common_view.xml
#	sf_base/views/menu_view.xml
#	sf_bf_connect/__init__.py
#	sf_bf_connect/__manifest__.py
#	sf_bf_connect/controllers/__init__.py
#	sf_bf_connect/controllers/controllers.py
#	sf_bf_connect/models/__init__.py
#	sf_bf_connect/models/http.py
#	sf_bf_connect/models/models.py
#	sf_bf_connect/models/process_status.py
#	sf_bf_connect/views/res_partner_view.xml
#	sf_dlm/__manifest__.py
#	sf_dlm/data/product_data.xml
#	sf_dlm/models/__init__.py
#	sf_dlm/models/product_supplierinfo.py
#	sf_dlm/views/product_template_view.xml
#	sf_machine_connect/__init__.py
#	sf_machine_connect/__manifest__.py
#	sf_machine_connect/models/__init__.py
#	sf_machine_connect/models/ftp_client.py
#	sf_machine_connect/models/ftp_operate.py
#	sf_machine_connect/models/py2opcua.py
#	sf_machine_connect/security/ir.model.access.csv
#	sf_machine_connect/views/SfWorkOrderBarcodes.xml
#	sf_machine_connect/views/WorkCenterBarcodes.xml
#	sf_machine_connect/views/compensation.xml
#	sf_machine_connect/views/default_delivery.xml
#	sf_machine_connect/views/delivery_record.xml
#	sf_machine_connect/views/ftp_button.xml
#	sf_machine_connect/views/machine_info_present.xml
#	sf_machine_connect/views/machine_monitor.xml
#	sf_machine_connect/wizard/__init__.py
#	sf_machine_connect/wizard/action_up.py
#	sf_manufacturing/__init__.py
#	sf_manufacturing/__manifest__.py
#	sf_manufacturing/models/__init__.py
#	sf_manufacturing/models/model_type.py
#	sf_manufacturing/models/mrp_maintenance.py
#	sf_manufacturing/models/mrp_production.py
#	sf_manufacturing/models/mrp_routing_workcenter.py
#	sf_manufacturing/models/mrp_workcenter.py
#	sf_manufacturing/models/mrp_workorder.py
#	sf_manufacturing/models/res_user.py
#	sf_manufacturing/models/stock.py
#	sf_manufacturing/security/group_security.xml
#	sf_manufacturing/security/ir.model.access.csv
#	sf_manufacturing/views/model_type_view.xml
#	sf_manufacturing/views/mrp_routing_workcenter_view.xml
#	sf_manufacturing/views/mrp_workcenter_views.xml
#	sf_manufacturing/views/mrp_workorder_view.xml
#	sf_mrs_connect/__init__.py
#	sf_mrs_connect/__manifest__.py
#	sf_mrs_connect/controllers/controllers.py
#	sf_mrs_connect/data/ir_cron_data.xml
#	sf_mrs_connect/models/__init__.py
#	sf_mrs_connect/models/ftp_operate.py
#	sf_mrs_connect/models/res_config_setting.py
#	sf_mrs_connect/models/sync_common.py
#	sf_mrs_connect/views/res_config_settings_views.xml
#	sf_sale/__init__.py
#	sf_sale/__manifest__.py
#	sf_sale/models/__init__.py
#	sf_sale/models/sale_order.py
#	sf_sale/views/sale_order_view.xml
#	yizuo_login_background_and_styles/__manifest__.py
#	yizuo_login_background_and_styles/controllers/main.py
#	yizuo_login_background_and_styles/models/login_image.py
#	yizuo_login_background_and_styles/models/res_config_settings.py
2024-05-18 22:39:05 +08:00
马广威
5fccd41e07 Accept Merge Request #1035: (feature/制造代码优化 -> develop)
Merge Request: 修复库存岗位验证入库无权限问题

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1035?initial=true
2024-05-18 21:57:50 +08:00
mgw
0ae0ad2ba8 修复库存岗位验证入库无权限问题 2024-05-18 21:56:43 +08:00
马广威
afb5316d8a Accept Merge Request #1034: (feature/制造代码优化 -> develop)
Merge Request: 优化同步代码

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1034?initial=true
2024-05-18 21:33:47 +08:00
mgw
585e7236a1 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化 2024-05-18 21:33:04 +08:00
mgw
3afa76b79c 优化同步代码 2024-05-18 21:32:24 +08:00
马广威
6d503968a5 Accept Merge Request #1033: (feature/制造代码优化 -> develop)
Merge Request: 修复value bug

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1033?initial=true
2024-05-18 20:03:02 +08:00
mgw
cc7963cb5a 修复value bug 2024-05-18 20:02:32 +08:00
马广威
e2fdfbf1ee Accept Merge Request #1032: (feature/修复表面工艺对应库存 -> develop)
Merge Request: 修复表面工艺对应库存

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1032#mr-1032-review-151369
2024-05-18 19:54:48 +08:00
马广威
cdf164ec2c Accept Merge Request #1031: (feature/制造代码优化 -> develop)
Merge Request: cnc工单和解除装夹工单隐藏【工序状态】字段,装夹预调工单已完成后【工序状态】字段显示“装夹预调完成”

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1031?initial=true
2024-05-18 19:53:25 +08:00
jinling.yang
f9cca591bb 修复表面工艺工单完成时对应库存(stock.move)的状态为完成并跳过标记完成方法的检查 2024-05-18 19:52:58 +08:00
mgw
6f3d423da1 cnc工单和解除装夹工单隐藏【工序状态】字段,装夹预调工单已完成后【工序状态】字段显示“装夹预调完成” 2024-05-18 19:52:27 +08:00
jinling.yang
1bcd1f2e33 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-05-18 19:48:47 +08:00
马广威
9284701ed4 Accept Merge Request #1030: (feature/制造代码优化 -> develop)
Merge Request: 优化刀具弹窗

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1030?initial=true
2024-05-18 18:42:57 +08:00
mgw
2c5cc91ef7 优化刀具弹窗 2024-05-18 18:42:20 +08:00
jinling.yang
c6039215a3 Merge branch 'feature/修复销售确认按钮' into develop 2024-05-18 17:32:03 +08:00
杨金灵
21027a8cb6 Accept Merge Request #1029: (feature/修复销售确认按钮 -> develop)
Merge Request: 修复销售确认按钮

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1029
2024-05-18 17:31:39 +08:00
jinling.yang
80cd385df4 修复工单完成时制造订单未完成 2024-05-18 17:30:22 +08:00
jinling.yang
d7bcb0e4f3 修复销售确认按钮 2024-05-18 17:22:02 +08:00
jinling.yang
f62994878c Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-05-18 17:20:55 +08:00
马广威
50b0c37e46 Accept Merge Request #1028: (feature/解决刀具组装时搜不到功能刀具产品问题 -> develop)
Merge Request: 解决刀具组装时,搜不到功能刀具产品问题;

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1028#mr-1028-review-151363
2024-05-18 17:11:30 +08:00
yuxianghui
dc381faae6 Merge branch 'feature/刀具模块优化' into feature/解决刀具组装时搜不到功能刀具产品问题 2024-05-18 17:07:17 +08:00
yuxianghui
f05301320c 1、组装单添加按是否组装排序;2、修改功能刀具组装流程中搜索功能刀具产品的条件 2024-05-18 17:05:39 +08:00
jinling.yang
d87fcb35ba Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-05-18 16:48:24 +08:00
jinling.yang
be69e76d2f Merge branch 'feature/修复采购总监权限' into develop 2024-05-18 16:47:43 +08:00
jinling.yang
debd788864 修复快速订单 2024-05-18 16:46:59 +08:00
杨金灵
2546dd73b2 Accept Merge Request #1027: (feature/修复采购总监权限 -> develop)
Merge Request: 修复采购总监权限

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1027
2024-05-18 16:45:47 +08:00
jinling.yang
9f2415cfac 修复工件装夹岗无法创建采购订单 2024-05-18 16:45:01 +08:00
jinling.yang
2e151a2292 中控调用日志排序 2024-05-18 16:14:05 +08:00
jinling.yang
9b2ff6268c 修复采购总监权限 2024-05-18 16:08:39 +08:00
杨金灵
d1c08023b9 Accept Merge Request #1026: (feature/修复表面工艺工单 -> develop)
Merge Request: 修复表面工艺工单

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1026?initial=true
2024-05-18 15:28:53 +08:00
jinling.yang
5f02de8b0c Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复表面工艺工单
# Conflicts:
#	sf_manufacturing/models/mrp_workorder.py
2024-05-18 15:27:17 +08:00
jinling.yang
0f5b94e8ca 1.修复销售订单确认按钮确认后不可见2.修复表面工艺工单完成3.下发编程单工件配送优化 2024-05-18 15:26:32 +08:00
马广威
795b4d43a8 Accept Merge Request #1025: (feature/制造代码优化 -> develop)
Merge Request: 修复仓储岗位权限遗留问题,暂时去掉根据CNC工单是否有编程单来控制装夹预调工单状态的功能,待重议此需求逻辑

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1025?initial=true
2024-05-18 15:15:46 +08:00
mgw
d9d1f86407 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化 2024-05-18 15:14:38 +08:00
mgw
337fecb4cb 暂时去掉根据CNC工单是否有编程单来控制装夹预调工单状态的功能,待重议此需求逻辑 2024-05-18 15:01:09 +08:00
马广威
4be83d8aab Accept Merge Request #1024: (feature/刀具模块优化 -> develop)
Merge Request: 刀具模块优化

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1024#mr-1024-review-151348
2024-05-18 11:57:27 +08:00
yuxianghui
049521064b Merge branch 'feature/oca审批修改' into feature/刀具模块优化 2024-05-18 11:55:20 +08:00
yuxianghui
9e2091597b 1、注释action_apply_inventory()方法;2、功能刀具安全库存添加one2many类型的功能刀具废弃many2many类型的关联字段并优化代码,并在功能刀具模型添加功能按钮用来绑定功能刀具和对应的功能刀具安全库存;3、优化根据库存创建功能刀具组装单的方法断定条件;4、优化刀具注册接口的报错处理;5、优化组装流程 2024-05-18 11:54:23 +08:00
杨金灵
01f82fcb5d Accept Merge Request #1023: (feature/修复外协位置 -> develop)
Merge Request: 修复外协位置

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1023?initial=true
2024-05-18 11:18:46 +08:00
jinling.yang
939aa974e6 修复外协位置 2024-05-18 11:17:11 +08:00
jinling.yang
829c971848 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-05-18 10:29:43 +08:00
mgw
a4b2d5bb42 修复仓储岗位权限遗留问题 2024-05-18 10:29:02 +08:00
jinling.yang
ebdc1ec2ff Merge branch 'feature/修改表面工艺外协位置' into develop 2024-05-18 10:27:50 +08:00
杨金灵
f0d66b7730 Accept Merge Request #1022: (feature/修改表面工艺外协位置 -> develop)
Merge Request: 修改表面工艺外协位置

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1022
2024-05-18 10:27:18 +08:00
jinling.yang
a935112134 外协代码还原 2024-05-18 10:24:31 +08:00
jinling.yang
70bc2ed718 修改表面工艺外协位置 2024-05-18 10:21:09 +08:00
jinling.yang
c230e550a9 Merge branch 'feature/修复表面工艺工单完成问题' into develop 2024-05-17 17:26:20 +08:00
jinling.yang
297bf76809 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复表面工艺工单完成问题 2024-05-17 16:34:23 +08:00
jinling.yang
2dc9866735 1.修复表面工艺工单完成报错2.外协位置改为供应商位置3.采购总监添加创建制造订单权限 2024-05-17 16:26:15 +08:00
禹翔辉
305e91e7f1 Accept Merge Request #1020: (feature/oca审批修改 -> develop)
Merge Request: 1、优化组装流程;2、添加权限;3、oca审批优化

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1020?initial=true
2024-05-17 15:00:58 +08:00
yuxianghui
a5b9b63b41 Merge branch 'feature/主流程bug处理' into feature/oca审批修改 2024-05-17 14:57:46 +08:00
yuxianghui
1a0e96bbdd 1、采购审批流程中的英文提示信息改为中文提示;当审批完成后隐藏取消审批按键;2、刀具注册接口添加调用接口提示; 2024-05-17 14:56:15 +08:00
马广威
095c15cba4 Accept Merge Request #1019: (feature/制造代码优化 -> develop)
Merge Request: 显示优化,物流下单增补逻辑

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1019?initial=true
2024-05-17 11:48:21 +08:00
mgw
fe6bb46d54 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化 2024-05-17 11:47:44 +08:00
mgw
432a012596 显示优化,物流下单增补逻辑 2024-05-17 11:47:26 +08:00
杨金灵
27b5e92563 Accept Merge Request #1018: (feature/修复销售确认按钮 -> develop)
Merge Request: 修复销售确认按钮

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1018?initial=true
2024-05-17 11:32:45 +08:00
jinling.yang
e5164454f2 修复销售确认按钮 2024-05-17 11:31:07 +08:00
jinling.yang
b79cdea926 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-05-17 11:10:49 +08:00
jinling.yang
836a598cf8 Merge branch 'feature/表面工艺外协修复' into develop 2024-05-17 11:10:02 +08:00
杨金灵
3a0a4b0f15 Accept Merge Request #1017: (feature/表面工艺外协修复 -> develop)
Merge Request: 表面工艺外协修复

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1017?initial=true
2024-05-17 11:07:46 +08:00
jinling.yang
cda0b6d345 还原OCC代码 2024-05-17 11:04:35 +08:00
jinling.yang
7e31869d1f Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/表面工艺外协修复
# Conflicts:
#	sf_sale/views/sale_order_view.xml
2024-05-17 11:00:58 +08:00
jinling.yang
ea1ed43c92 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/表面工艺外协修复 2024-05-17 11:00:00 +08:00
yuxianghui
eb83114e54 1、优化组装流程;2、添加权限 2024-05-16 17:34:38 +08:00
禹翔辉
af45775040 Accept Merge Request #1016: (feature/主流程bug处理 -> develop)
Merge Request: 主流程bug处理

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1016
2024-05-16 14:16:06 +08:00
yuxianghui
03f5027f49 Merge branch 'feature/优化产品' into feature/主流程bug处理 2024-05-16 14:13:40 +08:00
yuxianghui
20ecd9d949 1、将和刀具相关的模型的刀具直径字段类型从int改为float;2、标准刀库tree视图添加Rfid字段;优化从中控获取标准刀库信息接口; 2024-05-16 14:04:35 +08:00
马广威
ed2c119803 Accept Merge Request #1015: (feature/制造代码优化 -> develop)
Merge Request: 处理物流处修改销售订单状态问题

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1015?initial=true
2024-05-16 09:44:13 +08:00
yuxianghui
37cf4ca435 1、新增sf_oca模块 2024-05-16 09:42:35 +08:00
yuxianghui
1c441d388f 1、序列号模型添加Rfid字段的重复校验;功能刀具模型优化搜索视图的字段;优功能刀具组装流程的值 2024-05-16 09:41:57 +08:00
mgw
d244409d9c 处理物流处修改销售订单状态问题 2024-05-15 14:09:44 +08:00
禹翔辉
1a66d6728e Accept Merge Request #1014: (feature/优化产品 -> develop)
Merge Request: 1、优化CNC加工流程

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1014
2024-05-14 15:57:26 +08:00
yuxianghui
002c5c06b4 1、优化CNC加工流程 2024-05-14 15:55:34 +08:00
禹翔辉
de62801ef1 Accept Merge Request #1013: (feature/优化产品 -> develop)
Merge Request: 1、关闭产品、采购单中关联字段的创建功能;2、优化采购入库验证条件;

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1013
2024-05-14 14:20:10 +08:00
yuxianghui
62ec721c69 1 2024-05-14 14:19:44 +08:00
yuxianghui
2194374aa2 Merge branch 'feature/解决bug、优化权限' into feature/优化产品 2024-05-14 14:11:39 +08:00
yuxianghui
eff6ce9f1b 1、关闭产品、采购单中关联字段的创建功能;2、优化采购入库验证条件; 2024-05-14 14:09:42 +08:00
杨金灵
9fcfaee8d1 Accept Merge Request #1012: (feature/销售订单列表倒序排序 -> develop)
Merge Request: 销售订单列表倒序排序

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1012?initial=true
2024-05-14 11:02:27 +08:00
jinling.yang
90aae4dad9 销售订单按创建时间倒序 2024-05-14 10:59:35 +08:00
jinling.yang
934b59d213 坯料新增路线 2024-05-14 10:51:38 +08:00
jinling.yang
ed9b575fb5 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-05-13 14:04:30 +08:00
禹翔辉
bcd7ae9dd1 Accept Merge Request #1011: (feature/解决bug、优化权限 -> develop)
Merge Request: 1、添加权限;2、设备的设备检修标准字段关闭创建功能;3、解决 销售经理创建报价单选择产品后没有把模型和价格带过去 的bug;4、关闭仓库创建按钮

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1011
2024-05-13 12:01:16 +08:00
yuxianghui
48782cb62b Merge branch 'feature/解决主流程bug' into feature/解决bug、优化权限 2024-05-13 11:55:55 +08:00
yuxianghui
0f47f7c3b8 1、添加权限;2、设备的设备检修标准字段关闭创建功能;3、解决 销售经理创建报价单选择产品后没有把模型和价格带过去 的bug;4、关闭仓库创建按钮 2024-05-13 11:54:03 +08:00
jinling.yang
d9f339c4b0 Merge branch 'feature/修复表面工艺外协' into develop 2024-05-13 09:25:44 +08:00
杨金灵
d4b22d228b Accept Merge Request #1010: (feature/修复表面工艺外协 -> develop)
Merge Request: 优化同一产品多个制造订单合并一张编程单和模型库

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1010
2024-05-13 09:24:12 +08:00
jinling.yang
e916e4e155 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复表面工艺外协 2024-05-12 21:33:57 +08:00
jinling.yang
9dccee84c4 1.优化同一个产品多个制造订单的编程单合并到一张编程单和一个模型库至cloud 2024-05-12 21:33:43 +08:00
马广威
97ce5d81c8 Accept Merge Request #1009: (feature/制造代码优化 -> develop)
Merge Request: 修复工单预计结束时间会取实际结束时间的问题

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1009?initial=true
2024-05-12 13:16:40 +08:00
mgw
c6638ac3f3 修复工单预计结束时间会取实际结束时间的问题 2024-05-12 13:14:53 +08:00
马广威
05e8507000 Accept Merge Request #1008: (feature/制造代码优化 -> develop)
Merge Request: 去掉销售订单加工状态

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1008?initial=true
2024-05-11 23:38:58 +08:00
mgw
1afc48a20e 去掉销售订单加工状态 2024-05-11 23:36:18 +08:00
马广威
053cd5fd89 Accept Merge Request #1007: (feature/制造代码优化 -> develop)
Merge Request: 修复制造订单加工无状态问题

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1007?initial=true
2024-05-11 22:44:30 +08:00
mgw
391a172016 修复制造订单加工无状态问题 2024-05-11 22:42:58 +08:00
禹翔辉
d3677b9c89 Accept Merge Request #1006: (feature/解决主流程bug -> develop)
Merge Request: 1、等待组件状态的装夹预调工单点击【开始】时,没有组件给提示信息;2、隐藏装夹预调工单列表看板,3、库存-内部调拨-产品是刀具物料除刀柄外,其他刀具物料目标货位添加必填校验;

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1006?initial=true
2024-05-11 16:41:01 +08:00
yuxianghui
384b032ef3 Merge branch 'feature/解决坯料外协不生成外协出库单bug' into feature/解决主流程bug 2024-05-11 16:36:17 +08:00
yuxianghui
0ddf2ce1bd 1、等待组件状态的装夹预调工单点击【开始】时,没有组件给提示信息;2、隐藏装夹预调工单列表看板,3、库存-内部调拨-产品是刀具物料除刀柄外,其他刀具物料目标货位添加必填校验; 2024-05-11 16:34:29 +08:00
杨金灵
05307fa25e Accept Merge Request #1005: (feature/修复表面工艺可选参数和模版类型 -> develop)
Merge Request: 修复表面工艺可选参数和模版类型

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1005?initial=true
2024-05-11 15:42:31 +08:00
jinling.yang
76b7d00643 1.模版类型的成品,坯料,表面工艺模版的工序新增过滤2.表面工艺可选参数的适用材料修改为可编辑 2024-05-11 15:35:15 +08:00
jinling.yang
0f8c4e8765 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-05-11 14:04:15 +08:00
jinling.yang
a1081fe8cc Merge branch 'feature/优化制造订单和编程' into develop 2024-05-11 14:03:31 +08:00
杨金灵
47ed09152d Accept Merge Request #1004: (feature/优化制造订单和编程 -> develop)
Merge Request: 优化制造订单和工件配送

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1004
2024-05-11 14:02:09 +08:00
jinling.yang
50dc25a8b7 还原注释代码 2024-05-11 13:51:52 +08:00
jinling.yang
b80df25e0a 注释代码为第二期同一产品多个编程单需求 2024-05-11 13:44:30 +08:00
jinling.yang
999959b6a1 1.修复工件配送向导制造订单号能显示5个
2工件配送向导页面优化
3.生成制造订单同时工件配送默认路线
2024-05-11 13:38:57 +08:00
jinling.yang
ec01b89242 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化制造订单和编程
# Conflicts:
#	sf_manufacturing/models/mrp_workorder.py
2024-05-11 00:20:08 +08:00
jinling.yang
c932fa035a Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-05-11 00:17:54 +08:00
jinling.yang
2bffc5964a 1.1修复排程工件配送没有目的生产线2.注释获取cnc程序最新代码(第二期)3.优化部分页面 2024-05-11 00:17:43 +08:00
禹翔辉
7d7096a36c Accept Merge Request #1003: (feature/解决坯料外协不生成外协出库单bug -> develop)
Merge Request: 1、解决 坯料外协不生成外协出库单 的bug;2、添加工件装夹岗对sf.functional.cutting.tool.entity模型的查询权限

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1003?initial=true
2024-05-10 16:45:56 +08:00
yuxianghui
6c70f43b1b Merge branch 'feature/解决工单Rfid相关bug' into feature/解决坯料外协不生成外协出库单bug 2024-05-10 16:43:55 +08:00
yuxianghui
016a279453 1、解决 坯料外协不生成外协出库单 的bug;2、添加工件装夹岗对sf.functional.cutting.tool.entity模型的查询权限 2024-05-10 16:42:54 +08:00
马广威
52bbc6f6cd Accept Merge Request #1002: (feature/制造代码优化 -> develop)
Merge Request: 在工单完成处控制状态,来避免非正常操作导致的制造订单状态异常问题

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1002?initial=true
2024-05-10 16:07:55 +08:00
mgw
1dfa890a4d Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化 2024-05-10 16:06:51 +08:00
mgw
d9543d42fd 在工单完成处控制状态,来避免非正常操作导致的制造订单状态异常问题 2024-05-10 16:01:33 +08:00
jinling.yang
b5c9387d8c Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化制造订单和编程 2024-05-09 21:58:45 +08:00
jinling.yang
c4609e35a5 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-05-09 18:29:45 +08:00
jinling.yang
3d56e54fb2 优化制造订单的获取cnc程序 2024-05-09 18:29:30 +08:00
马广威
494b6c69da Accept Merge Request #1001: (feature/制造代码优化 -> develop)
Merge Request: 为工单预计时间增加初始值

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1001?initial=true
2024-05-09 14:52:39 +08:00
mgw
e2d3b36683 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化 2024-05-09 14:51:42 +08:00
mgw
138e22255e 为工单预计时间增加初始值 2024-05-09 14:51:21 +08:00
黄焱
7200d03733 Accept Merge Request #1000: (feature/前端样式修改 -> develop)
Merge Request: // 修改 【批量排程】【配送】 按钮UI

Created By: @黄焱
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @黄焱
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1000?initial=true
2024-05-09 11:20:06 +08:00
黄焱
f3c98c9727 // 修改 【批量排程】【配送】 按钮UI 2024-05-09 11:18:01 +08:00
jinling.yang
6a4fd4d922 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化制造订单和编程 2024-05-09 11:11:16 +08:00
jinling.yang
38298f4a32 Merge branch 'feature/优化agv调用中控接驳站接口' into develop 2024-05-09 11:08:17 +08:00
杨金灵
41603f4caa Accept Merge Request #999: (feature/优化agv调用中控接驳站接口 -> develop)
Merge Request: 优化agv调用中控接驳站接口

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/999?initial=true
2024-05-09 11:08:02 +08:00
jinling.yang
1a63f82f4b 优化agv调用中控接驳站接口 2024-05-09 11:04:59 +08:00
jinling.yang
0ea3d6f0b3 优化agv接驳站 2024-05-09 11:04:07 +08:00
jinling.yang
54a08802d9 修复装夹工单状态 2024-05-09 10:45:14 +08:00
jinling.yang
388b0b4e4c 优化制造 2024-05-09 10:37:41 +08:00
马广威
db7382826e Accept Merge Request #998: (feature/制造代码优化 -> develop)
Merge Request: sf_t切换数据库

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/998?initial=true
2024-05-09 10:10:01 +08:00
mgw
07cf13dce7 sf_t切换数据库 2024-05-09 10:09:26 +08:00
马广威
28f4adb293 Accept Merge Request #997: (feature/制造代码优化 -> develop)
Merge Request: 修复排程选择生产线bug

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/997?initial=true
2024-05-09 09:45:07 +08:00
mgw
ac3081d3bf Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化 2024-05-09 09:44:23 +08:00
mgw
4e84562ba7 修复排程选择生产线bug 2024-05-09 09:43:54 +08:00
马广威
72d59c11db Accept Merge Request #996: (feature/制造代码优化 -> develop)
Merge Request: 处理工单可能为记录集的问题,增加邮件发送公用类

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/996?initial=true
2024-05-09 09:28:18 +08:00
mgw
8c279828be Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化
# Conflicts:
#	sf_manufacturing/models/mrp_workorder.py
2024-05-09 09:25:19 +08:00
马广威
95a77574ae Accept Merge Request #995: (feature/解决工单Rfid相关bug -> develop)
Merge Request: 1、解决 装夹预调工单扫描Rfid码时提示语的制造订单号显示重复了 的缺陷, 添加工单扫描的Rfid不是托盘是其他物料的提示;2、解决刀具管理模块的菜单依赖问题;3、管理员添加货位的操作权限

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/995#mr-995-review-148238
2024-05-09 09:21:45 +08:00
mgw
5c68dd45ee 补充提交代码 2024-05-09 09:21:13 +08:00
mgw
af822c9039 增加邮件发送公用类 2024-05-08 21:49:04 +08:00
yuxianghui
92ea9b2a4f Merge branch 'feature/坯料采购-外协与自加工流程BUG' into feature/解决工单Rfid相关bug 2024-05-08 16:53:00 +08:00
yuxianghui
5eacc01755 1、解决 装夹预调工单扫描Rfid码时提示语的制造订单号显示重复了 的缺陷, 添加工单扫描的Rfid不是托盘是其他物料的提示;2、解决刀具管理模块的菜单依赖问题;3、管理员添加货位的操作权限 2024-05-08 16:50:13 +08:00
杨金灵
72ea4c8a2c Accept Merge Request #994: (feature/修复快速订单没有权限问题 -> develop)
Merge Request: 修复快速订单没有权限问题

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/994?initial=true
2024-05-08 15:08:57 +08:00
jinling.yang
4bea41b8fd 修复快速订单没有权限问题 2024-05-08 15:07:31 +08:00
jinling.yang
f6373366b6 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-05-08 14:29:35 +08:00
jinling.yang
339c6ec2ee Merge branch 'feature/优化模型上色路径' into develop 2024-05-08 14:29:19 +08:00
杨金灵
e7ca8ebd9b Accept Merge Request #993: (feature/优化模型上色路径 -> develop)
Merge Request: 修复快速订单和预调工单

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/993
2024-05-08 14:29:05 +08:00
jinling.yang
d964a9feb1 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化模型上色路径 2024-05-08 11:20:07 +08:00
杨金灵
da139ad30b Accept Merge Request #992: (feature/修复工件配送rfidcode没有值 -> develop)
Merge Request: 修复工件配送rfidcode没有值

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/992?initial=true
2024-05-08 09:33:15 +08:00
jinling.yang
30053c5493 修复工件配送rfidcode没有值 2024-05-08 09:27:24 +08:00
jinling.yang
fda43deeea 1.优化根据同一个产品,生成的制造订单绑定同一个编程单需求 2024-05-07 17:33:23 +08:00
jinling.yang
cb5cfec82a Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-05-07 15:17:10 +08:00
jinling.yang
8b533475b8 Merge branch 'feature/采购去掉审核' into develop 2024-05-07 15:16:57 +08:00
杨金灵
7cbe1cb35d Accept Merge Request #991: (feature/采购去掉审核 -> develop)
Merge Request: 优化销售,采购及工件配送

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/991?initial=true
2024-05-07 15:16:31 +08:00
jinling.yang
b8196cc4a9 1.修复销售岗位创建快速订单没有生成销售订单问题2.工件配送Tree视图默认上产线 2024-05-07 14:44:58 +08:00
jinling.yang
ed41667477 1.采购去掉审核2.装夹预调工单验证优化 2024-05-06 16:29:54 +08:00
jinling.yang
ca3cdd9132 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-05-06 14:17:16 +08:00
杨金灵
5551cc51e2 Accept Merge Request #990: (feature/修复工件配送 -> develop)
Merge Request: 优化最新AGV及新增中控日志接口调用

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/990
2024-05-06 11:51:54 +08:00
jinling.yang
178edd645e Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-05-06 11:49:11 +08:00
jinling.yang
848fe9f2f0 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复工件配送 2024-05-06 11:48:53 +08:00
jinling.yang
2cd666c4ae 优化agv及新增中控日志调用 2024-05-06 11:48:34 +08:00
mgw
9d157d6083 处理工单可能为记录集的问题 2024-05-06 11:29:17 +08:00
禹翔辉
ab73deeeaa Accept Merge Request #989: (feature/添加人工编程标签 -> develop)
Merge Request: 产品添加人工编程的筛选项;制造订单from视图添加人工编程字段;

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/989?initial=true
2024-04-30 17:19:10 +08:00
yuxianghui
68c4c18642 Merge branch 'feature/拆解单优化' into feature/添加人工编程标签 2024-04-30 17:11:56 +08:00
yuxianghui
402a4e1740 1、产品添加人工编程的筛选项;制造订单from视图添加人工编程字段; 2024-04-30 17:09:46 +08:00
jinling.yang
68d8c36755 优化工件配送 2024-04-30 17:05:09 +08:00
jinling.yang
b45ffcc0d2 1.优化工件配送向导2.增加rfid码字段 2024-04-29 17:34:00 +08:00
马广威
58e1754ae2 Accept Merge Request #988: (feature/拆解单优化 -> develop)
Merge Request: 解决  工具装夹岗在工件装夹单详情扫描rfid码报错  bug

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/988#mr-988-review-146501
2024-04-29 17:28:20 +08:00
yuxianghui
a1f0a580a6 解决 工具装夹岗在工件装夹单详情扫描rfid码报错 bug 2024-04-29 17:25:29 +08:00
jinling.yang
952c24eb26 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-04-29 16:42:37 +08:00
禹翔辉
fbfd932561 Accept Merge Request #987: (feature/拆解单优化 -> develop)
Merge Request: 解决  采购入库到具体库位的数量显示不对 问题

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/987
2024-04-29 16:04:38 +08:00
yuxianghui
cc590134f5 1 2024-04-29 16:00:27 +08:00
yuxianghui
338d620d5b 解决 采购入库到具体库位的数量显示不对 问题 2024-04-29 15:53:40 +08:00
jinling.yang
58344b09d2 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复工件配送
# Conflicts:
#	sf_manufacturing/models/mrp_workorder.py
2024-04-29 15:33:41 +08:00
jinling.yang
3d76d5f0b9 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-04-29 15:32:04 +08:00
jinling.yang
b1d42b9421 优化工件配送和空料架 2024-04-29 15:31:46 +08:00
禹翔辉
cec066c082 Accept Merge Request #986: (feature/拆解单优化 -> develop)
Merge Request: 拆解单优化

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/986?initial=true
2024-04-29 14:24:06 +08:00
yuxianghui
239be9f4ea Merge branch 'feature/功能刀具组装添加校验' into feature/拆解单优化 2024-04-29 14:20:26 +08:00
yuxianghui
537e890926 1、优化功能刀具拆解后,不同情况下生成的刀具物料的位移记录;添加拆解成功后拆解成功的刀具日志;添加当拆解原因是【更换为其他刀具】时,目标货位必填;2、货位看板添加按产品搜索功能 2024-04-29 14:19:22 +08:00
马广威
9e10382dd7 Accept Merge Request #985: (feature/制造代码优化 -> develop)
Merge Request: 恢复工单按钮展示及实际开始时间

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/985
2024-04-29 12:20:11 +08:00
mgw
3a22c817df 修复工单实际开始时间 2024-04-29 12:15:54 +08:00
mgw
782e266988 恢复工单按钮展示 2024-04-29 11:36:29 +08:00
禹翔辉
f3f138e93c Accept Merge Request #984: (feature/功能刀具组装添加校验 -> develop)
Merge Request: 1、刀具物料刀柄、夹具物料托盘搜索模型的序列号对象字段的list列表添加Rfid字段;2、制造单搜索看板添加记数功能;3、刀具组装岗添加货位的读写权限;4、功能刀具组装单弹窗添加手动输入五种物料的货位编码时,对该货位进行多项校验;

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/984?initial=true
2024-04-29 10:39:15 +08:00
yuxianghui
8c78a24f7e Merge branch 'feature/接口优化' into feature/功能刀具组装添加校验 2024-04-29 10:36:35 +08:00
jinling.yang
45220d75af 新增运送空料架 2024-04-28 17:34:41 +08:00
yuxianghui
9d9b454ba5 1、刀具物料刀柄、夹具物料托盘搜索模型的序列号对象字段的list列表添加Rfid字段;2、制造单搜索看板添加记数功能;3、刀具组装岗添加货位的读写权限;4、功能刀具组装单弹窗添加手动输入五种物料的货位编码时,对该货位进行多项校验; 2024-04-28 17:20:11 +08:00
jinling.yang
bc2c0f7fb0 修复站点状态未变,及页面筛选框优化 2024-04-28 15:17:41 +08:00
jinling.yang
809f5a196e Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-04-28 14:57:28 +08:00
jinling.yang
281b041a31 Merge branch 'feature/修复工件配送时间' into develop 2024-04-28 11:45:17 +08:00
杨金灵
1fa45a36f1 Accept Merge Request #983: (feature/修复工件配送时间 -> develop)
Merge Request: 优化agv需求

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/983?initial=true
2024-04-28 11:45:00 +08:00
jinling.yang
24722f474c 修复配送时agv站点验证 2024-04-28 11:43:11 +08:00
jinling.yang
5eb946d936 优化agv需求 2024-04-28 11:34:17 +08:00
jinling.yang
b7f7f0cdff Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复工件配送时间 2024-04-26 18:04:49 +08:00
jinling.yang
42178e3e1e 上下产线接口新增IsComplete判断 2024-04-26 18:04:30 +08:00
马广威
2ebd543d39 Accept Merge Request #982: (feature/制造代码优化 -> develop)
Merge Request: 增加日志打印

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/982?initial=true
2024-04-26 15:55:44 +08:00
mgw
f452f0018f Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化 2024-04-26 15:54:20 +08:00
mgw
cd3feb787f 增加日志打印 2024-04-26 15:53:26 +08:00
杨金灵
d0e7dbefc9 Accept Merge Request #981: (feature/修复工件配送时间 -> develop)
Merge Request: 修复工件配送时间

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/981?initial=true
2024-04-26 15:36:30 +08:00
jinling.yang
8f9781dd13 修复工件配送时间 2024-04-26 14:44:26 +08:00
杨金灵
50aae8a1e8 Accept Merge Request #980: (feature/优化工件配送 -> develop)
Merge Request: 优化工件配送

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/980?initial=true
2024-04-26 14:00:35 +08:00
jinling.yang
41e551fe48 优化工件配送 2024-04-26 13:57:47 +08:00
jinling.yang
1293c327c6 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-04-26 10:01:03 +08:00
jinling.yang
74deef3d41 Merge branch 'feature/优化agv及工件配送' into develop 2024-04-26 10:00:47 +08:00
杨金灵
466dfa4889 Accept Merge Request #979: (feature/优化agv及工件配送 -> develop)
Merge Request: 优化agv及工件配送

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/979?initial=true
2024-04-26 10:00:30 +08:00
jinling.yang
66dcc2f982 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化agv及工件配送 2024-04-26 09:57:21 +08:00
jinling.yang
9362a78f2a Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-04-26 09:56:59 +08:00
jinling.yang
9eb891dd0b 优化agv及工件配送 2024-04-26 09:56:42 +08:00
禹翔辉
84b82cac1d Accept Merge Request #978: (feature/接口优化 -> develop)
Merge Request: 1、优化机床刀位接口,数据写入到机床的刀位的方法

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/978
2024-04-25 17:17:58 +08:00
yuxianghui
761efbceaa Merge branch 'feature/中控接口注释及工厂数据处理' into feature/接口优化 2024-04-25 17:16:11 +08:00
yuxianghui
4bcd6b9944 1、优化机床刀位接口,数据写入到机床的刀位的方法;2、制造-刀具管理菜单下的机床换刀申请菜单隐藏,功能菜单改为作业单;3、刀柄和托盘采购入库时,对录入的Rfid做唯一性校验; 2024-04-25 17:14:30 +08:00
jinling.yang
da22015d35 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-04-25 15:46:32 +08:00
jinling.yang
eb2b37eb06 Merge branch 'feature/优化工件配送' into develop 2024-04-25 15:46:18 +08:00
杨金灵
cd6a4b0a38 Accept Merge Request #977: (feature/优化工件配送 -> develop)
Merge Request: 优化工件配送

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/977
2024-04-25 15:45:22 +08:00
jinling.yang
8bbb18b6f4 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化工件配送 2024-04-25 15:43:30 +08:00
jinling.yang
11864feaa4 优化工件配送 2024-04-25 15:43:02 +08:00
禹翔辉
735f602f2d Accept Merge Request #976: (feature/中控接口注释及工厂数据处理 -> develop)
Merge Request: 中控接口优化及工厂数据处理

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/976
2024-04-25 14:14:12 +08:00
yuxianghui
53ed0d76a6 Merge branch 'feature/中控对接接口优化' into feature/中控接口注释及工厂数据处理
# Conflicts:
#	sf_manufacturing/views/mrp_production_addional_change.xml
2024-04-25 14:10:22 +08:00
yuxianghui
9d96e0681c 1、注释MES装刀指令接口,删除所以该接口的调用;注释质量检测失败时对零件特采接口的调用;2、序列号模型from界面临时添加按钮,解决工厂录入的有些刀柄序列号存在位数少于10的问题(通过SQL在左侧补零)(已隐藏); 2024-04-25 14:02:51 +08:00
马广威
961f7bfdc5 Accept Merge Request #975: (feature/制造代码优化 -> develop)
Merge Request: 中控接口恢复权限认证

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/975?initial=true
2024-04-25 12:27:45 +08:00
mgw
9374bab0ce Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化 2024-04-25 12:26:52 +08:00
mgw
780944047f 中控接口增加权限认证 2024-04-25 12:26:31 +08:00
马广威
edd1f9a1ee Accept Merge Request #974: (feature/制造代码优化 -> develop)
Merge Request: 优化制造订单号界面展示效果

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/974?initial=true
2024-04-25 09:36:40 +08:00
mgw
be18124186 优化制造订单号界面展示效果 2024-04-25 09:36:05 +08:00
马广威
a400beb0a4 Accept Merge Request #973: (feature/制造代码优化 -> develop)
Merge Request: 增加工单处的尺寸赋值

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/973?initial=true
2024-04-25 09:03:56 +08:00
mgw
f4433ac3cc 增加工单处的尺寸赋值 2024-04-25 09:03:17 +08:00
马广威
b237e353a9 Accept Merge Request #972: (feature/制造代码优化 -> develop)
Merge Request: 优化制造订单状态问题

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/972?initial=true
2024-04-24 22:55:52 +08:00
mgw
0bcd077914 优化制造订单状态问题 2024-04-24 22:53:48 +08:00
mgw
212f2df830 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化 2024-04-24 22:53:11 +08:00
马广威
192aecb17d Accept Merge Request #971: (feature/制造代码优化 -> develop)
Merge Request: 优化获取线边刀架、料架信息接口

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/971?initial=true
2024-04-24 22:14:59 +08:00
yuxianghui
6f2043e7e7 1、工单tree视图、from视图添加人工编程字段,及人工编程筛选项;2、序列号模型添加根据Rfid搜索的选项;3、修改零件特采接口,优化MES装刀申请接口、优化机床刀库接口; 2024-04-24 18:33:15 +08:00
mgw
0473e79fcf 优化获取线边刀架、料架信息接口 2024-04-24 17:27:39 +08:00
马广威
6ecc69590b Accept Merge Request #970: (feature/制造代码优化 -> develop)
Merge Request: 装夹预调工单,要带图纸和模型文件及坯料长宽高参数的优化需求

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/970
2024-04-24 14:35:01 +08:00
mgw
f570eb9b50 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化 2024-04-24 14:24:59 +08:00
马广威
d4aa71975e Accept Merge Request #969: (feature/优化工件配送 -> develop)
Merge Request: 优化工作配送

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/969#mr-969-review-144848
2024-04-24 14:24:36 +08:00
mgw
3e7bef095c 整理代码 2024-04-24 14:23:37 +08:00
jinling.yang
673a1c6448 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化工件配送 2024-04-24 14:20:42 +08:00
jinling.yang
231536089d 工件装夹岗扫描托盘RFID,识别校验并带出【同运工件】名称,并自动校验【目的生产线】一致
【同运工件】校验目的生产线不一致,则弹窗提示:工件生产线不一致,请重新确认;
2024-04-24 14:20:26 +08:00
mgw
347e7f3efe 增加自动备份模块 2024-04-24 13:58:24 +08:00
mgw
31e3f53873 制造订单状态优化 2024-04-24 13:48:56 +08:00
mgw
b6334caf97 优化同步库区功能(线边刀、线边料) 2024-04-24 11:26:52 +08:00
mgw
a83b8bcd14 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化 2024-04-24 08:58:54 +08:00
mgw
59c8631c15 库位变更接口优化 2024-04-24 08:58:15 +08:00
禹翔辉
24d8c2426c Accept Merge Request #968: (feature/中控对接接口优化 -> develop)
Merge Request: 1、俩个刀具组接口加上token验证;2、新增功能刀具组装完成时,如果单据来源于CAM用刀,则调用MES装刀指令接口;

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/968
2024-04-23 19:56:58 +08:00
yuxianghui
9778245ee7 1 2024-04-23 19:56:10 +08:00
yuxianghui
228770cb76 Merge branch 'feature/新增功能刀具拆解单模型' into feature/中控对接接口优化 2024-04-23 19:52:20 +08:00
yuxianghui
b80ba02c8f 1、俩个刀具组接口加上token验证;2、新增功能刀具组装完成时,如果单据来源于CAM用刀,则调用MES装刀指令接口; 2024-04-23 19:50:33 +08:00
杨金灵
1344bd7219 Accept Merge Request #967: (feature/优化工件配送添加编码字段 -> develop)
Merge Request: 优化工件配送添加编码字段

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/967
2024-04-23 19:21:38 +08:00
jinling.yang
90d1f96857 优化工件配送添加编码字段 2024-04-23 17:20:32 +08:00
mgw
ca01b055b8 修复:计划排程时计划开始时间选择明天-执行排程后时间变成今天了 问题 2024-04-23 16:03:03 +08:00
黄焱
1d54066664 Accept Merge Request #966: (feature/前端样式修改 -> develop)
Merge Request: 设置水印

Created By: @黄焱
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @黄焱
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/966?initial=true
2024-04-23 15:42:49 +08:00
黄焱
5488846c85 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/前端样式修改 2024-04-23 15:39:15 +08:00
黄焱
d2f59f6c6a 设置【已完成】【报废】等状态的水印 2024-04-23 15:38:32 +08:00
禹翔辉
c1addd823e Accept Merge Request #965: (feature/新增功能刀具拆解单模型 -> develop)
Merge Request: 1、接口优化

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/965
2024-04-23 15:37:07 +08:00
yuxianghui
c56886aebe 1、接口优化 2024-04-23 15:33:59 +08:00
禹翔辉
1979b33c32 Accept Merge Request #964: (feature/新增功能刀具拆解单模型 -> develop)
Merge Request: 新增功能刀具拆解单模型,其他优化

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/964?initial=true
2024-04-23 14:21:50 +08:00
yuxianghui
1fa5ebd80a 1 2024-04-23 14:19:55 +08:00
yuxianghui
f1dad7701f Merge branch 'feature/库存模块优化' into feature/新增功能刀具拆解单模型 2024-04-23 14:18:34 +08:00
yuxianghui
8bc23f5136 1、优化功能刀具拆解单拆解原因为更换其他刀具时的扫码录入刀具物料货位信息功能;2、优化功能刀具拆解单确认拆解后的刀具物料拆解流程,及其刀具物料功能刀具的数量统计等;3、功能刀具拆解、功能刀具模块添加动作过滤已拆解状态的记录,并添加筛选方法;4、功能刀具组装流程添加刀具物料货位数量校验; 2024-04-23 14:15:45 +08:00
杨金灵
bcff104013 Accept Merge Request #963: (feature/优化agv -> develop)
Merge Request: 优化agv及站点位置和对应接口

Created By: @杨金灵
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @杨金灵
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/963?initial=true
2024-04-23 14:09:10 +08:00
jinling.yang
307e052740 优化agv及站点位置和对应接口 2024-04-23 14:05:10 +08:00
mgw
f236b149d8 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化
# Conflicts:
#	sf_manufacturing/models/mrp_production.py
#	sf_manufacturing/views/mrp_workorder_view.xml
2024-04-23 10:56:57 +08:00
mgw
9cfc084c5c 装夹预调工单,要带图纸和模型文件及坯料长宽高参数的优化需求2:状态变化逻辑 2024-04-23 10:54:04 +08:00
mgw
49e4f92a91 装夹预调工单,要带图纸和模型文件及坯料长宽高参数的优化需求 2024-04-22 20:03:16 +08:00
yuxianghui
080a3d7175 1、优化扫码的托盘已绑定工单的提示信息;2、优化采购订单未审核时,金额数据不能改变的bug;3、功能刀具拆解单新增根据不同情况扫库位码录入五种物料的目的库位的信息;4、功能刀具拆解单新增拆解后的Rfid字段,新增拆解单状态字段,新增刀具物料库位信息搜索过滤;5、功能刀具拆解单新增确认拆解按钮,完成点击确认拆解后的刀具物料是否报废、磨削或者更换的不同条件进行拆解后物料的不同去向的功能及生成移动历史,解除功能刀具Rfid的绑定并更改状态等。6、优化功能刀具管理下的菜单目录布局;7、 2024-04-22 17:59:48 +08:00
yuxianghui
857d5d8916 1、新增功能刀具拆解模型及其前端的tree、form视图,新增扫码录入需要拆解的功能刀具功能; 2024-04-19 20:12:32 +08:00
qihao.gong@jikimo.com
0077d97cfa master-sf1.0 2023-05-06 16:03:00 +08:00
469 changed files with 39966 additions and 80434 deletions

View File

@@ -0,0 +1 @@
from . import models

View File

@@ -0,0 +1,36 @@
# -*- coding: utf-8 -*-
{
'name': "Database auto-backup",
'summary': 'Automated backups',
'description': """
The Database Auto-Backup module enables the user to make configurations for the automatic backup of the database.
Backups can be taken on the local system or on a remote server, through SFTP.
You only have to specify the hostname, port, backup location and databasename (all will be pre-filled by default with correct data.
If you want to write to an external server with SFTP you will need to provide the IP, username and password for the remote backups.
The base of this module is taken from Odoo SA V6.1 (https://www.odoo.com/apps/modules/6.0/auto_backup/) and then upgraded and heavily expanded.
This module is made and provided by Yenthe Van Ginneken (Oocademy).
Automatic backup for all such configured databases can then be scheduled as follows:
1) Go to Settings / Technical / Automation / Scheduled actions.
2) Search the action 'Backup scheduler'.
3) Set it active and choose how often you wish to take backups.
4) If you want to write backups to a remote location you should fill in the SFTP details.
""",
'author': "Yenthe Van Ginneken",
'website': "http://www.odoo.yenthevg.com",
'category': 'Administration',
'version': '16.0.0.1',
'installable': True,
'license': 'LGPL-3',
# any module necessary for this one to work correctly
'depends': ['base'],
# always loaded
'data': [
'security/user_groups.xml',
'security/ir.model.access.csv',
'views/backup_view.xml',
'data/backup_data.xml',
],
}

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" ?>
<odoo>
<data noupdate="1">
<record id="backup_scheduler" model="ir.cron">
<field name="interval_type">days</field>
<field name="name">Backup scheduler</field>
<field name="numbercall">-1</field>
<field name="priority">5</field>
<field name="doall">False</field>
<field name="active">False</field>
<field name="interval_number">1</field>
<field name="model_id" ref="model_db_backup"/>
<field name="state">code</field>
<field name="code">model.schedule_backup()</field>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,314 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * auto_backup
#
# SaFi J. <info@daleeltech.com>, 2015.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-03-26 14:17+0000\n"
"PO-Revision-Date: 2015-12-13 10:46+0300\n"
"Last-Translator: SaFi J. <info@daleeltech.com>\n"
"Language-Team: team@daleeltech.com\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
#. module: auto_backup
#: code:addons/auto_backup/backup_scheduler.py:137
#, python-format
msgid "%s"
msgstr "%s"
#. module: auto_backup
#: help:db.backup,bkp_dir:0
msgid "Absolute path for storing the backups"
msgstr "المسار الكامل لحفظ النسخ الاحتياطي"
#. module: auto_backup
#: field:db.backup,sendmailsftpfail:0
msgid "Auto. E-mail on backup fail"
msgstr "إرسال بريد إلكتروني تلقائياً في حالة فشل النسخ الاحتياطي"
#. module: auto_backup
#: field:db.backup,autoremove:0
msgid "Auto. Remove Backups"
msgstr "إزالة النسخ الاحتياطية تلقائياً"
#. module: auto_backup
#: view:db.backup:auto_backup.view_backup_conf_form
msgid "Automatic backups of the database can be scheduled as follows:"
msgstr "النسخ الاحتياطي التلقائي لقاعدة البيانات يمكن جدولته كالتالي"
#. module: auto_backup
#: field:db.backup,bkp_dir:0
msgid "Backup Directory"
msgstr "دليل النسخ الاحتياطي"
#. module: auto_backup
#: view:db.backup:auto_backup.view_backup_conf_tree
msgid "Backups"
msgstr "النسخ الاحتياطية"
#. module: auto_backup
#: help:db.backup,daystokeepsftp:0
msgid "Choose after how many days the backup should be deleted from the FTP server. For example:\n"
"If you fill in 5 the backups will be removed after 5 days from the FTP server."
msgstr ""
"اختر بعد كم من الأيام سيتم حذف النسخ الاحتياطي من خادم FTP مثلاً :\n إذا أدخلت "
"5 فإن النسخ الاحتياطية سيتم إزالتها من خادم FTP بعد 5 أيام."
#. module: auto_backup
#: help:db.backup,daystokeep:0
msgid "Choose after how many days the backup should be deleted. For example:\n"
"If you fill in 5 the backups will be removed after 5 days."
msgstr ""
"اختر بعد كم من الأيام سيتم حذف النسخ الاحتياطي مثلاً :\n إذا أدخلت 5 فإن النسخ "
"الاحتياطية سيتم إزالتها بعد 5 أيام."
#. module: auto_backup
#: model:ir.actions.act_window,name:auto_backup.action_backup_conf_form
#: model:ir.ui.menu,name:auto_backup.backup_conf_menu
msgid "Configure Backup"
msgstr "إعدادات النسخ الإحتياطي"
#. module: auto_backup
#: view:db.backup:auto_backup.view_backup_conf_form
msgid "Contact us!"
msgstr "اتصل بنا!"
#. module: auto_backup
#: field:db.backup,create_uid:0
msgid "Created by"
msgstr "تم ألإنشاء بواسطة"
#. module: auto_backup
#: field:db.backup,create_date:0
msgid "Created on"
msgstr "تم ألإنشاء في"
#. module: auto_backup
#: field:db.backup,name:0
msgid "Database"
msgstr "قاعدة البيانات"
#. module: auto_backup
#: help:db.backup,name:0
msgid "Database you want to schedule backups for"
msgstr "قاعدة البيانات التي تريد جدولة النسخ الاحتياطي لها"
#. module: auto_backup
#: field:db.backup,emailtonotify:0
msgid "E-mail to notify"
msgstr "تنبيه البريد الإلكتروني"
#. module: auto_backup
#: code:addons/auto_backup/backup_scheduler.py:106
#: constraint:db.backup:0
#, python-format
msgid "Error ! No such database exists!"
msgstr "خطأ ! لا وجود لقاعدة البيانات هذه !"
#. module: auto_backup
#: help:db.backup,emailtonotify:0
msgid "Fill in the e-mail where you want to be notified that the backup failed on the FTP."
msgstr ""
"ادخل عنوان البريد الإلكتروني الذي تريد تنبيهك من خلاله عند فشل النسخ "
"الاحتياطي على FTP."
#. module: auto_backup
#: view:db.backup:auto_backup.view_backup_conf_form
msgid "For example: /odoo/backups/"
msgstr "مثلاً : /odoo/backups/"
#. module: auto_backup
#: view:db.backup:auto_backup.view_backup_conf_form
msgid "Go to Settings / Technical / Automation / Scheduled Actions."
msgstr "اذهب إلى الإعدادات / التقني / ألأتمته / جدولة الإخزاءات."
#. module: auto_backup
#: view:db.backup:auto_backup.view_backup_conf_form
msgid "Help"
msgstr "المساعدة"
#. module: auto_backup
#: field:db.backup,host:0
msgid "Host"
msgstr "المضيف"
#. module: auto_backup
#: field:db.backup,id:0
msgid "ID"
msgstr "المعرف"
#. module: auto_backup
#: field:db.backup,sftpip:0
msgid "IP Address SFTP Server"
msgstr "عنوان بروتوكول الأنترنت لخادم SFTP"
#. module: auto_backup
#: help:db.backup,sendmailsftpfail:0
msgid "If you check this option you can choose to automaticly get e-mailed when the backup to the external server failed."
msgstr ""
"إذا قمت بتأشير هذا الخيار ستستطيع اختيار استلام البريد الإلكتروني تلقائياً "
"عند فشل النسخ الاحتياطي للخادوم الخارجي."
#. module: auto_backup
#: help:db.backup,autoremove:0
msgid "If you check this option you can choose to automaticly remove the backup after xx days"
msgstr ""
"إذا قمت بتأشير هذا الخيار ستستطيع اختيار الإزالة التلقائية للنسخ الاحتياطي "
"بعد س من الأيام"
#. module: auto_backup
#: help:db.backup,sftpwrite:0
msgid "If you check this option you can specify the details needed to write to a remote server with SFTP."
msgstr ""
"إذا قمت بتأشير هذا الخيار ستستطيع تحديد التفاصيل المطلوبة للكتابة على الخادم "
"البعيد من خلال SFTP."
#. module: auto_backup
#: field:db.backup,write_uid:0
msgid "Last Updated by"
msgstr "آخر تحديث بواسطة"
#. module: auto_backup
#: field:db.backup,write_date:0
msgid "Last Updated on"
msgstr "آخر تحديث في"
#. module: auto_backup
#: view:db.backup:auto_backup.view_backup_conf_form
msgid "Local backup configuration"
msgstr "إعدادات النسخ الاحتياطي المحلي"
#. module: auto_backup
#: view:db.backup:auto_backup.view_backup_conf_form
msgid "Need more help?"
msgstr "هل تحتاج لمزيد من المساعدة ؟"
#. module: auto_backup
#: field:db.backup,sftppassword:0
msgid "Password User SFTP Server"
msgstr "كلمة المرور لمستخدم خادم SFTP"
#. module: auto_backup
#: field:db.backup,sftppath:0
msgid "Path external server"
msgstr "المسار الخارجي للخادم"
#. module: auto_backup
#: field:db.backup,port:0
msgid "Port"
msgstr "المنفذ"
#. module: auto_backup
#: field:db.backup,daystokeepsftp:0
msgid "Remove SFTP after x days"
msgstr "الإزالة من خادم SFTP بعد س من الأيام"
#. module: auto_backup
#: field:db.backup,daystokeep:0
msgid "Remove after x days"
msgstr "الإزالة بعد س من الأيام"
#. module: auto_backup
#: view:db.backup:auto_backup.view_backup_conf_form
msgid "SFTP"
msgstr "SFTP"
#. module: auto_backup
#: field:db.backup,sftpport:0
msgid "SFTP Port"
msgstr "منفذ SFTP"
#. module: auto_backup
#: view:db.backup:auto_backup.view_backup_conf_search
msgid "Search options"
msgstr "خيارات البحث"
#. module: auto_backup
#: view:db.backup:auto_backup.view_backup_conf_form
msgid "Search the action named 'Backup scheduler'."
msgstr "ابحث عن الأجزاء المسمى 'Backup scheduler'."
#. module: auto_backup
#: view:db.backup:auto_backup.view_backup_conf_form
msgid "Set the scheduler to active and fill in how often you want backups generated."
msgstr "قم بتفعيل الجدولة واملأ كم تربد عادة توليد النسخ الاحتياطي."
#. module: auto_backup
#: view:db.backup:auto_backup.view_backup_conf_form
msgid "Test"
msgstr "اختبار"
#. module: auto_backup
#: view:db.backup:auto_backup.view_backup_conf_form
msgid "Test SFTP Connection"
msgstr "اختبار توصيل SFTP"
#. module: auto_backup
#: help:db.backup,sftpip:0
msgid "The IP address from your remote server. For example 192.168.0.1"
msgstr "عنوان بروتوكول الإنترنت من خادومك البعيد. مثلاً 192.168.0.1"
#. module: auto_backup
#: help:db.backup,sftppath:0
msgid "The location to the folder where the dumps should be written to. For example /odoo/backups/.\n"
"Files will then be written to /odoo/backups/ on your remote server."
msgstr ""
"موقع المجلد التي يجب كتابة ملفات النسخ عليه. مثلاً /odoo/backups/.\n"
"وحينها سيتم كتابة الملفات إلى /odoo/backups/ على خادومك البعيد."
#. module: auto_backup
#: help:db.backup,sftppassword:0
msgid "The password from the user where the SFTP connection should be made with. This is the password from the user on the external server."
msgstr ""
"كلمة المرور الذي من المفترض عمل اتصال SFTP من بها. هذا هي كلمة المرور على "
"الخادم الخارجي."
#. module: auto_backup
#: help:db.backup,sftpport:0
msgid "The port on the FTP server that accepts SSH/SFTP calls."
msgstr "المنفذ على خادم FTP الذي يقبل طلبات SSH/SFTP."
#. module: auto_backup
#: help:db.backup,sftpusername:0
msgid "The username where the SFTP connection should be made with. This is the user on the external server."
msgstr ""
"اسم المستخدم الذي من المفترض عمل اتصال SFTP من به. هذا هو المستخدم على "
"الخادم الخارجي."
#. module: auto_backup
#: view:db.backup:auto_backup.view_backup_conf_form
msgid "This configures the scheduler for automatic backup of the given database running on given host at given port on regular intervals."
msgstr ""
"هذا الإعداد سيجدول النسخ الاحتياطي التلقائي لقاعدة بيانات معينة وسينفذ على "
"مضيف معين بمنفذ معين خلال فترات متتابعة. "
#. module: auto_backup
#: view:db.backup:auto_backup.view_backup_conf_form
msgid "Use SFTP with caution! This writes files to external servers under the path you specify."
msgstr ""
"استخدم SFTP بحذر ! لأن هذا يؤدي لكتابة ملفات لخوادم خارجية على المسار الذي "
"حددته."
#. module: auto_backup
#: field:db.backup,sftpusername:0
msgid "Username SFTP Server"
msgstr "أسم المستخدم لخادم SFTP"
#. module: auto_backup
#: view:db.backup:auto_backup.view_backup_conf_form
msgid "Warning:"
msgstr "تحذير :"
#. module: auto_backup
#: field:db.backup,sftpwrite:0
msgid "Write to external server with sftp"
msgstr "الكتابة على خادم خارجي من خلال sftp"

View File

@@ -0,0 +1,158 @@
# Bulgarian translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-11-24 13:49+0000\n"
"PO-Revision-Date: 2011-03-30 07:20+0000\n"
"Last-Translator: Dimitar Markov <dimitar.markov@gmail.com>\n"
"Language-Team: Bulgarian <bg@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-04-20 05:35+0000\n"
"X-Generator: Launchpad (build 16567)\n"
#. module: auto_backup
#: help:db.backup,name:0
msgid "Database you want to schedule backups for"
msgstr ""
#. module: auto_backup
#: constraint:ir.model:0
msgid ""
"The Object name must start with x_ and not contain any special character !"
msgstr ""
"Името на обекта трябва да започва с x_ и не може да никакви специални знаци !"
#. module: auto_backup
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr "Невалидно име на модел при задаване на действие"
#. module: auto_backup
#: model:ir.model,name:auto_backup.model_db_backup
msgid "db.backup"
msgstr ""
#. module: auto_backup
#: view:db.backup:0
msgid ""
"1) Go to Administration / Configuration / Scheduler / Scheduled Actions"
msgstr ""
#. module: auto_backup
#: model:ir.actions.act_window,name:auto_backup.action_backup_conf_form
#: model:ir.ui.menu,name:auto_backup.backup_conf_menu
msgid "Configure Backup"
msgstr ""
#. module: auto_backup
#: view:db.backup:0
msgid "Test"
msgstr "Тестване"
#. module: auto_backup
#: view:db.backup:0
msgid "IP Configuration"
msgstr ""
#. module: auto_backup
#: help:db.backup,bkp_dir:0
msgid "Absolute path for storing the backups"
msgstr ""
#. module: auto_backup
#: model:ir.module.module,shortdesc:auto_backup.module_meta_information
msgid "Database Auto-Backup"
msgstr ""
#. module: auto_backup
#: view:db.backup:0
msgid "Database Configuration"
msgstr ""
#. module: auto_backup
#: view:db.backup:0
msgid "4) Set other values as per your preference"
msgstr ""
#. module: auto_backup
#: field:db.backup,host:0
msgid "Host"
msgstr "Хост"
#. module: auto_backup
#: view:db.backup:0
msgid ""
"Automatic backup of all the databases under this can be scheduled as "
"follows: "
msgstr ""
#. module: auto_backup
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
#. module: auto_backup
#: field:db.backup,bkp_dir:0
msgid "Backup Directory"
msgstr ""
#. module: auto_backup
#: field:db.backup,name:0
msgid "Database"
msgstr "База данни"
#. module: auto_backup
#: view:db.backup:0
msgid "2) Schedule new action(create a new record)"
msgstr ""
#. module: auto_backup
#: model:ir.module.module,description:auto_backup.module_meta_information
msgid ""
"The generic Open ERP Database Auto-Backup system enables the user to make "
"configurations for the automatic backup of the database.\n"
"User simply requires to specify host & port under IP Configuration & "
"database(on specified host running at specified port) and backup "
"directory(in which all the backups of the specified database will be stored) "
"under Database Configuration.\n"
"\n"
"Automatic backup for all such configured databases under this can then be "
"scheduled as follows: \n"
" \n"
"1) Go to Administration / Configuration / Scheduler / Scheduled Actions\n"
"2) Schedule new action(create a new record)\n"
"3) Set 'Object' to 'db.backup' and 'Function' to 'schedule_backup' under "
"page 'Technical Data'\n"
"4) Set other values as per your preference"
msgstr ""
#. module: auto_backup
#: view:db.backup:0
msgid ""
"3) Set 'Object' to 'db.backup' and 'Function' to 'schedule_backup' under "
"page 'Technical Data'"
msgstr ""
#. module: auto_backup
#: view:db.backup:0
msgid "Help"
msgstr "Помощ"
#. module: auto_backup
#: view:db.backup:0
msgid ""
"This configures the scheduler for automatic backup of the given database "
"running on given host at given port on regular intervals."
msgstr ""
#. module: auto_backup
#: field:db.backup,port:0
msgid "Port"
msgstr "Порт"

View File

@@ -0,0 +1,157 @@
# Catalan translation for openobject-addons
# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-11-24 13:49+0000\n"
"PO-Revision-Date: 2014-10-20 06:41+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Catalan <ca@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2014-10-21 06:30+0000\n"
"X-Generator: Launchpad (build 17203)\n"
#. module: auto_backup
#: help:db.backup,name:0
msgid "Database you want to schedule backups for"
msgstr ""
#. module: auto_backup
#: constraint:ir.model:0
msgid ""
"The Object name must start with x_ and not contain any special character !"
msgstr ""
#. module: auto_backup
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr ""
#. module: auto_backup
#: model:ir.model,name:auto_backup.model_db_backup
msgid "db.backup"
msgstr ""
#. module: auto_backup
#: view:db.backup:0
msgid ""
"1) Go to Administration / Configuration / Scheduler / Scheduled Actions"
msgstr ""
#. module: auto_backup
#: model:ir.actions.act_window,name:auto_backup.action_backup_conf_form
#: model:ir.ui.menu,name:auto_backup.backup_conf_menu
msgid "Configure Backup"
msgstr ""
#. module: auto_backup
#: view:db.backup:0
msgid "Test"
msgstr ""
#. module: auto_backup
#: view:db.backup:0
msgid "IP Configuration"
msgstr ""
#. module: auto_backup
#: help:db.backup,bkp_dir:0
msgid "Absolute path for storing the backups"
msgstr ""
#. module: auto_backup
#: model:ir.module.module,shortdesc:auto_backup.module_meta_information
msgid "Database Auto-Backup"
msgstr ""
#. module: auto_backup
#: view:db.backup:0
msgid "Database Configuration"
msgstr ""
#. module: auto_backup
#: view:db.backup:0
msgid "4) Set other values as per your preference"
msgstr ""
#. module: auto_backup
#: field:db.backup,host:0
msgid "Host"
msgstr ""
#. module: auto_backup
#: view:db.backup:0
msgid ""
"Automatic backup of all the databases under this can be scheduled as "
"follows: "
msgstr ""
#. module: auto_backup
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
#. module: auto_backup
#: field:db.backup,bkp_dir:0
msgid "Backup Directory"
msgstr ""
#. module: auto_backup
#: field:db.backup,name:0
msgid "Database"
msgstr ""
#. module: auto_backup
#: view:db.backup:0
msgid "2) Schedule new action(create a new record)"
msgstr ""
#. module: auto_backup
#: model:ir.module.module,description:auto_backup.module_meta_information
msgid ""
"The generic Open ERP Database Auto-Backup system enables the user to make "
"configurations for the automatic backup of the database.\n"
"User simply requires to specify host & port under IP Configuration & "
"database(on specified host running at specified port) and backup "
"directory(in which all the backups of the specified database will be stored) "
"under Database Configuration.\n"
"\n"
"Automatic backup for all such configured databases under this can then be "
"scheduled as follows: \n"
" \n"
"1) Go to Administration / Configuration / Scheduler / Scheduled Actions\n"
"2) Schedule new action(create a new record)\n"
"3) Set 'Object' to 'db.backup' and 'Function' to 'schedule_backup' under "
"page 'Technical Data'\n"
"4) Set other values as per your preference"
msgstr ""
#. module: auto_backup
#: view:db.backup:0
msgid ""
"3) Set 'Object' to 'db.backup' and 'Function' to 'schedule_backup' under "
"page 'Technical Data'"
msgstr ""
#. module: auto_backup
#: view:db.backup:0
msgid "Help"
msgstr ""
#. module: auto_backup
#: view:db.backup:0
msgid ""
"This configures the scheduler for automatic backup of the given database "
"running on given host at given port on regular intervals."
msgstr ""
#. module: auto_backup
#: field:db.backup,port:0
msgid "Port"
msgstr ""

View File

@@ -0,0 +1,166 @@
# Spanish translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-11-24 13:49+0000\n"
"PO-Revision-Date: 2011-08-23 19:48+0000\n"
"Last-Translator: mgaja (GrupoIsep.com) <Unknown>\n"
"Language-Team: Spanish <es@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-04-20 05:35+0000\n"
"X-Generator: Launchpad (build 16567)\n"
#. module: auto_backup
#: help:db.backup,name:0
msgid "Database you want to schedule backups for"
msgstr "Base de datos que desea programar copias de seguridad para"
#. module: auto_backup
#: constraint:ir.model:0
msgid ""
"The Object name must start with x_ and not contain any special character !"
msgstr ""
"¡El objeto debe empezar con x_ y no puede contener ningún carácter especial!"
#. module: auto_backup
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr "Nombre del modelo inválido en la definición de acción."
#. module: auto_backup
#: model:ir.model,name:auto_backup.model_db_backup
msgid "db.backup"
msgstr "backup.BBDD"
#. module: auto_backup
#: view:db.backup:0
msgid ""
"1) Go to Administration / Configuration / Scheduler / Scheduled Actions"
msgstr ""
"1) Vaya a Administración / Configuración / Programador / Acciones programadas"
#. module: auto_backup
#: model:ir.actions.act_window,name:auto_backup.action_backup_conf_form
#: model:ir.ui.menu,name:auto_backup.backup_conf_menu
msgid "Configure Backup"
msgstr "Configurar copia de seguridad"
#. module: auto_backup
#: view:db.backup:0
msgid "Test"
msgstr "Prueba"
#. module: auto_backup
#: view:db.backup:0
msgid "IP Configuration"
msgstr "Configuración IP"
#. module: auto_backup
#: help:db.backup,bkp_dir:0
msgid "Absolute path for storing the backups"
msgstr "Ruta absoluta para el almacenamiento de las copias de seguridad"
#. module: auto_backup
#: model:ir.module.module,shortdesc:auto_backup.module_meta_information
msgid "Database Auto-Backup"
msgstr "Copia de seguridad automática de Base de datos"
#. module: auto_backup
#: view:db.backup:0
msgid "Database Configuration"
msgstr "Configuración de Base de Datos"
#. module: auto_backup
#: view:db.backup:0
msgid "4) Set other values as per your preference"
msgstr "4) Establecer los demás valores según su preferencia"
#. module: auto_backup
#: field:db.backup,host:0
msgid "Host"
msgstr "Host"
#. module: auto_backup
#: view:db.backup:0
msgid ""
"Automatic backup of all the databases under this can be scheduled as "
"follows: "
msgstr ""
"Copia de seguridad automática de las bases de datos en virtud de este puede "
"ser programado de la siguiente manera: "
#. module: auto_backup
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "¡XML inválido para la definición de la vista!"
#. module: auto_backup
#: field:db.backup,bkp_dir:0
msgid "Backup Directory"
msgstr "Directorio de la copia de seguridad"
#. module: auto_backup
#: field:db.backup,name:0
msgid "Database"
msgstr "Base de datos"
#. module: auto_backup
#: view:db.backup:0
msgid "2) Schedule new action(create a new record)"
msgstr "2) Lista de nuevas acciones (crear un nuevo registro)"
#. module: auto_backup
#: model:ir.module.module,description:auto_backup.module_meta_information
msgid ""
"The generic Open ERP Database Auto-Backup system enables the user to make "
"configurations for the automatic backup of the database.\n"
"User simply requires to specify host & port under IP Configuration & "
"database(on specified host running at specified port) and backup "
"directory(in which all the backups of the specified database will be stored) "
"under Database Configuration.\n"
"\n"
"Automatic backup for all such configured databases under this can then be "
"scheduled as follows: \n"
" \n"
"1) Go to Administration / Configuration / Scheduler / Scheduled Actions\n"
"2) Schedule new action(create a new record)\n"
"3) Set 'Object' to 'db.backup' and 'Function' to 'schedule_backup' under "
"page 'Technical Data'\n"
"4) Set other values as per your preference"
msgstr ""
#. module: auto_backup
#: view:db.backup:0
msgid ""
"3) Set 'Object' to 'db.backup' and 'Function' to 'schedule_backup' under "
"page 'Technical Data'"
msgstr ""
"3) Ajuste \"objeto\" a \"db.backup\" y \"función\" a \"programar copias de "
"seguridad\" en la página \"Datos Técnicos\""
#. module: auto_backup
#: view:db.backup:0
msgid "Help"
msgstr "Ayuda"
#. module: auto_backup
#: view:db.backup:0
msgid ""
"This configures the scheduler for automatic backup of the given database "
"running on given host at given port on regular intervals."
msgstr ""
"Esto configura el planificador de copia de seguridad automática de la base "
"de datos dado que se ejecutan en el host dado en el puerto en intervalos "
"regulares."
#. module: auto_backup
#: field:db.backup,port:0
msgid "Port"
msgstr "Puerto"

View File

@@ -0,0 +1,395 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * auto_backup
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0-20180205\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-02-08 03:22+0000\n"
"PO-Revision-Date: 2018-02-08 12:47+0900\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 2.0.6\n"
"Last-Translator: \n"
"Language: ko_KR\n"
#. module: auto_backup
#: model:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid ""
"<b>Warning:</b>\n"
" Use SFTP with caution! This writes files to external "
"servers under the path you specify."
msgstr ""
"<b>경고:</b>\n"
" 조심해서 SFTP를 사용하세요! 이것은 당신이 지정한 경로"
"밑에 외부서버들로 파일들을 쓰게됩니다."
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup_folder
msgid "Absolute path for storing the backups"
msgstr "백업저장용 절대경로명"
#. module: auto_backup
#: model:ir.module.category,name:auto_backup.module_management
msgid "Auto backup access"
msgstr "자동으로 백업 액세스하기"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup_send_mail_sftp_fail
msgid "Auto. E-mail on backup fail"
msgstr "백업실패시에 이메일로 알려주기 (자동)"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup_autoremove
msgid "Auto. Remove Backups"
msgstr "백업제거하기 (자동)"
#. module: auto_backup
#: model:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Back-up view"
msgstr "백업보기"
#. module: auto_backup
#: model:ir.ui.menu,name:auto_backup.auto_backup_menu
msgid "Back-ups"
msgstr "백업"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup_folder
msgid "Backup Directory"
msgstr "백업디렉토리"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup_backup_type
msgid "Backup Type"
msgstr "백업타입"
#. module: auto_backup
#: model:ir.actions.server,name:auto_backup.backup_scheduler_ir_actions_server
#: model:ir.cron,cron_name:auto_backup.backup_scheduler
#: model:ir.cron,name:auto_backup.backup_scheduler
msgid "Backup scheduler"
msgstr "백업스케줄러"
#. module: auto_backup
#: model:ir.ui.view,arch_db:auto_backup.view_backup_config_tree
msgid "Backups"
msgstr "백업"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup_days_to_keep_sftp
msgid ""
"Choose after how many days the backup should be deleted from the FTP server. "
"For example:\n"
"If you fill in 5 the backups will be removed after 5 days from the FTP "
"server."
msgstr ""
"FTP서버로부터 몇일지난 백업본을 삭제할지 선택하세요. 예를들면:\n"
"만약 5를 기입하면 그 백업본들은 FTP서버에서 5일후에 삭제됩니다."
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup_days_to_keep
msgid ""
"Choose after how many days the backup should be deleted. For example:\n"
"If you fill in 5 the backups will be removed after 5 days."
msgstr ""
"FTP서버로부터 몇일지난 백업본을 삭제할지 선택하세요. 예를들면:\n"
"만약 5를 기입하면 그 백업본들은 FTP서버에서 5일후에 삭제됩니다."
#. module: auto_backup
#: model:ir.actions.act_window,name:auto_backup.action_backup
#: model:ir.ui.menu,name:auto_backup.backup_conf_menu
msgid "Configure back-ups"
msgstr "백업구성하기"
#. module: auto_backup
#: code:addons/auto_backup/models/db_backup.py:129
#, python-format
msgid "Connection Test Failed!"
msgstr "연결테스트실패~"
#. module: auto_backup
#: code:addons/auto_backup/models/db_backup.py:124
#, python-format
msgid ""
"Connection Test Succeeded!\n"
"Everything seems properly set up for FTP back-ups!"
msgstr ""
"연결테스트성공!\n"
"모든게 적절히 세팅된거 같습니다!"
#. module: auto_backup
#: model:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Contact me!"
msgstr "저에게 연락하세요~"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup_create_uid
msgid "Created by"
msgstr "생성됨"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup_create_date
msgid "Created on"
msgstr "생성됨"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup_name
msgid "Database"
msgstr "데이터베이스"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup_name
msgid "Database you want to schedule backups for"
msgstr "백업을 스케줄하기 원하는 데이터베이스"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup_display_name
msgid "Display Name"
msgstr "표시이름"
#. module: auto_backup
#: selection:db.backup,backup_type:0
msgid "Dump"
msgstr "덤프"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup_email_to_notify
msgid "E-mail to notify"
msgstr "통보할 이메일주소"
#. module: auto_backup
#: code:addons/auto_backup/models/db_backup.py:98 constraint:db.backup:0
#, python-format
msgid "Error ! No such database exists!"
msgstr "에러~ 그런 데이터베이스가 존재하지 않습니다"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup_email_to_notify
msgid ""
"Fill in the e-mail where you want to be notified that the backup failed on "
"the FTP."
msgstr "FTP서버상에서 백업실패할때 알림받기원하는 이메일주소를 채워넣으세요"
#. module: auto_backup
#: model:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "For example: /odoo/backups/"
msgstr "예: /odoo/backups/"
#. module: auto_backup
#: model:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Go to Settings / Technical / Automation / Scheduled Actions."
msgstr "Settings / Technical / Automation / Scheduled Actions 으로 가세요."
#. module: auto_backup
#: model:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Help"
msgstr "도움말"
#. module: auto_backup
#: code:addons/auto_backup/models/db_backup.py:132
#, python-format
msgid "Here is what we got instead:\n"
msgstr "우리가 대신하는것이 여기있습니다:\n"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup_host
msgid "Host"
msgstr "호스트"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup_id
msgid "ID"
msgstr "ID"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup_sftp_host
msgid "IP Address SFTP Server"
msgstr "SFTP서버 IP주소"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup_send_mail_sftp_fail
msgid ""
"If you check this option you can choose to automaticly get e-mailed when the "
"backup to the external server failed."
msgstr ""
"이 옵션을 체크하면 외부서버에서 백업실패할때 자동적으로 이메일하도록 선택할 "
"수 있습니다."
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup_autoremove
msgid ""
"If you check this option you can choose to automaticly remove the backup "
"after xx days"
msgstr ""
"이 옵션을 선택하면 자동적으로 며칠(xx days)후에 백업을 제거하도록 선택할 수 "
"있습니다"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup_sftp_write
msgid ""
"If you check this option you can specify the details needed to write to a "
"remote server with SFTP."
msgstr ""
"이 옵션을 선택하면 SFTP 원격서버로 쓰려고 할때 요구되는 정보를 지정할 수 있습"
"니다."
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup___last_update
msgid "Last Modified on"
msgstr "최근수정일자"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup_write_uid
msgid "Last Updated by"
msgstr "최근수정자"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup_write_date
msgid "Last Updated on"
msgstr "최근업데이트일자"
#. module: auto_backup
#: model:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Local backup configuration"
msgstr "로컬백업환경설정"
#. module: auto_backup
#: model:res.groups,name:auto_backup.group_manager
msgid "Manager"
msgstr "관리자"
#. module: auto_backup
#: model:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Need more help?"
msgstr "더 도움이 필요하세요?"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup_sftp_password
msgid "Password User SFTP Server"
msgstr "SFTP서버 사용자 패스워드"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup_sftp_path
msgid "Path external server"
msgstr "외부서버경로"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup_port
msgid "Port"
msgstr "포트"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup_days_to_keep_sftp
msgid "Remove SFTP after x days"
msgstr "몇일후에 SFTP 제거"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup_days_to_keep
msgid "Remove after x days"
msgstr "몇일후에 제거하기"
#. module: auto_backup
#: model:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "SFTP"
msgstr "SFTP"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup_sftp_port
msgid "SFTP Port"
msgstr "SFTP 포트"
#. module: auto_backup
#: model:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Search the action named 'Backup scheduler'."
msgstr "'백업스케줄러'라고 명명된 액션을 검색하세요"
#. module: auto_backup
#: model:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid ""
"Set the scheduler to active and fill in how often you want backups generated."
msgstr "스케줄러를 활성화로 세팅하고 백업주기를 채워넣으세요"
#. module: auto_backup
#: model:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Test SFTP Connection"
msgstr "SFTP연결테스트"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup_sftp_host
msgid "The IP address from your remote server. For example 192.168.0.1"
msgstr "원격서버로부터의 IP주소. 예를들자면, 192.168.0.1"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup_sftp_path
msgid ""
"The location to the folder where the dumps should be written to. For "
"example /odoo/backups/.\n"
"Files will then be written to /odoo/backups/ on your remote server."
msgstr ""
"덤프파일이 씌어져야하는 폴더위치. 예를들어보자면 /odoo/backups/.\n"
"그 다음에 파일들은 당신서버상의 /odoo/backups/ 로 쓰여질겁니다."
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup_sftp_password
msgid ""
"The password from the user where the SFTP connection should be made with. "
"This is the password from the user on the external server."
msgstr ""
"SFTP연결이 만들어져야하는 그 사용자의 비밀번호. 이것은 외부서버상의 그 사용자"
"의 비밀번호예요~"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup_sftp_port
msgid "The port on the FTP server that accepts SSH/SFTP calls."
msgstr "SSH/SFTP접속을 허용하는 FTP서버상의 포트"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup_sftp_user
msgid ""
"The username where the SFTP connection should be made with. This is the user "
"on the external server."
msgstr "SFTP연결할 사용자명. 외부서버상의 사용자명이예요~ "
#. module: auto_backup
#: model:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid ""
"This configures the scheduler for automatic backup of the given database "
"running on given host\n"
" at given port on regular intervals.\n"
" <br/>\n"
" Automatic backups of the database can be scheduled "
"as follows:"
msgstr ""
"이것은 정기적인 간격으로 해당 호스트상에서 실행중인 데이터베이스의 자동백업용"
"으로 스케줄러를 구성합니다. 그 데이터베이스의 자동백업들은 아래처럼 스케줄될 "
"수 있습니다:"
#. module: auto_backup
#: model:ir.module.category,description:auto_backup.module_management
msgid "User access level for this module"
msgstr "이 모듈용 사용자접근레벨"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup_sftp_user
msgid "Username SFTP Server"
msgstr "SFTP서버 사용자명"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup_sftp_write
msgid "Write to external server with sftp"
msgstr "sftp와 함께 외부서버로 쓰기"
#. module: auto_backup
#: selection:db.backup,backup_type:0
msgid "Zip"
msgstr "Zip"
#. module: auto_backup
#: model:ir.model,name:auto_backup.model_db_backup
msgid "db.backup"
msgstr "db.backup"

View File

@@ -0,0 +1,380 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * auto_backup
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-10-20 13:29+0000\n"
"PO-Revision-Date: 2019-10-20 13:29+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid ""
"<b>Warning:</b>\n"
" Use SFTP with caution! This writes files to external servers under the path you specify."
msgstr "<b>Waarschuwing:</b>\n"
" Gebruik SFTP voorzichtig! Dit schrijft bestanden naar externe servers onder het pad dat u opgeeft."
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__folder
msgid "Absolute path for storing the backups"
msgstr "Absoluut pad om backups te bewaren"
#. module: auto_backup
#: model:ir.module.category,name:auto_backup.module_management
msgid "Auto backup access"
msgstr "Auto backup toegang"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__send_mail_sftp_fail
msgid "Auto. E-mail on backup fail"
msgstr "Auto. e-mail bij mislukte back-up"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__autoremove
msgid "Auto. Remove Backups"
msgstr "Auto. e-mailen wanneer backup mislukt"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Back-up view"
msgstr "Back-up weergave"
#. module: auto_backup
#: model:ir.ui.menu,name:auto_backup.auto_backup_menu
msgid "Back-ups"
msgstr "Back-ups"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__folder
msgid "Backup Directory"
msgstr "Backup folder"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__backup_type
msgid "Backup Type"
msgstr "Soort back-up"
#. module: auto_backup
#: model:ir.model,name:auto_backup.model_db_backup
msgid "Backup configuration record"
msgstr "Back-up configuratie"
#. module: auto_backup
#: model:ir.actions.server,name:auto_backup.backup_scheduler_ir_actions_server
#: model:ir.cron,cron_name:auto_backup.backup_scheduler
#: model:ir.cron,name:auto_backup.backup_scheduler
msgid "Backup scheduler"
msgstr "Backup planner"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_tree
msgid "Backups"
msgstr "Back-ups"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__days_to_keep_sftp
msgid ""
"Choose after how many days the backup should be deleted from the FTP server. For example:\n"
"If you fill in 5 the backups will be removed after 5 days from the FTP server."
msgstr "Kies na hoeveel dagen de backups verwijderd moeten worden van de FTP server. Bijvoorbeeld:\n"
"Als u 5 invult zal de backup na 5 dagen verwijderd worden van de FTP server."
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__days_to_keep
msgid ""
"Choose after how many days the backup should be deleted. For example:\n"
"If you fill in 5 the backups will be removed after 5 days."
msgstr "Kies na hoeveel dagen de backups verwijderd moeten worden van de FTP server. Bijvoorbeeld:\n"
"Als u 5 invult zal de backup na 5 dagen verwijderd worden van de FTP server."
#. module: auto_backup
#: model:ir.actions.act_window,name:auto_backup.action_backup
#: model:ir.ui.menu,name:auto_backup.backup_conf_menu
msgid "Configure back-ups"
msgstr "Configureer back-ups"
#. module: auto_backup
#: code:addons/auto_backup/models/db_backup.py:0
#, python-format
msgid "Connection Test Failed!"
msgstr "Connectie test mislukt!"
#. module: auto_backup
#: code:addons/auto_backup/models/db_backup.py:0
#, python-format
msgid ""
"Connection Test Succeeded!\n"
"Everything seems properly set up for FTP back-ups!"
msgstr "Connectie test succesvol!\n"
"Alles lijkt correct opgezet voor FTP back-ups!"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Contact me!"
msgstr "Contacteer mij!"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__create_uid
msgid "Created by"
msgstr "Aangemaakt door"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__create_date
msgid "Created on"
msgstr "Aangemaakt op"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__name
msgid "Database"
msgstr "Database"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__name
msgid "Database you want to schedule backups for"
msgstr "Dataabse waar u back-ups voor wilt plannen"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__display_name
msgid "Display Name"
msgstr "Schermnaam"
#. module: auto_backup
#: model:ir.model.fields.selection,name:auto_backup.selection__db_backup__backup_type__dump
msgid "Dump"
msgstr "Dump"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__email_to_notify
msgid "E-mail to notify"
msgstr "E-mail om te verwittigen"
#. module: auto_backup
#: code:addons/auto_backup/models/db_backup.py:0
#, python-format
msgid "Error ! No such database exists!"
msgstr "Fout! Deze database bestaat niet!"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__email_to_notify
msgid ""
"Fill in the e-mail where you want to be notified that the backup failed on "
"the FTP."
msgstr "Vul de e-mail in waarop u wilt verwittigd worden als de backup mislukt op de FTP."
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "For example: /odoo/backups/"
msgstr "Bijvoorbeeld: /odoo/backups/"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Go to Settings / Technical / Automation / Scheduled Actions."
msgstr "Ga naar Instellingen / Technisch / Automatisering / Geplande acties."
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Help"
msgstr "Help"
#. module: auto_backup
#: code:addons/auto_backup/models/db_backup.py:0
#, python-format
msgid "Here is what we got instead:\n"
msgstr "Hier is wat we in de plaats terugkregen:\n"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__host
msgid "Host"
msgstr "Host"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__id
msgid "ID"
msgstr "ID"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__sftp_host
msgid "IP Address SFTP Server"
msgstr "IP adres SFTP server"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__send_mail_sftp_fail
msgid ""
"If you check this option you can choose to automaticly get e-mailed when the"
" backup to the external server failed."
msgstr "Als u deze optie aanvinkt kan u kiezen om automatisch een e-mail aan te krijgen als de backuaar de externe server mislukt."
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__autoremove
msgid ""
"If you check this option you can choose to automaticly remove the backup "
"after xx days"
msgstr "Als u deze optie aanvinkt kan u kiezen om automatisch backups te verwijderen "
"na xx dagen"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__sftp_write
msgid ""
"If you check this option you can specify the details needed to write to a "
"remote server with SFTP."
msgstr "Als u deze optie aanvinkt kan u de details invullen die nodig zijn om te connecteren met de "
" externe SFTP server"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup____last_update
msgid "Last Modified on"
msgstr "Laatst gewijzigd op"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__write_uid
msgid "Last Updated by"
msgstr "Laatst bijgewerkt door"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__write_date
msgid "Last Updated on"
msgstr "Laatst bijgewerkt op"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Local backup configuration"
msgstr "Lokale back-up configuratie"
#. module: auto_backup
#: model:res.groups,name:auto_backup.group_manager
msgid "Manager"
msgstr "Beheerder"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Need more help?"
msgstr "Meer hulp nodig?"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__sftp_password
msgid "Password User SFTP Server"
msgstr "Wachtwoord gebruiker SFTP server"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__sftp_path
msgid "Path external server"
msgstr "Pad externe server"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__port
msgid "Port"
msgstr "Poort"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__days_to_keep_sftp
msgid "Remove SFTP after x days"
msgstr "Verwijderd SFTP na x dagen"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__days_to_keep
msgid "Remove after x days"
msgstr "Verwijder na x dagen"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "SFTP"
msgstr "SFTP"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__sftp_port
msgid "SFTP Port"
msgstr "SFTP poort"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Search the action named 'Backup scheduler'."
msgstr "Zoek de actie met de naam 'Backup planner'."
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid ""
"Set the scheduler to active and fill in how often you want backups "
"generated."
msgstr "Zet de planner actief en vul in hoe vaak u wilt dat er backups gegenereerd "
"worden."
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Test SFTP Connection"
msgstr "Test SFTP verbinding"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__sftp_host
msgid "The IP address from your remote server. For example 192.168.0.1"
msgstr "Het IP adres van uw externe server. Bijvoorbeeld: 192.168.0.1"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__sftp_path
msgid ""
"The location to the folder where the dumps should be written to. For example /odoo/backups/.\n"
"Files will then be written to /odoo/backups/ on your remote server."
msgstr "De locatie naar de folder waar de backup naar toe moet geschreven worden. Bijvoorbeeld odoo/backups/\n"
"Bestanden worden dan naar /odoo/backups/ geschreven op de externe server"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__sftp_password
msgid ""
"The password from the user where the SFTP connection should be made with. "
"This is the password from the user on the external server."
msgstr "Het wachtwoord van de gebruiker waar de SFTP connectie mee moet gemaakt worden. "
"Dit is het wachtwoord van de gebruiker op de externe server."
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__sftp_port
msgid "The port on the FTP server that accepts SSH/SFTP calls."
msgstr "De poort op de FTP server die SSH/SFTP accepteert."
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__sftp_user
msgid ""
"The username where the SFTP connection should be made with. This is the user"
" on the external server."
msgstr "De gebruikersnaam waar de SFTP connectie mee gemaakt moet worden. Dit is de gebruiker"
" op de externe server."
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid ""
"This configures the scheduler for automatic backup of the given database running on given host\n"
" at given port on regular intervals.\n"
" <br/>\n"
" Automatic backups of the database can be scheduled as follows:"
msgstr "Dit configureert de planner om automatische backups van de opgegeven database te maken die op deze host,\n"
" op een bepaalde poort draaien, op regelmatige intervals.\n"
" <br/>\n"
" Automatische backups kunnen als volgt ingepland worden:"
#. module: auto_backup
#: model:ir.module.category,description:auto_backup.module_management
msgid "User access level for this module"
msgstr "Gebruikerstoegang voor deze module"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__sftp_user
msgid "Username SFTP Server"
msgstr "Gebruikersnaam SFTP server"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__sftp_write
msgid "Write to external server with sftp"
msgstr "Schrijf naar externe server met SFTP"
#. module: auto_backup
#: model:ir.model.fields.selection,name:auto_backup.selection__db_backup__backup_type__zip
msgid "Zip"
msgstr "ZIP"

View File

@@ -0,0 +1,380 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * auto_backup
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-10-20 13:29+0000\n"
"PO-Revision-Date: 2019-10-20 13:29+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid ""
"<b>Warning:</b>\n"
" Use SFTP with caution! This writes files to external servers under the path you specify."
msgstr "<b>Waarschuwing:</b>\n"
" Gebruik SFTP voorzichtig! Dit schrijft bestanden naar externe servers onder het pad dat u opgeeft."
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__folder
msgid "Absolute path for storing the backups"
msgstr "Absoluut pad om backups te bewaren"
#. module: auto_backup
#: model:ir.module.category,name:auto_backup.module_management
msgid "Auto backup access"
msgstr "Auto backup toegang"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__send_mail_sftp_fail
msgid "Auto. E-mail on backup fail"
msgstr "Auto. e-mail bij mislukte back-up"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__autoremove
msgid "Auto. Remove Backups"
msgstr "Auto. e-mailen wanneer backup mislukt"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Back-up view"
msgstr "Back-up weergave"
#. module: auto_backup
#: model:ir.ui.menu,name:auto_backup.auto_backup_menu
msgid "Back-ups"
msgstr "Back-ups"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__folder
msgid "Backup Directory"
msgstr "Backup folder"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__backup_type
msgid "Backup Type"
msgstr "Soort back-up"
#. module: auto_backup
#: model:ir.model,name:auto_backup.model_db_backup
msgid "Backup configuration record"
msgstr "Back-up configuratie"
#. module: auto_backup
#: model:ir.actions.server,name:auto_backup.backup_scheduler_ir_actions_server
#: model:ir.cron,cron_name:auto_backup.backup_scheduler
#: model:ir.cron,name:auto_backup.backup_scheduler
msgid "Backup scheduler"
msgstr "Backup planner"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_tree
msgid "Backups"
msgstr "Back-ups"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__days_to_keep_sftp
msgid ""
"Choose after how many days the backup should be deleted from the FTP server. For example:\n"
"If you fill in 5 the backups will be removed after 5 days from the FTP server."
msgstr "Kies na hoeveel dagen de backups verwijderd moeten worden van de FTP server. Bijvoorbeeld:\n"
"Als u 5 invult zal de backup na 5 dagen verwijderd worden van de FTP server."
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__days_to_keep
msgid ""
"Choose after how many days the backup should be deleted. For example:\n"
"If you fill in 5 the backups will be removed after 5 days."
msgstr "Kies na hoeveel dagen de backups verwijderd moeten worden van de FTP server. Bijvoorbeeld:\n"
"Als u 5 invult zal de backup na 5 dagen verwijderd worden van de FTP server."
#. module: auto_backup
#: model:ir.actions.act_window,name:auto_backup.action_backup
#: model:ir.ui.menu,name:auto_backup.backup_conf_menu
msgid "Configure back-ups"
msgstr "Configureer back-ups"
#. module: auto_backup
#: code:addons/auto_backup/models/db_backup.py:0
#, python-format
msgid "Connection Test Failed!"
msgstr "Connectie test mislukt!"
#. module: auto_backup
#: code:addons/auto_backup/models/db_backup.py:0
#, python-format
msgid ""
"Connection Test Succeeded!\n"
"Everything seems properly set up for FTP back-ups!"
msgstr "Connectie test succesvol!\n"
"Alles lijkt correct opgezet voor FTP backups!"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Contact me!"
msgstr "Contacteer mij!"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__create_uid
msgid "Created by"
msgstr "Aangemaakt door"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__create_date
msgid "Created on"
msgstr "Aangemaakt op"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__name
msgid "Database"
msgstr "Database"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__name
msgid "Database you want to schedule backups for"
msgstr "Dataabse waar u back-ups voor wilt plannen"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__display_name
msgid "Display Name"
msgstr "Schermnaam"
#. module: auto_backup
#: model:ir.model.fields.selection,name:auto_backup.selection__db_backup__backup_type__dump
msgid "Dump"
msgstr "Dump"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__email_to_notify
msgid "E-mail to notify"
msgstr "E-mail om te verwittigen"
#. module: auto_backup
#: code:addons/auto_backup/models/db_backup.py:0
#, python-format
msgid "Error ! No such database exists!"
msgstr "Fout! Deze database bestaat niet!"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__email_to_notify
msgid ""
"Fill in the e-mail where you want to be notified that the backup failed on "
"the FTP."
msgstr "Vul de e-mail in waarop u wilt verwittigd worden als de backup mislukt op de FTP."
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "For example: /odoo/backups/"
msgstr "Bijvoorbeeld: /odoo/backups/"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Go to Settings / Technical / Automation / Scheduled Actions."
msgstr "Ga naar Instellingen / Technisch / Automatisering / Geplande acties."
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Help"
msgstr "Help"
#. module: auto_backup
#: code:addons/auto_backup/models/db_backup.py:0
#, python-format
msgid "Here is what we got instead:\n"
msgstr "Hier is wat we in de plaats terugkregen:\n"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__host
msgid "Host"
msgstr "Host"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__id
msgid "ID"
msgstr "ID"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__sftp_host
msgid "IP Address SFTP Server"
msgstr "IP adres SFTP server"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__send_mail_sftp_fail
msgid ""
"If you check this option you can choose to automaticly get e-mailed when the"
" backup to the external server failed."
msgstr "Als u deze optie aanvinkt kan u kiezen om automatisch een e-mail aan te krijgen als de backuaar de externe server mislukt."
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__autoremove
msgid ""
"If you check this option you can choose to automaticly remove the backup "
"after xx days"
msgstr "Als u deze optie aanvinkt kan u kiezen om automatisch backups te verwijderen "
"na xx dagen"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__sftp_write
msgid ""
"If you check this option you can specify the details needed to write to a "
"remote server with SFTP."
msgstr "Als u deze optie aanvinkt kan u de details invullen die nodig zijn om te connecteren met de "
" externe SFTP server"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup____last_update
msgid "Last Modified on"
msgstr "Laatst gewijzigd op"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__write_uid
msgid "Last Updated by"
msgstr "Laatst bijgewerkt door"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__write_date
msgid "Last Updated on"
msgstr "Laatst bijgewerkt op"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Local backup configuration"
msgstr "Lokale back-up configuratie"
#. module: auto_backup
#: model:res.groups,name:auto_backup.group_manager
msgid "Manager"
msgstr "Beheerder"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Need more help?"
msgstr "Meer hulp nodig?"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__sftp_password
msgid "Password User SFTP Server"
msgstr "Wachtwoord gebruiker SFTP server"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__sftp_path
msgid "Path external server"
msgstr "Pad externe server"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__port
msgid "Port"
msgstr "Poort"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__days_to_keep_sftp
msgid "Remove SFTP after x days"
msgstr "Verwijderd SFTP na x dagen"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__days_to_keep
msgid "Remove after x days"
msgstr "Verwijder na x dagen"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "SFTP"
msgstr "SFTP"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__sftp_port
msgid "SFTP Port"
msgstr "SFTP poort"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Search the action named 'Backup scheduler'."
msgstr "Zoek de actie met de naam 'Backup planner'."
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid ""
"Set the scheduler to active and fill in how often you want backups "
"generated."
msgstr "Zet de planner actief en vul in hoe vaak u wilt dat er backups gegenereerd "
"worden."
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Test SFTP Connection"
msgstr "Test SFTP verbinding"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__sftp_host
msgid "The IP address from your remote server. For example 192.168.0.1"
msgstr "Het IP adres van uw externe server. Bijvoorbeeld: 192.168.0.1"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__sftp_path
msgid ""
"The location to the folder where the dumps should be written to. For example /odoo/backups/.\n"
"Files will then be written to /odoo/backups/ on your remote server."
msgstr "De locatie naar de folder waar de backup naar toe moet geschreven worden. Bijvoorbeeld odoo/backups/\n"
"Bestanden worden dan naar /odoo/backups/ geschreven op de externe server"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__sftp_password
msgid ""
"The password from the user where the SFTP connection should be made with. "
"This is the password from the user on the external server."
msgstr "Het wachtwoord van de gebruiker waar de SFTP connectie mee moet gemaakt worden. "
"Dit is het wachtwoord van de gebruiker op de externe server."
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__sftp_port
msgid "The port on the FTP server that accepts SSH/SFTP calls."
msgstr "De poort op de FTP server die SSH/SFTP accepteert."
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__sftp_user
msgid ""
"The username where the SFTP connection should be made with. This is the user"
" on the external server."
msgstr "De gebruikersnaam waar de SFTP connectie mee gemaakt moet worden. Dit is de gebruiker"
" op de externe server."
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid ""
"This configures the scheduler for automatic backup of the given database running on given host\n"
" at given port on regular intervals.\n"
" <br/>\n"
" Automatic backups of the database can be scheduled as follows:"
msgstr "Dit configureert de planner om automatische backups van de opgegeven database te maken die op deze host,\n"
" op een bepaalde poort draaien, op regelmatige intervals.\n"
" <br/>\n"
" Automatische backups kunnen als volgt ingepland worden:"
#. module: auto_backup
#: model:ir.module.category,description:auto_backup.module_management
msgid "User access level for this module"
msgstr "Gebruikerstoegang voor deze module"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__sftp_user
msgid "Username SFTP Server"
msgstr "Gebruikersnaam SFTP server"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__sftp_write
msgid "Write to external server with sftp"
msgstr "Schrijf naar externe server met SFTP"
#. module: auto_backup
#: model:ir.model.fields.selection,name:auto_backup.selection__db_backup__backup_type__zip
msgid "Zip"
msgstr "ZIP"

View File

@@ -0,0 +1,178 @@
# Polish translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-11-24 13:49+0000\n"
"PO-Revision-Date: 2011-02-15 15:01+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"Language-Team: Polish <pl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-04-20 05:35+0000\n"
"X-Generator: Launchpad (build 16567)\n"
#. module: auto_backup
#: help:db.backup,name:0
msgid "Database you want to schedule backups for"
msgstr "Baza danych, dla której chcesz zaplanować robienie kopii zapasowej"
#. module: auto_backup
#: constraint:ir.model:0
msgid ""
"The Object name must start with x_ and not contain any special character !"
msgstr ""
"Nazwa obiektu musi zaczynać się od x_ oraz nie może zawierać znaków "
"specjalnych !"
#. module: auto_backup
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr "Nieprawidłowa nazwa modelu w definicji akcji."
#. module: auto_backup
#: model:ir.model,name:auto_backup.model_db_backup
msgid "db.backup"
msgstr ""
#. module: auto_backup
#: view:db.backup:0
msgid ""
"1) Go to Administration / Configuration / Scheduler / Scheduled Actions"
msgstr "1) Idź do Administracja / Konfirguracja / Planista / Planowane akcje"
#. module: auto_backup
#: model:ir.actions.act_window,name:auto_backup.action_backup_conf_form
#: model:ir.ui.menu,name:auto_backup.backup_conf_menu
msgid "Configure Backup"
msgstr "Konfiguruj kopie zapasowe"
#. module: auto_backup
#: view:db.backup:0
msgid "Test"
msgstr "Przetestuj"
#. module: auto_backup
#: view:db.backup:0
msgid "IP Configuration"
msgstr "Konfiguracja adresu IP"
#. module: auto_backup
#: help:db.backup,bkp_dir:0
msgid "Absolute path for storing the backups"
msgstr "Pełna ścieżka dla kopii zapasowych"
#. module: auto_backup
#: model:ir.module.module,shortdesc:auto_backup.module_meta_information
msgid "Database Auto-Backup"
msgstr "Automatyczne kopie zapasowe bazy danych"
#. module: auto_backup
#: view:db.backup:0
msgid "Database Configuration"
msgstr "Konfiguracja bazy danych"
#. module: auto_backup
#: view:db.backup:0
msgid "4) Set other values as per your preference"
msgstr "4) Ustaw inne dane według uznania"
#. module: auto_backup
#: field:db.backup,host:0
msgid "Host"
msgstr "Host"
#. module: auto_backup
#: view:db.backup:0
msgid ""
"Automatic backup of all the databases under this can be scheduled as "
"follows: "
msgstr ""
"Automatyczne kopie wszystkich baz danych mogą być zaplanowane następująco: "
#. module: auto_backup
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "XML niewłaściwy dla tej architektury wyświetlania!"
#. module: auto_backup
#: field:db.backup,bkp_dir:0
msgid "Backup Directory"
msgstr "Katalog kopii zapasowych"
#. module: auto_backup
#: field:db.backup,name:0
msgid "Database"
msgstr "Baza danych"
#. module: auto_backup
#: view:db.backup:0
msgid "2) Schedule new action(create a new record)"
msgstr "2) Zaplanuj nową akcję (utwórz nowy rekord)"
#. module: auto_backup
#: model:ir.module.module,description:auto_backup.module_meta_information
msgid ""
"The generic Open ERP Database Auto-Backup system enables the user to make "
"configurations for the automatic backup of the database.\n"
"User simply requires to specify host & port under IP Configuration & "
"database(on specified host running at specified port) and backup "
"directory(in which all the backups of the specified database will be stored) "
"under Database Configuration.\n"
"\n"
"Automatic backup for all such configured databases under this can then be "
"scheduled as follows: \n"
" \n"
"1) Go to Administration / Configuration / Scheduler / Scheduled Actions\n"
"2) Schedule new action(create a new record)\n"
"3) Set 'Object' to 'db.backup' and 'Function' to 'schedule_backup' under "
"page 'Technical Data'\n"
"4) Set other values as per your preference"
msgstr ""
"System Open ERP Database Auto-Backup pozwala użytkownikowi utworzyć "
"konfiguracje dla automatycznego zachowywania kopii zapasowych baz danych.\n"
"Użytkownik musi tylko podać host i port w Konfiguracji IP i bazę danych "
"oraz katalog dla kopii zapasowej Konfiguracji bazy danych.\n"
"\n"
"Automatyczne kopie wszystkich baz danych mogą być zaplanowane następująco: "
"\n"
" \n"
"1) Idź do Administracja / Konfirguracja / Planista / Planowane akcje\n"
"2) Zaplanuj nową akcję (utwórz nowy rekord)\n"
"3) Ustaw 'Obiekt' na 'db.backup' i 'Funkcja' na 'schedule_backup' na stronie "
"'Dane techniczne'.\n"
"4) Ustaw inne dane według uznania"
#. module: auto_backup
#: view:db.backup:0
msgid ""
"3) Set 'Object' to 'db.backup' and 'Function' to 'schedule_backup' under "
"page 'Technical Data'"
msgstr ""
"3) Ustaw 'Obiekt' na 'db.backup' i 'Funkcja' na 'schedule_backup' na stronie "
"'Dane techniczne'."
#. module: auto_backup
#: view:db.backup:0
msgid "Help"
msgstr "Pomoc"
#. module: auto_backup
#: view:db.backup:0
msgid ""
"This configures the scheduler for automatic backup of the given database "
"running on given host at given port on regular intervals."
msgstr ""
"Tu konfigurujesz planistę do automatycznego zapisywania kopii zapasowych dla "
"określonej bazy danych na na określonym hoście (komputerze) na określonym "
"porcie w regularnych terminach."
#. module: auto_backup
#: field:db.backup,port:0
msgid "Port"
msgstr "Port"

View File

@@ -0,0 +1,183 @@
# Brazilian Portuguese translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-11-24 13:49+0000\n"
"PO-Revision-Date: 2013-07-20 09:39+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-07-22 05:50+0000\n"
"X-Generator: Launchpad (build 16696)\n"
#. module: auto_backup
#: help:db.backup,name:0
msgid "Database you want to schedule backups for"
msgstr "Banco de dados que você deseja agendar backups para"
#. module: auto_backup
#: constraint:ir.model:0
msgid ""
"The Object name must start with x_ and not contain any special character !"
msgstr ""
"O nome do objeto deve iniciar com x_ e não conter qualquer caractere "
"especial!"
#. module: auto_backup
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr "Nome do modelo inválida na definição da ação."
#. module: auto_backup
#: model:ir.model,name:auto_backup.model_db_backup
msgid "db.backup"
msgstr "db.backup"
#. module: auto_backup
#: view:db.backup:0
msgid ""
"1) Go to Administration / Configuration / Scheduler / Scheduled Actions"
msgstr ""
"1) Vá para Administração / Configuração / Programador / Ações Programadas"
#. module: auto_backup
#: model:ir.actions.act_window,name:auto_backup.action_backup_conf_form
#: model:ir.ui.menu,name:auto_backup.backup_conf_menu
msgid "Configure Backup"
msgstr "Configurar backup"
#. module: auto_backup
#: view:db.backup:0
msgid "Test"
msgstr "Teste"
#. module: auto_backup
#: view:db.backup:0
msgid "IP Configuration"
msgstr "Configuração de IP"
#. module: auto_backup
#: help:db.backup,bkp_dir:0
msgid "Absolute path for storing the backups"
msgstr "Caminho absoluto para armazenar os backups"
#. module: auto_backup
#: model:ir.module.module,shortdesc:auto_backup.module_meta_information
msgid "Database Auto-Backup"
msgstr "Banco de Dados Auto-Backup"
#. module: auto_backup
#: view:db.backup:0
msgid "Database Configuration"
msgstr "Configuração do Banco de Dados"
#. module: auto_backup
#: view:db.backup:0
msgid "4) Set other values as per your preference"
msgstr "4) Defina outros valores como por sua preferência"
#. module: auto_backup
#: field:db.backup,host:0
msgid "Host"
msgstr "Host"
#. module: auto_backup
#: view:db.backup:0
msgid ""
"Automatic backup of all the databases under this can be scheduled as "
"follows: "
msgstr ""
"Backup automático de todos os bancos de dados sob este pode ser programado "
"como segue: "
#. module: auto_backup
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "Inválido XML para Ver Arquitetura!"
#. module: auto_backup
#: field:db.backup,bkp_dir:0
msgid "Backup Directory"
msgstr "Diretório de backup"
#. module: auto_backup
#: field:db.backup,name:0
msgid "Database"
msgstr "Banco de Dados"
#. module: auto_backup
#: view:db.backup:0
msgid "2) Schedule new action(create a new record)"
msgstr "2) Programe nova ação (criar um novo registro)"
#. module: auto_backup
#: model:ir.module.module,description:auto_backup.module_meta_information
msgid ""
"The generic Open ERP Database Auto-Backup system enables the user to make "
"configurations for the automatic backup of the database.\n"
"User simply requires to specify host & port under IP Configuration & "
"database(on specified host running at specified port) and backup "
"directory(in which all the backups of the specified database will be stored) "
"under Database Configuration.\n"
"\n"
"Automatic backup for all such configured databases under this can then be "
"scheduled as follows: \n"
" \n"
"1) Go to Administration / Configuration / Scheduler / Scheduled Actions\n"
"2) Schedule new action(create a new record)\n"
"3) Set 'Object' to 'db.backup' and 'Function' to 'schedule_backup' under "
"page 'Technical Data'\n"
"4) Set other values as per your preference"
msgstr ""
"O sistema Auto-Backup genérico Aberto ERP banco de dados permite que o "
"usuário faça configurações para o backup automático do banco de dados. \n"
"usuário requer simplesmente para especificar anfitrião e porta em "
"Configuração do IP e banco de dados (on especificado host executando na "
"porta especificada) eo diretório de backup (em . que todos os backups de "
"banco de dados especificado serão armazenados) em Configuração do banco de "
"dados \n"
"de backup automático de todos esses bancos de dados configurados sob este "
"pode ser programado como segue:\n"
" \n"
" \n"
"1) Vá para Administração / Configuração / Programador / Ações Programadas \n"
"2) Programe nova ação (criar um novo registro) \n"
"3) Defina 'objeto' para 'db.backup' e 'função' para 'schedule_backup' em "
"página \"Dados Técnicos\" \n"
"4 ) Defina outros valores de acordo com sua preferência"
#. module: auto_backup
#: view:db.backup:0
msgid ""
"3) Set 'Object' to 'db.backup' and 'Function' to 'schedule_backup' under "
"page 'Technical Data'"
msgstr ""
"3) Defina 'objeto' para 'db.backup' e 'função' para 'schedule_backup \"em\" "
"Dados Técnicos \"página"
#. module: auto_backup
#: view:db.backup:0
msgid "Help"
msgstr "Ajudar"
#. module: auto_backup
#: view:db.backup:0
msgid ""
"This configures the scheduler for automatic backup of the given database "
"running on given host at given port on regular intervals."
msgstr ""
"Isso configura o agendador de backup automático de um determinado banco de "
"dados rodando em determinado host em determinada porta em intervalos "
"regulares."
#. module: auto_backup
#: field:db.backup,port:0
msgid "Port"
msgstr "Porto"

View File

@@ -0,0 +1,358 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * auto_backup
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-19 08:18+0000\n"
"PO-Revision-Date: 2024-04-19 08:18+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid ""
"<b>Warning:</b>\n"
" Use SFTP with caution! This writes files to external servers under the path you specify."
msgstr "谨慎使用SFTP这会将文件写入您指定路径下的外部服务器。"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__folder
msgid "Absolute path for storing the backups"
msgstr "备份绝对路径"
#. module: auto_backup
#: model:ir.module.category,name:auto_backup.module_management
msgid "Auto backup access"
msgstr "自动备份权限"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__send_mail_sftp_fail
msgid "Auto. E-mail on backup fail"
msgstr "FTP备份失败自动邮件通知你"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__autoremove
msgid "Auto. Remove Backups"
msgstr "自动删除备份"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Back-up view"
msgstr "备份视图"
#. module: auto_backup
#: model:ir.ui.menu,name:auto_backup.auto_backup_menu
msgid "Back-ups"
msgstr "备份"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__folder
msgid "Backup Directory"
msgstr "备份目录"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__backup_type
msgid "Backup Type"
msgstr "备份类型"
#. module: auto_backup
#: model:ir.model,name:auto_backup.model_db_backup
msgid "Backup configuration record"
msgstr "备份配置记录"
#. module: auto_backup
#: model:ir.actions.server,name:auto_backup.backup_scheduler_ir_actions_server
#: model:ir.cron,cron_name:auto_backup.backup_scheduler
#: model:ir.cron,name:auto_backup.backup_scheduler
msgid "Backup scheduler"
msgstr "备份调度器"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__days_to_keep_sftp
msgid ""
"Choose after how many days the backup should be deleted from the FTP server. For example:\n"
"If you fill in 5 the backups will be removed after 5 days from the FTP server."
msgstr "选择备份应在FTP服务器上删除的天数。例如\n如果您填写5则备份将在5天后从FTP服务器上删除。"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__days_to_keep
msgid ""
"Choose after how many days the backup should be deleted. For example:\n"
"If you fill in 5 the backups will be removed after 5 days."
msgstr "选择备份应删除的天数。例如:\n如果您填写5则备份将在5天后删除。"
#. module: auto_backup
#: model:ir.actions.act_window,name:auto_backup.action_backup
#: model:ir.ui.menu,name:auto_backup.backup_conf_menu
msgid "Configure back-ups"
msgstr "配置备份"
#. module: auto_backup
#: code:addons/auto_backup/models/db_backup.py:0
#, python-format
msgid "Connection Test Failed!"
msgstr "连接测试失败!"
#. module: auto_backup
#: code:addons/auto_backup/models/db_backup.py:0
#, python-format
msgid ""
"Connection Test Succeeded!\n"
"Everything seems properly set up for FTP back-ups!"
msgstr "连接测试成功!\nFTP备份似乎已正确设置"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Contact me!"
msgstr "联系我!"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__create_uid
msgid "Created by"
msgstr "创建者"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__create_date
msgid "Created on"
msgstr "创建日期"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__name
msgid "Database"
msgstr "数据库"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__name
msgid "Database you want to schedule backups for"
msgstr "您要安排备份的数据库"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__display_name
msgid "Display Name"
msgstr "显示名称"
#. module: auto_backup
#: model:ir.model.fields.selection,name:auto_backup.selection__db_backup__backup_type__dump
msgid "Dump"
msgstr ""
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__email_to_notify
msgid "E-mail to notify"
msgstr "通知邮件"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__email_to_notify
msgid ""
"Fill in the e-mail where you want to be notified that the backup failed on "
"the FTP."
msgstr "填写您希望在FTP上备份失败时收到通知的电子邮件"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "For example: /odoo/backups/"
msgstr "例如:/odoo/backups/"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Go to Settings / Technical / Automation / Scheduled Actions."
msgstr "前往 设置/技术/自动化/计划任务。"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Help"
msgstr "帮助"
#. module: auto_backup
#: code:addons/auto_backup/models/db_backup.py:0
#, python-format
msgid "Here is what we got instead:\n"
msgstr "这是我们得到的内容:\n"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__host
msgid "Host"
msgstr "主机"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__id
msgid "ID"
msgstr "标识"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__sftp_host
msgid "IP Address SFTP Server"
msgstr "SFTP服务器的IP地址"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__send_mail_sftp_fail
msgid ""
"If you check this option you can choose to automaticly get e-mailed when the"
" backup to the external server failed."
msgstr "如果您选中此选项,当备份到外部服务器失败时,您可以选择自动接收邮件通知。"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__autoremove
msgid ""
"If you check this option you can choose to automaticly remove the backup "
"after xx days"
msgstr "如果您选中此选项您可以选择在xx天后自动删除备份"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__sftp_write
msgid ""
"If you check this option you can specify the details needed to write to a "
"remote server with SFTP."
msgstr "如果您选中此选项您可以指定使用SFTP向远程服务器写入所需的详细信息。"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup____last_update
msgid "Last Modified on"
msgstr "最后修改时间"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__write_uid
msgid "Last Updated by"
msgstr "最后更新者"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__write_date
msgid "Last Updated on"
msgstr "最后更新时间"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Local backup configuration"
msgstr "本地备份配置"
#. module: auto_backup
#: model:res.groups,name:auto_backup.group_manager
msgid "Manager"
msgstr "管理者"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Need more help?"
msgstr "需要更多帮助?"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__sftp_password
msgid "Password User SFTP Server"
msgstr "SFTP服务器用户密码"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__sftp_path
msgid "Path external server"
msgstr "外部服务器路径"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__port
msgid "Port"
msgstr "端口"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__days_to_keep_sftp
msgid "Remove SFTP after x days"
msgstr "x天后删除SFTP"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__days_to_keep
msgid "Remove after x days"
msgstr "x天后删除"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "SFTP"
msgstr ""
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__sftp_port
msgid "SFTP Port"
msgstr "SFTP端口"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Search the action named 'Backup scheduler'."
msgstr "搜索名为'备份调度器'的操作。"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid ""
"Set the scheduler to active and fill in how often you want backups "
"generated."
msgstr "将调度器设置为激活状态,并填写您希望生成备份的频率。"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid "Test SFTP Connection"
msgstr "测试SFTP连接"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__sftp_host
msgid "The IP address from your remote server. For example 192.168.0.1"
msgstr "远程服务器的IP地址。例如192.168.0.1"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__sftp_path
msgid ""
"The location to the folder where the dumps should be written to. For example /odoo/backups/.\n"
"Files will then be written to /odoo/backups/ on your remote server."
msgstr "转储文件应该写入的文件夹位置。例如 /odoo/backups/。\n文件将被写入远程服务器上的 /odoo/backups/。"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__sftp_password
msgid ""
"The password from the user where the SFTP connection should be made with. "
"This is the password from the user on the external server."
msgstr "应与之建立SFTP连接的用户的密码。\n这是外部服务器上用户的密码。"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__sftp_port
msgid "The port on the FTP server that accepts SSH/SFTP calls."
msgstr "FTP服务器上接受SSH/SFTP调用的端口。"
#. module: auto_backup
#: model:ir.model.fields,help:auto_backup.field_db_backup__sftp_user
msgid ""
"The username where the SFTP connection should be made with. This is the user"
" on the external server."
msgstr "应与之建立SFTP连接的用户名。这是外部服务器上的用户。"
#. module: auto_backup
#: model_terms:ir.ui.view,arch_db:auto_backup.view_backup_config_form
msgid ""
"This configures the scheduler for automatic backup of the given database running on given host\n"
" at given port on regular intervals.\n"
" <br/>\n"
" Automatic backups of the database can be scheduled as follows:"
msgstr "这将配置调度器,以定期自动备份在指定主机上运行的给定数据库\n"
" 在给定端口上。\n"
" <br/>\n"
" 可以如下安排数据库的自动备份:"
#. module: auto_backup
#: model:ir.module.category,description:auto_backup.module_management
msgid "User access level for this module"
msgstr "此模块的用户访问级别"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__sftp_user
msgid "Username SFTP Server"
msgstr "SFTP服务器用户名"
#. module: auto_backup
#: model:ir.model.fields,field_description:auto_backup.field_db_backup__sftp_write
msgid "Write to external server with sftp"
msgstr "通过SFTP向外部服务器写入"
#. module: auto_backup
#: model:ir.model.fields.selection,name:auto_backup.selection__db_backup__backup_type__zip
msgid "Zip"
msgstr ""

View File

@@ -0,0 +1,2 @@
from . import db_backup

View File

@@ -0,0 +1,328 @@
import os
import datetime
import time
import shutil
import json
import tempfile
from odoo import models, fields, api, tools, _
from odoo.exceptions import Warning, AccessDenied
import odoo
import logging
_logger = logging.getLogger(__name__)
try:
import paramiko
except ImportError:
raise ImportError(
'This module needs paramiko to automatically write backups to the FTP through SFTP. '
'Please install paramiko on your system. (sudo pip3 install paramiko)')
class DbBackup(models.Model):
_name = 'db.backup'
_description = 'Backup configuration record'
def _get_db_name(self):
dbName = self._cr.dbname
return dbName
# Columns for local server configuration
host = fields.Char('Host', required=True, default='localhost')
port = fields.Char('Port', required=True, default=8069)
name = fields.Char('Database', required=True, help='Database you want to schedule backups for',
default=_get_db_name)
folder = fields.Char('Backup Directory', help='Absolute path for storing the backups', required='True',
default='/odoo/backups')
backup_type = fields.Selection([('zip', 'Zip'), ('dump', 'Dump')], 'Backup Type', required=True, default='zip')
autoremove = fields.Boolean('Auto. Remove Backups',
help='If you check this option you can choose to automaticly remove the backup '
'after xx days')
days_to_keep = fields.Integer('Remove after x days',
help="Choose after how many days the backup should be deleted. For example:\n"
"If you fill in 5 the backups will be removed after 5 days.",
required=True)
# Columns for external server (SFTP)
sftp_write = fields.Boolean('Write to external server with sftp',
help="If you check this option you can specify the details needed to write to a remote "
"server with SFTP.")
sftp_path = fields.Char('Path external server',
help='The location to the folder where the dumps should be written to. For example '
'/odoo/backups/.\nFiles will then be written to /odoo/backups/ on your remote server.')
sftp_host = fields.Char('IP Address SFTP Server',
help='The IP address from your remote server. For example 192.168.0.1')
sftp_port = fields.Integer('SFTP Port', help='The port on the FTP server that accepts SSH/SFTP calls.', default=22)
sftp_user = fields.Char('Username SFTP Server',
help='The username where the SFTP connection should be made with. This is the user on the '
'external server.')
sftp_password = fields.Char('Password User SFTP Server',
help='The password from the user where the SFTP connection should be made with. This '
'is the password from the user on the external server.')
days_to_keep_sftp = fields.Integer('Remove SFTP after x days',
help='Choose after how many days the backup should be deleted from the FTP '
'server. For example:\nIf you fill in 5 the backups will be removed after '
'5 days from the FTP server.',
default=30)
send_mail_sftp_fail = fields.Boolean('Auto. E-mail on backup fail',
help='If you check this option you can choose to automaticly get e-mailed '
'when the backup to the external server failed.')
email_to_notify = fields.Char('E-mail to notify',
help='Fill in the e-mail where you want to be notified that the backup failed on '
'the FTP.')
def test_sftp_connection(self, context=None):
self.ensure_one()
# Check if there is a success or fail and write messages
message_title = ""
message_content = ""
error = ""
has_failed = False
for rec in self:
ip_host = rec.sftp_host
port_host = rec.sftp_port
username_login = rec.sftp_user
password_login = rec.sftp_password
# Connect with external server over SFTP, so we know sure that everything works.
try:
s = paramiko.SSHClient()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
s.connect(ip_host, port_host, username_login, password_login, timeout=10)
sftp = s.open_sftp()
sftp.close()
message_title = _("Connection Test Succeeded!\nEverything seems properly set up for FTP back-ups!")
except Exception as e:
_logger.critical('There was a problem connecting to the remote ftp: %s', str(e))
error += str(e)
has_failed = True
message_title = _("Connection Test Failed!")
if len(rec.sftp_host) < 8:
message_content += "\nYour IP address seems to be too short.\n"
message_content += _("Here is what we got instead:\n")
finally:
if s:
s.close()
if has_failed:
raise Warning(message_title + '\n\n' + message_content + "%s" % str(error))
else:
raise Warning(message_title + '\n\n' + message_content)
@api.model
def schedule_backup(self):
conf_ids = self.search([])
for rec in conf_ids:
try:
if not os.path.isdir(rec.folder):
os.makedirs(rec.folder)
except:
raise
# Create name for dumpfile.
bkp_file = '%s_%s.%s' % (time.strftime('%Y_%m_%d_%H_%M_%S'), rec.name, rec.backup_type)
file_path = os.path.join(rec.folder, bkp_file)
try:
# try to backup database and write it away
fp = open(file_path, 'wb')
self._take_dump(rec.name, fp, 'db.backup', rec.backup_type)
fp.close()
except Exception as error:
_logger.debug(
"Couldn't backup database %s. Bad database administrator password for server running at "
"http://%s:%s" % (rec.name, rec.host, rec.port))
_logger.debug("Exact error from the exception: %s", str(error))
continue
# Check if user wants to write to SFTP or not.
if rec.sftp_write is True:
try:
# Store all values in variables
dir = rec.folder
path_to_write_to = rec.sftp_path
ip_host = rec.sftp_host
port_host = rec.sftp_port
username_login = rec.sftp_user
password_login = rec.sftp_password
_logger.debug('sftp remote path: %s', path_to_write_to)
try:
s = paramiko.SSHClient()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
s.connect(ip_host, port_host, username_login, password_login, timeout=20)
sftp = s.open_sftp()
except Exception as error:
_logger.critical('Error connecting to remote server! Error: %s', str(error))
try:
sftp.chdir(path_to_write_to)
except IOError:
# Create directory and subdirs if they do not exist.
current_directory = ''
for dirElement in path_to_write_to.split('/'):
current_directory += dirElement + '/'
try:
sftp.chdir(current_directory)
except:
_logger.info('(Part of the) path didn\'t exist. Creating it now at %s',
current_directory)
# Make directory and then navigate into it
sftp.mkdir(current_directory, 777)
sftp.chdir(current_directory)
pass
sftp.chdir(path_to_write_to)
# Loop over all files in the directory.
for f in os.listdir(dir):
if rec.name in f:
fullpath = os.path.join(dir, f)
if os.path.isfile(fullpath):
try:
sftp.stat(os.path.join(path_to_write_to, f))
_logger.debug(
'File %s already exists on the remote FTP Server ------ skipped', fullpath)
# This means the file does not exist (remote) yet!
except IOError:
try:
sftp.put(fullpath, os.path.join(path_to_write_to, f))
_logger.info('Copying File % s------ success', fullpath)
except Exception as err:
_logger.critical(
'We couldn\'t write the file to the remote server. Error: %s', str(err))
# Navigate in to the correct folder.
sftp.chdir(path_to_write_to)
_logger.debug("Checking expired files")
# Loop over all files in the directory from the back-ups.
# We will check the creation date of every back-up.
for file in sftp.listdir(path_to_write_to):
if rec.name in file:
# Get the full path
fullpath = os.path.join(path_to_write_to, file)
# Get the timestamp from the file on the external server
timestamp = sftp.stat(fullpath).st_mtime
createtime = datetime.datetime.fromtimestamp(timestamp)
now = datetime.datetime.now()
delta = now - createtime
# If the file is older than the days_to_keep_sftp (the days to keep that the user filled in
# on the Odoo form it will be removed.
if delta.days >= rec.days_to_keep_sftp:
# Only delete files, no directories!
if ".dump" in file or '.zip' in file:
_logger.info("Delete too old file from SFTP servers: %s", file)
sftp.unlink(file)
# Close the SFTP session.
sftp.close()
s.close()
except Exception as e:
try:
sftp.close()
s.close()
except:
pass
_logger.error('Exception! We couldn\'t back up to the FTP server. Here is what we got back '
'instead: %s', str(e))
# At this point the SFTP backup failed. We will now check if the user wants
# an e-mail notification about this.
if rec.send_mail_sftp_fail:
try:
ir_mail_server = self.env['ir.mail_server'].search([], order='sequence asc', limit=1)
message = "Dear,\n\nThe backup for the server " + rec.host + " (IP: " + rec.sftp_host + \
") failed. Please check the following details:\n\nIP address SFTP server: " + \
rec.sftp_host + "\nUsername: " + rec.sftp_user + \
"\n\nError details: " + tools.ustr(e) + \
"\n\nWith kind regards"
catch_all_domain = self.env["ir.config_parameter"].sudo().get_param("mail.catchall.domain")
response_mail = "auto_backup@%s" % catch_all_domain if catch_all_domain else self.env.user.partner_id.email
msg = ir_mail_server.build_email(response_mail, [rec.email_to_notify],
"Backup from " + rec.host + "(" + rec.sftp_host +
") failed",
message)
ir_mail_server.send_email(msg)
except Exception:
pass
# Remove all old files (on local server) in case this is configured..
if rec.autoremove:
directory = rec.folder
# Loop over all files in the directory.
for f in os.listdir(directory):
fullpath = os.path.join(directory, f)
# Only delete the ones wich are from the current database
# (Makes it possible to save different databases in the same folder)
if rec.name in fullpath:
timestamp = os.stat(fullpath).st_ctime
createtime = datetime.datetime.fromtimestamp(timestamp)
now = datetime.datetime.now()
delta = now - createtime
if delta.days >= rec.days_to_keep:
# Only delete files (which are .dump and .zip), no directories.
if os.path.isfile(fullpath) and (".dump" in f or '.zip' in f):
_logger.info("Delete local out-of-date file: %s", fullpath)
os.remove(fullpath)
# This is more or less the same as the default Odoo function at
# https://github.com/odoo/odoo/blob/e649200ab44718b8faefc11c2f8a9d11f2db7753/odoo/service/db.py#L209
# The main difference is that we do not do have a wrapper for the function check_db_management_enabled here and
# that we authenticate based on the cron its user id and by checking if we have 'db.backup' defined in the function
# call. Since this function is called from the cron and since we have these security checks on model and on user_id
# its pretty impossible to hack any way to take a backup. This allows us to disable the Odoo database manager
# which is a MUCH safer way
def _take_dump(self, db_name, stream, model, backup_format='zip'):
"""Dump database `db` into file-like object `stream` if stream is None
return a file object with the dump """
cron_user_id = self.env.ref('jikimo_auto_backup.backup_scheduler').user_id.id
if self._name != 'db.backup' or cron_user_id != self.env.user.id:
_logger.error('Unauthorized database operation. Backups should only be available from the cron job.')
raise AccessDenied()
_logger.info('DUMP DB: %s format %s', db_name, backup_format)
cmd = ['pg_dump', '--no-owner']
cmd.append(db_name)
if backup_format == 'zip':
with tempfile.TemporaryDirectory() as dump_dir:
filestore = odoo.tools.config.filestore(db_name)
if os.path.exists(filestore):
shutil.copytree(filestore, os.path.join(dump_dir, 'filestore'))
with open(os.path.join(dump_dir, 'manifest.json'), 'w') as fh:
db = odoo.sql_db.db_connect(db_name)
with db.cursor() as cr:
json.dump(self._dump_db_manifest(cr), fh, indent=4)
cmd.insert(-1, '--file=' + os.path.join(dump_dir, 'dump.sql'))
odoo.tools.exec_pg_command(*cmd)
if stream:
odoo.tools.osutil.zip_dir(dump_dir, stream, include_dir=False, fnct_sort=lambda file_name: file_name != 'dump.sql')
else:
t=tempfile.TemporaryFile()
odoo.tools.osutil.zip_dir(dump_dir, t, include_dir=False, fnct_sort=lambda file_name: file_name != 'dump.sql')
t.seek(0)
return t
else:
cmd.insert(-1, '--format=c')
stdin, stdout = odoo.tools.exec_pg_command_pipe(*cmd)
if stream:
shutil.copyfileobj(stdout, stream)
else:
return stdout
def _dump_db_manifest(self, cr):
pg_version = "%d.%d" % divmod(cr._obj.connection.server_version / 100, 100)
cr.execute("SELECT name, latest_version FROM ir_module_module WHERE state = 'installed'")
modules = dict(cr.fetchall())
manifest = {
'odoo_dump': '1',
'db_name': cr.dbname,
'version': odoo.release.version,
'version_info': odoo.release.version_info,
'major_version': odoo.release.major_version,
'pg_version': pg_version,
'modules': modules,
}
return manifest

View File

@@ -0,0 +1 @@
# pip3 install paramiko

View File

@@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
admin_access, db_backup admin access,model_db_backup,base.group_no_one,1,1,1,1
admin_security_rule, Model db_backup admin access,model_db_backup,jikimo_auto_backup.group_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 admin_access db_backup admin access model_db_backup base.group_no_one 1 1 1 1
3 admin_security_rule Model db_backup admin access model_db_backup jikimo_auto_backup.group_manager 1 1 1 1

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record model="ir.module.category" id="module_management">
<field name="name">Auto backup access</field>
<field name="description">User access level for this module</field>
<field name="sequence">3</field>
</record>
<record id="group_manager" model="res.groups">
<field name="name">Manager</field>
<field name="category_id" ref="jikimo_auto_backup.module_management"/>
</record>
</data>
</odoo>

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

View File

@@ -0,0 +1,95 @@
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan">Automated backups</h2>
<h3 class="oe_slogan">A tool for all your back-ups, internal and external!</h3>
</div>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<img src="overview.png">
</div>
</div>
<div class="oe_span6">
<p class="oe_mt32">
Keep your Odoo data safe with this module. Take automated back-ups, remove them automatically
and even write them to an external server through an encrypted tunnel.
You can even specify how long local backups and external backups should be kept, automatically!
</p>
<div class="oe_centeralign oe_websiteonly">
<a href="http://www.openerp.com/start?app=mail" class="oe_button oe_big oe_tacky">Start your <span class="oe_emph">free</span> trial</a>
</div>
</div>
</div>
</section>
<!-- Second block -->
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan">Connect with an FTP Server</h2>
<h3 class="oe_slogan">Keep your data safe, through an SSH tunnel!</h3>
<div class="oe_span6">
<p class="oe_mt32">
Want to go even further and write your backups to an external server?
You can with this module! Specify the credentials to the server, specify a path and everything will be backed up automatically. This is done through an SSH (encrypted) tunnel, thanks to pysftp, so your data is safe!
</p>
</div>
<div class="oe_span6">
<div class="oe_row_img oe_centered">
<img class="oe_picture oe_screenshot" src="terminalssh.png">
</div>
</div>
</div>
</section>
<!--Third block -->
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan">Test connection</h2>
<h3 class="oe_slogan">Checks your credentials in one click</h3>
</div>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<img src="testconnection.png">
<img src="testconnectionfailed.png">
</div>
</div>
<div class="oe_span6">
<p class="oe_mt32">
Want to make sure if the connection details are correct and if Odoo can automatically write them to the remote server? Simply click on the 'Test SFTP Connection' button and you will get message telling you if everything is OK, or what is wrong!
</p>
</div>
</div>
</section>
<!-- Fourth block -->
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan">E-mail on backup failure</h2>
<h3 class="oe_slogan">Stay informed of problems, automatically!</h3>
<div class="oe_span6">
<p class="oe_mt32">
Do you want to know if the database backup failed? Check the checkbox 'Auto. E-mail on backup fail' and fill in your e-mail.
Every time a backup fails you will get an e-mail in your mailbox with technical details.
</p>
</div>
<div class="oe_span6">
<div class="oe_row_img oe_centered">
<img class="oe_picture oe_screenshot" src="emailnotification.png">
</div>
</div>
</div>
</section>
<!--Fifth block -->
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan">Contact / Support</h2>
<h3 class="oe_slogan">Need help or want extra features?</h3>
</div>
<div class="oe_span6">
<p class="oe_mt32">
Need help with the configuration or want this module to have more functionalities?
Please create a bug report <a href="https://github.com/Yenthe666/auto_backup/issues">on the Github issue tracker</a>
</p>
</div>
</div>
</section>

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@@ -0,0 +1,105 @@
<odoo>
<record id="view_backup_config_form" model="ir.ui.view">
<field name="name">db.backup.form</field>
<field name="model">db.backup</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Back-up view">
<sheet>
<group col="4" colspan="4">
<separator col="2" string="Local backup configuration"/>
</group>
<group name="configuration">
<field name="host" colspan="2"/>
<field name="name"/>
<field name="port"/>
<field name="backup_type"/>
<field name="folder"/>
<field name="autoremove"/>
<field name="days_to_keep" attrs="{'invisible': [('autoremove','=',False)]}"/>
</group>
<group name="allow_stfp" col="4" colspan="4">
<separator col="2" string="SFTP"/>
</group>
<div style="width:50%;border-radius:10px;margin: 10px 0px;padding:15px 10px 15px 10px;
background-repeat: no-repeat;background-position: 10px center;color: #9F6000;
background-color: #FEEFB3;"
attrs="{'invisible': [('sftp_write','=',False)]}">
<b>Warning:</b>
Use SFTP with caution! This writes files to external servers under the path you specify.
</div>
<group name="sftp_configuration">
<field name="sftp_write"/>
<field name="sftp_host"
attrs="{'invisible':[('sftp_write', '=', False)],'required':[('sftp_write', '=', True)]}"/>
<field name="sftp_port"
attrs="{'invisible':[('sftp_write', '=', False)],'required':[('sftp_write', '=', True)]}"/>
<field name="sftp_user"
attrs="{'invisible':[('sftp_write', '=', False)], 'required':[('sftp_write', '=', True)]}"/>
<field name="sftp_password"
attrs="{'invisible':[('sftp_write', '=', False)],'required': [('sftp_write', '=', True)]}"
password="True"/>
<field name="sftp_path"
attrs="{'invisible':[('sftp_write', '==', False)],'required':[('sftp_write', '==', True)]}"
placeholder="For example: /odoo/backups/"/>
<field name="days_to_keep_sftp"
attrs="{'invisible': [('sftp_write', '=', False)], 'required': [('sftp_write', '=', True)]}"/>
<field name="send_mail_sftp_fail" attrs="{'invisible': [('sftp_write','=',False)]}"/>
<field name="email_to_notify"
attrs="{'invisible':['|',('send_mail_sftp_fail', '==', False), ('sftp_write', '=', False)], 'required': [('send_mail_sftp_fail', '=', True)]}"/>
<button name="test_sftp_connection" type="object"
attrs="{'invisible': [('sftp_write','=',False)]}" string="Test SFTP Connection"/>
</group>
<separator string="Help" colspan="2"/>
<div name="configuration_details">
This configures the scheduler for automatic backup of the given database running on given host
at given port on regular intervals.
<br/>
Automatic backups of the database can be scheduled as follows:
<ol>
<li>
Go to Settings / Technical / Automation / Scheduled Actions.
</li>
<li>
Search the action named 'Backup scheduler'.
</li>
<li>
Set the scheduler to active and fill in how often you want backups generated.
</li>
</ol>
<p style="font-size:18px;">
Need more help?
<a href="https://github.com/Yenthe666/auto_backup/issues">Contact me!</a>
</p>
</div>
</sheet>
</form>
</field>
</record>
<record id="view_backup_config_tree" model="ir.ui.view">
<field name="name">db.backup.tree</field>
<field name="model">db.backup</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree>
<field name='host'/>
<field name='port'/>
<field name='name'/>
<field name='folder'/>
<field name="autoremove"/>
<field name="sftp_host"/>
</tree>
</field>
</record>
<record id="action_backup" model="ir.actions.act_window">
<field name="name">Configure back-ups</field>
<field name="res_model">db.backup</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_backup_config_tree"/>
</record>
<menuitem id="auto_backup_menu" name="Back-ups" parent="base.menu_custom"/>
<menuitem parent="auto_backup_menu" action="action_backup" id="backup_conf_menu"/>
</odoo>

View File

@@ -5,6 +5,7 @@ import {patch} from '@web/core/utils/patch';
import {_t} from "@web/core/l10n/translation";
import {FormStatusIndicator} from "@web/views/form/form_status_indicator/form_status_indicator";
import {ListRenderer} from "@web/views/list/list_renderer";
// import {StatusBarField} from "@web/views/fields/statusbar/statusbar_field";
import {Field} from "@web/views/fields/field";
@@ -150,6 +151,37 @@ patch(ListRenderer.prototype, 'jikimo_frontend.ListRenderer', {
}
})
// 根据进度条设置水印
// const statusbar_params = {
// '已完工': 'bg-primary',
// '完成': 'bg-primary',
// '采购订单': 'bg-primary',
// '作废': 'bg-danger',
// '封存(报废)': 'bg-danger',
// }
// patch(StatusBarField.prototype, 'jikimo_frontend.StatusBarField', {
// setup() {
// owl.onMounted(this.ribbons);
// return this._super(...arguments);
// },
// ribbons() {
// try {
// const dom = $('.o_form_sheet.position-relative')
// const status = statusbar_params[this.currentName]
// if(status && dom.length) {
// dom.prepend(`<div class="o_widget o_widget_web_ribbon">
// <div class="ribbon ribbon-top-right">
// <span class="bg-opacity-75 ${status}" title="">${this.currentName}</span>
// </div>
// </div>`)
// }
// } catch (e) {
// console.log(e)
// }
// }
// })
$(function () {
document.addEventListener('click', function () {
const dom = $('.o_form_status_indicator_buttons ')

View File

@@ -490,5 +490,45 @@ div:has(.o_required_modifier) > label::before {
transform: translateY(-50%);
}
.o_list_renderer .o_list_table tfoot .o_list_number {
text-align: left;
}
text-align: left !important;
}
.o_field_widget.o_readonly_modifier.o_required_modifier.o_field_many2one[name=production_id] .o_form_uri {
font-weight: bold;
font-size: 20px;
}
// 修改 【批量排程】【配送】 按钮UI
.btn-secondary {
color: #fff;
background-color: #4A4F59;
border-color: #4A4F59;
}
// 功能刀具组装单 弹窗样式
.o_horizontal_separator.mt-4.mb-3.text-uppercase.fw-bolder.small ~ div.col-lg-6 .o_inner_group.col-lg-6 {
width: 100%;
}
.o_horizontal_separator.mt-4.mb-3.text-uppercase.fw-bolder.small ~ div .o_inner_group .o_wrap_field.d-flex.d-sm-contents.flex-column{
display: flex!important;
flex-direction: row!important;
input {
border-bottom: 1px solid;
}
}
// 设置表格横向滚动
.o_list_renderer.o_renderer {
max-width: 100%;
overflow-x: auto;
}
// 设置表单页面label文本不换行
.o_form_view .o_group .o_wrap_label .o_form_label {
white-space: nowrap;
}
// 修复表格内容覆盖表头bug
.o_list_renderer .o_list_table tbody th {
position: unset;
}

View File

@@ -301,53 +301,27 @@ def unlink(self):
# This is used to restrict the access right to unlink a record
current_model_id = self.env['ir.model'].sudo().search(
[('model', '=', self._name)]).id
# access_right_rec = self.env['access.right'].sudo().search_read(
# [('model_id', '=', current_model_id)], ['model_id', 'is_delete',
# 'groups_id'])
# if access_right_rec and not self.env.is_admin():
# for rec in access_right_rec:
# group_name = self.env['ir.model.data'].sudo().search([
# ('model', '=', 'res.groups'),
# ('res_id', '=', rec['groups_id'][0])
# ]).name
# module_name = self.env['ir.model.data'].sudo().search([
# ('model', '=', 'res.groups'),
# ('res_id', '=', rec['groups_id'][0])
# ]).module
# group = module_name + "." + group_name
# if self.env.user.has_group(group):
# if rec['is_delete']:
# raise UserError(_('You are restricted from performing this'
# ' operation. Please contact the'
# ' administrator.'))
# 检查 'access.right' 模型是否存在于环境中
if 'access.right' in self.env:
# current_model_id = self.env['ir.model'].sudo().search([('model', '=', self._name)]).id
access_right_rec = self.env['access.right'].sudo().search_read(
[('model_id', '=', current_model_id)], ['model_id', 'is_delete', 'groups_id']
)
if access_right_rec and not self.env.is_admin():
for rec in access_right_rec:
group_data = self.env['ir.model.data'].sudo().search_read(
[('model', '=', 'res.groups'), ('res_id', '=', rec['groups_id'][0])],
['name', 'module']
)
if group_data:
group_name = group_data[0]['name']
module_name = group_data[0]['module']
group_xml_id = f"{module_name}.{group_name}"
if self.env.user.has_group(group_xml_id) and rec['is_delete']:
raise UserError(
_('You are restricted from performing this operation. Please contact the administrator.'))
else:
# 如果 'access.right' 模型不存在,可以在这里定义备选逻辑
pass
access_right_rec = self.env['access.right'].sudo().search_read(
[('model_id', '=', current_model_id)], ['model_id', 'is_delete',
'groups_id'])
if access_right_rec and not self.env.is_admin():
for rec in access_right_rec:
group_name = self.env['ir.model.data'].sudo().search([
('model', '=', 'res.groups'),
('res_id', '=', rec['groups_id'][0])
]).name
module_name = self.env['ir.model.data'].sudo().search([
('model', '=', 'res.groups'),
('res_id', '=', rec['groups_id'][0])
]).module
group = module_name + "." + group_name
if self.env.user.has_group(group):
if rec['is_delete']:
raise UserError(_('You are restricted from performing this'
' operation. Please contact the'
' administrator.'))
return True
BaseModel._create = _create
BaseModel.unlink = unlink
BaseModel.unlink = unlink

View File

@@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
from . import controllers
from . import models
from . import wizard

View File

@@ -0,0 +1,39 @@
# -*- coding: utf-8 -*-
{
'name': "jikimo_system_order",
'summary': """
系统工单""",
'description': """
用于处理针对系统的工作任务;
员工可以通过系统工单发起申请,由维护人员处理以后,填写处理结果。
""",
'author': "机企猫",
'website': "http://www.jikimo.com",
# Categories can be used to filter modules in modules listing
# Check https://github.com/odoo/odoo/blob/master/odoo/addons/base/module/module_data.xml
# for the full list
'category': 'Uncategorized',
'version': '0.1',
# any module necessary for this one to work correctly
'depends': ['base','mail'],
# always loaded
'data': [
'security/account_security.xml',
'security/ir.model.access.csv',
'wizard/order_wizard.xml',
'views/notice_user_config.xml',
'views/yizuo_system_order_view.xml',
'views/work_order_number.xml',
'views/res_config_settings_views.xml',
],
# only loaded in demonstration mode
'demo': [
'demo/demo.xml',
],
}

View File

@@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import controllers

View File

@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
from odoo import http
# class TopSystemOrder(http.Controller):
# @http.route('/jikimo_system_order/jikimo_system_order/', auth='public')
# def index(self, **kw):
# return "Hello, world"
# @http.route('/jikimo_system_order/jikimo_system_order/objects/', auth='public')
# def list(self, **kw):
# return http.request.render('jikimo_system_order.listing', {
# 'root': '/jikimo_system_order/jikimo_system_order',
# 'objects': http.request.env['jikimo_system_order.jikimo_system_order'].search([]),
# })
# @http.route('/jikimo_system_order/jikimo_system_order/objects/<model("jikimo_system_order.jikimo_system_order"):obj>/', auth='public')
# def object(self, obj, **kw):
# return http.request.render('jikimo_system_order.object', {
# 'object': obj
# })

View File

@@ -0,0 +1,30 @@
<odoo>
<data>
<!-- -->
<!-- <record id="object0" model="jikimo_system_order.jikimo_system_order"> -->
<!-- <field name="name">Object 0</field> -->
<!-- <field name="value">0</field> -->
<!-- </record> -->
<!-- -->
<!-- <record id="object1" model="jikimo_system_order.jikimo_system_order"> -->
<!-- <field name="name">Object 1</field> -->
<!-- <field name="value">10</field> -->
<!-- </record> -->
<!-- -->
<!-- <record id="object2" model="jikimo_system_order.jikimo_system_order"> -->
<!-- <field name="name">Object 2</field> -->
<!-- <field name="value">20</field> -->
<!-- </record> -->
<!-- -->
<!-- <record id="object3" model="jikimo_system_order.jikimo_system_order"> -->
<!-- <field name="name">Object 3</field> -->
<!-- <field name="value">30</field> -->
<!-- </record> -->
<!-- -->
<!-- <record id="object4" model="jikimo_system_order.jikimo_system_order"> -->
<!-- <field name="name">Object 4</field> -->
<!-- <field name="value">40</field> -->
<!-- </record> -->
<!-- -->
</data>
</odoo>

View File

@@ -0,0 +1,7 @@
# -*- coding: utf-8 -*-
from . import constant
from . import order_classify
from . import system_work_order
from . import work_order_template
from . import res_config_setting

View File

@@ -0,0 +1,7 @@
# -*- coding: utf-8 -*-
# 工单状态
STATE_SELECTION = [('draft', u'草稿'), ('unconfirmed', u'待确认'), ('pending', u'待处理'),
('processed', u'已处理待评分'), ('completed', u'已完成'), ('closed', u'已关闭')]
GRADE = [('1', '1非常不满意'), ('2', '2不满意'), ('3', '3一般'), ('4', '4满意'), ('5', '5非常满意')]

View File

@@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api
from odoo.exceptions import ValidationError
class OrderClassify(models.Model):
_name = 'order.classify'
_order = 'sequence, name'
@api.constrains('name')
def check_base_name(self):
"""类型名称唯一"""
name_obj = self.env['order.classify'].search([('name', '=', self.name)])
if len(name_obj) >= 2:
raise ValidationError(u'该类型已存在')
# 名称
name = fields.Char(string=u'名称', size=20)
# 排序
sequence = fields.Integer(default=10)
# 是否有效
state = fields.Boolean(default=True, string='是否有效')

View File

@@ -0,0 +1,32 @@
# -*- coding: utf-8 -*-
import logging
from odoo import api, fields, models, _
_logger = logging.getLogger(__name__)
class ResModelWeConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
lost_agent_id = fields.Char('企微通知应用ID')
@api.model
def get_values(self):
"""
重载获取参数的方法,参数都存在系统参数中
:return:
"""
values = super(ResModelWeConfigSettings, self).get_values()
config = self.env['ir.config_parameter'].sudo()
lost_agent_id = config.get_param('lost_agent_id', default='')
values.update(
lost_agent_id=lost_agent_id,
)
return values
def set_values(self):
super(ResModelWeConfigSettings, self).set_values()
ir_config = self.env['ir.config_parameter'].sudo()
ir_config.set_param("lost_agent_id", self.lost_agent_id or "")

View File

@@ -0,0 +1,183 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api
from odoo.exceptions import ValidationError
from odoo import exceptions
from .constant import STATE_SELECTION, GRADE
import datetime
import logging
class SystemWorkOrder(models.Model):
_name = 'system.work.order'
_inherit = ['mail.thread', 'mail.activity.mixin']
_order = 'date desc'
_description = u'系统工单'
_rec_name = 'order_number'
def get_is_technicist(self):
self._cr.execute(
"select u.id from res_users u left join res_groups_users_rel r on r.uid = u.id where r.gid in (select g.id from res_groups g where g.name = '技术员权限') and u.id ='%s'",
(self.env.user.id,))
hr = self._cr.dictfetchall()
if len(hr) > 0:
return True
else:
return False
# def get_user_department_id(self):
# """根据用户id系统员工id"""
# employee = self.env['hr.employee'].sudo().search([('user_id', '=', self.env.uid)], limit=1)
# if employee:
# if len(employee) > 0:
# if not employee.department_id:
# raise exceptions.Warning(u'您当前使用的用户没有所属部门')
# return employee.department_id
# else:
# return False
# else:
# raise exceptions.Warning(u'您当前使用的用户没有关联员工')
@api.onchange('order_template_id')
def get_title(self):
"""选择模板自动填充"""
if self.order_template_id:
self.title = self.order_template_id.title_template
self.text = self.order_template_id.text_template
# 工单编号
order_number = fields.Char(string=u'工单编号', default='/')
# 紧急程度
urgency_degree = fields.Selection([('0', u'0星'), ('1', u'一星'), ('2', u'二星'), ('3', u'三星'), ('4', u'四星'),
('5', u'五星')], string=u'紧急程度', help='五星为最紧急!', default='5')
# 工单分类(可以配置,并调整优先级)
order_type = fields.Many2one('order.classify', string=u'工单分类', domain=[('state', '=', True)])
# 发起人所属公司(res.company)
initiator_company_id = fields.Many2one('res.company', string=u'发起人所属公司', default=lambda self: self.env.user.company_id)
# 发起人部门(hr.department)
# initiator_department_id = fields.Many2one('hr.department', string=u'发起人部门', default=get_user_department_id)
# 发起人(hr.employee)
initiator_id = fields.Many2one('res.users', string=u'发起人', default=lambda self: self.env.user)
# 发起时间
date = fields.Datetime(string=u'发起时间', default=lambda self: fields.datetime.now())
# 确认人
confirm_id = fields.Many2one('res.users', string=u'确认人')
# 确认日期
confirmation_date = fields.Datetime(string=u'确认时间')
# 模板
order_template_id = fields.Many2one('work.order.template', string=u'模板', domain=[('state', '=', True)])
# 标题
title = fields.Char(string=u'标题')
# 正文
text = fields.Html(string=u'正文')
# 状态[草稿\待确认\待处理\已处理\已关闭]
state = fields.Selection(STATE_SELECTION, default='draft', string=u'状态')
# 关闭原因
close_cause = fields.Text(string=u'关闭问题原因')
# 关闭时间
close_time = fields.Datetime(string=u'关闭问题时间')
# 关闭人
close_user_id = fields.Many2one('res.users', string=u'关闭人')
# 解决人
solve_people_id = fields.Many2one('res.users', string=u'解决人')
# 用户实际问题
users_problem = fields.Text(string=u'用户实际问题')
# 最终解决方案
solution = fields.Text(string=u'最终解决方案')
# 判断是否为技术人员
# is_technicist = fields.Boolean(string=u'是否为技术人员', default=get_is_technicist)
# 打分
grade = fields.Selection(GRADE, string=u'评分')
# 评价按钮的显示
is_display = fields.Boolean('控制显示评价按钮', compute='compute_is_display')
def compute_is_display(self):
for item in self:
if item.state == 'processed' and self.env.user.id == item.initiator_id.id:
item.is_display = True
else:
item.is_display = False
@api.onchange('order_type')
def _onchange_order_type(self):
self.order_template_id = None
self.title = None
self.text = None
@api.model
def create(self, vals):
# 创建编号
if vals.get('order_number', '/') == '/':
vals['order_number'] = self.env['ir.sequence'].get('system.work.order') or '/'
return super(SystemWorkOrder, self).create(vals)
def do_draft(self, order=None):
"""状态草稿"""
bill = self
if order:
bill = order
if bill.state == 'unconfirmed':
state_remark = u'待确认 --> 草稿'
# bill.message_post(u'操作人:%s操作时间%s状态变更过程%s' % (self.env.user.name,
# (datetime.datetime.now() + datetime.timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S'), state_remark))
bill.state = 'draft'
def do_unconfirmed(self):
"""状态待确认"""
if self.state == 'draft':
state_remark = u'草稿 --> 待确认'
# self.message_post(u'操作人:%s操作时间%s状态变更过程%s' % (
# self.env.user.name,
# (datetime.datetime.now() + datetime.timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S'), state_remark))
self.state = 'unconfirmed'
# 获取通知人
objs = self.env['system.order.notice'].search([])
user_ids = objs.notice_user_ids.filtered(lambda item: item.we_employee_id not in ['', False])
we_employee_ids = user_ids.mapped('we_employee_id')
lost_agent_id = self.env['ir.config_parameter'].sudo().get_param('lost_agent_id')
wechat = self.env['we.config'].sudo().get_wechat(agent_id=lost_agent_id)
# agent_id, user_ids, content
content = """您有一张工单<font color=\"warning\">待处理</font>:**工单标题:{2}**
>创建人:{1}
>提交时间:{3}
>紧急程度:{0}
请查看工单消息,并及时处理!
""".format(self.urgency_degree,
self.initiator_id.name, self.title, (self.date + datetime.timedelta(hours=8)).strftime('%Y-%m-%d %H:%M'))
for we_employee_id in we_employee_ids:
try:
wechat.message.send_markdown(agent_id=lost_agent_id, user_ids=we_employee_id, content=content)
except Exception as e:
logging.error('工单处理发送消息异常%s' % str(e))
return True
def do_pending(self):
"""状态待处理"""
if self.state == 'unconfirmed':
state_remark = u'待确认 --> 待处理'
# self.message_post(u'操作人:%s操作时间%s状态变更过程%s' % (
# self.env.user.name,
# (datetime.datetime.now() + datetime.timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S'), state_remark))
self.state = 'pending'
self.confirm_id = self.env.user
self.confirmation_date = fields.datetime.now()
return True
def urned_off(self):
"""状态关闭"""
if self.close_cause:
self.state = 'closed'
self.close_time = fields.datetime.now()
else:
raise ValidationError(u'请注明关闭原因')
return True
def unlink(self):
for item in self:
if item.state != "draft":
raise ValidationError(u'只能删除状态为【草稿】的工单。')
elif item.env.uid != item.initiator_id.id:
raise ValidationError(u'非本人不能删除')
else:
super(SystemWorkOrder, item).unlink()

View File

@@ -0,0 +1,38 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class WorkOrderTemplate(models.Model):
_name = 'work.order.template'
_order = 'num'
# 编号
num = fields.Char(string=u'编号', default='/')
# 名称
name = fields.Char(string=u'模板名称', required="1")
# 分类
work_order_type = fields.Many2one('order.classify', string=u'系统工单分类', domain=[('state', '=', True)])
# 模板标题
title_template = fields.Char(string=u'模板标题')
# 模板正文
text_template = fields.Html(string=u'模板正文')
# 模板说明
template_explain = fields.Text(string=u'模板说明')
# 是否有效
state = fields.Boolean(default=True, string=u'是否有效')
@api.model
def create(self, vals):
# 创建编号
if vals.get('num', '/') == '/':
vals['num'] = self.env['ir.sequence'].get('work.order.template') or '/'
return super(WorkOrderTemplate, self).create(vals)
class SystemOrderNotice(models.Model):
_name = 'system.order.notice'
_description = '工单处理人设置'
notice_user_ids = fields.Many2many('res.users', string='工单处理人')

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="0"> <!-- noupdate表示当模块升级时是否更新本条数据-->
<!--运维权限组-->
<record id="group_operations_permissions_rwc" model="res.groups">
<field name="name">运维权限</field>
</record>
<record id="system_order_user_rule" model="ir.rule">
<field name="name">用户访问工单信息</field>
<field name="model_id" ref="model_system_work_order"/>
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
<field name="domain_force">[('initiator_id', '=', user.id)]</field>
</record>
<record id="system_order_group_operations_rule" model="ir.rule">
<field name="name">运维访问工单信息</field>
<field name="model_id" ref="model_system_work_order"/>
<field name="groups" eval="[(4, ref('jikimo_system_order.group_operations_permissions_rwc'))]"/>
<field name="domain_force">[(1, '=', 1)]</field>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,16 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
inside_system_order_classify_r,jikimo_system_order.order_classify,model_order_classify,,1,1,1,1
inside_system_work_order_rc,jikimo_system_order.system_work_order,model_system_work_order,,1,1,1,1
inside_work_order_template_r,jikimo_system_order.work_order_template,model_work_order_template,,1,1,1,1
inside_system_order_classify_rwc,jikimo_system_order.order_classify,model_order_classify,group_operations_permissions_rwc,1,1,1,0
inside_system_work_order_rwc,jikimo_system_order.system_work_order,model_system_work_order,group_operations_permissions_rwc,1,1,1,0
inside_work_order_template_rwc,jikimo_system_order.work_order_template,model_work_order_template,group_operations_permissions_rwc,1,1,1,0
order_close_wizard_group_user,jikimo_system_order.order_close_wizard,model_order_close_wizard,base.group_user,1,1,1,1
order_other_wizard_group_user,jikimo_system_order.order_other_wizard,model_order_other_wizard,base.group_user,1,1,1,1
order_technician_wizard_group_user,jikimo_system_order.order_technician_wizard,model_order_technician_wizard,base.group_user,1,1,1,1
system_work_order_wizard_group_user,jikimo_system_order.system_work_order_wizard,model_system_work_order_wizard,base.group_user,1,1,1,1
system_order_notice_group_user,jikimo_system_order.system_order_notice,model_system_order_notice,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 inside_system_order_classify_r jikimo_system_order.order_classify model_order_classify 1 1 1 1
3 inside_system_work_order_rc jikimo_system_order.system_work_order model_system_work_order 1 1 1 1
4 inside_work_order_template_r jikimo_system_order.work_order_template model_work_order_template 1 1 1 1
5 inside_system_order_classify_rwc jikimo_system_order.order_classify model_order_classify group_operations_permissions_rwc 1 1 1 0
6 inside_system_work_order_rwc jikimo_system_order.system_work_order model_system_work_order group_operations_permissions_rwc 1 1 1 0
7 inside_work_order_template_rwc jikimo_system_order.work_order_template model_work_order_template group_operations_permissions_rwc 1 1 1 0
8 order_close_wizard_group_user jikimo_system_order.order_close_wizard model_order_close_wizard base.group_user 1 1 1 1
9 order_other_wizard_group_user jikimo_system_order.order_other_wizard model_order_other_wizard base.group_user 1 1 1 1
10 order_technician_wizard_group_user jikimo_system_order.order_technician_wizard model_order_technician_wizard base.group_user 1 1 1 1
11 system_work_order_wizard_group_user jikimo_system_order.system_work_order_wizard model_system_work_order_wizard base.group_user 1 1 1 1
12 system_order_notice_group_user jikimo_system_order.system_order_notice model_system_order_notice base.group_user 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data>
# ---------- 工单通知处理人设置 ------------
<record model="ir.ui.view" id="tree_system_order_notice_view">
<field name="name">tree.system.order.notice</field>
<field name="model">system.order.notice</field>
<field name="arch" type="xml">
<tree string="工单处理人设置" editable="top">
<field name="notice_user_ids" widget="many2many_tags" required="1" options="{'no_create': True, 'no_edit': True}"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="search_system_order_notice_view">
<field name="name">search.system.order.notice</field>
<field name="model">system.order.notice</field>
<field name="arch" type="xml">
<search string="工单处理人设置">
<field name="notice_user_ids" string="模糊搜索"
filter_domain="[('notice_user_ids', 'ilike', self)]"/>
<separator></separator>
<field name="notice_user_ids" string="处理人"/>
</search>
</field>
</record>
<record model="ir.actions.act_window" id="action_system_order_notice_view">
<field name="name">工单处理人</field>
<field name="res_model">system.order.notice</field>
<field name="view_mode">tree</field>
<field name="domain">[]</field>
<field name="context">{}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
[工单处理人] 还没有哦!点左上角的[创建]按钮,沙发归你了!
</p>
<p>
</p>
</field>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="res_config_settings_we_view_form_inherit" model="ir.ui.view">
<field name="name">res.config.settings.we.view.form.inherit.bpm</field>
<field name="model">res.config.settings</field>
<field name="inherit_id" ref="base.res_config_settings_view_form"/>
<field name="arch" type="xml">
<xpath expr="//div[hasclass('app_settings_block')]/div[6]" position="after">
<div>
<h2>企微通知应用ID</h2>
<div class="row mt16 o_settings_container" id="jd_api">
<div class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane"/>
<div class="o_setting_right_pane">
<div class="text-muted">
<label for="lost_agent_id"/>
<field name="lost_agent_id"/>
</div>
</div>
</div>
</div>
</div>
</xpath>
</field>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="True">
<!-- 工单流水号 -->
<record id="seq_work_order" model="ir.sequence">
<field name="name">seq_work_order</field>
<field name="company_id"/>
<field name="code">system.work.order</field>
<field name="prefix">SO%(year)s%(month)s%(day)s</field>
<field name="padding">1</field>
</record>
<!-- 模板编号 -->
<record id="seq_order_template" model="ir.sequence">
<field name="name">seq_order_template</field>
<field name="company_id"/>
<field name="code">work.order.template</field>
<field name="prefix">TL</field>
<field name="padding">1</field>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,243 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!--工单信息-->
<record model="ir.ui.view" id="work_order_tree">
<field name="name">工单信息</field>
<field name="model">system.work.order</field><!--对应表单名称-->
<field name="arch" type="xml">
<tree>
<field name="state" widget="badge" decoration-primary="state == 'draft'"
decoration-success="state in ('processed', 'completed')"
decoration-danger="state == 'pending'" decoration-warning="state in ('unconfirmed')"/>
<field name="order_number"/>
<field name="title"/>
<field name="initiator_id"/>
<field name="date"/>
</tree>
</field>
</record>
<!--新建系统工单-->
<record model="ir.ui.view" id="ork_order_form">
<field name="name">新建系统工单</field>
<field name="model">system.work.order</field>
<field name="arch" type="xml">
<form>
<header>
<field name="is_display" invisible="1"/>
<button string='提交' class="oe_highlight" states="draft"
type="object" name="do_unconfirmed"
attrs="{'invisible': [('state', '!=', 'draft')]}"/>
<button string='追回编辑' states="unconfirmed"
type="action" name="%(system_work_order_wizard_view_act_window)d"
context="{'explain':'确认要执行此操作吗?','object_name':'system.work.order','function_name':'do_draft','object_id':id}"/>
<button name="do_pending" states="unconfirmed"
string="确认可处理" type="object" class="oe_highlight"
groups="jikimo_system_order.group_operations_permissions_rwc"/>
<button string='处理工单' class="oe_highlight" states="pending"
type="action" name="%(launch_order_technician_wizard)d"
groups="jikimo_system_order.group_operations_permissions_rwc"/>
<button string='评价' class="oe_highlight" attrs="{'invisible': [('is_display', '=', False)]}"
type="action" name="%(launch_order_other_wizard)d" context="{'active_id':id}"/>
<button name="%(launch_order_close_wizard)d" string="关闭该工单"
attrs="{'invisible': ['|',('state', '=', 'draft'),'|',('state','=','completed'),('state','=','closed')]}"
type="action" context="{'active_id':id}"/>
<field name="state" widget="statusbar"/>
</header>
<sheet>
<group>
<!-- <label for="order_number" class="oe_edit_only"/>-->
<group>
<field name="order_number" required="True" readonly="1"/>
<field name="order_type" required="True" attrs="{'readonly': [('state', '!=', 'draft')]}" options="{'no_create': True}"/>
<field name="date" required="True" readonly="True"/>
<field name="order_template_id" attrs="{'readonly': [('state', '!=', 'draft')]}"
domain="[('work_order_type','=',order_type),('state','=',True)]" options="{'no_create': True}"/>
<field name="confirmation_date" readonly="True"/>
<field name="urgency_degree" required="True" attrs="{'readonly': [('state','!=','draft')]}" widget="priority"/>
</group>
<group>
<field name="initiator_company_id" required="True" readonly="True"/>
<!-- <field name="initiator_department_id" required="True" readonly="True"/>-->
<field name="initiator_id" required="True" readonly="True"/>
<field name="confirm_id" readonly="True"/>
<field name="solve_people_id" readonly="True"/>
<field name="close_user_id" readonly="True"/>
</group>
<group>
<field name="title" attrs="{'readonly': [('state', '!=', 'draft')]}" required="True"/>
</group>
</group>
<notebook>
<page string="工单内容">
<field name="text" attrs="{'readonly': [('state','!=','draft')]}" required="True"/>
</page>
<page string="解决方案">
<group>
<field name="users_problem" readonly="True"/>
<field name="solution" readonly="True"/>
</group>
</page>
<page string="其他">
<group>
<field name="close_cause" readonly="True"/>
<field name="close_time" readonly="True"/>
<field name="grade" readonly="True"/>
</group>
</page>
</notebook>
</sheet>
<!-- <div class="oe_chatter">-->
<!-- <field name="message_follower_ids" widget="mail_followers"/>-->
<!-- <field name="message_ids" widget="mail_thread"/>-->
<!-- </div>-->
</form>
</field>
</record>
<!-- 搜索工单 -->
<record model="ir.ui.view" id="restaurant_search">
<field name="name">搜索工单</field>
<field name="model">system.work.order</field>
<field name="arch" type="xml">
<search>
<field string='发起人' name="initiator_id" widget="char" required="True"/>
<field string='标题' name="title" widget="char"/>
<field string='正文' name="text" widget="html"/>
<field string='实际问题' name="users_problem" widget="text"/>
<field string='解决方案' name="solution" widget="text"/>
<filter name="today" string="今日工单" domain="[('date','=',time.strftime('%%Y-%%m-%%d'))]"/>
<filter name="yesterday" string="昨日工单"
domain="[('date', '=', (context_today() - relativedelta(days=1)).strftime('%Y-%m-%d'))]"/>
<filter name="month" string="本月工单"
domain="[('date','&gt;=', time.strftime('%Y-%m-01')),('date','&lt;', (context_today() + relativedelta(months=1)).strftime('%Y-%m-01'))]"/>
<filter name="last_month" string="上月工单"
domain="[('date','&lt;', time.strftime('%Y-%m-01')),('date','&gt;=', (context_today() - relativedelta(months=1)).strftime('%Y-%m-01'))]"/>
<filter name="unconfirmed" string="待确认" domain="[('state','=','unconfirmed')]"/>
<filter name="pending" string="待处理" domain="[('state','=','pending')]"/>
<filter name="processed" string="已处理"
domain="['|', ('state','=','processed'), ('state','=','closed')]"/>
<group>
<filter string='发起人' name="initiator_id" context='{"group_by":"initiator_id"}'/>
<filter string='工单分类' name="order_type" context='{"group_by":"order_type"}'/>
<filter string='模板' name="order_template_id" context='{"group_by":"order_template_id"}'/>
<filter string='状态' name="state" context='{"group_by":"state"}'/>
<filter string='紧急情况' name="state" context='{"group_by":"urgency_degree"}'/>
</group>
</search>
</field>
</record>
<record model="ir.ui.view" id="graph_tree">
<field name="name">工单图表</field>
<field name="model">system.work.order</field><!--对应表单名称-->
<field name="arch" type="xml">
<pivot>
<field name="date" type="row" interval="day"/>
<field name="order_type" type="col"/>
<field name="state" type="row"/>
</pivot>
</field>
</record>
<!-- 工单 -->
<record model="ir.actions.act_window" id="system_order">
<field name="name">工单</field>
<field name="res_model">system.work.order</field>
<field name="view_mode">tree,form,search,graph,pivot</field>
</record>
<!--工单模板信息-->
<record model="ir.ui.view" id="order_template_tree">
<field name="name">工单模板信息</field>
<field name="model">work.order.template</field><!--对应表单名称-->
<field name="arch" type="xml">
<tree>
<field name="num"/>
<field name="name"/>
<field name="work_order_type"/>
<field name="title_template"/>
<field name="template_explain"/>
<field name="state"/>
</tree>
</field>
</record>
<!--新建系统工单模板-->
<record model="ir.ui.view" id="order_template_form">
<field name="name">新建系统工单模板</field>
<field name="model">work.order.template</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="num" required="True" readonly="True"/>
<field name="name" required="True"/>
<field name="work_order_type" required="True"/>
<field name="template_explain" required="True" style="height: 50px;"/>
<field name="title_template" required="True"/>
<field name="state"/>
<field name="text_template" required="True"/>
</group>
</sheet>
</form>
</field>
</record>
<!-- 工单模板 -->
<record model="ir.actions.act_window" id="work_template">
<field name="name">工单模板</field>
<field name="res_model">work.order.template</field>
<field name="view_mode">tree,form</field>
</record>
<!--工单分类信息-->
<record model="ir.ui.view" id="order_type_tree">
<field name="name">工单分类信息</field>
<field name="model">order.classify</field><!--对应表单名称-->
<field name="arch" type="xml">
<tree>
<field name="sequence" widget="handle"/>
<field name="name"/>
<field name="state"/>
</tree>
</field>
</record>
<!--新建系统分类信息-->
<record model="ir.ui.view" id="order_type_form">
<field name="name">新建系统分类信息</field>
<field name="model">order.classify</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name" required="True"/>
<field name="sequence" invisible="True"/>
<field name="state"/>
</group>
</sheet>
</form>
</field>
</record>
<!-- 工单分类 -->
<record model="ir.actions.act_window" id="classify">
<field name="name">工单分类</field>
<field name="res_model">order.classify</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem name="系统工单" id="work_order_1_list" web_icon="jikimo_system_order,static/description/icon.png"/>
<menuitem name="工单" id="work_order" parent="work_order_1_list" action="system_order"/>
<menuitem name="工单模板" id="work_order_template" parent="work_order_1_list" action="work_template" groups="jikimo_system_order.group_operations_permissions_rwc"/>
<menuitem name="工单分类" id="work_order_type" parent="work_order_1_list" action="classify" groups="jikimo_system_order.group_operations_permissions_rwc"/>
<menuitem name="工单设置" id="system_order_notice_user_config" parent="work_order_1_list" action="action_system_order_notice_view" groups="jikimo_system_order.group_operations_permissions_rwc"/>
</data>
</odoo>

View File

@@ -0,0 +1,6 @@
# -*- coding: utf-8 -*-
from . import order_other_wizard
from . import order_technician_wizard
from . import order_close_wizard
from . import system_work_order_wizard

View File

@@ -0,0 +1,79 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api
from odoo.addons.jikimo_system_order.models.constant import STATE_SELECTION
from odoo.exceptions import ValidationError
import datetime, logging
class OrderCloseWizard(models.TransientModel):
_name = 'order.close.wizard'
def get_context(self):
if self._context.get('active_id'):
obj = self.env['system.work.order'].browse(self._context.get('active_id'))
if obj.initiator_id.id != self.env.user.id:
raise ValidationError(u'非本人无法操作')
return obj
order_id = fields.Many2one('system.work.order', string=u'工单ID',
default=lambda self: self.get_context().id)
# 关闭原因
close_cause = fields.Text(string=u'关闭问题原因', default=lambda self: self.get_context().close_cause)
# 关闭时间
close_time = fields.Datetime(string=u'关闭问题时间', default=fields.datetime.now())
# 状态
state = fields.Selection(STATE_SELECTION, default='closed', string=u'状态')
# 关闭人
close_user_id = fields.Many2one('res.users', string=u'关闭人', default=lambda self: self.env.user)
def sure(self):
self.order_id.close_cause = self.close_cause
self.order_id.close_time = self.close_time
if self.order_id.state == 'unconfirmed':
state_remark = u'待确认 --> 已关闭'
if self.order_id.state == 'pending':
state_remark = u'待处理 --> 已关闭'
if self.order_id.state == 'processed':
state_remark = u'已处理待评分 --> 已关闭'
# self.order_id.message_post(u'操作人:%s操作时间%s状态变更过程%s' % (
# self.env.user.name,
# (datetime.datetime.now() + datetime.timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S'), state_remark))
self.order_id.state = self.state
self.order_id.close_user_id = self.close_user_id
we_employee_ids = []
if self.order_id.initiator_id.we_employee_id:
we_employee_ids.append(self.order_id.initiator_id.we_employee_id)
lost_agent_id = self.env['ir.config_parameter'].sudo().get_param('lost_agent_id')
wechat = self.env['we.config'].sudo().get_wechat(agent_id=lost_agent_id)
# agent_id, user_ids, content
content = """您提交的工单-**工单标题:{0}**-<font color=\"#FF0000\">**已关闭**</font>
>提交时间:{1}
>处理时间:{2}
>处理人:{3}
如有问题,请联系系统管理员!
""".format(self.order_id.title,
(self.order_id.date + datetime.timedelta(hours=8)).strftime(
'%Y-%m-%d %H:%M'), (datetime.datetime.now() + datetime.timedelta(
hours=8)).strftime('%Y-%m-%d %H:%M'), self.env.user.name or '')
# wechat.message.send_markdown(agent_id=lost_agent_id, user_ids=we_employee_ids, content=content)
for we_employee_id in we_employee_ids:
try:
wechat.message.send_markdown(agent_id=lost_agent_id, user_ids=we_employee_id, content=content)
except Exception as e:
logging.error('工单关闭发送消息异常%s' % str(e))
return {}

View File

@@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api
from odoo.exceptions import ValidationError
from odoo.addons.jikimo_system_order.models.constant import STATE_SELECTION, GRADE
import datetime
class OrderOtherWizard(models.TransientModel):
_name = 'order.other.wizard'
def get_context(self):
if self._context.get('active_id'):
obj = self.env['system.work.order'].browse(self._context.get('active_id'))
if obj.initiator_id.id != self.env.user.id:
raise ValidationError(u'非本人无法操作')
return obj
order_id = fields.Many2one('system.work.order', string=u'工单ID',
default=lambda self: self.get_context().id)
# 关闭时间
close_time = fields.Datetime(string=u'关闭时间', default=fields.datetime.now())
# 状态
state = fields.Selection(STATE_SELECTION, default='completed', string=u'状态')
# 打分
grade = fields.Selection(GRADE, string=u'评分')
# 关闭人
close_user_id = fields.Many2one('res.users', string=u'关闭人', default=lambda self: self.env.user)
def sure(self):
self.order_id.close_time = self.close_time
self.order_id.grade = self.grade
if self.order_id.state == 'processed':
state_remark = u'已处理待评分 --> 已完成'
# self.order_id.message_post(u'操作人:%s操作时间%s状态变更过程%s' % (
# self.env.user.name,
# (datetime.datetime.now() + datetime.timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S'), state_remark))
self.order_id.state = self.state
self.order_id.close_user_id = self.close_user_id
return {}

View File

@@ -0,0 +1,59 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api
from odoo.addons.jikimo_system_order.models.constant import STATE_SELECTION
import datetime
import logging
class OrderTechnicianWizard(models.TransientModel):
_name = 'order.technician.wizard'
order_id = fields.Many2one('system.work.order', string=u'工单ID',
default=lambda self: self.env.context.get('active_id'))
# 解决人
solve_people_id = fields.Many2one('res.users', string=u'解决人', default=lambda self: self.env.user)
# 用户实际问题
users_problem = fields.Text(string=u'用户实际问题')
# 最终解决方案
solution = fields.Text(string=u'最终解决方案')
# 状态
state = fields.Selection(STATE_SELECTION, default='processed', string=u'状态')
def sure(self):
self.order_id.solve_people_id = self.solve_people_id
self.order_id.users_problem = self.users_problem
self.order_id.solution = self.solution
if self.order_id.state == 'pending':
state_remark = u'待处理 --> 已处理待评分'
# self.order_id.message_post(u'操作人:%s操作时间%s状态变更过程%s' % (
# self.env.user.name,
# (datetime.datetime.now() + datetime.timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S'), state_remark))
self.order_id.state = self.state
# 获取通知人
# objs = self.env['system.order.notice'].search([])
# user_ids = objs.notice_user_ids.filtered(lambda item: item.we_employee_id not in ['', False])
# we_employee_ids = user_ids.mapped('we_employee_id')
we_employee_ids = []
if self.order_id.initiator_id.we_employee_id:
we_employee_ids.append(self.order_id.initiator_id.we_employee_id)
print(we_employee_ids)
lost_agent_id = self.env['ir.config_parameter'].sudo().get_param('lost_agent_id')
wechat = self.env['we.config'].sudo().get_wechat(agent_id=lost_agent_id)
# agent_id, user_ids, content
content = """您提交的工单-**工单标题:{0}**-<font color=\"info\">**已处理**</font>
>提交时间:{1}
>处理反馈:{4}
>处理时间:{2}
>处理人:{3}
如有问题,请联系系统管理员!
""".format(self.order_id.title,
(self.order_id.date + datetime.timedelta(hours=8)).strftime('%Y-%m-%d %H:%M'), (datetime.datetime.now() + datetime.timedelta(hours=8)).strftime('%Y-%m-%d %H:%M'), self.env.user.name or '', self.solution or '')
# wechat.message.send_markdown(agent_id=lost_agent_id, user_ids=we_employee_ids, content=content)
for we_employee_id in we_employee_ids:
try:
wechat.message.send_markdown(agent_id=lost_agent_id, user_ids=we_employee_id, content=content)
except Exception as e:
logging.error('工单处理发送消息异常%s' % str(e))
return {}

View File

@@ -0,0 +1,122 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!-- 技术员向导form-->
<record model="ir.ui.view" id="wizard_technician_form_view">
<field name="name">技术员向导</field>
<field name="model">order.technician.wizard</field>
<field name="arch" type="xml">
<form string="技术员编辑">
<group>
<field name="order_id" required="1" readonly="1"/>
<field name="solve_people_id" required="1"/>
<field name="users_problem" required="1" style="height: 50px;"/>
<field name="solution" required="1" style="height: 50px;"/>
</group>
<footer>
<button name="sure" string="确定" type="object" class="oe_highlight"/>
or
<button string="取消" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="launch_order_technician_wizard">
<field name="name">技术员编辑</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">order.technician.wizard</field>
<field name="view_mode">form</field>
<field name="view_id" ref="wizard_technician_form_view"/>
<field name="context">{'display_default_code':False}</field>
<field name="target">new</field>
</record>
<!-- 其它向导form-->
<record model="ir.ui.view" id="wizard_other_form_view">
<field name="name">其它向导</field>
<field name="model">order.other.wizard</field>
<field name="arch" type="xml">
<form string="其它编辑">
<group>
<field name="order_id" required="1" readonly="1"/>
<field name="close_time" required="1" readonly="1"/>
<field name="grade" required="1"/>
<field name="close_user_id" required="1" readonly="1"/>
</group>
<footer>
<button name="sure" string="确定" type="object" class="oe_highlight"/>
or
<button string="取消" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="launch_order_other_wizard">
<field name="name">其它编辑</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">order.other.wizard</field>
<field name="view_mode">form</field>
<field name="view_id" ref="wizard_other_form_view"/>
<field name="context">{'display_default_code':False}</field>
<field name="target">new</field>
</record>
<!--关闭向导form-->
<record model="ir.ui.view" id="wizard_close_form_view">
<field name="name">关闭向导</field>
<field name="model">order.close.wizard</field>
<field name="arch" type="xml">
<form string="关闭工单">
<group>
<field name="order_id" required="1" readonly="1"/>
<field name="close_cause" required="1" style="height: 50px;"/>
<field name="close_time" required="1" readonly="1"/>
<field name="close_user_id" required="1" readonly="1"/>
</group>
<footer>
<button name="sure" string="确定" type="object" class="oe_highlight"/>
or
<button string="取消" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="launch_order_close_wizard">
<field name="name">关闭工单</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">order.close.wizard</field>
<field name="view_mode">form</field>
<field name="view_id" ref="wizard_close_form_view"/>
<field name="context">{'display_default_code':False}</field>
<field name="target">new</field>
</record>
<record id="system_work_order_wizard_view" model="ir.ui.view">
<field name="name">system_work_order_wizard_view</field>
<field name="model">system.work.order.wizard</field>
<field name="arch" type="xml">
<form string="二次确认">
<field name="explain" readonly="1"/>
<footer>
<button name="sure" string="确定" type="object" class="oe_highlight"/>
or
<button string="取消" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="system_work_order_wizard_view_act_window">
<field name="name">二次确认</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">system.work.order.wizard</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,42 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2017/12/12 9:46
# @Author : GuoXiang
# @Site :
# @File : system_work_order_wizard.py
# @Software: PyCharm
# @Desc :
# @license : Copyright©2018 www.dasmaster.com All Rights Reserved.
# @Contact : xg1230205321@163.com
from odoo import models, api, fields
from odoo.exceptions import ValidationError
class SystemWorkOrderWizard(models.TransientModel):
_name = "system.work.order.wizard"
_description = u"追回确认"
def _get_explain(self):
if self._context.get('object_id'):
obj = self.env['system.work.order'].browse(self._context.get('object_id'))
if obj.initiator_id.id != self.env.user.id:
raise ValidationError(u'非本人无法操作')
if self._context.get('explain'):
return self._context["explain"]
explain = fields.Char(default=_get_explain)
def sure(self):
"""
确认
:return:
"""
if self._context.get('object_id') and self._context.get('object_name') and self._context.get(
'explain') and self._context.get('function_name'):
work_sheet_obj = self.env[self._context["object_name"]].search([('id', '=', int(self._context["object_id"]))])
class_name = self._context.get('object_name') # 获得对象类名
method_name = self._context.get('function_name') # 获得对象的方法
obj_function = getattr(self.env[class_name], method_name)
obj_function(work_sheet_obj)

View File

@@ -27,7 +27,7 @@ class MrpWorkcenter(models.Model):
class MrpProductionWorkcenterLine(models.Model):
_name = 'mrp.workorder'
_inherit = ['mrp.workorder', 'barcodes.barcode_events_mixin']
_inherit = ['mrp.workorder', 'barcodes.barcode_events_mixin', 'mail.thread', 'mail.activity.mixin']
quality_point_ids = fields.Many2many('quality.point', compute='_compute_quality_point_ids', store=True)
quality_point_count = fields.Integer('Steps', compute='_compute_quality_point_count')
@@ -47,14 +47,17 @@ class MrpProductionWorkcenterLine(models.Model):
is_last_lot = fields.Boolean('Is Last lot', compute='_compute_is_last_lot')
is_first_started_wo = fields.Boolean('Is The first Work Order', compute='_compute_is_last_unfinished_wo')
is_last_unfinished_wo = fields.Boolean('Is Last Work Order To Process', compute='_compute_is_last_unfinished_wo', store=False)
is_last_unfinished_wo = fields.Boolean('Is Last Work Order To Process', compute='_compute_is_last_unfinished_wo',
store=False)
lot_id = fields.Many2one(related='current_quality_check_id.lot_id', readonly=False)
move_id = fields.Many2one(related='current_quality_check_id.move_id', readonly=False)
move_line_id = fields.Many2one(related='current_quality_check_id.move_line_id', readonly=False)
move_line_ids = fields.One2many(related='move_id.move_line_ids')
quality_state = fields.Selection(related='current_quality_check_id.quality_state', string="Quality State", readonly=False)
quality_state = fields.Selection(related='current_quality_check_id.quality_state', string="Quality State",
readonly=False)
qty_done = fields.Float(related='current_quality_check_id.qty_done', readonly=False)
test_type_id = fields.Many2one('quality.point.test_type', 'Test Type', related='current_quality_check_id.test_type_id')
test_type_id = fields.Many2one('quality.point.test_type', 'Test Type',
related='current_quality_check_id.test_type_id')
test_type = fields.Char(related='test_type_id.technical_name')
user_id = fields.Many2one(related='current_quality_check_id.user_id', readonly=False)
worksheet_page = fields.Integer('Worksheet page')
@@ -65,7 +68,8 @@ class MrpProductionWorkcenterLine(models.Model):
def _compute_quality_point_ids(self):
for workorder in self:
quality_points = workorder.operation_id.quality_point_ids
quality_points = quality_points.filtered(lambda qp: not qp.product_ids or workorder.production_id.product_id in qp.product_ids)
quality_points = quality_points.filtered(
lambda qp: not qp.product_ids or workorder.production_id.product_id in qp.product_ids)
workorder.quality_point_ids = quality_points
@api.depends('operation_id')
@@ -91,7 +95,8 @@ class MrpProductionWorkcenterLine(models.Model):
@api.depends('check_ids')
def _compute_finished_product_check_ids(self):
for wo in self:
wo.finished_product_check_ids = wo.check_ids.filtered(lambda c: c.finished_product_sequence == wo.qty_produced)
wo.finished_product_check_ids = wo.check_ids.filtered(
lambda c: c.finished_product_sequence == wo.qty_produced)
def write(self, values):
res = super().write(values)
@@ -138,7 +143,8 @@ class MrpProductionWorkcenterLine(models.Model):
self.finished_lot_id = self.env['stock.lot'].create({
'product_id': self.product_id.id,
'company_id': self.company_id.id,
'name': self.env['stock.lot']._get_next_serial(self.company_id, self.product_id) or self.env['ir.sequence'].next_by_code('stock.lot.serial'),
'name': self.env['stock.lot']._get_next_serial(self.company_id, self.product_id) or self.env[
'ir.sequence'].next_by_code('stock.lot.serial'),
})
def _create_subsequent_checks(self):
@@ -152,7 +158,7 @@ class MrpProductionWorkcenterLine(models.Model):
"""
# Create another quality check if necessary
next_check = self.current_quality_check_id.next_check_id
if next_check.component_id != self.current_quality_check_id.product_id or\
if next_check.component_id != self.current_quality_check_id.product_id or \
next_check.point_id != self.current_quality_check_id.point_id:
# TODO: manage reservation here
@@ -279,7 +285,8 @@ class MrpProductionWorkcenterLine(models.Model):
if self.current_quality_check_id:
team = self.current_quality_check_id.team_id
else:
team = self.env['quality.alert.team'].search(['|', ('company_id', '=', self.company_id.id), ('company_id', '=', False)], limit=1)
team = self.env['quality.alert.team'].search(
['|', ('company_id', '=', self.company_id.id), ('company_id', '=', False)], limit=1)
return {
'type': 'ir.actions.act_window',
'res_model': 'quality.check',
@@ -320,7 +327,8 @@ class MrpProductionWorkcenterLine(models.Model):
production = wo.production_id
move_raw_ids = wo.move_raw_ids.filtered(lambda m: m.state not in ('done', 'cancel'))
move_finished_ids = wo.move_finished_ids.filtered(lambda m: m.state not in ('done', 'cancel') and m.product_id != wo.production_id.product_id)
move_finished_ids = wo.move_finished_ids.filtered(
lambda m: m.state not in ('done', 'cancel') and m.product_id != wo.production_id.product_id)
previous_check = self.env['quality.check']
for point in wo.quality_point_ids:
# Check if we need a quality control for this point
@@ -342,11 +350,13 @@ class MrpProductionWorkcenterLine(models.Model):
if point.test_type == 'register_byproducts':
moves = move_finished_ids.filtered(lambda m: m.product_id == point.component_id)
if not moves:
moves = production.move_finished_ids.filtered(lambda m: not m.operation_id and m.product_id == point.component_id)
moves = production.move_finished_ids.filtered(
lambda m: not m.operation_id and m.product_id == point.component_id)
elif point.test_type == 'register_consumed_materials':
moves = move_raw_ids.filtered(lambda m: m.product_id == point.component_id)
if not moves:
moves = production.move_raw_ids.filtered(lambda m: not m.operation_id and m.product_id == point.component_id)
moves = production.move_raw_ids.filtered(
lambda m: not m.operation_id and m.product_id == point.component_id)
else:
check = self.env['quality.check'].create(values)
previous_check.next_check_id = check
@@ -363,8 +373,10 @@ class MrpProductionWorkcenterLine(models.Model):
processed_move |= moves
# Generate quality checks associated with unreferenced components
moves_without_check = ((move_raw_ids | move_finished_ids) - processed_move).filtered(lambda move: (move.has_tracking != 'none' and not move.raw_material_production_id.use_auto_consume_components_lots) or move.operation_id)
quality_team_id = self.env['quality.alert.team'].search(['|', ('company_id', '=', wo.company_id.id), ('company_id', '=', False)], limit=1).id
moves_without_check = ((move_raw_ids | move_finished_ids) - processed_move).filtered(lambda move: (
move.has_tracking != 'none' and not move.raw_material_production_id.use_auto_consume_components_lots) or move.operation_id)
quality_team_id = self.env['quality.alert.team'].search(
['|', ('company_id', '=', wo.company_id.id), ('company_id', '=', False)], limit=1).id
for move in moves_without_check:
values = {
'production_id': production.id,
@@ -412,7 +424,8 @@ class MrpProductionWorkcenterLine(models.Model):
backorder = False
# Trigger the backorder process if we produce less than expected
if float_compare(self.qty_producing, self.qty_remaining, precision_rounding=self.product_uom_id.rounding) == -1 and self.is_first_started_wo:
if float_compare(self.qty_producing, self.qty_remaining,
precision_rounding=self.product_uom_id.rounding) == -1 and self.is_first_started_wo:
backorder = self.production_id._split_productions()[1:]
for workorder in backorder.workorder_ids:
if workorder.product_tracking == 'serial':
@@ -423,7 +436,8 @@ class MrpProductionWorkcenterLine(models.Model):
else:
if self.operation_id:
backorder = (self.production_id.procurement_group_id.mrp_production_ids - self.production_id).filtered(
lambda p: p.workorder_ids.filtered(lambda wo: wo.operation_id == self.operation_id).state not in ('cancel', 'done')
lambda p: p.workorder_ids.filtered(lambda wo: wo.operation_id == self.operation_id).state not in (
'cancel', 'done')
)[:1]
else:
index = list(self.production_id.workorder_ids).index(self)
@@ -442,7 +456,8 @@ class MrpProductionWorkcenterLine(models.Model):
wo.current_quality_check_id._update_component_quantity()
if not self.env.context.get('no_start_next'):
if self.operation_id:
return backorder.workorder_ids.filtered(lambda wo: wo.operation_id == self.operation_id).open_tablet_view()
return backorder.workorder_ids.filtered(
lambda wo: wo.operation_id == self.operation_id).open_tablet_view()
else:
index = list(self.production_id.workorder_ids).index(self)
return backorder.workorder_ids[index].open_tablet_view()
@@ -466,7 +481,8 @@ class MrpProductionWorkcenterLine(models.Model):
def open_tablet_view(self):
self.ensure_one()
if not self.is_user_working and self.working_state != 'blocked' and self.state in ('ready', 'waiting', 'progress', 'pending'):
if not self.is_user_working and self.working_state != 'blocked' and self.state in (
'ready', 'waiting', 'progress', 'pending'):
self.button_start()
action = self.env["ir.actions.actions"]._for_xml_id("mrp_workorder.tablet_client_action")
action['target'] = 'fullscreen'
@@ -521,7 +537,8 @@ class MrpProductionWorkcenterLine(models.Model):
data = {
'mrp.workorder': self.read(self._get_fields_for_tablet(), load=False)[0],
'quality.check': self.check_ids._get_fields_for_tablet(sorted_check_list),
'operation': self.operation_id.read(self.operation_id._get_fields_for_tablet())[0] if self.operation_id else {},
'operation': self.operation_id.read(self.operation_id._get_fields_for_tablet())[
0] if self.operation_id else {},
'working_state': self.workcenter_id.working_state,
'views': {
'workorder': self.env.ref('mrp_workorder.mrp_workorder_view_form_tablet').id,
@@ -553,7 +570,8 @@ class MrpProductionWorkcenterLine(models.Model):
return {
'duration': self.duration,
'position': bisect_left(last30op, self.duration), # which position regarded other workorders ranked by duration
'position': bisect_left(last30op, self.duration),
# which position regarded other workorders ranked by duration
'quality_score': score,
'show_rainbow': show_rainbow,
}

View File

@@ -27,6 +27,13 @@
</field>
</page>
</page>
<xpath expr="//sheet" position="after">
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids" options="{'post_refresh': 'recipients'}"/>
</div>
</xpath>
</field>
</record>

View File

@@ -4,7 +4,8 @@ csv_internal_sep = ,
data_dir = /var/lib/odoo
db_host = 172.17.0.2
db_maxconn = 64
db_name = sf_t2cs_003
# db_name = sf_t_0430
db_name = t_240509
db_password = sf
db_port = 5432
db_sslmode = prefer

27
sf_base/commons/Email.py Normal file
View File

@@ -0,0 +1,27 @@
from odoo import api, models
class MailSender(models.Model):
_name = 'mail.sender'
_description = 'Mail Sender'
def mail_sender(self, mail_server_name, subject_name, email_to, error_message):
mail_server = self.env['ir.mail_server'].sudo().search([('name', '=', mail_server_name)], limit=1)
if not mail_server:
_logger.info('管理员还未配置名称为 %s 的smtp服务器信息请联系管理员配置' % mail_server_name)
return
if not mail_server.smtp_user or not mail_server.smtp_pass:
_logger.info("邮件发送账号未正确设置,请联系管理员!")
return
mail_values = {
'message_type': 'email', 'subject': subject_name,
'mail_server_id': mail_server.id, 'email_from': mail_server.smtp_user,
'email_to': email_to
}
temp_mail_html = """
Hi, <p> 这里是异常提醒通知: </p>
"""
temp_mail_html += """ %s """ % error_message
mail_values['body_html'] = temp_mail_html
self.env['mail.mail'].sudo().create(mail_values).send(auto_commit=True)

View File

@@ -1,2 +1,3 @@
from . import common
from . import Printer
from . import Email

View File

@@ -8,7 +8,7 @@ from odoo.http import request
class Manufacturing_Connect(http.Controller):
@http.route('/AutoDeviceApi/MachineToolGroup', type='json', auth='none', methods=['GET', 'POST'], csrf=False,
@http.route('/AutoDeviceApi/MachineToolGroup', type='json', auth='sf_token', methods=['GET', 'POST'], csrf=False,
cors="*")
def get_maintenance_tool_groups_Info(self, **kw):
"""

View File

@@ -61,12 +61,10 @@ class MrsMaterialModel(models.Model):
supplier_ids = fields.One2many('sf.supplier.sort', 'materials_model_id', string='供应商')
active = fields.Boolean('有效', default=True)
@api.onchange('gain_way')
def _check_gain_way(self):
if not self.gain_way:
raise UserError("请选择获取方式")
if self.gain_way in ['外协', '采购']:
if not self.supplier_ids:
@api.constrains("gain_way")
def _check_supplier_ids(self):
for item in self:
if item.gain_way in ('外协', '采购') and not item.supplier_ids:
raise UserError("请添加供应商")
@@ -94,8 +92,10 @@ class MrsProductionProcess(models.Model):
partner_process_ids = fields.Many2many('res.partner', 'process_ids', '加工工厂')
active = fields.Boolean('有效', default=True)
parameter_ids = fields.One2many('sf.production.process.parameter', 'process_id', string='可选参数')
category_id = fields.Many2one('sf.production.process.category')
category_id = fields.Many2one('sf.production.process.category', string='表面工艺类别')
# workcenter_ids = fields.Many2many('mrp.workcenter', 'rel_workcenter_process', required=True)
processing_day = fields.Float('加工天数/d')
travel_day = fields.Float('路途天数/d')
# class MrsProcessingTechnology(models.Model):
@@ -143,7 +143,10 @@ class MrsProductionProcessParameter(models.Model):
is_check = fields.Boolean(default=False)
# price = fields.Float('单价')
process_id = fields.Many2one('sf.production.process', string='表面工艺')
process_description = fields.Char(string='工艺描述')
materials_model_ids = fields.Many2many('sf.materials.model', 'applicable_material', string='适用材料')
processing_day = fields.Float('加工天数/d')
travel_day = fields.Float('路途天数/d')
active = fields.Boolean('有效', default=True)
def name_get(self):

View File

@@ -329,9 +329,9 @@ class ToolInventory(models.Model):
blade_number = fields.Integer('刃数(个)')
extension = fields.Float('伸出长度(mm)')
work_material = fields.Selection([('', ''), ('', '')], string='加工材料')
life_span = fields.Float('寿命(h)')
life_span = fields.Float('寿命(min)')
tool_groups_id = fields.Many2one('sf.tool.groups', string='刀具组')
tool_groups_id = fields.Many2one('sf.tool.groups', string='刀具组', required=True)
active = fields.Boolean('已归档', default=True)

View File

@@ -84,6 +84,17 @@
<field name="category_id" ref="base.module_category_inventory_purchase"/>
</record>
<record id="group_sf_stock_user" model="res.groups">
<field name="name">仓储岗</field>
<field name="category_id" ref="base.module_category_inventory_inventory"/>
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
</record>
<record id="group_sf_stock_manager" model="res.groups">
<field name="name">仓储总监</field>
<field name="category_id" ref="base.module_category_inventory_inventory"/>
<field name="implied_ids" eval="[(4, ref('group_sf_stock_user'))]"/>
</record>
</data>
</odoo>

View File

@@ -11,7 +11,8 @@ access_sf_machine_control_system,sf_machine_control_system,model_sf_machine_cont
access_sf_machine_control_system_admin,sf_machine_control_system_admin,model_sf_machine_control_system,base.group_system,1,1,1,0
access_sf_production_process_group_sale_director,sf_production_process_group_sale_director,model_sf_production_process,sf_base.group_sale_director,1,0,0,0
access_sf_production_process_group_sale_salemanager,sf_production_process_group_sale_salemanager,model_sf_production_process,sf_base.group_sale_salemanager,1,0,0,0
access_res_partner_category_group_sale_salemanager,res_partner_category_group_sale_salemanager,base.model_res_partner_category,sf_base.group_sale_salemanager,1,1,1,0
access_res_partner_category_group_sale_director,res_partner_category_group_sale_director,base.model_res_partner_category,sf_base.group_sale_director,1,1,1,0
access_sf_production_process,sf_production_process,model_sf_production_process,base.group_user,1,1,1,0
access_sf_production_process_admin,sf_production_process_admin,model_sf_production_process,base.group_system,1,1,1,0
access_sf_production_materials,sf_production_materials,model_sf_production_materials,base.group_user,1,1,1,0
@@ -48,6 +49,7 @@ access_sf_functional_cutting_tool_admin,sf_functional_cutting_tool_admin,model_s
access_sf_functional_cutting_tool_model,sf_functional_cutting_tool_model,model_sf_functional_cutting_tool_model,base.group_user,1,1,1,0
access_sf_functional_cutting_tool_model_admin,sf_functional_cutting_tool_model_admin,model_sf_functional_cutting_tool_model,base.group_system,1,1,1,0
access_sf_fixture_material,sf_fixture_material,model_sf_fixture_material,base.group_user,1,1,1,0
access_sf_fixture_material_group_sf_stock_user,sf_fixture_material_group_sf_stock_user,model_sf_fixture_material,sf_base.group_sf_stock_user,1,1,1,0
access_sf_fixture_material_admin,sf_fixture_material_admin,model_sf_fixture_material,base.group_system,1,1,1,0
access_sf_fixture_materials_basic_parameters,sf_fixture_materials_basic_parameters,model_sf_fixture_materials_basic_parameters,base.group_user,1,1,1,0
access_sf_fixture_materials_basic_parameters_admin,sf_fixture_materials_basic_parameters_admin,model_sf_fixture_materials_basic_parameters,base.group_system,1,1,1,0
@@ -227,3 +229,16 @@ access_sf_fixture_model_group_sale_director,sf_fixture_model_group_sale_director
access_sf_fixture_materials_basic_parameters_group_sale_director,sf_fixture_materials_basic_parameters_group_sale_director,model_sf_fixture_materials_basic_parameters,sf_base.group_sale_director,1,0,0,0
access_sf_machine_tool_type_group_sale_director,sf_machine_tool_type_group_sale_director,model_sf_machine_tool_type,sf_base.group_sale_director,1,0,0,0
access_sf_fixture_material_group_plan_director,sf_fixture_material_group_plan_director,model_sf_fixture_material,sf_base.group_plan_director,1,0,0,0
access_sf_fixture_model_group_plan_director,sf_fixture_model_group_plan_director,model_sf_fixture_model,sf_base.group_plan_director,1,0,0,0
access_sf_fixture_materials_basic_parameters_group_plan_director,sf_fixture_materials_basic_parameters_group_plan_director,model_sf_fixture_materials_basic_parameters,sf_base.group_plan_director,1,0,0,0
access_sf_multi_mounting_type_group_plan_director,sf_multi_mounting_type_group_plan_director,model_sf_multi_mounting_type,sf_base.group_plan_director,1,0,0,0
access_sf_production_materials_group_sf_stock_manager,sf_production_materials_group_sf_stock_manager,model_sf_production_materials,sf_base.group_sf_stock_manager,1,0,0,0
access_sf_materials_model_group_sf_stock_manager,sf_materials_model_group_sf_stock_manager,model_sf_materials_model,sf_base.group_sf_stock_manager,1,0,0,0
access_sf_fixture_material_group_sf_stock_manager,sf_fixture_material_group_sf_stock_manager,model_sf_fixture_material,sf_base.group_sf_stock_manager,1,0,0,0
access_sf_fixture_model_group_sf_stock_manager,sf_fixture_model_group_sf_stock_manager,model_sf_fixture_model,sf_base.group_sf_stock_manager,1,0,0,0
access_sf_fixture_materials_basic_parameters_group_sf_stock_manager,sf_fixture_materials_basic_parameters_group_sf_stock_manager,model_sf_fixture_materials_basic_parameters,sf_base.group_sf_stock_manager,1,0,0,0
access_sf_multi_mounting_type_group_sf_stock_manager,sf_multi_mounting_type_group_sf_stock_manager,model_sf_multi_mounting_type,sf_base.group_sf_stock_manager,1,0,0,0
access_sf_machine_brand_group_sf_stock_manager,sf_machine_brand_group_sf_stock_manager,model_sf_machine_brand,sf_base.group_sf_stock_manager,1,0,0,0
access_sf_cutting_tool_type_group_sf_stock_manager,sf_cutting_tool_type_group_sf_stock_manager,model_sf_cutting_tool_type,sf_base.group_sf_stock_manager,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
11 access_sf_machine_control_system_admin sf_machine_control_system_admin model_sf_machine_control_system base.group_system 1 1 1 0
12 access_sf_production_process_group_sale_director sf_production_process_group_sale_director model_sf_production_process sf_base.group_sale_director 1 0 0 0
13 access_sf_production_process_group_sale_salemanager sf_production_process_group_sale_salemanager model_sf_production_process sf_base.group_sale_salemanager 1 0 0 0
14 access_sf_production_process access_res_partner_category_group_sale_salemanager sf_production_process res_partner_category_group_sale_salemanager model_sf_production_process base.model_res_partner_category base.group_user sf_base.group_sale_salemanager 1 1 1 0
15 access_res_partner_category_group_sale_director res_partner_category_group_sale_director base.model_res_partner_category sf_base.group_sale_director 1 1 1 0
16 access_sf_production_process_admin access_sf_production_process sf_production_process_admin sf_production_process model_sf_production_process base.group_system base.group_user 1 1 1 0
17 access_sf_production_materials access_sf_production_process_admin sf_production_materials sf_production_process_admin model_sf_production_materials model_sf_production_process base.group_user base.group_system 1 1 1 0
18 access_sf_production_materials_group_sale_director access_sf_production_materials sf_production_materials_group_sale_director sf_production_materials model_sf_production_materials sf_base.group_sale_director base.group_user 1 0 1 0 1 0
49 access_sf_fixture_materials_basic_parameters access_sf_fixture_material_group_sf_stock_user sf_fixture_materials_basic_parameters sf_fixture_material_group_sf_stock_user model_sf_fixture_materials_basic_parameters model_sf_fixture_material base.group_user sf_base.group_sf_stock_user 1 1 1 0
50 access_sf_fixture_materials_basic_parameters_admin access_sf_fixture_material_admin sf_fixture_materials_basic_parameters_admin sf_fixture_material_admin model_sf_fixture_materials_basic_parameters model_sf_fixture_material base.group_system 1 1 1 0
51 access_sf_multi_mounting_type access_sf_fixture_materials_basic_parameters sf_multi_mounting_type sf_fixture_materials_basic_parameters model_sf_multi_mounting_type model_sf_fixture_materials_basic_parameters base.group_user 1 1 1 0
52 access_sf_fixture_materials_basic_parameters_admin sf_fixture_materials_basic_parameters_admin model_sf_fixture_materials_basic_parameters base.group_system 1 1 1 0
53 access_sf_multi_mounting_type_admin access_sf_multi_mounting_type sf_multi_mounting_type_admin sf_multi_mounting_type model_sf_multi_mounting_type base.group_system base.group_user 1 1 1 0
54 access_sf_fixture_model access_sf_multi_mounting_type_admin sf_fixture_model sf_multi_mounting_type_admin model_sf_fixture_model model_sf_multi_mounting_type base.group_user base.group_system 1 1 1 0
55 access_sf_fixture_model_admin access_sf_fixture_model sf_fixture_model_admin sf_fixture_model model_sf_fixture_model base.group_system base.group_user 1 1 1 0
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244

View File

@@ -1,7 +1,7 @@
.o_data_row .w-100 {
width: 40px !important;
height: 40px !important;
display: block !important;
//display: block !important;
}
.o_list_renderer .o_list_table tbody > tr > td:not(.o_list_record_selector):not(.o_handle_cell):not(.o_list_button):not(.o_list_record_remove) {

View File

@@ -27,13 +27,17 @@
<group>
<field name="code" readonly="1"/>
<field name="process_id" readonly="1"/>
<field name="process_description" readonly="1"/>
<field name="gain_way"/>
</group>
<group>
<field name="processing_day" readonly="1"/>
<field name="travel_day" readonly="1"/>
</group>
</group>
<notebook>
<page string="适用材料">
<field name="materials_model_ids" readonly="1"></field>
<field name="materials_model_ids"></field>
</page>
</notebook>
</sheet>
@@ -179,41 +183,46 @@
</div>
<group>
<group>
<field name="code"/>
<field name="code" readonly="1"/>
<field name="category_id" readonly="1"/>
</group>
<group>
<field name="processing_day" readonly="1"/>
<field name="travel_day" readonly="1"/>
</group>
<notebook>
<page string="可选参数">
<field name="parameter_ids">
<tree force_save="1">
<field name="code" readonly="1" force_save="1"/>
<field name="name"/>
<field name="gain_way"/>
<field name='process_id' default="default"/>
</tree>
<form>
<sheet>
<group>
<group>
<field name="code"/>
<field name="name" string="参数名"/>
</group>
<group>
<field name='process_id'/>
<field name="gain_way"/>
</group>
</group>
<notebook>
<page string="适用材料">
<field name="materials_model_ids"/>
</page>
</notebook>
</sheet>
</form>
</field>
</page>
</notebook>
</group>
<notebook>
<page string="可选参数">
<field name="parameter_ids">
<tree force_save="1">
<field name="code" readonly="1" force_save="1"/>
<field name="name"/>
<field name="gain_way"/>
<field name='process_id' default="default"/>
</tree>
<form>
<sheet>
<group>
<group>
<field name="code"/>
<field name="name" string="参数名"/>
</group>
<group>
<field name='process_id'/>
<field name="gain_way"/>
</group>
</group>
<notebook>
<page string="适用材料">
<field name="materials_model_ids"/>
</page>
</notebook>
</sheet>
</form>
</field>
</page>
</notebook>
<group>
<group>
<field name="remark"/>
@@ -251,7 +260,7 @@
<group>
<group>
<field name="materials_no" readonly="1" force_save="1"/>
<field name="gain_way" required="1"/>
<field name="gain_way" required="0"/>
<field name="tensile_strength" required="1"/>
<field name="hardness" required="1"/>
<field name="density" readonly="1"/>
@@ -270,9 +279,9 @@
<notebook>
<page string="供应商">
<field name='supplier_ids' class="supplier_ids_set_css">
<tree editable='bottom'>
<tree editable='bottom' delete="1">
<field name="sequence" widget="handle" string="序号"/>
<field name="partner_id" string="名称"/>
<field name="partner_id" string="名称" options="{'no_create': True}"/>
</tree>
</field>
</page>

View File

@@ -555,9 +555,9 @@
<field name="model">sf.tool.inventory</field>
<field name="arch" type="xml">
<tree string="功能刀具清单" create="1" edit="1" delete="0" editable="bottom">
<field name="name"/>
<field name="name" attrs="{'readonly': [('id', '!=', False)]}"/>
<field name="functional_cutting_tool_model_id"/>
<field name="tool_groups_id"/>
<field name="tool_groups_id" required="1" attrs="{'readonly': [('id', '!=', False)]}"/>
<field name="work_material"/>
<field name="life_span"/>
<field name="prefix" optional="hide"/>

View File

@@ -52,7 +52,7 @@ class Sf_Bf_Connect(http.Controller):
self_machining_embryo = request.env['product.template'].sudo().no_bom_product_create(
self_machining_id,
item,
order_id, 'self_machining', i)
order_id, 'self_machining', i, product)
# 创建坯料的bom
self_machining_bom = request.env['mrp.bom'].with_user(
request.env.ref("base.user_admin")).bom_create(
@@ -78,7 +78,7 @@ class Sf_Bf_Connect(http.Controller):
item,
order_id,
'subcontract',
i)
i, product)
if outsource_embryo == -3:
res['status'] = -3
res['message'] = '该订单模型的材料型号在您分配的工厂里暂未设置获取方式和供应商,请先配置再进行分配'
@@ -105,17 +105,19 @@ class Sf_Bf_Connect(http.Controller):
purchase_embryo = request.env['product.template'].sudo().no_bom_product_create(purchase_id,
item,
order_id,
'purchase', i)
'purchase', i,
product)
if purchase_embryo == -3:
res['status'] = -3
res['message'] = '该订单模型的材料型号在您分配的工厂里暂未设置获取方式和供应商,请先配置再进行分配'
request.cr.rollback()
return json.JSONEncoder().encode(res)
# 产品配置bom
product_bom_purchase = request.env['mrp.bom'].with_user(
request.env.ref("base.user_admin")).bom_create(product, 'normal', False)
product_bom_purchase.with_user(request.env.ref("base.user_admin")).bom_create_line_has(
purchase_embryo)
else:
# 产品配置bom
product_bom_purchase = request.env['mrp.bom'].with_user(
request.env.ref("base.user_admin")).bom_create(product, 'normal', False)
product_bom_purchase.with_user(request.env.ref("base.user_admin")).bom_create_line_has(
purchase_embryo)
order_id.with_user(request.env.ref("base.user_admin")).sale_order_create_line(product, item)
i += 1
res['factory_order_no'] = order_id.name
@@ -165,5 +167,5 @@ class jdElcp(http.Controller):
return json.dumps({'statusCode': 415, 'statusMessage': '订单号不能为空'}, ensure_ascii=False)
aa = request.env['sale.order'].sudo().search([('name', '=', kw['orderNo'])])
if aa:
aa.schedule_status = 'received'
# aa.schedule_status = 'received'
return json.dumps({'statusCode': 200, 'statusMessage': '修改成功'}, ensure_ascii=False)

View File

@@ -21,6 +21,7 @@ class Http(models.AbstractModel):
def _auth_method_sf_token(cls):
# 从headers.environ中获取对方传过来的token,timestamp,加密的校验字符串
datas = request.httprequest.headers.environ
_logger.info('datas:%s' % datas)
if 'HTTP_TOKEN' in datas:
_logger.info('token:%s' % datas['HTTP_TOKEN'])
# 查询密钥

View File

@@ -5,7 +5,7 @@ import requests
import cpca
# from odoo.exceptions import UserError
# from odoo.exceptions import ValidationError
from odoo import api, fields, models
from odoo import api, fields, models, _
from odoo.exceptions import ValidationError
_logger = logging.getLogger(__name__)
@@ -14,7 +14,7 @@ _logger = logging.getLogger(__name__)
class JdEclp(models.Model):
_inherit = 'stock.picking'
senderNickName = fields.Char(string='寄件工厂简称', required=True, default='MW')
senderNickName = fields.Char(string='寄件工厂简称', required=True, default='XT')
# receiverName = fields.Char(string='收件人姓名')
# receiverMobile = fields.Char(string='收件人电话')
@@ -56,7 +56,7 @@ class JdEclp(models.Model):
"""
res = super(JdEclp, self).button_validate()
if self.check_out == 'OUT':
if self.logistics_way != '自提':
if self.logistics_way != '自提' and self.logistics_way:
if self.logistics_status != '2':
raise ValidationError('非自提订单,必须先下物流单,并获取物流面单后才可出库!')
return res
@@ -67,9 +67,10 @@ class JdEclp(models.Model):
"""
判断是否为出库单
"""
if self.name:
is_check_out = self.name.split('/')
self.check_out = is_check_out[1]
for record in self:
if record.name:
is_check_out = record.name.split('/')
record.check_out = is_check_out[1]
@api.depends('carrier_tracking_ref')
def query_bill_pdf(self):
@@ -148,7 +149,7 @@ class JdEclp(models.Model):
},
}
_logger.info('准备调接口1')
url1 = config['bfm_url'] + '/api/create/jd/order'
url1 = config['bfm_url_new'] + '/api/create/jd/order'
requests.post(url1, json=json1, data=None)
_logger.info('调用成功1')
_logger.info('准备调接口2')
@@ -157,18 +158,31 @@ class JdEclp(models.Model):
'orderNo': self.origin,
},
}
url2 = config['bfm_url'] + '/api/get/jd/no'
url2 = config['bfm_url_new'] + '/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']
tem_ret = response.json().get('result')
if not tem_ret:
raise ValidationError('京东物流返回异常,请联系管理员')
self.carrier_tracking_ref = response.json()['result'].get('wbNo')
if not self.carrier_tracking_ref:
raise ValidationError('物流下单未成功,请联系管理员')
self.is_bill = True
self.logistics_status = '1'
# 京东物流下单后,销售订单状态改为待收货
self.env['sale.order'].search([('name', '=', self.origin)]).write({'scheduled_status': 'to receive'})
notification = {
'type': 'ir.actions.client',
'tag': 'display_notification',
'params': {
'title': _('成功'),
'type': 'success',
'message': '物流下单成功',
'sticky': False,
'next': {'type': 'ir.actions.client', 'tag': 'reload'}
}
}
# else:
# raise UserError("选择京东物流才能下单呦")
return notification
def get_bill(self):
"""
@@ -182,7 +196,7 @@ class JdEclp(models.Model):
'no': self.origin,
},
}
url1 = config['bfm_url'] + '/api/create/jd/bill'
url1 = config['bfm_url_new'] + '/api/create/jd/bill'
response = requests.post(url1, json=json1, data=None)
# _logger.info('调用成功2', response.json())

View File

@@ -30,7 +30,7 @@ class StatusChange(models.Model):
'process_start_time': process_start_time,
},
}
url1 = config['bfm_url'] + '/api/get/state/get_order'
url1 = config['bfm_url_new'] + '/api/get/state/get_order'
requests.post(url1, json=json1, data=None)
logging.info('接口已经执行=============')
@@ -54,7 +54,7 @@ class StatusChange(models.Model):
'state': '待派单',
},
}
url1 = config['bfm_url'] + '/api/get/state/cancel_order'
url1 = config['bfm_url_new'] + '/api/get/state/cancel_order'
requests.post(url1, json=json1, data=None)
return res

View File

@@ -32,7 +32,7 @@
<field name="is_bill" invisible="True"/>
<field name="logistics_status" invisible="True"/>
<field name="logistics_way" invisible="True"/>
<button string="京东物流下单" name="create_order" type="object" confirm="是否确认物流下单" class="btn-primary"
<button string="物流下单" name="create_order" type="object" confirm="是否确认物流下单" class="btn-primary"
attrs="{'invisible': ['|', '|', '|', ('check_out', '!=', 'OUT'), ('state', '!=', 'assigned'), ('is_bill', '=', True), ('logistics_way', '=', '自提')]}"/>
<button string="获取物流面单" name="get_bill" type="object" confirm="是否获取物流面单" class="btn-primary"
attrs="{'invisible': ['|', '|', '|', '|', ('check_out', '!=', 'OUT'), ('state', '!=', 'assigned'), ('logistics_status', '=', '2'), ('is_bill', '=', False), ('logistics_way', '=', '自提')]}"/>
@@ -45,42 +45,50 @@
<field name="model">stock.picking</field>
<field name="inherit_id" ref="delivery.view_picking_withcarrier_out_form"/>
<field name="arch" type="xml">
<field name="location_id" position="after">
<field name="logistics_status" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="logistics_way" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
</field>
</field>
</record>
<xpath expr="//group//field[@name='carrier_id']" position="after">
<!-- <field name="senderNickName" domain="[('self.name', 'like', '%OUT%')]"/> -->
<field name="senderNickName" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="expressItemName" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="deliveryType" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="receiverName" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="receiverMobile" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="receiverProvinceName" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="receiverCityName" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="receiverCountyName" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="receiverTownName" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="receiverCompany" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="remark" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="grossWeight" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="grossVolume" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="pickupBeginTime" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="bill_show" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="logistics_status"/>
<record id="tracking_only_view" model="ir.ui.view">
<field name="name">tracking only</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_form"/>
<field name="arch" type="xml">
<xpath expr="//form//sheet//notebook//page[@name='operations']" position="after">
<page string="发货信息" name="tracking">
<group>
<group>
<field name="senderNickName" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="expressItemName" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="grossWeight" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="grossVolume" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="deliveryType" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="receiverName" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="receiverMobile" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="receiverProvinceName" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="receiverCityName" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="receiverCountyName" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="receiverTownName" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="receiverCompany" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="remark" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
<field name="pickupBeginTime" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
</group>
<group>
<field name="logistics_status"/>
<field name="carrier_id"/>
<field name="carrier_tracking_ref"/>
<field name="bill_show" attrs="{'invisible': [('check_out', '!=', 'OUT')]}" string='面单下载'/>
<field name="bill_show" widget="pdf_viewer" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
</group>
</group>
</page>
</xpath>
<xpath expr="//group//field[@name='group_id']" position="after">
<field name="bill_show" widget="pdf_viewer" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
</xpath>
<!-- <xpath expr="//group[@name='other_infos']" position="after"> -->
<!-- <div> -->
<!-- <button string="京东物流下单" name="create_order" type="object" confirm="是否确认物流下单" class="btn-primary"/> -->
<!-- </div> -->
<!-- <div> -->
<!-- <button string="获取物流面单" name="get_bill" type="object" confirm="是否获取物流面单" class="btn-primary"/> -->
<!-- </div> -->
<!-- </xpath> -->
</field>
</record>
</odoo>

View File

@@ -1,5 +1,8 @@
# -*- coding: utf-8 -*-
from odoo import models, fields
import logging
import re
from odoo import models, fields, api
class ResProductCategory(models.Model):
@@ -28,6 +31,20 @@ class ResMrpBomMo(models.Model):
_inherit = 'mrp.bom'
subcontractor_id = fields.Many2one('res.partner', string='外包商')
subcontractor_name = fields.Char('', compute='_compute_subcontractor_ids', store=True)
@api.depends('subcontractor_id')
def _compute_subcontractor_ids(self):
for item in self:
if item.subcontractor_id:
logging.info("subcontractor_ids: %s" % item.subcontractor_ids.ids)
subcontractor_id = int(re.sub(r"\D", "", str(item.subcontractor_id.id)))
item.subcontractor_ids = [subcontractor_id]
item.subcontractor_name = item.subcontractor_id.name
logging.info("subcontractor_ids: %s" % item.subcontractor_ids.ids)
else:
item.subcontractor_ids = []
item.subcontractor_name = ''
def bom_create_line_has(self, embryo):
vals = {
@@ -37,7 +54,7 @@ class ResMrpBomMo(models.Model):
'product_qty': 1,
'product_uom_id': 1
}
return self.env['mrp.bom.line'].create(vals)
return self.env['mrp.bom.line'].sudo().create(vals)
# 业务平台分配工厂后在智能工厂先创建销售订单再创建该产品后再次进行创建bom
def bom_create(self, product, bom_type, product_type):
@@ -64,7 +81,7 @@ class ResMrpBomMo(models.Model):
qty = 1
if round(embryo.volume * raw_bom_line.materials_type_id.density / 1000000) > 1:
qty = round(embryo.volume * raw_bom_line.materials_type_id.density / 1000000)
bom_line = self.env['mrp.bom.line'].create({
bom_line = self.env['mrp.bom.line'].sudo().create({
'bom_id': self.id,
'product_id': raw_bom_line.id,
'product_tmpl_id': raw_bom_line.product_tmpl_id.id,

View File

@@ -0,0 +1,292 @@
from odoo import models, fields
import logging
import base64
class ResProductTemplate(models.Model):
_inherit = 'product.template'
# 模型的长,宽,高,体积,精度,材料
model_name = fields.Char('模型名称')
categ_type = fields.Selection(
[("成品", "成品"), ("胚料", "胚料"), ("原材料", "原材料")], string='产品的类别', related='categ_id.type', store=True)
model_long = fields.Float('模型长[mm]', digits=(16, 3))
model_width = fields.Float('模型宽[mm]', digits=(16, 3))
model_height = fields.Float('模型高[mm]', digits=(16, 3))
model_volume = fields.Float('模型体积[m³]')
model_machining_precision = fields.Selection([
('0.10', '±0.10mm'),
('0.05', '±0.05mm'),
('0.03', '±0.03mm'),
('0.02', '±0.02mm'),
('0.01', '±0.01mm')], string='加工精度')
product_model_type_id = fields.Many2one('sf.model.type', string='产品模型类型')
embryo_model_type_id = fields.Many2one('sf.model.type', string='胚料模型类型')
model_processing_panel = fields.Char('模型加工面板')
model_surface_process_id = fields.Many2one('sf.production.process', string='表面工艺')
model_process_parameters_id = fields.Many2one('sf.processing.technology', string='工艺参数')
# model_price = fields.Float('模型单价', digits=(16, 3))
model_remark = fields.Char('模型备注说明')
length = fields.Float('长[mm]', digits=(16, 3))
width = fields.Float('宽[mm]', digits=(16, 3))
height = fields.Float('高[mm]', digits=(16, 3))
materials_id = fields.Many2one('sf.production.materials', string='材料')
materials_type_id = fields.Many2one('sf.materials.model', string='材料型号')
single_manufacturing = fields.Boolean(string="单个制造")
upload_model_file = fields.Many2many('ir.attachment', 'upload_model_file_attachment_ref', string='上传模型文件')
model_code = fields.Char('模型编码')
is_bfm = fields.Boolean('业务平台是否自动创建', default=False)
def _get_volume_uom_id_from_ir_config_parameter(self):
product_length_in_feet_param = self.env['ir.config_parameter'].sudo().get_param('product.volume_in_cubic_feet')
if product_length_in_feet_param == '1':
return self.env.ref('uom.product_uom_cubic_foot')
else:
return self.env.ref('sf_dlm.product_uom_cubic_millimeter')
# model_file = fields.Binary('模型文件')
# 胚料的库存路线设置
# def _get_routes(self, route_type):
# route_manufacture = self.env.ref('mrp.route_warehouse0_manufacture', raise_if_not_found=False).sudo()
# route_mto = self.env.ref('stock.route_warehouse0_mto', raise_if_not_found=False).sudo()
# route_purchase = self.env.ref('purchase_stock.route_warehouse0_buy', raise_if_not_found=False).sudo()
# if route_manufacture and route_mto:
# # 外协
# if route_type == 'subcontract':
# route_subcontract = self.env.ref('mrp_subcontracting.route_resupply_subcontractor_mto',
# raise_if_not_found=False).sudo()
# return [route_mto.id, route_purchase.id, route_subcontract.id]
# elif route_type == 'purchase':
# # 采购
# return [route_mto.id, route_purchase.id]
# else:
# return [route_mto.id, route_manufacture.id]
# return []
# route_ids = fields.Many2many(default=lambda self: self._get_route())
# 业务平台分配工厂后在智能工厂先创建销售订单再创建该产品
def product_create(self, product_id, item, order_id, order_number, i):
copy_product_id = product_id.with_user(self.env.ref("base.user_admin")).copy()
copy_product_id.product_tmpl_id.active = True
model_type = self.env['sf.model.type'].search([], limit=1)
attachment = self.attachment_create(item['model_name'], item['model_data'])
vals = {
'name': '%s-%s-%s' % ('P', order_id.name, i),
'model_long': item['model_long'] + model_type.embryo_tolerance,
'model_width': item['model_width'] + model_type.embryo_tolerance,
'model_height': item['model_height'] + model_type.embryo_tolerance,
'model_volume': (item['model_long'] + model_type.embryo_tolerance) * (
item['model_width'] + model_type.embryo_tolerance) * (
item['model_height'] + model_type.embryo_tolerance),
'product_model_type_id': model_type.id,
'model_processing_panel': 'R',
'model_machining_precision': item['model_machining_precision'],
'model_code': item['barcode'],
'length': item['model_long'],
'width': item['model_width'],
'height': item['model_height'],
'volume': item['model_long'] * item['model_width'] * item['model_height'],
'model_file': '' if not item['model_file'] else base64.b64decode(item['model_file']),
'model_name': attachment.name,
'upload_model_file': [(6, 0, [attachment.id])],
# 'single_manufacturing': True,
# 'tracking': 'serial',
'list_price': item['price'],
# 'categ_id': self.env.ref('sf_dlm.product_category_finished_sf').id,
'materials_id': self.env['sf.production.materials'].search(
[('materials_no', '=', item['texture_code'])]).id,
'materials_type_id': self.env['sf.materials.model'].search(
[('materials_no', '=', item['texture_type_code'])]).id,
'model_surface_process_id': self.env['sf.production.process'].search(
[('process_encode', '=', item['surface_process_code'])]).id,
# 'model_process_parameters_id': self.env['sf.processing.technology'].search(
# [('process_encode', '=', item['process_parameters_code'])]).id,
'model_remark': item['remark'],
'default_code': '%s-%s' % (order_number, i),
# 'barcode': item['barcode'],
'active': True,
# 'route_ids': self._get_routes('')
}
copy_product_id.sudo().write(vals)
# product_id.product_tmpl_id.active = False
return copy_product_id
def attachment_create(self, name, data):
attachment = self.env['ir.attachment'].create({
'datas': base64.b64decode(data),
'type': 'binary',
'public': True,
'description': '模型文件',
'name': name
})
return attachment
# 创建胚料
def no_bom_product_create(self, product_id, item, order_id, route_type, i):
no_bom_copy_product_id = product_id.with_user(self.env.ref("base.user_admin")).copy()
no_bom_copy_product_id.product_tmpl_id.active = True
materials_id = self.env['sf.production.materials'].search(
[('materials_no', '=', item['texture_code'])])
materials_type_id = self.env['sf.materials.model'].search(
[('materials_no', '=', item['texture_type_code'])])
model_type = self.env['sf.model.type'].search([], limit=1)
supplier = self.env['mrp.bom'].get_supplier(materials_type_id)
logging.info('no_bom_copy_product_supplier-vals:%s' % supplier)
vals = {
'name': '%s-%s-%s [%s %s-%s * %s * %s]' % ('R',
order_id.name, i, materials_id.name, materials_type_id.name,
item['model_long'] + model_type.embryo_tolerance,
item['model_width'] + model_type.embryo_tolerance,
item['model_height'] + model_type.embryo_tolerance),
'length': item['model_long'] + model_type.embryo_tolerance,
'width': item['model_width'] + model_type.embryo_tolerance,
'height': item['model_height'] + model_type.embryo_tolerance,
'volume': (item['model_long'] + model_type.embryo_tolerance) * (
item['model_width'] + model_type.embryo_tolerance) * (
item['model_height'] + model_type.embryo_tolerance),
'embryo_model_type_id': model_type.id,
'list_price': item['price'],
'materials_id': materials_id.id,
'materials_type_id': materials_type_id.id,
'is_bfm': True,
# 'route_ids': self._get_routes(route_type),
# 'categ_id': self.env.ref('sf_dlm.product_category_embryo_sf').id,
# 'model_surface_process_id': self.env['sf.production.process'].search(
# [('process_encode', '=', item['surface_process_code'])]).id,
# 'model_process_parameters_id': self.env['sf.processing.technology'].search(
# [('process_encode', '=', item['process_parameters_code'])]).id,
'active': True
}
# 外协和采购生成的胚料需要根据材料型号绑定供应商
if route_type == 'subcontract' or route_type == 'purchase':
no_bom_copy_product_id.purchase_ok = True
no_bom_copy_product_id.seller_ids = [
(0, 0, {'partner_id': supplier.partner_id.id, 'delay': 1.0})]
if route_type == 'subcontract':
partner = self.env['res.partner'].search([('id', '=', supplier.partner_id.id)])
partner.is_subcontractor = True
no_bom_copy_product_id.write(vals)
logging.info('no_bom_copy_product_id-vals:%s' % vals)
# product_id.product_tmpl_id.active = False
return no_bom_copy_product_id
# @api.onchange('upload_model_file')
# def onchange_model_file(self):
# for item in self:
# if len(item.upload_model_file) > 1:
# raise ValidationError('只允许上传一个文件')
# if item.upload_model_file:
# file_attachment_id = item.upload_model_file[0]
# item.model_name = file_attachment_id.name
# # 附件路径
# report_path = file_attachment_id._full_path(file_attachment_id.store_fname)
# shapes = read_step_file(report_path)
# output_file = get_resource_path('sf_dlm', 'static/file', 'out.stl')
# write_stl_file(shapes, output_file, 'binary', 0.03, 0.5)
# # 转化为glb
# output_glb_file = get_resource_path('sf_dlm', 'static/file', 'out.glb')
# util_path = get_resource_path('sf_dlm', 'static/util')
# cmd = 'python %s/stl2gltf.py %s %s -b' % (util_path, output_file, output_glb_file)
# os.system(cmd)
# # 转base64
# with open(output_glb_file, 'rb') as fileObj:
# image_data = fileObj.read()
# base64_data = base64.b64encode(image_data)
# item.model_file = base64_data
class ResMrpBom(models.Model):
_inherit = 'mrp.bom'
subcontractor_id = fields.Many2one('res.partner', string='外包商')
def bom_create_line_has(self, embryo):
vals = {
'bom_id': self.id,
'product_id': embryo.id,
'product_tmpl_id': embryo.product_tmpl_id.id,
'product_qty': 1,
'product_uom_id': 1
}
return self.env['mrp.bom.line'].create(vals)
# 业务平台分配工厂后在智能工厂先创建销售订单再创建该产品后再次进行创建bom
def bom_create(self, product, bom_type, product_type):
bom_id = self.env['mrp.bom'].create({
'product_tmpl_id': product.product_tmpl_id.id,
'type': bom_type,
# 'subcontractor_id': '' or subcontract.partner_id.id,
'product_qty': 1,
'product_uom_id': 1
})
if bom_type == 'subcontract' and product_type is not False:
subcontract = self.get_supplier(product.materials_type_id)
bom_id.subcontractor_id = subcontract.partner_id.id
return bom_id
# 胚料BOM组件选取当前胚料原材料
# 然后根据当前的胚料的体积得出需要的原材料重量立方米m³ *材料密度 * 1000 = 所需原材料重量KG公斤
# 胚料所需原材料公式当前的胚料的体积立方米m³ *材料密度 * 1000 = 所需原材料重量KG公斤
def bom_create_line(self, embryo):
# 选取当前胚料原材料
raw_bom_line = self.get_raw_bom(embryo)
if raw_bom_line:
bom_line = self.env['mrp.bom.line'].create({
'bom_id': self.id,
'product_id': raw_bom_line.id,
'product_tmpl_id': raw_bom_line.product_tmpl_id.id,
'product_qty': round(embryo.volume * raw_bom_line.materials_type_id.density / 1000000),
'product_uom_id': raw_bom_line.uom_id.id,
})
return bom_line
else:
return False
# 查询材料型号默认排第一的供应商
def get_supplier(self, materials_type):
seller_id = self.env['sf.supplier.sort'].search(
[('materials_model_id', '=', materials_type.id)],
limit=1,
order='sequence asc')
return seller_id
# 匹配bom
def get_bom(self, product):
embryo_has = self.env['product.product'].search(
[('categ_id.type', '=', '胚料'), ('materials_type_id', '=', product.materials_type_id.id),
('length', '>', product.length), ('width', '>', product.width),
('height', '>', product.height), ('is_bfm', '=', False)
],
limit=1,
order='volume desc'
)
logging.info('get_bom-vals:%s' % embryo_has)
if embryo_has:
rate_of_waste = ((embryo_has.volume - product.model_volume) % embryo_has.volume) * 100
if rate_of_waste <= 20:
return embryo_has
else:
return
# 查bom的原材料
def get_raw_bom(self, product):
raw_bom = self.env['product.product'].search(
[('categ_id.type', '=', '原材料'), ('materials_type_id', '=', product.materials_type_id.id)])
return raw_bom
class ResProductCategory(models.Model):
_inherit = "product.category"
type = fields.Selection(
[("成品", "成品"), ("胚料", "胚料"), ("原材料", "原材料")],
default="", string="类型")
# @api.constrains('type')
# def _check_type(self):
# category = self.env['product.category'].search(
# [('type', '=', self.type)])
# if category:
# raise ValidationError("该类别已存在,请选择其他类别")

View File

@@ -0,0 +1,13 @@
from odoo import api, fields, models
class ResMrpWorkOrder(models.Model):
_inherit = 'mrp.workorder'
_order = 'sequence'
product_tmpl_id_length = fields.Float(related='production_id.product_tmpl_id.length', readonly=True, store=True, check_company=True, string="胚料长度(mm)")
product_tmpl_id_width = fields.Float(related='production_id.product_tmpl_id.width', readonly=True, store=True, check_company=True, string="胚料宽度(mm)")
product_tmpl_id_height = fields.Float(related='production_id.product_tmpl_id.height', readonly=True, store=True, check_company=True, string="胚料高度(mm)")
product_tmpl_id_materials_id = fields.Many2one(related='production_id.product_tmpl_id.materials_id', readonly=True, store=True, check_company=True, string="材料")
product_tmpl_id_materials_type_id = fields.Many2one(related='production_id.product_tmpl_id.materials_type_id', readonly=True, store=True, check_company=True, string="型号")

BIN
sf_dlm/static/file/out.glb Normal file

Binary file not shown.

BIN
sf_dlm/static/file/out.stl Normal file

Binary file not shown.

View File

@@ -0,0 +1,277 @@
import os
def stl_to_gltf(binary_stl_path, out_path, is_binary):
import struct
gltf2 = '''
{
"scenes" : [
{
"nodes" : [ 0 ]
}
],
"nodes" : [
{
"mesh" : 0
}
],
"meshes" : [
{
"primitives" : [ {
"attributes" : {
"POSITION" : 1
},
"indices" : 0
} ]
}
],
"buffers" : [
{
%s
"byteLength" : %d
}
],
"bufferViews" : [
{
"buffer" : 0,
"byteOffset" : 0,
"byteLength" : %d,
"target" : 34963
},
{
"buffer" : 0,
"byteOffset" : %d,
"byteLength" : %d,
"target" : 34962
}
],
"accessors" : [
{
"bufferView" : 0,
"byteOffset" : 0,
"componentType" : 5125,
"count" : %d,
"type" : "SCALAR",
"max" : [ %d ],
"min" : [ 0 ]
},
{
"bufferView" : 1,
"byteOffset" : 0,
"componentType" : 5126,
"count" : %d,
"type" : "VEC3",
"min" : [%f, %f, %f],
"max" : [%f, %f, %f]
}
],
"asset" : {
"version" : "2.0"
}
}
'''
header_bytes = 80
unsigned_long_int_bytes = 4
float_bytes = 4
vec3_bytes = 4 * 3
spacer_bytes = 2
num_vertices_in_face = 3
vertices = {}
indices = []
if not is_binary:
out_bin = os.path.join(out_path, "out.bin")
out_gltf = os.path.join(out_path, "out.gltf")
else:
out_bin = out_path
unpack_face = struct.Struct("<12fH").unpack
face_bytes = float_bytes*12 + 2
with open(path_to_stl, "rb") as f:
f.seek(header_bytes) # skip 80 bytes headers
num_faces_bytes = f.read(unsigned_long_int_bytes)
number_faces = struct.unpack("<I", num_faces_bytes)[0]
# the vec3_bytes is for normal
stl_assume_bytes = header_bytes + unsigned_long_int_bytes + number_faces * (vec3_bytes*3 + spacer_bytes + vec3_bytes)
assert stl_assume_bytes == os.path.getsize(path_to_stl), "stl is not binary or ill formatted"
minx, maxx = [9999999, -9999999]
miny, maxy = [9999999, -9999999]
minz, maxz = [9999999, -9999999]
vertices_length_counter = 0
data = struct.unpack("<" + "12fH"*number_faces, f.read())
len_data = len(data)
for i in range(0, len_data, 13):
for j in range(3, 12, 3):
x, y, z = data[i+j:i+j+3]
x = int(x*100000)/100000
y = int(y*100000)/100000
z = int(z*100000)/100000
tuple_xyz = (x, y, z);
try:
indices.append(vertices[tuple_xyz])
except KeyError:
vertices[tuple_xyz] = vertices_length_counter
vertices_length_counter += 1
indices.append(vertices[tuple_xyz])
if x < minx: minx = x
if x > maxx: maxx = x
if y < miny: miny = y
if y > maxy: maxy = y
if z < minz: minz = z
if z > maxz: maxz = z
# f.seek(spacer_bytes, 1) # skip the spacer
number_vertices = len(vertices)
vertices_bytelength = number_vertices * vec3_bytes # each vec3 has 3 floats, each float is 4 bytes
unpadded_indices_bytelength = number_vertices * unsigned_long_int_bytes
out_number_vertices = len(vertices)
out_number_indices = len(indices)
unpadded_indices_bytelength = out_number_indices * unsigned_long_int_bytes
indices_bytelength = (unpadded_indices_bytelength + 3) & ~3
out_bin_bytelength = vertices_bytelength + indices_bytelength
if is_binary:
out_bin_uir = ""
else:
out_bin_uir = '"uri": "out.bin",'
gltf2 = gltf2 % ( out_bin_uir,
#buffer
out_bin_bytelength,
# bufferViews[0]
indices_bytelength,
# bufferViews[1]
indices_bytelength,
vertices_bytelength,
# accessors[0]
out_number_indices,
out_number_vertices - 1,
# accessors[1]
out_number_vertices,
minx, miny, minz,
maxx, maxy, maxz
)
glb_out = bytearray()
if is_binary:
gltf2 = gltf2.replace(" ", "")
gltf2 = gltf2.replace("\n", "")
scene = bytearray(gltf2.encode())
scene_len = len(scene)
padded_scene_len = (scene_len + 3) & ~3
body_offset = padded_scene_len + 12 + 8
file_len = body_offset + out_bin_bytelength + 8
# 12-byte header
glb_out.extend(struct.pack('<I', 0x46546C67)) # magic number for glTF
glb_out.extend(struct.pack('<I', 2))
glb_out.extend(struct.pack('<I', file_len))
# chunk 0
glb_out.extend(struct.pack('<I', padded_scene_len))
glb_out.extend(struct.pack('<I', 0x4E4F534A)) # magic number for JSON
glb_out.extend(scene)
while len(glb_out) < body_offset:
glb_out.extend(b' ')
# chunk 1
glb_out.extend(struct.pack('<I', out_bin_bytelength))
glb_out.extend(struct.pack('<I', 0x004E4942)) # magin number for BIN
# print('<%dI' % len(indices))
# print(struct.pack('<%dI' % len(indices), *indices))
glb_out.extend(struct.pack('<%dI' % len(indices), *indices))
for i in range(indices_bytelength - unpadded_indices_bytelength):
glb_out.extend(b' ')
vertices = dict((v, k) for k,v in vertices.items())
# glb_out.extend(struct.pack('f',
# print([each_v for vertices[v_counter] for v_counter in range(number_vertices)]) # magin number for BIN
vertices = [vertices[i] for i in range(number_vertices)]
flatten = lambda l: [item for sublist in l for item in sublist]
# for v_counter in :
# v_3f = vertices[v_counter]
# all_floats_in_vertices.append(v_3f[0])
# all_floats_in_vertices.append(v_3f[1])
# all_floats_in_vertices.append(v_3f[2])
# for v_counter in range(number_vertices):
glb_out.extend(struct.pack('%df' % number_vertices*3, *flatten(vertices))) # magin number for BIN
# for v_counter in range(number_vertices):
# glb_out.extend(struct.pack('3f', *vertices[v_counter])) # magin number for BIN
# for (v_x, v_y, v_z), _ in sorted(vertices.items(), key=lambda x: x[1]):
# glb_out.extend(struct.pack('3f', v_x, v_y, v_z)) # magin number for BIN
# # glb_out.extend(struct.pack('f', v_y)) # magin number for BIN
# # glb_out.extend(struct.pack('f', v_z)) # magin number for BIN
with open(out_bin, "wb") as out:
out.write(glb_out)
if not is_binary:
with open(out_gltf, "w") as out:
out.write(gltf2)
print("Done! Exported to %s" %out_path)
if __name__ == '__main__':
import sys
if len(sys.argv) < 3:
print("use it like python3 stl_to_gltf.py /path/to/stl /path/to/gltf/folder")
print("or python3 stl_to_gltf.py /path/to/stl /path/to/glb/file -b")
sys.exit(1)
path_to_stl = sys.argv[1]
out_path = sys.argv[2]
if len(sys.argv) > 3:
is_binary = True
else:
is_binary = False
if out_path.lower().endswith(".glb"):
print("Use binary mode since output file has glb extension")
is_binary = True
else:
if is_binary:
print("output file should have glb extension but not %s", out_path)
if not os.path.exists(path_to_stl):
print("stl file does not exists %s" % path_to_stl)
if not is_binary:
if not os.path.isdir(out_path):
os.mkdir(out_path)
stl_to_gltf(path_to_stl, out_path, is_binary)

View File

@@ -55,7 +55,7 @@
</page>
<page name="inventory" position="attributes">
<attribute name="groups">
stock.group_stock_user,product.group_stock_packaging,sf_base.group_sale_salemanager,sf_base.group_sale_director,sf_base.group_purchase,sf_base.group_purchase_director
stock.group_stock_user,product.group_stock_packaging,sf_base.group_sale_salemanager,sf_base.group_sale_director,sf_base.group_purchase,sf_base.group_purchase_director,sf_base.group_plan_dispatch
</attribute>
</page>
</field>
@@ -110,6 +110,9 @@
<field name="subcontractor_id"
attrs="{'invisible': [('type', '!=', 'subcontract')], 'required': [('type', '=', 'subcontract')]}"/>
</field>
<xpath expr="//group" position="after">
<field name="subcontractor_name" attrs="{'invisible': True}"/>
</xpath>
</field>
</record>

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="view_mrp_production_workorder_tray_form_inherit_sf1" model="ir.ui.view">
<field name="name">production.workorder.dlm</field>
<field name="model">mrp.workorder</field>
<field name="inherit_id" ref="sf_manufacturing.view_mrp_production_workorder_tray_form_inherit_sf"/>
<field name="arch" type="xml">
<xpath expr="//page[1]" position="before">
<page string="开料要求" attrs='{"invisible": [("routing_type","!=","切割")]}'>
<group>
<group>
<field name="product_tmpl_id_materials_id" widget="many2one"/>
<field name="product_tmpl_id_materials_type_id" widget="many2one"/>
</group>
<group>
<field name="product_tmpl_id_length"/>
<field name="product_tmpl_id_width"/>
<field name="product_tmpl_id_height"/>
</group>
</group>
</page>
</xpath>
</field>
</record>
</odoo>

View File

@@ -22,6 +22,16 @@
<field name="company_id" ref="base.main_company"/>
</record>
<record id="stock_location_tool_dismantle" model="stock.location">
<field name="name">拆解</field>
<field name="location_id" ref="stock.stock_location_locations_virtual"/>
<field name="usage">internal</field>
<field name="barcode">DJCJ</field>
<field name="scrap_location">true</field>
<field name="active">true</field>
<field name="company_id" ref="base.main_company"/>
</record>
<record id="after_assembly_picking_in" model="stock.picking.type">
<field name="name">刀具组装入库</field>

View File

@@ -10,6 +10,7 @@
<field name='categ_id' class="custom_required" attrs="{'readonly': [('id', '!=', False)]}"/>
<field name='is_bfm' invisible="1"/>
<field name='categ_type' invisible="1"/>
<field name='part_number' attrs="{'invisible': [('categ_type', '!=', '成品')]}"/>
<field name='manual_quotation' attrs="{'invisible':[('upload_model_file', '=', [])]}"/>
<field name="upload_model_file"
widget="many2many_binary"
@@ -31,24 +32,28 @@
options="{'no_create': True}"
attrs="{'invisible': [('categ_type', '!=', '刀具')],'required': [('categ_type', '=', '刀具')],'readonly': [('id', '!=', False)]}"
placeholder="请选择"/>
<field name="brand_id" options="{'no_create': True}" placeholder="请选择"
attrs="{'invisible': [('categ_type', '!=', '刀具')],'required': [('categ_type', '=', '刀具')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_model_id" placeholder="请选择" class="custom_required"
domain="[('cutting_tool_material_id','=',cutting_tool_material_id)]"
options="{'no_create': True}"
domain="[('cutting_tool_material_id','=',cutting_tool_material_id),('brand_id', '=', brand_id)]"
context="{'default_cutting_tool_material_id': cutting_tool_material_id}"
attrs="{'invisible': [('categ_type', '!=', '刀具')],'required': [('categ_type', '=', '刀具')],'readonly': [('id', '!=', False)]}">
</field>
<!-- <button name="%(sf_base.action_sf_cutting_tool_standard_library)d" string="新建" type="action"-->
<!-- context="{'default_cutting_tool_material_id': cutting_tool_material_id}"/>-->
<field name="specification_id" placeholder="请选择" class="custom_required"
options="{'no_create': True}"
context="{'default_cutting_tool_type': cutting_tool_type,'default_standard_library_id':cutting_tool_model_id}"
attrs="{'invisible': [('categ_type', '!=', '刀具')],'required': [('categ_type', '=', '刀具')],'readonly': [('id', '!=', False)]}"
domain="[('standard_library_id','=',cutting_tool_model_id)]"/>
<field name="fixture_material_id"
attrs="{'invisible': [('categ_type', '!=', '夹具')],'required': [('categ_type', '=', '夹具')]}"
placeholder="请选择" options="{'no_create': True}"/>
<field name="fixture_model_id" string="型号" placeholder="请选择" options="{'no_create': True}"
<field name="fixture_model_id" string="型号名称" placeholder="请选择" options="{'no_create': True}"
attrs="{'invisible': [('categ_type', '!=', '夹具')],'required': [('categ_type', '=', '夹具')]}"
domain="[('fixture_material_id','=',fixture_material_id)]"/>
<field name="specification_fixture_id" string="规格" placeholder="请选择"
<field name="specification_fixture_id" string="物料号" placeholder="请选择"
options="{'no_create': True}"
attrs="{'invisible': [('categ_type', '!=', '夹具')],'required': [('categ_type', '=', '夹具')]}"
domain="[('fixture_model_id','=',fixture_model_id)]"/>
@@ -83,7 +88,7 @@
</div>
<field name="model_volume" string="体积[mm³]"/>
<field name="product_model_type_id" string="模型类型"/>
<field name="model_processing_panel" placeholder="例如R,U" string="加工面板"/>
<field name="model_processing_panel" placeholder="例如R,U" string="加工面板" readonly="1"/>
<field name="model_machining_precision"/>
<field name="model_process_parameters_ids" string="表面工艺参数"
widget="many2many_tags"
@@ -93,6 +98,16 @@
</group>
</page>
</xpath>
<xpath expr="//field[@name='name']" position="attributes">
<attribute name="attrs">{'readonly': ['|',('id','!=',False),('categ_type', '=',
'刀具')], 'required': True}
</attribute>
</xpath>
<!-- <xpath expr="//field[@name='default_code']" position="attributes">-->
<!-- <attribute name="attrs">{'readonly': [('categ_type', '=', '刀具')], 'invisible':-->
<!-- [('product_variant_count', '>' , 1)]}-->
<!-- </attribute>-->
<!-- </xpath>-->
</field>
</record>
@@ -290,7 +305,7 @@
<field name="cutting_tool_blade_type"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_coarse_medium_fine" string="粗/中/精" placeholder="请选择"
attrs="{'required': [('cutting_tool_type','=','整体式刀具')],'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))],'readonly': [('id', '!=', False)]}"/>
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))],'readonly': [('id', '!=', False)]}"/>
<!--整体式刀具-->
<field name="cutting_tool_shank_diameter" string="柄部直径(mm)" class="diameter"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')],'readonly': [('id', '!=', False)]}"/>
@@ -436,7 +451,7 @@
<field name="cutting_speed_ids" string="" widget="one2many"
attrs="{'readonly': [('id', '!=', False)]}" class="fixTableCss">
<tree editable="bottom">
<field name="execution_standard_id"/>
<field name="execution_standard_id" options="{'no_create': True}"/>
<field name="material_code"/>
<field name="material_grade"/>
<field name="tensile_strength"/>
@@ -453,7 +468,8 @@
<tree editable="bottom">
<!-- <field name="cutting_speed"-->
<!-- attrs="{'readonly': [('materials_type_id','!=',False)]}"/>-->
<field name="materials_type_id" placeholder="请选择"/>
<field name="materials_type_id" options="{'no_create': True}"
placeholder="请选择"/>
<field name="blade_diameter"/>
<field name="feed_per_tooth"/>
</tree>
@@ -464,8 +480,8 @@
<page string="夹具物料参数" attrs="{'invisible': [('categ_type', '!=', '夹具')]}">
<group>
<group>
<field name="brand_id" placeholder="请选择"/>
<field name="multi_mounting_type_id" placeholder="请选择"
<field name="brand_id" placeholder="请选择" options="{'no_create': True}"/>
<field name="multi_mounting_type_id" placeholder="请选择" options="{'no_create': True}"
attrs="{'required': [('categ_type', '=', '夹具')]}"/>
<field name="length" string="长度(mm)"/>
<field name="width" string="宽度(mm)"/>
@@ -553,14 +569,16 @@
<field name="boolean_chip_blowing_function" string="是否有吹屑功能"
attrs="{'invisible': [('fixture_material_type', 'not in', ['零点卡盘','零点托盘'])]}"/>
<field name="materials_model_id" placeholder="请选择"/>
<field name="materials_model_id" placeholder="请选择" options="{'no_create': True}"/>
<field name="interface_materials_model_id" placeholder="请选择" string="接口类型"
options="{'no_create': True}"
attrs="{'invisible': [('fixture_material_type', 'not in', ['气动夹具','虎钳夹具','磁吸夹具'])]}"/>
<field name="type_of_drive" placeholder="请选择" string="驱动方式"
attrs="{'invisible': [('fixture_material_type', 'not in', ['零点托盘','气动夹具','虎钳夹具','磁吸夹具','转接板(锁板)夹具','三爪卡盘'])]}"/>
<field name="unlocking_method" string="解锁方式" placeholder="请选择"
attrs="{'invisible': [('fixture_material_type', 'not in', ['零点卡盘'])]}"/>
<field name="machine_tool_type_id" string="适用机床型号" placeholder="请选择"
options="{'no_create': True}"
attrs="{'invisible': [('fixture_material_type', 'not in', ['零点卡盘'])]}"/>
</group>

View File

@@ -1,2 +1,3 @@
from . import models
from . import wizard
from . import controllers

View File

@@ -0,0 +1 @@
from . import controllers

View File

@@ -0,0 +1,98 @@
# -*- coding: utf-8 -*-
import ast
import json
import logging
from odoo import http
from odoo.http import request
class Sf_Dashboard_Connect(http.Controller):
@http.route('/api/get_machine_datas/list', type='http', auth='public', methods=['GET', 'POST'], csrf=False,
cors="*")
def get_machine_datas_list(self, **kw):
"""
拿到机床数据返回给大屏展示
:param kw:
:return:
"""
res = {'status': 1, 'message': '成功', 'data': []}
logging.info('前端请求机床数据的参数为:%s' % kw)
# tem_list = [
# "XT-GNJC-WZZX-X800-Y550-Z550-T24-A5-1", "XT-GNJC-LSZX-X800-Y550-Z550-T24-A3-3",
# "XT-GNJC-LSZX-X800-Y550-Z550-T24-A3-4", "XT-GNJC-LSZX-X800-Y550-Z550-T24-A3-5",
# "XT-GNJC-LSZX-X800-Y550-Z550-T24-A3-6", "XT-GNJC-LSZX-X800-Y550-Z550-T24-A3-7",
# "XT-GNJC-LSZX-X800-Y550-Z550-T24-A3-8", "XT-GNJC-WZZX-X800-Y550-Z550-T24-A5-2",
# "XT-GNJC-GSZG-X600-Y400-Z350-T21-A3-9", "XT-GNJC-GSZG-X600-Y400-Z350-T21-A3-10",
# "XT-GNJC-GSZG-X600-Y400-Z350-T21-A3-11", "XT-GNJC-GSZG-X600-Y400-Z350-T21-A3-12",
# "XT-GNJC-GSZG-X600-Y400-Z350-T21-A3-13", "XT-GNJC-GSZG-X600-Y400-Z350-T21-A3-14"
# ]
try:
equipment_obj = request.env['maintenance.equipment'].sudo()
# 获取请求的机床数据
machine_list = ast.literal_eval(kw['machine_list'])
for item in machine_list:
machine_data = equipment_obj.search([('code', '=', item)])
if machine_data:
res['data'].append({
'id': machine_data.id,
'name': machine_data.name,
'code': machine_data.code,
'status': machine_data.status,
'run_status': machine_data.run_status,
'run_time': machine_data.run_time,
'system_date': machine_data.system_date,
'system_time': machine_data.system_time,
'cut_time': machine_data.cut_time,
'cut_status': machine_data.cut_status,
'program': machine_data.program,
'program_name': machine_data.program_name,
'program_status': machine_data.program_status,
'tool_num': machine_data.tool_num,
'machine_power_on_time': machine_data.machine_power_on_time,
'product_counts': machine_data.product_counts,
'mode': machine_data.mode,
'start_time': machine_data.start_time,
'end_time': machine_data.end_time,
'program_start_time': machine_data.program_start_time,
'program_end_time': machine_data.program_end_time,
'standby_start_time': machine_data.standby_start_time,
'standby_end_time': machine_data.standby_end_time,
'offline_start_time': machine_data.offline_start_time,
'offline_end_time': machine_data.offline_end_time,
'emg_status': machine_data.emg_status,
'current_program': machine_data.current_program,
'current_program_seq': machine_data.current_program_seq,
'x_abs_pos': machine_data.x_abs_pos,
'y_abs_pos': machine_data.y_abs_pos,
'z_abs_pos': machine_data.z_abs_pos,
'feed_speed_set': machine_data.feed_speed_set,
'act_feed_speed': machine_data.act_feed_speed,
'spindle_speed_set': machine_data.spindle_speed_set,
'act_spindle_speed': machine_data.act_spindle_speed,
'spindle_load': machine_data.spindle_load,
'x_axis_load': machine_data.x_axis_load,
'y_axis_load': machine_data.y_axis_load,
'z_axis_load': machine_data.z_axis_load,
'rapid_feed': machine_data.rapid_feed,
'feed_rate': machine_data.feed_rate,
'x_mach_coord': machine_data.x_mach_coord,
'y_mach_coord': machine_data.y_mach_coord,
'z_mach_coord': machine_data.z_mach_coord,
'x_rel_coord': machine_data.x_rel_coord,
'y_rel_coord': machine_data.y_rel_coord,
'z_rel_coord': machine_data.z_rel_coord,
'x_dis_coord': machine_data.x_dis_coord,
'y_dis_coord': machine_data.y_dis_coord,
'z_dis_coord': machine_data.z_dis_coord,
'alarm_time': machine_data.alarm_time,
'alarm_msg': machine_data.alarm_msg,
'clear_time': machine_data.clear_time,
})
return json.JSONEncoder().encode(res)
except Exception as e:
logging.info('前端请求机床数据失败,原因:%s' % e)
res['status'] = -1
res['message'] = '前端请求机床数据失败,原因:%s' % e
return json.JSONEncoder().encode(res)

View File

@@ -123,128 +123,159 @@ class Machine_ftp(models.Model):
# workorder_ids = fields.One2many('mrp.workorder', 'machine_tool_id', string='工单')
# 机床配置项目
# ftp相关
ftp_num = fields.Char('ftp账号')
ftp_pwd = fields.Char('ftp密码')
ftp_host = fields.Char('ftp地址')
ftp_port = fields.Integer('ftp端口')
ftp_remote_path = fields.Char('机床ftp路径')
# 补偿值写入相关
x_compensation_node = fields.Char('x补偿值节点')
y_compensation_node = fields.Char('y补偿值节点')
# 数采配置相关
machine_ip = fields.Char('机床IP')
machine_signed = fields.Char('机床刷新间隔')
machine_status = fields.Char('机床在线状态')
machine_cnc_type = fields.Char('机床CNC型号')
machine_axis_count = fields.Char('机床轴总数')
machine_run_status = fields.Char('机床运行状态')
machine_emg_status = fields.Char('机床急停状态')
machine_cut_status = fields.Char('机床当前切削状态')
machine_mode = fields.Char('机床当前操作模式')
machine_spindle_load = fields.Char('机床主轴负载')
machine_x_mach = fields.Char('机床X轴机械坐标')
machine_x_abs_mach = fields.Char('机床X轴当前位置')
machine_x_rel_mach = fields.Char('机床X轴相对工件坐标')
machine_x_dis_mach = fields.Char('机床X轴目标距离')
machine_x_axis_load = fields.Char('机床X轴伺服轴负载')
machine_y_mach = fields.Char('机床Y轴机械坐标')
machine_y_abs_mach = fields.Char('机床Y轴当前位置')
machine_y_rel_mach = fields.Char('机床Y轴相对工件坐标')
machine_y_dis_mach = fields.Char('机床Y轴目标距离')
machine_y_axis_load = fields.Char('机床Y轴伺服轴负载')
machine_z_mach = fields.Char('机床Z轴机械坐标')
machine_z_abs_mach = fields.Char('机床Z轴当前位置')
machine_z_rel_mach = fields.Char('机床Z轴相对工件坐标')
machine_z_dis_mach = fields.Char('机床Z轴目标距离')
machine_z_axis_load = fields.Char('机床Z轴伺服轴负载')
machine_tool_num = fields.Char('机床当前刀位号')
machine_program = fields.Char('机床主程序名称')
machine_current_prg = fields.Char('机床当前执行指令')
machine_prg_seq = fields.Char('机床当前执行语句号')
machine_spindle_speed_set = fields.Char('机床设定主轴速度')
machine_act_spindle_speed = fields.Char('机床实际主轴转速')
machine_feed_speed_set = fields.Char('机床设定进给速度')
machine_act_feed_speed = fields.Char('机床实际进给速度')
machine_spindle_feed = fields.Char('机床主轴倍率')
machine_feed_rate = fields.Char('机床进给倍率')
machine_rapid_feed = fields.Char('机床快速移动倍率')
machine_run_time = fields.Char('机床运行时间')
machine_cut_time = fields.Char('机床切削时间')
machine_keep_alive_time = fields.Char('机床上电时间')
machine_circle_time = fields.Char('机床循环时间')
machine_product_counts = fields.Char('机床加工件数')
machine_system_date = fields.Char('机床系统日期')
machine_system_time = fields.Char('机床系统时间')
machine_alarm_msg = fields.Char('机床系统报警')
# # 机床配置项目
# # ftp相关
# ftp_num = fields.Char('ftp账号')
# ftp_pwd = fields.Char('ftp密码')
# ftp_host = fields.Char('ftp地址')
# ftp_port = fields.Integer('ftp端口')
# ftp_remote_path = fields.Char('机床ftp路径')
# # 补偿值写入相关
# x_compensation_node = fields.Char('x补偿值节点')
# y_compensation_node = fields.Char('y补偿值节点')
# # 数采配置相关
# machine_ip = fields.Char('机床IP')
# machine_signed = fields.Char('机床刷新间隔')
# machine_status = fields.Char('机床在线状态')
# machine_cnc_type = fields.Char('机床CNC型号')
# machine_axis_count = fields.Char('机床轴总数')
# machine_run_status = fields.Char('机床运行状态')
# machine_emg_status = fields.Char('机床急停状态')
# machine_cut_status = fields.Char('机床当前切削状态')
# machine_mode = fields.Char('机床当前操作模式')
# machine_spindle_load = fields.Char('机床主轴负载')
# machine_x_mach = fields.Char('机床X轴机械坐标')
# machine_x_abs_mach = fields.Char('机床X轴当前位置')
# machine_x_rel_mach = fields.Char('机床X轴相对工件坐标')
# machine_x_dis_mach = fields.Char('机床X轴目标距离')
# machine_x_axis_load = fields.Char('机床X轴伺服轴负载')
# machine_y_mach = fields.Char('机床Y轴机械坐标')
# machine_y_abs_mach = fields.Char('机床Y轴当前位置')
# machine_y_rel_mach = fields.Char('机床Y轴相对工件坐标')
# machine_y_dis_mach = fields.Char('机床Y轴目标距离')
# machine_y_axis_load = fields.Char('机床Y轴伺服轴负载')
# machine_z_mach = fields.Char('机床Z轴机械坐标')
# machine_z_abs_mach = fields.Char('机床Z轴当前位置')
# machine_z_rel_mach = fields.Char('机床Z轴相对工件坐标')
# machine_z_dis_mach = fields.Char('机床Z轴目标距离')
# machine_z_axis_load = fields.Char('机床Z轴伺服轴负载')
# machine_tool_num = fields.Char('机床当前刀位号')
# machine_program = fields.Char('机床主程序名称')
# machine_current_prg = fields.Char('机床当前执行指令')
# machine_prg_seq = fields.Char('机床当前执行语句号')
# machine_spindle_speed_set = fields.Char('机床设定主轴速度')
# machine_act_spindle_speed = fields.Char('机床实际主轴转速')
# machine_feed_speed_set = fields.Char('机床设定进给速度')
# machine_act_feed_speed = fields.Char('机床实际进给速度')
# machine_spindle_feed = fields.Char('机床主轴倍率')
# machine_feed_rate = fields.Char('机床进给倍率')
# machine_rapid_feed = fields.Char('机床快速移动倍率')
# machine_run_time = fields.Char('机床运行时间')
# machine_cut_time = fields.Char('机床切削时间')
# machine_keep_alive_time = fields.Char('机床上电时间')
# machine_circle_time = fields.Char('机床循环时间')
# machine_product_counts = fields.Char('机床加工件数')
# machine_system_date = fields.Char('机床系统日期')
# machine_system_time = fields.Char('机床系统时间')
# machine_alarm_msg = fields.Char('机床系统报警')
# 刀位配置
tool_num1 = fields.Char('刀位1')
tool_num2 = fields.Char('刀位2')
tool_num3 = fields.Char('刀位3')
tool_num4 = fields.Char('刀位4')
tool_num5 = fields.Char('刀位5')
tool_num6 = fields.Char('刀位6')
tool_num7 = fields.Char('刀位7')
tool_num8 = fields.Char('刀位8')
tool_num9 = fields.Char('刀位9')
tool_num10 = fields.Char('刀位10')
tool_num11 = fields.Char('刀位11')
tool_num12 = fields.Char('刀位12')
tool_num13 = fields.Char('刀位13')
tool_num14 = fields.Char('刀位14')
tool_num15 = fields.Char('刀位15')
tool_num16 = fields.Char('刀位16')
tool_num17 = fields.Char('刀位17')
tool_num18 = fields.Char('刀位18')
tool_num19 = fields.Char('刀位19')
tool_num20 = fields.Char('刀位20')
tool_num21 = fields.Char('刀位21')
tool_num22 = fields.Char('刀位22')
tool_num23 = fields.Char('刀位23')
tool_num24 = fields.Char('刀位24')
# # 刀位配置
# tool_num1 = fields.Char('刀位1')
# tool_num2 = fields.Char('刀位2')
# tool_num3 = fields.Char('刀位3')
# tool_num4 = fields.Char('刀位4')
# tool_num5 = fields.Char('刀位5')
# tool_num6 = fields.Char('刀位6')
# tool_num7 = fields.Char('刀位7')
# tool_num8 = fields.Char('刀位8')
# tool_num9 = fields.Char('刀位9')
# tool_num10 = fields.Char('刀位10')
# tool_num11 = fields.Char('刀位11')
# tool_num12 = fields.Char('刀位12')
# tool_num13 = fields.Char('刀位13')
# tool_num14 = fields.Char('刀位14')
# tool_num15 = fields.Char('刀位15')
# tool_num16 = fields.Char('刀位16')
# tool_num17 = fields.Char('刀位17')
# tool_num18 = fields.Char('刀位18')
# tool_num19 = fields.Char('刀位19')
# tool_num20 = fields.Char('刀位20')
# tool_num21 = fields.Char('刀位21')
# tool_num22 = fields.Char('刀位22')
# tool_num23 = fields.Char('刀位23')
# tool_num24 = fields.Char('刀位24')
# 机床采集项目
timestamp = fields.Datetime('时间戳', readonly=True)
signed = fields.Integer('刷新间隔', readonly=True)
status = fields.Boolean('在线状态', readonly=True)
time_on = fields.Char('总在线时长', readonly=True)
time_on_now = fields.Char('本次在线时长', readonly=True)
tool_num = fields.Integer('当前刀具', readonly=True)
program = fields.Char('当前程序', readonly=True)
run_status = fields.Selection([('0', '空闲中'), ('1', '加工中'), ('2', '加工中'), ('3', '加工中')], string='运行状态',
readonly=True, default='0')
run_time = fields.Char('总运行时长', readonly=True)
cut_time = fields.Char('切削时', readonly=True)
cut_status = fields.Selection([('0', '未切削'), ('1', '切削中'), ('2', '切削中'), ('3', '切削中')], string='切削状态',
readonly=True, default='0')
spindle_speed = fields.Char('主轴转速', readonly=True)
status = fields.Boolean('机床在线状态', readonly=True)
# run_status = fields.Selection([('0', '空闲中'), ('1', '加工中'), ('2', '加工中'), ('3', '加工中')], string='机床运行状态',
# readonly=True, default='0')
run_status = fields.Char('机床运行状态', readonly=True)
run_time = fields.Char('机床累计运行时长', readonly=True)
# 机床系统日期
system_date = fields.Char('机床系统日期', readonly=True)
# 机床系统时间
system_time = fields.Char('机床系统时间', readonly=True)
cut_time = fields.Char('机床累计切削时', readonly=True)
# cut_status = fields.Selection([('0', '未切削'), ('1', '切削中'), ('2', '切削中'), ('3', '切削中')], string='机床当前切削状态',
# readonly=True, default='0')
cut_status = fields.Char('机床当前切削状态', readonly=True)
# 当前程序名
program = fields.Char('机床当前程序', readonly=True)
# 当前刀具号
tool_num = fields.Integer('机床当前刀具号', readonly=True)
# 机床通电开机时间, 机床加工件数, 机床当前操作模式, 开始加工时间, 结束加工时间, 加工程序开始时间, 加工程序结束时间, 待机开始时间,
# 待机结束时间, 机床离线开始时间, 机床离线结束时间, 机床急停状态, 机床主程序名称, 程序运行的状态, 机床当前执行指令, 机床当前执行语句号
# 机床X轴当前位置, 机床Y轴当前位置, 机床Z轴当前位置
machine_power_on_time = fields.Char('机床通电开机时间', readonly=True)
product_counts = fields.Char('机床加工件数', readonly=True)
mode = fields.Char('机床当前操作模式', readonly=True)
start_time = fields.Char('开始加工时间', readonly=True)
end_time = fields.Char('结束加工时间', readonly=True)
program_start_time = fields.Char('加工程序开始时间', readonly=True)
program_end_time = fields.Char('加工程序结束时间', readonly=True)
standby_start_time = fields.Char('待机开始时间', readonly=True)
standby_end_time = fields.Char('待机结束时间', readonly=True)
offline_start_time = fields.Char('机床离线开始时间', readonly=True)
offline_end_time = fields.Char('机床离线结束时间', readonly=True)
emg_status = fields.Char('机床急停状态', readonly=True)
program_name = fields.Char('机床主程序名称', readonly=True)
program_status = fields.Char('程序运行状态', readonly=True)
current_program = fields.Char('机床当前执行指令', readonly=True)
current_program_seq = fields.Char('机床当前执行语句号', readonly=True)
x_abs_pos = fields.Char('机床X轴当前位置(mm)', readonly=True)
y_abs_pos = fields.Char('机床Y轴当前位置(mm)', readonly=True)
z_abs_pos = fields.Char('机床Z轴当前位置(mm)', readonly=True)
tool_num_process_time1 = fields.Char('刀位1', readonly=True, default='0')
tool_num_process_time2 = fields.Char('刀位2', readonly=True, default='0')
tool_num_process_time3 = fields.Char('刀位3', readonly=True, default='0')
tool_num_process_time4 = fields.Char('刀位4', readonly=True, default='0')
tool_num_process_time5 = fields.Char('刀位5', readonly=True, default='0')
tool_num_process_time6 = fields.Char('刀位6', readonly=True, default='0')
tool_num_process_time7 = fields.Char('刀位7', readonly=True, default='0')
tool_num_process_time8 = fields.Char('刀位8', readonly=True, default='0')
tool_num_process_time9 = fields.Char('刀位9', readonly=True, default='0')
tool_num_process_time10 = fields.Char('刀位10', readonly=True, default='0')
tool_num_process_time11 = fields.Char('刀位11', readonly=True, default='0')
tool_num_process_time12 = fields.Char('刀位12', readonly=True, default='0')
tool_num_process_time13 = fields.Char('刀位13', readonly=True, default='0')
tool_num_process_time14 = fields.Char('刀位14', readonly=True, default='0')
tool_num_process_time15 = fields.Char('刀位15', readonly=True, default='0')
tool_num_process_time16 = fields.Char('刀位16', readonly=True, default='0')
tool_num_process_time17 = fields.Char('刀位17', readonly=True, default='0')
tool_num_process_time18 = fields.Char('刀位18', readonly=True, default='0')
tool_num_process_time19 = fields.Char('刀位19', readonly=True, default='0')
tool_num_process_time20 = fields.Char('刀位20', readonly=True, default='0')
tool_num_process_time21 = fields.Char('刀位21', readonly=True, default='0')
tool_num_process_time22 = fields.Char('刀位22', readonly=True, default='0')
tool_num_process_time23 = fields.Char('刀位23', readonly=True, default='0')
tool_num_process_time24 = fields.Char('刀位24', readonly=True, default='0')
# 机床设定进给速度, 机床实际进给速度, 机床设定主轴转速, 机床实际主轴转速, 机床主轴负载, 机床X轴伺服轴负载, 机床Y轴伺服轴负载
# 机床Z轴伺服轴负载, 机床快速移动倍率, 机床进给倍率, 机床X轴机械坐标, 机床Y轴机械坐标, 机床Z轴机械坐标, 机床X轴相对工件坐标
# 机床Y轴相对工件坐标, 机床Z轴相对工件坐标, 机床X轴目标距离, 机床Y轴目标距离, 机床Z轴目标距离
feed_speed_set = fields.Char('机床设定进给速度(mm/min)', readonly=True)
act_feed_speed = fields.Char('机床实际进给速度(mm/min)', readonly=True)
spindle_speed_set = fields.Char('机床设定主轴转速(r/min)', readonly=True)
act_spindle_speed = fields.Char('机床实际主轴转速(r/min)', readonly=True)
spindle_load = fields.Char('机床主轴负载(%)', readonly=True)
x_axis_load = fields.Char('机床X轴伺服轴负载(%)', readonly=True)
y_axis_load = fields.Char('机床Y轴伺服轴负载(%)', readonly=True)
z_axis_load = fields.Char('机床Z轴伺服轴负载(%)', readonly=True)
rapid_feed = fields.Char('机床快速移动倍率(%)', readonly=True)
feed_rate = fields.Char('机床进给倍率(%)', readonly=True)
x_mach_coord = fields.Char('机床X轴机械坐标(mm)', readonly=True)
y_mach_coord = fields.Char('机床Y轴机械坐标(mm)', readonly=True)
z_mach_coord = fields.Char('机床Z轴机械坐标(mm)', readonly=True)
x_rel_coord = fields.Char('机床X轴相对工件坐标(mm)', readonly=True)
y_rel_coord = fields.Char('机床Y轴相对工件坐标(mm)', readonly=True)
z_rel_coord = fields.Char('机床Z轴相对工件坐标(mm)', readonly=True)
x_dis_coord = fields.Char('机床X轴目标距离(mm)', readonly=True)
y_dis_coord = fields.Char('机床Y轴目标距离(mm)', readonly=True)
z_dis_coord = fields.Char('机床Z轴目标距离(mm)', readonly=True)
# 故障报警时间, 故障报警信息, 故障消除时间(复原时间)
alarm_time = fields.Char('故障报警时间', readonly=True)
alarm_msg = fields.Char('故障报警信息', readonly=True)
clear_time = fields.Char('故障消除时间(复原时间)', readonly=True)
# 当前程序名, 机床累计运行时间, 机床系统日期, 机床系统时间, 当前刀具号, 机床循环时间
class WorkCenterBarcode(models.Model):
@@ -259,39 +290,59 @@ class WorkCenterBarcode(models.Model):
button_compensation_state = fields.Boolean(string='是否已经补偿', readonly=True)
button_up_all_state = fields.Boolean(string='是否已经全部下发', readonly=True)
machine_tool_id = fields.Many2one('sf.machine_tool.type', string='机床')
machine_tool_name = fields.Char(string='机床名称', default='未知机床', compute='_run_info', readonly=True)
machine_tool_type_id = fields.Char(string='机床型号', default='未知型号', compute='_run_info', readonly=True)
machine_tool_status = fields.Boolean(string='在线状态', compute='_run_info', readonly=True)
# machine_tool_name = fields.Char(string='机床名称', default='未知机床', compute='_run_info', readonly=True)
# machine_tool_type_id = fields.Char(string='机床型号', default='未知型号', compute='_run_info', readonly=True)
# machine_tool_status = fields.Boolean(string='在线状态', compute='_run_info', readonly=True)
# machine_tool_run_status = fields.Selection([('0', '关机中'), ('1', '加工中'), ('2', '加工中'), ('3', '加工中')],
# string='运行状态', compute='_run_info', readonly=True, default='0')
# machine_tool_timestamp = fields.Datetime('时间戳', compute='_run_info', readonly=True)
# machine_tool_time_on = fields.Char('总在线时长', compute='_run_info', readonly=True)
# machine_tool_time_on_now = fields.Char('本次在线时长', compute='_run_info', readonly=True)
# machine_tool_tool_num = fields.Integer('当前刀具', compute='_run_info', readonly=True)
# machine_tool_program = fields.Char('当前程序', compute='_run_info', readonly=True)
# machine_tool_machine_ip = fields.Char('机床IP', compute='_run_info', readonly=True)
# machine_tool_cut_status = fields.Selection([('0', '未切削'), ('1', '切削中'), ('2', '切削中'), ('3', '切削中')],
# string='切削状态', compute='_run_info', readonly=True, default='0')
# machine_tool_compensation_value_x = fields.Char('x补偿值', compute='_run_info', readonly=True)
# machine_tool_compensation_value_y = fields.Char('y补偿值', compute='_run_info', readonly=True)
machine_tool_name = fields.Char(string='机床名称', default='未知机床', readonly=True)
machine_tool_type_id = fields.Char(string='机床型号', default='未知型号', readonly=True)
machine_tool_status = fields.Boolean(string='在线状态', readonly=True)
machine_tool_run_status = fields.Selection([('0', '关机中'), ('1', '加工中'), ('2', '加工中'), ('3', '加工中')],
string='运行状态', compute='_run_info', readonly=True, default='0')
machine_tool_timestamp = fields.Datetime('时间戳', compute='_run_info', readonly=True)
machine_tool_time_on = fields.Char('总在线时长', compute='_run_info', readonly=True)
machine_tool_time_on_now = fields.Char('本次在线时长', compute='_run_info', readonly=True)
machine_tool_tool_num = fields.Integer('当前刀具', compute='_run_info', readonly=True)
machine_tool_program = fields.Char('当前程序', compute='_run_info', readonly=True)
machine_tool_machine_ip = fields.Char('机床IP', compute='_run_info', readonly=True)
string='运行状态', readonly=True, default='0')
machine_tool_timestamp = fields.Datetime('时间戳', readonly=True)
machine_tool_time_on = fields.Char('总在线时长', readonly=True)
machine_tool_time_on_now = fields.Char('本次在线时长', readonly=True)
machine_tool_tool_num = fields.Integer('当前刀具', readonly=True)
machine_tool_program = fields.Char('当前程序', readonly=True)
machine_tool_machine_ip = fields.Char('机床IP', readonly=True)
machine_tool_cut_status = fields.Selection([('0', '未切削'), ('1', '切削中'), ('2', '切削中'), ('3', '切削中')],
string='切削状态', compute='_run_info', readonly=True, default='0')
machine_tool_compensation_value_x = fields.Char('x补偿值', compute='_run_info', readonly=True)
machine_tool_compensation_value_y = fields.Char('y补偿值', compute='_run_info', readonly=True)
string='切削状态', readonly=True, default='0')
machine_tool_compensation_value_x = fields.Char('x补偿值', readonly=True)
machine_tool_compensation_value_y = fields.Char('y补偿值', readonly=True)
# 工单状态
delivery_records = fields.One2many('delivery.record', 'workorder_id', string="下发记录")
@api.depends('equipment_id.timestamp')
def _run_info(self):
# self.machine_tool_name = '1号机床'
self.machine_tool_name = self.equipment_id.name
self.machine_tool_type_id = self.equipment_id.type_id.name
self.machine_tool_status = self.equipment_id.status
self.machine_tool_run_status = self.equipment_id.run_status
self.machine_tool_timestamp = self.equipment_id.timestamp
self.machine_tool_time_on = self.equipment_id.time_on
self.machine_tool_time_on_now = self.equipment_id.time_on_now
self.machine_tool_tool_num = self.equipment_id.tool_num
self.machine_tool_program = self.equipment_id.program
self.machine_tool_machine_ip = self.equipment_id.machine_ip
self.machine_tool_cut_status = self.equipment_id.cut_status
self.machine_tool_compensation_value_x = self.compensation_value_x
self.machine_tool_compensation_value_y = self.compensation_value_y
# self.machine_tool_name = self.equipment_id.name
# self.machine_tool_type_id = self.equipment_id.type_id.name
# self.machine_tool_status = self.equipment_id.status
# self.machine_tool_run_status = self.equipment_id.run_status
# self.machine_tool_timestamp = self.equipment_id.timestamp
# self.machine_tool_time_on = self.equipment_id.time_on
# self.machine_tool_time_on_now = self.equipment_id.time_on_now
# self.machine_tool_tool_num = self.equipment_id.tool_num
# self.machine_tool_program = self.equipment_id.program
# self.machine_tool_machine_ip = self.equipment_id.machine_ip
# self.machine_tool_cut_status = self.equipment_id.cut_status
# self.machine_tool_compensation_value_x = self.compensation_value_x
# self.machine_tool_compensation_value_y = self.compensation_value_y
pass
def compensation(self):

View File

@@ -8,11 +8,14 @@ _logger = logging.getLogger(__name__)
class ResBFMConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
bfm_url = fields.Selection(
[("https://bfm.cs.jikimo.com", "开发环境(https://bfm.cs.jikimo.com)"),
("https://bfm.t.jikimo.com", "测试环境(https://bfm.t.jikimo.com)"),
# ("正式环境", "https://bfm.jikimo.com")], string='bfm环境', store=True)
("https://bfm.jikimo.com", "正式环境(https://bfm.jikimo.com)")], string='bfm环境', store=True)
# bfm_url = fields.Selection(
# [("https://bfm.cs.jikimo.com", "开发环境(https://bfm.cs.jikimo.com)"),
# ("https://bfm.t.jikimo.com", "测试环境(https://bfm.t.jikimo.com)"),
# ("https://bfm.r.jikimo.com", "预发布环境(https://bfm.r.jikimo.com)"),
# # ("正式环境", "https://bfm.jikimo.com")], string='bfm环境', store=True)
# ("https://bfm.jikimo.com", "正式环境(https://bfm.jikimo.com)")], string='bfm环境', store=True)
bfm_url_new = fields.Char('业务平台环境路径', placeholder='请输入当前对应的业务平台环境路径')
@api.model
def get_values(self):
@@ -22,14 +25,14 @@ class ResBFMConfigSettings(models.TransientModel):
"""
values = super(ResBFMConfigSettings, self).get_values()
config = self.env['ir.config_parameter'].sudo()
bfm_url = config.get_param('bfm_url', default='')
bfm_url_new = config.get_param('bfm_url_new', default='')
values.update(
bfm_url=bfm_url,
bfm_url_new=bfm_url_new,
)
return values
def set_values(self):
super(ResBFMConfigSettings, self).set_values()
ir_config = self.env['ir.config_parameter'].sudo()
ir_config.set_param("bfm_url", self.bfm_url or "")
ir_config.set_param("bfm_url_new", self.bfm_url_new or "")

View File

@@ -0,0 +1,82 @@
/** @odoo-module **/
import { browser } from "@web/core/browser/browser";
import { Dialog } from "@web/core/dialog/dialog";
import { _lt } from "@web/core/l10n/translation";
import { useChildRef, useOwnedDialogs, useService } from "@web/core/utils/hooks";
import { sprintf } from "@web/core/utils/strings";
import { isMobileOS } from "@web/core/browser/feature_detection";
import * as BarcodeScanner from "@web/webclient/barcode/barcode_scanner";
const {xml, Component} = owl;
import { standardFieldProps } from "@web/views/fields/standard_field_props";
// Import the registry
import {registry} from "@web/core/registry";
export class CodeField extends Component {
setup() {
super.setup();
}
async onBarcodeBtnClick() {
const barcode = await BarcodeScanner.scanBarcode();
if (barcode) {
await this.onBarcodeScanned(barcode);
if ("vibrate" in browser.navigator) {
browser.navigator.vibrate(100);
}
} else {
this.notification.add(this.env._t("Please, scan again !"), {
type: "warning",
});
}
}
async search(barcode) {
const results = await this.orm.call("sf.tray", "name_search", [code], {
name: barcode,
args: this.getDomain(),
operator: "ilike",
limit: 2, // If one result we set directly and if more than one we use normal flow so no need to search more
context: this.context,
});
return results.map((result) => {
const [id, displayName] = result;
return {
id,
name: displayName,
};
});
}
async onBarcodeScanned(barcode) {
const results = await this.search(barcode);
const records = results.filter((r) => !!r.id);
if (records.length === 1) {
this.update([{ id: records[0].id, name: records[0].name }]);
} else {
const searchInput = this.autocompleteContainerRef.el.querySelector("input");
searchInput.value = barcode;
searchInput.dispatchEvent(new Event("input"));
if (this.env.isSmall) {
searchInput.click();
}
}
}
}
CodeField.template = xml`
<button
t-on-click="onBarcodeBtnClick"
type="button"
class="btn ms-3 o_barcode"
tabindex="-1"
draggable="false"
aria-label="Scan barcode"
title="Scan barcode"
data-tooltip="Scan barcode"
/>
`;
// CodeField.template = 'sf_machine_connect.CodeField';
CodeField.props = standardFieldProps;
// Add the field to the correct category
registry.category("fields").add("code", CodeField);

View File

@@ -10,6 +10,7 @@
<searchpanel>
<field name="routing_type" select="multi" string="工序类型" icon="fa-building" enable_counters="1"/>
<field name="state" select="multi" string="状态" icon="fa-building" enable_counters="1"/>
<!-- <field name="manual_quotation" select="multi" string="" icon="fa-building" enable_counters="1"/>-->
</searchpanel>
<!-- <field name="name" filter_domain="['|', '|', ('明确的字段内容', 'ilike', self), ('shortdesc', 'ilike', self), ('name', 'ilike', self)]" string="Theme"/>-->
@@ -19,7 +20,15 @@
<!-- <xpath expr="//search//group//filter[@name='product']" position="before">-->
<!-- <filter string="Tray code" name="traycode" domain="[]" context="{'group_by': 'tray_code'}"/>-->
<!-- </xpath>-->
<xpath expr="//filter[@name='date_start_filter']" position="after">
<separator/>
<filter string="人工编程" name="manual_quotation" domain="[('manual_quotation', '=', True)]"/>
<filter string="自动编程" name="no_manual_quotation" domain="[('manual_quotation', '=', False)]"/>
</xpath>
<xpath expr="//field[@name='production_id']" position="before">
<field name="product_tmpl_name"/>
<field name="rfid_code"/>
</xpath>
</field>
</record>
</odoo>

View File

@@ -5,39 +5,46 @@
<field name="model">mrp.workorder</field>
<field name="inherit_id" ref="sf_manufacturing.view_mrp_production_workorder_tray_form_inherit_sf"/>
<field name="arch" type="xml">
<xpath expr="//header" position="inside">
<button string="程序下载" name="cnc_file_download" type="object" class="oe_highlight" attrs='{"invisible": ["|",
("user_permissions","=",False),("routing_type","!=","CNC加工")]}'/>
</xpath>
<xpath expr="//page//field[@name='cnc_ids']" position="before">
<!-- <xpath expr="//header" position="inside">&ndash;&gt;-->
<!-- <button string="程序下载" name="cnc_file_download" type="object" class="oe_highlight" attrs='{"invisible": ["|",-->
<!-- ("user_permissions","=",False),("routing_type","!=","CNC加工")]}'/>-->
<!-- </xpath>-->
<xpath expr="//page//field[@name='cnc_ids']" position="before">
<group>
<group>
<group>
<field name="compensation_value_x"/>
<field name="compensation_value_y"/>
</group>
<div>
<div>
<field name="button_compensation_state" attrs='{"invisible": ["|",
("state","!=","progress"),("user_permissions","=",False)]}'/>
<button string="一键补偿" name="compensation" type="object" confirm="是否确认下发补偿"
class="btn-primary" attrs='{"invisible": ["|",
("state","!=","progress"),("user_permissions","=",False)]}'/>
<span>&#32;</span>
<button string="一键下发" name="up_all" type="object" style="text-align: right;" confirm="是否确认一键下发"
class="btn-primary" context="{'default_workorder_id': id}" attrs='{"invisible": ["|",
("state","!=","progress"),("user_permissions","=",False)]}'/>
<span>&#32;</span>
<button string="合并下发" id="action_up_select" name="%(sf_machine_connect.action_up_select)d"
type="action" class="btn-primary" context="{'default_workorder_id': id}" attrs='{"invisible": ["|",
("state","!=","progress"),("user_permissions","=",False)]}'/>
<span>&#32;</span>
<button string="一键合并下发" name="up_merge_all" type="object" style="text-align: right;" confirm="是否确认一键合并下发"
class="btn-primary" context="{'default_workorder_id': id}" attrs='{"invisible": ["|",
("state","!=","progress"),("user_permissions","=",False)]}'/>
</div>
</div>
<field name="compensation_value_x"/>
<field name="compensation_value_y"/>
</group>
</xpath>
<div>
<div>
<!-- <field name="button_compensation_state" attrs='{"invisible": ["|",-->
<!-- ("state","!=","progress"),("user_permissions","=",False)]}'/>-->
<!-- <span>&#32;</span>-->
<!-- <button name="button_send_program_again" type="object" string="重新下发NC程序"-->
<!-- class="btn-primary"-->
<!-- confirm="是否确认重新下发NC程序"-->
<!-- groups="sf_base.group_sf_order_user,sf_base.group_sf_equipment_user"-->
<!-- attrs="{'invisible': ['|', '|', '|',('routing_type','!=','装夹预调'),('state','in',['done', 'cancel',-->
<!-- 'progress']),('processing_drawing','=',False),('is_send_program_again','=',True)]}"/>-->
<!-- <button string="一键补偿" name="compensation" type="object" confirm="是否确认下发补偿"-->
<!-- class="btn-primary" attrs='{"invisible": ["|",-->
<!-- ("state","!=","progress"),("user_permissions","=",False)]}'/>-->
<!-- <span>&#32;</span>-->
<!-- <button string="一键下发" name="up_all" type="object" style="text-align: right;" confirm="是否确认一键下发"-->
<!-- class="btn-primary" context="{'default_workorder_id': id}" attrs='{"invisible": ["|",-->
<!-- ("state","!=","progress"),("user_permissions","=",False)]}'/>-->
<!-- <span>&#32;</span>-->
<!-- <button string="合并下发" id="action_up_select" name="%(sf_machine_connect.action_up_select)d"-->
<!-- type="action" class="btn-primary" context="{'default_workorder_id': id}" attrs='{"invisible": ["|",-->
<!-- ("state","!=","progress"),("user_permissions","=",False)]}'/>-->
<!-- <span>&#32;</span>-->
<!-- <button string="一键合并下发" name="up_merge_all" type="object" style="text-align: right;" confirm="是否确认一键合并下发"-->
<!-- class="btn-primary" context="{'default_workorder_id': id}" attrs='{"invisible": ["|",-->
<!-- ("state","!=","progress"),("user_permissions","=",False)]}'/>-->
</div>
</div>
</group>
</xpath>
</field>
</record>

View File

@@ -9,9 +9,9 @@
<tree>
<field name="sequence_number"/>
<field name="program_name"/>
<field name="cnc_id" string="文件"/>
<field name="functional_tool_type_id"/>
<field name="cutting_tool_name"/>
<field name="tool_state"/>
<field name="cutting_tool_no"/>
<field name="processing_type"/>
<field name="margin_x_y"/>

View File

@@ -19,7 +19,7 @@
<!-- attrs='{"invisible": ["|",("state","!=","progress"), -->
<!-- ("user_permissions","!=",True)]}'/> -->
<!-- <button string="下发" name="up" type="object" class="btn-primary" confirm="是否确认下发此程序" context="{'default_cnc_ids': cnc_ids}"/> -->
<button string="下发" name="up" type="object" class="btn-primary" confirm="是否确认下发此程序"
<!-- <button string="下发" name="up" type="object" class="btn-primary" confirm="是否确认下发此程序"-->
context="{'default_sf_cnc_processing_id': id}" attrs='{"invisible": ["|",("state","!=","progress"),
("user_permissions","!=",True)]}'/>
<!-- <button string="下发" name="up" type="object" class="btn-primary" confirm="是否确认下发此程序"-->

View File

@@ -13,294 +13,138 @@
<page string="机床运行状态" attrs="{'invisible': [('equipment_type', '!=', '机床')]}">
<group string='状态监控'>
<group>
<field name="timestamp"/>
<field name="signed"/>
<!-- <field name="timestamp"/> -->
<field name="status"/>
<field name="time_on"/>
<field name="time_on_now"/>
</group>
<group>
<field name="run_status"/>
<field name="run_time"/>
<field name="system_date"/>
</group>
<group>
<field name="cut_status"/>
<field name="cut_time"/>
<!-- <field name="cut_time"/> -->
<field name="program"/>
<field name="tool_num"/>
<field name="spindle_speed"/>
</group>
</group>
<!-- <group string='刀位统计'> -->
<!-- <group> -->
<!-- <group> -->
<!-- <field name="tool_num_process_time1"/> -->
<!-- <field name="tool_num_process_time5"/> -->
<!-- <field name="tool_num_process_time9"/> -->
<!-- <field name="tool_num_process_time13"/> -->
<!-- <field name="tool_num_process_time17"/> -->
<!-- <field name="tool_num_process_time21"/> -->
<!-- </group> -->
<!-- <group> -->
<!-- <field name="tool_num_process_time2"/> -->
<!-- <field name="tool_num_process_time6"/> -->
<!-- <field name="tool_num_process_time10"/> -->
<!-- <field name="tool_num_process_time14"/> -->
<!-- <field name="tool_num_process_time18"/> -->
<!-- <field name="tool_num_process_time22"/> -->
<!-- </group> -->
<!-- </group> -->
<!-- <group> -->
<!-- <group> -->
<!-- <field name="tool_num_process_time3"/> -->
<!-- <field name="tool_num_process_time7"/> -->
<!-- <field name="tool_num_process_time11"/> -->
<!-- <field name="tool_num_process_time15"/> -->
<!-- <field name="tool_num_process_time19"/> -->
<!-- <field name="tool_num_process_time23"/> -->
<!-- </group> -->
<!-- <group> -->
<!-- <field name="tool_num_process_time4"/> -->
<!-- <field name="tool_num_process_time8"/> -->
<!-- <field name="tool_num_process_time12"/> -->
<!-- <field name="tool_num_process_time16"/> -->
<!-- <field name="tool_num_process_time20"/> -->
<!-- <field name="tool_num_process_time24"/> -->
<!-- </group> -->
<!-- </group> -->
<!-- </group> -->
<!-- <div class="o_address_format"> -->
<!-- <label for="tool_num_process_time1" string="刀位1"/> -->
<!-- <field name="tool_num_process_time1" class="o_form_label"/> -->
<!-- <span>&amp;nbsp;</span> -->
<!-- <label for="tool_num_process_time2" string="刀位2"/> -->
<!-- <field name="tool_num_process_time2" class="o_form_label"/> -->
<!-- <span>&amp;nbsp;</span> -->
<!-- <label for="tool_num_process_time3" string="刀位3"/> -->
<!-- <field name="tool_num_process_time3" class="o_form_label"/> -->
<!-- <span>&amp;nbsp;</span> -->
<!-- <label for="tool_num_process_time4" string="刀位4"/> -->
<!-- <field name="tool_num_process_time4" class="o_form_label"/> -->
<!-- <div></div> -->
<!-- <label for="tool_num_process_time5" string="刀位5"/> -->
<!-- <field name="tool_num_process_time5" class="o_form_label"/> -->
<!-- <span>&amp;nbsp;</span> -->
<!-- <label for="tool_num_process_time6" string="刀位6"/> -->
<!-- <field name="tool_num_process_time6" class="o_form_label"/> -->
<!-- <span>&amp;nbsp;</span> -->
<!-- <label for="tool_num_process_time7" string="刀位7"/> -->
<!-- <field name="tool_num_process_time7" class="o_form_label"/> -->
<!-- <span>&amp;nbsp;</span> -->
<!-- <label for="tool_num_process_time8" string="刀位8"/> -->
<!-- <field name="tool_num_process_time8" class="o_form_label"/> -->
<!-- <div></div> -->
<!-- <label for="tool_num_process_time9" string="刀位9"/> -->
<!-- <field name="tool_num_process_time9" class="o_form_label"/> -->
<!-- <span>&amp;nbsp;</span> -->
<!-- <label for="tool_num_process_time10" string="刀位10"/> -->
<!-- <field name="tool_num_process_time10" class="o_form_label"/> -->
<!-- <span>&amp;nbsp;</span> -->
<!-- <label for="tool_num_process_time11" string="刀位11"/> -->
<!-- <field name="tool_num_process_time11" class="o_form_label"/> -->
<!-- <span>&amp;nbsp;</span> -->
<!-- <label for="tool_num_process_time12" string="刀位12"/> -->
<!-- <field name="tool_num_process_time12" class="o_form_label"/> -->
<!-- <div></div> -->
<!-- <label for="tool_num_process_time13" string="刀位13"/> -->
<!-- <field name="tool_num_process_time13" class="o_form_label"/> -->
<!-- <span>&amp;nbsp;</span> -->
<!-- <label for="tool_num_process_time14" string="刀位14"/> -->
<!-- <field name="tool_num_process_time14" class="o_form_label"/> -->
<!-- <span>&amp;nbsp;</span> -->
<!-- <label for="tool_num_process_time15" string="刀位15"/> -->
<!-- <field name="tool_num_process_time15" class="o_form_label"/> -->
<!-- <span>&amp;nbsp;</span> -->
<!-- <label for="tool_num_process_time16" string="刀位16"/> -->
<!-- <field name="tool_num_process_time16" class="o_form_label"/> -->
<!-- <div></div> -->
<!-- <label for="tool_num_process_time17" string="刀位17"/> -->
<!-- <field name="tool_num_process_time17" class="o_form_label"/> -->
<!-- <span>&amp;nbsp;</span> -->
<!-- <label for="tool_num_process_time18" string="刀位18"/> -->
<!-- <field name="tool_num_process_time18" class="o_form_label"/> -->
<!-- <span>&amp;nbsp;</span> -->
<!-- <label for="tool_num_process_time19" string="刀位19"/> -->
<!-- <field name="tool_num_process_time19" class="o_form_label"/> -->
<!-- <span>&amp;nbsp;</span> -->
<!-- <label for="tool_num_process_time20" string="刀位20"/> -->
<!-- <field name="tool_num_process_time20" class="o_form_label"/> -->
<!-- <div></div> -->
<!-- <label for="tool_num_process_time21" string="刀位21"/> -->
<!-- <field name="tool_num_process_time21" class="o_form_label"/> -->
<!-- <span>&amp;nbsp;</span> -->
<!-- <label for="tool_num_process_time22" string="刀位22"/> -->
<!-- <field name="tool_num_process_time22" class="o_form_label"/> -->
<!-- <span>&amp;nbsp;</span> -->
<!-- <label for="tool_num_process_time23" string="刀位23"/> -->
<!-- <field name="tool_num_process_time23" class="o_form_label"/> -->
<!-- <span>&amp;nbsp;</span> -->
<!-- <label for="tool_num_process_time24" string="刀位24"/> -->
<!-- <field name="tool_num_process_time24" class="o_form_label"/> -->
<!-- </div> -->
<!-- </group> -->
</page>
<page string="机床运行数据" attrs="{'invisible': [('equipment_type', '!=', '机床')]}">
<!-- <group string="机床配置">--> -->
<group string="ftp相关">
<group>
<field name="ftp_num"/>
<field name="ftp_pwd"/>
<field name="ftp_host"/>
</group>
<group>
<field name="ftp_port"/>
<field name="ftp_remote_path"/>
</group>
<group string="运行数据">
<group>
<field name="machine_power_on_time"/>
<field name="product_counts"/>
<field name="mode"/>
<field name="start_time"/>
<field name="end_time"/>
<field name="program_start_time"/>
<field name="program_end_time"/>
<field name="standby_start_time"/>
<field name="standby_end_time"/>
<field name="offline_start_time"/>
<field name="offline_end_time"/>
<field name="emg_status"/>
<field name="program_name"/>
<field name="program_status"/>
<field name="current_program"/>
<field name="current_program_seq"/>
<field name="x_abs_pos"/>
<field name="y_abs_pos"/>
<field name="z_abs_pos"/>
</group>
<group string="补偿值相关">
<group>
<field name="x_compensation_node"/>
</group>
<group>
<field name="y_compensation_node"/>
</group>
<group>
<field name="feed_speed_set"/>
<field name="act_feed_speed"/>
<field name="spindle_speed_set"/>
<field name="act_spindle_speed"/>
<field name="spindle_load"/>
<field name="x_axis_load"/>
<field name="y_axis_load"/>
<field name="z_axis_load"/>
<field name="rapid_feed"/>
<field name="feed_rate"/>
<field name="x_mach_coord"/>
<field name="y_mach_coord"/>
<field name="z_mach_coord"/>
<field name="x_rel_coord"/>
<field name="y_rel_coord"/>
<field name="z_rel_coord"/>
<field name="x_dis_coord"/>
<field name="y_dis_coord"/>
<field name="z_dis_coord"/>
</group>
<group string="数采相关">
<group>
<field name="machine_ip"/>
<field name="machine_signed"/>
<field name="machine_status"/>
<field name="machine_cnc_type"/>
<field name="machine_axis_count"/>
<field name="machine_run_status"/>
<field name="machine_emg_status"/>
<field name="machine_cut_status"/>
<field name="machine_mode"/>
<field name="machine_spindle_load"/>
<field name="machine_x_mach"/>
<field name="machine_x_abs_mach"/>
<field name="machine_x_rel_mach"/>
<field name="machine_x_dis_mach"/>
<field name="machine_x_axis_load"/>
<field name="machine_y_mach"/>
<field name="machine_y_abs_mach"/>
<field name="machine_y_rel_mach"/>
<field name="machine_y_dis_mach"/>
<field name="machine_y_axis_load"/>
<field name="machine_z_mach"/>
<field name="machine_z_abs_mach"/>
</group>
<group>
<field name="machine_z_rel_mach"/>
<field name="machine_z_dis_mach"/>
<field name="machine_z_axis_load"/>
<field name="machine_tool_num"/>
<field name="machine_program"/>
<field name="machine_current_prg"/>
<field name="machine_prg_seq"/>
<field name="machine_spindle_speed_set"/>
<field name="machine_act_spindle_speed"/>
<field name="machine_feed_speed_set"/>
<field name="machine_act_feed_speed"/>
<field name="machine_spindle_feed"/>
<field name="machine_feed_rate"/>
<field name="machine_rapid_feed"/>
<field name="machine_run_time"/>
<field name="machine_cut_time"/>
<field name="machine_keep_alive_time"/>
<field name="machine_circle_time"/>
<field name="machine_product_counts"/>
<field name="machine_system_date"/>
<field name="machine_system_time"/>
<field name="machine_alarm_msg"/>
</group>
</group>
<!-- </group> -->
</page>
<!-- <page string="刀位配置"> -->
<!-- <group string="刀位配置"> -->
</group>
<!-- <group string="ftp相关"> -->
<!-- <group> -->
<!-- <group> -->
<!-- <field name="tool_num1"/> -->
<!-- <field name="tool_num5"/> -->
<!-- <field name="tool_num9"/> -->
<!-- <field name="tool_num13"/> -->
<!-- <field name="tool_num17"/> -->
<!-- <field name="tool_num21"/> -->
<!-- </group> -->
<!-- <group> -->
<!-- <field name="tool_num2"/> -->
<!-- <field name="tool_num6"/> -->
<!-- <field name="tool_num10"/> -->
<!-- <field name="tool_num14"/> -->
<!-- <field name="tool_num18"/> -->
<!-- <field name="tool_num22"/> -->
<!-- </group> -->
<!-- <field name="ftp_num"/> -->
<!-- <field name="ftp_pwd"/> -->
<!-- <field name="ftp_host"/> -->
<!-- </group> -->
<!-- <group> -->
<!-- <group> -->
<!-- <field name="tool_num3"/> -->
<!-- <field name="tool_num7"/> -->
<!-- <field name="tool_num11"/> -->
<!-- <field name="tool_num15"/> -->
<!-- <field name="tool_num19"/> -->
<!-- <field name="tool_num23"/> -->
<!-- </group> -->
<!-- <group> -->
<!-- <field name="tool_num4"/> -->
<!-- <field name="tool_num8"/> -->
<!-- <field name="tool_num12"/> -->
<!-- <field name="tool_num16"/> -->
<!-- <field name="tool_num20"/> -->
<!-- <field name="tool_num24"/> -->
<!-- </group> -->
<!-- <field name="ftp_port"/> -->
<!-- <field name="ftp_remote_path"/> -->
<!-- </group> -->
<!-- </group> -->
<!-- </page> -->
<!-- </notebook> -->
<!-- <group string="补偿值相关"> -->
<!-- <group> -->
<!-- <field name="x_compensation_node"/> -->
<!-- </group> -->
<!-- <group> -->
<!-- <field name="y_compensation_node"/> -->
<!-- </group> -->
<!-- </group> -->
<!-- <group string="数采相关"> -->
<!-- <group> -->
<!-- <field name="machine_ip"/> -->
<!-- <field name="machine_signed"/> -->
<!-- <field name="machine_status"/> -->
<!-- <field name="machine_cnc_type"/> -->
<!-- <field name="machine_axis_count"/> -->
<!-- <field name="machine_run_status"/> -->
<!-- <field name="machine_emg_status"/> -->
<!-- <field name="machine_cut_status"/> -->
<!-- <field name="machine_mode"/> -->
<!-- <field name="machine_spindle_load"/> -->
<!-- <field name="machine_x_mach"/> -->
<!-- <field name="machine_x_abs_mach"/> -->
<!-- <field name="machine_x_rel_mach"/> -->
<!-- <field name="machine_x_dis_mach"/> -->
<!-- <field name="machine_x_axis_load"/> -->
<!-- <field name="machine_y_mach"/> -->
<!-- <field name="machine_y_abs_mach"/> -->
<!-- <field name="machine_y_rel_mach"/> -->
<!-- <field name="machine_y_dis_mach"/> -->
<!-- <field name="machine_y_axis_load"/> -->
<!-- <field name="machine_z_mach"/> -->
<!-- <field name="machine_z_abs_mach"/> -->
<!-- </group> -->
<!-- <group> -->
<!-- <field name="machine_z_rel_mach"/> -->
<!-- <field name="machine_z_dis_mach"/> -->
<!-- <field name="machine_z_axis_load"/> -->
<!-- <field name="machine_tool_num"/> -->
<!-- <field name="machine_program"/> -->
<!-- <field name="machine_current_prg"/> -->
<!-- <field name="machine_prg_seq"/> -->
<!-- <field name="machine_spindle_speed_set"/> -->
<!-- <field name="machine_act_spindle_speed"/> -->
<!-- <field name="machine_feed_speed_set"/> -->
<!-- <field name="machine_act_feed_speed"/> -->
<!-- <field name="machine_spindle_feed"/> -->
<!-- <field name="machine_feed_rate"/> -->
<!-- <field name="machine_rapid_feed"/> -->
<!-- <field name="machine_run_time"/> -->
<!-- <field name="machine_cut_time"/> -->
<!-- <field name="machine_keep_alive_time"/> -->
<!-- <field name="machine_circle_time"/> -->
<!-- <field name="machine_product_counts"/> -->
<!-- <field name="machine_system_date"/> -->
<!-- <field name="machine_system_time"/> -->
<!-- <field name="machine_alarm_msg"/> -->
<!-- </group> -->
<!-- </group> -->
</page>
</xpath>
</field>
</record>
<!-- 刀具寿命 -->
<!-- <record id="view_cutting_tool_inherited" model="ir.ui.view"> -->
<!-- <field name="name">sf_cutting_tool_extension</field> -->
<!-- <field name="model">sf.cutting_tool.type</field> -->
<!-- <field name="inherit_id" ref="sf_base.form_sf_machine_tool_type"/> -->
<!-- <field name="arch" type="xml"> -->
<!-- <xpath expr="//form//group" position="after"> -->
<!-- <group string='刀具寿命'> -->
<!-- <group> -->
<!-- <field name="total_cut_time"/> -->
<!-- <field name="tool_position"/> -->
<!-- </group> -->
<!-- <group> -->
<!-- <field name="predict_life_time"/> -->
<!-- </group> -->
<!-- <div> -->
<!-- <div> -->
<!-- <field name='is_connect_tool_position' invisible='1'/> -->
<!-- <button string="绑定刀位" name="tool_connect_machine" type="object" confirm="是否确认绑定此刀位" -->
<!-- class="btn-primary"/> -->
<!-- attrs='{"invisible": [("is_connect_tool_position","!=", -->
<!-- "False")]}' -->
<!-- <span>&#32;</span> -->
<!-- <button string="解绑刀位" name="tool_unconnect_machine" type="object" confirm="是否解绑此刀位" -->
<!-- class="btn-primary"/> -->
<!-- attrs='{"invisible": [("is_connect_tool_position","!=", -->
<!-- "False")]}' -->
<!-- </div> -->
<!-- </div> -->
<!-- </group> -->
<!-- </xpath> -->
<!-- </field> -->
<!-- </record> -->
</odoo>

View File

@@ -14,8 +14,8 @@
<div class="o_setting_left_pane"/>
<div class="o_setting_right_pane">
<div class="text-muted">
<label for="bfm_url" />
<field name="bfm_url" string="访问地址"/>
<label for="bfm_url_new" />
<field name="bfm_url_new" string="业务平台访问地址"/>
</div>
</div>
<!-- </div> -->

View File

@@ -14,7 +14,7 @@
<!-- <field name="program_ids" domain="[('workorder_id', '=', workorder_id)]"/>-->
</group>
<footer>
<button string="合并下发" name="confirm_up" type="object" class="btn-primary" confirm="是否确认合并下发"/>
<!-- <button string="合并下发" name="confirm_up" type="object" class="btn-primary" confirm="是否确认合并下发"/>-->
<button string="取消" class="btn-secondary" special="cancel"/>
</footer>
</form>

View File

@@ -10,21 +10,21 @@ class SfMaintenanceLogs(models.Model):
name = fields.Char(string='名称')
type = fields.Selection([('type1', '类型1'), ('type2', '类型2')], string='类型')
brand = fields.Many2one('sf.machine.brand', related='maintenance_equipment_id.brand_id', string='品牌')
maintenance_equipment_id = fields.Many2one('maintenance.equipment', string='设备')
maintenance_equipment_id = fields.Many2one('maintenance.equipment', string='机台号')
maintenance_equipment_oee_id = fields.Many2one('maintenance.equipment.oee', string='设备oee')
code_location = fields.Char(string='编码位置')
fault_type = fields.Selection(
[('电气类', '电气类'), ('机械类', '机械类'), ('程序类', '程序类'), ('系统类', '系统类')], string='故障类型')
fault_code = fields.Char(string='故障代码')
fault_alarm_info = fields.Char(string='故障报警信息')
fault_alarm_info = fields.Text(string='故障报警信息')
alarm_level = fields.Selection([('一级', '一级(严重)'), ('二级', '二级(中等)'), ('三级', '三级(轻微)')],
string='报警级别')
alarm_time = fields.Datetime(string='报警时间')
alarm_time = fields.Datetime(string='故障报警时间')
alarm_way = fields.Selection([('文本提示报警', '文本提示报警'), ('声光报警', '声光报警'), ('图文报警', '图文报警')],
string='报警方式')
fault_process = fields.Text(string='故障处理方法')
operator = fields.Many2one('res.users', string='处理人')
recovery_time = fields.Datetime(string='复原时间')
recovery_time = fields.Datetime(string='故障消除时间')
fault_duration = fields.Float(string='故障时长')
note = fields.Text(string='备注')
active = fields.Boolean('Active', default=True)

View File

@@ -7,20 +7,23 @@ class SfMaintenanceEquipmentOEE(models.Model):
_description = '设备OEE'
name = fields.Char('设备oee')
equipment_id = fields.Many2one('maintenance.equipment', '设备',
equipment_id = fields.Many2one('maintenance.equipment', '机台号',
domain="[('category_id.equipment_type', '=', '机床'),('state_zc', '=', '已注册')]")
type_id = fields.Many2one('sf.machine_tool.type', '型号', related='equipment_id.type_id')
machine_tool_picture = fields.Binary('设备图片', related='equipment_id.machine_tool_picture')
machine_tool_picture = fields.Binary('设备图片', related='equipment_id.machine_tool_picture')
state = fields.Selection(
[("正常", "正常"), ("故障停机", "故障停机"), ("计划维保", "计划维保"), ("空闲", "空闲"),
("封存(报废)", "封存(报废)")],
default='正常', string="机床状态", related='equipment_id.state')
run_time = fields.Float('正常运行总时长(h)')
equipment_time = fields.Float('时长(h)')
done_nums = fields.Integer('累计加工件数')
utilization_rate = fields.Char('开动')
fault_time = fields.Float('故障停机总时长(h)')
run_time = fields.Float('加工时长(h)')
equipment_time = fields.Float('开机时长(h)')
done_nums = fields.Integer('加工件数')
utilization_rate = fields.Char('可用')
fault_time = fields.Float('故障时长')
fault_nums = fields.Integer('故障次数')
# 故障率
fault_rate = fields.Char('故障率')
# 设备故障日志
sf_maintenance_logs_ids = fields.One2many('sf.maintenance.logs', 'maintenance_equipment_oee_id', '设备故障日志',
related='equipment_id.sf_maintenance_logs_ids')
oee_logs = fields.One2many('maintenance.equipment.oee.logs', 'equipment_oee_id', string='运行日志')
@@ -38,12 +41,52 @@ class SfMaintenanceEquipmentOEELog(models.Model):
_name = 'maintenance.equipment.oee.logs'
_description = '设备运行日志'
name = fields.Char('运行日志')
run_time = fields.Datetime('时间')
state = fields.Selection([("开机", "开机"), ("关机", "关机"), ("等待", "等待"), ("开始加工", "开始加工"),
("结束加工", "结束加工"), ("故障", "故障"),
("检修", "检修"), ("保养", "保养")], default="", string="事件/状态")
workorder_id = fields.Char('加工订单')
time = fields.Char('持续时长')
color = fields.Char('颜色', default=1)
equipment_id = fields.Many2one('maintenance.equipment', '机台号')
equipment_code = fields.Char('设备编码')
name = fields.Char('设备名称', readonly='True')
machine_tool_picture = fields.Binary('设备图片')
type_id = fields.Many2one('sf.machine_tool.type', '品牌型号')
state = fields.Selection([("加工", "加工"), ("关机", "关机"), ("待机", "待机"), ("故障", "故障"),
("检修", "检修"), ("保养", "保养")], default="", string="实时状态")
online_time = fields.Char('开机时长')
offline_time = fields.Char('关机时长')
offline_nums = fields.Integer('关机次数')
# 待机时长
idle_time = fields.Char('待机时长')
# 待机率
idle_rate = fields.Char('待机率')
work_time = fields.Char('加工时长')
work_rate = fields.Char('可用率')
fault_time = fields.Char('故障时长')
fault_rate = fields.Char('故障率')
fault_nums = fields.Integer('故障次数')
detail_ids = fields.One2many('maintenance.equipment.oee.log.detail', 'log_id', string='日志详情')
# maintenance_time = fields.Char('维保时长')
# work_nums = fields.Integer('加工件数')
equipment_oee_id = fields.Many2one('maintenance.equipment.oee', '设备OEE')
@api.onchange('equipment_id')
def get_name(self):
self.name = self.equipment_id.name
self.equipment_code = self.equipment_id.code
# 设备运行日志详情
class SfMaintenanceEquipmentOEELogDetail(models.Model):
_name = 'maintenance.equipment.oee.log.detail'
_description = '设备运行日志详情'
sequence = fields.Integer('序号')
time = fields.Datetime('时间')
state = fields.Selection([("加工", "加工"), ("关机", "关机"), ("待机", "待机"), ("故障", "故障"),
("检修", "检修"), ("保养", "保养")], default="", string="事件/状态")
production_id = fields.Many2one('mrp.production', '加工工单')
log_id = fields.Many2one('maintenance.equipment.oee.logs', '日志')

View File

@@ -1,5 +1,5 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_equipment_maintenance_standards_manager,equipment_maintenance_standards,model_equipment_maintenance_standards,sf_maintenance.sf_group_equipment_manager,1,1,1,0
access_equipment_maintenance_standards_manager,equipment_maintenance_standards,model_equipment_maintenance_standards,sf_maintenance.sf_group_equipment_manager,1,1,1,1
access_equipment_maintenance_standards,equipment_maintenance_standards,model_equipment_maintenance_standards,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_maintenance_logs_sf_group_equipment_user,sf_maintenance_logs,model_sf_maintenance_logs,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_maintenance_logs_sf_group_equipment_manager,sf_maintenance_logs,model_sf_maintenance_logs,sf_maintenance.sf_group_equipment_manager,1,1,1,0
@@ -67,3 +67,6 @@ access_sf_cutting_tool_type_admin_sf_group_equipment_user,sf_cutting_tool_type_a
access_sf_cutting_tool_type_group_purchase_director_sf_group_equipment_user,sf_cutting_tool_type_group_purchase_director,sf_base.model_sf_cutting_tool_type,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_cutting_tool_type_group_sale_director_sf_group_equipment_user,sf_cutting_tool_type_group_sale_director,sf_base.model_sf_cutting_tool_type,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_sf_cutting_tool_type_group_plan_director_sf_group_equipment_user,sf_cutting_tool_type_group_plan_director,sf_base.model_sf_cutting_tool_type,sf_maintenance.sf_group_equipment_user,1,0,0,0
access_maintenance_equipment_oee_logs,maintenance_equipment_oee_logs,model_maintenance_equipment_oee_logs,sf_maintenance.sf_group_equipment_manager,1,1,1,1
access_maintenance_equipment_oee_log_detail,maintenance_equipment_oee_log_detail,model_maintenance_equipment_oee_log_detail,sf_maintenance.sf_group_equipment_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_equipment_maintenance_standards_manager equipment_maintenance_standards model_equipment_maintenance_standards sf_maintenance.sf_group_equipment_manager 1 1 1 0 1
3 access_equipment_maintenance_standards equipment_maintenance_standards model_equipment_maintenance_standards sf_maintenance.sf_group_equipment_user 1 0 0 0
4 access_sf_maintenance_logs_sf_group_equipment_user sf_maintenance_logs model_sf_maintenance_logs sf_maintenance.sf_group_equipment_user 1 0 0 0
5 access_sf_maintenance_logs_sf_group_equipment_manager sf_maintenance_logs model_sf_maintenance_logs sf_maintenance.sf_group_equipment_manager 1 1 1 0
67
68
69
70
71
72

View File

@@ -14,6 +14,7 @@
<field name="utilization_rate"/>
<field name="fault_time"/>
<field name="fault_nums"/>
<field name="fault_rate"/>
</tree>
</field>
</record>
@@ -49,19 +50,19 @@
</group>
</group>
<notebook>
<page string="运行日志">
<field name="oee_logs">
<tree create="1" edit="1" delete="1" editable="bottom">
<field name = 'run_time'/>
<field name = 'state'/>
<field name = 'workorder_id'/>
<field name = 'time'/>
<field name = 'color' widget="color"/>
</tree>
</field>
</page>
</notebook>
<!-- <notebook> -->
<!-- <page string="运行日志"> -->
<!-- <field name="oee_logs"> -->
<!-- <tree create="1" edit="1" delete="1" editable="bottom"> -->
<!-- <field name = 'run_time'/> -->
<!-- <field name = 'state'/> -->
<!-- <field name = 'workorder_id'/> -->
<!-- <field name = 'time'/> -->
<!-- <field name = 'color' widget="color"/> -->
<!-- </tree> -->
<!-- </field> -->
<!-- </page> -->
<!-- </notebook> -->
</sheet>
</form>
</field>

View File

@@ -7,22 +7,20 @@
<field name="model">sf.maintenance.logs</field>
<field name="arch" type="xml">
<tree>
<field name="code"/>
<field name="type" optional="hide"/>
<field name="brand"/>
<field name="maintenance_equipment_id"/>
<field name="code_location" optional="hide"/>
<field name="fault_type"/>
<field name="fault_code" optional="hide"/>
<field name="alarm_time"/>
<field name="fault_alarm_info"/>
<field name="alarm_level" optional="hide"/>
<field name="alarm_time"/>
<field name="alarm_way" optional="hide"/>
<field name="fault_process"/>
<field name="operator"/>
<field name="fault_process" optional="hide"/>
<field name="operator" optional="hide"/>
<field name="recovery_time"/>
<field name="fault_duration"/>
<field name="note"/>
<field name="note" optional="hide"/>
</tree>
</field>
</record>
@@ -45,25 +43,32 @@
<group>
<group>
<field name="name"/>
<field name="type" required="1" widget="radio" options="{'horizontal': true}"/>
<field name="brand"/>
<!-- <field name="name"/> -->
<!-- <field name="type" required="1" widget="radio" options="{'horizontal': true}"/> -->
<field name="maintenance_equipment_id"/>
<field name="code_location"/>
<field name="fault_type" required="1" widget="radio" options="{'horizontal': true}"/>
<field name="fault_code"/>
<field name="fault_process"/>
</group>
<group>
<field name="fault_alarm_info"/>
<field name="brand"/>
<field name="alarm_time"/>
<field name="alarm_way" required="1" widget="radio" options="{'horizontal': true}"/>
<field name="operator"/>
<field name="recovery_time"/>
<field name="fault_duration"/>
<field name="note"/>
<field name="fault_alarm_info"/>
<!-- <field name="code_location"/> -->
<!-- <field name="fault_type" required="1" widget="radio" options="{'horizontal': true}"/> -->
<!-- <field name="fault_code"/> -->
</group>
<group>
<field name="operator"/>
<field name="fault_process"/>
<!-- <field name="alarm_way" required="1" widget="radio" options="{'horizontal': true}"/> -->
<field name="recovery_time"/>
<field name="fault_duration"/>
</group>
</group>
<group>
<field name="note"/>
</group>
</sheet>
</form>
@@ -100,6 +105,246 @@
</field>
</record>
<!-- 设备运行日志 -->
<record id="view_maintenance_logs_run_tree" model="ir.ui.view">
<field name="name">maintenance.logs.run.tree</field>
<field name="model">maintenance.equipment.oee.logs</field>
<field name="arch" type="xml">
<tree>
<field name="equipment_id"/>
</tree>
</field>
</record>
<record id="view_maintenance_logs_run_form" model="ir.ui.view">
<field name="name">maintenance.logs.run.form</field>
<field name="model">maintenance.equipment.oee.logs</field>
<field name="arch" type="xml">
<!-- <form string="设备运行日志"> -->
<!-- <header> -->
<!-- <field name="equipment_id" readonly="1"/> -->
<!-- </header> -->
<!-- <sheet> -->
<!-- <div class="oe_title"> -->
<!-- <h1> -->
<!-- <field name="start_time" readonly="1"/> -->
<!-- </h1> -->
<!-- </div> -->
<!-- <group> -->
<!-- <group> -->
<!-- <field name="stop_time" readonly="1"/> -->
<!-- <field name="duration" readonly="1"/> -->
<!-- <field name="oee" readonly="1"/> -->
<!-- </group> -->
<!-- <group> -->
<!-- <field name="note"/> -->
<!-- </group> -->
<!-- </group> -->
<!-- </sheet> -->
<!-- </form> -->
<form string="设备运行日志">
<!-- <header> -->
<!-- <field name="name" readonly="1"/> -->
<!-- </header> -->
<sheet>
<div class="oe_title">
<h1>
<field name="name"/>
</h1>
</div>
<group>
<group>
<group>
<field name="equipment_id" domain="[('name','ilike','加工中心')]"/>
<field name="type_id"/>
<field name="state"/>
</group>
</group>
<group>
<group>
<!-- <field name="state" nolabel="1"/> -->
<field name="state" string=""/>
</group>
<group>
<field name="machine_tool_picture" widget="image" nolabel="1"/>
</group>
</group>
</group>
<group>
<group>
<group>
<field name="online_time" readonly="1"/>
<field name="offline_time" readonly="1"/>
<field name="fault_rate" readonly="1"/>
</group>
<group>
<field name="offline_nums" readonly="1"/>
<field name="fault_time" readonly="1"/>
<field name="fault_nums" readonly="1"/>
</group>
</group>
<group>
<group>
<field name="idle_time"/>
<field name="idle_rate"/>
</group>
<group>
<field name="work_time"/>
<field name="work_rate"/>
</group>
</group>
</group>
<notebook>
<page string="24H日志详情">
<!-- 筛选出24小时内的日志 -->
<!-- <field name="detail_ids" domain="[('time','&lt;',(datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S'))]"> -->
<field name="detail_ids" domain="[('state','ilike','加工')]">
<tree>
<field name="sequence"/>
<field name="time"/>
<field name="state"/>
<field name="production_id"/>
</tree>
<!-- <form> -->
<!-- <field name="sequence"/> -->
<!-- <field name="time"/> -->
<!-- <field name="state"/> -->
<!-- <field name="production_id"/> -->
<!-- </form> -->
</field>
</page>
<page string="历史日志详情">
<field name="detail_ids">
<tree>
<field name="sequence"/>
<field name="time"/>
<field name="state"/>
<field name="production_id"/>
</tree>
<!-- <form> -->
<!-- <field name="sequence"/> -->
<!-- <field name="time"/> -->
<!-- <field name="state"/> -->
<!-- <field name="production_id"/> -->
<!-- </form> -->
</field>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<!-- <record id="view_maintenance_logs_run_search" model="ir.ui.view"> -->
<!-- <field name="name">maintenance.logs.run.search</field> -->
<!-- <field name="model">maintenance.equipment.oee.logs</field> -->
<!-- <field name="arch" type="xml"> -->
<!-- <search> -->
<!-- <field name="equipment_id"/> -->
<!-- <field name="start_time"/> -->
<!-- <field name="stop_time"/> -->
<!-- <field name="duration"/> -->
<!-- <field name="oee"/> -->
<!-- <field name="note"/> -->
<!-- </search> -->
<!-- </field> -->
<!-- </record> -->
<!-- 设备运行日志详情 -->
<record id="view_maintenance_logs_run_detail_tree" model="ir.ui.view">
<field name="name">maintenance.logs.run.detail.tree</field>
<field name="model">maintenance.equipment.oee.log.detail</field>
<field name="arch" type="xml">
<tree>
<field name="sequence"/>
<field name="time"/>
<field name="state"/>
<field name="production_id"/>
</tree>
</field>
</record>
<record id="view_maintenance_logs_run_detail_form" model="ir.ui.view">
<field name="name">maintenance.logs.run.detail.form</field>
<field name="model">maintenance.equipment.oee.log.detail</field>
<field name="arch" type="xml">
<form string="设备运行日志详情">
<sheet>
<group>
<group>
<field name="state"/>
<field name="production_id"/>
</group>
<group>
<field name="sequence"/>
<field name="time"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<!-- <record id="view_maintenance_logs_run_detail_search" model="ir.ui.view"> -->
<!-- <field name="name">maintenance.logs.run.detail.search</field> -->
<!-- <field name="model">maintenance.equipment.oee.logs.detail</field> -->
<!-- <field name="arch" type="xml"> -->
<!-- <search> -->
<!-- <field name="equipment_id"/> -->
<!-- <field name="start_time"/> -->
<!-- <field name="stop_time"/> -->
<!-- <field name="duration"/> -->
<!-- <field name="oee"/> -->
<!-- <field name="note"/> -->
<!-- </search> -->
<!-- </field> -->
<!-- </record> -->
<!-- 设备运行日志详情action -->
<!-- <record id="action_maintenance_logs_run_detail" model="ir.actions.act_window"> -->
<!-- <field name="name">设备运行日志详情</field> -->
<!-- <field name="type">ir.actions.act_window</field> -->
<!-- <field name="res_model">maintenance.equipment.oee.logs.detail</field> -->
<!-- <field name="view_mode">tree,form</field> -->
<!-- <field name="view_id" ref="view_maintenance_logs_run_detail_tree"/> -->
<!-- <field name="help" type="html"> -->
<!-- <p class="oe_view_nocontent_create"> -->
<!-- 设备运行日志详情 -->
<!-- </p> -->
<!-- </field> -->
<!-- -->
<!-- </record> -->
<record id="action_maintenance_logs_run" model="ir.actions.act_window">
<field name="name">设备运行日志</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">maintenance.equipment.oee.logs</field>
<!-- <field name="search_view_id" ref="view_maintenance_logs_run_search"/> -->
<field name="view_mode">tree,form</field>
<!-- <field name="view_mode">form</field> -->
<field name="view_id" ref="view_maintenance_logs_run_tree"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
设备运行日志
</p>
</field>
</record>
<menuitem name="设备运行日志" id="menu_maintenance_logs_run" parent="maintenance.menu_m_request"
sequence="10" action="action_maintenance_logs_run"/>
<!-- Action -->

View File

@@ -988,7 +988,7 @@
<xpath expr="//div[hasclass('o_row')][field[@name='maintenance_duration']]" position="after">
<field name='overhaul_id'/>
<field name='overhaul_id' options="{'no_create':True}"/>
<field name="overhaul_date" string="下次预防检修"/>
<label for="overhaul_period" string="预防检修频次"/>
<div class="o_row">

Some files were not shown because too many files have changed in this diff Show More