Odoo - поле от заказа клиента до заказа - PullRequest
0 голосов
/ 26 сентября 2018

Я использую Odoo 10. У меня есть пользовательское поле call 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 голосов
/ 27 сентября 2018

Какова цель этого поля.Это должно быть в каждой строке заказа или в заказе на продажу в целом.С имеющейся настройкой у вас есть два варианта: Первый

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)

(Я предлагаю поместить чтение только для ваших связанных полей, потому что если они будут изменены в вашем унаследованном представлении, это изменит его для этого заказа на продажу и всех его отношений.)

0 голосов
/ 26 сентября 2018

Вы можете добавить связанное поле в заказе на покупку для 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 из выбранной sale_order_id

надежды.это помогает!

...