Я пытаюсь создать поля.One2Many для моего модуля счета, я создаю два разных модуля, один с именем ms_produk и другой с именем invoice, затем для ms_produk я использую в качестве основного продукта, который служит CRUD для элемента и имеет таблицу с именем "ms_produk_ms_produk"

Вот моя модель ms_produk выглядела так:

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

from odoo import models, fields, api

class ProdukProduk(models.Model):
    _name = 'ms_produk.ms_produk'

    kd_produk = fields.Char(String='Kode Produk', required=True)
    nm_produk = fields.Char(String='Nama Produk', required=True)
    tanggal_input = fields.Datetime(string='Tanggal Input', default=fields.Datetime.now())
    tanggal_aktif = fields.Datetime(string='Tanggal Aktif', default=fields.Datetime.now())
    status_aktif = fields.Boolean('Status Aktif', default=True)
    keterangan = fields.Html(string='Keterangan')

    no_faktur = fields.Many2one('salesorder.salesorder')

Я добавить

no_faktur = fields.Many2one ('salesorder.salesorder')

Чтобы связать эту таблицу с моим модулем счета, так как я хочу использовать функцию One2Many в моем модуле счета

Тогда вот моя модель модуля счета была похожа, эта модель с именем "salesorder.py":

# -*- 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())
    keterangan = fields.Html(string='Keterangan')
    kd_sales = fields.Many2one('res.users', string='Kode Sales')
    details = fields.One2many('ms_produk.ms_produk','no_faktur','List Item')

Это сработало, когда я нажал «добавить строку», он выскочил из моего основного модуля продукта, но он показал в форме ввода, как я изменил его только для списка? так что я могу выбрать какой-либо элемент, чтобы добавить в качестве детали для моего счета?

SNAPSHOT: Форма заказа продавца: введите описание изображения здесь

Когда я нажимаю «добавить строку», появляется такая форма: (это форма ввода, мне нужно представление списка моего продукта)

enter image description here

Это должен быть список моих товаров, который выглядел так: (это снимок с моего мастер-модуля)

enter image description here

Тогда я добавлю вот так: (это пример снимка, который я взял у Тайифа Кабира

** ОБНОВЛЕННЫЙ КОД как @Ajmal JK, я попытался отредактировать свой 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>

<!-- newly added -->

        <!-- salesorder view -->
        <record id="salesorder_tree" model="ir.ui.view">
            <field name="name">salesorder.form.tree</field>
            <field name="model">salesorder.salesorder</field>
            <field name="type">tree</field>
            <field name='arch' type="xml">
                <field name='details'>
                    <tree string="SalesOrder" editable="bottom">
                        <field name="kd_produk"/>
                        <field name="nm_produk"/>
                    </tree>
                </field>
            </field>
        </record>
        <!-- end of salesorder view -->

        <!-- master product view -->
        <record id="browse_msproduk_tree_view" model="ir.ui.view">
            <field name="name">ms_produk</field>
            <field name="model">ms_produk.ms_produk</field>
            <field name="view_mode">tree</field>
            <field name="arch" type="xml">
                <tree editable="bottom">
                    <field name="kd_produk"/>
                    <field name="nm_produk"/>
                    <field name="tanggal_input"/>
                </tree>
            </field>
            <field name="view_id" ref="salesorder_tree"/>
            <field name="act_window_id" ref="salesorder_menu_action"/>
        </record>
        <!-- end of master product view -->

<!-- end of newly added -->

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

Нет ошибки при запуске этого кода, он работал, но не так, как я хочу, при предоставлении этого кода <tree editable="bottom"> в разделе основного продукта они стать встроенным редактируемым, поэтому мне нужно вводить каждый столбец, мне нужно всплывающее окно со списком продуктов, чтобы я мог выбрать его и вставить в форму сведений, я пытаюсь сделать <tree editable="bottom">, затем я пытаюсь {{X2 }} без редактируемого тега, он возвращается к всплывающему окну, но это форма ввода, это должен быть список продуктов, чтобы я мог проверить элемент и добавить его в таблицу сведений, как мне это сделать?

3
Ke Vin 6 Июл 2019 в 09:59

3 ответа

Лучший ответ

Изменить новый раздел как,

       <record id="salesorder_tree" model="ir.ui.view">
        <field name="name">salesorder.form.tree</field>
        <field name="model">salesorder.salesorder</field>
        <field name="type">tree</field>
        <field name='arch' type="xml">
            <field name='details'>
               <tree string="SalesOrder" editable="bottom">
                  <field name="kd_produk"/>
                  <field name="nm_produk"/>
               </tree>
           </field>
        </field>
    </record>
2
Ajmal JK 12 Июл 2019 в 11:48

@Terrence Poe my bad, i already update my code to form view, but still error, can u help me with full code?

Определите свое поле x2m как список.

<!-- form view -->
<record model="ir.ui.view" id="browse_msproduk_form_view">
    <field name="name">salesorder.form</field>
    <field name="model">salesorder.salesorder</field>
    <field name="arch" type="xml">
        <form string="SalesOrder form">
            <field name='details'>
                <tree string="SalesOrder">
                    <field name="kd_produk"/>
                    <field name="nm_produk"/>
                </tree>
            </field>
    </form>
</record>
2
Terrence Poe 12 Июл 2019 в 14:19

В вашем представлении определите поля, которые вы хотите внутри поля One2many, и убедитесь, что вы добавили редактируемые в виде дерева. Если вы хотите добавить записи из другой модели в поле вашей модели, вы можете использовать поле Many2many и выбрать продукт из списка. Поле Many2many может использоваться как древовидное представление или другое представление с использованием виджета Проверьте эту ссылку, чтобы узнать больше о реляционных полях

2
Thayif kabir 6 Июл 2019 в 07:52