maitretsiang Posted October 8, 2013 Share Posted October 8, 2013 Bonjour, Je redécouvre depuis depuis peu les dernières versions de prestashop qui ont fort bien évolué depuis 4 ans. Actuellement en plein lancement d'une boutique, je suis arrivé au niveau de la génération des factures... et là.... c'est le drame !! Nous avons comme choix de numérotation de facture un simple compteur qui s'incrémente à chaque commande. Pensez-vous qu'il serait possible de faire modifier cette partie pour que les gens puissent choisir entre le compteur par défaut et un format personnalisé ex : FAAMM????? F = Préfixe paramétrable AA = Année sur 2 chiffres MM = Mois sur 2 chiffres ????? = Compteur mensuel de facture J'ai chercher des heures sans trouver de solution à ce problème (j'ai peut être mal cherché ). J'ai également bien pensé à modifier moi même le code source pour gérer ça mais n'ai pas envie d'avoir de problème lors des futures mises à jour. Si une âme charitable pouvait éclairer ma lanterne et je pense celle de beaucoup de comptable, ça serait super !! Merci d'avance et longue vie à prestashop ! Link to comment Share on other sites More sharing options...
lechapelier Posted October 8, 2013 Share Posted October 8, 2013 Bonjour, Pouvez-vous nous expliquer l'intérêt d'une numérotation de facture sélectionnable par le client ? Je ne pense pas que de la numérotation des commandes soit importante pour les clients c'est plutôt pour vous que c'est important. Link to comment Share on other sites More sharing options...
maitretsiang Posted October 8, 2013 Author Share Posted October 8, 2013 Bonjour, Je n'ai jamais parlé d'importance pour le client mais bien pour nous (Dirigeant, Comptable, Etc). Une numérotation des factures par année et par mois permet une bien meilleure gestion et lisibilité pour le service comptabilité. Ce n'est pas pour rien qu'un tel paramétrage est possible dans un logiciel de compta. Il me semble qu'il serait donc judicieux de trouver ce genre de chose directement dans prestashop afin de le rendre encore plus perfectionné. Link to comment Share on other sites More sharing options...
lechapelier Posted October 8, 2013 Share Posted October 8, 2013 En effet très intéressant je comprends mieux. Il n'y a pas de fonctions comme vous souhaitez dans presta, et il n'y a pas de module à ma connaissance qui ferait ce que vous souhaitez. Pour une classification par année et par mois j'ai une solution même si quelques peu archaïque, vous pouvez modifier le préfixe au début de chaque année, le fameux FA à modifier à votre guise. Par exemple la 1ere lettre pour l'année, vous avez tout l’alphabet donc 26 ans de compta et la deuxième pour le mois qui peut être un numéro par exemple mois 1-2-3 etc... C'est la solution la plus simple que j'ai dans l'immédiat et gratuit. Sinon la modifi de code mais ça va demander un sacré boulot et pas sur comme vous dites qu'il digère bien les maj. Link to comment Share on other sites More sharing options...
Le-cathare Posted October 8, 2013 Share Posted October 8, 2013 (edited) En effet très intéressant je comprends mieux. Il n'y a pas de fonctions comme vous souhaitez dans presta, et il n'y a pas de module à ma connaissance qui ferait ce que vous souhaitez. Pour une classification par année et par mois j'ai une solution même si quelques peu archaïque, vous pouvez modifier le préfixe au début de chaque année, le fameux FA à modifier à votre guise. Par exemple la 1ere lettre pour l'année, vous avez tout l’alphabet donc 26 ans de compta et la deuxième pour le mois qui peut être un numéro par exemple mois 1-2-3 etc... C'est la solution la plus simple que j'ai dans l'immédiat et gratuit. Sinon la modifi de code mais ça va demander un sacré boulot et pas sur comme vous dites qu'il digère bien les maj. Bonjour Déja tester cette solution, le souci c'est que sa change sur toutes les factures même celle déja éditées. Edited October 8, 2013 by Le-cathare (see edit history) Link to comment Share on other sites More sharing options...
lechapelier Posted October 8, 2013 Share Posted October 8, 2013 Autant pour moi, je ne savais pas merci pour l'info. Il faudrait donc bloquer la rétroactivité, ça doit se désactiver, un petit bout de code à enlever... Link to comment Share on other sites More sharing options...
tuk66 Posted October 9, 2013 Share Posted October 9, 2013 /classes/order/Order.php class setInvoice() function $order_invoice->number = Configuration::get('PS_INVOICE_START_NUMBER', null, null, $this->id_shop); Essayez de changer ce morceau de code où le numéro de la facture est créée. Try to change this piece of code where number of invoice is created. Link to comment Share on other sites More sharing options...
maitretsiang Posted October 9, 2013 Author Share Posted October 9, 2013 (edited) Bon j'ai effectué quelque modifications sur les fichiers en override, je pense que ça pourra aider certaines personnes : Fichier /override/classes/order/OrderInvoiced.php pour formatter le numéro de facture sans l'ajout de 0 public function getInvoiceNumberFormatted($id_lang, $id_shop = null) { //return '#'.Configuration::get('PS_INVOICE_PREFIX', $id_lang, null, $id_shop).sprintf('%06d', $this->number); return '#'.Configuration::get('PS_INVOICE_PREFIX', $id_lang, null, $id_shop).$this->number; } Fichier /override/classes/order/Order.php pour stockage du bon numéro de facture // If invoice start number has been set, you clean the value of this configuration if ($order_invoice->number) { Configuration::updateValue('PS_INVOICE_START_NUMBER', false, false, null, $this->id_shop); $order_invoice->number = date('y').date('m').$order_invoice->number; } else { if(Order::getLastInvoiceNumber() == 0) { $order_invoice->number = date('y').date('m')."1"; } else { $nextNumber = ((int)substr(Order::getLastInvoiceNumber(),4))+1; $order_invoice->number = Order::getLastInvoiceNumber().$nextNumber; } } Fichier /override/classes/pdf/HTMLTemplateInvoice.php pour génération du pdf avec le bon formattage public function __construct(OrderInvoice $order_invoice, $smarty) { $this->order_invoice = $order_invoice; $this->order = new Order((int)$this->order_invoice->id_order); $this->smarty = $smarty; // header informations $this->date = Tools::displayDate($order_invoice->date_add, (int)$this->order->id_lang); $id_lang = Context::getContext()->language->id; //$this->title = HTMLTemplateInvoice::l('Invoice ').' #'.Configuration::get('PS_INVOICE_PREFIX', $id_lang, null, (int)$this->order->id_shop).sprintf('%06d', $order_invoice->number); $this->title = HTMLTemplateInvoice::l('Invoice ').' #'.Configuration::get('PS_INVOICE_PREFIX', $id_lang, null, (int)$this->order->id_shop).$order_invoice->number; // footer informations $this->shop = new Shop((int)$this->order->id_shop); } public function getFilename() { //return Configuration::get('PS_INVOICE_PREFIX').sprintf('%06d', $this->order_invoice->number).'.pdf'; return Configuration::get('PS_INVOICE_PREFIX').$this->order_invoice->number.'.pdf'; } Fichier /override/classes/PaymentModule.php //$file_attachement['name'] = Configuration::get('PS_INVOICE_PREFIX', (int)$order->id_lang, null, $order->id_shop).sprintf('%06d', $order->invoice_number).'.pdf'; $file_attachement['name'] = Configuration::get('PS_INVOICE_PREFIX', (int)$order->id_lang, null, $order->id_shop).$order->invoice_number.'.pdf'; Pensez à supprimer ensuite le fichier de cache /cache/class_index.php afin de prendre en compte vos classe de surcharge. Voilà en théorie si je n'ai rien oublié (j'ai fait ça vite fait sur une version test) vous pouvez avec ces modifs générer des numéros de facture qui prennent en compte l'année et le mois pour un meilleur traitement. On pourrait pousser le truc encore plus loin mais si les devs pouvaient inclure ce genre de chose ça serait super PS : avec cette modif, le compteur et toujours incrémenté et n'est donc pas un compteur mensuel (pour cela il faudrait bien plus de modifs et je n'ai pas trop le temps). En tout cas dans mon cas cela me convient ^^ Edited December 11, 2013 by maitretsiang (see edit history) Link to comment Share on other sites More sharing options...
passicool Posted October 14, 2013 Share Posted October 14, 2013 Bonjour, Sauf erreur de ma part mais légalement les factures doivent avoir impérativement les numéros suivi sinon comment les impôts peuvent contrôler que toute les factures sont présente, même votre comptable ne pourra le dire. A vérifier pour être certains mais à mon avis c'est une idée à oublié immédiatement car non conforme légalement. Link to comment Share on other sites More sharing options...
maitretsiang Posted October 14, 2013 Author Share Posted October 14, 2013 Bonjour, Oui il est préférable d'avoir un numéro chronologique des factures pour faciliter les "contrôles" et la gestion.A partir du moment où la logique est connue et transmise au contrôleur cela ne pose aucun problème. Je pense que le problème va plutôt se poser entre vous et votre expert comptable si votre numérotation n'a aucune logique :-) L'idée de départ était de créer un numéro de la sorte (parfaitement légal) :FAAMM???? F = Préfixe choisiAA = Année sur 2 chiffresMM = Mois sur 2 chiffres???? = Chrono continu mensuel L'avantage de cette notation est de savoir mensuellement combien nous avons généré de facture et à quelle année et mois la facture appartient (très utile pour un classement numérique) La solution que j'ai proposée ne donne pas tout à fait cela mais : FAAMM?????? où ????? est un chrono continu global et qui n'est donc pas remis à zéro chaque mois. Link to comment Share on other sites More sharing options...
passicool Posted October 14, 2013 Share Posted October 14, 2013 OK, chrono continu mensuel pour mois reviens à zéro chaque mois si ce n'est pas le cas pas de problème. 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