将加载项从Odoo 9移植到Odoo 10-编程错误:无法调整类型“account.tax”

将加载项从Odoo 9移植到Odoo 10-编程错误:无法调整类型“account.tax”,odoo,odoo-10,Odoo,Odoo 10,在尝试重用此Odoo 9插件到Odoo 10时,我面临以下问题: 文件/usr/lib/python2.7/dist-packages/odoo/custom\u addons/purchase\u recurtive\u orders/models/recurtive\u orders.py,第310行,生成初始订单 订单=self.create\u orderself.start\u日期、协议行 ... 编程错误:无法调整类型“account.tax” 可在此处查看完整错误: 回溯最近一次呼

在尝试重用此Odoo 9插件到Odoo 10时,我面临以下问题:

文件/usr/lib/python2.7/dist-packages/odoo/custom\u addons/purchase\u recurtive\u orders/models/recurtive\u orders.py,第310行,生成初始订单 订单=self.create\u orderself.start\u日期、协议行 ... 编程错误:无法调整类型“account.tax” 可在此处查看完整错误:

回溯最近一次呼叫上次: 文件/usr/lib/python2.7/dist-packages/odoo/http.py,第640行,在异常处理中 返回superJsonRequest,self.\u handle\u exceptionexception 文件/usr/lib/python2.7/dist-packages/odoo/http.py,第677行,在分派中 结果=self.\u调用函数**self.params 文件/usr/lib/python2.7/dist-packages/odoo/http.py,第333行,在调用函数中 返回选中的\u callself.db、*args、**kwargs 文件/usr/lib/python2.7/dist-packages/odoo/service/model.py,第101行,在包装器中 返回fdbname、*args、**kwargs 文件/usr/lib/python2.7/dist-packages/odoo/http.py,第326行,在checked_调用中 结果=自身终点*a,**kw 文件/usr/lib/python2.7/dist-packages/odoo/http.py,第935行,in__调用__ 返回自。方法*参数,**千瓦 文件/usr/lib/python2.7/dist-packages/odoo/http.py,第506行,作为响应 响应=f*args,**kw 文件/usr/lib/python2.7/dist-packages/odoo/addons/web/controllers/main.py,第889行,在call_按钮中 action=self.\调用\模型、方法、参数,{} 文件/usr/lib/python2.7/dist-packages/odoo/addons/web/controllers/main.py,第877行,in_call_kw return call_kwrequest.env[model],方法,args,kwargs 文件/usr/lib/python2.7/dist-packages/odoo/api.py,第681行,在call\u-kw中 返回调用\u kw\u多方法、模型、参数、kwargs 文件/usr/lib/python2.7/dist-packages/odoo/api.py,第672行,在call\u kw\u multi中 结果=methodrecs,*args,**kwargs 文件/usr/lib/python2.7/dist-packages/odoo/custom\u addons/purchase\u recurtive\u orders/models/recurtive\u orders.py,第310行,生成初始订单 订单=self.create\u orderself.start\u日期、协议行 文件/usr/lib/python2.7/dist-packages/odoo/custom\u addons/purchase\u recurtive\u orders/models/recurtive\u orders.py,第259行,在create\u order中 订单行对象创建订单行价值 文件/usr/lib/python2.7/dist-packages/odoo/addons/purchase/models/purchase.py,第557行,在create中 line=superPurchaseOrderLine,self.createvalues 文件/usr/lib/python2.7/dist-packages/odoo/models.py,第3830行,在create中 记录=self.browseself.\u createold\u vals 文件/usr/lib/python2.7/dist-packages/odoo/models.py,第3987行,在创建中 field.writeself.with_contextrel_context,VAL[名称] 文件/usr/lib/python2.7/dist-packages/odoo/fields.py,第2402行,写入 链接行为[2] 文件/usr/lib/python2.7/dist-packages/odoo/fields.py,第2367行,链接中 cr.executequery、records.ids、listsub_id、tuplerecords.ids 包装器中的文件/usr/lib/python2.7/dist-packages/odoo/sql_db.py,第154行 返回fself、*args、**kwargs 文件/usr/lib/python2.7/dist-packages/odoo/sql_db.py,第231行,在execute中 res=self.\u obj.executequery,参数 •编程错误:无法调整类型“account.tax” 到目前为止,我没有修改组使用以外的任何内容。 这是定期订单的代码:

-*-编码:utf-8-*- Cybrosys技术私人有限公司。 版权C 2009-TODAY Cybrosys Technologies。 作者:杰斯尼·巴努 您可以根据GNU协议的条款对其进行修改 通用公共许可证LGPL v3,版本3。 禁止出版、分发、再许可或出售副本 软件的副本或软件的修改副本。 这个节目的发布是希望它会有用, 但无任何保证;甚至没有任何关于 适销性或适合某一特定目的。见 GNU LESSER通用公共许可证LGPL v3了解更多详细信息。 您应该已经收到GNU LESSER通用公共许可证的副本 通用公共许可证LGPLv3以及此程序。 如果没有,请参阅。 从日期时间导入时间增量 从日期时间导入日期时间 从dateutil.relativedelta导入relativedelta 从openerp导入模型、字段、api、异常、_ 将openerp.addons.decimal\u精度导入为dp 从openerp.tools导入默认\u服务器\u日期时间\u格式 类协议模型。模型: _名称='采购.定期订单.协议' _inherit=['mail.thread'] _description=定期订单协议 @api.model 定义获取下一个术语日期自身、日期、单位、间隔: 如果单位=‘天’: 返回日期+timedeltadays=间隔 elif单位==‘周’: 返回日期+时间延迟周=间隔 elif单位=‘月份’: 返回日期+相对延迟时间=间隔 elif单位==‘年’: 返回日期+相对时间=间隔 @api.multi 定义(计算)下一个(到期)(日期)自己: 如需自行同意: 如果agreement.extend=='fixed': agreement.next\u expiration\u date=agreement.end\u date elif agreement.Extension==“无限”: 现在=fields.Date.from_stringfields.Date.today 日期=自我。获取下一学期日期 fields.Date.from\u stringagreement.start\u Date, 协议.延长\u单位,协议.延长\u间隔 当日期<现在: 日期=自我。获取下一学期日期 日期、协议、单位, 同意。延长间隔 协议。下一个\u到期\u日期=日期 其他: 协议。下一个\u到期\u日期=自身。\u获取\u下一个\u期限\u日期 fields.Date.from\u stringagreement.last\u翻新\u日期或 协议。开始日期, 协议.延长\u单位,协议.延长\u间隔 定义\u默认值\u公司\u ID自身: 公司模型=self.env['res.company'] 公司id=公司模型。\公司\默认值\获取“采购” 返回公司\u model.browsecompany\u id.id name=fields.Char string='Name',size=100,index=True,required=True, help='Name有助于识别协议' number=fields.Char string='Agreement number',index=True,size=32,copy=False, 帮助=协议数量。保留为空以获取由 序列 活动=字段。布尔值 string='Active',default=True, help='取消选中此字段,不生成配额' partner_id=fields.manyOne comodel_name='res.partner',string='Supplier',index=True, 更改\u默认值=True,必需值=True, 帮助=与您签订协议的供应商 公司id=fields.manyOne comodel_name='res.company',string='company',required=True, help=签署协议的公司,default=\u default\u Company\u id 开始日期=字段。日期 string='Start date',index=True,copy=False, 帮助=协议的开始。保留为空以使用当前日期 延长=字段。选择 选择=[‘经常性’、‘可更新的固定期限’, ‘无限期’、‘无限期’, “固定”、“固定期限”], string='Extension',默认值='unlimited', help=设置协议的期限。”可更新的固定术语:它设置 固定期限,但可人工续签无限的 术语“:自动进行续订;”固定期限”:期限为 已修复且不可能续订。必需=真 结束日期=字段。日期 string='End date',help=协议的结束日期 延长间隔=字段。整数 string='Interval',默认值为1, help=将协议延长到新协议的时间间隔 可更新,自动无限期,手动无限期 可更新的固定期限。 延长单位=字段。选择 选择=['天','天', “周”,“周”, “月”、“月”, “年”,“年”], string='Interval unit',默认值='years', help=“延长间隔的时间单位” 协议行=fields.One2many comodel_name='purchase.recurtive_orders.agreement.line', 反向\u name='agreement\u id',string='agreement line' 订单行=fields.One2many comodel\u name='purchase.order',copy=False,inverse\u name='agreement\u id', string='Orders',readonly=True 续签行=fields.One2many comodel_name='purchase.recurtive_orders.agreement.renewal',copy=False, 反向\u name='agreement\u id',string='Renewal line',readonly=True 上次更新日期=字段。日期 string='Last Reformation date', 帮助=协议续签的最后日期与开始日期相同(如果不是) 更新 下一个\u到期\u日期=字段。日期 compute=\u compute\u next\u expiration\u date,string='next expiration date' 状态=字段。选择 选择=[“空”、“无订单”, “第一个”,“创建的第一个订单”, “订单”,“带订单”], string='State',readonly=True,默认值='empty' 续订\状态=字段。选择 选择=[“未续订”,“未续订协议”, “续签”、“协议续签”], string='Renewal state',readonly=True,默认='not'u renewad' 注释=字段。文本“注释” _sql_约束=[ “number_uniq”、“uniquenumber”、“协议号必须唯一!”, ] @api.约束“开始日期”、“结束日期” 定义检查日期自身: 请自行记录: 如果record.end_日期和record.end_日期
fpos.map_tax(agreement_line.product_id.supplier_taxes_id.filtered(lambda r: r.company_id.id == self.company_id.id))
返回记录集,但数据库不存储记录集。这就是为什么它在消息中失败的原因

编程错误:无法调整类型“account.tax”

解决方案

现在,它取决于要写入此值的字段类型。如果它是一个多21字段,那么它应该是一个整数。您可以使用recordset.id获得

附注1-

注意,记录集可以是多个记录集,这意味着多个记录看起来像account.tax6、7、12、34。在这种情况下,如果您说recordset.id,它将失败,因为有多个id,并且它不确定您想要哪个id。因此,要从记录集中获取ID,可以执行recordset.IDs,如果记录集为空,则会生成类似[6,7,12,34]或[]的列表

注2-

如果你想在很多领域写作。你可以这样做

self.taxes_id = [(6,0, recordset.ids)]

只需将.ids添加到记录集中,模块就可以正常工作了。”taxes\u id':fpos.map\u taxeagreement\u line.product\u id.supplier\u taxes\u id.filteredlambda r:r.company\u id.id==self.company\u id.id.id
self.taxes_id = [(6,0, recordset.ids)]