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
Beispiel #2
0
 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
Beispiel #3
0
 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
Beispiel #4
0
 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