Odoo的标题按钮

时间:2017-10-26 14:08:48

标签: javascript python openerp odoo-8

我试图在标题按钮(工作流程按钮)上触发JavaScript事件。

这是我的js

var _t = instance.web._t, QWeb = instance.web.qweb;

    instance.web.FormView.include({

        init: function() {
            this._super.apply(this, arguments);
        },

        events: {
            "click .resume_consultation": "resume_consultation",
        },

        resume_consultation : function(ev) {
            ev.preventDefault();
            ev.stopPropagation();

        }

    })

xml for button

<header>
    <button type="object" class="resume_consultation"
        name="testonly"
        string="Test Only"/>
</header>

蟒蛇

@api.multi
def testonly(self):
    return False

未调用该事件。但我知道FormView中的init已执行。只是事件不是。

任何人都知道如何为工作流程按钮执行此操作?

1 个答案:

答案 0 :(得分:0)

首先在代码后面添加你的js文件:

<?xml version="1.0" encoding="utf-8"?> <odoo>
        <template id="assets_backend" name="project assets" inherit_id="web.assets_backend">
            <xpath expr="." position="inside">
                         <script type="text/javascript" src="/product_pack/static/src/js/product_pack.js"></script>
            </xpath>
        </template> </odoo>

之后在xml中添加你的js文件:

class SalePetOrder(models.Model):
    _inherit = "xyz"

    def java_script(self):
        return {"hello": "world"}

ather在你的py文件中定义你的点击事件功能

<data>
   <header>
    <button name="java_script" string="Java Script" type="object" custom="click"/>
   </header>
</data>

在xml中定义你的函数后:

var prodsalesbygender = context.OrderProducts
    .GroupBy(op => new
    {
        Gender = op.Order.Person.Gender
    })
    .Select(g => new
    {
        Gender = g.Key.Gender,
        Products = g.GroupBy(op => op.Product)
        .Select(a => new
        {
            ProductName = a.Key.Name,
            Total = a.Sum(op => op.Qty * op.Product.Price)
        })
        .OrderBy(a => a.ProductName)
    });

foreach (var x in prodsalesbygender)
{
    Console.WriteLine(x.Gender);
    foreach (var a in x.Products)
        Console.WriteLine($"\t{a.ProductName} - {a.Total}");
}

然后在清单 / openerp 文件中定义您的js文件和xml文件。

我希望它可以帮到你。