Partage
  • Partager sur Facebook
  • Partager sur Twitter

Odoo APi

    9 septembre 2024 à 14:06:05

    Bonjour, j'essaie depuis mon projet d'utiliser l'api php-odoo-api-client, qui jusque la marche très bien pas de problème de ce côté.
    Cependant, quand j'esssaie de faire ce call : $client->call('product.product', 'price_compute', [$product_id, 'list_price', false, $currency_id, 1]);

    J'ai des erreurs que je ne comprend pas, le but de cette appele et de convertir les prix d'articles dans la devise concerner en utilisant la méthode price_compute du model product_product.

    Voici l'erreur

     #message: "TypeError: unsupported operand type(s) for "concat": 'res.currency()' and '<class 'int'>'"
      #code: 1
      #file: "
    /app/vendor
    /apitech-solution/php-odoo-api-client/
    src/Exception/RemoteException.php"
      #line: 48
      #xmlTrace: array:15 [
        0 => array:4 [
          "file" => "/home/odoo/src/odoo/odoo/models.py"
          "line" => 5826
          "method" => "concat"
          "statement" => "raise TypeError(f"unsupported operand type(s) for \"concat\": '{self._name}()' and '{type(arg)}'")"
        ]
        1 => array:4 [
          "file" => "/home/odoo/src/odoo/odoo/models.py"
          "line" => 5813
          "method" => "__add__"
          "statement" => "return self.concat(other)"
        ]
        2 => array:4 [
          "file" => "/home/odoo/src/odoo/odoo/addons/base/models/res_currency.py"
          "line" => 251
          "method" => "_get_conversion_rate"
          "statement" => "currency_rates = (from_currency + to_currency)._get_rates(company, date)"
        ]
        3 => array:4 [
          "file" => "/home/odoo/src/odoo/odoo/addons/base/models/res_currency.py"
          "line" => 273
          "method" => "_convert"
          "statement" => "to_amount = from_amount * self._get_conversion_rate(self, to_currency, company, date)"
        ]



    -
    Edité par ThomasPierson3 9 septembre 2024 à 14:06:49

    • Partager sur Facebook
    • Partager sur Twitter
      9 septembre 2024 à 18:24:44

      tu as mis résolu, donc tu as réglé ton soucis ? ou alors tu t'es aperçu que tu avais posté dans la rubrique python alors que c'est du php et que tu as indiqué résolu pour "clore" le sujet ici et ouvrir le même dans la partie php du forum (je n'ai pas encore regardé au moment où j'écris) ?

      Dans tous les cas, le message est clair et dit que tu ne peux pas utiliser concat avec un entier et un res.currency() (on t'indique même où se situent les appels déclenchant l'erreur, donc inspecter avant ces lignes là pour trouver la raison.

      • Partager sur Facebook
      • Partager sur Twitter
        10 septembre 2024 à 8:36:26

        Je me souviens pas avoir mis en résolu :)

        Certe l'erreur est clair, j'ai fouiller le code mais je comprend pas pourquoi cette erreur survient, le soucis viendrai du paramètre currency que j'envoie mais j'ai essayer toute ces formes mais je ne vois pas pourquoi cela ne colle pas

        • Partager sur Facebook
        • Partager sur Twitter
          10 septembre 2024 à 11:33:50

          ça serait bien d'avoir des infos sur cette fonction que tu appelles.

          L'erreur viendrait de cette opération de concaténation from_currency + to_currency et donc vraisemblablement de to_currency, qui au lieu d'être de type currency serait de type integer. J'en déduirais que ça viendrait (peut-être) du paramètre $currency_id que tu passes, ça devrait être un type currency et pas l'id (entier) de la currency.

          En plus des liens qu'on a donné sur SO:

          code du price_compute => https://github.com/odoo/odoo/blob/15.0/addons/product/models/product.py#L723 

          code du _convert (et autres fonctions lié à la classe Currency) https://github.com/odoo/odoo/blob/15.0/odoo/addons/base/models/res_currency.py#L251 

          on voit que le from_currency + to_currency est utilisé pour concaténer 2 currency dont les id sont utilisés en lignes 124 dans la fonction _get_rates

          • Partager sur Facebook
          • Partager sur Twitter

          Odoo APi

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          • Editeur
          • Markdown