Je souhaite afficher une bon de commande au format pdf. Pour cela j'utilise FPDF.
Jusqu'à présent très bien.
Seulement voilà, lorsqu'une commande est trop "longue", les articles commandés se "superposent" sur le bloc correspondant à mon footer (si on peut dire).
J'affiche les produits commandés grâce à une boucle while.
Le principe je l'ai bien compris, il faut que je regarde la valeur de la ligne suivant ou du curseur avec GetY() et que je la compare à la place nécessaire pour écrire mon pied de facture.
Là c'est ok.
Là c'est ce que j'ai fait seulement voilà, j'ai un problème. Je n'arrive pas réinitialiser la valeur de mon curseur pour que la suite de ma commande s'affiche tout en haut de ma deuxième page.
Voilà mon code qui génère le fichier pdf.
<?
define('FPDF_FONTPATH','font/');
require('invoice.php');
$pdf = new INVOICE( 'P', 'mm', 'A4' );
$pdf->Open();
$pdf->AddPage();
$pdf->SetAutoPageBreak(true, 20);
$pdf->AliasNbPages();
$pdf->addSociete( "ici le nom de la société");
$pdf->Image('../../imgs/logo.png',9,6);
$num_com = "Commande ".$id_commande;
$pdf->fact_dev("", $num_com);
$pdf->temporaire("Commande");
$pdf->addDate($date);
$pdf->addClient($num_fourn);
$pdf->addPageNumber("1");
$pdf->addClientAdresse($nom_fournisseur."\n".$adresse_fourn."\n".$cp_fourn." ".$ville_fourn);
$pdf->addcontact($nom_contact);
//$pdf->addReglement($paiement);
$cols=array( "CODE PRODUIT" => 25,
"DESIGNATION" => 95,
"QUANTITE" => 15,
"P.U. HT" => 20,
"TVA" => 10,
"TOTAL TTC" => 25);
$pdf->addCols( $cols);
$cols=array( "CODE PRODUIT" => "L",
"DESIGNATION" => "L",
"QUANTITE" => "C",
"P.U. HT" => "R",
"TVA" => "R",
"TOTAL TTC" => "R");
$pdf->addLineFormat($cols);
$pdf->addLineFormat($cols);
$y = 85;
$total_ttc = 0;
$panier = mysql_query("SELECT * FROM commandes_lignes WHERE id_commande = ".$id_commande) or die(mysql_error());
while ($res_panier = mysql_fetch_array($panier)) {
$code_produit = $res_panier['code_produit'];
if ($code_produit == "") { $code_produit = "nc"; }
$nom = $res_panier['nom'];
$quantite = $res_panier['quantite'];
$prix_unitaire = number_format($res_panier['prix_unitaire'],2);
$caracteristiques = $res_panier['descriptif'];
$tva = mysql_query("SELECT * FROM tva WHERE id = '".$res_panier['tva']."'") or die(mysql_error());
$tab_tva = mysql_fetch_array($tva);
if($tab_tva['taux'] == 0){
$taux = "0";
}
else{
$taux = $tab_tva['taux'];
}
$montant_ttc = ($prix_unitaire*$quantite)+(($prix_unitaire*$quantite)*$taux/100);
$montant_ttc = number_format($montant_ttc,2,".","");
$montant_ttc_2 = number_format($montant_ttc,2,"."," ");
$line = array( "CODE PRODUIT" => $code_produit,
"DESIGNATION" => $nom."\n".$caracteristiques."\n",
"QUANTITE" => $quantite,
"P.U. HT" => $prix_unitaire." ".EURO,
"TVA" => $taux." %",
"TOTAL TTC" => $montant_ttc_2." ".EURO);
//echo "<pre>"; print_r($line); echo "</pre>";
$size = $pdf->addLine( $y, $line );
$y += $size + 2;
$total_ttc += $montant_ttc;
$cursor = $pdf->GetY();
if($cursor > 120) {
$pdf-> AddPage();
$cursor = $pdf->SetY(0);
}
}
$total_ttc = number_format($total_ttc,2,"."," ");
$cols2 = array( "Conditions" => 165,
"TOTAL T.T.C." => 25);
$pdf->addCols2($cols2);
$cols2 = array( "Conditions" => "L",
"TOTAL T.T.C." => "R");
$pdf->addLineFormat($cols2);
$line2 = array( "Conditions" => " Livraison avant le ".$date_livraison."\n Franco de port et d'emballage\n Paiement par virement sous 30 jours à réception de la facture\n Les livraisons sont reçues du lundi au vendredi de 8h à 12h et de 13h30 à 16h.",
"TOTAL T.T.C." => $total_ttc." ". EURO);
$size = $pdf->addLine2( "235", $line2 );
$pdf->addSignature("Avec nos remerciements et nos salutations distinguées,");
$pdf->addTexte("Le Directeur");
$pdf->Output();
?>
Afin de faire une pagination, j'ai utilisé ce bout de code dans ma boucle mais sans succès :
<?
$cursor = $pdf->GetY();
if($cursor > 120) {
$pdf-> AddPage();
$cursor = $pdf->SetY(0);
}
?>
Une idée ?Merci d'avance