Compare commits

..

331 Commits

Author SHA1 Message Date
jinling.yang
f7e6be7925 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/产品的权限优化
# Conflicts:
#	sf_dlm_management/views/product_template_management_view.xml
#	sf_sale/models/quick_easy_order.py
#	sf_sale/models/sale_order.py
#	sf_sale/views/purchase_order_view.xml
2024-02-22 09:35:18 +08:00
禹翔辉
8695a66e3d Accept Merge Request #820: (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/820?initial=true
2024-02-21 16:28:39 +08:00
yuxianghui
410b384fd6 Merge branch 'feature/中控接口优化' into feature/新增中控接口 2024-02-21 16:26:27 +08:00
yuxianghui
51b7bcac8a 1、新增刀具组、机床刀具组接口,修改中控相关接口名称 2024-02-21 16:24:10 +08:00
马广威
36ce43cf8a Accept Merge Request #819: (feature/制造代码优化 -> develop)
Merge Request: 修复序列号问题

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/819?initial=true
2024-02-21 15:26:42 +08:00
mgw
b4538a3f9d 修复序列号问题 2024-02-21 15:25:55 +08:00
杨金灵
7d3a320893 Accept Merge Request #818: (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/818?initial=true
2024-02-21 14:54:40 +08:00
jinling.yang
0354f6b136 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化快速订单 2024-02-21 14:52:36 +08:00
jinling.yang
1e006b0bd7 1.工单新增rfid字段
2.修改中控对接的工单接口
3.快速订单材料,型号,客户修改为可选择
2024-02-21 14:52:14 +08:00
马广威
50b0204cc6 Accept Merge Request #817: (feature/制造代码优化 -> develop)
Merge Request: 修复物流方式导致的分配工厂失败问题

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/817?initial=true
2024-02-21 11:33:18 +08:00
mgw
72df0aa640 修复物流方式导致的分配工厂失败问题 2024-02-21 11:32:06 +08:00
马广威
02bf6a6764 Accept Merge Request #816: (feature/制造代码优化 -> develop)
Merge Request: 货架货位拆分测试异常问题修复

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/816?initial=true
2024-02-20 20:17:50 +08:00
mgw
64581abeb1 测试异常问题修复 2024-02-20 20:17:00 +08:00
马广威
82f80f1d15 Accept Merge Request #815: (feature/制造代码优化 -> develop)
Merge Request: 货架货位对象拆分

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/815
2024-02-20 17:40:01 +08:00
mgw
f324a9d471 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化
# Conflicts:
#	sf_warehouse/views/shelf_location.xml
2024-02-20 17:37:52 +08:00
mgw
6103bca698 货架货位对象拆分 2024-02-20 17:35:31 +08:00
jinling.yang
9a4477de8b Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化快速订单 2024-02-20 17:34:52 +08:00
jinling.yang
5646cc492e 1.快速订单新增特征识别路径字段
2.修复销售经理和销售总监看不到快速订单菜单
3.优化系统设置页面,新增特征识别路径展示,去掉重复的业务平台参数配置展示
4.快速订单去掉老版本的特征识别的代码及包,新增最新的特征识别方法
2024-02-20 17:33:06 +08:00
禹翔辉
d5c748db78 Accept Merge Request #814: (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/814?initial=true
2024-02-20 16:05:00 +08:00
yuxianghui
9c08021773 Merge branch 'feature/自动生成二维码' into feature/序列号添加二维码 2024-02-20 16:01:52 +08:00
yuxianghui
cf3ec1b6ae 1、序列号模型添加二维码字段,添加自动根据序列号名称生成二维码的功能,新增打印二维码功能; 2024-02-20 15:59:58 +08:00
禹翔辉
df89f40a24 Accept Merge Request #813: (feature/功能刀具组装优化 -> develop)
Merge Request: 1、删除功能刀具组装模型的打印二维码按钮,隐藏组装单打印按钮;2、添加功能刀具组装时的rfid验重功能;

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/813?initial=true
2024-02-20 14:51:18 +08:00
yuxianghui
5c24cec4f6 Merge branch 'feature/刀具物料查询模型重构' into feature/功能刀具组装优化 2024-02-20 14:40:28 +08:00
杨金灵
4379854b89 Accept Merge Request #812: (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/812?initial=true
2024-02-20 14:39:18 +08:00
jinling.yang
3a076bbdd1 删除库存部分代码 2024-02-20 14:37:50 +08:00
yuxianghui
bb519b8ab8 1、序列号模型自动跟具序列号名称生成二维码(未完成) 2024-02-20 14:35:28 +08:00
杨金灵
de26109ccc Accept Merge Request #809: (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/809
2024-02-20 14:35:03 +08:00
yuxianghui
53e5aa2017 优化刀具组接口 2024-02-20 14:32:13 +08:00
yuxianghui
0183a5ab2b 1、删除功能刀具组装模型的打印二维码按钮,隐藏组装单打印按钮;2、添加功能刀具组装时的rfid验重功能; 2024-02-20 14:27:43 +08:00
马广威
54c5259ed9 Accept Merge Request #811: (feature/制造代码优化 -> develop)
Merge Request: 分配序列号时增加二维码生成及编码打印

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/811?initial=true
2024-02-20 13:11:39 +08:00
mgw
efdde5aef0 分配序列号时增加二维码生成及编码打印 2024-02-20 13:09:25 +08:00
马广威
584dd11c61 Accept Merge Request #810: (feature/制造代码优化 -> develop)
Merge Request: 代码优化

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/810?initial=true
2024-02-19 17:25:00 +08:00
mgw
635583826f 物流处bug修复 2024-02-19 17:23:57 +08:00
jinling.yang
cbd7b561de 产品的加工参数的权限修复 2024-02-19 17:07:42 +08:00
mgw
9c080e0cb4 权限控制增补 2024-02-19 15:26:36 +08:00
mgw
1c61a8ef1c Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化 2024-02-19 14:36:13 +08:00
mgw
07ed60e8a7 刀具管理权限优化 2024-02-19 14:35:51 +08:00
禹翔辉
7207d7eb36 Accept Merge Request #808: (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/808?initial=true
2024-02-18 17:26:47 +08:00
yuxianghui
9ede024710 Merge branch 'feature/刀具物料查询模型重构' into feature/重构刀具物料查询 2024-02-18 17:23:44 +08:00
yuxianghui
cb8285d0ca 1、重构刀具物料查询模型;2、新增产品创建时产品类别为刀具时,创建刀具物料查询模型记录;3、新增序列号和刀具物料查询模型的关联字段,新增刀具物料是否可用状态字段;并在新增序列号记录时,如果关联的产品的产品类别为刀具时,对对应刀具物料查询记录进行关联; 2024-02-18 17:22:06 +08:00
马广威
3e3f49f8aa Accept Merge Request #807: (feature/制造代码优化 -> develop)
Merge Request: 优化排程单与制造订单生产线状态联动的问题

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/807
2024-02-18 15:43:32 +08:00
禹翔辉
35cc1ce6dc Accept Merge Request #806: (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/806
2024-02-18 10:32:36 +08:00
yuxianghui
b4b70e3cf0 Merge branch 'feature/生产线驾驶舱优化' into feature/优化驾驶舱 2024-02-18 10:28:40 +08:00
yuxianghui
39a2b1035a 优化生产线驾驶舱,将功能刀具组装中心的按键改成组装单的跳转按键 2024-02-18 10:24:21 +08:00
jinling.yang
b370e34dca Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-02-17 16:38:03 +08:00
jinling.yang
a6b5a823b8 Merge branch 'feature/产品相关岗位权限的修复' into develop 2024-02-17 16:37:33 +08:00
杨金灵
24bcec8646 Accept Merge Request #805: (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/805?initial=true
2024-02-17 16:37:11 +08:00
jinling.yang
5a74c346a7 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/产品相关岗位权限的修复 2024-02-17 16:35:16 +08:00
jinling.yang
1c64ee9b90 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-02-17 16:34:50 +08:00
jinling.yang
c867b3c7bc 产品相关岗位权限的修复 2024-02-17 16:34:32 +08:00
mgw
a4413af2f3 优化排程单与制造订单生产线状态联动的问题 2024-02-17 15:35:40 +08:00
禹翔辉
f726bbaef6 Accept Merge Request #804: (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/804?initial=true
2024-02-05 14:13:37 +08:00
yuxianghui
53ce27d623 Merge branch 'feature/功能刀具组装扫录入数据功能优化' into feature/刀具物料扫码录入验证 2024-02-05 14:11:14 +08:00
yuxianghui
b88e4af4e2 优化刀具物料扫码录入验证 2024-02-05 14:09:06 +08:00
jinling.yang
a12c81e60d Merge branch 'feature/修复同步刀具标准库相关接口' into develop 2024-02-05 11:05:56 +08:00
杨金灵
13415dd771 Accept Merge Request #803: (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/803
2024-02-05 11:05:33 +08:00
jinling.yang
7ea6a78fbd Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复同步刀具标准库相关接口 2024-02-05 10:59:20 +08:00
jinling.yang
d5aaa70013 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-02-05 10:59:03 +08:00
jinling.yang
f05d0461c3 1.修复同步刀具标准库相关接口2.修复产品存档权限问题 2024-02-05 10:57:57 +08:00
yuxianghui
b525a45107 优化功能刀具组装的刀具物料验证 2024-02-04 17:30:26 +08:00
马广威
6ab0bf7b5d Accept Merge Request #802: (feature/制造代码优化 -> develop)
Merge Request: 控制oee对计划人员只读

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/802?initial=true
2024-02-04 17:25:29 +08:00
jinling.yang
f1335e8252 Merge branch 'feature/修复产品权限问题' into develop 2024-02-04 16:57:44 +08:00
mgw
f0c8a82b43 控制oee对计划人员只读 2024-02-04 16:57:39 +08:00
杨金灵
f435fe3577 Accept Merge Request #801: (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/801?initial=true
2024-02-04 16:56:05 +08:00
jinling.yang
9bae3a4e5f Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复产品权限问题 2024-02-04 16:53:28 +08:00
jinling.yang
e7808216ca Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-02-04 16:53:12 +08:00
jinling.yang
e48c5e39ac 修复产品页面部分一对多字段的访问权限 2024-02-04 16:52:57 +08:00
龚启豪
0d2e043449 Accept Merge Request #799: (feature/修改机床参数bug -> 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/799
2024-02-04 16:07:25 +08:00
马广威
f2a822aeda Accept Merge Request #800: (feature/制造代码优化 -> develop)
Merge Request: 机企猫 隐藏项目模块修改接入(可隐藏导出、新建等项目)

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/800?initial=true
2024-02-04 16:06:27 +08:00
qihao.gong@jikimo.com
6cdc547da5 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修改机床参数bug 2024-02-04 15:57:16 +08:00
qihao.gong@jikimo.com
c11dc4f9c4 修改权限相关缺陷 2024-02-04 15:56:53 +08:00
mgw
f6c121771f 机企猫 隐藏项目模块修改接入(可隐藏导出、新建等项目) 2024-02-04 15:32:25 +08:00
jinling.yang
db77b0b3ac Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-02-04 14:26:23 +08:00
jinling.yang
9565927ba6 Merge branch 'feature/修改客户编辑权限' into develop 2024-02-04 14:25:33 +08:00
杨金灵
18d8212c3f Accept Merge Request #798: (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/798?initial=true
2024-02-04 14:25:17 +08:00
jinling.yang
1ca5817379 客户页面优化编辑 2024-02-04 14:22:53 +08:00
jinling.yang
0185a3bc2b 修复客户页面除销售员和采购员字段可编辑,其余不可编辑 2024-02-02 17:27:08 +08:00
jinling.yang
0c4407ce8e Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-02-02 15:59:13 +08:00
jinling.yang
f11c88cf1b Merge branch 'feature/修复工件配送及权限' into develop 2024-02-02 15:59:00 +08:00
杨金灵
7e025e7ca1 Accept Merge Request #797: (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/797?initial=true
2024-02-02 15:58:45 +08:00
jinling.yang
4da7114655 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复工件配送及权限 2024-02-02 15:52:35 +08:00
jinling.yang
e3bac55346 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-02-02 15:52:19 +08:00
jinling.yang
8c52c42074 1.修复来自业务平台的自动生产的采购单状态
2.修复所有同步cloud的数据
2024-02-02 15:52:06 +08:00
jinling.yang
ab9fcf97e0 1.修复工件配送扫描工件(坯料)时,同运工件显示的是坯料对应的制造订单号,修改配送时长字段类型及对应的时长方法,修复工件装夹岗不能修改配送工件
2.修复产品中计划总监岗和调度总监岗不能访问切削速度的权限
2024-02-01 17:37:41 +08:00
禹翔辉
f270f683de Accept Merge Request #796: (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/796?initial=true
2024-02-01 17:11:10 +08:00
yuxianghui
8e806225d0 添加功能刀具组装时扫描录入刀具物料时进行物料是否已入库和是否已经使用的判断 2024-02-01 17:07:19 +08:00
jinling.yang
56847c7a22 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-02-01 11:44:57 +08:00
jinling.yang
9973370fd6 Merge branch 'feature/优化工件配送列表' into develop 2024-02-01 11:44:39 +08:00
杨金灵
3cb71a8017 Accept Merge Request #795: (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/795
2024-02-01 11:44:16 +08:00
jinling.yang
cc72ddfad7 释放注释代码 2024-02-01 11:35:08 +08:00
jinling.yang
527ab396ee 1.新增工件配送向导2.修复采购审核按钮不可见3.配置中新增agv路径字段4.优化工单上按钮显示条件 2024-01-30 17:40:05 +08:00
jinling.yang
1c90c97b92 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-01-30 11:55:38 +08:00
jinling.yang
d70d3a9254 Merge branch 'feature/修改admin的访问权限' into develop 2024-01-30 11:55:03 +08:00
杨金灵
2d4ae18e64 Accept Merge Request #794: (feature/修改admin的访问权限 -> 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/794?initial=true
2024-01-30 11:54:21 +08:00
jinling.yang
92850fe34f 采购页面新增审核状态字段 2024-01-30 11:52:29 +08:00
jinling.yang
17bbe1414b Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修改admin的访问权限 2024-01-30 11:43:56 +08:00
jinling.yang
7f56a75722 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-01-30 11:43:39 +08:00
jinling.yang
51a9b55782 修改admin在同步模型的访问权限 2024-01-30 11:43:18 +08:00
马广威
addc68ed5a Accept Merge Request #793: (feature/制造代码优化 -> develop)
Merge Request: 优化货位颜色及启用货位

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/793
2024-01-30 09:49:25 +08:00
mgw
5e9d541239 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化 2024-01-30 09:48:38 +08:00
mgw
642a93c449 优化货位颜色及启用货位 2024-01-30 09:48:14 +08:00
jinling.yang
ff7151399f Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-01-30 09:45:28 +08:00
jinling.yang
a67f45f9d5 Merge branch 'feature/新增工件装夹预调工单任务' into develop 2024-01-30 09:45:07 +08:00
杨金灵
98ef86866a Accept Merge Request #791: (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/791
2024-01-30 09:44:40 +08:00
马广威
f2c70fa167 Accept Merge Request #792: (feature/制造代码优化 -> develop)
Merge Request: 修复货位问题

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/792?initial=true
2024-01-30 09:13:12 +08:00
mgw
1c0187d55b Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化 2024-01-30 09:12:27 +08:00
mgw
04244dd17a 修复货位问题 2024-01-30 09:12:02 +08:00
jinling.yang
da63b0b7ff Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/新增工件装夹预调工单任务 2024-01-29 19:45:46 +08:00
jinling.yang
a088ee9ed5 1.制造模块内配置下的所有模型增加管理员(admin)权限
2.工单上的工件配送优化验证及对应的页面上新增工件配送按钮
2024-01-29 19:43:57 +08:00
禹翔辉
ee78dda3a9 Accept Merge Request #790: (feature/功能刀具添加fid -> develop)
Merge Request: 功能刀具模块的功能刀具添加fid字段,隐藏序列号字段

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/790
2024-01-29 17:28:06 +08:00
yuxianghui
e13bd0dc61 修改功能刀具预警的rfid关联字段 2024-01-29 17:25:34 +08:00
yuxianghui
9f57ad6aaf 将fid改为rfid 2024-01-29 17:23:17 +08:00
yuxianghui
8c4996b7c2 功能刀具模块的功能刀具添加fid字段,隐藏序列号字段 2024-01-29 17:05:56 +08:00
jinling.yang
cf2aaa38fe 1.修复材料型号同步报验证问题2.优化工单的工件派送3.计划里新增生产线的优化 2024-01-26 17:46:53 +08:00
马广威
ac900dd3f0 Accept Merge Request #789: (feature/制造代码优化 -> develop)
Merge Request: 修复数据同步问题

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/789?initial=true
2024-01-26 15:09:07 +08:00
mgw
0e762f9cbc Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化 2024-01-26 15:08:29 +08:00
mgw
4ee4b28389 修复数据同步问题 2024-01-26 14:18:10 +08:00
龚启豪
d36acedaa3 Accept Merge Request #788: (feature/修改机床参数bug -> 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/788
2024-01-26 11:31:19 +08:00
龚启豪
1311d5be1e Merge branch refs/heads/develop into refs/heads/feature/修改机床参数bug 2024-01-26 11:28:51 +08:00
qihao.gong@jikimo.com
207cd83d3c 取消OCC注释 2024-01-26 11:27:12 +08:00
jinling.yang
37161e2e20 1.修改工单的托盘序列号,托盘名称,托盘品牌,托盘类型,托盘型号字段类型,且页面对应字段改为只读
2.装夹预调工单新增扫条形码,扫码时对该工单进行自动开始并将条码里对应的托盘产品信息回填到托盘序列号,托盘名称,托盘品牌,托盘类型,托盘型号字段上,点击完成时对前置三元定位检测参数进行验证
3.研究打印序列号(多个)
2024-01-25 17:51:57 +08:00
qihao.gong@jikimo.com
6461e3a423 修改货架货位看板颜色 2024-01-25 17:36:34 +08:00
黄焱
76393d438b Accept Merge Request #787: (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/787?initial=true
2024-01-25 10:09:48 +08:00
黄焱
50ced99785 修改货架货位空闲颜色 2024-01-25 10:03:53 +08:00
jinling.yang
8e3a316200 采购入库时,新增打印序列号方法 2024-01-24 17:30:59 +08:00
qihao.gong@jikimo.com
fc7c66c615 AGV增加运行日志
设备oee增加运行日志
2024-01-24 17:29:42 +08:00
jinling.yang
2daeb01c4d Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/新增工件装夹预调工单任务 2024-01-24 16:04:53 +08:00
杨金灵
1818e97289 Accept Merge Request #786: (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/786?initial=true
2024-01-24 16:04:13 +08:00
jinling.yang
e661297b5d 修复采购总监审核菜单单-审核通过后没有反应-订单状态没有变 2024-01-24 15:59:58 +08:00
jinling.yang
926caeca97 工件配送文字修改 2024-01-24 14:54:07 +08:00
jinling.yang
403ba64e50 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/新增工件装夹预调工单任务
# Conflicts:
#	sf_manufacturing/views/mrp_production_addional_change.xml
2024-01-24 14:39:47 +08:00
jinling.yang
cdc3c52784 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-01-24 14:24:42 +08:00
马广威
7000b66683 Accept Merge Request #785: (feature/制造代码优化 -> develop)
Merge Request: 调整视图显隐控制逻辑

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/785?initial=true
2024-01-24 14:24:35 +08:00
jinling.yang
82f54b5d83 制造订单页面新增生产线和计划开始加工时间字段 2024-01-24 14:24:27 +08:00
mgw
1af08763ea 调整视图显隐控制逻辑 2024-01-24 14:24:01 +08:00
jinling.yang
8f379a2635 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/新增工件装夹预调工单任务
# Conflicts:
#	sf_manufacturing/models/mrp_workorder.py
2024-01-23 17:42:38 +08:00
马广威
96b0773c00 Accept Merge Request #784: (feature/制造代码优化 -> develop)
Merge Request: 物流相关增量开发,修改一些原生按钮,修改一些翻译。增加功能:当为非“自提”单时,必须进行物流下单才能进行出库操作。增加对字段的显隐控制

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/784
2024-01-23 17:32:53 +08:00
mgw
79f8cd21a9 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化 2024-01-23 17:31:04 +08:00
mgw
5c129331e0 增加功能:当为非“自提”单时,必须进行物流下单才能进行出库操作。增加对字段的显隐控制 2024-01-23 16:13:53 +08:00
jinling.yang
cddb025e98 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-01-23 15:33:37 +08:00
jinling.yang
1e2272c13a 新增工件配送对象 2024-01-23 15:33:17 +08:00
禹翔辉
d955832bd8 Accept Merge Request #783: (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/783?initial=true
2024-01-23 15:32:18 +08:00
yuxianghui
4a52327acd Merge remote-tracking branch 'origin/feature/关闭接口的调用' into feature/新增工件配送模型 2024-01-23 15:30:10 +08:00
yuxianghui
136d0f5156 新增工件配送模型及其tree视图,search视图,添加自动计算配送时长功能; 2024-01-23 15:29:07 +08:00
mgw
0254387c03 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化
# Conflicts:
#	sf_sale/models/sale_order.py
2024-01-23 10:36:21 +08:00
mgw
90f8c4143e 物流相关增量开发,修改一些原生按钮,修改一些翻译 2024-01-23 10:34:49 +08:00
qihao.gong@jikimo.com
0ef13504e7 修改货架货位关联移动历史调拨单关联 2024-01-22 17:33:40 +08:00
禹翔辉
40bf41c93d Accept Merge Request #782: (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/782
2024-01-22 17:16:26 +08:00
yuxianghui
3f8aded61c Merge branch 'feature/CAM用刀优化及添加接口' into feature/关闭接口的调用 2024-01-22 17:14:19 +08:00
yuxianghui
f5c555ec86 注释新增接口的调用 2024-01-22 17:11:45 +08:00
禹翔辉
3e7f145255 Accept Merge Request #781: (feature/CAM用刀优化及添加接口 -> 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/781?initial=true
2024-01-22 15:55:40 +08:00
yuxianghui
2a5a9de3e3 1、添加机床刀位字段 2024-01-22 15:54:30 +08:00
jinling.yang
d2bca2ff51 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-01-22 15:45:19 +08:00
jinling.yang
f9d6a13d33 Merge branch 'feature/新增机台日计划,工件预调(前置三元检测),NC程序下载接口' into develop 2024-01-22 15:45:00 +08:00
杨金灵
adcd2c39fc Accept Merge Request #779: (feature/新增机台日计划,工件预调(前置三元检测),NC程序下载接口 -> 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/779
2024-01-22 15:41:49 +08:00
jinling.yang
b37d547359 http验证代码还原 2024-01-22 15:41:20 +08:00
马广威
72f5496905 Accept Merge Request #780: (feature/制造代码优化 -> develop)
Merge Request: 增加刀具管理权限控制,刀具组权限控制,隐藏工单上原生按钮,修复只读权限后修改记录无权限问题等

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/780?initial=true
2024-01-22 15:40:23 +08:00
jinling.yang
daa7c467f9 注释代码还原 2024-01-22 15:37:06 +08:00
jinling.yang
12c6959ba4 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/新增机台日计划,工件预调(前置三元检测),NC程序下载接口
# Conflicts:
#	sf_manufacturing/controllers/controllers.py
2024-01-22 15:35:13 +08:00
龚启豪
81fe1cf486 Accept Merge Request #778: (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/778?initial=true
2024-01-22 14:49:20 +08:00
禹翔辉
b5a8379d52 Accept Merge Request #777: (feature/CAM用刀优化及添加接口 -> develop)
Merge Request: CAM用刀优化,新增接口

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/777
2024-01-22 14:48:57 +08:00
qihao.gong@jikimo.com
92fc988951 修改视图bug 2024-01-22 14:43:58 +08:00
yuxianghui
d03813db40 Merge remote-tracking branch 'origin/feature/接口及CAM用刀' into feature/CAM用刀优化及添加接口 2024-01-22 14:42:45 +08:00
龚启豪
1b3b80f735 Accept Merge Request #776: (feature/修改机床参数bug -> 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/776
2024-01-22 14:39:06 +08:00
qihao.gong@jikimo.com
4efb6dc6d0 Merge branch 'feature/修改机床参数bug' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修改机床参数bug
# Conflicts:
#	sf_warehouse/views/view.xml
2024-01-22 14:37:59 +08:00
yuxianghui
f58420ac46 Merge remote-tracking branch 'origin/feature/新增中控对接接口' into feature/接口及CAM用刀
# Conflicts:
#	sf_tool_management/models/base.py
2024-01-22 14:37:57 +08:00
qihao.gong@jikimo.com
7b2b15d601 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修改机床参数bug
# Conflicts:
#	sf_warehouse/views/view.xml
2024-01-22 14:37:25 +08:00
qihao.gong@jikimo.com
b9ba29d276 取消OCC注释 2024-01-22 14:36:36 +08:00
龚启豪
e0baa2574a Merge branch refs/heads/develop into refs/heads/feature/修改机床参数bug 2024-01-22 14:33:26 +08:00
yuxianghui
fced85f530 1、删除无语字段 2024-01-22 14:32:33 +08:00
qihao.gong@jikimo.com
e80056938f 修改库存配置的审核按钮 2024-01-22 14:30:53 +08:00
yuxianghui
b5c7be8de0 1、新增机床刀具组接口,在刀具组新建和更新时调用接口;2、新增零件特采接口,在质量检测审核之后调用接口; 2024-01-19 17:26:45 +08:00
jinling.yang
b0104e7b93 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/新增机台日计划,工件预调(前置三元检测),NC程序下载接口 2024-01-19 17:18:59 +08:00
杨金灵
bd9b52e6ce Accept Merge Request #775: (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/775
2024-01-19 17:17:15 +08:00
jinling.yang
af348c4d8f 1.修复平台派单采购单无买家问题2.还原获取CNC程序代码 2024-01-19 17:11:20 +08:00
jinling.yang
9e65f947f9 Merge branch 'feature/修复缺陷' into develop 2024-01-19 16:03:44 +08:00
jinling.yang
3226942ed3 1.修复产品类别和计量单位去掉审核状态字段2.优化bfm派单至sf的销售订单流程3.工序增加编码字段 2024-01-19 15:45:15 +08:00
mgw
2dfd3c9128 增加刀具管理权限控制,刀具组权限控制,隐藏工单上原生按钮,修复只读权限后修改记录无权限问题等 2024-01-19 11:49:57 +08:00
jinling.yang
eb117aef86 1.修复采购总监审核采购单审核不通过后-还显示【审核】按钮2.新增采购总监审核采购单审核不通过后-还显示【审核】按钮3.产品详情界面的删除按钮要隐藏 2024-01-18 17:39:22 +08:00
yuxianghui
3575f0c5c9 1、工单的cnc加工模型添加功能刀具类型字段;2、添加根据刀具类型和刀具名称检索现有功能刀具是否满足需求,如果不满足则创建CAM工单程序用刀计划记录的功能记录;3、添加MES装刀指令接口,根据cnc加工所需的刀具类型和刀具名称检索现有机床内功能刀具是否满足需求,如果不满足则发送MES装刀指令;4、添加刀具组接口,新增功能刀具时传送功能刀具名称、编码、刀具组。 2024-01-18 17:33:54 +08:00
qihao.gong@jikimo.com
aa810bbda2 零件质检接口 修改coding缺陷 2024-01-18 17:26:31 +08:00
jinling.yang
2c12f5b9b6 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-01-18 14:26:51 +08:00
马广威
72b89288f2 Accept Merge Request #773: (feature/制造代码优化 -> develop)
Merge Request: 增加排程动作对销售订单状态的修改,对除能操作的用户外隐藏部分原生按钮

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/773
2024-01-18 09:19:34 +08:00
mgw
cffda26ed0 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化 2024-01-18 09:14:25 +08:00
mgw
eefabbd5b3 添加列表框,但暂时不启用 2024-01-18 09:13:41 +08:00
mgw
6bb46186b1 取消部分审核按钮 2024-01-17 17:56:15 +08:00
mgw
4ab1409b13 修改制造模块,使得原生操作按钮只对制造用户可见 2024-01-17 17:44:10 +08:00
jinling.yang
bba2c1d839 优化自动化传递工单号获取工单信息接口 2024-01-17 17:33:13 +08:00
yuxianghui
d9115333bf 1、优化CAM工单程序用刀计划模型,新增大量字段,优化tree视图及form视图字段及其布局;2、添加CAM换刀申请功能和撤销功能及其按钮;3、添加根据刀具类型和刀具名称检索现有功能刀具是否满足需求,如果不满足则创建CAM工单程序用刀计划记录的功能接口(进行中)。 2024-01-17 17:30:16 +08:00
qihao.gong@jikimo.com
2b7243f69c 合并cnc加工和后置检测工单,新增工单开始结束接口 2024-01-17 17:26:24 +08:00
mgw
a3c8082906 库存处隐藏退回按钮 2024-01-17 14:45:34 +08:00
mgw
9bab450af1 对除库存用户外,隐藏操作按钮 2024-01-17 09:56:40 +08:00
yuxianghui
7520d71adb 1、优化机床模型的标准刀库对象,删除了制造模块中机床刀位模型大部分字段,在刀具管理模块中通过继承机床刀位模型新增字段,同时前端机床from视图中的刀位的tree视图新增大量字段;2、刀具管理模块新增controllers模块文件,新增机床当前刀库实时信息接口。 2024-01-16 17:30:59 +08:00
jinling.yang
4f0c7ad274 1.新增机台日计划接口
2.新工件预调(前置三元检测)接口
3.,新NC程序下载接口接口
2024-01-16 17:25:25 +08:00
jinling.yang
d6e36eea99 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-01-16 14:39:01 +08:00
qihao.gong@jikimo.com
0ea69f41e2 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修改机床参数bug 2024-01-16 14:30:26 +08:00
jinling.yang
de142bd371 Merge branch 'feature/新增与中控系统对接的接口' into develop 2024-01-16 14:23:10 +08:00
杨金灵
cb14bb4ea8 Accept Merge Request #771: (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/771
2024-01-16 14:22:42 +08:00
jinling.yang
22176eda69 接口优化 2024-01-16 11:00:01 +08:00
qihao.gong@jikimo.com
bb75b73247 新增设备OEE菜单 以及对象 2024-01-15 17:45:43 +08:00
jinling.yang
1b490951b1 1.新增自动化传递工单号获取工单信息接口 2024-01-15 17:31:15 +08:00
mgw
f19af2a33f 增加排程动作对销售订单状态的修改 2024-01-12 16:40:29 +08:00
杨金灵
d0e92a649a Accept Merge Request #770: (feature/修复产品bug -> 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/770
2024-01-12 16:23:05 +08:00
jinling.yang
687af76372 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复产品bug 2024-01-12 16:19:16 +08:00
jinling.yang
3acb32a5c2 修复产品模版采购选未过滤供应商及产品Tree视图列表可删除问题 2024-01-12 16:18:57 +08:00
黄焱
8d7dcda582 Accept Merge Request #769: (feature/前端样式修改 -> develop)
Merge Request: 设置modal弹窗样式

Created By: @黄焱
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @黄焱
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/769?initial=true
2024-01-11 15:51:04 +08:00
黄焱
fc2c1e06d9 设置modal弹窗样式 2024-01-11 15:47:39 +08:00
禹翔辉
6c57df8270 Accept Merge Request #768: (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/768
2024-01-11 14:14:34 +08:00
yuxianghui
d042de9e84 Merge remote-tracking branch 'origin/feature/功能刀具新增字段' into feature/夹具型号同步优化 2024-01-11 14:11:57 +08:00
yuxianghui
bc6303d1af 1、删除夹具xml中的无用代码;2、优化夹具物料同步功能 2024-01-11 14:10:49 +08:00
yuxianghui
077ce6d37f 1、删除夹具型号自动更新code值的方法;2、优化功能刀具安全库存创建功能刀具组装单方法;3、优化功能刀具列表中的能力数据的图文展示数据; 2024-01-10 17:42:59 +08:00
杨金灵
0cf3e6e7d6 Accept Merge Request #767: (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/767
2024-01-10 17:18:40 +08:00
jinling.yang
027537080d Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复供应商重复验证 2024-01-10 16:43:58 +08:00
jinling.yang
95d29bb20d 修复供应商名称,税,邮箱重复验证问题 2024-01-10 16:43:28 +08:00
龚启豪
461bc1f86e Accept Merge Request #766: (feature/修改机床参数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/766
2024-01-10 15:50:57 +08:00
qihao.gong@jikimo.com
1bc09a4424 制造订单 2024-01-10 15:50:09 +08:00
qihao.gong@jikimo.com
e6866552bc 处理CNC文件下发失败的bug 2024-01-10 15:48:03 +08:00
jinling.yang
fd7b0630fe Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-01-10 15:28:08 +08:00
jinling.yang
6e6575eadb Merge branch 'feature/修复采购库存销售模块问题' into develop 2024-01-10 15:27:19 +08:00
杨金灵
cc6ec38bfa Accept Merge Request #765: (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/765?initial=true
2024-01-10 15:27:01 +08:00
jinling.yang
8eefbeba54 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复采购库存销售模块问题 2024-01-10 15:25:19 +08:00
jinling.yang
94a24bb469 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-01-10 15:24:55 +08:00
jinling.yang
82c0269761 1.材料型号新增获取方式和供应商的输入验证2.每齿走刀量去掉切削速度字段 2024-01-10 15:24:31 +08:00
马广威
631f72bfe9 Accept Merge Request #764: (feature/制造代码优化 -> develop)
Merge Request: 修复排程时,工单时间未生成的问题

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/764?initial=true
2024-01-10 12:20:49 +08:00
mgw
b5147678b1 修复排程时,工单时间未生成的问题 2024-01-10 12:20:03 +08:00
杨金灵
9047e54afa Accept Merge Request #763: (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/763?initial=true
2024-01-09 17:34:53 +08:00
jinling.yang
8a15ce12d9 修复销售总监创建报价单时在其他信息中不能选择其他销售人员 2024-01-09 17:05:35 +08:00
jinling.yang
4c3e7e40cb Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复采购库存销售模块问题
# Conflicts:
#	sf_base/models/tool_base_new.py
2024-01-09 16:55:19 +08:00
jinling.yang
128dd60a89 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-01-09 16:54:33 +08:00
jinling.yang
f82cb462cf 1.去掉警告2.销售订单详情显示进度状态字段3.修复采购权限组没有存库模块包括以内的相关菜单的访问权限 2024-01-09 16:54:16 +08:00
马广威
7f6025afc0 Accept Merge Request #762: (feature/制造代码优化 -> develop)
Merge Request: 修改一些访问权限

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/762?initial=true
2024-01-09 16:10:24 +08:00
mgw
9bbe3f28a5 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-01-09 16:08:18 +08:00
mgw
3f2a13448d 修改一些访问权限 2024-01-09 16:02:41 +08:00
马广威
e11976bb61 Accept Merge Request #761: (feature/制造代码优化 -> develop)
Merge Request: 修复批量排程缺少工具包的问题,修改标签翻译

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/761?initial=true
2024-01-09 14:52:18 +08:00
龚启豪
00541c1c8f Accept Merge Request #760: (feature/修改机床参数bug -> 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/760?initial=true
2024-01-09 14:50:20 +08:00
qihao.gong@jikimo.com
cac7815369 处理引入缺失报错 2024-01-09 14:47:06 +08:00
qihao.gong@jikimo.com
c336230287 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修改机床参数bug 2024-01-09 14:17:50 +08:00
qihao.gong@jikimo.com
1a896a730e 拉取最新代码 2024-01-09 14:17:38 +08:00
jinling.yang
eaad8337d4 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-01-09 14:16:41 +08:00
jinling.yang
b4ee93bc5a Merge branch 'feature/修复采购按钮显示及产品字段问题' into develop 2024-01-09 12:22:37 +08:00
杨金灵
3919290985 Accept Merge Request #759: (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/759?initial=true
2024-01-09 12:22:13 +08:00
jinling.yang
ec3f00f4a3 去掉待删除字段 2024-01-09 12:05:14 +08:00
jinling.yang
f15ac2c7fd Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-01-09 12:03:15 +08:00
jinling.yang
cc9e6fa3d1 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复采购按钮显示及产品字段问题 2024-01-09 12:01:47 +08:00
jinling.yang
3c3ffa1ebc 1.修复采购订单确认按钮显示问题2.修复涉及适合冷却方式字段的相关模型内该字段的过滤查询条件3.修改产品的适合刀柄型号字段类型4.修改销售订单的输入验证 2024-01-09 12:01:20 +08:00
禹翔辉
776515a861 Accept Merge Request #758: (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/758
2024-01-09 11:18:04 +08:00
yuxianghui
8332c5d141 1、删除产品中和夹具相关的无用代码;2、添加夹具型号和联装类型必填判断条件 2024-01-09 11:15:48 +08:00
qihao.gong@jikimo.com
e6c77e7b35 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修改机床参数bug
# Conflicts:
#	sf_manufacturing/models/product_template.py
2024-01-09 10:38:40 +08:00
qihao.gong@jikimo.com
1fab9ad253 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修改机床参数bug
# Conflicts:
#	sf_manufacturing/models/product_template.py
2024-01-09 10:36:13 +08:00
禹翔辉
e4de4f2af0 Accept Merge Request #757: (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/757
2024-01-09 10:35:52 +08:00
yuxianghui
afdfde245a Merge remote-tracking branch 'origin/feature/产品添加夹具型号信息' into feature/功能刀具新增字段
# Conflicts:
#	sf_manufacturing/models/product_template.py
2024-01-09 10:33:16 +08:00
qihao.gong@jikimo.com
86366cc6cb 修改工单完成后,自动完成制造订单,完工产品就绪状态 2024-01-09 10:31:43 +08:00
yuxianghui
4e6a66c681 1、删除功能刀具组装单的加工工厂字段 2024-01-09 10:30:18 +08:00
mgw
f5805ce6ae 修改标签翻译 2024-01-09 10:11:13 +08:00
jinling.yang
8239e53a76 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-01-09 09:45:40 +08:00
jinling.yang
bbaede2166 Merge branch 'feature/修复销售和采购' into develop 2024-01-09 09:45:24 +08:00
杨金灵
6e68611f6e Accept Merge Request #756: (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/756?initial=true
2024-01-09 09:44:53 +08:00
jinling.yang
31dd710f6a 修改确认按钮名称 2024-01-09 09:40:56 +08:00
jinling.yang
8b2b58dfa1 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修复销售和采购 2024-01-09 09:32:30 +08:00
jinling.yang
84f62ebe1c Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-01-09 09:32:10 +08:00
jinling.yang
ce2f8714d0 修复bug 2024-01-09 09:31:44 +08:00
mgw
931b78ee03 修复批量排程缺少工具包的问题 2024-01-08 23:24:42 +08:00
马广威
61554bf3e5 Accept Merge Request #755: (feature/制造代码优化 -> develop)
Merge Request: 去掉tree视图的schedule_state字段

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/755?initial=true
2024-01-08 19:52:10 +08:00
mgw
0b070de19c 去掉tree视图的schedule_state字段 2024-01-08 19:34:24 +08:00
马广威
7077b8a297 Accept Merge Request #754: (feature/制造代码优化 -> develop)
Merge Request: tree视图中的"批量排程"按钮优化为向导的实现方式,修改制造订单的状态字段以及与排程单的交互逻辑,优化一些翻译

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/754
2024-01-08 19:06:45 +08:00
mgw
e8995acc87 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化 2024-01-08 19:03:34 +08:00
mgw
fbaa81fe7a 修改制造订单的状态字段以及与排程单的交互逻辑,优化一些翻译 2024-01-08 19:02:59 +08:00
qihao.gong@jikimo.com
3742a3b163 修改自动完成制造订单得方法,完工产品捡取需变成就绪状态 2024-01-08 17:51:16 +08:00
yuxianghui
498e1c12af 1、所有功能刀具相关模型添加刀具组字段对象,并且功能刀具名称根据规则自动生成;2、功能刀具组装时按规则自动生成功能刀具编码; 2024-01-08 17:42:34 +08:00
qihao.gong@jikimo.com
317b5d4ced Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修改机床参数bug 2024-01-08 16:39:15 +08:00
黄焱
3c65b3e3df Accept Merge Request #753: (feature/前端样式修改 -> develop)
Merge Request: 修改sf表格样式

Created By: @黄焱
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @黄焱
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/753?initial=true
2024-01-08 16:33:13 +08:00
黄焱
4dde30f9f9 修改sf表格样式 2024-01-08 16:28:49 +08:00
qihao.gong@jikimo.com
631d59f95e 处理本地报错 2024-01-08 16:18:15 +08:00
jinling.yang
8928d497ff Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop 2024-01-08 16:12:31 +08:00
qihao.gong@jikimo.com
99b1d5f534 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修改机床参数bug 2024-01-08 15:56:44 +08:00
jinling.yang
61d13b90dc Merge branch 'feature/优化刀具基本参数同步' into develop 2024-01-08 15:56:22 +08:00
杨金灵
31bb7f0c97 Accept Merge Request #752: (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/752
2024-01-08 15:56:06 +08:00
jinling.yang
d980a036cd 还原代码 2024-01-08 15:52:33 +08:00
jinling.yang
f8c6c766cb 优化刀具模版和刀具标准库 2024-01-08 15:44:16 +08:00
qihao.gong@jikimo.com
41fe63d948 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修改机床参数bug 2024-01-08 15:30:05 +08:00
qihao.gong@jikimo.com
ce53afe1b0 修改权限组访问权限 2024-01-08 15:29:48 +08:00
mgw
bc4a4df53e tree视图中的"批量排程"按钮优化为向导的实现方式 2024-01-08 14:52:29 +08:00
jinling.yang
3f448bc6da Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化刀具基本参数同步
# Conflicts:
#	sf_dlm_management/views/product_template_management_view.xml
2024-01-08 10:08:50 +08:00
yuxianghui
d1c10f56d1 1、sf_base新增刀具组模型;2、所以功能刀具相关模型添加刀具组对象字段(进行中); 2024-01-05 17:33:06 +08:00
jinling.yang
edf4699e9e 1.新增每日同步切削速度和每齿走刀量及切削宽度和深度的接口
2.优化产品模版
2024-01-05 17:30:13 +08:00
禹翔辉
ad025eb6da Accept Merge Request #751: (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/751?initial=true
2024-01-05 14:48:11 +08:00
yuxianghui
e5bf0d8205 Merge remote-tracking branch 'origin/feature/夹具型号同步' into feature/产品添加夹具型号信息 2024-01-05 14:43:48 +08:00
yuxianghui
831a91c925 1、产品新添七种夹具物料前端字段完成布局展示;2、产品选取夹具型号规格后自动带入规格数据到产品夹具物料参数; 2024-01-05 14:42:38 +08:00
黄焱
bc3325bd3b Accept Merge Request #750: (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/750?initial=true
2024-01-05 14:13:52 +08:00
黄焱
e29883d0de 修改表格,等样式 2024-01-05 14:10:43 +08:00
龚启豪
5b9b700372 Accept Merge Request #749: (feature/修改机床参数bug -> 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/749
2024-01-05 14:03:31 +08:00
qihao.gong@jikimo.com
c81dc99aef 修改获取CNC程序从工单到制造订单 2024-01-05 11:23:27 +08:00
马广威
c0a3a550d7 Accept Merge Request #748: (feature/制造代码优化 -> develop)
Merge Request: 代码优化,权限问题修复

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/748
2024-01-05 10:29:32 +08:00
mgw
0c67b2b659 修复设备清单无法被计划人员看到的问题 2024-01-05 10:22:48 +08:00
mgw
974b112b3a 优化设备、库存权限相关问题 2024-01-05 08:53:39 +08:00
yuxianghui
57f5d138e8 1、修改夹装单元数修改成装夹单元数;2、重构产品的夹具物料信息(进行中);3、完善夹具物料的同步功能; 2024-01-04 17:44:22 +08:00
mgw
2b117e9192 产品序列号权限优化 2024-01-04 11:39:38 +08:00
马广威
688a39363b Accept Merge Request #747: (feature/制造代码优化 -> develop)
Merge Request: 一些优化事宜,包括批量排程,修复坯料单展示问题等

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/747
2024-01-04 08:56:12 +08:00
mgw
9443a07eb4 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化
# Conflicts:
#	sf_sale/security/ir.model.access.csv
2024-01-04 08:54:12 +08:00
mgw
ce58e989dd 基本的批量排程已实现 2024-01-04 08:51:25 +08:00
mgw
b9bb528db0 客户列表公司类型卡片增加税ID,计划处tree视图增加批量排程button 2024-01-03 23:03:08 +08:00
jinling.yang
da8cbe4cce 1.修改刀具标准库同步6个物料的方法
2.刀具基础参数的刃数和刀片的刃数两个字段新增选项,新增active字段,xml中修改适配刀片型号字段
2024-01-03 17:41:44 +08:00
yuxianghui
ce69127250 1、夹具型号同步(进行中);2、删除功能刀具组装的功能刀具切削类型字段; 2024-01-03 17:31:16 +08:00
qihao.gong@jikimo.com
583f6503ec 修改cnc获取在制造订单的逻辑,制造订单所有工单完成时 制造订单自动完成,以及组件自动消耗掉 2024-01-03 17:29:37 +08:00
jinling.yang
7f050b62f9 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化刀具基本参数同步 2024-01-03 14:39:20 +08:00
杨金灵
5d09d1585b Accept Merge Request #746: (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/746?initial=true
2024-01-03 11:52:12 +08:00
jinling.yang
f373003d2c Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/权限修复 2024-01-03 11:42:41 +08:00
jinling.yang
45e8e380db 修复销售质量采购bug 2024-01-03 11:42:23 +08:00
禹翔辉
c2263c9318 Accept Merge Request #745: (feature/功能刀具相关模型及组装流程优化 -> develop)
Merge Request: 1、修改所以夹具物料信息转接板夹具为转接板(锁板)夹具;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/745
2024-01-03 09:40:23 +08:00
yuxianghui
f09a6cde3e Merge remote-tracking branch 'origin/feature/功能刀具优化' into feature/功能刀具相关模型及组装流程优化 2024-01-03 09:37:36 +08:00
mgw
ccdbfda019 优化代码,修复检测人功能 2024-01-02 17:55:02 +08:00
jinling.yang
ec9435bb82 修复销售和采购的部分bug 2024-01-02 17:42:06 +08:00
qihao.gong@jikimo.com
77db3d57c9 设备类别非必填 2024-01-02 17:31:48 +08:00
yuxianghui
73c3e06900 1、修改所以夹具物料信息转接板夹具为转接板(锁板)夹具;2、优化功能刀具安全库存触发生成功能刀具组装单时重复触发的问题;3、设置功能刀具安全库存模型相关字段只有在创建的时候可以修改,其他时候是只读;4、优化功能刀具组装单组装完成后功能刀具入库位置不是刀具房的问题; 2024-01-02 17:25:49 +08:00
mgw
56d8190fc6 修改业务逻辑:当主制造订单排程后,子bom自动改状态为已排 2024-01-02 11:47:40 +08:00
qihao.gong@jikimo.com
7fe7de46c6 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/修改机床参数bug 2024-01-02 10:01:24 +08:00
mgw
2339f75517 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/制造代码优化 2023-12-29 15:28:40 +08:00
mgw
8ec038847a 优化权限 2023-12-29 15:28:15 +08:00
禹翔辉
e1118bd579 Accept Merge Request #744: (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/744?initial=true
2023-12-29 14:20:35 +08:00
yuxianghui
c9af7a8cc4 Merge remote-tracking branch 'origin/feature/夹具型号优化' into feature/功能刀具优化 2023-12-29 14:18:39 +08:00
yuxianghui
4ab7e4db0f 1、优化字段显示问题 2023-12-29 14:17:32 +08:00
qihao.gong@jikimo.com
939a255c2e 修改设备注册接口 2023-12-29 14:17:27 +08:00
jinling.yang
1cf5cd41b4 1.刀具基本参数新增适配夹头尺寸字段,2.优化采购订单确认订单方法 2023-12-29 09:31:41 +08:00
黄焱
860e16659c Accept Merge Request #743: (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/743
2023-12-28 17:48:59 +08:00
黄焱
e9987fdcfa // 加工能力\冷却方式 竖列展示改为横列展示 2023-12-28 17:44:51 +08:00
qihao.gong@jikimo.com
98847a2c42 处理设备控制bug 2023-12-28 17:38:56 +08:00
禹翔辉
f81bf760d4 Accept Merge Request #742: (feature/夹具型号优化 -> develop)
Merge Request: 1、新增夹具物料基本参数模型,重构工厂的夹具型号模型,重新优化夹具物料form视图;2、优化刀具标准库模型,优化切削速度模型,优化每齿走刀量模型,新增切削宽度和深度模型,新增坡铣角度模型;3、优化功能刀具安全库存最低安全库存可以高于最高库存的bug;

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/742?initial=true
2023-12-28 17:09:00 +08:00
yuxianghui
b2bb2e33de 1、新增夹具物料基本参数模型,重构工厂的夹具型号模型,重新优化夹具物料form视图;2、优化刀具标准库模型,优化切削速度模型,优化每齿走刀量模型,新增切削宽度和深度模型,新增坡铣角度模型;3、优化功能刀具安全库存最低安全库存可以高于最高库存的bug; 2023-12-28 17:06:34 +08:00
jinling.yang
8be6373b77 Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化刀具基本参数同步 2023-12-28 16:39:09 +08:00
jinling.yang
a9c2d1aa5c 1.新增刀具物料参数的同步接口及方法
2.修改刀具物料参数的适配刀片型号及适配刀柄型号字段类型及新增刀柄长度,刀柄直径,法兰直径,动平衡等级,适配夹头型号,适用锁紧螺母型号,编码字段
2023-12-28 16:27:40 +08:00
mgw
8e61d5f87c 优化权限相关 2023-12-28 10:50:44 +08:00
194 changed files with 9912 additions and 3459 deletions

View File

@@ -36,6 +36,7 @@
# 'jikimo_frontend/static/src/list/custom_import.js',
# 'jikimo_frontend/static/src/list/custom_width.js',
'jikimo_frontend/static/src/views/list_nums/extent_purchase.xml',
# 'jikimo_frontend/static/src/css/list_border_styles.css',
],

View File

@@ -0,0 +1,3 @@
.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){
border:1px solid #dee2e6 !important;
}

View File

@@ -79,9 +79,9 @@ td.o_required_modifier {
}
.oe_kanban_card.kanban_color_1 {
background-color: #27FEA9 !important;
background-color: #fff !important;
opacity: 0.7;
color: #fff;
color: #777;
}
.oe_kanban_card.kanban_color_3 {
@@ -135,7 +135,7 @@ td.o_required_modifier {
.text-truncate {
overflow: unset !important;
text-overflow: unset !important;
white-space: nowrap!important;
//white-space: nowrap!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) {
@@ -383,7 +383,9 @@ div:has(.o_required_modifier) > label::before {
}
}
}
.oe_kanban_details li.o_text_overflow {
display: block;
}
.o_stock_kanban .o_kanban_card_content {
.row {
align-items: center;
@@ -400,4 +402,51 @@ div:has(.o_required_modifier) > label::before {
// 机床换刀申请表格宽度设置
.o_list_table_ungrouped {
min-width: 1089px;
}
// 加工能力\冷却方式 竖列展示改为横列展示
.processingMethod {
.o_cell.flex-grow-1.flex-sm-grow-0 {
width: 100%!important;
}
}
@media (min-width: 576px) {
.o_inner_group.processingMethod {
grid-template-columns: auto;
}
}
// 设置所有表格序号列padding为0
.o_form_view .o_notebook > .tab-content > .tab-pane > :first-child:not(.o_group) .o_field_x2many.o_field_x2many_list tr > :first-child, .o_form_view .o_notebook > .tab-content > .tab-pane > :first-child.o_invisible_modifier + .o_field_widget .o_field_x2many.o_field_x2many_list tr > :first-child {
padding: 0;
text-align: center;
}
// 设置剩余number类型数据表格列 left
.o_list_renderer .o_list_table thead .o_list_number_th {
text-align:left;
}
.o_list_renderer .o_list_table tbody > tr > td:not(.o_list_record_selector).o_list_number {
text-align: left;
}
.o_list_renderer .flex-row-reverse {
flex-direction: unset!important;
}
.o_list_renderer .flex-row-reverse > .text-end {
text-align: left!important;
}
// 设置modal弹窗样式
.modal.o_technical_modal {
.modal-lg {
@media (min-width: 992px) {
max-width: 1200px;
}
@media (min-width: 576px) {
.o_form_view .o_inner_group {
grid-template-columns: auto;
}
}
}
}

View File

@@ -1,4 +1,4 @@
.row_no {
width: 3.2% !important;
width: 35px !important;
vertical-align: middle;
}

View File

@@ -0,0 +1,14 @@
# -*- coding: utf-8 -*-
from . import models
from odoo import api, SUPERUSER_ID
def uninstall_hook(cr, registry):
# 使用cr来执行数据库操作
with api.Environment.manage():
env = api.Environment(cr, SUPERUSER_ID, {})
# 执行数据清理操作
access_rights = env['access.right'].search([])
access_rights.unlink()
followers = env['mail.followers'].search([('res_model', '=', 'access.right')])
followers.unlink()

View File

@@ -0,0 +1,32 @@
# -*- coding: utf-8 -*-
{
'name': '机企猫 隐藏项目',
'version': '16.0.1.0.0',
'category': 'Extra Tools, Productivity',
'summary': """ Can hide options from user """,
'description': """ By using this module we can hide the options like create,
delete,export,and archive/un archive in the model which we want. Here we
are also able to select the user groups except Administrator which we want
to apply the above hiding functionality """,
'author': '机企猫-MGW',
'company': '机企猫',
'depends': ['base_setup', 'mail'],
'data': [
'security/security.xml',
'security/ir.model.access.csv',
'views/model_access_rights_views.xml',
],
'assets': {
'web.assets_backend': [
'jikimo_hide_options/static/src/js/form_controller.js',
'jikimo_hide_options/static/src/js/list_controller.js',
'jikimo_hide_options/static/src/js/kanban_controller.js'
]
},
'images': ['static/description/banner.jpg'],
'license': 'LGPL-3',
'installable': True,
'auto_install': False,
'application': False,
'uninstall_hook': 'uninstall_hook',
}

View File

@@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
from . import model_access_rights
from . import models

View File

@@ -0,0 +1,107 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
class ModelAccessRights(models.Model):
"""This class is used to detect, which all options want to hide from the
specified group and model"""
_name = 'access.right'
_inherit = 'mail.thread'
_description = 'Manage Modules Access Control'
_rec_name = 'model_id'
model_id = fields.Many2one('ir.model', ondelete='cascade', required=True,
help="select the model")
groups_id = fields.Many2one('res.groups', required=True,
help="select the group")
is_delete = fields.Boolean(string="Delete", help="hide the delete option")
is_export = fields.Boolean(string="Export",
help="hide the 'Export All'"
" option from list view")
is_create_or_update = fields.Boolean(string="Create/Update",
help="hide the create option from list"
" as well as form view")
is_archive = fields.Boolean(string="Archive/UnArchive",
help="hide the archive option")
@api.model
def hide_buttons(self):
"""This function contains a query that detects which all options want
to hide, in which model,and to which user groups"""
access_right_rec = self.sudo().search_read([], ['model_id', 'is_delete',
'is_export',
'is_create_or_update',
'is_archive',
'groups_id'])
for dic in access_right_rec:
model = self.env['ir.model'].sudo().browse(dic['model_id'][0]).model
group_name = self.env['ir.model.data'].sudo().search([
('model', '=', 'res.groups'),
('res_id', '=', dic['groups_id'][0])
]).name
module_name = self.env['ir.model.data'].sudo().search([
('model', '=', 'res.groups'),
('res_id', '=', dic['groups_id'][0])
]).module
dic.update({
'model': model,
'group_name': group_name,
'module': module_name
})
return access_right_rec
# @api.model
# def hide_buttons(self):
# """This function contains a query that detects which all options want
# to hide, in which model,and to which user groups"""
# access_right_rec = self.sudo().search_read([], ['model_id', 'is_delete',
# 'is_export',
# 'is_create_or_update',
# 'is_archive',
# 'groups_id'])
# for dic in access_right_rec:
# model = self.env['ir.model'].sudo().browse(dic['model_id']).model
# group_name = self.env['ir.model.data'].sudo().search([
# ('model', '=', 'res.groups'),
# ('res_id', '=', dic['groups_id'])
# ]).name
# module_name = self.env['ir.model.data'].sudo().search([
# ('model', '=', 'res.groups'),
# ('res_id', '=', dic['groups_id'])
# ]).module
# dic.update({
# 'model': model,
# 'group_name': group_name,
# 'module': module_name
# })
# return access_right_rec
# class AccessRightCleanup(models.Model):
# _name = 'access.right.cleanup' # 定义一个新的模型名
# _description = 'Access Right Cleanup'
# @api.model
# def _module_uninstall(self):
# """在模块卸载时执行清理操作"""
# super(AccessRightCleanup, self)._module_uninstall()
# # 这里执行你的清理逻辑
#
# # 获取access.right模型的所有记录
# access_rights = self.env['access.right'].search([])
# for access_right in access_rights:
# # 删除access.right模型的所有记录
# access_right.unlink()
#
# # 查找所有关联到access.right模型的关注者记录
# followers = self.env['mail.followers'].search([('res_model', '=', 'access.right')])
# for follower in followers:
# # 删除关注者记录
# follower.unlink()
#
# # # 示例:删除自定义数据表(确保先检查外键约束等)
# # self.env.cr.execute('DROP TABLE IF EXISTS access_right CASCADE;')
#
# # 其他清理工作...

View File

@@ -0,0 +1,353 @@
# -*- coding: utf-8 -*-
from collections import defaultdict
from operator import attrgetter
from odoo import api, _
from odoo.exceptions import UserError
from odoo.models import BaseModel, _unlink, LOG_ACCESS_COLUMNS, \
INSERT_BATCH_SIZE, SQL_DEFAULT
# from odoo.tools import OrderedSet, split_every, attrgetter, clean_context
from odoo.tools import OrderedSet, split_every, clean_context
@api.model
def _create(self, data_list):
""" Create records from the stored field values in ``data_list``. """
assert data_list
cr = self.env.cr
# insert rows in batches of maximum INSERT_BATCH_SIZE
ids = [] # ids of created records
other_fields = OrderedSet() # non-column fields
for data_sublist in split_every(INSERT_BATCH_SIZE, data_list):
stored_list = [data['stored'] for data in data_sublist]
fnames = sorted({name for stored in stored_list for name in stored})
columns = []
rows = [[] for _ in stored_list]
for fname in fnames:
field = self._fields[fname]
if field.column_type:
columns.append(fname)
for stored, row in zip(stored_list, rows):
if fname in stored:
colval = field.convert_to_column(stored[fname], self,
stored)
if field.translate is True and colval:
if 'en_US' not in colval.adapted:
colval.adapted['en_US'] = next(
iter(colval.adapted.values()))
row.append(colval)
else:
row.append(SQL_DEFAULT)
else:
other_fields.add(field)
if field.type == 'properties':
# force calling fields.create for properties field because
# we might want to update the parent definition
other_fields.add(field)
if not columns:
# manage the case where we create empty records
columns = ['id']
for row in rows:
row.append(SQL_DEFAULT)
header = ", ".join(f'"{column}"' for column in columns)
template = ", ".join("%s" for _ in rows)
cr.execute(
f'INSERT INTO "{self._table}" ({header}) VALUES {template} RETURNING "id"',
[tuple(row) for row in rows],
)
ids.extend(id_ for id_, in cr.fetchall())
# put the new records in cache, and update inverse fields, for many2one
#
# cachetoclear is an optimization to avoid modified()'s cost until other_fields are processed
cachetoclear = []
records = self.browse(ids)
inverses_update = defaultdict(list) # {(field, value): ids}
common_set_vals = set(
LOG_ACCESS_COLUMNS + [self.CONCURRENCY_CHECK_FIELD, 'id',
'parent_path'])
for data, record in zip(data_list, records):
data['record'] = record
# DLE P104: test_inherit.py, test_50_search_one2many
vals = dict(
{k: v for d in data['inherited'].values() for k, v in d.items()},
**data['stored'])
set_vals = common_set_vals.union(vals)
for field in self._fields.values():
if field.type in ('one2many', 'many2many'):
self.env.cache.set(record, field, ())
elif field.related and not field.column_type:
self.env.cache.set(record, field,
field.convert_to_cache(None, record))
# DLE P123: `test_adv_activity`, `test_message_assignation_inbox`, `test_message_log`, `test_create_mail_simple`, ...
# Set `mail.message.parent_id` to False in cache so it doesn't do the useless SELECT when computing the modified of `child_ids`
# in other words, if `parent_id` is not set, no other message `child_ids` are impacted.
# + avoid the fetch of fields which are False. e.g. if a boolean field is not passed in vals and as no default set in the field attributes,
# then we know it can be set to False in the cache in the case of a create.
elif field.name not in set_vals and not field.compute:
self.env.cache.set(record, field,
field.convert_to_cache(None, record))
for fname, value in vals.items():
field = self._fields[fname]
if field.type in ('one2many', 'many2many'):
cachetoclear.append((record, field))
else:
cache_value = field.convert_to_cache(value, record)
self.env.cache.set(record, field, cache_value)
if field.type in ('many2one', 'many2one_reference') and \
self.pool.field_inverses[field]:
inverses_update[(field, cache_value)].append(record.id)
for (field, value), record_ids in inverses_update.items():
field._update_inverses(self.browse(record_ids), value)
# update parent_path
records._parent_store_create()
# protect fields being written against recomputation
protected = [(data['protected'], data['record']) for data in data_list]
with self.env.protecting(protected):
# mark computed fields as todo
records.modified(self._fields, create=True)
if other_fields:
# discard default values from context for other fields
others = records.with_context(clean_context(self._context))
for field in sorted(other_fields, key=attrgetter('_sequence')):
field.create([
(other, data['stored'][field.name])
for other, data in zip(others, data_list)
if field.name in data['stored']
])
# mark fields to recompute
records.modified([field.name for field in other_fields],
create=True)
# if value in cache has not been updated by other_fields, remove it
for record, field in cachetoclear:
if self.env.cache.contains(record,
field) and not self.env.cache.get(
record, field):
self.env.cache.remove(record, field)
# check Python constraints for stored fields
records._validate_fields(
name for data in data_list for name in data['stored'])
records.check_access_rule('create')
# This is used to restrict the access right to create 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_create_or_update',
# '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_create_or_update']:
# raise UserError('You are restricted from performing this'
# ' operation. Please contact the'
# ' administrator.')
# 检查 'access.right' 模型是否存在于环境中
if 'access.right' in self.env:
access_right_rec = self.env['access.right'].sudo().search_read(
[('model_id', '=', current_model_id)],
['model_id', 'is_create_or_update', '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):
# 如果该用户组被限制创建或更新操作
if rec['is_create_or_update']:
raise UserError(
_("You are restricted from performing this operation. Please contact the administrator."))
else:
# 如果 'access.right' 模型不存在,可以在这里定义备选逻辑
# 例如,记录日志、发送通知或者简单地跳过这部分逻辑
pass
return records
@api.model
def unlink(self):
""" unlink()
Deletes the records in ``self``.
:raise AccessError: if the user is not allowed to delete all the given records
:raise UserError: if the record is default property for other records
"""
if not self:
return True
self.check_access_rights('unlink')
self.check_access_rule('unlink')
from odoo.addons.base.models.ir_model import MODULE_UNINSTALL_FLAG
for func in self._ondelete_methods:
# func._ondelete is True if it should be called during uninstallation
if func._ondelete or not self._context.get(MODULE_UNINSTALL_FLAG):
func(self)
# TOFIX: this avoids an infinite loop when trying to recompute a
# field, which triggers the recomputation of another field using the
# same compute function, which then triggers again the computation
# of those two fields
for field in self._fields.values():
self.env.remove_to_compute(field, self)
self.env.flush_all()
cr = self._cr
Data = self.env['ir.model.data'].sudo().with_context({})
Defaults = self.env['ir.default'].sudo()
Property = self.env['ir.property'].sudo()
Attachment = self.env['ir.attachment'].sudo()
ir_property_unlink = Property
ir_model_data_unlink = Data
ir_attachment_unlink = Attachment
# mark fields that depend on 'self' to recompute them after 'self' has
# been deleted (like updating a sum of lines after deleting one line)
with self.env.protecting(self._fields.values(), self):
self.modified(self._fields, before=True)
for sub_ids in cr.split_for_in_conditions(self.ids):
records = self.browse(sub_ids)
# Check if the records are used as default properties.
refs = [f'{self._name},{id_}' for id_ in sub_ids]
if Property.search(
[('res_id', '=', False), ('value_reference', 'in', refs)],
limit=1):
raise UserError(
_('Unable to delete this document because it is used as a default property'))
# Delete the records' properties.
ir_property_unlink |= Property.search([('res_id', 'in', refs)])
query = f'DELETE FROM "{self._table}" WHERE id IN %s'
cr.execute(query, (sub_ids,))
# Removing the ir_model_data reference if the record being deleted
# is a record created by xml/csv file, as these are not connected
# with real database foreign keys, and would be dangling references.
#
# Note: the following steps are performed as superuser to avoid
# access rights restrictions, and with no context to avoid possible
# side-effects during admin calls.
data = Data.search(
[('model', '=', self._name), ('res_id', 'in', sub_ids)])
ir_model_data_unlink |= data
# For the same reason, remove the defaults having some of the
# records as value
Defaults.discard_records(records)
# For the same reason, remove the relevant records in ir_attachment
# (the search is performed with sql as the search method of
# ir_attachment is overridden to hide attachments of deleted
# records)
query = 'SELECT id FROM ir_attachment WHERE res_model=%s AND res_id IN %s'
cr.execute(query, (self._name, sub_ids))
ir_attachment_unlink |= Attachment.browse(
row[0] for row in cr.fetchall())
# invalidate the *whole* cache, since the orm does not handle all
# changes made in the database, like cascading delete!
self.env.invalidate_all(flush=False)
if ir_property_unlink:
ir_property_unlink.unlink()
if ir_model_data_unlink:
ir_model_data_unlink.unlink()
if ir_attachment_unlink:
ir_attachment_unlink.unlink()
# DLE P93: flush after the unlink, for recompute fields depending on
# the modified of the unlink
self.env.flush_all()
# auditing: deletions are infrequent and leave no trace in the database
_unlink.info('User #%s deleted %s records with IDs: %r', self._uid,
self._name, self.ids)
# 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
return True
BaseModel._create = _create
BaseModel.unlink = unlink

View File

@@ -0,0 +1,2 @@
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
access_access_right,access.access.right,model_access_right,jikimo_hide_options.model_access_rights_groups_configure_model_access,1,1,1,1
1 id name model_id/id group_id/id perm_read perm_write perm_create perm_unlink
2 access_access_right access.access.right model_access_right jikimo_hide_options.model_access_rights_groups_configure_model_access 1 1 1 1

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Add a group named Configure Model Access in res.groups-->
<odoo>
<record id="model_access_rights_groups_configure_model_access" model="res.groups">
<field name="name">配置隐藏项目</field>
<field name="category_id" ref="base.module_category_usability"/>
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
</record>
</odoo>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -0,0 +1,596 @@
<div style="background-color: #714B67; height: 810px; width: 100%; padding: 15px; position: relative;">
<!-- TITLE BAR -->
<div class="d-flex align-items-center justify-content-between"
style="border-bottom: 1px solid #875A7B; padding: 15px; display: flex; justify-content: space-between; align-items: center;">
<img src="assets/misc/cybrosys-logo.png" width="42" height="42" style="width: 42px; height: 42px;" />
<div>
<div
style="color: #7C7BAD; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2">
<i class="fa fa-check mr-1"></i>Community
</div>
<div
style="color: #875A7B; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2">
<i class="fa fa-check mr-1"></i>Enterprise
</div>
<div
style="color: #017E84; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2">
<i class="fa fa-check mr-1"></i>Odoo.sh
</div>
</div>
</div>
<!-- END OF TITLE BAR -->
<div class="container">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12">
<!-- APP HERO -->
<h1 style="color: #FFFFFF; font-weight: bolder; font-size: 50px; text-align: center; margin-top: 50px;">
Hide Create|Delete|Archive|Export Options - Model Wise</h1>
<p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;">Hide Create, Delete, Archive, Export Options in Models</p>
<!-- END OF APP HERO -->
<img src="assets/screenshots/hero.gif" class="img-responsive"
style="width: 100%; margin-left: auto; margin-right: auto;" />
</div>
</div>
</div>
</div>
<!-- NAVIGATION SECTION -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px; margin-top: 300px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/compass.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Explore This
Module</h2>
</div>
<div class="row my-4" style="font-family: 'Montserrat', sans-serif;">
<div class="col-sm-12 col-md-6 my-3">
<a href="#overview">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Overview</span>
<span
style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">Learn
more about this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36" />
</div>
</a>
</div>
<div class="col-sm-12 col-md-6 my-3">
<a href="#features">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Features</span>
<span
style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View
features of this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36" />
</div>
</a>
</div>
<div class="col-sm-12 col-md-6 my-3">
<a href="#screenshots">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Screenshots</span>
<span
style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View
screenshots of this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36" />
</div>
</a>
</div>
</div>
<!-- END OF NAVIGATION SECTION -->
<!-- OVERVIEW SECTION -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="overview">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/pie-chart.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Overview
</h2>
</div>
<div class="row" style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
<div class="col-sm-12 py-4">
By using this module we can hide the options like create,delete,export,and archive/un archive in the model
which we want. Here we are also able to select the user groups except Administrator which we want to apply the
above hiding functionality </div>
</div>
<!-- END OF OVERVIEW SECTION -->
<!-- FEATURES SECTION -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="features">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/features.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Features
</h2>
</div>
<div class="row" style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
<div class="col-sm-12 col-md-6">
<div class="d-flex align-items-center" style="margin-top: 40px; margin-bottom: 40px">
<img src="assets/misc/check-box.png" class="mr-2" />
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> Easily hide the options like Create,Delete,Export and Archive/UnArchive</span>
</div>
<div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2" />
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Can hide the options for specific model</span>
</div>
<div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2" />
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Can hide the options for specific user group</span>
</div>
<div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2" />
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">No additional configuration needed</span>
</div>
</div>
</div>
<!-- END OF FEATURES SECTION -->
<!-- SCREENSHOTS SECTION -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="screenshots">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/pictures.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Screenshots
</h2>
</div>
<div class="row">
<div class="col-sm-12">
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> Go to Settings > Users and there you can see the Configure Model Access, by enabling that
option and refresh the page, you can see a new menu named 'Restrict Access Rights'</h3>
<img src="assets/screenshots/model_access_right_01.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> User in the Purchase module</h3>
<img src="assets/screenshots/model_access_right_02.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Select the Model, Groups and the options which we want to hide</h3>
<img src="assets/screenshots/model_access_right_03.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> We can see Create option is hidden in purchase.order to those who are User
in purchase module</h3>
<img src="assets/screenshots/model_access_right_04.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">User in Project module</h3>
<img src="assets/screenshots/model_access_right_05.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> By default, we can see Export and Archive/UnArchive options</h3>
<img src="assets/screenshots/model_access_right_06.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> Select the options which we want to hide</h3>
<img src="assets/screenshots/model_access_right_07.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> Export and Archive/UnArchive functionality are hidden</h3>
<img src="assets/screenshots/model_access_right_08.png" class="img-thumbnail">
</div>
</div>
</div>
<!-- END OF SCREENSHOTS SECTION -->
<!-- RELATED PRODUCTS -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/categories.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Related
Products
</h2>
</div>
<div class="row">
<div class="col-sm-12">
<div id="demo1" class="row carousel slide" data-ride="carousel">
<!-- The slideshow -->
<div class="carousel-inner" style="padding: 30px;">
<div class="carousel-item" style="min-height: 198.656px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/openai_odoo_base/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/1.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/woo_commerce/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/l2.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/shopify_odoo_connector/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/l3.png">
</div>
</a>
</div>
</div>
<div class="carousel-item active"
style="min-height: 198.656px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/hr_zk_attendance/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/l4.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/whatsapp_redirect/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/l5.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/openai_website_product_media/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="assets/modules/l6.png">
</div>
</a>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1" data-slide="prev"
style="width:35px; color:#000"> <span
class="carousel-control-prev-icon"><i
class="fa fa-chevron-left"
style="font-size:24px"></i></span>
</a> <a class="carousel-control-next" href="#demo1"
data-slide="next" style="width:35px; color:#000">
<span class="carousel-control-next-icon"><i
class="fa fa-chevron-right"
style="font-size:24px"></i></span>
</a>
</div>
</div>
</div>
<!-- END OF RELATED PRODUCTS -->
<!-- OUR SERVICES -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/star.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Our Services
</h2>
</div>
<div class="container my-5">
<div class="row">
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/cogs.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Customization</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/wrench.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/lifebuoy.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Support</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/user.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Hire
Odoo
Developer</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/puzzle.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Integration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/update.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Migration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/consultation.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Consultancy</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/training.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/license.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Licensing Consultancy</h6>
</div>
</div>
</div>
<!-- END OF OUR SERVICES -->
<!-- OUR INDUSTRIES -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/corporate.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Our
Industries
</h2>
</div>
<div class="container my-5">
<div class="row">
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/trading-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Trading
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easily procure
and
sell your products</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/pos-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
POS
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easy
configuration
and convivial experience</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/education-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Education
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
A platform for
educational management</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/manufacturing-black.png" class="img-responsive mb-3" height="48px"
width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Manufacturing
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Plan, track and
schedule your operations</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/ecom-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
E-commerce &amp; Website
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Mobile
friendly,
awe-inspiring product pages</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/service-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Service Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Keep track of
services and invoice</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/restaurant-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Restaurant
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Run your bar or
restaurant methodically</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/hotel-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Hotel Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
An
all-inclusive
hotel management application</p>
</div>
</div>
</div>
</div>
<!-- END OF OUR INDUSTRIES -->
<!-- SUPPORT -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/customer-support.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Support
</h2>
</div>
<div class="container mt-5">
<div class="row">
<div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4"
style="background-color: #714B67; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
<img src="assets/misc/support.png" height="48" width="48" style="width: 42px; height: 42px;" />
</div>
<div>
<h4>Need Help?</h4>
<p style="line-height: 100%;">Got questions or need help? Get in touch.</p>
<a href="mailto:odoo@cybrosys.com">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">
odoo@cybrosys.com</p>
</a>
</div>
</div>
</div>
<div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4"
style="background-color: #2AC44D; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
<img src="assets/misc/whatsapp.png" height="52" width="52" style="width: 52px; height: 52px;" />
</div>
<div>
<h4>WhatsApp</h4>
<p style="line-height: 100%;">Say hi to us on WhatsApp!</p>
<a href="https://api.whatsapp.com/send?phone=918606827707">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">+91 86068
27707</p>
</a>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12 my-5 d-flex justify-content-center align-items-center">
<img src="assets/misc/logo.png" width="144" height="31"
style="width:144px; height: 31px; margin-top: 40px;" />
</div>
</div>
</div>
<!-- END OF SUPPORT -->

View File

@@ -0,0 +1,46 @@
/** @odoo-module */
/**
* This file will used to hide the selected options from the form view
*/
import { FormController} from "@web/views/form/form_controller";
import { patch} from "@web/core/utils/patch";
var rpc = require('web.rpc');
const { onWillStart} = owl;
patch(FormController.prototype, 'jikimo_hide_options/static/src/js/form_controller.js.FormController', {
/**
* This function will used to hide the selected options from the form view
*/
setup() {
this._super();
onWillStart(async () => {
var self = this
var result;
await rpc.query({
model: 'access.right',
method: 'hide_buttons',
}).then(function(data) {
result = data;
});
for (var i = 0; i < result.length; i++) {
var group = result[i].module + "." + result[i].group_name
if (self.props.resModel == result[i].model) {
if (await self.user.hasGroup(group)) {
if (!this.user.isAdmin) {
if (result[i].is_create_or_update) {
self.canCreate = false
}
if (result[i].is_delete) {
this.archInfo.activeActions.delete = false
}
if (result[i].is_archive) {
self.archiveEnabled = false
} else {
self.archiveEnabled = true;
}
}
}
}
}
});
}
});

View File

@@ -0,0 +1,42 @@
/** @odoo-module */
/**
* This file will used to hide the selected options from the list view
*/
import { KanbanController } from '@web/views/kanban/kanban_controller';
import { patch} from "@web/core/utils/patch";
var rpc = require('web.rpc');
const {onWillStart} = owl;
patch(KanbanController.prototype, 'jikimo_hide_options/static/src/js/list_controller.js.KanbanController', {
/**
* This function will used to hide the selected options from the Kanban view
*/
setup() {
this._super();
onWillStart(async () => {
var self = this
var result;
await rpc.query({
model: 'access.right',
method: 'hide_buttons',
}).then(function(data) {
result = data;
});
for (var i = 0; i < result.length; i++) {
var group = result[i].module + "." + result[i].group_name
if (self.props.resModel == result[i].model) {
if (await self.model.user.hasGroup(group)) {
if (!self.model.user.isAdmin) {
if (result[i].is_create_or_update) {
self.props.archInfo.activeActions.create=false
self.props.archInfo.activeActions.edit=false
}
if (result[i].is_delete) {
self.props.archInfo.activeActions.delete=false
}
}
}
}
}
});
}
});

View File

@@ -0,0 +1,50 @@
/** @odoo-module */
/**
* This file will used to hide the selected options from the list view
*/
import { ListController} from '@web/views/list/list_controller';
import { patch} from "@web/core/utils/patch";
var rpc = require('web.rpc');
const {onWillStart} = owl;
patch(ListController.prototype, 'jikimo_hide_options/static/src/js/list_controller.js.ListController', {
/**
* This function will used to hide the selected options from the list view
*/
setup() {
this._super();
onWillStart(async () => {
var self = this
var result;
await rpc.query({
model: 'access.right',
method: 'hide_buttons',
}).then(function(data) {
result = data;
});
for (var i = 0; i < result.length; i++) {
var group = result[i].module + "." + result[i].group_name
if (self.props.resModel == result[i].model) {
if (await self.userService.hasGroup(group)) {
if (!this.userService.isAdmin) {
if (result[i].is_create_or_update) {
self.activeActions.create = false;
}
if (result[i].is_export) {
self.isExportEnable = false
self.isExportEnable = false
}
if (result[i].is_delete) {
self.activeActions.delete = false;
}
if (result[i].is_archive) {
self.archiveEnabled = false;
} else {
self.archiveEnabled = true;
}
}
}
}
}
});
}
});

View File

@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Action for the menu Restrict Model Access-->
<record id="access_right_action" model="ir.actions.act_window">
<field name="name">隐藏项目</field>
<field name="res_model">access.right</field>
<field name='view_mode'>tree,form</field>
</record>
<!-- Tree view for the model access.right-->
<record id="access_right_view_tree" model="ir.ui.view">
<field name="name">access.right.view.tree</field>
<field name="model">access.right</field>
<field name="arch" type="xml">
<tree>
<field name="model_id" string="模型"/>
<field name="groups_id" string="用户组"/>
<field name="is_delete" string="删除"/>
<field name="is_export" string="导出"/>
<field name="is_create_or_update" string="创建或更新"/>
<field name="is_archive" string="归档"/>
</tree>
</field>
</record>
<!-- Form view for the model access.right-->
<record id="access_right_view_form" model="ir.ui.view">
<field name="name">access.right.view.form</field>
<field name="model">access.right</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<group>
<field name="model_id" string="模型"/>
<field name="groups_id" string="用户组"/>
</group>
<group>
<field name="is_delete" string="删除"/>
<field name="is_export" string="导出"/>
<field name="is_create_or_update" string="创建或更新"/>
<field name="is_archive" string="归档"/>
</group>
</group>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<!-- Creating a menu named Restrict Model Access-->
<menuitem id="access_right_menu"
name="隐藏项目"
parent="base.menu_administration"
action="access_right_action"
sequence="6"
groups="jikimo_hide_options.model_access_rights_groups_configure_model_access"/>
</odoo>

View File

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

View File

@@ -23,6 +23,7 @@
'views/tool_basic_param.xml',
'views/tool_menu.xml',
'views/menu_fixture_view.xml',
'views/change_base_view.xml',
],
'demo': [

View File

@@ -19,3 +19,13 @@ class Common(models.Model):
'TIMESTAMP': str(timestamp),
'checkstr': check_sf_str}
return headers
def get_add_time(self, parse_time):
"""
把时间增加8小时
:return:
"""
dt = datetime.datetime.strptime(parse_time, "%Y-%m-%d %H:%M:%S")
d = dt + datetime.timedelta(hours=8)
nTime = d.strftime("%Y-%m-%d %H:%M:%S")
return nTime

View File

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

View File

@@ -0,0 +1,40 @@
# -*- coding: utf-8 -*-
import logging
import json
import base64
from odoo import http
from odoo.http import request
class Manufacturing_Connect(http.Controller):
@http.route('/AutoDeviceApi/MaintenanceToolGroups', type='json', auth='none', methods=['GET', 'POST'], csrf=False,
cors="*")
def get_maintenance_tool_groups_Info(self, **kw):
"""
机床刀具组接口
:param kw:
:return:
"""
logging.info('get_maintenance_tool_groups_Info:%s' % kw)
try:
datas = request.httprequest.data
ret = json.loads(datas)
ret = json.loads(ret['result'])
logging.info('DeviceId:%s' % ret)
tool_groups = request.env['sf.tool.groups'].sudo().search([])
res = {'Succeed': True, 'Datas': []}
if tool_groups:
for item in tool_groups:
device_id = ''
for equipment_id in item.equipment_ids:
device_id = '%s,%s' % (device_id, equipment_id.name)
res['Datas'].append({
'GroupName': item.name,
'DeviceId': device_id
})
except Exception as e:
res = {'Succeed': False, 'ErrorCode': 202, 'Error': e}
logging.info('get_maintenance_tool_groups_Info error:%s' % e)
return json.JSONEncoder().encode(res)

View File

@@ -4,3 +4,4 @@ from . import tool_base_new
from . import fixture
from . import functional_fixture
from . import tool_other_features
from . import basic_parameters_fixture

View File

@@ -48,7 +48,7 @@ class MachineBrand(models.Model):
active = fields.Boolean('有效', default=True)
#机床
# 机床
class MachineTool(models.Model):
_name = 'sf.machine_tool'
_description = '机床'
@@ -92,7 +92,8 @@ class MachineTool(models.Model):
type_id = fields.Many2one('sf.machine_tool.type', '型号')
brand_id = fields.Many2one('sf.machine.brand', string='品牌')
state = fields.Selection(
[("正常", "正常"), ("故障", "故障"), ("不可用", "不可用")],
[("正常", "正常"), ("故障停机", "故障停机"), ("计划维保", "计划维保"), ("空闲", "空闲"),
("封存(报废)", "封存(报废)")],
default='正常', string="机床状态")
# 0606新增字段
machine_tool_picture = fields.Binary('图片')
@@ -357,8 +358,7 @@ class MachineToolType(models.Model):
lq_image_id = fields.Many2many('maintenance.equipment.image', 'lq_equipment_id', string='冷却方式',
domain="[('type', '=', '冷却方式')]")
#待删除字段
# 待删除字段
precision_min = fields.Float('X轴定位精度min(mm)', digits=(12, 3))
precision_max = fields.Float('X轴定位精度max(mm)', digits=(12, 3))
lead_screw = fields.Char('丝杆')

View File

@@ -0,0 +1,252 @@
from odoo import models, fields
class BasicParametersFixture(models.Model):
_name = 'sf.fixture.materials.basic.parameters'
_description = '夹具物料基本参数'
fixture_model_id = fields.Many2one('sf.fixture.model', '夹具型号')
name = fields.Char('物料号', size=20)
length = fields.Float('长度(mm)', digits=(16, 2))
width = fields.Float('宽度(mm)', digits=(16, 2))
height = fields.Float('高度(mm)', digits=(16, 2))
diameter = fields.Float('直径(mm)', digits=(16, 2))
# '零点卡盘' 字段
weight = fields.Float('重量(mm)', digits=(16, 2))
orientation_dish_diameter = fields.Float('定位盘直径(mm)', digits=(16, 2))
clamping_diameter = fields.Float('装夹直径(mm)', digits=(16, 2))
clamping_num = fields.Selection([('1', '1'), ('2', '2'), ('4', '4'), ('6', '6'), ('8', '8')], string='装夹单元数')
chucking_power_max = fields.Float('最大夹持力(KN)', digits=(16, 2))
repeated_positioning_accuracy = fields.Char('重复定位精度(mm)', size=20)
boolean_transposing_hole = fields.Boolean('是否有转位孔')
unlocking_method = fields.Selection(
[('手动', '手动'), ('气动', '气动'), ('液压', '液压'), ('电动', '电动'), ('其他', '其他')], string='解锁方式')
boolean_chip_blowing_function = fields.Boolean('是否有吹屑功能')
carrying_capacity_max = fields.Float('最大承载重量(kg)', digits=(16, 2))
rigidity = fields.Integer('硬度HRC')
materials_model_id = fields.Many2one('sf.materials.model', '夹具材质')
machine_tool_type_id = fields.Many2one('sf.machine_tool.type', '适用机床型号')
# ’零点托盘‘ 字段
connector_diameter = fields.Selection([('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('8', '8')],
string='连接头直径(mm)')
way_to_install = fields.Selection(
[('接口式', '接口式'), ('螺栓固定', '螺栓固定'), ('磁吸式', '磁吸式'), ('其他', '其他')], string='安装方式')
type_of_drive = fields.Selection(
[('气动式', '气动式'), ('液压式', '液压式'), ('机械式', '机械式'), ('电动式', '电动式'), ('其他', '其他')],
string='驱动方式')
# ’气动夹具‘ 字段
gripper_length_min = fields.Float('夹持工件最小长度(mm)', digits=(16, 2))
gripper_width_min = fields.Float('夹持工件最小宽度(mm)', digits=(16, 2))
gripper_height_min = fields.Float('夹持工件最小高度(mm)', digits=(16, 2))
gripper_diameter_min = fields.Float('夹持工件最小直径(mm)', digits=(16, 2))
gripper_length_max = fields.Float('夹持工件最大长度(mm)', digits=(16, 2))
gripper_width_max = fields.Float('夹持工件最大宽度(mm)', digits=(16, 2))
gripper_height_max = fields.Float('夹持工件最大高度(mm)', digits=(16, 2))
gripper_diameter_max = fields.Float('夹持工件最大直径(mm)', digits=(16, 2))
rated_air_pressure = fields.Float('额定气压(Mpa)', digits=(16, 2))
interface_materials_model_id = fields.Many2one('sf.materials.model', '接口类型')
# ‘虎钳夹具' 字段
transverse_groove = fields.Float('横向配合槽n(mm)', digits=(16, 2))
longitudinal_fitting_groove = fields.Float('纵向配合槽l(mm)', digits=(16, 2))
# '磁吸夹具' 字段
height_tolerance_value = fields.Char('高度公差(mm)')
rated_adsorption_force = fields.Float('额定吸附力(N/cm²)', digits=(16, 2))
magnetic_field_height = fields.Float('磁场高度(mm)', digits=(16, 2))
magnetic_pole_plate_grinding_allowance = fields.Float('磁极板磨削余量(mm)', digits=(16, 2))
# '转接板(锁板)夹具' 字段
screw_size = fields.Float('螺牙大小(mm)', digits=(16, 2))
via_hole_diameter = fields.Float('过孔直径(mm)', digits=(16, 2))
# '三爪卡盘' 字段
mounting_hole_depth = fields.Float('安装孔深度(mm)', digits=(16, 2))
centering_diameter = fields.Float('定心直径(mm)', digits=(16, 2))
def _json_zero_chuck_param(self, obj):
zero_chuck_param_str = (0, '', {
'name': obj['name'],
'length': obj['length'],
'width': obj['width'],
'height': obj['height'],
'diameter': obj['diameter'],
'weight': obj['weight'],
'orientation_dish_diameter': obj['orientation_dish_diameter'],
'clamping_diameter': obj['clamping_diameter'],
'clamping_num': obj['clamping_num'],
'chucking_power_max': obj['chucking_power_max'],
'repeated_positioning_accuracy': obj['repeated_positioning_accuracy'],
'boolean_transposing_hole': obj['boolean_transposing_hole'],
'unlocking_method': obj['unlocking_method'],
'boolean_chip_blowing_function': obj['boolean_chip_blowing_function'],
'carrying_capacity_max': obj['carrying_capacity_max'],
'rigidity': obj['rigidity'],
'materials_model_id': self.env['sf.materials.model'].sudo().search(
[('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id,
'machine_tool_type_id': self.env['sf.machine_tool.type'].sudo().search(
[('code', '=', obj['machine_tool_type_id']), ('active', '=', True)]).id,
})
return zero_chuck_param_str
def _json_zero_tray_param(self, obj):
zero_tray_param_str = (0, '', {
'name': obj['name'],
'length': obj['length'],
'width': obj['width'],
'height': obj['height'],
'diameter': obj['diameter'],
'weight': obj['weight'],
'clamping_diameter': obj['clamping_diameter'],
'connector_diameter': obj['connector_diameter'],
'chucking_power_max': obj['chucking_power_max'],
'repeated_positioning_accuracy': obj['repeated_positioning_accuracy'],
'boolean_chip_blowing_function': obj['boolean_chip_blowing_function'],
'way_to_install': obj['way_to_install'],
'type_of_drive': obj['type_of_drive'],
'carrying_capacity_max': obj['carrying_capacity_max'],
'materials_model_id': self.env['sf.materials.model'].sudo().search(
[('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id,
'rigidity': obj['rigidity'],
})
return zero_tray_param_str
def _json_pneumatic_fixture_param(self, obj):
pneumatic_fixture_param_str = (0, '', {
'name': obj['name'],
'length': obj['length'],
'width': obj['width'],
'height': obj['height'],
'weight': obj['weight'],
'gripper_length_min': obj['gripper_length_min'],
'gripper_width_min': obj['gripper_width_min'],
'gripper_height_min': obj['gripper_height_min'],
'gripper_diameter_min': obj['gripper_diameter_min'],
'gripper_length_max': obj['gripper_length_max'],
'gripper_width_max': obj['gripper_width_max'],
'gripper_height_max': obj['gripper_height_max'],
'gripper_diameter_max': obj['gripper_diameter_max'],
'chucking_power_max': obj['chucking_power_max'],
'carrying_capacity_max': obj['carrying_capacity_max'],
'rated_air_pressure': obj['rated_air_pressure'],
'materials_model_id': self.env['sf.materials.model'].sudo().search(
[('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id,
'rigidity': obj['rigidity'],
'interface_materials_model_id': self.env['sf.materials.model'].sudo().search(
[('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id,
'type_of_drive': obj['type_of_drive'],
})
return pneumatic_fixture_param_str
def _json_jaw_vice_fixture_param(self, obj):
jaw_vice_fixture_param_str = (0, '', {
'name': obj['name'],
'length': obj['length'],
'width': obj['width'],
'height': obj['height'],
'weight': obj['weight'],
'gripper_length_min': obj['gripper_length_min'],
'gripper_width_min': obj['gripper_width_min'],
'gripper_height_min': obj['gripper_height_min'],
'gripper_diameter_min': obj['gripper_diameter_min'],
'gripper_length_max': obj['gripper_length_max'],
'gripper_width_max': obj['gripper_width_max'],
'gripper_height_max': obj['gripper_height_max'],
'gripper_diameter_max': obj['gripper_diameter_max'],
'chucking_power_max': obj['chucking_power_max'],
'carrying_capacity_max': obj['carrying_capacity_max'],
'transverse_groove': obj['transverse_groove'],
'longitudinal_fitting_groove': obj['longitudinal_fitting_groove'],
'materials_model_id': self.env['sf.materials.model'].sudo().search(
[('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id,
'rigidity': obj['rigidity'],
'interface_materials_model_id': self.env['sf.materials.model'].sudo().search(
[('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id,
'type_of_drive': obj['type_of_drive'],
})
return jaw_vice_fixture_param_str
def _json_magnet_fixture_param(self, obj):
magnet_fixture_param_str = (0, '', {
'name': obj['name'],
'length': obj['length'],
'width': obj['width'],
'height': obj['height'],
'height_tolerance_value': obj['height_tolerance_value'],
'weight': obj['weight'],
'gripper_length_min': obj['gripper_length_min'],
'gripper_width_min': obj['gripper_width_min'],
'gripper_height_min': obj['gripper_height_min'],
'gripper_diameter_min': obj['gripper_diameter_min'],
'gripper_length_max': obj['gripper_length_max'],
'gripper_width_max': obj['gripper_width_max'],
'gripper_height_max': obj['gripper_height_max'],
'gripper_diameter_max': obj['gripper_diameter_max'],
'rated_adsorption_force': obj['rated_adsorption_force'],
'magnetic_field_height': obj['magnetic_field_height'],
'magnetic_pole_plate_grinding_allowance': obj['magnetic_pole_plate_grinding_allowance'],
'carrying_capacity_max': obj['carrying_capacity_max'],
'materials_model_id': self.env['sf.materials.model'].sudo().search(
[('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id,
'rigidity': obj['rigidity'],
'interface_materials_model_id': self.env['sf.materials.model'].sudo().search(
[('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id,
'type_of_drive': obj['type_of_drive'],
})
return magnet_fixture_param_str
def _json_adapter_board_fixture_param(self, obj):
adapter_board_fixture_param_str = (0, '', {
'name': obj['name'],
'length': obj['length'],
'width': obj['width'],
'height': obj['height'],
'weight': obj['weight'],
'gripper_length_min': obj['gripper_length_min'],
'gripper_width_min': obj['gripper_width_min'],
'gripper_height_min': obj['gripper_height_min'],
'gripper_diameter_min': obj['gripper_diameter_min'],
'gripper_length_max': obj['gripper_length_max'],
'gripper_width_max': obj['gripper_width_max'],
'gripper_height_max': obj['gripper_height_max'],
'gripper_diameter_max': obj['gripper_diameter_max'],
'chucking_power_max': obj['chucking_power_max'],
'carrying_capacity_max': obj['carrying_capacity_max'],
'materials_model_id': self.env['sf.materials.model'].sudo().search(
[('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id,
'rigidity': obj['rigidity'],
'screw_size': obj['screw_size'],
'via_hole_diameter': obj['via_hole_diameter'],
'type_of_drive': obj['type_of_drive'],
})
return adapter_board_fixture_param_str
def _json_scroll_chuck_param(self, obj):
scroll_chuck_param_str = (0, '', {
'name': obj['name'],
'length': obj['length'],
'width': obj['width'],
'height': obj['height'],
'diameter': obj['diameter'],
'weight': obj['weight'],
'gripper_length_min': obj['gripper_length_min'],
'gripper_width_min': obj['gripper_width_min'],
'gripper_height_min': obj['gripper_height_min'],
'gripper_diameter_min': obj['gripper_diameter_min'],
'gripper_length_max': obj['gripper_length_max'],
'gripper_width_max': obj['gripper_width_max'],
'gripper_height_max': obj['gripper_height_max'],
'gripper_diameter_max': obj['gripper_diameter_max'],
'chucking_power_max': obj['chucking_power_max'],
'carrying_capacity_max': obj['carrying_capacity_max'],
'materials_model_id': self.env['sf.materials.model'].sudo().search(
[('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id,
'rigidity': obj['rigidity'],
'mounting_hole_depth': obj['mounting_hole_depth'],
'centering_diameter': obj['centering_diameter'],
'type_of_drive': obj['type_of_drive'],
})
return scroll_chuck_param_str

View File

@@ -1,7 +1,9 @@
# -*- coding: utf-8 -*-
import logging
from urllib.parse import urlencode
from odoo import fields, models
from odoo import fields, models, api
from odoo.exceptions import UserError
_logger = logging.getLogger(__name__)
@@ -59,6 +61,14 @@ class MrsMaterialModel(models.Model):
supplier_ids = fields.One2many('sf.supplier.sort', 'materials_model_id', string='供应商')
active = fields.Boolean('有效', default=True)
@api.constrains('supplier_ids')
def _check_gain_way(self):
if not self.gain_way:
raise UserError("请输入获取方式")
if self.gain_way in ['外协', '采购']:
if not self.supplier_ids:
raise UserError("请添加供应商")
class MrsProductionProcessCategory(models.Model):
_name = 'sf.production.process.category'

View File

@@ -26,66 +26,65 @@ class FixtureModel(models.Model):
_name = 'sf.fixture.model'
_description = "夹具型号"
name = fields.Char(string="名称", size=15)
fixture_material_id = fields.Many2one('sf.fixture.material', string="夹具物料", )
fixture_material_type = fields.Char(string="夹具物料类型", related='fixture_material_id.name', store=True)
multi_mounting_type_id = fields.Many2one('sf.multi_mounting.type', string="联装类型")
brand_id = fields.Many2one('sf.machine.brand', string="品牌", domain="[('tag_ids.name', 'ilike', '夹具')]")
clamping_way = fields.Char(string="装夹方式")
port_type = fields.Char(string="接口类型")
model_file = fields.Binary(string="3D模型图")
length = fields.Char(string="长度(mm)")
width = fields.Char(string="宽度(mm)")
height = fields.Char(string="高度(mm)")
weight = fields.Char(string="重量(kg)")
clamp_workpiece_length_max = fields.Integer(string="夹持工件长度max(mm)")
clamp_workpiece_width_max = fields.Integer(string="夹持工件宽度max(mm)")
clamp_workpiece_height_max = fields.Integer(string="夹持工件高度max(mm)")
clamp_workpiece_diameter_max = fields.Float(string="夹持工件直径max(mm)")
maximum_carrying_weight = fields.Float(string="最大承载重量(kg)")
maximum_clamping_force = fields.Integer(string="最大夹持力(n)")
materials_model_id = fields.Many2one('sf.materials.model', string="材料型号")
driving_way = fields.Selection([('气动', '气动'), ('液压', '液压'), ('机械', '机械')], string="驱动方式")
apply_machine_tool_type_ids = fields.Many2many('sf.machine_tool.type', 'rel_fixture_model_machine_tool_type',
string="适用机床型号")
through_hole_size = fields.Integer(string="过孔大小[mm]")
screw_size = fields.Integer(string="螺牙大小[mm]")
active = fields.Boolean('有效', default=True)
def _get_code(self, fixture_model_type_code):
fixture_model = self.env['sf.fixture.model'].sudo().search(
[('code', 'ilike', fixture_model_type_code)],
limit=1,
order="id desc")
if not fixture_model:
num = "%03d" % 1
else:
m = int(fixture_model.code[-3:]) + 1
num = "%03d" % m
return "%s%s" % (fixture_model_type_code, num)
name = fields.Char(string="名称", size=50, required=True)
fixture_material_id = fields.Many2one('sf.fixture.material', string="夹具物料", required=True)
fixture_material_type = fields.Char(string="夹具物料类型", related='fixture_material_id.name')
multi_mounting_type_id = fields.Many2one('sf.multi_mounting.type', string="联装类型", required=True)
brand_id = fields.Many2one('sf.machine.brand', string="品牌")
model_file = fields.Binary(string="图片")
status = fields.Boolean('状态')
active = fields.Boolean('有效', default=False)
zero_chuck_ids = fields.One2many('sf.fixture.materials.basic.parameters', 'fixture_model_id',
string='零点卡盘基本参数')
zero_tray_ids = fields.One2many('sf.fixture.materials.basic.parameters', 'fixture_model_id',
string='零点托盘基本参数')
pneumatic_fixture_ids = fields.One2many('sf.fixture.materials.basic.parameters', 'fixture_model_id',
string='气动夹具基本参数')
jaw_vice_fixture_ids = fields.One2many('sf.fixture.materials.basic.parameters', 'fixture_model_id',
string='虎钳夹具基本参数')
magnet_fixture_ids = fields.One2many('sf.fixture.materials.basic.parameters', 'fixture_model_id',
string='磁吸夹具基本参数')
adapter_board_fixture_ids = fields.One2many('sf.fixture.materials.basic.parameters', 'fixture_model_id',
string='转接板(锁板)夹具基本参数')
scroll_chuck_ids = fields.One2many('sf.fixture.materials.basic.parameters', 'fixture_model_id',
string='三爪卡盘基本参数')
code = fields.Char(string='编码', readonly=True)
def _onchange_fixture_material_id(self, fixture_material_id):
if fixture_material_id:
if fixture_material_id.name == "气动夹具":
code = self._get_code("JKM-C-JJWL-QDJJ-")
elif fixture_material_id.name == "转接板(锁板)夹具":
code = self._get_code("JKM-C-JJWL-ZJBJJ-")
elif fixture_material_id.name == "磁吸夹具":
code = self._get_code("JKM-C-JJWL-CXJJ-")
elif fixture_material_id.name == "虎钳夹具":
code = self._get_code("JKM-C-JJWL-HQJJ-")
else:
code = self._get_code("JKM-C-JJWL-LDKP-")
return code
@api.model_create_multi
def create(self, vals):
obj = super(FixtureModel, self).create(vals)
if obj.fixture_material_id:
code = self._onchange_fixture_material_id(obj.fixture_material_id)
obj.code = code
return obj
# def _get_code(self, fixture_model_type_code):
# fixture_model = self.env['sf.fixture.model'].sudo().search(
# [('code', 'ilike', fixture_model_type_code)],
# limit=1,
# order="id desc")
# if not fixture_model:
# num = "%03d" % 1
# else:
# m = int(fixture_model.code[-3:]) + 1
# num = "%03d" % m
# return "%s%s" % (fixture_model_type_code, num)
#
# def _onchange_fixture_material_id(self, fixture_material_id):
# if fixture_material_id:
# if self.fixture_material_id.name == "气动夹具":
# code = self._get_code("JKM-C-JJWL-QDJJ-")
# elif self.fixture_material_id.name == "转接板(锁板)夹具":
# code = self._get_code("JKM-C-JJWL-ZJJJ-")
# elif self.fixture_material_id.name == "磁吸夹具":
# code = self._get_code("JKM-C-JJWL-CXJJ-")
# elif self.fixture_material_id.name == "虎钳夹具":
# code = self._get_code("JKM-C-JJWL-HQJJ-")
# elif self.fixture_material_id.name == "零点托盘":
# code = self._get_code("JKM-C-JJWL-LDTP-")
# elif self.fixture_material_id.name == "三爪卡盘":
# code = self._get_code("JKM-C-JJWL-SZKP-")
# else:
# code = self._get_code("JKM-C-JJWL-LDKP-")
# return code
#
# @api.model_create_multi
# def create(self, vals):
# obj = super(FixtureModel, self).create(vals)
# if obj.fixture_material_id:
# code = self._onchange_fixture_material_id(obj.fixture_material_id)
# obj.code = code
# return obj

View File

@@ -1,5 +1,9 @@
# -*- coding: utf-8 -*-
import json
import requests
from odoo import fields, models, api
from odoo.exceptions import ValidationError
from odoo.addons.sf_base.commons.common import Common
class CuttingToolMaterial(models.Model):
@@ -75,6 +79,8 @@ class CuttingToolModel(models.Model):
integral_coarse_medium_fine = fields.Selection([('', ''), ('', ''), ('', '')], '粗/中/精')
integral_run_out_accuracy_max = fields.Char('整体式刀具端跳精度max')
integral_run_out_accuracy_min = fields.Char('整体式刀具端跳精度min')
ramping_angle_ids = fields.One2many('sf.ramping.angle', 'standard_library_id', '坡铣角度',
domain=lambda self: [('standard_library_id', '=', self.id)])
fit_blade_shape_id = fields.Many2one('maintenance.equipment.image',
'适配刀片形状', domain=[('type', '=', '刀片形状')])
@@ -87,8 +93,8 @@ class CuttingToolModel(models.Model):
'柄部类型', domain=[('type', '=', '柄部类型')])
cutting_direction_ids = fields.Many2many('maintenance.equipment.image', 'cutting_direction_library_rel',
'走刀方向', domain=[('type', '=', '走刀方向')])
suitable_coolant_ids = fields.Many2many('maintenance.equipment.image', 'suitable_coolant_library_rel',
'适合冷却', domain=[('type', '=', '冷却')])
suitable_coolant_ids = fields.Many2many('maintenance.equipment.image', 'suitable_coolants_library_rel',
'适合冷却方式', domain=[('type', '=', '冷却方式')])
compaction_way_id = fields.Many2one('maintenance.equipment.image',
'压紧方式', domain=[('type', '=', '压紧方式')])
integral_tool_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters',
@@ -104,21 +110,20 @@ class CuttingToolModel(models.Model):
chuck_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters',
'standard_library_id', string='夹头基本参数')
cutting_speed_ids = fields.One2many('sf.cutting.speed', 'standard_library_id', string='切削速度Vc')
feed_per_tooth_ids = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz',
domain=[('cutting_speed', '!=', False)])
feed_per_tooth_ids_2 = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz',
domain=[('machining_method', '!=', False)])
feed_per_tooth_ids_3 = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz',
domain=[('cutting_speed', '!=', False)])
feed_per_tooth_ids_4 = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz',
domain=[('machining_method', '!=', False)])
feed_per_tooth_ids = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz(整体式刀具)')
feed_per_tooth_ids_3 = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz(刀片)')
material_model_id = fields.Many2one('sf.materials.model', '材料型号')
# 适用夹头型号可以多选
chuck_ids = fields.Many2many(
# chuck_ids = fields.Many2many(
# 'sf.cutting_tool.standard.library',
# relation='cutting_tool_type_library_handle_chuck_rel',
# column1='model_id_1',
# column2='model_id_2',
# domain="[('cutting_tool_material_id.name', '=', '夹头')]",
# string='适用夹头型号')
chuck_id = fields.Many2one(
'sf.cutting_tool.standard.library',
relation='cutting_tool_type_library_handle_chuck_rel',
column1='model_id_1',
column2='model_id_2',
domain="[('cutting_tool_material_id.name', '=', '夹头')]",
string='适用夹头型号')
cutter_bar_ids = fields.Many2many(
@@ -138,22 +143,28 @@ class CuttingToolModel(models.Model):
string='适用刀盘型号' # 使用空列表作为默认值
)
# 刀杆/参数
blade_ids = fields.Many2many(
# blade_ids = fields.Many2many(
# 'sf.cutting_tool.standard.library',
# relation='cutting_tool_type_library_pad_blade_rel',
# column1='model_id_1',
# column2='model_id_2',
# domain="[('cutting_tool_material_id.name', '=', '刀片')]",
# string='适用刀片型号' # 使用空列表作为默认值
# )
handle_id = fields.Many2one(
'sf.cutting_tool.standard.library',
relation='cutting_tool_type_library_pad_blade_rel',
column1='model_id_1',
column2='model_id_2',
domain="[('cutting_tool_material_id.name', '=', '刀片')]",
string='适用刀片型号' # 使用空列表作为默认值
)
handle_ids = fields.Many2many(
'sf.cutting_tool.standard.library',
relation='cutting_tool_type_library_chuck_handle_rel',
column1='model_id_1',
column2='model_id_2',
domain="[('cutting_tool_material_id.name', '=', '刀柄')]",
string='适用刀柄型号'
)
# handle_ids = fields.Many2many(
# 'sf.cutting_tool.standard.library',
# relation='cutting_tool_type_library_chuck_handle_rel',
# column1='model_id_1',
# column2='model_id_2',
# domain="[('cutting_tool_material_id.name', '=', '刀柄')]",
# string='适用刀柄型号'
# )
active = fields.Boolean('有效', default=True)
is_cloud = fields.Boolean('云端数据', default=False)
@@ -175,7 +186,7 @@ class MaintenanceStandardImage(models.Model):
image = fields.Binary(string='图文')
type = fields.Selection(
[('加工能力', '加工能力'), ('刀尖特征', '刀尖特征'), ('柄部类型', '柄部类型'), ('走刀方向', '走刀方向'),
('冷却液', '冷却液'), ('压紧方式', '压紧方式'), ('刀片形状', '刀片形状'), ('冷却方式', '冷却方式')],
('压紧方式', '压紧方式'), ('刀片形状', '刀片形状'), ('冷却方式', '冷却方式')],
string='特征')
equipment_id = fields.Many2many('maintenance.equipment', 'image_id', string='设备')
equipment_lq_id = fields.Many2many('maintenance.equipment', 'image_lq_id', string='设备')
@@ -233,3 +244,49 @@ class MaintenanceStandardImage(models.Model):
else:
record['image'] = ""
return records
class ToolGroups(models.Model):
_name = 'sf.tool.groups'
_description = '刀具组'
name = fields.Char('名称')
equipment_ids = fields.Many2many('maintenance.equipment', 'ref_maintenance_equipment', string='机台号')
remark = fields.Char('备注', size=50)
# ==========机床刀具组接口==========
def _register_tool_groups(self, obj):
create_url = '/AutoDeviceApi/MaintenanceToolGroups'
sf_sync_config = self.env['res.config.settings'].get_values()
token = sf_sync_config['token']
sf_secret_key = sf_sync_config['sf_secret_key']
headers = Common.get_headers(obj, token, sf_secret_key)
strurl = sf_sync_config['sf_url'] + create_url
device_id = ''
name = None
if obj:
for equipment_id in obj.equipment_ids:
device_id = '%s,%s' % (device_id, equipment_id.name)
name = obj.name
val = {
'DeviceId': device_id,
'GroupName': name,
}
kw = json.dumps(val, ensure_ascii=False)
r = requests.post(strurl, json={}, data={'kw': kw, 'token': token}, headers=headers)
ret = r.json()
if r == 200:
return "机床刀具组发送成功"
else:
raise ValidationError("机床刀具组发送失败")
# def write(self, vals):
# obj = super().write(vals)
# self._register_tool_groups(self)
# return obj
#
# @api.model_create_multi
# def create(self, vals_list):
# records = super(ToolGroups, self).create(vals_list)
# self._register_tool_groups(records)
# return records

View File

@@ -0,0 +1,10 @@
diff a/sf_base/models/tool_base_new.py b/sf_base/models/tool_base_new.py (rejected hunks)
@@ -108,6 +108,4 @@
cutting_speed_ids = fields.One2many('sf.cutting.speed', 'standard_library_id', string='切削速度Vc')
- feed_per_tooth_ids = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz',
- domain=[('cutting_speed', '!=', False)])
- feed_per_tooth_ids_3 = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz',
- domain=[('cutting_speed', '!=', False)])
+ feed_per_tooth_ids = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz')
+ feed_per_tooth_ids_3 = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz')

View File

@@ -6,6 +6,7 @@ class ToolMaterialsBasicParameters(models.Model):
_description = '刀具物料基本参数'
name = fields.Char('物料号', size=50)
code = fields.Char('编码', size=50)
standard_library_id = fields.Many2one('sf.cutting_tool.standard.library', string='刀具标准库')
cutting_tool_type = fields.Char(related='standard_library_id.cutting_tool_type', string='刀具物料类型',
store=True)
@@ -13,8 +14,8 @@ class ToolMaterialsBasicParameters(models.Model):
# 整体式刀具参数
total_length = fields.Float('总长度(mm)')
blade_number = fields.Selection(
[('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8')],
string='刃数(个)')
[('0', '0'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8')],
string='刃数(个)', default='0')
neck_diameter = fields.Float('颈部直径(mm)')
neck_length = fields.Float('颈部长度(mm)')
handle_diameter = fields.Float('柄部直径(mm)')
@@ -40,19 +41,19 @@ class ToolMaterialsBasicParameters(models.Model):
install_aperture_diameter = fields.Float('安装孔直径(mm)')
chip_breaker_groove = fields.Selection([('', ''), ('单面', '单面'), ('双面', '双面')],
string='有无断屑槽')
chip_breaker_type_code = fields.Char('断屑槽型代号')
blade_teeth_model = fields.Selection(
[('', ''), ('V牙型', 'V牙型'), ('米制全牙型', '米制全牙型'), ('美制全牙型', '美制全牙型'),
('惠氏全牙型', '惠氏全牙型'), ('BSPT全牙型', 'BSPT全牙型'), ('NPT全牙型', 'NPT全牙型'),
('UNJ全牙型', 'UNJ全牙型'), ('DIN405圆牙型', 'DIN405圆牙型'), ('ACME梯形', 'ACME梯形'),
('石油管螺纹刀片', '石油管螺纹刀片'), ('矮牙ACME梯形', '矮牙ACME梯形'),
('Trapeze30° 103', 'Trapeze30° 103')], string='刀片牙型', default='')
blade_blade_number = fields.Selection([('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'),
('7', '7'), ('8', '8'), ('9', '9'), ('10', '10')],
string='刀片的刃数(个)')
blade_blade_number = fields.Selection(
[('0', '0'), ('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8'),
('9', '9'), ('10', '10')],
string='刀片的刃数(个)', default='0')
main_included_angle = fields.Integer('主偏角(°)')
top_angle = fields.Integer('顶角(°)')
blade_tip_dip_angle = fields.Integer('刀尖倾角(°)')
side_cutting_edge_angle = fields.Integer('侧切削角(°)')
thread_model = fields.Selection([('', ''), ('外螺纹', '外螺纹'), ('内螺纹', '内螺纹')], string='螺纹类型',
default='')
thread_num = fields.Float('每英寸螺纹数(tpi)')
@@ -73,11 +74,8 @@ class ToolMaterialsBasicParameters(models.Model):
is_cooling_hole = fields.Boolean('有无冷却孔')
locating_slot_code = fields.Char('定位槽代号', size=20)
installing_structure = fields.Char('安装结构', size=20)
blade_ids = fields.Many2many(
'sf.cutting.tool.type',
relation='basic_param_pad_blade_rel',
column1='model_id_1',
column2='model_id_2',
blade_id = fields.Many2one(
'sf.cutting_tool.standard.library',
domain="[('cutting_tool_material_id.name', '=', '刀片')]",
string='适配刀片型号' # 使用空列表作为默认值
)
@@ -90,295 +88,107 @@ class ToolMaterialsBasicParameters(models.Model):
cutter_head_diameter = fields.Float('刀盘直径(mm)')
interface_diameter = fields.Float('接口直径(mm)')
# 刀柄参数
flange_shank_length = fields.Float('法兰长(mm)')
flange_shank_length = fields.Float('法兰长(mm)')
flange_diameter = fields.Float('法兰直径(mm)')
fit_chuck_size = fields.Char('适配夹头尺寸')
handle_external_diameter = fields.Float('柄部外径(mm)')
handle_inside_diameter = fields.Float('柄部内径(mm)')
dynamic_balance_class = fields.Char('动平衡等级')
min_clamping_diameter = fields.Float('最小夹持直径(mm)')
max_clamping_diameter = fields.Float('最大夹持直径(mm)')
clamping_mode = fields.Char('夹持方式', size=20)
max_load_capacity = fields.Float('最大负载能力(kg)')
taper = fields.Integer('锥度(°)')
shank_length = fields.Float('刀柄长度(mm)', digits=(3, 2))
shank_diameter = fields.Float('刀柄直径(mm)')
tool_changing_time = fields.Integer('换刀时间(s)')
standard_rotate_speed = fields.Integer('标准转速(n/min)')
max_rotate_speed = fields.Integer('最大转速(n/min)')
diameter_slip_accuracy = fields.Char('径跳精度(mm)', size=20)
cooling_model = fields.Char('冷却类型', size=20)
is_rough_machining = fields.Boolean('可粗加工', default=False)
is_finish_machining = fields.Boolean('可精加工', default=False)
taper_shank_model = fields.Char('锥柄型号')
is_quick_cutting = fields.Boolean('可高速切削', default=False)
is_drill_hole = fields.Boolean('可钻孔', default=False)
is_safe_lock = fields.Boolean('有无安全锁', default=False)
chuck_id = fields.Many2one(
'sf.cutting_tool.standard.library',
domain="[('cutting_tool_material_id.name', '=', '夹头')]",
string='适配夹头型号' # 使用空列表作为默认值
)
nut = fields.Char('适配锁紧螺母型号')
# 夹头参数
er_size_model = fields.Char('ER尺寸型号', size=20)
outer_diameter = fields.Float('外径(mm)')
inner_diameter = fields.Float('内径(mm)')
run_out_accuracy = fields.Char('跳动精度(mm)', size=20)
top_diameter = fields.Float('顶部直径(mm)')
weight = fields.Float('重量(kg)', size=20)
weight = fields.Float('重量(kg)')
clamping_length = fields.Float('夹持长度(mm)')
clamping_tolerance = fields.Char('夹持公差(mm)', size=20)
cooling_jacket = fields.Char('适用冷却套型号', size=50)
handle_ids = fields.Many2many(
'sf.cutting.tool.type',
relation='basic_param_chuck_handle_rel',
column1='model_id_1',
column2='model_id_2',
domain="[('cutting_tool_material_id.name', '=', '刀柄')]",
string='适用刀柄型号'
)
def _json_integral_tool_basic_param(self, obj):
integral_tool_basic_param_str = (0, '', {
'name': obj['name'],
'cutting_tool_type': obj['cutting_tool_type'],
'total_length': obj['total_length'],
'blade_diameter': obj['blade_diameter'],
'blade_length': obj['blade_length'],
'blade_number': obj['blade_number'],
'neck_length': obj['neck_length'],
'neck_diameter': obj['neck_diameter'],
'handle_diameter': obj['handle_diameter'],
'handle_length': obj['handle_length'],
'blade_tip_diameter': obj['blade_tip_diameter'],
'blade_tip_working_size': obj['blade_tip_working_size'],
'blade_tip_taper': obj['blade_tip_taper'],
'blade_helix_angle': obj['blade_helix_angle'],
'blade_width': obj['blade_width'],
'blade_depth': obj['blade_depth'],
'pitch': obj['pitch'],
'cutting_depth': obj['cutting_depth'],
})
return integral_tool_basic_param_str
def _json_blade_basic_param(self, obj):
blade_basic_param_str = (0, '', {
'name': obj['name'],
'cutting_tool_type': obj['cutting_tool_type'],
'length': obj['length'],
'thickness': obj['thickness'],
'width': obj['width'],
'cutting_blade_length': obj['cutting_blade_length'],
'relief_angle': obj['relief_angle'],
'blade_tip_circular_arc_radius': obj['blade_tip_circular_arc_radius'],
'inscribed_circle_diameter': obj['inscribed_circle_diameter'],
'install_aperture_diameter': obj['install_aperture_diameter'],
'pitch': obj['pitch'],
'chip_breaker_groove': obj['chip_breaker_groove'],
'blade_teeth_model': '' if not obj['bladed_teeth_model'] else obj['bladed_teeth_model'],
'blade_blade_number': obj['blade_blade_number'],
'cutting_depth': obj['cutting_depth'],
'blade_width': obj['blade_width'],
'main_included_angle': obj['main_included_angle'],
'top_angle': obj['top_angle'],
'blade_tip_dip_angle': obj['blade_tip_dip_angle'],
'side_cutting_edge_angle': obj['side_cutting_edge_angle'],
'thread_model': '' if not obj['thread_model'] else obj['thread_model'],
'thread_num': obj['thread_num'],
'blade_tip_height_tolerance': obj['blade_tip_height_tolerance'],
'inscribed_circle_tolerance': obj['inscribed_circle_tolerance'],
'thickness_tolerance': obj['thickness_tolerance'],
})
return blade_basic_param_str
def _json_cutter_arbor_basic_param(self, obj):
cutter_arbor_basic_param_str = (0, '', {
'name': obj['name'],
'cutting_tool_type': obj['cutting_tool_type'],
'height': obj['height'],
'width': obj['width'],
'total_length': obj['total_length'],
'knife_head_height': obj['knife_head_height'],
'knife_head_width': obj['knife_head_width'],
'knife_head_length': obj['knife_head_length'],
'cutter_arbor_diameter': obj['cutter_arbor_diameter'],
'main_included_angle': obj['main_included_angle'],
'relief_angle': obj['relief_angle'],
'cutting_depth': obj['cutting_depth'],
'min_machining_aperture': obj['min_machining_aperture'],
'install_blade_tip_num': obj['install_blade_tip_num'],
'cutting_blade_model': obj['cutting_blade_model'],
'is_cooling_hole': obj['is_cooling_hole'],
'locating_slot_code': obj['locating_slot_code'],
'installing_structure': obj['installing_structure'],
'blade_ids': [(6, 0, [])] if not obj.get('blade_codes') else
self.evn['sf.cutting_tool.standard.library']._get_ids(obj['blade_codes']),
'tool_shim': obj['tool_shim'],
'cotter_pin': obj['cotter_pin'],
'pressing_plate': obj['pressing_plate'],
'screw': obj['screw'],
'spanner': obj['spanner'],
})
return cutter_arbor_basic_param_str
def _json_cutter_head_basic_param(self, obj):
cutter_head_basic_param_str = (0, '', {
'name': obj['name'],
'cutting_tool_type': obj['cutting_tool_type'],
'install_blade_tip_num': obj['install_blade_tip_num'],
'blade_diameter': obj['blade_diameter'],
'cutter_head_diameter': obj['cutter_head_diameter'],
'interface_diameter': obj['interface_diameter'],
'total_length': obj['total_length'],
'blade_length': obj['blade_length'],
'cutting_depth': obj['cutting_depth'],
'main_included_angle': obj['main_included_angle'],
'installing_structure': obj['installing_structure'],
'blade_ids': [(6, 0, [])] if not obj.get('blade_codes') else
self.evn['sf.cutting_tool.standard.library']._get_ids(obj['blade_codes']),
'screw': obj['screw'],
'spanner': obj['spanner'],
'cutting_blade_model': obj['cutting_blade_model'],
'is_cooling_hole': obj['is_cooling_hole'],
'locating_slot_code': obj['locating_slot_code'],
})
return cutter_head_basic_param_str
def _json_knife_handle_basic_param(self, obj):
knife_handle_basic_param_str = (0, '', {
'name': obj['name'],
'cutting_tool_type': obj['cutting_tool_type'],
'total_length': obj['total_length'],
'flange_shank_length': obj['flange_shank_length'],
'handle_external_diameter': obj['handle_external_diameter'],
'handle_inside_diameter': obj['handle_inside_diameter'],
'min_clamping_diameter': obj['min_clamping_diameter'],
'max_clamping_diameter': obj['max_clamping_diameter'],
'clamping_mode': obj['clamping_mode'],
'max_load_capacity': obj['max_load_capacity'],
'taper': obj['taper'],
'tool_changing_time': obj['tool_changing_time'],
'standard_rotate_speed': obj['standard_rotate_speed'],
'max_rotate_speed': obj['max_rotate_speed'],
'diameter_slip_accuracy': obj['diameter_slip_accuracy'],
'cooling_model': obj['cooling_model'],
'is_rough_machining': obj['is_rough_machining'],
'is_finish_machining': obj['is_finish_machining'],
'is_quick_cutting': obj['is_quick_cutting'],
'is_drill_hole': obj['is_drill_hole'],
'is_safe_lock': obj['is_safe_lock'],
'screw': obj['screw'],
'spanner': obj['spanner'],
})
return knife_handle_basic_param_str
def _json_chuck_basic_param(self, obj):
chuck_basic_param_str = (0, '', {
'name': obj['name'],
'cutting_tool_type': obj['cutting_tool_type'],
'er_size_model': obj['er_size_model'],
'min_clamping_diameter': obj['min_clamping_diameter'],
'max_clamping_diameter': obj['max_clamping_diameter'],
'outer_diameter': obj['outer_diameter'],
'inner_diameter': obj['inner_diameter'],
'run_out_accuracy': obj['run_out_accuracy'],
'total_length': obj['total_length'],
'taper': obj['taper'],
'run_out_accuracy': obj['run_out_accuracy'],
'top_diameter': obj['top_diameter'],
'weight': obj['weight'],
'clamping_mode': obj['clamping_mode'],
'clamping_length': obj['clamping_length'],
'clamping_tolerance': obj['clamping_tolerance'],
'max_load_capacity': obj['max_load_capacity'],
'handle_ids': [(6, 0, [])] if not obj.get(
'handle_codes') else self.evn['sf.cutting_tool.standard.library']._get_ids(obj['handle_codes']),
'cooling_jacket': obj['cooling_jacket'],
})
return chuck_basic_param_str
active = fields.Boolean(string='有效', default=True)
class CuttingSpeed(models.Model):
_name = 'sf.cutting.speed'
_description = '切削速度Vc'
name = fields.Char('名称')
product_template_id = fields.Many2one('product.template')
standard_library_id = fields.Many2one('sf.cutting_tool.standard.library', string='标准库')
execution_standard_id = fields.Many2one('sf.international.standards', string='执行标准', store=True)
material_code = fields.Char('材料代号')
material_id = fields.Many2one('sf.materials.model', '材料名称',
domain="[('standards_id', '=', execution_standard_id)]")
slope_milling_angle = fields.Integer('坡铣角度(°)')
material_name_id = fields.Many2one('sf.materials.model', '材料名称',
domain="[('standards_id', '=', execution_standard_id)]")
material_grade = fields.Char('材料牌号')
tensile_strength = fields.Char('拉伸强度 (N/mm²)')
hardness = fields.Integer('硬度(HRC)')
cutting_speed_n1 = fields.Char('径向切宽 ae=100%D1 ap=1*D1 切削速度Vc')
cutting_speed_n2 = fields.Char('径向切宽 ae=50%D1 ap=1.5*D1 切削速度Vc')
cutting_speed_n3 = fields.Char('径向切宽 ae=25%D1 ap=L1max 切削速度Vc')
cutting_speed_n4 = fields.Char('径向切宽 ae=15%D1 ap=L1max 切削速度Vc')
cutting_speed_n5 = fields.Char('径向切宽 ae=5%D1 ap=L1max 切削速度Vc')
rough_machining = fields.Char('粗加工 Vc(m/min)')
precision_machining = fields.Char('精加工 Vc(m/min)')
application = fields.Selection([('主应用', '主应用'), ('次应用', '次应用')], '主/次应用')
hardness = fields.Integer('硬度(hrc)')
ability_feature_library = fields.Many2one('maintenance.equipment.image', '加工方式',
domain="[('type', '=', '加工能力')]")
cutting_width_depth_id = fields.Many2one('sf.cutting.width.depth', '切削宽度和深度')
process_capability = fields.Selection([('粗加工', '粗加工'), ('精加工', '精加工')], string='粗/精加工')
cutting_speed = fields.Char('切削速度', required=True)
cutting_speed_max = fields.Float('最大值')
cutting_speed_min = fields.Float('最小值')
def _json_cutting_speed(self, obj):
cutting_speed_str = (0, '', {
'execution_standard_id': self.env['sf.international.standards'].search(
[('code', '=', obj['execution_standard_code'])]).id,
'material_code': obj['material_code'],
'material_id': self.env['sf.materials.model'].search([('materials_no', '=', obj['material_name_code'])]).id,
'material_grade': obj['material_grade'],
'tensile_strength': obj['tensile_strength'],
'hardness': obj['hardness'],
'cutting_speed_n1': obj['cutting_speed_n1'],
'cutting_speed_n2': obj['cutting_speed_n2'],
'cutting_speed_n3': obj['cutting_speed_n3'],
'cutting_speed_n4': obj['cutting_speed_n4'],
'cutting_speed_n5': obj['cutting_speed_n5'],
'rough_machining': obj['rough_machining'],
'precision_machining': obj['precision_machining'],
'application': obj['application'],
})
return cutting_speed_str
application = fields.Selection([('主应用', '主应用'), ('次应用', '次应用')], '主/次应用')
active = fields.Boolean(string='有效', default=True)
class FeedPerTooth(models.Model):
_name = 'sf.feed.per.tooth'
_description = '每齿走刀量fz'
_order = 'machining_method desc, blade_diameter, materials_type_id'
_order = 'blade_diameter,cutting_width_depth_id,materials_type_id'
name = fields.Char('名称')
product_template_id = fields.Many2one('product.template')
standard_library_id = fields.Many2one('sf.cutting_tool.standard.library', string='标准库')
cutting_speed = fields.Char('径向切宽 ae(mm)')
machining_method = fields.Selection([('直铣', '直铣'), ('坡铣', '坡铣')], string='加工方式')
materials_type_id = fields.Many2one('sf.materials.model', string='材料型号')
blade_diameter = fields.Integer('刃部直径(mm)', readonly=True)
feed_per_tooth = fields.Char('每齿走刀量 (mm/z)')
materials_type_id = fields.Many2one('sf.materials.model', string='材料名称', readonly=True)
cutting_width_depth_id = fields.Many2one('sf.cutting.width.depth', '切削宽度和深度', readonly=True)
feed_per_tooth = fields.Char('每齿走刀量 (mm/z)', size=20)
active = fields.Boolean(string='有效', default=True)
def _json_feed_per_tooth(self, obj):
feed_per_tooth_str = (0, '', {
'cutting_speed': obj['cutting_speed'],
'blade_diameter': obj['blade_diameter'],
'feed_per_tooth': obj['feed_per_tooth'],
})
return feed_per_tooth_str
def _json_feed_per_tooth_2(self, obj):
feed_per_tooth_2_str = (0, '', {
'machining_method': obj['machining_method'],
'materials_type_id': self.env['sf.materials.model'].search(
[('materials_no', '=', obj['materials_type_code'])]).id,
'blade_diameter': obj['blade_diameter'],
'feed_per_tooth': obj['feed_per_tooth'],
})
return feed_per_tooth_2_str
def _json_feed_per_tooth_3(self, obj):
feed_per_tooth_3_str = (0, '', {
'cutting_speed': obj['cutting_speed'],
'feed_per_tooth': obj['feed_per_tooth'],
})
return feed_per_tooth_3_str
def _json_feed_per_tooth_4(self, obj):
feed_per_tooth_4_str = (0, '', {
'machining_method': obj['machining_method'],
'materials_type_id': self.env['sf.materials.model'].search(
[('materials_no', '=', obj['materials_type_code'])]).id,
'feed_per_tooth': obj['feed_per_tooth'],
})
return feed_per_tooth_4_str
# @api.depends('product_template_id')
# def _compute_product_template_id(self):
# if self.product_template_id is not None:
# self.blade_diameter = self.product_template_id.cutting_tool_blade_diameter
class CuttingWidthDepth(models.Model):
_name = 'sf.cutting.width.depth'
_description = '切削宽度和深度'
name = fields.Char('名称')
class RampingAngle(models.Model):
_name = 'sf.ramping.angle'
_description = '坡铣角度'
standard_library_id = fields.Many2one('sf.cutting_tool.standard.library', '刀具标准库')
name = fields.Char('坡铣角度')

View File

@@ -71,7 +71,7 @@
<record id="group_plan_director" model="res.groups">
<field name="name">计划总监</field>
<field name="category_id" ref="module_category_plan"/>
<!-- <field name="implied_ids" eval="[(4, ref('sf_base.group_plan_dispatch'))]"/>-->
<field name="implied_ids" eval="[(4, ref('sf_base.group_plan_dispatch'))]"/>
</record>
<record id="group_purchase" model="res.groups">

View File

@@ -1,34 +1,144 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_sf_machine_tool,sf_machine_tool,model_sf_machine_tool,base.group_user,1,1,1,1
access_sf_machine_tool_type,sf_machine_tool_type,model_sf_machine_tool_type,base.group_user,1,1,1,1
access_sf_machine_brand,sf_machine_brand,model_sf_machine_brand,base.group_user,1,1,1,1
access_sf_machine_brand_tags,sf_machine_brand_tags,model_sf_machine_brand_tags,base.group_user,1,1,1,1
access_sf_machine_control_system,sf_machine_control_system,model_sf_machine_control_system,base.group_user,1,1,1,1
access_sf_processing_order,sf_processing_order,model_sf_processing_order,base.group_user,1,1,1,1
access_sf_production_process,sf_production_process,model_sf_production_process,base.group_user,1,1,1,1
access_sf_production_materials,sf_production_materials,model_sf_production_materials,base.group_user,1,1,1,1
access_sf_materials_model,sf_materials_model,model_sf_materials_model,base.group_user,1,1,1,1
access_sf_processing_technology,sf_processing_technology,model_sf_processing_technology,base.group_user,1,1,1,1
access_sf_supplier_sort,sf_supplier_sort,model_sf_supplier_sort,base.group_user,1,1,1,1
access_sf_production_process_parameter,sf_production_process_parameter,model_sf_production_process_parameter,base.group_user,1,1,1,1
access_sf_production_process_category,sf_production_process_category,model_sf_production_process_category,base.group_user,1,1,1,1
access_sf_machine_tool_category,sf_machine_tool_category,model_sf_machine_tool_category,base.group_user,1,1,1,1
access_sf_cutting_tool_material,sf_cutting_tool_material,model_sf_cutting_tool_material,base.group_user,1,1,1,1
access_sf_cutting_tool_type,sf_cutting_tool_type,model_sf_cutting_tool_type,base.group_user,1,1,1,1
access_sf_functional_cutting_tool,sf_functional_cutting_tool,model_sf_functional_cutting_tool,base.group_user,1,1,1,1
access_sf_functional_cutting_tool_model,sf_functional_cutting_tool_model,model_sf_functional_cutting_tool_model,base.group_user,1,1,1,1
access_sf_fixture_material,sf_fixture_material,model_sf_fixture_material,base.group_user,1,1,1,1
access_sf_multi_mounting_type,sf_multi_mounting_type,model_sf_multi_mounting_type,base.group_user,1,1,1,1
access_sf_fixture_model,sf_fixture_model,model_sf_fixture_model,base.group_user,1,1,1,1
access_sf_machine_tool,sf_machine_tool,model_sf_machine_tool,base.group_user,1,1,1,0
access_sf_machine_tool_admin,sf_machine_tool_admin,model_sf_machine_tool,base.group_system,1,1,1,0
access_sf_machine_tool_type,sf_machine_tool_type,model_sf_machine_tool_type,base.group_user,1,1,1,0
access_sf_machine_tool_type_admin,sf_machine_tool_type_admin,model_sf_machine_tool_type,base.group_system,1,1,1,0
access_sf_machine_brand,sf_machine_brand,model_sf_machine_brand,base.group_user,1,1,1,0
access_sf_machine_brand_admin,sf_machine_brand_admin,model_sf_machine_brand,base.group_system,1,1,1,0
access_sf_machine_brand_tags,sf_machine_brand_tags,model_sf_machine_brand_tags,base.group_user,1,1,1,0
access_sf_machine_brand_tags_admin,sf_machine_brand_tags_admin,model_sf_machine_brand_tags,base.group_system,1,1,1,0
access_sf_machine_control_system,sf_machine_control_system,model_sf_machine_control_system,base.group_user,1,1,1,0
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_processing_order,sf_processing_order,model_sf_processing_order,base.group_user,1,1,1,0
access_sf_processing_order_admin,sf_processing_order_admin,model_sf_processing_order,base.group_system,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
access_sf_production_materials_admin,sf_production_materials_admin,model_sf_production_materials,base.group_system,1,1,1,0
access_sf_materials_model,sf_materials_model,model_sf_materials_model,base.group_user,1,1,1,0
access_sf_materials_model_admin,sf_materials_model_admin,model_sf_materials_model,base.group_system,1,1,1,0
access_sf_processing_technology,sf_processing_technology,model_sf_processing_technology,base.group_user,1,1,1,0
access_sf_processing_technology_admin,sf_processing_technology_admin,model_sf_processing_technology,base.group_system,1,1,1,0
access_sf_supplier_sort,sf_supplier_sort,model_sf_supplier_sort,base.group_user,1,1,1,0
access_sf_supplier_sort_admin,sf_supplier_sort_admin,model_sf_supplier_sort,base.group_system,1,1,1,0
access_sf_production_process_parameter,sf_production_process_parameter,model_sf_production_process_parameter,base.group_user,1,1,1,0
access_sf_production_process_parameter_group_plan_director,sf_production_process_parameter_group_plan_director,model_sf_production_process_parameter,sf_base.group_plan_director,1,0,0,0
access_sf_production_process_parameter_group_purchase_director,sf_production_process_parameter_group_purchase_director,model_sf_production_process_parameter,sf_base.group_purchase_director,1,0,0,0
access_sf_production_process_parameter_group_sale_director,sf_production_process_parameter_group_sale_director,model_sf_production_process_parameter,sf_base.group_sale_director,1,0,0,0
access_sf_production_process_parameter_admin,sf_production_process_parameter_admin,model_sf_production_process_parameter,base.group_system,1,1,1,0
access_sf_production_process_category,sf_production_process_category,model_sf_production_process_category,base.group_user,1,1,1,0
access_sf_production_process_category_admin,sf_production_process_category_admin,model_sf_production_process_category,base.group_system,1,1,1,0
access_sf_machine_tool_category,sf_machine_tool_category,model_sf_machine_tool_category,base.group_user,1,1,1,0
access_sf_machine_tool_category_admin,sf_machine_tool_category_admin,model_sf_machine_tool_category,base.group_system,1,1,1,0
access_sf_cutting_tool_material,sf_cutting_tool_material,model_sf_cutting_tool_material,base.group_user,1,1,1,0
access_sf_cutting_tool_material_admin,sf_cutting_tool_material_admin,model_sf_cutting_tool_material,base.group_system,1,1,1,0
access_sf_cutting_tool_type,sf_cutting_tool_type,model_sf_cutting_tool_type,base.group_user,1,1,1,0
access_sf_cutting_tool_type_admin,sf_cutting_tool_type_admin,model_sf_cutting_tool_type,base.group_system,1,1,1,0
access_sf_cutting_tool_type_group_purchase_director,sf_cutting_tool_type_group_purchase_director,model_sf_cutting_tool_type,sf_base.group_purchase_director,1,1,0,0
access_sf_cutting_tool_type_group_sale_director,sf_cutting_tool_type_group_sale_director,model_sf_cutting_tool_type,sf_base.group_sale_director,1,1,0,0
access_sf_cutting_tool_type_group_plan_director,sf_cutting_tool_type_group_plan_director,model_sf_cutting_tool_type,sf_base.group_plan_director,1,1,0,0
access_sf_functional_cutting_tool,sf_functional_cutting_tool,model_sf_functional_cutting_tool,base.group_user,1,1,1,0
access_sf_functional_cutting_tool_admin,sf_functional_cutting_tool_admin,model_sf_functional_cutting_tool,base.group_system,1,1,1,0
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_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
access_sf_multi_mounting_type,sf_multi_mounting_type,model_sf_multi_mounting_type,base.group_user,1,1,1,0
access_sf_multi_mounting_type_admin,sf_multi_mounting_type_admin,model_sf_multi_mounting_type,base.group_system,1,1,1,0
access_sf_fixture_model,sf_fixture_model,model_sf_fixture_model,base.group_user,1,1,1,0
access_sf_fixture_model_admin,sf_fixture_model_admin,model_sf_fixture_model,base.group_system,1,1,1,0
access_sf_functional_fixture_type,sf_functional_fixture_type,model_sf_functional_fixture_type,base.group_user,1,1,1,1
access_sf_functional_fixture,sf_functional_fixture,model_sf_functional_fixture,base.group_user,1,1,1,1
access_sf_sync_common,sf_sync_common,model_sf_sync_common,base.group_user,1,1,1,1
access_sf_international_standards,sf_international_standards,model_sf_international_standards,base.group_user,1,1,1,1
access_material_apply,material_apply,model_material_apply,base.group_user,1,1,1,1
access_sf_cutting_tool_standard_library,sf_cutting_tool_standard_library,model_sf_cutting_tool_standard_library,base.group_user,1,1,1,1
access_sf_tool_materials_basic_parameters,sf_tool_materials_basic_parameters,model_sf_tool_materials_basic_parameters,base.group_user,1,1,1,1
access_sf_cutting_speed,sf_cutting_speed,model_sf_cutting_speed,base.group_user,1,1,1,1
access_sf_feed_per_tooth,sf_feed_per_tooth,model_sf_feed_per_tooth,base.group_user,1,1,1,1
access_sf_functional_fixture_type_admin,sf_functional_fixture_type_admin,model_sf_functional_fixture_type,base.group_system,1,1,1,0
access_sf_functional_fixture,sf_functional_fixture,model_sf_functional_fixture,base.group_user,1,1,1,0
access_sf_functional_fixture_admin,sf_functional_fixture_admin,model_sf_functional_fixture,base.group_system,1,1,1,0
access_sf_sync_common,sf_sync_common,model_sf_sync_common,base.group_user,1,1,1,0
access_sf_sync_common,sf_sync_common_admin,model_sf_sync_common,base.group_system,1,1,1,0
access_sf_international_standards,sf_international_standards,model_sf_international_standards,base.group_user,1,1,1,0
access_sf_international_standards_admin,sf_international_standards_admin,model_sf_international_standards,base.group_system,1,1,1,0
access_material_apply,material_apply,model_material_apply,base.group_user,1,1,1,0
access_material_apply_admin,material_apply_admin,model_material_apply,base.group_system,1,1,1,0
access_sf_cutting_tool_standard_library,sf_cutting_tool_standard_library,model_sf_cutting_tool_standard_library,base.group_user,1,1,1,0
access_sf_cutting_tool_standard_library_admin,sf_cutting_tool_standard_library_admin,model_sf_cutting_tool_standard_library,base.group_system,1,1,1,0
access_sf_tool_materials_basic_parameters,sf_tool_materials_basic_parameters,model_sf_tool_materials_basic_parameters,base.group_user,1,1,1,0
access_sf_tool_materials_basic_parameters_admin,sf_tool_materials_basic_parameters_admin,model_sf_tool_materials_basic_parameters,base.group_system,1,1,1,0
access_sf_cutting_speed,sf_cutting_speed,model_sf_cutting_speed,base.group_user,1,1,1,0
access_sf_cutting_speed_admin,sf_cutting_speed_admin,model_sf_cutting_speed,base.group_system,1,1,1,0
access_sf_cutting_speed_group_purchase_director,sf_cutting_speed_group_purchase_director,model_sf_cutting_speed,sf_base.group_purchase_director,1,1,1,0
access_sf_cutting_speed_group_sale_director,sf_cutting_speed_group_sale_director,model_sf_cutting_speed,sf_base.group_sale_director,1,1,1,0
access_sf_cutting_speed_group_plan_director,sf_cutting_speed_group_plan_director,model_sf_cutting_speed,sf_base.group_plan_director,1,1,1,0
access_sf_feed_per_tooth_group_purchase_director,sf_feed_per_tooth_group_purchase_director,model_sf_feed_per_tooth,sf_base.group_purchase_director,1,1,0,0
access_sf_feed_per_tooth_group_sale_director,sf_feed_per_tooth_group_sale_director,model_sf_feed_per_tooth,sf_base.group_sale_director,1,1,0,0
access_sf_feed_per_tooth_group_plan_director,sf_feed_per_tooth_group_plan_director,model_sf_feed_per_tooth,sf_base.group_plan_director,1,1,0,0
access_sf_feed_per_tooth,sf_feed_per_tooth,model_sf_feed_per_tooth,base.group_user,1,1,1,0
access_sf_feed_per_tooth_admin,sf_feed_per_tooth_admin,model_sf_feed_per_tooth,base.group_system,1,1,1,0
access_sf_ramping_angle,sf_ramping_angle,model_sf_ramping_angle,base.group_user,1,1,1,1
access_sf_ramping_angle_admin,sf_ramping_angle_admin,model_sf_ramping_angle,base.group_system,1,1,1,1
access_sf_cutting_width_depth,sf_cutting_width_depth,model_sf_cutting_width_depth,base.group_user,1,1,1,1
access_sf_cutting_width_depth_admin,sf_cutting_width_depth_admin,model_sf_cutting_width_depth,base.group_system,1,1,1,1
access_sf_machine_tool,sf_machine_tool,model_sf_machine_tool,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_machine_tool_type,sf_machine_tool_type,model_sf_machine_tool_type,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_machine_brand,sf_machine_brand,model_sf_machine_brand,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_machine_brand_group_plan_director,sf_machine_brand_group_plan_director,model_sf_machine_brand,sf_base.group_plan_director,1,0,0,0
access_sf_machine_brand_group_purchase_director,sf_machine_brand_group_purchase_director,model_sf_machine_brand,sf_base.group_purchase_director,1,0,0,0
access_sf_machine_brand_group_sale_director,sf_machine_brand_group_sale_director,model_sf_machine_brand,sf_base.group_sale_director,1,0,0,0
access_sf_machine_brand_tags,sf_machine_brand_tags,model_sf_machine_brand_tags,base.group_user,1,1,1,1
access_sf_machine_control_system,sf_machine_control_system,model_sf_machine_control_system,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_processing_order,sf_processing_order,model_sf_processing_order,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_production_process,sf_production_process,model_sf_production_process,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_production_materials,sf_production_materials,model_sf_production_materials,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_production_materials_group_plan_director,sf_production_materials_group_plan_director,model_sf_production_materials,sf_base.group_plan_director,1,1,0,0
access_sf_production_materials_group_purchase_director,sf_production_materials_group_purchase_director,model_sf_production_materials,sf_base.group_purchase_director,1,1,0,0
access_sf_production_materials_group_sale_director,sf_production_materials_group_sale_director,model_sf_production_materials,sf_base.group_sale_director,1,1,0,0
access_sf_materials_model,sf_materials_model,model_sf_materials_model,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_materials_model_group_plan_director,sf_materials_model_group_plan_director,model_sf_materials_model,sf_base.group_plan_director,1,0,0,0
access_sf_materials_model_group_purchase_director,sf_materials_model_group_purchase_director,model_sf_materials_model,sf_base.group_purchase_director,1,0,0,0
access_sf_materials_model_group_sale_director,sf_materials_model_group_sale_director,model_sf_materials_model,sf_base.group_sale_director,1,0,0,0
access_sf_processing_technology,sf_processing_technology,model_sf_processing_technology,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_supplier_sort,sf_supplier_sort,model_sf_supplier_sort,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_production_process_parameter,sf_production_process_parameter,model_sf_production_process_parameter,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_production_process_category,sf_production_process_category,model_sf_production_process_category,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_machine_tool_category,sf_machine_tool_category,model_sf_machine_tool_category,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_cutting_tool_material_group_purchase_director,sf_cutting_tool_material_group_purchase_director,model_sf_cutting_tool_material,sf_base.group_purchase_director,1,0,1,0
access_sf_cutting_tool_material_group_sale_director,sf_cutting_tool_material_group_sale_director,model_sf_cutting_tool_material,sf_base.group_sale_director,1,0,1,0
access_sf_cutting_tool_material_group_plan_director,sf_cutting_tool_material_group_plan_director,model_sf_cutting_tool_material,sf_base.group_plan_director,1,0,1,0
access_sf_cutting_tool_type,sf_cutting_tool_type,model_sf_cutting_tool_type,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_functional_cutting_tool,sf_functional_cutting_tool,model_sf_functional_cutting_tool,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_functional_cutting_tool_model,sf_functional_cutting_tool_model,model_sf_functional_cutting_tool_model,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_fixture_material,sf_fixture_material,model_sf_fixture_material,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_fixture_materials_basic_parameters,sf_fixture_materials_basic_parameters,model_sf_fixture_materials_basic_parameters,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_multi_mounting_type,sf_multi_mounting_type,model_sf_multi_mounting_type,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_fixture_model,sf_fixture_model,model_sf_fixture_model,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_functional_fixture_type,sf_functional_fixture_type,model_sf_functional_fixture_type,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_functional_fixture,sf_functional_fixture,model_sf_functional_fixture,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_sync_common,sf_sync_common,model_sf_sync_common,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_international_standards,sf_international_standards,model_sf_international_standards,sf_base.group_sf_mrp_user,1,0,0,0
access_material_apply,material_apply,model_material_apply,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_cutting_tool_standard_library_group_sf_mrp_user,sf_cutting_tool_standard_library_group_sf_mrp_user,model_sf_cutting_tool_standard_library,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_cutting_tool_standard_library_group_purchase_director,sf_cutting_tool_standard_library_group_purchase_director,model_sf_cutting_tool_standard_library,sf_base.group_purchase_director,1,0,1,0
access_sf_cutting_tool_standard_library_group_plan_director,sf_cutting_tool_standard_library_group_plan_director,model_sf_cutting_tool_standard_library,sf_base.group_plan_director,1,0,1,0
access_sf_cutting_tool_standard_library_group_sale_director,sf_cutting_tool_standard_library_group_sale_director,model_sf_cutting_tool_standard_library,sf_base.group_sale_director,1,0,1,0
access_sf_tool_groups,sf_tool_groups,model_sf_tool_groups,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_tool_materials_basic_parameters_group_sale_director,sf_tool_materials_basic_parameters_group_sale_director,model_sf_tool_materials_basic_parameters,sf_base.group_sale_director,1,0,1,0
access_sf_tool_materials_basic_parameters_group_plan_director,sf_tool_materials_basic_parameters_group_plan_director,model_sf_tool_materials_basic_parameters,sf_base.group_plan_director,1,0,1,0
access_sf_tool_materials_basic_parameters_group_purchase_director,sf_tool_materials_basic_parameters_group_purchase_director,model_sf_tool_materials_basic_parameters,sf_base.group_purchase_director,1,0,1,0
access_sf_cutting_speed,sf_cutting_speed,model_sf_cutting_speed,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_cutting_speed_group_purchase,sf_cutting_speed_group_purchase,model_sf_cutting_speed,sf_base.group_purchase,1,0,0,0
access_sf_cutting_speed_group_sale_salemanager,sf_cutting_speed_group_sale_salemanager,model_sf_cutting_speed,sf_base.group_sale_salemanager,1,0,0,0
access_sf_feed_per_tooth,sf_feed_per_tooth,model_sf_feed_per_tooth,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_feed_per_tooth_group_purchase,sf_feed_per_tooth_group_purchase,model_sf_feed_per_tooth,sf_base.group_purchase,1,0,0,0
access_sf_ramping_angle,sf_ramping_angle,model_sf_ramping_angle,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_ramping_angle_group_purchase,sf_ramping_angle_group_purchase,model_sf_ramping_angle,sf_base.group_purchase,1,0,0,0
access_sf_cutting_width_depth,sf_cutting_width_depth,model_sf_cutting_width_depth,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_cutting_width_depth_group_purchase,sf_cutting_width_depth_group_purchase,model_sf_cutting_width_depth,sf_base.group_purchase,1,0,0,0
access_maintenance_equipment_image,maintenance_equipment_image,model_maintenance_equipment_image,base.group_user,1,1,1,1
access_purchase_order_group_purchase,access_purchase_order_group_purchase,purchase.model_purchase_order,sf_base.group_purchase,1,1,1,0
access_purchase_order_group_purchase_director,access_purchase_order_group_purchase_director,purchase.model_purchase_order,sf_base.group_purchase_director,1,1,1,0
@@ -36,6 +146,9 @@ access_purchase_order_line_group_purchase,access_purchase_order_line_group_purch
access_purchase_order_line_group_purchase_director,access_purchase_order_line_group_purchase_director,purchase.model_purchase_order_line,sf_base.group_purchase_director,1,1,1,0
access_spindle_taper_type,spindle_taper_type,model_spindle_taper_type,base.group_user,1,1,1,1
access_sf_tool_groups_group_plan_dispatch,sf_tool_groups,model_sf_tool_groups,sf_base.group_plan_dispatch,1,0,0,0
access_sf_tool_groups_group_sf_tool_user,sf_tool_groups,model_sf_tool_groups,sf_base.group_sf_tool_user,1,1,1,1
access_purchase_order,purchase.order,purchase.model_purchase_order,sf_base.group_plan_dispatch,1,0,0,0
@@ -44,11 +157,32 @@ access_purchase_order_line,purchase.order.line,purchase.model_purchase_order_lin
access_account_move_line,account.move.line,account.model_account_move_line,sf_base.group_plan_dispatch,1,0,0,0
access_sf_machine_tool,sf_machine_tool,model_sf_machine_tool,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_machine_tool_type,sf_machine_tool_type,model_sf_machine_tool_type,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_machine_brand,sf_machine_brand,model_sf_machine_brand,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_machine_brand_tags,sf_machine_brand_tags,model_sf_machine_brand_tags,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_machine_control_system,sf_machine_control_system,model_sf_machine_control_system,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_processing_order,sf_processing_order,model_sf_processing_order,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_production_process,sf_production_process,model_sf_production_process,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_production_materials,sf_production_materials,model_sf_production_materials,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_materials_model,sf_materials_model,model_sf_materials_model,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_processing_technology,sf_processing_technology,model_sf_processing_technology,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_supplier_sort,sf_supplier_sort,model_sf_supplier_sort,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_production_process_parameter,sf_production_process_parameter,model_sf_production_process_parameter,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_production_process_category,sf_production_process_category,model_sf_production_process_category,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_machine_tool_category,sf_machine_tool_category,model_sf_machine_tool_category,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_cutting_tool_material,sf_cutting_tool_material,model_sf_cutting_tool_material,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_cutting_tool_type,sf_cutting_tool_type,model_sf_cutting_tool_type,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_functional_cutting_tool,sf_functional_cutting_tool,model_sf_functional_cutting_tool,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_functional_cutting_tool_model,sf_functional_cutting_tool_model,model_sf_functional_cutting_tool_model,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_fixture_material,sf_fixture_material,model_sf_fixture_material,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_fixture_materials_basic_parameters,sf_fixture_materials_basic_parameters,model_sf_fixture_materials_basic_parameters,sf_base.group_sf_mrp_user,1,1,0,0
access_mrp_production_group_sale_salemanager,mrp_production_group_sale_salemanager,mrp.model_mrp_production,sf_base.group_sale_salemanager,1,0,0,0
access_mrp_production_group_sale_director,mrp_production_group_sale_director,mrp.model_mrp_production,sf_base.group_sale_director,1,0,0,0
access_material_apply_group_plan_dispatch,material_apply,model_material_apply,sf_base.group_plan_dispatch,1,0,0,0
access_sf_machine_brand_tags_group_plan_dispatch,sf_machine_brand_tags,model_sf_machine_brand_tags,sf_base.group_plan_dispatch,1,0,0,0
access_ir_actions_act_window_group_plan_dispatch,ir.actions.act_window,base.model_ir_actions_act_window,sf_base.group_plan_dispatch,1,0,0,0
access_ir_actions_act_window_view_group_plan_dispatch,ir.actions.act_window.view,base.model_ir_actions_act_window_view,sf_base.group_plan_dispatch,1,0,0,0
access_sf_supplier_sort_group_plan_dispatch,sf.supplier.sort,model_sf_supplier_sort,sf_base.group_plan_dispatch,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_sf_machine_tool sf_machine_tool model_sf_machine_tool base.group_user 1 1 1 1 0
3 access_sf_machine_tool_type access_sf_machine_tool_admin sf_machine_tool_type sf_machine_tool_admin model_sf_machine_tool_type model_sf_machine_tool base.group_user base.group_system 1 1 1 1 0
4 access_sf_machine_brand access_sf_machine_tool_type sf_machine_brand sf_machine_tool_type model_sf_machine_brand model_sf_machine_tool_type base.group_user 1 1 1 1 0
5 access_sf_machine_brand_tags access_sf_machine_tool_type_admin sf_machine_brand_tags sf_machine_tool_type_admin model_sf_machine_brand_tags model_sf_machine_tool_type base.group_user base.group_system 1 1 1 1 0
6 access_sf_machine_control_system access_sf_machine_brand sf_machine_control_system sf_machine_brand model_sf_machine_control_system model_sf_machine_brand base.group_user 1 1 1 1 0
7 access_sf_processing_order access_sf_machine_brand_admin sf_processing_order sf_machine_brand_admin model_sf_processing_order model_sf_machine_brand base.group_user base.group_system 1 1 1 1 0
8 access_sf_production_process access_sf_machine_brand_tags sf_production_process sf_machine_brand_tags model_sf_production_process model_sf_machine_brand_tags base.group_user 1 1 1 1 0
9 access_sf_production_materials access_sf_machine_brand_tags_admin sf_production_materials sf_machine_brand_tags_admin model_sf_production_materials model_sf_machine_brand_tags base.group_user base.group_system 1 1 1 1 0
10 access_sf_materials_model access_sf_machine_control_system sf_materials_model sf_machine_control_system model_sf_materials_model model_sf_machine_control_system base.group_user 1 1 1 1 0
11 access_sf_processing_technology access_sf_machine_control_system_admin sf_processing_technology sf_machine_control_system_admin model_sf_processing_technology model_sf_machine_control_system base.group_user base.group_system 1 1 1 1 0
12 access_sf_supplier_sort access_sf_processing_order sf_supplier_sort sf_processing_order model_sf_supplier_sort model_sf_processing_order base.group_user 1 1 1 1 0
13 access_sf_production_process_parameter access_sf_processing_order_admin sf_production_process_parameter sf_processing_order_admin model_sf_production_process_parameter model_sf_processing_order base.group_user base.group_system 1 1 1 1 0
14 access_sf_production_process_category access_sf_production_process sf_production_process_category sf_production_process model_sf_production_process_category model_sf_production_process base.group_user 1 1 1 1 0
15 access_sf_machine_tool_category access_sf_production_process_admin sf_machine_tool_category sf_production_process_admin model_sf_machine_tool_category model_sf_production_process base.group_user base.group_system 1 1 1 1 0
16 access_sf_cutting_tool_material access_sf_production_materials sf_cutting_tool_material sf_production_materials model_sf_cutting_tool_material model_sf_production_materials base.group_user 1 1 1 1 0
17 access_sf_cutting_tool_type access_sf_production_materials_admin sf_cutting_tool_type sf_production_materials_admin model_sf_cutting_tool_type model_sf_production_materials base.group_user base.group_system 1 1 1 1 0
18 access_sf_functional_cutting_tool access_sf_materials_model sf_functional_cutting_tool sf_materials_model model_sf_functional_cutting_tool model_sf_materials_model base.group_user 1 1 1 1 0
19 access_sf_functional_cutting_tool_model access_sf_materials_model_admin sf_functional_cutting_tool_model sf_materials_model_admin model_sf_functional_cutting_tool_model model_sf_materials_model base.group_user base.group_system 1 1 1 1 0
20 access_sf_fixture_material access_sf_processing_technology sf_fixture_material sf_processing_technology model_sf_fixture_material model_sf_processing_technology base.group_user 1 1 1 1 0
21 access_sf_multi_mounting_type access_sf_processing_technology_admin sf_multi_mounting_type sf_processing_technology_admin model_sf_multi_mounting_type model_sf_processing_technology base.group_user base.group_system 1 1 1 1 0
22 access_sf_fixture_model access_sf_supplier_sort sf_fixture_model sf_supplier_sort model_sf_fixture_model model_sf_supplier_sort base.group_user 1 1 1 1 0
23 access_sf_supplier_sort_admin sf_supplier_sort_admin model_sf_supplier_sort base.group_system 1 1 1 0
24 access_sf_production_process_parameter sf_production_process_parameter model_sf_production_process_parameter base.group_user 1 1 1 0
25 access_sf_production_process_parameter_group_plan_director sf_production_process_parameter_group_plan_director model_sf_production_process_parameter sf_base.group_plan_director 1 0 0 0
26 access_sf_production_process_parameter_group_purchase_director sf_production_process_parameter_group_purchase_director model_sf_production_process_parameter sf_base.group_purchase_director 1 0 0 0
27 access_sf_production_process_parameter_group_sale_director sf_production_process_parameter_group_sale_director model_sf_production_process_parameter sf_base.group_sale_director 1 0 0 0
28 access_sf_production_process_parameter_admin sf_production_process_parameter_admin model_sf_production_process_parameter base.group_system 1 1 1 0
29 access_sf_production_process_category sf_production_process_category model_sf_production_process_category base.group_user 1 1 1 0
30 access_sf_production_process_category_admin sf_production_process_category_admin model_sf_production_process_category base.group_system 1 1 1 0
31 access_sf_machine_tool_category sf_machine_tool_category model_sf_machine_tool_category base.group_user 1 1 1 0
32 access_sf_machine_tool_category_admin sf_machine_tool_category_admin model_sf_machine_tool_category base.group_system 1 1 1 0
33 access_sf_cutting_tool_material sf_cutting_tool_material model_sf_cutting_tool_material base.group_user 1 1 1 0
34 access_sf_cutting_tool_material_admin sf_cutting_tool_material_admin model_sf_cutting_tool_material base.group_system 1 1 1 0
35 access_sf_cutting_tool_type sf_cutting_tool_type model_sf_cutting_tool_type base.group_user 1 1 1 0
36 access_sf_cutting_tool_type_admin sf_cutting_tool_type_admin model_sf_cutting_tool_type base.group_system 1 1 1 0
37 access_sf_cutting_tool_type_group_purchase_director sf_cutting_tool_type_group_purchase_director model_sf_cutting_tool_type sf_base.group_purchase_director 1 1 0 0
38 access_sf_cutting_tool_type_group_sale_director sf_cutting_tool_type_group_sale_director model_sf_cutting_tool_type sf_base.group_sale_director 1 1 0 0
39 access_sf_cutting_tool_type_group_plan_director sf_cutting_tool_type_group_plan_director model_sf_cutting_tool_type sf_base.group_plan_director 1 1 0 0
40 access_sf_functional_cutting_tool sf_functional_cutting_tool model_sf_functional_cutting_tool base.group_user 1 1 1 0
41 access_sf_functional_cutting_tool_admin sf_functional_cutting_tool_admin model_sf_functional_cutting_tool base.group_system 1 1 1 0
42 access_sf_functional_cutting_tool_model sf_functional_cutting_tool_model model_sf_functional_cutting_tool_model base.group_user 1 1 1 0
43 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
44 access_sf_fixture_material sf_fixture_material model_sf_fixture_material base.group_user 1 1 1 0
45 access_sf_fixture_material_admin sf_fixture_material_admin model_sf_fixture_material base.group_system 1 1 1 0
46 access_sf_fixture_materials_basic_parameters sf_fixture_materials_basic_parameters model_sf_fixture_materials_basic_parameters base.group_user 1 1 1 0
47 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
48 access_sf_multi_mounting_type sf_multi_mounting_type model_sf_multi_mounting_type base.group_user 1 1 1 0
49 access_sf_multi_mounting_type_admin sf_multi_mounting_type_admin model_sf_multi_mounting_type base.group_system 1 1 1 0
50 access_sf_fixture_model sf_fixture_model model_sf_fixture_model base.group_user 1 1 1 0
51 access_sf_fixture_model_admin sf_fixture_model_admin model_sf_fixture_model base.group_system 1 1 1 0
52 access_sf_functional_fixture_type sf_functional_fixture_type model_sf_functional_fixture_type base.group_user 1 1 1 1
53 access_sf_functional_fixture_type access_sf_functional_fixture_type_admin sf_functional_fixture_type sf_functional_fixture_type_admin model_sf_functional_fixture_type base.group_user base.group_system 1 1 1 1 0
54 access_sf_functional_fixture sf_functional_fixture model_sf_functional_fixture base.group_user 1 1 1 1 0
55 access_sf_sync_common access_sf_functional_fixture_admin sf_sync_common sf_functional_fixture_admin model_sf_sync_common model_sf_functional_fixture base.group_user base.group_system 1 1 1 1 0
56 access_sf_international_standards access_sf_sync_common sf_international_standards sf_sync_common model_sf_international_standards model_sf_sync_common base.group_user 1 1 1 1 0
57 access_material_apply access_sf_sync_common material_apply sf_sync_common_admin model_material_apply model_sf_sync_common base.group_user base.group_system 1 1 1 1 0
58 access_sf_cutting_tool_standard_library access_sf_international_standards sf_cutting_tool_standard_library sf_international_standards model_sf_cutting_tool_standard_library model_sf_international_standards base.group_user 1 1 1 1 0
59 access_sf_tool_materials_basic_parameters access_sf_international_standards_admin sf_tool_materials_basic_parameters sf_international_standards_admin model_sf_tool_materials_basic_parameters model_sf_international_standards base.group_user base.group_system 1 1 1 1 0
60 access_sf_cutting_speed access_material_apply sf_cutting_speed material_apply model_sf_cutting_speed model_material_apply base.group_user 1 1 1 1 0
61 access_sf_feed_per_tooth access_material_apply_admin sf_feed_per_tooth material_apply_admin model_sf_feed_per_tooth model_material_apply base.group_user base.group_system 1 1 1 1 0
62 access_sf_cutting_tool_standard_library sf_cutting_tool_standard_library model_sf_cutting_tool_standard_library base.group_user 1 1 1 0
63 access_sf_cutting_tool_standard_library_admin sf_cutting_tool_standard_library_admin model_sf_cutting_tool_standard_library base.group_system 1 1 1 0
64 access_sf_tool_materials_basic_parameters sf_tool_materials_basic_parameters model_sf_tool_materials_basic_parameters base.group_user 1 1 1 0
65 access_sf_tool_materials_basic_parameters_admin sf_tool_materials_basic_parameters_admin model_sf_tool_materials_basic_parameters base.group_system 1 1 1 0
66 access_sf_cutting_speed sf_cutting_speed model_sf_cutting_speed base.group_user 1 1 1 0
67 access_sf_cutting_speed_admin sf_cutting_speed_admin model_sf_cutting_speed base.group_system 1 1 1 0
68 access_sf_cutting_speed_group_purchase_director sf_cutting_speed_group_purchase_director model_sf_cutting_speed sf_base.group_purchase_director 1 1 1 0
69 access_sf_cutting_speed_group_sale_director sf_cutting_speed_group_sale_director model_sf_cutting_speed sf_base.group_sale_director 1 1 1 0
70 access_sf_cutting_speed_group_plan_director sf_cutting_speed_group_plan_director model_sf_cutting_speed sf_base.group_plan_director 1 1 1 0
71 access_sf_feed_per_tooth_group_purchase_director sf_feed_per_tooth_group_purchase_director model_sf_feed_per_tooth sf_base.group_purchase_director 1 1 0 0
72 access_sf_feed_per_tooth_group_sale_director sf_feed_per_tooth_group_sale_director model_sf_feed_per_tooth sf_base.group_sale_director 1 1 0 0
73 access_sf_feed_per_tooth_group_plan_director sf_feed_per_tooth_group_plan_director model_sf_feed_per_tooth sf_base.group_plan_director 1 1 0 0
74 access_sf_feed_per_tooth sf_feed_per_tooth model_sf_feed_per_tooth base.group_user 1 1 1 0
75 access_sf_feed_per_tooth_admin sf_feed_per_tooth_admin model_sf_feed_per_tooth base.group_system 1 1 1 0
76 access_sf_ramping_angle sf_ramping_angle model_sf_ramping_angle base.group_user 1 1 1 1
77 access_sf_ramping_angle_admin sf_ramping_angle_admin model_sf_ramping_angle base.group_system 1 1 1 1
78 access_sf_cutting_width_depth sf_cutting_width_depth model_sf_cutting_width_depth base.group_user 1 1 1 1
79 access_sf_cutting_width_depth_admin sf_cutting_width_depth_admin model_sf_cutting_width_depth base.group_system 1 1 1 1
80 access_sf_machine_tool sf_machine_tool model_sf_machine_tool sf_base.group_sf_mrp_user 1 0 0 0
81 access_sf_machine_tool_type sf_machine_tool_type model_sf_machine_tool_type sf_base.group_sf_mrp_user 1 0 0 0
82 access_sf_machine_brand sf_machine_brand model_sf_machine_brand sf_base.group_sf_mrp_user 1 0 0 0
83 access_sf_machine_brand_group_plan_director sf_machine_brand_group_plan_director model_sf_machine_brand sf_base.group_plan_director 1 0 0 0
84 access_sf_machine_brand_group_purchase_director sf_machine_brand_group_purchase_director model_sf_machine_brand sf_base.group_purchase_director 1 0 0 0
85 access_sf_machine_brand_group_sale_director sf_machine_brand_group_sale_director model_sf_machine_brand sf_base.group_sale_director 1 0 0 0
86 access_sf_machine_brand_tags sf_machine_brand_tags model_sf_machine_brand_tags base.group_user 1 1 1 1
87 access_sf_machine_control_system sf_machine_control_system model_sf_machine_control_system sf_base.group_sf_mrp_user 1 0 0 0
88 access_sf_processing_order sf_processing_order model_sf_processing_order sf_base.group_sf_mrp_user 1 0 0 0
89 access_sf_production_process sf_production_process model_sf_production_process sf_base.group_sf_mrp_user 1 0 0 0
90 access_sf_production_materials sf_production_materials model_sf_production_materials sf_base.group_sf_mrp_user 1 0 0 0
91 access_sf_production_materials_group_plan_director sf_production_materials_group_plan_director model_sf_production_materials sf_base.group_plan_director 1 1 0 0
92 access_sf_production_materials_group_purchase_director sf_production_materials_group_purchase_director model_sf_production_materials sf_base.group_purchase_director 1 1 0 0
93 access_sf_production_materials_group_sale_director sf_production_materials_group_sale_director model_sf_production_materials sf_base.group_sale_director 1 1 0 0
94 access_sf_materials_model sf_materials_model model_sf_materials_model sf_base.group_sf_mrp_user 1 0 0 0
95 access_sf_materials_model_group_plan_director sf_materials_model_group_plan_director model_sf_materials_model sf_base.group_plan_director 1 0 0 0
96 access_sf_materials_model_group_purchase_director sf_materials_model_group_purchase_director model_sf_materials_model sf_base.group_purchase_director 1 0 0 0
97 access_sf_materials_model_group_sale_director sf_materials_model_group_sale_director model_sf_materials_model sf_base.group_sale_director 1 0 0 0
98 access_sf_processing_technology sf_processing_technology model_sf_processing_technology sf_base.group_sf_mrp_user 1 0 0 0
99 access_sf_supplier_sort sf_supplier_sort model_sf_supplier_sort sf_base.group_sf_mrp_user 1 0 0 0
100 access_sf_production_process_parameter sf_production_process_parameter model_sf_production_process_parameter sf_base.group_sf_mrp_user 1 0 0 0
101 access_sf_production_process_category sf_production_process_category model_sf_production_process_category sf_base.group_sf_mrp_user 1 0 0 0
102 access_sf_machine_tool_category sf_machine_tool_category model_sf_machine_tool_category sf_base.group_sf_mrp_user 1 0 0 0
103 access_sf_cutting_tool_material_group_purchase_director sf_cutting_tool_material_group_purchase_director model_sf_cutting_tool_material sf_base.group_purchase_director 1 0 1 0
104 access_sf_cutting_tool_material_group_sale_director sf_cutting_tool_material_group_sale_director model_sf_cutting_tool_material sf_base.group_sale_director 1 0 1 0
105 access_sf_cutting_tool_material_group_plan_director sf_cutting_tool_material_group_plan_director model_sf_cutting_tool_material sf_base.group_plan_director 1 0 1 0
106 access_sf_cutting_tool_type sf_cutting_tool_type model_sf_cutting_tool_type sf_base.group_sf_mrp_user 1 0 0 0
107 access_sf_functional_cutting_tool sf_functional_cutting_tool model_sf_functional_cutting_tool sf_base.group_sf_mrp_user 1 0 0 0
108 access_sf_functional_cutting_tool_model sf_functional_cutting_tool_model model_sf_functional_cutting_tool_model sf_base.group_sf_mrp_user 1 0 0 0
109 access_sf_fixture_material sf_fixture_material model_sf_fixture_material sf_base.group_sf_mrp_user 1 0 0 0
110 access_sf_fixture_materials_basic_parameters sf_fixture_materials_basic_parameters model_sf_fixture_materials_basic_parameters sf_base.group_sf_mrp_user 1 0 0 0
111 access_sf_multi_mounting_type sf_multi_mounting_type model_sf_multi_mounting_type sf_base.group_sf_mrp_user 1 0 0 0
112 access_sf_fixture_model sf_fixture_model model_sf_fixture_model sf_base.group_sf_mrp_user 1 0 0 0
113 access_sf_functional_fixture_type sf_functional_fixture_type model_sf_functional_fixture_type sf_base.group_sf_mrp_user 1 0 0 0
114 access_sf_functional_fixture sf_functional_fixture model_sf_functional_fixture sf_base.group_sf_mrp_user 1 0 0 0
115 access_sf_sync_common sf_sync_common model_sf_sync_common sf_base.group_sf_mrp_user 1 0 0 0
116 access_sf_international_standards sf_international_standards model_sf_international_standards sf_base.group_sf_mrp_user 1 0 0 0
117 access_material_apply material_apply model_material_apply sf_base.group_sf_mrp_user 1 0 0 0
118 access_sf_cutting_tool_standard_library_group_sf_mrp_user sf_cutting_tool_standard_library_group_sf_mrp_user model_sf_cutting_tool_standard_library sf_base.group_sf_mrp_user 1 0 0 0
119 access_sf_cutting_tool_standard_library_group_purchase_director sf_cutting_tool_standard_library_group_purchase_director model_sf_cutting_tool_standard_library sf_base.group_purchase_director 1 0 1 0
120 access_sf_cutting_tool_standard_library_group_plan_director sf_cutting_tool_standard_library_group_plan_director model_sf_cutting_tool_standard_library sf_base.group_plan_director 1 0 1 0
121 access_sf_cutting_tool_standard_library_group_sale_director sf_cutting_tool_standard_library_group_sale_director model_sf_cutting_tool_standard_library sf_base.group_sale_director 1 0 1 0
122 access_sf_tool_groups sf_tool_groups model_sf_tool_groups sf_base.group_sf_mrp_user 1 0 0 0
123 access_sf_tool_materials_basic_parameters_group_sale_director sf_tool_materials_basic_parameters_group_sale_director model_sf_tool_materials_basic_parameters sf_base.group_sale_director 1 0 1 0
124 access_sf_tool_materials_basic_parameters_group_plan_director sf_tool_materials_basic_parameters_group_plan_director model_sf_tool_materials_basic_parameters sf_base.group_plan_director 1 0 1 0
125 access_sf_tool_materials_basic_parameters_group_purchase_director sf_tool_materials_basic_parameters_group_purchase_director model_sf_tool_materials_basic_parameters sf_base.group_purchase_director 1 0 1 0
126 access_sf_cutting_speed sf_cutting_speed model_sf_cutting_speed sf_base.group_sf_mrp_user 1 0 0 0
127 access_sf_cutting_speed_group_purchase sf_cutting_speed_group_purchase model_sf_cutting_speed sf_base.group_purchase 1 0 0 0
128 access_sf_cutting_speed_group_sale_salemanager sf_cutting_speed_group_sale_salemanager model_sf_cutting_speed sf_base.group_sale_salemanager 1 0 0 0
129 access_sf_feed_per_tooth sf_feed_per_tooth model_sf_feed_per_tooth sf_base.group_sf_mrp_user 1 0 0 0
130 access_sf_feed_per_tooth_group_purchase sf_feed_per_tooth_group_purchase model_sf_feed_per_tooth sf_base.group_purchase 1 0 0 0
131 access_sf_ramping_angle sf_ramping_angle model_sf_ramping_angle sf_base.group_sf_mrp_user 1 0 0 0
132 access_sf_ramping_angle_group_purchase sf_ramping_angle_group_purchase model_sf_ramping_angle sf_base.group_purchase 1 0 0 0
133 access_sf_cutting_width_depth sf_cutting_width_depth model_sf_cutting_width_depth sf_base.group_sf_mrp_user 1 0 0 0
134 access_sf_cutting_width_depth_group_purchase sf_cutting_width_depth_group_purchase model_sf_cutting_width_depth sf_base.group_purchase 1 0 0 0
135 access_maintenance_equipment_image maintenance_equipment_image model_maintenance_equipment_image base.group_user 1 1 1 1
136 access_purchase_order_group_purchase access_purchase_order_group_purchase purchase.model_purchase_order sf_base.group_purchase 1 1 1 0
137 access_purchase_order_group_purchase_director access_purchase_order_group_purchase_director purchase.model_purchase_order sf_base.group_purchase_director 1 1 1 0
138 access_purchase_order_line_group_purchase access_purchase_order_line_group_purchase purchase.model_purchase_order_line sf_base.group_purchase 1 1 1 0
139 access_purchase_order_line_group_purchase_director access_purchase_order_line_group_purchase_director purchase.model_purchase_order_line sf_base.group_purchase_director 1 1 1 0
140 access_spindle_taper_type spindle_taper_type model_spindle_taper_type base.group_user 1 1 1 1
141 access_sf_tool_groups_group_plan_dispatch sf_tool_groups model_sf_tool_groups sf_base.group_plan_dispatch 1 0 0 0
142 access_maintenance_equipment_image access_sf_tool_groups_group_sf_tool_user maintenance_equipment_image sf_tool_groups model_maintenance_equipment_image model_sf_tool_groups base.group_user sf_base.group_sf_tool_user 1 1 1 1
143 access_purchase_order_group_purchase access_purchase_order access_purchase_order_group_purchase purchase.order purchase.model_purchase_order sf_base.group_purchase sf_base.group_plan_dispatch 1 1 0 1 0 0
144 access_purchase_order_group_purchase_director access_res_partner access_purchase_order_group_purchase_director res.partner purchase.model_purchase_order base.model_res_partner sf_base.group_purchase_director sf_base.group_plan_dispatch 1 1 0 1 0 0
146 access_purchase_order_line_group_purchase_director access_account_move_line access_purchase_order_line_group_purchase_director account.move.line purchase.model_purchase_order_line account.model_account_move_line sf_base.group_purchase_director sf_base.group_plan_dispatch 1 1 0 1 0 0
147 access_spindle_taper_type access_sf_machine_tool spindle_taper_type sf_machine_tool model_spindle_taper_type model_sf_machine_tool base.group_user sf_base.group_sf_mrp_user 1 1 1 0 1 0
148 access_purchase_order access_sf_machine_tool_type purchase.order sf_machine_tool_type purchase.model_purchase_order model_sf_machine_tool_type sf_base.group_plan_dispatch sf_base.group_sf_mrp_user 1 0 1 0 0
149 access_sf_machine_brand sf_machine_brand model_sf_machine_brand sf_base.group_sf_mrp_user 1 1 0 0
150 access_sf_machine_brand_tags sf_machine_brand_tags model_sf_machine_brand_tags sf_base.group_sf_mrp_user 1 1 0 0
151 access_sf_machine_control_system sf_machine_control_system model_sf_machine_control_system sf_base.group_sf_mrp_user 1 1 0 0
152 access_res_partner access_sf_processing_order res.partner sf_processing_order base.model_res_partner model_sf_processing_order sf_base.group_plan_dispatch sf_base.group_sf_mrp_user 1 0 1 0 0
153 access_purchase_order_line access_sf_production_process purchase.order.line sf_production_process purchase.model_purchase_order_line model_sf_production_process sf_base.group_plan_dispatch sf_base.group_sf_mrp_user 1 0 1 0 0
154 access_account_move_line access_sf_production_materials account.move.line sf_production_materials account.model_account_move_line model_sf_production_materials sf_base.group_plan_dispatch sf_base.group_sf_mrp_user 1 0 1 0 0
157 access_sf_supplier_sort sf_supplier_sort model_sf_supplier_sort sf_base.group_sf_mrp_user 1 1 0 0
158 access_sf_production_process_parameter sf_production_process_parameter model_sf_production_process_parameter sf_base.group_sf_mrp_user 1 1 0 0
159 access_sf_production_process_category sf_production_process_category model_sf_production_process_category sf_base.group_sf_mrp_user 1 1 0 0
160 access_sf_machine_tool_category sf_machine_tool_category model_sf_machine_tool_category sf_base.group_sf_mrp_user 1 1 0 0
161 access_sf_cutting_tool_material sf_cutting_tool_material model_sf_cutting_tool_material sf_base.group_sf_mrp_user 1 1 0 0
162 access_sf_cutting_tool_type sf_cutting_tool_type model_sf_cutting_tool_type sf_base.group_sf_mrp_user 1 1 0 0
163 access_sf_functional_cutting_tool sf_functional_cutting_tool model_sf_functional_cutting_tool sf_base.group_sf_mrp_user 1 1 0 0
164 access_sf_functional_cutting_tool_model sf_functional_cutting_tool_model model_sf_functional_cutting_tool_model sf_base.group_sf_mrp_user 1 1 0 0
165 access_sf_fixture_material sf_fixture_material model_sf_fixture_material sf_base.group_sf_mrp_user 1 1 0 0
166 access_sf_fixture_materials_basic_parameters sf_fixture_materials_basic_parameters model_sf_fixture_materials_basic_parameters sf_base.group_sf_mrp_user 1 1 0 0
167 access_mrp_production_group_sale_salemanager mrp_production_group_sale_salemanager mrp.model_mrp_production sf_base.group_sale_salemanager 1 0 0 0
168 access_mrp_production_group_sale_director mrp_production_group_sale_director mrp.model_mrp_production sf_base.group_sale_director 1 0 0 0
169 access_material_apply_group_plan_dispatch material_apply model_material_apply sf_base.group_plan_dispatch 1 0 0 0
170 access_sf_machine_brand_tags_group_plan_dispatch sf_machine_brand_tags model_sf_machine_brand_tags sf_base.group_plan_dispatch 1 0 0 0
171 access_ir_actions_act_window_group_plan_dispatch ir.actions.act_window base.model_ir_actions_act_window sf_base.group_plan_dispatch 1 0 0 0
172 access_ir_actions_act_window_view_group_plan_dispatch ir.actions.act_window.view base.model_ir_actions_act_window_view sf_base.group_plan_dispatch 1 0 0 0
173 access_sf_supplier_sort_group_plan_dispatch sf.supplier.sort model_sf_supplier_sort sf_base.group_plan_dispatch 1 0 0 0
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>
<record model="ir.ui.view" id="sf_base_res_partner_kanban_view">
<field name="name">sf.base.res.partner.kanban</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.res_partner_kanban_view"/>
<field name="arch" type="xml">
<xpath expr="//kanban//templates//t//div//div//div//ul//li[last()]" position="after">
<li t-if="record.vat.raw_value" class="o_text_overflow"><field name="vat"/></li>
</xpath>
</field>
</record>
</data>
</odoo>

View File

@@ -32,30 +32,6 @@
</field>
</record>
<!-- <record id="sf_fixture_material_view_form" model="ir.ui.view">-->
<!-- <field name="name">夹具物料</field>-->
<!-- <field name="model">sf.fixture.material</field>-->
<!-- <field name="arch" type="xml">-->
<!-- <form string="夹具物料">-->
<!-- <sheet>-->
<!-- <group string="基本信息">-->
<!-- <group>-->
<!-- <field name="code"/>-->
<!-- </group>-->
<!-- <group>-->
<!-- <field name="name"/>-->
<!-- </group>-->
<!-- </group>-->
<!-- <group>-->
<!-- &lt;!&ndash; <group>&ndash;&gt;-->
<!-- <field name="remark"/>-->
<!-- &lt;!&ndash; </group>&ndash;&gt;-->
<!-- </group>-->
<!-- </sheet>-->
<!-- </form>-->
<!-- </field>-->
<!-- </record>-->
<record id="sf_fixture_material_view_act" model="ir.actions.act_window">
<field name="name">夹具物料</field>
<field name="type">ir.actions.act_window</field>
@@ -96,28 +72,6 @@
</field>
</record>
<!-- <record id="sf_multi_mounting_type_view_form" model="ir.ui.view">-->
<!-- <field name="name">联装类型</field>-->
<!-- <field name="model">sf.multi_mounting.type</field>-->
<!-- <field name="arch" type="xml">-->
<!-- <form string="联装类型">-->
<!-- <sheet>-->
<!-- <group string="基本信息">-->
<!-- <group>-->
<!-- <field name="code"/>-->
<!-- </group>-->
<!-- <group>-->
<!-- <field name="name"/>-->
<!-- </group>-->
<!-- </group>-->
<!-- <group>-->
<!-- <field name="remark"/>-->
<!-- </group>-->
<!-- </sheet>-->
<!-- </form>-->
<!-- </field>-->
<!-- </record>-->
<record id="sf_multi_mounting_type_view_act" model="ir.actions.act_window">
<field name="name">联装类型</field>
<field name="type">ir.actions.act_window</field>
@@ -151,9 +105,9 @@
context="{'group_by' : 'multi_mounting_type_id'}"/>
</group>
<filter name="filter_active" string="已归档" domain="[('active','=',False)]"/>
<searchpanel class="account_root">
<searchpanel>
<field name="fixture_material_id" icon="fa-filter"/>
<field name="brand_id" icon="fa-filter"/>
</searchpanel>
</search>
</field>
@@ -163,12 +117,17 @@
<field name="name">夹具型号</field>
<field name="model">sf.fixture.model</field>
<field name="arch" type="xml">
<tree string="夹具型号" create="0" edit="0" delete="1">
<tree string="夹具型号" create="0" edit="0" delete="0">
<field name="code"/>
<field name="name" string="名称"/>
<field name="brand_id"/>
<field name="name"/>
<field name="fixture_material_id"/>
<field name="multi_mounting_type_id"/>
<field name="create_uid" string="创建人"/>
<field name="create_date" string="创建时间"/>
<field name="write_uid" string="更新人"/>
<field name="write_date" string="更新时间"/>
<field name="active" string="状态" widget="boolean_toggle"/>
</tree>
</field>
</record>
@@ -181,15 +140,19 @@
<sheet>
<div class="oe_title">
<h1>
<field name="name"/>
<field name="name" required="1" placeholder="名称"/>
</h1>
</div>
<group>
<group>
<field name="code" force_save="1" readonly="1"/>
<field name="fixture_material_id" options="{'no_create': True}"/>
<field name="code" readonly="1" force_save="1"/>
<field name="fixture_material_id" options="{'no_create': True}" required="1"/>
<field name="fixture_material_type" invisible="1"/>
<field name="multi_mounting_type_id" options="{'no_create': True}"/>
<field name="multi_mounting_type_id" options="{'no_create': True}" required="1"/>
<field name="brand_id" required="1"
domain="[('tag_ids', '=', '夹具')]"
options="{'no_create': True}"/>
<field name="active" string="状态" widget="boolean_toggle"/>
</group>
<group>
<!-- <field name="upload_model_file" widget="many2many_binary"/>-->
@@ -198,67 +161,192 @@
</group>
</group>
<notebook>
<page string="参数"
attrs='{"invisible": [("fixture_material_type","not in",("气动夹具","转接板(锁板)夹具","磁吸夹具","虎钳夹具","零点卡盘"))]}'>
<group>
<group>
<field name="brand_id" options="{'no_create': True}"/>
<label for="length" string="尺寸(mm)"/>
<div class="test_model">
<label for="length" string="长"/>
<field name="length" class="o_address_zip"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="width" string="宽"/>
<field name="width" class="o_address_zip"
options="{'format': false}"/>
<span>&amp;nbsp;</span>
<label for="height" string="高"/>
<field name="height" class="o_address_zip"
options="{'format': false}"/>
</div>
<field name="weight"></field>
<field name="materials_model_id" options="{'no_create': True}"/>
<field name="clamping_way"
attrs='{"invisible": [("fixture_material_type","not in",("气动夹具","磁吸夹具","虎钳夹具"))]}'/>
<field name="port_type"
attrs='{"invisible": [("fixture_material_type","not in",("气动夹具","磁吸夹具","虎钳夹具"))]}'/>
<field name="through_hole_size"
attrs='{"invisible": [("fixture_material_type","!=",("转接板(锁板)夹具"))]}'/>
<field name="screw_size"
attrs='{"invisible": [("fixture_material_type","!=",("转接板(锁板)夹具"))]}'/>
<field name="driving_way"
attrs='{"invisible": [("fixture_material_type","not in",("虎钳夹具","零点卡盘"))]}'/>
<field name="apply_machine_tool_type_ids" widget="many2many_tags"
options="{'no_create': True}"
attrs='{"invisible": [("fixture_material_type","!=",("零点卡盘"))]}'/>
</group>
<group>
<label for="length" string="夹持工件最大尺寸(mm)"
attrs='{"invisible": [("fixture_material_type","=",("零点卡盘"))]}'/>
<div class="test_model"
attrs='{"invisible": [("fixture_material_type","=",("零点卡盘"))]}'>
<label for="clamp_workpiece_length_max" string="长"/>
<field name="clamp_workpiece_length_max" class="o_address_zip"
options="{'format': false}"
attrs="{'required': [('fixture_material_type', 'in',('气动夹具','转接板(锁板)夹具','磁吸夹具','虎钳夹具'))]}"/>
<span>&amp;nbsp;</span>
<label for="clamp_workpiece_width_max" string="宽"/>
<field name="clamp_workpiece_width_max" class="o_address_zip"
options="{'format': false}"
attrs="{'required': [('fixture_material_type', 'in',('气动夹具','转接板(锁板)夹具','磁吸夹具','虎钳夹具'))]}"/>
<span>&amp;nbsp;</span>
<label for="clamp_workpiece_height_max" string="高"/>
<field name="clamp_workpiece_height_max" class="o_address_zip"
options="{'format': false}"
attrs="{'required': [('fixture_material_type', 'in',('气动夹具','转接板(锁板)夹具','磁吸夹具','虎钳夹具'))]}"/>
</div>
<field name="clamp_workpiece_diameter_max" string="夹持工件最大直径(mm)"
attrs="{'invisible': [('fixture_material_type','=','零点卡盘')],'required': [('fixture_material_type', 'in',('气动夹具','转接板(锁板)夹具','磁吸夹具','虎钳夹具'))]}"/>
<field name="maximum_carrying_weight"></field>
<field name="maximum_clamping_force"></field>
</group>
</group>
<page string="基本参数">
<field name="zero_chuck_ids"
attrs="{'invisible': [('fixture_material_type', '!=', '零点卡盘')]}">
<tree editable="bottom" class="center" delete="0">
<field name="name"/>
<field name="length"/>
<field name="width"/>
<field name="height"/>
<field name="diameter"/>
<field name="weight"/>
<field name="orientation_dish_diameter"/>
<field name="clamping_diameter"/>
<field name="clamping_num"/>
<field name="chucking_power_max"/>
<field name="repeated_positioning_accuracy"/>
<field name="boolean_transposing_hole"/>
<field name="unlocking_method"/>
<field name="boolean_chip_blowing_function"/>
<field name="carrying_capacity_max"/>
<field name="materials_model_id" options="{'no_create': True}"
placeholder="请选择"/>
<field name="rigidity"/>
<field name="machine_tool_type_id" options="{'no_create': True}"
placeholder="请选择"/>
</tree>
</field>
<field name="zero_tray_ids"
attrs="{'invisible': [('fixture_material_type', '!=', '零点托盘')]}">
<tree editable="bottom" class="center" delete="0">
<field name="name"/>
<field name="length"/>
<field name="width"/>
<field name="height"/>
<field name="diameter"/>
<field name="weight"/>
<field name="clamping_diameter"/>
<field name="connector_diameter"/>
<field name="chucking_power_max"/>
<field name="repeated_positioning_accuracy"/>
<field name="boolean_chip_blowing_function"/>
<field name="way_to_install"/>
<field name="type_of_drive"/>
<field name="carrying_capacity_max"/>
<field name="materials_model_id" options="{'no_create': True}"
placeholder="请选择"/>
<field name="rigidity"/>
</tree>
</field>
<field name="pneumatic_fixture_ids"
attrs="{'invisible': [('fixture_material_type', '!=', '气动夹具')]}">
<tree editable="bottom" class="center" delete="0">
<field name="name"/>
<field name="length"/>
<field name="width"/>
<field name="height"/>
<field name="weight"/>
<field name="gripper_length_min"/>
<field name="gripper_width_min"/>
<field name="gripper_height_min"/>
<field name="gripper_length_max"/>
<field name="gripper_width_max"/>
<field name="gripper_height_max"/>
<field name="gripper_diameter_min"/>
<field name="gripper_diameter_max"/>
<field name="chucking_power_max"/>
<field name="carrying_capacity_max"/>
<field name="rated_air_pressure"/>
<field name="materials_model_id" options="{'no_create': True}"
placeholder="请选择"/>
<field name="rigidity"/>
<field name="interface_materials_model_id" options="{'no_create': True}"
placeholder="请选择"/>
<field name="type_of_drive"/>
</tree>
</field>
<field name="jaw_vice_fixture_ids"
attrs="{'invisible': [('fixture_material_type', '!=', '虎钳夹具')]}">
<tree editable="bottom" class="center" delete="0">
<field name="name"/>
<field name="length"/>
<field name="width"/>
<field name="height"/>
<field name="weight"/>
<field name="gripper_length_min"/>
<field name="gripper_width_min"/>
<field name="gripper_height_min"/>
<field name="gripper_length_max"/>
<field name="gripper_width_max"/>
<field name="gripper_height_max"/>
<field name="gripper_diameter_min"/>
<field name="gripper_diameter_max"/>
<field name="chucking_power_max"/>
<field name="carrying_capacity_max"/>
<field name="transverse_groove"/>
<field name="longitudinal_fitting_groove"/>
<field name="materials_model_id" options="{'no_create': True}"
placeholder="请选择"/>
<field name="rigidity"/>
<field name="interface_materials_model_id" options="{'no_create': True}"
placeholder="请选择"/>
<field name="type_of_drive"/>
</tree>
</field>
<field name="magnet_fixture_ids"
attrs="{'invisible': [('fixture_material_type', '!=', '磁吸夹具')]}">
<tree editable="bottom" class="center" delete="0">
<field name="name"/>
<field name="length"/>
<field name="width"/>
<field name="height"/>
<field name="height_tolerance_value"/>
<field name="weight"/>
<field name="gripper_length_min"/>
<field name="gripper_width_min"/>
<field name="gripper_height_min"/>
<field name="gripper_length_max"/>
<field name="gripper_width_max"/>
<field name="gripper_height_max"/>
<field name="gripper_diameter_min"/>
<field name="gripper_diameter_max"/>
<field name="rated_adsorption_force"/>
<field name="magnetic_field_height"/>
<field name="magnetic_pole_plate_grinding_allowance"/>
<field name="carrying_capacity_max"/>
<field name="materials_model_id" options="{'no_create': True}"
placeholder="请选择"/>
<field name="rigidity"/>
<field name="interface_materials_model_id" options="{'no_create': True}"
placeholder="请选择"/>
<field name="type_of_drive"/>
</tree>
</field>
<field name="adapter_board_fixture_ids"
attrs="{'invisible': [('fixture_material_type', '!=', '转接板(锁板)夹具')]}">
<tree editable="bottom" class="center" delete="0">
<field name="name"/>
<field name="length"/>
<field name="width"/>
<field name="height"/>
<field name="weight"/>
<field name="gripper_length_min"/>
<field name="gripper_width_min"/>
<field name="gripper_height_min"/>
<field name="gripper_length_max"/>
<field name="gripper_width_max"/>
<field name="gripper_height_max"/>
<field name="gripper_diameter_min"/>
<field name="gripper_diameter_max"/>
<field name="chucking_power_max"/>
<field name="carrying_capacity_max"/>
<field name="materials_model_id" options="{'no_create': True}"
placeholder="请选择"/>
<field name="rigidity"/>
<field name="screw_size"/>
<field name="via_hole_diameter"/>
<field name="type_of_drive"/>
</tree>
</field>
<field name="scroll_chuck_ids"
attrs="{'invisible': [('fixture_material_type', '!=', '三爪卡盘')]}">
<tree editable="bottom" class="center" delete="0">
<field name="name"/>
<field name="length"/>
<field name="width"/>
<field name="height"/>
<field name="diameter"/>
<field name="weight"/>
<field name="gripper_length_min"/>
<field name="gripper_width_min"/>
<field name="gripper_height_min"/>
<field name="gripper_length_max"/>
<field name="gripper_width_max"/>
<field name="gripper_height_max"/>
<field name="gripper_diameter_min"/>
<field name="gripper_diameter_max"/>
<field name="chucking_power_max"/>
<field name="carrying_capacity_max"/>
<field name="materials_model_id" options="{'no_create': True}"
placeholder="请选择"/>
<field name="rigidity"/>
<field name="mounting_hole_depth"/>
<field name="centering_diameter"/>
<field name="type_of_drive"/>
</tree>
</field>
</page>
</notebook>
</sheet>

View File

@@ -46,8 +46,6 @@
<field name="blade_blade_number"/>
<field name="main_included_angle" />
<field name="top_angle" />
<field name="blade_tip_dip_angle"/>
<field name="side_cutting_edge_angle"/>
<field name="thread_model"/>
<field name="thread_num" />
<field name="blade_tip_height_tolerance" />
@@ -73,7 +71,7 @@
<field name="is_cooling_hole" />
<field name="locating_slot_code" />
<field name="installing_structure"/>
<field name="blade_ids"/>
<field name="blade_id"/>
<field name="tool_shim" />
<field name="cotter_pin" />
<field name="pressing_plate"/>

View File

@@ -92,5 +92,12 @@
action="action_maintenance_equipment_image"
sequence="5"/>
<menuitem
id="menu_sf_tool_groups"
name="刀具组"
parent="menu_sf_cutting_tool"
action="sf_tool_groups_view_act"
sequence="10"/>
</data>
</odoo>

View File

@@ -149,12 +149,20 @@
options="{'format': false}"/>
<span>(mm)&amp;nbsp;</span>
</div>
<field name="ramping_angle_ids" widget="many2many_tags"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/>
<field name="cutter_bar_ids" widget="many2many_tags"
options="{'no_create': True}" search="[]"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')]}"/>
<field name="cutter_pad_ids" widget="many2many_tags"
options="{'no_create': True}" search="[]"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')]}"/>
<field name="handle_id" placeholder="请选择"
options="{'no_create': True}" search="[]"
attrs="{'invisible': [('cutting_tool_type', '!=', '夹头')]}"/>
<field name="chuck_id" placeholder="请选择"
options="{'no_create': True}" search="[]"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')]}"/>
</group>
<group>
<field name="material_model_id" placeholder="请选择" string="材质"
@@ -195,7 +203,7 @@
<group string="走刀方向">
<field name="cutting_direction_ids" string="" widget="custom_many2many_checkboxes"/>
</group>
<group string="适合冷却">
<group string="适合冷却方式">
<field name="suitable_coolant_ids" string="" widget="custom_many2many_checkboxes"/>
</group>
</group>
@@ -221,7 +229,7 @@
<field name="pitch"/>
<field name="blade_width"/>
<field name="blade_depth"/>
<field name="cutting_depth"/>
<field name="cut_depth_max"/>
</tree>
</field>
@@ -232,24 +240,22 @@
<field name="name"/>
<field name="length"/>
<field name="thickness"/>
<field name="width"/>
<field name="cutting_blade_length"/>
<field name="relief_angle" class="du"/>
<field name="blade_tip_circular_arc_radius"/>
<field name="inscribed_circle_diameter" class="diameter"/>
<field name="install_aperture_diameter" class="diameter"/>
<field name="pitch"/>
<field name="blade_tip_circular_arc_radius" string="刀尖圆弧半径RE(mm)"/>
<field name="cutting_blade_length"/>
<field name="relief_angle" class="du"/>
<field name="chip_breaker_groove" placeholder="请选择"/>
<field name="chip_breaker_type_code"/>
<field name="blade_teeth_model" placeholder="请选择"/>
<field name="cutting_depth" string="最大切削深度(mm)"/>
<field name="thread_model" placeholder="请选择"/>
<field name="pitch"/>
<field name="thread_num"/>
<field name="cut_depth_max"/>
<field name="blade_blade_number" string="刃数(个)"/>
<field name="blade_width" string="刃宽(mm)"/>
<field name="main_included_angle"/>
<field name="top_angle"/>
<field name="blade_tip_dip_angle"/>
<field name="side_cutting_edge_angle"/>
<field name="thread_model" placeholder="请选择"/>
<field name="thread_num"/>
<field name="blade_tip_height_tolerance"/>
<field name="inscribed_circle_tolerance"/>
<field name="thickness_tolerance"/>
@@ -260,29 +266,29 @@
<tree editable="bottom" class="center" delete="1">
<field name="cutting_tool_type" invisible="1"/>
<field name="name"/>
<field name="height"/>
<field name="width"/>
<field name="total_length"/>
<field name="blade_height"/>
<field name="blade_width"/>
<field name="blade_length"/>
<field name="width"/>
<field name="height"/>
<field name="knife_head_length"/>
<field name="knife_head_width"/>
<field name="knife_head_height"/>
<field name="blade_diameter" class="diameter"/>
<field name="cutter_arbor_diameter" class="diameter"/>
<field name="main_included_angle" class="du"/>
<field name="relief_angle" class="du"/>
<field name="cutting_depth" string="最大切削深度(mm)"/>
<field name="cutting_blade_length"/>
<field name="cut_depth_max"/>
<field name="min_machining_aperture" class="diameter"/>
<field name="install_blade_tip_num"/>
<field name="cutting_blade_model"/>
<field name="is_cooling_hole" />
<field name="locating_slot_code"/>
<field name="installing_structure"/>
<field name="blade_ids" widget="many2many_tags" placeholder="请选择"/>
<field name="blade_id" placeholder="请选择"/>
<field name="tool_shim"/>
<field name="cotter_pin"/>
<field name="pressing_plate"/>
<field name="screw"/>
<field name="spanner"/>
<field name="is_cooling_hole"/>
<field name="locating_slot_code"/>
</tree>
</field>
@@ -297,14 +303,14 @@
<field name="interface_diameter" class="diameter"/>
<field name="total_length"/>
<field name="blade_length"/>
<field name="cutting_depth" string="最大切削深度(mm)"/>
<field name="cutting_blade_length" string="切削刃长度(mm)"/>
<field name="cut_depth_max"/>
<field name="main_included_angle" class="du"/>
<field name="installing_structure"/>
<field name="blade_ids" widget="many2many_tags" placeholder="请选择"/>
<field name="blade_id" placeholder="请选择"/>
<field name="screw"/>
<field name="spanner"/>
<field name="cutting_blade_model"/>
<field name="is_cooling_hole" />
<field name="is_cooling_hole"/>
<field name="locating_slot_code"/>
</tree>
</field>
@@ -314,27 +320,25 @@
<tree editable="bottom" class="center" delete="1">
<field name="cutting_tool_type" invisible="1"/>
<field name="name"/>
<field name="taper_shank_model"/>
<field name="total_length"/>
<field name="shank_length"/>
<field name="shank_diameter" class="diameter"/>
<field name="flange_shank_length"/>
<field name="handle_external_diameter" class="diameter"/>
<field name="handle_inside_diameter" class="diameter"/>
<field name="flange_diameter"/>
<field name="diameter_slip_accuracy"/>
<field name="dynamic_balance_class"/>
<field name="min_clamping_diameter" class="diameter"/>
<field name="max_clamping_diameter" class="diameter"/>
<field name="clamping_mode"/>
<field name="max_load_capacity"/>
<field name="taper" class="du"/>
<field name="tool_changing_time"/>
<field name="standard_rotate_speed"/>
<field name="max_rotate_speed"/>
<field name="diameter_slip_accuracy"/>
<field name="fit_chuck_size"/>
<field name="nut"/>
<field name="spanner" string="适配锁紧扳手型号"/>
<field name="clamping_mode"/>
<field name="tool_changing_time"/>
<field name="cooling_model"/>
<field name="is_rough_machining" />
<field name="is_finish_machining" />
<field name="is_quick_cutting" />
<field name="is_drill_hole" />
<field name="is_safe_lock" />
<field name="screw"/>
<field name="spanner"/>
<field name="is_quick_cutting"/>
<field name="is_safe_lock"/>
</tree>
</field>
<field name="chuck_basic_parameters_ids"
@@ -342,21 +346,17 @@
<tree editable="bottom" class="center" delete="1">
<field name="cutting_tool_type" invisible="1"/>
<field name="name"/>
<field name="er_size_model"/>
<field name="er_size_model" string="尺寸型号"/>
<field name="min_clamping_diameter" class="diameter" required="1"/>
<field name="max_clamping_diameter" class="diameter"/>
<field name="total_length"/>
<field name="outer_diameter" class="diameter"/>
<field name="inner_diameter" class="diameter"/>
<field name="total_length"/>
<field name="taper" class="du"/>
<field name="run_out_accuracy"/>
<field name="top_diameter" class="diameter"/>
<field name="weight"/>
<field name="clamping_mode"/>
<field name="clamping_length"/>
<field name="clamping_tolerance"/>
<field name="max_load_capacity"/>
<field name="handle_ids" widget="many2many_tags" placeholder="请选择"/>
<field name="cooling_jacket"/>
</tree>
</field>
@@ -364,23 +364,20 @@
<page string="切削速度Vc"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}">
<field name="cutting_speed_ids">
<tree editable="bottom" class="center" delete="1">
<tree editable="bottom" class="center mrs_cutting_speed_tree" delete="1">
<field name="execution_standard_id" placeholder="请选择" required="1"/>
<field name="material_code" readonly="1"/>
<field name="material_id" placeholder="请选择"
attrs="{'readonly': [('execution_standard_id', '=', False)], 'required': [('execution_standard_id', '!=', False)]}"/>
<field name="material_name_id" placeholder="请选择"
attrs="{'readonly': [('execution_standard_id', '=', False)],
'required': [('execution_standard_id', '!=', False)]}"/>
<field name="material_grade" readonly="1"/>
<field name="tensile_strength" readonly="1"/>
<field name="hardness" readonly="1"/>
<field name="slope_milling_angle" widget="du"/>
<field name="cutting_speed_n1"/>
<field name="cutting_speed_n2"/>
<field name="cutting_speed_n3"/>
<field name="cutting_speed_n4"/>
<field name="cutting_speed_n5"/>
<field name="rough_machining"/>
<field name="precision_machining"/>
<field name="application" placeholder="请选择" required="1"/>
<field name="ability_feature_library"/>
<field name="cutting_width_depth_id"/>
<field name="process_capability"/>
<field name="cutting_speed"/>
</tree>
</field>
</page>
@@ -389,33 +386,18 @@
<field name="feed_per_tooth_ids"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具'))]}">
<tree editable="bottom" class="center" create="0" delete="0">
<field name="cutting_speed"/>
<field name="blade_diameter"/>
<field name="feed_per_tooth" required="1"/>
</tree>
</field>
<field name="feed_per_tooth_ids_2"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具'))]}">
<tree editable="bottom" class="center" create="0" delete="0">
<field name="machining_method"/>
<field name="cutting_width_depth_id"/>
<field name="materials_type_id"/>
<field name="blade_diameter"/>
<field name="feed_per_tooth" required="1"/>
<field name="feed_per_tooth"/>
</tree>
</field>
<field name="feed_per_tooth_ids_3"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片'))]}">
<tree editable="bottom" class="center" create="0" delete="0">
<field name="cutting_speed"/>
<field name="feed_per_tooth" required="1"/>
</tree>
</field>
<field name="feed_per_tooth_ids_4"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片'))]}">
<tree editable="bottom" class="center" create="0" delete="0">
<field name="machining_method"/>
<field name="cutting_width_depth_id"/>
<field name="materials_type_id"/>
<field name="feed_per_tooth" required="1"/>
<field name="feed_per_tooth"/>
</tree>
</field>
</page>
@@ -508,34 +490,53 @@
<field name="domain">[]</field>
</record>
<!-- ================================================刀具基础参数================================================ -->
<!-- <record id="view_sf_tool_materials_basic_parameters_tree" model="ir.ui.view">-->
<!-- <field name="name">sf.tool.materials.basic.parameters.tree</field>-->
<!-- <field name="model">sf.tool.materials.basic.parameters</field>-->
<!-- <field name="arch" type="xml">-->
<!-- <tree string="基础参数" delete="0" create="0">-->
<!-- <field name="total_length" />-->
<!-- <field name="blade_number" />-->
<!-- <field name="neck_diameter"/>-->
<!-- <field name="neck_length"/>-->
<!-- <field name="handle_diameter" />-->
<!-- <field name="handle_length" />-->
<!-- <field name="blade_tip_diameter"/>-->
<!-- <field name="blade_tip_working_size"/>-->
<!-- <field name="blade_tip_taper" />-->
<!-- <field name="blade_diameter" />-->
<!-- <field name="blade_length"/>-->
<!-- <field name="blade_helix_angle"/>-->
<!-- <field name="blade_width" />-->
<!-- <field name="blade_width" />-->
<!-- <field name="pitch"/>-->
<!-- <field name="cutting_depth"/>-->
<!-- </tree>-->
<!-- </field>-->
<!-- </record>-->
<!-- ================================================刀具================================================ -->
<record id="sf_tool_groups_tree" model="ir.ui.view">
<field name="name">刀具组</field>
<field name="model">sf.tool.groups</field>
<field name="arch" type="xml">
<tree editable="bottom">
<field name="name"/>
<field name="equipment_ids" widget="many2many_tags"/>
<field name="remark"/>
<field name="create_uid" string="创建人"/>
<field name="create_date" string="创建时间"/>
</tree>
</field>
</record>
<record id="sf_tool_groups_view_act" model="ir.actions.act_window">
<field name="name">刀具组</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sf.tool.groups</field>
<field name="view_mode">tree</field>
</record>
<!-- ================================================刀具基础参数================================================ -->
<!-- <record id="view_sf_tool_materials_basic_parameters_tree" model="ir.ui.view">-->
<!-- <field name="name">sf.tool.materials.basic.parameters.tree</field>-->
<!-- <field name="model">sf.tool.materials.basic.parameters</field>-->
<!-- <field name="arch" type="xml">-->
<!-- <tree string="基础参数" delete="0" create="0">-->
<!-- <field name="total_length" />-->
<!-- <field name="blade_number" />-->
<!-- <field name="neck_diameter"/>-->
<!-- <field name="neck_length"/>-->
<!-- <field name="handle_diameter" />-->
<!-- <field name="handle_length" />-->
<!-- <field name="blade_tip_diameter"/>-->
<!-- <field name="blade_tip_working_size"/>-->
<!-- <field name="blade_tip_taper" />-->
<!-- <field name="blade_diameter" />-->
<!-- <field name="blade_length"/>-->
<!-- <field name="blade_helix_angle"/>-->
<!-- <field name="blade_width" />-->
<!-- <field name="blade_width" />-->
<!-- <field name="pitch"/>-->
<!-- <field name="cutting_depth"/>-->
<!-- </tree>-->
<!-- </field>-->
<!-- </record>-->
</odoo>

View File

@@ -33,6 +33,8 @@ class Sf_Bf_Connect(http.Controller):
aa = request.env['sale.order'].sudo().search([('name', '=', order_id.name)])
logging.info('get_bfm_process_or===================================:%s' % order_id.name)
aa.default_code = kw['order_number']
if kw.get('logistics_way'):
aa.logistics_way = kw['logistics_way']
logging.info('get_bfm_process_order_listaaaaaaaaaaaaaaaaaaaaaaaaaaaa================:%s' % aa.default_code)
for item in bfm_process_order_list:
product = request.env['product.template'].sudo().product_create(product_id, item, order_id,

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
logging.info(datas)
if 'HTTP_TOKEN' in datas:
_logger.info('token:%s' % datas['HTTP_TOKEN'])
# 查询密钥
@@ -40,6 +41,7 @@ class Http(models.AbstractModel):
raise AuthenticationError('请求已过期')
check_str = '%s%s%s' % (datas['HTTP_TOKEN'], post_time, factory_secret.sf_secret_key)
check_sf_str = hashlib.sha1(check_str.encode('utf-8')).hexdigest()
_logger.info('check_str:%s' % check_sf_str)
if check_sf_str != datas['HTTP_CHECKSTR']:
raise AuthenticationError('数据校验不通过')
else:

View File

@@ -42,6 +42,25 @@ class JdEclp(models.Model):
# bill_show = fields.Binary(string='物流面单展示', readonly=True, related='self.bill.datas')
bill_show = fields.Binary(string='物流面单展示', readonly=True)
check_out = fields.Char(string='查询是否为出库单', compute='_check_is_out')
# 是否下了快递单
is_bill = fields.Boolean(string='是否下了快递单', default=False)
# 物流状态
logistics_status = fields.Selection([('0', '未下单'), ('1', '已下单'), ('2', '已获取物流面单'), ('3', '已打印物流单')],
string='物流状态', default='0', readonly=True)
logistics_way = fields.Selection([('自提', '自提'), ('到付', '到付'), ('在线支付', '在线支付')], string='物流方式', readonly=True)
def button_validate(self):
"""
重写出库方法,获取物流面单
"""
res = super(JdEclp, self).button_validate()
if self.check_out == 'OUT':
if self.logistics_way != '自提':
if self.logistics_status != '2':
raise ValidationError('非自提订单,必须先下物流单,并获取物流面单后才可出库!')
return res
@api.depends('name')
def _check_is_out(self):
@@ -68,6 +87,7 @@ class JdEclp(models.Model):
# if self.receiverName and self.receiverMobile and self.receiverProvinceName and self.receiverCityName and
# self.receiverCountyName and self.receiverTownName:
sale_order_id = self.env['sale.order'].search([('name', '=', self.origin)])
self.logistics_way = sale_order_id.logistics_way
# stock_picking_type_id = self.enc['stock.picking.type'].search([('picking_type_id', '=', '')])
# if sale_order_id.address_of_delivery != False:
# if not sale_order_id:
@@ -141,6 +161,8 @@ class JdEclp(models.Model):
response = requests.post(url2, json=json2, data=None)
# _logger.info('调用成功2', response.json()['result']['wbNo'])
self.carrier_tracking_ref = response.json()['result']['wbNo']
self.is_bill = True
self.logistics_status = '1'
# else:
# raise UserError("选择京东物流才能下单呦")
@@ -180,3 +202,4 @@ class JdEclp(models.Model):
# 'model_name': 'stock.picking',
})
_logger.info(attachment)
self.logistics_status = '2'

View File

@@ -9,8 +9,8 @@
<xpath expr="//page[last()]" position="before">
<page string="token和密钥">
<group>
<field name="sf_token"/>
<field name="sf_secret_key"/>
<field name="sf_token" readonly="1"/>
<field name="sf_secret_key" readonly="1"/>
</group>
</page>
</xpath>

View File

@@ -12,16 +12,30 @@
</field>
</record>
<!-- <record id="sf_bf_connect_vpicktree" model="ir.ui.view"> -->
<!-- <field name="name">sf.bf.connect.vpicktree</field> -->
<!-- <field name="model">stock.picking</field> -->
<!-- <field name="inherit_id" ref="stock.vpicktree"/> -->
<!-- <field name="arch" type="xml"> -->
<!-- <field name="state" position="after"> -->
<!-- <field name="logistics_status" string="物流状态"/> -->
<!-- </field> -->
<!-- </field> -->
<!-- </record> -->
<record id="custom_view_picking_form" model="ir.ui.view">
<field name="name">物流</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_form"/>
<field name="arch" type="xml">
<xpath expr="//form//header//button[@name='action_assign']" position="after">
<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"
attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>
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')]}"/>
attrs="{'invisible': ['|', '|', '|', '|', ('check_out', '!=', 'OUT'), ('state', '!=', 'assigned'), ('logistics_status', '=', '2'), ('is_bill', '=', False), ('logistics_way', '=', '自提')]}"/>
</xpath>
</field>
</record>
@@ -31,6 +45,12 @@
<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>
<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')]}"/>
@@ -48,6 +68,7 @@
<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"/>
</xpath>
<xpath expr="//group//field[@name='group_id']" position="after">
<field name="bill_show" widget="pdf_viewer" attrs="{'invisible': [('check_out', '!=', 'OUT')]}"/>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data noupdate="1">
<data>
<record id="product_category_embryo_sf" model="product.category">
<field name="name">坯料</field>
<field name="type">坯料</field>
@@ -35,10 +35,15 @@
<field name="type">功能刀具</field>
</record>
<record id="res_partner_bfm" model="res.partner">
<field name="name">业务平台</field>
<!-- <field name="company_id" ref="base.main_company"/>-->
</record>
<!-- <record id="res_partner_bfm" model="res.partner">-->
<!-- <field name="name">业务平台</field>-->
<!-- &lt;!&ndash; <field name="company_id" ref="base.main_company"/>&ndash;&gt;-->
<!-- </record>-->
<!-- <record id="res_users_bfm" model="res.users">-->
<!-- <field name="name">业务平台</field>-->
<!-- <field name="partner_id" ref="res_partner_bfm"/>-->
<!-- </record>-->
<record id="product_functional_tool_sf" model="product.product">
<field name="name">功能刀具</field>

View File

@@ -13,6 +13,18 @@
</field>
</record>
<record id="product_template_tree_view_inherit_sf" model="ir.ui.view">
<field name="name">product.template.tree.inherit.sf</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_tree_view"/>
<field name="arch" type="xml">
<tree position="attributes">
<attribute name="delete">False</attribute>
</tree>
</field>
</record>
<record id="view_template_property_form" model="ir.ui.view">
<field name="name">product.template.stock.property.form.inherit</field>
<field name="model">product.template</field>

View File

@@ -0,0 +1,35 @@
// 因为表格可以拖动设置宽度所以需要用js设置初始宽度
function setBasicParamTableWidth() {
const basicParamDom = $('.fixTableCss')
let dom = []
try {
dom = basicParamDom.find('table').find('thead').children().children()
} catch {
dom = []
}
if (!dom) return
dom.each(function () {
if ($(this).hasClass('row_no') >= 0) { // 序号列
// 不设置 通过css设置
}
const text = $(this).text()
$(this).find('span').removeClass('text-truncate')
if (text.length > 5) {
$(this).width('150px')
} else if (text.length == 5) {
$(this).width('100px')
} else if (text.length == 4) {
$(this).width('80px')
} else if (text.length == 3) {
$(this).width('65px')
} else if (text.length == 2) {
$(this).width('50px')
}
})
}
setTimeout(setBasicParamTableWidth, 500)

View File

@@ -7,7 +7,11 @@
<field name="inherit_id" ref="sf_sale.view_product_template_form_inherit_sf"/>
<field name="arch" type="xml">
<field name="invoice_policy" position="after">
<<<<<<< HEAD
<field name='categ_id'/>
=======
<field name='categ_id' attrs="{'readonly': [('id', '!=', False)]}"/>
>>>>>>> 8695a66e3d9be860f778caba8db5500885f4548f
<field name='is_bfm' invisible="1"/>
<field name='categ_type' invisible="1"/>
<field name="upload_model_file"
@@ -18,6 +22,7 @@
<field name='cutting_tool_type' invisible="1"/>
<field name="fixture_material_type" invisible="1"/>
<field name="embryo_model_type_id" string="模型类型"
<<<<<<< HEAD
attrs="{'invisible': ['|',('categ_type', '!=', '坯料'),('categ_type', '=', False)]}"/>
<field name="materials_id" string="材料" placeholder="请选择"
attrs="{'invisible': [('categ_type', 'not in', ['成品','坯料', '原材料'])]}"/>
@@ -34,14 +39,38 @@
domain="[('cutting_tool_material_id','=',cutting_tool_material_id)]"/>
<field name="specification_id" placeholder="请选择" options='{"limit": 1}'
attrs="{'invisible': [('categ_type', '!=', '刀具')]}"
=======
attrs="{'invisible': ['|',('categ_type', '!=', '坯料'),('categ_type', '=', False)],'readonly': [('id', '!=', False)]}"/>
<field name="materials_id" string="材料" placeholder="请选择"
attrs="{'invisible': [('categ_type', 'not in', ['成品','坯料', '原材料'])],'readonly': [('id', '!=', False)]}"/>
<field name="materials_type_id" string="型号" placeholder="请选择"
domain="[('materials_id', '=', materials_id)]"
attrs="{'invisible': [('categ_type', 'not in', ['成品','坯料', '原材料'])],'readonly': [('id', '!=', False)]}"/>
<field name="server_product_process_parameters_id" string="表面工艺参数"
options="{'no_create': True}"
attrs="{'invisible': ['|',('categ_type', '!=', '表面工艺'),('categ_type', '=', False)]}"/>
<field name="cutting_tool_material_id"
attrs="{'invisible': [('categ_type', '!=', '刀具')],'readonly': [('id', '!=', False)]}"
placeholder="请选择"/>
<field name="cutting_tool_model_id" placeholder="请选择"
attrs="{'invisible': [('categ_type', '!=', '刀具')],'readonly': [('id', '!=', False)]}"
domain="[('cutting_tool_material_id','=',cutting_tool_material_id)]"/>
<field name="specification_id" placeholder="请选择"
attrs="{'invisible': [('categ_type', '!=', '刀具')],'readonly': [('id', '!=', False)]}"
>>>>>>> 8695a66e3d9be860f778caba8db5500885f4548f
domain="[('standard_library_id','=',cutting_tool_model_id)]"/>
<field name="fixture_material_id" attrs="{'invisible': [('categ_type', '!=', '夹具')]}"
placeholder="请选择"/>
<field name="fixture_model_id" string="型号" placeholder="请选择"
attrs="{'invisible': [('categ_type', '!=', '夹具')]}"
attrs="{'invisible': [('categ_type', '!=', '夹具')],'required': [('categ_type', '=', '夹具')]}"
domain="[('fixture_material_id','=',fixture_material_id)]"/>
<<<<<<< HEAD
=======
<field name="specification_fixture_id" string="规格" placeholder="请选择"
attrs="{'invisible': [('categ_type', '!=', '夹具')]}"
domain="[('fixture_model_id','=',fixture_model_id)]"/>
>>>>>>> 8695a66e3d9be860f778caba8db5500885f4548f
</field>
<xpath expr="//label[@for='volume']" position="before">
<label for="length" string="尺寸"
attrs="{'invisible':[('product_variant_count', '>', 1), ('is_product_variant', '=', False)]}"/>
@@ -85,8 +114,7 @@
</field>
</record>
<record model="ir.ui.view" id="view_product_template_only_form_inherit_sf">
<record model="ir.ui.view" id="view_product_template_form_inherit_sf">
<field name="name">product.template.only.form.inherit.sf</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_only_form_view"/>
@@ -97,6 +125,7 @@
<field name="default_code" position="replace">
<field name='default_code' invisible="1"/>
</field>
<<<<<<< HEAD
<xpath expr="//page[@name='variants']" position="before">
<page string="刀具物料参数" attrs="{'invisible': [('categ_type', '!=', '刀具')]}">
<group>
@@ -115,15 +144,51 @@
<field name="cutting_tool_run_out_accuracy_min" class="o_address_zip"
options="{'format': false}"
attrs="{'invisible': [('cutting_tool_type','!=','整体式刀具')]}"/>
=======
</field>
</record>
<record model="ir.ui.view" id="view_product_template_only_form_inherit_sf">
<field name="name">product.template.only.form.inherit.sf</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="sf_dlm_management.view_sale_product_template_form_inherit_sf"/>
<field name="arch" type="xml">
<xpath expr="//page[1]" position="after">
<page string="刀具物料参数"
attrs="{'invisible': [('categ_type', '!=', '刀具')],'readonly': [('id', '!=', False)]}">
<group>
<group attrs="{'invisible': [('categ_type', '!=', '刀具')]}" col="1">
<field name="cutting_tool_type_id" options="{'no_create': True}"
placeholder="请选择" attrs="{'readonly': [('id', '!=', False)]}"/>
<field name="brand_id" options="{'no_create': True}" placeholder="请选择"
attrs="{'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_total_length"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','夹头','刀柄'))],'readonly': [('id', '!=', False)]}"/>
<field name="tool_hardness" string="硬度(hrc)"
attrs="{'readonly': [('id', '!=', False)]}"/>
<label for="cutting_tool_run_out_accuracy_min" string="端跳精度"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')],'readonly': [('id', '!=', False)]}"/>
<div class="o_address_format"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')],'readonly': [('id', '!=', False)]}">
<label for="cutting_tool_run_out_accuracy_min" string="最小"/>
<field name="cutting_tool_run_out_accuracy_min" class="o_address_zip"
options="{'format': false}"
attrs="{'invisible': [('cutting_tool_type','!=','整体式刀具')],'readonly': [('id', '!=', False)]}"/>
>>>>>>> 8695a66e3d9be860f778caba8db5500885f4548f
<span>(mm)&amp;nbsp;</span>
<label for="cutting_tool_run_out_accuracy_max" string="最大"/>
<field name="cutting_tool_run_out_accuracy_max" class="o_address_zip"
options="{'format': false}"
<<<<<<< HEAD
attrs="{'invisible': [('cutting_tool_type','!=','整体式刀具')]}"/>
=======
attrs="{'invisible': [('cutting_tool_type','!=','整体式刀具')],'readonly': [('id', '!=', False)]}"/>
>>>>>>> 8695a66e3d9be860f778caba8db5500885f4548f
<span>(mm)&amp;nbsp;</span>
</div>
<field name="tool_width"
<<<<<<< HEAD
attrs="{'invisible': [('cutting_tool_type', '!=', '刀杆')]}"/>
<field name="tool_height"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀杆')]}"/>
@@ -203,6 +268,69 @@
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')]}"/>
<field name="cutting_tool_blade_width" string="刃宽"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')]}"/>
=======
attrs="{'invisible': [('cutting_tool_type', '!=', '刀杆')],'readonly': [('id', '!=', False)]}"/>
<field name="tool_height"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀杆')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_flange_diameter"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_flange_length"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_blade_diameter" string="刃部直径(mm)" class="diameter"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_blade_length"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_blade_width"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_blade_depth"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_blade_helix_angle"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_blade_number" placeholder="请选择"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_blade_tip_working_size"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_blade_tip_diameter" string="刀尖直径(mm)" class="diameter"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_blade_tip_taper" string="刀尖锥度(°)"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')],'readonly': [('id', '!=', False)]}"/>
<!--刀片-->
<label for="tool_length" string="尺寸(mm)"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')],'readonly': [('id', '!=', False)]}"/>
<div class="test_model"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')],'readonly': [('id', '!=', False)]}">
<label for="tool_length" string="长"/>
<field name="tool_length" class="o_address_zip"
options="{'format': false}"
attrs="{'readonly': [('id', '!=', False)]}"/>
<label for="tool_thickness" string="厚"/>
<field name="tool_thickness" class="o_address_zip"
options="{'format': false}"
attrs="{'readonly': [('id', '!=', False)]}"/>
</div>
<field name="cutting_tool_blade_blade_number" string="刃数"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_blade_width" string="刃宽"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_cut_blade_length"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_blade_tip_circular_arc_radius"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_blade_tip_height_tolerance"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_inscribed_circle_diameter"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_inscribed_circle_tolerance"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_install_aperture_diameter"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_chip_breaker_groove"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_chip_breaker_type_code"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_cut_depth_max"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')],'readonly': [('id', '!=', False)]}"/>
>>>>>>> 8695a66e3d9be860f778caba8db5500885f4548f
<!--刀杆-->
<label for="cutting_tool_knife_head_length" string="刀头尺寸(mm)"
@@ -211,6 +339,7 @@
attrs="{'invisible': [('cutting_tool_type', '!=', '刀杆')]}">
<label for="cutting_tool_knife_head_length" string="长"/>
<field name="cutting_tool_knife_head_length" class="o_address_zip"
<<<<<<< HEAD
options="{'format': false}"/>
<label for="cutting_tool_knife_head_width" string="宽"/>
<field name="cutting_tool_knife_head_width" class="o_address_zip"
@@ -240,12 +369,42 @@
attrs="{'invisible': [('cutting_tool_type', '!=', '刀盘')]}"/>
<field name="cutting_tool_interface_diameter"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀盘')]}"/>
=======
options="{'format': false}"
attrs="{'readonly': [('id', '!=', False)]}"/>
<label for="cutting_tool_knife_head_width" string="宽"/>
<field name="cutting_tool_knife_head_width" class="o_address_zip"
options="{'format': false}"
attrs="{'readonly': [('id', '!=', False)]}"/>
<label for="cutting_tool_knife_head_height" string="高"/>
<field name="cutting_tool_knife_head_height" class="o_address_zip"
options="{'format': false}"
attrs="{'readonly': [('id', '!=', False)]}"/>
</div>
<field name="cutting_tool_blade_diameter" string="刃部直径(mm)" class="diameter"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_blade_length"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀盘')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_cutter_arbor_diameter"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀杆')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_cut_blade_length" string="切削刃长度(mm)"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_cut_depth_max"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_min_machining_aperture"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀杆')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_install_blade_tip_num"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀杆')],'readonly': [('id', '!=', False)]}"/>
<!--刀盘-->
<field name="cutting_tool_cutter_head_diameter"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀盘')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_interface_diameter"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀盘')],'readonly': [('id', '!=', False)]}"/>
>>>>>>> 8695a66e3d9be860f778caba8db5500885f4548f
<!--夹头-->
<field name="cutting_tool_clamping_length"
attrs='{"invisible": [("cutting_tool_type","!=","夹头")]}'/>
<field name="cutting_tool_clamping_tolerance"
attrs='{"invisible": [("cutting_tool_type","!=","夹头")]}'/>
<label for="cutting_tool_clamping_diameter_min" string="夹持直径"
attrs='{"invisible": [("cutting_tool_type","not in",("夹头","刀柄"))]}'/>
<div class="o_address_format"
@@ -253,11 +412,16 @@
<label for="cutting_tool_clamping_diameter_min" string="最小"/>
<field name="cutting_tool_clamping_diameter_min" class="o_address_zip diameter"
options="{'format': false}"
<<<<<<< HEAD
attrs="{'required': [('cutting_tool_type','not in',('夹头','刀柄'))]}"/>
=======
attrs="{'required': [('cutting_tool_type','not in',('夹头','刀柄'))],'readonly': [('id', '!=', False)]}"/>
>>>>>>> 8695a66e3d9be860f778caba8db5500885f4548f
<span>(mm)&amp;nbsp;</span>
<label for="cutting_tool_clamping_diameter_max" string="最大"/>
<field name="cutting_tool_clamping_diameter_max" class="o_address_zip diameter"
options="{'format': false}"
<<<<<<< HEAD
attrs="{'required': [('cutting_tool_type','not in',('夹头','刀柄'))]}"/>
<span>(mm)&amp;nbsp;</span>
</div>
@@ -385,74 +549,232 @@
attrs="{'invisible': [('cutting_tool_type', '!=', '刀盘')]}"/>
<field name="cutting_tool_blade_ids" widget="many2many_tags"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀盘')]}"/>
=======
attrs="{'required': [('cutting_tool_type','not in',('夹头','刀柄'))],'readonly': [('id', '!=', False)]}"/>
<span>(mm)&amp;nbsp;</span>
</div>
<field name="cutting_tool_clamping_way"
attrs="{'invisible': [('cutting_tool_type','not in',('刀柄','夹头'))],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_top_diameter" class="diameter"
attrs="{'invisible': [('cutting_tool_type','not in',('夹头'))],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_outer_diameter" class="diameter"
attrs="{'invisible': [('cutting_tool_type','not in',('夹头'))],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_inner_diameter" class="diameter"
attrs="{'invisible': [('cutting_tool_type','not in',('夹头'))],'readonly': [('id', '!=', False)]}"/>
<!--夹头-->
<field name="cutting_tool_speed_max"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_change_time"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_cooling_type"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')],'readonly': [('id', '!=', False)]}"/>
</group>
<group attrs="{'invisible': [('categ_type', '!=', '刀具')],'readonly': [('id', '!=', False)]}">
<field name="materials_type_id" options="{'no_create': True}" placeholder="请选择"
string="材质" attrs="{'readonly': [('id', '!=', False)]}"/>
<field name="coating_material" attrs="{'readonly': [('id', '!=', False)]}"/>
<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)]}"/>
<!--整体式刀具-->
<field name="cutting_tool_shank_diameter" string="柄部直径(mm)" class="diameter"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_shank_length"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_neck_diameter" string="颈部直径(mm)" class="diameter"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_neck_length" string="颈部长度(mm)"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_cut_depth_max"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_pitch"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')],'readonly': [('id', '!=', False)]}"/>
<field name="tool_weight"
attrs='{"invisible": [("cutting_tool_type","not in",("夹头","刀柄"))],"readonly": [("id", "!=", False)]}'/>
<field name="cutting_tool_taper"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('夹头','刀柄'))],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_taper_shank_model"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_dynamic_balance_class"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_jump_accuracy"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_rear_angle"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片'))],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_main_included_angle"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片','刀杆','刀盘'))],'readonly': [('id', '!=', False)]}"/>
<!-- <field name="cutting_tool_front_angle"-->
<!-- attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片'))]}"/>-->
<field name="cutting_tool_top_angle"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片'))],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_pitch"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_bladed_teeth_model"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_thread_model"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_thread_num"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_thickness_tolerance"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_cutter_bar_ids" widget="many2many_tags"
options="{'no_create': True}"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_cutter_pad_ids" widget="many2many_tags"
options="{'no_create': True}"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')],'readonly': [('id', '!=', False)]}"/>
<!--刀柄-->
<field name="cutting_tool_is_high_speed_cutting"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_is_safety_lock" string="有无安全锁"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')],'readonly': [('id', '!=', False)]}"/>
<!--夹头-->
<field name="cutting_tool_jump_accuracy" string="跳动精度(mm)"
attrs="{'invisible': [('cutting_tool_type', '!=', '夹头')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_max_load_capacity"
attrs="{'invisible': [('cutting_tool_type', '!=', '夹头')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_er_size_model"
attrs="{'invisible': [('cutting_tool_type', '!=', '夹头')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_handle_id"
options="{'no_create': True}"
attrs="{'invisible': [('cutting_tool_type', '!=', '夹头')],'readonly': [('id', '!=', False)]}"/>
<field name="cooling_suit_type_ids"
attrs="{'invisible': [('cutting_tool_type', '!=', '夹头')],'readonly': [('id', '!=', False)]}"/>
<!-- 刀杆 -->
<field name="cutting_tool_rear_angle"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀杆')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_installing_structure"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_is_cooling_hole"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_locating_slot_code"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_blade_id"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_tool_shim"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀杆')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_cotter_pin"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀杆')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_pressing_plate"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀杆')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_screw"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆'))],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_fit_nut_model"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_wrench"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀柄'))],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_chuck_id"
options="{'no_create': True}"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_fit_chuck_size"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')],'readonly': [('id', '!=', False)]}"/>
<!-- 刀盘 -->
<field name="cutting_tool_screw"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀盘')],'readonly': [('id', '!=', False)]}"/>
<field name="cutting_tool_wrench"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀盘')],'readonly': [('id', '!=', False)]}"/>
>>>>>>> 8695a66e3d9be860f778caba8db5500885f4548f
</group>
</group>
<group string="适配刀片形状"
attrs="{'invisible': [('cutting_tool_type', 'in', ('刀柄','夹头','整体式刀具',False))]}">
<<<<<<< HEAD
<field name="fit_blade_shape_id" string="" widget="many2one_radio"/>
=======
<field name="fit_blade_shape_id" string="" widget="many2one_radio"
attrs="{'readonly': [('id', '!=', False)]}"/>
>>>>>>> 8695a66e3d9be860f778caba8db5500885f4548f
</group>
<group string="适合加工方式"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}">
<field name="suitable_machining_method_ids" string=""
<<<<<<< HEAD
=======
attrs="{'readonly': [('id', '!=', False)]}"
>>>>>>> 8695a66e3d9be860f778caba8db5500885f4548f
widget="custom_many2many_checkboxes"/>
</group>
<group string="刀尖特征"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}">
<field name="blade_tip_characteristics_id" string=""
<<<<<<< HEAD
=======
attrs="{'readonly': [('id', '!=', False)]}"
>>>>>>> 8695a66e3d9be860f778caba8db5500885f4548f
widget="many2one_radio"/>
</group>
<group attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}">
<group string="柄部类型"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}">
<<<<<<< HEAD
<field name="handle_type_id" string="" widget="many2one_radio"/>
</group>
<group string="压紧方式"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))]}">
<field name="compaction_way_id" string="" widget="many2one_radio"/>
=======
<field name="handle_type_id" string="" widget="many2one_radio"
attrs="{'readonly': [('id', '!=', False)]}"/>
</group>
<group string="压紧方式"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))]}">
<field name="compaction_way_id" string="" widget="many2one_radio"
attrs="{'readonly': [('id', '!=', False)]}"/>
>>>>>>> 8695a66e3d9be860f778caba8db5500885f4548f
</group>
</group>
<group attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}">
<group string="走刀方向">
<<<<<<< HEAD
<field name="cutting_direction_ids" string="" widget="custom_many2many_checkboxes"/>
</group>
<group string="适合冷却液">
<field name="suitable_coolant_ids" string="" widget="custom_many2many_checkboxes"/>
=======
<field name="cutting_direction_ids" string="" widget="custom_many2many_checkboxes"
attrs="{'readonly': [('id', '!=', False)]}"/>
</group>
<group string="适合冷却方式">
<field name="suitable_coolant_ids" string="" widget="custom_many2many_checkboxes"
attrs="{'readonly': [('id', '!=', False)]}"/>
>>>>>>> 8695a66e3d9be860f778caba8db5500885f4548f
</group>
</group>
<notebook>
<page string="切削速度Vc"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}">
<<<<<<< HEAD
<field name="cutting_speed_ids" string="" widget="one2many">
=======
<field name="cutting_speed_ids" string="" widget="one2many"
attrs="{'readonly': [('id', '!=', False)]}" class="fixTableCss">
>>>>>>> 8695a66e3d9be860f778caba8db5500885f4548f
<tree editable="bottom">
<!-- <field name="order"/>-->
<field name="execution_standard_id"/>
<field name="material_code"/>
<field name="material_id"/>
<field name="material_grade"/>
<field name="tensile_strength"/>
<field name="hardness"/>
<field name="cutting_speed_n1"/>
<field name="cutting_speed_n2"/>
<field name="cutting_speed_n3"/>
<field name="cutting_speed_n4"/>
<field name="cutting_speed_n5"/>
<field name="rough_machining"/>
<field name="precision_machining"/>
<field name="application"/>
</tree>
</field>
<script src="/sf_dlm_management/static/js/changeCss.js"></script>
</page>
<page string="每齿走刀量fz"
<<<<<<< HEAD
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}">
<field name="feed_per_tooth_ids" string="" widget="one2many">
=======
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))],'readonly': [('categ_type', '=', '刀具')]}">
<field name="feed_per_tooth_ids" string="" widget="one2many"
attrs="{'readonly': [('id', '!=', False)]}">
>>>>>>> 8695a66e3d9be860f778caba8db5500885f4548f
<tree editable="bottom">
<field name="cutting_speed"
attrs="{'readonly': [('materials_type_id','!=',False)]}"/>
<field name="machining_method" placeholder="请选择"
attrs="{'readonly': [('cutting_speed','!=',False)]}"/>
<field name="materials_type_id" placeholder="请选择"
attrs="{'readonly': [('cutting_speed','!=',False)]}"/>
<!-- <field name="cutting_speed"-->
<!-- attrs="{'readonly': [('materials_type_id','!=',False)]}"/>-->
<field name="materials_type_id" placeholder="请选择"/>
<field name="blade_diameter"/>
<field name="feed_per_tooth"/>
</tree>
@@ -461,64 +783,107 @@
</notebook>
</page>
<page string="夹具物料参数" attrs="{'invisible': [('categ_type', '!=', '夹具')]}">
<group attrs='{"invisible": [("fixture_material_type","not in",("气动夹具","转接板(锁板)夹具","磁吸夹具","虎钳夹具","零点卡盘","零点托盘"))]}'>
<group>
<group>
<field name="brand_id"/>
<field name="fixture_multi_mounting_type_id" options="{'no_create': True}"/>
<label for="tool_length" string="尺寸(mm)"/>
<div class="o_address_format">
<label for="tool_length" string=""/>
<field name="tool_length" class="o_address_zip"
options="{'format': false}"/>
<!-- <span>&amp;nbsp;</span>-->
<label for="tool_width" string="宽"/>
<field name="tool_width" class="o_address_zip"
options="{'format': false}"/>
<!-- <span>&amp;nbsp;</span>-->
<label for="tool_height" string="高"/>
<field name="tool_height" class="o_address_zip"
options="{'format': false}"/>
</div>
<field name="tool_weight"></field>
<label for="fixture_clamp_workpiece_length_max" string="夹持工件最大尺寸(mm)"
attrs='{"invisible": [("fixture_material_type","in",("零点卡盘","零点托盘"))]}'/>
<div class="o_address_format"
attrs='{"invisible": [("fixture_material_type","in",("零点卡盘","零点托盘"))]}'>
<label for="fixture_clamp_workpiece_length_max" string="长"/>
<field name="fixture_clamp_workpiece_length_max" class="o_address_zip"
options="{'format': false}"
attrs="{'required': [('fixture_material_type', 'in',('气动夹具','转接板(锁板)夹具','磁吸夹具','虎钳夹具'))]}"/>
<!-- <span>&amp;nbsp;</span>-->
<label for="fixture_clamp_workpiece_width_max" string="宽"/>
<field name="fixture_clamp_workpiece_width_max" class="o_address_zip"
options="{'format': false}"
attrs="{'required': [('fixture_material_type', 'in',('气动夹具','转接板(锁板)夹具','磁吸夹具','虎钳夹具'))]}"/>
<!-- <span>&amp;nbsp;</span>-->
<label for="fixture_clamp_workpiece_height_max" string="高"/>
<field name="fixture_clamp_workpiece_height_max" class="o_address_zip"
options="{'format': false}"
attrs="{'required': [('fixture_material_type', 'in',('气动托盘','转接板(锁板)夹具','磁吸夹具','虎钳夹具'))]}"/>
</div>
<field name="fixture_clamp_workpiece_diameter_max"
attrs="{'invisible': [('fixture_material_type','in',('零点卡盘','零点托盘'))],'required': [('fixture_material_type', 'in',('气动夹具','转接板(锁板)夹具','磁吸夹具','虎钳夹具'))]}"/>
<field name="fixture_maximum_carrying_weight"></field>
<field name="fixture_maximum_clamping_force"></field>
<field name="brand_id" placeholder="请选择"/>
<field name="multi_mounting_type_id" placeholder="请选择"
attrs="{'required': [('categ_type', '=', '夹具')]}"/>
<field name="length" string="长度(mm)"/>
<field name="width" string="宽度(mm)"/>
<field name="height" string="高度(mm)"/>
<field name="height_tolerance_value"
attrs="{'invisible': [('fixture_material_type', 'not in', ['磁吸夹具'])]}"/>
<field name="diameter"
attrs="{'invisible': [('fixture_material_type', 'not in', ['零点卡盘', '零点托盘', '三爪卡盘'])]}"/>
<field name="weight"/>
<field name="chucking_power_max"
attrs="{'invisible': [('fixture_material_type', '=','磁吸夹具')]}"/>
<field name="carrying_capacity_max"/>
<field name="rigidity"/>
</group>
<group>
<field name="materials_type_id" options="{'no_create': True}"/>
<field name="fixture_clamping_way"
attrs='{"invisible": [("fixture_material_type","not in",("气动夹具","磁吸夹具","虎钳夹具"))]}'/>
<field name="fixture_port_type"
attrs='{"invisible": [("fixture_material_type","not in",("气动夹具","磁吸夹具","虎钳夹具"))]}'/>
<field name="fixture_through_hole_size"
attrs='{"invisible": [("fixture_material_type","!=",("转接板(锁板)夹具"))]}'/>
<field name="fixture_screw_size"
attrs='{"invisible": [("fixture_material_type","!=",("转接板(锁板)夹具"))]}'/>
<field name="fixture_driving_way"
attrs='{"invisible": [("fixture_material_type","not in",("虎钳夹具","零点卡盘","零点托盘"))]}'/>
<field name="fixture_apply_machine_tool_type_ids" options="{'no_create': True}"
widget="many2many_tags"
attrs='{"invisible": [("fixture_material_type","not in",("零点卡盘","零点托盘"))]}'/>
<label for="gripper_length_min" string="夹持工件最小尺寸"
attrs="{'invisible': [('fixture_material_type', 'not in', ['气动夹具','虎钳夹具','磁吸夹具','转接板(锁板)夹具','三爪卡盘'])]}"/>
<div class="o_address_format"
attrs="{'invisible': [('fixture_material_type', 'not in', ['气动夹具','虎钳夹具','磁吸夹具','转接板(锁板)夹具','三爪卡盘'])]}">
<label for="gripper_length_min" string="长"/>
<field name="gripper_length_min" class="o_address_zip"/>
<span>&amp;nbsp;</span>
<label for="gripper_width_min" string="宽"/>
<field name="gripper_width_min" class="o_address_zip"/>
<span>&amp;nbsp;</span>
<label for="gripper_height_min" string="高"/>
<field name="gripper_height_min" class="o_address_zip"/>
</div>
<label for="gripper_length_max" string="夹持工件最大尺寸"
attrs="{'invisible': [('fixture_material_type', 'not in', ['气动夹具','虎钳夹具','磁吸夹具','转接板(锁板)夹具','三爪卡盘'])]}"/>
<div class="o_address_format"
attrs="{'invisible': [('fixture_material_type', 'not in', ['气动夹具','虎钳夹具','磁吸夹具','转接板(锁板)夹具','三爪卡盘'])]}">
<label for="gripper_length_max" string="长"/>
<field name="gripper_length_max" class="o_address_zip"/>
<span>&amp;nbsp;</span>
<label for="gripper_width_max" string="宽"/>
<field name="gripper_width_max" class="o_address_zip"/>
<span>&amp;nbsp;</span>
<label for="gripper_width_max" string="高"/>
<field name="gripper_width_max" class="o_address_zip"/>
</div>
<field name="gripper_diameter_min" string="夹持工件最小直径(mm)"
attrs="{'invisible': [('fixture_material_type', 'not in', ['气动夹具','虎钳夹具','磁吸夹具','转接板(锁板)夹具','三爪卡盘'])]}"/>
<field name="gripper_diameter_max" string="夹持工件最大直径(mm)"
attrs="{'invisible': [('fixture_material_type', 'not in', ['气动夹具','虎钳夹具','磁吸夹具','转接板(锁板)夹具','三爪卡盘'])]}"/>
<field name="clamping_diameter" string="装夹直径(mm)"
attrs="{'invisible': [('fixture_material_type', 'not in', ['零点卡盘','零点托盘'])]}"/>
<field name="clamping_num" placeholder="请选择" string="装夹单元数"
attrs="{'invisible': [('fixture_material_type', '!=', '零点卡盘')]}"/>
<field name="repeated_positioning_accuracy" placeholder="请输入重复定位孔精度"
string="重复定位精度(mm)"
attrs="{'invisible': [('fixture_material_type', 'not in', ['零点卡盘','零点托盘'])]}"/>
<field name="orientation_dish_diameter" string="定位盘直径(mm)"
attrs="{'invisible': [('fixture_material_type', 'not in', ['零点卡盘'])]}"/>
<field name="boolean_transposing_hole" string="是否有转位孔"
attrs="{'invisible': [('fixture_material_type', 'not in', ['零点卡盘'])]}"/>
<field name="connector_diameter" placeholder="请选择" string="连接头直径(mm)"
attrs="{'invisible': [('fixture_material_type', 'not in', ['零点托盘'])]}"/>
<field name="way_to_install" placeholder="请选择" string="安装方式"
attrs="{'invisible': [('fixture_material_type', 'not in', ['零点托盘'])]}"/>
<field name="rated_air_pressure" string="额定气压(Mpa)"
attrs="{'invisible': [('fixture_material_type', 'not in', ['气动夹具'])]}"/>
<field name="transverse_groove" string="横向配合槽n(mm)"
attrs="{'invisible': [('fixture_material_type', 'not in', ['虎钳夹具'])]}"/>
<field name="longitudinal_fitting_groove" string="纵向配合槽l(mm)"
attrs="{'invisible': [('fixture_material_type', 'not in', ['虎钳夹具'])]}"/>
<field name="rated_adsorption_force" string="额定吸附力(N/cm²)"
attrs="{'invisible': [('fixture_material_type', 'not in', ['磁吸夹具'])]}"/>
<field name="magnetic_field_height" string="磁场高度(mm)"
attrs="{'invisible': [('fixture_material_type', 'not in', ['磁吸夹具'])]}"/>
<field name="magnetic_pole_plate_grinding_allowance" string="磁极板磨削余量(mm)"
attrs="{'invisible': [('fixture_material_type', 'not in', ['磁吸夹具'])]}"/>
<field name="screw_size" string="螺牙大小(mm)"
attrs="{'invisible': [('fixture_material_type', 'not in', ['转接板(锁板)夹具'])]}"/>
<field name="via_hole_diameter" string="过孔直径(mm)"
attrs="{'invisible': [('fixture_material_type', 'not in', ['转接板(锁板)夹具'])]}"/>
<field name="mounting_hole_depth" string="安装孔深度(mm)"
attrs="{'invisible': [('fixture_material_type', 'not in', ['三爪卡盘'])]}"/>
<field name="centering_diameter" string="定心直径(mm)"
attrs="{'invisible': [('fixture_material_type', 'not in', ['三爪卡盘'])]}"/>
<field name="boolean_chip_blowing_function" string="是否有吹屑功能"
attrs="{'invisible': [('fixture_material_type', 'not in', ['零点卡盘','零点托盘'])]}"/>
<field name="materials_model_id" placeholder="请选择"/>
<field name="interface_materials_model_id" placeholder="请选择" string="接口类型"
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="请选择"
attrs="{'invisible': [('fixture_material_type', 'not in', ['零点卡盘'])]}"/>
</group>
</group>
</page>

View File

@@ -13,7 +13,7 @@
<field name="arch" type="xml">
<xpath expr="//group//field[@name='processing_panel']" position="after">
<!-- invisible="1" -->
<field name="_barcode_scanned" widget="barcode_handler" string="扫码" attrs='{"invisible": [("routing_type","!=","装夹")]}'/>
<field name="_barcode_scanned" widget="barcode_handler" string="扫码" attrs='{"invisible": [("routing_type","!=","装夹预调")]}'/>
</xpath>
<xpath expr="//page//field[@name='tray_code']" position="replace">
<field name="tray_code" widget="code"/>

View File

@@ -10,6 +10,7 @@
<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="cutting_tool_no"/>
<field name="processing_type"/>

View File

@@ -10,7 +10,7 @@
<xpath expr="//form//notebook//page[1]" position="after">
<!-- <xpath expr="//page[@name='other']" position="before">-->
<!-- <notebook> -->
<page string="机床监控">
<page string="机床运行状态" attrs="{'invisible': [('equipment_type', '!=', '机床')]}">
<group string='状态监控'>
<group>
<field name="timestamp"/>
@@ -29,44 +29,44 @@
<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>
<!-- <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"/> -->
@@ -143,7 +143,7 @@
<!-- </div> -->
<!-- </group> -->
</page>
<page string="机床配置">
<page string="机床运行数据" attrs="{'invisible': [('equipment_type', '!=', '机床')]}">
<!-- <group string="机床配置">--> -->
<group string="ftp相关">
<group>
@@ -216,46 +216,46 @@
</group>
<!-- </group> -->
</page>
<page string="刀位配置">
<group string="刀位配置">
<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>
</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>
</group>
</group>
</page>
<!-- <page string="刀位配置"> -->
<!-- <group string="刀位配置"> -->
<!-- <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> -->
<!-- </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> -->
<!-- </group> -->
<!-- </group> -->
<!-- </page> -->
<!-- </notebook> -->
</xpath>
</field>

View File

@@ -8,14 +8,14 @@
<field name="arch" type="xml">
<xpath expr="//div[hasclass('app_settings_block')]/div" position="before">
<div>
<h2>bfm环境配置</h2>
<h2>业务平台参数配置</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="bfm_url"/>
<field name="bfm_url"/>
<label for="bfm_url" />
<field name="bfm_url" string="访问地址"/>
</div>
</div>
<!-- </div> -->

View File

@@ -10,7 +10,9 @@
'data': [
'security/group_security.xml',
'security/ir.model.access.csv',
'security/ir_rule_data.xml',
'views/maintenance_logs_views.xml',
'views/maintenance_equipment_oee_views.xml',
'views/maintenance_views.xml',
'views/equipment_maintenance_standards_views.xml',
'views/maintenance_request_views.xml',

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