From f19af2a33f16808b6f3d3294f7ae21200408c0f4 Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Fri, 12 Jan 2024 16:40:29 +0800
Subject: [PATCH 1/9] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=8E=92=E7=A8=8B?=
=?UTF-8?q?=E5=8A=A8=E4=BD=9C=E5=AF=B9=E9=94=80=E5=94=AE=E8=AE=A2=E5=8D=95?=
=?UTF-8?q?=E7=8A=B6=E6=80=81=E7=9A=84=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_manufacturing/models/mrp_production.py | 21 +++++++++++----------
sf_plan/models/custom_plan.py | 8 ++++++++
sf_sale/security/ir.model.access.csv | 2 +-
3 files changed, 20 insertions(+), 11 deletions(-)
diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py
index 185817e9..cb326ee8 100644
--- a/sf_manufacturing/models/mrp_production.py
+++ b/sf_manufacturing/models/mrp_production.py
@@ -8,8 +8,6 @@ from odoo.exceptions import UserError
from odoo.addons.sf_base.commons.common import Common
from odoo.tools import float_compare, float_round, float_is_zero, format_datetime
-from odoo.tools import float_compare, float_is_zero
-
class MrpProduction(models.Model):
_inherit = 'mrp.production'
@@ -162,7 +160,6 @@ class MrpProduction(models.Model):
logging.info('fetchCNC error:%s' % e)
raise UserError("cnc程序获取编程单失败,请联系管理员")
-
# 维修模块按钮
def button_maintenance_req(self):
self.ensure_one()
@@ -489,7 +486,7 @@ class MrpProduction(models.Model):
self._reset_work_order_sequence()
return True
- #修改标记已完成方法
+ # 修改标记已完成方法
def button_mark_done1(self):
self._button_mark_done_sanity_checks()
@@ -506,7 +503,6 @@ class MrpProduction(models.Model):
productions_not_to_backorder = self
productions_to_backorder = self.env['mrp.production']
-
backorders = productions_to_backorder and productions_to_backorder._split_productions()
backorders = backorders - productions_to_backorder
@@ -514,13 +510,16 @@ class MrpProduction(models.Model):
productions_to_backorder._post_inventory(cancel_backorder=True)
# if completed products make other confirmed/partially_available moves available, assign them
- done_move_finished_ids = (productions_to_backorder.move_finished_ids | productions_not_to_backorder.move_finished_ids).filtered(lambda m: m.state == 'done')
+ done_move_finished_ids = (
+ productions_to_backorder.move_finished_ids | productions_not_to_backorder.move_finished_ids).filtered(
+ lambda m: m.state == 'done')
done_move_finished_ids._trigger_assign()
# Moves without quantity done are not posted => set them as done instead of canceling. In
# case the user edits the MO later on and sets some consumed quantity on those, we do not
# want the move lines to be canceled.
- (productions_not_to_backorder.move_raw_ids | productions_not_to_backorder.move_finished_ids).filtered(lambda x: x.state not in ('done', 'cancel')).write({
+ (productions_not_to_backorder.move_raw_ids | productions_not_to_backorder.move_finished_ids).filtered(
+ lambda x: x.state not in ('done', 'cancel')).write({
'state': 'done',
'product_uom_qty': 0.0,
})
@@ -546,8 +545,10 @@ class MrpProduction(models.Model):
'res_id': self.id,
'target': 'main',
}
- if self.user_has_groups('mrp.group_mrp_reception_report') and self.picking_type_id.auto_show_reception_report:
- lines = self.move_finished_ids.filtered(lambda m: m.product_id.type == 'product' and m.state != 'cancel' and m.quantity_done and not m.move_dest_ids)
+ if self.user_has_groups(
+ 'mrp.group_mrp_reception_report') and self.picking_type_id.auto_show_reception_report:
+ lines = self.move_finished_ids.filtered(lambda
+ m: m.product_id.type == 'product' and m.state != 'cancel' and m.quantity_done and not m.move_dest_ids)
if lines:
if any(mo.show_allocation for mo in self):
action = self.action_view_reception_report()
@@ -574,4 +575,4 @@ class MrpProduction(models.Model):
'domain': [('id', 'in', backorders.ids)],
'view_mode': 'tree,form',
})
- return action
\ No newline at end of file
+ return action
diff --git a/sf_plan/models/custom_plan.py b/sf_plan/models/custom_plan.py
index 96e98773..f3a91ed5 100644
--- a/sf_plan/models/custom_plan.py
+++ b/sf_plan/models/custom_plan.py
@@ -195,6 +195,10 @@ class sf_production_plan(models.Model):
item.date_planned_start, item.date_planned_finished
record.state = 'done'
record.production_id.schedule_state = '已排'
+ # self.env['sale.order'].browse(record.production_id.origin).schedule_status = 'to process'
+ sale_obj = self.env['sale.order'].search([('name', '=', record.origin)])
+ if 'S' in sale_obj.name:
+ sale_obj.schedule_status = 'to process'
mrp_production_ids = record.production_id._get_children().ids
print('mrp_production_ids', mrp_production_ids)
for i in mrp_production_ids:
@@ -276,6 +280,10 @@ class sf_production_plan(models.Model):
self.production_line_id = False
aa = self.env['mrp.production'].sudo().search([('name', '=', self.name)])
aa.schedule_state = '未排'
+ # self.env['sale.order'].browse(record.production_id.origin).schedule_status = 'to shedule'
+ sale_obj = self.env['sale.order'].search([('name', '=', self.origin)])
+ if 'S' in sale_obj.name:
+ sale_obj.schedule_status = 'to schedule'
return self.date_planned_finished
def liucheng_cs(self):
diff --git a/sf_sale/security/ir.model.access.csv b/sf_sale/security/ir.model.access.csv
index 3f9eee1f..e6b69761 100644
--- a/sf_sale/security/ir.model.access.csv
+++ b/sf_sale/security/ir.model.access.csv
@@ -72,7 +72,7 @@ access_purchase_order_wizard_group_purchase_director,purchase_order_wizard_group
access_crm_tag_group_sale_salemanager,crm_tag_group_sale_salemanager,sales_team.model_crm_tag,sf_base.group_sale_salemanager,1,0,0,0
access_crm_tag_group_sale_director,crm_tag_group_sale_director,sales_team.model_crm_tag,sf_base.group_sale_director,1,1,1,0
-access_sale_order,sale.order,sale.model_sale_order,sf_base.group_plan_dispatch,1,0,0,0
+access_sale_order,sale.order,sale.model_sale_order,sf_base.group_plan_dispatch,1,1,0,0
access_res_partner_group_sale_salemanager,res_partner_group_sale_salemanager,base.model_res_partner,sf_base.group_sale_salemanager,1,0,1,0
access_res_partner_group_sale_director,res_partner_group_sale_director,base.model_res_partner,sf_base.group_sale_director,1,0,1,0
access_res_partner_group_purchase,res_partner_group_purchase,base.model_res_partner,sf_base.group_purchase,1,0,1,0
From 9bab450af10892b04a9900c082124b846f3c82ca Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Wed, 17 Jan 2024 09:56:40 +0800
Subject: [PATCH 2/9] =?UTF-8?q?=E5=AF=B9=E9=99=A4=E5=BA=93=E5=AD=98?=
=?UTF-8?q?=E7=94=A8=E6=88=B7=E5=A4=96=EF=BC=8C=E9=9A=90=E8=97=8F=E6=93=8D?=
=?UTF-8?q?=E4=BD=9C=E6=8C=89=E9=92=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../views/change_stock_move_views.xml | 21 +++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/sf_warehouse/views/change_stock_move_views.xml b/sf_warehouse/views/change_stock_move_views.xml
index d0999a7b..b0bc37ae 100644
--- a/sf_warehouse/views/change_stock_move_views.xml
+++ b/sf_warehouse/views/change_stock_move_views.xml
@@ -37,5 +37,26 @@
+
+
+ sf.view.picking.form
+ stock.picking
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
From a3c8082906e6761618c52775cae88ab475b8e6c8 Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Wed, 17 Jan 2024 14:45:34 +0800
Subject: [PATCH 3/9] =?UTF-8?q?=E5=BA=93=E5=AD=98=E5=A4=84=E9=9A=90?=
=?UTF-8?q?=E8=97=8F=E9=80=80=E5=9B=9E=E6=8C=89=E9=92=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_warehouse/views/change_stock_move_views.xml | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/sf_warehouse/views/change_stock_move_views.xml b/sf_warehouse/views/change_stock_move_views.xml
index b0bc37ae..2584040e 100644
--- a/sf_warehouse/views/change_stock_move_views.xml
+++ b/sf_warehouse/views/change_stock_move_views.xml
@@ -55,6 +55,10 @@
+
+
+
+
From 4ab1409b13ba7e5e205f343f0b33d648595e7da2 Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Wed, 17 Jan 2024 17:44:10 +0800
Subject: [PATCH 4/9] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=B6=E9=80=A0?=
=?UTF-8?q?=E6=A8=A1=E5=9D=97=EF=BC=8C=E4=BD=BF=E5=BE=97=E5=8E=9F=E7=94=9F?=
=?UTF-8?q?=E6=93=8D=E4=BD=9C=E6=8C=89=E9=92=AE=E5=8F=AA=E5=AF=B9=E5=88=B6?=
=?UTF-8?q?=E9=80=A0=E7=94=A8=E6=88=B7=E5=8F=AF=E8=A7=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_manufacturing/security/ir.model.access.csv | 2 +-
.../views/mrp_production_addional_change.xml | 145 +++++++++++++++++-
.../views/mrp_workcenter_views.xml | 12 +-
.../views/change_stock_move_views.xml | 11 ++
4 files changed, 155 insertions(+), 15 deletions(-)
diff --git a/sf_manufacturing/security/ir.model.access.csv b/sf_manufacturing/security/ir.model.access.csv
index 7632686f..7711e4fe 100644
--- a/sf_manufacturing/security/ir.model.access.csv
+++ b/sf_manufacturing/security/ir.model.access.csv
@@ -87,7 +87,7 @@ access_mrp_production_split,access.mrp.production.split,mrp.model_mrp_production
access_mrp_production_split_line,access.mrp.production.split.line,mrp.model_mrp_production_split_line,sf_base.group_sf_mrp_user,1,1,1,0
access_mrp_workcenter_capacity_manager,mrp.workcenter.capacity.manager,mrp.model_mrp_workcenter_capacity,sf_base.group_sf_mrp_user,1,1,1,0
-access_mrp_production,mrp_production,model_mrp_production,sf_base.group_plan_dispatch,1,1,1,0
+access_mrp_production_group_plan_dispatch,mrp_production,model_mrp_production,sf_base.group_plan_dispatch,1,0,0,0
access_mrp_workorder,mrp_workorder,model_mrp_workorder,sf_base.group_plan_dispatch,1,1,1,0
access_sf_production_line_group_plan_dispatch,sf.production.line,model_sf_production_line,sf_base.group_plan_dispatch,1,0,0,0
access_sf_production_line_group_plan_director,sf.production.line,model_sf_production_line,sf_base.group_plan_director,1,1,1,0
diff --git a/sf_manufacturing/views/mrp_production_addional_change.xml b/sf_manufacturing/views/mrp_production_addional_change.xml
index 509cf473..5c7f9cc0 100644
--- a/sf_manufacturing/views/mrp_production_addional_change.xml
+++ b/sf_manufacturing/views/mrp_production_addional_change.xml
@@ -53,6 +53,7 @@
+
custom.mrp.production.form
mrp.production
@@ -61,23 +62,151 @@
draft,confirmed,progress,pending_processing,completed,done
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ sf.mrp.production.workorder.tree.editable
+ mrp.workorder
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ sf.mrp.production.tree
+ mrp.production
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sf_manufacturing/views/mrp_workcenter_views.xml b/sf_manufacturing/views/mrp_workcenter_views.xml
index 20275f8a..9aad2a99 100644
--- a/sf_manufacturing/views/mrp_workcenter_views.xml
+++ b/sf_manufacturing/views/mrp_workcenter_views.xml
@@ -6,9 +6,9 @@
mrp.production
-
+
+
+
mrp.production
-
-
-
+
+
+
+
+ sf.stock.scrap.form.view
+ stock.scrap
+
+
+
+
+
+
+
+
From 6bb46186b10b5009e59e330b104cbaea7a0f0356 Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Wed, 17 Jan 2024 17:56:15 +0800
Subject: [PATCH 5/9] =?UTF-8?q?=E5=8F=96=E6=B6=88=E9=83=A8=E5=88=86?=
=?UTF-8?q?=E5=AE=A1=E6=A0=B8=E6=8C=89=E9=92=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_plan/__manifest__.py | 2 +-
sf_plan/views/change_manufactuing.xml | 24 ++++++++++++------------
2 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/sf_plan/__manifest__.py b/sf_plan/__manifest__.py
index 6059e3bd..c14b40ed 100644
--- a/sf_plan/__manifest__.py
+++ b/sf_plan/__manifest__.py
@@ -19,7 +19,7 @@
# 'security/rules.xml',
'wizard/action_plan_some.xml',
'views/view.xml',
- 'views/change_manufactuing.xml',
+ # 'views/change_manufactuing.xml',
],
diff --git a/sf_plan/views/change_manufactuing.xml b/sf_plan/views/change_manufactuing.xml
index 26ac88fc..d1500bbd 100644
--- a/sf_plan/views/change_manufactuing.xml
+++ b/sf_plan/views/change_manufactuing.xml
@@ -36,21 +36,21 @@
-
- custom.product.template.form
- product.template
-
-
-
-
-
+
+
+
+
+
+
+
+
-
+
-
-
-
+
+
+
From eefabbd5b3d9fc89e6868808e09207e169dd2734 Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Thu, 18 Jan 2024 09:13:41 +0800
Subject: [PATCH 6/9] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=97=E8=A1=A8?=
=?UTF-8?q?=E6=A1=86=EF=BC=8C=E4=BD=86=E6=9A=82=E6=97=B6=E4=B8=8D=E5=90=AF?=
=?UTF-8?q?=E7=94=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
jikimo_frontend/__manifest__.py | 1 +
jikimo_frontend/static/src/css/list_border_styles.css | 3 +++
2 files changed, 4 insertions(+)
create mode 100644 jikimo_frontend/static/src/css/list_border_styles.css
diff --git a/jikimo_frontend/__manifest__.py b/jikimo_frontend/__manifest__.py
index 5808f8eb..2711118a 100644
--- a/jikimo_frontend/__manifest__.py
+++ b/jikimo_frontend/__manifest__.py
@@ -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',
],
diff --git a/jikimo_frontend/static/src/css/list_border_styles.css b/jikimo_frontend/static/src/css/list_border_styles.css
new file mode 100644
index 00000000..bca5499e
--- /dev/null
+++ b/jikimo_frontend/static/src/css/list_border_styles.css
@@ -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;
+}
\ No newline at end of file
From eb117aef8676730b537376b57284d46a08af2b8e Mon Sep 17 00:00:00 2001
From: "jinling.yang"
Date: Thu, 18 Jan 2024 17:39:22 +0800
Subject: [PATCH 7/9] =?UTF-8?q?1.=E4=BF=AE=E5=A4=8D=E9=87=87=E8=B4=AD?=
=?UTF-8?q?=E6=80=BB=E7=9B=91=E5=AE=A1=E6=A0=B8=E9=87=87=E8=B4=AD=E5=8D=95?=
=?UTF-8?q?=E5=AE=A1=E6=A0=B8=E4=B8=8D=E9=80=9A=E8=BF=87=E5=90=8E-?=
=?UTF-8?q?=E8=BF=98=E6=98=BE=E7=A4=BA=E3=80=90=E5=AE=A1=E6=A0=B8=E3=80=91?=
=?UTF-8?q?=E6=8C=89=E9=92=AE2.=E6=96=B0=E5=A2=9E=E9=87=87=E8=B4=AD?=
=?UTF-8?q?=E6=80=BB=E7=9B=91=E5=AE=A1=E6=A0=B8=E9=87=87=E8=B4=AD=E5=8D=95?=
=?UTF-8?q?=E5=AE=A1=E6=A0=B8=E4=B8=8D=E9=80=9A=E8=BF=87=E5=90=8E-?=
=?UTF-8?q?=E8=BF=98=E6=98=BE=E7=A4=BA=E3=80=90=E5=AE=A1=E6=A0=B8=E3=80=91?=
=?UTF-8?q?=E6=8C=89=E9=92=AE3.=E4=BA=A7=E5=93=81=E8=AF=A6=E6=83=85?=
=?UTF-8?q?=E7=95=8C=E9=9D=A2=E7=9A=84=E5=88=A0=E9=99=A4=E6=8C=89=E9=92=AE?=
=?UTF-8?q?=E8=A6=81=E9=9A=90=E8=97=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_dlm/data/product_data.xml | 14 ++++++++-----
sf_manufacturing/models/mrp_production.py | 2 +-
sf_manufacturing/models/mrp_workorder.py | 2 +-
sf_manufacturing/models/product_template.py | 4 ++--
sf_sale/models/auto_quatotion_common.py | 2 +-
sf_sale/models/quick_easy_order.py | 4 ++--
sf_sale/models/sale_order.py | 23 +++++++++++++++++++--
sf_sale/security/ir.model.access.csv | 8 +++----
sf_sale/views/purchase_order_view.xml | 4 ++--
sf_sale/views/sale_order_view.xml | 3 +++
sf_tool_management/models/base.py | 2 +-
11 files changed, 47 insertions(+), 21 deletions(-)
diff --git a/sf_dlm/data/product_data.xml b/sf_dlm/data/product_data.xml
index 9b562fbb..f4a256bd 100644
--- a/sf_dlm/data/product_data.xml
+++ b/sf_dlm/data/product_data.xml
@@ -1,6 +1,5 @@
-
坯料
坯料
@@ -35,10 +34,15 @@
功能刀具
-
- 业务平台
-
-
+
+
+
+
+
+
+
+
+
功能刀具
diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py
index cb326ee8..44bd0c04 100644
--- a/sf_manufacturing/models/mrp_production.py
+++ b/sf_manufacturing/models/mrp_production.py
@@ -247,7 +247,7 @@ class MrpProduction(models.Model):
'state': 'pending',
}]
if production.product_id.categ_id.type == '成品':
- production.fetchCNC()
+ # production.fetchCNC()
# 根据加工面板的面数及对应的工序模板生成工单
i = 0
processing_panel_len = len(production.product_id.model_processing_panel.split(','))
diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py
index feb37787..ad54004e 100644
--- a/sf_manufacturing/models/mrp_workorder.py
+++ b/sf_manufacturing/models/mrp_workorder.py
@@ -232,7 +232,7 @@ class ResMrpWorkOrder(models.Model):
'processing_panel': k,
'quality_point_ids': route.route_workcenter_id.quality_point_ids,
'routing_type': route.routing_type,
- 'work_state': '' if not route.routing_type == '获取CNC加工程序' else '待发起',
+ 'work_state': '待发起',
'workcenter_id': self.env['mrp.routing.workcenter'].get_workcenter(route.workcenter_ids.ids,
route.routing_type,
production.product_id),
diff --git a/sf_manufacturing/models/product_template.py b/sf_manufacturing/models/product_template.py
index 42a392e2..7a341c36 100644
--- a/sf_manufacturing/models/product_template.py
+++ b/sf_manufacturing/models/product_template.py
@@ -6,8 +6,8 @@ import os
from odoo import models, fields, api, _
from odoo.exceptions import ValidationError
from odoo.modules import get_resource_path
-from OCC.Extend.DataExchange import read_step_file
-from OCC.Extend.DataExchange import write_stl_file
+# from OCC.Extend.DataExchange import read_step_file
+# from OCC.Extend.DataExchange import write_stl_file
class ResProductMo(models.Model):
diff --git a/sf_sale/models/auto_quatotion_common.py b/sf_sale/models/auto_quatotion_common.py
index 09ea3f0f..10b83aed 100644
--- a/sf_sale/models/auto_quatotion_common.py
+++ b/sf_sale/models/auto_quatotion_common.py
@@ -2,7 +2,7 @@
import logging
from odoo.modules import get_resource_path
from odoo import fields, models, api
-from quatotion import readSql, feature_recognize, auto_quatotion
+# from quatotion import readSql, feature_recognize, auto_quatotion
__author__ = 'jinling.yang'
_logger = logging.getLogger(__name__)
diff --git a/sf_sale/models/quick_easy_order.py b/sf_sale/models/quick_easy_order.py
index 1e5f274c..7419cc9a 100644
--- a/sf_sale/models/quick_easy_order.py
+++ b/sf_sale/models/quick_easy_order.py
@@ -5,8 +5,8 @@ import os
import json
from datetime import datetime
import requests
-from OCC.Extend.DataExchange import read_step_file
-from OCC.Extend.DataExchange import write_stl_file
+# from OCC.Extend.DataExchange import read_step_file
+# from OCC.Extend.DataExchange import write_stl_file
from odoo import models, fields, api
from odoo.modules import get_resource_path
from odoo.exceptions import ValidationError, UserError
diff --git a/sf_sale/models/sale_order.py b/sf_sale/models/sale_order.py
index d2e97272..7c2fc260 100644
--- a/sf_sale/models/sale_order.py
+++ b/sf_sale/models/sale_order.py
@@ -7,6 +7,19 @@ from odoo.exceptions import UserError
class ReSaleOrder(models.Model):
_inherit = 'sale.order'
+ state = fields.Selection(
+ selection=[
+ ('draft', "报价"),
+ ('sent', "报价已发送"),
+ ('sale', "销售订单"),
+ ('done', "已锁定"),
+ ('cancel', '已废弃'),
+ ],
+ string="状态",
+ readonly=True, copy=False, index=True,
+ tracking=3,
+ default='draft')
+
deadline_of_delivery = fields.Date('订单交期', tracking=True)
person_of_delivery = fields.Char('交货人')
telephone_of_delivery = fields.Char('交货人电话号码')
@@ -37,7 +50,8 @@ class ReSaleOrder(models.Model):
'name': self.env['ir.sequence'].next_by_code('sale.order', sequence_date=now_time),
'partner_id': partner.id,
'check_status': 'approved',
- 'state': 'draft',
+ 'state': 'sale',
+ 'user_id': partner.user_id.id,
'person_of_delivery': delivery_name,
'telephone_of_delivery': delivery_telephone,
'address_of_delivery': delivery_address,
@@ -59,11 +73,12 @@ class ReSaleOrder(models.Model):
self.check_status = 'pending'
def get_customer(self):
- customer = self.env['res.partner'].search([('name', '=', '业务平台')])
+ customer = self.env['res.partner'].search([('name', '=', '业务平台')], limit=1, order='id asc')
if customer:
return customer
else:
partner = self.env['res.partner'].create({'name': '业务平台'})
+ self.env['res.users'].create({'name': '业务平台', 'partner_id': partner.id})
return partner
# 业务平台分配工厂时在创建完产品后再创建销售明细信息
@@ -107,6 +122,10 @@ class ResaleOrderLine(models.Model):
model_glb_file = fields.Binary('模型的glb文件')
check_status = fields.Selection(related='order_id.check_status')
+ def create(self, vals_list):
+ lines = super(ResaleOrderLine, self).create(vals_list)
+ return lines
+
class RePurchaseOrder(models.Model):
_inherit = 'purchase.order'
diff --git a/sf_sale/security/ir.model.access.csv b/sf_sale/security/ir.model.access.csv
index 7e893864..403d4874 100644
--- a/sf_sale/security/ir.model.access.csv
+++ b/sf_sale/security/ir.model.access.csv
@@ -20,8 +20,8 @@ access_product_template_group_plan_dispatch,product_template_group_plan_dispatch
access_product_template_group_plan_director,product_template_group_plan_director,product.model_product_template,sf_base.group_plan_director,1,1,1,0
access_stock_picking_group_sale_salemanager,stock_picking_group_sale_salemanager,stock.model_stock_picking,sf_base.group_sale_salemanager,1,0,0,0
access_stock_picking_group_sale_director,stock_picking_group_sale_director,stock.model_stock_picking,sf_base.group_sale_director,1,0,0,0
-access_stock_picking_group_purchase,stock_picking_group_purchase,stock.model_stock_picking,sf_base.group_purchase,1,0,0,0
-access_stock_picking_group_purchase_director,stock_picking_group_purchase_director,stock.model_stock_picking,sf_base.group_purchase_director,1,0,0,0
+access_stock_picking_group_purchase,stock_picking_group_purchase,stock.model_stock_picking,sf_base.group_purchase,1,1,1,0
+access_stock_picking_group_purchase_director,stock_picking_group_purchase_director,stock.model_stock_picking,sf_base.group_purchase_director,1,1,1,0
access_account_move_group_sale_salemanager,account_move_group_sale_salemanager,account.model_account_move,sf_base.group_sale_salemanager,1,0,0,0
access_account_move_group_sale_director,account_move_group_sale_director,account.model_account_move,sf_base.group_sale_director,1,0,0,0
access_resource_resource_group_sale_director,resource_resource_group_sale_director,resource.model_resource_resource,sf_base.group_sale_director,1,1,1,0
@@ -33,8 +33,8 @@ access_mrp_bom_group_quality,mrp_bom_group_quality,mrp.model_mrp_bom,sf_base.gro
access_mrp_bom_group_quality_director,mrp_bom_group_quality_director,mrp.model_mrp_bom,sf_base.group_quality_director,1,0,0,0
access_stock_move_group_sale_salemanager,stock_move_group_sale_salemanager,stock.model_stock_move,sf_base.group_sale_salemanager,1,0,0,0
access_stock_move_group_sale_director,stock_move_group_sale_director,stock.model_stock_move,sf_base.group_sale_director,1,0,0,0
-access_stock_move_group_purchase,stock_move_group_purchase,stock.model_stock_move,sf_base.group_purchase,1,0,0,0
-access_stock_move_group_purchase_director,stock_move_group_purchase_director,stock.model_stock_move,sf_base.group_purchase_director,1,0,0,0
+access_stock_move_group_purchase,stock_move_group_purchase,stock.model_stock_move,sf_base.group_purchase,1,1,1,0
+access_stock_move_group_purchase_director,stock_move_group_purchase_director,stock.model_stock_move,sf_base.group_purchase_director,1,1,1,0
access_stock_warehouse_orderpoint_group_sale_salemanager,stock_warehouse_orderpoint_group_sale_salemanager,stock.model_stock_warehouse_orderpoint,sf_base.group_sale_salemanager,1,0,0,0
access_stock_warehouse_orderpoint_group_sale_director,stock_warehouse_orderpoint_group_sale_director,stock.model_stock_warehouse_orderpoint,sf_base.group_sale_director,1,0,0,0
access_stock_warehouse_orderpoint_group_purchase,stock_warehouse_orderpoint_group_purchase,stock.model_stock_warehouse_orderpoint,sf_base.group_purchase,1,1,0,0
diff --git a/sf_sale/views/purchase_order_view.xml b/sf_sale/views/purchase_order_view.xml
index b22bb584..423742b8 100644
--- a/sf_sale/views/purchase_order_view.xml
+++ b/sf_sale/views/purchase_order_view.xml
@@ -11,14 +11,14 @@
-
+
diff --git a/sf_sale/views/sale_order_view.xml b/sf_sale/views/sale_order_view.xml
index 247bbc75..38dbd853 100644
--- a/sf_sale/views/sale_order_view.xml
+++ b/sf_sale/views/sale_order_view.xml
@@ -237,6 +237,9 @@
product.template
+
diff --git a/sf_tool_management/models/base.py b/sf_tool_management/models/base.py
index 39805f58..149ccb5a 100644
--- a/sf_tool_management/models/base.py
+++ b/sf_tool_management/models/base.py
@@ -240,7 +240,7 @@ class FunctionalToolWarning(models.Model):
class StockMoveLine(models.Model):
_inherit = 'stock.move.line'
_description = '功能刀具出入库记录'
- _order = 'install_tool_time desc'
+ # _order = 'install_tool_time desc'
functional_tool_name_id = fields.Many2one('sf.functional.tool.assembly', string='功能刀具名称')
functional_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', store=True,
From 3226942ed3d0e1b7b2532e35768ec0e32a725c47 Mon Sep 17 00:00:00 2001
From: "jinling.yang"
Date: Fri, 19 Jan 2024 15:45:15 +0800
Subject: [PATCH 8/9] =?UTF-8?q?1.=E4=BF=AE=E5=A4=8D=E4=BA=A7=E5=93=81?=
=?UTF-8?q?=E7=B1=BB=E5=88=AB=E5=92=8C=E8=AE=A1=E9=87=8F=E5=8D=95=E4=BD=8D?=
=?UTF-8?q?=E5=8E=BB=E6=8E=89=E5=AE=A1=E6=A0=B8=E7=8A=B6=E6=80=81=E5=AD=97?=
=?UTF-8?q?=E6=AE=B52.=E4=BC=98=E5=8C=96bfm=E6=B4=BE=E5=8D=95=E8=87=B3sf?=
=?UTF-8?q?=E7=9A=84=E9=94=80=E5=94=AE=E8=AE=A2=E5=8D=95=E6=B5=81=E7=A8=8B?=
=?UTF-8?q?3.=E5=B7=A5=E5=BA=8F=E5=A2=9E=E5=8A=A0=E7=BC=96=E7=A0=81?=
=?UTF-8?q?=E5=AD=97=E6=AE=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_dlm/data/product_data.xml | 1 +
sf_manufacturing/data/stock_data.xml | 7 +++
.../models/mrp_routing_workcenter.py | 9 ++-
sf_manufacturing/models/product_template.py | 4 +-
.../views/mrp_routing_workcenter_view.xml | 3 +
sf_sale/models/auto_quatotion_common.py | 2 +-
sf_sale/models/quick_easy_order.py | 4 +-
sf_sale/models/sale_order.py | 6 +-
sf_sale/security/ir.model.access.csv | 2 +-
sf_sale/views/sale_order_view.xml | 2 +-
sf_warehouse/models/model.py | 24 -------
sf_warehouse/views/view.xml | 63 -------------------
12 files changed, 26 insertions(+), 101 deletions(-)
diff --git a/sf_dlm/data/product_data.xml b/sf_dlm/data/product_data.xml
index f4a256bd..95d19c39 100644
--- a/sf_dlm/data/product_data.xml
+++ b/sf_dlm/data/product_data.xml
@@ -1,5 +1,6 @@
+
坯料
坯料
diff --git a/sf_manufacturing/data/stock_data.xml b/sf_manufacturing/data/stock_data.xml
index 74d02b4a..6bd0fe53 100644
--- a/sf_manufacturing/data/stock_data.xml
+++ b/sf_manufacturing/data/stock_data.xml
@@ -1,6 +1,13 @@
+
+ 工序编码规则
+ mrp.routing.workcenter
+ 4
+
+
+
YourCompany Sequence ocout
WH/OCOUT/
diff --git a/sf_manufacturing/models/mrp_routing_workcenter.py b/sf_manufacturing/models/mrp_routing_workcenter.py
index c8e7d8aa..95c70533 100644
--- a/sf_manufacturing/models/mrp_routing_workcenter.py
+++ b/sf_manufacturing/models/mrp_routing_workcenter.py
@@ -1,5 +1,6 @@
import logging
-from odoo import fields, models
+from odoo import fields, models, api
+from odoo.exceptions import UserError
class ResMrpRoutingWorkcenter(models.Model):
@@ -21,13 +22,17 @@ class ResMrpRoutingWorkcenter(models.Model):
bom_id = fields.Many2one('mrp.bom', required=False)
surface_technics_id = fields.Many2one('sf.production.process', string="表面工艺")
+ def generate_code(self):
+ return self.env['ir.sequence'].next_by_code('mrp.routing.workcenter')
+
+ code = fields.Char('编码', default=generate_code)
+
# 获得当前登陆者公司
def get_company_id(self):
self.company_id = self.env.user.company_id.id
company_id = fields.Many2one('res.company', compute="get_company_id", related=False)
-
# 排产的时候, 根据坯料的长宽高比对一下机床的最大加工尺寸.不符合就不要分配给这个加工中心(机床).
# 工单对应的工作中心,根据工序中的工作中心去匹配,
# 如果只配置了一个工作中心,则默认采用该工作中心;
diff --git a/sf_manufacturing/models/product_template.py b/sf_manufacturing/models/product_template.py
index 7a341c36..42a392e2 100644
--- a/sf_manufacturing/models/product_template.py
+++ b/sf_manufacturing/models/product_template.py
@@ -6,8 +6,8 @@ import os
from odoo import models, fields, api, _
from odoo.exceptions import ValidationError
from odoo.modules import get_resource_path
-# from OCC.Extend.DataExchange import read_step_file
-# from OCC.Extend.DataExchange import write_stl_file
+from OCC.Extend.DataExchange import read_step_file
+from OCC.Extend.DataExchange import write_stl_file
class ResProductMo(models.Model):
diff --git a/sf_manufacturing/views/mrp_routing_workcenter_view.xml b/sf_manufacturing/views/mrp_routing_workcenter_view.xml
index d0db3a7b..5ab745db 100644
--- a/sf_manufacturing/views/mrp_routing_workcenter_view.xml
+++ b/sf_manufacturing/views/mrp_routing_workcenter_view.xml
@@ -6,6 +6,9 @@
mrp.routing.workcenter
+
+
+
+ attrs="{'invisible': ['|','&',('check_status', '!=', 'approved'),('state', 'in', ['draft','cancel']),'&','&',('check_status', '=', 'approved'),('state', 'in', ['sale','cancel']),('schedule_status', 'not in', False)]}"/>
{'invisible': ['|',('state', 'in', ['cancel']),('check_status', 'in',
diff --git a/sf_warehouse/models/model.py b/sf_warehouse/models/model.py
index b78ab04c..d03789cd 100644
--- a/sf_warehouse/models/model.py
+++ b/sf_warehouse/models/model.py
@@ -567,30 +567,6 @@ class SfPickingType(models.Model):
self.check_state = 'enable'
-class SfProductCategory(models.Model):
- _inherit = 'product.category'
-
- check_state = fields.Selection([
- ('enable', '启用'),
- ('close', '关闭')
- ], string='审核状态', default='close')
-
- def action_check(self):
- self.check_state = 'enable'
-
-
-class SfUomCategory(models.Model):
- _inherit = 'uom.category'
-
- check_state = fields.Selection([
- ('enable', '启用'),
- ('close', '关闭')
- ], string='审核状态', default='close')
-
- def action_check(self):
- self.check_state = 'enable'
-
-
class SfBarcodeNomenclature(models.Model):
_inherit = 'barcode.nomenclature'
diff --git a/sf_warehouse/views/view.xml b/sf_warehouse/views/view.xml
index e4a2ea85..7f315363 100644
--- a/sf_warehouse/views/view.xml
+++ b/sf_warehouse/views/view.xml
@@ -312,69 +312,6 @@
-
-
-
- product.category.form.sf.inherit
- product.category
-
-
-
-
-
-
-
-
-
-
- product.category.tree.sf.inherit
- product.category
-
-
-
-
-
-
-
-
-
-
- uom.category.form.sf.inherit
- uom.category
-
-
-
-
-
-
-
-
-
-
- uom.category.tree.sf.inherit
- uom.category
-
-
-
-
-
-
-
-
barcode.nomenclature.form.sf.inherit
From af348c4d8f98b2d4e79994bb3e37bb82929d4104 Mon Sep 17 00:00:00 2001
From: "jinling.yang"
Date: Fri, 19 Jan 2024 17:11:20 +0800
Subject: [PATCH 9/9] =?UTF-8?q?1.=E4=BF=AE=E5=A4=8D=E5=B9=B3=E5=8F=B0?=
=?UTF-8?q?=E6=B4=BE=E5=8D=95=E9=87=87=E8=B4=AD=E5=8D=95=E6=97=A0=E4=B9=B0?=
=?UTF-8?q?=E5=AE=B6=E9=97=AE=E9=A2=982.=E8=BF=98=E5=8E=9F=E8=8E=B7?=
=?UTF-8?q?=E5=8F=96CNC=E7=A8=8B=E5=BA=8F=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_manufacturing/models/mrp_production.py | 2 +-
sf_sale/models/sale_order.py | 12 ++++++++++++
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py
index 44bd0c04..cb326ee8 100644
--- a/sf_manufacturing/models/mrp_production.py
+++ b/sf_manufacturing/models/mrp_production.py
@@ -247,7 +247,7 @@ class MrpProduction(models.Model):
'state': 'pending',
}]
if production.product_id.categ_id.type == '成品':
- # production.fetchCNC()
+ production.fetchCNC()
# 根据加工面板的面数及对应的工序模板生成工单
i = 0
processing_panel_len = len(production.product_id.model_processing_panel.split(','))
diff --git a/sf_sale/models/sale_order.py b/sf_sale/models/sale_order.py
index 7e991132..8a7e68f6 100644
--- a/sf_sale/models/sale_order.py
+++ b/sf_sale/models/sale_order.py
@@ -128,10 +128,22 @@ class RePurchaseOrder(models.Model):
check_status = fields.Selection([('pending', '待审核'), ('approved', '已审核'), ('fail', '不通过')], '审核状态')
remark = fields.Text('备注')
+ user_id = fields.Many2one(
+ 'res.users', string='买家', index=True, tracking=True,
+ compute='_compute_user_id',
+ store=True)
def button_confirming(self):
self.write({'state': 'purchase', 'check_status': 'pending'})
+ @api.depends('partner_id')
+ def _compute_user_id(self):
+ if not self.user_id:
+ if self.partner_id:
+ self.user_id = self.partner_id.purchase_user_id.id
+ else:
+ self.user_id = self.env.user.id
+
@api.constrains('order_line')
def check_order_line(self):
for item in self: