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 @@
-