我添加了一个selection类型字段,在purchase.py中它的类purchase.order上,这个字段被称为
sel_cert:'sel_cert' : fields.selection([('si', 'Si'),('no','No')], 'Origen Certificado'),
因此,如果选择了si,那么我在product中创建了一个函数,当purchase_order在state 'done'中时,它会填充product_product类中的一个新字段
顺便说一句,在product中已经有一个函数可以在状态done, draft或其他任何东西上使用product_qty
我尝试在我的自定义函数中使用:val = _get_product_available_func(('done'))来“调用它”,所以如果在purchase.order的sel_cert字段中选择了si,那么它将返回val,但是我不知道怎么做,这是我的函数,并且在这个函数下有我得到的错误的回溯(不用关心缩进,在我的文件中不是这样的):
def desc_cert(self, cr, uid, ids, field_name, field_args, context=None):
obj = self.pool.get('purchase.order')
val = _get_product_available_func(('done'))
if obj.sel_cert == 'si':
return val以及回溯:
Server Traceback (most recent call last):
File "C:\Program Files\OpenERP 7.0-20130726-231403\Server\server\openerp\addons\web\session.py", line 89, in send
File "C:\Program Files\OpenERP 7.0-20130726-231403\Server\server\.\openerp\netsvc.py", line 292, in dispatch_rpc
File "C:\Program Files\OpenERP 7.0-20130726-231403\Server\server\.\openerp\service\web_services.py", line 626, in dispatch
File "C:\Program Files\OpenERP 7.0-20130726-231403\Server\server\.\openerp\osv\osv.py", line 188, in execute_kw
File "C:\Program Files\OpenERP 7.0-20130726-231403\Server\server\.\openerp\osv\osv.py", line 131, in wrapper
File "C:\Program Files\OpenERP 7.0-20130726-231403\Server\server\.\openerp\osv\osv.py", line 197, in execute
File "C:\Program Files\OpenERP 7.0-20130726-231403\Server\server\.\openerp\osv\osv.py", line 185, in execute_cr
File "C:\Program Files\OpenERP 7.0-20130726-231403\Server\server\.\openerp\osv\orm.py", line 3604, in read
File "C:\Program Files\OpenERP 7.0-20130726-231403\Server\server\.\openerp\osv\orm.py", line 3724, in _read_flat
File "C:\Program Files\OpenERP 7.0-20130726-231403\Server\server\.\openerp\osv\fields.py", line 1133, in get
File "C:\Program Files\OpenERP 7.0-20130726-231403\Server\server\openerp\addons\product\product.py", line 456, in desc_cert
NameError: global name '_get_product_available_func' is not defined因此,_get_product_available_func是模块product.py中之前的一个函数
def _get_product_available_func(states, what):
def _product_available(self, cr, uid, ids, name, arg, context=None):
return {}.fromkeys(ids, 0.0)
return _product_available
_product_qty_available = _get_product_available_func(('done',), ('in', 'out'))
_product_certificado_qty = _get_product_available_func(('done',), ('in', 'out'))
_product_virtual_available = _get_product_available_func(('confirmed','waiting','assigned','done'), ('in', 'out'))
_product_outgoing_qty = _get_product_available_func(('confirmed','waiting','assigned'), ('out',))
_product_incoming_qty = _get_product_available_func(('confirmed','waiting','assigned'), ('in',))如果product中的字段sel_cert为purchase_order,则需要在purchase_order中返回'si'
但是不知道如何调用它,我应该使用self.browse吗?或者是product_available呢?
对此有什么想法吗?
我希望我已经解释清楚了
提前感谢
发布于 2013-07-28 01:47:43
我猜你想写:
self._get_product_available_func发布于 2013-08-06 12:56:34
使用self.pool.get(‘编写函数的类名’)._get_product_available_func
https://stackoverflow.com/questions/17900114
复制相似问题