콘텐츠로 건너뛰기
메뉴
커뮤니티에 참여하려면 회원 가입을 하시기 바랍니다.
신고된 질문입니다
5 답글
10592 화면

Hi,

I created a custom field name x_cmdtycd in 'product.template' model.

Now I'm trying to display this custom field in Order Lines tab of new Quotation view, between Product and Description columns.

Here is my code on 'sale.order.form' view

<page string="Order Lines" name="order_lines">
<field
name="order_line"
widget="section_and_note_one2many"
mode="tree,kanban"
attrs="{'readonly': [('state', 'in', ('done','cancel'))]}"
>
<form>
<field name="display_type" invisible="1"/>
<!--
We need the sequence field to be here for new lines to be added at the correct position.
TODO: at some point we want to fix this in the framework so that an invisible field is not required.
-->
<field name="sequence" invisible="1"/>
<group>
<group attrs="{'invisible': [('display_type', '!=', False)]}">
<field name="product_updatable" invisible="1"/>
<field name="product_id"
context="{'partner_id':parent.partner_id, 'quantity':product_uom_qty, 'pricelist':parent.pricelist_id, 'uom':product_uom, 'company_id': parent.company_id}"
attrs="{
'readonly': [('product_updatable', '=', False)],
'required': [('display_type', '=', False)],
}"
force_save="1"
/>
<field name="product_id.x_cmdtycd"/>
<field name="invoice_status" invisible="1"/>
<field name="qty_to_invoice" invisible="1"/>
<field name="qty_delivered_manual" invisible="1"/>
<field name="qty_delivered_method" invisible="1"/>
<field name="price_total" invisible="1"/>
<field name="price_tax" invisible="1"/>
<field name="price_subtotal" invisible="1"/>
<label for="product_uom_qty" string="Ordered Quantity"/>

And it show the error is

Field `product_id.x_cmdtycd` does not exist

Thank you for any help!

아바타
취소
베스트 답변
Hi,
x_cmdtycd is the field which you are created in product.template.

Sale form view is connected to the sale.order.line table.

So to get the x_cmdtycd  field in this form view it is required to set a related field in the sale.order.line to get the fields from product.template

Pls use the below code
product_template_id = fields.Many2one('product.template')
in the python code, then you can access it by
product_id.product_template_id.x_cmdtycd
instead of product_id.x_cmdtycd
아바타
취소
작성자

Does it work when create these fields on UI?

I tried with following steps:

1. Create x_code field (Field Name = x_code; Field Type = char) in product.template model

2. Then create x_product_template_id field (Field Name = x_product_template_id; Field Type = many2one; Object Relation = product.template; On delete = Cascade)

3. Add <field name="product_id.x_product_template_id.x_code"/> to Sale Order Lines view

However, I still got this below error when click button Save.

Error while validating constraint

Field `product_id.x_product_template_id.x_code` does not exist

Error context:

View `sale.order.form`

[view_id: 666, xml_id: sale.view_order_form, model: sale.order, parent_id: n/a]

작성자

Sorry, the field in step 2 was created in sale.order.line model

작성자

I tried several ways however it didn't work.

Basically, we cannot use "." in <field> tag in view I think.

It seems have no solution for my problem :(

작성자 베스트 답변

I found the solution to add new custom field of 'product.template' model to sale.order.line view using related field

Here is my solution

class ProductTemplate(models.Model):
_inherit = 'product.template'

cm_code = fields.Char('Common Code', store=True)


class SaleOrderLine(models.Model):
_inherit = 'sale.order.line'

product_cm_code = fields.Char('Common Code', related='product_id.cm_code', store=True)


<record model="ir.ui.view" id="sale_order_line_view_inherit">
<field name="name">sale.order.line.view.inherit</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='order_line']/tree/field[@name='product_id']" position="after">
<field name="product_cm_code"/>
</xpath>
</field>
</record>


아바타
취소