优化工件配送和空料架
This commit is contained in:
@@ -13,6 +13,7 @@
|
|||||||
'depends': ['sf_base', 'sf_maintenance', 'web_widget_model_viewer', 'sf_warehouse'],
|
'depends': ['sf_base', 'sf_maintenance', 'web_widget_model_viewer', 'sf_warehouse'],
|
||||||
'data': [
|
'data': [
|
||||||
'data/stock_data.xml',
|
'data/stock_data.xml',
|
||||||
|
'data/empty_racks_data.xml',
|
||||||
'security/group_security.xml',
|
'security/group_security.xml',
|
||||||
'security/ir.model.access.csv',
|
'security/ir.model.access.csv',
|
||||||
'wizard/workpiece_delivery_views.xml',
|
'wizard/workpiece_delivery_views.xml',
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ class Workpiece(http.Controller):
|
|||||||
req_codes = ret['reqCode'].split(',')
|
req_codes = ret['reqCode'].split(',')
|
||||||
for req_code in req_codes:
|
for req_code in req_codes:
|
||||||
workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search(
|
workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search(
|
||||||
[('delivery_num', '=', req_code.strip()), ('task_completion_time', '=', False)])
|
[('name', '=', req_code.strip()), ('task_completion_time', '=', False)])
|
||||||
if workpiece_delivery:
|
if workpiece_delivery:
|
||||||
workpiece_delivery.write({'status': '已配送', 'task_completion_time': datetime.now()})
|
workpiece_delivery.write({'status': '已配送', 'task_completion_time': datetime.now()})
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -1,36 +1,48 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<odoo>
|
<odoo>
|
||||||
<data noupdate="1">
|
<data noupdate="0">
|
||||||
<record id="sequence_workpiece_delivery_1" model="ir.sequence">
|
<record id="sequence_workpiece_delivery" model="ir.sequence">
|
||||||
|
<field name="name">工件配送</field>
|
||||||
|
<field name="code">sf.workpiece.delivery</field>
|
||||||
|
<field name="prefix">WDO%(year)s%(month)s%(day)s</field>
|
||||||
|
<field name="padding">4</field>
|
||||||
|
<field name="company_id" eval="False"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="workpiece_delivery_empty_racks_1" model="sf.workpiece.delivery">
|
||||||
<field name="name">运送空料架路线:C01-A01</field>
|
<field name="name">运送空料架路线:C01-A01</field>
|
||||||
<field name="code">sf.workpiece.delivery</field>
|
<field name="type">运送空料架</field>
|
||||||
<field name="prefix">WCA%(year)s%(month)s%(day)s</field>
|
<field name="route_id"
|
||||||
<field name="padding">4</field>
|
search="[('start_site_id.name','=','C01'),('end_site_id.name','=','A01')]"/>
|
||||||
<field name="company_id" eval="False"/>
|
<field name="feeder_station_start_id" search="[('name','=','C01')]"/>
|
||||||
|
<field name="feeder_station_destination_id" search="[('name','=','A01')]"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="sequence_workpiece_delivery_2" model="ir.sequence">
|
<record id="workpiece_delivery_empty_racks_2" model="sf.workpiece.delivery">
|
||||||
<field name="name">运送空料架路线:B01-B02</field>
|
<field name="name">运送空料架路线:B01-B02</field>
|
||||||
<field name="code">sf.workpiece.delivery</field>
|
<field name="type">运送空料架</field>
|
||||||
<field name="prefix">WBB%(year)s%(month)s%(day)s</field>
|
<field name="route_id"
|
||||||
<field name="padding">4</field>
|
search="[('start_site_id.name','=','B01'),('end_site_id.name','=','B02')]"/>
|
||||||
<field name="company_id" eval="False"/>
|
<field name="feeder_station_start_id" search="[('name','=','B01')]"/>
|
||||||
|
<field name="feeder_station_destination_id" search="[('name','=','B02')]"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="sequence_workpiece_delivery_3" model="ir.sequence">
|
<record id="workpiece_delivery_empty_racks_3" model="sf.workpiece.delivery">
|
||||||
<field name="name">运送空料架路线:B01-A01</field>
|
<field name="name">运送空料架路线:B01-A01</field>
|
||||||
<field name="code">sf.workpiece.delivery</field>
|
<field name="type">运送空料架</field>
|
||||||
<field name="prefix">WBA%(year)s%(month)s%(day)s</field>
|
<field name="route_id"
|
||||||
<field name="padding">4</field>
|
search="[('start_site_id.name','=','B01'),('end_site_id.name','=','A01')]"/>
|
||||||
<field name="company_id" eval="False"/>
|
<field name="feeder_station_start_id" search="[('name','=','B01')]"/>
|
||||||
|
<field name="feeder_station_destination_id" search="[('name','=','A01')]"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="sequence_workpiece_delivery_4" model="ir.sequence">
|
<record id="workpiece_delivery_empty_racks_4" model="sf.workpiece.delivery">
|
||||||
<field name="name">运送空料架路线:C01-B02</field>
|
<field name="name">运送空料架路线:C01-B02</field>
|
||||||
<field name="code">sf.workpiece.delivery</field>
|
<field name="type">运送空料架</field>
|
||||||
<field name="prefix">WCB%(year)s%(month)s%(day)s</field>
|
<field name="route_id"
|
||||||
<field name="padding">4</field>
|
search="[('start_site_id.name','=','C01'),('end_site_id.name','=','B02')]"/>
|
||||||
<field name="company_id" eval="False"/>
|
<field name="feeder_station_start_id" search="[('name','=','C01')]"/>
|
||||||
|
<field name="feeder_station_destination_id" search="[('name','=','B02')]"/>
|
||||||
</record>
|
</record>
|
||||||
</data>
|
</data>
|
||||||
</odoo>
|
</odoo>
|
||||||
@@ -46,11 +46,4 @@ class AgvTaskRoute(models.Model):
|
|||||||
start_site_id = fields.Many2one('sf.agv.site', '起点接驳站位置编号')
|
start_site_id = fields.Many2one('sf.agv.site', '起点接驳站位置编号')
|
||||||
end_site_id = fields.Many2one('sf.agv.site', '终点接驳站位置编号')
|
end_site_id = fields.Many2one('sf.agv.site', '终点接驳站位置编号')
|
||||||
destination_production_line_id = fields.Many2one('sf.production.line', '目的生产线')
|
destination_production_line_id = fields.Many2one('sf.production.line', '目的生产线')
|
||||||
priority = fields.Selection([
|
|
||||||
('0', '正常'),
|
|
||||||
('1', '低'),
|
|
||||||
('2', '中'),
|
|
||||||
('3', '高'),
|
|
||||||
('4', '紧急'),
|
|
||||||
], string='优先级', default='0')
|
|
||||||
active = fields.Boolean('有效', default=True)
|
active = fields.Boolean('有效', default=True)
|
||||||
|
|||||||
@@ -484,9 +484,8 @@ class ResMrpWorkOrder(models.Model):
|
|||||||
|
|
||||||
def _json_workpiece_delivery_list(self, production):
|
def _json_workpiece_delivery_list(self, production):
|
||||||
return [
|
return [
|
||||||
[0, '', {'production_id': production.id, 'type': '上产线', 'delivery_num': '%s-%s' % (production.name, 1)}],
|
[0, '', {'production_id': production.id, 'type': '上产线'}],
|
||||||
[0, '',
|
[0, '', {'production_id': production.id, 'type': '下产线'}]]
|
||||||
{'production_id': production.id, 'type': '下产线', 'delivery_num': '%s-%s' % (production.name, 2)}]]
|
|
||||||
|
|
||||||
# 拼接工单对象属性值(表面工艺)
|
# 拼接工单对象属性值(表面工艺)
|
||||||
def _json_workorder_surface_process_str(self, production, route, process_parameter, supplier_id):
|
def _json_workorder_surface_process_str(self, production, route, process_parameter, supplier_id):
|
||||||
@@ -770,7 +769,7 @@ class ResMrpWorkOrder(models.Model):
|
|||||||
raise UserError("请对前置三元检测定位参数进行计算定位")
|
raise UserError("请对前置三元检测定位参数进行计算定位")
|
||||||
if not self.rfid_code:
|
if not self.rfid_code:
|
||||||
raise UserError("请扫RFID码进行绑定")
|
raise UserError("请扫RFID码进行绑定")
|
||||||
self.workpiece_delivery_ids[0].write({'status': '待下发'})
|
# self.workpiece_delivery_ids[0].write({'status': '待下发'})
|
||||||
if self.picking_out_id:
|
if self.picking_out_id:
|
||||||
picking_out = self.env['stock.picking'].search([('id', '=', self.picking_out_id.id)])
|
picking_out = self.env['stock.picking'].search([('id', '=', self.picking_out_id.id)])
|
||||||
if picking_out.workorder_out_id:
|
if picking_out.workorder_out_id:
|
||||||
@@ -1078,8 +1077,7 @@ class WorkPieceDelivery(models.Model):
|
|||||||
_name = "sf.workpiece.delivery"
|
_name = "sf.workpiece.delivery"
|
||||||
_description = '工件配送'
|
_description = '工件配送'
|
||||||
|
|
||||||
name = fields.Char('名称')
|
name = fields.Char('单据编号')
|
||||||
delivery_num = fields.Char('工件配送编码')
|
|
||||||
workorder_id = fields.Many2one('mrp.workorder', string='工单', readonly=True)
|
workorder_id = fields.Many2one('mrp.workorder', string='工单', readonly=True)
|
||||||
production_id = fields.Many2one('mrp.production', string='制造订单号', readonly=True)
|
production_id = fields.Many2one('mrp.production', string='制造订单号', readonly=True)
|
||||||
production_line_id = fields.Many2one('sf.production.line', string='目的生产线')
|
production_line_id = fields.Many2one('sf.production.line', string='目的生产线')
|
||||||
@@ -1098,8 +1096,22 @@ class WorkPieceDelivery(models.Model):
|
|||||||
is_cnc_program_down = fields.Boolean('程序是否下发', default=False)
|
is_cnc_program_down = fields.Boolean('程序是否下发', default=False)
|
||||||
active = fields.Boolean(string="有效", default=True)
|
active = fields.Boolean(string="有效", default=True)
|
||||||
|
|
||||||
# @api.model
|
@api.model
|
||||||
# def create(self, vals):
|
def create(self, vals):
|
||||||
|
if vals.get('name', '/') == '/' or vals.get('name', '/') is False:
|
||||||
|
vals['name'] = self.env['ir.sequence'].next_by_code('sf.workpiece.delivery') or '/'
|
||||||
|
obj = super(WorkPieceDelivery, self).create(vals)
|
||||||
|
return obj
|
||||||
|
|
||||||
|
def action_delivery_history(self):
|
||||||
|
return {
|
||||||
|
'name': _('配送历史'),
|
||||||
|
'type': 'ir.actions.act_window',
|
||||||
|
'view_mode': 'tree',
|
||||||
|
'res_model': 'sf.workpiece.delivery',
|
||||||
|
'view_id': self.env.ref('sf_manufacturing.sf_workpiece_delivery_empty_racks_tree').id,
|
||||||
|
'domain': [('type', '=', '运送空料架'), ('route_id', '=', self.route_id.id), ('name', 'ilike', 'WDO')]
|
||||||
|
}
|
||||||
|
|
||||||
@api.onchange('route_id')
|
@api.onchange('route_id')
|
||||||
def onchange_route(self):
|
def onchange_route(self):
|
||||||
@@ -1120,8 +1132,16 @@ class WorkPieceDelivery(models.Model):
|
|||||||
num = 0
|
num = 0
|
||||||
for item in self:
|
for item in self:
|
||||||
num += 1
|
num += 1
|
||||||
|
if item.type == "运送空料架":
|
||||||
|
if num >= 2:
|
||||||
|
raise UserError('仅选择一条路线进行配送,请重新选择')
|
||||||
|
else:
|
||||||
|
delivery_ids.append(item.id)
|
||||||
|
else:
|
||||||
if num > 4:
|
if num > 4:
|
||||||
raise UserError('仅限于配送1-4个制造订单,请重新选择')
|
raise UserError('仅限于配送1-4个制造订单,请重新选择')
|
||||||
|
if item.status in ['待配送', '已配送']:
|
||||||
|
raise UserError('请选择状态为【待下发】的制造订单进行配送')
|
||||||
if item.route_id:
|
if item.route_id:
|
||||||
if same_route_id is None:
|
if same_route_id is None:
|
||||||
same_route_id = item.route_id.id
|
same_route_id = item.route_id.id
|
||||||
@@ -1162,7 +1182,11 @@ class WorkPieceDelivery(models.Model):
|
|||||||
'default_delivery_ids': [(6, 0, delivery_ids)],
|
'default_delivery_ids': [(6, 0, delivery_ids)],
|
||||||
}}
|
}}
|
||||||
else:
|
else:
|
||||||
raise UserError("您所选择制造订单的【任务路线】的【终点接驳站】已占用,请在该接驳站空闲时进行配送")
|
if self.type == '运送空料架':
|
||||||
|
raise UserError("您所选择的【任务路线】的【终点接驳站】已占用,请在该接驳站空闲时进行配送")
|
||||||
|
else:
|
||||||
|
raise UserError(
|
||||||
|
"您所选择制造订单的【任务路线】的【终点接驳站】已占用,请在该接驳站空闲时或选择其他路线进行配送")
|
||||||
|
|
||||||
# 验证agv站点是否可用
|
# 验证agv站点是否可用
|
||||||
def _check_avgsite_state(self):
|
def _check_avgsite_state(self):
|
||||||
@@ -1171,21 +1195,29 @@ class WorkPieceDelivery(models.Model):
|
|||||||
if agv_site:
|
if agv_site:
|
||||||
agv_site.update_site_state()
|
agv_site.update_site_state()
|
||||||
for item in self:
|
for item in self:
|
||||||
if item.type in ["上产线", "下产线"]:
|
|
||||||
logging.info('工件配送-起点状态:%s-%s' % (
|
logging.info('工件配送-起点状态:%s-%s' % (
|
||||||
item.feeder_station_start_id.name, item.feeder_station_start_id.state))
|
item.feeder_station_start_id.name, item.feeder_station_start_id.state))
|
||||||
logging.info('工件配送-终点状态:%s-%s' % (
|
logging.info('工件配送-终点状态:%s-%s' % (
|
||||||
item.feeder_station_destination_id.name, item.feeder_station_destination_id.state))
|
item.feeder_station_destination_id.name, item.feeder_station_destination_id.state))
|
||||||
|
if item.type in ['上产线', '下产线']:
|
||||||
if (
|
if (
|
||||||
item.feeder_station_start_id.state == '占用' and item.feeder_station_destination_id.state == '空闲') or (
|
item.feeder_station_start_id.state == '占用' and item.feeder_station_destination_id.state == '空闲') or (
|
||||||
item.feeder_station_start_id.state == '空闲' and item.feeder_station_destination_id.state == '空闲'):
|
item.feeder_station_start_id.state == '空闲' and item.feeder_station_destination_id.state == '空闲'):
|
||||||
is_free = True
|
is_free = True
|
||||||
|
else:
|
||||||
|
if item.feeder_station_destination_id.state == '空闲':
|
||||||
|
is_free = True
|
||||||
logging.info('is_free:%s' % is_free)
|
logging.info('is_free:%s' % is_free)
|
||||||
return is_free
|
return is_free
|
||||||
|
|
||||||
# 配送至avg小车
|
# 配送至avg小车
|
||||||
def _delivery_avg(self):
|
def _delivery_avg(self):
|
||||||
config = self.env['res.config.settings'].get_values()
|
config = self.env['res.config.settings'].get_values()
|
||||||
|
if self.type == '运送空料架':
|
||||||
|
self = self.create(
|
||||||
|
{'name': self.env['ir.sequence'].next_by_code('sf.workpiece.delivery'), 'route_id': self.route_id.id,
|
||||||
|
'feeder_station_start_id': self.feeder_station_start_id.id,
|
||||||
|
'feeder_station_destination_id': self.feeder_station_destination_id.id})
|
||||||
positionCode_Arr = []
|
positionCode_Arr = []
|
||||||
delivery_Arr = []
|
delivery_Arr = []
|
||||||
feeder_station_start = None
|
feeder_station_start = None
|
||||||
@@ -1195,7 +1227,7 @@ class WorkPieceDelivery(models.Model):
|
|||||||
feeder_station_start = item.feeder_station_start_id.name
|
feeder_station_start = item.feeder_station_start_id.name
|
||||||
if feeder_station_destination is None:
|
if feeder_station_destination is None:
|
||||||
feeder_station_destination = item.feeder_station_destination_id.name
|
feeder_station_destination = item.feeder_station_destination_id.name
|
||||||
delivery_Arr.append(item.delivery_num)
|
delivery_Arr.append(item.name)
|
||||||
delivery_str = ','.join(map(str, delivery_Arr))
|
delivery_str = ','.join(map(str, delivery_Arr))
|
||||||
if feeder_station_start is not None:
|
if feeder_station_start is not None:
|
||||||
positionCode_Arr.append({
|
positionCode_Arr.append({
|
||||||
@@ -1224,12 +1256,13 @@ class WorkPieceDelivery(models.Model):
|
|||||||
req_codes = ret['reqCode'].split(',')
|
req_codes = ret['reqCode'].split(',')
|
||||||
for delivery_item in self:
|
for delivery_item in self:
|
||||||
for req_code in req_codes:
|
for req_code in req_codes:
|
||||||
if delivery_item.delivery_num == req_code.strip():
|
if delivery_item.name == req_code.strip():
|
||||||
logging.info('delivery_num:%s' % delivery_item.delivery_num)
|
logging.info('delivery_item-name:%s' % delivery_item.name)
|
||||||
delivery_item.write({
|
delivery_item.write({
|
||||||
'task_delivery_time': fields.Datetime.now(),
|
'task_delivery_time': fields.Datetime.now(),
|
||||||
'status': '待配送'
|
'status': '待配送'
|
||||||
})
|
})
|
||||||
|
if delivery_item == "上产线":
|
||||||
delivery_item.workorder_id.write({'is_delivery': True})
|
delivery_item.workorder_id.write({'is_delivery': True})
|
||||||
else:
|
else:
|
||||||
raise UserError(ret['message'])
|
raise UserError(ret['message'])
|
||||||
|
|||||||
@@ -591,8 +591,7 @@
|
|||||||
decoration-warning="status == '待下发'"
|
decoration-warning="status == '待下发'"
|
||||||
decoration-danger="status == '待配送'"/>
|
decoration-danger="status == '待配送'"/>
|
||||||
<field name="production_id"/>
|
<field name="production_id"/>
|
||||||
<field name="type"/>
|
<field name="type" readonly="1"/>
|
||||||
<!-- <field name="delivery_num" />-->
|
|
||||||
<field name="production_line_id" options="{'no_create': True}"/>
|
<field name="production_line_id" options="{'no_create': True}"/>
|
||||||
<field name="route_id" options="{'no_create': True}"/>
|
<field name="route_id" options="{'no_create': True}"/>
|
||||||
<field name="feeder_station_start_id" readonly="1" force_save="1"/>
|
<field name="feeder_station_start_id" readonly="1" force_save="1"/>
|
||||||
@@ -644,45 +643,42 @@
|
|||||||
|
|
||||||
<!--=========================================运送空料架列表======================================-->
|
<!--=========================================运送空料架列表======================================-->
|
||||||
<record id="sf_workpiece_delivery_empty_racks_template_tree" model="ir.ui.view">
|
<record id="sf_workpiece_delivery_empty_racks_template_tree" model="ir.ui.view">
|
||||||
<field name="name">运送空料架</field>
|
<field name="name">空料架配送</field>
|
||||||
<field name="model">sf.workpiece.delivery</field>
|
<field name="model">sf.workpiece.delivery</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<tree string="工件配送" editable="bottom" class="center" create="0" delete="0">
|
<tree string="工件配送" class="center" create="0" edit="0" delete="0">
|
||||||
<header>
|
<header>
|
||||||
<button name="button_delivery" type="object" string="配送" class="oe_highlight"/>
|
<button name="button_delivery" type="object" string="配送" class="oe_highlight"/>
|
||||||
</header>
|
</header>
|
||||||
|
<field name="name" string="路线名称" readonly="1"/>
|
||||||
<field name="route_id" options="{'no_create': True}"/>
|
<field name="route_id" options="{'no_create': True}"/>
|
||||||
<field name="feeder_station_start_id" readonly="1" force_save="1"/>
|
<field name="feeder_station_start_id" readonly="1"/>
|
||||||
<field name="feeder_station_destination_id" readonly="1" force_save="1"/>
|
<field name="feeder_station_destination_id" readonly="1"/>
|
||||||
|
<button name="action_delivery_history" type="object" class="btn btn-link text-info" icon="fa-history"
|
||||||
|
string="历史"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="sf_workpiece_delivery_empty_racks_tree" model="ir.ui.view">
|
||||||
|
<field name="name">空料架配送</field>
|
||||||
|
<field name="model">sf.workpiece.delivery</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<tree string="运送空料架" class="center" create="0" delete="0" edit="0">
|
||||||
|
<field name="status"/>
|
||||||
|
<field name="route_id"/>
|
||||||
|
<field name="feeder_station_start_id"/>
|
||||||
|
<field name="feeder_station_destination_id"/>
|
||||||
|
<field name="task_delivery_time"/>
|
||||||
|
<field name="task_completion_time"/>
|
||||||
|
<field name="delivery_duration" widget="float_time"/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
|
||||||
<record model="ir.ui.view" id="form_sf_workpiece_delivery_empty_racks">
|
|
||||||
<field name="name">运送空料架</field>
|
|
||||||
<field name="model">sf.workpiece.delivery</field>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<form string="运送空料架" delete="1">
|
|
||||||
<sheet>
|
|
||||||
<header>
|
|
||||||
<button name="button_delivery" type="object" string="配送" class="oe_highlight"/>
|
|
||||||
</header>
|
|
||||||
<group>
|
|
||||||
<group>
|
|
||||||
<field name="route_id"/>
|
|
||||||
<field name="feeder_station_start_id"/>
|
|
||||||
<field name="feeder_station_destination_id"/>
|
|
||||||
</group>
|
|
||||||
</group>
|
|
||||||
</sheet>
|
|
||||||
</form>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
|
|
||||||
<record id="sf_workpiece_delivery_empty_racks_search" model="ir.ui.view">
|
<record id="sf_workpiece_delivery_empty_racks_search" model="ir.ui.view">
|
||||||
<field name="name">运送空料架</field>
|
<field name="name">空料架配送</field>
|
||||||
<field name="model">sf.workpiece.delivery</field>
|
<field name="model">sf.workpiece.delivery</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<search string="运送空料架">
|
<search string="运送空料架">
|
||||||
@@ -695,12 +691,12 @@
|
|||||||
|
|
||||||
|
|
||||||
<record id="sf_workpiece_delivery_empty_racks_act" model="ir.actions.act_window">
|
<record id="sf_workpiece_delivery_empty_racks_act" model="ir.actions.act_window">
|
||||||
<field name="name">运送空料架</field>
|
<field name="name">空料架配送</field>
|
||||||
<field name="res_model">sf.workpiece.delivery</field>
|
<field name="res_model">sf.workpiece.delivery</field>
|
||||||
<field name="view_id" ref="sf_workpiece_delivery_empty_racks_template_tree"/>
|
<field name="view_id" ref="sf_workpiece_delivery_empty_racks_template_tree"/>
|
||||||
<field name="search_view_id" ref="sf_workpiece_delivery_empty_racks_search"/>
|
<field name="search_view_id" ref="sf_workpiece_delivery_empty_racks_search"/>
|
||||||
<field name="view_mode">tree,form</field>
|
<field name="view_mode">tree</field>
|
||||||
<field name="domain">[('type','in',['运送空料架'])]</field>
|
<field name="domain">[('type','in',['运送空料架']),('name','not ilike','WDO')]</field>
|
||||||
</record>
|
</record>
|
||||||
</odoo>
|
</odoo>
|
||||||
|
|
||||||
|
|||||||
@@ -309,7 +309,7 @@
|
|||||||
|
|
||||||
<menuitem
|
<menuitem
|
||||||
id="sf_workpiece_delivery__empty_racks_menu"
|
id="sf_workpiece_delivery__empty_racks_menu"
|
||||||
name="运送空料架"
|
name="空料架配送"
|
||||||
sequence="11"
|
sequence="11"
|
||||||
action="sf_manufacturing.sf_workpiece_delivery_empty_racks_act"
|
action="sf_manufacturing.sf_workpiece_delivery_empty_racks_act"
|
||||||
parent="mrp.menu_mrp_manufacturing"
|
parent="mrp.menu_mrp_manufacturing"
|
||||||
|
|||||||
Reference in New Issue
Block a user