2010-03-26 10:15:01 +00:00
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
2012-12-06 14:56:32 +00:00
from openerp . osv import fields , osv
2010-03-26 10:15:01 +00:00
2014-05-27 07:42:52 +00:00
class product_template ( osv . osv ) :
_inherit = " product.template "
def _bom_orders_count ( self , cr , uid , ids , field_name , arg , context = None ) :
Bom = self . pool ( ' mrp.bom ' )
res = { }
for product_tmpl_id in ids :
nb = Bom . search_count ( cr , uid , [ ( ' product_tmpl_id ' , ' = ' , product_tmpl_id ) ] , context = context )
res [ product_tmpl_id ] = {
' bom_count ' : nb ,
' bom_strct ' : nb ,
}
return res
def _bom_orders_count_mo ( self , cr , uid , ids , name , arg , context = None ) :
res = { }
for product_tmpl_id in self . browse ( cr , uid , ids ) :
res [ product_tmpl_id . id ] = sum ( [ p . mo_count for p in product_tmpl_id . product_variant_ids ] )
return res
_columns = {
" bom_ids " : fields . one2many ( ' mrp.bom ' , ' product_tmpl_id ' , ' Bill of Materials ' ) ,
' bom_count ' : fields . function ( _bom_orders_count , string = ' # Bill of Material ' , type = ' integer ' , multi = " _bom_order_count " ) ,
' bom_strct ' : fields . function ( _bom_orders_count , string = ' # Bill of Material Structure ' , type = ' integer ' , multi = " _bom_order_count " ) ,
' mo_count ' : fields . function ( _bom_orders_count_mo , string = ' # Manufacturing Orders ' , type = ' integer ' ) ,
}
def copy ( self , cr , uid , id , default = None , context = None ) :
if not default :
default = { }
default . update ( {
' bom_ids ' : [ ]
} )
return super ( product_template , self ) . copy ( cr , uid , id , default , context = context )
2010-03-26 10:15:01 +00:00
class product_product ( osv . osv ) :
2014-05-27 07:42:52 +00:00
_inherit = " product.product "
def _bom_orders_count ( self , cr , uid , ids , field_name , arg , context = None ) :
Production = self . pool ( ' mrp.production ' )
res = { }
for product_id in ids :
res [ product_id ] = Production . search_count ( cr , uid , [ ( ' product_id ' , ' = ' , product_id ) ] , context = context )
return res
2010-06-14 10:28:26 +00:00
_columns = {
2013-10-29 07:48:15 +00:00
" produce_delay " : fields . float ( ' Manufacturing Lead Time ' , help = " Average delay in days to produce this product. In the case of multi-level BOM, the manufacturing lead times of the components will be added. " ) ,
2014-01-07 10:39:15 +00:00
' track_production ' : fields . boolean ( ' Track Manufacturing Lots ' , help = " Forces to specify a Serial Number for all moves containing this product and generated by a Manufacturing Order " ) ,
2014-05-27 07:42:52 +00:00
' mo_count ' : fields . function ( _bom_orders_count , string = ' # Manufacturing Orders ' , type = ' integer ' ) ,
2013-10-29 07:48:15 +00:00
}
_defaults = {
" produce_delay " : 1 ,
2010-06-14 10:28:26 +00:00
}
2011-01-17 08:31:22 +00:00
2011-11-22 08:51:38 +00:00
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: