2

仍在使用该死的 OpenOffice Writer 来自定义我的 sale_order.rml 报告。

在我的销售订单中,我有 6 个订单行,有 6 个不同的交货时间。我需要显示六个值中的最大值。

经过多次尝试后,我放弃了使用 reduce 函数,因为它在大多数情况下工作不规律或根本不工作。我从来没有见过这样的事情。

所以我想我会尝试使用 max 封装一个循环,例如:

[[ max(repeatIn(so.order_line.delay,'d')) ]]

我的最长交货时间是 20,我希望看到 20(是的,这太容易了,不是吗!)。

它返回

{'d': 20.0}

至少它包含我所追求的价值。但; 如果我尝试操纵这个结果,它就会完全消失。我努力了:

int(re.findall(r'[0-9]+', max(repeatIn(so.order_line.delay,'d')))[0])

在 python 窗口中效果很好,但在 OpenERP 中绝对没有返回任何内容。

我从我的 sale_order.py 文件中导入 re,我已将其重新编译为 sale_order.pyo:

    import time
    import re
    from datetime import datetime, timedelta
    from report import report_sxw

    class order(report_sxw.rml_parse):
        def __init__(self, cr, uid, name, context=None):
            super(order, self).__init__(cr, uid, name, context=context)
            self.localcontext.update({
                'time': time,
                'datetime': datetime,
                'timedelta': timedelta,
                're': re,
            })

我当然已经多次重新启动服务器。我的测试安装在 Windows 上。

所以谁能告诉我我做错了什么,因为我可以用 Python 让它工作,但不能用 OpenOffice Writer!

谢谢你的帮助!

编辑1:

格式

    {'d': 20.0}

根据python,是一本字典。仍然在 Python 中,要从字典中提取整数,可以这样做:

    >>> dict={'d': 20.0}
    >>> print(dict['d'])
    20.0

但是我怎样才能把它转变成 OpenERP 作家???

4

1 回答 1

0

I have manage to get the result I wanted by importing functools and declaring the reduce function within the parameters of the sale_order.py file.

I then simply used a combination of reduce and max function and it works exactly as expected.

The correct syntax is as follow:

    repeatIn(objects,'o')
    reduce(lambda x, y: max(x, y.delay), o.order_line, 0)

Nothing else is required.

Enjoy!

于 2013-04-11T15:05:46.757 回答