Как изменить поля. Один2Много просмотра в odoo 12? - PullRequest
2 голосов
/ 06 июля 2019

Я пытаюсь создать поля. Один 2Many для моего модуля счета, я создаю два разных модуля, один с именем 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

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

enter image description here

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

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"> в Master Product View разделе они становятся редактируемый inline, поэтому я должен ввести каждый столбец, мне нужно всплывающее окно со списком продуктов, чтобы я мог выбрать его и вставить в форму сведений, я пытаюсь сделать <tree editable="bottom">, затем я пытаюсь <tree string="details"> без редактирования тег, это возврат к всплывающему окну, но это форма ввода, это должен быть список продуктов, чтобы я мог проверить элемент и добавить его в таблицу сведений, как мне это сделать?

Ответы [ 3 ]

2 голосов
/ 12 июля 2019

@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 голосов
/ 12 июля 2019

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

       <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 голосов
/ 06 июля 2019

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

...