代码之家  ›  专栏  ›  技术社区  ›  Dhouha

如何从purchase.order中获取产品描述的值

  •  1
  • Dhouha  · 技术社区  · 6 年前

    我想在“stock.quant.tree”视图中添加一个“designation”字段,显示每个库存产品的描述。我已经在树中添加了该字段,但是我被困在如何获取模型“purchase.order”的描述产品的值到“stock.quant”有什么帮助的想法吗?

    enter image description here

    股票数量树名称.xml

    <data>
    
    <record id="stock_quant_tree_designation" model="ir.ui.view">
    
            <field name="name">stock.quant.tree.designation</field>
    
            <field name="model">stock.quant</field>
    
            <field name="inherit_id" ref="stock.view_stock_quant_tree"/>
    
            <field name="arch" type="xml">
    
                <xpath expr="//field[@name='qty']" position="after">
    
                            <field name="designation2"/>
    
                </xpath>
    
            </field>
    
        </record>
    
    </data>
    

    库存.py

    from openerp.osv import fields, osv 
    from openerp import tools , api
    import openerp.addons.decimal_precision as dp
    from openerp.tools.translate import _
    class StockQuantTreeDesignation(osv.osv):
    _inherit = 'stock.quant'
    _columns = {
    'designation2': fields.char(string="Désignation", required=True, select=True),
    

    }

    1 回复  |  直到 6 年前
        1
  •  0
  •   Kenly    6 年前

    你已经有了 product_id 字段输入 stock.quant ,你可以 designation2 产品id .

    designation2 = fields.Char(related='product_id.name')
    

    purchase.order 库存量 您可以使用一个计算字段来搜索 move_id quant_ids 访问的字段 picking_id 哪家商店 采购订单 名称(唯一) origin 字段。

    # coding: utf8
    from openerp import models, fields, api
    
    
    class StockQuant(models.Model):
        _inherit = "stock.quant"
    
        purchase_id = fields.Many2one("purchase.order", string="Purchase Order", compute="_get_purchase_order")
    
        @api.multi
        def _get_purchase_order(self):
            for record in self:
                # Search for one move_id to get stock_picking reference
                self.env.cr.execute("SELECT move_id FROM stock_quant_move_rel WHERE quant_id=%s LIMIT 1", (record.id,))
                (move_id, ) = self.env.cr.fetchone()
                move = self.env["stock.move"].browse(move_id)
                # Use stock_picking to get purchase_order reference using `origin` which is unique
                po = self.env["purchase.order"].search([("name", '=', move.picking_id.origin)])
                record.purchase_id = po.id