Несколько представлений OpenERP 6.1 с разными полями

Я хотел бы создать разные «виды» форм заказов на покупку в OpenERP с разными полями в каждой. Из-за модели наследования я предполагаю, что не могу наследовать несколько дочерних элементов с непересекающимися полями. Поэтому я решил создать дочерний надмножество, в котором были бы все поля из всех типов PO.

Затем я создал разные представления, содержащие разные поля из унаследованной модели.

Но каждый из представлений показывает один и тот же надмножество.

Пожалуйста, сообщите, правильно ли я это делаю, или нет другого пути, кроме fields_view_get(). Спасибо

Код:

class purchase_order_hash(osv.osv):
_name = 'purchase.order'
_inherit = 'purchase.order'
_columns={
            'quality_code': fields....,
            'rice_quality': fields....,
            'packing_code': fields....,
            'packing_type': fields....,
            'late_payment': fields.float('Late Payment'),
            'num_bags': fields.integer('Number of Bags'),
            'unit_kg': fields.integer('Unit kg'),
            'rate_': fields.float('Rate', digits=(16,2), help="Rate"),
            'penalty_moisture': fields.float('Moisture Penalty', digits=(16,2), help="Percentage"),
            'penalty_broken': fields.float('Broken Penalty', digits=(16,2), help="Percentage"),
            'num_trucks': fields.integer('Number of Trucks'),
    'test1': fields.integer('Test 1')
          }
purchase_order_hash()  

(просматривает xml :)

        <record id="purchase_order_hash_form" model="ir.ui.view">
                    <field name="name">purchase_order_hash_form</field>
                    <field name="model">purchase.order</field>
        <field name="priority" eval="1" />
                    <field name="type">form</field>
                    <field name="inherit_id" ref="purchase.purchase_order_form" />
                    <field name="arch" type="xml">
            <field name="origin" select="2" position="after">
                <field name="quality_code"/>
                <field name="rice_quality"/>
                <field name="packing_code"/>
                <field name="packing_type"/>
                <field name="late_payment"/>
                <field name="num_bags"/>
                <field name="unit_kg"/>
                <field name="rate_"/>
                <field name="penalty_moisture"/>
                <field name="penalty_broken"/>
                <field name="num_trucks"/>
            </field>
        </field>
    </record>

    <record id="purchase_order_hash_form_test" model="ir.ui.view">
        <field name="name">purchase_order_hash_form_test</field>
        <field name="model">purchase.order</field>
        <field name="priority" eval="2" />
        <field name="type">form</field>
        <field name="inherit_id" ref="purchase.purchase_order_form" />
        <field name="arch" type="xml">
            <field name="origin" select="2" position="after">
                <field name="test1"/>
            </field>
            <field name="num_trucks" position="replace"/>
        </field>
    </record>

    <record model="ir.actions.act_window" id="action_PO_hash">
        <field name="name">action_PO_hash</field>
        <field name="res_model">purchase.order</field>
        <field name="view_type">form</field>
        <field name="view_mode">form</field>
        <field name="view_id" ref="purchase_order_hash_form" />
    </record>

    <record model="ir.actions.act_window" id="action_PO_hash_test">
        <field name="name">action_PO_hash_test</field>
        <field name="res_model">purchase.order</field>
        <field name="view_type">form</field>
        <field name="view_mode">form</field>
        <field name="view_id" ref="purchase_order_hash_form_test" />
    </record>

    <menuitem id="menu_PO_hash" name="menu_PO_hash" action="action_PO_hash" parent="purchase.menu_procurement_management"/>
    <menuitem id="menu_PO_hash_test" name="menu_PO_hash_test" action="action_PO_hash_test" parent="purchase.menu_procurement_management"/>

[Обновление от 16 октября 2012 г.: view.xml — окончательный рабочий код:]

    <record model="ir.actions.act_window" id="action_PO_hash">
        <field name="name">action_PO_hash</field>
        <field name="res_model">purchase.order</field>
        <field name="view_type">form</field>
        <field name="view_mode">form</field>
    </record>

    <record model="ir.actions.act_window" id="action_PO_hash_test">
        <field name="name">action_PO_hash_test</field>
        <field name="res_model">purchase.order</field>
        <field name="view_type">form</field>
        <field name="view_mode">form</field>
    </record>

    <record model="ir.actions.act_window.view" id="action_PO_hash_2">
        <field name="sequence" eval="1"/>
        <field name="view_mode">form</field>
        <field name="view_id" ref="purchase_order_hash_form"/>
        <field name="act_window_id" ref="action_PO_hash"/>
    </record>

    <record model="ir.actions.act_window.view" id="action_PO_hash_test_2">
        <field name="sequence" eval="1"/>
        <field name="view_mode">form</field>
        <field name="view_id" ref="purchase_order_hash_form_test"/>
        <field name="act_window_id" ref="action_PO_hash_test"/>
    </record>

    <menuitem id="menu_PO_hash" name="menu_PO_hash" action="action_PO_hash" parent="purchase.menu_procurement_management"/>
    <menuitem id="menu_PO_hash_test" name="menu_PO_hash_test" action="action_PO_hash_test" parent="purchase.menu_procurement_management"/>

person Raza Ali    schedule 15.10.2012    source источник


Ответы (2)


Если вы хотите получить разные формы для каждого действия, то вам нужно создавать разные формы, не наследуя представление. Затем для каждой вновь создаваемой формы и дерева укажите действие окна. Например:

<record model="ir.actions.act_window.view" id="a_unique_name_as_id">
            <field name="sequence" eval="2"/>
            <field name="view_mode">form</field>
            <field name="view_id" ref="your_view_ref_id"/><!--use ref="purchase_order_hash_form_test"-->
            <field name="act_window_id" ref="your_action_reference_id"/><!--use ref='action_PO_hash_test'-->
        </record>
person OmaL    schedule 15.10.2012
comment
Я предполагаю, что вы имеете в виду удаление строки с надписью ‹field name=inherit_id ref=purchase.purchase_order_form›. Это правильно? Итак, чтобы сохранить остальную часть стандартной функциональности стандартной формы заказа на поставку, я должен вставить код из этого представления в каждую из своих форм? Спасибо за вашу помощь. - person Raza Ali; 16.10.2012
comment
Я снова обновил код с вашим предложением. Теперь происходит то, что когда я нажимаю «Создать» стандартного заказа на покупку, я получаю Test1 как единственное поле в форме. Когда я нажимаю на menu_PO_hash или menu_PO_hash_test, выдается ошибка: не удается найти поля, например. test1, quality_code и т. д. в модели. Нажав на menu_PO_hash_2 или menu_PO_hash_test_2, вы откроете что-то совершенно не связанное. Я должен упустить что-то действительно основное. - person Raza Ali; 16.10.2012
comment
Я только что добавил пример. Вы должны создать представление act_window для каждой формы/дерева. - person OmaL; 16.10.2012
comment
Извините, я не могу найти никаких изменений в вашем вставленном коде. Пожалуйста, вставьте повторно. Пожалуйста, также проверьте мой отредактированный файл view.xml в вопросе, правильно ли он соответствует вашему примеру или нет. Спасибо - person Raza Ali; 16.10.2012
comment
Не используйте идентификатор «act_window.view» в качестве меню действий. Вы можете найти аналогичный пример в стоковом модуле. пожалуйста, проверьте, как модель комплектования запасов показана 3 различными способами для заказа на доставку, внутреннего перемещения и входящей поставки. - person OmaL; 16.10.2012
comment
Хорошо, спасибо за помощь. Я обновлю после НИОКР. Между тем, не могли бы вы указать мне какой-либо сайт, документ или книгу, в которых описаны все эти скрытые функции, такие как act_window_id и тег act_window и т. д.? - person Raza Ali; 16.10.2012
comment
Я не нашел никаких сайтов, описывающих эти функции. Я нашел это, прочитав код. Если вы найдете ответ полезным, пожалуйста, примите его. Спасибо - person OmaL; 16.10.2012
comment
Слава Богу! Это сделало это! Пришлось убрать .view из модели основных действий. Теперь он показывает правильные поля в правильных представлениях. Спасибо за ваше руководство. Я отмечаю это как ответ, однако мне все еще нужна помощь: я хотел бы показать стандартные поля PO вместе с моими настройками. Пожалуйста, поправьте меня, но я думаю, что мне нужно скопировать и вставить код представления формы заказа на поставку в мои представления, чтобы добиться этого. - person Raza Ali; 16.10.2012

Чтобы создать разные «виды» форм заказа на поставку, вы должны создать разные формы, не наследуя их, и предоставить ссылку на эти формы в своем действии. Напишите ниже тег в своем действии:

<field name="view_id" ref="id_of_your_form"/>

Вы можете найти так много примеров в ваших дополнениях.
Чтобы увидеть пример, перейдите в addons-6.1/account/account_view.xml: найдите с "view_id"

person Sudhir Arya    schedule 16.10.2012
comment
У меня уже есть эта строка в коде, который я вставил в вопрос. Я предполагаю, что вы имеете в виду удаление строки с надписью ‹field name=inherit_id ref=purchase.purchase_order_form›. Это правильно? Итак, чтобы сохранить остальную часть стандартной функциональности стандартной формы заказа на поставку, я должен вставить код из этого представления в каждую из своих форм? Спасибо за вашу помощь. - person Raza Ali; 16.10.2012
comment
Да. У вас нет наследования форм. Вам нужно создавать новые формы в соответствии с вашими требованиями для каждого действия. - person Sudhir Arya; 16.10.2012
comment
Я пытаюсь это без везения. Вставил обновленный код выше. По-прежнему показывает все поля заказа на покупку, содержащие стандартные поля заказа на покупку, а также поля из обоих представлений в обоих меню. - person Raza Ali; 16.10.2012