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