Запись не существует или была удалена.\\\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 :)

Если я что-то не ясно объяснил или у вас есть другие вопросы, не стесняйтесь спрашивать!

Вернуться на верх