@rthur Posted January 6, 2021 Share Posted January 6, 2021 (edited) Salut, Je cherche a modifier 2 éléments de mes numéros de factures. Est-il possible de n'afficher que 21 pour l'année et non 2021 et comment enlever les 2 premiers zéros du numéro? Merci de votre aide Prestashop 1.7.5 Edited January 6, 2021 by @rthur (see edit history) Link to comment Share on other sites More sharing options...
Mediacom87 Posted January 6, 2021 Share Posted January 6, 2021 Bonjour, vous devez faire une surcharge de la classe OrderInvoice.php au niveau de la function getInvoiceNumberFormatted() Link to comment Share on other sites More sharing options...
@rthur Posted January 6, 2021 Author Share Posted January 6, 2021 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 More sharing options...
Mediacom87 Posted January 6, 2021 Share Posted January 6, 2021 de la lecture https://devdocs.prestashop.com/1.7/modules/concepts/overrides/#class--controller-override Link to comment Share on other sites More sharing options...
@rthur Posted January 6, 2021 Author Share Posted January 6, 2021 1 hour ago, Mediacom87 said: de la lecture https://devdocs.prestashop.com/1.7/modules/concepts/overrides/#class--controller-override Merci mais je ne trouve pas le fichier OrderInvoice.php dans controller/ Link to comment Share on other sites More sharing options...
Mediacom87 Posted January 6, 2021 Share Posted January 6, 2021 à l’instant, @rthur a dit : Merci mais je ne trouve pas le fichier OrderInvoice.php dans controller/ normal puisque je n'ai jamais parlé de controller. Link to comment Share on other sites More sharing options...
@rthur Posted January 6, 2021 Author Share Posted January 6, 2021 3 minutes ago, Mediacom87 said: normal puisque je n'ai jamais parlé de controller. Ok merci... Peut être un peu plus d'explication pour commencer cette nouvelle année sur de bons sentiments ? Link to comment Share on other sites More sharing options...
Mediacom87 Posted January 6, 2021 Share Posted January 6, 2021 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 More sharing options...
@rthur Posted January 6, 2021 Author Share Posted January 6, 2021 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 More sharing options...
@rthur Posted January 6, 2021 Author Share Posted January 6, 2021 C'est bon j'ai trouvé avec %03d Merci encore pour l'aide ! Link to comment Share on other sites More sharing options...
@rthur Posted January 7, 2021 Author Share Posted January 7, 2021 Une question en passant. Pour le formatage des numéros d'avoirs ca se passe où ? J'ai regardé dans OrderReturn.php mais c'est pas dedans... Merci Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now