Jump to content

[RESOLU] Peut-on rajouter le code EAN sur la facture ?


sylastenny

Recommended Posts

Ah, une bonne occasion d'apprendre quelque chose, j'avais pas encore utilisé FPDF.
Après quelques tâtonnements, je suis arrivé à quelque chose de potable.
Dans la fonction ProdTab, changer les lignes :

 
           if ($delivery)
               $this->SetX(25);
           $before = $this->GetY();
           $this->MultiCell($w[++$i], 5, Tools::iconv('utf-8', self::encoding(), $product['product_name']), 'B');
           $lineSize = $this->GetY() - $before;
           $this->SetXY($this->GetX() + $w[0] + ($delivery ? 15 : 0), $this->GetY() - $lineSize);
           $this->Cell($w[++$i], $lineSize, $product['product_reference'], 'B');
           if (!$delivery)
               $this->Cell($w[++$i], $lineSize, self::convertSign(Tools::displayPrice($unit_without_tax, self::$currency, true, false)), 'B', 0, 'R');
           $this->Cell($w[++$i], $lineSize, $productQuantity, 'B', 0, 'C');
           if (!$delivery)
           {
               $this->Cell($w[++$i], $lineSize, self::convertSign(Tools::displayPrice($total_without_tax, self::$currency, true, false)), 'B', 0, 'R');
               $this->Cell($w[++$i], $lineSize, self::convertSign(Tools::displayPrice($total_with_tax, self::$currency, true, false)), 'B', 0, 'R');
           }
           $this->Ln();
       }


par les lignes :

 
           $this->SetFont(self::fontname(), '', 8);
           if ($delivery)
               $this->SetX(25);
           $before = $this->GetY();
           $this->MultiCell($w[++$i], 5, Tools::iconv('utf-8', self::encoding(), $product['product_name']));
           $lineSize = $this->GetY() - $before;
           $this->SetXY($this->GetX() + $w[0] + ($delivery ? 15 : 0), $this->GetY() - $lineSize);
           $this->Cell($w[++$i], $lineSize, $product['product_reference']);
           if (!$delivery)
               $this->Cell($w[++$i], $lineSize, self::convertSign(Tools::displayPrice($unit_without_tax, self::$currency, true, false)), 0, 0, 'R');
           $this->Cell($w[++$i], $lineSize, $productQuantity, 0, 0, 'C');
           if (!$delivery)
           {
               $this->Cell($w[++$i], $lineSize, self::convertSign(Tools::displayPrice($total_without_tax, self::$currency, true, false)), 0, 0, 'R');
               $this->Cell($w[++$i], $lineSize, self::convertSign(Tools::displayPrice($total_with_tax, self::$currency, true, false)), 0, 0, 'R');
           }
           $this->Ln();
           $this->SetFont(self::fontname(), '', 6);
           if ($delivery)
               $this->SetX(25);
           $before = $this->GetY();
           $this->Cell(15, 2, Tools::iconv('utf-8', self::encoding(), self::l('EAN13:')), 'B');
           $this->Cell(15, 2, $product['product_ean13'], 'B');
           $tw = array_sum($w) - 30;
           $this->Cell($tw, 2, ' ', 'B');
           $this->Ln();
       }


Sans aucune garantie (peut être moche s'il n'y a pas de code EAN, etc.) !

Link to comment
Share on other sites

:shut: Arrgh !
J'avais fait exprès de choisir l'option la plus difficile !
En fait, c'est parce que je trouvais qu'il y avait peu de place entre la description et la référence...
Mais bon, la description peut être multiligne, je vais donc réduire son espace.

Tant qu'à faire, j'ai ajouté une option pour choisir le placement : pas d'EAN (défaut, comme avant), en bas, ou sur la même ligne.
Il faut ajouter dans le fichier config/config.inc.php la ligne :

define('_PS_EAN13_ORDER_DISPLAY_', 'none');   // none, inline, below



(j'ai mis après le price display precision...)

Au passage, j'ai splitté quelques lignes trop longues à mon goût (une manie chez moi... :-)), et j'ai ajouté le nom de la boutique (simplifié) et le préfixe aux fichiers générés, histoire que le client sache ce que sont ces fichiers PDF une fois sur son disque dur...

Du coup, c'est un peu long pour montrer dans ce message, le fichier est disponible à :

http://www.autohotkey.net/~PhiLho/PhiLhoSoft/PrestaShop/PDF._php

Avec un bon logiciel comme WinMerge, tu peux isoler la gestion de l'EAN13 du reste des modifs, si tu n'en veux pas.

Voilà, voilà, un petit exercice intéressant.
Le forum a mangé le message que je venais de taper, j'espère que celui-ci sera posté...

Link to comment
Share on other sites

Je te remercie pour le travail que tu fournis ;-)

J'ai remplacer mon fichier PDF.php par celui que tu donnes et rajouter le bout de code dans config/config.inc.php en dessous de define('_PS_PRICE_DISPLAY_PRECISION_', 2); (ligne 117).

Mais cela ne modifie rien :down: aucune ligne ou colonne supplémentaire et pas de trace du code EAN.

Aurai-je oublié faire quelque chose ?

Heureusement il me reste ton premier code qui fera l'affaire :-) (si jamais je t'embête trop)

Link to comment
Share on other sites

Je suppose que tu as renommé le ._php en .php
Par contre, je devine que tu n'as pas changé l'option : pour que ça marche, à la place de 'none', il faut mettre 'below' (pour le mettre dessous) ou 'inline' (pour le mettre sur la même ligne).
Si c'est pas ça, je ne vois pas trop...

Link to comment
Share on other sites

J'avais bien renommé le fichier php, mais, effectivement, je n'avais pas modifier l'option.

Chose faite mais toujours aucune ligne ou colonne.

j'ai aussi essayé en modifiant les guillemets de ton code en les mettant droits et non penchés (comme ils apparaissent dans les messages du forum), mais toujours sans résultat.

Peux-tu poster le code modifié de ton fichier config.inc.php, comme ça je n'aurai qu'à faire un copier/coller et si cela ne fonctionne pas, je me contenterai de ton 1er code.

1er code qui soit disant entre nous correspond à ma demande principale, je t'embête juste pour une question de présentation. :P

Link to comment
Share on other sites

Ah, effectivement, le forum essaie de faire de la typographie (mais se plante sur la moitié des apostrophes...), faut que je pense à utiliser le tag code (faudrait un tag tt aussi, pour du code dans une ligne) plus souvent.

J'ai changé le message ci-dessus, et je recolle ci-dessous, avec l'option déjà présente dans le fichier :

define('_PS_PRICE_DISPLAY_PRECISION_', 2);
define('_PS_EAN13_ORDER_DISPLAY_', 'below');   // none, inline, below



Je précise que ma modif a été faite sur la version officielle de PrestaShop 1.1.

Note que le [tt]_PS_PRICE_DISPLAY_PRECISION_[/tt] est entouré de caractères soulignés ; j'ignore pourquoi, les options de taxes ne l'ont pas, mais j'ai fait pareil... Ah, sans tag CODE, les soulignés disparaissent et mettent le nom en italique ! :-( D'où ton souci, je pense... (j'ai mis le tag tt, il n'existe pas ici, mais curieusement ça désactive les italiques...)

Faudra que je mette un []_PS_WEIGHT_DISPLAY_PRECISION_[/], ça fait ballot d'afficher 3 décimales pour un poids en grammes...

Link to comment
Share on other sites

Super :lol: ça fonctionne nickel !

Comment fais-tu pour centrer les désignations sous les titres ?
J'ai réussi à trouver comment bouger les titre avec L, C et R mais la désignation en dessous ne bouge pas.

Dernière question et promis, j'arrête :-P :

Comment faire pour supprimer une colonne (celle de la référence en l'occurrence) ?

Merci et encore BRAVO pour ton code

Link to comment
Share on other sites

Comment fais-tu pour centrer les désignations sous les titres ?
J'ai réussi à trouver comment bouger les titre avec L, C et R mais la désignation en dessous ne bouge pas.


Cherche

foreach($products AS $product)

c'est la boucle qui affiche les produits, là aussi tu peux mettre L C R dans les Cell()

Comment faire pour supprimer une colonne (celle de la référence en l'occurrence) ?


Virer

array(self::l('Reference'), 'L'),

des deux arrays, remplacer $bInlineEAN ? 25 : 0, 15 par $bInlineEAN ? 40 : 0 et $bInlineEAN ? 40 : 0, 30 par $bInlineEAN ? 70 : 0, virer les lignes avec $product['product_reference'] dedans. En gros...
Link to comment
Share on other sites

  • 3 years later...
  • 9 months later...

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...