【问题标题】:How to add One2many relation in header-details invoice mod in odoo 12 properly?如何在odoo 12的抬头细节发票模块中正确添加One2many关系?
【发布时间】:2019-07-03 08:37:36
【问题描述】:

我尝试为发票模块构建标题-详细信息关系,但我并没有真正了解 odoo 12 如何为 one2many 关系工作,我有名为 ms_produk 的模块,我的数据库名称是“ms_produk_ms_produk”,ms_produk 模块作为产品工作master,即 CRUD 产品列表,我希望模块在创建发票时选择产品

这就是我所做的,我创建了一个看起来像这样的模型:

# -*- coding: utf-8 -*-

from odoo import models, fields, api

class SalesorderSalesorder(models.Model):
    _name = 'salesorder.salesorder'

    no_faktur = fields.Char(String='No Faktur', required=True)
    kd_dealer = fields.Char(String='Kode Dealer', required=True)
    nm_dealer = fields.Char(String='Nama Dealer', required=True)
    tanggal_faktur = fields.Datetime(string='Tgl Faktur', default=fields.Datetime.now())
    nm_sales = fields.Selection(
        [('bruno', 'Bruno'),('layla','Layla'),('vexana','Vexana')]
        ,string='Choose Seller')
    keterangan = fields.Html(string='Keterangan')
    kd_sales = fields.Many2one('res.users', string='Kode Sales')
    details = fields.One2many('ms_produk_ms_produk','no_faktur','No Faktur')

但是当这样写的细节时,它给了我像“内部服务器错误”这样的错误,服务器不会启动,然后我把它改成:

# -*- coding: utf-8 -*-

from odoo import models, fields, api

class SalesorderSalesorder(models.Model):
    _name = 'salesorder.salesorder'

    no_faktur = fields.Char(String='No Faktur', required=True)
    kd_dealer = fields.Char(String='Kode Dealer', required=True)
    nm_dealer = fields.Char(String='Nama Dealer', required=True)
    tanggal_faktur = fields.Datetime(string='Tgl Faktur', default=fields.Datetime.now())
            nm_sales = fields.Selection(
        [('bruno', 'Bruno'),('layla','Layla'),('vexana','Vexana')]
        ,string='Choose Seller')
        ,string='Pilih Sales')
    keterangan = fields.Html(string='Keterangan')
    kd_sales = fields.Many2one('res.users', string='Kode Sales')
    details = fields.One2many('salesorder.salesorder','no_faktur','No Faktur')

这可行,但错误,它自己加载销售订单,我想要的是,它出现在产品列表中,我选择产品名称并将其添加到发票详细信息中。

这是我的观点,我将其命名为 salesorder_view.xml

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
    <data>

        <record id="salesorder_menu_action" model="ir.actions.act_window">
            <field name="name">SalesOrders</field>
            <field name="res_model">salesorder.salesorder</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,form</field>
            <field name="domain">[]</field>
            <field name="help" type="html">
                <p class="oe_view_nocontent_create">Create SalesOrders
                </p>
            </field>
        </record>

        <menuitem id="salesorder_menu" name="SalesOrder"/>
        <menuitem id="Salesorder_neworder_menu" 
                parent="salesorder_menu" 
                name="New Order"
                action="salesorder_menu_action"/>
    </data>
</odoo>

如何正确地做到这一点?

【问题讨论】:

  • 我认为它对你有用 details_ids = fields.One2many('ms.produk.ms.produk','no_faktur','No Faktur')
  • 是的,它正在工作,我错过的是我将它们与字段链接起来。ms_produk 模型中的Many2One,但结果不是我想的那样,哈哈,但是是的,它工作了哈哈

标签: python odoo one-to-many odoo-view odoo-12


【解决方案1】:

在定义 One2many 字段时,您需要提供与需要加载的表的关系,请参考 link 了解 One2many 字段。

通过使用表单视图,您可以设计模型的视图。

【讨论】:

  • 确定它现在可以工作了,我需要在我的 ms_produk 模型中添加 Many2One 关系,然后它可以工作,但结果不是我想象的那样,它显示了完整的 CRUD 模块,我将开始一个新问题对于那个问题,感谢您的帮助,将接受此作为答案
猜你喜欢
  • 2020-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-18
相关资源
最近更新 更多