问题描述
您好,我尝试将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,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',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