avanzosc team mailing list archive
-
avanzosc team
-
Mailing list archive
-
Message #00483
[Merge] lp:~mikelarregi/avanzosc/dos_mrp_production into lp:~avanzosc-security-team/avanzosc/72horas
mikel arregi has proposed merging lp:~mikelarregi/avanzosc/dos_mrp_production into lp:~avanzosc-security-team/avanzosc/72horas.
Requested reviews:
Avanzosc_security (avanzosc-security-team)
For more details, see:
https://code.launchpad.net/~mikelarregi/avanzosc/dos_mrp_production/+merge/223764
dos_mrp_production
--
https://code.launchpad.net/~mikelarregi/avanzosc/dos_mrp_production/+merge/223764
Your team Avanzosc_security is requested to review the proposed merge of lp:~mikelarregi/avanzosc/dos_mrp_production into lp:~avanzosc-security-team/avanzosc/72horas.
=== modified file 'dos_mrp_production/__openerp__.py'
--- dos_mrp_production/__openerp__.py 2014-06-11 10:23:47 +0000
+++ dos_mrp_production/__openerp__.py 2014-06-19 14:52:33 +0000
@@ -21,17 +21,14 @@
{
- "name" : "DOS Mrp Production",
- "version" : "1.0",
- "author" : "DOS",
- "category" : "Production",
- "website" : "www.dos-sl.es",
- "description": "This module allows automates the selection of locations for production orders.",
- "depends" : ["dos_product_additional_info", "mrp"],
- "init_xml" : [],
- "update_xml" : ['stock_view.xml',],
- "active": False,
- "installable": True
+ "name": "DOS Mrp Production",
+ "version": "1.0",
+ "author": "DOS",
+ "category": "Production",
+ "website": "www.dos-sl.es",
+ "description": "This module allows automates the selection of "
+ "locations for production orders.",
+ "depends": ["dos_product_additional_info", "mrp"],
+ "data": ['stock_view.xml'],
+ "installable": True
}
-
-
=== added directory 'dos_mrp_production/models'
=== renamed file 'dos_mrp_production/mrp_procurement.py' => 'dos_mrp_production/models/mrp_procurement.py'
--- dos_mrp_production/mrp_procurement.py 2014-06-11 10:23:47 +0000
+++ dos_mrp_production/models/mrp_procurement.py 2014-06-19 14:52:33 +0000
@@ -21,35 +21,39 @@
from datetime import datetime
from dateutil.relativedelta import relativedelta
-from osv import fields
-from osv import osv
-from tools.translate import _
-import ir
-import netsvc
-import time
-
-class procurement_order(osv.osv):
+from openerp.osv import orm, fields
+from openerp.tools.translate import _
+from . import ir
+from . import netsvc
+from . import time
+
+
+class procuremenOrder(orm.Model):
_inherit = 'procurement.order'
-
+
def make_mo(self, cr, uid, ids, context=None):
""" Make Manufacturing(production) order from procurement
- @return: New created Production Orders procurement wise
+ @return: New created Production Orders procurement wise
"""
res = {}
- company = self.pool.get('res.users').browse(cr, uid, uid, context).company_id
- production_obj = self.pool.get('mrp.production')
- move_obj = self.pool.get('stock.move')
+ company = self.pool['res.users'].browse(cr, uid, uid,
+ context).company_id
+ production_obj = self.pool['mrp.production']
+ move_obj = self.pool['stock.move']
wf_service = netsvc.LocalService("workflow")
- procurement_obj = self.pool.get('procurement.order')
- for procurement in procurement_obj.browse(cr, uid, ids, context=context):
+ procurement_obj = self.pool['procurement.order']
+ for procurement in procurement_obj.browse(cr, uid, ids,
+ context=context):
res_id = procurement.move_id.id
loc_id = procurement.location_id.id
- newdate = datetime.strptime(procurement.date_planned, '%Y-%m-%d %H:%M:%S') - relativedelta(days=procurement.product_id.product_tmpl_id.produce_delay or 0.0)
+ tmpl_delay = procurement.product_id.product_tmpl_id.produce_delay
+ newdate = (datetime.strptime(procurement.date_planned,
+ '%Y-%m-%d %H:%M:%S') -
+ relativedelta(days=tmpl_delay or 0.0))
newdate = newdate - relativedelta(days=company.manufacturing_lead)
-
- #Si el producto esta marcado como producción unitaria
- #Creamos tantas ordenes de producción como cantidad a produccir
+ # Si el producto esta marcado como producción unitaria
+ # Creamos tantas ordenes de producción como cantidad a produccir
if procurement.product_id.unitary_prod_order:
produce_ids = []
for i in range(0, int(procurement.product_qty)):
@@ -58,55 +62,60 @@
'product_id': procurement.product_id.id,
'product_qty': 1,
'product_uom': procurement.product_uom.id,
- 'product_uos_qty': procurement.product_uos and procurement.product_uos_qty or False,
- 'product_uos': procurement.product_uos and procurement.product_uos.id or False,
+ 'product_uos_qty': (procurement.product_uos and
+ procurement.product_uos_qty
+ or False),
+ 'product_uos': (procurement.product_uos and
+ procurement.product_uos.id or False),
'location_src_id': procurement.location_id.id,
'location_dest_id': procurement.location_id.id,
- 'bom_id': procurement.bom_id and procurement.bom_id.id or False,
+ 'bom_id': (procurement.bom_id and procurement.bom_id.id
+ or False),
'date_planned': newdate.strftime('%Y-%m-%d %H:%M:%S'),
'move_prod_id': res_id,
'company_id': procurement.company_id.id,
})
-
produce_ids.append(produce_id)
-
self.write(cr, uid, [procurement.id], {'state': 'running'})
+ props = [x.id for x in procurement.property_ids]
bom_result = production_obj.action_compute(cr, uid,
- produce_ids, properties=[x.id for x in procurement.property_ids])
-
+ produce_ids,
+ properties=props)
for produce_id in produce_ids:
- wf_service.trg_validate(uid, 'mrp.production', produce_id, 'button_confirm', cr)
+ wf_service.trg_validate(uid, 'mrp.production', produce_id,
+ 'button_confirm', cr)
res[procurement.id] = produce_id
-
move_obj.write(cr, uid, [res_id],
- {'location_id': procurement.location_id.id})
-
- #Caso normal
+ {'location_id': procurement.location_id.id})
+ # Caso normal
else:
produce_id = production_obj.create(cr, uid, {
'origin': procurement.origin,
'product_id': procurement.product_id.id,
'product_qty': procurement.product_qty,
'product_uom': procurement.product_uom.id,
- 'product_uos_qty': procurement.product_uos and procurement.product_uos_qty or False,
- 'product_uos': procurement.product_uos and procurement.product_uos.id or False,
+ 'product_uos_qty': (procurement.product_uos and
+ procurement.product_uos_qty or False),
+ 'product_uos': (procurement.product_uos and
+ procurement.product_uos.id or False),
'location_src_id': procurement.location_id.id,
'location_dest_id': procurement.location_id.id,
- 'bom_id': procurement.bom_id and procurement.bom_id.id or False,
+ 'bom_id': (procurement.bom_id and procurement.bom_id.id
+ or False),
'date_planned': newdate.strftime('%Y-%m-%d %H:%M:%S'),
'move_prod_id': res_id,
'company_id': procurement.company_id.id,
})
res[procurement.id] = produce_id
self.write(cr, uid, [procurement.id], {'state': 'running'})
+ props = [x.id for x in procurement.property_ids]
bom_result = production_obj.action_compute(cr, uid,
- [produce_id], properties=[x.id for x in procurement.property_ids])
- wf_service.trg_validate(uid, 'mrp.production', produce_id, 'button_confirm', cr)
+ [produce_id],
+ properties=props)
+ wf_service.trg_validate(uid, 'mrp.production', produce_id,
+ 'button_confirm', cr)
move_obj.write(cr, uid, [res_id],
- {'location_id': procurement.location_id.id})
-
+ {'location_id': procurement.location_id.id})
return res
-
-procurement_order()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
=== renamed file 'dos_mrp_production/mrp_production.py' => 'dos_mrp_production/models/mrp_production.py'
--- dos_mrp_production/mrp_production.py 2014-06-11 10:23:47 +0000
+++ dos_mrp_production/models/mrp_production.py 2014-06-19 14:52:33 +0000
@@ -19,110 +19,104 @@
#
##############################################################################
-from osv import osv, fields
-from tools.translate import _
-import netsvc
-import time
-import tools
-
-class mrp_production(osv.osv):
-
+from openerp.osv import orm, fields
+from openerp.tools.translate import _
+from . import netsvc
+from . import time
+from . import tools
+
+
+class MrpProduction(orm.Model):
_name = 'mrp.production'
_inherit = 'mrp.production'
-
+
def product_id_change(self, cr, uid, ids, product_id, context=None):
-
- value = {}
+ value = {}
location_src_id = False
location_dest_id = False
-
- #Llamamos a la funcion on_change por defecto de product_id
- result = super(mrp_production, self).product_id_change(cr, uid, ids, product_id, context=None)
-
- if result and result.has_key('value'):
- value = result['value']
-
+ # Llamamos a la funcion on_change por defecto de product_id
+ result = super(MrpProduction, self).product_id_change(cr, uid, ids,
+ product_id,
+ context=None)
+ if result and 'value' in result:
+ value = result['value']
if product_id:
- bom_obj = self.pool.get('mrp.bom')
- product = self.pool.get('product.product').browse(cr, uid, product_id, context=context)
- bom_id = bom_obj._bom_find(cr, uid, product.id, product.uom_id and product.uom_id.id, [])
+ bom_obj = self.pool['mrp.bom']
+ product = self.pool['product.product'].browse(cr, uid,
+ product_id,
+ context=context)
+ bom_id = bom_obj._bom_find(cr, uid, product.id, product.uom_id and
+ product.uom_id.id, [])
routing_id = False
if bom_id:
bom_point = bom_obj.browse(cr, uid, bom_id, context=context)
for bom_line in bom_point.bom_lines:
+ prod = bom_line.product_id
if not location_src_id:
- location_src_id = bom_line.product_id and bom_line.product_id.property_stock_consumer_product and bom_line.product_id.property_stock_consumer_product.id or False
-
+ consum_prod = (prod and
+ prod.property_stock_consumer_product)
+ location_src_id = (consum_prod and consum_prod.id
+ or False)
if not location_dest_id:
- location_dest_id = bom_line.product_id and bom_line.product_id.property_stock_finished_product and bom_line.product_id.property_stock_finished_product.id or False
-
+ finish_prod = (prod and
+ prod.property_stock_finished_product)
+ location_dest_id = (finish_prod and finish_prod.id
+ or False)
if location_src_id and location_dest_id:
break
-
value['location_src_id'] = location_src_id
- value['location_dest_id'] = location_dest_id
-
- return {'value': value}
-
+ value['location_dest_id'] = location_dest_id
+ return {'value': value}
+
def bom_id_change(self, cr, uid, ids, bom_id, context=None):
-
value = {}
location_src_id = False
location_dest_id = False
-
- #Llamamos a la funcion on_change por defecto de product_id
- result = super(mrp_production, self).bom_id_change(cr, uid, ids, bom_id, context=None)
-
- if result and result.has_key('value'):
+ # Llamamos a la funcion on_change por defecto de product_id
+ result = super(MrpProduction, self).bom_id_change(cr, uid, ids, bom_id,
+ context=None)
+ if result and 'value' in result:
value = result['value']
-
if bom_id:
- bom_obj = self.pool.get('mrp.bom')
+ bom_obj = self.pool['mrp.bom']
bom_point = bom_obj.browse(cr, uid, bom_id, context=context)
-
for bom_line in bom_point.bom_lines:
+ prod = bom_line.product_id
if not location_src_id:
- location_src_id = bom_line.product_id and bom_line.product_id.property_stock_consumer_product and bom_line.product_id.property_stock_consumer_product.id or False
-
+ consum_prod = prod and prod.property_stock_consumer_product
+ location_src_id = (consum_prod and consum_prod.id or False)
if not location_dest_id:
- location_dest_id = bom_line.product_id and bom_line.product_id.property_stock_finished_product and bom_line.product_id.property_stock_finished_product.id or False
-
+ finish_prod = prod and prod.property_stock_finished_product
+ location_dest_id = (finish_prod and finish_prod.id
+ or False)
if location_src_id and location_dest_id:
break
-
value['location_src_id'] = location_src_id
- value['location_dest_id'] = location_dest_id
-
+ value['location_dest_id'] = location_dest_id
return {'value': value}
-
- def action_produce(self, cr, uid, production_id, production_qty, production_mode, context=None):
-
- product_obj = self.pool.get('product.product')
- stock_mov_obj = self.pool.get('stock.move')
- prodlot_obj = self.pool.get('stock.production.lot')
-
+ def action_produce(self, cr, uid, production_id, production_qty,
+ production_mode, context=None):
+ product_obj = self.pool['product.product']
+ stock_mov_obj = self.pool['stock.move']
+ prodlot_obj = self.pool['stock.production.lot']
link_prodlot = False
sim_prodlot = False
pack_prodlot_id = False
pack_description = ''
-
production = self.browse(cr, uid, production_id, context=context)
-
# Identificamos los productos a consumir de tipo SIM y ENLACE
for move_line in production.move_lines + production.move_lines2:
if move_line.prodlot_id:
if product_obj._is_sim(move_line.product_id.categ_id):
sim_prodlot = move_line.prodlot_id
-
elif product_obj._is_link(move_line.product_id.categ_id):
link_prodlot = move_line.prodlot_id
-
# Creamos lotes de producción (si no lo estan ya)
# para los productos finalizados de tipo pack
for move_created in production.move_created_ids:
- if product_obj._is_pack(move_created.product_id.categ_id) and sim_prodlot and link_prodlot:
-
+ if (product_obj._is_pack(move_created.product_id.categ_id)
+ and sim_prodlot and link_prodlot):
pack_description = move_created.name
if move_created.prodlot_id:
# Si tiene lote de produccion asignada
@@ -130,46 +124,55 @@
else:
# Si no tiene lote de produccion, creamos uno nuevo
# y lo asignamos al movimiento
- pack_prodlot_id = prodlot_obj.search(cr, uid, [('name', '=', link_prodlot.name), ('ref', '=', sim_prodlot.telefono)])
+ lot_name_ref = [('name', '=', link_prodlot.name),
+ ('ref', '=', sim_prodlot.telefono)]
+ pack_prodlot_id = prodlot_obj.search(cr, uid, lot_name_ref,
+ context=context)
if pack_prodlot_id:
pack_prodlot_id = pack_prodlot_id[0]
else:
- pack_prodlot_id = prodlot_obj.create(cr, uid, { 'product_id': move_created.product_id.id, })
-
- stock_mov_obj.write(cr, uid, [move_created.id], {'prodlot_id': pack_prodlot_id}, context={})
-
+ prod_info = {'product_id': move_created.product_id.id}
+ pack_prodlot_id = prodlot_obj.create(cr, uid, prod_info
+ )
+ stock_mov_obj.write(cr, uid, [move_created.id],
+ {'prodlot_id': pack_prodlot_id},
+ context={})
break
-
-
if sim_prodlot and link_prodlot and pack_prodlot_id:
-
# Rellenamos información adicional en el lote del pack
- prodlot_obj.write(cr, uid, [pack_prodlot_id], {'name': link_prodlot.name,
- 'descripcion': pack_description,
- 'icc': sim_prodlot.icc,
- 'telefono': sim_prodlot.telefono,
- 'pin': sim_prodlot.pin,
- 'puk': sim_prodlot.puk,
- 'operador': sim_prodlot.operador,
- 'imei': link_prodlot.imei,
- 'n_serie': link_prodlot.n_serie,
- 'tipo_enlace': link_prodlot.tipo_enlace,
- 'propietario': link_prodlot.propietario,
- 'precio': link_prodlot.precio,
- 'precio_subvencionado': link_prodlot.precio_subvencionado,
- 'ref_cliente': sim_prodlot.ref_cliente,
- 'fecha_alta': time.strftime('%Y-%m-%d'),
- #'observaciones': sim_prodlot.observaciones,
- #'albaran_entrada': sim_prodlot.albaran_entrada,
- #'fecha_compra': link_prodlot.fecha_compra,
- #'fecha_activacion': sim_prodlot.fecha_activacion,
- }, context={})
-
+ subsidy_price = link_prodlot.precio_subvencionado
+ prodlot_obj.write(cr, uid, [pack_prodlot_id],
+ {'name': link_prodlot.name,
+ 'descripcion': pack_description,
+ 'icc': sim_prodlot.icc,
+ 'telefono': sim_prodlot.telefono,
+ 'pin': sim_prodlot.pin,
+ 'puk': sim_prodlot.puk,
+ 'operador': sim_prodlot.operador,
+ 'imei': link_prodlot.imei,
+ 'n_serie': link_prodlot.n_serie,
+ 'tipo_enlace': link_prodlot.tipo_enlace,
+ 'propietario': link_prodlot.propietario,
+ 'precio': link_prodlot.precio,
+ 'precio_subvencionado': subsidy_price,
+ 'ref_cliente': sim_prodlot.ref_cliente,
+ 'fecha_alta': time.strftime('%Y-%m-%d'),
+ # 'observaciones':
+ # sim_prodlot.observaciones,
+ # 'albaran_entrada':
+ # sim_prodlot.albaran_entrada,
+ # 'fecha_compra':
+ # link_prodlot.fecha_compra,
+ # 'fecha_activacion':
+ # sim_prodlot.fecha_activacion,
+ }, context={})
else:
- raise osv.except_osv(_('No production lots !'), _('Must assign production lots to consume products !'))
-
- #Llamamos a la funcion super de action_produce
- return super(mrp_production, self).action_produce(cr, uid, production_id, production_qty, production_mode, context=None)
-
-
-mrp_production()
+ raise orm.except_orm(_('No production lots !'),
+ _('Must assign production lots'
+ ' to consume products !'))
+ # Llamamos a la funcion super de action_produce
+ return super(MrpProduction, self).action_produce(cr, uid,
+ production_id,
+ production_qty,
+ production_mode,
+ context=None)
=== added directory 'dos_mrp_production/views'
=== renamed file 'dos_mrp_production/stock_view.xml' => 'dos_mrp_production/views/stock_view.xml'
--- dos_mrp_production/stock_view.xml 2014-06-11 10:23:47 +0000
+++ dos_mrp_production/views/stock_view.xml 2014-06-19 14:52:33 +0000
@@ -5,7 +5,6 @@
<field name="name">stock.move.form.inherit</field>
<field name="model">stock.move</field>
<field name="inherit_id" ref="stock.view_move_form"/>
- <field name="type">form</field>
<field name="priority">1</field>
<field name="arch" type="xml">
<field name="prodlot_id" position="replace">
Follow ups