mirror of
https://github.com/OCA/manufacture.git
synced 2025-01-28 16:37:15 +02:00
69 lines
2.6 KiB
Python
69 lines
2.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
##############################################################################
|
|
# For copyright and license notices, see __openerp__.py file in root directory
|
|
##############################################################################
|
|
from openerp import models, fields, api, _
|
|
import math
|
|
|
|
|
|
class MrpBom(models.Model):
|
|
_inherit = 'mrp.bom'
|
|
|
|
@api.multi
|
|
def _prepare_wc_line(self, wc_use, level=0, factor=1):
|
|
res = super(MrpBom, self)._prepare_wc_line(
|
|
wc_use, level=level, factor=factor)
|
|
cycle_by_bom = self.env['mrp.config.settings']._get_parameter(
|
|
'cycle.by.bom')
|
|
if not (cycle_by_bom and cycle_by_bom.value == 'True'):
|
|
production = self.env.context.get('production')
|
|
factor = self._factor(production and production.product_qty or 1,
|
|
self.product_efficiency,
|
|
self.product_rounding)
|
|
cycle = int(math.ceil(factor / (wc_use.cycle_nbr or 1)))
|
|
hour = wc_use.hour_nbr * cycle
|
|
default_wc_line = wc_use.op_wc_lines.filtered(lambda r: r.default)
|
|
data_source = (default_wc_line if default_wc_line.custom_data else
|
|
default_wc_line.workcenter)
|
|
time_start = data_source.time_start
|
|
time_stop = data_source.time_stop
|
|
res.update({
|
|
'cycle': cycle,
|
|
'hour': hour,
|
|
'time_start': time_start,
|
|
'time_stop': time_stop,
|
|
'routing_wc_line': wc_use.id,
|
|
'do_production': wc_use.do_production,
|
|
})
|
|
return res
|
|
|
|
@api.model
|
|
def _prepare_consume_line(self, bom_line, quantity, factor=1):
|
|
res = super(MrpBom, self)._prepare_consume_line(
|
|
bom_line, quantity, factor=factor)
|
|
res['bom_line'] = bom_line.id
|
|
return res
|
|
|
|
@api.multi
|
|
@api.onchange('routing_id')
|
|
def onchange_routing_id(self):
|
|
for line in self.bom_line_ids:
|
|
line.operation = self.routing_id.workcenter_lines[:1]
|
|
res = {}
|
|
if self.routing_id:
|
|
res['warning'] = {
|
|
'title': _('Changing Routing'),
|
|
'message': _(
|
|
"Changing routing will cause to change the operation in "
|
|
"which each component will be consumed, by default it is "
|
|
"set the first one of the routing")
|
|
}
|
|
return res
|
|
|
|
|
|
class MrpBomLine(models.Model):
|
|
_inherit = 'mrp.bom.line'
|
|
|
|
operation = fields.Many2one(
|
|
comodel_name='mrp.routing.workcenter', string='Consumed in')
|