zoukankan      html  css  js  c++  java
  • 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 字段, 此字段为使用货币的种类

  • 相关阅读:
    Sqlsugar中使用Codefrist创建数据库
    EFCore中CoreFrist多个上下文
    高并发
    优先级反转
    二叉树算法
    使用AJAX上传图片
    Entity Framework
    .Net面试题
    LC 1515. Best Position for a Service Centre (Simulated Annealing)
    git
  • 原文地址:https://www.cnblogs.com/bianjing/p/9439069.html
Copyright © 2011-2022 走看看