【问题标题】:Odoo - field from sales order to purchase orderOdoo - 从销售订单到采购订单的字段
【发布时间】:2018-09-28 20:05:29
【问题描述】:

我正在使用 Odoo 10。我在销售订单中有一个名为 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

【问题讨论】:

  • 您的问题是什么?,或者您在此处发布的代码不完整,或者您错过了字段定义中的结尾 )
  • 是 'linear_units' 计算字段吗?
  • 以上代码适用于在采购订单中选择销售订单。我在销售订单中有一个名为 linear_units 的浮点字段。我需要将此字段复制到采购订单

标签: odoo odoo-10


【解决方案1】:

您可以在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')

它将从选定的sale_order_id 中获取相关的linear_units

希望这会有所帮助!

【讨论】:

  • 我试过 linear_units2 = fields.Float(related='sale_order_id.linear_units') 但得到 Keyerror linear_units。 linear_units 在销售订单行上。
  • 确保sale.order 模型中有linear_units 字段。
  • 这是我的销售订单代码class myfieldsinsaleorder(models.Model): _inherit = 'sale.order.line' linear_units = fields.Float("Linear Units")
  • 伙计,它在 sale.order.line 而不是 sale.order
  • 是否可以从 sale.order.line 复制字段?
【解决方案2】:

这个字段的目的是什么。它应该在每个订单行上还是应该在整个销售订单上。有了你的设置,你有两个选择:第一个

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')

虽然我不完全确定第二个选项会起作用。如果这在所有订单行上都是相同的值,那么我建议将 linear_units 放在 sale.order 上,然后如果您在订单行上需要它,您可以在订单行上放置一个相关字段,然后您的字段将如下所示

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)

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

【讨论】:

    猜你喜欢
    • 2020-09-08
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多