From 4251e6dec7cc464beb706bbb7640b7d4f9e9172a Mon Sep 17 00:00:00 2001 From: guanhuan Date: Mon, 25 Nov 2024 16:41:47 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E8=AF=A6=E6=83=85=E7=95=8C=E9=9D=A2=E7=9A=84?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=B7=A5=E5=BA=8F=E4=B8=8D=E8=83=BD=E5=88=A0?= =?UTF-8?q?=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/security/ir.model.access.csv | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sf_manufacturing/security/ir.model.access.csv b/sf_manufacturing/security/ir.model.access.csv index f9f4c159..24c38570 100644 --- a/sf_manufacturing/security/ir.model.access.csv +++ b/sf_manufacturing/security/ir.model.access.csv @@ -11,11 +11,11 @@ access_sf_model_type_group_sale_director,sf_model_type_group_sale_director,model access_sf_model_type_group_purchase_director,sf_model_type_group_purchase_director,model_sf_model_type,sf_base.group_purchase_director,1,0,0,0 access_sf_model_type_group_plan_director,sf_model_type_group_plan_director,model_sf_model_type,sf_base.group_plan_director,1,0,0,0 access_sf_product_model_type_routing_sort_group_sf_mrp_user,sf_product_model_type_routing_sort,model_sf_product_model_type_routing_sort,sf_base.group_sf_mrp_user,1,0,0,0 -access_sf_product_model_type_routing_sort_manager,sf_product_model_type_routing_sort,model_sf_product_model_type_routing_sort,sf_base.group_sf_mrp_manager,1,1,1,0 +access_sf_product_model_type_routing_sort_manager,sf_product_model_type_routing_sort,model_sf_product_model_type_routing_sort,sf_base.group_sf_mrp_manager,1,1,1,1 access_sf_embryo_model_type_routing_sort_group_sf_mrp_user,sf_embryo_model_type_routing_sort,model_sf_embryo_model_type_routing_sort,sf_base.group_sf_mrp_user,1,0,0,0 -access_sf_embryo_model_type_routing_sort_manager,sf_embryo_model_type_routing_sort,model_sf_embryo_model_type_routing_sort,sf_base.group_sf_mrp_manager,1,1,1,0 +access_sf_embryo_model_type_routing_sort_manager,sf_embryo_model_type_routing_sort,model_sf_embryo_model_type_routing_sort,sf_base.group_sf_mrp_manager,1,1,1,1 access_sf_surface_technics_model_type_routing_sort,sf_surface_technics_model_type_routing_sort,model_sf_surface_technics_model_type_routing_sort,sf_base.group_sf_mrp_user,1,0,0,0 -access_sf_surface_technics_model_type_routing_sort_manager,sf_surface_technics_model_type_routing_sort,model_sf_surface_technics_model_type_routing_sort,sf_base.group_sf_mrp_manager,1,1,1,0 +access_sf_surface_technics_model_type_routing_sort_manager,sf_surface_technics_model_type_routing_sort,model_sf_surface_technics_model_type_routing_sort,sf_base.group_sf_mrp_manager,1,1,1,1 access_sf_production_line_group_sf_mrp_user,sf.production.line,model_sf_production_line,sf_base.group_sf_mrp_user,1,1,1,0 access_sf_production_line_manager,sf.production.line,model_sf_production_line,sf_base.group_sf_mrp_manager,1,1,1,0 access_maintenance_equipment_tool_group_sf_mrp_user,maintenance_equipment_tool,model_maintenance_equipment_tool,sf_base.group_sf_mrp_user,1,0,0,0 @@ -176,6 +176,6 @@ access_sf_production_technology_re_adjust_wizard_group_sf_mrp_manager,sf_product access_sf_production_technology_re_adjust_wizard_group_production_engineer,sf_production_technology_re_adjust_wizard_group_production_engineer,model_sf_production_technology_re_adjust_wizard,sf_base.group_production_engineer,1,1,1,0 access_sf_manual_product_model_type_routing_sort_group_sf_mrp_user,sf_manual_product_model_type_routing_sort,model_sf_manual_product_model_type_routing_sort,sf_base.group_sf_mrp_user,1,0,0,0 -access_sf_manual_product_model_type_routing_sort_manager,sf_manual_product_model_type_routing_sort,model_sf_manual_product_model_type_routing_sort,sf_base.group_sf_mrp_manager,1,1,1,0 +access_sf_manual_product_model_type_routing_sort_manager,sf_manual_product_model_type_routing_sort,model_sf_manual_product_model_type_routing_sort,sf_base.group_sf_mrp_manager,1,1,1,1 access_sf_manual_product_model_type_routing_sort_group_plan_dispatch,sf_manual_product_model_type_routing_sort_group_plan_dispatch,model_sf_manual_product_model_type_routing_sort,sf_base.group_plan_dispatch,1,0,0,0 access_sf_detection_result_manager,sf_detection_result_manager,model_sf_detection_result,,1,1,1,1 From 56dfb98df57be3b0830cbddade365606e012607c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E5=B0=A7?= Date: Mon, 25 Nov 2024 16:43:46 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=AD=90=E5=88=B6=E9=80=A0=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=A2=9E=E5=8A=A0=E6=8B=8D=E6=89=BF=E6=8B=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/stock.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sf_manufacturing/models/stock.py b/sf_manufacturing/models/stock.py index 3ecb80be..8b80e1e7 100644 --- a/sf_manufacturing/models/stock.py +++ b/sf_manufacturing/models/stock.py @@ -281,6 +281,11 @@ class StockRule(models.Model): workorder_duration += workorder.duration_expected sale_order = self.env['sale.order'].sudo().search([('name', '=', production.origin)]) + # 如果订单为空,则获取来源制造订单的销售单 + if not sale_order: + mrp_production = self.env['mrp.production'].sudo().search([('name', '=', production.origin)], limit=1) + if mrp_production: + sale_order = self.env['sale.order'].sudo().search([('name', '=', mrp_production.origin)]) if sale_order: # sale_order.write({'schedule_status': 'to schedule'}) self.env['sf.production.plan'].sudo().with_company(company_id).create({ From f318dc758bdf66e215c1ad3181e4eff0c3650069 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E5=B0=A7?= Date: Mon, 25 Nov 2024 17:18:57 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=9D=AF=E6=96=99?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E5=8D=95=E6=A0=B9=E6=8D=AE=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E5=90=88=E5=B9=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/stock.py | 5 ----- sf_sale/models/__init__.py | 1 + sf_sale/models/stock_move.py | 9 +++++++++ 3 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 sf_sale/models/stock_move.py diff --git a/sf_manufacturing/models/stock.py b/sf_manufacturing/models/stock.py index 8b80e1e7..42141da9 100644 --- a/sf_manufacturing/models/stock.py +++ b/sf_manufacturing/models/stock.py @@ -981,11 +981,6 @@ class ReStockMove(models.Model): res['retrospect_ref'] = production.product_id.name return res - def _single_manufactuing_mo_generate_origin(self, res): - """ - 单个制造订单的完成move单据修改来源为该制造订单关联的销售订单下所有成品相同的制造订单 - """ - class ReStockQuant(models.Model): _inherit = 'stock.quant' diff --git a/sf_sale/models/__init__.py b/sf_sale/models/__init__.py index 97400237..30552565 100644 --- a/sf_sale/models/__init__.py +++ b/sf_sale/models/__init__.py @@ -4,4 +4,5 @@ from . import quick_easy_order_old from . import auto_quatotion_common from . import parser_and_calculate_work_time from . import preload_datas_functions +from . import stock_move diff --git a/sf_sale/models/stock_move.py b/sf_sale/models/stock_move.py new file mode 100644 index 00000000..de522509 --- /dev/null +++ b/sf_sale/models/stock_move.py @@ -0,0 +1,9 @@ +from odoo import models, fields, api + +class StockMove(models.Model): + _inherit = 'stock.move' + + @api.model + def _prepare_merge_negative_moves_excluded_distinct_fields(self): + excluded_fields = super()._prepare_merge_negative_moves_excluded_distinct_fields() + ['pruchase_type'] + return excluded_fields \ No newline at end of file From 589df289bee18117bdaee3520fbcada1061afd91 Mon Sep 17 00:00:00 2001 From: mgw <1392924357@qq.com> Date: Mon, 25 Nov 2024 17:24:14 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E5=86=85=E9=83=A8=E8=B0=83=E6=8B=A8?= =?UTF-8?q?=E5=8D=95=E7=BC=BA=E5=B0=91=E6=BA=90=E5=8D=95=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/stock.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sf_manufacturing/models/stock.py b/sf_manufacturing/models/stock.py index c9c97ec7..9ffc0aa2 100644 --- a/sf_manufacturing/models/stock.py +++ b/sf_manufacturing/models/stock.py @@ -972,6 +972,8 @@ class ReStockMove(models.Model): res = super(ReStockMove, self)._get_new_picking_values() if self[0].origin and self.picking_type_id.name in ['生产发料', '内部调拨']: production = self.env['mrp.production'].search([('name', '=', self[0].origin)], limit=1, order='id asc') + if not production: + return res productions = self.env['mrp.production'].search( [('origin', '=', production.origin), ('product_id', '=', production.product_id.id)]) res['origin'] = ','.join(productions.mapped('name'))