SOS module de paiement 3 fois sous prestashop

Eléphant du PHP | 417 Messages

30 janv. 2012, 16:07

j'ai un souci avec module de paiement 3 fois
le module ne function pas le 30 janvier :) et normalement le 31 aussi :) j'explique pourquoi enfait quand l'utilisateur choisi ce module bah ce dernière calcule la date de 2eme échéance et 3eme automatiquement et quand c'est le 30 ou 31 janvier la première date la 2eme automatiquement est le 30 ou 31 février et le système de la banque n'accepte pas vu que le 30 et 31 n'existe pas dans calendrier :)

le code qui calcule les dates de 2eme et 3eme échéance et le voila
switch ($sNbrEch)
        {
            case 2:
                $sDateEcheance1 = date('d/m/Y');
                $sMontantEcheance1 = number_format($sMontant / $sNbrEch, 2, '.', '');
                $restant = $restant - $sMontantEcheance1;
            
                $sDateEcheance2 = date('d/m/Y', mktime(date('H'), date('i'), date('s'), date('m') + 1));
                $sMontantEcheance2 = $restant;
                
                $sDateEcheance3 = '';
                $sMontantEcheance3 = '';
                
                $sDateEcheance4 = '';
                $sMontantEcheance4 = '';
                break;
            case 3:
                $sDateEcheance1 = date('d/m/Y');
                $sMontantEcheance1 = number_format($sMontant / $sNbrEch, 2, '.', '');
                $restant = $restant - $sMontantEcheance1;
            
                $sDateEcheance2 = date('d/m/Y', mktime(date('H'), date('i'), date('s'), date('m') + 1));
                $sMontantEcheance2 = ($restant > number_format($sMontant / $sNbrEch, 2, '.', '') ? number_format($sMontant / $sNbrEch, 2, '.', '') : $restant);
                $restant = $restant - $sMontantEcheance2;
                
                $sDateEcheance3 = date('d/m/Y', mktime(date('H'), date('i'), date('s'), date('m') + 2));
                $sMontantEcheance3 = $restant;
                
                $sDateEcheance4 = '';
                $sMontantEcheance4 = '';
                break;
            case 4:
                $sDateEcheance1 = date('d/m/Y');
                $sMontantEcheance1 = number_format($sMontant / $sNbrEch, 2, '.', '');
                $restant = $restant - $sMontantEcheance1;
            
                $sDateEcheance2 = date('d/m/Y', mktime(date('H'), date('i'), date('s'), date('m') + 1));
                $sMontantEcheance2 = ($restant > number_format($sMontant / $sNbrEch, 2, '.', '') ? number_format($sMontant / $sNbrEch, 2, '.', '') : $restant);
                $restant = $restant - $sMontantEcheance2;
                
                $sDateEcheance3 = date('d/m/Y', mktime(date('H'), date('i'), date('s'), date('m') + 2));
                $sMontantEcheance3 = ($restant > number_format($sMontant / $sNbrEch, 2, '.', '') ? number_format($sMontant / $sNbrEch, 2, '.', '') : $restant);
                $restant = $restant - $sMontantEcheance3;
                
                $sDateEcheance4 = date('d/m/Y', mktime(date('H'), date('i'), date('s'), date('m') + 3));
                $sMontantEcheance4 = $restant;
                break;
        }
je voulais rajouter une condition if mais ça marche pas :( ça n'affiche rien sur mon site
la ligne que j'ai essayé d'ajouter est la suivante :
if ( ((date('m') == 01) and (date('d')= 30)) or ((date('m') == 01) and (date('d')= 31)) )
					$sDateEcheance2 = date('d/m/Y', mktime(date('H'), date('i'), date('s'), 2,28));
je l'ai ajouter avant calcule de 2eme écheance

Eléphant du PHP | 209 Messages

30 janv. 2012, 16:34

Salut,

Afin de te protéger de tous les cas, tu devrais utiliser la fonction checkdate
http://php.net/manual/en/function.checkdate.php

Ca te permettra de valider ta date et par exemple de décrémenter le nombre de jours tant qu'elle n'est pas valide.

++

Eléphant du PHP | 417 Messages

30 janv. 2012, 16:40

Merci mais le problème ici c'est que j'aurai : date 2eme échéance sera 01/03/2012 et la 3eme c'est 30/03/2012 chose qui est impossible pour une banque faut pas que les deux échéance soient dans le même mois

Eléphant du PHP | 209 Messages

30 janv. 2012, 16:49

Ca te permettra de valider ta date et par exemple de décrémenter le nombre de jours tant qu'elle n'est pas valide.
Tu décrémentes donc jour = jour -1 ;)

Si le 31 février n'est pas valide, il testera le 30 puis le 29, puis le 28... ;)

Eléphant du PHP | 417 Messages

30 janv. 2012, 17:05

Ca te permettra de valider ta date et par exemple de décrémenter le nombre de jours tant qu'elle n'est pas valide.
Tu décrémentes donc jour = jour -1 ;)

Si le 31 février n'est pas valide, il testera le 30 puis le 29, puis le 28... ;)
^^ pas mal ton idée aussi mais j'ai trouvé enfait j'ai utilisé la première condition que j'ai met tt en haut :D si tu regarde bien j'ai juste oublié un = :) du coup ça marche pas mais mtn it's Ok thank you for your helps :)

Eléphant du PHP | 209 Messages

30 janv. 2012, 17:11

Exact ^^

Il faut que tu prennes en compte qu'une date d'échéance peut provenir d'un achat au mois de décembre et/ou novembre également. Auquel cas, ta date d'échéance 2 peut devenir la 3 ou la 4 ;)

Eléphant du PHP | 417 Messages

30 janv. 2012, 17:13

Exact ^^

Il faut que tu prennes en compte qu'une date d'échéance peut provenir d'un achat au mois de décembre et/ou novembre également. Auquel cas, ta date d'échéance 2 peut devenir la 3 ou la 4 ;)
oui :) j'ai pris ça en compte aussi :D