odoo中向导的操作

如果向导的py文件和xml文件都是重新创建的,则需要在__init__.py 中应用,并且添加到__manimest.py中(本人用odoo10)

1. 创建新的models

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

from odoo import api, fields, models
from odoo.exceptions import ValidationError


class PartPaymentWizard(models.TransientModel):
    _name = "part.payment.wizard"
    _description = u'付款批次部分付款向导'

    invoice_id = fields.Many2one('account.invoice', u'账单id')
    currency_id = fields.Many2one("res.currency",
                                  string=u"货币",
                                  readonly=True)
    amount = fields.Monetary(string=u'付款金额',
                             store=True,
                             readonly=False,
                             digits=(16, 2),
                             currency_field='currency_id')
    payment_date = fields.Date(string=u'付款日期', required=True, 
                                                 default=fields.Datetime.now)
    journal_id = fields.Many2one('account.journal', u'支付方式', required=True)

    @api.model
    def default_get(self, fields):
        res = super(PartPaymentWizard, self).default_get(fields)
        pass
        return res

    @api.multi
    def part_payment_v(self):
        pass

注:

default_get(self, fields): 是调用向导是自动执行的默认函数,想要自动带出到向导中的内容可以重写此默认方法
def part_payment_v(self): 是向导中点击验证按钮所执行的函数

 2. 创建 向导视图

<odoo>
    <data>
        <!--部分付款向导-->
         <record id="part_payment" model="ir.ui.view">
            <field name="name">part.payment.wizard.form</field>
            <field name="model">part.payment.wizard</field>
            <field name="arch" type="xml">
                <form string="Register Payment Part" version="7">
                    <sheet>
                        <group>
                            <group>
                                <field name="journal_id"/>
                                <field name="amount"/>
                            </group>
                            <group>
                                <field name="payment_date"/>
                            </group>
                        </group>
                    </sheet>
                    <footer>
                        <button string='验证' name="part_payment_v" type="object" class="btn-primary"/>
                        <button string="取消" class="btn-default" special="cancel"/>
                    </footer>
                </form>
            </field>
        </record>

        <record id="part_payment_wizard_action_wizard" model="ir.actions.act_window">
            <field name="name">部分付款</field>
            <field name="res_model">part.payment.wizard</field>
            <field name="view_type">form</field>
            <field name="view_mode">form</field>
            <field name="view_id" ref="part_payment"/>
            <field name="context">{'default_invoice_ids': [(4, active_id, None)], 'part_payment_id': 'part_active'}</field>
            <field name="target">new</field>
        </record>

    </data>
</odoo>

注:

  button按钮部分就展示了,相信已经做向导了,button肯定会做了。

插入学习到的小知识:

   fields.Date/Datetime()时间日期字段,时默认显示当前时间的属性为:default=flelds.Datetime.now

   fields.Monetary()金钱字段时,必须要写currery_field 字段, 此字段为使用货币的种类

猜你喜欢

转载自www.cnblogs.com/bianjing/p/9439069.html
今日推荐