$dateCmd = $order->invoice_date;
$date = DateTime::createFromFormat('Y-m-d H:i:s', $dateCmd );
$dateCmd = $date->format('D');
$j = $date->format('d');
$m = $date->format('m');
$a = $date->format('Y');
if ($dateCmd == "Mon")
$je = $j + 4;
elseif (($dateCmd == "Tue") or ($dateCmd == "Wed") or ($dateCmd == "Thu") or ($dateCmd == "Fri") or ($dateCmd == "Sat") )
$je = $j + 6;
elseif ($dateCmd == "Sun")
$je = $j + 5;
if ($je < 31 )
$dateExpedition = $je.'-'.$m.'-'.$a;
else
{
$je = $je - 30;
$m = $m + 01;
if ($m == 13)
{
$m = 01;
$a = $a + 1;
}
$dateExpedition = $je.'-'.$m.'-'.$a;
}
sachant que $order->invoice_date; vien de fichier en question de prestashop ( et il egale a une date)
$dateCmd = $order->invoice_date; // et $order->invoice_date est une date de type 2012-10-02 09:11:14 par exempleQue contient $dateCmd ?
pas de message d'erreur mais la suite de la page ne s'affiche pas, tous s'arrêt au niveau de la ligne rougeQuel message d'erreur ?
pas d'erreur parce que normalement quand je fait un test hors de prestashop celà marche bien (dhailleur tu peux essayer le code suivant il m'arche trés bien)As tu regarder si'il y avait une erreur lors de la mise en forme de la date ?
$dateCmd = "2012-10-02 09:11:14";
$date = DateTime::createFromFormat('Y-m-d H:i:s', $dateCmd );
$dateCmd = $date->format('D');
$j = $date->format('d');
$m = $date->format('m');
$a = $date->format('Y');
if ($dateCmd == "Mon")
$je = $j + 4;
elseif (($dateCmd == "Tue") or ($dateCmd == "Wed") or ($dateCmd == "Thu") or ($dateCmd == "Fri") or ($dateCmd == "Sat") )
$je = $j + 6;
elseif ($dateCmd == "Sun")
$je = $j + 5;
if ($je < 31 )
$dateExpedition = $je.'-'.$m.'-'.$a;
else
{
$je = $je - 30;
$m = $m + 01;
if ($m == 13)
{
$m = 01;
$a = $a + 1;
}
$dateExpedition = $je.'-'.$m.'-'.$a;
}
echo $dateExpedition;
mais une fois je l'intégre dans prestashop ça marche pas sa s'arrête au niveau de cette ligne :
$dateCmd = $order->invoice_date;
echo $dateCmd,'<br>';
$date = DateTime::createFromFormat('Y-m-d H:i:s', $dateCmd );
$dateCmd = $date->format('D');
$j = $date->format('d');
$m = $date->format('m');
$a = $date->format('Y');
echo $dateCmd,'<br>';
echo $j,'<br>';
echo $m,'<br>';
echo $a,'<br>';
if ($dateCmd == "Mon")
$je = $j + 4;
elseif (($dateCmd == "Tue") or ($dateCmd == "Wed") or ($dateCmd == "Thu") or ($dateCmd == "Fri") or ($dateCmd == "Sat") )
$je = $j + 6;
elseif ($dateCmd == "Sun")
$je = $j + 5;
if ($je < 31 )
$dateExpedition = $je.'-'.$m.'-'.$a;
else
{
$je = $je - 30;
$m = $m + 01;
if ($m == 13)
{
$m = 01;
$a = $a + 1;
}
$dateExpedition = $je.'-'.$m.'-'.$a;
}
Au passage, le plus propre serai de faire une fonction avec la date $order->invoice_date en paramètre et qui retourne la date d'expédition calculée. ou le nombre de jour à ajouter. Il y a une fonction date_add() (ou DateTime::add()) qui pourrait d'ailleurs te rendre service. Parce que ton script ne fonctionne pas fin février à priori.
function getDateExpedition($dateCommande)
{
$date = DateTime::createFromFormat('Y-m-d H:i:s', $dateCommande );
$dateCommande = $date->format('D');
$j = $date->format('d');
$m = $date->format('m');
$a = $date->format('Y');
if ($dateCommande == "Mon")
$je = $j + 4;
elseif (($dateCommande == "Tue") or ($dateCommande == "Wed") or ($dateCommande == "Thu") or ($dateCommande == "Fri") or ($dateCommande == "Sat") )
$je = $j + 6;
elseif ($dateCommande == "Sun")
$je = $j + 5;
if ($je < 31 )
$dateExpedition = $je.'-'.$m.'-'.$a;
else
{
$je = $je - 30;
$m = $m + 01;
if ($m == 13)
{
$m = 01;
$a = $a + 1;
}
$dateExpedition = $je.'-'.$m.'-'.$a;
}
return $dateExpedition;
}
$dateCmd = "2012-10-02 09:11:14";
$testDateExpedetion = getDateExpedition($dateCmd);
echo 'la date d\expédition pour une commande passé le : '.$dateCmd.' est le : '.$testDateExpedetion;
Pour voir ce qu'il y a dans $dateCmd entre autre. J'ai du mal à comprendre comment tu peux savoir ce qu'il y a dans $dateCmd sans faire un echo de cette variable.pourquoi ajouté des echo ?
...