提问者:小点点

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


我用的是奥多10。我在销售订单中有一个自定义字段调用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个答案

匿名用户

您可以在采购订单中为线性单元添加相关字段,如下所示

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\u order\u id

希望这有帮助!

匿名用户

这个领域的目的是什么。它应该在每个订单线上,还是应该在整个销售订单上。根据你的设置,你有两个选择:第一

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_unitssale.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)

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