2013-05-31 55 views
4

我需要将自定义模块中的字段与放置在OpenErp的Purchase Order格式中的按钮相关联。关联自定义模块字段 - 产品 - OpenErp

当确认产品采摘时,此按钮将“排出”填充到我的自定义模块的“数量”字段中的该产品的数量。

例如:

class certificados_line(osv.osv): 

    _name = 'certificados.line' 
    _description = "Items del Certificado" 


    def multi_a_b(self, cr, uid, ids, name, arg, context=None): 
     res = {} 
     for record in self.browse(cr, uid, ids,context): 
      res[record.id] = record.Cantidad * record.Precio_Unitario_Declarado 
     return res 

    _columns = { 
     'codigo_n' : fields.related(
       'product_id', 
       'codigo_n', 
       type='char', 
       size=64, 
       string='Codigo Arancelario', 
       store=True, 
       readonly=True, 
       ), 
     'product_id' : fields.many2one(
       'product.product', 
       'Material', 
       ), 
     'Descripcion_Arancelaria' : fields.many2one(
       'product.category', 
       'Descripcion Arancelaria', 
       change_default=True, 
       domain="[('type','=','normal')]", 
       ), 
     'tec_esp': fields.related(
       'product_id', 
       'tec_esp', 
       type='char', 
       size=64, 
       string='Especificaciones tecnicas', 
       store=True, 
       readonly=True, 
       ), 
     'Cantidad' : fields.float(
       'Cantidad', 
       ), 
     'Unidad_de_Medida': fields.many2one(
       'product.uom', 
       'Unidad de Medida', 
       ), 
     'Precio_Unitario_Declarado' : fields.float(
       'Precio Unitario Declarado', 
       ), 
     'Moneda' : fields.many2one(
       'res.currency', 
       'Moneda', 
       ), 
     'Valor_En_Divisas' : fields.function(
       multi_a_b, 
       type='integer', 
       string='Valor En Divisas', 
       ), 
     'requisicion_id' : fields.many2one(
       'certificados.certificados', 
       'Certificados de No Produccion', 
       ondelete='cascade', 
       ), 
     'Cantidad_Consumida' : fields.related(
       'product_id', 
       'outgoing_qty', 
       type='float', 
       string='Cantidad Consumida', 
       store=True, 
       readonly=True, 
       ), 
     'Cantidad_Disponible' : fields.related(
       'product_id', 
       'qty_available', 
       type='float', 
       string='Cantidad Disponible', 
       store=True, 
       readonly=True, 
       ), 
    } 
certificados_line() 

这里,Cantidad应该是场被自动与采购订单,我的意思是,在“询价”和“采购订单”中的OpenERP,当拣货确认仓库中的Product库存自动更新,“product_qty”。

我需要做同样的事情,但不是在OpenErp中的库存或仓库,而是在我的自定义模块中的Cantidad字段中,因为有些项目可以从仓库和其他模块中进行购买和管理。

我见过的Purchase Order形式的按钮,我可以创建这个任务一个新的,但我的问题是,如何与这个领域的Purchase Order在我的自定义模块,同时保持与股市的常规关系?

为了进一步了解,它不会是一个自动更新,只是一个独立的更新,取决于这个按钮被点击的时间。

我希望我已经解释了我自己。

在此先感谢。

回答

1

我不确定我是否清楚地理解了您的问题,但让我试着为您介绍一种通用方法。

首先,您需要了解OpenERP中库存地点和产品库存的概念。

OpenERP库存的基本构建块是产品交易/产品移动。如果您将产品AAA从位置XXX移至位置YYY,则您将在YYY上将该股票折价为AAA,并且AAA的股票将在XXX上减少。当您购买产品时,产品将从“供应商地点”移至“库存地点”。当你卖东西时,你正在将产品从“库存地点”移动到“客户地点”。因此,特定地点的产品库存将成为搬入和搬出产品的摘要。

如果您想更新openERP中的产品库存,您需要做的是使库存从“库存地点”移动到其他虚拟地点(如客户位置,库存损失,生产地点等)

从这个角度让我知道你的想法,我会更新答案,专注于为你解决问题。

+0

准确地说,我的意思是当我从我的模块移动产品AAA时,假设我使用产品AAA,假设我有6个产品单元,这6个单元将作为库存地点XXX, – NeoVe

+0

当我创建一个在openerp的购买应用程序中的购买订单,当这个购买订单被确认(接收产品)时,它将会有另一个按钮,如果你点击它,它将“减少”你从XXX位置购买的这个产品...假设我为这个字段(XXX股票)上已有的同样6个单位的AAA产品订购采购订单,当采购订单确认后,openerp将从“供应商地点”减少并增加“库存地点”, – NeoVe

+0

我需要这个按钮被点击时,它也会从这个模块字段中减少,它将作为一个额外的“供应商地点”,不知道如果我是在自我解释:( – NeoVe