我做了这个函数,在 PostgreSQL 中执行一个查询,并从一个字段中减去一个数量到另一个字段,当在 OpenErp 中完成采购订单时,在两个字段之间进行减法,每个字段都属于 OpenErp 中的不同类
def cert_rev(self, uid, arg, ids, context=None):
res = {}
for record in self.browse(cr, uid, ids, context):
cr.execute('''SELECT product_qty FROM purchase_order_line
WHERE cert_v IS TRUE
AND state IS approved
sum(certificados_line.Cantidad - purchase_order_line.product_qty)''')
res = cr.fetchone()
然后在 a 中调用它column
,如下所示:
'se_consumio' : fields.function(cert_rev, type='float', string='Prueba Material consumido'),
但它现在不起作用,它给了我这个错误:
Client Traceback (most recent call last):
File "C:\Program Files\OpenERP 7.0-20130520-231036\Server\server\openerp\addons\web\http.py", line 204, in dispatch
File "C:\Program Files\OpenERP 7.0-20130520-231036\Server\server\openerp\addons\web\controllers\main.py", line 1130, in call_kw
File "C:\Program Files\OpenERP 7.0-20130520-231036\Server\server\openerp\addons\web\controllers\main.py", line 1122, in _call_kw
File "C:\Program Files\OpenERP 7.0-20130520-231036\Server\server\openerp\addons\web\session.py", line 42, in proxy
File "C:\Program Files\OpenERP 7.0-20130520-231036\Server\server\openerp\addons\web\session.py", line 30, in proxy_method
File "C:\Program Files\OpenERP 7.0-20130520-231036\Server\server\openerp\addons\web\session.py", line 103, in send
Server Traceback (most recent call last):
File "C:\Program Files\OpenERP 7.0-20130520-231036\Server\server\openerp\addons\web\session.py", line 89, in send
File "C:\Program Files\OpenERP 7.0-20130520-231036\Server\server\.\openerp\netsvc.py", line 292, in dispatch_rpc
File "C:\Program Files\OpenERP 7.0-20130520-231036\Server\server\.\openerp\service\web_services.py", line 626, in dispatch
File "C:\Program Files\OpenERP 7.0-20130520-231036\Server\server\.\openerp\osv\osv.py", line 188, in execute_kw
File "C:\Program Files\OpenERP 7.0-20130520-231036\Server\server\.\openerp\osv\osv.py", line 131, in wrapper
File "C:\Program Files\OpenERP 7.0-20130520-231036\Server\server\.\openerp\osv\osv.py", line 197, in execute
File "C:\Program Files\OpenERP 7.0-20130520-231036\Server\server\.\openerp\osv\osv.py", line 185, in execute_cr
File "C:\Program Files\OpenERP 7.0-20130520-231036\Server\server\.\openerp\osv\orm.py", line 3604, in read
File "C:\Program Files\OpenERP 7.0-20130520-231036\Server\server\.\openerp\osv\orm.py", line 3724, in _read_flat
File "C:\Program Files\OpenERP 7.0-20130520-231036\Server\server\.\openerp\osv\fields.py", line 1131, in get
TypeError: cert_rev() takes at most 5 arguments (7 given)
这是我第一次cr.execute
从 openerp 中的模块进行查询,所以我不知道我是否遗漏了什么,这种错误在 python 中很常见,但无法获得任何线索。
任何人都可以对此有所了解吗?
提前致谢!
PSproduct_qty
是一个名为的类的一部分purchase_order_line
:
'product_qty': fields.float('Quantity', digits_compute=dp.get_precision('Product Unit of Measure'), required=True),
并且Cantidad
是一个名为的类的一部分certificados_line
:
'Cantidad' : fields.float('Cantidad'),
具有此类的模块certificados_line
依赖purchase
于__openerp__.py
文件。