odoo-13 - create_from_ui() 接受 2 个位置参数
问题描述
您好,我尝试将 odoo 12 模块移植到 odoo 13 并收到此类错误消息。也许有人可以解释如何解决错误情况?也许有简单的解决方案?我对odoo真的很陌生,所以请尽可能多地给我知识。在那种情况下,可能会有一位更优秀的模块开发人员成长并开发一些免费模块:)
有代码:
@api.model
def create_from_ui(self, orders):
submitted_references = [o['data']['name'] for o in orders]
pos_order = self.search([('pos_reference', 'in', submitted_references)])
existing_orders = pos_order.read(['pos_reference'])
existing_references = set([o['pos_reference'] for o in existing_orders])
orders_to_save = [o for o in orders if o['data']['name'] not in existing_references]
order_ids = []
order_to_update = [o for o in orders if o['data']['name'] in existing_references]
# Keep only new orders
for tmp_order in orders_to_save:
to_invoice = tmp_order['to_invoice']
order = tmp_order['data']
if to_invoice:
self._match_payment_to_invoice(order)
pos_order = self._process_order(order)
order_ids.append(pos_order.id)
try:
pos_order.action_pos_order_paid()
except psycopg2.OperationalError:
# do not hide transactional errors, the order(s) won't be saved!
raise
except Exception as e:
_logger.error('Could not fully process the POS Order: %s', tools.ustr(e))
if to_invoice:
pos_order.action_pos_order_invoice()
pos_order.invoice_id.sudo().action_invoice_open()
pos_order.account_move = pos_order.invoice_id.move_id
# Update draft orders
for tmp_order in order_to_update:
for order in pos_order:
if order.pos_reference == tmp_order['data']['name']:
pos_line_ids = self.env['pos.order.line'].search([('order_id', '=', order.id)])
if pos_line_ids:
pos_cids = []
new_cids = []
for line_id in pos_line_ids:
pos_cids.append(line_id.pos_cid)
for line in tmp_order['data']['lines']:
if line_id.pos_cid == line[2].get('pos_cid'):
new_cids.append(line[2].get('pos_cid'))
order.write({'lines': [(1, line_id.id, line[2])]})
for line in tmp_order['data']['lines']:
if line[2].get('pos_cid') not in pos_cids:
order.write({'lines': [(0, 0, line[2])]})
pos_cids.append(line[2].get('pos_cid'))
new_cids.append(line[2].get('pos_cid'))
newList = []
for item in pos_cids:
if item not in new_cids:
newList.append(item)
order_line_ids = self.env['pos.order.line'].search([('pos_cid', 'in', newList)])
if order_line_ids:
for each_line in order_line_ids:
each_line.unlink()
to_invoice = tmp_order['to_invoice']
order = tmp_order['data']
if to_invoice:
self._match_payment_to_invoice(order)
pos_order = self._process_order(order)
order_ids.append(pos_order.id)
try:
pos_order.action_pos_order_paid()
except psycopg2.OperationalError:
# do not hide transactional errors, the order(s) won't be saved!
raise
except Exception as e:
_logger.error('Could not fully process the POS Order: %s', tools.ustr(e))
if to_invoice:
pos_order.action_pos_order_invoice()
pos_order.invoice_id.sudo().action_invoice_open()
pos_order.account_move = pos_order.invoice_id.move_id
self.broadcast_order_data(True)
return order_ids
我得到的有错误:
File "/usr/lib/python3/dist-packages/odoo/api.py", line 356, in _call_kw_model
result = method(recs, *args, **kwargs)
TypeError: create_from_ui() takes 2 positional arguments but 3 were given
解决方案
推荐阅读
- html - Angular中的删除方法没有删除
- c# - 滚动时 DataGrid 行正在改变颜色
- angular - 如果解析 JSON 文件 Angular 出现问题,请尝试捕获未捕获错误
- linux - 如何使用 openssh 向 vm 内运行的 CLI 服务发送命令?
- python - 如何在 numpy 中实现这个方程
- python-3.x - 通过在 pandas 中的组内连接值来创建一个新列
- visual-studio-code - 新的编码,适用于代码块,但不适用于 vscode
- datagridview - 在 datagridview 中处理 KeyDown 事件
- arrays - 返回多种类型的解码数据不起作用
- mysql - 加快从庞大的日志表中收集查询的最佳方法是什么?