Odoo-从销售订单到采购订单的字段

时间:2018-09-25 21:32:22

标签: odoo odoo-10

我正在使用Odoo10。我在销售订单中有一个自定义字段调用linear_units。我已选中定做,它会自动创建一个采购订单。我想包括从销售订单到采购订单的linear_units字段。使用下面的代码,我可以选择销售订单,但无法弄清楚如何添加字段。

class PurchaseOrder(models.Model):
    _inherit = 'purchase.order'

    sale_order_id = fields.Many2one(
        'sale.order',
        "Sale Order",
        help="Reference to Sale Order")

以上代码适用于在采购订单中选择销售订单。我在销售订单中有一个名为linear_units的浮动字段。我需要此字段来复制到采购订单。我在下面尝试过,但没有用

class PurchaseOrder(models.Model):
    _inherit = 'purchase.order'


    linear_units2 = fields.Float("Linear Units")

    @api.onchange('product_id','linear_units')
    def _onchange_product_qty(self):
        if self.product_id:
            self.linear_units2 = self.sale.order.linear_units

2 个答案:

答案 0 :(得分:0)

您可以在datetime.datetime(2018, 9, 26, 0, 0) 的采购订单中添加一个相关字段,如下所示

linear_units

它将从所选的class PurchaseOrder(models.Model): _inherit = 'purchase.order' sale_order_id = fields.Many2one('sale.order', "Sale Order", help="Reference to Sale Order") linear_units = fields.Float(related='sale_order_id.linear_units') 中获取相关的linear_units

希望这会有所帮助!

答案 1 :(得分:0)

该字段的目的是什么。是应该在每个订单行上还是应该在整个销售订单上。使用设置,您有两个选择:首先

sale_order_lines = fields.One2many('sale.order.line', 'Sale Order Lines')

然后从那里可以参考订单号和线性单位。

sale_order_id = fields.Many2one('sale.order', related='sale_order_lines.order_id', string='Sale Order')
linear_units2 = fields.Float(related='sale_order_lines.linear_units', string='Linear Units')

第二:

sale_order_id = fields.Many2one('sale.order', string='Sale Order')
linear_units = fields.Float(related='sale_order_id.sale_order_lines.linear_units', string='Linear units')

尽管我不确定第二个选项是否可以正常工作。如果在所有订单行上该值都相同,那么我建议在sale.order上放置linear_units,然后在订单行上使用它,可以在订单行上放置一个相关字段,然后您的字段将如下所示

class SaleOrder(model.Models):
    _inherit='sale.order'

    linear_units = fields.Float(string='Linear Units')


class SaleOrderLines(model.Models):
    _inherit='sale.order.lines'

    linear_units = fields.Float(related='order_id.linear_units', string='Linear Units', readonly=True)

class PurchaseOrder(models.Models):
    _inherit='purchase.order'

    sale_order_id = fields.Many2one('sale.order', string='Sale Order')
    linear_units = fields.Float(related='sale_order_id.linear_units', string='Linear Units', readonly=True)

(我建议将只读字段放在您的相关字段上,因为如果您在继承的视图上更改了只读字段,则会对该销售订单及其所有关系进行更改。)