新增零件名称,零件图号

This commit is contained in:
guanhuan
2024-12-30 09:43:20 +08:00
parent ab5b4c477f
commit f3e08f5ccc
4 changed files with 66 additions and 30 deletions

View File

@@ -25,7 +25,7 @@
# 只有它被屏蔽了 # 只有它被屏蔽了
# 'views/SfWorkOrderBarcodes.xml', # 'views/SfWorkOrderBarcodes.xml',
'views/WorkCenterBarcodes.xml', 'views/WorkCenterBarcodes.xml',
'views/Stock_picking_Barcodes.xml', # 'views/Stock_picking_Barcodes.xml',
'views/machine_monitor.xml', 'views/machine_monitor.xml',
'views/machine_info_present.xml', 'views/machine_info_present.xml',
'views/delivery_record.xml', 'views/delivery_record.xml',

View File

@@ -588,40 +588,33 @@ class StockPicking(models.Model):
address_of_delivery = fields.Char('联系地址', compute='_compute_move_ids', store=True) address_of_delivery = fields.Char('联系地址', compute='_compute_move_ids', store=True)
retrospect_ref = fields.Char('追溯参考', compute='_compute_move_ids', store=True) retrospect_ref = fields.Char('追溯参考', compute='_compute_move_ids', store=True)
sale_order_id = fields.Many2one('sale.order', '销售单号', compute='_compute_move_ids', store=True)
picking_type_sequence_code = fields.Char(related='picking_type_id.sequence_code') picking_type_sequence_code = fields.Char(related='picking_type_id.sequence_code')
@api.depends('move_ids', 'move_ids.product_id') @api.depends('move_ids', 'move_ids.product_id')
def _compute_move_ids(self): def _compute_move_ids(self):
for item in self: for item in self:
if item.move_ids: if item.move_ids:
if item.picking_type_id.sequence_code == 'DL': product_id = item.move_ids[0].product_id
sale_name = item.move_ids[0].product_id.name.split('-')[1] if product_id:
if 'S' in sale_name: sale_info = None
sale_id = self.env['sale.order'].sudo().search([('name', '=', sale_name)]) if product_id.categ_id.type == '坯料' and product_id.name.startswith('R-S'):
item.person_of_delivery = sale_id.person_of_delivery parts = product_id.name.split('-')
item.telephone_of_delivery = sale_id.telephone_of_delivery if len(parts) >= 3:
item.address_of_delivery = sale_id.address_of_delivery sale_name = parts[1]
sale_info = self.env['sale.order'].sudo().search(
[('name', '=', sale_name)])
else: else:
raise ValidationError('坯料名称格式错误,正确格式为[R-S???-?]') production_list = self.env['mrp.production'].sudo().search(
move_ids = [] [('product_id', '=', product_id.id)])
for move_id in item.move_ids: if production_list:
move_ids.append(move_id.product_id.id) sale_info = production_list[0].sale_order_id
boms = self.env['mrp.bom'].sudo().search([('bom_line_ids.product_id', 'in', move_ids)]) if sale_info:
if boms: item.sale_order_id = sale_info.id
codes_list = [] if item.picking_type_id.sequence_code == 'DL':
for bom in boms: item.person_of_delivery = sale_info.person_of_delivery
if bom.product_tmpl_id.default_code: item.telephone_of_delivery = sale_info.telephone_of_delivery
code_list = bom.product_tmpl_id.default_code.split('-') item.address_of_delivery = sale_info.address_of_delivery
if len(code_list) >= 4:
code = '-'.join(code_list[:4])
if code not in codes_list:
codes_list.append(code)
else:
raise ValidationError('坯料成品的内部参考值格式错误')
item.retrospect_ref = ','.join(codes_list)
elif item.picking_type_id.sequence_code in ['INT', 'PC']:
pass
# 设置外协出入单的名称 # 设置外协出入单的名称
def _get_name_Res(self, rescode): def _get_name_Res(self, rescode):
@@ -727,6 +720,34 @@ class ReStockMove(models.Model):
materiel_length = fields.Float(string='物料长度', digits=(16, 4)) materiel_length = fields.Float(string='物料长度', digits=(16, 4))
materiel_width = fields.Float(string='物料宽度', digits=(16, 4)) materiel_width = fields.Float(string='物料宽度', digits=(16, 4))
materiel_height = fields.Float(string='物料高度', digits=(16, 4)) materiel_height = fields.Float(string='物料高度', digits=(16, 4))
part_number = fields.Char(string='零件图号', compute='_compute_part_info', store=True)
part_name = fields.Char(string='零件名称', compute='_compute_part_info', store=True)
@api.depends('product_id')
def _compute_part_info(self):
for move in self:
if move.product_id.categ_id.type == '成品':
move.part_number = move.product_id.part_number
move.part_name = move.product_id.part_name
elif move.product_id.categ_id.type == '坯料':
if move.origin:
origin = move.origin.split(',')[0] if ',' in move.origin else move.origin
mrp_productio_info = self.env['mrp.production'].sudo().search(
[('name', '=', origin)])
if mrp_productio_info:
move.part_number = mrp_productio_info.part_number
move.part_name = mrp_productio_info.part_name
else:
purchase_order_info = self.env['purchase.order'].sudo().search(
[('name', '=', origin)])
if purchase_order_info:
mrp_production_ids = purchase_order_info._get_mrp_productions().ids
if mrp_production_ids:
mrp_productio_info = self.env['mrp.production'].sudo().search(
[('id', '=', mrp_production_ids[0])])
if mrp_productio_info:
move.part_number = mrp_productio_info.part_number
move.part_name = mrp_productio_info.part_name
def _get_stock_move_values_Res(self, item, picking_type_id, group_id, move_dest_ids=False): def _get_stock_move_values_Res(self, item, picking_type_id, group_id, move_dest_ids=False):
route_id = self.env.ref('sf_manufacturing.route_surface_technology_outsourcing').id route_id = self.env.ref('sf_manufacturing.route_surface_technology_outsourcing').id

View File

@@ -17,6 +17,9 @@
<field name="model">stock.picking</field> <field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_form"/> <field name="inherit_id" ref="stock.view_picking_form"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//field[@name='origin']" position="after">
<field name="sale_order_id"/>
</xpath>
<xpath expr="//field[@name='user_id']" position="after"> <xpath expr="//field[@name='user_id']" position="after">
<field name="picking_type_sequence_code" invisible="1"/> <field name="picking_type_sequence_code" invisible="1"/>
<field name="retrospect_ref" <field name="retrospect_ref"
@@ -26,6 +29,10 @@
attrs="{'invisible':[('picking_type_sequence_code','!=','DL')]}"/> attrs="{'invisible':[('picking_type_sequence_code','!=','DL')]}"/>
<field name="address_of_delivery" attrs="{'invisible':[('picking_type_sequence_code','!=','DL')]}"/> <field name="address_of_delivery" attrs="{'invisible':[('picking_type_sequence_code','!=','DL')]}"/>
</xpath> </xpath>
<xpath expr="//field[@name='product_id']" position="after">
<field name="part_number" optional="show"/>
<field name="part_name" optional="show"/>
</xpath>
</field> </field>
</record> </record>
@@ -34,6 +41,9 @@
<field name="model">stock.picking</field> <field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.vpicktree"/> <field name="inherit_id" ref="stock.vpicktree"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//field[@name='origin']" position="before">
<field name="sale_order_id" string="销售单号"/>
</xpath>
<xpath expr="//field[@name='origin']" position="after"> <xpath expr="//field[@name='origin']" position="after">
<field name="retrospect_ref"/> <field name="retrospect_ref"/>
</xpath> </xpath>
@@ -45,8 +55,13 @@
<field name="model">stock.picking</field> <field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_internal_search"/> <field name="inherit_id" ref="stock.view_picking_internal_search"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//field[@name='name']" position="replace">
<field name="name"/>
<field name="retrospect_ref"/>
<field name="sale_order_id" string="销售单号"/>
</xpath>
<xpath expr="//filter[@name='picking_type']" position="after"> <xpath expr="//filter[@name='picking_type']" position="after">
<filter string="追溯参考" name="retrospect_ref" domain="[]" <filter string="追溯参考" name="retrospect" domain="[]"
context="{'group_by': 'retrospect_ref'}"/> context="{'group_by': 'retrospect_ref'}"/>
</xpath> </xpath>
</field> </field>

View File

@@ -1123,7 +1123,7 @@ class SfPickingType(models.Model):
if not self.env.user.has_group('base.group_system'): if not self.env.user.has_group('base.group_system'):
action['context']['create'] = False action['context']['create'] = False
if self.sequence_code in ['DL', 'INT', 'PC']: if self.sequence_code in ['DL', 'INT', 'PC']:
action['context']['search_default_retrospect_ref'] = 1 action['context']['search_default_retrospect'] = 1
return action return action