Я создаю модель с именем wrap, которая содержит подробную информацию о заказе на продажу, например, о выбранном клиенте, номере заказа на продажу, дате доставки.
from odoo import models, fields, api, _
class Wrap(models.Model):
_name = 'sale.wrap'
_description = 'wraps in SO tree view'
name = fields.Char(string='Name', required=True)
product = fields.Many2one('product.product', string='Product')
quantity = fields.Integer()
wrap_sequence = fields.Char(string='Wrap reference', required=True, copy=False,
readonly=True, index=True, default=lambda self: _('New Wrap'))
@api.model
def create(self, val):
if val.get('wrap_sequence', _('New Wrap')) == _('New Wrap'):
val['wrap_sequence'] = self.env['ir.sequence'].next_by_code('sale.wrap.sequence') or _('New Wrap')
result = super(Wrap, self).create(val)
return result
class SaleOrderWrap(models.Model):
_inherit = 'sale.order'
def get_wraps(self):
return {}
Эта запись должна быть создана, когда умная кнопка щелкнул в подтвержденном заказе на продажу, и его можно просмотреть в основных данных инвентаризации. К настоящему времени я добавил интеллектуальную кнопку в подтвержденный заказ на продажу и сделал пункт меню в основных данных инвентаризации.
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!-- Wrap tree view -->
<record id="wrap_tree_view" model="ir.ui.view">
<field name="name">Wrap_tree</field>
<field name="model">sale.wrap</field>
<field name="arch" type="xml">
<tree string="wrap">
<field name="wrap_sequence"/>
<field name="name"/>
<field name="product"/>
<field name="quantity"/>
</tree>
</field>
</record>
<!-- Wrap form view -->
<record id="wrap_form_view" model="ir.ui.view">
<field name="name">Wrap_form</field>
<field name="model">sale.wrap</field>
<field name="arch" type="xml">
<form string="wrap">
<sheet>
<div class="oe_title">
<h1>
<field name="wrap_sequence" readonly="1"/>
</h1>
</div>
<div style="height:50px"/>
<group>
<group>
<field name="name" placeholder="Name the wrap"/>
</group>
<group>
<field name="product"/>
<div style="height:10px"/>
<field name="quantity"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<!-- Sale order line inherited view -->
<record id="sale_order_wrap_inherit" model="ir.ui.view">
<field name="name">sale_order_custom_wrap</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<xpath expr="//button[@name='action_view_invoice']" position="before">
<button name="get_wraps" type="object" class="oe_stat_button"
icon="fa-arrow-left" states="sale" string="Wraps"/>
</xpath>
</field>
</record>
<!-- Action for menu item wrap -->
<record id="wrap_action" model="ir.actions.act_window">
<field name="name">Wrap</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sale.wrap</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create your Wraps here!
</p>
</field>
</record>
<!-- Wrap menu item -->
<menuitem id="create_wrap_menu" name="Wraps" action="wrap_action"
parent="stock.menu_stock_inventory_control" sequence="5"/>
</data>
</odoo>
Теперь я полностью застрял, не зная, как определить необходимые поля в этой модели.
Я новичок в odoo, и единственный способ, которым я использовал умные кнопки, - это вызвать функцию python, которая возвращает данные с контекстом из выбранной модели, но здесь должна быть создана новая запись модели. Как это делается, помогите пожалуйста. Заранее спасибо.