如果向导的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 字段, 此字段为使用货币的种类