Problème de validation de facture

Bonjour, je n’arrive pas à valider une facture, il me met ce message. Je ne comprend pas ou est le problème

Please type some additional information that could help us reproduce this issue:
App Versions
{
	"bank": "1.1.1",
	"builder": "1.15.0",
	"construction": "1.14.0",
	"crm": "1.38.4",
	"erpnext": "4.48.3",
	"frappe": "4.53.0",
	"hrms": "2.50.0",
	"insights": "2.2.9",
	"nextcloud": "0.0.1",
	"ocr": "1.0.0",
	"payments": "2.18.0",
	"print_designer": "1.4.3",
	"wiki": "2.0.0"
}
Route
Form/Sales Invoice/(ouj2upso6a)
Error Report
Traceback (most recent call last):
  File "apps/frappe/frappe/app.py", line 114, in application
    response = frappe.api.handle(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/api/__init__.py", line 49, in handle
    data = endpoint(**arguments)
           ^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/api/v1.py", line 36, in handle_rpc_call
    return frappe.handler.handle()
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/handler.py", line 49, in handle
    data = execute_cmd(cmd)
           ^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/handler.py", line 85, in execute_cmd
    return frappe.call(method, **frappe.form_dict)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/__init__.py", line 1738, in call
    return fn(*args, **newargs)
           ^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/utils/typing_validations.py", line 30, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/desk/form/save.py", line 37, in savedocs
    doc.submit()
  File "apps/frappe/frappe/utils/typing_validations.py", line 30, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/model/document.py", line 1102, in submit
    return self._submit()
           ^^^^^^^^^^^^^^
  File "apps/frappe/frappe/model/document.py", line 1085, in _submit
    return self.save()
           ^^^^^^^^^^^
  File "apps/frappe/frappe/model/document.py", line 343, in save
    return self._save(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/model/document.py", line 416, in _save
    self.run_post_save_methods()
  File "apps/frappe/frappe/model/document.py", line 1204, in run_post_save_methods
    self.run_method("on_submit")
  File "apps/frappe/frappe/model/document.py", line 1019, in run_method
    out = Document.hook(fn)(self, *args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/model/document.py", line 1412, in composer
    return composed(self, method, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/model/document.py", line 1394, in runner
    add_to_return_value(self, fn(self, *args, **kwargs))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/model/document.py", line 1016, in fn
    return method_object(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py", line 471, in on_submit
    self.update_prevdoc_status()
  File "apps/erpnext/erpnext/controllers/status_updater.py", line 184, in update_prevdoc_status
    self.validate_qty()
  File "apps/erpnext/erpnext/controllers/status_updater.py", line 291, in validate_qty
    self.check_overflow_with_allowance(item, args)
  File "apps/erpnext/erpnext/controllers/status_updater.py", line 305, in check_overflow_with_allowance
    ) = get_allowance_for(
        ^^^^^^^^^^^^^^^^^^
  File "apps/erpnext/erpnext/controllers/status_updater.py", line 624, in get_allowance_for
    qty_allowance, over_billing_allowance = frappe.db.get_value(
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: cannot unpack non-iterable NoneType object

Bonjour Pierre,

D’après ce que je vois dans le code, il doit manquer le code article dans la ligne. Je n’ai pas beaucoup plus d’informations sur le problème, je ne l’ai pas encore rencontré.

mais je ne sais pas quelle ligne ?? a quel endroit vois tu ca ?

Bonjour Pierre,

D’après le code de l’application, cette fonction est déclenchée quand le système essaye de récupérer la tolérance à la facturation/livraison pour un article.
Etant donné l’erreur, il semble ne pas être en mesure de récupérer ces données parce qu’il manque probablement le code article dans la ligne de facturation.

Est-ce que, par hasard, tu as une ligne de facturation, avec un montant, sans code article ? Il faudrait que cette ligne ait été livrée, ce qui n’est - normalement - pas possible car ces lignes sont retirées des bons de livraison pour éviter ce type de problème.

On est preneur de plus d’informations sur la commande, la livraison et la facture associés à cette erreur.

Peux-tu ouvrir un ticket sur Gitlab ? C’est plus approprié pour ce type d’échange.

Merci !

J’ai effectivement plusieurs lignes qui n’avaient pas de code articles, car ce sont des articles de services qui ne seront jamais recrée (par exemple installation d’un tableau électrique spécifique au client avec x disjoncteurs …) du coup on utilise régulièrement les lignes sans code article.
J’ai du coup créé un article par code et ça a fonctionné

De plus, j’avais une question à ce sujet, quand nous mettons à jours les articles des commandes (par exemple le client à demandé une prise en plus), tous les articles sans code disparaisse, ce qui pose probleme sur le montant de la commande.

Comment faire pour palier à ce problème?
Un article générique pour tous ces types d’article fait vite du bazard, on ne s’y retrouve plus.

Merci pour tout vos conseils et votre travail