关联自定义模块字段 - 产品 - OpenErp

时间:2013-05-31 21:43:58

标签: python orm module openerp

我需要将自定义模块中的字段与按钮放在一起,以放置在OpenErp的Purchase Order形式中。

确认产品拣配后,此按钮将“排出”我的自定义模块的“数量”字段中填写的此产品的数量。

例如:

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中的“报价请求”和“采购订单”中,当确认采摘时{{1仓库中的库存会自动更新,“Product”。

我需要做同样的事情,但不需要使用OpenErp中的库存或仓库,而只需使用我的自定义模块中的product_qty字段,因为有些商品可以从仓库购买并通过此模块进行管理

我已经看到了Cantidad表单中的按钮,我可以为此任务创建一个新按钮,但我的问题是,如何将此字段与我的自定义模块中的Purchase Order相关联,同时保持与股票的传统关系?

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

我希望我已经解释过了。

提前致谢。

1 个答案:

答案 0 :(得分:1)

我不确定我是否清楚地理解您的问题,但让我试着向您展示一般方法。

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

OpenERP中库存的基本构建块是产品交易/产品移动。如果您将产品AAA从位置XXX移动到YYY位置,您将在YYY处压缩AAA的库存,并且AAA的库存将减少到XXX。购买产品时,产品将从“供应商位置”移至“库存地点”。当您在销售产品时,您正在将产品从“库存位置”移动到“客户位置”。因此,特定地点的产品库存将是移入和移出的产品的摘要。

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

让我从这个角度了解您的想法,我会更新答案,专注于为您提供解决方案。