Jump to content

[RÉSOLU] Modifier le numéro de facture


Recommended Posts

12 minutes ago, Mediacom87 said:

Bonjour,

vous devez faire une surcharge de la classe OrderInvoice.php au niveau de la function getInvoiceNumberFormatted()

Merci. Vous auriez un peu plus d'information svp je ne suis pas sur de comprendre exactement quoi faire

Link to comment
Share on other sites

    public function getInvoiceNumberFormatted($id_lang, $id_shop = null)
    {
        $invoice_formatted_number = Hook::exec('actionInvoiceNumberFormatted', [
            get_class($this) => $this,
            'id_lang' => (int) $id_lang,
            'id_shop' => (int) $id_shop,
            'number' => (int) $this->number,
        ]);

        if (!empty($invoice_formatted_number)) {
            return $invoice_formatted_number;
        }

        $format = '%1$s%2$06d';

        if (Configuration::get('PS_INVOICE_USE_YEAR')) {
            $format = Configuration::get('PS_INVOICE_YEAR_POS') ? '%1$s%3$s/%2$06d' : '%1$s%2$06d/%3$s';
        }

        return sprintf($format, Configuration::get('PS_INVOICE_PREFIX', (int) $id_lang, null, (int) $id_shop), $this->number, date('Y', strtotime($this->date_add)));
    }

La fonction ci-dessus traite les données pour les afficher convenablement donc il faut changer le traitement pour obtenir le format souhaité.

Pour cela il suffit de lire et de comprendre comment son structuré les éléments.

Il faut savoir comment fonctionne sprintf (https://www.php.net/manual/fr/function.sprintf.php) puis comprendre comment on structure du date (https://www.php.net/manual/fr/function.date.php) et encore comment définir le nombre de chiffre grâce aux décimales qui sont au nombre de 6 actuellement et que donc on peut déduire dans le code du format pour le mettre au bon nombre tout en contrôlant que l'usage permet ou non de dépasser le nombre de décimales défini ici.

après cela on passe à l'étape de la surcharge plutôt qu'au changement de code source qui pourrait tout planter à la mise à jour d'après.

et si après tout cela la surcharge ne s'applique pas on n’oublie pas d'effacer le fichier class_index.php pour qu'il soit généré de nouveau pour bien prendre en considération le fichier d'override de la classe initiale.

 

Link to comment
Share on other sites

1 hour ago, Mediacom87 said:

    public function getInvoiceNumberFormatted($id_lang, $id_shop = null)
    {
        $invoice_formatted_number = Hook::exec('actionInvoiceNumberFormatted', [
            get_class($this) => $this,
            'id_lang' => (int) $id_lang,
            'id_shop' => (int) $id_shop,
            'number' => (int) $this->number,
        ]);

        if (!empty($invoice_formatted_number)) {
            return $invoice_formatted_number;
        }

        $format = '%1$s%2$06d';

        if (Configuration::get('PS_INVOICE_USE_YEAR')) {
            $format = Configuration::get('PS_INVOICE_YEAR_POS') ? '%1$s%3$s/%2$06d' : '%1$s%2$06d/%3$s';
        }

        return sprintf($format, Configuration::get('PS_INVOICE_PREFIX', (int) $id_lang, null, (int) $id_shop), $this->number, date('Y', strtotime($this->date_add)));
    }

La fonction ci-dessus traite les données pour les afficher convenablement donc il faut changer le traitement pour obtenir le format souhaité.

Pour cela il suffit de lire et de comprendre comment son structuré les éléments.

Il faut savoir comment fonctionne sprintf (https://www.php.net/manual/fr/function.sprintf.php) puis comprendre comment on structure du date (https://www.php.net/manual/fr/function.date.php) et encore comment définir le nombre de chiffre grâce aux décimales qui sont au nombre de 6 actuellement et que donc on peut déduire dans le code du format pour le mettre au bon nombre tout en contrôlant que l'usage permet ou non de dépasser le nombre de décimales défini ici.

après cela on passe à l'étape de la surcharge plutôt qu'au changement de code source qui pourrait tout planter à la mise à jour d'après.

et si après tout cela la surcharge ne s'applique pas on n’oublie pas d'effacer le fichier class_index.php pour qu'il soit généré de nouveau pour bien prendre en considération le fichier d'override de la classe initiale.

 

Merci beaucoup ;). J'ai réussi avec la date mais je sèche un peu pour mettre un numéro de facture à seulement 4 chiffres... 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...