def action_produce(self, production_id, production_qty, production_mode, wiz=False): """" En eln_production se añade a production_mode el modo: 'produce'. No ponemos dicho módulo como dependencia ya que en caso de no estar instalado este código sería inocuo y no generaría tampoco ningún error. """ production = self.browse(production_id) done_moves = production.move_created_ids2.filtered( lambda r: r.state == 'done') res = super(MrpProduction, self).action_produce(production_id, production_qty, production_mode, wiz=wiz) if production_mode == 'produce': inspection_model = self.env['qc.inspection'] for move in production.move_created_ids2.filtered( lambda r: r.state == 'done') - done_moves: qc_trigger = self.env.ref('quality_control_mrp.qc_trigger_mrp') trigger_lines = set() for model in [ 'qc.trigger.product_category_line', 'qc.trigger.product_template_line', 'qc.trigger.product_line' ]: trigger_lines = trigger_lines.union( self.env[model].get_trigger_line_for_product( qc_trigger, move.product_id)) for trigger_line in _filter_trigger_lines(trigger_lines): inspection_model._make_inspection(move, trigger_line) return res
def action_produce(self, production_id, production_qty, production_mode, wiz=False): res = super(MrpProduction, self).action_produce( production_id, production_qty, production_mode, wiz=wiz) if production_mode == 'consume_produce': inspection_model = self.env['qc.inspection'] for move in self.move_created_ids2: qc_trigger = self.env.ref('quality_control_mrp.qc_trigger_mrp') trigger_lines = set() for model in ['qc.trigger.product_category_line', 'qc.trigger.product_template_line', 'qc.trigger.product_line']: trigger_lines = trigger_lines.union( self.env[model].get_trigger_line_for_product( qc_trigger, move.product_id)) for trigger_line in _filter_trigger_lines(trigger_lines): inspection_model._make_inspection(move, trigger_line) return res
def do_transfer(self): res = super(StockPicking, self).do_transfer() inspection_model = self.env['qc.inspection'] for operation in self.pack_operation_ids: qc_trigger = self.env['qc.trigger'].search( [('picking_type', '=', self.picking_type_id.id)]) trigger_lines = set() for model in ['qc.trigger.product_category_line', 'qc.trigger.product_template_line', 'qc.trigger.product_line']: partner = (self.partner_id if qc_trigger.partner_selectable else False) trigger_lines = trigger_lines.union( self.env[model].get_trigger_line_for_product( qc_trigger, operation.product_id, partner=partner)) for trigger_line in _filter_trigger_lines(trigger_lines): inspection_model._make_inspection(operation, trigger_line) return res
def _resolve_inventory_line(self, line): move_id = super(InventoryLine, self)._resolve_inventory_line(line) move = self.env['stock.move'].browse(move_id) inspection_model = self.env['qc.inspection'] qc_trigger = self.env.ref( 'quality_control_stock_inventory.qc_trigger_inventory') trigger_lines = set() for model in [ 'qc.trigger.product_category_line', 'qc.trigger.product_template_line', 'qc.trigger.product_line' ]: trigger_lines = trigger_lines.union( self.env[model].get_trigger_line_for_product( qc_trigger, move.product_id)) for trigger_line in _filter_trigger_lines(trigger_lines): inspection_model.with_context( default_inventory_line_id=line.id)._make_inspection( move, trigger_line) return move_id
def generate_qc_inspection(self): self.ensure_one() production_ids = self._context.get('active_ids', []) productions = self.env['mrp.production'].browse(production_ids) productions = productions.filtered(lambda r: r.state not in ('draft', 'cancel')) inspection_model = inspections = self.env['qc.inspection'] for production in productions: inspection_model = self.env['qc.inspection'] for move in production.move_created_ids2.filtered( lambda r: r.state == 'done'): qc_triggers = \ self.env.ref('quality_control_mrp.qc_trigger_mrp') + \ self.env.ref('eln_quality_control.qc_trigger_mrp_manual') for qc_trigger in qc_triggers: trigger_lines = set() for model in [ 'qc.trigger.product_category_line', 'qc.trigger.product_template_line', 'qc.trigger.product_line' ]: trigger_lines = trigger_lines.union( self.env[model].get_trigger_line_for_product( qc_trigger, move.product_id)) for trigger_line in _filter_trigger_lines(trigger_lines): inspections |= inspection_model._make_inspection( move, trigger_line) if inspections: inspections.write({'auto_generated': False}) if len(productions) > 1: domain = [('id', 'in', inspections._ids)] else: domain = [('production', 'in', productions._ids)] return { 'domain': domain, 'name': _('Quality inspections from productions'), 'view_type': 'form', 'view_mode': 'tree,form', 'res_model': 'qc.inspection', 'view_id': False, 'type': 'ir.actions.act_window' }
def generate_qc_inspection(self): self.ensure_one() picking_ids = self._context.get('active_ids', []) pickings = self.env['stock.picking'].browse(picking_ids) pickings = pickings.filtered(lambda r: r.state == 'done') inspection_model = inspections = self.env['qc.inspection'] for picking in pickings: for operation in picking.pack_operation_ids: qc_trigger = self.env['qc.trigger'].search([ ('picking_type', '=', picking.picking_type_id.id) ]) trigger_lines = set() for model in [ 'qc.trigger.product_category_line', 'qc.trigger.product_template_line', 'qc.trigger.product_line' ]: partner = (picking.partner_id if qc_trigger.partner_selectable else False) trigger_lines = trigger_lines.union( self.env[model].get_trigger_line_for_product( qc_trigger, operation.product_id, partner=partner)) for trigger_line in _filter_trigger_lines(trigger_lines): inspections |= inspection_model._make_inspection( operation, trigger_line) if inspections: inspections.write({'auto_generated': False}) if len(pickings) > 1: domain = [('id', 'in', inspections._ids)] else: domain = [('picking', 'in', pickings._ids)] return { 'domain': domain, 'name': _('Quality inspections from picking'), 'view_type': 'form', 'view_mode': 'tree,form', 'res_model': 'qc.inspection', 'view_id': False, 'type': 'ir.actions.act_window' }
def do_transfer(self): res = super(StockPicking, self).do_transfer() inspection_model = self.env['qc.inspection'] for operation in self.pack_operation_ids: qc_trigger = self.env['qc.trigger'].search([ ('picking_type', '=', self.picking_type_id.id) ]) trigger_lines = set() for model in [ 'qc.trigger.product_category_line', 'qc.trigger.product_template_line', 'qc.trigger.product_line' ]: partner = (self.partner_id if qc_trigger.partner_selectable else False) trigger_lines = trigger_lines.union( self.env[model].get_trigger_line_for_product( qc_trigger, operation.product_id, partner=partner)) for trigger_line in _filter_trigger_lines(trigger_lines): inspection_model._make_inspection(operation, trigger_line) return res