Archives de catégorie : Magento

Magento 2 : Date erronée sur les facture pdf

Après avoir mis à jour Magento, j’ai eu une drôle de surprise en imprimant des factures.

D’ailleurs, je ne l’ai même pas vu tout de suite, mais j’ai fini par m’en apercevoir et heureusement. Car Magento est parti dans le futur.

date erronée

Et alors il n’y a rien du tout de bon, ni le jour, ni le mois et encore moins l’année.

Une date erronée ,c’est vraiment très surprenant comme erreur.

Mais ça va, il y a juste à modifier un fichier pour corriger le problème.

Il s’agit du fichier Timezone.php qui se trouve : /vendor/magento/framework/Stdlib/DateTime/Timezone.php

N’oubliez pas de faire une sauvegarde de votre fichier.

Allez vers la ligne 196 et commentez (ou supprimer cette fonction) :

public function scopeDate($scope = null, $date = null, $includeTime = false)
    {
        $timezone = new \DateTimeZone(
            $this->_scopeConfig->getValue($this->getDefaultTimezonePath(), $this->_scopeType, $scope)
        );
        switch (true) {
            case (empty($date)):
                $date = new \DateTime('now', $timezone);
                break;
            case ($date instanceof \DateTime):
            case ($date instanceof \DateTimeImmutable):
                $date = $date->setTimezone($timezone);
                break;
            case (!is_numeric($date)):
                $timeType = $includeTime ? \IntlDateFormatter::SHORT : \IntlDateFormatter::NONE;
                $formatter = new \IntlDateFormatter(
                    $this->_localeResolver->getLocale(),
                    \IntlDateFormatter::SHORT,
                    $timeType,
                    $timezone
                );
                $timestamp = $formatter->parse($date);
                $date = $timestamp
                    ? (new \DateTime('@' . $timestamp))->setTimezone($timezone)
                    : new \DateTime($date, $timezone);
                break;
            case (is_numeric($date)):
                $date = new \DateTime('@' . $date);
                $date = $date->setTimezone($timezone);
                break;
            default:
                $date = new \DateTime($date, $timezone);
				$date = new \DateTime(is_numeric($date) ? '@' . $date : $date);
                $date->setTimezone($timezone);
                break;
        }

        if (!$includeTime) {
            $date->setTime(0, 0, 0);
        }

        return $date;
    }

Et remplacez là par cette fonction :

public function scopeDate($scope = null, $date = null, $includeTime = false)
{
    $timezone = new \DateTimeZone(
        $this->_scopeConfig->getValue($this->getDefaultTimezonePath(), $this->_scopeType, $scope)
    );
    switch (true) {
        case (empty($date)):
            $date = new \DateTime('now', $timezone);
            break;
        case ($date instanceof \DateTime):
        case ($date instanceof \DateTimeImmutable):
            $date = $date->setTimezone($timezone);
            break;
        default:
            $date = new \DateTime(is_numeric($date) ? '@' . $date : $date);
            $date->setTimezone($timezone);
            break;
    }
 
    if (!$includeTime) {
        $date->setTime(0, 0, 0);
    }
 
    return $date;
}

Et c’est tout, fini la date erronée, la bonne date est revenue.

date erronée

Magento 2 : erreur 404 fichiers jquery-ui-modules

Ce que je vais vous donner là, ce n’est pas du tout une solution définitive ou un tuto, c’est simplement une solution de dépannage en attendant de trouver ce qui se passe.

Je suis quasiment sûre que cette erreur est due à un problème de lien symbolique et/ou de configuration d’une extension. mais pour l’instant, je n’ai pas encore trouvé laquelle.

Pour pouvoir continuer à travailler, voilà une petite astuce pour que vos scripts fonctionnent. Mais attention, cette astuce ne fonctionnera que jusqu’au prochain déploiement.

Donc ce qui se passe, c’est que les scripts se trouvent actuellement dans :

pub/static/fronted/votre-theme/fr_FR/jquery/ui-modules

Mais tout à coup, ils sont cherchés dans un dossier appelé « jquery-ui-modules »

Il suffit donc de copier le dossier « ui-modules » et de le renommer en « jquery-ui-modules » et de le mettre à l’emplacement ou il est manquant.

Il faut faire la même chose dans pub/static/adminhtml/Magento/backend/fr_FR/

Si vous passez par là et que vous connaissez la solution, n’hésitez pas à m’en faire part. 🙂

Solution qui fonctionne dans Magento 2.3