diff --git a/jikimo_frontend/static/src/scss/custom_style.scss b/jikimo_frontend/static/src/scss/custom_style.scss index 8eb76259..6904dbac 100644 --- a/jikimo_frontend/static/src/scss/custom_style.scss +++ b/jikimo_frontend/static/src/scss/custom_style.scss @@ -536,3 +536,7 @@ div:has(.o_required_modifier) > label::before { position: unset; } +// 修复搜索面板checkbox样式 +.o_search_panel .form-check .form-check-label span { + position: relative; +} \ No newline at end of file diff --git a/jikimo_hide_options/models/models.py b/jikimo_hide_options/models/models.py index 8f30543c..6386192d 100644 --- a/jikimo_hide_options/models/models.py +++ b/jikimo_hide_options/models/models.py @@ -190,7 +190,7 @@ def _create(self, data_list): # 如果该用户组被限制创建或更新操作 if rec['is_create_or_update']: raise UserError( - _("You are restricted from performing this operation. Please contact the administrator.")) + _("您没有执行此操作的权限。请联系管理员")) else: # 如果 'access.right' 模型不存在,可以在这里定义备选逻辑 # 例如,记录日志、发送通知或者简单地跳过这部分逻辑 diff --git a/jikimo_sale_multiple_supply_methods/__manifest__.py b/jikimo_sale_multiple_supply_methods/__manifest__.py index a7d39ac7..cfc56321 100644 --- a/jikimo_sale_multiple_supply_methods/__manifest__.py +++ b/jikimo_sale_multiple_supply_methods/__manifest__.py @@ -6,12 +6,11 @@ 'author': 'fox', 'website': '', 'category': '', - 'depends': ['sf_dlm', 'sale_stock', 'sf_sale'], + 'depends': ['sf_dlm', 'sale_stock', 'sf_sale', 'sale'], "data": [ 'security/ir.model.access.csv', 'data/stock_routes.xml', 'data/product_data.xml', - 'views/sale_order_views.xml', # 'views/product_product_views.xml', ],'assets': { # 'web.assets_backend': [ diff --git a/jikimo_sale_multiple_supply_methods/controllers/__init__.py b/jikimo_sale_multiple_supply_methods/controllers/__init__.py index cd4d6a8b..40a96afc 100644 --- a/jikimo_sale_multiple_supply_methods/controllers/__init__.py +++ b/jikimo_sale_multiple_supply_methods/controllers/__init__.py @@ -1,2 +1 @@ # -*- coding: utf-8 -*- -from . import main \ No newline at end of file diff --git a/jikimo_sale_multiple_supply_methods/models/__init__.py b/jikimo_sale_multiple_supply_methods/models/__init__.py index 6629e86d..0674dbe8 100644 --- a/jikimo_sale_multiple_supply_methods/models/__init__.py +++ b/jikimo_sale_multiple_supply_methods/models/__init__.py @@ -1,4 +1,3 @@ # -*- coding: utf-8 -*- from . import product_template -from . import sale_order from . import mrp_bom diff --git a/sf_manufacturing/__manifest__.py b/sf_manufacturing/__manifest__.py index 35620913..991b26ab 100644 --- a/sf_manufacturing/__manifest__.py +++ b/sf_manufacturing/__manifest__.py @@ -37,6 +37,7 @@ 'views/agv_setting_views.xml', 'views/sf_maintenance_equipment.xml', 'views/res_config_settings_views.xml', + 'views/sale_order_views.xml', ], 'assets': { diff --git a/sf_manufacturing/controllers/__init__.py b/sf_manufacturing/controllers/__init__.py index 4d20cb33..4b95e252 100644 --- a/sf_manufacturing/controllers/__init__.py +++ b/sf_manufacturing/controllers/__init__.py @@ -1,2 +1,3 @@ from . import controllers from . import workpiece +from . import main diff --git a/jikimo_sale_multiple_supply_methods/controllers/main.py b/sf_manufacturing/controllers/main.py similarity index 100% rename from jikimo_sale_multiple_supply_methods/controllers/main.py rename to sf_manufacturing/controllers/main.py diff --git a/sf_manufacturing/models/__init__.py b/sf_manufacturing/models/__init__.py index b0c295f5..9f77d841 100644 --- a/sf_manufacturing/models/__init__.py +++ b/sf_manufacturing/models/__init__.py @@ -13,3 +13,5 @@ from . import agv_scheduling from . import res_config_setting from . import sf_technology_design from . import sf_production_common +from . import sale_order +from . import quick_easy_order diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index 7bd9d1c8..2f36ad79 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -126,7 +126,7 @@ class ResMrpWorkOrder(models.Model): Y10_axis = fields.Float(default=0) Z10_axis = fields.Float(default=0) X_deviation_angle = fields.Integer(string="X轴偏差度", default=0) - test_results = fields.Selection([("合格", "合格"), ("返工", "返工"), ("报废", "报废")], default='合格', + test_results = fields.Selection([("合格", "合格")], default='合格', string="检测结果", tracking=True) cnc_ids = fields.One2many("sf.cnc.processing", 'workorder_id', string="CNC加工程序") cmm_ids = fields.One2many("sf.cmm.program", 'workorder_id', string="CMM程序") @@ -283,7 +283,8 @@ class ResMrpWorkOrder(models.Model): # if technology_design.is_auto is False: # domain = [('origin', '=', order.production_id.name)] # else: - domain = [('purchase_type', '=', 'consignment'), ('origin', '=', order.production_id.name)] + domain = [('purchase_type', '=', 'consignment'), ('origin', '=', order.production_id.name), + ('state', '!=', 'cancel')] purchase = self.env['purchase.order'].search(domain) purchase_num = 0 if not purchase: @@ -313,7 +314,8 @@ class ResMrpWorkOrder(models.Model): # if technology_design.is_auto is False: # domain = [('origin', '=', self.production_id.name)] # else: - domain = [('origin', '=', self.production_id.name), ('purchase_type', '=', 'consignment')] + domain = [('origin', '=', self.production_id.name), ('purchase_type', '=', 'consignment'), + ('state', '!=', 'cancel')] purchase_orders = self.env['purchase.order'].search(domain) purchase_orders_id = None for po in purchase_orders: diff --git a/jikimo_sale_multiple_supply_methods/models/quick_easy_order.py b/sf_manufacturing/models/quick_easy_order.py similarity index 100% rename from jikimo_sale_multiple_supply_methods/models/quick_easy_order.py rename to sf_manufacturing/models/quick_easy_order.py diff --git a/jikimo_sale_multiple_supply_methods/models/sale_order.py b/sf_manufacturing/models/sale_order.py similarity index 100% rename from jikimo_sale_multiple_supply_methods/models/sale_order.py rename to sf_manufacturing/models/sale_order.py diff --git a/sf_manufacturing/models/stock.py b/sf_manufacturing/models/stock.py index 0c01a57c..50c7e672 100644 --- a/sf_manufacturing/models/stock.py +++ b/sf_manufacturing/models/stock.py @@ -649,10 +649,10 @@ class StockPicking(models.Model): for mi in move_in: pick = self.env['stock.picking'].search([('id', '=', mi.picking_id.id), ('name', 'ilike', 'OCIN'), ('partner_id', '=', self.partner_id.id)]) - if pick: - if mi.state != 'done': - mi.write({'state': 'assigned'}) - self.env['stock.move.line'].create(mi.get_move_line(production, None)) + # if pick: + # if mi.state != 'done': + # mi.write({'state': 'assigned'}) + # self.env['stock.move.line'].create(mi.get_move_line(production, None)) return res @@ -671,6 +671,11 @@ class StockPicking(models.Model): if not sorted_workorders.picking_ids: # outcontract_stock_move = self.env['stock.move'].search([('production_id', '=', item.id)]) # if not outcontract_stock_move: + # 创建一个新的补货组 + procurement_group_id = self.env['procurement.group'].create({ + 'name': sorted_workorders.name, + 'partner_id': self.partner_id.id, + }) new_picking = True location_id = self.env['stock.location'].search( [('barcode', 'ilike', 'VL-SPOC')]).id, @@ -680,24 +685,25 @@ class StockPicking(models.Model): 'sf_manufacturing.outcontract_picking_in').id, outcontract_picking_type_out = self.env.ref( 'sf_manufacturing.outcontract_picking_out').id, - moves_out = self.env['stock.move'].sudo().create( - self.env['stock.move']._get_stock_move_values_Res(item, location_dest_id, location_id, - outcontract_picking_type_out)) - picking_out = self.create( - moves_out._get_new_picking_values_Res(item, sorted_workorders, 'WH/OCOUT/')) - # pick_ids.append(picking_out.id) - moves_out.write( - {'picking_id': picking_out.id, 'state': 'waiting'}) - moves_out._assign_picking_post_process(new=new_picking) moves_in = self.env['stock.move'].sudo().create( self.env['stock.move']._get_stock_move_values_Res(item, location_id, location_dest_id, - outcontract_picking_type_in)) + outcontract_picking_type_in, procurement_group_id.id)) picking_in = self.create( moves_in._get_new_picking_values_Res(item, sorted_workorders, 'WH/OCIN/')) # pick_ids.append(picking_in.id) moves_in.write( {'picking_id': picking_in.id, 'state': 'waiting'}) moves_in._assign_picking_post_process(new=new_picking) + moves_out = self.env['stock.move'].sudo().create( + self.env['stock.move']._get_stock_move_values_Res(item, location_dest_id, location_id, + outcontract_picking_type_out, procurement_group_id.id, moves_in.id)) + picking_out = self.create( + moves_out._get_new_picking_values_Res(item, sorted_workorders, 'WH/OCOUT/')) + # pick_ids.append(picking_out.id) + moves_out.write( + {'picking_id': picking_out.id, 'state': 'waiting'}) + moves_out._assign_picking_post_process(new=new_picking) + class ReStockMove(models.Model): @@ -707,7 +713,7 @@ class ReStockMove(models.Model): materiel_width = fields.Float(string='物料宽度', digits=(16, 4)) materiel_height = fields.Float(string='物料高度', digits=(16, 4)) - def _get_stock_move_values_Res(self, item, location_src_id, location_dest_id, picking_type_id): + def _get_stock_move_values_Res(self, item, location_src_id, location_dest_id, picking_type_id, group_id, move_dest_ids=False): route = self.env['stock.route'].sudo().search([('name', '=', '表面工艺外协')]) move_values = { 'name': '推', @@ -718,6 +724,8 @@ class ReStockMove(models.Model): 'location_id': location_src_id, 'location_dest_id': location_dest_id, 'origin': item.name, + 'group_id': group_id, + 'move_dest_ids': [(6, 0, [move_dest_ids])] if move_dest_ids else False, # 'route_ids': False if not route else [(4, route.id)], 'date_deadline': datetime.now(), 'picking_type_id': picking_type_id, diff --git a/sf_manufacturing/views/mrp_workorder_view.xml b/sf_manufacturing/views/mrp_workorder_view.xml index 13fff868..be1a6523 100644 --- a/sf_manufacturing/views/mrp_workorder_view.xml +++ b/sf_manufacturing/views/mrp_workorder_view.xml @@ -200,7 +200,7 @@ -