Dolibarr 13.0.X - Bug fichier fourn/reception/card.php

Soit une commande avec au moins deux lignes.

  • La première est un produit,
  • La dernière est un service personnalisé, donc ayant le champ fk_product non renseigné, et qui ne doit donc pas être réceptionnée. (le fait qu’elle soit en dernière position est important pour que le bug se produise)

Dans le formulaire de création de réception, seule la première ligne apparait… Jusque là, c’est normal… Sauf que la création de la réception échoue avec l’erreur ErrorWarehouseRequiredIntoReceptionLine

La cause est l’utilisation de la mauvaise variable, en ligne 323 de fourn/reception/card.php

if (!($linesrc->fk_product > 0) && empty($conf->global->STOCK_SUPPORTS_SERVICES))

Si on regarde plus haut dans le code on a lignes 302 à 304

foreach ($objectsrc->lines as $linesrc) {
if ($linesrc->id == GETPOST($idl, ‹ int ›)) $lineToTest = $linesrc;
}

Donc à l’issue de ce code $lignesrc correspond toujours à la dernière ligne de la commande (donc dans ce cas précis, celle qui ne doit pas être réceptionnée) alors que la variable qui nous intéresse est en réalité $lineToTest

La ligne 323 devient donc

if (!($lineToTest->fk_product > 0) && empty($conf->global->STOCK_SUPPORTS_SERVICES))

Et là, plus d’erreur, la création de la réception se passe bien

1 « J'aime »

Bonjour @FR69, pensez vous pouvoir proposé cette correction sur github (GitHub - Dolibarr/dolibarr: Dolibarr ERP CRM is a modern software package to manage your company or foundation activity (contacts, suppliers, invoices, orders, stocks, agenda, accounting, ...).It's opensource software (wrote with PHP language) designed for small and medium companies, foundation and freelances. You can freely install, use and distribute it as a standalone application or as a web application to use it from every internet access and media.) via une pull requet ?

EDIT: fix : test on reception must be done on lineToTest if checked by FHenry · Pull Request #17049 · Dolibarr/dolibarr · GitHub