LiLFinger
Messages postés9Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention 5 septembre 2011
-
2 sept. 2011 à 12:08
LiLFinger
Messages postés9Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention 5 septembre 2011
-
5 sept. 2011 à 15:23
Bonjour tout le monde je développe une application web de facturation et devis , j'utilise la bibliothèque fpdf
pour générer mes factures et devis , j'ai réussi a tout faire mais mon problème est le suivant :: je veux savoir comment fixer mon pied de page (constitué d'un tableau avec les prix totaux et remises) tout en bas du document , sachant que la facture peut contenir un ou plusieurs élément et donc s'afficher sur une ou plusieurs pages.
Je cherche une solution depuis lgtps , quelqu'un aurait - il une idée ??
JulSoft
Messages postés354Date d'inscriptiondimanche 3 juin 2001StatutMembreDernière intervention11 mars 2013 4 sept. 2011 à 18:11
Tu veux le même pied de page sur toutes les pages ou c'est un pied de page différent sur chacune des pages?
Normalement on fixe le pied de page en surchargeant la méthode Header() de la classe Fpdf.
LiLFinger
Messages postés9Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention 5 septembre 2011 5 sept. 2011 à 15:07
je veux un seul pied de page , j'utilise la fonction basic footer pour numeroter mes pages (en bas) , mais je veux ke mon tableau de prix s'affiche uniquement sur la derniere page comme pour signaler la fin de la facture.
J'arrive à afficher mon tableau mais sur la deniere page , mais comm le contenu de la facture n'est pas fixe , souvent le tableau saffiche en debut de derniere page , ou en plein mileu , alors que je veux qu'ils soit en bas .
$id_det_aff=$_GET['id_det_aff'] ;
$req_info=mysql_query("select * from detail_affaires where id_det_affaire =$id_det_aff ") or die ('Impossible de recuperer les informations de cette page! ');
$rep_info=mysql_fetch_assoc($req_info) ;
$idaff_=$rep_info['id_affaire'];
$lelast=$rep_info['id_devis'];
$code_devis=$rep_info['code_det_devis'];
$id_fact=$rep_info['id_fact'];
$id_rent=$rep_info['id_rentabilite'];
// $requetes="select * from facture where id_facture=$id_fact and id_devis=$lelast";
//$ok=mysql_query($requetes) ;
$sql2="select * from facture where id_facture=$id_fact and id_devis=$lelast ";
$ok2=mysql_query($sql2) or die (mysql_error());
$data2 = mysql_fetch_assoc($ok2);
$code_facture=$data2["code_facture"];
$id_devis=$data2["id_devis"];
$code_det_devis=$data2["code_det_devis"];
$date_facture=$data2["date_facture"];
$montant_total_htva=$data2["montant_total_htva"];
$remise_comm=$data2["remise_comm"];
$montant_remise=$data2["montant_remise"];
$new_mt_htva=$data2["new_montant_htva"];
$montant_tva=$data2["montant_tva"];
$total_ttc=$data2["total_ttc"];
$tva=$data2["tva"];
$type=$data2["type"];
$id_user=$data2["id_user"];
$date_last_modif=$data2["date_last_modif"];
$sql="select * from devis where id_devis=$lelast";
$ok=mysql_query($sql) or die (mysql_error());
$donnees = mysql_fetch_assoc($ok);
$code_devis=$donnees["code_devis"];
$leclient=$donnees["nom_client"];
$objet_devis=$donnees["objet_devis"];
$date_creation=$donnees["date_creation"];
$date_validite=$donnees["date_validite"];
$delai_livraison=$donnees["delai_livraison"];
$delai_reception=$donnees["delai_reception"];
$condition_reglement=utf8_encode($donnees["condition_reglement"]);
$remarques=$donnees["remarque_devis"];
$a_lattention=$donnees["a_lattention"];
$idaffaire=$donnees["id_affaire"];
$id_user=$donnees["id_user"];
$query_disp="SELECT * FROM affaires where id_affaire=".$idaff_;
$result_disp = mysql_query($query_disp) ;
$query_data = mysql_fetch_assoc($result_disp) or die ('Table Affaire Innaccessible') ;
$code_affaire=$query_data["code_affaire"] ;
$nom_affaire=$query_data["nom_affaire"] ;
$client=$query_data["client"] ;
$date_ouverture=$query_data["date_ouverture"] ;
$etape_real=$query_data["etape_realisation"] ;
$sql1="select * from rentabilite where id_affaire=".$idaff_;
$ok1=mysql_query($sql1) or die (mysql_error());
$data = mysql_fetch_assoc($ok1);
$pourc_vend_acs=$data["pourc_vend_acs"];
$val_vend_acs=$data["val_vend_acs"];
$pourc_vend_arc=$data["pourc_vend_arc"];
$val_vend_arc=$data["val_vend_arc"];
$pourc_arc=$data["pourc_arc"];
$val_comm_arc=$data["val_comm_arc"];
$pourc_marge_avant_comm=$data["pourc_marge_avant_comm"];
$val_marge_avant_comm=$data["val_marge_avant_comm"];
$pourc_marge_finale_acs=$data["pourc_marge_finale_acs"];
$val_marge_final_acs=$data["val_marge_final_acs"];
class PDF extends FPDF
{
var $B;
var $I;
var $U;
var $HREF;
function PDF($orientation='P',$unit='mm',$format='A4')
{
//Call parent constructor
$this->FPDF($orientation,$unit,$format);
//Initialization
$this->B=0;
$this->I=0;
$this->U=0;
$this->HREF='';
}
//***********
function WriteTable($data, $w)
{
$this->SetLineWidth(.3);
$this->SetFillColor(255,255,255);
$this->SetTextColor(0);
$this->SetFont('');
foreach($data as $row)
{
$nb=0;
for($i=0;$i<count($row);$i++)
$nb=max($nb,$this->NbLines($w[$i],trim($row[$i])));
$h=5*$nb;
$this->CheckPageBreak($h);
for($i=0;$i<count($row);$i++)
{
$x=$this->GetX();
$y=$this->GetY();
$this->Rect($x,$y,$w[$i],$h);
$this->MultiCell($w[$i],5,trim($row[$i]),0,'C');
//Put the position to the right of the cell
$this->SetXY($x+$w[$i],$y);
}
$this->Ln($h);
}
}
function CheckPageBreak($h)
{
//If the height h would cause an overflow, add a new page immediately
if($this->GetY()+$h>$this->PageBreakTrigger)
$this->AddPage($this->CurOrientation);
}
function OpenTag($tag,$attr)
{
//Opening tag
if($tag=='B' or $tag=='I' or $tag=='U')
$this->SetStyle($tag,true);
if($tag=='A')
$this->HREF=$attr['HREF'];
if($tag=='BR')
$this->Ln(5);
}
function CloseTag($tag)
{
//Closing tag
if($tag=='B' or $tag=='I' or $tag=='U')
$this->SetStyle($tag,false);
if($tag=='A')
$this->HREF='';
}
function SetStyle($tag,$enable)
{
//Modify style and select corresponding font
$this->$tag+=($enable ? 1 : -1);
$style='';
foreach(array('B','I','U') as $s)
if($this->$s>0)
$style.=$s;
$this->SetFont('',$style);
}
function PutLink($URL,$txt)
{
//Put a hyperlink
$this->SetTextColor(0,0,255);
$this->SetStyle('U',true);
$this->Write(5,$txt,$URL);
$this->SetStyle('U',false);
$this->SetTextColor(0);
}
$nbre='{nb}' ;
//$this->Cell(0,5,'Page '.$this->PageNo().' sur {nb}',0,2,'C');
$this->Cell(0,5,'Page '.$this->PageNo().' sur '.$nbre,0,2,'C');
}
//fonction foot
function Pieds()
{
$id_det_aff=$_GET['id_det_aff'] ;
$req_info=mysql_query("select * from detail_affaires where id_det_affaire =$id_det_aff ") or die ('Impossible de recuperer les informations de cette page! ');
$rep_info=mysql_fetch_assoc($req_info) ;
$idaff_=$rep_info['id_affaire'];
$lelast=$rep_info['id_devis'];
$code_devis=$rep_info['code_det_devis'];
$id_fact=$rep_info['id_fact'];
$id_rent=$rep_info['id_rentabilite'];
// $requetes="select * from facture where id_facture=$id_fact and id_devis=$lelast";
//$ok=mysql_query($requetes) ;
$sql2="select * from facture where id_facture=$id_fact and id_devis=$lelast ";
$ok2=mysql_query($sql2) or die (mysql_error());
$data2 = mysql_fetch_assoc($ok2);
$code_facture=$data2["code_facture"];
$id_devis=$data2["id_devis"];
$code_det_devis=$data2["code_det_devis"];
$date_facture=$data2["date_facture"];
$montant_total_htva=$data2["montant_total_htva"];
$remise_comm=$data2["remise_comm"];
$montant_remise=$data2["montant_remise"];
$new_mt_htva=$data2["new_montant_htva"];
$montant_tva=$data2["montant_tva"];
$total_ttc=$data2["total_ttc"];
$tva=$data2["tva"];
$type=$data2["type"];
$id_user=$data2["id_user"];
$date_last_modif=$data2["date_last_modif"];
$sql="select * from devis where id_devis=$lelast";
$ok=mysql_query($sql) or die (mysql_error());
$donnees = mysql_fetch_assoc($ok);
$code_devis=$donnees["code_devis"];
$leclient=$donnees["nom_client"];
$objet_devis=$donnees["objet_devis"];
$date_creation=$donnees["date_creation"];
$date_validite=$donnees["date_validite"];
$delai_livraison=$donnees["delai_livraison"];
$delai_reception=$donnees["delai_reception"];
$condition_reglement=utf8_encode($donnees["condition_reglement"]);
$remarques=$donnees["remarque_devis"];
$a_lattention=$donnees["a_lattention"];
$idaffaire=$donnees["id_affaire"];
$id_user=$donnees["id_user"];
$query_disp="SELECT * FROM affaires where id_affaire=".$idaff_;
$result_disp = mysql_query($query_disp) ;
$query_data = mysql_fetch_assoc($result_disp) or die ('Table Affaire Innaccessible') ;
$code_affaire=$query_data["code_affaire"] ;
$nom_affaire=$query_data["nom_affaire"] ;
$client=$query_data["client"] ;
$date_ouverture=$query_data["date_ouverture"] ;
$etape_real=$query_data["etape_realisation"] ;
$sql1="select * from rentabilite where id_affaire=".$idaff_;
$ok1=mysql_query($sql1) or die (mysql_error());
$data = mysql_fetch_assoc($ok1);
$pourc_vend_acs=$data["pourc_vend_acs"];
$val_vend_acs=$data["val_vend_acs"];
$pourc_vend_arc=$data["pourc_vend_arc"];
$val_vend_arc=$data["val_vend_arc"];
$pourc_arc=$data["pourc_arc"];
$val_comm_arc=$data["val_comm_arc"];
$pourc_marge_avant_comm=$data["pourc_marge_avant_comm"];
$val_marge_avant_comm=$data["val_marge_avant_comm"];
$pourc_marge_finale_acs=$data["pourc_marge_finale_acs"];
$val_marge_final_acs=$data["val_marge_final_acs"];
//$this->SetAutoPageBreak(true, 80);
$this->Sety(193);
$this->SetX(10);
//tableau avec les prix totaux
$this->SetLeftMargin(10);
$this->SetX(10);
$this->Cell(45,8,'Condition de règlement :',1,0,'L');
$this->Cell(75,8,utf8_decode($condition_reglement),1,0,'L');
$this->Cell(5,5,'',0,0,'L');
$this->Cell(35,8,'Total HTVA',1,0,'R');
$this->Cell(35,8,number_format($montant_total_htva ,'0',' ', ' ') .' CFA',1,0,'R');
$this->Ln();
$this->Cell(45,8,'Date Validité du Devis:',1,0,'L');
$this->Cell(75,8,$date_validite,1,0,'L');
$this->Cell(5,8,'',0,0,'L');
$this->Cell(35,8,'REMISE'.'('.$remise_comm .') %:',1,0,'R');
$montant_remise_=number_format($montant_remise,'0',' ', ' ') ;
$this->Cell(35,8,$montant_remise_ .' CFA',1,0,'R');
$this->Ln();
$this->Cell(45,8,'Delai Réception de Materiels :',1,0,'L');
$this->Cell(75,8,$delai_reception,1,0,'L');
$this->Cell(5,5,'',0,0,'L');
$this->Cell(35,8,'TOTAL HTVA:',1,0,'R');
$new_mt_htva_=number_format($new_mt_htva,'0',' ', ' ') ;
$this->Cell(35,8,$new_mt_htva_.' CFA',1,0,'R');
$this->Ln();
$this->Cell(45,8,'Delai de Livraison du Chantier:',1,0,'L');
$this->Cell(75,8,$delai_livraison,1,0,'L');
$this->Cell(5,5,'',0,0,'L');
$montant_tva_=number_format($montant_tva,'0',' ', ' ') ;
$this->Cell(35,8,'TVA('.$tva .')%:',1,0,'R');
$this->Cell(35,8,$montant_tva_ .' CFA',1,0,'R');
$this->Ln();
$this->Cell(45,8,'Remarques:',1,0,'L');
$this->Cell(75,8,$remarques,1,0,'L');
$this->Cell(5,5,'',0,0,'L');
$this->Cell(35,8,'TOTAL TTC :',1,0,'R');
$this->Cell(35,8,number_format($total_ttc,'0',' ', ' ').' CFA',1,0,'R');
$this->Ln();
$this->Ln();
//$pdf->WriteHTML($html2);
$this->SetLeftMargin(10);
$this->SetX(10);
$this->Cell(95,5,'Pour le Client (Lu et approuvé)',1,0,'C');
$this->Cell(100,5,'Pour l\'Entreprise (Signature & cachet )',1,0,'C');
$this->Ln();
$this->Cell(95,25,'',1,0,'L');
$this->Cell(100,25,'',1,0,'L');
$this->Ln();
$this->SetFontSize(7);
$this->Cell(195,5,'ARC CABLING SYSTEMS Point E,rue F x Impasse piscine olympique , DAKAR , au capital de 1 000 000FCFA, NINEA 40338092V2/RC : SN-DKR-2009/B/6146',1,0,'C');
}
//Chargement des données
function LoadData($file)
{
//Lecture des lignes du fichier
$lines=file($file);
$data=array();
foreach($lines as $line)
$data[]=explode(';',chop($line));
return $data;
}
//Tableau coloré
function FancyTable($header,$data)
{
//Couleurs, épaisseur du trait et police grasse