Запись не существует или была удалена.\\\n(запись: account.move.line(5398,), user: 7) в odoo при обновлении
Я получаю запись не существует или была удалена.\n(запись: account.move.line(5398,), user: 7) ошибка при обновлении данных в odoo. Ниже приведен мой код, может ли кто-нибудь помочь решить эту проблему.
import xmlrpc.client
endpoint_url = "/api/account.move/"
obj = get_object_or_404(OrderItem, order__id=order_id)
invoice_date = obj.order.created_on
name = obj.product.varient_name
price = obj.total
quantity = obj.quantity
payment_source = obj.order.payment_method
payment_reference = obj.order.order_number
common = xmlrpc.client.ServerProxy('{}/xmlrpc/2/common'.format(url))
uid = common.authenticate(db, username, password, {})
models = xmlrpc.client.ServerProxy('{}/xmlrpc/2/object'.format(url))
ids = models.execute_kw(db, uid, password, 'account.move', 'search_read', [[['source_document', '=', payment_reference]]], {'fields': ['partner_id', 'id']})
invoice_id = ids[0]['id']
partner_id_ = ids[0]['partner_id'][0]
headers = {
"access-token":tokens,
"Content-type":"application/jsonp",
"Cookie":session_id
}
api_invoice_line_id = [(1, invoice_id,{'name':name, 'price_unit':price, 'quantity':quantity})]
data = {
"partner_id":partner_id_,
"invoice_date":str(invoice_date),
"move_type":"out_invoice",
"__api__invoice_line_ids":str(api_invoice_line_id),
"payment_source":payment_source,
"source_document": payment_reference,
"rider":rider_name,
"ref":""
}
datas_ = json.dumps(data, indent=4)
req = requests.put(url+endpoint_url+str(invoice_id), headers=headers, data=datas_)
if req.status_code == 200:
status = "Update Successful"
else:
status = str(req.text)
return status
Похоже, что ваш код не работает из-за кортежа, который вы даете для вставки/обновления данных в __api__invoice_line_ids
.
Полагаю, что это какое-то поле account.move.line
Many2many или One2many.
Я вижу, что вы используете команду 1 с invoice_id
(идентификатор account.move
) и некоторыми данными в дикте.
Проблема здесь в том, что вы затем пытаетесь добавить это в поле, указывающее на account.move.line
. Таким образом, ваш ID 5398 является идентификатором account.move
, а не идентификатором account.move.line
.
Не совсем понятно, какую цель вы преследуете. Если она заключается в том, чтобы подтолкнуть/обновить некоторые записи account.move новыми данными, измените ваш __api__invoice_line_ids
, чтобы он указывал на account.move.
Если ваша цель - продвинуть/обновить несколько account.move.line
записей, то вам лучше зациклиться на line_ids
ваших invoice_id
:)
Если я что-то не ясно объяснил или у вас есть другие вопросы, не стесняйтесь спрашивать!