Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forum osCommerce-fr _ Fonctionnement _ Problème dans facture pdf

Écrit par : diaph 14 Apr 2012, 11:15

Bonjour,
J'ai un soucis avec mes factures pdf:
les attributs se chevauches sur la même ligne et deviennent illisibles.
EX. cl05435 Fichier jpg - /LRoVcBa-lAe6-300dpi 29.00€, alors que je devrais avoir : /, Local, a6-300 dpi
Voici le code qui concerne l'affichage des attributs:

Code
$pdf->MultiCell(8,6,$order->products[$i]['qty'],1,'C');
if (isset($order->products[$i]['attributes']) && (($k = sizeof($order->products[$i]['attributes'])) > 0))
{

Merci de votre aide

Écrit par : chti_poupon 14 Apr 2012, 14:37

Bonjour
Tu as plusieurs attributs (ils se chevauchent).
Il te manque donc vraisemblablement la boucle pour les parcourir.
Dans catalog/admin/invoice.php (je n'ai pas la version pdf) on trouve çà:

Code
      if (isset($order->products[$i]['attributes']) && (($k = sizeof($order->products[$i]['attributes'])) > 0)) {
         for ($j = 0; $j < $k; $j++) {
          echo '<br><nobr><small>&nbsp;<i> - ' . $order->products[$i]['attributes'][$j]['option'] . ': ' . $order->products[$i]['attributes'][$j]['value'];

et la suite : donc une ligne par attribut
Belle journée !
Chti poupon

Écrit par : diaph 14 Apr 2012, 17:25

Merci chti_poupon pour ta réponse.
voilà la ligne qui affiche les attributs:

Code
$pdf->MultiCell(123,6,$order->products[$i]['name'] . ' - ' . $order->products[$i]['attributes'][$j]['value'],1,'L');

Je ne trouve pas la solution pour afficher sur plusieurs lignes ou avec un tiret séparateur

Écrit par : diaph 14 Apr 2012, 17:27

Quelqu'un connaît-il le fonctionnement du PDF
Merci

Écrit par : chti_poupon 14 Apr 2012, 19:03

Bonjour
Ce que je t'ai mis ne dépend pas du système pdf, mais du codage des options dans osCommerce:

Code
$order->products[$i]['attributes'][$j]['option']
contient le nom de l'option et
Code
$order->products[$i]['attributes'][$j]['value']
son prix etc...
Tu as besoin d'une boucle sur les $j options entre 0 et $k pour écrire celles qui sont renseignées.
C'est d'ailleurs le cas dans la dernière contrib http://addons.oscommerce.com/info/3027/v,22
Chti poupon

Écrit par : diaph 14 Apr 2012, 20:33

Bonsoir,
Oui, Je comprend bien
avec le code ci-dessous:

Code
if (isset($order->products[$i]['attributes']) && (($k = sizeof($order->products[$i]['attributes'])) > 0))
{
for ($j = 0; $j < $k; $j++)
{
$pdf->SetY($Y_Table_Position);
$pdf->SetX(39);
$pdf->MultiCell(123,6,$order->products[$i]['name'] . ' - ' . $order->products[$i]['attributes'][$j]['option'] . ': ' . $order->products[$i]['attributes'][$j]['value'],1,'L');

Les infos s'affichent, certes... mais empillées : comme ceci
cl05435 - IFAEPnorduteeribdtmsriiloionscaneveitt:i:t:és : L/ R:u/ o/eVclB:a /-leA6-300dpi
alors que je voudrais avoir ceci:
cl05435
- Publicité: /
- Internet: /
- Presse: /
- Format: RVB-A6-300dpi
- Edition: Locale
- Audiovisuel: /
Mon problème c'est le chevauchement des informations. mrgreen.gif

Écrit par : diaph 15 Apr 2012, 10:30

Bonjour, smile.gif
Il faudrait peut-être que je sépare les attributs les uns des autres par leur id
Mais comment faire?
En fait, avec ma ligne de requête, j'obtiens bien les infos : option & value, mais comme il y en a plusieurs, il faut les séparer; mais ça je ne sais pas le faire !
Je suppose de certain d'entre vous avez déjà rencontré ce problème, en tout cas je n'ai rien trouvé sur le forum.
Je fait pleins d'essais, mais rien ne fonctionne.

Écrit par : chti_poupon 15 Apr 2012, 13:22

Bonjour
C'est bien compris, mais le problème est résolu - si j'en crois l'exemple fourni - dans la contrib citée précédemment. Attention, il y a des fix et des corrections: voir l'historique pour une version complète et téléchargable (bug de zip !)
Il y a une histoire de xxxxxY += 6; qui semble sauter de ligne d'un $j au suivant, après un if de tri selon la longueur du texte bref, le souci du détail...
Chti poupon

Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)