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