首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Openerp - AttributeError在stock.picking.in功能中的应用

Openerp - AttributeError在stock.picking.in功能中的应用
EN

Stack Overflow用户
提问于 2013-04-16 12:28:51
回答 2查看 687关注 0票数 0

真的很纠结于这件事:

我继承了stock.picking.in,并添加了一些列。然后我添加了一个函数字段。

在函数字段所引用的函数中,如果我不使用来自stock.picking.in对象的任何属性,它就能工作。当我从对象中使用任何值时,它就开始随机地给出'AttributeError:‘和一些属性。它没有说明任何其他原因或原因。

代码:

代码语言:javascript
复制
class stock_picking_custom(osv.osv):
_name = 'stock.picking.in'
_inherit = 'stock.picking.in'
_table = "stock_picking"

def calc_royalty(self, cr, uid, ids, field_name, arg, context=None):
    if not ids: return {}
    res = {}
    for line in self.browse(cr, uid, ids, context=context):
        res[line.id] = 0 #line.royalty_rate * line.loading_netweight

    return res   

_columns = {
            'loading_netweight': fields.float('Net weight at loading', digits=(16,2), help="Net weight at loading (interior weight)"),
            'royalty_date': fields.date('Royalty Issue date'),
            'royalty_number' : fields.char('Royalty Number', size=64),
            'royalty_rate' : fields.float('Royalty Rate (p. ton)', digits=(16,2)),
            'royalty_amount' : fields.function(calc_royalty, type='float', digits=(16,2), string='Royalty Amount', store=True, select=True)
            }
stock_picking_custom()

我已经评论掉了我想用的台词。当我将这一行放回代码中时,它会在royalty_date (例如)上出现属性错误,而这个错误甚至在函数中都没有提到。

请指点。

编辑:--我尝试了与purchase.order完全相同的代码,它运行得非常完美。stock.picking.in有什么不同?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-16 16:32:41

好的,在股票模块中的传递插件中找到了答案。因此,这是一个与继承顺序等相关的框架限制问题。

在这里分享以防有人在类似的情况下结束。

为了解决这个问题,我在stock.picking和stock.picking.in中重复了相同的字段。然后,我从picking.in类中调用挑选类的calc函数。

代码:

代码语言:javascript
复制
class stock_picking_custom(osv.osv):
_name = 'stock.picking'
_inherit = 'stock.picking'

def calc_royalty(self, cr, uid, ids, field_name, arg, context=None):
    if not ids: return {}
    res = {}

    for line in self.browse(cr, uid, ids, context=context):
        res[line.id] = line.royalty_rate * line.loading_netweight

    return res   

_columns = {
            'loading_netweight': fields.float('Net weight at loading', digits=(16,2), help="Net weight at loading (interior weight)"),
            'royalty_date': fields.date('Royalty Issue date'),
            'royalty_number' : fields.char('Royalty Number', size=64),
            'royalty_rate' : fields.float('Royalty Rate (p. ton)', digits=(16,2)),
            'royalty_amount' : fields.function(calc_royalty, type='float', digits=(16,2), string='Royalty Amount', store=True, select=True)
            }

stock_picking_custom()

class stock_picking_in_custom(osv.osv):
_name = 'stock.picking.in'
_inherit = 'stock.picking.in'
_table = "stock_picking"

def calc_royalty(self, cr, uid, ids, field_name, arg, context=None):
    return self.pool.get('stock.picking').calc_royalty(cr,uid,ids,field_name,arg,context=context)

_columns = {
            'loading_netweight': fields.float('Net weight at loading', digits=(16,2), help="Net weight at loading (interior weight)"),
            'royalty_date': fields.date('Royalty Issue date'),
            'royalty_number' : fields.char('Royalty Number', size=64),
            'royalty_rate' : fields.float('Royalty Rate (p. ton)', digits=(16,2)),
            'royalty_amount' : fields.function(calc_royalty, type='float', digits=(16,2), string='Royalty Amount', store=True, select=True)
             }
 stock_picking_in_custom()
票数 0
EN

Stack Overflow用户

发布于 2013-04-16 16:35:20

我没有太多的时间花在它上,但我知道stock.picking.in对象和字段(您定义的)都存储在stock_picking表中,这就是为什么它可能会使用stock.picking.in搜索该字段,而不是get和错误的原因。对象和表中定义的字段可能存在问题,但不确定。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16037088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档