Commandes clients à traiter en retard

Bonjour,

juste pour signaler une erreur de code sur le tableau de bord de travail de la page d’accueil. Le calcul du nombre de commandes client à traiter en retard est erroné.

Voici le code qui pose problème (en rouge) dans le fichier htdocs/commande/class/commande.class.php :

while ($obj=$this->db->fetch_object($resql))
{
$response->nbtodo++;
$generic_commande->statut = $obj->fk_statut;
$generic_commande->date_livraison = $obj->date_delivery;
if ($generic_commande->hasDelay()) {
$response->nbtodolate++;
}
}
return $response;

La fonction en dessous , hasDelay() utilise des timestamp pour déterminer le retard et non une chaine au format date. Dans la liste des commandes, par exemple le flag retard est ok car l’assignation de la date se fait par $generic_commande->date_livraison = $db->jdate($objp->date_delivery);

La fonction jdate() se trouve dans DoliDB.class.php

Voilà, bonne journée à tous.

Bonjour,

Si vous savez utiliser git, vous pouvez proposer directement un pull request sur Github.

Bonne journée.

Bonjour,

Excusez mon ignorance, j’ai compris les grandes lignes des explications de seandorfer mais, concrètement, je peux faire quoi pour corriger le pb ?
Merci d’avance!

Bonjour Jérôme,

pour faire au plus vite (c’est ce que j’ai fait), j’ai inclus directement le code la fonction dans le fichier commande.class.php :

while ($obj=$this->db->fetch_object($resql)
{
$response->nbtodo++;

            $generic_commande-\>statut = $obj-\>fk_statut;
            
            $string = $obj-\>date_delivery;
            $string=preg_replace('/([^0-9])/i','',$string);
	 $tmp=$string.'000000';
	$date=dol_mktime(substr($tmp,8,2),substr($tmp,10,2),substr($tmp,12,2),substr($tmp,4,2),substr($tmp,6,2),substr($tmp,0,4),$gm);
            $generic_commande-\>date_livraison = $date;
            if ($generic_commande-\>hasDelay()) {
	             $response-\>nbtodolate++;
        }

}

Bonne journée.

1 « J'aime »

Merci de votre réactivité.

J’ai fait la modif dans le fichier commande.class.php et… toujours le problème…

J’ai 6 commandes à traiter dont la date de livraison n’est pas passée et les 6 apparaissent avec la balise retard dans le tableau de bord…

une idée ???

Bonne journée.

Bonjour
Regardez un peu plus haut dans ce fichier si vous avez:
$sql = « SELECT c.rowid, c.date_creation as datec, c.date_commande, c.date_livraison as delivery_date, c.fk_statut »;

si oui alors ce n’est pas date_delivery mais delivery_date

Fred

1 « J'aime »

Bien vu !!

Un grand merci à tous les deux

Merci Frédéric, bien vu

c’est ma faute, j’ai inversé le nom dans la requête et j’'ai oublié de le dire avec mon post.

Bonne journée à vous 2 et bon week-end

Bonjour,

Je rencontre le même problème, et même après avoir fait la manipulation indiquée, et corrigé l’inversion.

Comment faire ?

Merci d’avance

erreur de ma part, ça fonctionne bien